diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 37d694201..104ccfd69 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -34,7 +34,19 @@ jobs:
with:
dotnet-version: 3.1.403
- - name: Build
+ - name: Setup Node 14.x
+ uses: actions/setup-node@v1
+ with:
+ node-version: '14.x'
+
+ - name: Build Client App
+ working-directory: ./src/KafkaFlow.Admin.Dashboard/ClientApp
+ run: |
+ npm install
+ npm run lint
+ npm run build:prod
+
+ - name: Build Framework
run: dotnet build ./src/KafkaFlow.sln -c Release
- name: UnitTest
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index c922c8738..3b6e0104a 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -16,6 +16,18 @@ jobs:
with:
dotnet-version: 3.1.403
+ - name: Setup Node 14.x
+ uses: actions/setup-node@v1
+ with:
+ node-version: '14.x'
+
+ - name: Build Client App
+ working-directory: ./src/KafkaFlow.Admin.Dashboard/ClientApp
+ run: |
+ npm install
+ npm run lint
+ npm run build:prod
+
- name: Pack
run: dotnet pack ./src/KafkaFlow.sln -c Release /p:Version=${{ github.event.release.tag_name }} -o ./drop
diff --git a/.gitignore b/.gitignore
index 32147d140..e0d02a277 100644
--- a/.gitignore
+++ b/.gitignore
@@ -142,6 +142,9 @@ project.lock.json
project.fragment.lock.json
artifacts/
+# Node folders
+node_modules/
+
# StyleCop
StyleCopReport.xml
diff --git a/samples/KafkaFlow.Sample.Dashboard/KafkaFlow.Sample.Dashboard.csproj b/samples/KafkaFlow.Sample.Dashboard/KafkaFlow.Sample.Dashboard.csproj
new file mode 100644
index 000000000..2a87c1128
--- /dev/null
+++ b/samples/KafkaFlow.Sample.Dashboard/KafkaFlow.Sample.Dashboard.csproj
@@ -0,0 +1,17 @@
+
+
+
+ netcoreapp3.1
+ false
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/KafkaFlow.Sample.Dashboard/Program.cs b/samples/KafkaFlow.Sample.Dashboard/Program.cs
new file mode 100644
index 000000000..ae8f3782c
--- /dev/null
+++ b/samples/KafkaFlow.Sample.Dashboard/Program.cs
@@ -0,0 +1,16 @@
+namespace KafkaFlow.Sample.Dashboard
+{
+ using Microsoft.AspNetCore.Hosting;
+ using Microsoft.Extensions.Hosting;
+
+ public class Program
+ {
+ public static void Main(string[] args)
+ {
+ CreateHostBuilder(args).Build().Run();
+ }
+
+ public static IHostBuilder CreateHostBuilder(string[] args) =>
+ Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); });
+ }
+}
diff --git a/samples/KafkaFlow.Sample.Dashboard/Properties/launchSettings.json b/samples/KafkaFlow.Sample.Dashboard/Properties/launchSettings.json
new file mode 100644
index 000000000..02d1b21ba
--- /dev/null
+++ b/samples/KafkaFlow.Sample.Dashboard/Properties/launchSettings.json
@@ -0,0 +1,27 @@
+{
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:63128",
+ "sslPort": 0
+ }
+ },
+ "profiles": {
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "KafkaFlow.Sample.Dashboard": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "applicationUrl": "http://localhost:5000",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ }
+ }
+}
diff --git a/samples/KafkaFlow.Sample.Dashboard/Startup.cs b/samples/KafkaFlow.Sample.Dashboard/Startup.cs
new file mode 100644
index 000000000..8310a2d71
--- /dev/null
+++ b/samples/KafkaFlow.Sample.Dashboard/Startup.cs
@@ -0,0 +1,50 @@
+namespace KafkaFlow.Sample.Dashboard
+{
+ using KafkaFlow.Admin.Dashboard;
+ using Microsoft.AspNetCore.Builder;
+ using Microsoft.AspNetCore.Hosting;
+ using Microsoft.Extensions.DependencyInjection;
+ using Microsoft.Extensions.Hosting;
+
+ public class Startup
+ {
+ // This method gets called by the runtime. Use this method to add services to the container.
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services.AddKafka(
+ kafka => kafka
+ .UseConsoleLog()
+ .AddCluster(
+ cluster => cluster
+ .WithBrokers(new[] { "localhost:9092" })
+ .EnableAdminMessages("kafka-flow.admin", "kafka-flow.admin.group.id")
+ .EnableTelemetry("kafka-flow.admin", "kafka-flow.telemetry.group.id")
+ .AddConsumer(
+ consumer => consumer
+ .Topics("topic-dashboard")
+ .WithGroupId("groupid-dashboard")
+ .WithName("consumer-dashboard")
+ .WithBufferSize(100)
+ .WithWorkersCount(20)
+ .WithAutoOffsetReset(AutoOffsetReset.Latest)
+ ))
+ );
+
+ services
+ .AddControllers();
+ }
+
+ // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
+ public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime lifetime)
+ {
+ app
+ .UseRouting()
+ .UseEndpoints(endpoints => { endpoints.MapControllers(); })
+ .UseKafkaFlowDashboard();
+
+ var kafkaBus = app.ApplicationServices.CreateKafkaBus();
+
+ lifetime.ApplicationStarted.Register(() => kafkaBus.StartAsync(lifetime.ApplicationStopped));
+ }
+ }
+}
diff --git a/samples/KafkaFlow.Sample.Dashboard/appsettings.Development.json b/samples/KafkaFlow.Sample.Dashboard/appsettings.Development.json
new file mode 100644
index 000000000..8983e0fc1
--- /dev/null
+++ b/samples/KafkaFlow.Sample.Dashboard/appsettings.Development.json
@@ -0,0 +1,9 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft": "Warning",
+ "Microsoft.Hosting.Lifetime": "Information"
+ }
+ }
+}
diff --git a/samples/KafkaFlow.Sample.Dashboard/appsettings.json b/samples/KafkaFlow.Sample.Dashboard/appsettings.json
new file mode 100644
index 000000000..d9d9a9bff
--- /dev/null
+++ b/samples/KafkaFlow.Sample.Dashboard/appsettings.json
@@ -0,0 +1,10 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft": "Warning",
+ "Microsoft.Hosting.Lifetime": "Information"
+ }
+ },
+ "AllowedHosts": "*"
+}
diff --git a/samples/KafkaFlow.Sample/Program.cs b/samples/KafkaFlow.Sample/Program.cs
index 341121b1a..142aecf37 100644
--- a/samples/KafkaFlow.Sample/Program.cs
+++ b/samples/KafkaFlow.Sample/Program.cs
@@ -3,9 +3,9 @@
using System;
using System.Linq;
using System.Threading.Tasks;
+ using KafkaFlow.Admin;
using Confluent.Kafka;
using global::Microsoft.Extensions.DependencyInjection;
- using KafkaFlow.Admin;
using KafkaFlow.Admin.Messages;
using KafkaFlow.Consumers;
using KafkaFlow.Producers;
@@ -143,10 +143,10 @@ await adminProducer.ProduceAsync(
if (int.TryParse(workersInput, out var workers))
{
await adminProducer.ProduceAsync(
- new ChangeConsumerWorkerCount
+ new ChangeConsumerWorkersCount
{
ConsumerName = consumerName,
- WorkerCount = workers
+ WorkersCount = workers
});
}
diff --git a/src/KafkaFlow.Abstractions/Configuration/IClusterConfigurationBuilder.cs b/src/KafkaFlow.Abstractions/Configuration/IClusterConfigurationBuilder.cs
index 8c038a640..2986f7caa 100644
--- a/src/KafkaFlow.Abstractions/Configuration/IClusterConfigurationBuilder.cs
+++ b/src/KafkaFlow.Abstractions/Configuration/IClusterConfigurationBuilder.cs
@@ -20,6 +20,13 @@ public interface IClusterConfigurationBuilder
///
IClusterConfigurationBuilder WithBrokers(IEnumerable brokers);
+ ///
+ /// Sets a unique name for the cluster
+ ///
+ /// A unique name
+ ///
+ IClusterConfigurationBuilder WithName(string name);
+
///
/// Configures cluster security
///
@@ -49,5 +56,19 @@ public interface IClusterConfigurationBuilder
/// A handler to configure the consumer
///
IClusterConfigurationBuilder AddConsumer(Action consumer);
+
+ ///
+ /// Adds a handler to be executed when KafkaFlow cluster is stopping
+ ///
+ /// A handler to KafkaFlow cluster stopping event
+ ///
+ IClusterConfigurationBuilder OnStopping(Action handler);
+
+ ///
+ /// Adds a handler to be executed after KafkaFlow cluster started
+ ///
+ /// A handler to KafkaFlow cluster start event
+ ///
+ IClusterConfigurationBuilder OnStarted(Action handler);
}
}
diff --git a/src/KafkaFlow.Abstractions/Configuration/IConsumerConfigurationBuilder.cs b/src/KafkaFlow.Abstractions/Configuration/IConsumerConfigurationBuilder.cs
index cf443e002..fa0c19511 100644
--- a/src/KafkaFlow.Abstractions/Configuration/IConsumerConfigurationBuilder.cs
+++ b/src/KafkaFlow.Abstractions/Configuration/IConsumerConfigurationBuilder.cs
@@ -41,6 +41,12 @@ public interface IConsumerConfigurationBuilder
///
IConsumerConfigurationBuilder WithName(string name);
+ ///
+ /// Sets the consumer as readonly, that means this consumer can not be managed and it will not send telemetry data
+ ///
+ ///
+ IConsumerConfigurationBuilder DisableManagement();
+
///
/// Sets the group id used by the consumer
///
diff --git a/src/KafkaFlow.Abstractions/IDateTimeProvider.cs b/src/KafkaFlow.Abstractions/IDateTimeProvider.cs
new file mode 100644
index 000000000..8439703e4
--- /dev/null
+++ b/src/KafkaFlow.Abstractions/IDateTimeProvider.cs
@@ -0,0 +1,16 @@
+namespace KafkaFlow
+{
+ using System;
+
+ ///
+ /// Provides access to DateTime static members
+ ///
+ public interface IDateTimeProvider
+ {
+ ///
+ DateTime Now { get; }
+
+ ///
+ DateTime MinValue { get; }
+ }
+}
diff --git a/src/KafkaFlow.Admin.Dashboard/ApplicationBuilderExtensions.cs b/src/KafkaFlow.Admin.Dashboard/ApplicationBuilderExtensions.cs
new file mode 100644
index 000000000..c29f1c0e8
--- /dev/null
+++ b/src/KafkaFlow.Admin.Dashboard/ApplicationBuilderExtensions.cs
@@ -0,0 +1,43 @@
+namespace KafkaFlow.Admin.Dashboard
+{
+ using System.Reflection;
+ using Microsoft.AspNetCore.Builder;
+ using Microsoft.AspNetCore.Http;
+ using Microsoft.Extensions.FileProviders;
+
+ ///
+ /// Extension methods over IApplicationBuilder
+ ///
+ public static class ApplicationBuilderExtensions
+ {
+ ///
+ /// Enable the KafkaFlow dashboard
+ ///
+ /// Instance of
+ ///
+ public static IApplicationBuilder UseKafkaFlowDashboard(this IApplicationBuilder app)
+ {
+ app.Map(
+ "/kafka-flow",
+ builder =>
+ {
+ var provider = new ManifestEmbeddedFileProvider(
+ Assembly.GetAssembly(typeof(ApplicationBuilderExtensions)),
+ "ClientApp/dist");
+
+ builder.UseStaticFiles(new StaticFileOptions { FileProvider = provider });
+
+ builder.Run(
+ async context =>
+ {
+ if (context.Request.Path == "/" || context.Request.Path == string.Empty)
+ {
+ await context.Response.SendFileAsync(provider.GetFileInfo("index.html"));
+ }
+ });
+ });
+
+ return app;
+ }
+ }
+}
diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/.browserslistrc b/src/KafkaFlow.Admin.Dashboard/ClientApp/.browserslistrc
new file mode 100644
index 000000000..427441dc9
--- /dev/null
+++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/.browserslistrc
@@ -0,0 +1,17 @@
+# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
+# For additional information regarding the format and rule options, please see:
+# https://github.com/browserslist/browserslist#queries
+
+# For the full list of supported browsers by the Angular framework, please see:
+# https://angular.io/guide/browser-support
+
+# You can see what browsers were selected by your queries by running:
+# npx browserslist
+
+last 1 Chrome version
+last 1 Firefox version
+last 2 Edge major versions
+last 2 Safari major versions
+last 2 iOS major versions
+Firefox ESR
+not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line.
diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/.editorconfig b/src/KafkaFlow.Admin.Dashboard/ClientApp/.editorconfig
new file mode 100644
index 000000000..59d9a3a3e
--- /dev/null
+++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/.editorconfig
@@ -0,0 +1,16 @@
+# Editor configuration, see https://editorconfig.org
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.ts]
+quote_type = single
+
+[*.md]
+max_line_length = off
+trim_trailing_whitespace = false
diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/.gitignore b/src/KafkaFlow.Admin.Dashboard/ClientApp/.gitignore
new file mode 100644
index 000000000..86d943a9b
--- /dev/null
+++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/.gitignore
@@ -0,0 +1,46 @@
+# See http://help.github.com/ignore-files/ for more about ignoring files.
+
+# compiled output
+/dist
+/tmp
+/out-tsc
+# Only exists if Bazel was run
+/bazel-out
+
+# dependencies
+/node_modules
+
+# profiling files
+chrome-profiler-events*.json
+speed-measure-plugin*.json
+
+# IDEs and editors
+/.idea
+.project
+.classpath
+.c9/
+*.launch
+.settings/
+*.sublime-workspace
+
+# IDE - VSCode
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+.history/*
+
+# misc
+/.sass-cache
+/connect.lock
+/coverage
+/libpeerconnection.log
+npm-debug.log
+yarn-error.log
+testem.log
+/typings
+
+# System Files
+.DS_Store
+Thumbs.db
diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/angular.json b/src/KafkaFlow.Admin.Dashboard/ClientApp/angular.json
new file mode 100644
index 000000000..c51c6f3ed
--- /dev/null
+++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/angular.json
@@ -0,0 +1,128 @@
+{
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
+ "cli": {
+ "analytics": "d9fa685a-293d-42a3-a490-1496b6f3ebec"
+ },
+ "version": 1,
+ "newProjectRoot": "projects",
+ "projects": {
+ "dashboard": {
+ "projectType": "application",
+ "schematics": {
+ "@schematics/angular:application": {
+ "strict": true
+ }
+ },
+ "root": "",
+ "sourceRoot": "src",
+ "prefix": "app",
+ "architect": {
+ "build": {
+ "builder": "@angular-devkit/build-angular:browser",
+ "options": {
+ "outputPath": "dist",
+ "index": "src/index.html",
+ "main": "src/main.ts",
+ "polyfills": "src/polyfills.ts",
+ "tsConfig": "tsconfig.app.json",
+ "aot": true,
+ "assets": [
+ "src/assets"
+ ],
+ "styles": [
+ "src/styles.scss"
+ ],
+ "scripts": []
+ },
+ "configurations": {
+ "production": {
+ "fileReplacements": [
+ {
+ "replace": "src/environments/environment.ts",
+ "with": "src/environments/environment.prod.ts"
+ }
+ ],
+ "optimization": true,
+ "outputHashing": "none",
+ "sourceMap": false,
+ "namedChunks": false,
+ "extractLicenses": false,
+ "vendorChunk": false,
+ "buildOptimizer": true,
+ "budgets": [
+ {
+ "type": "initial",
+ "maximumWarning": "500kb",
+ "maximumError": "1mb"
+ },
+ {
+ "type": "anyComponentStyle",
+ "maximumWarning": "2kb",
+ "maximumError": "4kb"
+ }
+ ]
+ }
+ }
+ },
+ "serve": {
+ "builder": "@angular-devkit/build-angular:dev-server",
+ "options": {
+ "browserTarget": "dashboard:build"
+ },
+ "configurations": {
+ "production": {
+ "browserTarget": "dashboard:build:production"
+ }
+ }
+ },
+ "extract-i18n": {
+ "builder": "@angular-devkit/build-angular:extract-i18n",
+ "options": {
+ "browserTarget": "dashboard:build"
+ }
+ },
+ "test": {
+ "builder": "@angular-devkit/build-angular:karma",
+ "options": {
+ "main": "src/test.ts",
+ "polyfills": "src/polyfills.ts",
+ "tsConfig": "tsconfig.spec.json",
+ "karmaConfig": "karma.conf.js",
+ "assets": [
+ "src/assets"
+ ],
+ "styles": [
+ "src/styles.scss"
+ ],
+ "scripts": []
+ }
+ },
+ "lint": {
+ "builder": "@angular-devkit/build-angular:tslint",
+ "options": {
+ "tsConfig": [
+ "tsconfig.app.json",
+ "tsconfig.spec.json"
+ ],
+ "exclude": [
+ "**/node_modules/**"
+ ]
+ }
+ },
+ "e2e": {
+ "builder": "@angular-devkit/build-angular:protractor",
+ "options": {
+ "protractorConfig": "e2e/protractor.conf.js",
+ "devServerTarget": "dashboard:serve"
+ },
+ "configurations": {
+ "production": {
+ "devServerTarget": "dashboard:serve:production"
+ }
+ }
+ }
+ }
+ }
+ },
+ "defaultProject": "dashboard"
+}
diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/index.html b/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/index.html
new file mode 100644
index 000000000..8d752309a
--- /dev/null
+++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+ KafkaFlow - Dashboard
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/main.js b/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/main.js
new file mode 100644
index 000000000..d1d5bf8d4
--- /dev/null
+++ b/src/KafkaFlow.Admin.Dashboard/ClientApp/dist/main.js
@@ -0,0 +1,1520 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{0:function(t,e,n){t.exports=n("zUnb")},zUnb:function(t,e,n){"use strict";function r(t){return"function"==typeof t}n.r(e);let s=!1;const i={Promise:void 0,set useDeprecatedSynchronousErrorHandling(t){if(t){const t=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+t.stack)}else s&&console.log("RxJS: Back to a better error behavior. Thank you. <3");s=t},get useDeprecatedSynchronousErrorHandling(){return s}};function o(t){setTimeout(()=>{throw t},0)}const a={closed:!0,next(t){},error(t){if(i.useDeprecatedSynchronousErrorHandling)throw t;o(t)},complete(){}},l=(()=>Array.isArray||(t=>t&&"number"==typeof t.length))();function c(t){return null!==t&&"object"==typeof t}const u=(()=>{function t(t){return Error.call(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((t,e)=>`${e+1}) ${t.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=t,this}return t.prototype=Object.create(Error.prototype),t})();let h=(()=>{class t{constructor(t){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,t&&(this._ctorUnsubscribe=!0,this._unsubscribe=t)}unsubscribe(){let e;if(this.closed)return;let{_parentOrParents:n,_ctorUnsubscribe:s,_unsubscribe:i,_subscriptions:o}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof t)n.remove(this);else if(null!==n)for(let t=0;tt.concat(e instanceof u?e.errors:e),[])}const p=(()=>"function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random())();class f extends h{constructor(t,e,n){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=a;break;case 1:if(!t){this.destination=a;break}if("object"==typeof t){t instanceof f?(this.syncErrorThrowable=t.syncErrorThrowable,this.destination=t,t.add(this)):(this.syncErrorThrowable=!0,this.destination=new g(this,t));break}default:this.syncErrorThrowable=!0,this.destination=new g(this,t,e,n)}}[p](){return this}static create(t,e,n){const r=new f(t,e,n);return r.syncErrorThrowable=!1,r}next(t){this.isStopped||this._next(t)}error(t){this.isStopped||(this.isStopped=!0,this._error(t))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(t){this.destination.next(t)}_error(t){this.destination.error(t),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:t}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=t,this}}class g extends f{constructor(t,e,n,s){let i;super(),this._parentSubscriber=t;let o=this;r(e)?i=e:e&&(i=e.next,n=e.error,s=e.complete,e!==a&&(o=Object.create(e),r(o.unsubscribe)&&this.add(o.unsubscribe.bind(o)),o.unsubscribe=this.unsubscribe.bind(this))),this._context=o,this._next=i,this._error=n,this._complete=s}next(t){if(!this.isStopped&&this._next){const{_parentSubscriber:e}=this;i.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?this.__tryOrSetError(e,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}}error(t){if(!this.isStopped){const{_parentSubscriber:e}=this,{useDeprecatedSynchronousErrorHandling:n}=i;if(this._error)n&&e.syncErrorThrowable?(this.__tryOrSetError(e,this._error,t),this.unsubscribe()):(this.__tryOrUnsub(this._error,t),this.unsubscribe());else if(e.syncErrorThrowable)n?(e.syncErrorValue=t,e.syncErrorThrown=!0):o(t),this.unsubscribe();else{if(this.unsubscribe(),n)throw t;o(t)}}}complete(){if(!this.isStopped){const{_parentSubscriber:t}=this;if(this._complete){const e=()=>this._complete.call(this._context);i.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?(this.__tryOrSetError(t,e),this.unsubscribe()):(this.__tryOrUnsub(e),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(t,e){try{t.call(this._context,e)}catch(n){if(this.unsubscribe(),i.useDeprecatedSynchronousErrorHandling)throw n;o(n)}}__tryOrSetError(t,e,n){if(!i.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{e.call(this._context,n)}catch(r){return i.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=r,t.syncErrorThrown=!0,!0):(o(r),!0)}return!1}_unsubscribe(){const{_parentSubscriber:t}=this;this._context=null,this._parentSubscriber=null,t.unsubscribe()}}const m=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")();function y(t){return t}let b=(()=>{class t{constructor(t){this._isScalar=!1,t&&(this._subscribe=t)}lift(e){const n=new t;return n.source=this,n.operator=e,n}subscribe(t,e,n){const{operator:r}=this,s=function(t,e,n){if(t){if(t instanceof f)return t;if(t[p])return t[p]()}return t||e||n?new f(t,e,n):new f(a)}(t,e,n);if(s.add(r?r.call(s,this.source):this.source||i.useDeprecatedSynchronousErrorHandling&&!s.syncErrorThrowable?this._subscribe(s):this._trySubscribe(s)),i.useDeprecatedSynchronousErrorHandling&&s.syncErrorThrowable&&(s.syncErrorThrowable=!1,s.syncErrorThrown))throw s.syncErrorValue;return s}_trySubscribe(t){try{return this._subscribe(t)}catch(e){i.useDeprecatedSynchronousErrorHandling&&(t.syncErrorThrown=!0,t.syncErrorValue=e),function(t){for(;t;){const{closed:e,destination:n,isStopped:r}=t;if(e||r)return!1;t=n&&n instanceof f?n:null}return!0}(t)?t.error(e):console.warn(e)}}forEach(t,e){return new(e=_(e))((e,n)=>{let r;r=this.subscribe(e=>{try{t(e)}catch(s){n(s),r&&r.unsubscribe()}},n,e)})}_subscribe(t){const{source:e}=this;return e&&e.subscribe(t)}[m](){return this}pipe(...t){return 0===t.length?this:(0===(e=t).length?y:1===e.length?e[0]:function(t){return e.reduce((t,e)=>e(t),t)})(this);var e}toPromise(t){return new(t=_(t))((t,e)=>{let n;this.subscribe(t=>n=t,t=>e(t),()=>t(n))})}}return t.create=e=>new t(e),t})();function _(t){if(t||(t=i.Promise||Promise),!t)throw new Error("no Promise impl found");return t}const v=(()=>{function t(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return t.prototype=Object.create(Error.prototype),t})();class w extends h{constructor(t,e){super(),this.subject=t,this.subscriber=e,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const t=this.subject,e=t.observers;if(this.subject=null,!e||0===e.length||t.isStopped||t.closed)return;const n=e.indexOf(this.subscriber);-1!==n&&e.splice(n,1)}}class C extends f{constructor(t){super(t),this.destination=t}}let S=(()=>{class t extends b{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[p](){return new C(this)}lift(t){const e=new x(this,this);return e.operator=t,e}next(t){if(this.closed)throw new v;if(!this.isStopped){const{observers:e}=this,n=e.length,r=e.slice();for(let s=0;snew x(t,e),t})();class x extends S{constructor(t,e){super(),this.destination=t,this.source=e}next(t){const{destination:e}=this;e&&e.next&&e.next(t)}error(t){const{destination:e}=this;e&&e.error&&this.destination.error(t)}complete(){const{destination:t}=this;t&&t.complete&&this.destination.complete()}_subscribe(t){const{source:e}=this;return e?this.source.subscribe(t):h.EMPTY}}function k(t){return t&&"function"==typeof t.schedule}function E(t,e){return function(n){if("function"!=typeof t)throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");return n.lift(new T(t,e))}}class T{constructor(t,e){this.project=t,this.thisArg=e}call(t,e){return e.subscribe(new A(t,this.project,this.thisArg))}}class A extends f{constructor(t,e,n){super(t),this.project=e,this.count=0,this.thisArg=n||this}_next(t){let e;try{e=this.project.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}this.destination.next(e)}}const I=t=>e=>{for(let n=0,r=t.length;nt&&"number"==typeof t.length&&"function"!=typeof t;function D(t){return!!t&&"function"!=typeof t.subscribe&&"function"==typeof t.then}const N=t=>{if(t&&"function"==typeof t[m])return r=t,t=>{const e=r[m]();if("function"!=typeof e.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return e.subscribe(t)};if(P(t))return I(t);if(D(t))return n=t,t=>(n.then(e=>{t.closed||(t.next(e),t.complete())},e=>t.error(e)).then(null,o),t);if(t&&"function"==typeof t[O])return e=t,t=>{const n=e[O]();for(;;){let e;try{e=n.next()}catch(r){return t.error(r),t}if(e.done){t.complete();break}if(t.next(e.value),t.closed)break}return"function"==typeof n.return&&t.add(()=>{n.return&&n.return()}),t};{const e=c(t)?"an invalid object":`'${t}'`;throw new TypeError(`You provided ${e} where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.`)}var e,n,r};function j(t,e){return new b(n=>{const r=new h;let s=0;return r.add(e.schedule(function(){s!==t.length?(n.next(t[s++]),n.closed||r.add(this.schedule())):n.complete()})),r})}function M(t,e){return e?function(t,e){if(null!=t){if(function(t){return t&&"function"==typeof t[m]}(t))return function(t,e){return new b(n=>{const r=new h;return r.add(e.schedule(()=>{const s=t[m]();r.add(s.subscribe({next(t){r.add(e.schedule(()=>n.next(t)))},error(t){r.add(e.schedule(()=>n.error(t)))},complete(){r.add(e.schedule(()=>n.complete()))}}))})),r})}(t,e);if(D(t))return function(t,e){return new b(n=>{const r=new h;return r.add(e.schedule(()=>t.then(t=>{r.add(e.schedule(()=>{n.next(t),r.add(e.schedule(()=>n.complete()))}))},t=>{r.add(e.schedule(()=>n.error(t)))}))),r})}(t,e);if(P(t))return j(t,e);if(function(t){return t&&"function"==typeof t[O]}(t)||"string"==typeof t)return function(t,e){if(!t)throw new Error("Iterable cannot be null");return new b(n=>{const r=new h;let s;return r.add(()=>{s&&"function"==typeof s.return&&s.return()}),r.add(e.schedule(()=>{s=t[O](),r.add(e.schedule(function(){if(n.closed)return;let t,e;try{const n=s.next();t=n.value,e=n.done}catch(r){return void n.error(r)}e?n.complete():(n.next(t),this.schedule())}))})),r})}(t,e)}throw new TypeError((null!==t&&typeof t||t)+" is not observable")}(t,e):t instanceof b?t:new b(N(t))}class V extends f{constructor(t){super(),this.parent=t}_next(t){this.parent.notifyNext(t)}_error(t){this.parent.notifyError(t),this.unsubscribe()}_complete(){this.parent.notifyComplete(),this.unsubscribe()}}class F extends f{notifyNext(t){this.destination.next(t)}notifyError(t){this.destination.error(t)}notifyComplete(){this.destination.complete()}}function U(t,e){if(e.closed)return;if(t instanceof b)return t.subscribe(e);let n;try{n=N(t)(e)}catch(r){e.error(r)}return n}function L(t,e,n=Number.POSITIVE_INFINITY){return"function"==typeof e?r=>r.pipe(L((n,r)=>M(t(n,r)).pipe(E((t,s)=>e(n,t,r,s))),n)):("number"==typeof e&&(n=e),e=>e.lift(new $(t,n)))}class ${constructor(t,e=Number.POSITIVE_INFINITY){this.project=t,this.concurrent=e}call(t,e){return e.subscribe(new H(t,this.project,this.concurrent))}}class H extends F{constructor(t,e,n=Number.POSITIVE_INFINITY){super(t),this.project=e,this.concurrent=n,this.hasCompleted=!1,this.buffer=[],this.active=0,this.index=0}_next(t){this.active0?this._next(t.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()}}function z(t=Number.POSITIVE_INFINITY){return L(y,t)}function B(t,e){return e?j(t,e):new b(I(t))}function G(){return function(t){return t.lift(new q(t))}}class q{constructor(t){this.connectable=t}call(t,e){const{connectable:n}=this;n._refCount++;const r=new W(t,n),s=e.subscribe(r);return r.closed||(r.connection=n.connect()),s}}class W extends f{constructor(t,e){super(t),this.connectable=e}_unsubscribe(){const{connectable:t}=this;if(!t)return void(this.connection=null);this.connectable=null;const e=t._refCount;if(e<=0)return void(this.connection=null);if(t._refCount=e-1,e>1)return void(this.connection=null);const{connection:n}=this,r=t._connection;this.connection=null,!r||n&&r!==n||r.unsubscribe()}}class Z extends b{constructor(t,e){super(),this.source=t,this.subjectFactory=e,this._refCount=0,this._isComplete=!1}_subscribe(t){return this.getSubject().subscribe(t)}getSubject(){const t=this._subject;return t&&!t.isStopped||(this._subject=this.subjectFactory()),this._subject}connect(){let t=this._connection;return t||(this._isComplete=!1,t=this._connection=new h,t.add(this.source.subscribe(new Q(this.getSubject(),this))),t.closed&&(this._connection=null,t=h.EMPTY)),t}refCount(){return G()(this)}}const Y=(()=>{const t=Z.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:t._subscribe},_isComplete:{value:t._isComplete,writable:!0},getSubject:{value:t.getSubject},connect:{value:t.connect},refCount:{value:t.refCount}}})();class Q extends C{constructor(t,e){super(t),this.connectable=e}_error(t){this._unsubscribe(),super._error(t)}_complete(){this.connectable._isComplete=!0,this._unsubscribe(),super._complete()}_unsubscribe(){const t=this.connectable;if(t){this.connectable=null;const e=t._connection;t._refCount=0,t._subject=null,t._connection=null,e&&e.unsubscribe()}}}function K(){return new S}
+/**
+ * @license Angular v11.2.11
+ * (c) 2010-2021 Google LLC. https://angular.io/
+ * License: MIT
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function J(t){for(let e in t)if(t[e]===J)return e;throw Error("Could not find renamed property on target object.")}function X(t,e){for(const n in e)e.hasOwnProperty(n)&&!t.hasOwnProperty(n)&&(t[n]=e[n])}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function tt(t){if("string"==typeof t)return t;if(Array.isArray(t))return"["+t.map(tt).join(", ")+"]";if(null==t)return""+t;if(t.overriddenName)return`${t.overriddenName}`;if(t.name)return`${t.name}`;const e=t.toString();if(null==e)return""+e;const n=e.indexOf("\n");return-1===n?e:e.substring(0,n)}function et(t,e){return null==t||""===t?null===e?"":e:null==e||""===e?t:t+" "+e}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const nt=J({__forward_ref__:J});function rt(t){return t.__forward_ref__=rt,t.toString=function(){return tt(this())},t}function st(t){return it(t)?t():t}function it(t){return"function"==typeof t&&t.hasOwnProperty(nt)&&t.__forward_ref__===rt}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class ot extends Error{constructor(t,e){super(function(t,e){return`${t?`NG0${t}: `:""}${e}`}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */(t,e)),this.code=t}}function at(t){return"string"==typeof t?t:null==t?"":String(t)}function lt(t){return"function"==typeof t?t.name||t.toString():"object"==typeof t&&null!=t&&"function"==typeof t.type?t.type.name||t.type.toString():at(t)}function ct(t,e){const n=e?` in ${e}`:"";throw new ot("201",`No provider for ${lt(t)} found${n}`)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function ut(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function ht(t){return{providers:t.providers||[],imports:t.imports||[]}}function dt(t){return pt(t,gt)||pt(t,yt)}function pt(t,e){return t.hasOwnProperty(e)?t[e]:null}function ft(t){return t&&(t.hasOwnProperty(mt)||t.hasOwnProperty(bt))?t[mt]:null}const gt=J({"\u0275prov":J}),mt=J({"\u0275inj":J}),yt=J({ngInjectableDef:J}),bt=J({ngInjectorDef:J});
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+var _t=function(t){return t[t.Default=0]="Default",t[t.Host=1]="Host",t[t.Self=2]="Self",t[t.SkipSelf=4]="SkipSelf",t[t.Optional=8]="Optional",t}({});
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */let vt;function wt(t){const e=vt;return vt=t,e}function Ct(t,e,n){const r=dt(t);return r&&"root"==r.providedIn?void 0===r.value?r.value=r.factory():r.value:n&_t.Optional?null:void 0!==e?e:void ct(tt(t),"Injector")}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function St(t){return{toString:t}.toString()}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */var xt=function(t){return t[t.OnPush=0]="OnPush",t[t.Default=1]="Default",t}({}),kt=function(t){return t[t.Emulated=0]="Emulated",t[t.None=2]="None",t[t.ShadowDom=3]="ShadowDom",t}({});
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const Et="undefined"!=typeof globalThis&&globalThis,Tt="undefined"!=typeof window&&window,At="undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self,It="undefined"!=typeof global&&global,Rt=Et||It||Tt||At,Ot={},Pt=[],Dt=[],Nt=J({"\u0275cmp":J}),jt=J({"\u0275dir":J}),Mt=J({"\u0275pipe":J}),Vt=J({"\u0275mod":J}),Ft=J({"\u0275loc":J}),Ut=J({"\u0275fac":J}),Lt=J({__NG_ELEMENT_ID__:J});
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+let $t=0;function Ht(t){return St(()=>{const e={},n={type:t.type,providersResolver:null,decls:t.decls,vars:t.vars,factory:null,template:t.template||null,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:e,inputs:null,outputs:null,exportAs:t.exportAs||null,onPush:t.changeDetection===xt.OnPush,directiveDefs:null,pipeDefs:null,selectors:t.selectors||Dt,viewQuery:t.viewQuery||null,features:t.features||null,data:t.data||{},encapsulation:t.encapsulation||kt.Emulated,id:"c",styles:t.styles||Dt,_:null,setInput:null,schemas:t.schemas||null,tView:null},r=t.directives,s=t.features,i=t.pipes;return n.id+=$t++,n.inputs=Wt(t.inputs,e),n.outputs=Wt(t.outputs),s&&s.forEach(t=>t(n)),n.directiveDefs=r?()=>("function"==typeof r?r():r).map(zt):null,n.pipeDefs=i?()=>("function"==typeof i?i():i).map(Bt):null,n})}function zt(t){return Qt(t)||function(t){return t[jt]||null}(t)}function Bt(t){return function(t){return t[Mt]||null}(t)}const Gt={};function qt(t){const e={type:t.type,bootstrap:t.bootstrap||Dt,declarations:t.declarations||Dt,imports:t.imports||Dt,exports:t.exports||Dt,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null};return null!=t.id&&St(()=>{Gt[t.id]=t.type}),e}function Wt(t,e){if(null==t)return Ot;const n={};for(const r in t)if(t.hasOwnProperty(r)){let s=t[r],i=s;Array.isArray(s)&&(i=s[1],s=s[0]),n[s]=r,e&&(e[s]=i)}return n}const Zt=Ht;function Yt(t){return{type:t.type,name:t.name,factory:null,pure:!1!==t.pure,onDestroy:t.type.prototype.ngOnDestroy||null}}function Qt(t){return t[Nt]||null}function Kt(t,e){const n=t[Vt]||null;if(!n&&!0===e)throw new Error(`Type ${tt(t)} does not have '\u0275mod' property.`);return n}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const Jt=20,Xt=10;
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function te(t){return Array.isArray(t)&&"object"==typeof t[1]}function ee(t){return Array.isArray(t)&&!0===t[1]}function ne(t){return 0!=(8&t.flags)}function re(t){return 2==(2&t.flags)}function se(t){return 1==(1&t.flags)}function ie(t){return null!==t.template}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function oe(t,e){return t.hasOwnProperty(Ut)?t[Ut]:null}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class ae{constructor(t,e,n){this.previousValue=t,this.currentValue=e,this.firstChange=n}isFirstChange(){return this.firstChange}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function le(){return ce}function ce(t){return t.type.prototype.ngOnChanges&&(t.setInput=he),ue}function ue(){const t=de(this),e=null==t?void 0:t.current;if(e){const n=t.previous;if(n===Ot)t.previous=e;else for(let t in e)n[t]=e[t];t.current=null,this.ngOnChanges(e)}}function he(t,e,n,r){const s=de(t)||function(t,e){return t.__ngSimpleChanges__=e}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */(t,{previous:Ot,current:null}),i=s.current||(s.current={}),o=s.previous,a=this.declaredInputs[n],l=o[a];i[a]=new ae(l&&l.currentValue,e,o===Ot),t[r]=e}function de(t){return t.__ngSimpleChanges__||null}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+let pe;function fe(t){return!!t.listen}le.ngInherit=!0;const ge={createRenderer:(t,e)=>void 0!==pe?pe:"undefined"!=typeof document?document:void 0};
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function me(t){for(;Array.isArray(t);)t=t[0];return t}function ye(t,e){return me(e[t])}function be(t,e){return me(e[t.index])}function _e(t,e){return t.data[e]}function ve(t,e){return t[e]}function we(t,e){const n=e[t];return te(n)?n:n[0]}function Ce(t){const e=function(t){return t.__ngContext__||null}(t);return e?Array.isArray(e)?e:e.lView:null}function Se(t){return 4==(4&t[2])}function xe(t){return 128==(128&t[2])}function ke(t,e){return null==e?null:t[e]}function Ee(t){t[18]=0}function Te(t,e){t[5]+=e;let n=t,r=t[3];for(;null!==r&&(1===e&&1===n[5]||-1===e&&0===n[5]);)r[5]+=e,n=r,r=r[3]}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const Ae={lFrame:Ke(null),bindingsEnabled:!0,isInCheckNoChangesMode:!1};function Ie(){return Ae.bindingsEnabled}function Re(){return Ae.lFrame.lView}function Oe(){return Ae.lFrame.tView}function Pe(t){Ae.lFrame.contextLView=t}function De(){let t=Ne();for(;null!==t&&64===t.type;)t=t.parent;return t}function Ne(){return Ae.lFrame.currentTNode}function je(t,e){const n=Ae.lFrame;n.currentTNode=t,n.isParent=e}function Me(){return Ae.lFrame.isParent}function Ve(){Ae.lFrame.isParent=!1}function Fe(){return Ae.isInCheckNoChangesMode}function Ue(t){Ae.isInCheckNoChangesMode=t}function Le(){const t=Ae.lFrame;let e=t.bindingRootIndex;return-1===e&&(e=t.bindingRootIndex=t.tView.bindingStartIndex),e}function $e(){return Ae.lFrame.bindingIndex++}function He(t){const e=Ae.lFrame,n=e.bindingIndex;return e.bindingIndex=e.bindingIndex+t,n}function ze(t,e){const n=Ae.lFrame;n.bindingIndex=n.bindingRootIndex=t,Be(e)}function Be(t){Ae.lFrame.currentDirectiveIndex=t}function Ge(){return Ae.lFrame.currentQueryIndex}function qe(t){Ae.lFrame.currentQueryIndex=t}function We(t){const e=t[1];return 2===e.type?e.declTNode:1===e.type?t[6]:null}function Ze(t,e,n){if(n&_t.SkipSelf){let r=e,s=t;for(;r=r.parent,!(null!==r||n&_t.Host||(r=We(s),null===r)||(s=s[15],10&r.type)););if(null===r)return!1;e=r,t=s}const r=Ae.lFrame=Qe();return r.currentTNode=e,r.lView=t,!0}function Ye(t){const e=Qe(),n=t[1];Ae.lFrame=e,e.currentTNode=n.firstChild,e.lView=t,e.tView=n,e.contextLView=t,e.bindingIndex=n.bindingStartIndex,e.inI18n=!1}function Qe(){const t=Ae.lFrame,e=null===t?null:t.child;return null===e?Ke(t):e}function Ke(t){const e={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:t,child:null,inI18n:!1};return null!==t&&(t.child=e),e}function Je(){const t=Ae.lFrame;return Ae.lFrame=t.parent,t.currentTNode=null,t.lView=null,t}const Xe=Je;function tn(){const t=Je();t.isParent=!0,t.tView=null,t.selectedIndex=-1,t.contextLView=null,t.elementDepthCount=0,t.currentDirectiveIndex=-1,t.currentNamespace=null,t.bindingRootIndex=-1,t.bindingIndex=-1,t.currentQueryIndex=0}function en(){return Ae.lFrame.selectedIndex}function nn(t){Ae.lFrame.selectedIndex=t}function rn(){const t=Ae.lFrame;return _e(t.tView,t.selectedIndex)}function sn(t,e){for(let n=e.directiveStart,r=e.directiveEnd;n=r)break}else e[a]<0&&(t[18]+=65536),(o>11>16&&(3&t[2])===e){t[2]+=2048;try{i.call(o)}finally{}}}else try{i.call(o)}finally{}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const hn=-1;class dn{constructor(t,e,n){this.factory=t,this.resolving=!1,this.canSeeViewProviders=e,this.injectImpl=n}}function pn(t,e,n){const r=fe(t);let s=0;for(;se){o=i-1;break}}}for(;i>16,r=e;for(;n>0;)r=r[15],n--;return r}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */let wn=!0;function Cn(t){const e=wn;return wn=t,e}let Sn=0;function xn(t,e){const n=En(t,e);if(-1!==n)return n;const r=e[1];r.firstCreatePass&&(t.injectorIndex=e.length,kn(r.data,t),kn(e,null),kn(r.blueprint,null));const s=Tn(t,e),i=t.injectorIndex;if(bn(s)){const t=_n(s),n=vn(s,e),r=n[1].data;for(let s=0;s<8;s++)e[i+s]=n[t+s]|r[t+s]}return e[i+8]=s,i}function kn(t,e){t.push(0,0,0,0,0,0,0,0,e)}function En(t,e){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null===e[t.injectorIndex+8]?-1:t.injectorIndex}function Tn(t,e){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;let n=0,r=null,s=e;for(;null!==s;){const t=s[1],e=t.type;if(r=2===e?t.declTNode:1===e?s[6]:null,null===r)return hn;if(n++,s=s[15],-1!==r.injectorIndex)return r.injectorIndex|n<<16}return hn}function An(t,e,n){!function(t,e,n){let r;"string"==typeof n?r=n.charCodeAt(0)||0:n.hasOwnProperty(Lt)&&(r=n[Lt]),null==r&&(r=n[Lt]=Sn++);const s=255&r;e.data[t+(s>>5)]|=1<=0?255&e:Dn:e}(n);if("function"==typeof i){if(!Ze(e,t,r))return r&_t.Host?In(s,n,r):Rn(e,n,r,s);try{const t=i();if(null!=t||r&_t.Optional)return t;ct(n)}finally{Xe()}}else if("number"==typeof i){let s=null,o=En(t,e),a=hn,l=r&_t.Host?e[16][6]:null;for((-1===o||r&_t.SkipSelf)&&(a=-1===o?Tn(t,e):e[o+8],a!==hn&&Fn(r,!1)?(s=e[1],o=_n(a),e=vn(a,e)):o=-1);-1!==o;){const t=e[1];if(Vn(i,o,t.data)){const t=Nn(o,e,n,s,r,l);if(t!==Pn)return t}a=e[o+8],a!==hn&&Fn(r,e[1].data[o+8]===l)&&Vn(i,o,e)?(s=t,o=_n(a),e=vn(a,e)):o=-1}}}return Rn(e,n,r,s)}const Pn={};function Dn(){return new Un(De(),Re())}function Nn(t,e,n,r,s,i){const o=e[1],a=o.data[t+8],l=jn(a,o,n,null==r?re(a)&&wn:r!=o&&0!=(3&a.type),s&_t.Host&&i===a);return null!==l?Mn(e,o,l,a):Pn}function jn(t,e,n,r,s){const i=t.providerIndexes,o=e.data,a=1048575&i,l=t.directiveStart,c=i>>20,u=s?a+c:t.directiveEnd;for(let h=r?a:a+c;h=l&&t.type===n)return h}if(s){const t=o[l];if(t&&ie(t)&&t.type===n)return l}return null}function Mn(t,e,n,r){let s=t[n];const i=e.data;if(s instanceof dn){const o=s;o.resolving&&function(t,e){throw new ot("200",`Circular dependency in DI detected for ${t}`)}(lt(i[n]));const a=Cn(o.canSeeViewProviders);o.resolving=!0;const l=o.injectImpl?wt(o.injectImpl):null;Ze(t,r,_t.Default);try{s=t[n]=o.factory(void 0,i,t,r),e.firstCreatePass&&n>=r.directiveStart&&
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function(t,e,n){const{ngOnChanges:r,ngOnInit:s,ngDoCheck:i}=e.type.prototype;if(r){const r=ce(e);(n.preOrderHooks||(n.preOrderHooks=[])).push(t,r),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(t,r)}s&&(n.preOrderHooks||(n.preOrderHooks=[])).push(0-t,s),i&&((n.preOrderHooks||(n.preOrderHooks=[])).push(t,i),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(t,i))}(n,i[n],e)}finally{null!==l&&wt(l),Cn(a),o.resolving=!1,Xe()}}return s}function Vn(t,e,n){return!!(n[e+(t>>5)]&1<{const e=t.prototype.constructor,n=e[Ut]||$n(e),r=Object.prototype;let s=Object.getPrototypeOf(t.prototype).constructor;for(;s&&s!==r;){const t=s[Ut]||$n(s);if(t&&t!==n)return t;s=Object.getPrototypeOf(s)}return t=>new t})}function $n(t){return it(t)?()=>{const e=$n(st(t));return e&&e()}:oe(t)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const Hn="__parameters__";function zn(t,e,n){return St(()=>{const r=function(t){return function(...e){if(t){const n=t(...e);for(const t in n)this[t]=n[t]}}}(e);function s(...t){if(this instanceof s)return r.apply(this,t),this;const e=new s(...t);return n.annotation=e,n;function n(t,n,r){const s=t.hasOwnProperty(Hn)?t[Hn]:Object.defineProperty(t,Hn,{value:[]})[Hn];for(;s.length<=r;)s.push(null);return(s[r]=s[r]||[]).push(e),t}}return n&&(s.prototype=Object.create(n.prototype)),s.prototype.ngMetadataName=t,s.annotationCls=s,s})}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+class Bn{constructor(t,e){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.\u0275prov=ut({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}toString(){return`InjectionToken ${this._desc}`}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const Gn=new Bn("AnalyzeForEntryComponents"),qn=Function;function Wn(t,e){void 0===e&&(e=t);for(let n=0;nArray.isArray(t)?Zn(t,e):e(t))}function Yn(t,e,n){e>=t.length?t.push(n):t.splice(e,0,n)}function Qn(t,e){return e>=t.length-1?t.pop():t.splice(e,1)[0]}function Kn(t,e){const n=[];for(let r=0;r=0?t[1|r]=n:(r=~r,function(t,e,n,r){let s=t.length;if(s==e)t.push(n,r);else if(1===s)t.push(r,t[0]),t[0]=n;else{for(s--,t.push(t[s-1],t[s]);s>e;)t[s]=t[s-2],s--;t[e]=n,t[e+1]=r}}(t,r,e,n)),r}function Xn(t,e){const n=tr(t,e);if(n>=0)return t[1|n]}function tr(t,e){return function(t,e,n){let r=0,s=t.length>>1;for(;s!==r;){const n=r+(s-r>>1),i=t[n<<1];if(e===i)return n<<1;i>e?s=n:r=n+1}return~(s<<1)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */(t,e)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const er={},nr=/\n/gm,rr="__source",sr=J({provide:String,useValue:J});let ir;function or(t){const e=ir;return ir=t,e}function ar(t,e=_t.Default){if(void 0===ir)throw new Error("inject() must be called from an injection context");return null===ir?Ct(t,void 0,e):ir.get(t,e&_t.Optional?null:void 0,e)}function lr(t,e=_t.Default){return(vt||ar)(st(t),e)}function cr(t){const e=[];for(let n=0;n({token:t})),-1),dr=ur(zn("Optional"),8),pr=ur(zn("SkipSelf"),4);function fr(t){return t instanceof
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+class{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see https://g.co/ng/security#xss)`}}?t.changingThisBreaksApplicationSecurity:t}function gr(t){return t.ngDebugContext}function mr(t){return t.ngOriginalError}function yr(t,...e){t.error(...e)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class br{constructor(){this._console=console}handleError(t){const e=this._findOriginalError(t),n=this._findContext(t),r=function(t){return t.ngErrorLogger||yr}(t);r(this._console,"ERROR",t),e&&r(this._console,"ORIGINAL ERROR",e),n&&r(this._console,"ERROR CONTEXT",n)}_findContext(t){return t?gr(t)?gr(t):this._findContext(mr(t)):null}_findOriginalError(t){let e=mr(t);for(;e&&mr(e);)e=mr(e);return e}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function _r(t,e){t.__ngContext__=e}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const vr=(()=>("undefined"!=typeof requestAnimationFrame&&requestAnimationFrame||setTimeout).bind(Rt))();function wr(t){return t instanceof Function?t():t}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+var Cr=function(t){return t[t.Important=1]="Important",t[t.DashCase=2]="DashCase",t}({});
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function Sr(t,e){return(void 0)(t,e)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function xr(t){const e=t[3];return ee(e)?e[3]:e}function kr(t){return Tr(t[13])}function Er(t){return Tr(t[4])}function Tr(t){for(;null!==t&&!ee(t);)t=t[4];return t}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function Ar(t,e,n,r,s){if(null!=r){let i,o=!1;ee(r)?i=r:te(r)&&(o=!0,r=r[0]);const a=me(r);0===t&&null!==n?null==s?Mr(e,n,a):jr(e,n,a,s||null,!0):1===t&&null!==n?jr(e,n,a,s||null,!0):2===t?function(t,e,n){const r=Fr(t,e);r&&function(t,e,n,r){fe(t)?t.removeChild(e,n,r):e.removeChild(n)}(t,r,e,n)}(e,a,o):3===t&&e.destroyNode(a),null!=i&&function(t,e,n,r,s){const i=n[7];i!==me(n)&&Ar(e,t,r,i,s);for(let o=Xt;o0&&(t[n-1][4]=r[4]);const o=Qn(t,Xt+e);qr(r[1],s=r,s[11],2,null,null),s[0]=null,s[6]=null;const a=o[19];null!==a&&a.detachView(o[1]),r[3]=null,r[4]=null,r[2]&=-129}var s;return r}function Pr(t,e){if(!(256&e[2])){const n=e[11];fe(n)&&n.destroyNode&&qr(t,e,n,3,null,null),function(t){let e=t[13];if(!e)return Dr(t[1],t);for(;e;){let n=null;if(te(e))n=e[13];else{const t=e[10];t&&(n=t)}if(!n){for(;e&&!e[4]&&e!==t;)te(e)&&Dr(e[1],e),e=e[3];null===e&&(e=t),te(e)&&Dr(e[1],e),n=e&&e[4]}e=n}}(e)}}function Dr(t,e){if(!(256&e[2])){e[2]&=-129,e[2]|=256,function(t,e){let n;if(null!=t&&null!=(n=t.destroyHooks))for(let r=0;r=0?r[s=l]():r[s=-l].unsubscribe(),i+=2}else{const t=r[s=n[i+1]];n[i].call(t)}if(null!==r){for(let t=s+1;ti?"":s[u+1].toLowerCase();const e=8&r?t:null;if(e&&-1!==Qr(e,c,0)||2&r&&c!==t){if(ns(r))return!1;o=!0}}}}else{if(!o&&!ns(r)&&!ns(l))return!1;if(o&&ns(l))continue;o=!1,r=l|1&r}}return ns(r)||o}function ns(t){return 0==(1&t)}function rs(t,e,n,r){if(null===e)return-1;let s=0;if(r||!n){let n=!1;for(;s-1)for(n++;n0?'="'+e+'"':"")+"]"}else 8&r?s+="."+o:4&r&&(s+=" "+o);else""===s||ns(o)||(e+=os(i,s),s=""),r=o,i=i||!ns(r);n++}return""!==s&&(e+=os(i,s)),e}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const ls={};
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function cs(t){us(Oe(),Re(),en()+t,Fe())}function us(t,e,n,r){if(!r)if(3==(3&e[2])){const r=t.preOrderCheckHooks;null!==r&&on(e,r,n)}else{const r=t.preOrderHooks;null!==r&&an(e,r,0,n)}nn(n)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function hs(t,e){return t<<17|e<<2}function ds(t){return t>>17&32767}function ps(t){return 2|t}function fs(t){return(131068&t)>>2}function gs(t,e){return-131069&t|e<<2}function ms(t){return 1|t}function ys(t,e){const n=t.contentQueries;if(null!==n)for(let r=0;rJt&&us(t,e,Jt,Fe()),n(r,s)}finally{nn(i)}}function ks(t,e,n){Ie()&&(function(t,e,n,r){const s=n.directiveStart,i=n.directiveEnd;t.firstCreatePass||xn(n,e),_r(r,e);const o=n.initialInputs;for(let a=s;a0;){const n=t[--e];if("number"==typeof n&&n<0)return n}return 0})(n)!=i&&n.push(i),n.push(r,s,o)}}function Ds(t,e){null!==t.hostBindings&&t.hostBindings(1,e)}function Ns(t,e){e.flags|=2,(t.components||(t.components=[])).push(e.index)}function js(t,e,n){if(n){if(e.exportAs)for(let r=0;r0&&zs(n)}}function zs(t){for(let n=kr(t);null!==n;n=Er(n))for(let t=Xt;t0&&zs(e)}const e=t[1].components;if(null!==e)for(let n=0;n0&&zs(r)}}function Bs(t,e){const n=we(e,t),r=n[1];!function(t,e){for(let n=e.length;nPromise.resolve(null))();function Ks(t){return t[7]||(t[7]=[])}function Js(t){return t.cleanup||(t.cleanup=[])}function Xs(t,e){const n=t[9],r=n?n.get(br,null):null;r&&r.handleError(e)}function ti(t,e,n,r,s){for(let i=0;ithis.processProvider(n,t,e)),Zn([t],t=>this.processInjectorType(t,[],s)),this.records.set(ni,fi(void 0,this));const i=this.records.get(si);this.scope=null!=i?i.value:null,this.source=r||("object"==typeof t?null:tt(t))}get destroyed(){return this._destroyed}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{this.onDestroy.forEach(t=>t.ngOnDestroy())}finally{this.records.clear(),this.onDestroy.clear(),this.injectorDefTypes.clear()}}get(t,e=er,n=_t.Default){this.assertNotDestroyed();const r=or(this);try{if(!(n&_t.SkipSelf)){let e=this.records.get(t);if(void 0===e){const n=("function"==typeof(s=t)||"object"==typeof s&&s instanceof Bn)&&dt(t);e=n&&this.injectableDefInScope(n)?fi(di(t),ii):null,this.records.set(t,e)}if(null!=e)return this.hydrate(t,e)}return(n&_t.Self?ci():this.parent).get(t,e=n&_t.Optional&&e===er?null:e)}catch(i){if("NullInjectorError"===i.name){if((i.ngTempTokenPath=i.ngTempTokenPath||[]).unshift(tt(t)),r)throw i;return function(t,e,n,r){const s=t.ngTempTokenPath;throw e[rr]&&s.unshift(e[rr]),t.message=function(t,e,n,r=null){t=t&&"\n"===t.charAt(0)&&"\u0275"==t.charAt(1)?t.substr(2):t;let s=tt(e);if(Array.isArray(e))s=e.map(tt).join(" -> ");else if("object"==typeof e){let t=[];for(let n in e)if(e.hasOwnProperty(n)){let r=e[n];t.push(n+":"+("string"==typeof r?JSON.stringify(r):tt(r)))}s=`{${t.join(", ")}}`}return`${n}${r?"("+r+")":""}[${s}]: ${t.replace(nr,"\n ")}`}("\n"+t.message,s,n,r),t.ngTokenPath=s,t.ngTempTokenPath=null,t}(i,t,"R3InjectorError",this.source)}throw i}finally{or(r)}var s;
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */}_resolveInjectorDefTypes(){this.injectorDefTypes.forEach(t=>this.get(t))}toString(){const t=[];return this.records.forEach((e,n)=>t.push(tt(n))),`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new Error("Injector has already been destroyed.")}processInjectorType(t,e,n){if(!(t=st(t)))return!1;let r=ft(t);const s=null==r&&t.ngModule||void 0,i=void 0===s?t:s,o=-1!==n.indexOf(i);if(void 0!==s&&(r=ft(s)),null==r)return!1;if(null!=r.imports&&!o){let t;n.push(i);try{Zn(r.imports,r=>{this.processInjectorType(r,e,n)&&(void 0===t&&(t=[]),t.push(r))})}finally{}if(void 0!==t)for(let e=0;ethis.processProvider(t,n,r||ai))}}this.injectorDefTypes.add(i);const a=oe(i)||(()=>new i);this.records.set(i,fi(a,ii));const l=r.providers;if(null!=l&&!o){const e=t;Zn(l,t=>this.processProvider(t,e,l))}return void 0!==s&&void 0!==t.providers}processProvider(t,e,n){let r=mi(t=st(t))?t:st(t&&t.provide);const s=function(t,e,n){return gi(t)?fi(void 0,t.useValue):fi(pi(t),ii)}(t);if(mi(t)||!0!==t.multi)this.records.get(r);else{let e=this.records.get(r);e||(e=fi(void 0,ii,!0),e.factory=()=>cr(e.multi),this.records.set(r,e)),r=t,e.multi.push(t)}this.records.set(r,s)}hydrate(t,e){var n;return e.value===ii&&(e.value=oi,e.value=e.factory()),"object"==typeof e.value&&e.value&&null!==(n=e.value)&&"object"==typeof n&&"function"==typeof n.ngOnDestroy&&this.onDestroy.add(e.value),e.value}injectableDefInScope(t){return!!t.providedIn&&("string"==typeof t.providedIn?"any"===t.providedIn||t.providedIn===this.scope:this.injectorDefTypes.has(t.providedIn))}}function di(t){const e=dt(t),n=null!==e?e.factory:oe(t);if(null!==n)return n;if(t instanceof Bn)throw new Error(`Token ${tt(t)} is missing a \u0275prov definition.`);if(t instanceof Function)return function(t){const e=t.length;if(e>0){const n=Kn(e,"?");throw new Error(`Can't resolve all parameters for ${tt(t)}: (${n.join(", ")}).`)}const n=function(t){const e=t&&(t[gt]||t[yt]);if(e){const n=function(t){if(t.hasOwnProperty("name"))return t.name;const e=(""+t).match(/^function\s*([^\s(]+)/);return null===e?"":e[1]}(t);return console.warn(`DEPRECATED: DI is instantiating a token "${n}" that inherits its @Injectable decorator but does not provide one itself.\nThis will become an error in a future version of Angular. Please add @Injectable() to the "${n}" class.`),e}return null}(t);return null!==n?()=>n.factory(t):()=>new t}(t);throw new Error("unreachable")}function pi(t,e,n){let r;if(mi(t)){const e=st(t);return oe(e)||di(e)}if(gi(t))r=()=>st(t.useValue);else if((s=t)&&s.useFactory)r=()=>t.useFactory(...cr(t.deps||[]));else if(function(t){return!(!t||!t.useExisting)}(t))r=()=>lr(st(t.useExisting));else{const e=st(t&&(t.useClass||t.provide));if(!function(t){return!!t.deps}(t))return oe(e)||di(e);r=()=>new e(...cr(t.deps))}var s;return r}function fi(t,e,n=!1){return{factory:t,value:e,multi:n?[]:void 0}}function gi(t){return null!==t&&"object"==typeof t&&sr in t}function mi(t){return"function"==typeof t}const yi=function(t,e,n){return function(t,e=null,n=null,r){const s=ui(t,e,n,r);return s._resolveInjectorDefTypes(),s}({name:n},e,t,n)};let bi=(()=>{class t{static create(t,e){return Array.isArray(t)?yi(t,e,""):yi(t.providers,t.parent,t.name||"")}}return t.THROW_IF_NOT_FOUND=er,t.NULL=new ri,t.\u0275prov=ut({token:t,providedIn:"any",factory:()=>lr(ni)}),t.__NG_ELEMENT_ID__=-1,t})();function _i(t,e){sn(Ce(t)[1],De())}function vi(t){let e=Object.getPrototypeOf(t.type.prototype).constructor,n=!0;const r=[t];for(;e;){let s;if(ie(t))s=e.\u0275cmp||e.\u0275dir;else{if(e.\u0275cmp)throw new Error("Directives cannot inherit Components");s=e.\u0275dir}if(s){if(n){r.push(s);const e=t;e.inputs=wi(t.inputs),e.declaredInputs=wi(t.declaredInputs),e.outputs=wi(t.outputs);const n=s.hostBindings;n&&xi(t,n);const i=s.viewQuery,o=s.contentQueries;if(i&&Ci(t,i),o&&Si(t,o),X(t.inputs,s.inputs),X(t.declaredInputs,s.declaredInputs),X(t.outputs,s.outputs),ie(s)&&s.data.animation){const e=t.data;e.animation=(e.animation||[]).concat(s.data.animation)}}const e=s.features;if(e)for(let r=0;r=0;r--){const s=t[r];s.hostVars=e+=s.hostVars,s.hostAttrs=mn(s.hostAttrs,n=mn(n,s.hostAttrs))}}(r)}function wi(t){return t===Ot?{}:t===Dt?[]:t}function Ci(t,e){const n=t.viewQuery;t.viewQuery=n?(t,r)=>{e(t,r),n(t,r)}:e}function Si(t,e){const n=t.contentQueries;t.contentQueries=n?(t,r,s)=>{e(t,r,s),n(t,r,s)}:e}function xi(t,e){const n=t.hostBindings;t.hostBindings=n?(t,r)=>{e(t,r),n(t,r)}:e}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+let ki=null;function Ei(){if(!ki){const t=Rt.Symbol;if(t&&t.iterator)ki=t.iterator;else{const t=Object.getOwnPropertyNames(Map.prototype);for(let e=0;ea(me(t[r.index])).target:r.index;if(fe(n)){let o=null;if(!a&&l&&(o=function(t,e,n,r){const s=t.cleanup;if(null!=s)for(let i=0;in?t[n]:null}"string"==typeof t&&(i+=2)}return null}(t,e,s,r.index)),null!==o)(o.__ngLastListenerFn__||o).__ngNextListenerFn__=i,o.__ngLastListenerFn__=i,h=!1;else{i=Wi(r,e,0,i,!1);const t=n.listen(p.name||f,s,i);u.push(i,t),c&&c.push(s,m,g,g+1)}}else i=Wi(r,e,0,i,!0),f.addEventListener(s,i,o),u.push(i),c&&c.push(s,m,g,o)}else i=Wi(r,e,0,i,!1);const d=r.outputs;let p;if(h&&null!==d&&(p=d[s])){const t=p.length;if(t)for(let n=0;n0;)e=e[15],t--;return e}(t,Ae.lFrame.contextLView))[8]}(t)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function Yi(t,e){let n=null;const r=function(t){const e=t.attrs;if(null!=e){const t=e.indexOf(5);if(0==(1&t))return e[t+1]}return null}(t);for(let s=0;s=0}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const to={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function eo(t){return t.substring(to.key,to.keyEnd)}function no(t,e){const n=to.textEnd;return n===e?-1:(e=to.keyEnd=function(t,e,n){for(;e32;)e++;return e}(t,to.key=e,n),ro(t,e,n))}function ro(t,e,n){for(;e=0;n=no(e,n))Jn(t,eo(e),!0)}function ao(t,e){return e>=t.expandoStartIndex}function lo(t,e,n,r){const s=t.data;if(null===s[n+1]){const i=s[en()],o=ao(t,n);go(i,r)&&null===e&&!o&&(e=!1),e=function(t,e,n,r){const s=function(t){const e=Ae.lFrame.currentDirectiveIndex;return-1===e?null:t[e]}(t);let i=r?e.residualClasses:e.residualStyles;if(null===s)0===(r?e.classBindings:e.styleBindings)&&(n=uo(n=co(null,t,e,n,r),e.attrs,r),i=null);else{const o=e.directiveStylingLast;if(-1===o||t[o]!==s)if(n=co(s,t,e,n,r),null===i){let n=function(t,e,n){const r=n?e.classBindings:e.styleBindings;if(0!==fs(r))return t[ds(r)]}(t,e,r);void 0!==n&&Array.isArray(n)&&(n=co(null,t,e,n[1],r),n=uo(n,e.attrs,r),function(t,e,n,r){t[ds(n?e.classBindings:e.styleBindings)]=r}(t,e,r,n))}else i=function(t,e,n){let r;const s=e.directiveEnd;for(let i=1+e.directiveStylingLast;i0)&&(u=!0)}else c=n;if(s)if(0!==l){const e=ds(t[a+1]);t[r+1]=hs(e,a),0!==e&&(t[e+1]=gs(t[e+1],r)),t[a+1]=131071&t[a+1]|r<<17}else t[r+1]=hs(a,0),0!==a&&(t[a+1]=gs(t[a+1],r)),a=r;else t[r+1]=hs(l,0),0===a?a=r:t[l+1]=gs(t[l+1],r),l=r;u&&(t[r+1]=ps(t[r+1])),Ji(t,c,r,!0),Ji(t,c,r,!1),function(t,e,n,r,s){const i=s?t.residualClasses:t.residualStyles;null!=i&&"string"==typeof e&&tr(i,e)>=0&&(n[r+1]=ms(n[r+1]))}(e,c,t,r,i),o=hs(a,l),i?e.classBindings=o:e.styleBindings=o}(s,i,e,n,o,r)}}function co(t,e,n,r,s){let i=null;const o=n.directiveEnd;let a=n.directiveStylingLast;for(-1===a?a=n.directiveStart:a++;a0;){const e=t[s],i=Array.isArray(e),l=i?e[1]:e,c=null===l;let u=n[s+1];u===ls&&(u=c?Pt:void 0);let h=c?Xn(u,r):l===r?u:void 0;if(i&&!fo(h)&&(h=Xn(e,r)),fo(h)&&(a=h,o))return a;const d=t[s+1];s=o?ds(d):fs(d)}if(null!==e){let t=i?e.residualClasses:e.residualStyles;null!=t&&(a=Xn(t,r))}return a}function fo(t){return void 0!==t}function go(t,e){return 0!=(t.flags&(e?16:32))}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function mo(t,e=""){const n=Re(),r=Oe(),s=t+Jt,i=r.firstCreatePass?_s(r,s,1,e,null):r.data[s],o=n[s]=function(t,e){return fe(t)?t.createText(e):t.createTextNode(e)}(n[11],e);$r(r,n,o,i),je(i,!1)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function yo(t){return bo("",t,""),yo}function bo(t,e,n){const r=Re(),s=function(t,e,n,r){return Oi(t,$e(),n)?e+at(n)+r:ls}(r,t,e,n);return s!==ls&&function(t,e,n){const r=ye(e,t);!function(t,e,n){fe(t)?t.setValue(e,n):e.textContent=n}(t[11],r,n)}(r,en(),s),bo}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const _o=void 0;var vo=["en",[["a","p"],["AM","PM"],_o],[["AM","PM"],_o,_o],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],_o,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],_o,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",_o,"{1} 'at' {0}",_o],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function(t){let e=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===n?1:5}];
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */let wo={};function Co(t){const e=function(t){return t.toLowerCase().replace(/_/g,"-")}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */(t);let n=So(e);if(n)return n;const r=e.split("-")[0];if(n=So(r),n)return n;if("en"===r)return vo;throw new Error(`Missing locale data for the locale "${t}".`)}function So(t){return t in wo||(wo[t]=Rt.ng&&Rt.ng.common&&Rt.ng.common.locales&&Rt.ng.common.locales[t]),wo[t]}var xo=function(t){return t[t.LocaleId=0]="LocaleId",t[t.DayPeriodsFormat=1]="DayPeriodsFormat",t[t.DayPeriodsStandalone=2]="DayPeriodsStandalone",t[t.DaysFormat=3]="DaysFormat",t[t.DaysStandalone=4]="DaysStandalone",t[t.MonthsFormat=5]="MonthsFormat",t[t.MonthsStandalone=6]="MonthsStandalone",t[t.Eras=7]="Eras",t[t.FirstDayOfWeek=8]="FirstDayOfWeek",t[t.WeekendRange=9]="WeekendRange",t[t.DateFormat=10]="DateFormat",t[t.TimeFormat=11]="TimeFormat",t[t.DateTimeFormat=12]="DateTimeFormat",t[t.NumberSymbols=13]="NumberSymbols",t[t.NumberFormats=14]="NumberFormats",t[t.CurrencyCode=15]="CurrencyCode",t[t.CurrencySymbol=16]="CurrencySymbol",t[t.CurrencyName=17]="CurrencyName",t[t.Currencies=18]="Currencies",t[t.Directionality=19]="Directionality",t[t.PluralCase=20]="PluralCase",t[t.ExtraData=21]="ExtraData",t}({});const ko="en-US";
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+let Eo=ko;function To(t){var e,n;n="Expected localeId to be defined",null==(e=t)&&function(t,e,n,r){throw new Error(`ASSERTION ERROR: ${t} [Expected=> null != ${e} <=Actual]`)}(n,e),"string"==typeof t&&(Eo=t.toLowerCase().replace(/_/g,"-"))}function Ao(t,e,n,r,s){if(t=st(t),Array.isArray(t))for(let i=0;i>20;if(mi(t)||!t.multi){const r=new dn(l,s,Mi),p=Oo(a,e,s?u:u+d,h);-1===p?(An(xn(c,o),i,a),Io(i,t,e.length),e.push(a),c.directiveStart++,c.directiveEnd++,s&&(c.providerIndexes+=1048576),n.push(r),o.push(r)):(n[p]=r,o[p]=r)}else{const p=Oo(a,e,u+d,h),f=Oo(a,e,u,u+d),g=p>=0&&n[p],m=f>=0&&n[f];if(s&&!m||!s&&!g){An(xn(c,o),i,a);const u=function(t,e,n,r,s){const i=new dn(t,n,Mi);return i.multi=[],i.index=e,i.componentProviders=0,Ro(i,s,r&&!n),i}(s?Do:Po,n.length,s,r,l);!s&&m&&(n[f].providerFactory=u),Io(i,t,e.length,0),e.push(a),c.directiveStart++,c.directiveEnd++,s&&(c.providerIndexes+=1048576),n.push(u),o.push(u)}else Io(i,t,p>-1?p:f,Ro(n[s?f:p],l,!s&&r));!s&&r&&m&&n[f].componentProviders++}}}function Io(t,e,n,r){const s=mi(e);if(s||e.useClass){const i=(e.useClass||e).prototype.ngOnDestroy;if(i){const o=t.destroyHooks||(t.destroyHooks=[]);if(!s&&e.multi){const t=o.indexOf(n);-1===t?o.push(n,[r,i]):o[t+1].push(r,i)}else o.push(n,i)}}}function Ro(t,e,n){return n&&t.componentProviders++,t.multi.push(e)-1}function Oo(t,e,n,r){for(let s=n;s{n.providersResolver=(n,r)=>
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function(t,e,n){const r=Oe();if(r.firstCreatePass){const s=ie(t);Ao(n,r.data,r.blueprint,s,!0),Ao(e,r.data,r.blueprint,s,!1)}}(n,r?r(t):t,e)}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class Mo{}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class Vo{resolveComponentFactory(t){throw function(t){const e=Error(`No component factory found for ${tt(t)}. Did you add it to @NgModule.entryComponents?`);return e.ngComponent=t,e}(t)}}let Fo=(()=>{class t{}return t.NULL=new Vo,t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function Uo(...t){}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function Lo(t,e){return new Ho(be(t,e))}const $o=function(){return Lo(De(),Re())};let Ho=(()=>{class t{constructor(t){this.nativeElement=t}}return t.__NG_ELEMENT_ID__=$o,t})();function zo(t){return t instanceof Ho?t.nativeElement:t}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class Bo{}let Go=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>qo(),t})();const qo=function(){const t=Re(),e=we(De().index,t);return function(t){return t[11]}(te(e)?e:t)};let Wo=(()=>{class t{}return t.\u0275prov=ut({token:t,providedIn:"root",factory:()=>null}),t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class Zo{constructor(t){this.full=t,this.major=t.split(".")[0],this.minor=t.split(".")[1],this.patch=t.split(".").slice(2).join(".")}}const Yo=new Zo("11.2.11");
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class Qo{constructor(){}supports(t){return Ai(t)}create(t){return new Jo(t)}}const Ko=(t,e)=>e;class Jo{constructor(t){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=t||Ko}forEachItem(t){let e;for(e=this._itHead;null!==e;e=e._next)t(e)}forEachOperation(t){let e=this._itHead,n=this._removalsHead,r=0,s=null;for(;e||n;){const i=!n||e&&e.currentIndex{r=this._trackByFn(e,t),null!==s&&Object.is(s.trackById,r)?(i&&(s=this._verifyReinsertion(s,t,r,e)),Object.is(s.item,t)||this._addIdentityChange(s,t)):(s=this._mismatch(s,t,r,e),i=!0),s=s._next,e++}),this.length=e;return this._truncate(s),this.collection=t,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let t;for(t=this._previousItHead=this._itHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._additionsHead;null!==t;t=t._nextAdded)t.previousIndex=t.currentIndex;for(this._additionsHead=this._additionsTail=null,t=this._movesHead;null!==t;t=t._nextMoved)t.previousIndex=t.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,e,n,r){let s;return null===t?s=this._itTail:(s=t._prev,this._remove(t)),null!==(t=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null))?(Object.is(t.item,e)||this._addIdentityChange(t,e),this._reinsertAfter(t,s,r)):null!==(t=null===this._linkedRecords?null:this._linkedRecords.get(n,r))?(Object.is(t.item,e)||this._addIdentityChange(t,e),this._moveAfter(t,s,r)):t=this._addAfter(new Xo(e,n),s,r),t}_verifyReinsertion(t,e,n,r){let s=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null);return null!==s?t=this._reinsertAfter(s,t._prev,r):t.currentIndex!=r&&(t.currentIndex=r,this._addToMoves(t,r)),t}_truncate(t){for(;null!==t;){const e=t._next;this._addToRemovals(this._unlink(t)),t=e}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(t,e,n){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(t);const r=t._prevRemoved,s=t._nextRemoved;return null===r?this._removalsHead=s:r._nextRemoved=s,null===s?this._removalsTail=r:s._prevRemoved=r,this._insertAfter(t,e,n),this._addToMoves(t,n),t}_moveAfter(t,e,n){return this._unlink(t),this._insertAfter(t,e,n),this._addToMoves(t,n),t}_addAfter(t,e,n){return this._insertAfter(t,e,n),this._additionsTail=null===this._additionsTail?this._additionsHead=t:this._additionsTail._nextAdded=t,t}_insertAfter(t,e,n){const r=null===e?this._itHead:e._next;return t._next=r,t._prev=e,null===r?this._itTail=t:r._prev=t,null===e?this._itHead=t:e._next=t,null===this._linkedRecords&&(this._linkedRecords=new ea),this._linkedRecords.put(t),t.currentIndex=n,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){null!==this._linkedRecords&&this._linkedRecords.remove(t);const e=t._prev,n=t._next;return null===e?this._itHead=n:e._next=n,null===n?this._itTail=e:n._prev=e,t}_addToMoves(t,e){return t.previousIndex===e||(this._movesTail=null===this._movesTail?this._movesHead=t:this._movesTail._nextMoved=t),t}_addToRemovals(t){return null===this._unlinkedRecords&&(this._unlinkedRecords=new ea),this._unlinkedRecords.put(t),t.currentIndex=null,t._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=t,t._prevRemoved=null):(t._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=t),t}_addIdentityChange(t,e){return t.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=t:this._identityChangesTail._nextIdentityChange=t,t}}class Xo{constructor(t,e){this.item=t,this.trackById=e,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class ta{constructor(){this._head=null,this._tail=null}add(t){null===this._head?(this._head=this._tail=t,t._nextDup=null,t._prevDup=null):(this._tail._nextDup=t,t._prevDup=this._tail,t._nextDup=null,this._tail=t)}get(t,e){let n;for(n=this._head;null!==n;n=n._nextDup)if((null===e||e<=n.currentIndex)&&Object.is(n.trackById,t))return n;return null}remove(t){const e=t._prevDup,n=t._nextDup;return null===e?this._head=n:e._nextDup=n,null===n?this._tail=e:n._prevDup=e,null===this._head}}class ea{constructor(){this.map=new Map}put(t){const e=t.trackById;let n=this.map.get(e);n||(n=new ta,this.map.set(e,n)),n.add(t)}get(t,e){const n=this.map.get(t);return n?n.get(t,e):null}remove(t){const e=t.trackById;return this.map.get(e).remove(t)&&this.map.delete(e),t}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function na(t,e,n){const r=t.previousIndex;if(null===r)return r;let s=0;return n&&r{if(e&&e.key===n)this._maybeAddToChanges(e,t),this._appendAfter=e,e=e._next;else{const r=this._getOrCreateRecordForKey(n,t);e=this._insertBeforeOrAppend(e,r)}}),e){e._prev&&(e._prev._next=null),this._removalsHead=e;for(let t=e;null!==t;t=t._nextRemoved)t===this._mapHead&&(this._mapHead=null),this._records.delete(t.key),t._nextRemoved=t._next,t.previousValue=t.currentValue,t.currentValue=null,t._prev=null,t._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(t,e){if(t){const n=t._prev;return e._next=t,e._prev=n,t._prev=e,n&&(n._next=e),t===this._mapHead&&(this._mapHead=e),this._appendAfter=t,t}return this._appendAfter?(this._appendAfter._next=e,e._prev=this._appendAfter):this._mapHead=e,this._appendAfter=e,null}_getOrCreateRecordForKey(t,e){if(this._records.has(t)){const n=this._records.get(t);this._maybeAddToChanges(n,e);const r=n._prev,s=n._next;return r&&(r._next=s),s&&(s._prev=r),n._next=null,n._prev=null,n}const n=new ia(t);return this._records.set(t,n),n.currentValue=e,this._addToAdditions(n),n}_reset(){if(this.isDirty){let t;for(this._previousMapHead=this._mapHead,t=this._previousMapHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._changesHead;null!==t;t=t._nextChanged)t.previousValue=t.currentValue;for(t=this._additionsHead;null!=t;t=t._nextAdded)t.previousValue=t.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(t,e){Object.is(e,t.currentValue)||(t.previousValue=t.currentValue,t.currentValue=e,this._addToChanges(t))}_addToAdditions(t){null===this._additionsHead?this._additionsHead=this._additionsTail=t:(this._additionsTail._nextAdded=t,this._additionsTail=t)}_addToChanges(t){null===this._changesHead?this._changesHead=this._changesTail=t:(this._changesTail._nextChanged=t,this._changesTail=t)}_forEach(t,e){t instanceof Map?t.forEach(e):Object.keys(t).forEach(n=>e(t[n],n))}}class ia{constructor(t){this.key=t,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function oa(){return new aa([new Qo])}let aa=(()=>{class t{constructor(t){this.factories=t}static create(e,n){if(null!=n){const t=n.factories.slice();e=e.concat(t)}return new t(e)}static extend(e){return{provide:t,useFactory:n=>t.create(e,n||oa()),deps:[[t,new pr,new dr]]}}find(t){const e=this.factories.find(e=>e.supports(t));if(null!=e)return e;throw new Error(`Cannot find a differ supporting object '${t}' of type '${n=t,n.name||typeof n}'`);var n;
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */}}return t.\u0275prov=ut({token:t,providedIn:"root",factory:oa}),t})();function la(){return new ca([new ra])}let ca=(()=>{class t{constructor(t){this.factories=t}static create(e,n){if(n){const t=n.factories.slice();e=e.concat(t)}return new t(e)}static extend(e){return{provide:t,useFactory:n=>t.create(e,n||la()),deps:[[t,new pr,new dr]]}}find(t){const e=this.factories.find(e=>e.supports(t));if(e)return e;throw new Error(`Cannot find a differ supporting object '${t}'`)}}return t.\u0275prov=ut({token:t,providedIn:"root",factory:la}),t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function ua(t,e,n,r,s=!1){for(;null!==n;){const i=e[n.index];if(null!==i&&r.push(me(i)),ee(i))for(let t=Xt;t-1&&(Or(t,n),Qn(e,n))}this._attachedToViewContainer=!1}Pr(this._lView[1],this._lView)}onDestroy(t){Is(this._lView[1],this._lView,null,t)}markForCheck(){qs(this._cdRefInjectingView||this._lView)}detach(){this._lView[2]&=-129}reattach(){this._lView[2]|=128}detectChanges(){Ws(this._lView[1],this._lView,this.context)}checkNoChanges(){!function(t,e,n){Ue(!0);try{Ws(t,e,n)}finally{Ue(!1)}}(this._lView[1],this._lView,this.context)}attachToViewContainerRef(){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._attachedToViewContainer=!0}detachFromAppRef(){var t;this._appRef=null,qr(this._lView[1],t=this._lView,t[11],2,null,null)}attachToAppRef(t){if(this._attachedToViewContainer)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t}}class da extends ha{constructor(t){super(t),this._view=t}detectChanges(){Zs(this._view)}checkNoChanges(){!function(t){Ue(!0);try{Zs(t)}finally{Ue(!1)}}(this._view)}get context(){return null}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const pa=function(t=!1){return function(t,e,n){if(!n&&re(t)){const n=we(t.index,e);return new ha(n,n)}return 47&t.type?new ha(e[16],e):null}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */(De(),Re(),t)};let fa=(()=>{class t{}return t.__NG_ELEMENT_ID__=pa,t.__ChangeDetectorRef__=!0,t})();const ga=[new ra],ma=new aa([new Qo]),ya=new ca(ga),ba=function(){return Ca(De(),Re())};let _a=(()=>{class t{}return t.__NG_ELEMENT_ID__=ba,t})();const va=_a,wa=class extends va{constructor(t,e,n){super(),this._declarationLView=t,this._declarationTContainer=e,this.elementRef=n}createEmbeddedView(t){const e=this._declarationTContainer.tViews,n=bs(this._declarationLView,e,t,16,null,e.declTNode,null,null,null,null);n[17]=this._declarationLView[this._declarationTContainer.index];const r=this._declarationLView[19];return null!==r&&(n[19]=r.createEmbeddedView(e)),ws(e,n,t),new ha(n)}};function Ca(t,e){return 4&t.type?new wa(e,t,Lo(t,e)):null}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class Sa{}class xa{}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const ka=function(){return Oa(De(),Re())};let Ea=(()=>{class t{}return t.__NG_ELEMENT_ID__=ka,t})();const Ta=Ea,Aa=class extends Ta{constructor(t,e,n){super(),this._lContainer=t,this._hostTNode=e,this._hostLView=n}get element(){return Lo(this._hostTNode,this._hostLView)}get injector(){return new Un(this._hostTNode,this._hostLView)}get parentInjector(){const t=Tn(this._hostTNode,this._hostLView);if(bn(t)){const e=vn(t,this._hostLView),n=_n(t);return new Un(e[1].data[n+8],e)}return new Un(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){const e=Ia(this._lContainer);return null!==e&&e[t]||null}get length(){return this._lContainer.length-Xt}createEmbeddedView(t,e,n){const r=t.createEmbeddedView(e||{});return this.insert(r,n),r}createComponent(t,e,n,r,s){const i=n||this.parentInjector;if(!s&&null==t.ngModule&&i){const t=i.get(Sa,null);t&&(s=t)}const o=t.create(i,r,void 0,s);return this.insert(o.hostView,e),o}insert(t,e){const n=t._lView,r=n[1];if(ee(n[3])){const e=this.indexOf(t);if(-1!==e)this.detach(e);else{const e=n[3],r=new Aa(e,e[6],e[3]);r.detach(r.indexOf(t))}}const s=this._adjustIndex(e),i=this._lContainer;!function(t,e,n,r){const s=Xt+r,i=n.length;r>0&&(n[s-1][4]=e),rvr});class Ma extends Mo{constructor(t,e){super(),this.componentDef=t,this.ngModule=e,this.componentType=t.type,this.selector=t.selectors.map(as).join(","),this.ngContentSelectors=t.ngContentSelectors?t.ngContentSelectors:[],this.isBoundToModule=!!e}get inputs(){return Na(this.componentDef.inputs)}get outputs(){return Na(this.componentDef.outputs)}create(t,e,n,r){const s=(r=r||this.ngModule)?function(t,e){return{get:(n,r,s)=>{const i=t.get(n,Pa,s);return i!==Pa||r===Pa?i:e.get(n,r,s)}}}(t,r.injector):t,i=s.get(Bo,ge),o=s.get(Wo,null),a=i.createRenderer(null,this.componentDef),l=this.componentDef.selectors[0][0]||"div",c=n?function(t,e,n){if(fe(t))return t.selectRootElement(e,n===kt.ShadowDom);let r="string"==typeof e?t.querySelector(e):e;return r.textContent="",r}(a,n,this.componentDef.encapsulation):Ir(i.createRenderer(null,this.componentDef),l,function(t){const e=t.toLowerCase();return"svg"===e?"http://www.w3.org/2000/svg":"math"===e?"http://www.w3.org/1998/MathML/":null}(l)),u=this.componentDef.onPush?576:528,h={components:[],scheduler:vr,clean:Qs,playerHandler:null,flags:0},d=As(0,null,null,1,0,null,null,null,null,null),p=bs(null,d,h,u,null,null,i,a,o,s);let f,g;Ye(p);try{const t=function(t,e,n,r,s,i){const o=n[1];n[20]=t;const a=_s(o,20,2,"#host",null),l=a.mergedAttrs=e.hostAttrs;null!==l&&(ei(a,l,!0),null!==t&&(pn(s,t,l),null!==a.classes&&Yr(s,t,a.classes),null!==a.styles&&Zr(s,t,a.styles)));const c=r.createRenderer(t,e),u=bs(n,Ts(e),null,e.onPush?64:16,n[20],a,r,c,null,null);return o.firstCreatePass&&(An(xn(a,n),o,e.type),Ns(o,a),Ms(a,n.length,1)),Gs(n,u),n[20]=u}(c,this.componentDef,p,i,a);if(c)if(n)pn(a,c,["ng-version",Yo.full]);else{const{attrs:t,classes:e}=function(t){const e=[],n=[];let r=1,s=2;for(;r0&&Yr(a,c,e.join(" "))}if(g=_e(d,Jt),void 0!==e){const t=g.projection=[];for(let n=0;nt(o,e)),e.contentQueries){const t=De();e.contentQueries(1,o,t.directiveStart)}const a=De();return!i.firstCreatePass||null===e.hostBindings&&null===e.hostAttrs||(nn(a.index),Ps(n[1],a,0,a.directiveStart,a.directiveEnd,e),Ds(e,o)),o}(t,this.componentDef,p,h,[_i]),ws(d,p,null)}finally{tn()}return new Va(this.componentType,f,Lo(g,p),p,g)}}class Va extends class{}{constructor(t,e,n,r,s){super(),this.location=n,this._rootLView=r,this._tNode=s,this.instance=e,this.hostView=this.changeDetectorRef=new da(r),this.componentType=t}get injector(){return new Un(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(t){this.hostView.onDestroy(t)}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const Fa=new Map;
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+class Ua extends Sa{constructor(t,e){super(),this._parent=e,this._bootstrapComponents=[],this.injector=this,this.destroyCbs=[],this.componentFactoryResolver=new Da(this);const n=Kt(t),r=t[Ft]||null;r&&To(r),this._bootstrapComponents=wr(n.bootstrap),this._r3Injector=ui(t,e,[{provide:Sa,useValue:this},{provide:Fo,useValue:this.componentFactoryResolver}],tt(t)),this._r3Injector._resolveInjectorDefTypes(),this.instance=this.get(t)}get(t,e=bi.THROW_IF_NOT_FOUND,n=_t.Default){return t===bi||t===Sa||t===ni?this:this._r3Injector.get(t,e,n)}destroy(){const t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(t=>t()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class La extends xa{constructor(t){super(),this.moduleType=t,null!==Kt(t)&&function(t){const e=new Set;!function t(n){const r=Kt(n,!0),s=r.id;null!==s&&(function(t,e,n){if(e&&e!==n)throw new Error(`Duplicate module registered for ${t} - ${tt(e)} vs ${tt(e.name)}`)}(s,Fa.get(s),n),Fa.set(s,n));const i=wr(r.imports);for(const o of i)e.has(o)||(e.add(o),t(o))}(t)}(t)}create(t){return new Ua(this.moduleType,t)}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function $a(t,e){const n=t[e];return n===ls?void 0:n}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function Ha(t,e){const n=Oe();let r;const s=t+Jt;n.firstCreatePass?(r=function(t,e){if(e)for(let n=e.length-1;n>=0;n--){const r=e[n];if(t===r.name)return r}throw new ot("302",`The pipe '${t}' could not be found!`)}(e,n.pipeRegistry),n.data[s]=r,r.onDestroy&&(n.destroyHooks||(n.destroyHooks=[])).push(s,r.onDestroy)):r=n.data[s];const i=r.factory||(r.factory=oe(r.type)),o=wt(Mi);try{const t=Cn(!1),e=i();return Cn(t),function(t,e,n,r){n>=t.data.length&&(t.data[n]=null,t.blueprint[n]=null),e[n]=r}(n,Re(),s,e),e}finally{wt(o)}}function za(t,e,n,r){const s=t+Jt,i=Re(),o=ve(i,s);return function(t,e){return Ti.isWrapped(e)&&(e=Ti.unwrap(e),t[Ae.lFrame.bindingIndex]=ls),e}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */(i,function(t,e){return t[1].data[e].pure}(i,s)?function(t,e,n,r,s,i,o){const a=e+n;return Pi(t,a,s,i)?Ri(t,a+2,o?r.call(o,s,i):r(s,i)):$a(t,a+2)}(i,Le(),e,o.transform,n,r,o):o.transform(n,r))}function Ba(t){return e=>{setTimeout(t,void 0,e)}}const Ga=class extends S{constructor(t=!1){super(),this.__isAsync=t}emit(t){super.next(t)}subscribe(t,e,n){var r,s,i;let o=t,a=e||(()=>null),l=n;if(t&&"object"==typeof t){const e=t;o=null===(r=e.next)||void 0===r?void 0:r.bind(e),a=null===(s=e.error)||void 0===s?void 0:s.bind(e),l=null===(i=e.complete)||void 0===i?void 0:i.bind(e)}this.__isAsync&&(a=Ba(a),o&&(o=Ba(o)),l&&(l=Ba(l)));const c=super.subscribe({next:o,error:a,complete:l});return t instanceof h&&t.add(c),c}};
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function qa(){return this._results[Ei()]()}class Wa{constructor(t=!1){this._emitDistinctChangesOnly=t,this.dirty=!0,this._results=[],this._changesDetected=!1,this._changes=null,this.length=0,this.first=void 0,this.last=void 0;const e=Ei(),n=Wa.prototype;n[e]||(n[e]=qa)}get changes(){return this._changes||(this._changes=new Ga)}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,e){return this._results.reduce(t,e)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,e){const n=this;n.dirty=!1;const r=Wn(t);(this._changesDetected=!function(t,e,n){if(t.length!==e.length)return!1;for(let r=0;r0)r.push(o[t/2]);else{const s=i[t+1],o=e[-n];for(let t=Xt;t{class t{constructor(t){this.appInits=t,this.resolve=Uo,this.reject=Uo,this.initialized=!1,this.done=!1,this.donePromise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}runInitializers(){if(this.initialized)return;const t=[],e=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let n=0;n{e()}).catch(t=>{this.reject(t)}),0===t.length&&e(),this.initialized=!0}}return t.\u0275fac=function(e){return new(e||t)(lr(ll,8))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const ul=new Bn("AppId"),hl={provide:ul,useFactory:function(){return`${dl()}${dl()}${dl()}`},deps:[]};function dl(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const pl=new Bn("Platform Initializer"),fl=new Bn("Platform ID"),gl=new Bn("appBootstrapListener");let ml=(()=>{class t{log(t){console.log(t)}warn(t){console.warn(t)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const yl=new Bn("LocaleId"),bl=new Bn("DefaultCurrencyCode");
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+class _l{constructor(t,e){this.ngModuleFactory=t,this.componentFactories=e}}const vl=function(t){return new La(t)},wl=vl,Cl=function(t){return Promise.resolve(vl(t))},Sl=function(t){const e=vl(t),n=wr(Kt(t).declarations).reduce((t,e)=>{const n=Qt(e);return n&&t.push(new Ma(n)),t},[]);return new _l(e,n)},xl=Sl,kl=function(t){return Promise.resolve(Sl(t))};let El=(()=>{class t{constructor(){this.compileModuleSync=wl,this.compileModuleAsync=Cl,this.compileModuleAndAllComponentsSync=xl,this.compileModuleAndAllComponentsAsync=kl}clearCache(){}clearCacheFor(t){}getModuleId(t){}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})();const Tl=(()=>Promise.resolve(0))();function Al(t){"undefined"==typeof Zone?Tl.then(()=>{t&&t.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",t)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+class Il{constructor({enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:e=!1,shouldCoalesceRunChangeDetection:n=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new Ga(!1),this.onMicrotaskEmpty=new Ga(!1),this.onStable=new Ga(!1),this.onError=new Ga(!1),"undefined"==typeof Zone)throw new Error("In this configuration Angular requires Zone.js");Zone.assertZonePatched();const r=this;r._nesting=0,r._outer=r._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(r._inner=r._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(r._inner=r._inner.fork(Zone.longStackTraceZoneSpec)),r.shouldCoalesceEventChangeDetection=!n&&e,r.shouldCoalesceRunChangeDetection=n,r.lastRequestAnimationFrameId=-1,r.nativeRequestAnimationFrame=function(){let t=Rt.requestAnimationFrame,e=Rt.cancelAnimationFrame;if("undefined"!=typeof Zone&&t&&e){const n=t[Zone.__symbol__("OriginalDelegate")];n&&(t=n);const r=e[Zone.__symbol__("OriginalDelegate")];r&&(e=r)}return{nativeRequestAnimationFrame:t,nativeCancelAnimationFrame:e}}().nativeRequestAnimationFrame,function(t){const e=()=>{!function(t){-1===t.lastRequestAnimationFrameId&&(t.lastRequestAnimationFrameId=t.nativeRequestAnimationFrame.call(Rt,()=>{t.fakeTopEventTask||(t.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{t.lastRequestAnimationFrameId=-1,Pl(t),Ol(t)},void 0,()=>{},()=>{})),t.fakeTopEventTask.invoke()}),Pl(t))}(t)};t._inner=t._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(n,r,s,i,o,a)=>{try{return Dl(t),n.invokeTask(s,i,o,a)}finally{(t.shouldCoalesceEventChangeDetection&&"eventTask"===i.type||t.shouldCoalesceRunChangeDetection)&&e(),Nl(t)}},onInvoke:(n,r,s,i,o,a,l)=>{try{return Dl(t),n.invoke(s,i,o,a,l)}finally{t.shouldCoalesceRunChangeDetection&&e(),Nl(t)}},onHasTask:(e,n,r,s)=>{e.hasTask(r,s),n===r&&("microTask"==s.change?(t._hasPendingMicrotasks=s.microTask,Pl(t),Ol(t)):"macroTask"==s.change&&(t.hasPendingMacrotasks=s.macroTask))},onHandleError:(e,n,r,s)=>(e.handleError(r,s),t.runOutsideAngular(()=>t.onError.emit(s)),!1)})}(r)}static isInAngularZone(){return!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!Il.isInAngularZone())throw new Error("Expected to be in Angular Zone, but it is not!")}static assertNotInAngularZone(){if(Il.isInAngularZone())throw new Error("Expected to not be in Angular Zone, but it is!")}run(t,e,n){return this._inner.run(t,e,n)}runTask(t,e,n,r){const s=this._inner,i=s.scheduleEventTask("NgZoneEvent: "+r,t,Rl,Uo,Uo);try{return s.runTask(i,e,n)}finally{s.cancelTask(i)}}runGuarded(t,e,n){return this._inner.runGuarded(t,e,n)}runOutsideAngular(t){return this._outer.run(t)}}const Rl={};function Ol(t){if(0==t._nesting&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function Pl(t){t.hasPendingMicrotasks=!!(t._hasPendingMicrotasks||(t.shouldCoalesceEventChangeDetection||t.shouldCoalesceRunChangeDetection)&&-1!==t.lastRequestAnimationFrameId)}function Dl(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function Nl(t){t._nesting--,Ol(t)}class jl{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new Ga,this.onMicrotaskEmpty=new Ga,this.onStable=new Ga,this.onError=new Ga}run(t,e,n){return t.apply(e,n)}runGuarded(t,e,n){return t.apply(e,n)}runOutsideAngular(t){return t()}runTask(t,e,n,r){return t.apply(e,n)}}let Ml=(()=>{class t{constructor(t){this._ngZone=t,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,this._watchAngularEvents(),t.run(()=>{this.taskTrackingZone="undefined"==typeof Zone?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{Il.assertNotInAngularZone(),Al(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())Al(()=>{for(;0!==this._callbacks.length;){let t=this._callbacks.pop();clearTimeout(t.timeoutId),t.doneCb(this._didWork)}this._didWork=!1});else{let t=this.getPendingTasks();this._callbacks=this._callbacks.filter(e=>!e.updateCb||!e.updateCb(t)||(clearTimeout(e.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(t=>({source:t.source,creationLocation:t.creationLocation,data:t.data})):[]}addCallback(t,e,n){let r=-1;e&&e>0&&(r=setTimeout(()=>{this._callbacks=this._callbacks.filter(t=>t.timeoutId!==r),t(this._didWork,this.getPendingTasks())},e)),this._callbacks.push({doneCb:t,timeoutId:r,updateCb:n})}whenStable(t,e,n){if(n&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/dist/task-tracking.js" loaded?');this.addCallback(t,e,n),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}findProviders(t,e,n){return[]}}return t.\u0275fac=function(e){return new(e||t)(lr(Il))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})(),Vl=(()=>{class t{constructor(){this._applications=new Map,Ll.addToWindow(this)}registerApplication(t,e){this._applications.set(t,e)}unregisterApplication(t){this._applications.delete(t)}unregisterAllApplications(){this._applications.clear()}getTestability(t){return this._applications.get(t)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(t,e=!0){return Ll.findTestabilityInTree(this,t,e)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})();class Fl{addToWindow(t){}findTestabilityInTree(t,e,n){return null}}let Ul,Ll=new Fl,$l=!0,Hl=!1;
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const zl=new Bn("AllowMultipleToken");class Bl{constructor(t,e){this.name=t,this.token=e}}function Gl(t,e,n=[]){const r=`Platform: ${e}`,s=new Bn(r);return(e=[])=>{let i=ql();if(!i||i.injector.get(zl,!1))if(t)t(n.concat(e).concat({provide:s,useValue:!0}));else{const t=n.concat(e).concat({provide:s,useValue:!0},{provide:si,useValue:"platform"});!function(t){if(Ul&&!Ul.destroyed&&!Ul.injector.get(zl,!1))throw new Error("There can be only one platform. Destroy the previous one to create a new one.");Ul=t.get(Wl);const e=t.get(pl,null);e&&e.forEach(t=>t())}(bi.create({providers:t,name:r}))}return function(t){const e=ql();if(!e)throw new Error("No platform exists!");if(!e.injector.get(t,null))throw new Error("A platform with a different configuration has been created. Please destroy it first.");return e}(s)}}function ql(){return Ul&&!Ul.destroyed?Ul:null}let Wl=(()=>{class t{constructor(t){this._injector=t,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(t,e){const n=function(t,e){let n;return n="noop"===t?new jl:("zone.js"===t?void 0:t)||new Il({enableLongStackTrace:(Hl=!0,$l),shouldCoalesceEventChangeDetection:!!(null==e?void 0:e.ngZoneEventCoalescing),shouldCoalesceRunChangeDetection:!!(null==e?void 0:e.ngZoneRunCoalescing)}),n}(e?e.ngZone:void 0,{ngZoneEventCoalescing:e&&e.ngZoneEventCoalescing||!1,ngZoneRunCoalescing:e&&e.ngZoneRunCoalescing||!1}),r=[{provide:Il,useValue:n}];return n.run(()=>{const e=bi.create({providers:r,parent:this.injector,name:t.moduleType.name}),s=t.create(e),i=s.injector.get(br,null);if(!i)throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");return n.runOutsideAngular(()=>{const t=n.onError.subscribe({next:t=>{i.handleError(t)}});s.onDestroy(()=>{Ql(this._modules,s),t.unsubscribe()})}),function(t,e,n){try{const r=n();return zi(r)?r.catch(n=>{throw e.runOutsideAngular(()=>t.handleError(n)),n}):r}catch(r){throw e.runOutsideAngular(()=>t.handleError(r)),r}}(i,n,()=>{const t=s.injector.get(cl);return t.runInitializers(),t.donePromise.then(()=>(To(s.injector.get(yl,ko)||ko),this._moduleDoBootstrap(s),s))})})}bootstrapModule(t,e=[]){const n=Zl({},e);return function(t,e,n){const r=new La(n);return Promise.resolve(r)}(0,0,t).then(t=>this.bootstrapModuleFactory(t,n))}_moduleDoBootstrap(t){const e=t.injector.get(Yl);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(t=>e.bootstrap(t));else{if(!t.instance.ngDoBootstrap)throw new Error(`The module ${tt(t.instance.constructor)} was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.`);t.instance.ngDoBootstrap(e)}this._modules.push(t)}onDestroy(t){this._destroyListeners.push(t)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new Error("The platform has already been destroyed!");this._modules.slice().forEach(t=>t.destroy()),this._destroyListeners.forEach(t=>t()),this._destroyed=!0}get destroyed(){return this._destroyed}}return t.\u0275fac=function(e){return new(e||t)(lr(bi))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})();function Zl(t,e){return Array.isArray(e)?e.reduce(Zl,t):Object.assign(Object.assign({},t),e)}let Yl=(()=>{class t{constructor(t,e,n,r,s){this._zone=t,this._injector=e,this._exceptionHandler=n,this._componentFactoryResolver=r,this._initStatus=s,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._stable=!0,this.componentTypes=[],this.components=[],this._onMicrotaskEmptySubscription=this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const i=new b(t=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{t.next(this._stable),t.complete()})}),o=new b(t=>{let e;this._zone.runOutsideAngular(()=>{e=this._zone.onStable.subscribe(()=>{Il.assertNotInAngularZone(),Al(()=>{this._stable||this._zone.hasPendingMacrotasks||this._zone.hasPendingMicrotasks||(this._stable=!0,t.next(!0))})})});const n=this._zone.onUnstable.subscribe(()=>{Il.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{t.next(!1)}))});return()=>{e.unsubscribe(),n.unsubscribe()}});this.isStable=function(...t){let e=Number.POSITIVE_INFINITY,n=null,r=t[t.length-1];return k(r)?(n=t.pop(),t.length>1&&"number"==typeof t[t.length-1]&&(e=t.pop())):"number"==typeof r&&(e=t.pop()),null===n&&1===t.length&&t[0]instanceof b?t[0]:z(e)(B(t,n))}(i,o.pipe(t=>{return G()((e=K,function(t){let n;n="function"==typeof e?e:function(){return e};const r=Object.create(t,Y);return r.source=t,r.subjectFactory=n,r})(t));var e}))}bootstrap(t,e){if(!this._initStatus.done)throw new Error("Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.");let n;n=t instanceof Mo?t:this._componentFactoryResolver.resolveComponentFactory(t),this.componentTypes.push(n.componentType);const r=n.isBoundToModule?void 0:this._injector.get(Sa),s=n.create(bi.NULL,[],e||n.selector,r),i=s.location.nativeElement,o=s.injector.get(Ml,null),a=o&&s.injector.get(Vl);return o&&a&&a.registerApplication(i,o),s.onDestroy(()=>{this.detachView(s.hostView),Ql(this.components,s),a&&a.unregisterApplication(i)}),this._loadComponent(s),s}tick(){if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");try{this._runningTick=!0;for(let t of this._views)t.detectChanges()}catch(t){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(t))}finally{this._runningTick=!1}}attachView(t){const e=t;this._views.push(e),e.attachToAppRef(this)}detachView(t){const e=t;Ql(this._views,e),e.detachFromAppRef()}_loadComponent(t){this.attachView(t.hostView),this.tick(),this.components.push(t),this._injector.get(gl,[]).concat(this._bootstrapListeners).forEach(e=>e(t))}ngOnDestroy(){this._views.slice().forEach(t=>t.destroy()),this._onMicrotaskEmptySubscription.unsubscribe()}get viewCount(){return this._views.length}}return t.\u0275fac=function(e){return new(e||t)(lr(Il),lr(bi),lr(br),lr(Fo),lr(cl))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})();function Ql(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+class Kl{}class Jl{}const Xl={factoryPathPrefix:"",factoryPathSuffix:".ngfactory"};let tc=(()=>{class t{constructor(t,e){this._compiler=t,this._config=e||Xl}load(t){return this.loadAndCompile(t)}loadAndCompile(t){let[e,r]=t.split("#");return void 0===r&&(r="default"),n("zn8P")(e).then(t=>t[r]).then(t=>ec(t,e,r)).then(t=>this._compiler.compileModuleAsync(t))}loadFactory(t){let[e,r]=t.split("#"),s="NgFactory";return void 0===r&&(r="default",s=""),n("zn8P")(this._config.factoryPathPrefix+e+this._config.factoryPathSuffix).then(t=>t[r+s]).then(t=>ec(t,e,r))}}return t.\u0275fac=function(e){return new(e||t)(lr(El),lr(Jl,8))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})();function ec(t,e,n){if(!t)throw new Error(`Cannot find '${n}' in '${e}'`);return t}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const nc=Gl(null,"core",[{provide:fl,useValue:"unknown"},{provide:Wl,deps:[bi]},{provide:Vl,deps:[]},{provide:ml,deps:[]}]),rc=[{provide:Yl,useClass:Yl,deps:[Il,bi,br,Fo,cl]},{provide:ja,deps:[Il],useFactory:function(t){let e=[];return t.onStable.subscribe(()=>{for(;e.length;)e.pop()()}),function(t){e.push(t)}}},{provide:cl,useClass:cl,deps:[[new dr,ll]]},{provide:El,useClass:El,deps:[]},hl,{provide:aa,useFactory:
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function(){return ma},deps:[]},{provide:ca,useFactory:function(){return ya},deps:[]},{provide:yl,useFactory:function(t){return To(t=t||"undefined"!=typeof $localize&&$localize.locale||ko),t},deps:[[new hr(yl),new dr,new pr]]},{provide:bl,useValue:"USD"}];let sc=(()=>{class t{constructor(t){}}return t.\u0275fac=function(e){return new(e||t)(lr(Yl))},t.\u0275mod=qt({type:t}),t.\u0275inj=ht({providers:rc}),t})(),ic=null;function oc(){return ic}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const ac=new Bn("DocumentToken");let lc=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=ut({factory:cc,token:t,providedIn:"platform"}),t})();function cc(){return lr(hc)}const uc=new Bn("Location Initialized");let hc=(()=>{class t extends lc{constructor(t){super(),this._doc=t,this._init()}_init(){this.location=oc().getLocation(),this._history=oc().getHistory()}getBaseHrefFromDOM(){return oc().getBaseHref(this._doc)}onPopState(t){oc().getGlobalEventTarget(this._doc,"window").addEventListener("popstate",t,!1)}onHashChange(t){oc().getGlobalEventTarget(this._doc,"window").addEventListener("hashchange",t,!1)}get href(){return this.location.href}get protocol(){return this.location.protocol}get hostname(){return this.location.hostname}get port(){return this.location.port}get pathname(){return this.location.pathname}get search(){return this.location.search}get hash(){return this.location.hash}set pathname(t){this.location.pathname=t}pushState(t,e,n){dc()?this._history.pushState(t,e,n):this.location.hash=n}replaceState(t,e,n){dc()?this._history.replaceState(t,e,n):this.location.hash=n}forward(){this._history.forward()}back(){this._history.back()}getState(){return this._history.state}}return t.\u0275fac=function(e){return new(e||t)(lr(ac))},t.\u0275prov=ut({factory:pc,token:t,providedIn:"platform"}),t})();function dc(){return!!window.history.pushState}function pc(){return new hc(lr(ac))}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function fc(t,e){if(0==t.length)return e;if(0==e.length)return t;let n=0;return t.endsWith("/")&&n++,e.startsWith("/")&&n++,2==n?t+e.substring(1):1==n?t+e:t+"/"+e}function gc(t){const e=t.match(/#|\?|$/),n=e&&e.index||t.length;return t.slice(0,n-("/"===t[n-1]?1:0))+t.slice(n)}function mc(t){return t&&"?"!==t[0]?"?"+t:t}let yc=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=ut({factory:bc,token:t,providedIn:"root"}),t})();function bc(t){const e=lr(ac).location;return new vc(lr(lc),e&&e.origin||"")}const _c=new Bn("appBaseHref");let vc=(()=>{class t extends yc{constructor(t,e){if(super(),this._platformLocation=t,null==e&&(e=this._platformLocation.getBaseHrefFromDOM()),null==e)throw new Error("No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.");this._baseHref=e}onPopState(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)}getBaseHref(){return this._baseHref}prepareExternalUrl(t){return fc(this._baseHref,t)}path(t=!1){const e=this._platformLocation.pathname+mc(this._platformLocation.search),n=this._platformLocation.hash;return n&&t?`${e}${n}`:e}pushState(t,e,n,r){const s=this.prepareExternalUrl(n+mc(r));this._platformLocation.pushState(t,e,s)}replaceState(t,e,n,r){const s=this.prepareExternalUrl(n+mc(r));this._platformLocation.replaceState(t,e,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}}return t.\u0275fac=function(e){return new(e||t)(lr(lc),lr(_c,8))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})(),wc=(()=>{class t extends yc{constructor(t,e){super(),this._platformLocation=t,this._baseHref="",null!=e&&(this._baseHref=e)}onPopState(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)}getBaseHref(){return this._baseHref}path(t=!1){let e=this._platformLocation.hash;return null==e&&(e="#"),e.length>0?e.substring(1):e}prepareExternalUrl(t){const e=fc(this._baseHref,t);return e.length>0?"#"+e:e}pushState(t,e,n,r){let s=this.prepareExternalUrl(n+mc(r));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.pushState(t,e,s)}replaceState(t,e,n,r){let s=this.prepareExternalUrl(n+mc(r));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.replaceState(t,e,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}}return t.\u0275fac=function(e){return new(e||t)(lr(lc),lr(_c,8))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})(),Cc=(()=>{class t{constructor(t,e){this._subject=new Ga,this._urlChangeListeners=[],this._platformStrategy=t;const n=this._platformStrategy.getBaseHref();this._platformLocation=e,this._baseHref=gc(xc(n)),this._platformStrategy.onPopState(t=>{this._subject.emit({url:this.path(!0),pop:!0,state:t.state,type:t.type})})}path(t=!1){return this.normalize(this._platformStrategy.path(t))}getState(){return this._platformLocation.getState()}isCurrentPathEqualTo(t,e=""){return this.path()==this.normalize(t+mc(e))}normalize(e){return t.stripTrailingSlash(function(t,e){return t&&e.startsWith(t)?e.substring(t.length):e}(this._baseHref,xc(e)))}prepareExternalUrl(t){return t&&"/"!==t[0]&&(t="/"+t),this._platformStrategy.prepareExternalUrl(t)}go(t,e="",n=null){this._platformStrategy.pushState(n,"",t,e),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+mc(e)),n)}replaceState(t,e="",n=null){this._platformStrategy.replaceState(n,"",t,e),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+mc(e)),n)}forward(){this._platformStrategy.forward()}back(){this._platformStrategy.back()}onUrlChange(t){this._urlChangeListeners.push(t),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(t=>{this._notifyUrlChangeListeners(t.url,t.state)}))}_notifyUrlChangeListeners(t="",e){this._urlChangeListeners.forEach(n=>n(t,e))}subscribe(t,e,n){return this._subject.subscribe({next:t,error:e,complete:n})}}return t.\u0275fac=function(e){return new(e||t)(lr(yc),lr(lc))},t.normalizeQueryParams=mc,t.joinWithSlash=fc,t.stripTrailingSlash=gc,t.\u0275prov=ut({factory:Sc,token:t,providedIn:"root"}),t})();function Sc(){return new Cc(lr(yc),lr(lc))}function xc(t){return t.replace(/\/index.html$/,"")}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+var kc=function(t){return t[t.Zero=0]="Zero",t[t.One=1]="One",t[t.Two=2]="Two",t[t.Few=3]="Few",t[t.Many=4]="Many",t[t.Other=5]="Other",t}({}),Ec=function(t){return t[t.Format=0]="Format",t[t.Standalone=1]="Standalone",t}({}),Tc=function(t){return t[t.Narrow=0]="Narrow",t[t.Abbreviated=1]="Abbreviated",t[t.Wide=2]="Wide",t[t.Short=3]="Short",t}({}),Ac=function(t){return t[t.Short=0]="Short",t[t.Medium=1]="Medium",t[t.Long=2]="Long",t[t.Full=3]="Full",t}({}),Ic=function(t){return t[t.Decimal=0]="Decimal",t[t.Group=1]="Group",t[t.List=2]="List",t[t.PercentSign=3]="PercentSign",t[t.PlusSign=4]="PlusSign",t[t.MinusSign=5]="MinusSign",t[t.Exponential=6]="Exponential",t[t.SuperscriptingExponent=7]="SuperscriptingExponent",t[t.PerMille=8]="PerMille",t[t[1/0]=9]="Infinity",t[t.NaN=10]="NaN",t[t.TimeSeparator=11]="TimeSeparator",t[t.CurrencyDecimal=12]="CurrencyDecimal",t[t.CurrencyGroup=13]="CurrencyGroup",t}({});function Rc(t,e){return jc(Co(t)[xo.DateFormat],e)}function Oc(t,e){return jc(Co(t)[xo.TimeFormat],e)}function Pc(t,e){return jc(Co(t)[xo.DateTimeFormat],e)}function Dc(t,e){const n=Co(t),r=n[xo.NumberSymbols][e];if(void 0===r){if(e===Ic.CurrencyDecimal)return n[xo.NumberSymbols][Ic.Decimal];if(e===Ic.CurrencyGroup)return n[xo.NumberSymbols][Ic.Group]}return r}function Nc(t){if(!t[xo.ExtraData])throw new Error(`Missing extra locale data for the locale "${t[xo.LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function jc(t,e){for(let n=e;n>-1;n--)if(void 0!==t[n])return t[n];throw new Error("Locale data API: locale data undefined")}function Mc(t){const[e,n]=t.split(":");return{hours:+e,minutes:+n}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const Vc=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,Fc={},Uc=/((?:[^GyYMLwWdEabBhHmsSzZO']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/;var Lc=function(t){return t[t.Short=0]="Short",t[t.ShortGMT=1]="ShortGMT",t[t.Long=2]="Long",t[t.Extended=3]="Extended",t}({}),$c=function(t){return t[t.FullYear=0]="FullYear",t[t.Month=1]="Month",t[t.Date=2]="Date",t[t.Hours=3]="Hours",t[t.Minutes=4]="Minutes",t[t.Seconds=5]="Seconds",t[t.FractionalSeconds=6]="FractionalSeconds",t[t.Day=7]="Day",t}({}),Hc=function(t){return t[t.DayPeriods=0]="DayPeriods",t[t.Days=1]="Days",t[t.Months=2]="Months",t[t.Eras=3]="Eras",t}({});function zc(t,e,n,r){let s=function(t){if(nu(t))return t;if("number"==typeof t&&!isNaN(t))return new Date(t);if("string"==typeof t){if(t=t.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(t)){const[e,n=1,r=1]=t.split("-").map(t=>+t);return Bc(e,n-1,r)}const e=parseFloat(t);if(!isNaN(t-e))return new Date(e);let n;if(n=t.match(Vc))return function(t){const e=new Date(0);let n=0,r=0;const s=t[8]?e.setUTCFullYear:e.setFullYear,i=t[8]?e.setUTCHours:e.setHours;t[9]&&(n=Number(t[9]+t[10]),r=Number(t[9]+t[11])),s.call(e,Number(t[1]),Number(t[2])-1,Number(t[3]));const o=Number(t[4]||0)-n,a=Number(t[5]||0)-r,l=Number(t[6]||0),c=Math.floor(1e3*parseFloat("0."+(t[7]||0)));return i.call(e,o,a,l,c),e}(n)}const e=new Date(t);if(!nu(e))throw new Error(`Unable to convert "${t}" into a date`);return e}(t);e=Gc(n,e)||e;let i,o=[];for(;e;){if(i=Uc.exec(e),!i){o.push(e);break}{o=o.concat(i.slice(1));const t=o.pop();if(!t)break;e=t}}let a=s.getTimezoneOffset();r&&(a=eu(r,a),s=function(t,e,n){const r=t.getTimezoneOffset();return function(t,e){return(t=new Date(t.getTime())).setMinutes(t.getMinutes()+e),t}(t,-1*(eu(e,r)-r))}(s,r));let l="";return o.forEach(t=>{const e=function(t){if(tu[t])return tu[t];let e;switch(t){case"G":case"GG":case"GGG":e=Yc(Hc.Eras,Tc.Abbreviated);break;case"GGGG":e=Yc(Hc.Eras,Tc.Wide);break;case"GGGGG":e=Yc(Hc.Eras,Tc.Narrow);break;case"y":e=Zc($c.FullYear,1,0,!1,!0);break;case"yy":e=Zc($c.FullYear,2,0,!0,!0);break;case"yyy":e=Zc($c.FullYear,3,0,!1,!0);break;case"yyyy":e=Zc($c.FullYear,4,0,!1,!0);break;case"Y":e=Xc(1);break;case"YY":e=Xc(2,!0);break;case"YYY":e=Xc(3);break;case"YYYY":e=Xc(4);break;case"M":case"L":e=Zc($c.Month,1,1);break;case"MM":case"LL":e=Zc($c.Month,2,1);break;case"MMM":e=Yc(Hc.Months,Tc.Abbreviated);break;case"MMMM":e=Yc(Hc.Months,Tc.Wide);break;case"MMMMM":e=Yc(Hc.Months,Tc.Narrow);break;case"LLL":e=Yc(Hc.Months,Tc.Abbreviated,Ec.Standalone);break;case"LLLL":e=Yc(Hc.Months,Tc.Wide,Ec.Standalone);break;case"LLLLL":e=Yc(Hc.Months,Tc.Narrow,Ec.Standalone);break;case"w":e=Jc(1);break;case"ww":e=Jc(2);break;case"W":e=Jc(1,!0);break;case"d":e=Zc($c.Date,1);break;case"dd":e=Zc($c.Date,2);break;case"E":case"EE":case"EEE":e=Yc(Hc.Days,Tc.Abbreviated);break;case"EEEE":e=Yc(Hc.Days,Tc.Wide);break;case"EEEEE":e=Yc(Hc.Days,Tc.Narrow);break;case"EEEEEE":e=Yc(Hc.Days,Tc.Short);break;case"a":case"aa":case"aaa":e=Yc(Hc.DayPeriods,Tc.Abbreviated);break;case"aaaa":e=Yc(Hc.DayPeriods,Tc.Wide);break;case"aaaaa":e=Yc(Hc.DayPeriods,Tc.Narrow);break;case"b":case"bb":case"bbb":e=Yc(Hc.DayPeriods,Tc.Abbreviated,Ec.Standalone,!0);break;case"bbbb":e=Yc(Hc.DayPeriods,Tc.Wide,Ec.Standalone,!0);break;case"bbbbb":e=Yc(Hc.DayPeriods,Tc.Narrow,Ec.Standalone,!0);break;case"B":case"BB":case"BBB":e=Yc(Hc.DayPeriods,Tc.Abbreviated,Ec.Format,!0);break;case"BBBB":e=Yc(Hc.DayPeriods,Tc.Wide,Ec.Format,!0);break;case"BBBBB":e=Yc(Hc.DayPeriods,Tc.Narrow,Ec.Format,!0);break;case"h":e=Zc($c.Hours,1,-12);break;case"hh":e=Zc($c.Hours,2,-12);break;case"H":e=Zc($c.Hours,1);break;case"HH":e=Zc($c.Hours,2);break;case"m":e=Zc($c.Minutes,1);break;case"mm":e=Zc($c.Minutes,2);break;case"s":e=Zc($c.Seconds,1);break;case"ss":e=Zc($c.Seconds,2);break;case"S":e=Zc($c.FractionalSeconds,1);break;case"SS":e=Zc($c.FractionalSeconds,2);break;case"SSS":e=Zc($c.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":e=Qc(Lc.Short);break;case"ZZZZZ":e=Qc(Lc.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=Qc(Lc.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":e=Qc(Lc.Long);break;default:return null}return tu[t]=e,e}(t);l+=e?e(s,n,a):"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),l}function Bc(t,e,n){const r=new Date(0);return r.setFullYear(t,e,n),r.setHours(0,0,0),r}function Gc(t,e){const n=function(t){return Co(t)[xo.LocaleId]}(t);if(Fc[n]=Fc[n]||{},Fc[n][e])return Fc[n][e];let r="";switch(e){case"shortDate":r=Rc(t,Ac.Short);break;case"mediumDate":r=Rc(t,Ac.Medium);break;case"longDate":r=Rc(t,Ac.Long);break;case"fullDate":r=Rc(t,Ac.Full);break;case"shortTime":r=Oc(t,Ac.Short);break;case"mediumTime":r=Oc(t,Ac.Medium);break;case"longTime":r=Oc(t,Ac.Long);break;case"fullTime":r=Oc(t,Ac.Full);break;case"short":const e=Gc(t,"shortTime"),n=Gc(t,"shortDate");r=qc(Pc(t,Ac.Short),[e,n]);break;case"medium":const s=Gc(t,"mediumTime"),i=Gc(t,"mediumDate");r=qc(Pc(t,Ac.Medium),[s,i]);break;case"long":const o=Gc(t,"longTime"),a=Gc(t,"longDate");r=qc(Pc(t,Ac.Long),[o,a]);break;case"full":const l=Gc(t,"fullTime"),c=Gc(t,"fullDate");r=qc(Pc(t,Ac.Full),[l,c])}return r&&(Fc[n][e]=r),r}function qc(t,e){return e&&(t=t.replace(/\{([^}]+)}/g,function(t,n){return null!=e&&n in e?e[n]:t})),t}function Wc(t,e,n="-",r,s){let i="";(t<0||s&&t<=0)&&(s?t=1-t:(t=-t,i=n));let o=String(t);for(;o.length0||a>-n)&&(a+=n),t===$c.Hours)0===a&&-12===n&&(a=12);else if(t===$c.FractionalSeconds)return l=e,Wc(a,3).substr(0,l);var l;const c=Dc(o,Ic.MinusSign);return Wc(a,e,c,r,s)}}function Yc(t,e,n=Ec.Format,r=!1){return function(s,i){return function(t,e,n,r,s,i){switch(n){case Hc.Months:return function(t,e,n){const r=Co(t),s=jc([r[xo.MonthsFormat],r[xo.MonthsStandalone]],e);return jc(s,n)}(e,s,r)[t.getMonth()];case Hc.Days:return function(t,e,n){const r=Co(t),s=jc([r[xo.DaysFormat],r[xo.DaysStandalone]],e);return jc(s,n)}(e,s,r)[t.getDay()];case Hc.DayPeriods:const o=t.getHours(),a=t.getMinutes();if(i){const t=function(t){const e=Co(t);return Nc(e),(e[xo.ExtraData][2]||[]).map(t=>"string"==typeof t?Mc(t):[Mc(t[0]),Mc(t[1])])}(e),n=function(t,e,n){const r=Co(t);Nc(r);const s=jc([r[xo.ExtraData][0],r[xo.ExtraData][1]],e)||[];return jc(s,n)||[]}(e,s,r),i=t.findIndex(t=>{if(Array.isArray(t)){const[e,n]=t,r=o>=e.hours&&a>=e.minutes,s=o0?Math.floor(s/60):Math.ceil(s/60);switch(t){case Lc.Short:return(s>=0?"+":"")+Wc(o,2,i)+Wc(Math.abs(s%60),2,i);case Lc.ShortGMT:return"GMT"+(s>=0?"+":"")+Wc(o,1,i);case Lc.Long:return"GMT"+(s>=0?"+":"")+Wc(o,2,i)+":"+Wc(Math.abs(s%60),2,i);case Lc.Extended:return 0===r?"Z":(s>=0?"+":"")+Wc(o,2,i)+":"+Wc(Math.abs(s%60),2,i);default:throw new Error(`Unknown zone width "${t}"`)}}}function Kc(t){return Bc(t.getFullYear(),t.getMonth(),t.getDate()+(4-t.getDay()))}function Jc(t,e=!1){return function(n,r){let s;if(e){const t=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,e=n.getDate();s=1+Math.floor((e+t)/7)}else{const t=Kc(n),e=function(t){const e=Bc(t,0,1).getDay();return Bc(t,0,1+(e<=4?4:11)-e)}(t.getFullYear()),r=t.getTime()-e.getTime();s=1+Math.round(r/6048e5)}return Wc(s,t,Dc(r,Ic.MinusSign))}}function Xc(t,e=!1){return function(n,r){return Wc(Kc(n).getFullYear(),t,Dc(r,Ic.MinusSign),e)}}const tu={};function eu(t,e){t=t.replace(/:/g,"");const n=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(n)?e:n}function nu(t){return t instanceof Date&&!isNaN(t.valueOf())}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+class ru{}let su=(()=>{class t extends ru{constructor(t){super(),this.locale=t}getPluralCategory(t,e){switch(function(t){return Co(t)[xo.PluralCase]}(e||this.locale)(t)){case kc.Zero:return"zero";case kc.One:return"one";case kc.Two:return"two";case kc.Few:return"few";case kc.Many:return"many";default:return"other"}}}return t.\u0275fac=function(e){return new(e||t)(lr(yl))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function iu(t,e){e=encodeURIComponent(e);for(const n of t.split(";")){const t=n.indexOf("="),[r,s]=-1==t?[n,""]:[n.slice(0,t),n.slice(t+1)];if(r.trim()===e)return decodeURIComponent(s)}return null}let ou=(()=>{class t{constructor(t,e,n,r){this._iterableDiffers=t,this._keyValueDiffers=e,this._ngEl=n,this._renderer=r,this._iterableDiffer=null,this._keyValueDiffer=null,this._initialClasses=[],this._rawClass=null}set klass(t){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof t?t.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}set ngClass(t){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof t?t.split(/\s+/):t,this._rawClass&&(Ai(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}ngDoCheck(){if(this._iterableDiffer){const t=this._iterableDiffer.diff(this._rawClass);t&&this._applyIterableChanges(t)}else if(this._keyValueDiffer){const t=this._keyValueDiffer.diff(this._rawClass);t&&this._applyKeyValueChanges(t)}}_applyKeyValueChanges(t){t.forEachAddedItem(t=>this._toggleClass(t.key,t.currentValue)),t.forEachChangedItem(t=>this._toggleClass(t.key,t.currentValue)),t.forEachRemovedItem(t=>{t.previousValue&&this._toggleClass(t.key,!1)})}_applyIterableChanges(t){t.forEachAddedItem(t=>{if("string"!=typeof t.item)throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${tt(t.item)}`);this._toggleClass(t.item,!0)}),t.forEachRemovedItem(t=>this._toggleClass(t.item,!1))}_applyClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(t=>this._toggleClass(t,!0)):Object.keys(t).forEach(e=>this._toggleClass(e,!!t[e])))}_removeClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(t=>this._toggleClass(t,!1)):Object.keys(t).forEach(t=>this._toggleClass(t,!1)))}_toggleClass(t,e){(t=t.trim())&&t.split(/\s+/g).forEach(t=>{e?this._renderer.addClass(this._ngEl.nativeElement,t):this._renderer.removeClass(this._ngEl.nativeElement,t)})}}return t.\u0275fac=function(e){return new(e||t)(Mi(aa),Mi(ca),Mi(Ho),Mi(Go))},t.\u0275dir=Zt({type:t,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"}}),t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+class au{constructor(t,e,n,r){this.$implicit=t,this.ngForOf=e,this.index=n,this.count=r}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let lu=(()=>{class t{constructor(t,e,n){this._viewContainer=t,this._template=e,this._differs=n,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForOf(t){this._ngForOf=t,this._ngForOfDirty=!0}set ngForTrackBy(t){this._trackByFn=t}get ngForTrackBy(){return this._trackByFn}set ngForTemplate(t){t&&(this._template=t)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const n=this._ngForOf;if(!this._differ&&n)try{this._differ=this._differs.find(n).create(this.ngForTrackBy)}catch(e){throw new Error(`Cannot find a differ supporting object '${n}' of type '${t=n,t.name||typeof t}'. NgFor only supports binding to Iterables such as Arrays.`)}}var t;if(this._differ){const t=this._differ.diff(this._ngForOf);t&&this._applyChanges(t)}}_applyChanges(t){const e=[];t.forEachOperation((t,n,r)=>{if(null==t.previousIndex){const n=this._viewContainer.createEmbeddedView(this._template,new au(null,this._ngForOf,-1,-1),null===r?void 0:r),s=new cu(t,n);e.push(s)}else if(null==r)this._viewContainer.remove(null===n?void 0:n);else if(null!==n){const s=this._viewContainer.get(n);this._viewContainer.move(s,r);const i=new cu(t,s);e.push(i)}});for(let n=0;n{this._viewContainer.get(t.currentIndex).context.$implicit=t.item})}_perViewChange(t,e){t.context.$implicit=e.item}static ngTemplateContextGuard(t,e){return!0}}return t.\u0275fac=function(e){return new(e||t)(Mi(Ea),Mi(_a),Mi(aa))},t.\u0275dir=Zt({type:t,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"}}),t})();class cu{constructor(t,e){this.record=t,this.view=e}}let uu=(()=>{class t{constructor(t,e){this._viewContainer=t,this._context=new hu,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=e}set ngIf(t){this._context.$implicit=this._context.ngIf=t,this._updateView()}set ngIfThen(t){du("ngIfThen",t),this._thenTemplateRef=t,this._thenViewRef=null,this._updateView()}set ngIfElse(t){du("ngIfElse",t),this._elseTemplateRef=t,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(t,e){return!0}}return t.\u0275fac=function(e){return new(e||t)(Mi(Ea),Mi(_a))},t.\u0275dir=Zt({type:t,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"}}),t})();class hu{constructor(){this.$implicit=null,this.ngIf=null}}function du(t,e){if(e&&!e.createEmbeddedView)throw new Error(`${t} must be a TemplateRef, but received '${tt(e)}'.`)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */let pu=(()=>{class t{constructor(t){this.locale=t}transform(e,n="mediumDate",r,s){if(null==e||""===e||e!=e)return null;try{return zc(e,n,s||this.locale,r)}catch(i){
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+throw function(t,e){return Error(`InvalidPipeArgument: '${e}' for pipe '${tt(t)}'`)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */(t,i.message)}}}return t.\u0275fac=function(e){return new(e||t)(Mi(yl))},t.\u0275pipe=Yt({name:"date",type:t,pure:!0}),t})(),fu=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=qt({type:t}),t.\u0275inj=ht({providers:[{provide:ru,useClass:su}]}),t})(),gu=(()=>{class t{}return t.\u0275prov=ut({token:t,providedIn:"root",factory:()=>new mu(lr(ac),window)}),t})();class mu{constructor(t,e){this.document=t,this.window=e,this.offset=()=>[0,0]}setOffset(t){this.offset=Array.isArray(t)?()=>t:t}getScrollPosition(){return this.supportsScrolling()?[this.window.pageXOffset,this.window.pageYOffset]:[0,0]}scrollToPosition(t){this.supportsScrolling()&&this.window.scrollTo(t[0],t[1])}scrollToAnchor(t){if(!this.supportsScrolling())return;const e=function(t,e){const n=t.getElementById(e)||t.getElementsByName(e)[0];if(n)return n;if("function"==typeof t.createTreeWalker&&t.body&&(t.body.createShadowRoot||t.body.attachShadow)){const n=t.createTreeWalker(t.body,NodeFilter.SHOW_ELEMENT);let r=n.currentNode;for(;r;){const t=r.shadowRoot;if(t){const n=t.getElementById(e)||t.querySelector(`[name="${e}"]`);if(n)return n}r=n.nextNode()}}return null}(this.document,t);e&&(this.scrollToElement(e),this.attemptFocus(e))}setHistoryScrollRestoration(t){if(this.supportScrollRestoration()){const e=this.window.history;e&&e.scrollRestoration&&(e.scrollRestoration=t)}}scrollToElement(t){const e=t.getBoundingClientRect(),n=e.left+this.window.pageXOffset,r=e.top+this.window.pageYOffset,s=this.offset();this.window.scrollTo(n-s[0],r-s[1])}attemptFocus(t){return t.focus(),this.document.activeElement===t}supportScrollRestoration(){try{if(!this.supportsScrolling())return!1;const t=yu(this.window.history)||yu(Object.getPrototypeOf(this.window.history));return!(!t||!t.writable&&!t.set)}catch(t){return!1}}supportsScrolling(){try{return!!this.window&&!!this.window.scrollTo&&"pageXOffset"in this.window}catch(t){return!1}}}function yu(t){return Object.getOwnPropertyDescriptor(t,"scrollRestoration")}class bu extends
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license Angular v11.2.11
+ * (c) 2010-2021 Google LLC. https://angular.io/
+ * License: MIT
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+class extends class{}{constructor(){super()}supportsDOMEvents(){return!0}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */{static makeCurrent(){var t;t=new bu,ic||(ic=t)}getProperty(t,e){return t[e]}log(t){window.console&&window.console.log&&window.console.log(t)}logGroup(t){window.console&&window.console.group&&window.console.group(t)}logGroupEnd(){window.console&&window.console.groupEnd&&window.console.groupEnd()}onAndCancel(t,e,n){return t.addEventListener(e,n,!1),()=>{t.removeEventListener(e,n,!1)}}dispatchEvent(t,e){t.dispatchEvent(e)}remove(t){return t.parentNode&&t.parentNode.removeChild(t),t}getValue(t){return t.value}createElement(t,e){return(e=e||this.getDefaultDocument()).createElement(t)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}isShadowRoot(t){return t instanceof DocumentFragment}getGlobalEventTarget(t,e){return"window"===e?window:"document"===e?t:"body"===e?t.body:null}getHistory(){return window.history}getLocation(){return window.location}getBaseHref(t){const e=vu||(vu=document.querySelector("base"),vu)?vu.getAttribute("href"):null;return null==e?null:(n=e,_u||(_u=document.createElement("a")),_u.setAttribute("href",n),"/"===_u.pathname.charAt(0)?_u.pathname:"/"+_u.pathname);var n;
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */}resetBaseElement(){vu=null}getUserAgent(){return window.navigator.userAgent}performanceNow(){return window.performance&&window.performance.now?window.performance.now():(new Date).getTime()}supportsCookies(){return!0}getCookie(t){return iu(document.cookie,t)}}let _u,vu=null;const wu=new Bn("TRANSITION_ID"),Cu=[{provide:ll,useFactory:function(t,e,n){return()=>{n.get(cl).donePromise.then(()=>{const n=oc();Array.prototype.slice.apply(e.querySelectorAll("style[ng-transition]")).filter(e=>e.getAttribute("ng-transition")===t).forEach(t=>n.remove(t))})}},deps:[wu,ac,bi],multi:!0}];
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+class Su{static init(){var t;t=new Su,Ll=t}addToWindow(t){Rt.getAngularTestability=(e,n=!0)=>{const r=t.findTestabilityInTree(e,n);if(null==r)throw new Error("Could not find testability for element.");return r},Rt.getAllAngularTestabilities=()=>t.getAllTestabilities(),Rt.getAllAngularRootElements=()=>t.getAllRootElements(),Rt.frameworkStabilizers||(Rt.frameworkStabilizers=[]),Rt.frameworkStabilizers.push(t=>{const e=Rt.getAllAngularTestabilities();let n=e.length,r=!1;const s=function(e){r=r||e,n--,0==n&&t(r)};e.forEach(function(t){t.whenStable(s)})})}findTestabilityInTree(t,e,n){if(null==e)return null;const r=t.getTestability(e);return null!=r?r:n?oc().isShadowRoot(e)?this.findTestabilityInTree(t,e.host,!0):this.findTestabilityInTree(t,e.parentElement,!0):null}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const xu=new Bn("EventManagerPlugins");let ku=(()=>{class t{constructor(t,e){this._zone=e,this._eventNameToPlugin=new Map,t.forEach(t=>t.manager=this),this._plugins=t.slice().reverse()}addEventListener(t,e,n){return this._findPluginFor(e).addEventListener(t,e,n)}addGlobalEventListener(t,e,n){return this._findPluginFor(e).addGlobalEventListener(t,e,n)}getZone(){return this._zone}_findPluginFor(t){const e=this._eventNameToPlugin.get(t);if(e)return e;const n=this._plugins;for(let r=0;r{class t{constructor(){this._stylesSet=new Set}addStyles(t){const e=new Set;t.forEach(t=>{this._stylesSet.has(t)||(this._stylesSet.add(t),e.add(t))}),this.onStylesAdded(e)}onStylesAdded(t){}getAllStyles(){return Array.from(this._stylesSet)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})(),Au=(()=>{class t extends Tu{constructor(t){super(),this._doc=t,this._hostNodes=new Set,this._styleNodes=new Set,this._hostNodes.add(t.head)}_addStylesToHost(t,e){t.forEach(t=>{const n=this._doc.createElement("style");n.textContent=t,this._styleNodes.add(e.appendChild(n))})}addHost(t){this._addStylesToHost(this._stylesSet,t),this._hostNodes.add(t)}removeHost(t){this._hostNodes.delete(t)}onStylesAdded(t){this._hostNodes.forEach(e=>this._addStylesToHost(t,e))}ngOnDestroy(){this._styleNodes.forEach(t=>oc().remove(t))}}return t.\u0275fac=function(e){return new(e||t)(lr(ac))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const Iu={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},Ru=/%COMP%/g;function Ou(t,e,n){for(let r=0;r{if("__ngUnwrap__"===e)return t;!1===t(e)&&(e.preventDefault(),e.returnValue=!1)}}let Du=(()=>{class t{constructor(t,e,n){this.eventManager=t,this.sharedStylesHost=e,this.appId=n,this.rendererByCompId=new Map,this.defaultRenderer=new Nu(t)}createRenderer(t,e){if(!t||!e)return this.defaultRenderer;switch(e.encapsulation){case kt.Emulated:{let n=this.rendererByCompId.get(e.id);return n||(n=new ju(this.eventManager,this.sharedStylesHost,e,this.appId),this.rendererByCompId.set(e.id,n)),n.applyToHost(t),n}case 1:case kt.ShadowDom:return new Mu(this.eventManager,this.sharedStylesHost,t,e);default:if(!this.rendererByCompId.has(e.id)){const t=Ou(e.id,e.styles,[]);this.sharedStylesHost.addStyles(t),this.rendererByCompId.set(e.id,this.defaultRenderer)}return this.defaultRenderer}}begin(){}end(){}}return t.\u0275fac=function(e){return new(e||t)(lr(ku),lr(Au),lr(ul))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})();class Nu{constructor(t){this.eventManager=t,this.data=Object.create(null)}destroy(){}createElement(t,e){return e?document.createElementNS(Iu[e]||e,t):document.createElement(t)}createComment(t){return document.createComment(t)}createText(t){return document.createTextNode(t)}appendChild(t,e){t.appendChild(e)}insertBefore(t,e,n){t&&t.insertBefore(e,n)}removeChild(t,e){t&&t.removeChild(e)}selectRootElement(t,e){let n="string"==typeof t?document.querySelector(t):t;if(!n)throw new Error(`The selector "${t}" did not match any elements`);return e||(n.textContent=""),n}parentNode(t){return t.parentNode}nextSibling(t){return t.nextSibling}setAttribute(t,e,n,r){if(r){e=r+":"+e;const s=Iu[r];s?t.setAttributeNS(s,e,n):t.setAttribute(e,n)}else t.setAttribute(e,n)}removeAttribute(t,e,n){if(n){const r=Iu[n];r?t.removeAttributeNS(r,e):t.removeAttribute(`${n}:${e}`)}else t.removeAttribute(e)}addClass(t,e){t.classList.add(e)}removeClass(t,e){t.classList.remove(e)}setStyle(t,e,n,r){r&(Cr.DashCase|Cr.Important)?t.style.setProperty(e,n,r&Cr.Important?"important":""):t.style[e]=n}removeStyle(t,e,n){n&Cr.DashCase?t.style.removeProperty(e):t.style[e]=""}setProperty(t,e,n){t[e]=n}setValue(t,e){t.nodeValue=e}listen(t,e,n){return"string"==typeof t?this.eventManager.addGlobalEventListener(t,e,Pu(n)):this.eventManager.addEventListener(t,e,Pu(n))}}class ju extends Nu{constructor(t,e,n,r){super(t),this.component=n;const s=Ou(r+"-"+n.id,n.styles,[]);e.addStyles(s),this.contentAttr="_ngcontent-%COMP%".replace(Ru,r+"-"+n.id),this.hostAttr="_nghost-%COMP%".replace(Ru,r+"-"+n.id)}applyToHost(t){super.setAttribute(t,this.hostAttr,"")}createElement(t,e){const n=super.createElement(t,e);return super.setAttribute(n,this.contentAttr,""),n}}class Mu extends Nu{constructor(t,e,n,r){super(t),this.sharedStylesHost=e,this.hostEl=n,this.shadowRoot=n.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const s=Ou(r.id,r.styles,[]);for(let i=0;i{class t extends Eu{constructor(t){super(t)}supports(t){return!0}addEventListener(t,e,n){return t.addEventListener(e,n,!1),()=>this.removeEventListener(t,e,n)}removeEventListener(t,e,n){return t.removeEventListener(e,n)}}return t.\u0275fac=function(e){return new(e||t)(lr(ac))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const Fu=["alt","control","meta","shift"],Uu={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},Lu={A:"1",B:"2",C:"3",D:"4",E:"5",F:"6",G:"7",H:"8",I:"9",J:"*",K:"+",M:"-",N:".",O:"/","`":"0","\x90":"NumLock"},$u={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey};let Hu=(()=>{class t extends Eu{constructor(t){super(t)}supports(e){return null!=t.parseEventName(e)}addEventListener(e,n,r){const s=t.parseEventName(n),i=t.eventCallback(s.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>oc().onAndCancel(e,s.domEventName,i))}static parseEventName(e){const n=e.toLowerCase().split("."),r=n.shift();if(0===n.length||"keydown"!==r&&"keyup"!==r)return null;const s=t._normalizeKey(n.pop());let i="";if(Fu.forEach(t=>{const e=n.indexOf(t);e>-1&&(n.splice(e,1),i+=t+".")}),i+=s,0!=n.length||0===s.length)return null;const o={};return o.domEventName=r,o.fullKey=i,o}static getEventFullKey(t){let e="",n=function(t){let e=t.key;if(null==e){if(e=t.keyIdentifier,null==e)return"Unidentified";e.startsWith("U+")&&(e=String.fromCharCode(parseInt(e.substring(2),16)),3===t.location&&Lu.hasOwnProperty(e)&&(e=Lu[e]))}return Uu[e]||e}(t);return n=n.toLowerCase()," "===n?n="space":"."===n&&(n="dot"),Fu.forEach(r=>{r!=n&&(0,$u[r])(t)&&(e+=r+".")}),e+=n,e}static eventCallback(e,n,r){return s=>{t.getEventFullKey(s)===e&&r.runGuarded(()=>n(s))}}static _normalizeKey(t){switch(t){case"esc":return"escape";default:return t}}}return t.\u0275fac=function(e){return new(e||t)(lr(ac))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})();const zu=Gl(nc,"browser",[{provide:fl,useValue:"browser"},{provide:pl,useValue:
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function(){bu.makeCurrent(),Su.init()},multi:!0},{provide:ac,useFactory:function(){return function(t){pe=t}(document),document},deps:[]}]),Bu=[[],{provide:si,useValue:"root"},{provide:br,useFactory:function(){return new br},deps:[]},{provide:xu,useClass:Vu,multi:!0,deps:[ac,Il,fl]},{provide:xu,useClass:Hu,multi:!0,deps:[ac]},[],{provide:Du,useClass:Du,deps:[ku,Au,ul]},{provide:Bo,useExisting:Du},{provide:Tu,useExisting:Au},{provide:Au,useClass:Au,deps:[ac]},{provide:Ml,useClass:Ml,deps:[Il]},{provide:ku,useClass:ku,deps:[xu,Il]},[]];let Gu=(()=>{class t{constructor(t){if(t)throw new Error("BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.")}static withServerTransition(e){return{ngModule:t,providers:[{provide:ul,useValue:e.appId},{provide:wu,useExisting:ul},Cu]}}}return t.\u0275fac=function(e){return new(e||t)(lr(t,12))},t.\u0275mod=qt({type:t}),t.\u0275inj=ht({providers:Bu,imports:[fu,sc]}),t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function qu(...t){let e=t[t.length-1];return k(e)?(t.pop(),j(t,e)):B(t)}"undefined"!=typeof window&&window;class Wu extends S{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){const e=super._subscribe(t);return e&&!e.closed&&t.next(this._value),e}getValue(){if(this.hasError)throw this.thrownError;if(this.closed)throw new v;return this._value}next(t){super.next(this._value=t)}}class Zu extends f{notifyNext(t,e,n,r,s){this.destination.next(e)}notifyError(t,e){this.destination.error(t)}notifyComplete(t){this.destination.complete()}}class Yu extends f{constructor(t,e,n){super(),this.parent=t,this.outerValue=e,this.outerIndex=n,this.index=0}_next(t){this.parent.notifyNext(this.outerValue,t,this.outerIndex,this.index++,this)}_error(t){this.parent.notifyError(t,this),this.unsubscribe()}_complete(){this.parent.notifyComplete(this),this.unsubscribe()}}function Qu(t,e,n,r,s=new Yu(t,n,r)){if(!s.closed)return e instanceof b?e.subscribe(s):N(e)(s)}const Ku={};class Ju{constructor(t){this.resultSelector=t}call(t,e){return e.subscribe(new Xu(t,this.resultSelector))}}class Xu extends Zu{constructor(t,e){super(t),this.resultSelector=e,this.active=0,this.values=[],this.observables=[]}_next(t){this.values.push(Ku),this.observables.push(t)}_complete(){const t=this.observables,e=t.length;if(0===e)this.destination.complete();else{this.active=e,this.toRespond=e;for(let n=0;n{function t(){return Error.call(this),this.message="no elements in sequence",this.name="EmptyError",this}return t.prototype=Object.create(Error.prototype),t})();function eh(...t){return z(1)(qu(...t))}const nh=new b(t=>t.complete());function rh(t){return t?function(t){return new b(e=>t.schedule(()=>e.complete()))}(t):nh}function sh(t){return new b(e=>{let n;try{n=t()}catch(r){return void e.error(r)}return(n?M(n):rh()).subscribe(e)})}function ih(t,e){return"function"==typeof e?n=>n.pipe(ih((n,r)=>M(t(n,r)).pipe(E((t,s)=>e(n,t,r,s))))):e=>e.lift(new oh(t))}class oh{constructor(t){this.project=t}call(t,e){return e.subscribe(new ah(t,this.project))}}class ah extends F{constructor(t,e){super(t),this.project=e,this.index=0}_next(t){let e;const n=this.index++;try{e=this.project(t,n)}catch(r){return void this.destination.error(r)}this._innerSub(e)}_innerSub(t){const e=this.innerSubscription;e&&e.unsubscribe();const n=new V(this),r=this.destination;r.add(n),this.innerSubscription=U(t,n),this.innerSubscription!==n&&r.add(this.innerSubscription)}_complete(){const{innerSubscription:t}=this;t&&!t.closed||super._complete(),this.unsubscribe()}_unsubscribe(){this.innerSubscription=void 0}notifyComplete(){this.innerSubscription=void 0,this.isStopped&&super._complete()}notifyNext(t){this.destination.next(t)}}const lh=(()=>{function t(){return Error.call(this),this.message="argument out of range",this.name="ArgumentOutOfRangeError",this}return t.prototype=Object.create(Error.prototype),t})();function ch(t){return e=>0===t?rh():e.lift(new uh(t))}class uh{constructor(t){if(this.total=t,this.total<0)throw new lh}call(t,e){return e.subscribe(new hh(t,this.total))}}class hh extends f{constructor(t,e){super(t),this.total=e,this.count=0}_next(t){const e=this.total,n=++this.count;n<=e&&(this.destination.next(t),n===e&&(this.destination.complete(),this.unsubscribe()))}}function dh(t,e){let n=!1;return arguments.length>=2&&(n=!0),function(r){return r.lift(new ph(t,e,n))}}class ph{constructor(t,e,n=!1){this.accumulator=t,this.seed=e,this.hasSeed=n}call(t,e){return e.subscribe(new fh(t,this.accumulator,this.seed,this.hasSeed))}}class fh extends f{constructor(t,e,n,r){super(t),this.accumulator=e,this._seed=n,this.hasSeed=r,this.index=0}get seed(){return this._seed}set seed(t){this.hasSeed=!0,this._seed=t}_next(t){if(this.hasSeed)return this._tryNext(t);this.seed=t,this.destination.next(t)}_tryNext(t){const e=this.index++;let n;try{n=this.accumulator(this.seed,t,e)}catch(r){this.destination.error(r)}this.seed=n,this.destination.next(n)}}function gh(t,e){return function(n){return n.lift(new mh(t,e))}}class mh{constructor(t,e){this.predicate=t,this.thisArg=e}call(t,e){return e.subscribe(new yh(t,this.predicate,this.thisArg))}}class yh extends f{constructor(t,e,n){super(t),this.predicate=e,this.thisArg=n,this.count=0}_next(t){let e;try{e=this.predicate.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}e&&this.destination.next(t)}}function bh(t){return function(e){const n=new _h(t),r=e.lift(n);return n.caught=r}}class _h{constructor(t){this.selector=t}call(t,e){return e.subscribe(new vh(t,this.selector,this.caught))}}class vh extends F{constructor(t,e,n){super(t),this.selector=e,this.caught=n}error(t){if(!this.isStopped){let n;try{n=this.selector(t,this.caught)}catch(e){return void super.error(e)}this._unsubscribeAndRecycle();const r=new V(this);this.add(r);const s=U(n,r);s!==r&&this.add(s)}}}function wh(t,e){return L(t,e,1)}function Ch(t){return function(e){return 0===t?rh():e.lift(new Sh(t))}}class Sh{constructor(t){if(this.total=t,this.total<0)throw new lh}call(t,e){return e.subscribe(new xh(t,this.total))}}class xh extends f{constructor(t,e){super(t),this.total=e,this.ring=new Array,this.count=0}_next(t){const e=this.ring,n=this.total,r=this.count++;e.length0){const n=this.count>=this.total?this.total:this.count,r=this.ring;for(let s=0;se.lift(new Eh(t))}class Eh{constructor(t){this.errorFactory=t}call(t,e){return e.subscribe(new Th(t,this.errorFactory))}}class Th extends f{constructor(t,e){super(t),this.errorFactory=e,this.hasValue=!1}_next(t){this.hasValue=!0,this.destination.next(t)}_complete(){if(this.hasValue)return this.destination.complete();{let e;try{e=this.errorFactory()}catch(t){e=t}this.destination.error(e)}}}function Ah(){return new th}function Ih(t=null){return e=>e.lift(new Rh(t))}class Rh{constructor(t){this.defaultValue=t}call(t,e){return e.subscribe(new Oh(t,this.defaultValue))}}class Oh extends f{constructor(t,e){super(t),this.defaultValue=e,this.isEmpty=!0}_next(t){this.isEmpty=!1,this.destination.next(t)}_complete(){this.isEmpty&&this.destination.next(this.defaultValue),this.destination.complete()}}function Ph(t,e){const n=arguments.length>=2;return r=>r.pipe(t?gh((e,n)=>t(e,n,r)):y,ch(1),n?Ih(e):kh(()=>new th))}function Dh(){}function Nh(t,e,n){return function(r){return r.lift(new jh(t,e,n))}}class jh{constructor(t,e,n){this.nextOrObserver=t,this.error=e,this.complete=n}call(t,e){return e.subscribe(new Mh(t,this.nextOrObserver,this.error,this.complete))}}class Mh extends f{constructor(t,e,n,s){super(t),this._tapNext=Dh,this._tapError=Dh,this._tapComplete=Dh,this._tapError=n||Dh,this._tapComplete=s||Dh,r(e)?(this._context=this,this._tapNext=e):e&&(this._context=e,this._tapNext=e.next||Dh,this._tapError=e.error||Dh,this._tapComplete=e.complete||Dh)}_next(t){try{this._tapNext.call(this._context,t)}catch(e){return void this.destination.error(e)}this.destination.next(t)}_error(t){try{this._tapError.call(this._context,t)}catch(t){return void this.destination.error(t)}this.destination.error(t)}_complete(){try{this._tapComplete.call(this._context)}catch(t){return void this.destination.error(t)}return this.destination.complete()}}class Vh{constructor(t){this.callback=t}call(t,e){return e.subscribe(new Fh(t,this.callback))}}class Fh extends f{constructor(t,e){super(t),this.add(new h(e))}}
+/**
+ * @license Angular v11.2.11
+ * (c) 2010-2021 Google LLC. https://angular.io/
+ * License: MIT
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class Uh{constructor(t,e){this.id=t,this.url=e}}class Lh extends Uh{constructor(t,e,n="imperative",r=null){super(t,e),this.navigationTrigger=n,this.restoredState=r}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class $h extends Uh{constructor(t,e,n){super(t,e),this.urlAfterRedirects=n}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class Hh extends Uh{constructor(t,e,n){super(t,e),this.reason=n}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class zh extends Uh{constructor(t,e,n){super(t,e),this.error=n}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class Bh extends Uh{constructor(t,e,n,r){super(t,e),this.urlAfterRedirects=n,this.state=r}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Gh extends Uh{constructor(t,e,n,r){super(t,e),this.urlAfterRedirects=n,this.state=r}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class qh extends Uh{constructor(t,e,n,r,s){super(t,e),this.urlAfterRedirects=n,this.state=r,this.shouldActivate=s}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class Wh extends Uh{constructor(t,e,n,r){super(t,e),this.urlAfterRedirects=n,this.state=r}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Zh extends Uh{constructor(t,e,n,r){super(t,e),this.urlAfterRedirects=n,this.state=r}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Yh{constructor(t){this.route=t}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class Qh{constructor(t){this.route=t}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class Kh{constructor(t){this.snapshot=t}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Jh{constructor(t){this.snapshot=t}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Xh{constructor(t){this.snapshot=t}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class td{constructor(t){this.snapshot=t}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class ed{constructor(t,e,n){this.routerEvent=t,this.position=e,this.anchor=n}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const nd="primary";class rd{constructor(t){this.params=t||{}}has(t){return Object.prototype.hasOwnProperty.call(this.params,t)}get(t){if(this.has(t)){const e=this.params[t];return Array.isArray(e)?e[0]:e}return null}getAll(t){if(this.has(t)){const e=this.params[t];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function sd(t){return new rd(t)}function id(t){const e=Error("NavigationCancelingError: "+t);return e.ngNavigationCancelingError=!0,e}function od(t,e,n){const r=n.path.split("/");if(r.length>t.length)return null;if("full"===n.pathMatch&&(e.hasChildren()||r.lengthr[e]===t)}return t===e}function cd(t){return Array.prototype.concat.apply([],t)}function ud(t){return t.length>0?t[t.length-1]:null}function hd(t,e){for(const n in t)t.hasOwnProperty(n)&&e(t[n],n)}function dd(t){return Bi(t)?t:zi(t)?M(Promise.resolve(t)):qu(t)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function pd(t,e,n){return n?function(t,e){return ad(t,e)}(t.queryParams,e.queryParams)&&fd(t.root,e.root):function(t,e){return Object.keys(e).length<=Object.keys(t).length&&Object.keys(e).every(n=>ld(t[n],e[n]))}(t.queryParams,e.queryParams)&&gd(t.root,e.root)}function fd(t,e){if(!vd(t.segments,e.segments))return!1;if(t.numberOfChildren!==e.numberOfChildren)return!1;for(const n in e.children){if(!t.children[n])return!1;if(!fd(t.children[n],e.children[n]))return!1}return!0}function gd(t,e){return md(t,e,e.segments)}function md(t,e,n){if(t.segments.length>n.length)return!!vd(t.segments.slice(0,n.length),n)&&!e.hasChildren();if(t.segments.length===n.length){if(!vd(t.segments,n))return!1;for(const n in e.children){if(!t.children[n])return!1;if(!gd(t.children[n],e.children[n]))return!1}return!0}{const r=n.slice(0,t.segments.length),s=n.slice(t.segments.length);return!!vd(t.segments,r)&&!!t.children.primary&&md(t.children.primary,e,s)}}class yd{constructor(t,e,n){this.root=t,this.queryParams=e,this.fragment=n}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=sd(this.queryParams)),this._queryParamMap}toString(){return Sd.serialize(this)}}class bd{constructor(t,e){this.segments=t,this.children=e,this.parent=null,hd(e,(t,e)=>t.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return xd(this)}}class _d{constructor(t,e){this.path=t,this.parameters=e}get parameterMap(){return this._parameterMap||(this._parameterMap=sd(this.parameters)),this._parameterMap}toString(){return Od(this)}}function vd(t,e){return t.length===e.length&&t.every((t,n)=>t.path===e[n].path)}class wd{}class Cd{parse(t){const e=new Md(t);return new yd(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(t){var e;return`/${kd(t.root,!0)}${function(t){const e=Object.keys(t).map(e=>{const n=t[e];return Array.isArray(n)?n.map(t=>`${Td(e)}=${Td(t)}`).join("&"):`${Td(e)}=${Td(n)}`});return e.length?`?${e.join("&")}`:""}(t.queryParams)}${"string"==typeof t.fragment?`#${e=t.fragment,encodeURI(e)}`:""}`}}const Sd=new Cd;function xd(t){return t.segments.map(t=>Od(t)).join("/")}function kd(t,e){if(!t.hasChildren())return xd(t);if(e){const e=t.children.primary?kd(t.children.primary,!1):"",n=[];return hd(t.children,(t,e)=>{e!==nd&&n.push(`${e}:${kd(t,!1)}`)}),n.length>0?`${e}(${n.join("//")})`:e}{const e=function(t,e){let n=[];return hd(t.children,(t,r)=>{r===nd&&(n=n.concat(e(t,r)))}),hd(t.children,(t,r)=>{r!==nd&&(n=n.concat(e(t,r)))}),n}(t,(e,n)=>n===nd?[kd(t.children.primary,!1)]:[`${n}:${kd(e,!1)}`]);return 1===Object.keys(t.children).length&&null!=t.children.primary?`${xd(t)}/${e[0]}`:`${xd(t)}/(${e.join("//")})`}}function Ed(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Td(t){return Ed(t).replace(/%3B/gi,";")}function Ad(t){return Ed(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Id(t){return decodeURIComponent(t)}function Rd(t){return Id(t.replace(/\+/g,"%20"))}function Od(t){return`${Ad(t.path)}${e=t.parameters,Object.keys(e).map(t=>`;${Ad(t)}=${Ad(e[t])}`).join("")}`;var e}const Pd=/^[^\/()?;=#]+/;function Dd(t){const e=t.match(Pd);return e?e[0]:""}const Nd=/^[^=?]+/,jd=/^[^?]+/;class Md{constructor(t){this.url=t,this.remaining=t}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new bd([],{}):new bd([],this.parseChildren())}parseQueryParams(){const t={};if(this.consumeOptional("?"))do{this.parseQueryParam(t)}while(this.consumeOptional("&"));return t}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const t=[];for(this.peekStartsWith("(")||t.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),t.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(t.length>0||Object.keys(e).length>0)&&(n.primary=new bd(t,e)),n}parseSegment(){const t=Dd(this.remaining);if(""===t&&this.peekStartsWith(";"))throw new Error(`Empty path url segment cannot have parameters: '${this.remaining}'.`);return this.capture(t),new _d(Id(t),this.parseMatrixParams())}parseMatrixParams(){const t={};for(;this.consumeOptional(";");)this.parseParam(t);return t}parseParam(t){const e=Dd(this.remaining);if(!e)return;this.capture(e);let n="";if(this.consumeOptional("=")){const t=Dd(this.remaining);t&&(n=t,this.capture(n))}t[Id(e)]=Id(n)}parseQueryParam(t){const e=function(t){const e=t.match(Nd);return e?e[0]:""}(this.remaining);if(!e)return;this.capture(e);let n="";if(this.consumeOptional("=")){const t=function(t){const e=t.match(jd);return e?e[0]:""}(this.remaining);t&&(n=t,this.capture(n))}const r=Rd(e),s=Rd(n);if(t.hasOwnProperty(r)){let e=t[r];Array.isArray(e)||(e=[e],t[r]=e),e.push(s)}else t[r]=s}parseParens(t){const e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const n=Dd(this.remaining),r=this.remaining[n.length];if("/"!==r&&")"!==r&&";"!==r)throw new Error(`Cannot parse url '${this.url}'`);let s;n.indexOf(":")>-1?(s=n.substr(0,n.indexOf(":")),this.capture(s),this.capture(":")):t&&(s=nd);const i=this.parseChildren();e[s]=1===Object.keys(i).length?i.primary:new bd([],i),this.consumeOptional("//")}return e}peekStartsWith(t){return this.remaining.startsWith(t)}consumeOptional(t){return!!this.peekStartsWith(t)&&(this.remaining=this.remaining.substring(t.length),!0)}capture(t){if(!this.consumeOptional(t))throw new Error(`Expected "${t}".`)}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class Vd{constructor(t){this._root=t}get root(){return this._root.value}parent(t){const e=this.pathFromRoot(t);return e.length>1?e[e.length-2]:null}children(t){const e=Fd(t,this._root);return e?e.children.map(t=>t.value):[]}firstChild(t){const e=Fd(t,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(t){const e=Ud(t,this._root);return e.length<2?[]:e[e.length-2].children.map(t=>t.value).filter(e=>e!==t)}pathFromRoot(t){return Ud(t,this._root).map(t=>t.value)}}function Fd(t,e){if(t===e.value)return e;for(const n of e.children){const e=Fd(t,n);if(e)return e}return null}function Ud(t,e){if(t===e.value)return[e];for(const n of e.children){const r=Ud(t,n);if(r.length)return r.unshift(e),r}return[]}class Ld{constructor(t,e){this.value=t,this.children=e}toString(){return`TreeNode(${this.value})`}}function $d(t){const e={};return t&&t.children.forEach(t=>e[t.value.outlet]=t),e}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class Hd extends Vd{constructor(t,e){super(t),this.snapshot=e,Zd(this,t)}toString(){return this.snapshot.toString()}}function zd(t,e){const n=function(t,e){const n=new qd([],{},{},"",{},nd,e,null,t.root,-1,{});return new Wd("",new Ld(n,[]))}(t,e),r=new Wu([new _d("",{})]),s=new Wu({}),i=new Wu({}),o=new Wu({}),a=new Wu(""),l=new Bd(r,s,o,a,i,nd,e,n.root);return l.snapshot=n.root,new Hd(new Ld(l,[]),n)}class Bd{constructor(t,e,n,r,s,i,o,a){this.url=t,this.params=e,this.queryParams=n,this.fragment=r,this.data=s,this.outlet=i,this.component=o,this._futureSnapshot=a}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe(E(t=>sd(t)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(E(t=>sd(t)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Gd(t,e="emptyOnly"){const n=t.pathFromRoot;let r=0;if("always"!==e)for(r=n.length-1;r>=1;){const t=n[r],e=n[r-1];if(t.routeConfig&&""===t.routeConfig.path)r--;else{if(e.component)break;r--}}return function(t){return t.reduce((t,e)=>({params:Object.assign(Object.assign({},t.params),e.params),data:Object.assign(Object.assign({},t.data),e.data),resolve:Object.assign(Object.assign({},t.resolve),e._resolvedData)}),{params:{},data:{},resolve:{}})}(n.slice(r))}class qd{constructor(t,e,n,r,s,i,o,a,l,c,u){this.url=t,this.params=e,this.queryParams=n,this.fragment=r,this.data=s,this.outlet=i,this.component=o,this.routeConfig=a,this._urlSegment=l,this._lastPathIndex=c,this._resolve=u}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=sd(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=sd(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(t=>t.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class Wd extends Vd{constructor(t,e){super(e),this.url=t,Zd(this,e)}toString(){return Yd(this._root)}}function Zd(t,e){e.value._routerState=t,e.children.forEach(e=>Zd(t,e))}function Yd(t){const e=t.children.length>0?` { ${t.children.map(Yd).join(", ")} } `:"";return`${t.value}${e}`}function Qd(t){if(t.snapshot){const e=t.snapshot,n=t._futureSnapshot;t.snapshot=n,ad(e.queryParams,n.queryParams)||t.queryParams.next(n.queryParams),e.fragment!==n.fragment&&t.fragment.next(n.fragment),ad(e.params,n.params)||t.params.next(n.params),function(t,e){if(t.length!==e.length)return!1;for(let n=0;nad(t.parameters,r[e].parameters))&&!(!t.parent!=!e.parent)&&(!t.parent||Kd(t.parent,e.parent))}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function Jd(t,e,n){if(n&&t.shouldReuseRoute(e.value,n.value.snapshot)){const r=n.value;r._futureSnapshot=e.value;const s=function(t,e,n){return e.children.map(e=>{for(const r of n.children)if(t.shouldReuseRoute(e.value,r.value.snapshot))return Jd(t,e,r);return Jd(t,e)})}(t,e,n);return new Ld(r,s)}{if(t.shouldAttach(e.value)){const n=t.retrieve(e.value);if(null!==n){const t=n.route;return Xd(e,t),t}}const n=new Bd(new Wu((r=e.value).url),new Wu(r.params),new Wu(r.queryParams),new Wu(r.fragment),new Wu(r.data),r.outlet,r.component,r),s=e.children.map(e=>Jd(t,e));return new Ld(n,s)}var r;
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */}function Xd(t,e){if(t.value.routeConfig!==e.value.routeConfig)throw new Error("Cannot reattach ActivatedRouteSnapshot created from a different route");if(t.children.length!==e.children.length)throw new Error("Cannot reattach ActivatedRouteSnapshot with a different number of children");e.value._futureSnapshot=t.value;for(let n=0;n{i[e]=Array.isArray(t)?t.map(t=>`${t}`):`${t}`}),new yd(n.root===t?e:rp(n.root,t,e),i,s)}function rp(t,e,n){const r={};return hd(t.children,(t,s)=>{r[s]=t===e?n:rp(t,e,n)}),new bd(t.segments,r)}class sp{constructor(t,e,n){if(this.isAbsolute=t,this.numberOfDoubleDots=e,this.commands=n,t&&n.length>0&&tp(n[0]))throw new Error("Root segment cannot have matrix parameters");const r=n.find(ep);if(r&&r!==ud(n))throw new Error("{outlets:{}} has to be the last command")}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class ip{constructor(t,e,n){this.segmentGroup=t,this.processChildren=e,this.index=n}}function op(t,e,n){if(t||(t=new bd([],{})),0===t.segments.length&&t.hasChildren())return ap(t,e,n);const r=function(t,e,n){let r=0,s=e;const i={match:!1,pathIndex:0,commandIndex:0};for(;s=n.length)return i;const e=t.segments[s],o=n[r];if(ep(o))break;const a=`${o}`,l=r0&&void 0===a)break;if(a&&l&&"object"==typeof l&&void 0===l.outlets){if(!hp(a,l,e))return i;r+=2}else{if(!hp(a,{},e))return i;r++}s++}return{match:!0,pathIndex:s,commandIndex:r}}(t,e,n),s=n.slice(r.commandIndex);if(r.match&&r.pathIndex{"string"==typeof n&&(n=[n]),null!==n&&(s[r]=op(t.children[r],e,n))}),hd(t.children,(t,e)=>{void 0===r[e]&&(s[e]=t)}),new bd(t.segments,s)}}function lp(t,e,n){const r=t.segments.slice(0,e);let s=0;for(;s{"string"==typeof t&&(t=[t]),null!==t&&(e[n]=lp(new bd([],{}),0,t))}),e}function up(t){const e={};return hd(t,(t,n)=>e[n]=`${t}`),e}function hp(t,e,n){return t==n.path&&ad(e,n.parameters)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class dp{constructor(t,e,n,r){this.routeReuseStrategy=t,this.futureState=e,this.currState=n,this.forwardEvent=r}activate(t){const e=this.futureState._root,n=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,n,t),Qd(this.futureState.root),this.activateChildRoutes(e,n,t)}deactivateChildRoutes(t,e,n){const r=$d(e);t.children.forEach(t=>{const e=t.value.outlet;this.deactivateRoutes(t,r[e],n),delete r[e]}),hd(r,(t,e)=>{this.deactivateRouteAndItsChildren(t,n)})}deactivateRoutes(t,e,n){const r=t.value,s=e?e.value:null;if(r===s)if(r.component){const s=n.getContext(r.outlet);s&&this.deactivateChildRoutes(t,e,s.children)}else this.deactivateChildRoutes(t,e,n);else s&&this.deactivateRouteAndItsChildren(e,n)}deactivateRouteAndItsChildren(t,e){this.routeReuseStrategy.shouldDetach(t.value.snapshot)?this.detachAndStoreRouteSubtree(t,e):this.deactivateRouteAndOutlet(t,e)}detachAndStoreRouteSubtree(t,e){const n=e.getContext(t.value.outlet);if(n&&n.outlet){const e=n.outlet.detach(),r=n.children.onOutletDeactivated();this.routeReuseStrategy.store(t.value.snapshot,{componentRef:e,route:t,contexts:r})}}deactivateRouteAndOutlet(t,e){const n=e.getContext(t.value.outlet),r=n&&t.value.component?n.children:e,s=$d(t);for(const i of Object.keys(s))this.deactivateRouteAndItsChildren(s[i],r);n&&n.outlet&&(n.outlet.deactivate(),n.children.onOutletDeactivated(),n.attachRef=null,n.resolver=null,n.route=null)}activateChildRoutes(t,e,n){const r=$d(e);t.children.forEach(t=>{this.activateRoutes(t,r[t.value.outlet],n),this.forwardEvent(new td(t.value.snapshot))}),t.children.length&&this.forwardEvent(new Jh(t.value.snapshot))}activateRoutes(t,e,n){const r=t.value,s=e?e.value:null;if(Qd(r),r===s)if(r.component){const s=n.getOrCreateContext(r.outlet);this.activateChildRoutes(t,e,s.children)}else this.activateChildRoutes(t,e,n);else if(r.component){const e=n.getOrCreateContext(r.outlet);if(this.routeReuseStrategy.shouldAttach(r.snapshot)){const t=this.routeReuseStrategy.retrieve(r.snapshot);this.routeReuseStrategy.store(r.snapshot,null),e.children.onOutletReAttached(t.contexts),e.attachRef=t.componentRef,e.route=t.route.value,e.outlet&&e.outlet.attach(t.componentRef,t.route.value),pp(t.route)}else{const n=function(t){for(let e=t.parent;e;e=e.parent){const t=e.routeConfig;if(t&&t._loadedConfig)return t._loadedConfig;if(t&&t.component)return null}return null}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */(r.snapshot),s=n?n.module.componentFactoryResolver:null;e.attachRef=null,e.route=r,e.resolver=s,e.outlet&&e.outlet.activateWith(r,s),this.activateChildRoutes(t,null,e.children)}}else this.activateChildRoutes(t,null,n)}}function pp(t){Qd(t.value),t.children.forEach(pp)}class fp{constructor(t,e){this.routes=t,this.module=e}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function gp(t){return"function"==typeof t}function mp(t){return t instanceof yd}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const yp=Symbol("INITIAL_VALUE");function bp(){return ih(t=>function(...t){let e,n;return k(t[t.length-1])&&(n=t.pop()),"function"==typeof t[t.length-1]&&(e=t.pop()),1===t.length&&l(t[0])&&(t=t[0]),B(t,n).lift(new Ju(e))}(t.map(t=>t.pipe(ch(1),function(...t){const e=t[t.length-1];return k(e)?(t.pop(),n=>eh(t,n,e)):e=>eh(t,e)}(yp)))).pipe(dh((t,e)=>{let n=!1;return e.reduce((t,r,s)=>{if(t!==yp)return t;if(r===yp&&(n=!0),!n){if(!1===r)return r;if(s===e.length-1||mp(r))return r}return t},t)},yp),gh(t=>t!==yp),E(t=>mp(t)?t:!0===t),ch(1)))}let _p=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=Ht({type:t,selectors:[["ng-component"]],decls:1,vars:0,template:function(t,e){1&t&&$i(0,"router-outlet")},directives:function(){return[df]},encapsulation:2}),t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function vp(t,e=""){for(let n=0;nxp(t)===e);return n.push(...t.filter(t=>xp(t)!==e)),n}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const Ep={matched:!1,consumedSegments:[],lastChild:0,parameters:{},positionalParamSegments:{}};function Tp(t,e,n){var r;if(""===e.path)return"full"===e.pathMatch&&(t.hasChildren()||n.length>0)?Object.assign({},Ep):{matched:!0,consumedSegments:[],lastChild:0,parameters:{},positionalParamSegments:{}};const s=(e.matcher||od)(n,t,e);if(!s)return Object.assign({},Ep);const i={};hd(s.posParams,(t,e)=>{i[e]=t.path});const o=s.consumed.length>0?Object.assign(Object.assign({},i),s.consumed[s.consumed.length-1].parameters):i;return{matched:!0,consumedSegments:s.consumed,lastChild:s.consumed.length,parameters:o,positionalParamSegments:null!==(r=s.posParams)&&void 0!==r?r:{}}}function Ap(t,e,n,r,s="corrected"){if(n.length>0&&function(t,e,n){return n.some(n=>Ip(t,e,n)&&xp(n)!==nd)}(t,n,r)){const s=new bd(e,function(t,e,n,r){const s={};s.primary=r,r._sourceSegment=t,r._segmentIndexShift=e.length;for(const i of n)if(""===i.path&&xp(i)!==nd){const n=new bd([],{});n._sourceSegment=t,n._segmentIndexShift=e.length,s[xp(i)]=n}return s}(t,e,r,new bd(n,t.children)));return s._sourceSegment=t,s._segmentIndexShift=e.length,{segmentGroup:s,slicedSegments:[]}}if(0===n.length&&function(t,e,n){return n.some(n=>Ip(t,e,n))}(t,n,r)){const i=new bd(t.segments,function(t,e,n,r,s,i){const o={};for(const a of r)if(Ip(t,n,a)&&!s[xp(a)]){const n=new bd([],{});n._sourceSegment=t,n._segmentIndexShift="legacy"===i?t.segments.length:e.length,o[xp(a)]=n}return Object.assign(Object.assign({},s),o)}(t,e,n,r,t.children,s));return i._sourceSegment=t,i._segmentIndexShift=e.length,{segmentGroup:i,slicedSegments:n}}const i=new bd(t.segments,t.children);return i._sourceSegment=t,i._segmentIndexShift=e.length,{segmentGroup:i,slicedSegments:n}}function Ip(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path}function Rp(t,e,n,r){return!!(xp(t)===r||r!==nd&&Ip(e,n,t))&&("**"===t.path||Tp(e,t,n).matched)}function Op(t,e,n){return 0===e.length&&!t.children[n]}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class Pp{constructor(t){this.segmentGroup=t||null}}class Dp{constructor(t){this.urlTree=t}}function Np(t){return new b(e=>e.error(new Pp(t)))}function jp(t){return new b(e=>e.error(new Dp(t)))}function Mp(t){return new b(e=>e.error(new Error(`Only absolute redirects can have named outlets. redirectTo: '${t}'`)))}class Vp{constructor(t,e,n,r,s){this.configLoader=e,this.urlSerializer=n,this.urlTree=r,this.config=s,this.allowRedirects=!0,this.ngModule=t.get(Sa)}apply(){const t=Ap(this.urlTree.root,[],[],this.config).segmentGroup,e=new bd(t.segments,t.children);return this.expandSegmentGroup(this.ngModule,this.config,e,nd).pipe(E(t=>this.createUrlTree(Fp(t),this.urlTree.queryParams,this.urlTree.fragment))).pipe(bh(t=>{if(t instanceof Dp)return this.allowRedirects=!1,this.match(t.urlTree);if(t instanceof Pp)throw this.noMatchError(t);throw t}))}match(t){return this.expandSegmentGroup(this.ngModule,this.config,t.root,nd).pipe(E(e=>this.createUrlTree(Fp(e),t.queryParams,t.fragment))).pipe(bh(t=>{if(t instanceof Pp)throw this.noMatchError(t);throw t}))}noMatchError(t){return new Error(`Cannot match any routes. URL Segment: '${t.segmentGroup}'`)}createUrlTree(t,e,n){const r=t.segments.length>0?new bd([],{[nd]:t}):t;return new yd(r,e,n)}expandSegmentGroup(t,e,n,r){return 0===n.segments.length&&n.hasChildren()?this.expandChildren(t,e,n).pipe(E(t=>new bd([],t))):this.expandSegment(t,n,e,n.segments,r,!0)}expandChildren(t,e,n){const r=[];for(const s of Object.keys(n.children))"primary"===s?r.unshift(s):r.push(s);return M(r).pipe(wh(r=>{const s=n.children[r],i=kp(e,r);return this.expandSegmentGroup(t,i,s,r).pipe(E(t=>({segment:t,outlet:r})))}),dh((t,e)=>(t[e.outlet]=e.segment,t),{}),function(t,e){const n=arguments.length>=2;return r=>r.pipe(t?gh((e,n)=>t(e,n,r)):y,Ch(1),n?Ih(e):kh(()=>new th))}())}expandSegment(t,e,n,r,s,i){return M(n).pipe(wh(o=>this.expandSegmentAgainstRoute(t,e,n,o,r,s,i).pipe(bh(t=>{if(t instanceof Pp)return qu(null);throw t}))),Ph(t=>!!t),bh((t,n)=>{if(t instanceof th||"EmptyError"===t.name){if(Op(e,r,s))return qu(new bd([],{}));throw new Pp(e)}throw t}))}expandSegmentAgainstRoute(t,e,n,r,s,i,o){return Rp(r,e,s,i)?void 0===r.redirectTo?this.matchSegmentAgainstRoute(t,e,r,s,i):o&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(t,e,n,r,s,i):Np(e):Np(e)}expandSegmentAgainstRouteUsingRedirect(t,e,n,r,s,i){return"**"===r.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(t,n,r,i):this.expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,r,s,i)}expandWildCardWithParamsAgainstRouteUsingRedirect(t,e,n,r){const s=this.applyRedirectCommands([],n.redirectTo,{});return n.redirectTo.startsWith("/")?jp(s):this.lineralizeSegments(n,s).pipe(L(n=>{const s=new bd(n,{});return this.expandSegment(t,s,e,n,r,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,r,s,i){const{matched:o,consumedSegments:a,lastChild:l,positionalParamSegments:c}=Tp(e,r,s);if(!o)return Np(e);const u=this.applyRedirectCommands(a,r.redirectTo,c);return r.redirectTo.startsWith("/")?jp(u):this.lineralizeSegments(r,u).pipe(L(r=>this.expandSegment(t,e,n,r.concat(s.slice(l)),i,!1)))}matchSegmentAgainstRoute(t,e,n,r,s){if("**"===n.path)return n.loadChildren?(n._loadedConfig?qu(n._loadedConfig):this.configLoader.load(t.injector,n)).pipe(E(t=>(n._loadedConfig=t,new bd(r,{})))):qu(new bd(r,{}));const{matched:i,consumedSegments:o,lastChild:a}=Tp(e,n,r);if(!i)return Np(e);const l=r.slice(a);return this.getChildConfig(t,n,r).pipe(L(t=>{const r=t.module,i=t.routes,{segmentGroup:a,slicedSegments:c}=Ap(e,o,l,i),u=new bd(a.segments,a.children);if(0===c.length&&u.hasChildren())return this.expandChildren(r,i,u).pipe(E(t=>new bd(o,t)));if(0===i.length&&0===c.length)return qu(new bd(o,{}));const h=xp(n)===s;return this.expandSegment(r,u,i,c,h?nd:s,!0).pipe(E(t=>new bd(o.concat(t.segments),t.children)))}))}getChildConfig(t,e,n){return e.children?qu(new fp(e.children,t)):e.loadChildren?void 0!==e._loadedConfig?qu(e._loadedConfig):this.runCanLoadGuards(t.injector,e,n).pipe(L(n=>n?this.configLoader.load(t.injector,e).pipe(E(t=>(e._loadedConfig=t,t))):function(t){return new b(e=>e.error(id(`Cannot load children because the guard of the route "path: '${t.path}'" returned false`)))}(e))):qu(new fp([],t))}runCanLoadGuards(t,e,n){const r=e.canLoad;return r&&0!==r.length?qu(r.map(r=>{const s=t.get(r);let i;if(function(t){return t&&gp(t.canLoad)}(s))i=s.canLoad(e,n);else{if(!gp(s))throw new Error("Invalid CanLoad guard");i=s(e,n)}return dd(i)})).pipe(bp(),Nh(t=>{if(!mp(t))return;const e=id(`Redirecting to "${this.urlSerializer.serialize(t)}"`);throw e.url=t,e}),E(t=>!0===t)):qu(!0)}lineralizeSegments(t,e){let n=[],r=e.root;for(;;){if(n=n.concat(r.segments),0===r.numberOfChildren)return qu(n);if(r.numberOfChildren>1||!r.children.primary)return Mp(t.redirectTo);r=r.children.primary}}applyRedirectCommands(t,e,n){return this.applyRedirectCreatreUrlTree(e,this.urlSerializer.parse(e),t,n)}applyRedirectCreatreUrlTree(t,e,n,r){const s=this.createSegmentGroup(t,e.root,n,r);return new yd(s,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(t,e){const n={};return hd(t,(t,r)=>{if("string"==typeof t&&t.startsWith(":")){const s=t.substring(1);n[r]=e[s]}else n[r]=t}),n}createSegmentGroup(t,e,n,r){const s=this.createSegments(t,e.segments,n,r);let i={};return hd(e.children,(e,s)=>{i[s]=this.createSegmentGroup(t,e,n,r)}),new bd(s,i)}createSegments(t,e,n,r){return e.map(e=>e.path.startsWith(":")?this.findPosParam(t,e,r):this.findOrReturn(e,n))}findPosParam(t,e,n){const r=n[e.path.substring(1)];if(!r)throw new Error(`Cannot redirect to '${t}'. Cannot find '${e.path}'.`);return r}findOrReturn(t,e){let n=0;for(const r of e){if(r.path===t.path)return e.splice(n),r;n++}return t}}function Fp(t){const e={};for(const n of Object.keys(t.children)){const r=Fp(t.children[n]);(r.segments.length>0||r.hasChildren())&&(e[n]=r)}return function(t){if(1===t.numberOfChildren&&t.children.primary){const e=t.children.primary;return new bd(t.segments.concat(e.segments),e.children)}return t}(new bd(t.segments,e))}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+class Up{constructor(t){this.path=t,this.route=this.path[this.path.length-1]}}class Lp{constructor(t,e){this.component=t,this.route=e}}function $p(t,e,n){const r=t._root;return zp(r,e?e._root:null,n,[r.value])}function Hp(t,e,n){const r=function(t){if(!t)return null;for(let e=t.parent;e;e=e.parent){const t=e.routeConfig;if(t&&t._loadedConfig)return t._loadedConfig}return null}(e);return(r?r.module.injector:n).get(t)}function zp(t,e,n,r,s={canDeactivateChecks:[],canActivateChecks:[]}){const i=$d(e);return t.children.forEach(t=>{!function(t,e,n,r,s={canDeactivateChecks:[],canActivateChecks:[]}){const i=t.value,o=e?e.value:null,a=n?n.getContext(t.value.outlet):null;if(o&&i.routeConfig===o.routeConfig){const l=function(t,e,n){if("function"==typeof n)return n(t,e);switch(n){case"pathParamsChange":return!vd(t.url,e.url);case"pathParamsOrQueryParamsChange":return!vd(t.url,e.url)||!ad(t.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Kd(t,e)||!ad(t.queryParams,e.queryParams);case"paramsChange":default:return!Kd(t,e)}}(o,i,i.routeConfig.runGuardsAndResolvers);l?s.canActivateChecks.push(new Up(r)):(i.data=o.data,i._resolvedData=o._resolvedData),zp(t,e,i.component?a?a.children:null:n,r,s),l&&a&&a.outlet&&a.outlet.isActivated&&s.canDeactivateChecks.push(new Lp(a.outlet.component,o))}else o&&Bp(e,a,s),s.canActivateChecks.push(new Up(r)),zp(t,null,i.component?a?a.children:null:n,r,s)}(t,i[t.value.outlet],n,r.concat([t.value]),s),delete i[t.value.outlet]}),hd(i,(t,e)=>Bp(t,n.getContext(e),s)),s}function Bp(t,e,n){const r=$d(t),s=t.value;hd(r,(t,r)=>{Bp(t,s.component?e?e.children.getContext(r):null:e,n)}),n.canDeactivateChecks.push(new Lp(s.component&&e&&e.outlet&&e.outlet.isActivated?e.outlet.component:null,s))}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+class Gp{}function qp(t){return new b(e=>e.error(t))}class Wp{constructor(t,e,n,r,s,i){this.rootComponentType=t,this.config=e,this.urlTree=n,this.url=r,this.paramsInheritanceStrategy=s,this.relativeLinkResolution=i}recognize(){const t=Ap(this.urlTree.root,[],[],this.config.filter(t=>void 0===t.redirectTo),this.relativeLinkResolution).segmentGroup,e=this.processSegmentGroup(this.config,t,nd);if(null===e)return null;const n=new qd([],Object.freeze({}),Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,{},nd,this.rootComponentType,null,this.urlTree.root,-1,{}),r=new Ld(n,e),s=new Wd(this.url,r);return this.inheritParamsAndData(s._root),s}inheritParamsAndData(t){const e=t.value,n=Gd(e,this.paramsInheritanceStrategy);e.params=Object.freeze(n.params),e.data=Object.freeze(n.data),t.children.forEach(t=>this.inheritParamsAndData(t))}processSegmentGroup(t,e,n){return 0===e.segments.length&&e.hasChildren()?this.processChildren(t,e):this.processSegment(t,e,e.segments,n)}processChildren(t,e){const n=[];for(const s of Object.keys(e.children)){const r=e.children[s],i=kp(t,s),o=this.processSegmentGroup(i,r,s);if(null===o)return null;n.push(...o)}const r=Yp(n);return r.sort((t,e)=>t.value.outlet===nd?-1:e.value.outlet===nd?1:t.value.outlet.localeCompare(e.value.outlet)),r}processSegment(t,e,n,r){for(const s of t){const t=this.processSegmentAgainstRoute(s,e,n,r);if(null!==t)return t}return Op(e,n,r)?[]:null}processSegmentAgainstRoute(t,e,n,r){if(t.redirectTo||!Rp(t,e,n,r))return null;let s,i=[],o=[];if("**"===t.path){const r=n.length>0?ud(n).parameters:{};s=new qd(n,r,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,Jp(t),xp(t),t.component,t,Qp(e),Kp(e)+n.length,Xp(t))}else{const r=Tp(e,t,n);if(!r.matched)return null;i=r.consumedSegments,o=n.slice(r.lastChild),s=new qd(i,r.parameters,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,Jp(t),xp(t),t.component,t,Qp(e),Kp(e)+i.length,Xp(t))}const a=function(t){return t.children?t.children:t.loadChildren?t._loadedConfig.routes:[]}(t),{segmentGroup:l,slicedSegments:c}=Ap(e,i,o,a.filter(t=>void 0===t.redirectTo),this.relativeLinkResolution);if(0===c.length&&l.hasChildren()){const t=this.processChildren(a,l);return null===t?null:[new Ld(s,t)]}if(0===a.length&&0===c.length)return[new Ld(s,[])];const u=xp(t)===r,h=this.processSegment(a,l,c,u?nd:r);return null===h?null:[new Ld(s,h)]}}function Zp(t){const e=t.value.routeConfig;return e&&""===e.path&&void 0===e.redirectTo}function Yp(t){const e=[],n=new Set;for(const r of t){if(!Zp(r)){e.push(r);continue}const t=e.find(t=>r.value.routeConfig===t.value.routeConfig);void 0!==t?(t.children.push(...r.children),n.add(t)):e.push(r)}for(const r of n){const t=Yp(r.children);e.push(new Ld(r.value,t))}return e.filter(t=>!n.has(t))}function Qp(t){let e=t;for(;e._sourceSegment;)e=e._sourceSegment;return e}function Kp(t){let e=t,n=e._segmentIndexShift?e._segmentIndexShift:0;for(;e._sourceSegment;)e=e._sourceSegment,n+=e._segmentIndexShift?e._segmentIndexShift:0;return n-1}function Jp(t){return t.data||{}}function Xp(t){return t.resolve||{}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function tf(t){return ih(e=>{const n=t(e);return n?M(n).pipe(E(()=>e)):qu(e)})}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class ef extends class{shouldDetach(t){return!1}store(t,e){}shouldAttach(t){return!1}retrieve(t){return null}shouldReuseRoute(t,e){return t.routeConfig===e.routeConfig}}{}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const nf=new Bn("ROUTES");class rf{constructor(t,e,n,r){this.loader=t,this.compiler=e,this.onLoadStartListener=n,this.onLoadEndListener=r}load(t,e){if(e._loader$)return e._loader$;this.onLoadStartListener&&this.onLoadStartListener(e);const n=this.loadModuleFactory(e.loadChildren).pipe(E(n=>{this.onLoadEndListener&&this.onLoadEndListener(e);const r=n.create(t);return new fp(cd(r.injector.get(nf,void 0,_t.Self|_t.Optional)).map(Sp),r)}),bh(t=>{throw e._loader$=void 0,t}));return e._loader$=new Z(n,()=>new S).pipe(G()),e._loader$}loadModuleFactory(t){return"string"==typeof t?M(this.loader.load(t)):dd(t()).pipe(L(t=>t instanceof xa?qu(t):M(this.compiler.compileModuleAsync(t))))}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class sf{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.children=new of,this.attachRef=null}}class of{constructor(){this.contexts=new Map}onChildOutletCreated(t,e){const n=this.getOrCreateContext(t);n.outlet=e,this.contexts.set(t,n)}onChildOutletDestroyed(t){const e=this.getContext(t);e&&(e.outlet=null)}onOutletDeactivated(){const t=this.contexts;return this.contexts=new Map,t}onOutletReAttached(t){this.contexts=t}getOrCreateContext(t){let e=this.getContext(t);return e||(e=new sf,this.contexts.set(t,e)),e}getContext(t){return this.contexts.get(t)||null}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class af{shouldProcessUrl(t){return!0}extract(t){return t}merge(t,e){return t}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function lf(t){throw t}function cf(t,e,n){return e.parse("/")}function uf(t,e){return qu(null)}let hf=(()=>{class t{constructor(t,e,n,r,s,i,o,a){this.rootComponentType=t,this.urlSerializer=e,this.rootContexts=n,this.location=r,this.config=a,this.lastSuccessfulNavigation=null,this.currentNavigation=null,this.disposed=!1,this.lastLocationChangeInfo=null,this.navigationId=0,this.isNgZoneEnabled=!1,this.events=new S,this.errorHandler=lf,this.malformedUriErrorHandler=cf,this.navigated=!1,this.lastSuccessfulId=-1,this.hooks={beforePreactivation:uf,afterPreactivation:uf},this.urlHandlingStrategy=new af,this.routeReuseStrategy=new ef,this.onSameUrlNavigation="ignore",this.paramsInheritanceStrategy="emptyOnly",this.urlUpdateStrategy="deferred",this.relativeLinkResolution="corrected",this.ngModule=s.get(Sa),this.console=s.get(ml);const l=s.get(Il);this.isNgZoneEnabled=l instanceof Il&&Il.isInAngularZone(),this.resetConfig(a),this.currentUrlTree=new yd(new bd([],{}),{},null),this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.configLoader=new rf(i,o,t=>this.triggerEvent(new Yh(t)),t=>this.triggerEvent(new Qh(t))),this.routerState=zd(this.currentUrlTree,this.rootComponentType),this.transitions=new Wu({id:0,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,extractedUrl:this.urlHandlingStrategy.extract(this.currentUrlTree),urlAfterRedirects:this.urlHandlingStrategy.extract(this.currentUrlTree),rawUrl:this.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:"imperative",restoredState:null,currentSnapshot:this.routerState.snapshot,targetSnapshot:null,currentRouterState:this.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.navigations=this.setupNavigations(this.transitions),this.processNavigations()}setupNavigations(t){const e=this.events;return t.pipe(gh(t=>0!==t.id),E(t=>Object.assign(Object.assign({},t),{extractedUrl:this.urlHandlingStrategy.extract(t.rawUrl)})),ih(t=>{let n=!1,r=!1;return qu(t).pipe(Nh(t=>{this.currentNavigation={id:t.id,initialUrl:t.currentRawUrl,extractedUrl:t.extractedUrl,trigger:t.source,extras:t.extras,previousNavigation:this.lastSuccessfulNavigation?Object.assign(Object.assign({},this.lastSuccessfulNavigation),{previousNavigation:null}):null}}),ih(t=>{const n=!this.navigated||t.extractedUrl.toString()!==this.browserUrlTree.toString();if(("reload"===this.onSameUrlNavigation||n)&&this.urlHandlingStrategy.shouldProcessUrl(t.rawUrl))return qu(t).pipe(ih(t=>{const n=this.transitions.getValue();return e.next(new Lh(t.id,this.serializeUrl(t.extractedUrl),t.source,t.restoredState)),n!==this.transitions.getValue()?nh:Promise.resolve(t)}),(r=this.ngModule.injector,s=this.configLoader,i=this.urlSerializer,o=this.config,ih(t=>function(t,e,n,r,s){return new Vp(t,e,n,r,s).apply()}(r,s,i,t.extractedUrl,o).pipe(E(e=>Object.assign(Object.assign({},t),{urlAfterRedirects:e}))))),Nh(t=>{this.currentNavigation=Object.assign(Object.assign({},this.currentNavigation),{finalUrl:t.urlAfterRedirects})}),function(t,e,n,r,s){return L(i=>function(t,e,n,r,s="emptyOnly",i="legacy"){try{const o=new Wp(t,e,n,r,s,i).recognize();return null===o?qp(new Gp):qu(o)}catch(o){return qp(o)}}(t,e,i.urlAfterRedirects,n(i.urlAfterRedirects),r,s).pipe(E(t=>Object.assign(Object.assign({},i),{targetSnapshot:t}))))}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */(this.rootComponentType,this.config,t=>this.serializeUrl(t),this.paramsInheritanceStrategy,this.relativeLinkResolution),Nh(t=>{"eager"===this.urlUpdateStrategy&&(t.extras.skipLocationChange||this.setBrowserUrl(t.urlAfterRedirects,!!t.extras.replaceUrl,t.id,t.extras.state),this.browserUrlTree=t.urlAfterRedirects);const n=new Bh(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.next(n)}));var r,s,i,o;if(n&&this.rawUrlTree&&this.urlHandlingStrategy.shouldProcessUrl(this.rawUrlTree)){const{id:n,extractedUrl:r,source:s,restoredState:i,extras:o}=t,a=new Lh(n,this.serializeUrl(r),s,i);e.next(a);const l=zd(r,this.rootComponentType).snapshot;return qu(Object.assign(Object.assign({},t),{targetSnapshot:l,urlAfterRedirects:r,extras:Object.assign(Object.assign({},o),{skipLocationChange:!1,replaceUrl:!1})}))}return this.rawUrlTree=t.rawUrl,this.browserUrlTree=t.urlAfterRedirects,t.resolve(null),nh}),tf(t=>{const{targetSnapshot:e,id:n,extractedUrl:r,rawUrl:s,extras:{skipLocationChange:i,replaceUrl:o}}=t;return this.hooks.beforePreactivation(e,{navigationId:n,appliedUrlTree:r,rawUrlTree:s,skipLocationChange:!!i,replaceUrl:!!o})}),Nh(t=>{const e=new Gh(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}),E(t=>Object.assign(Object.assign({},t),{guards:$p(t.targetSnapshot,t.currentSnapshot,this.rootContexts)})),function(t,e){return L(n=>{const{targetSnapshot:r,currentSnapshot:s,guards:{canActivateChecks:i,canDeactivateChecks:o}}=n;return 0===o.length&&0===i.length?qu(Object.assign(Object.assign({},n),{guardsResult:!0})):function(t,e,n,r){return M(t).pipe(L(t=>function(t,e,n,r,s){const i=e&&e.routeConfig?e.routeConfig.canDeactivate:null;return i&&0!==i.length?qu(i.map(i=>{const o=Hp(i,e,s);let a;if(function(t){return t&&gp(t.canDeactivate)}(o))a=dd(o.canDeactivate(t,e,n,r));else{if(!gp(o))throw new Error("Invalid CanDeactivate guard");a=dd(o(t,e,n,r))}return a.pipe(Ph())})).pipe(bp()):qu(!0)}(t.component,t.route,n,e,r)),Ph(t=>!0!==t,!0))}(o,r,s,t).pipe(L(n=>n&&"boolean"==typeof n?function(t,e,n,r){return M(e).pipe(wh(e=>eh(function(t,e){return null!==t&&e&&e(new Kh(t)),qu(!0)}(e.route.parent,r),function(t,e){return null!==t&&e&&e(new Xh(t)),qu(!0)}(e.route,r),function(t,e,n){const r=e[e.length-1],s=e.slice(0,e.length-1).reverse().map(t=>function(t){const e=t.routeConfig?t.routeConfig.canActivateChild:null;return e&&0!==e.length?{node:t,guards:e}:null}(t)).filter(t=>null!==t).map(e=>sh(()=>qu(e.guards.map(s=>{const i=Hp(s,e.node,n);let o;if(function(t){return t&&gp(t.canActivateChild)}(i))o=dd(i.canActivateChild(r,t));else{if(!gp(i))throw new Error("Invalid CanActivateChild guard");o=dd(i(r,t))}return o.pipe(Ph())})).pipe(bp())));return qu(s).pipe(bp())}(t,e.path,n),function(t,e,n){const r=e.routeConfig?e.routeConfig.canActivate:null;return r&&0!==r.length?qu(r.map(r=>sh(()=>{const s=Hp(r,e,n);let i;if(function(t){return t&&gp(t.canActivate)}(s))i=dd(s.canActivate(e,t));else{if(!gp(s))throw new Error("Invalid CanActivate guard");i=dd(s(e,t))}return i.pipe(Ph())}))).pipe(bp()):qu(!0)}(t,e.route,n))),Ph(t=>!0!==t,!0))}(r,i,t,e):qu(n)),E(t=>Object.assign(Object.assign({},n),{guardsResult:t})))})}(this.ngModule.injector,t=>this.triggerEvent(t)),Nh(t=>{if(mp(t.guardsResult)){const e=id(`Redirecting to "${this.serializeUrl(t.guardsResult)}"`);throw e.url=t.guardsResult,e}const e=new qh(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot,!!t.guardsResult);this.triggerEvent(e)}),gh(t=>{if(!t.guardsResult){this.resetUrlToCurrentUrlTree();const n=new Hh(t.id,this.serializeUrl(t.extractedUrl),"");return e.next(n),t.resolve(!1),!1}return!0}),tf(t=>{if(t.guards.canActivateChecks.length)return qu(t).pipe(Nh(t=>{const e=new Wh(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}),ih(t=>{let n=!1;return qu(t).pipe((r=this.paramsInheritanceStrategy,s=this.ngModule.injector,L(t=>{const{targetSnapshot:e,guards:{canActivateChecks:n}}=t;if(!n.length)return qu(t);let i=0;return M(n).pipe(wh(t=>function(t,e,n,r){return function(t,e,n,r){const s=Object.keys(t);if(0===s.length)return qu({});const i={};return M(s).pipe(L(s=>function(t,e,n,r){const s=Hp(t,e,r);return dd(s.resolve?s.resolve(e,n):s(e,n))}(t[s],e,n,r).pipe(Nh(t=>{i[s]=t}))),Ch(1),L(()=>Object.keys(i).length===s.length?qu(i):nh))}(t._resolve,t,e,r).pipe(E(e=>(t._resolvedData=e,t.data=Object.assign(Object.assign({},t.data),Gd(t,n).resolve),null)))}(t.route,e,r,s)),Nh(()=>i++),Ch(1),L(e=>i===n.length?qu(t):nh))})),Nh({next:()=>n=!0,complete:()=>{if(!n){const n=new Hh(t.id,this.serializeUrl(t.extractedUrl),"At least one route resolver didn't emit any value.");e.next(n),t.resolve(!1)}}}));var r,s}),Nh(t=>{const e=new Zh(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}))}),tf(t=>{const{targetSnapshot:e,id:n,extractedUrl:r,rawUrl:s,extras:{skipLocationChange:i,replaceUrl:o}}=t;return this.hooks.afterPreactivation(e,{navigationId:n,appliedUrlTree:r,rawUrlTree:s,skipLocationChange:!!i,replaceUrl:!!o})}),E(t=>{const e=function(t,e,n){const r=Jd(t,e._root,n?n._root:void 0);return new Hd(r,e)}(this.routeReuseStrategy,t.targetSnapshot,t.currentRouterState);return Object.assign(Object.assign({},t),{targetRouterState:e})}),Nh(t=>{this.currentUrlTree=t.urlAfterRedirects,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,t.rawUrl),this.routerState=t.targetRouterState,"deferred"===this.urlUpdateStrategy&&(t.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,!!t.extras.replaceUrl,t.id,t.extras.state),this.browserUrlTree=t.urlAfterRedirects)}),(i=this.rootContexts,o=this.routeReuseStrategy,a=t=>this.triggerEvent(t),E(t=>(new dp(o,t.targetRouterState,t.currentRouterState,a).activate(i),t))),Nh({next(){n=!0},complete(){n=!0}}),(s=()=>{if(!n&&!r){this.resetUrlToCurrentUrlTree();const n=new Hh(t.id,this.serializeUrl(t.extractedUrl),`Navigation ID ${t.id} is not equal to the current navigation id ${this.navigationId}`);e.next(n),t.resolve(!1)}this.currentNavigation=null},t=>t.lift(new Vh(s))),bh(n=>{if(r=!0,(s=n)&&s.ngNavigationCancelingError){const r=mp(n.url);r||(this.navigated=!0,this.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl));const s=new Hh(t.id,this.serializeUrl(t.extractedUrl),n.message);e.next(s),r?setTimeout(()=>{const e=this.urlHandlingStrategy.merge(n.url,this.rawUrlTree);this.scheduleNavigation(e,"imperative",null,{skipLocationChange:t.extras.skipLocationChange,replaceUrl:"eager"===this.urlUpdateStrategy},{resolve:t.resolve,reject:t.reject,promise:t.promise})},0):t.resolve(!1)}else{this.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl);const r=new zh(t.id,this.serializeUrl(t.extractedUrl),n);e.next(r);try{t.resolve(this.errorHandler(n))}catch(i){t.reject(i)}}var s;return nh}));var s,i,o,a}))}resetRootComponentType(t){this.rootComponentType=t,this.routerState.root.component=this.rootComponentType}getTransition(){const t=this.transitions.value;return t.urlAfterRedirects=this.browserUrlTree,t}setTransition(t){this.transitions.next(Object.assign(Object.assign({},this.getTransition()),t))}initialNavigation(){this.setUpLocationChangeListener(),0===this.navigationId&&this.navigateByUrl(this.location.path(!0),{replaceUrl:!0})}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(t=>{const e=this.extractLocationChangeInfoFromEvent(t);this.shouldScheduleNavigation(this.lastLocationChangeInfo,e)&&setTimeout(()=>{const{source:t,state:n,urlTree:r}=e,s={replaceUrl:!0};if(n){const t=Object.assign({},n);delete t.navigationId,0!==Object.keys(t).length&&(s.state=t)}this.scheduleNavigation(r,t,n,s)},0),this.lastLocationChangeInfo=e}))}extractLocationChangeInfoFromEvent(t){var e;return{source:"popstate"===t.type?"popstate":"hashchange",urlTree:this.parseUrl(t.url),state:(null===(e=t.state)||void 0===e?void 0:e.navigationId)?t.state:null,transitionId:this.getTransition().id}}shouldScheduleNavigation(t,e){if(!t)return!0;const n=e.urlTree.toString()===t.urlTree.toString();return!(e.transitionId===t.transitionId&&n&&("hashchange"===e.source&&"popstate"===t.source||"popstate"===e.source&&"hashchange"===t.source))}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.currentNavigation}triggerEvent(t){this.events.next(t)}resetConfig(t){vp(t),this.config=t.map(Sp),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.transitions.complete(),this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=void 0),this.disposed=!0}createUrlTree(t,e={}){const{relativeTo:n,queryParams:r,fragment:s,queryParamsHandling:i,preserveFragment:o}=e,a=n||this.routerState.root,l=o?this.currentUrlTree.fragment:s;let c=null;switch(i){case"merge":c=Object.assign(Object.assign({},this.currentUrlTree.queryParams),r);break;case"preserve":c=this.currentUrlTree.queryParams;break;default:c=r||null}return null!==c&&(c=this.removeEmptyProps(c)),function(t,e,n,r,s){if(0===n.length)return np(e.root,e.root,e,r,s);const i=function(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new sp(!0,0,t);let e=0,n=!1;const r=t.reduce((t,r,s)=>{if("object"==typeof r&&null!=r){if(r.outlets){const e={};return hd(r.outlets,(t,n)=>{e[n]="string"==typeof t?t.split("/"):t}),[...t,{outlets:e}]}if(r.segmentPath)return[...t,r.segmentPath]}return"string"!=typeof r?[...t,r]:0===s?(r.split("/").forEach((r,s)=>{0==s&&"."===r||(0==s&&""===r?n=!0:".."===r?e++:""!=r&&t.push(r))}),t):[...t,r]},[]);return new sp(n,e,r)}(n);if(i.toRoot())return np(e.root,new bd([],{}),e,r,s);const o=function(t,e,n){if(t.isAbsolute)return new ip(e.root,!0,0);if(-1===n.snapshot._lastPathIndex){const t=n.snapshot._urlSegment;return new ip(t,t===e.root,0)}const r=tp(t.commands[0])?0:1;return function(t,e,n){let r=t,s=e,i=n;for(;i>s;){if(i-=s,r=r.parent,!r)throw new Error("Invalid number of '../'");s=r.segments.length}return new ip(r,!1,s-i)}(n.snapshot._urlSegment,n.snapshot._lastPathIndex+r,t.numberOfDoubleDots)}(i,e,t),a=o.processChildren?ap(o.segmentGroup,o.index,i.commands):op(o.segmentGroup,o.index,i.commands);return np(o.segmentGroup,a,e,r,s)}(a,this.currentUrlTree,t,c,l)}navigateByUrl(t,e={skipLocationChange:!1}){const n=mp(t)?t:this.parseUrl(t),r=this.urlHandlingStrategy.merge(n,this.rawUrlTree);return this.scheduleNavigation(r,"imperative",null,e)}navigate(t,e={skipLocationChange:!1}){return function(t){for(let e=0;e{const r=t[n];return null!=r&&(e[n]=r),e},{})}processNavigations(){this.navigations.subscribe(t=>{this.navigated=!0,this.lastSuccessfulId=t.id,this.events.next(new $h(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(this.currentUrlTree))),this.lastSuccessfulNavigation=this.currentNavigation,t.resolve(!0)},t=>{this.console.warn("Unhandled Navigation Error: ")})}scheduleNavigation(t,e,n,r,s){if(this.disposed)return Promise.resolve(!1);const i=this.getTransition(),o="imperative"!==e&&"imperative"===(null==i?void 0:i.source),a=(this.lastSuccessfulId===i.id||this.currentNavigation?i.rawUrl:i.urlAfterRedirects).toString()===t.toString();if(o&&a)return Promise.resolve(!0);let l,c,u;s?(l=s.resolve,c=s.reject,u=s.promise):u=new Promise((t,e)=>{l=t,c=e});const h=++this.navigationId;return this.setTransition({id:h,source:e,restoredState:n,currentUrlTree:this.currentUrlTree,currentRawUrl:this.rawUrlTree,rawUrl:t,extras:r,resolve:l,reject:c,promise:u,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),u.catch(t=>Promise.reject(t))}setBrowserUrl(t,e,n,r){const s=this.urlSerializer.serialize(t);r=r||{},this.location.isCurrentPathEqualTo(s)||e?this.location.replaceState(s,"",Object.assign(Object.assign({},r),{navigationId:n})):this.location.go(s,"",Object.assign(Object.assign({},r),{navigationId:n}))}resetStateAndUrl(t,e,n){this.routerState=t,this.currentUrlTree=e,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n),this.resetUrlToCurrentUrlTree()}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",{navigationId:this.lastSuccessfulId})}}return t.\u0275fac=function(e){return new(e||t)(lr(qn),lr(wd),lr(of),lr(Cc),lr(bi),lr(Kl),lr(El),lr(void 0))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})(),df=(()=>{class t{constructor(t,e,n,r,s){this.parentContexts=t,this.location=e,this.resolver=n,this.changeDetector=s,this.activated=null,this._activatedRoute=null,this.activateEvents=new Ga,this.deactivateEvents=new Ga,this.name=r||nd,t.onChildOutletCreated(this.name,this)}ngOnDestroy(){this.parentContexts.onChildOutletDestroyed(this.name)}ngOnInit(){if(!this.activated){const t=this.parentContexts.getContext(this.name);t&&t.route&&(t.attachRef?this.attach(t.attachRef,t.route):this.activateWith(t.route,t.resolver||null))}}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new Error("Outlet is not activated");return this.activated.instance}get activatedRoute(){if(!this.activated)throw new Error("Outlet is not activated");return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new Error("Outlet is not activated");this.location.detach();const t=this.activated;return this.activated=null,this._activatedRoute=null,t}attach(t,e){this.activated=t,this._activatedRoute=e,this.location.insert(t.hostView)}deactivate(){if(this.activated){const t=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(t)}}activateWith(t,e){if(this.isActivated)throw new Error("Cannot activate an already activated outlet");this._activatedRoute=t;const n=(e=e||this.resolver).resolveComponentFactory(t._futureSnapshot.routeConfig.component),r=this.parentContexts.getOrCreateContext(this.name).children,s=new pf(t,r,this.location.injector);this.activated=this.location.createComponent(n,this.location.length,s),this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}return t.\u0275fac=function(e){return new(e||t)(Mi(of),Mi(Ea),Mi(Fo),("name",function(t,e){const n=t.attrs;if(n){const t=n.length;let r=0;for(;r{class t{constructor(t,e,n,r,s){this.router=t,this.injector=r,this.preloadingStrategy=s,this.loader=new rf(e,n,e=>t.triggerEvent(new Yh(e)),e=>t.triggerEvent(new Qh(e)))}setUpPreloading(){this.subscription=this.router.events.pipe(gh(t=>t instanceof $h),wh(()=>this.preload())).subscribe(()=>{})}preload(){const t=this.injector.get(Sa);return this.processRoutes(t,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(t,e){const n=[];for(const r of e)if(r.loadChildren&&!r.canLoad&&r._loadedConfig){const t=r._loadedConfig;n.push(this.processRoutes(t.module,t.routes))}else r.loadChildren&&!r.canLoad?n.push(this.preloadConfig(t,r)):r.children&&n.push(this.processRoutes(t,r.children));return M(n).pipe(z(),E(t=>{}))}preloadConfig(t,e){return this.preloadingStrategy.preload(e,()=>(e._loadedConfig?qu(e._loadedConfig):this.loader.load(t.injector,e)).pipe(L(t=>(e._loadedConfig=t,this.processRoutes(t.module,t.routes)))))}}return t.\u0275fac=function(e){return new(e||t)(lr(hf),lr(Kl),lr(El),lr(bi),lr(ff))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})(),yf=(()=>{class t{constructor(t,e,n={}){this.router=t,this.viewportScroller=e,this.options=n,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},n.scrollPositionRestoration=n.scrollPositionRestoration||"disabled",n.anchorScrolling=n.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.router.events.subscribe(t=>{t instanceof Lh?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=t.navigationTrigger,this.restoredId=t.restoredState?t.restoredState.navigationId:0):t instanceof $h&&(this.lastId=t.id,this.scheduleScrollEvent(t,this.router.parseUrl(t.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.router.events.subscribe(t=>{t instanceof ed&&(t.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(t.position):t.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(t.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(t,e){this.router.triggerEvent(new ed(t,"popstate"===this.lastSource?this.store[this.restoredId]:null,e))}ngOnDestroy(){this.routerEventsSubscription&&this.routerEventsSubscription.unsubscribe(),this.scrollEventsSubscription&&this.scrollEventsSubscription.unsubscribe()}}return t.\u0275fac=function(e){return new(e||t)(lr(hf),lr(gu),lr(void 0))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const bf=new Bn("ROUTER_CONFIGURATION"),_f=new Bn("ROUTER_FORROOT_GUARD"),vf=[Cc,{provide:wd,useClass:Cd},{provide:hf,useFactory:function(t,e,n,r,s,i,o,a={},l,c){const u=new hf(null,t,e,n,r,s,i,cd(o));if(l&&(u.urlHandlingStrategy=l),c&&(u.routeReuseStrategy=c),function(t,e){t.errorHandler&&(e.errorHandler=t.errorHandler),t.malformedUriErrorHandler&&(e.malformedUriErrorHandler=t.malformedUriErrorHandler),t.onSameUrlNavigation&&(e.onSameUrlNavigation=t.onSameUrlNavigation),t.paramsInheritanceStrategy&&(e.paramsInheritanceStrategy=t.paramsInheritanceStrategy),t.relativeLinkResolution&&(e.relativeLinkResolution=t.relativeLinkResolution),t.urlUpdateStrategy&&(e.urlUpdateStrategy=t.urlUpdateStrategy)}(a,u),a.enableTracing){const t=oc();u.events.subscribe(e=>{t.logGroup(`Router Event: ${e.constructor.name}`),t.log(e.toString()),t.log(e),t.logGroupEnd()})}return u},deps:[wd,of,Cc,bi,Kl,El,nf,bf,[class{},new dr],[class{},new dr]]},of,{provide:Bd,useFactory:function(t){return t.routerState.root},deps:[hf]},{provide:Kl,useClass:tc},mf,gf,class{preload(t,e){return e().pipe(bh(()=>qu(null)))}},{provide:bf,useValue:{enableTracing:!1}}];function wf(){return new Bl("Router",hf)}let Cf=(()=>{class t{constructor(t,e){}static forRoot(e,n){return{ngModule:t,providers:[vf,Ef(e),{provide:_f,useFactory:kf,deps:[[hf,new dr,new pr]]},{provide:bf,useValue:n||{}},{provide:yc,useFactory:xf,deps:[lc,[new hr(_c),new dr],bf]},{provide:yf,useFactory:Sf,deps:[hf,gu,bf]},{provide:ff,useExisting:n&&n.preloadingStrategy?n.preloadingStrategy:gf},{provide:Bl,multi:!0,useFactory:wf},[Tf,{provide:ll,multi:!0,useFactory:Af,deps:[Tf]},{provide:Rf,useFactory:If,deps:[Tf]},{provide:gl,multi:!0,useExisting:Rf}]]}}static forChild(e){return{ngModule:t,providers:[Ef(e)]}}}return t.\u0275fac=function(e){return new(e||t)(lr(_f,8),lr(hf,8))},t.\u0275mod=qt({type:t}),t.\u0275inj=ht({}),t})();function Sf(t,e,n){return n.scrollOffset&&e.setOffset(n.scrollOffset),new yf(t,e,n)}function xf(t,e,n={}){return n.useHash?new wc(t,e):new vc(t,e)}function kf(t){return"guarded"}function Ef(t){return[{provide:Gn,multi:!0,useValue:t},{provide:nf,multi:!0,useValue:t}]}let Tf=(()=>{class t{constructor(t){this.injector=t,this.initNavigation=!1,this.resultOfPreactivationDone=new S}appInitializer(){return this.injector.get(uc,Promise.resolve(null)).then(()=>{let t=null;const e=new Promise(e=>t=e),n=this.injector.get(hf),r=this.injector.get(bf);return"disabled"===r.initialNavigation?(n.setUpLocationChangeListener(),t(!0)):"enabled"===r.initialNavigation||"enabledBlocking"===r.initialNavigation?(n.hooks.afterPreactivation=()=>this.initNavigation?qu(null):(this.initNavigation=!0,t(!0),this.resultOfPreactivationDone),n.initialNavigation()):t(!0),e})}bootstrapListener(t){const e=this.injector.get(bf),n=this.injector.get(mf),r=this.injector.get(yf),s=this.injector.get(hf),i=this.injector.get(Yl);t===i.components[0]&&("enabledNonBlocking"!==e.initialNavigation&&void 0!==e.initialNavigation||s.initialNavigation(),n.setUpPreloading(),r.init(),s.resetRootComponentType(i.componentTypes[0]),this.resultOfPreactivationDone.next(null),this.resultOfPreactivationDone.complete())}}return t.\u0275fac=function(e){return new(e||t)(lr(bi))},t.\u0275prov=ut({token:t,factory:t.\u0275fac}),t})();function Af(t){return t.appInitializer.bind(t)}function If(t){return t.bootstrapListener.bind(t)}const Rf=new Bn("Router Initializer");function Of(t,e){return new b(n=>{const r=t.length;if(0===r)return void n.complete();const s=new Array(r);let i=0,o=0;for(let a=0;a{c||(c=!0,o++),s[a]=t},error:t=>n.error(t),complete:()=>{i++,i!==r&&c||(o===r&&n.next(e?e.reduce((t,e,n)=>(t[e]=s[n],t),{}):s),n.complete())}}))}})}
+/**
+ * @license Angular v11.2.11
+ * (c) 2010-2021 Google LLC. https://angular.io/
+ * License: MIT
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class Pf{}const Df=new Bn("NgValueAccessor"),Nf={provide:Df,useExisting:rt(()=>Mf),multi:!0},jf=new Bn("CompositionEventMode");
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */let Mf=(()=>{class t{constructor(t,e,n){this._renderer=t,this._elementRef=e,this._compositionMode=n,this.onChange=t=>{},this.onTouched=()=>{},this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function(){const t=oc()?oc().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}())}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}}return t.\u0275fac=function(e){return new(e||t)(Mi(Go),Mi(Ho),Mi(jf,8))},t.\u0275dir=Zt({type:t,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(t,e){1&t&&Gi("input",function(t){return e._handleInput(t.target.value)})("blur",function(){return e.onTouched()})("compositionstart",function(){return e._compositionStart()})("compositionend",function(t){return e._compositionEnd(t.target.value)})},features:[jo([Nf])]}),t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const Vf=new Bn("NgValidators"),Ff=new Bn("NgAsyncValidators");function Uf(t){return null!=t}function Lf(t){const e=zi(t)?M(t):t;return Bi(e),e}function $f(t){let e={};return t.forEach(t=>{e=null!=t?Object.assign(Object.assign({},e),t):e}),0===Object.keys(e).length?null:e}function Hf(t,e){return e.map(e=>e(t))}function zf(t){return t.map(t=>function(t){return!t.validate}(t)?t:e=>t.validate(e))}function Bf(t){return null!=t?function(t){if(!t)return null;const e=t.filter(Uf);return 0==e.length?null:function(t){return $f(Hf(t,e))}}(zf(t)):null}function Gf(t){return null!=t?function(t){if(!t)return null;const e=t.filter(Uf);return 0==e.length?null:function(t){
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+return function(...t){if(1===t.length){const e=t[0];if(l(e))return Of(e,null);if(c(e)&&Object.getPrototypeOf(e)===Object.prototype){const t=Object.keys(e);return Of(t.map(t=>e[t]),t)}}if("function"==typeof t[t.length-1]){const e=t.pop();return Of(t=1===t.length&&l(t[0])?t[0]:t,null).pipe(E(t=>e(...t)))}return Of(t,null)}(Hf(t,e).map(Lf)).pipe(E($f))}}(zf(t)):null}function qf(t,e){return null===t?[e]:Array.isArray(t)?[...t,e]:[t,e]}let Wf=(()=>{class t{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(t){this._rawValidators=t||[],this._composedValidatorFn=Bf(this._rawValidators)}_setAsyncValidators(t){this._rawAsyncValidators=t||[],this._composedAsyncValidatorFn=Gf(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(t){this._onDestroyCallbacks.push(t)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(t=>t()),this._onDestroyCallbacks=[]}reset(t){this.control&&this.control.reset(t)}hasError(t,e){return!!this.control&&this.control.hasError(t,e)}getError(t,e){return this.control?this.control.getError(t,e):null}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Zt({type:t}),t})(),Zf=(()=>{class t extends Wf{get formDirective(){return null}get path(){return null}}return t.\u0275fac=function(e){return Yf(e||t)},t.\u0275dir=Zt({type:t,features:[vi]}),t})();const Yf=Ln(Zf);
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */class Qf extends Wf{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */let Kf=(()=>{class t extends class{constructor(t){this._cd=t}is(t){var e,n;return!!(null===(n=null===(e=this._cd)||void 0===e?void 0:e.control)||void 0===n?void 0:n[t])}}{constructor(t){super(t)}}return t.\u0275fac=function(e){return new(e||t)(Mi(Qf,2))},t.\u0275dir=Zt({type:t,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(t,e){2&t&&so("ng-untouched",e.is("untouched"))("ng-touched",e.is("touched"))("ng-pristine",e.is("pristine"))("ng-dirty",e.is("dirty"))("ng-valid",e.is("valid"))("ng-invalid",e.is("invalid"))("ng-pending",e.is("pending"))},features:[vi]}),t})();function Jf(t,e){t.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(e)})}function Xf(t,e){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function tg(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const eg="VALID",ng="INVALID",rg="PENDING",sg="DISABLED";function ig(t){return(cg(t)?t.validators:t)||null}function og(t){return Array.isArray(t)?Bf(t):t||null}function ag(t,e){return(cg(e)?e.asyncValidators:t)||null}function lg(t){return Array.isArray(t)?Gf(t):t||null}function cg(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}class ug{constructor(t,e){this._hasOwnPendingAsyncValidator=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._rawValidators=t,this._rawAsyncValidators=e,this._composedValidatorFn=og(this._rawValidators),this._composedAsyncValidatorFn=lg(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn}set validator(t){this._rawValidators=this._composedValidatorFn=t}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(t){this._rawAsyncValidators=this._composedAsyncValidatorFn=t}get parent(){return this._parent}get valid(){return this.status===eg}get invalid(){return this.status===ng}get pending(){return this.status==rg}get disabled(){return this.status===sg}get enabled(){return this.status!==sg}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(t){this._rawValidators=t,this._composedValidatorFn=og(t)}setAsyncValidators(t){this._rawAsyncValidators=t,this._composedAsyncValidatorFn=lg(t)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(t={}){this.touched=!0,this._parent&&!t.onlySelf&&this._parent.markAsTouched(t)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(t=>t.markAllAsTouched())}markAsUntouched(t={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(t=>{t.markAsUntouched({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}markAsDirty(t={}){this.pristine=!1,this._parent&&!t.onlySelf&&this._parent.markAsDirty(t)}markAsPristine(t={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(t=>{t.markAsPristine({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}markAsPending(t={}){this.status=rg,!1!==t.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!t.onlySelf&&this._parent.markAsPending(t)}disable(t={}){const e=this._parentMarkedDirty(t.onlySelf);this.status=sg,this.errors=null,this._forEachChild(e=>{e.disable(Object.assign(Object.assign({},t),{onlySelf:!0}))}),this._updateValue(),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(Object.assign(Object.assign({},t),{skipPristineCheck:e})),this._onDisabledChange.forEach(t=>t(!0))}enable(t={}){const e=this._parentMarkedDirty(t.onlySelf);this.status=eg,this._forEachChild(e=>{e.enable(Object.assign(Object.assign({},t),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent}),this._updateAncestors(Object.assign(Object.assign({},t),{skipPristineCheck:e})),this._onDisabledChange.forEach(t=>t(!1))}_updateAncestors(t){this._parent&&!t.onlySelf&&(this._parent.updateValueAndValidity(t),t.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(t){this._parent=t}updateValueAndValidity(t={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),this.status!==eg&&this.status!==rg||this._runAsyncValidator(t.emitEvent)),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.updateValueAndValidity(t)}_updateTreeValidity(t={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(t)),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?sg:eg}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(t){if(this.asyncValidator){this.status=rg,this._hasOwnPendingAsyncValidator=!0;const e=Lf(this.asyncValidator(this));this._asyncValidationSubscription=e.subscribe(e=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(e,{emitEvent:t})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(t,e={}){this.errors=t,this._updateControlsErrors(!1!==e.emitEvent)}get(t){return function(t,e,n){if(null==e)return null;if(Array.isArray(e)||(e=e.split(".")),Array.isArray(e)&&0===e.length)return null;let r=t;return e.forEach(t=>{r=r instanceof dg?r.controls.hasOwnProperty(t)?r.controls[t]:null:r instanceof pg&&r.at(t)||null}),r}(this,t)}getError(t,e){const n=e?this.get(e):this;return n&&n.errors?n.errors[t]:null}hasError(t,e){return!!this.getError(t,e)}get root(){let t=this;for(;t._parent;)t=t._parent;return t}_updateControlsErrors(t){this.status=this._calculateStatus(),t&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(t)}_initObservables(){this.valueChanges=new Ga,this.statusChanges=new Ga}_calculateStatus(){return this._allControlsDisabled()?sg:this.errors?ng:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(rg)?rg:this._anyControlsHaveStatus(ng)?ng:eg}_anyControlsHaveStatus(t){return this._anyControls(e=>e.status===t)}_anyControlsDirty(){return this._anyControls(t=>t.dirty)}_anyControlsTouched(){return this._anyControls(t=>t.touched)}_updatePristine(t={}){this.pristine=!this._anyControlsDirty(),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}_updateTouched(t={}){this.touched=this._anyControlsTouched(),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}_isBoxedValue(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}_registerOnCollectionChange(t){this._onCollectionChange=t}_setUpdateStrategy(t){cg(t)&&null!=t.updateOn&&(this._updateOn=t.updateOn)}_parentMarkedDirty(t){return!t&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}}class hg extends ug{constructor(t=null,e,n){super(ig(e),ag(n,e)),this._onChange=[],this._applyFormState(t),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!n})}setValue(t,e={}){this.value=this._pendingValue=t,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(t=>t(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(t,e={}){this.setValue(t,e)}reset(t=null,e={}){this._applyFormState(t),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(t){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(t){this._onChange.push(t)}_unregisterOnChange(t){tg(this._onChange,t)}registerOnDisabledChange(t){this._onDisabledChange.push(t)}_unregisterOnDisabledChange(t){tg(this._onDisabledChange,t)}_forEachChild(t){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(t){this._isBoxedValue(t)?(this.value=this._pendingValue=t.value,t.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=t}}class dg extends ug{constructor(t,e,n){super(ig(e),ag(n,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!n})}registerControl(t,e){return this.controls[t]?this.controls[t]:(this.controls[t]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(t,e){this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()}removeControl(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],this.updateValueAndValidity(),this._onCollectionChange()}setControl(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],e&&this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()}contains(t){return this.controls.hasOwnProperty(t)&&this.controls[t].enabled}setValue(t,e={}){this._checkAllValuesPresent(t),Object.keys(t).forEach(n=>{this._throwIfControlMissing(n),this.controls[n].setValue(t[n],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){null!=t&&(Object.keys(t).forEach(n=>{this.controls[n]&&this.controls[n].patchValue(t[n],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(t={},e={}){this._forEachChild((n,r)=>{n.reset(t[r],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(t,e,n)=>(t[n]=e instanceof hg?e.value:e.getRawValue(),t))}_syncPendingControls(){let t=this._reduceChildren(!1,(t,e)=>!!e._syncPendingControls()||t);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_throwIfControlMissing(t){if(!Object.keys(this.controls).length)throw new Error("\n There are no form controls registered with this group yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n ");if(!this.controls[t])throw new Error(`Cannot find form control with name: ${t}.`)}_forEachChild(t){Object.keys(this.controls).forEach(e=>{const n=this.controls[e];n&&t(n,e)})}_setUpControls(){this._forEachChild(t=>{t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(t){for(const e of Object.keys(this.controls)){const n=this.controls[e];if(this.contains(e)&&t(n))return!0}return!1}_reduceValue(){return this._reduceChildren({},(t,e,n)=>((e.enabled||this.disabled)&&(t[n]=e.value),t))}_reduceChildren(t,e){let n=t;return this._forEachChild((t,r)=>{n=e(n,t,r)}),n}_allControlsDisabled(){for(const t of Object.keys(this.controls))if(this.controls[t].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_checkAllValuesPresent(t){this._forEachChild((e,n)=>{if(void 0===t[n])throw new Error(`Must supply a value for form control with name: '${n}'.`)})}}class pg extends ug{constructor(t,e,n){super(ig(e),ag(n,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!n})}at(t){return this.controls[t]}push(t){this.controls.push(t),this._registerControl(t),this.updateValueAndValidity(),this._onCollectionChange()}insert(t,e){this.controls.splice(t,0,e),this._registerControl(e),this.updateValueAndValidity()}removeAt(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),this.controls.splice(t,1),this.updateValueAndValidity()}setControl(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),this.controls.splice(t,1),e&&(this.controls.splice(t,0,e),this._registerControl(e)),this.updateValueAndValidity(),this._onCollectionChange()}get length(){return this.controls.length}setValue(t,e={}){this._checkAllValuesPresent(t),t.forEach((t,n)=>{this._throwIfControlMissing(n),this.at(n).setValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){null!=t&&(t.forEach((t,n)=>{this.at(n)&&this.at(n).patchValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(t=[],e={}){this._forEachChild((n,r)=>{n.reset(t[r],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this.controls.map(t=>t instanceof hg?t.value:t.getRawValue())}clear(){this.controls.length<1||(this._forEachChild(t=>t._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity())}_syncPendingControls(){let t=this.controls.reduce((t,e)=>!!e._syncPendingControls()||t,!1);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_throwIfControlMissing(t){if(!this.controls.length)throw new Error("\n There are no form controls registered with this array yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n ");if(!this.at(t))throw new Error(`Cannot find form control at index ${t}`)}_forEachChild(t){this.controls.forEach((e,n)=>{t(e,n)})}_updateValue(){this.value=this.controls.filter(t=>t.enabled||this.disabled).map(t=>t.value)}_anyControls(t){return this.controls.some(e=>e.enabled&&t(e))}_setUpControls(){this._forEachChild(t=>this._registerControl(t))}_checkAllValuesPresent(t){this._forEachChild((e,n)=>{if(void 0===t[n])throw new Error(`Must supply a value for form control at index: ${n}.`)})}_allControlsDisabled(){for(const t of this.controls)if(t.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(t){t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const fg={provide:Qf,useExisting:rt(()=>mg)},gg=(()=>Promise.resolve(null))();let mg=(()=>{class t extends Qf{constructor(t,e,n,r){super(),this.control=new hg,this._registered=!1,this.update=new Ga,this._parent=t,this._setValidators(e),this._setAsyncValidators(n),this.valueAccessor=function(t,e){if(!e)return null;let n,r,s;return Array.isArray(e),e.forEach(t=>{t.constructor===Mf?n=t:Object.getPrototypeOf(t.constructor)===Pf?r=t:s=t}),s||r||n||null}(0,r)}ngOnChanges(t){this._checkForErrors(),this._registered||this._setUpControl(),"isDisabled"in t&&this._updateDisabled(t),function(t,e){if(!t.hasOwnProperty("model"))return!1;const n=t.model;return!!n.isFirstChange()||!Object.is(e,n.currentValue)}(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._parent?[...this._parent.path,this.name]:[this.name]}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){var t,e;(function(t,e,n){const r=function(t){return t._rawValidators}(t);null!==e.validator?t.setValidators(qf(r,e.validator)):"function"==typeof r&&t.setValidators([r]);const s=function(t){return t._rawAsyncValidators}(t);null!==e.asyncValidator?t.setAsyncValidators(qf(s,e.asyncValidator)):"function"==typeof s&&t.setAsyncValidators([s]);{const n=()=>t.updateValueAndValidity();Jf(e._rawValidators,n),Jf(e._rawAsyncValidators,n)}})(t=this.control,e=this),e.valueAccessor.writeValue(t.value),function(t,e){e.valueAccessor.registerOnChange(n=>{t._pendingValue=n,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&Xf(t,e)})}(t,e),function(t,e){const n=(t,n)=>{e.valueAccessor.writeValue(t),n&&e.viewToModelUpdate(t)};t.registerOnChange(n),e._registerOnDestroy(()=>{t._unregisterOnChange(n)})}(t,e),function(t,e){e.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&Xf(t,e),"submit"!==t.updateOn&&t.markAsTouched()})}(t,e),function(t,e){if(e.valueAccessor.setDisabledState){const n=t=>{e.valueAccessor.setDisabledState(t)};t.registerOnDisabledChange(n),e._registerOnDestroy(()=>{t._unregisterOnDisabledChange(n)})}}(t,e),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(t){gg.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1})})}_updateDisabled(t){const e=t.isDisabled.currentValue,n=""===e||e&&"false"!==e;gg.then(()=>{n&&!this.control.disabled?this.control.disable():!n&&this.control.disabled&&this.control.enable()})}}return t.\u0275fac=function(e){return new(e||t)(Mi(Zf,9),Mi(Vf,10),Mi(Ff,10),Mi(Df,10))},t.\u0275dir=Zt({type:t,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:["disabled","isDisabled"],model:["ngModel","model"],options:["ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[jo([fg]),vi,le]}),t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const yg={provide:Df,useExisting:rt(()=>bg),multi:!0};let bg=(()=>{class t extends Pf{constructor(t,e){super(),this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)}registerOnChange(t){this.onChange=e=>{t(""==e?null:parseFloat(e))}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}}return t.\u0275fac=function(e){return new(e||t)(Mi(Go),Mi(Ho))},t.\u0275dir=Zt({type:t,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(t,e){1&t&&Gi("input",function(t){return e.onChange(t.target.value)})("blur",function(){return e.onTouched()})},features:[jo([yg]),vi]}),t})(),_g=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=qt({type:t}),t.\u0275inj=ht({}),t})(),vg=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=qt({type:t}),t.\u0275inj=ht({imports:[[_g]]}),t})(),wg=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=qt({type:t}),t.\u0275inj=ht({imports:[vg]}),t})();
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const Cg=new Bn("config"),Sg=new Bn("NEW_CONFIG"),xg=new Bn("INITIAL_CONFIG"),kg={suffix:"",prefix:"",thousandSeparator:" ",decimalMarker:".",clearIfNotMatch:!1,showTemplate:!1,showMaskTyped:!1,placeHolderCharacter:"_",dropSpecialCharacters:!0,hiddenInput:void 0,shownMaskExpression:"",separatorLimit:"",allowNegativeNumbers:!1,validation:!0,specialCharacters:["-","/","(",")",".",":"," ","+",",","@","[","]",'"',"'"],leadZeroDateTime:!1,patterns:{0:{pattern:new RegExp("\\d")},9:{pattern:new RegExp("\\d"),optional:!0},X:{pattern:new RegExp("\\d"),symbol:"*"},A:{pattern:new RegExp("[a-zA-Z0-9]")},S:{pattern:new RegExp("[a-zA-Z]")},d:{pattern:new RegExp("\\d")},m:{pattern:new RegExp("\\d")},M:{pattern:new RegExp("\\d")},H:{pattern:new RegExp("\\d")},h:{pattern:new RegExp("\\d")},s:{pattern:new RegExp("\\d")}}};let Eg=(()=>{class t{constructor(t){this._config=t,this.maskExpression="",this.actualValue="",this.shownMaskExpression="",this._formatWithSeparators=(t,e,n,r)=>{const s=t.split(n),i=s.length>1?`${n}${s[1]}`:"";let o=s[0];const a=this.separatorLimit.replace(/\s/g,"");a&&+a&&(o="-"===o[0]?`-${o.slice(1,o.length).slice(0,a.length)}`:o.slice(0,a.length));const l=/(\d+)(\d{3})/;for(;e&&l.test(o);)o=o.replace(l,"$1"+e+"$2");return void 0===r?o+i:0===r?o:o+i.substr(0,r+1)},this.percentage=t=>Number(t)>=0&&Number(t)<=100,this.getPrecision=t=>{const e=t.split(".");return e.length>1?Number(e[e.length-1]):1/0},this.checkAndRemoveSuffix=t=>{var e,n,r;for(let s=(null===(e=this.suffix)||void 0===e?void 0:e.length)-1;s>=0;s--){const e=this.suffix.substr(s,null===(n=this.suffix)||void 0===n?void 0:n.length);if(t.includes(e)&&(s-1<0||!t.includes(this.suffix.substr(s-1,null===(r=this.suffix)||void 0===r?void 0:r.length))))return t.replace(e,"")}return t},this.checkInputPrecision=(t,e,n)=>{if(e<1/0){const r=new RegExp(this._charToRegExpExpression(n)+`\\d{${e}}.*$`),s=t.match(r);s&&s[0].length-1>e&&(t=t.substring(0,t.length-(s[0].length-1-e))),0===e&&t.endsWith(n)&&(t=t.substring(0,t.length-1))}return t},this._shift=new Set,this.clearIfNotMatch=this._config.clearIfNotMatch,this.dropSpecialCharacters=this._config.dropSpecialCharacters,this.maskSpecialCharacters=this._config.specialCharacters,this.maskAvailablePatterns=this._config.patterns,this.prefix=this._config.prefix,this.suffix=this._config.suffix,this.thousandSeparator=this._config.thousandSeparator,this.decimalMarker=this._config.decimalMarker,this.hiddenInput=this._config.hiddenInput,this.showMaskTyped=this._config.showMaskTyped,this.placeHolderCharacter=this._config.placeHolderCharacter,this.validation=this._config.validation,this.separatorLimit=this._config.separatorLimit,this.allowNegativeNumbers=this._config.allowNegativeNumbers,this.leadZeroDateTime=this._config.leadZeroDateTime}applyMaskWithPattern(t,e){const[n,r]=e;return this.customPattern=r,this.applyMask(t,n)}applyMask(t,e,n=0,r=!1,s=!1,i=(()=>{})){if(null==t||void 0===e)return"";let o=0,a="",l=!1,c=!1,u=1,h=!1;t.slice(0,this.prefix.length)===this.prefix&&(t=t.slice(this.prefix.length,t.length)),this.suffix&&(null==t?void 0:t.length)>0&&(t=this.checkAndRemoveSuffix(t));const d=t.toString().split("");"IP"===e&&(this.ipError=!!(d.filter(t=>"."===t).length<3&&d.length<7),e="099.099.099.099");const p=[];for(let b=0;b11?"00.000.000/0000-00":"000.000.000-00"),e.startsWith("percent")){if(t.match("[a-z]|[A-Z]")||t.match(/[-!$%^&*()_+|~=`{}\[\]:";'<>?,\/.]/)){t=this._stripToDecimal(t);const n=this.getPrecision(e);t=this.checkInputPrecision(t,n,this.decimalMarker)}if(t.indexOf(".")>0&&!this.percentage(t.substring(0,t.indexOf(".")))){const e=t.substring(0,t.indexOf(".")-1);t=`${e}${t.substring(t.indexOf("."),t.length)}`}a=this.percentage(t)?t:t.substring(0,t.length-1)}else if(e.startsWith("separator")){(t.match("[w\u0430-\u044f\u0410-\u042f]")||t.match("[\u0401\u0451\u0410-\u044f]")||t.match("[a-z]|[A-Z]")||t.match(/[-@#!$%\\^&*()_\xa3\xac'+|~=`{}\[\]:";<>.?\/]/)||t.match("[^A-Za-z0-9,]"))&&(t=this._stripToDecimal(t)),t=t.length>1&&"0"===t[0]&&t[1]!==this.decimalMarker?t.slice(1,t.length):t;const r=this._charToRegExpExpression(this.thousandSeparator),s=this._charToRegExpExpression(this.decimalMarker),i='@#!$%^&*()_+|~=`{}\\[\\]:\\s,\\.";<>?\\/'.replace(r,"").replace(s,""),o=new RegExp("["+i+"]");t.match(o)&&(t=t.substring(0,t.length-1));const l=this.getPrecision(e),h=(t=this.checkInputPrecision(t,l,this.decimalMarker)).replace(new RegExp(r,"g"),"");a=this._formatWithSeparators(h,this.thousandSeparator,this.decimalMarker,l);const d=a.indexOf(",")-t.indexOf(","),p=a.length-t.length;if(p>0&&","!==a[n]){c=!0;let t=0;do{this._shift.add(n+t),t++}while(t