diff --git a/cmd/skywire-cli/cliuptime/cliuptime.go b/cmd/skywire-cli/cliuptime/cliuptime.go index 5137560fdb..c277f58135 100644 --- a/cmd/skywire-cli/cliuptime/cliuptime.go +++ b/cmd/skywire-cli/cliuptime/cliuptime.go @@ -22,6 +22,7 @@ import ( "encoding/hex" "encoding/json" "fmt" + "math/rand" "net/url" "os" "path/filepath" @@ -170,6 +171,8 @@ func newGraphCmd(cfg Config) *cobra.Command { cacheDir string cacheAge int dr dateRange + shuffle bool + shuffleSeed int64 ) cmd := &cobra.Command{ Use: "graph", @@ -191,17 +194,35 @@ and --per-day modes; --hours ignores them.`, fatal(c, err) } filtered := applyFilters(entries, onlineOnly, pkFilter, versionEq, minVersion, 0) + // --shuffle: render in random row order. Useful for the + // "is the visual structure I'm seeing PK-correlated?" test + // — if banding patterns travel with the rows under shuffle, + // they're real visor-uptime patterns; if they break apart, + // the eye was just chunking runs in a high-density set. + if shuffle && len(filtered) > 1 { + seed := shuffleSeed + if seed == 0 { + seed = time.Now().UnixNano() + } + rng := rand.New(rand.NewSource(seed)) //nolint:gosec // not a security boundary + rng.Shuffle(len(filtered), func(i, j int) { + filtered[i], filtered[j] = filtered[j], filtered[i] + }) + if verbose { + fmt.Fprintf(c.ErrOrStderr(), "# shuffled order, seed=%d\n", seed) //nolint:errcheck,gosec + } + } if jsonOut { _ = json.NewEncoder(os.Stdout).Encode(filtered) //nolint:errcheck,gosec return } switch { case hoursBack > 0: - printRollingTimelines(filtered, hoursBack, verbose) + printRollingTimelines(filtered, hoursBack, verbose, shuffle) case perDay: - printTimelines(filtered, dr, verbose) + printTimelines(filtered, dr, verbose, shuffle) default: - printSingleLineTimelines(filtered, dr, verbose) + printSingleLineTimelines(filtered, dr, verbose, shuffle) } }, } @@ -223,6 +244,8 @@ and --per-day modes; --hours ignores them.`, cmd.Flags().DurationVar(&timeout, "timeout", 30*time.Second, "HTTP timeout") cmd.Flags().StringVar(&cacheDir, "cache-dir", defaultCacheDir(cfg.DefaultURL), "cache directory (\"\" disables cache)") cmd.Flags().IntVarP(&cacheAge, "cache-age", "m", 5, "re-fetch if cache is older than N minutes (0 disables)") + cmd.Flags().BoolVar(&shuffle, "shuffle", false, "render rows in random order (test: do visual banding patterns travel with the rows or with PK-sort?)") + cmd.Flags().Int64Var(&shuffleSeed, "shuffle-seed", 0, "seed for --shuffle; 0 = time-based (different every run)") clirpc.RegisterFetchFlags(cmd) // Graph's default date range differs from table's: the user // typically wants the full available history when drawing a @@ -477,7 +500,7 @@ func printVersions(entries []uptimestats.VisorSummary) { // printTimelines renders v3 bitmaps with one row per day per visor // (aka --per-day). Verbose prepends a per-visor header line with // version + state; non-verbose just prints date + blocks + pct. -func printTimelines(entries []uptimestats.VisorSummary, dr dateRange, verbose bool) { +func printTimelines(entries []uptimestats.VisorSummary, dr dateRange, verbose, preserveOrder bool) { if len(entries) == 0 { return } @@ -486,7 +509,10 @@ func printTimelines(entries []uptimestats.VisorSummary, dr dateRange, verbose bo for _, d := range dates { dateSet[d] = struct{}{} } - sorted := sortByPK(entries) + sorted := entries + if !preserveOrder { + sorted = sortByPK(entries) + } first := true for _, e := range sorted { @@ -532,7 +558,7 @@ func printTimelines(entries []uptimestats.VisorSummary, dr dateRange, verbose bo // printSingleLineTimelines is the default `graph` output: each visor // on exactly one line as " ". Verbose adds a // range header line above. -func printSingleLineTimelines(entries []uptimestats.VisorSummary, dr dateRange, verbose bool) { +func printSingleLineTimelines(entries []uptimestats.VisorSummary, dr dateRange, verbose, preserveOrder bool) { if len(entries) == 0 { return } @@ -540,7 +566,10 @@ func printSingleLineTimelines(entries []uptimestats.VisorSummary, dr dateRange, if len(dates) == 0 { return } - sorted := sortByPK(entries) + sorted := entries + if !preserveOrder { + sorted = sortByPK(entries) + } // Build all bars first so we can compute the global leading- // space trim. When uptime tracking was deployed partway through @@ -612,13 +641,16 @@ func printSingleLineTimelines(entries []uptimestats.VisorSummary, dr dateRange, // printRollingTimelines draws the last N hours ending at now as one // bar per visor. Verbose adds a tick-label row above; non-verbose is // strictly ` ` to stay grep-friendly. -func printRollingTimelines(entries []uptimestats.VisorSummary, hoursBack int, verbose bool) { +func printRollingTimelines(entries []uptimestats.VisorSummary, hoursBack int, verbose, preserveOrder bool) { if len(entries) == 0 || hoursBack <= 0 { return } now := time.Now().UTC() start := now.Add(-time.Duration(hoursBack) * time.Hour) - sorted := sortByPK(entries) + sorted := entries + if !preserveOrder { + sorted = sortByPK(entries) + } if verbose { fmt.Printf("# last %dh ending %s (tick labels below)\n", diff --git a/cmd/skywire-cli/commands/got/got.go b/cmd/skywire-cli/commands/got/got.go index 5588b1a33d..8240ff4b93 100644 --- a/cmd/skywire-cli/commands/got/got.go +++ b/cmd/skywire-cli/commands/got/got.go @@ -56,14 +56,21 @@ func init() { // RootCmd is the got command, defaults to download behavior. var RootCmd = &cobra.Command{ Use: "got", - Short: "HTTP client with concurrent downloads", - Long: `HTTP client utility with concurrent chunked downloads (RFC 7233), + Short: "HTTP client with concurrent downloads (also speaks skynet:// and dmsg://)", + Long: `HTTP client with concurrent chunked downloads (RFC 7233), SOCKS5 proxy support, and general-purpose HTTP requests. - Default (no subcommand): concurrent download - got dl concurrent chunked download - got req general HTTP request - got head HEAD request (show headers)`, +URL schemes: + http://, https:// standard HTTP, with chunked range downloads + skynet://:/path routed through the local visor (SkynetHTTP RPC) + dmsg://:/path routed through the local visor (DmsgHTTP RPC) + +Subcommands: + got dl chunked download (HTTP); single GET (skywire) + got req general request, any method + got head HEAD (HTTP) / GET-headers-only (skywire) + +Default (no subcommand) is download.`, Args: cobra.MinimumNArgs(1), Run: func(cmd *cobra.Command, args []string) { // Default behavior: download @@ -73,11 +80,30 @@ SOCKS5 proxy support, and general-purpose HTTP requests. var dlCmd = &cobra.Command{ Use: "dl [URL...]", - Short: "Download files with concurrent chunks", - Long: `Download files using concurrent chunked HTTP range requests (RFC 7233). -Falls back to single-stream download when the server doesn't support ranges.`, + Short: "Download files (HTTP chunked, or single GET over skynet/dmsg)", + Long: `Download via HTTP using concurrent chunked range requests (RFC 7233), +falling back to single-stream when the server doesn't support ranges. + +skynet:// and dmsg:// URLs are routed through the local visor's +SkynetHTTP / DmsgHTTP RPC and complete in a single GET (no chunking).`, Args: cobra.MinimumNArgs(1), - Run: func(_ *cobra.Command, args []string) { + Run: func(cmd *cobra.Command, args []string) { + // Skywire URLs go through the visor RPC. Process them first so + // we don't spin up an HTTP client for an http-only flow. + var httpURLs []string + for _, rawURL := range args { + if isSkywireURL(rawURL) { + if err := downloadSkywire(cmd, rawURL); err != nil { + fatal(err) + } + continue + } + httpURLs = append(httpURLs, rawURL) + } + if len(httpURLs) == 0 { + return + } + g, err := newGot() if err != nil { fatal(err) @@ -90,7 +116,7 @@ Falls back to single-stream download when the server doesn't support ranges.`, g.ProgressFunc = progressFunc() - for _, rawURL := range args { + for _, rawURL := range httpURLs { url, err := got.NormalizeURL(rawURL) if err != nil { fatal(err) @@ -118,18 +144,29 @@ Falls back to single-stream download when the server doesn't support ranges.`, var reqCmd = &cobra.Command{ Use: "req ", - Short: "Perform an HTTP request", + Short: "Perform an HTTP request (also accepts skynet:// and dmsg://)", Long: `Perform a general HTTP request (GET, POST, PUT, DELETE, PATCH, etc). +URLs starting with skynet:// or dmsg:// are routed through the local +visor's SkynetHTTP / DmsgHTTP RPC. Examples: got req GET https://example.com/api/data got req POST https://example.com/api -D '{"key":"value"}' -H "Content-Type: application/json" - got req PUT https://example.com/api -D @payload.json`, + got req PUT https://example.com/api -D @payload.json + got req GET skynet://02abc.../health + got req POST dmsg://02abc.../api -D '{"k":"v"}'`, Args: cobra.ExactArgs(2), - Run: func(_ *cobra.Command, args []string) { + Run: func(cmd *cobra.Command, args []string) { method := strings.ToUpper(args[0]) rawURL := args[1] + if isSkywireURL(rawURL) { + if err := requestSkywireCmd(cmd, method, rawURL); err != nil { + fatal(err) + } + return + } + url, err := got.NormalizeURL(rawURL) if err != nil { fatal(err) @@ -187,9 +224,17 @@ Examples: var headCmd = &cobra.Command{ Use: "head ", - Short: "Show response headers (HEAD request)", + Short: "Show response headers (HEAD on http; GET-headers on skynet/dmsg)", Args: cobra.ExactArgs(1), - Run: func(_ *cobra.Command, args []string) { + Run: func(cmd *cobra.Command, args []string) { + if isSkywireURL(args[0]) { + // Visor RPC has no HEAD; we issue GET and only print + // headers, discarding the body. + if err := headSkywire(cmd, args[0]); err != nil { + fatal(err) + } + return + } url, err := got.NormalizeURL(args[0]) if err != nil { fatal(err) diff --git a/cmd/skywire-cli/commands/got/got_skywire.go b/cmd/skywire-cli/commands/got/got_skywire.go new file mode 100644 index 0000000000..fd09fa401f --- /dev/null +++ b/cmd/skywire-cli/commands/got/got_skywire.go @@ -0,0 +1,310 @@ +// Package cligot got_skywire.go — skynet:// and dmsg:// URL handling. +// +// `got` accepts http(s) URLs natively (chunked downloads, SOCKS5 +// proxy support) and additionally accepts skynet://:/path +// and dmsg://:/path. The skywire schemes are routed +// through the local visor's RPC (SkynetHTTP / DmsgHTTP), so they +// require a running visor on the configured RPC address; the +// HTTP path runs without one. Falls back to no chunking on the +// skywire side — the visor RPC returns the full body in a single +// response, so range-based concurrency doesn't apply. +package cligot + +import ( + "context" + "fmt" + "io" + "net" + "net/http" + "os" + "path/filepath" + "strconv" + "strings" + + "github.com/spf13/cobra" + + clirpc "github.com/skycoin/skywire/cmd/skywire-cli/commands/rpc" + "github.com/skycoin/skywire/pkg/cipher" + "github.com/skycoin/skywire/pkg/visor" +) + +// isSkywireURL reports whether the URL uses one of the visor-routed +// schemes (skynet:// or dmsg://). Trims whitespace defensively so +// shell-quoted args with stray spaces still match. +func isSkywireURL(rawURL string) bool { + u := strings.TrimSpace(rawURL) + return strings.HasPrefix(u, "skynet://") || strings.HasPrefix(u, "dmsg://") +} + +// skywireTarget is the parsed form of a skynet:// or dmsg:// URL. +// Path always starts with "/" (defaulted when the URL has no path). +type skywireTarget struct { + scheme string + pk cipher.PubKey + port uint16 + path string +} + +// parseSkywireURL splits a skynet:// or dmsg:// URL into its parts. +// Accepts skynet://:/path, skynet:///path (port 80 +// default), with an optional ".skynet"/".dmsg" host suffix that +// some users carry over from the address-bar form. +func parseSkywireURL(rawURL string) (skywireTarget, error) { + rawURL = strings.TrimSpace(rawURL) + var scheme string + switch { + case strings.HasPrefix(rawURL, "skynet://"): + scheme = "skynet" + rawURL = strings.TrimPrefix(rawURL, "skynet://") + case strings.HasPrefix(rawURL, "dmsg://"): + scheme = "dmsg" + rawURL = strings.TrimPrefix(rawURL, "dmsg://") + default: + return skywireTarget{}, fmt.Errorf("expected skynet:// or dmsg:// URL") + } + + path := "/" + if idx := strings.Index(rawURL, "/"); idx >= 0 { + path = rawURL[idx:] + rawURL = rawURL[:idx] + } + + host := rawURL + port := uint16(80) + if h, p, err := net.SplitHostPort(rawURL); err == nil { + host = h + n, err := strconv.ParseUint(p, 10, 16) + if err != nil { + return skywireTarget{}, fmt.Errorf("invalid port: %w", err) + } + port = uint16(n) + } + host = strings.TrimSuffix(strings.TrimSuffix(host, ".skynet"), ".dmsg") + + var pk cipher.PubKey + if err := pk.Set(host); err != nil { + return skywireTarget{}, fmt.Errorf("invalid public key %q: %w", host, err) + } + return skywireTarget{scheme: scheme, pk: pk, port: port, path: path}, nil +} + +// skywireResponse is the unified response shape from either RPC. +type skywireResponse struct { + statusCode int + status string + header map[string]string + body []byte +} + +// requestSkywire issues the HTTP request through the visor's +// SkynetHTTP / DmsgHTTP RPC, depending on the target scheme. +func requestSkywire(cmd *cobra.Command, target skywireTarget, method string, hdr map[string]string, body []byte) (*skywireResponse, error) { + if method == "" { + method = http.MethodGet + } + rpcClient, err := clirpc.Client(cmd.Flags()) + if err != nil { + return nil, fmt.Errorf("RPC connection failed; is skywire running?: %w", err) + } + + switch target.scheme { + case "skynet": + req := visor.SkynetHTTPRequest{ + PK: target.pk, + Port: target.port, + Path: target.path, + Method: method, + Header: hdr, + Body: body, + } + resp, err := rpcClient.SkynetHTTP(req) + if err != nil { + return nil, fmt.Errorf("skynet request failed: %w", err) + } + return &skywireResponse{ + statusCode: resp.StatusCode, + status: resp.Status, + header: resp.Header, + body: resp.Body, + }, nil + case "dmsg": + // DmsgHTTP wants the full URL string (it parses the host:port + // internally), unlike SkynetHTTP which takes pk+port directly. + urlStr := fmt.Sprintf("dmsg://%s:%d%s", target.pk.String(), target.port, target.path) + req := visor.DmsgHTTPRequest{ + URL: urlStr, + Method: method, + Header: hdr, + Body: body, + } + resp, err := rpcClient.DmsgHTTP(req) + if err != nil { + return nil, fmt.Errorf("dmsg request failed: %w", err) + } + return &skywireResponse{ + statusCode: resp.StatusCode, + status: resp.Status, + header: resp.Header, + body: resp.Body, + }, nil + default: + return nil, fmt.Errorf("unsupported scheme: %s", target.scheme) + } +} + +// downloadSkywire fetches the URL via the visor RPC and writes the +// response body to a file or stdout. Mirrors the HTTP `dl` UX: -o +// names the output file, otherwise derive from the URL path; "-" +// writes to stdout. No chunking — the RPC returns the full body +// in one response. +func downloadSkywire(cmd *cobra.Command, rawURL string) error { + target, err := parseSkywireURL(rawURL) + if err != nil { + return err + } + + hdrs, herr := buildHeaderMap(headers) + if herr != nil { + return herr + } + + resp, err := requestSkywire(cmd, target, http.MethodGet, hdrs, nil) + if err != nil { + return err + } + if resp.statusCode >= 400 { + fmt.Fprintf(os.Stderr, "%s\n", resp.status) + } + + dest := output + if dest == "" { + dest = filepath.Base(target.path) + if dest == "" || dest == "." || dest == "/" { + dest = target.pk.String() + ".out" + } + if dir != "" { + dest = filepath.Join(dir, dest) + } + } + + if dest == "-" { + if _, err := os.Stdout.Write(resp.body); err != nil { + return err + } + return nil + } + if err := os.WriteFile(dest, resp.body, 0o600); err != nil { + return fmt.Errorf("write %s: %w", dest, err) + } + fmt.Fprintf(os.Stderr, "%s\nSaved to %s (%d bytes)\n", resp.status, dest, len(resp.body)) + return nil +} + +// requestSkywireCmd is the skywire equivalent of `got req`. Reads +// the body the same way (string, or @filename), supports custom +// headers, writes the response body to stdout or -o. +func requestSkywireCmd(cmd *cobra.Command, method, rawURL string) error { + target, err := parseSkywireURL(rawURL) + if err != nil { + return err + } + + hdrs, herr := buildHeaderMap(headers) + if herr != nil { + return herr + } + + var bodyBytes []byte + if data != "" { + body, err := getBodyReader(data) + if err != nil { + return err + } + defer body.Close() //nolint:errcheck + bodyBytes, err = io.ReadAll(body) + if err != nil { + return fmt.Errorf("read body: %w", err) + } + } + + resp, err := requestSkywire(cmd, target, strings.ToUpper(method), hdrs, bodyBytes) + if err != nil { + return err + } + + if verbose { + fmt.Fprintf(os.Stderr, "%s\n", resp.status) + for k, v := range resp.header { + fmt.Fprintf(os.Stderr, "%s: %s\n", k, v) + } + fmt.Fprintln(os.Stderr) + } + + out := io.Writer(os.Stdout) + if output != "" { + f, err := os.Create(output) //nolint:gosec + if err != nil { + return err + } + defer f.Close() //nolint:errcheck + out = f + } + if _, err := out.Write(resp.body); err != nil { + return err + } + if resp.statusCode >= 400 { + os.Exit(1) + } + return nil +} + +// headSkywire emulates a HEAD request — the visor RPC has no HEAD +// method, so we issue a GET and only print headers. The response +// body is discarded. Good enough for "what does this endpoint say +// about itself" use cases. +func headSkywire(cmd *cobra.Command, rawURL string) error { + target, err := parseSkywireURL(rawURL) + if err != nil { + return err + } + + hdrs, herr := buildHeaderMap(headers) + if herr != nil { + return herr + } + + resp, err := requestSkywire(cmd, target, http.MethodGet, hdrs, nil) + if err != nil { + return err + } + fmt.Printf("%s\n", resp.status) + for k, v := range resp.header { + fmt.Printf("%s: %s\n", k, v) + } + return nil +} + +// buildHeaderMap converts the "Key: Value" string slice (-H form) +// into the map[string]string the visor RPCs expect. +func buildHeaderMap(raw []string) (map[string]string, error) { + if len(raw) == 0 { + return nil, nil + } + out := make(map[string]string, len(raw)) + for _, h := range raw { + idx := strings.Index(h, ":") + if idx < 0 { + return nil, fmt.Errorf("invalid header %q (expected Key: Value)", h) + } + k := strings.TrimSpace(h[:idx]) + v := strings.TrimSpace(h[idx+1:]) + out[k] = v + } + return out, nil +} + +// _ exists so context import survives if all other usages get +// pruned by future edits — context was used by the visor curl's +// signal-cancellation pattern; reintroduce it if we wire ctx into +// requestSkywire (currently sync via net/rpc). +var _ = context.Background diff --git a/cmd/skywire-cli/commands/proxy/proxy.go b/cmd/skywire-cli/commands/proxy/proxy.go index 76e3aa215d..ac7b3c41ed 100644 --- a/cmd/skywire-cli/commands/proxy/proxy.go +++ b/cmd/skywire-cli/commands/proxy/proxy.go @@ -81,6 +81,7 @@ func init() { startCmd.Flags().BoolVar(&forceLocalRoutes, "local-route", false, "calculate routes locally instead of using route finder") startCmd.Flags().IntVar(&muxRoutes, "mux", 1, "parallel mux routes: 0=unlimited (every distinct path), 1=disabled (default), 2+=N routes") startCmd.Flags().StringVar(&muxMode, "mux-mode", "auto", "mux weight distribution mode: auto (latency-based) or equal (round-robin)") + startCmd.Flags().Uint16Var(&minHops, "min-hops", 1, "minimum routing hops for this session (1=no minimum). Set on the visor before app start; rolled back is not automatic — restart visor or re-run with --min-hops=1 to revert.") startCmd.Flags().BoolVarP(&startVerbose, "verbose", "v", false, "stream the visor's logs scoped to this app's session (app stdout + tagged router/mux/setup events); ctrl+c stops the proxy and exits") startCmd.Flags().StringVar(&startVerboseLevel, "verbose-level", "debug", "minimum log level when --verbose is set: trace|debug|info|warn|error") stopCmd.Flags().BoolVar(&allClients, "all", false, "stop all skysocks client") @@ -172,6 +173,21 @@ var startCmd = &cobra.Command{ } } + // --min-hops only fires when the user explicitly set it; we + // don't want to clobber visor's default just because the flag + // has a default value of 1. Reusing the existing global + // SetMinHops RPC (matches the SetMux*/SetExistingTPOnly idiom); + // changes the visor-wide setting, so a follow-up `proxy start + // --min-hops=1` is needed to revert. + if cmd.Flags().Changed("min-hops") { + if minHops == 0 { + internal.PrintFatalError(cmd.Flags(), fmt.Errorf("--min-hops=0 disables routing; pick at least 1")) + } + if err := rpcClient.SetMinHops(minHops); err != nil { + internal.PrintFatalError(cmd.Flags(), fmt.Errorf("failed to set min-hops: %w", err)) + } + } + // In --verbose mode the SignalContext-driven cleanup path needs // to print after the streamer has flushed its last entries, so // the os.Exit(1) is gated on a non-verbose run. Verbose mode diff --git a/cmd/skywire-cli/commands/proxy/root.go b/cmd/skywire-cli/commands/proxy/root.go index 0a43416712..f408802254 100644 --- a/cmd/skywire-cli/commands/proxy/root.go +++ b/cmd/skywire-cli/commands/proxy/root.go @@ -120,6 +120,7 @@ var ( forceLocalRoutes bool muxRoutes int muxMode string + minHops uint16 startVerbose bool startVerboseLevel string // multi-hop testing diff --git a/cmd/skywire-cli/commands/root.go b/cmd/skywire-cli/commands/root.go index 247b470444..7424d0b9c0 100644 --- a/cmd/skywire-cli/commands/root.go +++ b/cmd/skywire-cli/commands/root.go @@ -14,6 +14,7 @@ import ( clicompletion "github.com/skycoin/skywire/cmd/skywire-cli/commands/completion" cliconfig "github.com/skycoin/skywire/cmd/skywire-cli/commands/config" clidmsg "github.com/skycoin/skywire/cmd/skywire-cli/commands/dmsg" + cligot "github.com/skycoin/skywire/cmd/skywire-cli/commands/got" cligotop "github.com/skycoin/skywire/cmd/skywire-cli/commands/gotop" clilog "github.com/skycoin/skywire/cmd/skywire-cli/commands/log" climdisc "github.com/skycoin/skywire/cmd/skywire-cli/commands/mdisc" @@ -99,6 +100,7 @@ func init() { clisurvey.RootCmd.GroupID = groupRewards cliutil.RootCmd.GroupID = groupUtil + cligot.RootCmd.GroupID = groupUtil // Install flag-aware `help` command (supports -r/-t/-d). Covers // the case where `skywire cli` is invoked as a subcommand of the @@ -132,6 +134,7 @@ func init() { clipv.RootCmd, clisvc.RootCmd, cliutil.RootCmd, + cligot.RootCmd, // Top-level shortcuts: high-traffic verbs reachable without // the `visor` middle word. Long forms keep working at diff --git a/cmd/skywire-cli/commands/rpc/root.go b/cmd/skywire-cli/commands/rpc/root.go index 3a5c8c526b..6065b72917 100644 --- a/cmd/skywire-cli/commands/rpc/root.go +++ b/cmd/skywire-cli/commands/rpc/root.go @@ -161,6 +161,8 @@ func DmsgClient(cmdFlags *pflag.FlagSet) (visor.API, error) { } var ( + // NoCXO disables the CXO subscriber step in FetchServiceURL. + NoCXO bool // NoRPC disables the RPC step in FetchServiceURL. NoRPC bool // NoDmsg disables the direct DMSG HTTP step in FetchServiceURL. @@ -169,9 +171,11 @@ var ( NoHTTP bool ) -// RegisterFetchFlags adds --no-rpc, --no-dmsg, and --no-http flags to a command. -// Call this in init() for any command that uses FetchServiceURL. +// RegisterFetchFlags adds --no-cxo, --no-rpc, --no-dmsg, and --no-http +// flags to a command. Call this in init() for any command that uses +// FetchServiceURL. func RegisterFetchFlags(cmd *cobra.Command) { + cmd.Flags().BoolVar(&NoCXO, "no-cxo", false, "skip CXO subscriber-cache step") cmd.Flags().BoolVar(&NoRPC, "no-rpc", false, "skip visor RPC (DmsgHTTP) step") cmd.Flags().BoolVar(&NoDmsg, "no-dmsg", false, "skip direct DMSG HTTP step") cmd.Flags().BoolVar(&NoHTTP, "no-http", false, "skip direct HTTP fallback step") @@ -204,6 +208,124 @@ func dmsgURLForHTTP(httpURL string) string { return "" } +// cxoFeedForURL maps a deployment-service HTTP/DMSG URL to the CXO +// (feed, path) pair the visor's lazy-on-demand subscriber publishes +// for it. Returns ok=false when no CXO mirror is configured for the +// URL — the caller falls through to the existing RPC/DMSG/HTTP chain. +// +// Adding a new feed: register a publisher on the service side, a +// matching subscriber on the visor side, and add a row here. The +// CLI fetch chain picks it up automatically. +// +// Standalone uptime tracker (deployment.Prod.UptimeTracker / +// UptimeTrackerDmsg) is intentionally absent — the service is being +// deprecated; mirroring it over CXO would just be sunk effort. +func cxoFeedForURL(rawURL string) (feed, path string, ok bool) { + // TPD /metrics → "tpd-metrics" feed, "metrics/days/" path. + // Only the windows the publisher actually writes are CXO-eligible + // — see uptimePublishDays / metricsPublishDays in TPD. Anything + // else falls through to the network chain. + if isUnderBase(rawURL, deployment.Prod.TransportDiscovery, "/metrics") || + isUnderBase(rawURL, deployment.Prod.TransportDiscoveryDmsg, "/metrics") { + days := queryParamInt(rawURL, "days", -1) + if days == 1 || days == 7 || days == 30 { + return "tpd-metrics", fmt.Sprintf("metrics/days/%d", days), true + } + return "", "", false + } + + // TPD /uptimes → "tpd-uptime" feed. The publisher writes per-day + // windows; the CLI's graph commands hit /uptimes?v=v3 without an + // explicit days param so we read the 30d bucket which always + // contains today's data and trims older days client-side. + if isUnderBase(rawURL, deployment.Prod.TransportDiscovery, "/uptimes") || + isUnderBase(rawURL, deployment.Prod.TransportDiscoveryDmsg, "/uptimes") { + // Only v3 carries timeline bitmaps — v1/v2 callers don't + // gain anything from CXO over the existing chain since the + // payload is small. + if v := queryParam(rawURL, "v"); v == "v3" { + return "tpd-uptime", "uptimes/days/30", true + } + return "", "", false + } + return "", "", false +} + +// isUnderBase reports whether rawURL begins with `base + suffix`. +// Empty bases never match — keeps deployment configs without a DMSG +// equivalent from accidentally aliasing onto every URL. +func isUnderBase(rawURL, base, suffix string) bool { + if base == "" { + return false + } + target := base + suffix + return len(rawURL) >= len(target) && rawURL[:len(target)] == target +} + +// queryParam extracts a single query-string value by name. Returns +// "" when the URL has no query, when the key is absent, or when +// parsing fails. (Stdlib's url.Parse handles these edges; we just +// pick out the value.) +func queryParam(rawURL, name string) string { + idx := -1 + for i := 0; i < len(rawURL); i++ { + if rawURL[i] == '?' { + idx = i + break + } + } + if idx < 0 { + return "" + } + q := rawURL[idx+1:] + for _, kv := range splitOn(q, '&') { + eq := -1 + for i := 0; i < len(kv); i++ { + if kv[i] == '=' { + eq = i + break + } + } + if eq < 0 { + continue + } + if kv[:eq] == name { + return kv[eq+1:] + } + } + return "" +} + +// queryParamInt is queryParam parsed as an int with a fallback when +// missing or unparseable. +func queryParamInt(rawURL, name string, fallback int) int { + v := queryParam(rawURL, name) + if v == "" { + return fallback + } + n := 0 + for _, c := range v { + if c < '0' || c > '9' { + return fallback + } + n = n*10 + int(c-'0') + } + return n +} + +func splitOn(s string, sep byte) []string { + out := []string{} + last := 0 + for i := 0; i < len(s); i++ { + if s[i] == sep { + out = append(out, s[last:i]) + last = i + 1 + } + } + out = append(out, s[last:]) + return out +} + // fetchViaDmsgDirect creates ephemeral DMSG direct clients — one per DMSG server — // and uses a FallbackRoundTripper to try each until one reaches the target service. // This matches the pattern used by `skywire dmsg curl -B`: services connect to DMSG @@ -337,6 +459,32 @@ func FetchCachedServiceURL(cmdFlags *pflag.FlagSet, cachefile, thisurl string, c func FetchServiceURL(cmdFlags *pflag.FlagSet, url string) ([]byte, error) { var lastErr error + // Step 0: CXO subscriber cache. When the URL maps to a feed the + // visor already subscribes to, the cached payload is a local + // memory read — no DMSG round-trip, no service round-trip. Falls + // through silently on miss; the visor's lazy-on-demand + // connect-with-cooldown keeps repeated probes from costing more + // than the first one when the publisher is down. + if !NoCXO { + if feed, path, ok := cxoFeedForURL(url); ok { + if rpcClient, err := Client(cmdFlags); err == nil { + resp, err := rpcClient.FetchCXO(visor.FetchCXOArgs{Feed: feed, Path: path}) + if err == nil && resp != nil && resp.Hit && len(resp.Body) > 0 { + logger.Debugf("CXO hit for %s (feed=%s path=%s, root@%s)", + url, feed, path, resp.LastRootAt.Format(time.RFC3339)) + return resp.Body, nil + } + if err != nil { + logger.Debugf("CXO probe error for %s: %v", url, err) + } else if resp != nil { + logger.Debugf("CXO miss for %s: %s", url, resp.Reason) + } + } else { + logger.Debugf("CXO step skipped (no RPC client): %v", err) + } + } + } + // The visor's DmsgHTTP RPC parses req.Host as a dmsg.Addr (PK:port), // so hostname-based http:// URLs like http://dmsgd.skywire.skycoin.com // cannot be handled — they always fail with "invalid host address". diff --git a/cmd/skywire-cli/commands/skynet/curl.go b/cmd/skywire-cli/commands/skynet/curl.go deleted file mode 100644 index 775667e2db..0000000000 --- a/cmd/skywire-cli/commands/skynet/curl.go +++ /dev/null @@ -1,185 +0,0 @@ -// Package skynet curl.go — HTTP requests over skynet -package skynet - -import ( - "context" - "fmt" - "net" - "os" - "strconv" - "strings" - "time" - - "github.com/spf13/cobra" - - internal "github.com/skycoin/skywire/cmd/skywire-cli/cliutil" - clirpc "github.com/skycoin/skywire/cmd/skywire-cli/commands/rpc" - "github.com/skycoin/skywire/pkg/cipher" - "github.com/skycoin/skywire/pkg/cmdutil" - "github.com/skycoin/skywire/pkg/logging" - "github.com/skycoin/skywire/pkg/visor" -) - -var ( - curlData string - curlOutput string - curlVerbose bool - curlVLevel string -) - -func init() { - curlCmd.Flags().StringVarP(&curlData, "data", "d", "", "HTTP POST data") - curlCmd.Flags().StringVarP(&curlOutput, "out", "o", "", "output file path") - curlCmd.Flags().BoolVarP(&curlVerbose, "verbose", "v", false, "stream visor's router/transport logs to stderr while the request is in flight") - curlCmd.Flags().StringVar(&curlVLevel, "verbose-level", "debug", "minimum log level when --verbose is set: trace|debug|info|warn|error") - RootCmd.AddCommand(curlCmd) -} - -var curlCmd = &cobra.Command{ - Use: "curl ", - Short: "HTTP request over skynet", - Long: `Make HTTP requests over skynet routes. - -The visor establishes a route to the remote visor and sends the HTTP -request through the skynet forwarding server. - -URL format: - skynet://:/path - skynet:///path (port defaults to 80) - -Examples: - skywire cli skynet curl skynet://02abc.../health - skywire cli skynet curl skynet://02abc...:8000/api/ping - skywire cli skynet curl -d '{"key":"val"}' skynet://02abc.../endpoint`, - Args: cobra.ExactArgs(1), - Run: func(cmd *cobra.Command, args []string) { - target, err := parseSkynetURL(args[0]) - if err != nil { - internal.PrintFatalError(cmd.Flags(), err) - } - - rpcClient, err := clirpc.Client(cmd.Flags()) - if err != nil { - internal.PrintFatalError(cmd.Flags(), err) - } - - method := "GET" - var body []byte - if curlData != "" { - method = "POST" - body = []byte(curlData) - } - - ctx, cancel := cmdutil.SignalContext(context.Background(), logging.MustGetLogger("skynet-curl")) - defer cancel() - - // --verbose: subscribe to the visor's router/transport layer - // logs BEFORE issuing the RPC. The skynet stack reuses the - // same router as proxy/vpn, so the same module set surfaces - // route setup, mux setup, transport probe activity. Different - // from dmsg curl which scopes to dmsgC modules — skynet goes - // over routes, not direct dmsg. - var verboseStream *clirpc.VerboseStream - if curlVerbose { - vs, vErr := clirpc.OpenVerbose(ctx, clirpc.Addr, clirpc.VerboseFilter{ - Modules: []string{"router", "route_setup", "setup_node", "mux_setup", "transport_manager", "skynet"}, - Level: curlVLevel, - }) - if vErr != nil { - internal.PrintFatalError(cmd.Flags(), vErr) - } - verboseStream = vs - if err := vs.WaitSubscribed(ctx, 2*time.Second); err != nil && ctx.Err() != nil { - return - } - } - defer func() { - if verboseStream != nil { - verboseStream.Close() - } - }() - - fmt.Fprintf(os.Stderr, "Dialing %s:%d%s...\n", target.pk.String(), target.port, target.path) - - // Run RPC in a goroutine so SIGINT can interrupt the wait - // (net/rpc.Call ignores context); same pattern as dmsg curl. - type result struct { - resp *visor.SkynetHTTPResponse - err error - } - done := make(chan result, 1) - go func() { - r, e := rpcClient.SkynetHTTP(visor.SkynetHTTPRequest{ - PK: target.pk, - Port: target.port, - Path: target.path, - Method: method, - Body: body, - }) - done <- result{r, e} - }() - var resp *visor.SkynetHTTPResponse - select { - case <-ctx.Done(): - internal.PrintFatalError(cmd.Flags(), ctx.Err()) - case r := <-done: - resp, err = r.resp, r.err - } - if err != nil { - internal.PrintFatalError(cmd.Flags(), fmt.Errorf("skynet request failed: %w", err)) - } - - fmt.Fprintf(os.Stderr, "%s\n", resp.Status) - - if curlOutput != "" { - if err := os.WriteFile(curlOutput, resp.Body, 0o600); err != nil { //nolint:gosec - internal.PrintFatalError(cmd.Flags(), err) - } - fmt.Fprintf(os.Stderr, "Saved to %s (%d bytes)\n", curlOutput, len(resp.Body)) - } else { - os.Stdout.Write(resp.Body) //nolint:errcheck,gosec - fmt.Fprintln(os.Stderr) - } - }, -} - -type skynetTarget struct { - pk cipher.PubKey - port uint16 - path string -} - -func parseSkynetURL(rawURL string) (skynetTarget, error) { - u := rawURL - if strings.HasPrefix(u, "skynet://") { - u = strings.TrimPrefix(u, "skynet://") - } else if strings.HasPrefix(u, "http://") { - u = strings.TrimPrefix(u, "http://") - } - - path := "/" - if idx := strings.Index(u, "/"); idx >= 0 { - path = u[idx:] - u = u[:idx] - } - - host := u - port := uint16(80) - if h, p, err := net.SplitHostPort(u); err == nil { - host = h - n, err := strconv.ParseUint(p, 10, 16) - if err != nil { - return skynetTarget{}, fmt.Errorf("invalid port: %w", err) - } - port = uint16(n) - } - - host = strings.TrimSuffix(host, ".skynet") - - var pk cipher.PubKey - if err := pk.Set(host); err != nil { - return skynetTarget{}, fmt.Errorf("invalid public key %q: %w", host, err) - } - - return skynetTarget{pk: pk, port: port, path: path}, nil -} diff --git a/cmd/skywire-cli/commands/util/util.go b/cmd/skywire-cli/commands/util/util.go index ab4e0f7e93..885492d3cc 100644 --- a/cmd/skywire-cli/commands/util/util.go +++ b/cmd/skywire-cli/commands/util/util.go @@ -5,7 +5,6 @@ import ( "github.com/spf13/cobra" cliedit "github.com/skycoin/skywire/cmd/skywire-cli/commands/edit" - cligot "github.com/skycoin/skywire/cmd/skywire-cli/commands/got" clijq "github.com/skycoin/skywire/cmd/skywire-cli/commands/jq" ) @@ -17,7 +16,6 @@ func init() { RootCmd.AddCommand( clijq.RootCmd, cliedit.RootCmd, - cligot.RootCmd, staticServeCmd, ) } diff --git a/cmd/skywire-cli/commands/visor/info.go b/cmd/skywire-cli/commands/visor/info.go index 426b9359b6..3d82cbe6bc 100644 --- a/cmd/skywire-cli/commands/visor/info.go +++ b/cmd/skywire-cli/commands/visor/info.go @@ -171,6 +171,24 @@ var summaryCmd = &cobra.Command{ msg += fmt.Sprintf("Visor Version: %s\nConfig Version: %s\nUptime Tracker: %s\nTime Online: %f seconds\nBuild Tag: %s\n", summary.Overview.BuildInfo.Version, summary.ConfigVersion, summary.Health.ServicesHealth, summary.Uptime, summary.BuildTag) + // Last-24h rolling uptime per local-tier bitmap. Same source as + // the hvui's per-visor Uptime tab and `/stats/uptime` on the + // logserver — all read pkg/visor/stats — so the bar here is + // what the integrated tracker recorded for THIS visor, not the + // network-wide TPD aggregate. Best-effort: if the store isn't + // initialized (rare; e.g. partial startup) we skip the section. + if uptimeBars, uptimePcts, ok := localUptime24h(rpcClient); ok && len(uptimeBars) > 0 { + msg += "Local uptime (last 24h, hour blocks):\n" + for _, name := range []string{"process", "dmsg", "skynet"} { + bar, hasBar := uptimeBars[name] + if !hasBar { + continue + } + pct := uptimePcts[name] + msg += fmt.Sprintf(" %-7s %s %5.1f%%\n", name, bar, pct) + } + } + outputJSON := struct { PublicKey string `json:"public_key"` IsSymmetricNAT bool `json:"symmetric_nat"` @@ -371,6 +389,102 @@ var runtimeStatsCmd = &cobra.Command{ }, } +// localUptime24h fetches the visor's local tier bitmaps and folds +// the trailing 24 wall-clock hours into one row of 24 hourly density +// blocks per tier. Returns (bars, pcts, true) on success or (nil, +// nil, false) when the stats store isn't available — same shape and +// shading as `cli ut tpd graph` so an operator can eyeball the local +// view next to TPD's network-wide one without doing mental conversion. +func localUptime24h(rpc visor.API) (map[string]string, map[string]float64, bool) { + until := time.Now().UTC() + since := until.Add(-24 * time.Hour) + resp, err := rpc.LocalUptimeStats(visor.LocalUptimeArgs{Since: since, Until: until}) + if err != nil || resp == nil || len(resp.Tiers) == 0 { + return nil, nil, false + } + + const slotsPerHour = 12 // 5-minute slots + const totalHours = 24 + bars := make(map[string]string, len(resp.Tiers)) + pcts := make(map[string]float64, len(resp.Tiers)) + + // Build a flat slice of 288 slot characters covering the rolling + // window: yesterday's slots from `now`-onwards onward through + // today's slots up to `now`. Crossing the UTC midnight boundary + // is the only fiddly part — same composition logic the CLI's + // rolling-window mode uses, just inlined since pkg-level helpers + // aren't exported. + for tier, days := range resp.Tiers { + // Pull yesterday + today (if present) — those are the only + // dates a 24h window can touch. + todayKey := until.UTC().Format("2006-01-02") + yesterdayKey := until.UTC().Add(-24 * time.Hour).Format("2006-01-02") + todayAscii := days[todayKey] + yestAscii := days[yesterdayKey] + + nowSlot := until.UTC().Hour()*slotsPerHour + until.UTC().Minute()/5 + // Window starts (24h*12 = 288) slots before nowSlot. Negative + // indices wrap into yesterday's slot space. + var slots [288]byte + for i := 0; i < 288; i++ { + abs := nowSlot - 288 + i + var src string + if abs < 0 { + src = yestAscii + abs += 288 // map -1 → yesterday's slot 287, etc. + } else { + src = todayAscii + } + if abs >= 0 && abs < len(src) && src[abs] == '.' { + slots[i] = '.' + } else { + slots[i] = ' ' + } + } + + // Roll up into 24 hourly density blocks. + var b strings.Builder + var onlineSlots int + var totalSlotsKnown int + for h := 0; h < totalHours; h++ { + count := 0 + for s := 0; s < slotsPerHour; s++ { + idx := h*slotsPerHour + s + if slots[idx] == '.' { + count++ + } + } + onlineSlots += count + totalSlotsKnown += slotsPerHour + b.WriteString(shadeForCount(count)) + } + bars[tier] = b.String() + if totalSlotsKnown > 0 { + pcts[tier] = 100 * float64(onlineSlots) / float64(totalSlotsKnown) + } + } + return bars, pcts, true +} + +// shadeForCount maps an online-slot count (0–12) per hour to one of +// five density characters. Same thresholds + glyphs as +// cliuptime.shadeForCount so the visor-info bar reads identically +// next to a `cli ut tpd graph` output. +func shadeForCount(count int) string { + switch { + case count == 0: + return " " + case count <= 3: + return "░" + case count <= 6: + return "▒" + case count <= 9: + return "▓" + default: + return "█" + } +} + // formatARAddr renders one AR self-registration entry. // // SUDPH and STCPR populate the two address fields differently: diff --git a/cmd/svc/transport-discovery/commands/root.go b/cmd/svc/transport-discovery/commands/root.go index 6d1336e222..3a7eb6ba4f 100644 --- a/cmd/svc/transport-discovery/commands/root.go +++ b/cmd/svc/transport-discovery/commands/root.go @@ -370,6 +370,18 @@ Example: } else { defer pub.Close() //nolint:errcheck } + + // CXO uptime publisher: outbound feed mirroring the + // /uptimes?v=v3 response. Visors subscribe to TPD's PK + // on skyenv.DmsgTPDUptimeCXOPort and read the + // JSON-encoded []VisorSummary from "uptimes/days/". + // Drives the hvui Network Uptime tab without per-visor + // fan-out polling. + if pub, perr := api.StartUptimeCXOPublisher(ctx, tpdAPI, h.DmsgClient, sk, logger); perr != nil { + logger.WithError(perr).Error("Failed to start CXO uptime publisher, continuing without it") + } else { + defer pub.Close() //nolint:errcheck + } } else if enableCXO { logger.Warn("CXO requested but dmsg is not enabled (--mode=http); aggregator/publisher disabled") } diff --git a/docs/skywire_forwarding.md b/docs/skywire_forwarding.md index 3f5236f49e..c44fb7a976 100644 --- a/docs/skywire_forwarding.md +++ b/docs/skywire_forwarding.md @@ -95,13 +95,18 @@ Port 80 has three tiers of access control: - `/node-info`, `/visor.log`, `/debug/pprof` — survey whitelist - Website (everything else) — the served port's `--whitelist` -## Making HTTP Requests Over Skynet +## Making HTTP Requests Over Skynet / DMSG + +`skywire cli got` is a unified HTTP client that speaks `http://`, +`https://`, `skynet://` and `dmsg://`. The skywire schemes are +routed through the local visor's RPC. ```bash -skywire cli skynet curl skynet:///path -skywire cli skynet curl skynet://:/path -skywire cli skynet curl -d '{"key":"val"}' skynet:///endpoint -skywire cli skynet curl -o output.file skynet:///large-file +skywire cli got skynet:///path +skywire cli got skynet://:/path +skywire cli got dmsg://:/path +skywire cli got req POST skynet:///endpoint -D '{"key":"val"}' +skywire cli got dl skynet:///large-file -o output.file ``` ## Persistence diff --git a/pkg/skyenv/skyenv.go b/pkg/skyenv/skyenv.go index 87d49dd397..de5ec50909 100644 --- a/pkg/skyenv/skyenv.go +++ b/pkg/skyenv/skyenv.go @@ -53,6 +53,13 @@ const ( // metrics publisher is a separate feed in the opposite direction. DmsgTPDMetricsCXOPort uint16 = 51 + // DmsgTPDUptimeCXOPort is the DMSG port the TPD's CXO visor-uptime + // publisher listens on. Mirrors DmsgTPDMetricsCXOPort but for the + // network-wide visor-uptime feed (timeline + daily-percent shape + // of `GET /uptimes?v=v3`); kept on a distinct port so a subscriber + // can pick exactly the feed it wants without dragging in metrics. + DmsgTPDUptimeCXOPort uint16 = 52 + // DmsgDHTPort Listening port for the Kademlia DHT protocol. DmsgDHTPort uint16 = 100 diff --git a/pkg/transport-discovery/api/cxo_uptime_publisher.go b/pkg/transport-discovery/api/cxo_uptime_publisher.go new file mode 100644 index 0000000000..d7920bf5b1 --- /dev/null +++ b/pkg/transport-discovery/api/cxo_uptime_publisher.go @@ -0,0 +1,223 @@ +// Package api pkg/transport-discovery/api/cxo_uptime_publisher.go +// +// CXO publisher for the network-wide visor-uptime aggregate. Mirrors +// MetricsCXOPublisher (cxo_metrics_publisher.go) but produces the +// `GET /uptimes?v=v3` shape — `[]VisorSummary` with the per-day +// timeline strings — so subscribers (the hvui Network Uptime tab, +// reached through a visor's on-demand subscriber) get the exact +// online/offline intervals the integrated tracker recorded. +// +// Same content-addressing benefit as the metrics publisher: only +// the visors whose Daily/Timeline buckets actually changed since +// the last tick produce a Root delta, so the wire footprint scales +// with churn rather than fleet size. +package api + +import ( + "context" + "encoding/json" + "fmt" + "sync" + "time" + + "github.com/sirupsen/logrus" + + "github.com/skycoin/skywire/pkg/cipher" + "github.com/skycoin/skywire/pkg/cxo/treestore" + "github.com/skycoin/skywire/pkg/dmsg/dmsg" + "github.com/skycoin/skywire/pkg/logging" + "github.com/skycoin/skywire/pkg/skyenv" + "github.com/skycoin/skywire/pkg/transport-discovery/store" +) + +// uptimePublishDays mirrors metricsPublishDays — the windows the +// hvui's Network Uptime tab can pick from. Anything outside this set +// falls through to the existing HTTP/DMSG-HTTP path. +var uptimePublishDays = []int{1, 7, 30} + +// uptimePublishInterval is the recompute cadence. Same value as the +// metrics publisher (60s) — the tracker's underlying redis state +// refreshes on the visor heartbeat cycle (~90s) so faster ticks +// would just republish identical Roots. +const uptimePublishInterval = 60 * time.Second + +// UptimeCXOPublisher publishes `[]VisorSummary` (v3 shape) for each +// of uptimePublishDays at "uptimes/days/". Closed by Close. +type UptimeCXOPublisher struct { + api *API + pub *treestore.Publisher + log *logging.Logger + + cancel context.CancelFunc + done chan struct{} + + mu sync.Mutex + lastError error +} + +// StartUptimeCXOPublisher constructs a publisher backed by the given +// DMSG client and TPD secret key, then kicks off the recompute +// ticker. The publisher's allowlist is left open (any subscriber may +// read) — same access policy as `GET /uptimes`. +// +// Returns nil + error when the publisher can't be created (no DMSG +// client, listener bind failure, etc.); the caller should log and +// continue without it. Best-effort: the existing HTTP /uptimes +// route remains the source of truth. +func StartUptimeCXOPublisher(ctx context.Context, api *API, dmsgC *dmsg.Client, sk cipher.SecKey, logger logrus.FieldLogger) (*UptimeCXOPublisher, error) { + log := logging.MustGetLogger("tpd-cxo-uptime-pub") + + pub, err := treestore.NewWithDMSG(dmsgC, sk, treestore.PubConfig{ + Logger: log, + InMemoryDB: true, // recomputed from redis on each tick + DmsgPort: skyenv.DmsgTPDUptimeCXOPort, + }) + if err != nil { + return nil, err + } + pub.SetAllowlist(nil) // open feed + + pubCtx, cancel := context.WithCancel(ctx) + up := &UptimeCXOPublisher{ + api: api, + pub: pub, + log: log, + cancel: cancel, + done: make(chan struct{}), + } + if logger != nil { + logger.WithField("feed_pk", pub.Feed()).WithField("dmsg_port", skyenv.DmsgTPDUptimeCXOPort). + Info("CXO uptime publisher running") + } + go up.loop(pubCtx) + return up, nil +} + +// FeedPK returns the publisher's feed PK (TPD's own PK). Subscribers +// connect to this PK at port skyenv.DmsgTPDUptimeCXOPort. +func (u *UptimeCXOPublisher) FeedPK() cipher.PubKey { return u.pub.Feed() } + +// Close stops the ticker and tears down the publisher. +func (u *UptimeCXOPublisher) Close() error { + if u.cancel != nil { + u.cancel() + } + <-u.done + return u.pub.Close() +} + +func (u *UptimeCXOPublisher) loop(ctx context.Context) { + defer close(u.done) + + // Publish once immediately so a freshly-connected subscriber + // gets a snapshot without waiting a full tick. + u.publishOnce(ctx) + + t := time.NewTicker(uptimePublishInterval) + defer t.Stop() + + for { + select { + case <-ctx.Done(): + return + case <-t.C: + u.publishOnce(ctx) + } + } +} + +func (u *UptimeCXOPublisher) publishOnce(ctx context.Context) { + // The visor-uptime cache is independent of the day window — the + // "days" parameter is purely a client-side trim hint. We compute + // once and republish per-window so subscribers can request the + // shape they need without redoing the timeline work themselves. + full := u.api.getUptimesV2FromCache() + if full == nil { + full = []store.VisorSummary{} + } + now := time.Now().UTC() + + // Enrich every entry with timeline data once. Avoids redoing the + // Redis-backed daily-timeline lookups per window. + enriched := make([]store.VisorSummary, len(full)) + copy(enriched, full) + for i := range enriched { + enriched[i].Timeline = u.api.store.GetDailyTimeline(ctx, enriched[i].PK.Hex(), now) + } + + for _, days := range uptimePublishDays { + // Trim Daily and Timeline to the requested day window so the + // payload doesn't carry more than the subscriber asked for. + trimmed := trimSummariesToDays(enriched, days, now) + body, err := json.Marshal(trimmed) + if err != nil { + u.log.WithError(err).WithField("days", days).Warn("uptime marshal failed") + u.recordError(err) + continue + } + path := uptimePath(days) + if err := u.pub.Put(path, body); err != nil { + u.log.WithError(err).WithField("path", path).Warn("uptime publisher Put failed") + u.recordError(err) + continue + } + } +} + +func (u *UptimeCXOPublisher) recordError(err error) { + u.mu.Lock() + defer u.mu.Unlock() + u.lastError = err +} + +// LastError returns the most recent error encountered by the publish +// loop, or nil if the last tick succeeded for every window. +func (u *UptimeCXOPublisher) LastError() error { + u.mu.Lock() + defer u.mu.Unlock() + return u.lastError +} + +// UptimePath returns the TreeStore path for a given day window. +// Exported so visor-side subscribers don't have to duplicate the +// format string. +func UptimePath(days int) string { return uptimePath(days) } + +func uptimePath(days int) string { + return fmt.Sprintf("uptimes/days/%d", days) +} + +// trimSummariesToDays drops Daily and Timeline entries whose date +// is older than `days` UTC days before `now`. days <= 0 is treated +// as "no trim" — the full retention window leaks through. The cap +// stays inside the function so callers don't have to remember the +// uptimePublishDays max. +func trimSummariesToDays(in []store.VisorSummary, days int, now time.Time) []store.VisorSummary { + if days <= 0 { + return in + } + cutoff := now.AddDate(0, 0, -days).Format("2006-01-02") + out := make([]store.VisorSummary, len(in)) + for i, s := range in { + out[i] = s + if len(s.Daily) > 0 { + d := make(map[string]string, len(s.Daily)) + for k, v := range s.Daily { + if k >= cutoff { + d[k] = v + } + } + out[i].Daily = d + } + if len(s.Timeline) > 0 { + t := make(map[string]string, len(s.Timeline)) + for k, v := range s.Timeline { + if k >= cutoff { + t[k] = v + } + } + out[i].Timeline = t + } + } + return out +} diff --git a/pkg/visor/api.go b/pkg/visor/api.go index 7475ea4764..3249d97cf6 100644 --- a/pkg/visor/api.go +++ b/pkg/visor/api.go @@ -122,6 +122,10 @@ type API interface { SetIsPublic(isPublic bool) error GetIsPublic() bool GetRuntimeConfig() ([]byte, error) + SetRuntimeConfig(rawJSON []byte) error + LocalTransportStats() (*LocalTransportStatsResponse, error) + LocalUptimeStats(args LocalUptimeArgs) (*LocalUptimeResponse, error) + FetchCXO(args FetchCXOArgs) (*FetchCXOResult, error) GetConfigPath() (string, error) StartPublicAutoconnect() error StopPublicAutoconnect() error @@ -632,6 +636,32 @@ type SkynetHTTPResponse struct { Body []byte `json:"body,omitempty"` } +// FetchCXOArgs identifies which CXO feed + path the caller wants the +// visor to read from its lazy-on-demand subscriber cache. Feed names +// are stable strings the CLI's URL→feed mapping table emits; adding +// a new feed means adding a case to the visor's FetchCXO switch and +// a row to the mapping table — nothing in between needs to know. +type FetchCXOArgs struct { + // Feed is one of: "tpd-metrics", "tpd-uptime". (UT's standalone + // uptime tracker is intentionally absent — that service is being + // deprecated, so there's no point publishing it over CXO.) + Feed string `json:"feed"` + // Path is the TreeStore path inside the feed, e.g. + // "metrics/days/7" or "uptimes/days/30". + Path string `json:"path"` +} + +// FetchCXOResult is the visor's reply for a FetchCXO probe. Hit is +// true when the subscriber returned a cached payload; a miss carries +// a Reason string ("not ready", "cooling down", "unknown feed", …) +// so the CLI's debug log has something concrete to print. +type FetchCXOResult struct { + Hit bool `json:"hit"` + Body []byte `json:"body,omitempty"` + LastRootAt time.Time `json:"last_root_at,omitempty"` + Reason string `json:"reason,omitempty"` +} + // TPSHealthCheckArgs is empty input for health check. type TPSHealthCheckArgs struct{} diff --git a/pkg/visor/api_fetch_cxo.go b/pkg/visor/api_fetch_cxo.go new file mode 100644 index 0000000000..a55e1c694d --- /dev/null +++ b/pkg/visor/api_fetch_cxo.go @@ -0,0 +1,73 @@ +// Package visor pkg/visor/api_fetch_cxo.go +// +// FetchCXO routes a (feed, path) pair to the matching lazy-on-demand +// CXO subscriber and returns the cached payload — or a miss reason +// the CLI's fetch chain can decide what to do with. +// +// Adding a new feed: register a new (subscriber struct, ensure +// helper, Fetch helper) under pkg/visor/api_*_subscriber.go using +// the same lazy-on-demand pattern, then add a case to the switch +// below. The CLI side learns about it through its URL→feed mapping +// table; nothing in the RPC/marshal layer needs to change. +package visor + +import ( + "errors" +) + +// FetchCXO implements API. +func (v *Visor) FetchCXO(args FetchCXOArgs) (*FetchCXOResult, error) { + switch args.Feed { + case "tpd-metrics": + // Path is "metrics/days/" — the subscriber-side helper + // takes the int directly so the CLI can keep its mapping + // table feed-agnostic. + days := daysFromPath(args.Path, "metrics/days/") + if days <= 0 { + return &FetchCXOResult{Reason: "invalid path for tpd-metrics: " + args.Path}, nil + } + body, ts, err := v.FetchTransportMetricsCXO(days) + if err != nil { + if errors.Is(err, ErrTPDMetricsNotReady) { + return &FetchCXOResult{Reason: "tpd-metrics: cache miss"}, nil + } + return &FetchCXOResult{Reason: "tpd-metrics: " + err.Error()}, nil + } + return &FetchCXOResult{Hit: true, Body: body, LastRootAt: ts}, nil + + case "tpd-uptime": + days := daysFromPath(args.Path, "uptimes/days/") + if days <= 0 { + return &FetchCXOResult{Reason: "invalid path for tpd-uptime: " + args.Path}, nil + } + body, ts, err := v.FetchVisorUptimeCXO(days) + if err != nil { + if errors.Is(err, ErrTPDUptimeNotReady) { + return &FetchCXOResult{Reason: "tpd-uptime: cache miss"}, nil + } + return &FetchCXOResult{Reason: "tpd-uptime: " + err.Error()}, nil + } + return &FetchCXOResult{Hit: true, Body: body, LastRootAt: ts}, nil + + default: + return &FetchCXOResult{Reason: "unknown feed: " + args.Feed}, nil + } +} + +// daysFromPath extracts the trailing integer from a "N" +// path. Returns 0 on any parse miss — the FetchCXO switch treats +// that as an invalid path and reports back to the caller. +func daysFromPath(path, prefix string) int { + if len(path) <= len(prefix) || path[:len(prefix)] != prefix { + return 0 + } + rest := path[len(prefix):] + n := 0 + for _, c := range rest { + if c < '0' || c > '9' { + return 0 + } + n = n*10 + int(c-'0') + } + return n +} diff --git a/pkg/visor/api_local_transport_stats.go b/pkg/visor/api_local_transport_stats.go new file mode 100644 index 0000000000..ee3a845964 --- /dev/null +++ b/pkg/visor/api_local_transport_stats.go @@ -0,0 +1,87 @@ +// Package visor pkg/visor/api_local_transport_stats.go +// +// Local transport-bandwidth read API. The visor's stats tracker +// (pkg/visor/stats) already keeps a bbolt-backed rollup of every +// transport's sent/recv counters and latency stats — current +// snapshot + per-day daily rollups, retained for a configurable +// window (default 30d). This file exposes that local data through +// the Visor RPC surface so the hvui's per-visor Bandwidth tab can +// render it without round-tripping through TPD. +// +// Mirrors what `GET /stats/transports` and `/stats/transports/history` +// return on the visor's logserver, but reachable via the same +// hypervisor proxy chain everything else in the hvui uses. +package visor + +import ( + "errors" + "sort" + "time" + + "github.com/skycoin/skywire/pkg/visor/stats" +) + +// LocalTransportStatsResponse is the wire shape returned by +// LocalTransportStats. Keep this stable independent of the bbolt +// schema — additive fields only on changes. +type LocalTransportStatsResponse struct { + // Transports is the per-transport rollup, sorted by total + // bytes (sent+recv) descending so the busiest transports + // come first. + Transports []*stats.TransportRecord `json:"transports"` + // FetchedAt is when the snapshot was assembled. Lets the + // hvui surface a "last sample" timestamp. + FetchedAt time.Time `json:"fetched_at"` +} + +// LocalTransportStats returns every per-transport record from the +// local stats store, sorted busiest-first. Returns an empty slice +// (no error) when the stats subsystem isn't initialized — the hvui +// then surfaces "no data" rather than an error. +func (v *Visor) LocalTransportStats() (*LocalTransportStatsResponse, error) { + if v.statsTracker == nil { + return &LocalTransportStatsResponse{ + Transports: []*stats.TransportRecord{}, + FetchedAt: time.Now().UTC(), + }, nil + } + store := v.statsTracker.Store() + if store == nil { + return nil, errors.New("stats store not available") + } + recs, err := store.AllTransportRecords() + if err != nil { + return nil, err + } + sort.Slice(recs, func(i, j int) bool { + ti := totalBytes(recs[i]) + tj := totalBytes(recs[j]) + if ti != tj { + return ti > tj + } + // Stable tie-break by ID so repeated calls return the + // same order even when the data hasn't changed. + return recs[i].ID.String() < recs[j].ID.String() + }) + return &LocalTransportStatsResponse{ + Transports: recs, + FetchedAt: time.Now().UTC(), + }, nil +} + +// totalBytes adds Current + every Daily rollup so transports with +// historical traffic but no recent activity still rank above +// genuinely-cold ones. +func totalBytes(r *stats.TransportRecord) uint64 { + if r == nil { + return 0 + } + var total uint64 + if r.Current != nil { + total += r.Current.SentBytes + r.Current.RecvBytes + } + for _, d := range r.Daily { + total += d.SentBytes + d.RecvBytes + } + return total +} diff --git a/pkg/visor/api_local_uptime_stats.go b/pkg/visor/api_local_uptime_stats.go new file mode 100644 index 0000000000..493f64efa3 --- /dev/null +++ b/pkg/visor/api_local_uptime_stats.go @@ -0,0 +1,121 @@ +// Package visor pkg/visor/api_local_uptime_stats.go +// +// Local tier-uptime read API. The visor's stats tracker +// (pkg/visor/stats) keeps a 288-slot-per-day bitmap per tier +// (process / dmsg / skynet) reflecting which 5-minute slots the +// visor was observed online. This file exposes that data through +// the Visor RPC surface so the hvui's per-visor and network-wide +// Uptime tabs can render it through the same hypervisor proxy +// chain everything else in the hvui uses — no per-visor logserver +// HTTP client. +// +// The wire shape mirrors `GET /stats/uptime` on the visor's +// logserver (a {tier: {date: 288-ascii}} map): the renderer just +// reads '.' as online, ' ' as offline. +package visor + +import ( + "errors" + "time" + + "github.com/skycoin/skywire/pkg/visor/stats" +) + +// LocalUptimeResponse is the wire shape for LocalUptimeStats. +// +// The tier name is whatever the tracker recorded (the visor uses +// "process", "dmsg", "skynet"; future probes may add more — keep +// the renderer name-agnostic). Dates are UTC YYYY-MM-DD; bitmaps +// are 288 chars where '.' = online slot and ' ' = offline slot. +type LocalUptimeResponse struct { + Tiers map[string]map[string]string `json:"tiers"` + Since time.Time `json:"since"` + Until time.Time `json:"until"` + FetchedAt time.Time `json:"fetched_at"` +} + +// LocalUptimeArgs is the request shape. Empty Since/Until mean +// "default 7-day window ending now" — caller-side defaults match +// the logserver's own /stats/uptime behaviour so a hypervisor and a +// direct curl agree on the rendered timeline. +type LocalUptimeArgs struct { + Since time.Time `json:"since,omitempty"` + Until time.Time `json:"until,omitempty"` +} + +// localUptimeDefaultWindow is the implicit `since` when the caller +// hasn't passed one. Same value the logserver uses for /stats/* +// (defaultHistoryWindow) — kept in sync intentionally. +const localUptimeDefaultWindow = 7 * 24 * time.Hour + +// LocalUptimeStats returns the visor's tier-uptime bitmaps over the +// requested window. Returns an empty Tiers map (no error) when the +// stats subsystem isn't initialized so the hvui surfaces "no data" +// rather than an error. +func (v *Visor) LocalUptimeStats(args LocalUptimeArgs) (*LocalUptimeResponse, error) { + now := time.Now().UTC() + until := args.Until + if until.IsZero() { + until = now + } else { + until = until.UTC() + } + since := args.Since + if since.IsZero() { + since = until.Add(-localUptimeDefaultWindow) + } else { + since = since.UTC() + } + if since.After(until) { + return nil, errors.New("since must be <= until") + } + + resp := &LocalUptimeResponse{ + Tiers: map[string]map[string]string{}, + Since: since, + Until: until, + FetchedAt: now, + } + + if v.statsTracker == nil { + return resp, nil + } + store := v.statsTracker.Store() + if store == nil { + return resp, nil + } + + tiers, err := store.TierNames() + if err != nil { + return nil, err + } + + sinceKey := since.Format("2006-01-02") + untilKey := until.Format("2006-01-02") + + for _, tier := range tiers { + dates, err := store.TierDates(tier) + if err != nil { + continue + } + view := make(map[string]string) + for _, date := range dates { + if date < sinceKey || date > untilKey { + continue + } + d, err := time.Parse("2006-01-02", date) + if err != nil { + continue + } + bm, err := store.TierBitmap(tier, d) + if err != nil { + continue + } + view[date] = stats.Render(bm) + } + if len(view) > 0 { + resp.Tiers[tier] = view + } + } + return resp, nil +} diff --git a/pkg/visor/api_runtime_config.go b/pkg/visor/api_runtime_config.go new file mode 100644 index 0000000000..bb12cbb658 --- /dev/null +++ b/pkg/visor/api_runtime_config.go @@ -0,0 +1,84 @@ +// Package visor pkg/visor/api_runtime_config.go +// +// Whole-config replacement for the visor's on-disk config file. +// Companion to GetRuntimeConfig: lets the hvui round-trip the +// config through an editor pane and write the user-edited JSON +// back to disk. +// +// Validation chain — failure at any step rejects the write: +// 1. Strict JSON decode into a fresh visorconfig.V1 with +// DisallowUnknownFields(), so typos in field names surface +// instead of silently dropping data. +// 2. SK/PK consistency — when both are present the PK must +// derive from the SK; when only SK is present the visor +// identity isn't accidentally rotated by an empty PK. +// 3. Non-empty config path on the live visor (refuse on STDIN- +// sourced or in-memory configs). +// +// We deliberately do NOT attempt a hot-reload: the visor's many +// subsystems (router, app launcher, dmsg client, etc.) hold +// references to v.conf at startup, so swapping it in-process +// would leave them stale. Caller must restart the visor for the +// change to take effect — the hvui surfaces this in the response. +package visor + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "os" + + "github.com/skycoin/skywire/pkg/visor/visorconfig" +) + +// SetRuntimeConfig validates and writes the visor's on-disk config. +// The visor is NOT hot-reloaded; the operator must restart the +// process for the new config to take effect. +func (v *Visor) SetRuntimeConfig(rawJSON []byte) error { + if v.conf == nil { + return errors.New("visor has no current config") + } + path := v.conf.Path() + if path == "" { + return errors.New("visor config is not file-backed (STDIN or in-memory); refusing to write") + } + + // Strict decode: catch typos in field names that would + // silently drop data on the next visor start. + var newConf visorconfig.V1 + dec := json.NewDecoder(bytes.NewReader(rawJSON)) + dec.DisallowUnknownFields() + if err := dec.Decode(&newConf); err != nil { + return fmt.Errorf("invalid runtime config json: %w", err) + } + + // SK/PK consistency. ensureKeys is unexported on visorconfig + // so we replicate the check here. Either field may be empty + // (the visor will regenerate on startup), but if both are + // present the PK must match what SK derives. + if !newConf.SK.Null() { + derivedPK, err := newConf.SK.PubKey() + if err != nil { + return fmt.Errorf("invalid sk: %w", err) + } + if !newConf.PK.Null() && derivedPK != newConf.PK { + return errors.New("pk does not match sk") + } + } else if !newConf.PK.Null() { + return errors.New("pk is set but sk is empty; one without the other will fail at startup") + } + + // Write the user's bytes verbatim — preserves the formatting + // they typed in the editor. The standard Flush() codepath + // re-marshals from the in-memory struct which would clobber + // any whitespace / comment-style additions the operator made. + if err := os.WriteFile(path, rawJSON, 0o644); err != nil { //nolint:gosec + return fmt.Errorf("write config to %s: %w", path, err) + } + + v.MasterLogger().PackageLogger("visor:runtime-config"). + WithField("path", path). + Info("Runtime config replaced via API; visor restart required for changes to take effect.") + return nil +} diff --git a/pkg/visor/api_tpd_uptime_subscriber.go b/pkg/visor/api_tpd_uptime_subscriber.go new file mode 100644 index 0000000000..f1ddc95919 --- /dev/null +++ b/pkg/visor/api_tpd_uptime_subscriber.go @@ -0,0 +1,184 @@ +// Package visor pkg/visor/api_tpd_uptime_subscriber.go +// +// Visor-side CXO subscriber for TPD's network-wide visor-uptime +// feed (the publisher lives in +// pkg/transport-discovery/api/cxo_uptime_publisher.go and serves on +// skyenv.DmsgTPDUptimeCXOPort). +// +// Lazily-created the first time the hvui Network Uptime tab asks +// for fleet uptime; once running it stays connected and receives +// Root updates on the publisher's recompute cadence (~60s). The +// hvui handler reads via FetchVisorUptimeCXO; on a cache miss the +// handler falls back to DMSG-HTTP and finally HTTP, so the tab +// works on every deployment regardless of whether the publisher is +// available. +// +// "Run on demand" semantics: nothing dials TPD until a hypervisor +// actually asks for fleet uptime data. After the first dial the +// subscriber sticks around so subsequent fetches are a local +// memory read; the alternative — a fresh dial-and-tear-down per +// hvui open — would burn a DMSG handshake every minute. +package visor + +import ( + "errors" + "fmt" + "time" + + "github.com/skycoin/skywire/pkg/cxo/treestore" + "github.com/skycoin/skywire/pkg/skyenv" +) + +// connectTimeout bounds how long we'll block in the CXO Connect dial +// before treating it as a cache miss. The publisher's listener +// shouldn't take more than a single dmsg round-trip to ack, so 3s +// is generous. When TPD's CXO publisher is down (e.g. TPD is +// panicking) the dial otherwise hangs indefinitely under +// dmsg.ConnectPK — and the surrounding handler chain never falls +// through to its DMSG-HTTP / HTTP fallbacks. Keeping it short means +// the operator's first hvui open during a TPD outage costs ~3s +// rather than 5s before falling through. +const connectTimeout = 3 * time.Second + +// connectCooldown throttles re-dials after a failed Connect. Without +// it every hvui open of the Network Uptime tab would re-trigger the +// 5s wait while the publisher is still down — burning the operator's +// time and adding flap pressure. +const connectCooldown = 30 * time.Second + +// ErrTPDUptimeNotReady is returned by FetchVisorUptimeCXO when the +// local subscriber hasn't received a payload for the requested day +// window yet (subscriber not yet running, hasn't received any Root, +// or TPD hasn't published this window). Callers should fall back +// to the HTTP path on this error. +var ErrTPDUptimeNotReady = errors.New("tpd uptime: cxo cache miss") + +// tpdUptimeSubscriber is the long-lived state for the TPD-uptime +// subscriber. Created lazily on the first FetchVisorUptimeCXO call +// (via ensureTPDUptimeSubscriber) and kept alive for the visor's +// lifetime. +type tpdUptimeSubscriber struct { + sub *treestore.Subscriber + lastRootAt time.Time +} + +// FetchVisorUptimeCXO returns the cached visor-uptime blob for the +// given day window from the TPD CXO subscriber. (bytes, lastRootAt, +// nil) on a hit; (nil, zero, ErrTPDUptimeNotReady) when the cache +// has nothing for that path yet. +// +// `days` should be one of the values the TPD publisher writes +// (currently 1, 7, 30); other values always miss because the +// publisher doesn't write them. +func (v *Visor) FetchVisorUptimeCXO(days int) ([]byte, time.Time, error) { + state, err := v.ensureTPDUptimeSubscriber() + if err != nil { + return nil, time.Time{}, err + } + if state == nil || state.sub == nil { + return nil, time.Time{}, ErrTPDUptimeNotReady + } + path := fmt.Sprintf("uptimes/days/%d", days) + body, ok := state.sub.Get(path) + if !ok || len(body) == 0 { + return nil, time.Time{}, ErrTPDUptimeNotReady + } + v.tpdUptimeSubMu.RLock() + ts := state.lastRootAt + v.tpdUptimeSubMu.RUnlock() + return body, ts, nil +} + +// ensureTPDUptimeSubscriber lazily constructs the subscriber on +// first use. Returns nil + nil when the visor has no DMSG client or +// no parseable TPD CXO peer (the caller treats both as a cache miss +// and falls through to HTTP). When a recent Connect attempt failed +// we short-circuit on the cooldown so successive hvui opens don't +// re-pay the connectTimeout while TPD's publisher is still down. +func (v *Visor) ensureTPDUptimeSubscriber() (*tpdUptimeSubscriber, error) { + v.tpdUptimeSubMu.RLock() + state := v.tpdUptimeSub + v.tpdUptimeSubMu.RUnlock() + if state != nil { + return state, nil + } + + // Cooldown check — read the last failure timestamp without taking + // the mutex so a hung previous attempt doesn't serialise hvui + // requests. + if last := v.tpdUptimeLastFail.Load(); last > 0 { + if time.Since(time.Unix(0, last)) < connectCooldown { + return nil, fmt.Errorf("dial tpd uptime publisher: cooling down") + } + } + + v.tpdUptimeSubMu.Lock() + defer v.tpdUptimeSubMu.Unlock() + if v.tpdUptimeSub != nil { + return v.tpdUptimeSub, nil + } + if v.dmsgC == nil { + return nil, nil //nolint:nilnil // intentional sentinel for caller + } + tpdPK, ok := tpdCXOPeer(v) + if !ok { + return nil, nil //nolint:nilnil + } + + sub, err := treestore.NewSubscriber(v.dmsgC, tpdPK, treestore.SubConfig{ + InMemoryDB: true, + DmsgPort: skyenv.DmsgTPDUptimeCXOPort, + }) + if err != nil { + return nil, fmt.Errorf("create tpd uptime subscriber: %w", err) + } + + state = &tpdUptimeSubscriber{sub: sub} + sub.SetPrefixes([]string{"uptimes/days/"}) + sub.OnUpdate(func(_ []treestore.UpdateEvent) { + v.tpdUptimeSubMu.Lock() + if v.tpdUptimeSub != nil { + v.tpdUptimeSub.lastRootAt = time.Now() + } + v.tpdUptimeSubMu.Unlock() + }) + + // Connect can hang indefinitely when the publisher's listener is + // down (e.g. TPD is panicking). Run it in a goroutine and bound + // the wait — anything past connectTimeout is treated as a cache + // miss so the handler chain falls through to DMSG-HTTP / HTTP. + done := make(chan error, 1) + go func() { done <- sub.Connect(tpdPK) }() + select { + case err := <-done: + if err != nil { + _ = sub.Close() //nolint:errcheck + v.tpdUptimeLastFail.Store(time.Now().UnixNano()) + return nil, fmt.Errorf("dial tpd uptime publisher: %w", err) + } + case <-time.After(connectTimeout): + // Close the subscriber so its listener releases port + // DmsgTPDUptimeCXOPort — otherwise the next ensure call + // would fail with "port already occupied" forever. The + // in-flight Connect goroutine sees the underlying transport + // close and unwinds; that's the standard treestore shutdown + // path. The cooldown above prevents a tight retry loop. + _ = sub.Close() //nolint:errcheck + v.tpdUptimeLastFail.Store(time.Now().UnixNano()) + return nil, fmt.Errorf("dial tpd uptime publisher: timeout after %s", connectTimeout) + } + v.tpdUptimeSub = state + return state, nil +} + +// closeTPDUptimeSubscriber tears down the subscriber on visor close. +// Safe to call multiple times. +func (v *Visor) closeTPDUptimeSubscriber() { + v.tpdUptimeSubMu.Lock() + state := v.tpdUptimeSub + v.tpdUptimeSub = nil + v.tpdUptimeSubMu.Unlock() + if state != nil && state.sub != nil { + _ = state.sub.Close() //nolint:errcheck + } +} diff --git a/pkg/visor/hypervisor.go b/pkg/visor/hypervisor.go index 5b62482f74..43b815816c 100644 --- a/pkg/visor/hypervisor.go +++ b/pkg/visor/hypervisor.go @@ -408,6 +408,7 @@ func (hv *Hypervisor) makeMux() chi.Router { r.Get("/service-health", hv.getServiceHealth()) r.Get("/route-setup-nodes/stats", hv.getRSNRemoteStats()) r.Get("/network/transports", hv.getNetworkTransports()) + r.Get("/network/visor-uptime", hv.getNetworkVisorUptime()) r.Get("/dmsg/sessions", hv.getDmsgSessions()) r.Post("/dmsg/connect-all", hv.postDmsgConnectAll()) r.Put("/dmsg/sessions-count", hv.putDmsgSessionsCount()) @@ -456,6 +457,9 @@ func (hv *Hypervisor) makeMux() chi.Router { r.Put("/visors/{pk}/public", hv.putIsPublic()) r.Get("/visors/{pk}/public", hv.getIsPublic()) r.Get("/visors/{pk}/runtime-config", hv.getRuntimeConfig()) + r.Put("/visors/{pk}/runtime-config", hv.putRuntimeConfig()) + r.Get("/visors/{pk}/local-transport-stats", hv.getLocalTransportStats()) + r.Get("/visors/{pk}/local-uptime-stats", hv.getLocalUptimeStats()) r.Get("/visors/{pk}/ports", hv.getPorts()) // Resolving proxy controls diff --git a/pkg/visor/hypervisor_handlers_admin.go b/pkg/visor/hypervisor_handlers_admin.go index b091742907..d1f7f95a15 100644 --- a/pkg/visor/hypervisor_handlers_admin.go +++ b/pkg/visor/hypervisor_handlers_admin.go @@ -2,6 +2,7 @@ package visor import ( + "bytes" "fmt" "io" "net/http" @@ -278,3 +279,81 @@ func (hv *Hypervisor) getRuntimeConfig() http.HandlerFunc { w.Write(configJSON) //nolint:errcheck,gosec }) } + +// getLocalTransportStats returns the visor's locally-tracked +// per-transport bandwidth + latency rollup. Source of truth is +// the visor's bbolt stats store; no TPD round-trip. +func (hv *Hypervisor) getLocalTransportStats() http.HandlerFunc { + return hv.withCtx(hv.visorCtx, func(w http.ResponseWriter, r *http.Request, ctx *httpCtx) { + resp, err := ctx.API.LocalTransportStats() + if err != nil { + httputil.WriteJSON(w, r, http.StatusInternalServerError, map[string]string{"error": err.Error()}) + return + } + httputil.WriteJSON(w, r, http.StatusOK, resp) + }) +} + +// getLocalUptimeStats returns the visor's locally-tracked tier +// uptime bitmaps (process / dmsg / skynet) over a window. Source +// of truth is the same bbolt stats store /stats/uptime serves on +// the logserver; this handler bridges it through the hvui's +// existing per-visor proxy chain. Window comes from `?since=` and +// `?until=` (RFC3339); both default — no since means seven days +// before until, no until means now. +func (hv *Hypervisor) getLocalUptimeStats() http.HandlerFunc { + return hv.withCtx(hv.visorCtx, func(w http.ResponseWriter, r *http.Request, ctx *httpCtx) { + var args LocalUptimeArgs + if s := r.URL.Query().Get("since"); s != "" { + t, err := time.Parse(time.RFC3339, s) + if err != nil { + httputil.WriteJSON(w, r, http.StatusBadRequest, map[string]string{"error": "since: " + err.Error()}) + return + } + args.Since = t + } + if u := r.URL.Query().Get("until"); u != "" { + t, err := time.Parse(time.RFC3339, u) + if err != nil { + httputil.WriteJSON(w, r, http.StatusBadRequest, map[string]string{"error": "until: " + err.Error()}) + return + } + args.Until = t + } + resp, err := ctx.API.LocalUptimeStats(args) + if err != nil { + httputil.WriteJSON(w, r, http.StatusInternalServerError, map[string]string{"error": err.Error()}) + return + } + httputil.WriteJSON(w, r, http.StatusOK, resp) + }) +} + +// putRuntimeConfig accepts a raw JSON body and forwards it to +// SetRuntimeConfig on the target visor. The body is validated +// server-side (strict JSON decode + SK/PK consistency); the visor +// is NOT hot-reloaded — the caller must restart it for the change +// to take effect. The response includes a "restart_required" flag +// so the hvui can surface that to the operator. +func (hv *Hypervisor) putRuntimeConfig() http.HandlerFunc { + return hv.withCtx(hv.visorCtx, func(w http.ResponseWriter, r *http.Request, ctx *httpCtx) { + body, err := io.ReadAll(r.Body) + if err != nil { + httputil.WriteJSON(w, r, http.StatusBadRequest, map[string]string{"error": err.Error()}) + return + } + if len(bytes.TrimSpace(body)) == 0 { + httputil.WriteJSON(w, r, http.StatusBadRequest, map[string]string{"error": "empty body"}) + return + } + if err := ctx.API.SetRuntimeConfig(body); err != nil { + httputil.WriteJSON(w, r, http.StatusBadRequest, map[string]string{"error": err.Error()}) + return + } + httputil.WriteJSON(w, r, http.StatusOK, map[string]any{ + "saved": true, + "restart_required": true, + "restart_hint": "Visor must be restarted for the new config to take effect.", + }) + }) +} diff --git a/pkg/visor/hypervisor_handlers_tpd.go b/pkg/visor/hypervisor_handlers_tpd.go index 47354df357..b73fc5e7ae 100644 --- a/pkg/visor/hypervisor_handlers_tpd.go +++ b/pkg/visor/hypervisor_handlers_tpd.go @@ -118,3 +118,125 @@ func (hv *Hypervisor) getNetworkTransports() http.HandlerFunc { map[string]string{"error": "no TPD URL configured"}) } } + +// getNetworkVisorUptime proxies TPD's `/uptimes?v=v3` for the +// network-wide Uptime tab. The TPD aggregates visor heartbeats from +// the integrated tracker (transports + dmsg discovery check-ins); +// the v3 response includes a 288-char per-day timeline string per +// visor — exactly the "exact intervals" shape the operator wants. +// +// Three fetch strategies, tried in order: +// +// 1. CXO subscriber (instant when fresh) — visor maintains a lazy +// long-lived TreeStore subscriber to TPD's uptime publisher +// (api_tpd_uptime_subscriber.go). When the publisher has pushed +// a Root for the requested day window the subscriber returns +// it without a DMSG round-trip per hvui open. +// 2. DMSG-HTTP fallback when the CXO cache misses. +// 3. Plain HTTP last resort. +// +// Query params: +// +// days=N — selects which CXO bucket to read (1, 7, 30); +// defaults to 7. Only the publisher-supported +// windows hit the cache; everything else falls +// straight through to the HTTP path. +// visors=;... — semicolon-separated PK filter; only takes +// effect on the HTTP/DMSG-HTTP fallback path +// (the CXO bucket is the full fleet for that +// window — clients filter on their side). +func (hv *Hypervisor) getNetworkVisorUptime() http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + if hv.visor == nil { + httputil.WriteJSON(w, r, http.StatusServiceUnavailable, + map[string]string{"error": "no local visor"}) + return + } + + visorsParam := strings.TrimSpace(r.URL.Query().Get("visors")) + // Default to v3 — the timeline is what the UI renders. + // Callers that just want percentages can pass v=v2. + version := r.URL.Query().Get("v") + if version == "" { + version = "v3" + } + // Parse days for the CXO bucket lookup. If unparseable or + // missing, default to 7 — matches the per-visor tab default. + days := 7 + if d := strings.TrimSpace(r.URL.Query().Get("days")); d != "" { + if n, err := strconv.Atoi(d); err == nil && n > 0 && n <= 35 { + days = n + } + } + + log := hv.visor.MasterLogger().PackageLogger("tpd_uptime_proxy") + + // Step 1: CXO subscriber bucket. Hits whenever TPD has pushed + // the requested day window since the visor's first hvui-driven + // fetch. The X-Skywire-Uptime-Source header lets the UI know + // where the response came from. + if version == "v3" { + if body, ts, err := hv.visor.FetchVisorUptimeCXO(days); err == nil && len(body) > 0 { + w.Header().Set("Content-Type", "application/json") + w.Header().Set("X-Skywire-Uptime-Source", "cxo") + if !ts.IsZero() { + w.Header().Set("X-Skywire-Uptime-Updated", ts.UTC().Format(time.RFC3339)) + } + _, _ = w.Write(body) //nolint:errcheck,gosec + return + } + } + + path := "/uptimes?v=" + version + if visorsParam != "" { + path += "&visors=" + visorsParam + } + + tpdHTTP := strings.TrimSuffix(hv.visor.conf.Transport.Discovery, "/") + tpdDmsg := strings.TrimSuffix(hv.visor.conf.Transport.DiscoveryDmsg, "/") + if tpdHTTP == "" { + tpdHTTP = strings.TrimSuffix(deployment.Prod.TransportDiscovery, "/") + } + if tpdDmsg == "" { + tpdDmsg = strings.TrimSuffix(deployment.Prod.TransportDiscoveryDmsg, "/") + } + + if tpdDmsg != "" { + dmsgURL := tpdDmsg + path + log.Debugf("fetching TPD /uptimes via DMSG: %s", dmsgURL) + resp, err := hv.visor.DmsgHTTP(DmsgHTTPRequest{URL: dmsgURL, Method: "GET"}) + if err == nil && resp.StatusCode >= 200 && resp.StatusCode < 300 { + w.Header().Set("Content-Type", "application/json") + w.Header().Set("X-Skywire-Uptime-Source", "dmsg-http") + w.WriteHeader(resp.StatusCode) + _, _ = w.Write(resp.Body) //nolint:errcheck,gosec + return + } + if err != nil { + log.WithError(err).Warn("DMSG fetch failed, falling back to HTTP") + } + } + + if tpdHTTP != "" { + httpURL := tpdHTTP + path + log.Debugf("fetching TPD /uptimes via HTTP: %s", httpURL) + client := &http.Client{Timeout: 15 * time.Second} + resp, err := client.Get(httpURL) //nolint:gosec // operator-controlled URL + if err != nil { + httputil.WriteJSON(w, r, http.StatusBadGateway, + map[string]string{"error": "tpd unreachable: " + err.Error()}) + return + } + defer resp.Body.Close() //nolint:errcheck + body, _ := io.ReadAll(resp.Body) //nolint:errcheck + w.Header().Set("Content-Type", resp.Header.Get("Content-Type")) + w.Header().Set("X-Skywire-Uptime-Source", "http") + w.WriteHeader(resp.StatusCode) + _, _ = w.Write(body) //nolint:errcheck,gosec + return + } + + httputil.WriteJSON(w, r, http.StatusServiceUnavailable, + map[string]string{"error": "no TPD URL configured"}) + } +} diff --git a/pkg/visor/init.go b/pkg/visor/init.go index 30eb148af3..eefbd994fe 100644 --- a/pkg/visor/init.go +++ b/pkg/visor/init.go @@ -161,7 +161,10 @@ func registerModules(logger *logging.MasterLogger) { stcpC = maker("stcp", initStcpClient, &tr) dmsgC = maker("dmsg", initDmsg, &ebc, &dmsgHTTP) dmsgCtrl = maker("dmsg_ctrl", initDmsgCtrl, &dmsgC, &tr) - dmsgHTTPLogServer = maker("dmsghttp_logserver", initDmsgHTTPLogServer, &dmsgC, &tr) + // dmsghttp_logserver mounts /pty on top of dmsgpty's CLI socket + // (or self-dialed dmsg when no CLI socket is configured), so it + // must run after pty has finished its setup. + dmsgHTTPLogServer = maker("dmsghttp_logserver", initDmsgHTTPLogServer, &dmsgC, &tr, &pty) systemSurvey = maker("system_survey", initSystemSurvey, &dmsgHTTPLogServer) dmsgTrackers = maker("dmsg_trackers", initDmsgTrackers, &dmsgC) diff --git a/pkg/visor/init_dmsg.go b/pkg/visor/init_dmsg.go index b74ee6f6ab..52f217b2ec 100644 --- a/pkg/visor/init_dmsg.go +++ b/pkg/visor/init_dmsg.go @@ -398,6 +398,35 @@ func initDmsgHTTPLogServer(ctx context.Context, v *Visor, _ *logging.Logger) err lsAPI.SetServiceLister(v.services) lsAPI.SetForwardedPortLister(v.forwardedPorts) + // Mount the dmsgpty web terminal at /pty, gated by the same + // whitelist the dmsgpty Host enforces on direct connections — + // configured Dmsgpty.Whitelist + Hypervisors + the visor's own + // PK (a hypervisor running locally can reach itself). The + // dialer prefers the local CLI socket when it's set up; that + // avoids a self-loop through dmsg for a request that's already + // in-process. When no CLI socket is configured we fall back to + // dialing our own dmsg client at DmsgPtyPort, which works the + // same way the hypervisor's per-PK ptyUI does for remote visors. + if v.conf.Dmsgpty != nil { + var ptyDialer dmsgpty.UIDialer + if v.conf.Dmsgpty.CLINet != "" { + ptyDialer = dmsgpty.NetUIDialer(v.conf.Dmsgpty.CLINet, v.conf.Dmsgpty.CLIAddr) + } else { + ptyDialer = dmsgpty.DmsgUIDialer(dmsgC, dmsg.Addr{PK: v.conf.PK, Port: skyenv.DmsgPtyPort}) + } + ptyUI := dmsgpty.NewUI(ptyDialer, dmsgpty.DefaultUIConfig()) + ptyHandler := ptyUI.Handler(map[string][]string{ + "update": visorconfig.UpdateCommand(), + }) + ptyWL := []cipher.PubKey{v.conf.PK} + ptyWL = append(ptyWL, v.conf.Hypervisors...) + if v.conf.Dmsgpty.Whitelist != nil { + ptyWL = append(ptyWL, v.conf.Dmsgpty.Whitelist...) + } + lsAPI.SetPtyHandler(ptyHandler, ptyWL) + logger.WithField("whitelist_size", len(ptyWL)).Info("Mounted /pty on logserver") + } + // Mount the website handler for port 80 — rewards UI if configured, // otherwise the forwarded-port reverse proxy if one is registered. v.refreshWebsiteHandler(logger) diff --git a/pkg/visor/init_stats.go b/pkg/visor/init_stats.go index db6073bb38..88546a50a4 100644 --- a/pkg/visor/init_stats.go +++ b/pkg/visor/init_stats.go @@ -270,7 +270,9 @@ func transportsProbe(v *Visor) func() []stats.TransportProbe { // tierStatesProbe returns a closure that reports current tier // states. process is true while the visor is alive (it always is // when this probe runs); dmsg is read from the visor's DMSG client -// readiness; skynet derives from the live transport count. +// readiness; skynet is true when the visor has ≥2 live transports — +// the same criterion TPD uses for "skynet online", so a visor here +// counts as skynet-up only when it is actually routable through. func tierStatesProbe(v *Visor) func() map[string]bool { return func() map[string]bool { states := map[string]bool{ diff --git a/pkg/visor/logserver/api.go b/pkg/visor/logserver/api.go index 3541d649ed..ce6e0a1f85 100644 --- a/pkg/visor/logserver/api.go +++ b/pkg/visor/logserver/api.go @@ -93,6 +93,11 @@ type API struct { cxoFeedsLister CXOFeedsLister statsReader StatsReader // visor-local telemetry store, set via SetStatsReader websiteHandler http.Handler // optional: serves unmatched routes (custom website) + // ptyHandler serves /pty (web terminal) when set by the visor. + // Gated by ptyWhitelist — typically the dmsgpty whitelist (configured + // PKs + hypervisor PKs + the visor's own PK). + ptyHandler http.Handler + ptyWhitelist []cipher.PubKey } // New creates a new API. @@ -201,6 +206,43 @@ func New(log *logging.Logger, tpLogPath, localPath, _ string, whitelistedPKs []c // degrade to 503 when SetStatsReader hasn't been called. api.registerStatsRoutes(authRoute) + // /pty (web terminal) — gated by ptyWhitelist (set via + // SetPtyHandler). Until the visor calls SetPtyHandler, the + // route is wired but returns 404 so a misconfigured deployment + // doesn't accidentally expose a shell. The dmsgpty UI handler + // terminates websocket-upgrade requests for the live session + // and serves the static term page on plain GETs. + ptyAuth := func(c *gin.Context) { + if api.ptyHandler == nil { + c.AbortWithStatus(http.StatusNotFound) + return + } + // Empty whitelist on the API means "no PK allowed" rather than + // "open to all" — pty is high-power, fail closed. + if len(api.ptyWhitelist) == 0 { + c.AbortWithStatus(http.StatusForbidden) + return + } + remoteHost, _, err := net.SplitHostPort(c.Request.RemoteAddr) + if err != nil { + remoteHost = c.Request.RemoteAddr + } + allowed := false + for _, pk := range api.ptyWhitelist { + if remoteHost == pk.String() { + allowed = true + break + } + } + if !allowed { + c.AbortWithStatus(http.StatusForbidden) + return + } + api.ptyHandler.ServeHTTP(c.Writer, c.Request) + } + r.GET("/pty", ptyAuth) + r.GET("/pty/*path", ptyAuth) + // isWhitelisted checks if the current request is from a whitelisted PK // without blocking. Used by the landing page to show/hide auth'd links. isWhitelisted := func(c *gin.Context) bool { @@ -243,6 +285,22 @@ func New(log *logging.Logger, tpLogPath, localPath, _ string, whitelistedPKs []c links = append(links, `/stats/uptime - three-tier uptime bitmaps`) links = append(links, `/stats/services - per-service uptime bitmaps`) } + // /pty link is shown only when the requester's PK is on + // the dmsgpty whitelist. The pty whitelist is intentionally + // distinct from the survey whitelist (it can include + // Dmsgpty.Whitelist entries the survey list doesn't), so + // we re-check rather than reuse `wl`. + if api.ptyHandler != nil && len(api.ptyWhitelist) > 0 { + remoteHost, _, err := net.SplitHostPort(c.Request.RemoteAddr) + if err == nil { + for _, pk := range api.ptyWhitelist { + if remoteHost == pk.String() { + links = append(links, `/pty - web terminal (dmsgpty)`) + break + } + } + } + } // List transport log files if entries, err := os.ReadDir(tpLogPath); err == nil { for _, e := range entries { @@ -388,6 +446,19 @@ func (api *API) SetForwardedPortLister(lister ForwardedPortLister) { // SetCXOFeedsLister sets the CXO feed catalog provider. Called from // visor init after the user-feed registry is wired up. +// SetPtyHandler installs the dmsgpty UI handler under /pty, gated +// by the supplied whitelist. The whitelist is expected to mirror +// the dmsgpty Host's whitelist (configured PKs + hypervisor PKs + +// the visor's own PK), so the same set of peers that can connect +// directly to dmsgpty over dmsg can also reach the web terminal. +// Pass a nil/empty whitelist or nil handler to disable; the route +// stays registered and returns 404/403, which is the correct +// signal to a probing client. +func (api *API) SetPtyHandler(h http.Handler, whitelist []cipher.PubKey) { + api.ptyHandler = h + api.ptyWhitelist = whitelist +} + func (api *API) SetCXOFeedsLister(lister CXOFeedsLister) { api.cxoFeedsLister = lister } diff --git a/pkg/visor/rpc_client.go b/pkg/visor/rpc_client.go index d17f47a88e..1488757fab 100644 --- a/pkg/visor/rpc_client.go +++ b/pkg/visor/rpc_client.go @@ -518,6 +518,38 @@ func (rc *rpcClient) GetIsPublic() bool { return out } +// SetRuntimeConfig implements API. +func (rc *rpcClient) SetRuntimeConfig(rawJSON []byte) error { + return rc.Call("SetRuntimeConfig", &rawJSON, &struct{}{}) +} + +// LocalTransportStats implements API. +func (rc *rpcClient) LocalTransportStats() (*LocalTransportStatsResponse, error) { + var resp LocalTransportStatsResponse + if err := rc.Call("LocalTransportStats", &struct{}{}, &resp); err != nil { + return nil, err + } + return &resp, nil +} + +// LocalUptimeStats implements API. +func (rc *rpcClient) LocalUptimeStats(args LocalUptimeArgs) (*LocalUptimeResponse, error) { + var resp LocalUptimeResponse + if err := rc.Call("LocalUptimeStats", &args, &resp); err != nil { + return nil, err + } + return &resp, nil +} + +// FetchCXO implements API. +func (rc *rpcClient) FetchCXO(args FetchCXOArgs) (*FetchCXOResult, error) { + var resp FetchCXOResult + if err := rc.Call("FetchCXO", &args, &resp); err != nil { + return nil, err + } + return &resp, nil +} + // GetRuntimeConfig implements API. func (rc *rpcClient) GetRuntimeConfig() ([]byte, error) { var out []byte diff --git a/pkg/visor/rpc_client_mock.go b/pkg/visor/rpc_client_mock.go index d5eb92f86e..8ec5584fd9 100644 --- a/pkg/visor/rpc_client_mock.go +++ b/pkg/visor/rpc_client_mock.go @@ -648,6 +648,24 @@ func (mc *mockRPCClient) GetIsPublic() bool { return false } // GetRuntimeConfig implements API. func (mc *mockRPCClient) GetRuntimeConfig() ([]byte, error) { return []byte("{}"), nil } +// SetRuntimeConfig implements API. +func (mc *mockRPCClient) SetRuntimeConfig(_ []byte) error { return nil } + +// LocalTransportStats implements API. +func (mc *mockRPCClient) LocalTransportStats() (*LocalTransportStatsResponse, error) { + return &LocalTransportStatsResponse{}, nil +} + +// LocalUptimeStats implements API. +func (mc *mockRPCClient) LocalUptimeStats(_ LocalUptimeArgs) (*LocalUptimeResponse, error) { + return &LocalUptimeResponse{}, nil +} + +// FetchCXO implements API. +func (mc *mockRPCClient) FetchCXO(_ FetchCXOArgs) (*FetchCXOResult, error) { + return &FetchCXOResult{Reason: "mock"}, nil +} + // GetConfigPath implements API. func (mc *mockRPCClient) GetConfigPath() (string, error) { return "", nil } diff --git a/pkg/visor/rpc_visor.go b/pkg/visor/rpc_visor.go index 98418329be..773ecca127 100644 --- a/pkg/visor/rpc_visor.go +++ b/pkg/visor/rpc_visor.go @@ -2,6 +2,8 @@ package visor import ( + "errors" + "github.com/skycoin/skywire/pkg/util/rpcutil" ) @@ -151,6 +153,66 @@ func (r *RPC) GetRuntimeConfig(_ *struct{}, out *[]byte) (err error) { return err } +// SetRuntimeConfig validates rawJSON and writes it to the visor's +// on-disk config file. Visor restart is required for the change to +// take effect; this RPC does NOT trigger one. +func (r *RPC) SetRuntimeConfig(rawJSON *[]byte, _ *struct{}) (err error) { + defer rpcutil.LogCall(r.log, "SetRuntimeConfig", nil)(nil, &err) + if rawJSON == nil { + return errors.New("nil runtime config payload") + } + return r.visor.SetRuntimeConfig(*rawJSON) +} + +// LocalTransportStats returns the visor's local per-transport +// bandwidth + latency rollup from the bbolt stats store. +func (r *RPC) LocalTransportStats(_ *struct{}, out *LocalTransportStatsResponse) (err error) { + defer rpcutil.LogCall(r.log, "LocalTransportStats", nil)(nil, &err) + resp, err := r.visor.LocalTransportStats() + if err != nil { + return err + } + *out = *resp + return nil +} + +// LocalUptimeStats returns the visor's tier-uptime bitmaps from the +// bbolt stats store — process / dmsg / skynet, 5-minute resolution +// for the requested window. Mirror of /stats/uptime on the +// logserver, reachable through the hypervisor RPC chain so the hvui +// can fetch it without per-visor HTTP calls. +func (r *RPC) LocalUptimeStats(args *LocalUptimeArgs, out *LocalUptimeResponse) (err error) { + defer rpcutil.LogCall(r.log, "LocalUptimeStats", nil)(nil, &err) + if args == nil { + args = &LocalUptimeArgs{} + } + resp, err := r.visor.LocalUptimeStats(*args) + if err != nil { + return err + } + *out = *resp + return nil +} + +// FetchCXO probes the visor's lazy-on-demand CXO subscriber for the +// requested (feed, path) and returns the cached payload or a miss +// reason. Used by the CLI's FetchServiceURL to add a CXO step at +// the front of the RPC→DMSG→HTTP chain — when the visor already has +// a fresh subscription the CLI can skip the network round-trip +// entirely. +func (r *RPC) FetchCXO(args *FetchCXOArgs, out *FetchCXOResult) (err error) { + defer rpcutil.LogCall(r.log, "FetchCXO", args)(nil, &err) + if args == nil { + args = &FetchCXOArgs{} + } + resp, err := r.visor.FetchCXO(*args) + if err != nil { + return err + } + *out = *resp + return nil +} + // RuntimeLogs returns the visor's accumulated runtime log buffer. // Used by the hypervisor UI's "view logs" action and the // `skywire cli visor logs` command. diff --git a/pkg/visor/static/473.112ef2b987479257.js b/pkg/visor/static/473.112ef2b987479257.js deleted file mode 100644 index df45a8caa2..0000000000 --- a/pkg/visor/static/473.112ef2b987479257.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkskywire_manager=self.webpackChunkskywire_manager||[]).push([[473],{473(e){e.exports=JSON.parse('{"common":{"save":"Save","cancel":"Cancel","loading":"Loading\u2026","downloaded":"Downloaded","uploaded":"Uploaded","loading-error":"There was an error getting the data. Retrying...","operation-error":"There was an error trying to complete the operation.","no-connection-error":"There is no internet connection or connection to the Hypervisor.","error":"Error:","refreshed":"Data refreshed.","options":"Options","logout":"Logout","logout-error":"Error logging out.","logout-confirmation":"Are you sure you want to log out?","time-in-ms":"{{ time }}ms.","time-in-segs":"{{ time }}s.","ok":"Ok","yes":"Yes","no":"No","unknown":"Unknown","close":"Close","window-size-error":"The window is too narrow for the content.","data-update-problems":"Problem updating the data."},"labeled-element":{"edit-label":"Edit label","remove-label":"Remove label","go-to-settings":"Go to settings","view-all-labels":"View all labels","copy":"Copy","remove-label-confirmation":"Do you really want to remove the label?","unnamed-element":"Unnamed","unnamed-local-visor":"Local visor","local-element":"Local","tooltip":"Click to copy the entry or change the label","tooltip-with-text":"{{ text }} (Click to copy the entry or change the label)"},"labels":{"title":"Labels","info":"Labels you have entered to easily identify visors, transports and other elements, instead of having to read machine generated identifiers.","list-title":"Label list","label":"Label","id":"Element ID","type":"Type","delete-confirmation":"Are you sure you want to delete the label?","delete-selected-confirmation":"Are you sure you want to delete the selected labels?","delete":"Delete label","deleted":"Delete operation completed.","empty":"There aren\'t any saved labels.","empty-with-filter":"No label matches the selected filtering criteria.","filter-dialog":{"label":"The label must contain","id":"The id must contain","type":"The type must be","type-options":{"any":"Any","visor":"Visor","dmsg-server":"DMSG server","transport":"Transport"}}},"filters":{"filter-action":"Filter","filter-info":"Filter list.","press-to-remove":"(Press to remove the filters)","remove-confirmation":"Are you sure you want to remove the filters?"},"tables":{"title":"Order by","sorting-title":"Ordered by:","sort-by-value":"Value","sort-by-label":"Label","label":"(label)","inverted-order":"(inverted)"},"start":{"title":"Start","loading-error":"An error occurred while getting the initial data. Retrying..."},"node":{"title":"Visor details","not-found":"Visor not found.","resource-monitor":{"title":"Resource monitor","tab-host":"Host","tab-process":"Process","cpu":"CPU","memory":"Memory","disk":"Disk","net-rx":"Net rx","net-tx":"Net tx","threads":"Threads","heap":"Heap","goroutines":"Goroutines","gc":"GC rate"},"logs":{"title":"Runtime Logs","no-logs":"No runtime logs were found for this visor.","no-logs-for-filter":"No runtime logs matches the selected filter.","view-all":"View all logs in raw format >","view-rest":"View all {{ number }} elements in raw format >","selected-filter":"Showing:","filter-ignored":"The filter excluded {{ number }} entries","filter-title":"Filter","filter-all":"All logs","filter-debug":"Debug or more important","filter-info":"Info or more important","filter-warning":"Warning or more important","filter-error":"Error or more important","filter-faltal":"Faltal or more important","filter-panic":"Panic","live-on":"Live (pause)","live-off":"Paused (live)","dropped":"Skipped {{ count }} older entries that aged out of the visor\'s runtime buffer."},"statuses":{"online":"Online","online-tooltip":"The visor is online.","connecting":"Connecting","connecting-tooltip":"The visor is online, but still connecting to the uptime tracker.","unknown":"Unknown","unknown-tooltip":"The visor is online, but it has not been possible to determine if it is connected to the uptime tracker.","partially-online":"Online with problems","partially-online-tooltip":"The visor is online, but disconnected from the uptime tracker.","offline":"Offline","offline-tooltip":"The visor is offline."},"details":{"node-info":{"title":"Visor","title-local":"Local Visor","label":"Label:","public-key":"Public key:","symmetic-nat":"Symmetic NAT:","public-ip":"Public IP:","ip":"IP:","dmsg-servers":"DMSG servers:","connected":"connected","no-dmsg-server":"Not connected","ping":"Ping:","node-version":"Visor version:","config-version":"Config version:","os":"OS:","arch":"Architecture:","skybian-version":"Skybian version:","time":{"title":"Time online:","seconds":"a few seconds","minute":"1 minute","minutes":"{{ time }} minutes","hour":"1 hour","hours":"{{ time }} hours","day":"1 day","days":"{{ time }} days","week":"1 week","weeks":"{{ time }} weeks"}},"rewards-info":{"title":"Rewards","rewards-address":"Reward address:","not-registered":"Not registered","not-registered-info":"You have not specified a Skycoin address for receiving rewards for this visor. If you want to register the visor for receiving rewards, press the \\"Set address\\" button and set a Skycoin address.","open-in-explorer":"Open in blockchain explorer","set-address-button":"Set address","change-address-button":"Change address","show-rules":"Reward rules (embedded mainnet_rules.md)"},"transports-info":{"title":"Transport","total":"Total:","autoconnect":"Autoconnect:","autoconnect-info":"When enabled, the visor will automatically create the transports needed when a connection to a public visor is requested. If disabled, the transports will have to be created before being able to make the connection.","enabled":"Enabled","disabled":"Disabled","enable-button":"Enable","disable-button":"Disable","enable-confirmation":"Are you sure you want to enable the autoconnect feature?","disable-confirmation":"Are you sure you want to disable the autoconnect feature?","enable-done":"The autoconnect feature has been enabled.","disable-done":"The autoconnect feature has been disabled.","is-public":"Public Visor:","is-public-info":"When enabled, this visor registers as a public relay for other visors","public-enabled":"Enabled","public-disabled":"Disabled","public-enable-button":"Enable","public-disable-button":"Disable","public-enable-confirmation":"Are you sure you want to make this visor public?","public-disable-confirmation":"Are you sure you want to make this visor private?","public-enable-done":"This visor is now public.","public-disable-done":"This visor is now private."},"router-info":{"title":"Router","min-hops":"Min hops:","max-hops":"Max hops:","change-config-button":"Change configuration"},"node-health":{"title":"Health","services":"Services:","uptime-tracker":"Uptime tracker:","autoconnect":"Autoconnect:","transportability":"Transportability:","connected":"Connected","disconnected":"Disconnected"},"ports":{"title":"Ports"},"config":{"view-button":"View Config","title":"Runtime Configuration"},"tpviz":{"title":"Network Visualizer","open":"Open Transport Visualizer"},"node-traffic-data":"Traffic data"},"tabs":{"info":"Info","apps":"Apps","routing":"Routing","transports":"Transports","rewards":"Rewards","skynet":"Skynet","resources":"Resources","chat":"Skychat","dmsg":"DMSG"},"error-load":"An error occurred while refreshing the data. Retrying..."},"rewards-address-config":{"title":"Reward Address Configuration","info":"Here you can set to which Skycoin address you want the rewards to be sent. If you leave the address empty, the registration will be deleted and the visor will not receive rewards.","more-info-link":"(More info about the reward system)","address":"Address","address-error":"Please enter a valid Skycoin address.","save-config-button":"Save configuration","done":"Changes saved.","empty-warning":"The address in empty, so the registration will be deleted and no rewards will be received. Do you really want to continue?"},"router-config":{"title":"Router Configuration","info":"Here you can configure how many hops the connections must pass through other Skywire visors before reaching the final destination. NOTE: the changes will not affect the existing routes.","min-hops":"Min hops","min-hops-error":"Please enter a valid number.","save-config-button":"Save configuration","done":"Changes saved."},"nodes":{"title":"Visor list","dmsg-title":"DMSG","rewards-title":"Rewards","services-health-title":"Deployment","network-title":"Network","resources-title":"Resources","transports-title":"Transports","dmsg-settings-title":"DMSG settings","reward-address":"Reward Address","reward-total":"Week Total","reward-distributed":"Distributed","reward-pending":"Pending","rewards-loading":"Loading rewards...","modify-rewards-all":"Change rewards address","update-all":"Update all online visors","hypervisor":"Hypervisor","state":"State","state-tooltip":"Current state","label":"Label","key":"Key","ip":"IP","lan-ip":"LAN IP","public-ip":"Public IP","location":"Location","dmsg-server":"DMSG server","ping":"Ping","version":"Version","config-version":"Config","hypervisor-info":"This visor is the current Hypervisor.","copy-key":"Copy key","copy-dmsg":"Copy DMSG server key","copy-data":"Copy data","view-node":"View visor","delete-node":"Remove visor","delete-all-offline":"Remove all offline visors","error-load":"An error occurred while refreshing the list. Retrying...","empty":"There aren\'t any visors connected to this hypervisor.","empty-with-filter":"No visor matches the selected filtering criteria.","delete-node-confirmation":"Are you sure you want to remove the visor from the list?","delete-all-offline-confirmation":"Are you sure you want to remove all offline visors from the list?","delete-all-filtered-offline-confirmation":"All offline visors satisfying the current filtering criteria will be removed from the list. Are you sure you want to continue?","deleted":"Visor removed.","deleted-singular":"1 offline visor removed.","deleted-plural":"{{ number }} offline visors removed.","no-visors-to-update":"There are no visors to update.","no-visors-to-modify":"There are no visors to modify.","transports":"Transports","services":"Services","reward":"Reward","reward-set":"Reward address set","reward-not-set":"No reward address","ip-location":"IP / Location","visor-version":"Visor","config-label":"Config","filter-dialog":{"online":"The visor must be","label":"The label must contain","key":"The public key must contain","dmsg":"The DMSG server key must contain","online-options":{"any":"Online or offline","online":"Online","offline":"Offline"}}},"network-transports":{"loading":"Fetching transport metrics from TPD\u2026","summary":"{{transports}} transports \xb7 {{bandwidth}} network bandwidth ({{days}} days)","last-updated":"last fetched","days":"Window","view":"View","view-compact":"Compact","view-tree":"Tree","refresh":"Refresh","tp-id":"Transport ID","type":"Type","edge-a":"Edge A","edge-b":"Edge B","sent":"Sent","recv":"Recv","total":"Total","latency":"Latency"},"multi-resources":{"loading":"Polling visor host stats\u2026","summary":"{{count}} visors","last-updated":"last sample","visor":"Visor","cpu":"CPU","mem":"Memory","disk":"Disk","tx":"TX","rx":"RX","proc-rss":"Process RSS"},"services-health":{"loading":"Checking deployment services\u2026","all-ok":"All deployment services operational","degraded":"One or more deployment services are degraded","last-updated":"last checked","service":"Service","status":"Status","latency":"Latency","version":"Version","endpoint":"Endpoint","rsn-section":"Route Setup Nodes","rsn-empty":"No route setup nodes configured.","rsn-pk":"Public Key","rsn-success":"Successful","rsn-failed":"Failed","rsn-rate":"Success rate","rsn-latency-p50":"p50","rsn-latency-p95":"p95","rsn-latency-p99":"p99","rsn-active":"In flight","rsn-last-success":"Last success","rsn-last-failure":"Last failure","rsn-uptime":"Uptime","rsn-failure-reasons":"Top failure reasons","rsn-error":"Unreachable"},"skychat":{"title":"Skychat","connected":"Connected","disconnected":"Disconnected","no-history":"history is disabled (--persist not set)","empty":"No messages yet \u2014 incoming chats from connected peers will appear here.","peers":"Peers","peers-empty":"No peers yet. Send a message or wait for an incoming chat.","to":"Recipient PK","network":"Network","message":"Message","placeholder":"Type a message; Ctrl+Enter to send","send":"Send","password":{"set":"Set password","change":"Change password","clear":"Remove","hide":"Hide","saved":"Skychat password updated","cleared":"Skychat password removed","old":"Current password","new":"New password","confirm":"Repeat new password","help-unset":"Skychat is currently unprotected. Set a password to require basic auth on the standalone :8001 surface; this hypervisor session always bypasses it.","help-set":"A password is set on skychat\'s standalone :8001 surface. Change or remove it here.","errors":{"length":"Skychat password must be 6-64 characters","mismatch":"Passwords do not match","old-required":"Current password is required to remove the gate"}}},"network-view":{"loading":"Aggregating service-discovery, transport-discovery and uptime-tracker\u2026","last-updated":"last fetched","empty":"No visors match the current filters.","search":"Search","country":"Country","version":"Version","min-transports":"Min tps","online-only":"Online only","refresh":"Refresh now","col":{"pk":"PK","country":"Country","version":"Version","services":"Services","total":"Total","status":"UT"},"legend":{"offline":"offline (UT)","not-in-ut":"not in UT","low-transports":"online but <2 stcpr/sudph"}},"dmsg-settings":{"loading":"Loading DMSG session state\u2026","summary":"DMSG client sessions","last-updated":"last updated","connect-all":"Connect to all servers","sessions-count-label":"sessions_count","apply-count":"Apply","sessions":"sessions","no-sessions":"No connected sessions.","no-clients":"No DMSG clients running on this visor.","result-total":"total:","result-already":"already connected:","result-new":"newly connected:","result-failed":"failed"},"bulk-rewards":{"title":"Change reward address","info":"Enter the Skycoin address where you want to receive the rewards. The address will be set on all the selected visors. If you leave the address empty, the registration will be deleted and the visors will not receive rewards. You can also set the reward address of each node individually using the option on the visor details page.","more-info-link":"(More info about the reward system)","address":"New address","select-visors":"Visors to alter:","current-address":"Current address:","not-registered":"None (not registered on the reward program).","checking":"Checking...","error-checking":"Error checking:","processing":"Processing...","error-processing":"Error making the change:","done":"Change done.","perform-changes":"Perform changes","empty-warning":"The address in empty, so the registrations will be deleted and no rewards will be received. Do you really want to continue?"},"edit-label":{"label":"Label","done":"Label saved.","label-removed-warning":"The label was removed."},"settings":{"title":"Settings","checking-auth":"Checking authentication settings.","password":{"initial-config-help":"Use this option for setting the initial password. After a password has been set, it is not possible to use this option to modify it.","help":"Options for changing your password.","old-password":"Old password","new-password":"New password","repeat-password":"Repeat password","password-changed":"Password changed.","error-changing":"Error changing password.","initial-config":{"title":"Set initial password","password":"Password","repeat-password":"Repeat password","set-password":"Set password","done":"Password set. Please use it to access the system.","error":"Error. Please make sure you have not already set the password."},"errors":{"bad-old-password":"The provided old password is not correct.","old-password-required":"Old password is required.","new-password-error":"Password must be 6-64 characters long.","passwords-not-match":"Passwords do not match.","default-password":"Don\'t use the default password (1234)."}},"updater-config":{"open-link":"Show updater settings","open-confirmation":"The updater settings are for experienced users only. Are you sure you want to continue?","help":"Use this form for overriding the settings that will be used by the updater. All empty fields will be ignored. The settings will be used for all updating operations, no mater which element is being updated, so please be careful.","channel":"Channel","version":"Version","archive-url":"Archive URL","checksum-url":"Checksum URL","not-saved":"The changes have not been saved yet.","save":"Save changes","remove-settings":"Remove the settings","saved":"The custom settings have been saved.","removed":"The custom settings have been removed.","save-confirmation":"Are you sure you want to apply the custom settings?","remove-confirmation":"Are you sure you want to remove the custom settings?"},"change-password":"Change password","refresh-rate":"Refresh rate","refresh-rate-help":"Time the system waits to update the data automatically.","refresh-rate-confirmation":"Refresh rate changed.","seconds":"seconds"},"login":{"password":"Password","incorrect-password":"Incorrect password.","initial-config":"Configure initial launch"},"actions":{"menu":{"terminal":"Terminal","config":"Configuration","update":"Update","proxy":"Resolving Proxy","turn-off":"Turn off","logs":"View logs"},"update":{"confirmation":"A terminal will be opened in a new tab and the update procedure will be started automatically. Do you want to continue?"},"turn-off":{"confirmation":"Are you sure you want to turn off the visor?","done":"The visor is shutting down."},"terminal-options":{"full":"Full terminal","simple":"Simple terminal"},"terminal":{"title":"Terminal","input-start":"Skywire terminal for {{address}}","error":"Unexpected error while trying to execute the command."}},"update":{"title":"Update","error-title":"Error","processing":"Looking for updates...","no-update":"There is no update for the visor. The currently installed version is:","no-updates":"No new updates were found.","already-updating":"Some visors are already being updated:","with-error":"It was not possible to check the following visors:","update-available":"The following updates were found:","update-available-singular":"The following updates for 1 visor were found:","update-available-plural":"The following updates for {{ number }} visors were found:","update-available-additional-singular":"The following additional updates for 1 visor were found:","update-available-additional-plural":"The following additional updates for {{ number }} visors were found:","update-instructions":"Click the \'Install updates\' button to continue.","updating":"The update operation has been started, you can open this window again for checking the progress:","version-change":"From {{ currentVersion }} to {{ newVersion }}","selected-channel":"Selected channel:","downloaded-file-name-prefix":"Downloading: ","speed-prefix":"Speed: ","time-downloading-prefix":"Time downloading: ","time-left-prefix":"Aprox. time left: ","starting":"Preparing to update","finished":"Status connection finished","install":"Install updates"},"update-all":{"title":"Update","updatable-list-text":"Please press the buttons of the visors you want to update. A terminal will be opened in a new tab for each visor and the update procedure will be started automatically.","non-updatable-list-text":"The following visors can not be updated via the terminal:","update-button":"Update"},"apps":{"log":{"title":"Log","empty":"There are no log messages for the selected time range.","filter-button":"Only showing logs generated since:","view-all":"View all {{ totalLogs }} entries","filter":{"title":"Filter","filter":"Only show logs generated since","7-days":"The last 7 days","1-month":"The last 30 days","3-months":"The last 3 months","6-months":"The last 6 months","1-year":"The last year","all":"Show all"}},"apps-list":{"title":"Applications","title-official":"Official Applications","title-user":"User Applications","list-title":"Application list","app-name":"Name","port":"Port","state":"State","state-tooltip":"Current state","auto-start":"Auto start","empty-official":"This visor doesn\'t have any official applications.","empty-user":"This visor doesn\'t have any user applications.","empty-with-filter":"No app matches the selected filtering criteria.","disable-autostart":"Disable autostart","enable-autostart":"Enable autostart","autostart-disabled":"Autostart disabled","autostart-enabled":"Autostart enabled","unavailable-logs-error":"Unable to show the logs while the app is not running.","filter-dialog":{"state":"The state must be","name":"The name must contain","port":"The port must contain","autostart":"The autostart must be","state-options":{"any":"Running or stopped","running":"Running","stopped":"Stopped"},"autostart-options":{"any":"Enabled or disabled","enabled":"Enabled","disabled":"Disabled"}}},"user-app-settings":{"title":"{{ name }} (Settings)","info":"Here you can edit the app settings as name-value pairs. Please check the application docs to see which settings and values are supported by this app.","name":"Name {{ number }}","value":"Value {{ number }}","remove":"Remove","add":"Add setting","save":"Save","invalid-confirmation":"One or more settings do not have a name and will be ignored. Do you want to continue?","empty-confirmation":"The settings list is empty. Do you really want to continue?","changes-made":"The changes have been made."},"skychat-settings":{"title":"Skychat Settings","localhost-only":"Allow access from the local machine only","port":"Port","save":"Save","changes-made":"The changes have been made.","port-error":"Must be a valid number between 1025 and 65536.","non-localhost-confirmation":"This will allow to use the app from anywhere on the internet. Are you sure you vant to continue?"},"vpn-socks-server-settings":{"socks-title":"Skysocks Settings","vpn-title":"VPN-Server Settings","whitelist":"Allowed peers (public keys)","whitelist-help":"Comma- or whitespace-separated public keys. Empty = open to all authenticated peers.","whitelist-invalid-pk":"One or more entries is not a valid 66-character hex public key.","netifc":"Default network interface (optional)","secure-mode-check":"Use secure mode","secure-mode-info":"When active, the server doesn\'t allow client/server SSH and doesn\'t allow any traffic from VPN clients to the server local network.","save":"Save","set-whitelist-confirmation":"Apply this whitelist to the server? Only the listed peers will be able to connect.","clear-whitelist-confirmation":"The whitelist is empty. The server will accept connections from any authenticated peer. Continue?","changes-made":"The changes have been made."},"vpn-socks-client-settings":{"socks-title":"Skysocks-Client Settings","vpn-title":"VPN-Client Settings","discovery-tab":"Search","remote-visor-tab":"Enter manually","history-tab":"History","settings-tab":"Settings","use":"Use this data","change-note":"Change note","remove-entry":"Remove entry","note":"Note:","note-entered-manually":"Entered manually","note-obtained":"Obtained from the discovery service","key":"Key:","port":"Port:","location":"Location:","state-available":"Available","state-offline":"Offline","public-key":"Remote visor public key","password":"Password","password-history-warning":"Note: the password will not be saved in the history.","copy-pk-info":"Copy public key.","copied-pk-info":"The public key has been copied.","copy-pk-error":"There was a problem copying the public key.","no-elements":"Currently there are no elements to show. Please try again later.","no-elements-for-filters":"There are no elements that meet the filter criteria.","no-filter":"No filter has been selected","click-to-change":"Click to change","remote-key-length-error":"The public key must be 66 characters long.","remote-key-chars-error":"The public key must only contain hexadecimal characters.","save":"Save","remove-from-history-confirmation":"Are you sure you want to remove the entry from the history?","change-key-confirmation":"Are you sure you want to change the remote visor public key?","changes-made":"The changes have been made.","no-history":"This tab will show the last {{ number }} public keys used.","default-note-warning":"The default note has been used.","pagination-info":"{{ currentElementsRange }} of {{ totalElements }}","dns":"Custom DNS server IP address","dns-error":"Invalid value.","killswitch-check":"Activate killswitch","killswitch-info":"When active, all network connections will be disabled if the app is running but the VPN protection is interrupted (for temporary errors or any other problem). This avoids data leaks.","settings-changed-alert":" The changes have not been saved yet.","save-settings":"Save settings","change-note-dialog":{"title":"Change Note","note":"Note"},"password-dialog":{"title":"Enter Password","password":"Password","info":"You are being asked for a password because a password was set when the selected entry was created, but the it was not saved for security reasons. You can leave the password empty if needed.","continue-button":"Continue"},"filter-dialog":{"title":"Filters","country":"The country must be","any-country":"Any","location":"The location must contain","pub-key":"The public key must contain","apply":"Apply"}},"stop-app":"Stop","start-app":"Start","view-logs":"View logs","settings":"Settings","open":"Open","error":"An error has occured and it was not possible to perform the operation.","stop-confirmation":"Are you sure you want to stop the app?","stop-selected-confirmation":"Are you sure you want to stop the selected apps?","disable-autostart-confirmation":"Are you sure you want to disable autostart for the app?","enable-autostart-confirmation":"Are you sure you want to enable autostart for the app?","disable-autostart-selected-confirmation":"Are you sure you want to disable autostart for the selected apps?","enable-autostart-selected-confirmation":"Are you sure you want to enable autostart for the selected apps?","operation-completed":"Operation completed.","operation-unnecessary":"The selection already has the requested setting.","status-running":"Running","status-connecting":"Connecting","status-stopped":"Stopped","status-failed":"Ended with the following error: {{ error }}","status-running-tooltip":"App is currently running","status-connecting-tooltip":"App is currently connecting","status-stopped-tooltip":"App is currently stopped","status-failed-tooltip":"The app finished with the following error: {{ error }}"},"transports":{"title":"Transports","info":"Connections you have with remote Skywire visors, to allow local Skywire apps to communicate with apps running on those remote visors.","list-title":"Transport list","offline":"Offline","persistent":"Persistent","persistent-tooltip":"Persistent transports, which are created automatically when the visor is turned on and are automatically recreated in case of disconnection.","persistent-transport-tooltip":"This transport is persistent, so it is created automatically when the visor is turned on and automatically recreated in case of disconnection.","persistent-transport-button-tooltip":"This transport is persistent, so it is created automatically when the visor is turned on and automatically recreated in case of disconnection. Press to make non-persistent.","non-persistent-transport-button-tooltip":"Press to make this transport persistent. Persistent transports are created automatically when the visor is turned on and automatically recreated in case of disconnection.","make-persistent":"Make persistent","make-non-persistent":"Make non-persistent","make-selected-persistent":"Make all selected persistent","make-selected-non-persistent":"Make all selected non-persistent","changes-made":"Changes made.","no-changes-needed":"No changes were needed.","id":"ID","remote-node":"Remote","type":"Type","latency":"Latency","create":"Create transport","make-persistent-confirmation":"Are you sure you want to make the transport persistent?","make-non-persistent-confirmation":"Are you sure you want to make the transport non-persistent?","make-selected-persistent-confirmation":"Are you sure you want to make the selected transports persistent?","make-selected-non-persistent-confirmation":"Are you sure you want to make the selected transports non-persistent?","make-offline-non-persistent-confirmation":"Are you sure you want to make the transport non-persistent? It will not be shown in the list while offline anymore.","delete-confirmation":"Are you sure you want to delete the transport?","delete-persistent-confirmation":"This transport is persistent, so it may be recreated shortly after deletion. Are you sure you want to delete it?","delete-selected-confirmation":"Are you sure you want to delete the selected transports?","delete":"Delete transport","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any transports.","empty-with-filter":"No transport matches the selected filtering criteria.","details":{"title":"Details","basic":{"title":"Basic info","persistent":"Persistent:","id":"ID:","local-pk":"Local public key:","remote-pk":"Remote public key:","type":"Type:"},"data":{"title":"Data transmission","uploaded":"Uploaded data:","downloaded":"Downloaded data:"}},"dialog":{"remote-key":"Remote public key","label":"Identification name (optional)","transport-type":"Transport type","make-persistent":"Make persistent","persistent-tooltip":"Persistent transports are created automatically when the visor is turned on and automatically recreated in case of disconnection.","only-persistent-created":"The persistent transport was created, but it may have not been activated.","success":"Transport created.","success-without-label":"The transport was created, but it was not possible to save the label.","errors":{"remote-key-length-error":"The remote public key must be 66 characters long.","remote-key-chars-error":"The remote public key must only contain hexadecimal characters.","transport-type-error":"The transport type is required."}},"filter-dialog":{"persistent":"The transport must be","id":"The id must contain","remote-node":"The remote key must contain","persistent-options":{"any":"Any","persistent":"Persistent","non-persistent":"Non-persistent"}}},"routes":{"title":"Routes","info":"Paths used to reach the remote visors to which transports have been established. Routes are automatically generated as needed.","list-title":"Route list","key":"Key","type":"Type","source":"Source","destination":"Destination","local-port":"Local port","remote-port":"Remote port","remote-pk":"Remote","next-rid":"Next RID","next-tp":"Next TP","keep-alive":"Keep-alive","delete-confirmation":"Are you sure you want to delete the route?","delete-selected-confirmation":"Are you sure you want to delete the selected routes?","delete":"Delete route","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any routes.","empty-with-filter":"No route matches the selected filtering criteria.","details":{"title":"Details","basic":{"title":"Basic info","key":"Key:","rule":"Rule:"},"summary":{"title":"Rule summary","keep-alive":"Keep alive:","type":"Rule type:","key-route-id":"Key route ID:"},"specific-fields-titles":{"app":"App fields","forward":"Forward fields","intermediary-forward":"Intermediary forward fields"},"specific-fields":{"route-id":"Next route ID:","transport-id":"Next transport ID:","destination-pk":"Destination public key:","source-pk":"Source public key:","destination-port":"Destination port:","source-port":"Source port:"}},"filter-dialog":{"key":"The key must contain","type":"The type must be","source":"The source must contain","destination":"The destination must contain","any-type-option":"Any"}},"copy":{"tooltip":"Click to copy","tooltip-with-text":"{{ text }} (Click to copy)","copied":"Copied!"},"selection":{"select-all":"Select all","unselect-all":"Unselect all","delete-all":"Delete all selected elements","start-all":"Start all selected apps","stop-all":"Stop all selected apps","enable-autostart-all":"Enable autostart for all selected apps","disable-autostart-all":"Disable autostart for all selected apps"},"refresh-button":{"seconds":"Updated a few seconds ago","minute":"Updated 1 minute ago","minutes":"Updated {{ time }} minutes ago","hour":"Updated 1 hour ago","hours":"Updated {{ time }} hours ago","day":"Updated 1 day ago","days":"Updated {{ time }} days ago","week":"Updated 1 week ago","weeks":"Updated {{ time }} weeks ago","error-tooltip":"There was an error updating the data. Retrying automatically every {{ time }} seconds..."},"view-all-link":{"label":"View all {{ number }} elements"},"paginator":{"first":"First","last":"Last","total":"Total: {{ number }} pages","select-page-title":"Select page"},"confirmation":{"header-text":"Confirmation","confirm-button":"Yes","cancel-button":"No","close":"Close","error-header-text":"Error","done-header-text":"Done"},"language":{"title":"Select language"},"tabs-window":{"title":"Change tab"},"vpn":{"title":"VPN Control Panel","start":"Start","servers":"Servers","settings":"Settings","unnamed":"Unnamed","starting-blocked-server-error":"Unable to connect to the selected server because it has been added to the blocked servers list.","unexpedted-error":"An unexpected error occurred and the operation could not be completed.","remote-access-title":"It appears that you are accessing the system remotely","remote-access-text":"This application only allows you to manage the VPN protection of the device on which it was installed. Changes made with it will not affect remote devices like the one you seem to be using. Also, the displayed IP data may be incorrect.","server-change":{"busy-error":"The system is busy. Please wait.","backend-error":"It was not possible to change the server. Please make sure the public key is correct and the VPN app is running.","already-selected-warning":"The selected server is already being used.","change-server-while-connected-confirmation":"The VPN protection will be interrupted while changing the server and some data may be transmitted unprotected during the process. Do you want to continue?","start-same-server-confirmation":"You had already selected that server. Do you want to connect to it?"},"error-page":{"text":"The VPN client app is not available.","more-info":"It was not possible to connect to the VPN client app. This may be due to a configuration error, an unexpected problem with the visor or because you used an invalid public key in the URL.","text-pk":"Invalid configuration.","more-info-pk":"The application cannot be started because you have not specified the visor public key.","text-storage":"Error saving data.","more-info-storage":"There has been a conflict when trying to save the data and the application has been closed to prevent errors. This could happen if you open the application in more than one tab or window.","text-pk-change":"Invalid operation.","more-info-pk-change":"Please use this application to manage only one VPN client."},"connection-info":{"state-title":"Your connection is currently:","state-connecting":"Connecting","state-connecting-info":"The VPN protection is being activated.","state-connected":"Connected","state-connected-info":"The VPN protection is on.","state-disconnecting":"Disconnecting","state-disconnecting-info":"The VPN protection is being deactivated.","state-reconnecting":"Reconnecting","state-reconnecting-info":"The VPN protection is being restored.","state-disconnected":"Disconnected","state-disconnected-info":"The VPN protection is off.","state-info":"Current connection status.","latency-info":"Current latency.","upload-info":"Upload speed.","download-info":"Download speed."},"connection-error":{"text":"Connection error","info":"Problem connecting with the vpn app. Some data being displayed could be outdated."},"status-page":{"start-title":"Start VPN","no-server":"No server selected!","disconnect":"Disconnect","last-error":"Last error:","unknown-error":"Unknown error.","disconnect-confirmation":"Are you sure you want to stop the VPN protection?","upload-info":"Uploaded data stats.","download-info":"Downloaded data stats.","latency-info":"Latency stats.","total-data-label":"total","problem-connecting-error":"It was not possible to connect to the server. The server may be invalid or temporarily down.","problem-starting-error":"It was not possible to start the VPN. Please make sure the base VPN client app is running.","problem-stopping-error":"It was not possible to stop the VPN. Please make sure the base VPN client app is running.","generic-problem-error":"It was not possible to perform the operation. Please make sure the base VPN client app is running.","select-server-warning":"Please select a server first.","data":{"ip":"IP address:","ip-problem-info":"There was a problem trying to get the IP. Please verify it using an external service.","ip-country-problem-info":"There was a problem trying to get the country. Please verify it using an external service.","ip-refresh-info":"Refresh","ip-refresh-time-warning":"Please wait {{ seconds }} second(s) before refreshing the data.","ip-refresh-loading-warning":"Please wait for the previous operation to finish.","country":"Country:","server":"Server:","server-note":"Server note:","original-server-note":"Original server note:","local-pk":"Local visor public key:","remote-pk":"Remote visor public key:","unavailable":"Unavailable"}},"server-options":{"tooltip":"Options","connect-without-password":"Connect without password","connect-without-password-confirmation":"The connection will be made without the password. Are you sure you want to continue?","connect-using-password":"Connect using a password","connect-using-another-password":"Connect using another password","edit-name":"Custom name","edit-label":"Custom note","make-favorite":"Make favorite","make-favorite-confirmation":"Are you sure you want to mark this server as favorite? It will be removed from the blocked list.","make-favorite-done":"Added to the favorites list.","remove-from-favorites":"Remove from favorites","remove-from-favorites-done":"Removed from the favorites list.","block":"Block server","block-done":"Added to the blocked list.","block-confirmation":"Are you sure you want to block this server? It will be removed from the favorites list.","block-selected-confirmation":"Are you sure you want to block the currently selected server? All connections will be closed.","block-selected-favorite-confirmation":"Are you sure you want to block the currently selected server? All connections will be closed and it will be removed from the favorites list.","unblock":"Unblock server","unblock-done":"Removed from the blocked list.","remove-from-history":"Remove from history","remove-from-history-confirmation":"Are you sure you want to remove this server from the history?","remove-from-history-done":"Removed from history.","edit-value":{"name-title":"Custom Name","note-title":"Custom Note","name-label":"Custom name","note-label":"Custom note","apply-button":"Apply","changes-made-confirmation":"The change has been made."}},"server-conditions":{"selected-info":"This is the currently selected server.","blocked-info":"This server is in the blocked list.","favorite-info":"This server is in the favorites list.","history-info":"This server is in the server history.","has-password-info":"A password was set for connecting with this server."},"server-list":{"date-small-table-label":"Date","date-info":"Last time you used this server.","country-small-table-label":"Country","country-info":"Country where the server is located.","name-small-table-label":"Name","location-small-table-label":"Location","public-key-small-table-label":"Pk","public-key-info":"Server public key.","congestion-rating-small-table-label":"Congestion rating","congestion-rating-info":"Rating of the server related to how congested it tends to be.","congestion-small-table-label":"Congestion","congestion-info":"Current server congestion.","latency-rating-small-table-label":"Latency rating","latency-rating-info":"Rating of the server related to how much latency it tends to have.","latency-small-table-label":"Latency","latency-info":"Current server latency.","hops-small-table-label":"Hops","hops-info":"How many hops are needed for connecting with the server.","note-small-table-label":"Note","note-info":"Note about the server.","gold-rating-info":"Gold","silver-rating-info":"Silver","bronze-rating-info":"Bronze","notes-info":"Custom note: {{ custom }} - Original note: {{ original }}","empty-discovery":"Currently there are no VPN servers to show. Please try again later.","empty-history":"There is no history to show.","empty-favorites":"There are no favorite servers to show.","empty-blocked":"There are no blocked servers to show.","empty-with-filter":"No VPN server matches the selected filtering criteria.","add-manually-info":"Add server manually.","current-filters":"Current filters (press to remove)","none":"None","unknown":"Unknown","tabs":{"public":"Public","history":"History","favorites":"Favorites","blocked":"Blocked"},"add-server-dialog":{"title":"Enter manually","pk-label":"Server public key","password-label":"Server password (if any)","name-label":"Server name (optional)","note-label":"Personal note (optional)","pk-length-error":"The public key must be 66 characters long.","pk-chars-error":"The public key must only contain hexadecimal characters.","use-server-button":"Use server"},"password-dialog":{"title":"Enter Password","password-if-any-label":"Server password (if any)","password-label":"Server password","continue-button":"Continue"},"filter-dialog":{"country":"The country must be","name":"The name must contain","location":"The location must contain","public-key":"The public key must contain","congestion-rating":"The congestion rating must be","latency-rating":"The latency rating must be","rating-options":{"any":"Any","gold":"Gold","silver":"Silver","bronze":"Bronze"},"country-options":{"any":"Any"}}},"settings-page":{"setting-small-table-label":"Setting","value-small-table-label":"Value","killswitch":"Killswitch","killswitch-info":"When active, all network connections will be disabled if the app is running but the VPN protection is interrupted (for temporary errors or any other problem). This avoids data leaks.","get-ip":"Get IP info","get-ip-info":"When active, the application will use external services to obtain information about the current IP.","data-units":"Data units","data-units-info":"Allows to select the units that will be used to display the data transmission statistics.","minimum-hops":"Minimum hops","minimum-hops-info":"Allows to set the minimum number of hops the connections must pass through other Skywire visors before reaching the final destination.","dns":"Custom DNS server","dns-info":"Allows to use a custom DNS server, which could improve privacy and prevent sites from being blocked by the default DNS server of your ISP.","setting-none":"None","setting-on":"On","setting-off":"Off","working-warning":"The system is busy. Please wait for the previous operation to finish.","change-while-connected-confirmation":"The VPN protection will be interrupted while changing the setting. Do you want to continue?","data-units-modal":{"title":"Data Units","only-bits":"Bits for all stats","only-bytes":"Bytes for all stats","bits-speed-and-bytes-volume":"Bits for speed and bytes for volume (default)"}},"dns-config":{"title":"Custom DNS server","ip":"Custom DNS server IP address","save-config-button":"Save configuration","done":"Changes saved."}}}')}}]); \ No newline at end of file diff --git a/pkg/visor/static/473.fe39a7ded331ced8.js b/pkg/visor/static/473.fe39a7ded331ced8.js new file mode 100644 index 0000000000..48710c68f1 --- /dev/null +++ b/pkg/visor/static/473.fe39a7ded331ced8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkskywire_manager=self.webpackChunkskywire_manager||[]).push([[473],{473(e){e.exports=JSON.parse('{"common":{"save":"Save","cancel":"Cancel","loading":"Loading\u2026","downloaded":"Downloaded","uploaded":"Uploaded","loading-error":"There was an error getting the data. Retrying...","operation-error":"There was an error trying to complete the operation.","no-connection-error":"There is no internet connection or connection to the Hypervisor.","error":"Error:","refreshed":"Data refreshed.","options":"Options","logout":"Logout","logout-error":"Error logging out.","logout-confirmation":"Are you sure you want to log out?","time-in-ms":"{{ time }}ms.","time-in-segs":"{{ time }}s.","ok":"Ok","yes":"Yes","no":"No","unknown":"Unknown","close":"Close","window-size-error":"The window is too narrow for the content.","data-update-problems":"Problem updating the data.","visors":"visors"},"labeled-element":{"edit-label":"Edit label","remove-label":"Remove label","go-to-settings":"Go to settings","view-all-labels":"View all labels","copy":"Copy","remove-label-confirmation":"Do you really want to remove the label?","unnamed-element":"Unnamed","unnamed-local-visor":"Local visor","local-element":"Local","tooltip":"Click to copy the entry or change the label","tooltip-with-text":"{{ text }} (Click to copy the entry or change the label)"},"labels":{"title":"Labels","info":"Labels you have entered to easily identify visors, transports and other elements, instead of having to read machine generated identifiers.","list-title":"Label list","label":"Label","id":"Element ID","type":"Type","delete-confirmation":"Are you sure you want to delete the label?","delete-selected-confirmation":"Are you sure you want to delete the selected labels?","delete":"Delete label","deleted":"Delete operation completed.","empty":"There aren\'t any saved labels.","empty-with-filter":"No label matches the selected filtering criteria.","filter-dialog":{"label":"The label must contain","id":"The id must contain","type":"The type must be","type-options":{"any":"Any","visor":"Visor","dmsg-server":"DMSG server","transport":"Transport"}}},"filters":{"filter-action":"Filter","filter-info":"Filter list.","press-to-remove":"(Press to remove the filters)","remove-confirmation":"Are you sure you want to remove the filters?"},"tables":{"title":"Order by","sorting-title":"Ordered by:","sort-by-value":"Value","sort-by-label":"Label","label":"(label)","inverted-order":"(inverted)"},"start":{"title":"Start","loading-error":"An error occurred while getting the initial data. Retrying..."},"node":{"title":"Visor details","not-found":"Visor not found.","resource-monitor":{"title":"Resource monitor","tab-host":"Host","tab-process":"Process","cpu":"CPU","memory":"Memory","disk":"Disk","net-rx":"Net rx","net-tx":"Net tx","threads":"Threads","heap":"Heap","goroutines":"Goroutines","gc":"GC rate"},"logs":{"title":"Runtime Logs","no-logs":"No runtime logs were found for this visor.","no-logs-for-filter":"No runtime logs matches the selected filter.","view-all":"View all logs in raw format >","view-rest":"View all {{ number }} elements in raw format >","selected-filter":"Showing:","filter-ignored":"The filter excluded {{ number }} entries","filter-title":"Filter","filter-all":"All logs","filter-debug":"Debug or more important","filter-info":"Info or more important","filter-warning":"Warning or more important","filter-error":"Error or more important","filter-faltal":"Faltal or more important","filter-panic":"Panic","live-on":"Live (pause)","live-off":"Paused (live)","dropped":"Skipped {{ count }} older entries that aged out of the visor\'s runtime buffer."},"statuses":{"online":"Online","online-tooltip":"The visor is online.","connecting":"Connecting","connecting-tooltip":"The visor is online, but still connecting to the uptime tracker.","unknown":"Unknown","unknown-tooltip":"The visor is online, but it has not been possible to determine if it is connected to the uptime tracker.","partially-online":"Online with problems","partially-online-tooltip":"The visor is online, but disconnected from the uptime tracker.","offline":"Offline","offline-tooltip":"The visor is offline."},"details":{"node-info":{"title":"Visor","title-local":"Local Visor","label":"Label:","public-key":"Public key:","symmetic-nat":"Symmetic NAT:","public-ip":"Public IP:","ip":"IP:","dmsg-servers":"DMSG servers:","connected":"connected","no-dmsg-server":"Not connected","ping":"Ping:","node-version":"Visor version:","config-version":"Config version:","os":"OS:","arch":"Architecture:","skybian-version":"Skybian version:","time":{"title":"Time online:","seconds":"a few seconds","minute":"1 minute","minutes":"{{ time }} minutes","hour":"1 hour","hours":"{{ time }} hours","day":"1 day","days":"{{ time }} days","week":"1 week","weeks":"{{ time }} weeks"}},"rewards-info":{"title":"Rewards","rewards-address":"Reward address:","not-registered":"Not registered","not-registered-info":"You have not specified a Skycoin address for receiving rewards for this visor. If you want to register the visor for receiving rewards, press the \\"Set address\\" button and set a Skycoin address.","open-in-explorer":"Open in blockchain explorer","set-address-button":"Set address","change-address-button":"Change address","show-rules":"Reward rules (embedded mainnet_rules.md)"},"transports-info":{"title":"Transport","total":"Total:","autoconnect":"Autoconnect:","autoconnect-info":"When enabled, the visor will automatically create the transports needed when a connection to a public visor is requested. If disabled, the transports will have to be created before being able to make the connection.","enabled":"Enabled","disabled":"Disabled","enable-button":"Enable","disable-button":"Disable","enable-confirmation":"Are you sure you want to enable the autoconnect feature?","disable-confirmation":"Are you sure you want to disable the autoconnect feature?","enable-done":"The autoconnect feature has been enabled.","disable-done":"The autoconnect feature has been disabled.","is-public":"Public Visor:","is-public-info":"When enabled, this visor registers as a public relay for other visors","public-enabled":"Enabled","public-disabled":"Disabled","public-enable-button":"Enable","public-disable-button":"Disable","public-enable-confirmation":"Are you sure you want to make this visor public?","public-disable-confirmation":"Are you sure you want to make this visor private?","public-enable-done":"This visor is now public.","public-disable-done":"This visor is now private."},"router-info":{"title":"Router","min-hops":"Min hops:","max-hops":"Max hops:","change-config-button":"Change configuration"},"node-health":{"title":"Health","services":"Services:","uptime-tracker":"Uptime tracker:","autoconnect":"Autoconnect:","transportability":"Transportability:","connected":"Connected","disconnected":"Disconnected"},"ports":{"title":"Ports"},"config":{"view-button":"View Config","title":"Runtime Configuration","edit":"Edit","save":"Save","restart-hint":"Visor must be restarted for changes to take effect."},"tpviz":{"title":"Network Visualizer","open":"Open Transport Visualizer"},"node-traffic-data":"Traffic data"},"tabs":{"info":"Info","apps":"Apps","routing":"Routing","transports":"Transports","bandwidth":"Bandwidth","uptime":"Uptime","rewards":"Rewards","skynet":"Skynet","web-proxy":"Web Proxy","resources":"Resources","terminal":"Terminal","logs":"Logs","chat":"Skychat","dmsg":"DMSG"},"error-load":"An error occurred while refreshing the data. Retrying..."},"rewards-address-config":{"title":"Reward Address Configuration","info":"Here you can set to which Skycoin address you want the rewards to be sent. If you leave the address empty, the registration will be deleted and the visor will not receive rewards.","more-info-link":"(More info about the reward system)","address":"Address","address-error":"Please enter a valid Skycoin address.","save-config-button":"Save configuration","done":"Changes saved.","empty-warning":"The address in empty, so the registration will be deleted and no rewards will be received. Do you really want to continue?"},"router-config":{"title":"Router Configuration","info":"Here you can configure how many hops the connections must pass through other Skywire visors before reaching the final destination. NOTE: the changes will not affect the existing routes.","min-hops":"Min hops","min-hops-error":"Please enter a valid number.","save-config-button":"Save configuration","done":"Changes saved."},"nodes":{"title":"Visor list","dmsg-title":"DMSG","rewards-title":"Rewards","services-health-title":"Deployment","network-title":"Network","resources-title":"Resources","transports-title":"Transports","uptime-title":"Uptime","dmsg-settings-title":"DMSG settings","reward-address":"Reward Address","reward-total":"Week Total","reward-distributed":"Distributed","reward-pending":"Pending","rewards-loading":"Loading rewards...","modify-rewards-all":"Change rewards address","update-all":"Update all online visors","hypervisor":"Hypervisor","state":"State","state-tooltip":"Current state","label":"Label","key":"Key","ip":"IP","lan-ip":"LAN IP","public-ip":"Public IP","location":"Location","dmsg-server":"DMSG server","ping":"Ping","version":"Version","config-version":"Config","hypervisor-info":"This visor is the current Hypervisor.","copy-key":"Copy key","copy-dmsg":"Copy DMSG server key","copy-data":"Copy data","view-node":"View visor","delete-node":"Remove visor","delete-all-offline":"Remove all offline visors","error-load":"An error occurred while refreshing the list. Retrying...","empty":"There aren\'t any visors connected to this hypervisor.","empty-with-filter":"No visor matches the selected filtering criteria.","delete-node-confirmation":"Are you sure you want to remove the visor from the list?","delete-all-offline-confirmation":"Are you sure you want to remove all offline visors from the list?","delete-all-filtered-offline-confirmation":"All offline visors satisfying the current filtering criteria will be removed from the list. Are you sure you want to continue?","deleted":"Visor removed.","deleted-singular":"1 offline visor removed.","deleted-plural":"{{ number }} offline visors removed.","no-visors-to-update":"There are no visors to update.","no-visors-to-modify":"There are no visors to modify.","transports":"Transports","services":"Services","reward":"Reward","reward-set":"Reward address set","reward-not-set":"No reward address","ip-location":"IP / Location","visor-version":"Visor","config-label":"Config","filter-dialog":{"online":"The visor must be","label":"The label must contain","key":"The public key must contain","dmsg":"The DMSG server key must contain","online-options":{"any":"Online or offline","online":"Online","offline":"Offline"}}},"network-transports":{"loading":"Fetching transport metrics from TPD\u2026","summary":"{{transports}} transports \xb7 {{bandwidth}} network bandwidth ({{days}} days)","last-updated":"last fetched","days":"Window","view":"View","view-compact":"Compact","view-tree":"Tree","edges":"Edges","edges-show":"Show","edges-hide":"Hide","offline":"Offline","offline-show":"Show","offline-hide":"Hide","offline-count-tooltip":"Number of this visor\'s transports that TPD currently considers offline","refresh":"Refresh","tp-id":"Transport ID","type":"Type","edge-a":"Edge A","edge-b":"Edge B","sent":"Sent","recv":"Recv","total":"Total","latency":"Latency"},"multi-resources":{"loading":"Polling visor host stats\u2026","summary":"{{count}} visors","last-updated":"last sample","visor":"Visor","cpu":"CPU","mem":"Memory","disk":"Disk","tx":"TX","rx":"RX","proc-rss":"Process RSS"},"services-health":{"loading":"Checking deployment services\u2026","all-ok":"All deployment services operational","degraded":"One or more deployment services are degraded","last-updated":"last checked","service":"Service","status":"Status","latency":"Latency","version":"Version","endpoint":"Endpoint","rsn-section":"Route Setup Nodes","rsn-empty":"No route setup nodes configured.","rsn-pk":"Public Key","rsn-success":"Successful","rsn-failed":"Failed","rsn-rate":"Success rate","rsn-latency-p50":"p50","rsn-latency-p95":"p95","rsn-latency-p99":"p99","rsn-active":"In flight","rsn-last-success":"Last success","rsn-last-failure":"Last failure","rsn-uptime":"Uptime","rsn-failure-reasons":"Top failure reasons","rsn-error":"Unreachable"},"terminal":{"help":"Live shell on the visor (dmsgpty). Ctrl+D or type \\"exit\\" to close.","open-fullscreen":"Open in new window"},"web-proxy":{"title":"Resolving Proxy","help":"Browse .skynet and .dmsg domains. Optionally route all other traffic through an upstream SOCKS5 proxy (e.g. skysocks).","loading":"Reading proxy state\u2026","resolver":"Resolver","running":"Running","socks-addr":"SOCKS","upstream":"Upstream","enable":"Enable resolving proxy (.skynet + .dmsg)","upstream-label":"Upstream SOCKS5 (e.g. 127.0.0.1:1080)","set":"Set","refresh":"Refresh"},"logs":{"loading":"Loading runtime logs\u2026","empty":"No log entries match the current filter.","filter":"Filter","pause":"Pause","resume":"Resume","open-raw":"Open raw logs","view-rest":"View all {{number}} entries in raw format >","dropped":"Skipped {{count}} older entries that aged out of the visor\'s runtime buffer."},"bandwidth":{"loading":"Reading local transport stats\u2026","empty":"No transport bandwidth recorded yet.","transports":"transports","total":"total","last-updated":"fetched","window":"Window","window-now":"Now","refresh":"Refresh","current-snapshot":"Current snapshot","daily-history":"Daily history","no-history":"No daily rollups recorded yet.","date":"Date","sent":"Sent","recv":"Recv","samples":"Samples","latency-current":"Latency (min/avg/max)","latency-min-avg-max":"Lat min/avg/max","sampled-at":"Sampled at"},"uptime":{"loading":"Reading local uptime bitmaps\u2026","empty":"No uptime data recorded yet.","tiers":"tiers","today":"today","window-avg":"Window avg","last-updated":"fetched","window":"Window","window-now":"Today","refresh":"Refresh","tier-process":"Process","tier-process-info":"Visor process up \u2014 local sampler ticked.","tier-dmsg":"DMSG","tier-dmsg-info":"DMSG client has at least one server session.","tier-skynet":"Skynet","tier-skynet-info":"\u2265 2 live transports \u2014 visor is routable through Skynet (matches TPD\'s \'skynet online\' criterion).","online":"online","offline":"offline","legend":"Legend","legend-down":"down","legend-up":"up","legend-future":"future","loading-fleet":"Reading TPD uptime feed\u2026","fleet-empty":"No connected visors reporting uptime.","fleet-filter":"Filter","fleet-filter-connected":"Only connected to this hypervisor","fleet-filter-all":"All visible visors","fleet-visor":"Visor","fleet-process":"Process %","fleet-dmsg":"DMSG %","fleet-skynet":"Skynet %","today-pct":"Today %"},"skychat":{"title":"Skychat","connected":"Connected","disconnected":"Disconnected","no-history":"history is disabled (--persist not set)","empty":"No messages yet \u2014 incoming chats from connected peers will appear here.","peers":"Peers","peers-empty":"No peers yet. Send a message or wait for an incoming chat.","to":"Recipient PK","network":"Network","message":"Message","placeholder":"Type a message; Ctrl+Enter to send","send":"Send","password":{"set":"Set password","change":"Change password","clear":"Remove","hide":"Hide","saved":"Skychat password updated","cleared":"Skychat password removed","old":"Current password","new":"New password","confirm":"Repeat new password","help-unset":"Skychat is currently unprotected. Set a password to require basic auth on the standalone :8001 surface; this hypervisor session always bypasses it.","help-set":"A password is set on skychat\'s standalone :8001 surface. Change or remove it here.","errors":{"length":"Skychat password must be 6-64 characters","mismatch":"Passwords do not match","old-required":"Current password is required to remove the gate"}}},"network-view":{"loading":"Aggregating service-discovery, transport-discovery and uptime-tracker\u2026","last-updated":"last fetched","empty":"No visors match the current filters.","search":"Search","country":"Country","version":"Version","min-transports":"Min tps","online-only":"Online only","refresh":"Refresh now","col":{"pk":"PK","country":"Country","version":"Version","services":"Services","total":"Total","status":"UT"},"legend":{"offline":"offline (UT)","not-in-ut":"not in UT","low-transports":"online but <2 stcpr/sudph"}},"dmsg-settings":{"loading":"Loading DMSG session state\u2026","summary":"DMSG client sessions","last-updated":"last updated","connect-all":"Connect to all servers","sessions-count-label":"sessions_count","apply-count":"Apply","sessions":"sessions","no-sessions":"No connected sessions.","no-clients":"No DMSG clients running on this visor.","result-total":"total:","result-already":"already connected:","result-new":"newly connected:","result-failed":"failed"},"bulk-rewards":{"title":"Change reward address","info":"Enter the Skycoin address where you want to receive the rewards. The address will be set on all the selected visors. If you leave the address empty, the registration will be deleted and the visors will not receive rewards. You can also set the reward address of each node individually using the option on the visor details page.","more-info-link":"(More info about the reward system)","address":"New address","select-visors":"Visors to alter:","current-address":"Current address:","not-registered":"None (not registered on the reward program).","checking":"Checking...","error-checking":"Error checking:","processing":"Processing...","error-processing":"Error making the change:","done":"Change done.","perform-changes":"Perform changes","empty-warning":"The address in empty, so the registrations will be deleted and no rewards will be received. Do you really want to continue?"},"edit-label":{"label":"Label","done":"Label saved.","label-removed-warning":"The label was removed."},"settings":{"title":"Settings","checking-auth":"Checking authentication settings.","password":{"initial-config-help":"Use this option for setting the initial password. After a password has been set, it is not possible to use this option to modify it.","help":"Options for changing your password.","old-password":"Old password","new-password":"New password","repeat-password":"Repeat password","password-changed":"Password changed.","error-changing":"Error changing password.","initial-config":{"title":"Set initial password","password":"Password","repeat-password":"Repeat password","set-password":"Set password","done":"Password set. Please use it to access the system.","error":"Error. Please make sure you have not already set the password."},"errors":{"bad-old-password":"The provided old password is not correct.","old-password-required":"Old password is required.","new-password-error":"Password must be 6-64 characters long.","passwords-not-match":"Passwords do not match.","default-password":"Don\'t use the default password (1234)."}},"updater-config":{"open-link":"Show updater settings","open-confirmation":"The updater settings are for experienced users only. Are you sure you want to continue?","help":"Use this form for overriding the settings that will be used by the updater. All empty fields will be ignored. The settings will be used for all updating operations, no mater which element is being updated, so please be careful.","channel":"Channel","version":"Version","archive-url":"Archive URL","checksum-url":"Checksum URL","not-saved":"The changes have not been saved yet.","save":"Save changes","remove-settings":"Remove the settings","saved":"The custom settings have been saved.","removed":"The custom settings have been removed.","save-confirmation":"Are you sure you want to apply the custom settings?","remove-confirmation":"Are you sure you want to remove the custom settings?"},"change-password":"Change password","refresh-rate":"Refresh rate","refresh-rate-help":"Time the system waits to update the data automatically.","refresh-rate-confirmation":"Refresh rate changed.","seconds":"seconds"},"login":{"password":"Password","incorrect-password":"Incorrect password.","initial-config":"Configure initial launch"},"actions":{"menu":{"terminal":"Terminal","config":"Configuration","update":"Update","proxy":"Resolving Proxy","turn-off":"Turn off","logs":"View logs"},"update":{"confirmation":"A terminal will be opened in a new tab and the update procedure will be started automatically. Do you want to continue?"},"turn-off":{"confirmation":"Are you sure you want to turn off the visor?","done":"The visor is shutting down."},"terminal-options":{"full":"Full terminal","simple":"Simple terminal"},"terminal":{"title":"Terminal","input-start":"Skywire terminal for {{address}}","error":"Unexpected error while trying to execute the command."}},"update":{"title":"Update","error-title":"Error","processing":"Looking for updates...","no-update":"There is no update for the visor. The currently installed version is:","no-updates":"No new updates were found.","already-updating":"Some visors are already being updated:","with-error":"It was not possible to check the following visors:","update-available":"The following updates were found:","update-available-singular":"The following updates for 1 visor were found:","update-available-plural":"The following updates for {{ number }} visors were found:","update-available-additional-singular":"The following additional updates for 1 visor were found:","update-available-additional-plural":"The following additional updates for {{ number }} visors were found:","update-instructions":"Click the \'Install updates\' button to continue.","updating":"The update operation has been started, you can open this window again for checking the progress:","version-change":"From {{ currentVersion }} to {{ newVersion }}","selected-channel":"Selected channel:","downloaded-file-name-prefix":"Downloading: ","speed-prefix":"Speed: ","time-downloading-prefix":"Time downloading: ","time-left-prefix":"Aprox. time left: ","starting":"Preparing to update","finished":"Status connection finished","install":"Install updates"},"update-all":{"title":"Update","updatable-list-text":"Please press the buttons of the visors you want to update. A terminal will be opened in a new tab for each visor and the update procedure will be started automatically.","non-updatable-list-text":"The following visors can not be updated via the terminal:","update-button":"Update"},"apps":{"log":{"title":"Log","empty":"There are no log messages for the selected time range.","filter-button":"Only showing logs generated since:","view-all":"View all {{ totalLogs }} entries","filter":{"title":"Filter","filter":"Only show logs generated since","7-days":"The last 7 days","1-month":"The last 30 days","3-months":"The last 3 months","6-months":"The last 6 months","1-year":"The last year","all":"Show all"}},"apps-list":{"title":"Applications","title-official":"Official Applications","title-user":"User Applications","list-title":"Application list","app-name":"Name","port":"Port","state":"State","state-tooltip":"Current state","auto-start":"Auto start","empty-official":"This visor doesn\'t have any official applications.","empty-user":"This visor doesn\'t have any user applications.","empty-with-filter":"No app matches the selected filtering criteria.","disable-autostart":"Disable autostart","enable-autostart":"Enable autostart","autostart-disabled":"Autostart disabled","autostart-enabled":"Autostart enabled","unavailable-logs-error":"Unable to show the logs while the app is not running.","filter-dialog":{"state":"The state must be","name":"The name must contain","port":"The port must contain","autostart":"The autostart must be","state-options":{"any":"Running or stopped","running":"Running","stopped":"Stopped"},"autostart-options":{"any":"Enabled or disabled","enabled":"Enabled","disabled":"Disabled"}}},"user-app-settings":{"title":"{{ name }} (Settings)","info":"Here you can edit the app settings as name-value pairs. Please check the application docs to see which settings and values are supported by this app.","name":"Name {{ number }}","value":"Value {{ number }}","remove":"Remove","add":"Add setting","save":"Save","invalid-confirmation":"One or more settings do not have a name and will be ignored. Do you want to continue?","empty-confirmation":"The settings list is empty. Do you really want to continue?","changes-made":"The changes have been made."},"skychat-settings":{"title":"Skychat Settings","listener-section":"Listener","localhost-only":"Allow access from the local machine only","port":"Port (--port routing)","skynet":"Listen on Skynet (--skynet)","skynet-info":"Accept connections via the Skynet network. Disable to be reachable only on DMSG.","dmsg":"Listen on DMSG (--dmsg)","dmsg-info":"Accept connections via the DMSG network. Disable to be reachable only on Skynet.","persistence-section":"Persistence","persistence-help":"When enabled, skychat stores message history in a local BoltDB. All limits below have safe defaults; leave a field empty to use the binary\'s default.","persist-enable":"Enable persistence (--persist)","persist-max-size":"Max message size, bytes (--persist-max-size)","persist-max-size-hint":"Default 4096","persist-per-peer-rate":"Per-peer rate, msgs/min (--persist-per-peer-rate)","persist-per-peer-rate-hint":"Default 20","persist-per-peer-cap":"Per-peer cap, msgs (--persist-per-peer-cap)","persist-per-peer-cap-hint":"FIFO eviction; default 500","persist-total-cap":"Total cap, MB (--persist-total-cap)","persist-total-cap-hint":"Default 10","persist-ttl":"TTL, days (--persist-ttl)","persist-ttl-hint":"0 disables sweep; default 30","persist-seed":"SSE seed count (--persist-seed)","persist-seed-hint":"Recent messages sent to new SSE clients; 0 disables. Default 50","pairing-section":"Pairing","pair-enable":"Enable CXO pair feeds (--pair-enable)","pair-enable-info":"Per-partner CXO pair feeds + handshake (HTTP /pair endpoints).","save":"Save","changes-made":"The changes have been made.","port-error":"Must be a valid number between 1025 and 65536.","non-localhost-confirmation":"This will allow to use the app from anywhere on the internet. Are you sure you vant to continue?"},"vpn-socks-server-settings":{"socks-title":"Skysocks Settings","vpn-title":"VPN-Server Settings","whitelist":"Allowed peers (public keys)","whitelist-help":"Comma- or whitespace-separated public keys. Empty = open to all authenticated peers.","whitelist-invalid-pk":"One or more entries is not a valid 66-character hex public key.","netifc":"Default network interface (optional)","secure-mode-check":"Use secure mode","secure-mode-info":"When active, the server doesn\'t allow client/server SSH and doesn\'t allow any traffic from VPN clients to the server local network.","save":"Save","set-whitelist-confirmation":"Apply this whitelist to the server? Only the listed peers will be able to connect.","clear-whitelist-confirmation":"The whitelist is empty. The server will accept connections from any authenticated peer. Continue?","changes-made":"The changes have been made."},"vpn-socks-client-settings":{"socks-title":"Skysocks-Client Settings","vpn-title":"VPN-Client Settings","discovery-tab":"Search","remote-visor-tab":"Enter manually","history-tab":"History","settings-tab":"Settings","use":"Use this data","change-note":"Change note","remove-entry":"Remove entry","note":"Note:","note-entered-manually":"Entered manually","note-obtained":"Obtained from the discovery service","key":"Key:","port":"Port:","location":"Location:","state-available":"Available","state-offline":"Offline","public-key":"Remote visor public key","password":"Password","password-history-warning":"Note: the password will not be saved in the history.","copy-pk-info":"Copy public key.","copied-pk-info":"The public key has been copied.","copy-pk-error":"There was a problem copying the public key.","no-elements":"Currently there are no elements to show. Please try again later.","no-elements-for-filters":"There are no elements that meet the filter criteria.","no-filter":"No filter has been selected","click-to-change":"Click to change","remote-key-length-error":"The public key must be 66 characters long.","remote-key-chars-error":"The public key must only contain hexadecimal characters.","save":"Save","remove-from-history-confirmation":"Are you sure you want to remove the entry from the history?","change-key-confirmation":"Are you sure you want to change the remote visor public key?","changes-made":"The changes have been made.","no-history":"This tab will show the last {{ number }} public keys used.","default-note-warning":"The default note has been used.","pagination-info":"{{ currentElementsRange }} of {{ totalElements }}","dns":"Custom DNS server IP address","dns-error":"Invalid value.","killswitch-check":"Activate killswitch","killswitch-info":"When active, all network connections will be disabled if the app is running but the VPN protection is interrupted (for temporary errors or any other problem). This avoids data leaks.","settings-changed-alert":" The changes have not been saved yet.","save-settings":"Save settings","addr":"Listener address (--addr)","addr-hint":"Where the SOCKS5 server listens locally (default: 127.0.0.1:1080)","http":"HTTP proxy address (--http)","http-hint":"When set, also expose an HTTP-CONNECT proxy on this address","tries":"Connection retries (--tries)","tries-hint":"Number of attempts before giving up (default: 3)","retry-time":"Retry delay seconds (--retry-time)","retry-time-hint":"Wait between retry attempts (default: 5)","change-note-dialog":{"title":"Change Note","note":"Note"},"password-dialog":{"title":"Enter Password","password":"Password","info":"You are being asked for a password because a password was set when the selected entry was created, but the it was not saved for security reasons. You can leave the password empty if needed.","continue-button":"Continue"},"filter-dialog":{"title":"Filters","country":"The country must be","any-country":"Any","location":"The location must contain","pub-key":"The public key must contain","apply":"Apply"}},"stop-app":"Stop","start-app":"Start","view-logs":"View logs","settings":"Settings","open":"Open","error":"An error has occured and it was not possible to perform the operation.","stop-confirmation":"Are you sure you want to stop the app?","stop-selected-confirmation":"Are you sure you want to stop the selected apps?","disable-autostart-confirmation":"Are you sure you want to disable autostart for the app?","enable-autostart-confirmation":"Are you sure you want to enable autostart for the app?","disable-autostart-selected-confirmation":"Are you sure you want to disable autostart for the selected apps?","enable-autostart-selected-confirmation":"Are you sure you want to enable autostart for the selected apps?","operation-completed":"Operation completed.","operation-unnecessary":"The selection already has the requested setting.","status-running":"Running","status-connecting":"Connecting","status-stopped":"Stopped","status-failed":"Ended with the following error: {{ error }}","status-running-tooltip":"App is currently running","status-connecting-tooltip":"App is currently connecting","status-stopped-tooltip":"App is currently stopped","status-failed-tooltip":"The app finished with the following error: {{ error }}"},"transports":{"title":"Transports","info":"Connections you have with remote Skywire visors, to allow local Skywire apps to communicate with apps running on those remote visors.","list-title":"Transport list","offline":"Offline","persistent":"Persistent","persistent-tooltip":"Persistent transports, which are created automatically when the visor is turned on and are automatically recreated in case of disconnection.","persistent-transport-tooltip":"This transport is persistent, so it is created automatically when the visor is turned on and automatically recreated in case of disconnection.","persistent-transport-button-tooltip":"This transport is persistent, so it is created automatically when the visor is turned on and automatically recreated in case of disconnection. Press to make non-persistent.","non-persistent-transport-button-tooltip":"Press to make this transport persistent. Persistent transports are created automatically when the visor is turned on and automatically recreated in case of disconnection.","make-persistent":"Make persistent","make-non-persistent":"Make non-persistent","make-selected-persistent":"Make all selected persistent","make-selected-non-persistent":"Make all selected non-persistent","changes-made":"Changes made.","no-changes-needed":"No changes were needed.","id":"ID","remote-node":"Remote","type":"Type","latency":"Latency","create":"Create transport","make-persistent-confirmation":"Are you sure you want to make the transport persistent?","make-non-persistent-confirmation":"Are you sure you want to make the transport non-persistent?","make-selected-persistent-confirmation":"Are you sure you want to make the selected transports persistent?","make-selected-non-persistent-confirmation":"Are you sure you want to make the selected transports non-persistent?","make-offline-non-persistent-confirmation":"Are you sure you want to make the transport non-persistent? It will not be shown in the list while offline anymore.","delete-confirmation":"Are you sure you want to delete the transport?","delete-persistent-confirmation":"This transport is persistent, so it may be recreated shortly after deletion. Are you sure you want to delete it?","delete-selected-confirmation":"Are you sure you want to delete the selected transports?","delete":"Delete transport","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any transports.","empty-with-filter":"No transport matches the selected filtering criteria.","details":{"title":"Details","basic":{"title":"Basic info","persistent":"Persistent:","id":"ID:","local-pk":"Local public key:","remote-pk":"Remote public key:","type":"Type:"},"data":{"title":"Data transmission","uploaded":"Uploaded data:","downloaded":"Downloaded data:"}},"dialog":{"remote-key":"Remote public key","label":"Identification name (optional)","transport-type":"Transport type","make-persistent":"Make persistent","persistent-tooltip":"Persistent transports are created automatically when the visor is turned on and automatically recreated in case of disconnection.","only-persistent-created":"The persistent transport was created, but it may have not been activated.","success":"Transport created.","success-without-label":"The transport was created, but it was not possible to save the label.","errors":{"remote-key-length-error":"The remote public key must be 66 characters long.","remote-key-chars-error":"The remote public key must only contain hexadecimal characters.","transport-type-error":"The transport type is required."}},"filter-dialog":{"persistent":"The transport must be","id":"The id must contain","remote-node":"The remote key must contain","persistent-options":{"any":"Any","persistent":"Persistent","non-persistent":"Non-persistent"}}},"routes":{"title":"Routes","info":"Paths used to reach the remote visors to which transports have been established. Routes are automatically generated as needed.","list-title":"Route list","key":"Key","type":"Type","source":"Source","destination":"Destination","local-port":"Local port","remote-port":"Remote port","remote-pk":"Remote","next-rid":"Next RID","next-tp":"Next TP","keep-alive":"Keep-alive","delete-confirmation":"Are you sure you want to delete the route?","delete-selected-confirmation":"Are you sure you want to delete the selected routes?","delete":"Delete route","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any routes.","empty-with-filter":"No route matches the selected filtering criteria.","details":{"title":"Details","basic":{"title":"Basic info","key":"Key:","rule":"Rule:"},"summary":{"title":"Rule summary","keep-alive":"Keep alive:","type":"Rule type:","key-route-id":"Key route ID:"},"specific-fields-titles":{"app":"App fields","forward":"Forward fields","intermediary-forward":"Intermediary forward fields"},"specific-fields":{"route-id":"Next route ID:","transport-id":"Next transport ID:","destination-pk":"Destination public key:","source-pk":"Source public key:","destination-port":"Destination port:","source-port":"Source port:"}},"filter-dialog":{"key":"The key must contain","type":"The type must be","source":"The source must contain","destination":"The destination must contain","any-type-option":"Any"}},"copy":{"tooltip":"Click to copy","tooltip-with-text":"{{ text }} (Click to copy)","copied":"Copied!"},"selection":{"select-all":"Select all","unselect-all":"Unselect all","delete-all":"Delete all selected elements","start-all":"Start all selected apps","stop-all":"Stop all selected apps","enable-autostart-all":"Enable autostart for all selected apps","disable-autostart-all":"Disable autostart for all selected apps"},"refresh-button":{"seconds":"Updated a few seconds ago","minute":"Updated 1 minute ago","minutes":"Updated {{ time }} minutes ago","hour":"Updated 1 hour ago","hours":"Updated {{ time }} hours ago","day":"Updated 1 day ago","days":"Updated {{ time }} days ago","week":"Updated 1 week ago","weeks":"Updated {{ time }} weeks ago","error-tooltip":"There was an error updating the data. Retrying automatically every {{ time }} seconds..."},"view-all-link":{"label":"View all {{ number }} elements"},"paginator":{"first":"First","last":"Last","total":"Total: {{ number }} pages","select-page-title":"Select page"},"confirmation":{"header-text":"Confirmation","confirm-button":"Yes","cancel-button":"No","close":"Close","error-header-text":"Error","done-header-text":"Done"},"language":{"title":"Select language"},"tabs-window":{"title":"Change tab"},"vpn":{"title":"VPN Control Panel","start":"Start","servers":"Servers","settings":"Settings","unnamed":"Unnamed","starting-blocked-server-error":"Unable to connect to the selected server because it has been added to the blocked servers list.","unexpedted-error":"An unexpected error occurred and the operation could not be completed.","remote-access-title":"It appears that you are accessing the system remotely","remote-access-text":"This application only allows you to manage the VPN protection of the device on which it was installed. Changes made with it will not affect remote devices like the one you seem to be using. Also, the displayed IP data may be incorrect.","server-change":{"busy-error":"The system is busy. Please wait.","backend-error":"It was not possible to change the server. Please make sure the public key is correct and the VPN app is running.","already-selected-warning":"The selected server is already being used.","change-server-while-connected-confirmation":"The VPN protection will be interrupted while changing the server and some data may be transmitted unprotected during the process. Do you want to continue?","start-same-server-confirmation":"You had already selected that server. Do you want to connect to it?"},"error-page":{"text":"The VPN client app is not available.","more-info":"It was not possible to connect to the VPN client app. This may be due to a configuration error, an unexpected problem with the visor or because you used an invalid public key in the URL.","text-pk":"Invalid configuration.","more-info-pk":"The application cannot be started because you have not specified the visor public key.","text-storage":"Error saving data.","more-info-storage":"There has been a conflict when trying to save the data and the application has been closed to prevent errors. This could happen if you open the application in more than one tab or window.","text-pk-change":"Invalid operation.","more-info-pk-change":"Please use this application to manage only one VPN client."},"connection-info":{"state-title":"Your connection is currently:","state-connecting":"Connecting","state-connecting-info":"The VPN protection is being activated.","state-connected":"Connected","state-connected-info":"The VPN protection is on.","state-disconnecting":"Disconnecting","state-disconnecting-info":"The VPN protection is being deactivated.","state-reconnecting":"Reconnecting","state-reconnecting-info":"The VPN protection is being restored.","state-disconnected":"Disconnected","state-disconnected-info":"The VPN protection is off.","state-info":"Current connection status.","latency-info":"Current latency.","upload-info":"Upload speed.","download-info":"Download speed."},"connection-error":{"text":"Connection error","info":"Problem connecting with the vpn app. Some data being displayed could be outdated."},"status-page":{"start-title":"Start VPN","no-server":"No server selected!","disconnect":"Disconnect","last-error":"Last error:","unknown-error":"Unknown error.","disconnect-confirmation":"Are you sure you want to stop the VPN protection?","upload-info":"Uploaded data stats.","download-info":"Downloaded data stats.","latency-info":"Latency stats.","total-data-label":"total","problem-connecting-error":"It was not possible to connect to the server. The server may be invalid or temporarily down.","problem-starting-error":"It was not possible to start the VPN. Please make sure the base VPN client app is running.","problem-stopping-error":"It was not possible to stop the VPN. Please make sure the base VPN client app is running.","generic-problem-error":"It was not possible to perform the operation. Please make sure the base VPN client app is running.","select-server-warning":"Please select a server first.","data":{"ip":"IP address:","ip-problem-info":"There was a problem trying to get the IP. Please verify it using an external service.","ip-country-problem-info":"There was a problem trying to get the country. Please verify it using an external service.","ip-refresh-info":"Refresh","ip-refresh-time-warning":"Please wait {{ seconds }} second(s) before refreshing the data.","ip-refresh-loading-warning":"Please wait for the previous operation to finish.","country":"Country:","server":"Server:","server-note":"Server note:","original-server-note":"Original server note:","local-pk":"Local visor public key:","remote-pk":"Remote visor public key:","unavailable":"Unavailable"}},"server-options":{"tooltip":"Options","connect-without-password":"Connect without password","connect-without-password-confirmation":"The connection will be made without the password. Are you sure you want to continue?","connect-using-password":"Connect using a password","connect-using-another-password":"Connect using another password","edit-name":"Custom name","edit-label":"Custom note","make-favorite":"Make favorite","make-favorite-confirmation":"Are you sure you want to mark this server as favorite? It will be removed from the blocked list.","make-favorite-done":"Added to the favorites list.","remove-from-favorites":"Remove from favorites","remove-from-favorites-done":"Removed from the favorites list.","block":"Block server","block-done":"Added to the blocked list.","block-confirmation":"Are you sure you want to block this server? It will be removed from the favorites list.","block-selected-confirmation":"Are you sure you want to block the currently selected server? All connections will be closed.","block-selected-favorite-confirmation":"Are you sure you want to block the currently selected server? All connections will be closed and it will be removed from the favorites list.","unblock":"Unblock server","unblock-done":"Removed from the blocked list.","remove-from-history":"Remove from history","remove-from-history-confirmation":"Are you sure you want to remove this server from the history?","remove-from-history-done":"Removed from history.","edit-value":{"name-title":"Custom Name","note-title":"Custom Note","name-label":"Custom name","note-label":"Custom note","apply-button":"Apply","changes-made-confirmation":"The change has been made."}},"server-conditions":{"selected-info":"This is the currently selected server.","blocked-info":"This server is in the blocked list.","favorite-info":"This server is in the favorites list.","history-info":"This server is in the server history.","has-password-info":"A password was set for connecting with this server."},"server-list":{"date-small-table-label":"Date","date-info":"Last time you used this server.","country-small-table-label":"Country","country-info":"Country where the server is located.","name-small-table-label":"Name","location-small-table-label":"Location","public-key-small-table-label":"Pk","public-key-info":"Server public key.","congestion-rating-small-table-label":"Congestion rating","congestion-rating-info":"Rating of the server related to how congested it tends to be.","congestion-small-table-label":"Congestion","congestion-info":"Current server congestion.","latency-rating-small-table-label":"Latency rating","latency-rating-info":"Rating of the server related to how much latency it tends to have.","latency-small-table-label":"Latency","latency-info":"Current server latency.","hops-small-table-label":"Hops","hops-info":"How many hops are needed for connecting with the server.","note-small-table-label":"Note","note-info":"Note about the server.","gold-rating-info":"Gold","silver-rating-info":"Silver","bronze-rating-info":"Bronze","notes-info":"Custom note: {{ custom }} - Original note: {{ original }}","empty-discovery":"Currently there are no VPN servers to show. Please try again later.","empty-history":"There is no history to show.","empty-favorites":"There are no favorite servers to show.","empty-blocked":"There are no blocked servers to show.","empty-with-filter":"No VPN server matches the selected filtering criteria.","add-manually-info":"Add server manually.","current-filters":"Current filters (press to remove)","none":"None","unknown":"Unknown","tabs":{"public":"Public","history":"History","favorites":"Favorites","blocked":"Blocked"},"add-server-dialog":{"title":"Enter manually","pk-label":"Server public key","password-label":"Server password (if any)","name-label":"Server name (optional)","note-label":"Personal note (optional)","pk-length-error":"The public key must be 66 characters long.","pk-chars-error":"The public key must only contain hexadecimal characters.","use-server-button":"Use server"},"password-dialog":{"title":"Enter Password","password-if-any-label":"Server password (if any)","password-label":"Server password","continue-button":"Continue"},"filter-dialog":{"country":"The country must be","name":"The name must contain","location":"The location must contain","public-key":"The public key must contain","congestion-rating":"The congestion rating must be","latency-rating":"The latency rating must be","rating-options":{"any":"Any","gold":"Gold","silver":"Silver","bronze":"Bronze"},"country-options":{"any":"Any"}}},"settings-page":{"setting-small-table-label":"Setting","value-small-table-label":"Value","killswitch":"Killswitch","killswitch-info":"When active, all network connections will be disabled if the app is running but the VPN protection is interrupted (for temporary errors or any other problem). This avoids data leaks.","get-ip":"Get IP info","get-ip-info":"When active, the application will use external services to obtain information about the current IP.","data-units":"Data units","data-units-info":"Allows to select the units that will be used to display the data transmission statistics.","minimum-hops":"Minimum hops","minimum-hops-info":"Allows to set the minimum number of hops the connections must pass through other Skywire visors before reaching the final destination.","dns":"Custom DNS server","dns-info":"Allows to use a custom DNS server, which could improve privacy and prevent sites from being blocked by the default DNS server of your ISP.","setting-none":"None","setting-on":"On","setting-off":"Off","working-warning":"The system is busy. Please wait for the previous operation to finish.","change-while-connected-confirmation":"The VPN protection will be interrupted while changing the setting. Do you want to continue?","data-units-modal":{"title":"Data Units","only-bits":"Bits for all stats","only-bytes":"Bytes for all stats","bits-speed-and-bytes-volume":"Bits for speed and bytes for volume (default)"}},"dns-config":{"title":"Custom DNS server","ip":"Custom DNS server IP address","save-config-button":"Save configuration","done":"Changes saved."}}}')}}]); \ No newline at end of file diff --git a/pkg/visor/static/assets/i18n/en.json b/pkg/visor/static/assets/i18n/en.json index ea49412e4f..528dcd9871 100644 --- a/pkg/visor/static/assets/i18n/en.json +++ b/pkg/visor/static/assets/i18n/en.json @@ -22,7 +22,8 @@ "unknown": "Unknown", "close": "Close", "window-size-error": "The window is too narrow for the content.", - "data-update-problems": "Problem updating the data." + "data-update-problems": "Problem updating the data.", + "visors": "visors" }, "labeled-element": { @@ -221,7 +222,10 @@ }, "config": { "view-button": "View Config", - "title": "Runtime Configuration" + "title": "Runtime Configuration", + "edit": "Edit", + "save": "Save", + "restart-hint": "Visor must be restarted for changes to take effect." }, "tpviz": { "title": "Network Visualizer", @@ -234,9 +238,14 @@ "apps": "Apps", "routing": "Routing", "transports": "Transports", + "bandwidth": "Bandwidth", + "uptime": "Uptime", "rewards": "Rewards", "skynet": "Skynet", + "web-proxy": "Web Proxy", "resources": "Resources", + "terminal": "Terminal", + "logs": "Logs", "chat": "Skychat", "dmsg": "DMSG" }, @@ -271,6 +280,7 @@ "network-title": "Network", "resources-title": "Resources", "transports-title": "Transports", + "uptime-title": "Uptime", "dmsg-settings-title": "DMSG settings", "reward-address": "Reward Address", "reward-total": "Week Total", @@ -340,6 +350,13 @@ "view": "View", "view-compact": "Compact", "view-tree": "Tree", + "edges": "Edges", + "edges-show": "Show", + "edges-hide": "Hide", + "offline": "Offline", + "offline-show": "Show", + "offline-hide": "Hide", + "offline-count-tooltip": "Number of this visor's transports that TPD currently considers offline", "refresh": "Refresh", "tp-id": "Transport ID", "type": "Type", @@ -391,6 +408,91 @@ "rsn-error": "Unreachable" }, + "terminal": { + "help": "Live shell on the visor (dmsgpty). Ctrl+D or type \"exit\" to close.", + "open-fullscreen": "Open in new window" + }, + + "web-proxy": { + "title": "Resolving Proxy", + "help": "Browse .skynet and .dmsg domains. Optionally route all other traffic through an upstream SOCKS5 proxy (e.g. skysocks).", + "loading": "Reading proxy state…", + "resolver": "Resolver", + "running": "Running", + "socks-addr": "SOCKS", + "upstream": "Upstream", + "enable": "Enable resolving proxy (.skynet + .dmsg)", + "upstream-label": "Upstream SOCKS5 (e.g. 127.0.0.1:1080)", + "set": "Set", + "refresh": "Refresh" + }, + + "logs": { + "loading": "Loading runtime logs…", + "empty": "No log entries match the current filter.", + "filter": "Filter", + "pause": "Pause", + "resume": "Resume", + "open-raw": "Open raw logs", + "view-rest": "View all {{number}} entries in raw format >", + "dropped": "Skipped {{count}} older entries that aged out of the visor's runtime buffer." + }, + + "bandwidth": { + "loading": "Reading local transport stats…", + "empty": "No transport bandwidth recorded yet.", + "transports": "transports", + "total": "total", + "last-updated": "fetched", + "window": "Window", + "window-now": "Now", + "refresh": "Refresh", + "current-snapshot": "Current snapshot", + "daily-history": "Daily history", + "no-history": "No daily rollups recorded yet.", + "date": "Date", + "sent": "Sent", + "recv": "Recv", + "samples": "Samples", + "latency-current": "Latency (min/avg/max)", + "latency-min-avg-max": "Lat min/avg/max", + "sampled-at": "Sampled at" + }, + + "uptime": { + "loading": "Reading local uptime bitmaps…", + "empty": "No uptime data recorded yet.", + "tiers": "tiers", + "today": "today", + "window-avg": "Window avg", + "last-updated": "fetched", + "window": "Window", + "window-now": "Today", + "refresh": "Refresh", + "tier-process": "Process", + "tier-process-info": "Visor process up — local sampler ticked.", + "tier-dmsg": "DMSG", + "tier-dmsg-info": "DMSG client has at least one server session.", + "tier-skynet": "Skynet", + "tier-skynet-info": "≥ 2 live transports — visor is routable through Skynet (matches TPD's 'skynet online' criterion).", + "online": "online", + "offline": "offline", + "legend": "Legend", + "legend-down": "down", + "legend-up": "up", + "legend-future": "future", + "loading-fleet": "Reading TPD uptime feed…", + "fleet-empty": "No connected visors reporting uptime.", + "fleet-filter": "Filter", + "fleet-filter-connected": "Only connected to this hypervisor", + "fleet-filter-all": "All visible visors", + "fleet-visor": "Visor", + "fleet-process": "Process %", + "fleet-dmsg": "DMSG %", + "fleet-skynet": "Skynet %", + "today-pct": "Today %" + }, + "skychat": { "title": "Skychat", "connected": "Connected", @@ -673,8 +775,31 @@ }, "skychat-settings": { "title": "Skychat Settings", + "listener-section": "Listener", "localhost-only": "Allow access from the local machine only", - "port": "Port", + "port": "Port (--port routing)", + "skynet": "Listen on Skynet (--skynet)", + "skynet-info": "Accept connections via the Skynet network. Disable to be reachable only on DMSG.", + "dmsg": "Listen on DMSG (--dmsg)", + "dmsg-info": "Accept connections via the DMSG network. Disable to be reachable only on Skynet.", + "persistence-section": "Persistence", + "persistence-help": "When enabled, skychat stores message history in a local BoltDB. All limits below have safe defaults; leave a field empty to use the binary's default.", + "persist-enable": "Enable persistence (--persist)", + "persist-max-size": "Max message size, bytes (--persist-max-size)", + "persist-max-size-hint": "Default 4096", + "persist-per-peer-rate": "Per-peer rate, msgs/min (--persist-per-peer-rate)", + "persist-per-peer-rate-hint": "Default 20", + "persist-per-peer-cap": "Per-peer cap, msgs (--persist-per-peer-cap)", + "persist-per-peer-cap-hint": "FIFO eviction; default 500", + "persist-total-cap": "Total cap, MB (--persist-total-cap)", + "persist-total-cap-hint": "Default 10", + "persist-ttl": "TTL, days (--persist-ttl)", + "persist-ttl-hint": "0 disables sweep; default 30", + "persist-seed": "SSE seed count (--persist-seed)", + "persist-seed-hint": "Recent messages sent to new SSE clients; 0 disables. Default 50", + "pairing-section": "Pairing", + "pair-enable": "Enable CXO pair feeds (--pair-enable)", + "pair-enable-info": "Per-partner CXO pair feeds + handshake (HTTP /pair endpoints).", "save": "Save", "changes-made": "The changes have been made.", "port-error": "Must be a valid number between 1025 and 65536.", @@ -738,6 +863,15 @@ "settings-changed-alert": " The changes have not been saved yet.", "save-settings": "Save settings", + "addr": "Listener address (--addr)", + "addr-hint": "Where the SOCKS5 server listens locally (default: 127.0.0.1:1080)", + "http": "HTTP proxy address (--http)", + "http-hint": "When set, also expose an HTTP-CONNECT proxy on this address", + "tries": "Connection retries (--tries)", + "tries-hint": "Number of attempts before giving up (default: 3)", + "retry-time": "Retry delay seconds (--retry-time)", + "retry-time-hint": "Wait between retry attempts (default: 5)", + "change-note-dialog": { "title": "Change Note", "note": "Note" diff --git a/pkg/visor/static/assets/scss/_forms.scss b/pkg/visor/static/assets/scss/_forms.scss index a3466753e7..2e895bce6c 100644 --- a/pkg/visor/static/assets/scss/_forms.scss +++ b/pkg/visor/static/assets/scss/_forms.scss @@ -40,3 +40,110 @@ mat-form-field { pointer-events: none !important; opacity: 0.5 !important; } + +// ---- Inline edit / info-line layout helpers --------------------- +// These were originally scoped to the Info-tab component but are +// reused by the Rewards, Routing, and Transports tabs after that +// page-restructure split. Lift them into the global form helpers +// so all four tabs lay out consistently. + +.info-line { + word-break: break-word; + margin-top: 7px; + display: flex; + align-items: baseline; + gap: 6px; + // Wrap on narrow widths so the title + value + edit button don't + // collide when the value is long (e.g. a 66-char PK + edit btn). + flex-wrap: wrap; + + .text-with-right-margin { margin-right: 5px; } + .text-with-small-right-margin { margin-right: 3px; } + + .link-icon { + font-size: 20px; + line-height: 1; + color: white !important; + cursor: pointer; + } + + .edit-icon { display: inline !important; } + + mat-icon { + position: relative; + top: 3px; + user-select: none; + } + + i { margin-left: 7px; } + + .title { + opacity: 0.7; + white-space: nowrap; + min-width: 120px; + font-size: 0.9em; + } +} + +.toggle-line { + display: flex; + align-items: center; + gap: 8px; + flex-wrap: wrap; + + .info-tip { + opacity: 0.5; + font-size: 16px; + cursor: help; + } +} + +.collapsible-link { + cursor: pointer; + user-select: none; + display: flex; + align-items: center; + gap: 4px; + margin-top: 6px; + opacity: 0.85; + &:hover { opacity: 1; } +} + +.collapsible-header { + display: inline-flex !important; + align-items: center; + gap: 6px; +} + +.inline-edit-btn { + margin-left: 4px; + height: 24px; + width: 24px; + line-height: 24px; + opacity: 0.7; + &:hover { opacity: 1; } +} + +.inline-form { + display: flex; + flex-direction: column; + gap: 8px; + margin-top: 6px; + margin-bottom: 6px; + + .inline-form-field { width: 100%; } + .inline-form-field-sm { width: 120px; } + .inline-form-actions { + display: flex; + gap: 8px; + flex-wrap: wrap; + } +} + +.section-title { + font-size: 0.95em; + font-weight: 500; + color: rgba(255, 255, 255, 0.92); + display: block; + margin-bottom: 4px; +} diff --git a/pkg/visor/static/index.html b/pkg/visor/static/index.html index 0f7e3924ac..7a31d503b6 100644 --- a/pkg/visor/static/index.html +++ b/pkg/visor/static/index.html @@ -7,9 +7,9 @@ - +
- + diff --git a/pkg/visor/static/main.379613b3fb1f64af.js b/pkg/visor/static/main.379613b3fb1f64af.js new file mode 100644 index 0000000000..a37297843c --- /dev/null +++ b/pkg/visor/static/main.379613b3fb1f64af.js @@ -0,0 +1 @@ +(self.webpackChunkskywire_manager=self.webpackChunkskywire_manager||[]).push([[792],{29(Fu,ty,Lc){"use strict";let Rn=null,us=!1,Ka=1;const Fn=Symbol("SIGNAL");function Pe(t){const n=Rn;return Rn=t,n}const Vc={version:0,lastCleanEpoch:0,dirty:!1,producers:void 0,producersTail:void 0,consumers:void 0,consumersTail:void 0,recomputing:!1,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:"unknown",producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Nu(t){if(us)throw new Error("");if(null===Rn)return;Rn.consumerOnSignalRead(t);const n=Rn.producersTail;if(void 0!==n&&n.producer===t)return;let e;const i=Rn.recomputing;if(i&&(e=void 0!==n?n.nextProducer:Rn.producers,void 0!==e&&e.producer===t))return Rn.producersTail=e,void(e.lastReadVersion=t.version);const o=t.consumersTail;if(void 0!==o&&o.consumer===Rn&&(!i||function OH(t,n){const e=n.producersTail;if(void 0!==e){let i=n.producers;do{if(i===t)return!0;if(i===e)break;i=i.nextProducer}while(void 0!==i)}return!1}(o,Rn)))return;const r=Uc(Rn),s={producer:t,consumer:Rn,nextProducer:e,prevConsumer:o,lastReadVersion:t.version,nextConsumer:void 0};Rn.producersTail=s,void 0!==n?n.nextProducer=s:Rn.producers=s,r&&RM(t,s)}function Lu(t){if((!Uc(t)||t.dirty)&&(t.dirty||t.lastCleanEpoch!==Ka)){if(!t.producerMustRecompute(t)&&!Lp(t))return void Np(t);t.producerRecomputeValue(t),Np(t)}}function OM(t){if(void 0===t.consumers)return;const n=us;us=!0;try{for(let e=t.consumers;void 0!==e;e=e.nextConsumer){const i=e.consumer;i.dirty||EH(i)}}finally{us=n}}function AM(){return!1!==Rn?.consumerAllowSignalWrites}function EH(t){t.dirty=!0,OM(t),t.consumerMarkedDirty?.(t)}function Np(t){t.dirty=!1,t.lastCleanEpoch=Ka}function Hc(t){return t&&function PH(t){t.producersTail=void 0,t.recomputing=!0}(t),Pe(t)}function Bu(t,n){Pe(n),t&&function IH(t){t.recomputing=!1;const n=t.producersTail;let e=void 0!==n?n.nextProducer:t.producers;if(void 0!==e){if(Uc(t))do{e=iy(e)}while(void 0!==e);void 0!==n?n.nextProducer=void 0:t.producers=void 0}}(t)}function Lp(t){for(let n=t.producers;void 0!==n;n=n.nextProducer){const e=n.producer,i=n.lastReadVersion;if(i!==e.version||(Lu(e),i!==e.version))return!0}return!1}function Vu(t){if(Uc(t)){let n=t.producers;for(;void 0!==n;)n=iy(n)}t.producers=void 0,t.producersTail=void 0,t.consumers=void 0,t.consumersTail=void 0}function RM(t,n){const e=t.consumersTail,i=Uc(t);if(void 0!==e?(n.nextConsumer=e.nextConsumer,e.nextConsumer=n):(n.nextConsumer=void 0,t.consumers=n),n.prevConsumer=e,t.consumersTail=n,!i)for(let o=t.producers;void 0!==o;o=o.nextProducer)RM(o.producer,o)}function iy(t){const n=t.producer,e=t.nextProducer,i=t.nextConsumer,o=t.prevConsumer;if(t.nextConsumer=void 0,t.prevConsumer=void 0,void 0!==i?i.prevConsumer=o:n.consumersTail=o,void 0!==o)o.nextConsumer=i;else if(n.consumers=i,!Uc(n)){let r=n.producers;for(;void 0!==r;)r=iy(r)}return e}function Uc(t){return t.consumerIsAlwaysLive||void 0!==t.consumers}function ry(t,n){return Object.is(t,n)}function FM(t,n){const e=Object.create(AH);e.computation=t,void 0!==n&&(e.equal=n);const i=()=>{if(Lu(e),Nu(e),e.value===hs)throw e.error;return e.value};return i[Fn]=e,i}const Ya=Symbol("UNSET"),zc=Symbol("COMPUTING"),hs=Symbol("ERRORED"),AH={...Vc,value:Ya,dirty:!0,error:null,equal:ry,kind:"computed",producerMustRecompute:t=>t.value===Ya||t.value===zc,producerRecomputeValue(t){if(t.value===zc)throw new Error("");const n=t.value;t.value=zc;const e=Hc(t);let i,o=!1;try{i=t.computation(),Pe(null),o=n!==Ya&&n!==hs&&i!==hs&&t.equal(n,i)}catch(r){i=hs,t.error=r}finally{Bu(t,e)}o?t.value=n:(t.value=i,t.version++)}};let NM=function RH(){throw new Error};function LM(t){NM(t)}function Vp(t,n){AM()||LM(t),t.equal(t.value,n)||(t.value=n,function BH(t){t.version++,function TH(){Ka++}(),OM(t)}(t))}function BM(t,n){AM()||LM(t),Vp(t,n(t.value))}const sy={...Vc,equal:ry,value:void 0,kind:"signal"},VH={...Vc,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,kind:"effect"};function fn(t){return"function"==typeof t}function ay(t){const e=t(i=>{Error.call(i),i.stack=(new Error).stack});return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}const ly=ay(t=>function(e){t(this),this.message=e?`${e.length} errors occurred during unsubscription:\n${e.map((i,o)=>`${o+1}) ${i.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=e});function Hp(t,n){if(t){const e=t.indexOf(n);0<=e&&t.splice(e,1)}}class gt{constructor(n){this.initialTeardown=n,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let n;if(!this.closed){this.closed=!0;const{_parentage:e}=this;if(e)if(this._parentage=null,Array.isArray(e))for(const r of e)r.remove(this);else e.remove(this);const{initialTeardown:i}=this;if(fn(i))try{i()}catch(r){n=r instanceof ly?r.errors:[r]}const{_finalizers:o}=this;if(o){this._finalizers=null;for(const r of o)try{UM(r)}catch(s){n=n??[],s instanceof ly?n=[...n,...s.errors]:n.push(s)}}if(n)throw new ly(n)}}add(n){var e;if(n&&n!==this)if(this.closed)UM(n);else{if(n instanceof gt){if(n.closed||n._hasParent(this))return;n._addParent(this)}(this._finalizers=null!==(e=this._finalizers)&&void 0!==e?e:[]).push(n)}}_hasParent(n){const{_parentage:e}=this;return e===n||Array.isArray(e)&&e.includes(n)}_addParent(n){const{_parentage:e}=this;this._parentage=Array.isArray(e)?(e.push(n),e):e?[e,n]:n}_removeParent(n){const{_parentage:e}=this;e===n?this._parentage=null:Array.isArray(e)&&Hp(e,n)}remove(n){const{_finalizers:e}=this;e&&Hp(e,n),n instanceof gt&&n._removeParent(this)}}gt.EMPTY=(()=>{const t=new gt;return t.closed=!0,t})();const VM=gt.EMPTY;function HM(t){return t instanceof gt||t&&"closed"in t&&fn(t.remove)&&fn(t.add)&&fn(t.unsubscribe)}function UM(t){fn(t)?t():t.unsubscribe()}const Xa={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Up={setTimeout(t,n,...e){const{delegate:i}=Up;return i?.setTimeout?i.setTimeout(t,n,...e):setTimeout(t,n,...e)},clearTimeout(t){const{delegate:n}=Up;return(n?.clearTimeout||clearTimeout)(t)},delegate:void 0};function zM(t){Up.setTimeout(()=>{const{onUnhandledError:n}=Xa;if(!n)throw t;n(t)})}function zp(){}const UH=cy("C",void 0,void 0);function cy(t,n,e){return{kind:t,value:n,error:e}}let Za=null;function jp(t){if(Xa.useDeprecatedSynchronousErrorHandling){const n=!Za;if(n&&(Za={errorThrown:!1,error:null}),t(),n){const{errorThrown:e,error:i}=Za;if(Za=null,e)throw i}}else t()}class $p extends gt{constructor(n){super(),this.isStopped=!1,n?(this.destination=n,HM(n)&&n.add(this)):this.destination=KH}static create(n,e,i){return new Hu(n,e,i)}next(n){this.isStopped?uy(function jH(t){return cy("N",t,void 0)}(n),this):this._next(n)}error(n){this.isStopped?uy(function zH(t){return cy("E",void 0,t)}(n),this):(this.isStopped=!0,this._error(n))}complete(){this.isStopped?uy(UH,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(n){this.destination.next(n)}_error(n){try{this.destination.error(n)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const WH=Function.prototype.bind;function dy(t,n){return WH.call(t,n)}class GH{constructor(n){this.partialObserver=n}next(n){const{partialObserver:e}=this;if(e.next)try{e.next(n)}catch(i){Wp(i)}}error(n){const{partialObserver:e}=this;if(e.error)try{e.error(n)}catch(i){Wp(i)}else Wp(n)}complete(){const{partialObserver:n}=this;if(n.complete)try{n.complete()}catch(e){Wp(e)}}}class Hu extends $p{constructor(n,e,i){let o;if(super(),fn(n)||!n)o={next:n??void 0,error:e??void 0,complete:i??void 0};else{let r;this&&Xa.useDeprecatedNextContext?(r=Object.create(n),r.unsubscribe=()=>this.unsubscribe(),o={next:n.next&&dy(n.next,r),error:n.error&&dy(n.error,r),complete:n.complete&&dy(n.complete,r)}):o=n}this.destination=new GH(o)}}function Wp(t){Xa.useDeprecatedSynchronousErrorHandling?function $H(t){Xa.useDeprecatedSynchronousErrorHandling&&Za&&(Za.errorThrown=!0,Za.error=t)}(t):zM(t)}function uy(t,n){const{onStoppedNotification:e}=Xa;e&&Up.setTimeout(()=>e(t,n))}const KH={closed:!0,next:zp,error:function qH(t){throw t},complete:zp},hy="function"==typeof Symbol&&Symbol.observable||"@@observable";function Qa(t){return t}function jM(t){return 0===t.length?Qa:1===t.length?t[0]:function(e){return t.reduce((i,o)=>o(i),e)}}let zt=(()=>{class t{constructor(e){e&&(this._subscribe=e)}lift(e){const i=new t;return i.source=this,i.operator=e,i}subscribe(e,i,o){const r=function ZH(t){return t&&t instanceof $p||function XH(t){return t&&fn(t.next)&&fn(t.error)&&fn(t.complete)}(t)&&HM(t)}(e)?e:new Hu(e,i,o);return jp(()=>{const{operator:s,source:a}=this;r.add(s?s.call(r,a):a?this._subscribe(r):this._trySubscribe(r))}),r}_trySubscribe(e){try{return this._subscribe(e)}catch(i){e.error(i)}}forEach(e,i){return new(i=$M(i))((o,r)=>{const s=new Hu({next:a=>{try{e(a)}catch(l){r(l),s.unsubscribe()}},error:r,complete:o});this.subscribe(s)})}_subscribe(e){var i;return null===(i=this.source)||void 0===i?void 0:i.subscribe(e)}[hy](){return this}pipe(...e){return jM(e)(this)}toPromise(e){return new(e=$M(e))((i,o)=>{let r;this.subscribe(s=>r=s,s=>o(s),()=>i(r))})}}return t.create=n=>new t(n),t})();function $M(t){var n;return null!==(n=t??Xa.Promise)&&void 0!==n?n:Promise}const QH=ay(t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let py,be=(()=>{class t extends zt{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(e){const i=new fy(this,this);return i.operator=e,i}_throwIfClosed(){if(this.closed)throw new QH}next(e){jp(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(e)}})}error(e){jp(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=e;const{observers:i}=this;for(;i.length;)i.shift().error(e)}})}complete(){jp(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:e}=this;for(;e.length;)e.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0}_trySubscribe(e){return this._throwIfClosed(),super._trySubscribe(e)}_subscribe(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)}_innerSubscribe(e){const{hasError:i,isStopped:o,observers:r}=this;return i||o?VM:(this.currentObservers=null,r.push(e),new gt(()=>{this.currentObservers=null,Hp(r,e)}))}_checkFinalizedStatuses(e){const{hasError:i,thrownError:o,isStopped:r}=this;i?e.error(o):r&&e.complete()}asObservable(){const e=new zt;return e.source=this,e}}return t.create=(n,e)=>new fy(n,e),t})();class fy extends be{constructor(n,e){super(),this.destination=n,this.source=e}next(n){var e,i;null===(i=null===(e=this.destination)||void 0===e?void 0:e.next)||void 0===i||i.call(e,n)}error(n){var e,i;null===(i=null===(e=this.destination)||void 0===e?void 0:e.error)||void 0===i||i.call(e,n)}complete(){var n,e;null===(e=null===(n=this.destination)||void 0===n?void 0:n.complete)||void 0===e||e.call(n)}_subscribe(n){var e,i;return null!==(i=null===(e=this.source)||void 0===e?void 0:e.subscribe(n))&&void 0!==i?i:VM}}class Ei extends be{constructor(n){super(),this._value=n}get value(){return this.getValue()}_subscribe(n){const e=super._subscribe(n);return!e.closed&&n.next(this._value),e}getValue(){const{hasError:n,thrownError:e,_value:i}=this;if(n)throw e;return this._throwIfClosed(),i}next(n){super.next(this._value=n)}}function my(){return py}function Xs(t){const n=py;return py=t,n}const JH=Symbol("NotFound");function gy(t){return t===JH||"\u0275NotFound"===t?.name}Error;const qM="https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss";class X extends Error{code;constructor(n,e){super(po(n,e)),this.code=n}}function po(t,n){return`${function tU(t){return`NG0${Math.abs(t)}`}(t)}${n?": "+n:""}`}const Nn=globalThis;function Ot(t){for(let n in t)if(t[n]===Ot)return n;throw Error("")}function nU(t,n){for(const e in n)n.hasOwnProperty(e)&&!t.hasOwnProperty(e)&&(t[e]=n[e])}function Zs(t){if("string"==typeof t)return t;if(Array.isArray(t))return`[${t.map(Zs).join(", ")}]`;if(null==t)return""+t;const n=t.overriddenName||t.name;if(n)return`${n}`;const e=t.toString();if(null==e)return""+e;const i=e.indexOf("\n");return i>=0?e.slice(0,i):e}function _y(t,n){return t?n?`${t} ${n}`:t:n||""}const iU=Ot({__forward_ref__:Ot});function jt(t){return t.__forward_ref__=jt,t}function Ke(t){return qp(t)?t():t}function qp(t){return"function"==typeof t&&t.hasOwnProperty(iU)&&t.__forward_ref__===jt}function te(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function Je(t){return{providers:t.providers||[],imports:t.imports||[]}}function Kp(t){return function dU(t,n){return t.hasOwnProperty(n)&&t[n]||null}(t,Xp)}function Yp(t){return t&&t.hasOwnProperty(by)?t[by]:null}const Xp=Ot({\u0275prov:Ot}),by=Ot({\u0275inj:Ot});class Z{_desc;ngMetadataName="InjectionToken";\u0275prov;constructor(n,e){this._desc=n,this.\u0275prov=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.\u0275prov=te({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function yy(t){return t&&!!t.\u0275providers}const KM=Ot({\u0275cmp:Ot}),gU=Ot({\u0275dir:Ot}),_U=Ot({\u0275pipe:Ot}),YM=Ot({\u0275mod:Ot}),tl=Ot({\u0275fac:Ot}),Uu=Ot({__NG_ELEMENT_ID__:Ot}),XM=Ot({__NG_ENV_ID__:Ot});function Ar(t){return Qp(t),t[YM]||null}function kt(t){return Qp(t),t[KM]||null}function no(t){return Qp(t),t[gU]||null}function sr(t){return Qp(t),t[_U]||null}function Qp(t,n){if(null==t)throw new X(-919,!1)}function ze(t){return"string"==typeof t?t:null==t?"":String(t)}const wy=Ot({ngErrorCode:Ot}),ZM=Ot({ngErrorMessage:Ot}),zu=Ot({ngTokenPath:Ot});function xy(t,n){return QM("",-200,n)}function ky(t,n){throw new X(-201,!1)}function QM(t,n,e){const i=new X(n,t);return i[wy]=n,i[ZM]=t,e&&(i[zu]=e),i}let Sy;function JM(){return Sy}function mo(t){const n=Sy;return Sy=t,n}function eD(t,n,e){const i=Kp(t);return i&&"root"==i.providedIn?void 0===i.value?i.value=i.factory():i.value:8&e?null:void 0!==n?n:void ky()}const nl={};class xU{injector;constructor(n){this.injector=n}retrieve(n,e){const i=ju(e)||0;try{return this.injector.get(n,8&i?null:nl,i)}catch(o){if(gy(o))return o;throw o}}}function kU(t,n=0){const e=my();if(void 0===e)throw new X(-203,!1);if(null===e)return eD(t,void 0,n);{const i=function SU(t){return{optional:!!(8&t),host:!!(1&t),self:!!(2&t),skipSelf:!!(4&t)}}(n),o=e.retrieve(t,i);if(gy(o)){if(i.optional)return null;throw o}return o}}function ce(t,n=0){return(JM()||kU)(Ke(t),n)}function T(t,n){return ce(t,ju(n))}function ju(t){return typeof t>"u"||"number"==typeof t?t:0|(t.optional&&8)|(t.host&&1)|(t.self&&2)|(t.skipSelf&&4)}function Dy(t){const n=[];for(let e=0;eArray.isArray(e)?Gc(e,n):n(e))}function nD(t,n,e){n>=t.length?t.push(e):t.splice(n,0,e)}function Jp(t,n){return n>=t.length-1?t.pop():t.splice(n,1)[0]}function tm(t,n,e){let i=Wu(t,n);return i>=0?t[1|i]=e:(i=~i,function oD(t,n,e,i){let o=t.length;if(o==n)t.push(e,i);else if(1===o)t.push(i,t[0]),t[0]=e;else{for(o--,t.push(t[o-1],t[o]);o>n;)t[o]=t[o-2],o--;t[n]=e,t[n+1]=i}}(t,i,n,e)),i}function Ty(t,n){const e=Wu(t,n);if(e>=0)return t[1|e]}function Wu(t,n){return function TU(t,n,e){let i=0,o=t.length>>e;for(;o!==i;){const r=i+(o-i>>1),s=t[r<n?o=r:i=r+1}return~(o<{e.push(s)};return Gc(n,s=>{const a=s;im(a,r,[],i)&&(o||=[],o.push(a))}),void 0!==o&&sD(o,r),e}function sD(t,n){for(let e=0;e{n(r,i)})}}function im(t,n,e,i){if(!(t=Ke(t)))return!1;let o=null,r=Yp(t);const s=!r&&kt(t);if(r||s){if(s&&!s.standalone)return!1;o=t}else{const l=t.ngModule;if(r=Yp(l),!r)return!1;o=l}const a=i.has(o);if(s){if(a)return!1;if(i.add(o),s.dependencies){const l="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const d of l)im(d,n,e,i)}}else{if(!r)return!1;{if(null!=r.imports&&!a){let d;i.add(o),Gc(r.imports,f=>{im(f,n,e,i)&&(d||=[],d.push(f))}),void 0!==d&&sD(d,n)}if(!a){const d=il(o)||(()=>new o);n({provide:o,useFactory:d,deps:en},o),n({provide:Ey,useValue:o,multi:!0},o),n({provide:fs,useValue:()=>ce(o),multi:!0},o)}const l=r.providers;if(null!=l&&!a){const d=t;Iy(l,f=>{n(f,d)})}}}return o!==t&&void 0!==t.providers}function Iy(t,n){for(let e of t)yy(e)&&(e=e.\u0275providers),Array.isArray(e)?Iy(e,n):n(e)}const IU=Ot({provide:String,useValue:Ot});function Oy(t){return null!==t&&"object"==typeof t&&IU in t}function ps(t){return"function"==typeof t}const Ay=new Z(""),om={},dD={};let Ry;function rm(){return void 0===Ry&&(Ry=new nm),Ry}class Wn{}class ol extends Wn{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(n,e,i,o){super(),this.parent=e,this.source=i,this.scopes=o,Ny(n,s=>this.processProvider(s)),this.records.set(rD,qc(void 0,this)),o.has("environment")&&this.records.set(Wn,qc(void 0,this));const r=this.records.get(Ay);null!=r&&"string"==typeof r.value&&this.scopes.add(r.value),this.injectorDefTypes=new Set(this.get(Ey,en,{self:!0}))}retrieve(n,e){const i=ju(e)||0;try{return this.get(n,nl,i)}catch(o){if(gy(o))return o;throw o}}destroy(){qu(this),this._destroyed=!0;const n=Pe(null);try{for(const i of this._ngOnDestroyHooks)i.ngOnDestroy();const e=this._onDestroyHooks;this._onDestroyHooks=[];for(const i of e)i()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),Pe(n)}}onDestroy(n){return qu(this),this._onDestroyHooks.push(n),()=>this.removeOnDestroy(n)}runInContext(n){qu(this);const e=Xs(this),i=mo(void 0);try{return n()}finally{Xs(e),mo(i)}}get(n,e=nl,i){if(qu(this),n.hasOwnProperty(XM))return n[XM](this);const o=ju(i),s=Xs(this),a=mo(void 0);try{if(!(4&o)){let d=this.records.get(n);if(void 0===d){const f=function NU(t){return"function"==typeof t||"object"==typeof t&&"InjectionToken"===t.ngMetadataName}(n)&&Kp(n);d=f&&this.injectableDefInScope(f)?qc(Fy(n),om):null,this.records.set(n,d)}if(null!=d)return this.hydrate(n,d,o)}return(2&o?rm():this.parent).get(n,e=8&o&&e===nl?null:e)}catch(l){const d=function CU(t){return t[wy]}(l);throw-200===d||-201===d?new X(d,null):l}finally{mo(a),Xs(s)}}resolveInjectorInitializers(){const n=Pe(null),e=Xs(this),i=mo(void 0);try{const r=this.get(fs,en,{self:!0});for(const s of r)s()}finally{Xs(e),mo(i),Pe(n)}}toString(){return"R3Injector[...]"}processProvider(n){let e=ps(n=Ke(n))?n:Ke(n&&n.provide);const i=function AU(t){return Oy(t)?qc(void 0,t.useValue):qc(uD(t),om)}(n);if(!ps(n)&&!0===n.multi){let o=this.records.get(e);o||(o=qc(void 0,om,!0),o.factory=()=>Dy(o.multi),this.records.set(e,o)),e=n,o.multi.push(n)}this.records.set(e,i)}hydrate(n,e,i){const o=Pe(null);try{if(e.value===dD)throw xy();return e.value===om&&(e.value=dD,e.value=e.factory(void 0,i)),"object"==typeof e.value&&e.value&&function FU(t){return null!==t&&"object"==typeof t&&"function"==typeof t.ngOnDestroy}(e.value)&&this._ngOnDestroyHooks.add(e.value),e.value}finally{Pe(o)}}injectableDefInScope(n){if(!n.providedIn)return!1;const e=Ke(n.providedIn);return"string"==typeof e?"any"===e||this.scopes.has(e):this.injectorDefTypes.has(e)}removeOnDestroy(n){const e=this._onDestroyHooks.indexOf(n);-1!==e&&this._onDestroyHooks.splice(e,1)}}function Fy(t){const n=Kp(t),e=null!==n?n.factory:il(t);if(null!==e)return e;if(t instanceof Z)throw new X(-204,!1);if(t instanceof Function)return function OU(t){if(t.length>0)throw new X(-204,!1);const e=function uU(t){return(t?.[Xp]??null)||null}(t);return null!==e?()=>e.factory(t):()=>new t}(t);throw new X(-204,!1)}function uD(t,n,e){let i;if(ps(t)){const o=Ke(t);return il(o)||Fy(o)}if(Oy(t))i=()=>Ke(t.useValue);else if(function lD(t){return!(!t||!t.useFactory)}(t))i=()=>t.useFactory(...Dy(t.deps||[]));else if(function aD(t){return!(!t||!t.useExisting)}(t))i=(o,r)=>ce(Ke(t.useExisting),void 0!==r&&8&r?8:void 0);else{const o=Ke(t&&(t.useClass||t.provide));if(!function RU(t){return!!t.deps}(t))return il(o)||Fy(o);i=()=>new o(...Dy(t.deps))}return i}function qu(t){if(t.destroyed)throw new X(-205,!1)}function qc(t,n,e=!1){return{factory:t,value:n,multi:e?[]:void 0}}function Ny(t,n){for(const e of t)Array.isArray(e)?Ny(e,n):e&&yy(e)?Ny(e.\u0275providers,n):n(e)}function io(t,n){let e;t instanceof ol?(qu(t),e=t):e=new xU(t);const o=Xs(e),r=mo(void 0);try{return n()}finally{Xs(o),mo(r)}}function Ly(){return void 0!==JM()||null!=my()}function Tn(t){return Array.isArray(t)&&"object"==typeof t[1]}function oo(t){return Array.isArray(t)&&!0===t[1]}function fD(t){return!!(4&t.flags)}function Fr(t){return t.componentOffset>-1}function Qc(t){return!(1&~t.flags)}function lr(t){return!!t.template}function ea(t){return!!(512&t[2])}function bs(t){return!(256&~t[2])}function bi(t){for(;Array.isArray(t);)t=t[0];return t}function Jc(t,n){return bi(n[t])}function Jn(t,n){return bi(n[t.index])}function ed(t,n){return t.data[n]}function cl(t,n){return t[n]}function ro(t,n){const e=n[t];return Tn(e)?e:e[0]}function Uy(t){return!(128&~t[2])}function zi(t,n){return null==n?null:t[n]}function vD(t){t[17]=0}function yD(t){1024&t[2]||(t[2]|=1024,Uy(t)&&td(t))}function cm(t){return!!(9216&t[2]||t[24]?.dirty)}function zy(t){t[10].changeDetectionScheduler?.notify(8),64&t[2]&&(t[2]|=1024),cm(t)&&td(t)}function td(t){t[10].changeDetectionScheduler?.notify(0);let n=vs(t);for(;null!==n&&!(8192&n[2])&&(n[2]|=8192,Uy(n));)n=vs(n)}function dm(t,n){if(bs(t))throw new X(911,!1);null===t[21]&&(t[21]=[]),t[21].push(n)}function vs(t){const n=t[3];return oo(n)?n[3]:n}function wD(t){return t[7]??=[]}function xD(t){return t.cleanup??=[]}const Ve={lFrame:BD(null),bindingsEnabled:!0,skipHydrationRootTNode:null};let Wy=!1;function kD(){Ve.lFrame.elementDepthCount--}function Gy(){return Ve.bindingsEnabled}function SD(){return null!==Ve.skipHydrationRootTNode}function MD(t){return Ve.skipHydrationRootTNode===t}function DD(){Ve.skipHydrationRootTNode=null}function ne(){return Ve.lFrame.lView}function $e(){return Ve.lFrame.tView}function V(t){return Ve.lFrame.contextLView=t,t[8]}function H(t){return Ve.lFrame.contextLView=null,t}function He(){let t=TD();for(;null!==t&&64===t.type;)t=t.parent;return t}function TD(){return Ve.lFrame.currentTNode}function ys(t,n){const e=Ve.lFrame;e.currentTNode=t,e.isParent=n}function ED(){return Ve.lFrame.isParent}function PD(){Ve.lFrame.isParent=!1}function AD(){return Wy}function um(t){const n=Wy;return Wy=t,n}function ji(){const t=Ve.lFrame;let n=t.bindingRootIndex;return-1===n&&(n=t.bindingRootIndex=t.tView.bindingStartIndex),n}function Cs(){return Ve.lFrame.bindingIndex}function go(){return Ve.lFrame.bindingIndex++}function ws(t){const n=Ve.lFrame,e=n.bindingIndex;return n.bindingIndex=n.bindingIndex+t,e}function YU(t,n){const e=Ve.lFrame;e.bindingIndex=e.bindingRootIndex=t,qy(n)}function qy(t){Ve.lFrame.currentDirectiveIndex=t}function Yy(){return Ve.lFrame.currentQueryIndex}function hm(t){Ve.lFrame.currentQueryIndex=t}function ZU(t){const n=t[1];return 2===n.type?n.declTNode:1===n.type?t[5]:null}function ND(t,n,e){if(4&e){let o=n,r=t;for(;!(o=o.parent,null!==o||1&e||(o=ZU(r),null===o||(r=r[14],10&o.type))););if(null===o)return!1;n=o,t=r}const i=Ve.lFrame=LD();return i.currentTNode=n,i.lView=t,!0}function Xy(t){const n=LD(),e=t[1];Ve.lFrame=n,n.currentTNode=e.firstChild,n.lView=t,n.tView=e,n.contextLView=t,n.bindingIndex=e.bindingStartIndex,n.inI18n=!1}function LD(){const t=Ve.lFrame,n=null===t?null:t.child;return null===n?BD(t):n}function BD(t){const n={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=n),n}function VD(){const t=Ve.lFrame;return Ve.lFrame=t.parent,t.currentTNode=null,t.lView=null,t}const HD=VD;function Zy(){const t=VD();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 Pi(){return Ve.lFrame.selectedIndex}function dl(t){Ve.lFrame.selectedIndex=t}function cr(){const t=Ve.lFrame;return ed(t.tView,t.selectedIndex)}function ul(){Ve.lFrame.currentNamespace="svg"}function Qy(){!function e7(){Ve.lFrame.currentNamespace=null}()}let UD=!0;function fm(){return UD}function Xu(t){UD=t}function zD(t,n=null,e=null,i){const o=jD(t,n,e);return o.resolveInjectorInitializers(),o}function jD(t,n=null,e=null,i,o=new Set){const r=[e||en,PU(t)];return new ol(r,n||rm(),null,o)}class Ue{static THROW_IF_NOT_FOUND=nl;static NULL=new nm;static create(n,e){if(Array.isArray(n))return zD({name:""},e,n);{const i=n.name??"";return zD({name:i},n.parent,n.providers)}}static \u0275prov=te({token:Ue,providedIn:"any",factory:()=>ce(rD)});static __NG_ELEMENT_ID__=-1}const et=new Z("");let dr=(()=>class t{static __NG_ELEMENT_ID__=n7;static __NG_ENV_ID__=e=>e})();class $D extends dr{_lView;constructor(n){super(),this._lView=n}get destroyed(){return bs(this._lView)}onDestroy(n){const e=this._lView;return dm(e,n),()=>function jy(t,n){if(null===t[21])return;const e=t[21].indexOf(n);-1!==e&&t[21].splice(e,1)}(e,n)}}function n7(){return new $D(ne())}const WD=!1,i7=new Z("");let ta=(()=>{class t{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new Ei(!1);debugTaskTracker=T(i7,{optional:!0});get hasPendingTasks(){return!this.destroyed&&this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new zt(e=>{e.next(!1),e.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);const e=this.taskId++;return this.pendingTasks.add(e),this.debugTaskTracker?.add(e),e}has(e){return this.pendingTasks.has(e)}remove(e){this.pendingTasks.delete(e),this.debugTaskTracker?.remove(e),0===this.pendingTasks.size&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})();const ke=class o7 extends be{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(n=!1){super(),this.__isAsync=n,Ly()&&(this.destroyRef=T(dr,{optional:!0})??void 0,this.pendingTasks=T(ta,{optional:!0})??void 0)}emit(n){const e=Pe(null);try{super.next(n)}finally{Pe(e)}}subscribe(n,e,i){let o=n,r=e||(()=>null),s=i;if(n&&"object"==typeof n){const l=n;o=l.next?.bind(l),r=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(r=this.wrapInTimeout(r),o&&(o=this.wrapInTimeout(o)),s&&(s=this.wrapInTimeout(s)));const a=super.subscribe({next:o,error:r,complete:s});return n instanceof gt&&n.add(a),a}wrapInTimeout(n){return e=>{const i=this.pendingTasks?.add();setTimeout(()=>{try{n(e)}finally{void 0!==i&&this.pendingTasks?.remove(i)}})}}};function pm(...t){}function GD(t){let n,e;function i(){t=pm;try{void 0!==e&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(e),void 0!==n&&clearTimeout(n)}catch{}}return n=setTimeout(()=>{t(),i()}),"function"==typeof requestAnimationFrame&&(e=requestAnimationFrame(()=>{t(),i()})),()=>i()}function r7(t){return queueMicrotask(()=>t()),()=>{t=pm}}const Jy="isAngularZone",mm=Jy+"_ID";let s7=0;class Ce{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new ke(!1);onMicrotaskEmpty=new ke(!1);onStable=new ke(!1);onError=new ke(!1);constructor(n){const{enableLongStackTrace:e=!1,shouldCoalesceEventChangeDetection:i=!1,shouldCoalesceRunChangeDetection:o=!1,scheduleInRootZone:r=WD}=n;if(typeof Zone>"u")throw new X(908,!1);Zone.assertZonePatched();const s=this;s._nesting=0,s._outer=s._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(s._inner=s._inner.fork(new Zone.TaskTrackingZoneSpec)),e&&Zone.longStackTraceZoneSpec&&(s._inner=s._inner.fork(Zone.longStackTraceZoneSpec)),s.shouldCoalesceEventChangeDetection=!o&&i,s.shouldCoalesceRunChangeDetection=o,s.callbackScheduled=!1,s.scheduleInRootZone=r,function c7(t){const n=()=>{!function l7(t){function n(){GD(()=>{t.callbackScheduled=!1,t1(t),t.isCheckStableRunning=!0,e1(t),t.isCheckStableRunning=!1})}t.isCheckStableRunning||t.callbackScheduled||(t.callbackScheduled=!0,t.scheduleInRootZone?Zone.root.run(()=>{n()}):t._outer.run(()=>{n()}),t1(t))}(t)},e=s7++;t._inner=t._inner.fork({name:"angular",properties:{[Jy]:!0,[mm]:e,[mm+e]:!0},onInvokeTask:(i,o,r,s,a,l)=>{if(function u7(t){return YD(t,"__ignore_ng_zone__")}(l))return i.invokeTask(r,s,a,l);try{return qD(t),i.invokeTask(r,s,a,l)}finally{(t.shouldCoalesceEventChangeDetection&&"eventTask"===s.type||t.shouldCoalesceRunChangeDetection)&&n(),KD(t)}},onInvoke:(i,o,r,s,a,l,d)=>{try{return qD(t),i.invoke(r,s,a,l,d)}finally{t.shouldCoalesceRunChangeDetection&&!t.callbackScheduled&&!function h7(t){return YD(t,"__scheduler_tick__")}(l)&&n(),KD(t)}},onHasTask:(i,o,r,s)=>{i.hasTask(r,s),o===r&&("microTask"==s.change?(t._hasPendingMicrotasks=s.microTask,t1(t),e1(t)):"macroTask"==s.change&&(t.hasPendingMacrotasks=s.macroTask))},onHandleError:(i,o,r,s)=>(i.handleError(r,s),t.runOutsideAngular(()=>t.onError.emit(s)),!1)})}(s)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get(Jy)}static assertInAngularZone(){if(!Ce.isInAngularZone())throw new X(909,!1)}static assertNotInAngularZone(){if(Ce.isInAngularZone())throw new X(909,!1)}run(n,e,i){return this._inner.run(n,e,i)}runTask(n,e,i,o){const r=this._inner,s=r.scheduleEventTask("NgZoneEvent: "+o,n,a7,pm,pm);try{return r.runTask(s,e,i)}finally{r.cancelTask(s)}}runGuarded(n,e,i){return this._inner.runGuarded(n,e,i)}runOutsideAngular(n){return this._outer.run(n)}}const a7={};function e1(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 t1(t){t.hasPendingMicrotasks=!!(t._hasPendingMicrotasks||(t.shouldCoalesceEventChangeDetection||t.shouldCoalesceRunChangeDetection)&&!0===t.callbackScheduled)}function qD(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function KD(t){t._nesting--,e1(t)}class d7{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new ke;onMicrotaskEmpty=new ke;onStable=new ke;onError=new ke;run(n,e,i){return n.apply(e,i)}runGuarded(n,e,i){return n.apply(e,i)}runOutsideAngular(n){return n()}runTask(n,e,i,o){return n.apply(e,i)}}function YD(t,n){return!(!Array.isArray(t)||1!==t.length)&&!0===t[0]?.data?.[n]}class hl{_console=console;handleError(n){this._console.error("ERROR",n)}}const Nr=new Z("",{factory:()=>{const t=T(Ce),n=T(Wn);let e;return i=>{t.runOutsideAngular(()=>{n.destroyed&&!e?setTimeout(()=>{throw i}):(e??=n.get(hl),e.handleError(i))})}}}),f7={provide:fs,useValue:()=>{T(hl,{optional:!0})},multi:!0};function Ct(t,n){const[e,i,o]=function NH(t,n){const e=Object.create(sy);e.value=t,void 0!==n&&(e.equal=n);const i=()=>function LH(t){return Nu(t),t.value}(e);return i[Fn]=e,[i,s=>Vp(e,s),s=>BM(e,s)]}(t,n?.equal),r=e;return r.set=i,r.update=o,r.asReadonly=n1.bind(r),r}function n1(){const t=this[Fn];if(void 0===t.readonlyFn){const n=()=>this();n[Fn]=t,t.readonlyFn=n}return t.readonlyFn}let gm=(()=>class t{view;node;constructor(e,i){this.view=e,this.node=i}static __NG_ELEMENT_ID__=m7})();function m7(){return new gm(ne(),He())}class fl{}const _m=new Z("",{factory:()=>!0}),XD=new Z("");let bm=(()=>{class t{internalPendingTasks=T(ta);scheduler=T(fl);errorHandler=T(Nr);add(){const e=this.internalPendingTasks.add();return()=>{this.internalPendingTasks.has(e)&&(this.scheduler.notify(11),this.internalPendingTasks.remove(e))}}run(e){const i=this.add();e().catch(this.errorHandler).finally(i)}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})(),ZD=(()=>{class t{static \u0275prov=te({token:t,providedIn:"root",factory:()=>new g7})}return t})();class g7{dirtyEffectCount=0;queues=new Map;add(n){this.enqueue(n),this.schedule(n)}schedule(n){n.dirty&&this.dirtyEffectCount++}remove(n){const i=this.queues.get(n.zone);i.has(n)&&(i.delete(n),n.dirty&&this.dirtyEffectCount--)}enqueue(n){const e=n.zone;this.queues.has(e)||this.queues.set(e,new Set);const i=this.queues.get(e);i.has(n)||i.add(n)}flush(){for(;this.dirtyEffectCount>0;){let n=!1;for(const[e,i]of this.queues)n||=null===e?this.flushQueue(i):e.run(()=>this.flushQueue(i));n||(this.dirtyEffectCount=0)}}flushQueue(n){let e=!1;for(const i of n)i.dirty&&(this.dirtyEffectCount--,e=!0,i.run());return e}}class i1{[Fn];constructor(n){this[Fn]=n}destroy(){this[Fn].destroy()}}function vm(t,n){const e=n?.injector??T(Ue);let o,i=!0!==n?.manualCleanup?e.get(dr):null;const r=e.get(gm,null,{optional:!0}),s=e.get(fl);return null!==r?(o=function v7(t,n,e){const i=Object.create(b7);return i.view=t,i.zone=typeof Zone<"u"?Zone.current:null,i.notifier=n,i.fn=JD(i,e),t[23]??=new Set,t[23].add(i),i.consumerMarkedDirty(i),i}(r.view,s,t),i instanceof $D&&i._lView===r.view&&(i=null)):o=function y7(t,n,e){const i=Object.create(_7);return i.fn=JD(i,t),i.scheduler=n,i.notifier=e,i.zone=typeof Zone<"u"?Zone.current:null,i.scheduler.add(i),i.notifier.notify(12),i}(t,e.get(ZD),s),o.injector=e,null!==i&&(o.onDestroyFns=[i.onDestroy(()=>o.destroy())]),new i1(o)}const QD={...VH,cleanupFns:void 0,zone:null,onDestroyFns:null,run(){const t=um(!1);try{!function HH(t){if(t.dirty=!1,t.version>0&&!Lp(t))return;t.version++;const n=Hc(t);try{t.cleanup(),t.fn()}finally{Bu(t,n)}}(this)}finally{um(t)}},cleanup(){if(!this.cleanupFns?.length)return;const t=Pe(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],Pe(t)}}},_7={...QD,consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(Vu(this),null!==this.onDestroyFns)for(const t of this.onDestroyFns)t();this.cleanup(),this.scheduler.remove(this)}},b7={...QD,consumerMarkedDirty(){this.view[2]|=8192,td(this.view),this.notifier.notify(13)},destroy(){if(Vu(this),null!==this.onDestroyFns)for(const t of this.onDestroyFns)t();this.cleanup(),this.view[23]?.delete(this)}};function JD(t,n){return()=>{n(e=>(t.cleanupFns??=[]).push(e))}}let eT=null;function na(){return eT}class w7{}let ym=(()=>{class t{historyGo(e){throw new Error("")}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>T(k7),providedIn:"platform"})}return t})();const x7=new Z("");let k7=(()=>{class t extends ym{_location;_history;_doc=T(et);constructor(){super(),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return na().getBaseHref(this._doc)}onPopState(e){const i=na().getGlobalEventTarget(this._doc,"window");return i.addEventListener("popstate",e,!1),()=>i.removeEventListener("popstate",e)}onHashChange(e){const i=na().getGlobalEventTarget(this._doc,"window");return i.addEventListener("hashchange",e,!1),()=>i.removeEventListener("hashchange",e)}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(e){this._location.pathname=e}pushState(e,i,o){this._history.pushState(e,i,o)}replaceState(e,i,o){this._history.replaceState(e,i,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(e=0){this._history.go(e)}getState(){return this._history.state}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>new t,providedIn:"platform"})}return t})();function tT(t,n){n=encodeURIComponent(n);for(const e of t.split(";")){const i=e.indexOf("="),[o,r]=-1==i?[e,""]:[e.slice(0,i),e.slice(i+1)];if(o.trim()===n)return decodeURIComponent(r)}return null}class nT{}const iT="browser";let oT=(()=>{class t{static \u0275prov=te({token:t,providedIn:"root",factory:()=>new O7(T(et),window)})}return t})();class O7{document;window;offset=()=>[0,0];constructor(n,e){this.document=n,this.window=e}setOffset(n){this.offset=Array.isArray(n)?()=>n:n}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(n,e){this.window.scrollTo({...e,left:n[0],top:n[1]})}scrollToAnchor(n,e){const i=function A7(t,n){const e=t.getElementById(n)||t.getElementsByName(n)[0];if(e)return e;if("function"==typeof t.createTreeWalker&&t.body&&"function"==typeof t.body.attachShadow){const i=t.createTreeWalker(t.body,NodeFilter.SHOW_ELEMENT);let o=i.currentNode;for(;o;){const r=o.shadowRoot;if(r){const s=r.getElementById(n)||r.querySelector(`[name="${n}"]`);if(s)return s}o=i.nextNode()}}return null}(this.document,n);i&&(this.scrollToElement(i,e),i.focus())}setHistoryScrollRestoration(n){try{this.window.history.scrollRestoration=n}catch{console.warn(po(2400,!1))}}scrollToElement(n,e){const i=n.getBoundingClientRect(),o=i.left+this.window.pageXOffset,r=i.top+this.window.pageYOffset,s=this.offset();this.window.scrollTo({...e,left:o-s[0],top:r-s[1]})}}function mT(t,n,e,i,o,r,s){try{var a=t[r](s),l=a.value}catch(d){return void e(d)}a.done?n(l):Promise.resolve(l).then(i,o)}function At(t){return function(){var n=this,e=arguments;return new Promise(function(i,o){var r=t.apply(n,e);function s(l){mT(r,i,o,s,a,"next",l)}function a(l){mT(r,i,o,s,a,"throw",l)}s(void 0)})}}function En(t){return n=>{if(function az(t){return fn(t?.lift)}(n))return n.lift(function(e){try{return t(e,this)}catch(i){this.error(i)}});throw new TypeError("Unable to lift unknown Observable type")}}function pn(t,n,e,i,o){return new lz(t,n,e,i,o)}class lz extends $p{constructor(n,e,i,o,r,s){super(n),this.onFinalize=r,this.shouldUnsubscribe=s,this._next=e?function(a){try{e(a)}catch(l){n.error(l)}}:super._next,this._error=o?function(a){try{o(a)}catch(l){n.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=i?function(){try{i()}catch(a){n.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var n;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:e}=this;super.unsubscribe(),!e&&(null===(n=this.onFinalize)||void 0===n||n.call(this))}}}function De(t,n){return En((e,i)=>{let o=0;e.subscribe(pn(i,r=>{i.next(t.call(n,r,o++))}))})}function xs(t){return{toString:t}.toString()}function TT(t,n,e,i){null!==n?n.applyValueToInputSignal(n,i):t[e]=i}class Hz{previousValue;currentValue;firstChange;constructor(n,e,i){this.previousValue=n,this.currentValue=e,this.firstChange=i}isFirstChange(){return this.firstChange}}const vi=(()=>{const t=()=>ET;return t.ngInherit=!0,t})();function ET(t){return t.type.prototype.ngOnChanges&&(t.setInput=zz),Uz}function Uz(){const t=IT(this),n=t?.current;if(n){const e=t.previous;if(e===Rr)t.previous=n;else for(let i in n)e[i]=n[i];t.current=null,this.ngOnChanges(n)}}function zz(t,n,e,i,o){const r=this.declaredInputs[i],s=IT(t)||function jz(t,n){return t[PT]=n}(t,{previous:Rr,current:null}),a=s.current||(s.current={}),l=s.previous,d=l[r];a[r]=new Hz(d&&d.currentValue,e,l===Rr),TT(t,n,o,e)}const PT="__ngSimpleChanges__";function IT(t){return t[PT]||null}const gl=[],$t=function(t,n=null,e){for(let i=0;i=i)break}else n[l]<0&&(t[17]+=65536),(a>14>16&&(3&t[2])===n&&(t[2]+=16384,RT(a,r)):RT(a,r)}class oh{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(n,e,i,o){this.factory=n,this.name=o,this.canSeeViewProviders=e,this.injectImpl=i}}function NT(t){return 3===t||4===t||6===t}function LT(t){return 64===t.charCodeAt(0)}function cd(t,n){if(null!==n&&0!==n.length)if(null===t||0===t.length)t=n.slice();else{let e=-1;for(let i=0;in){s=r-1;break}}}for(;r>16}(t),i=n;for(;e>0;)i=i[14],e--;return i}let _1=!0;function Om(t){const n=_1;return _1=t,n}let Jz=0;const Br={};function Am(t,n){const e=UT(t,n);if(-1!==e)return e;const i=n[1];i.firstCreatePass&&(t.injectorIndex=n.length,b1(i.data,t),b1(n,null),b1(i.blueprint,null));const o=Rm(t,n),r=t.injectorIndex;if(g1(o)){const s=rh(o),a=sh(o,n),l=a[1].data;for(let d=0;d<8;d++)n[r+d]=a[s+d]|l[s+d]}return n[r+8]=o,r}function b1(t,n){t.push(0,0,0,0,0,0,0,0,n)}function UT(t,n){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null===n[t.injectorIndex+8]?-1:t.injectorIndex}function Rm(t,n){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;let e=0,i=null,o=n;for(;null!==o;){if(i=KT(o),null===i)return-1;if(e++,o=o[14],-1!==i.injectorIndex)return i.injectorIndex|e<<16}return-1}function v1(t,n,e){!function ej(t,n,e){let i;"string"==typeof e?i=e.charCodeAt(0)||0:e.hasOwnProperty(Uu)&&(i=e[Uu]),null==i&&(i=e[Uu]=Jz++);const o=255&i;n.data[t+(o>>5)]|=1<=0?255&n:oj:n}(e);if("function"==typeof r){if(!ND(n,t,i))return 1&i?zT(o,0,i):jT(n,e,i,o);try{let s;if(s=r(i),null!=s||8&i)return s;ky()}finally{HD()}}else if("number"==typeof r){let s=null,a=UT(t,n),l=-1,d=1&i?n[15][5]:null;for((-1===a||4&i)&&(l=-1===a?Rm(t,n):n[a+8],-1!==l&&qT(i,!1)?(s=n[1],a=rh(l),n=sh(l,n)):a=-1);-1!==a;){const f=n[1];if(GT(r,a,f.data)){const m=nj(a,n,e,s,i,d);if(m!==Br)return m}l=n[a+8],-1!==l&&qT(i,n[1].data[a+8]===d)&>(r,a,n)?(s=f,a=rh(l),n=sh(l,n)):a=-1}}return o}function nj(t,n,e,i,o,r){const s=n[1],a=s.data[t+8],f=Fm(a,s,e,null==i?Fr(a)&&_1:i!=s&&!!(3&a.type),1&o&&r===a);return null!==f?ah(n,s,f,a,o):Br}function Fm(t,n,e,i,o){const r=t.providerIndexes,s=n.data,a=1048575&r,l=t.directiveStart,f=r>>20,g=o?a+f:t.directiveEnd;for(let b=i?a:a+f;b=l&&w.type===e)return b}if(o){const b=s[l];if(b&&lr(b)&&b.type===e)return l}return null}function ah(t,n,e,i,o){let r=t[e];const s=n.data;if(r instanceof oh){const a=r;if(a.resolving)throw xy();const l=Om(a.canSeeViewProviders);a.resolving=!0;const m=a.injectImpl?mo(a.injectImpl):null;ND(t,i,0);try{r=t[e]=a.factory(void 0,o,s,t,i),n.firstCreatePass&&e>=i.directiveStart&&function qz(t,n,e){const{ngOnChanges:i,ngOnInit:o,ngDoCheck:r}=n.type.prototype;if(i){const s=ET(n);(e.preOrderHooks??=[]).push(t,s),(e.preOrderCheckHooks??=[]).push(t,s)}o&&(e.preOrderHooks??=[]).push(0-t,o),r&&((e.preOrderHooks??=[]).push(t,r),(e.preOrderCheckHooks??=[]).push(t,r))}(e,s[e],n)}finally{null!==m&&mo(m),Om(l),a.resolving=!1,HD()}}return r}function GT(t,n,e){return!!(e[n+(t>>5)]&1<{const n=t.prototype.constructor,e=n[tl]||y1(n),i=Object.prototype;let o=Object.getPrototypeOf(t.prototype).constructor;for(;o&&o!==i;){const r=o[tl]||y1(o);if(r&&r!==e)return r;o=Object.getPrototypeOf(o)}return r=>new r})}function y1(t){return qp(t)?()=>{const n=y1(Ke(t));return n&&n()}:il(t)}function KT(t){const n=t[1],e=n.type;return 2===e?n.declTNode:1===e?t[5]:null}function lh(t){return function tj(t,n){if("class"===n)return t.classes;if("style"===n)return t.styles;const e=t.attrs;if(e){const i=e.length;let o=0;for(;oclass t{nativeElement;constructor(e){this.nativeElement=e}static __NG_ELEMENT_ID__=fj})();function JT(t){return t instanceof Ne?t.nativeElement:t}function pj(){return this._results[Symbol.iterator]()}class ud{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new be}constructor(n=!1){this._emitDistinctChangesOnly=n}get(n){return this._results[n]}map(n){return this._results.map(n)}filter(n){return this._results.filter(n)}find(n){return this._results.find(n)}reduce(n,e){return this._results.reduce(n,e)}forEach(n){this._results.forEach(n)}some(n){return this._results.some(n)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(n,e){this.dirty=!1;const i=function Lo(t){return t.flat(Number.POSITIVE_INFINITY)}(n);(this._changesDetected=!function DU(t,n,e){if(t.length!==n.length)return!1;for(let i=0;iHj}),Hj="ng",b2=new Z(""),T1=new Z("",{providedIn:"platform",factory:()=>"unknown"}),Hm=new Z(""),E1=new Z("",{factory:()=>T(et).body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null}),qj=new Z("",{factory:()=>!1}),Zj=new Z("");function Wm(t){return!(32&~t.flags)}function G2(t,n){const e=t.contentQueries;if(null!==e){const i=Pe(null);try{for(let o=0;ot,createScript:t=>t,createScriptURL:t=>t})}catch{}return Qm}()?.createHTML(t)||t}function J2(t){return function K1(){if(void 0===Jm&&(Jm=null,Nn.trustedTypes))try{Jm=Nn.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return Jm}()?.createScriptURL(t)||t}class bl{changingThisBreaksApplicationSecurity;constructor(n){this.changingThisBreaksApplicationSecurity=n}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${qM})`}}class D9 extends bl{getTypeName(){return"HTML"}}class T9 extends bl{getTypeName(){return"Style"}}class E9 extends bl{getTypeName(){return"Script"}}class P9 extends bl{getTypeName(){return"URL"}}class I9 extends bl{getTypeName(){return"ResourceURL"}}function Po(t){return t instanceof bl?t.changingThisBreaksApplicationSecurity:t}function Vr(t,n){const e=function O9(t){return t instanceof bl&&t.getTypeName()||null}(t);if(null!=e&&e!==n){if("ResourceURL"===e&&"URL"===n)return!0;throw new Error(`Required a safe ${n}, got a ${e} (see ${qM})`)}return e===n}class B9{inertDocumentHelper;constructor(n){this.inertDocumentHelper=n}getInertBodyElement(n){n=""+n;try{const e=(new window.DOMParser).parseFromString(fd(n),"text/html").body;return null===e?this.inertDocumentHelper.getInertBodyElement(n):(e.firstChild?.remove(),e)}catch{return null}}}class V9{defaultDoc;inertDocument;constructor(n){this.defaultDoc=n,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(n){const e=this.inertDocument.createElement("template");return e.innerHTML=fd(n),e}}const U9=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function mh(t){return(t=String(t)).match(U9)?t:"unsafe:"+t}function Hr(t){const n={};for(const e of t.split(","))n[e]=!0;return n}function pd(...t){const n={};for(const e of t)for(const i in e)e.hasOwnProperty(i)&&(n[i]=!0);return n}const tE=Hr("area,br,col,hr,img,wbr"),nE=Hr("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),iE=Hr("rp,rt"),Y1=pd(tE,pd(nE,Hr("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),pd(iE,Hr("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),pd(iE,nE)),X1=Hr("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),Z1=pd(X1,Hr("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),Hr("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext")),z9=Hr("script,style,template");class j9{sanitizedSomething=!1;buf=[];sanitizeChildren(n){let e=n.firstChild,i=!0,o=[];for(;e;)if(e.nodeType===Node.ELEMENT_NODE?i=this.startElement(e):e.nodeType===Node.TEXT_NODE?this.chars(e.nodeValue):this.sanitizedSomething=!0,i&&e.firstChild)o.push(e),e=G9(e);else for(;e;){e.nodeType===Node.ELEMENT_NODE&&this.endElement(e);let r=W9(e);if(r){e=r;break}e=o.pop()}return this.buf.join("")}startElement(n){const e=oE(n).toLowerCase();if(!Y1.hasOwnProperty(e))return this.sanitizedSomething=!0,!z9.hasOwnProperty(e);this.buf.push("<"),this.buf.push(e);const i=n.attributes;for(let o=0;o"),!0}endElement(n){const e=oE(n).toLowerCase();Y1.hasOwnProperty(e)&&!tE.hasOwnProperty(e)&&(this.buf.push(""))}chars(n){this.buf.push(sE(n))}}function W9(t){const n=t.nextSibling;if(n&&t!==n.previousSibling)throw rE(n);return n}function G9(t){const n=t.firstChild;if(n&&function $9(t,n){return(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}(t,n))throw rE(n);return n}function oE(t){const n=t.nodeName;return"string"==typeof n?n:"FORM"}function rE(t){return new Error(`Failed to sanitize html because the element is clobbered: ${t.outerHTML}`)}const q9=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,K9=/([^\#-~ |!])/g;function sE(t){return t.replace(/&/g,"&").replace(q9,function(n){return"&#"+(1024*(n.charCodeAt(0)-55296)+(n.charCodeAt(1)-56320)+65536)+";"}).replace(K9,function(n){return"&#"+n.charCodeAt(0)+";"}).replace(//g,">")}let eg;function aE(t,n){let e=null;try{eg=eg||function eE(t){const n=new V9(t);return function H9(){try{return!!(new window.DOMParser).parseFromString(fd(""),"text/html")}catch{return!1}}()?new B9(n):n}(t);let i=n?String(n):"";e=eg.getInertBodyElement(i);let o=5,r=i;do{if(0===o)throw new Error("Failed to sanitize html because the input is unstable");o--,i=r,r=e.innerHTML,e=eg.getInertBodyElement(i)}while(i!==r);return fd((new j9).sanitizeChildren(J1(e)||e))}finally{if(e){const i=J1(e)||e;for(;i.firstChild;)i.firstChild.remove()}}}function J1(t){return"content"in t&&function Y9(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}const X9=/^>|^->||--!>|)/g;function tC(t,n){return t.createComment(function lE(t){return t.replace(X9,n=>n.replace(Z9,"\u200b$1\u200b"))}(n))}function tg(t,n,e){return t.createElement(n,e)}function vl(t,n,e,i,o){t.insertBefore(n,e,i,o)}function dE(t,n,e){t.appendChild(n,e)}function uE(t,n,e,i,o){null!==i?vl(t,n,e,i,o):dE(t,n,e)}function gh(t,n,e,i){t.removeChild(null,n,e,i)}function fE(t,n,e){const{mergedAttrs:i,classes:o,styles:r}=e;null!==i&&function Zz(t,n,e){let i=0;for(;i-1){let r;for(;++or?"":o[f+1].toLowerCase(),2&i&&d!==m){if(ur(i))return!1;s=!0}}}}else{if(!s&&!ur(i)&&!ur(l))return!1;if(s&&ur(l))continue;s=!1,i=l|1&i}}return ur(i)||s}function ur(t){return!(1&t)}function x$(t,n,e,i){if(null===n)return-1;let o=0;if(i||!e){let r=!1;for(;o-1)for(e++;e0?'="'+a+'"':"")+"]"}else 8&i?o+="."+s:4&i&&(o+=" "+s);else""!==o&&!ur(s)&&(n+=CE(r,o),o=""),i=s,r=r||!ur(i);e++}return""!==o&&(n+=CE(r,o)),n}const Vt={};function rC(t,n,e,i,o,r,s,a,l,d,f){const m=27+i,g=m+o,b=function I$(t,n){const e=[];for(let i=0;i{class t{impl=null;execute(){this.impl?.execute()}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})();const EE=[0,1,2,3];let PE=(()=>{class t{ngZone=T(Ce);scheduler=T(fl);errorHandler=T(hl,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){T(da,{optional:!0})}execute(){const e=this.sequences.size>0;e&&$t(ye.AfterRenderHooksStart),this.executing=!0;for(const i of EE)for(const o of this.sequences)if(!o.erroredOrDestroyed&&o.hooks[i])try{o.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>(0,o.hooks[i])(o.pipelinedValue),o.snapshot))}catch(r){o.erroredOrDestroyed=!0,this.errorHandler?.handleError(r)}this.executing=!1;for(const i of this.sequences)i.afterRun(),i.once&&(this.sequences.delete(i),i.destroy());for(const i of this.deferredRegistrations)this.sequences.add(i);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),e&&$t(ye.AfterRenderHooksEnd)}register(e){const{view:i}=e;void 0!==i?((i[25]??=[]).push(e),td(i),i[2]|=8192):this.executing?this.deferredRegistrations.add(e):this.addSequence(e)}addSequence(e){this.sequences.add(e),this.scheduler.notify(7)}unregister(e){this.executing&&this.sequences.has(e)?(e.erroredOrDestroyed=!0,e.pipelinedValue=void 0,e.once=!0):(this.sequences.delete(e),this.deferredRegistrations.delete(e))}maybeTrace(e,i){return i?i.run(_C.AFTER_NEXT_RENDER,e):e()}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})();class IE{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(n,e,i,o,r,s=null){this.impl=n,this.hooks=e,this.view=i,this.once=o,this.snapshot=s,this.unregisterOnDestroy=r?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();const n=this.view?.[25];n&&(this.view[25]=n.filter(e=>e!==this))}}function Wi(t,n){const e=n?.injector??T(Ue);return Ci("NgAfterNextRender"),function OE(t,n,e,i){const o=n.get(bC);o.impl??=n.get(PE);const r=n.get(da,null,{optional:!0}),s=!0!==e?.manualCleanup?n.get(dr):null,a=n.get(gm,null,{optional:!0}),l=new IE(o.impl,function K$(t){return t instanceof Function?[void 0,void 0,t,void 0]:[t.earlyRead,t.write,t.mixedReadWrite,t.read]}(t),a?.view,i,s,r?.snapshot(null));return o.impl.register(l),l}(t,e,n,!0)}const dg=new Z("",{factory:()=>({queue:new Set,isScheduled:!1,scheduler:null,injector:T(Wn)})});function AE(t,n,e){const i=t.get(dg);if(Array.isArray(n))for(const o of n)i.queue.add(o),e?.detachedLeaveAnimationFns?.push(o);else i.queue.add(n),e?.detachedLeaveAnimationFns?.push(n);i.scheduler&&i.scheduler(t)}function RE(t,n,e,i){const o=t?.[26]?.enter;null!==n&&o&&o.has(e.index)&&function vC(t,n){for(const[e,i]of n)AE(t,i.animateFns)}(i,o)}function _d(t,n,e,i,o,r,s,a){if(null!=o){let l,d=!1;oo(o)?l=o:Tn(o)&&(d=!0,o=o[0]);const f=bi(o);0===t&&null!==i?(RE(a,i,r,e),null==s?dE(n,i,f):vl(n,i,f,s||null,!0)):1===t&&null!==i?(RE(a,i,r,e),vl(n,i,f,s||null,!0),function H$(t,n){const e=vh.get(t);if(!e||0===e.length)return;const i=n.parentNode,o=n.previousSibling;for(let r=e.length-1;r>=0;r--){const s=e[r],a=s.parentNode;s===n?(e.splice(r,1),uC.add(s),s.dispatchEvent(new CustomEvent("animationend",{detail:{cancel:!0}}))):(o&&s===o||a&&i&&a!==i)&&(e.splice(r,1),s.dispatchEvent(new CustomEvent("animationend",{detail:{cancel:!0}})),s.parentNode?.removeChild(s))}}(r,f)):2===t?(a?.[26]?.leave?.has(r.index)&&function fC(t,n){const e=vh.get(t);e?e.includes(n)||e.push(n):vh.set(t,[n])}(r,f),LE(a,r,e,m=>{uC.has(f)?uC.delete(f):gh(n,f,d,m)})):3===t&&LE(a,r,e,()=>{n.destroyNode(f)}),null!=l&&function iW(t,n,e,i,o,r,s){const a=i[7];a!==bi(i)&&_d(n,t,e,r,a,o,s);for(let d=10;d=0?i[a]():i[-a].unsubscribe(),s+=2}else e[s].call(i[e[s+1]]);null!==i&&(n[7]=null);const o=n[21];if(null!==o){n[21]=null;for(let s=0;s{if(o.leave&&o.leave.has(n.index)){const s=o.leave.get(n.index),a=[];if(s){for(let l=0;l{t[26].running=void 0,kl.delete(t[19]),n(!0)}):n(!1)}(t,i)}else t&&kl.delete(t[19]),i(!1)},o)}function wC(t,n,e){return function BE(t,n,e){let i=n;for(;null!==i&&168&i.type;)i=(n=i).parent;if(null===i)return e[0];if(Fr(i)){const{encapsulation:o}=t.data[i.directiveStart+i.componentOffset];if(o===Ho.None||o===Ho.Emulated)return null}return Jn(i,e)}(t,n.parent,e)}function VE(t,n,e){return UE(t,n,e)}let UE=function HE(t,n,e){return 40&t.type?Jn(t,e):null};function kC(t,n,e,i){const o=wC(t,i,n),r=n[11],a=VE(i.parent||n[5],i,n);if(null!=o)if(Array.isArray(e))for(let l=0;l27&&xE(t,n,27,!1),$t(s?ye.TemplateUpdateStart:ye.TemplateCreateStart,o,e),e(i,o)}finally{dl(r),$t(s?ye.TemplateUpdateEnd:ye.TemplateCreateEnd,o,e)}}function fg(t,n,e){(function cW(t,n,e){const i=e.directiveStart,o=e.directiveEnd;Fr(e)&&function O$(t,n,e){const i=Jn(n,t),o=function wE(t){const n=t.tView;return null===n||n.incompleteFirstPass?t.tView=rC(1,null,t.template,t.decls,t.vars,t.directiveDefs,t.pipeDefs,t.viewQuery,t.schemas,t.consts,t.id):n}(e),r=t[10].rendererFactory,s=aC(t,ig(t,o,null,sC(e),i,n,null,r.createRenderer(i,e),null,null,null));t[n.index]=s}(n,e,t.data[i+e.componentOffset]),t.firstCreatePass||Am(e,n);const r=e.initialInputs;for(let s=i;snull;function DC(t,n,e,i,o,r){_g(t,n[1],n,e,i)?Fr(t)&&qE(n,t.index):(3&t.type&&(e=function lW(t){return"class"===t?"className":"for"===t?"htmlFor":"formaction"===t?"formAction":"innerHtml"===t?"innerHTML":"readonly"===t?"readOnly":"tabindex"===t?"tabIndex":t}(e)),TC(t,n,e,i,o,r))}function TC(t,n,e,i,o,r){if(3&t.type){const s=Jn(t,n);i=null!=r?r(i,t.value||"",e):i,o.setProperty(s,e,i)}}function qE(t,n){const e=ro(n,t);16&e[2]||(e[2]|=64)}function uW(t,n){null!==t.hostBindings&&t.hostBindings(1,n)}function EC(t,n){const e=t.directiveRegistry;let i=null;if(e)for(let o=0;o{td(t.lView)},consumerOnSignalRead(){this.lView[24]=this}},kW={...Vc,consumerIsAlwaysLive:!0,kind:"template",consumerMarkedDirty:t=>{let n=vs(t.lView);for(;n&&!QE(n[1]);)n=vs(n);n&&yD(n)},consumerOnSignalRead(){this.lView[24]=this}};function QE(t){return 2!==t.type}function JE(t){if(null===t[23])return;let n=!0;for(;n;){let e=!1;for(const i of t[23])i.dirty&&(e=!0,null===i.zone||Zone.current===i.zone?i.run():i.zone.run(()=>i.run()));n=e&&!!(8192&t[2])}}function vg(t,n=0){const i=t[10].rendererFactory;i.begin?.();try{!function MW(t,n){const e=AD();try{um(!0),IC(t,n);let i=0;for(;cm(t);){if(100===i)throw new X(103,!1);i++,IC(t,1)}}finally{um(e)}}(t,n)}finally{i.end?.()}}function eP(t,n,e,i){if(bs(n))return;const o=n[2];Xy(n);let a=!0,l=null,d=null;QE(t)?(d=function vW(t){return t[24]??function yW(t){const n=ZE.pop()??Object.create(wW);return n.lView=t,n}(t)}(n),l=Hc(d)):null===function ny(){return Rn}()?(a=!1,d=function xW(t){const n=t[24]??Object.create(kW);return n.lView=t,n}(n),l=Hc(d)):n[24]&&(Vu(n[24]),n[24]=null);try{vD(n),function RD(t){return Ve.lFrame.bindingIndex=t}(t.bindingStartIndex),null!==e&&WE(t,n,e,2,i);const f=!(3&~o);if(f){const b=t.preOrderCheckHooks;null!==b&&Pm(n,b,null)}else{const b=t.preOrderHooks;null!==b&&Im(n,b,0,null),p1(n,0)}if(function DW(t){for(let n=c2(t);null!==n;n=d2(n)){if(!(2&n[2]))continue;const e=n[9];for(let i=0;i0&&(e[o-1][4]=n),i0&&(t[e-1][4]=i[4]);const r=Jp(t,10+n);!function FE(t,n){NE(t,n),n[0]=null,n[5]=null}(i[1],i);const s=r[18];null!==s&&s.detachView(r[1]),i[3]=null,i[4]=null,i[2]&=-129}return i}function sP(t,n){const e=t[9],i=n[3];(Tn(i)||n[15]!==i[3][15])&&(t[2]|=2),null===e?t[9]=[n]:e.push(n)}class kh{_lView;_cdRefInjectingView;_appRef=null;_attachedToViewContainer=!1;exhaustive;get rootNodes(){const n=this._lView,e=n[1];return wh(e,n,e.firstChild,[])}constructor(n,e){this._lView=n,this._cdRefInjectingView=e}get context(){return this._lView[8]}set context(n){this._lView[8]=n}get destroyed(){return bs(this._lView)}destroy(){if(this._appRef)this._appRef.detachView(this);else if(this._attachedToViewContainer){const n=this._lView[3];if(oo(n)){const e=n[8],i=e?e.indexOf(this):-1;i>-1&&(xh(n,i),Jp(e,i))}this._attachedToViewContainer=!1}Ch(this._lView[1],this._lView)}onDestroy(n){dm(this._lView,n)}markForCheck(){yd(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[2]&=-129}reattach(){zy(this._lView),this._lView[2]|=128}detectChanges(){this._lView[2]|=1024,vg(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new X(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;const n=ea(this._lView),e=this._lView[16];null!==e&&!n&&yC(e,this._lView),NE(this._lView[1],this._lView)}attachToAppRef(n){if(this._attachedToViewContainer)throw new X(902,!1);this._appRef=n;const e=ea(this._lView),i=this._lView[16];null!==i&&!e&&sP(i,this._lView),zy(this._lView)}}let Oi=(()=>class t{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=IW;constructor(e,i,o){this._declarationLView=e,this._declarationTContainer=i,this.elementRef=o}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,i){return this.createEmbeddedViewImpl(e,i)}createEmbeddedViewImpl(e,i,o){const r=vd(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:i,dehydratedView:o});return new kh(r)}})();function IW(){return yg(He(),ne())}function yg(t,n){return 4&t.type?new Oi(n,t,dd(t,n)):null}function Dl(t,n,e,i,o){let r=t.data[n];if(null===r)r=function NC(t,n,e,i,o){const r=TD(),s=ED(),l=t.data[n]=function HW(t,n,e,i,o,r){let s=n?n.injectorIndex:-1,a=0;return SD()&&(a|=128),{type:e,index:i,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:a,providerIndexes:0,value:o,attrs:r,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:n,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}(0,s?r:r&&r.parent,e,n,i,o);return function VW(t,n,e,i){null===t.firstChild&&(t.firstChild=n),null!==e&&(i?null==e.child&&null!==n.parent&&(e.child=n):null===e.next&&(e.next=n,n.prev=e))}(t,l,r,s),l}(t,n,e,i,o),function KU(){return Ve.lFrame.inI18n}()&&(r.flags|=32);else if(64&r.type){r.type=e,r.value=i,r.attrs=o;const s=function Yu(){const t=Ve.lFrame,n=t.currentTNode;return t.isParent?n:n.parent}();r.injectorIndex=null===s?-1:s.injectorIndex}return ys(r,!0),r}function SP(t,n){let e=0,i=t.firstChild;if(i){const o=t.data.r;for(;eclass t{destroyNode=null;static __NG_ELEMENT_ID__=()=>function kG(){const t=ne(),e=ro(He().index,t);return(Tn(e)?e:t)[11]}()})(),SG=(()=>{class t{static \u0275prov=te({token:t,providedIn:"root",factory:()=>null})}return t})();const $C={};class xd{injector;parentInjector;constructor(n,e){this.injector=n,this.parentInjector=e}get(n,e,i){const o=this.injector.get(n,$C,i);return o!==$C||e===$C?o:this.parentInjector.get(n,e,i)}}function Pg(t,n,e){let i=e?t.styles:null,o=e?t.classes:null,r=0;if(null!==n)for(let s=0;s0&&(e.directiveToIndex=new Map);for(let g=0;g0;){const e=t[--n];if("number"==typeof e&&e<0)return e}return 0})(s)!=a&&s.push(a),s.push(e,i,r)}}(t,n,i,bh(t,e,o.hostVars,Vt),o)}function NG(t,n,e){if(e){if(n.exportAs)for(let i=0;il?a[l]:null}"string"==typeof s&&(r+=2)}return null}(n,e,r,t.index)),null!==f)(f.__ngLastListenerFn__||f).__ngNextListenerFn__=s,f.__ngLastListenerFn__=s,d=!0;else{const m=Jn(t,e),g=i?i(m):m,b=o.listen(g,r,a);(function UG(t){return t.startsWith("animation")||t.startsWith("transition")})(r)||HP(i?M=>i(bi(M[t.index])):t.index,n,e,r,a,b,!1)}return d}function HP(t,n,e,i,o,r,s){const a=n.firstCreatePass?xD(n):null,l=wD(e),d=l.length;l.push(o,r),a&&a.push(i,t,d,(d+1)*(s?-1:1))}function Sd(t,n,e,i,o,r){const a=n[1],m=n[e][a.data[e].outputs[i]].subscribe(r);HP(t.index,a,n,o,r,m,!0)}const ks=Symbol("BINDING");function XC(t){return t.debugInfo?.className||t.type.name||null}class KP extends Tg{ngModule;constructor(n){super(),this.ngModule=n}resolveComponentFactory(n){const e=kt(n);return new Rh(e,this.ngModule)}}class Rh extends IP{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=function JG(t){return Object.keys(t).map(n=>{const[e,i,o]=t[n],r={propName:e,templateName:n,isSignal:0!==(i&og.SignalBased)};return o&&(r.transform=o),r})}(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=function eq(t){return Object.keys(t).map(n=>({propName:t[n],templateName:n}))}(this.componentDef.outputs),this.cachedOutputs}constructor(n,e){super(),this.componentDef=n,this.ngModule=e,this.componentType=n.type,this.selector=function E$(t){return t.map(T$).join(",")}(n.selectors),this.ngContentSelectors=n.ngContentSelectors??[],this.isBoundToModule=!!e}create(n,e,i,o,r,s){$t(ye.DynamicComponentStart);const a=Pe(null);try{const l=this.componentDef,d=function tq(t,n,e){let i=n instanceof Wn?n:n?.injector;return i&&null!==t.getStandaloneInjector&&(i=t.getStandaloneInjector(i)||i),i?new xd(e,i):e}(l,o||this.ngModule,n),f=function nq(t){const n=t.get(Uo,null);if(null===n)throw new X(407,!1);return{rendererFactory:n,sanitizer:t.get(SG,null),changeDetectionScheduler:t.get(fl,null),ngReflect:!1,tracingService:t.get(da,null,{optional:!0})}}(d),m=f.tracingService;return m&&m.componentCreate?m.componentCreate(XC(l),()=>this.createComponentRef(f,d,e,i,r,s)):this.createComponentRef(f,d,e,i,r,s)}finally{Pe(a)}}createComponentRef(n,e,i,o,r,s){const a=this.componentDef,l=function rq(t,n,e,i){const o=t?["ng-version","21.2.4"]:function P$(t){const n=[],e=[];let i=1,o=2;for(;i{if(1&e&&t)for(const i of t)i.create();if(2&e&&n)for(const i of n)i.update()}:null}(r,s),1,a,l,null,null,null,[o],null)}(o,a,s,r),d=n.rendererFactory.createRenderer(null,a),f=o?function rW(t,n,e,i){const r=i.get(qj,!1)||e===Ho.ShadowDom||e===Ho.ExperimentalIsolatedShadowDom,s=t.selectRootElement(n,r);return function sW(t){GE(t)}(s),s}(d,o,a.encapsulation,e):function iq(t,n){const e=function oq(t){return(t.selectors[0][0]||"div").toLowerCase()}(t);return tg(n,e,"svg"===e?"svg":"math"===e?"math":null)}(a,d),m=s?.some(YP)||r?.some(w=>"function"!=typeof w&&w.bindings.some(YP)),g=ig(null,l,null,512|sC(a),null,null,n,d,e,null,null);g[27]=f,Xy(g);let b=null;try{const w=GC(27,g,2,"#host",()=>l.directiveRegistry,!0,0);fE(d,f,w),bo(f,g),fg(l,g,w),W1(l,w,g),qC(l,w),void 0!==i&&function lq(t,n,e){const i=t.projection=[];for(let o=0;oclass t{static __NG_ELEMENT_ID__=cq})();function cq(){return ZP(He(),ne())}class ZC extends Ai{_lContainer;_hostTNode;_hostLView;constructor(n,e,i){super(),this._lContainer=n,this._hostTNode=e,this._hostLView=i}get element(){return dd(this._hostTNode,this._hostLView)}get injector(){return new Vn(this._hostTNode,this._hostLView)}get parentInjector(){const n=Rm(this._hostTNode,this._hostLView);if(g1(n)){const e=sh(n,this._hostLView),i=rh(n);return new Vn(e[1].data[i+8],e)}return new Vn(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(n){const e=XP(this._lContainer);return null!==e&&e[n]||null}get length(){return this._lContainer.length-10}createEmbeddedView(n,e,i){let o,r;"number"==typeof i?o=i:null!=i&&(o=i.index,r=i.injector);const a=n.createEmbeddedViewImpl(e||{},r,null);return this.insertImpl(a,o,Ml(this._hostTNode,null)),a}createComponent(n,e,i,o,r,s,a){const l=n&&!function ih(t){return"function"==typeof t}(n);let d;if(l)d=e;else{const E=e||{};d=E.index,i=E.injector,o=E.projectableNodes,r=E.environmentInjector||E.ngModuleRef,s=E.directives,a=E.bindings}const f=l?n:new Rh(kt(n)),m=i||this.parentInjector;if(!r&&null==f.ngModule){const I=(l?m:this.parentInjector).get(Wn,null);I&&(r=I)}kt(f.componentType??{});const M=f.create(m,o,null,r,s,a);return this.insertImpl(M.hostView,d,Ml(this._hostTNode,null)),M}insert(n,e){return this.insertImpl(n,e,!0)}insertImpl(n,e,i){const o=n._lView;if(function zU(t){return oo(t[3])}(o)){const a=this.indexOf(n);if(-1!==a)this.detach(a);else{const l=o[3],d=new ZC(l,l[5],l[3]);d.detach(d.indexOf(n))}}const r=this._adjustIndex(e),s=this._lContainer;return Cd(s,o,r,i),n.attachToViewContainerRef(),nD(QC(s),r,n),n}move(n,e){return this.insert(n,e)}indexOf(n){const e=XP(this._lContainer);return null!==e?e.indexOf(n):-1}remove(n){const e=this._adjustIndex(n,-1),i=xh(this._lContainer,e);i&&(Jp(QC(this._lContainer),e),Ch(i[1],i))}detach(n){const e=this._adjustIndex(n,-1),i=xh(this._lContainer,e);return i&&null!=Jp(QC(this._lContainer),e)?new kh(i):null}_adjustIndex(n,e=0){return n??this.length+e}}function XP(t){return t[8]}function QC(t){return t[8]||(t[8]=[])}function ZP(t,n){let e;const i=n[t.index];return oo(i)?e=i:(e=oP(i,n,null,t),n[t.index]=e,aC(n,e)),QP(e,n,t,i),new ZC(e,t,n)}let QP=function eI(t,n,e,i){if(t[7])return;let o;o=8&e.type?bi(i):function dq(t,n){const e=t[11],i=e.createComment(""),o=Jn(n,t),r=e.parentNode(o);return vl(e,r,i,e.nextSibling(o),!1),i}(n,e),t[7]=o};class e0{queryList;matches=null;constructor(n){this.queryList=n}clone(){return new e0(this.queryList)}setDirty(){this.queryList.setDirty()}}class t0{queries;constructor(n=[]){this.queries=n}createEmbeddedView(n){const e=n.queries;if(null!==e){const i=null!==n.contentQueries?n.contentQueries[0]:e.length,o=[];for(let r=0;rn.trim())}(n):n}}class n0{queries;constructor(n=[]){this.queries=n}elementStart(n,e){for(let i=0;i0)i.push(s[a/2]);else{const d=r[a+1],f=n[-l];for(let m=10;m{i._dirtyCounter();const r=function yq(t,n){const e=t._lView,i=t._queryIndex;if(void 0===e||void 0===i||4&e[2])return n?void 0:en;const o=r0(e,i),r=aI(e,i);return o.reset(r,JT),n?o.first:o._changesDetected||void 0===t._flatValue?t._flatValue=o.toArray():t._flatValue}(i,t);if(n&&void 0===r)throw new X(-951,!1);return r});return i=o[Fn],i._dirtyCounter=Ct(0),i._flatValue=void 0,o}function lI(t){return a0(!0,!1)}function cI(t){return a0(!0,!0)}function dI(t,n){const e=t[Fn];e._lView=ne(),e._queryIndex=n,e._queryList=r0(e._lView,n),e._queryList.onDirty(()=>e._dirtyCounter.update(i=>i+1))}let Ss=class{},pI=class{};class u0 extends Ss{ngModuleType;_parent;_bootstrapComponents=[];_r3Injector;instance;destroyCbs=[];componentFactoryResolver=new KP(this);constructor(n,e,i,o=!0){super(),this.ngModuleType=n,this._parent=e;const r=Ar(n);this._bootstrapComponents=Ur(r.bootstrap),this._r3Injector=jD(n,e,[{provide:Ss,useValue:this},{provide:Tg,useValue:this.componentFactoryResolver},...i],Zs(n),new Set(["environment"])),o&&this.resolveInjectorInitializers()}resolveInjectorInitializers(){this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(this.ngModuleType)}get injector(){return this._r3Injector}destroy(){const n=this._r3Injector;!n.destroyed&&n.destroy(),this.destroyCbs.forEach(e=>e()),this.destroyCbs=null}onDestroy(n){this.destroyCbs.push(n)}}class mI extends pI{moduleType;constructor(n){super(),this.moduleType=n}create(n){return new u0(this.moduleType,n,[])}}class Tq extends Ss{injector;componentFactoryResolver=new KP(this);instance=null;constructor(n){super();const e=new ol([...n.providers,{provide:Ss,useValue:this},{provide:Tg,useValue:this.componentFactoryResolver}],n.parent||rm(),n.debugName,new Set(["environment"]));this.injector=e,n.runEnvironmentInitializers&&e.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(n){this.injector.onDestroy(n)}}function Ag(t,n,e=null){return new Tq({providers:t,parent:n,debugName:e,runEnvironmentInitializers:!0}).injector}let Eq=(()=>{class t{_injector;cachedInjectors=new Map;constructor(e){this._injector=e}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){const i=Py(0,e.type),o=i.length>0?Ag([i],this._injector,""):null;this.cachedInjectors.set(e,o)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(const e of this.cachedInjectors.values())null!==e&&e.destroy()}finally{this.cachedInjectors.clear()}}static \u0275prov=te({token:t,providedIn:"environment",factory:()=>new t(ce(Wn))})}return t})();function ae(t){return xs(()=>{const n=_I(t),e={...n,decls:t.decls,vars:t.vars,template:t.template,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,onPush:t.changeDetection===Lm.OnPush,directiveDefs:null,pipeDefs:null,dependencies:n.standalone&&t.dependencies||null,getStandaloneInjector:n.standalone?o=>o.get(Eq).getOrCreateStandaloneInjector(e):null,getExternalStyles:null,signals:t.signals??!1,data:t.data||{},encapsulation:t.encapsulation||Ho.Emulated,styles:t.styles||en,_:null,schemas:t.schemas||null,tView:null,id:""};n.standalone&&Ci("NgStandalone"),bI(e);const i=t.dependencies;return e.directiveDefs=Rg(i,gI),e.pipeDefs=Rg(i,sr),e.id=function Aq(t){let n=0;const i=[t.selectors,t.ngContentSelectors,t.hostVars,t.hostAttrs,"function"==typeof t.consts?"":t.consts,t.vars,t.decls,t.encapsulation,t.standalone,t.signals,t.exportAs,JSON.stringify(t.inputs),JSON.stringify(t.outputs),Object.getOwnPropertyNames(t.type.prototype),!!t.contentQueries,!!t.viewQuery];for(const r of i.join("|"))n=Math.imul(31,n)+r.charCodeAt(0)|0;return n+=2147483648,"c"+n}(e),e})}function gI(t){return kt(t)||no(t)}function tt(t){return xs(()=>({type:t.type,bootstrap:t.bootstrap||en,declarations:t.declarations||en,imports:t.imports||en,exports:t.exports||en,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}))}function Pq(t,n){if(null==t)return Rr;const e={};for(const i in t)if(t.hasOwnProperty(i)){const o=t[i];let r,s,a,l;Array.isArray(o)?(a=o[0],r=o[1],s=o[2]??r,l=o[3]||null):(r=o,s=o,a=og.None,l=null),e[r]=[i,a,l],n[r]=s}return e}function Iq(t){if(null==t)return Rr;const n={};for(const e in t)t.hasOwnProperty(e)&&(n[t[e]]=e);return n}function de(t){return xs(()=>{const n=_I(t);return bI(n),n})}function Gi(t){return{type:t.type,name:t.name,factory:null,pure:!1!==t.pure,standalone:t.standalone??!0,onDestroy:t.type.prototype.ngOnDestroy||null}}function _I(t){const n={};return{type:t.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:n,inputConfig:t.inputs||Rr,exportAs:t.exportAs||null,standalone:t.standalone??!0,signals:!0===t.signals,selectors:t.selectors||en,viewQuery:t.viewQuery||null,features:t.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,inputs:Pq(t.inputs,n),outputs:Iq(t.outputs),debugInfo:null}}function bI(t){t.features?.forEach(n=>n(t))}function Rg(t,n){return t?()=>{const e="function"==typeof t?t():t,i=[];for(const o of e){const r=n(o);null!==r&&i.push(r)}return i}:null}function vI(t){const n=e=>{const i=Array.isArray(t);null===e.hostDirectives?(e.resolveHostDirectives=Fq,e.hostDirectives=i?t.map(h0):[t]):i?e.hostDirectives.unshift(...t.map(h0)):e.hostDirectives.unshift(t)};return n.ngInherit=!0,n}function Fq(t){const n=[];let e=!1,i=null,o=null;for(let r=0;r=0;i--){const o=t[i];o.hostVars=n+=o.hostVars,o.hostAttrs=cd(o.hostAttrs,e=cd(e,o.hostAttrs))}}(i)}function Bq(t,n){for(const e in n.inputs){if(!n.inputs.hasOwnProperty(e)||t.inputs.hasOwnProperty(e))continue;const i=n.inputs[e];void 0!==i&&(t.inputs[e]=i,t.declaredInputs[e]=n.declaredInputs[e])}}function f0(t){return t===Rr?{}:t===en?[]:t}function Hq(t,n){const e=t.viewQuery;t.viewQuery=e?(i,o)=>{n(i,o),e(i,o)}:n}function Uq(t,n){const e=t.contentQueries;t.contentQueries=e?(i,o,r)=>{n(i,o,r),e(i,o,r)}:n}function zq(t,n){const e=t.hostBindings;t.hostBindings=e?(i,o)=>{n(i,o),e(i,o)}:n}function kI(t,n,e,i,o,r,s,a){if(e.firstCreatePass){t.mergedAttrs=cd(t.mergedAttrs,t.attrs);const f=t.tView=rC(2,t,o,r,s,e.directiveRegistry,e.pipeRegistry,null,e.schemas,e.consts,null);null!==e.queries&&(e.queries.template(e,t),f.queries=e.queries.embeddedTView(t))}a&&(t.flags|=a),ys(t,!1);const l=SI(e,n,t,i);fm()&&kC(e,n,l,t),bo(l,n);const d=oP(l,n,l,t);n[i+27]=d,aC(n,d)}function Ol(t,n,e,i,o,r,s,a,l,d,f){const m=e+27;let g;if(n.firstCreatePass){if(g=Dl(n,m,4,s||null,a||null),null!=d){const b=zi(n.consts,d);g.localNames=[];for(let w=0;w{class t{log(e){console.log(e)}warn(e){console.warn(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})();function Fl(t){return"function"==typeof t&&void 0!==t[Fn]}function UI(t){return Fl(t)&&"function"==typeof t.set}const nO=new Z(""),iO=new Z("");let C0,y0=(()=>{class t{_ngZone;registry;_isZoneStable=!0;_callbacks=[];_taskTrackingZone=null;_destroyRef;constructor(e,i,o){this._ngZone=e,this.registry=i,Ly()&&(this._destroyRef=T(dr,{optional:!0})??void 0),C0||(function ZK(t){C0=t}(o),o.addToWindow(i)),this._watchAngularEvents(),e.run(()=>{this._taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){const e=this._ngZone.onUnstable.subscribe({next:()=>{this._isZoneStable=!1}}),i=this._ngZone.runOutsideAngular(()=>this._ngZone.onStable.subscribe({next:()=>{Ce.assertNotInAngularZone(),queueMicrotask(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}}));this._destroyRef?.onDestroy(()=>{e.unsubscribe(),i.unsubscribe()})}isStable(){return this._isZoneStable&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())queueMicrotask(()=>{for(;0!==this._callbacks.length;){let e=this._callbacks.pop();clearTimeout(e.timeoutId),e.doneCb()}});else{let e=this.getPendingTasks();this._callbacks=this._callbacks.filter(i=>!i.updateCb||!i.updateCb(e)||(clearTimeout(i.timeoutId),!1))}}getPendingTasks(){return this._taskTrackingZone?this._taskTrackingZone.macroTasks.map(e=>({source:e.source,creationLocation:e.creationLocation,data:e.data})):[]}addCallback(e,i,o){let r=-1;i&&i>0&&(r=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==r),e()},i)),this._callbacks.push({doneCb:e,timeoutId:r,updateCb:o})}whenStable(e,i,o){if(o&&!this._taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(e,i,o),this._runCallbacksIfReady()}registerApplication(e){this.registry.registerApplication(e,this)}unregisterApplication(e){this.registry.unregisterApplication(e)}findProviders(e,i,o){return[]}static \u0275fac=function(i){return new(i||t)(ce(Ce),ce(XK),ce(iO))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),XK=(()=>{class t{_applications=new Map;registerApplication(e,i){this._applications.set(e,i)}unregisterApplication(e){this._applications.delete(e)}unregisterAllApplications(){this._applications.clear()}getTestability(e){return this._applications.get(e)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(e,i=!0){return C0?.findTestabilityInTree(this,e,i)??null}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})();function Hh(t){return!!t&&"function"==typeof t.then}function oO(t){return!!t&&"function"==typeof t.subscribe}const rO=new Z("");function sO(t){return Gu([{provide:rO,multi:!0,useValue:t}])}let aO=(()=>{class t{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((e,i)=>{this.resolve=e,this.reject=i});appInits=T(rO,{optional:!0})??[];injector=T(Ue);constructor(){}runInitializers(){if(this.initialized)return;const e=[];for(const o of this.appInits){const r=io(this.injector,o);if(Hh(r))e.push(r);else if(oO(r)){const s=new Promise((a,l)=>{r.subscribe({complete:a,error:l})});e.push(s)}}const i=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{i()}).catch(o=>{this.reject(o)}),0===e.length&&i(),this.initialized=!0}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const lO=new Z("");function cO(t,n){return Array.isArray(n)?n.reduce(cO,t):{...t,...n}}let fr=(()=>{class t{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=T(Nr);afterRenderManager=T(bC);zonelessEnabled=T(_m);rootEffectScheduler=T(ZD);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new be;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=T(ta);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(De(e=>!e))}constructor(){T(da,{optional:!0})}whenStable(){let e;return new Promise(i=>{e=this.isStable.subscribe({next:o=>{o&&i()}})}).finally(()=>{e.unsubscribe()})}_injector=T(Wn);_rendererFactory=null;get injector(){return this._injector}bootstrap(e,i){return this.bootstrapImpl(e,i)}bootstrapImpl(e,i,o=Ue.NULL){return this._injector.get(Ce).run(()=>{$t(ye.BootstrapComponentStart);const s=e instanceof IP;if(!this._injector.get(aO).done)throw new X(405,"");let l;l=s?e:this._injector.get(Tg).resolveComponentFactory(e),this.componentTypes.push(l.componentType);const d=function JK(t){return t.isBoundToModule}(l)?void 0:this._injector.get(Ss),m=l.create(o,[],i||l.selector,d),g=m.location.nativeElement,b=m.injector.get(nO,null);return b?.registerApplication(g),m.onDestroy(()=>{this.detachView(m.hostView),jg(this.components,m),b?.unregisterApplication(g)}),this._loadComponent(m),$t(ye.BootstrapComponentEnd,m),m})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){$t(ye.ChangeDetectionStart),null!==this.tracingSnapshot?this.tracingSnapshot.run(_C.CHANGE_DETECTION,this.tickImpl):this.tickImpl()}tickImpl=()=>{if(this._runningTick)throw $t(ye.ChangeDetectionEnd),new X(101,!1);const e=Pe(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,Pe(e),this.afterTick.next(),$t(ye.ChangeDetectionEnd)}};synchronize(){null===this._rendererFactory&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(Uo,null,{optional:!0}));let e=0;for(;0!==this.dirtyFlags&&e++<10;){$t(ye.ChangeDetectionSyncStart);try{this.synchronizeOnce()}finally{$t(ye.ChangeDetectionSyncEnd)}}}synchronizeOnce(){16&this.dirtyFlags&&(this.dirtyFlags&=-17,this.rootEffectScheduler.flush());let e=!1;if(7&this.dirtyFlags){const i=!!(1&this.dirtyFlags);this.dirtyFlags&=-8,this.dirtyFlags|=8;for(let{_lView:o}of this.allViews)(i||cm(o))&&(vg(o,i&&!this.zonelessEnabled?0:1),e=!0);if(this.dirtyFlags&=-5,this.syncDirtyFlagsWithViews(),23&this.dirtyFlags)return}e||(this._rendererFactory?.begin?.(),this._rendererFactory?.end?.()),8&this.dirtyFlags&&(this.dirtyFlags&=-9,this.afterRenderManager.execute()),this.syncDirtyFlagsWithViews()}syncDirtyFlagsWithViews(){this.allViews.some(({_lView:e})=>cm(e))?this.dirtyFlags|=2:this.dirtyFlags&=-8}attachView(e){const i=e;this._views.push(i),i.attachToAppRef(this)}detachView(e){const i=e;jg(this._views,i),i.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView);try{this.tick()}catch(o){this.internalErrorHandler(o)}this.components.push(e),this._injector.get(lO,[]).forEach(o=>o(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy())}finally{this._destroyed=!0,this._views=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>jg(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new X(406,!1);const e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function jg(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}function D0(t,n){const e=ne();if(mn(e,go(),n)){const o=$e(),r=cr();if(_g(r,o,e,t,n))Fr(r)&&qE(e,r.index);else{const a=Jn(r,e);pg(e[11],a,null,r.value,t,n,null)}}return D0}function We(t,n,e,i){const o=ne();return mn(o,go(),n)&&($e(),function hW(t,n,e,i,o,r){const s=Jn(t,n);pg(n[11],s,r,t.value,e,i,o)}(cr(),o,t,n,e,i)),We}function wi(){return ne()[15][8]}class UY{destroy(n){}updateValue(n,e){}swap(n,e){const i=Math.min(n,e),o=Math.max(n,e),r=this.detach(o);if(o-i>1){const s=this.detach(i);this.attach(i,r),this.attach(o,s)}else this.attach(i,r)}move(n,e){this.attach(e,this.detach(n))}}function E0(t,n,e,i,o){return t===e&&Object.is(n,i)?1:Object.is(o(t,n),o(e,i))?-1:0}function P0(t,n,e,i){return!(void 0===n||!n.has(i)||(t.attach(e,n.get(i)),n.delete(i),0))}function bO(t,n,e,i,o){if(P0(t,n,i,e(i,o)))t.updateValue(i,o);else{const r=t.create(i,o);t.attach(i,r)}}function vO(t,n,e,i){const o=new Set;for(let r=n;r<=e;r++)o.add(i(r,t.at(r)));return o}class yO{kvMap=new Map;_vMap=void 0;has(n){return this.kvMap.has(n)}delete(n){if(!this.has(n))return!1;const e=this.kvMap.get(n);return void 0!==this._vMap&&this._vMap.has(e)?(this.kvMap.set(n,this._vMap.get(e)),this._vMap.delete(e)):this.kvMap.delete(n),!0}get(n){return this.kvMap.get(n)}set(n,e){if(this.kvMap.has(n)){let i=this.kvMap.get(n);void 0===this._vMap&&(this._vMap=new Map);const o=this._vMap;for(;o.has(i);)i=o.get(i);o.set(i,e)}else this.kvMap.set(n,e)}forEach(n){for(let[e,i]of this.kvMap)if(n(i,e),void 0!==this._vMap){const o=this._vMap;for(;o.has(i);)i=o.get(i),n(i,e)}}}function x(t,n,e,i,o,r,s,a){Ci("NgControlFlow");const l=ne(),d=$e();return Ol(l,d,t,n,e,i,o,zi(d.consts,r),256,s,a),I0}function I0(t,n,e,i,o,r,s,a){Ci("NgControlFlow");const l=ne(),d=$e();return Ol(l,d,t,n,e,i,o,zi(d.consts,r),512,s,a),I0}function k(t,n){Ci("NgControlFlow");const e=ne(),i=go(),o=e[i]!==Vt?e[i]:-1,r=-1!==o?qg(e,27+o):void 0;if(mn(e,i,t)){const a=Pe(null);try{if(void 0!==r&&OC(r,0),-1!==t){const l=27+t,d=qg(e,l),f=O0(e[1],l),m=null;Cd(d,vd(e,f,n,{dehydratedView:m}),0,Ml(f,m))}}finally{Pe(a)}}else if(void 0!==r){const a=rP(r,0);void 0!==a&&(a[8]=n)}}class jY{lContainer;$implicit;$index;constructor(n,e,i){this.lContainer=n,this.$implicit=e,this.$index=i}get $count(){return this.lContainer.length-10}}function CO(t){return t}function Le(t,n){return n}class $Y{hasEmptyBlock;trackByFn;liveCollection;constructor(n,e,i){this.hasEmptyBlock=n,this.trackByFn=e,this.liveCollection=i}}function me(t,n,e,i,o,r,s,a,l,d,f,m,g){Ci("NgControlFlow");const b=ne(),w=$e(),M=void 0!==l,E=ne(),I=a?s.bind(E[15][8]):s,A=new $Y(M,I);E[27+t]=A,Ol(b,w,t+1,n,e,i,o,zi(w.consts,r),256),M&&Ol(b,w,t+2,l,d,f,m,zi(w.consts,g),512)}class WY extends UY{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(n,e,i){super(),this.lContainer=n,this.hostLView=e,this.templateTNode=i}get length(){return this.lContainer.length-10}at(n){return this.getLView(n)[8].$implicit}attach(n,e){const i=e[6];this.needsIndexUpdate||=n!==this.length,Cd(this.lContainer,e,n,Ml(this.templateTNode,i)),function GY(t,n){if(t.length<=10)return;const i=t[10+n],o=i?i[26]:void 0;i&&o&&o.detachedLeaveAnimationFns&&o.detachedLeaveAnimationFns.length>0&&(function Y$(t,n){const e=t.get(dg);if(n.detachedLeaveAnimationFns){for(const i of n.detachedLeaveAnimationFns)e.queue.delete(i);n.detachedLeaveAnimationFns=void 0}}(i[9],o),kl.delete(i[19]),o.detachedLeaveAnimationFns=void 0)}(this.lContainer,n)}detach(n){return this.needsIndexUpdate||=n!==this.length-1,function qY(t,n){if(t.length<=10)return;const i=t[10+n],o=i?i[26]:void 0;o&&o.leave&&o.leave.size>0&&(o.detachedLeaveAnimationFns=[])}(this.lContainer,n),function KY(t,n){return xh(t,n)}(this.lContainer,n)}create(n,e){return vd(this.hostLView,this.templateTNode,new jY(this.lContainer,e,n),{dehydratedView:null})}destroy(n){Ch(n[1],n)}updateValue(n,e){this.getLView(n)[8].$implicit=e}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let n=0;n{t.destroy(d)})}(l,t,r.trackByFn,n),l.updateIndexes(),r.hasEmptyBlock){const d=go(),f=0===l.length;if(mn(i,d,f)){const m=e+2,g=qg(i,m);if(f){const b=O0(o,m),w=null;Cd(g,vd(i,b,void 0,{dehydratedView:w}),0,Ml(b,w))}else o.firstUpdatePass&&function Sg(t){const n=t[6]??[],i=t[3][11],o=[];for(const r of n)void 0!==r.data.di?o.push(r):SP(r,i);t[6]=o}(g),OC(g,0)}}}finally{Pe(n)}}function qg(t,n){return t[n]}function O0(t,n){return ed(t,n)}function C(t,n,e){const i=ne();return mn(i,go(),n)&&($e(),DC(cr(),i,t,n,i[11],e)),C}function A0(t,n,e,i,o){_g(n,t,e,o?"class":"style",i)}function h(t,n,e,i){const o=ne(),r=o[1],s=t+27,a=r.firstCreatePass?GC(s,o,2,n,EC,Gy(),e,i):r.data[s];if(Fr(a)){const l=o[10].tracingService;if(l&&l.componentCreate)return l.componentCreate(XC(r.data[a.directiveStart+a.componentOffset]),()=>(wO(t,n,o,a,i),h))}return wO(t,n,o,a,i),h}function wO(t,n,e,i,o){if(mg(i,e,t,n,R0),Qc(i)){const r=e[1];fg(r,e,i),W1(r,i,e)}null!=o&&bd(e,i)}function u(){const t=$e(),e=gg(He());return t.firstCreatePass&&qC(t,e),MD(e)&&DD(),kD(),null!=e.classesWithoutHost&&function Yz(t){return!!(8&t.flags)}(e)&&A0(t,e,ne(),e.classesWithoutHost,!0),null!=e.stylesWithoutHost&&function Xz(t){return!!(16&t.flags)}(e)&&A0(t,e,ne(),e.stylesWithoutHost,!1),u}function L(t,n,e,i){return h(t,n,e,i),u(),L}function Ms(t,n,e,i){const o=ne(),r=o[1],s=t+27,a=r.firstCreatePass?function BP(t,n,e,i,o,r){const s=n.consts,l=Dl(n,t,e,i,zi(s,o));if(l.mergedAttrs=cd(l.mergedAttrs,l.attrs),null!=r){const d=zi(s,r);l.localNames=[];for(let f=0;f(Xu(!0),tg(n[11],i,function t7(){return Ve.lFrame.currentNamespace}()));function zr(t,n,e){const i=ne(),o=i[1],r=t+27,s=o.firstCreatePass?GC(r,i,8,"ng-container",EC,Gy(),n,e):o.data[r];if(mg(s,i,t,"ng-container",N0),Qc(s)){const a=i[1];fg(a,i,s),W1(a,s,i)}return null!=e&&bd(i,s),zr}function pr(){const t=$e(),e=gg(He());return t.firstCreatePass&&qC(t,e),pr}function mr(t,n,e){return zr(t,n,e),pr(),mr}let N0=(t,n,e,i,o)=>(Xu(!0),tC(n[11],""));function re(){return ne()}function gr(t,n,e){const i=ne();return mn(i,go(),n)&&($e(),TC(cr(),i,t,n,i[11],e)),gr}const zh=void 0;var JY=["en",[["a","p"],["AM","PM"]],[["AM","PM"]],[["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"]],zh,[["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"]],zh,[["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\u202fa","h:mm:ss\u202fa","h:mm:ss\u202fa z","h:mm:ss\u202fa zzzz"],["{1}, {0}",zh,zh,zh],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function QY(t){const n=Math.floor(Math.abs(t)),e=t.toString().replace(/^[^.]*\.?/,"").length;return 1===n&&0===e?1:5}];let Od={};function so(t){const n=function eX(t){return t.toLowerCase().replace(/_/g,"-")}(t);let e=DO(n);if(e)return e;const i=n.split("-")[0];if(e=DO(i),e)return e;if("en"===i)return JY;throw new X(701,!1)}function DO(t){return t in Od||(Od[t]=Nn.ng&&Nn.ng.common&&Nn.ng.common.locales&&Nn.ng.common.locales[t]),Od[t]}var gn=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}(gn||{});const Kg="en-US";let TO=Kg;function F(t,n,e){const i=ne(),o=$e(),r=He();return V0(o,i,i[11],r,t,n,e),F}function Jg(t,n,e){const i=ne(),o=$e(),r=He();return(3&r.type||e)&&YC(r,o,i,e,i[11],t,n,ha(r,i,n)),Jg}function V0(t,n,e,i,o,r,s){let a=!0,l=null;if((3&i.type||s)&&(l??=ha(i,n,r),YC(i,t,n,s,e,o,r,l)&&(a=!1)),a){const d=i.outputs?.[o],f=i.hostDirectiveOutputs?.[o];if(f&&f.length)for(let m=0;m0;)n=n[14],t--;return n}(t,Ve.lFrame.contextLView))[8]}(t)}function HX(t,n){let e=null;const i=function k$(t){const n=t.attrs;if(null!=n){const e=n.indexOf(5);if(!(1&e))return n[e+1]}return null}(t);for(let o=0;o>17&32767}function j0(t){return 2|t}function Ad(t){return(131068&t)>>2}function $0(t,n){return-131069&t|n<<2}function W0(t){return 1|t}function KO(t,n,e,i){const o=t[e+1],r=null===n;let s=i?Vl(o):Ad(o),a=!1;for(;0!==s&&(!1===a||r);){const d=t[s+1];qX(t[s],n)&&(a=!0,t[s+1]=i?W0(d):j0(d)),s=i?Vl(d):Ad(d)}a&&(t[e+1]=i?j0(o):W0(o))}function qX(t,n){return null===t||null==n||(Array.isArray(t)?t[1]:t)===n||!(!Array.isArray(t)||"string"!=typeof n)&&Wu(t,n)>=0}const di={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function YO(t){return t.substring(di.key,di.keyEnd)}function KX(t){return t.substring(di.value,di.valueEnd)}function XO(t,n){const e=di.textEnd;return e===n?-1:(n=di.keyEnd=function ZX(t,n,e){for(;n32;)n++;return n}(t,di.key=n,e),Rd(t,n,e))}function ZO(t,n){const e=di.textEnd;let i=di.key=Rd(t,n,e);return e===i?-1:(i=di.keyEnd=function QX(t,n,e){let i;for(;n=65&&(-33&i)<=90||i>=48&&i<=57);)n++;return n}(t,i,e),i=JO(t,i,e),i=di.value=Rd(t,i,e),i=di.valueEnd=function JX(t,n,e){let i=-1,o=-1,r=-1,s=n,a=s;for(;s32&&(a=s),r=o,o=i,i=-33&l}return a}(t,i,e),JO(t,i,e))}function QO(t){di.key=0,di.keyEnd=0,di.value=0,di.valueEnd=0,di.textEnd=t.length}function Rd(t,n,e){for(;n=0;e=ZO(n,e))rA(t,YO(n),KX(n))}function Ge(t){nA(aZ,tZ,t,!0)}function tZ(t,n){for(let e=function YX(t){return QO(t),XO(t,Rd(t,0,di.textEnd))}(n);e>=0;e=XO(n,e))tm(t,YO(n),!0)}function tA(t,n,e,i){const o=ne(),r=$e(),s=ws(2);r.firstUpdatePass&&oA(r,t,s,i),n!==Vt&&mn(o,s,n)&&sA(r,r.data[Pi()],o,o[11],t,o[s+1]=function cZ(t,n){return null==t||""===t||("string"==typeof n?t+=n:"object"==typeof t&&(t=Zs(Po(t)))),t}(n,e),i,s)}function nA(t,n,e,i){const o=$e(),r=ws(2);o.firstUpdatePass&&oA(o,null,r,i);const s=ne();if(e!==Vt&&mn(s,r,e)){const a=o.data[Pi()];if(lA(a,i)&&!iA(o,r)){let l=i?a.classesWithoutHost:a.stylesWithoutHost;null!==l&&(e=_y(l,e||"")),A0(o,a,s,e,i)}else!function lZ(t,n,e,i,o,r,s,a){o===Vt&&(o=en);let l=0,d=0,f=0=t.expandoStartIndex}function oA(t,n,e,i){const o=t.data;if(null===o[e+1]){const r=o[Pi()],s=iA(t,e);lA(r,i)&&null===n&&!s&&(n=!1),n=function nZ(t,n,e,i){const o=function Ky(t){const n=Ve.lFrame.currentDirectiveIndex;return-1===n?null:t[n]}(t);let r=i?n.residualClasses:n.residualStyles;if(null===o)0===(i?n.classBindings:n.styleBindings)&&(e=qh(e=G0(null,t,n,e,i),n.attrs,i),r=null);else{const s=n.directiveStylingLast;if(-1===s||t[s]!==o)if(e=G0(o,t,n,e,i),null===r){let l=function iZ(t,n,e){const i=e?n.classBindings:n.styleBindings;if(0!==Ad(i))return t[Vl(i)]}(t,n,i);void 0!==l&&Array.isArray(l)&&(l=G0(null,t,n,l[1],i),l=qh(l,n.attrs,i),function oZ(t,n,e,i){t[Vl(e?n.classBindings:n.styleBindings)]=i}(t,n,i,l))}else r=function rZ(t,n,e){let i;const o=n.directiveEnd;for(let r=1+n.directiveStylingLast;r0)&&(d=!0)):f=e,o)if(0!==l){const g=Vl(t[a+1]);t[i+1]=e_(g,a),0!==g&&(t[g+1]=$0(t[g+1],i)),t[a+1]=function jX(t,n){return 131071&t|n<<17}(t[a+1],i)}else t[i+1]=e_(a,0),0!==a&&(t[a+1]=$0(t[a+1],i)),a=i;else t[i+1]=e_(l,0),0===a?a=i:t[l+1]=$0(t[l+1],i),l=i;d&&(t[i+1]=j0(t[i+1])),KO(t,f,i,!0),KO(t,f,i,!1),function GX(t,n,e,i,o){const r=o?t.residualClasses:t.residualStyles;null!=r&&"string"==typeof n&&Wu(r,n)>=0&&(e[i+1]=W0(e[i+1]))}(n,f,t,i,r),s=e_(a,l),r?n.classBindings=s:n.styleBindings=s}(o,r,n,e,s,i)}}function G0(t,n,e,i,o){let r=null;const s=e.directiveEnd;let a=e.directiveStylingLast;for(-1===a?a=e.directiveStart:a++;a0;){const l=t[o],d=Array.isArray(l),f=d?l[1]:l,m=null===f;let g=e[o+1];g===Vt&&(g=m?en:void 0);let b=m?Ty(g,i):f===i?g:void 0;if(d&&!t_(b)&&(b=Ty(l,i)),t_(b)&&(a=b,s))return a;const w=t[o+1];o=s?Vl(w):Ad(w)}if(null!==n){let l=r?n.residualClasses:n.residualStyles;null!=l&&(a=Ty(l,i))}return a}function t_(t){return void 0!==t}function lA(t,n){return!!(t.flags&(n?8:16))}function p(t,n=""){const e=ne(),i=$e(),o=t+27,r=i.firstCreatePass?Dl(i,o,1,n,null):i.data[o],s=cA(i,e,r,n);e[o]=s,fm()&&kC(i,e,s,r),ys(r,!1)}let cA=(t,n,e,i)=>(Xu(!0),function eC(t,n){return t.createText(n)}(n[11],i));function S(t){return D("",t),S}function D(t,n,e){const i=ne(),o=function uA(t,n,e,i=""){return mn(t,go(),e)?n+ze(e)+i:Vt}(i,t,n,e);return o!==Vt&&Ts(i,Pi(),o),D}function nt(t,n,e,i,o){const r=ne(),s=function hA(t,n,e,i,o,r=""){const a=Pl(t,Cs(),e,o);return ws(2),a?n+ze(e)+i+ze(o)+r:Vt}(r,t,n,e,i,o);return s!==Vt&&Ts(r,Pi(),s),nt}function Fd(t,n,e,i,o,r,s){const a=ne(),l=function fA(t,n,e,i,o,r,s,a=""){const d=Og(t,Cs(),e,o,s);return ws(3),d?n+ze(e)+i+ze(o)+r+ze(s)+a:Vt}(a,t,n,e,i,o,r,s);return l!==Vt&&Ts(a,Pi(),l),Fd}function Kh(t,n,e,i,o,r,s,a,l){const d=ne(),f=function pA(t,n,e,i,o,r,s,a,l,d=""){const m=zo(t,Cs(),e,o,s,l);return ws(4),m?n+ze(e)+i+ze(o)+r+ze(s)+a+ze(l)+d:Vt}(d,t,n,e,i,o,r,s,a,l);return f!==Vt&&Ts(d,Pi(),f),Kh}function q0(t,n,e,i,o,r,s,a,l,d,f){const m=ne(),g=function mA(t,n,e,i,o,r,s,a,l,d,f,m=""){const g=Cs();let b=zo(t,g,e,o,s,l);return b=mn(t,g+4,f)||b,ws(5),b?n+ze(e)+i+ze(o)+r+ze(s)+a+ze(l)+d+ze(f)+m:Vt}(m,t,n,e,i,o,r,s,a,l,d,f);return g!==Vt&&Ts(m,Pi(),g),q0}function K0(t,n,e,i,o,r,s,a,l,d,f,m,g){const b=ne(),w=function gA(t,n,e,i,o,r,s,a,l,d,f,m,g,b=""){const w=Cs();let M=zo(t,w,e,o,s,l);return M=Pl(t,w+4,f,g)||M,ws(6),M?n+ze(e)+i+ze(o)+r+ze(s)+a+ze(l)+d+ze(f)+m+ze(g)+b:Vt}(b,t,n,e,i,o,r,s,a,l,d,f,m,g);return w!==Vt&&Ts(b,Pi(),w),K0}function Ts(t,n,e){const i=Jc(n,t);!function cE(t,n,e){t.setValue(n,e)}(t[11],i,e)}function Kt(t,n,e){UI(n)&&(n=n());const i=ne();return mn(i,go(),n)&&($e(),DC(cr(),i,t,n,i[11],e)),Kt}function nn(t,n){const e=UI(t);return e&&t.set(n),e}function Yt(t,n){const e=ne(),i=$e(),o=He();return V0(i,e,e[11],o,t,n),Yt}function on(t){return mn(ne(),go(),t)?ze(t):Vt}function kA(t,n,e){const i=$e();i.firstCreatePass&&SA(n,i.data,i.blueprint,lr(t),e)}function SA(t,n,e,i,o){if(t=Ke(t),Array.isArray(t))for(let r=0;r>20;if(ps(t)||!t.multi){const b=new oh(d,o,O,null),w=X0(l,n,o?f:f+g,m);-1===w?(v1(Am(a,s),r,l),Y0(r,t,n.length),n.push(l),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),e.push(b),s.push(b)):(e[w]=b,s[w]=b)}else{const b=X0(l,n,f+g,m),w=X0(l,n,f,f+g),E=w>=0&&e[w];if(o&&!E||!o&&!(b>=0&&e[b])){v1(Am(a,s),r,l);const I=function MZ(t,n,e,i,o){const s=new oh(t,e,O,null);return s.multi=[],s.index=n,s.componentProviders=0,MA(s,o,i&&!e),s}(o?SZ:kZ,e.length,o,i,d);!o&&E&&(e[w].providerFactory=I),Y0(r,t,n.length,0),n.push(l),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),e.push(I),s.push(I)}else Y0(r,t,b>-1?b:w,MA(e[o?w:b],d,!o&&i));!o&&i&&E&&e[w].componentProviders++}}}function Y0(t,n,e,i){const o=ps(n),r=function cD(t){return!!t.useClass}(n);if(o||r){const l=(r?Ke(n.useClass):n).prototype.ngOnDestroy;if(l){const d=t.destroyHooks||(t.destroyHooks=[]);if(!o&&n.multi){const f=d.indexOf(e);-1===f?d.push(e,[i,l]):d[f+1].push(i,l)}else d.push(e,l)}}}function MA(t,n,e){return e&&t.componentProviders++,t.multi.push(n)-1}function X0(t,n,e,i){for(let o=e;o{e.providersResolver=(i,o)=>kA(i,o?o(t):t,!1),n&&(e.viewProvidersResolver=(i,o)=>kA(i,o?o(n):n,!0))}}function vt(t,n){const e=ji()+t,i=ne();return i[e]===Vt?hr(i,e,n()):function kd(t,n){return t[n]}(i,e)}function ie(t,n,e){return PA(ne(),ji(),t,n,e)}function pt(t,n,e,i){return IA(ne(),ji(),t,n,e,i)}function EA(t,n,e,i,o){return function OA(t,n,e,i,o,r,s,a){const l=n+e;return Og(t,l,o,r,s)?hr(t,l+3,a?i.call(a,o,r,s):i(o,r,s)):Yh(t,l+3)}(ne(),ji(),t,n,e,i,o)}function Yh(t,n){const e=t[n];return e===Vt?void 0:e}function PA(t,n,e,i,o,r){const s=n+e;return mn(t,s,o)?hr(t,s+1,r?i.call(r,o):i(o)):Yh(t,s+1)}function IA(t,n,e,i,o,r,s){const a=n+e;return Pl(t,a,o,r)?hr(t,a+2,s?i.call(s,o,r):i(o,r)):Yh(t,a+2)}function _(t,n){const e=$e();let i;const o=t+27;e.firstCreatePass?(i=function FZ(t,n){if(n)for(let e=n.length-1;e>=0;e--){const i=n[e];if(t===i.name)return i}}(n,e.pipeRegistry),e.data[o]=i,i.onDestroy&&(e.destroyHooks??=[]).push(o,i.onDestroy)):i=e.data[o];const r=i.factory||(i.factory=il(i.type)),a=mo(O);try{const l=Om(!1),d=r();return Om(l),function Hy(t,n,e,i){e>=t.data.length&&(t.data[e]=null,t.blueprint[e]=null),n[e]=i}(e,ne(),o,d),d}finally{mo(a)}}function v(t,n,e){const i=t+27,o=ne(),r=cl(o,i);return Xh(o,i)?PA(o,ji(),n,r.transform,e,r):r.transform(e)}function ue(t,n,e,i){const o=t+27,r=ne(),s=cl(r,o);return Xh(r,o)?IA(r,ji(),n,s.transform,e,i,s):s.transform(e,i)}function Xh(t,n){return t[1].data[n].pure}function Ul(t,n){return yg(t,n)}class hQ{ngModuleFactory;componentFactories;constructor(n,e){this.ngModuleFactory=n,this.componentFactories=e}}let fQ=(()=>{class t{compileModuleSync(e){return new mI(e)}compileModuleAsync(e){return Promise.resolve(this.compileModuleSync(e))}compileModuleAndAllComponentsSync(e){const i=this.compileModuleSync(e),r=Ur(Ar(e).declarations).reduce((s,a)=>{const l=kt(a);return l&&s.push(new Rh(l)),s},[]);return new hQ(i,r)}compileModuleAndAllComponentsAsync(e){return Promise.resolve(this.compileModuleAndAllComponentsSync(e))}clearCache(){}clearCacheFor(e){}getModuleId(e){}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),mQ=(()=>{class t{applicationErrorHandler=T(Nr);appRef=T(fr);taskService=T(ta);ngZone=T(Ce);zonelessEnabled=T(_m);tracing=T(da,{optional:!0});zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new gt;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(mm):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(T(XD,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{const e=this.taskService.add();this.runningTick||(this.cleanup(),this.zonelessEnabled&&!this.appRef.includeAllTestViews)?(this.switchToMicrotaskScheduler(),this.taskService.remove(e)):this.taskService.remove(e)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{const e=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(e)})})}notify(e){if(!this.zonelessEnabled&&5===e)return;switch(e){case 0:case 6:case 13:this.appRef.dirtyFlags|=2;break;case 3:case 2:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 12:this.appRef.dirtyFlags|=16;break;case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;const i=this.useMicrotaskScheduler?r7:GD;this.pendingRenderTaskId=this.taskService.add(),this.cancelScheduledCallback=this.scheduleInRootZone?Zone.root.run(()=>i(()=>this.tick())):this.ngZone.runOutsideAngular(()=>i(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||null!==this.pendingRenderTaskId||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(mm+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(0===this.appRef.dirtyFlags)return void this.cleanup();!this.zonelessEnabled&&7&this.appRef.dirtyFlags&&(this.appRef.dirtyFlags|=1);const e=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(i){this.applicationErrorHandler(i)}finally{this.taskService.remove(e),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,null!==this.pendingRenderTaskId){const e=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(e)}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const _a=new Z("",{factory:()=>T(_a,{optional:!0,skipSelf:!0})||function gQ(){return typeof $localize<"u"&&$localize.locale||Kg}()}),h_=Symbol("InputSignalNode#UNSET"),NR={...sy,transformFn:void 0,applyValueToInputSignal(t,n){Vp(t,n)}};function LR(t,n){const e=Object.create(NR);function i(){if(Nu(e),e.value===h_)throw new X(-950,null);return e.value}return e.value=t,e.transformFn=n?.transform,i[Fn]=e,i}class tf{attributeName;constructor(n){this.attributeName=n}__NG_ELEMENT_ID__=()=>lh(this.attributeName);toString(){return`HostAttributeToken ${this.attributeName}`}}function BR(t,n){return LR(t,n)}const uee=(BR.required=function dee(t){return LR(h_,t)},BR);function VR(t,n){return lI()}const f_=(VR.required=function hee(t,n){return cI()},VR);function HR(t,n){return lI()}const pee=(HR.required=function fee(t,n){return cI()},HR);let gee=(()=>{class t{zone=T(Ce);changeDetectionScheduler=T(fl);applicationRef=T(fr);applicationErrorHandler=T(Nr);_onMicrotaskEmptySubscription;initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler.runningTick||this.zone.run(()=>{try{this.applicationRef.dirtyFlags|=1,this.applicationRef._tick()}catch(e){this.applicationErrorHandler(e)}})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const _ee=new Z("",{factory:()=>!1});function $R(t){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:t?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:t?.runCoalescing??!1}}let yee=(()=>{class t{subscription=new gt;initialized=!1;zone=T(Ce);pendingTasks=T(ta);initialize(){if(this.initialized)return;this.initialized=!0;let e=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(e=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{Ce.assertNotInAngularZone(),queueMicrotask(()=>{null!==e&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(e),e=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{Ce.assertInAngularZone(),e??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const p_=new Z(""),kee=new Z("");function nf(t){return!t.moduleRef}let qR;function KR(){qR=See}function See(t,n){const e=t.injector.get(fr);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(i=>e.bootstrap(i));else{if(!t.instance.ngDoBootstrap)throw new X(-403,!1);t.instance.ngDoBootstrap(e)}n.push(t)}let YR=(()=>{class t{_injector;_modules=[];_destroyListeners=[];_destroyed=!1;constructor(e){this._injector=e}bootstrapModuleFactory(e,i){const o=[[{provide:fl,useExisting:mQ},{provide:Ce,useClass:d7},{provide:_m,useValue:!0}],...i?.applicationProviders??[],f7],r=function Dq(t,n,e){return new u0(t,n,e,!1)}(e.moduleType,this.injector,o);return KR(),function GR(t){const n=nf(t)?t.r3Injector:t.moduleRef.injector,e=n.get(Ce);return e.run(()=>{nf(t)?t.r3Injector.resolveInjectorInitializers():t.moduleRef.resolveInjectorInitializers();const i=n.get(Nr);let o;if(e.runOutsideAngular(()=>{o=e.onError.subscribe({next:i})}),nf(t)){const r=()=>n.destroy(),s=t.platformInjector.get(p_);s.add(r),n.onDestroy(()=>{o.unsubscribe(),s.delete(r)})}else{const r=()=>t.moduleRef.destroy(),s=t.platformInjector.get(p_);s.add(r),t.moduleRef.onDestroy(()=>{jg(t.allPlatformModules,t.moduleRef),o.unsubscribe(),s.delete(r)})}return function Mee(t,n,e){try{const i=e();return Hh(i)?i.catch(o=>{throw n.runOutsideAngular(()=>t(o)),o}):i}catch(i){throw n.runOutsideAngular(()=>t(i)),i}}(i,e,()=>{const r=n.get(ta),s=r.add(),a=n.get(aO);return a.runInitializers(),a.donePromise.then(()=>{if(function oX(t){"string"==typeof t&&(TO=t.toLowerCase().replace(/_/g,"-"))}(n.get(_a,Kg)||Kg),!n.get(kee,!0))return nf(t)?n.get(fr):(t.allPlatformModules.push(t.moduleRef),t.moduleRef);if(nf(t)){const f=n.get(fr);return void 0!==t.rootComponent&&f.bootstrap(t.rootComponent),f}return qR?.(t.moduleRef,t.allPlatformModules),t.moduleRef}).finally(()=>{r.remove(s)})})})}({moduleRef:r,allPlatformModules:this._modules,platformInjector:this.injector})}bootstrapModule(e,i=[]){const o=cO({},i);return KR(),function mee(t,n,e){const i=new mI(e);return Promise.resolve(i)}(0,0,e).then(r=>this.bootstrapModuleFactory(r,o))}onDestroy(e){this._destroyListeners.push(e)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new X(404,!1);this._modules.slice().forEach(i=>i.destroy()),this._destroyListeners.forEach(i=>i());const e=this._injector.get(p_,null);e&&(e.forEach(i=>i()),e.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}static \u0275fac=function(i){return new(i||t)(ce(Ue))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})(),zd=null;function XR(t,n,e=[]){const i=`Platform: ${n}`,o=new Z(i);return(r=[])=>{let s=m_();if(!s){const a=[...e,...r,{provide:o,useValue:!0}];s=t?.(a)??function Dee(t){if(m_())throw new X(400,!1);(function QK(){!function FH(t){NM=t}(()=>{throw new X(600,"")})})(),zd=t;const n=t.get(YR);return function QR(t){const n=t.get(b2,null);io(t,()=>{n?.forEach(e=>e())})}(t),n}(function ZR(t=[],n){return Ue.create({name:n,providers:[{provide:Ay,useValue:"platform"},{provide:p_,useValue:new Set([()=>zd=null])},...t]})}(a,i))}return function Tee(){const n=m_();if(!n)throw new X(-401,!1);return n}()}}function m_(){return zd?.get(YR)??null}let Dt=(()=>class t{static __NG_ELEMENT_ID__=jee})();function jee(t){return function $ee(t,n,e){if(Fr(t)&&!e){const i=ro(t.index,n);return new kh(i,i)}return 175&t.type?new kh(n[15],n):null}(He(),ne(),!(16&~t))}class sF{supports(n){return Ig(n)}create(n){return new Gee(n)}}const Wee=(t,n)=>n;class Gee{length=0;collection;_linkedRecords=null;_unlinkedRecords=null;_previousItHead=null;_itHead=null;_itTail=null;_additionsHead=null;_additionsTail=null;_movesHead=null;_movesTail=null;_removalsHead=null;_removalsTail=null;_identityChangesHead=null;_identityChangesTail=null;_trackByFn;constructor(n){this._trackByFn=n||Wee}forEachItem(n){let e;for(e=this._itHead;null!==e;e=e._next)n(e)}forEachOperation(n){let e=this._itHead,i=this._removalsHead,o=0,r=null;for(;e||i;){const s=!i||e&&e.currentIndex{s=this._trackByFn(o,a),null!==e&&Object.is(e.trackById,s)?(i&&(e=this._verifyReinsertion(e,a,s,o)),Object.is(e.item,a)||this._addIdentityChange(e,a)):(e=this._mismatch(e,a,s,o),i=!0),e=e._next,o++}),this.length=o;return this._truncate(e),this.collection=n,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let n;for(n=this._previousItHead=this._itHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._additionsHead;null!==n;n=n._nextAdded)n.previousIndex=n.currentIndex;for(this._additionsHead=this._additionsTail=null,n=this._movesHead;null!==n;n=n._nextMoved)n.previousIndex=n.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(n,e,i,o){let r;return null===n?r=this._itTail:(r=n._prev,this._remove(n)),null!==(n=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null))?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._reinsertAfter(n,r,o)):null!==(n=null===this._linkedRecords?null:this._linkedRecords.get(i,o))?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._moveAfter(n,r,o)):n=this._addAfter(new qee(e,i),r,o),n}_verifyReinsertion(n,e,i,o){let r=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null);return null!==r?n=this._reinsertAfter(r,n._prev,o):n.currentIndex!=o&&(n.currentIndex=o,this._addToMoves(n,o)),n}_truncate(n){for(;null!==n;){const e=n._next;this._addToRemovals(this._unlink(n)),n=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(n,e,i){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(n);const o=n._prevRemoved,r=n._nextRemoved;return null===o?this._removalsHead=r:o._nextRemoved=r,null===r?this._removalsTail=o:r._prevRemoved=o,this._insertAfter(n,e,i),this._addToMoves(n,i),n}_moveAfter(n,e,i){return this._unlink(n),this._insertAfter(n,e,i),this._addToMoves(n,i),n}_addAfter(n,e,i){return this._insertAfter(n,e,i),this._additionsTail=null===this._additionsTail?this._additionsHead=n:this._additionsTail._nextAdded=n,n}_insertAfter(n,e,i){const o=null===e?this._itHead:e._next;return n._next=o,n._prev=e,null===o?this._itTail=n:o._prev=n,null===e?this._itHead=n:e._next=n,null===this._linkedRecords&&(this._linkedRecords=new aF),this._linkedRecords.put(n),n.currentIndex=i,n}_remove(n){return this._addToRemovals(this._unlink(n))}_unlink(n){null!==this._linkedRecords&&this._linkedRecords.remove(n);const e=n._prev,i=n._next;return null===e?this._itHead=i:e._next=i,null===i?this._itTail=e:i._prev=e,n}_addToMoves(n,e){return n.previousIndex===e||(this._movesTail=null===this._movesTail?this._movesHead=n:this._movesTail._nextMoved=n),n}_addToRemovals(n){return null===this._unlinkedRecords&&(this._unlinkedRecords=new aF),this._unlinkedRecords.put(n),n.currentIndex=null,n._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=n,n._prevRemoved=null):(n._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=n),n}_addIdentityChange(n,e){return n.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=n:this._identityChangesTail._nextIdentityChange=n,n}}class qee{item;trackById;currentIndex=null;previousIndex=null;_nextPrevious=null;_prev=null;_next=null;_prevDup=null;_nextDup=null;_prevRemoved=null;_nextRemoved=null;_nextAdded=null;_nextMoved=null;_nextIdentityChange=null;constructor(n,e){this.item=n,this.trackById=e}}class Kee{_head=null;_tail=null;add(n){null===this._head?(this._head=this._tail=n,n._nextDup=null,n._prevDup=null):(this._tail._nextDup=n,n._prevDup=this._tail,n._nextDup=null,this._tail=n)}get(n,e){let i;for(i=this._head;null!==i;i=i._nextDup)if((null===e||e<=i.currentIndex)&&Object.is(i.trackById,n))return i;return null}remove(n){const e=n._prevDup,i=n._nextDup;return null===e?this._head=i:e._nextDup=i,null===i?this._tail=e:i._prevDup=e,null===this._head}}class aF{map=new Map;put(n){const e=n.trackById;let i=this.map.get(e);i||(i=new Kee,this.map.set(e,i)),i.add(n)}get(n,e){const o=this.map.get(n);return o?o.get(n,e):null}remove(n){const e=n.trackById;return this.map.get(e).remove(n)&&this.map.delete(e),n}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function lF(t,n,e){const i=t.previousIndex;if(null===i)return i;let o=0;return e&&i{class t{factories;static \u0275prov=te({token:t,providedIn:"root",factory:dF});constructor(e){this.factories=e}static create(e,i){if(null!=i){const o=i.factories.slice();e=e.concat(o)}return new t(e)}static extend(e){return{provide:t,useFactory:()=>{const i=T(t,{optional:!0,skipSelf:!0});return t.create(e,i||dF())}}}find(e){const i=this.factories.find(o=>o.supports(e));if(null!=i)return i;throw new X(901,!1)}}return t})();const Jee=XR(null,"core",[]);let ete=(()=>{class t{constructor(e){}static \u0275fac=function(i){return new(i||t)(ce(fr))};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function Te(t){return"boolean"==typeof t?t:null!=t&&"false"!==t}function _r(t,n=NaN){return isNaN(parseFloat(t))||isNaN(Number(t))?n:Number(t)}const pw=Symbol("NOT_SET"),yF=new Set,fte={...sy,kind:"afterRenderEffectPhase",consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,value:pw,cleanup:null,consumerMarkedDirty(){if(this.sequence.impl.executing){if(null===this.sequence.lastPhase||this.sequence.lastPhase(Nu(d),d.value),d.signal[Fn]=d,d.registerCleanupFn=f=>(d.cleanup??=new Set).add(f),this.nodes[a]=d,this.hooks[a]=f=>d.phaseFn(f)}}afterRun(){super.afterRun(),this.lastPhase=null}destroy(){if(null!==this.onDestroyFns)for(const n of this.onDestroyFns)n();super.destroy();for(const n of this.nodes)if(n)try{for(const e of n.cleanup??yF)e()}finally{Vu(n)}}}function CF(t,n){const e=kt(t),i=n.elementInjector||rm();return new Rh(e).create(i,n.projectableNodes,n.hostElement,n.environmentInjector,n.directives,n.bindings)}function wF(t,n,e){const i=Object.create(Cte);i.source=t,i.computation=n,null!=e&&(i.equal=e);const r=()=>{if(Lu(i),Nu(i),i.value===hs)throw i.error;return i.value};return r[Fn]=i,r}const Cte={...Vc,value:Ya,dirty:!0,error:null,equal:ry,kind:"linkedSignal",producerMustRecompute:t=>t.value===Ya||t.value===zc,producerRecomputeValue(t){if(t.value===zc)throw new Error("");const n=t.value;t.value=zc;const e=Hc(t);let i;try{const o=t.source();i=t.computation(o,n===Ya||n===hs?void 0:{source:t.sourceValue,value:n}),t.sourceValue=o}catch(o){i=hs,t.error=o}finally{Bu(t,e)}n!==Ya&&i!==hs&&t.equal(n,i)?t.value=n:(t.value=i,t.version++)}};function it(t){return function wte(t){const n=Pe(null);try{return t()}finally{Pe(n)}}(t)}function Fi(t,n){return FM(t,n?.equal)}const Ete=t=>t;function SF(t,n){const e=t[Fn],i=t;return i.set=o=>function vte(t,n){Lu(t),Vp(t,n),Np(t)}(e,o),i.update=o=>function yte(t,n){if(Lu(t),t.value===hs)throw t.error;BM(t,n),Np(t)}(e,o),i.asReadonly=n1.bind(t),i}function bw(t,n){return t?n?t.endsWith("/")?n.startsWith("/")?t+n.slice(1):t+n:n.startsWith("/")?t+n:`${t}/${n}`:t:n}function TF(t){const n=t.search(/#|\?|$/);return"/"===t[n-1]?t.slice(0,n-1)+t.slice(n):t}function Es(t){return t&&"?"!==t[0]?`?${t}`:t}Error,Error;let Wl=(()=>{class t{historyGo(e){throw new Error("")}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>T(PF),providedIn:"root"})}return t})();const EF=new Z("");let PF=(()=>{class t extends Wl{_platformLocation;_baseHref;_removeListenerFns=[];constructor(e,i){super(),this._platformLocation=e,this._baseHref=i??this._platformLocation.getBaseHrefFromDOM()??T(et).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}prepareExternalUrl(e){return bw(this._baseHref,e)}path(e=!1){const i=this._platformLocation.pathname+Es(this._platformLocation.search),o=this._platformLocation.hash;return o&&e?`${i}${o}`:i}pushState(e,i,o,r){const s=this.prepareExternalUrl(o+Es(r));this._platformLocation.pushState(e,i,s)}replaceState(e,i,o,r){const s=this.prepareExternalUrl(o+Es(r));this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static \u0275fac=function(i){return new(i||t)(ce(ym),ce(EF,8))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),jd=(()=>{class t{_subject=new be;_basePath;_locationStrategy;_urlChangeListeners=[];_urlChangeSubscription=null;constructor(e){this._locationStrategy=e;const i=this._locationStrategy.getBaseHref();this._basePath=function Hte(t){if(new RegExp("^(https?:)?//").test(t)){const[,e]=t.split(/\/\/[^\/]+/);return e}return t}(TF(IF(i))),this._locationStrategy.onPopState(o=>{this._subject.next({url:this.path(!0),pop:!0,state:o.state,type:o.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(e=!1){return this.normalize(this._locationStrategy.path(e))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(e,i=""){return this.path()==this.normalize(e+Es(i))}normalize(e){return t.stripTrailingSlash(function Vte(t,n){if(!t||!n.startsWith(t))return n;const e=n.substring(t.length);return""===e||["/",";","?","#"].includes(e[0])?e:n}(this._basePath,IF(e)))}prepareExternalUrl(e){return e&&"/"!==e[0]&&(e="/"+e),this._locationStrategy.prepareExternalUrl(e)}go(e,i="",o=null){this._locationStrategy.pushState(o,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Es(i)),o)}replaceState(e,i="",o=null){this._locationStrategy.replaceState(o,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Es(i)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(e=0){this._locationStrategy.historyGo?.(e)}onUrlChange(e){return this._urlChangeListeners.push(e),this._urlChangeSubscription??=this.subscribe(i=>{this._notifyUrlChangeListeners(i.url,i.state)}),()=>{const i=this._urlChangeListeners.indexOf(e);this._urlChangeListeners.splice(i,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(e="",i){this._urlChangeListeners.forEach(o=>o(e,i))}subscribe(e,i,o){return this._subject.subscribe({next:e,error:i??void 0,complete:o??void 0})}static normalizeQueryParams=Es;static joinWithSlash=bw;static stripTrailingSlash=TF;static \u0275fac=function(i){return new(i||t)(ce(Wl))};static \u0275prov=te({token:t,factory:()=>function Bte(){return new jd(ce(Wl))}(),providedIn:"root"})}return t})();function IF(t){return t.replace(/\/index.html$/,"")}let zte=(()=>{class t extends Wl{_platformLocation;_baseHref="";_removeListenerFns=[];constructor(e,i){super(),this._platformLocation=e,null!=i&&(this._baseHref=i)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}path(e=!1){const i=this._platformLocation.hash??"#";return i.length>0?i.substring(1):i}prepareExternalUrl(e){const i=bw(this._baseHref,e);return i.length>0?"#"+i:i}pushState(e,i,o,r){const s=this.prepareExternalUrl(o+Es(r))||this._platformLocation.pathname;this._platformLocation.pushState(e,i,s)}replaceState(e,i,o,r){const s=this.prepareExternalUrl(o+Es(r))||this._platformLocation.pathname;this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static \u0275fac=function(i){return new(i||t)(ce(ym),ce(EF,8))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();var C_=function(t){return t[t.Decimal=0]="Decimal",t[t.Percent=1]="Percent",t[t.Currency=2]="Currency",t[t.Scientific=3]="Scientific",t}(C_||{}),lo=function(t){return t[t.Format=0]="Format",t[t.Standalone=1]="Standalone",t}(lo||{}),rn=function(t){return t[t.Narrow=0]="Narrow",t[t.Abbreviated=1]="Abbreviated",t[t.Wide=2]="Wide",t[t.Short=3]="Short",t}(rn||{}),Io=function(t){return t[t.Short=0]="Short",t[t.Medium=1]="Medium",t[t.Long=2]="Long",t[t.Full=3]="Full",t}(Io||{});function w_(t,n){return $o(so(t)[gn.DateFormat],n)}function x_(t,n){return $o(so(t)[gn.TimeFormat],n)}function k_(t,n){return $o(so(t)[gn.DateTimeFormat],n)}function jo(t,n){const e=so(t),i=e[gn.NumberSymbols][n];if(typeof i>"u"){if(12===n)return e[gn.NumberSymbols][0];if(13===n)return e[gn.NumberSymbols][1]}return i}function AF(t){if(!t[gn.ExtraData])throw new X(2303,!1)}function $o(t,n){for(let e=n;e>-1;e--)if(typeof t[e]<"u")return t[e];throw new X(2304,!1)}function yw(t){const[n,e]=t.split(":");return{hours:+n,minutes:+e}}const nne=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,S_={},ine=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?: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}|c{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]*)/;function RF(t,n,e,i){let o=function hne(t){if(LF(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[o,r=1,s=1]=t.split("-").map(a=>+a);return M_(o,r-1,s)}const e=parseFloat(t);if(!isNaN(t-e))return new Date(e);let i;if(i=t.match(nne))return function fne(t){const n=new Date(0);let e=0,i=0;const o=t[8]?n.setUTCFullYear:n.setFullYear,r=t[8]?n.setUTCHours:n.setHours;t[9]&&(e=Number(t[9]+t[10]),i=Number(t[9]+t[11])),o.call(n,Number(t[1]),Number(t[2])-1,Number(t[3]));const s=Number(t[4]||0)-e,a=Number(t[5]||0)-i,l=Number(t[6]||0),d=Math.floor(1e3*parseFloat("0."+(t[7]||0)));return r.call(n,s,a,l,d),n}(i)}const n=new Date(t);if(!LF(n))throw new X(2311,!1);return n}(t);n=Ps(e,n)||n;let a,s=[];for(;n;){if(a=ine.exec(n),!a){s.push(n);break}{s=s.concat(a.slice(1));const f=s.pop();if(!f)break;n=f}}let l=o.getTimezoneOffset();i&&(l=NF(i,l),o=function une(t,n){const o=t.getTimezoneOffset();return function dne(t,n){return(t=new Date(t.getTime())).setMinutes(t.getMinutes()+n),t}(t,-1*(NF(n,o)-o))}(o,i));let d="";return s.forEach(f=>{const m=function cne(t){if(ww[t])return ww[t];let n;switch(t){case"G":case"GG":case"GGG":n=an(3,rn.Abbreviated);break;case"GGGG":n=an(3,rn.Wide);break;case"GGGGG":n=an(3,rn.Narrow);break;case"y":n=ni(0,1,0,!1,!0);break;case"yy":n=ni(0,2,0,!0,!0);break;case"yyy":n=ni(0,3,0,!1,!0);break;case"yyyy":n=ni(0,4,0,!1,!0);break;case"Y":n=P_(1);break;case"YY":n=P_(2,!0);break;case"YYY":n=P_(3);break;case"YYYY":n=P_(4);break;case"M":case"L":n=ni(1,1,1);break;case"MM":case"LL":n=ni(1,2,1);break;case"MMM":n=an(2,rn.Abbreviated);break;case"MMMM":n=an(2,rn.Wide);break;case"MMMMM":n=an(2,rn.Narrow);break;case"LLL":n=an(2,rn.Abbreviated,lo.Standalone);break;case"LLLL":n=an(2,rn.Wide,lo.Standalone);break;case"LLLLL":n=an(2,rn.Narrow,lo.Standalone);break;case"w":n=Cw(1);break;case"ww":n=Cw(2);break;case"W":n=Cw(1,!0);break;case"d":n=ni(2,1);break;case"dd":n=ni(2,2);break;case"c":case"cc":n=ni(7,1);break;case"ccc":n=an(1,rn.Abbreviated,lo.Standalone);break;case"cccc":n=an(1,rn.Wide,lo.Standalone);break;case"ccccc":n=an(1,rn.Narrow,lo.Standalone);break;case"cccccc":n=an(1,rn.Short,lo.Standalone);break;case"E":case"EE":case"EEE":n=an(1,rn.Abbreviated);break;case"EEEE":n=an(1,rn.Wide);break;case"EEEEE":n=an(1,rn.Narrow);break;case"EEEEEE":n=an(1,rn.Short);break;case"a":case"aa":case"aaa":n=an(0,rn.Abbreviated);break;case"aaaa":n=an(0,rn.Wide);break;case"aaaaa":n=an(0,rn.Narrow);break;case"b":case"bb":case"bbb":n=an(0,rn.Abbreviated,lo.Standalone,!0);break;case"bbbb":n=an(0,rn.Wide,lo.Standalone,!0);break;case"bbbbb":n=an(0,rn.Narrow,lo.Standalone,!0);break;case"B":case"BB":case"BBB":n=an(0,rn.Abbreviated,lo.Format,!0);break;case"BBBB":n=an(0,rn.Wide,lo.Format,!0);break;case"BBBBB":n=an(0,rn.Narrow,lo.Format,!0);break;case"h":n=ni(3,1,-12);break;case"hh":n=ni(3,2,-12);break;case"H":n=ni(3,1);break;case"HH":n=ni(3,2);break;case"m":n=ni(4,1);break;case"mm":n=ni(4,2);break;case"s":n=ni(5,1);break;case"ss":n=ni(5,2);break;case"S":n=ni(6,1);break;case"SS":n=ni(6,2);break;case"SSS":n=ni(6,3);break;case"Z":case"ZZ":case"ZZZ":n=T_(0);break;case"ZZZZZ":n=T_(3);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":n=T_(1);break;case"OOOO":case"ZZZZ":case"zzzz":n=T_(2);break;default:return null}return ww[t]=n,n}(f);d+=m?m(o,e,l):"''"===f?"'":f.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),d}function M_(t,n,e){const i=new Date(0);return i.setFullYear(t,n,e),i.setHours(0,0,0),i}function Ps(t,n){const e=function $te(t){return so(t)[gn.LocaleId]}(t);if(S_[e]??={},S_[e][n])return S_[e][n];let i="";switch(n){case"shortDate":i=w_(t,Io.Short);break;case"mediumDate":i=w_(t,Io.Medium);break;case"longDate":i=w_(t,Io.Long);break;case"fullDate":i=w_(t,Io.Full);break;case"shortTime":i=x_(t,Io.Short);break;case"mediumTime":i=x_(t,Io.Medium);break;case"longTime":i=x_(t,Io.Long);break;case"fullTime":i=x_(t,Io.Full);break;case"short":const o=Ps(t,"shortTime"),r=Ps(t,"shortDate");i=D_(k_(t,Io.Short),[o,r]);break;case"medium":const s=Ps(t,"mediumTime"),a=Ps(t,"mediumDate");i=D_(k_(t,Io.Medium),[s,a]);break;case"long":const l=Ps(t,"longTime"),d=Ps(t,"longDate");i=D_(k_(t,Io.Long),[l,d]);break;case"full":const f=Ps(t,"fullTime"),m=Ps(t,"fullDate");i=D_(k_(t,Io.Full),[f,m])}return i&&(S_[e][n]=i),i}function D_(t,n){return n&&(t=t.replace(/\{([^}]+)}/g,function(e,i){return null!=n&&i in n?n[i]:e})),t}function br(t,n,e="-",i,o){let r="";(t<0||o&&t<=0)&&(o?t=1-t:(t=-t,r=e));let s=String(t);for(;s.length0||a>-e)&&(a+=e),3===t)0===a&&-12===e&&(a=12);else if(6===t)return function one(t,n){return br(t,3).substring(0,n)}(a,n);const l=jo(s,5);return br(a,n,l,i,o)}}function an(t,n,e=lo.Format,i=!1){return function(o,r){return function sne(t,n,e,i,o,r){switch(e){case 2:return function qte(t,n,e){const i=so(t),r=$o([i[gn.MonthsFormat],i[gn.MonthsStandalone]],n);return $o(r,e)}(n,o,i)[t.getMonth()];case 1:return function Gte(t,n,e){const i=so(t),r=$o([i[gn.DaysFormat],i[gn.DaysStandalone]],n);return $o(r,e)}(n,o,i)[t.getDay()];case 0:const s=t.getHours(),a=t.getMinutes();if(r){const d=function Zte(t){const n=so(t);return AF(n),(n[gn.ExtraData][2]||[]).map(i=>"string"==typeof i?yw(i):[yw(i[0]),yw(i[1])])}(n),f=function Qte(t,n,e){const i=so(t);AF(i);const r=$o([i[gn.ExtraData][0],i[gn.ExtraData][1]],n)||[];return $o(r,e)||[]}(n,o,i),m=d.findIndex(g=>{if(Array.isArray(g)){const[b,w]=g,M=s>=b.hours&&a>=b.minutes,E=s0?Math.floor(o/60):Math.ceil(o/60);switch(t){case 0:return(o>=0?"+":"")+br(s,2,r)+br(Math.abs(o%60),2,r);case 1:return"GMT"+(o>=0?"+":"")+br(s,1,r);case 2:return"GMT"+(o>=0?"+":"")+br(s,2,r)+":"+br(Math.abs(o%60),2,r);case 3:return 0===i?"Z":(o>=0?"+":"")+br(s,2,r)+":"+br(Math.abs(o%60),2,r);default:throw new X(2310,!1)}}}function FF(t){const n=t.getDay(),e=0===n?-3:4-n;return M_(t.getFullYear(),t.getMonth(),t.getDate()+e)}function Cw(t,n=!1){return function(e,i){let o;if(n){const r=new Date(e.getFullYear(),e.getMonth(),1).getDay()-1,s=e.getDate();o=1+Math.floor((s+r)/7)}else{const r=FF(e),s=function lne(t){const n=M_(t,0,1).getDay();return M_(t,0,1+(n<=4?4:11)-n)}(r.getFullYear()),a=r.getTime()-s.getTime();o=1+Math.round(a/6048e5)}return br(o,t,jo(i,5))}}function P_(t,n=!1){return function(e,i){return br(FF(e).getFullYear(),t,jo(i,5),n)}}const ww={};function NF(t,n){t=t.replace(/:/g,"");const e=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(e)?n:e}function LF(t){return t instanceof Date&&!isNaN(t.valueOf())}const pne=/^(\d+)?\.((\d+)(-(\d+))?)?$/;function Mw(t){const n=parseInt(t);if(isNaN(n))throw new X(2305,!1);return n}const Tw=/\s+/,UF=[];let Ft=(()=>{class t{_ngEl;_renderer;initialClasses=UF;rawClass;stateMap=new Map;constructor(e,i){this._ngEl=e,this._renderer=i}set klass(e){this.initialClasses=null!=e?e.trim().split(Tw):UF}set ngClass(e){this.rawClass="string"==typeof e?e.trim().split(Tw):e}ngDoCheck(){for(const i of this.initialClasses)this._updateState(i,!0);const e=this.rawClass;if(Array.isArray(e)||e instanceof Set)for(const i of e)this._updateState(i,!0);else if(null!=e)for(const i of Object.keys(e))this._updateState(i,!!e[i]);this._applyStateDiff()}_updateState(e,i){const o=this.stateMap.get(e);void 0!==o?(o.enabled!==i&&(o.changed=!0,o.enabled=i),o.touched=!0):this.stateMap.set(e,{enabled:i,changed:!0,touched:!0})}_applyStateDiff(){for(const e of this.stateMap){const i=e[0],o=e[1];o.changed?(this._toggleClass(i,o.enabled),o.changed=!1):o.touched||(o.enabled&&this._toggleClass(i,!1),this.stateMap.delete(i)),o.touched=!1}}_toggleClass(e,i){(e=e.trim()).length>0&&e.split(Tw).forEach(o=>{i?this._renderer.addClass(this._ngEl.nativeElement,o):this._renderer.removeClass(this._ngEl.nativeElement,o)})}static \u0275fac=function(i){return new(i||t)(O(Ne),O(ei))};static \u0275dir=de({type:t,selectors:[["","ngClass",""]],inputs:{klass:[0,"class","klass"],ngClass:"ngClass"}})}return t})();class Dne{$implicit;ngForOf;index;count;constructor(n,e,i,o){this.$implicit=n,this.ngForOf=e,this.index=i,this.count=o}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 zF=(()=>{class t{_viewContainer;_template;_differs;set ngForOf(e){this._ngForOf=e,this._ngForOfDirty=!0}set ngForTrackBy(e){this._trackByFn=e}get ngForTrackBy(){return this._trackByFn}_ngForOf=null;_ngForOfDirty=!0;_differ=null;_trackByFn;constructor(e,i,o){this._viewContainer=e,this._template=i,this._differs=o}set ngForTemplate(e){e&&(this._template=e)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const e=this._ngForOf;!this._differ&&e&&(this._differ=this._differs.find(e).create(this.ngForTrackBy))}if(this._differ){const e=this._differ.diff(this._ngForOf);e&&this._applyChanges(e)}}_applyChanges(e){const i=this._viewContainer;e.forEachOperation((o,r,s)=>{if(null==o.previousIndex)i.createEmbeddedView(this._template,new Dne(o.item,this._ngForOf,-1,-1),null===s?void 0:s);else if(null==s)i.remove(null===r?void 0:r);else if(null!==r){const a=i.get(r);i.move(a,s),jF(a,o)}});for(let o=0,r=i.length;o{jF(i.get(o.currentIndex),o)})}static ngTemplateContextGuard(e,i){return!0}static \u0275fac=function(i){return new(i||t)(O(Ai),O(Oi),O(__))};static \u0275dir=de({type:t,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"}})}return t})();function jF(t,n){t.context.$implicit=n.item}let lf=(()=>{class t{_viewContainer;_context=new Tne;_thenTemplateRef=null;_elseTemplateRef=null;_thenViewRef=null;_elseViewRef=null;constructor(e,i){this._viewContainer=e,this._thenTemplateRef=i}set ngIf(e){this._context.$implicit=this._context.ngIf=e,this._updateView()}set ngIfThen(e){$F(e),this._thenTemplateRef=e,this._thenViewRef=null,this._updateView()}set ngIfElse(e){$F(e),this._elseTemplateRef=e,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 ngIfUseIfTypeGuard;static ngTemplateGuard_ngIf;static ngTemplateContextGuard(e,i){return!0}static \u0275fac=function(i){return new(i||t)(O(Ai),O(Oi))};static \u0275dir=de({type:t,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"}})}return t})();class Tne{$implicit=null;ngIf=null}function $F(t,n){if(t&&!t.createEmbeddedView)throw new X(2020,!1)}let Wd=(()=>{class t{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;injector=T(Ue);constructor(e){this._viewContainerRef=e}ngOnChanges(e){if(this._shouldRecreateView(e)){const i=this._viewContainerRef;if(this._viewRef&&i.remove(i.indexOf(this._viewRef)),!this.ngTemplateOutlet)return void(this._viewRef=null);const o=this._createContextForwardProxy();this._viewRef=i.createEmbeddedView(this.ngTemplateOutlet,o,{injector:this._getInjector()})}}_getInjector(){return"outlet"===this.ngTemplateOutletInjector?this.injector:this.ngTemplateOutletInjector??void 0}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,i,o)=>!!this.ngTemplateOutletContext&&Reflect.set(this.ngTemplateOutletContext,i,o),get:(e,i,o)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,i,o)}})}static \u0275fac=function(i){return new(i||t)(O(Ai))};static \u0275dir=de({type:t,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},features:[vi]})}return t})();function Is(t,n){return new X(2100,!1)}const jne=new Z(""),$ne=new Z("");let vr=(()=>{class t{locale;defaultTimezone;defaultOptions;constructor(e,i,o){this.locale=e,this.defaultTimezone=i,this.defaultOptions=o}transform(e,i,o,r){if(null==e||""===e||e!=e)return null;try{return RF(e,i??this.defaultOptions?.dateFormat??"mediumDate",r||this.locale,o??this.defaultOptions?.timezone??this.defaultTimezone??void 0)}catch(s){throw Is()}}static \u0275fac=function(i){return new(i||t)(O(_a,16),O(jne,24),O($ne,24))};static \u0275pipe=Gi({name:"date",type:t,pure:!0})}return t})(),Gl=(()=>{class t{_locale;constructor(e){this._locale=e}transform(e,i,o){if(!function Ow(t){return!(null==t||""===t||t!=t)}(e))return null;o||=this._locale;try{return function yne(t,n,e){return function kw(t,n,e,i,o,r,s=!1){let a="",l=!1;if(isFinite(t)){let d=function wne(t){let i,o,r,s,a,n=Math.abs(t)+"",e=0;for((o=n.indexOf("."))>-1&&(n=n.replace(".","")),(r=n.search(/e/i))>0?(o<0&&(o=r),o+=+n.slice(r+1),n=n.substring(0,r)):o<0&&(o=n.length),r=0;"0"===n.charAt(r);r++);if(r===(a=n.length))i=[0],o=1;else{for(a--;"0"===n.charAt(a);)a--;for(o-=r,i=[],s=0;r<=a;r++,s++)i[s]=Number(n.charAt(r))}return o>22&&(i=i.splice(0,21),e=o-1,o=1),{digits:i,exponent:e,integerLen:o}}(t);s&&(d=function Cne(t){if(0===t.digits[0])return t;const n=t.digits.length-t.integerLen;return t.exponent?t.exponent+=2:(0===n?t.digits.push(0,0):1===n&&t.digits.push(0),t.integerLen+=2),t}(d));let f=n.minInt,m=n.minFrac,g=n.maxFrac;if(r){const A=r.match(pne);if(null===A)throw new X(2306,!1);const W=A[1],q=A[3],Y=A[5];null!=W&&(f=Mw(W)),null!=q&&(m=Mw(q)),null!=Y?g=Mw(Y):null!=q&&m>g&&(g=m)}!function xne(t,n,e){if(n>e)throw new X(2307,!1);let i=t.digits,o=i.length-t.integerLen;const r=Math.min(Math.max(n,o),e);let s=r+t.integerLen,a=i[s];if(s>0){i.splice(Math.max(t.integerLen,s));for(let m=s;m=5)if(s-1<0){for(let m=0;m>s;m--)i.unshift(0),t.integerLen++;i.unshift(1),t.integerLen++}else i[s-1]++;for(;o=d?w.pop():l=!1),g>=10?1:0},0);f&&(i.unshift(f),t.integerLen++)}(d,m,g);let b=d.digits,w=d.integerLen;const M=d.exponent;let E=[];for(l=b.every(A=>!A);w0?E=b.splice(w,b.length):(E=b,b=[0]);const I=[];for(b.length>=n.lgSize&&I.unshift(b.splice(-n.lgSize,b.length).join(""));b.length>n.gSize;)I.unshift(b.splice(-n.gSize,b.length).join(""));b.length&&I.unshift(b.join("")),a=I.join(jo(e,i)),E.length&&(a+=jo(e,o)+E.join("")),M&&(a+=jo(e,6)+"+"+M)}else a=jo(e,9);return a=t<0&&!l?n.negPre+a+n.negSuf:n.posPre+a+n.posSuf,a}(t,function Sw(t,n="-"){const e={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},i=t.split(";"),o=i[0],r=i[1],s=-1!==o.indexOf(".")?o.split("."):[o.substring(0,o.lastIndexOf("0")+1),o.substring(o.lastIndexOf("0")+1)],a=s[0],l=s[1]||"";e.posPre=a.substring(0,a.indexOf("#"));for(let f=0;f{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();class qF{_doc;constructor(n){this._doc=n}manager}let Rw=(()=>{class t extends qF{constructor(e){super(e)}supports(e){return!0}addEventListener(e,i,o,r){return e.addEventListener(i,o,r),()=>this.removeEventListener(e,i,o,r)}removeEventListener(e,i,o,r){return e.removeEventListener(i,o,r)}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const Fw=new Z("");let KF=(()=>{class t{_zone;_plugins;_eventNameToPlugin=new Map;constructor(e,i){this._zone=i,e.forEach(s=>{s.manager=this});const o=e.filter(s=>!(s instanceof Rw));this._plugins=o.slice().reverse();const r=e.find(s=>s instanceof Rw);r&&this._plugins.push(r)}addEventListener(e,i,o,r){return this._findPluginFor(i).addEventListener(e,i,o,r)}getZone(){return this._zone}_findPluginFor(e){let i=this._eventNameToPlugin.get(e);if(i)return i;if(i=this._plugins.find(r=>r.supports(e)),!i)throw new X(5101,!1);return this._eventNameToPlugin.set(e,i),i}static \u0275fac=function(i){return new(i||t)(ce(Fw),ce(Ce))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const Nw="ng-app-id";function YF(t){for(const n of t)n.remove()}function XF(t,n){const e=n.createElement("style");return e.textContent=t,e}function Lw(t,n){const e=n.createElement("link");return e.setAttribute("rel","stylesheet"),e.setAttribute("href",t),e}let ZF=(()=>{class t{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(e,i,o,r={}){this.doc=e,this.appId=i,this.nonce=o,function eie(t,n,e,i){const o=t.head?.querySelectorAll(`style[${Nw}="${n}"],link[${Nw}="${n}"]`);if(o)for(const r of o)r.removeAttribute(Nw),r instanceof HTMLLinkElement?i.set(r.href.slice(r.href.lastIndexOf("/")+1),{usage:0,elements:[r]}):r.textContent&&e.set(r.textContent,{usage:0,elements:[r]})}(e,i,this.inline,this.external),this.hosts.add(e.head)}addStyles(e,i){for(const o of e)this.addUsage(o,this.inline,XF);i?.forEach(o=>this.addUsage(o,this.external,Lw))}removeStyles(e,i){for(const o of e)this.removeUsage(o,this.inline);i?.forEach(o=>this.removeUsage(o,this.external))}addUsage(e,i,o){const r=i.get(e);r?r.usage++:i.set(e,{usage:1,elements:[...this.hosts].map(s=>this.addElement(s,o(e,this.doc)))})}removeUsage(e,i){const o=i.get(e);o&&(o.usage--,o.usage<=0&&(YF(o.elements),i.delete(e)))}ngOnDestroy(){for(const[,{elements:e}]of[...this.inline,...this.external])YF(e);this.hosts.clear()}addHost(e){this.hosts.add(e);for(const[i,{elements:o}]of this.inline)o.push(this.addElement(e,XF(i,this.doc)));for(const[i,{elements:o}]of this.external)o.push(this.addElement(e,Lw(i,this.doc)))}removeHost(e){this.hosts.delete(e)}addElement(e,i){return this.nonce&&i.setAttribute("nonce",this.nonce),e.appendChild(i)}static \u0275fac=function(i){return new(i||t)(ce(et),ce(ra),ce(E1,8),ce(T1))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const Bw={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/",math:"http://www.w3.org/1998/Math/MathML"},Vw=/%COMP%/g,sie=new Z("",{factory:()=>!0});function JF(t,n){return n.map(e=>e.replace(Vw,t))}let Hw=(()=>{class t{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;constructor(e,i,o,r,s,a,l=null,d=null){this.eventManager=e,this.sharedStylesHost=i,this.appId=o,this.removeStylesOnCompDestroy=r,this.doc=s,this.ngZone=a,this.nonce=l,this.tracingService=d,this.defaultRenderer=new Uw(e,s,a,this.tracingService)}createRenderer(e,i){if(!e||!i)return this.defaultRenderer;const o=this.getOrCreateRenderer(e,i);return o instanceof n3?o.applyToHost(e):o instanceof zw&&o.applyStyles(),o}getOrCreateRenderer(e,i){const o=this.rendererByCompId;let r=o.get(i.id);if(!r){const s=this.doc,a=this.ngZone,l=this.eventManager,d=this.sharedStylesHost,f=this.removeStylesOnCompDestroy,m=this.tracingService;switch(i.encapsulation){case Ho.Emulated:r=new n3(l,d,i,this.appId,f,s,a,m);break;case Ho.ShadowDom:return new t3(l,e,i,s,a,this.nonce,m,d);case Ho.ExperimentalIsolatedShadowDom:return new t3(l,e,i,s,a,this.nonce,m);default:r=new zw(l,d,i,f,s,a,m)}o.set(i.id,r)}return r}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(e){this.rendererByCompId.delete(e)}static \u0275fac=function(i){return new(i||t)(ce(KF),ce(ZF),ce(ra),ce(sie),ce(et),ce(Ce),ce(E1),ce(da,8))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class Uw{eventManager;doc;ngZone;tracingService;data=Object.create(null);throwOnSyntheticProps=!0;constructor(n,e,i,o){this.eventManager=n,this.doc=e,this.ngZone=i,this.tracingService=o}destroy(){}destroyNode=null;createElement(n,e){return e?this.doc.createElementNS(Bw[e]||e,n):this.doc.createElement(n)}createComment(n){return this.doc.createComment(n)}createText(n){return this.doc.createTextNode(n)}appendChild(n,e){(e3(n)?n.content:n).appendChild(e)}insertBefore(n,e,i){n&&(e3(n)?n.content:n).insertBefore(e,i)}removeChild(n,e){e.remove()}selectRootElement(n,e){let i="string"==typeof n?this.doc.querySelector(n):n;if(!i)throw new X(-5104,!1);return e||(i.textContent=""),i}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,e,i,o){if(o){e=o+":"+e;const r=Bw[o];r?n.setAttributeNS(r,e,i):n.setAttribute(e,i)}else n.setAttribute(e,i)}removeAttribute(n,e,i){if(i){const o=Bw[i];o?n.removeAttributeNS(o,e):n.removeAttribute(`${i}:${e}`)}else n.removeAttribute(e)}addClass(n,e){n.classList.add(e)}removeClass(n,e){n.classList.remove(e)}setStyle(n,e,i,o){o&(ca.DashCase|ca.Important)?n.style.setProperty(e,i,o&ca.Important?"important":""):n.style[e]=i}removeStyle(n,e,i){i&ca.DashCase?n.style.removeProperty(e):n.style[e]=""}setProperty(n,e,i){null!=n&&(n[e]=i)}setValue(n,e){n.nodeValue=e}listen(n,e,i,o){if("string"==typeof n&&!(n=na().getGlobalEventTarget(this.doc,n)))throw new X(5102,!1);let r=this.decoratePreventDefault(i);return this.tracingService?.wrapEventListener&&(r=this.tracingService.wrapEventListener(n,e,r)),this.eventManager.addEventListener(n,e,r,o)}decoratePreventDefault(n){return e=>{if("__ngUnwrap__"===e)return n;!1===n(e)&&e.preventDefault()}}}function e3(t){return"TEMPLATE"===t.tagName&&void 0!==t.content}class t3 extends Uw{hostEl;sharedStylesHost;shadowRoot;constructor(n,e,i,o,r,s,a,l){super(n,o,r,a),this.hostEl=e,this.sharedStylesHost=l,this.shadowRoot=e.attachShadow({mode:"open"}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let d=i.styles;d=JF(i.id,d);for(const m of d){const g=document.createElement("style");s&&g.setAttribute("nonce",s),g.textContent=m,this.shadowRoot.appendChild(g)}const f=i.getExternalStyles?.();if(f)for(const m of f){const g=Lw(m,o);s&&g.setAttribute("nonce",s),this.shadowRoot.appendChild(g)}}nodeOrShadowRoot(n){return n===this.hostEl?this.shadowRoot:n}appendChild(n,e){return super.appendChild(this.nodeOrShadowRoot(n),e)}insertBefore(n,e,i){return super.insertBefore(this.nodeOrShadowRoot(n),e,i)}removeChild(n,e){return super.removeChild(null,e)}parentNode(n){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(n)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}}class zw extends Uw{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(n,e,i,o,r,s,a,l){super(n,r,s,a),this.sharedStylesHost=e,this.removeStylesOnCompDestroy=o;let d=i.styles;this.styles=l?JF(l,d):d,this.styleUrls=i.getExternalStyles?.(l)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&0===kl.size&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}}class n3 extends zw{contentAttr;hostAttr;constructor(n,e,i,o,r,s,a,l){const d=o+"-"+i.id;super(n,e,i,r,s,a,l,d),this.contentAttr=function aie(t){return"_ngcontent-%COMP%".replace(Vw,t)}(d),this.hostAttr=function lie(t){return"_nghost-%COMP%".replace(Vw,t)}(d)}applyToHost(n){this.applyStyles(),this.setAttribute(n,this.hostAttr,"")}createElement(n,e){const i=super.createElement(n,e);return super.setAttribute(i,this.contentAttr,""),i}}class $w extends w7{supportsDOMEvents=!0;static makeCurrent(){!function C7(t){eT??=t}(new $w)}onAndCancel(n,e,i,o){return n.addEventListener(e,i,o),()=>{n.removeEventListener(e,i,o)}}dispatchEvent(n,e){n.dispatchEvent(e)}remove(n){n.remove()}createElement(n,e){return(e=e||this.getDefaultDocument()).createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,e){return"window"===e?window:"document"===e?n:"body"===e?n.body:null}getBaseHref(n){const e=function uie(){return cf=cf||document.head.querySelector("base"),cf?cf.getAttribute("href"):null}();return null==e?null:function hie(t){return new URL(t,document.baseURI).pathname}(e)}resetBaseElement(){cf=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return tT(document.cookie,n)}}let cf=null,pie=(()=>{class t{build(){return new XMLHttpRequest}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const o3=["alt","control","meta","shift"],mie={"\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"},gie={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey};let _ie=(()=>{class t extends qF{constructor(e){super(e)}supports(e){return null!=t.parseEventName(e)}addEventListener(e,i,o,r){const s=t.parseEventName(i),a=t.eventCallback(s.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>na().onAndCancel(e,s.domEventName,a,r))}static parseEventName(e){const i=e.toLowerCase().split("."),o=i.shift();if(0===i.length||"keydown"!==o&&"keyup"!==o)return null;const r=t._normalizeKey(i.pop());let s="",a=i.indexOf("code");if(a>-1&&(i.splice(a,1),s="code."),o3.forEach(d=>{const f=i.indexOf(d);f>-1&&(i.splice(f,1),s+=d+".")}),s+=r,0!=i.length||0===r.length)return null;const l={};return l.domEventName=o,l.fullKey=s,l}static matchEventFullKeyCode(e,i){let o=mie[e.key]||e.key,r="";return i.indexOf("code.")>-1&&(o=e.code,r="code."),!(null==o||!o)&&(o=o.toLowerCase()," "===o?o="space":"."===o&&(o="dot"),o3.forEach(s=>{s!==o&&(0,gie[s])(e)&&(r+=s+".")}),r+=o,r===i)}static eventCallback(e,i,o){return r=>{t.matchEventFullKeyCode(r,e)&&o.runGuarded(()=>i(r))}}static _normalizeKey(e){return"esc"===e?"escape":e}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const Cie=XR(Jee,"browser",[{provide:T1,useValue:iT},{provide:b2,useValue:function bie(){$w.makeCurrent()},multi:!0},{provide:et,useFactory:function yie(){return function Vj(t){D1=t}(document),document}}]),a3=[{provide:iO,useClass:class fie{addToWindow(n){Nn.getAngularTestability=(i,o=!0)=>{const r=n.findTestabilityInTree(i,o);if(null==r)throw new X(5103,!1);return r},Nn.getAllAngularTestabilities=()=>n.getAllTestabilities(),Nn.getAllAngularRootElements=()=>n.getAllRootElements(),Nn.frameworkStabilizers||(Nn.frameworkStabilizers=[]),Nn.frameworkStabilizers.push(i=>{const o=Nn.getAllAngularTestabilities();let r=o.length;const s=function(){r--,0==r&&i()};o.forEach(a=>{a.whenStable(s)})})}findTestabilityInTree(n,e,i){return null==e?null:n.getTestability(e)??(i?na().isShadowRoot(e)?this.findTestabilityInTree(n,e.host,!0):this.findTestabilityInTree(n,e.parentElement,!0):null)}}},{provide:nO,useClass:y0},{provide:y0,useClass:y0}],l3=[{provide:Ay,useValue:"root"},{provide:hl,useFactory:function vie(){return new hl}},{provide:Fw,useClass:Rw,multi:!0},{provide:Fw,useClass:_ie,multi:!0},Hw,ZF,KF,{provide:Uo,useExisting:Hw},{provide:nT,useClass:pie},[]];let c3=(()=>{class t{constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[...l3,...a3],imports:[Jne,ete]})}return t})();var Be=function(t){return t[t.State=0]="State",t[t.Transition=1]="Transition",t[t.Sequence=2]="Sequence",t[t.Group=3]="Group",t[t.Animate=4]="Animate",t[t.Keyframes=5]="Keyframes",t[t.Style=6]="Style",t[t.Trigger=7]="Trigger",t[t.Reference=8]="Reference",t[t.AnimateChild=9]="AnimateChild",t[t.AnimateRef=10]="AnimateRef",t[t.Query=11]="Query",t[t.Stagger=12]="Stagger",t}(Be||{});const Os="*";function d3(t){return{type:Be.Style,styles:t,offset:null}}class df{_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_originalOnDoneFns=[];_originalOnStartFns=[];_started=!1;_destroyed=!1;_finished=!1;_position=0;parentPlayer=null;totalTime;constructor(n=0,e=0){this.totalTime=n+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(n=>n()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(n){this._position=this.totalTime?n*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(n){const e="start"==n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}class u3{_onDoneFns=[];_onStartFns=[];_finished=!1;_started=!1;_destroyed=!1;_onDestroyFns=[];parentPlayer=null;totalTime=0;players;constructor(n){this.players=n;let e=0,i=0,o=0;const r=this.players.length;0==r?queueMicrotask(()=>this._onFinish()):this.players.forEach(s=>{s.onDone(()=>{++e==r&&this._onFinish()}),s.onDestroy(()=>{++i==r&&this._onDestroy()}),s.onStart(()=>{++o==r&&this._onStart()})}),this.totalTime=this.players.reduce((s,a)=>Math.max(s,a.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this.players.forEach(n=>n.init())}onStart(n){this._onStartFns.push(n)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(n=>n()),this._onStartFns=[])}onDone(n){this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(n=>n.play())}pause(){this.players.forEach(n=>n.pause())}restart(){this.players.forEach(n=>n.restart())}finish(){this._onFinish(),this.players.forEach(n=>n.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(n=>n.destroy()),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this.players.forEach(n=>n.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(n){const e=n*this.totalTime;this.players.forEach(i=>{const o=i.totalTime?Math.min(1,e/i.totalTime):1;i.setPosition(o)})}getPosition(){const n=this.players.reduce((e,i)=>null===e||i.totalTime>e.totalTime?i:e,null);return null!=n?n.getPosition():0}beforeDestroy(){this.players.forEach(n=>{n.beforeDestroy&&n.beforeDestroy()})}triggerCallback(n){const e="start"==n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}function f3(t){return new X(3e3,!1)}function Oie(t){return new X(3002,!1)}function va(t){switch(t.length){case 0:return new df;case 1:return t[0];default:return new u3(t)}}function p3(t,n,e=new Map,i=new Map){const o=[],r=[];let s=-1,a=null;if(n.forEach(l=>{const d=l.get("offset"),f=d==s,m=f&&a||new Map;l.forEach((g,b)=>{let w=b,M=g;if("offset"!==b)switch(w=t.normalizePropertyName(w,o),M){case"!":M=e.get(b);break;case Os:M=i.get(b);break;default:M=t.normalizeStyleValue(b,w,M,o)}m.set(w,M)}),f||r.push(m),a=m,s=d}),o.length)throw function jie(){return new X(3502,!1)}();return r}function Yw(t,n,e,i){switch(n){case"start":t.onStart(()=>i(e&&Xw(e,"start",t)));break;case"done":t.onDone(()=>i(e&&Xw(e,"done",t)));break;case"destroy":t.onDestroy(()=>i(e&&Xw(e,"destroy",t)))}}function Xw(t,n,e){const r=Zw(t.element,t.triggerName,t.fromState,t.toState,n||t.phaseName,e.totalTime??t.totalTime,!!e.disabled),s=t._data;return null!=s&&(r._data=s),r}function Zw(t,n,e,i,o="",r=0,s){return{element:t,triggerName:n,fromState:e,toState:i,phaseName:o,totalTime:r,disabled:!!s}}function Oo(t,n,e){let i=t.get(n);return i||t.set(n,i=e),i}function m3(t){const n=t.indexOf(":");return[t.substring(1,n),t.slice(n+1)]}const toe=typeof document>"u"?null:document.documentElement;function Qw(t){const n=t.parentNode||t.host||null;return n===toe?null:n}let ql=null,g3=!1;function _3(t,n){for(;n;){if(n===t)return!0;n=Qw(n)}return!1}function b3(t,n,e){if(e)return Array.from(t.querySelectorAll(n));const i=t.querySelector(n);return i?[i]:[]}const y3="ng-enter",Jw="ng-leave",O_="ng-trigger",A_=".ng-trigger",C3="ng-animating",ex=".ng-animating";function As(t){if("number"==typeof t)return t;const n=t.match(/^(-?[\.\d]+)(m?s)/);return!n||n.length<2?0:tx(parseFloat(n[1]),n[2])}function tx(t,n){return"s"===n?1e3*t:t}function R_(t,n,e){return t.hasOwnProperty("duration")?t:function loe(t,n,e){let i,o=0,r="";if("string"==typeof t){const s=t.match(aoe);if(null===s)return n.push(f3()),{duration:0,delay:0,easing:""};i=tx(parseFloat(s[1]),s[2]);const a=s[3];null!=a&&(o=tx(parseFloat(a),s[4]));const l=s[5];l&&(r=l)}else i=t;if(!e){let s=!1,a=n.length;i<0&&(n.push(function xie(){return new X(3100,!1)}()),s=!0),o<0&&(n.push(function kie(){return new X(3101,!1)}()),s=!0),s&&n.splice(a,0,f3())}return{duration:i,delay:o,easing:r}}(t,n,e)}const aoe=/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i;function jr(t,n,e){n.forEach((i,o)=>{const r=ix(o);e&&!e.has(o)&&e.set(o,t.style[r]),t.style[r]=i})}function Kl(t,n){n.forEach((e,i)=>{const o=ix(i);t.style[o]=""})}function uf(t){return Array.isArray(t)?1==t.length?t[0]:function wie(t,n=null){return{type:Be.Sequence,steps:t,options:n}}(t):t}const nx=new RegExp("{{\\s*(.+?)\\s*}}","g");function w3(t){let n=[];if("string"==typeof t){let e;for(;e=nx.exec(t);)n.push(e[1]);nx.lastIndex=0}return n}function hf(t,n,e){const i=`${t}`,o=i.replace(nx,(r,s)=>{let a=n[s];return null==a&&(e.push(function Mie(){return new X(3003,!1)}()),a=""),a.toString()});return o==i?t:o}const uoe=/-+([a-z0-9])/g;function ix(t){return t.replace(uoe,(...n)=>n[1].toUpperCase())}function Ao(t,n,e){switch(n.type){case Be.Trigger:return t.visitTrigger(n,e);case Be.State:return t.visitState(n,e);case Be.Transition:return t.visitTransition(n,e);case Be.Sequence:return t.visitSequence(n,e);case Be.Group:return t.visitGroup(n,e);case Be.Animate:return t.visitAnimate(n,e);case Be.Keyframes:return t.visitKeyframes(n,e);case Be.Style:return t.visitStyle(n,e);case Be.Reference:return t.visitReference(n,e);case Be.AnimateChild:return t.visitAnimateChild(n,e);case Be.AnimateRef:return t.visitAnimateRef(n,e);case Be.Query:return t.visitQuery(n,e);case Be.Stagger:return t.visitStagger(n,e);default:throw function Die(){return new X(3004,!1)}()}}function ox(t,n){return window.getComputedStyle(t)[n]}let rx=(()=>{class t{validateStyleProperty(e){return function ioe(t){ql||(ql=function ooe(){return typeof document<"u"?document.body:null}()||{},g3=!!ql.style&&"WebkitAppearance"in ql.style);let n=!0;return ql.style&&!function noe(t){return"ebkit"==t.substring(1,6)}(t)&&(n=t in ql.style,!n&&g3&&(n="Webkit"+t.charAt(0).toUpperCase()+t.slice(1)in ql.style)),n}(e)}containsElement(e,i){return _3(e,i)}getParentElement(e){return Qw(e)}query(e,i,o){return b3(e,i,o)}computeStyle(e,i,o){return o||""}animate(e,i,o,r,s,a=[],l){return new df(o,r)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class sx{static NOOP=new rx}class ax{}const voe=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]);class k3 extends ax{normalizePropertyName(n,e){return ix(n)}normalizeStyleValue(n,e,i,o){let r="";const s=i.toString().trim();if(voe.has(e)&&0!==i&&"0"!==i)if("number"==typeof i)r="px";else{const a=i.match(/^[+-]?[\d\.]+([a-z]*)$/);a&&0==a[1].length&&o.push(function Tie(){return new X(3005,!1)}())}return s+r}}const N_=new Set(["true","1"]),L_=new Set(["false","0"]);function S3(t,n){const e=N_.has(t)||L_.has(t),i=N_.has(n)||L_.has(n);return(o,r)=>{let s="*"==t||t==o,a="*"==n||n==r;return!s&&e&&"boolean"==typeof o&&(s=o?N_.has(t):L_.has(t)),!a&&i&&"boolean"==typeof r&&(a=r?N_.has(n):L_.has(n)),s&&a}}const xoe=new RegExp("s*:selfs*,?","g");function cx(t,n,e,i){return new koe(t).build(n,e,i)}class koe{_driver;constructor(n){this._driver=n}build(n,e,i){const o=new Doe(e);return this._resetContextStyleTimingState(o),Ao(this,uf(n),o)}_resetContextStyleTimingState(n){n.currentQuerySelector="",n.collectedStyles=new Map,n.collectedStyles.set("",new Map),n.currentTime=0}visitTrigger(n,e){let i=e.queryCount=0,o=e.depCount=0;const r=[],s=[];return"@"==n.name.charAt(0)&&e.errors.push(function Eie(){return new X(3006,!1)}()),n.definitions.forEach(a=>{if(this._resetContextStyleTimingState(e),a.type==Be.State){const l=a,d=l.name;d.toString().split(/\s*,\s*/).forEach(f=>{l.name=f,r.push(this.visitState(l,e))}),l.name=d}else if(a.type==Be.Transition){const l=this.visitTransition(a,e);i+=l.queryCount,o+=l.depCount,s.push(l)}else e.errors.push(function Pie(){return new X(3007,!1)}())}),{type:Be.Trigger,name:n.name,states:r,transitions:s,queryCount:i,depCount:o,options:null}}visitState(n,e){const i=this.visitStyle(n.styles,e),o=n.options&&n.options.params||null;if(i.containsDynamicStyles){const r=new Set,s=o||{};i.styles.forEach(a=>{a instanceof Map&&a.forEach(l=>{w3(l).forEach(d=>{s.hasOwnProperty(d)||r.add(d)})})}),r.size&&e.errors.push(function Iie(){return new X(3008,!1)}(0,r.values()))}return{type:Be.State,name:n.name,style:i,options:o?{params:o}:null}}visitTransition(n,e){e.queryCount=0,e.depCount=0;const i=Ao(this,uf(n.animation),e),o=function yoe(t,n){const e=[];return"string"==typeof t?t.split(/\s*,\s*/).forEach(i=>function Coe(t,n,e){if(":"==t[0]){const l=function woe(t,n){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(e,i)=>parseFloat(i)>parseFloat(e);case":decrement":return(e,i)=>parseFloat(i) *"}}(t,e);if("function"==typeof l)return void n.push(l);t=l}const i=t.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(null==i||i.length<4)return e.push(function Hie(){return new X(3015,!1)}()),n;const o=i[1],r=i[2],s=i[3];n.push(S3(o,s)),"<"==r[0]&&("*"!=o||"*"!=s)&&n.push(S3(s,o))}(i,e,n)):e.push(t),e}(n.expr,e.errors);return{type:Be.Transition,matchers:o,animation:i,queryCount:e.queryCount,depCount:e.depCount,options:Yl(n.options)}}visitSequence(n,e){return{type:Be.Sequence,steps:n.steps.map(i=>Ao(this,i,e)),options:Yl(n.options)}}visitGroup(n,e){const i=e.currentTime;let o=0;const r=n.steps.map(s=>{e.currentTime=i;const a=Ao(this,s,e);return o=Math.max(o,e.currentTime),a});return e.currentTime=o,{type:Be.Group,steps:r,options:Yl(n.options)}}visitAnimate(n,e){const i=function Eoe(t,n){if(t.hasOwnProperty("duration"))return t;if("number"==typeof t)return dx(R_(t,n).duration,0,"");const e=t;if(e.split(/\s+/).some(r=>"{"==r.charAt(0)&&"{"==r.charAt(1))){const r=dx(0,0,"");return r.dynamic=!0,r.strValue=e,r}const o=R_(e,n);return dx(o.duration,o.delay,o.easing)}(n.timings,e.errors);e.currentAnimateTimings=i;let o,r=n.styles?n.styles:d3({});if(r.type==Be.Keyframes)o=this.visitKeyframes(r,e);else{let s=n.styles,a=!1;if(!s){a=!0;const d={};i.easing&&(d.easing=i.easing),s=d3(d)}e.currentTime+=i.duration+i.delay;const l=this.visitStyle(s,e);l.isEmptyStep=a,o=l}return e.currentAnimateTimings=null,{type:Be.Animate,timings:i,style:o,options:null}}visitStyle(n,e){const i=this._makeStyleAst(n,e);return this._validateStyleAst(i,e),i}_makeStyleAst(n,e){const i=[],o=Array.isArray(n.styles)?n.styles:[n.styles];for(let a of o)"string"==typeof a?a===Os?i.push(a):e.errors.push(Oie()):i.push(new Map(Object.entries(a)));let r=!1,s=null;return i.forEach(a=>{if(a instanceof Map&&(a.has("easing")&&(s=a.get("easing"),a.delete("easing")),!r))for(let l of a.values())if(l.toString().indexOf("{{")>=0){r=!0;break}}),{type:Be.Style,styles:i,easing:s,offset:n.offset,containsDynamicStyles:r,options:null}}_validateStyleAst(n,e){const i=e.currentAnimateTimings;let o=e.currentTime,r=e.currentTime;i&&r>0&&(r-=i.duration+i.delay),n.styles.forEach(s=>{"string"!=typeof s&&s.forEach((a,l)=>{const d=e.collectedStyles.get(e.currentQuerySelector),f=d.get(l);let m=!0;f&&(r!=o&&r>=f.startTime&&o<=f.endTime&&(e.errors.push(function Aie(){return new X(3010,!1)}()),m=!1),r=f.startTime),m&&d.set(l,{startTime:r,endTime:o}),e.options&&function doe(t,n,e){const i=n.params||{},o=w3(t);o.length&&o.forEach(r=>{i.hasOwnProperty(r)||e.push(function Sie(){return new X(3001,!1)}())})}(a,e.options,e.errors)})})}visitKeyframes(n,e){const i={type:Be.Keyframes,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push(function Rie(){return new X(3011,!1)}()),i;let r=0;const s=[];let a=!1,l=!1,d=0;const f=n.steps.map(I=>{const A=this._makeStyleAst(I,e);let W=null!=A.offset?A.offset:function Toe(t){if("string"==typeof t)return null;let n=null;if(Array.isArray(t))t.forEach(e=>{if(e instanceof Map&&e.has("offset")){const i=e;n=parseFloat(i.get("offset")),i.delete("offset")}});else if(t instanceof Map&&t.has("offset")){const e=t;n=parseFloat(e.get("offset")),e.delete("offset")}return n}(A.styles),q=0;return null!=W&&(r++,q=A.offset=W),l=l||q<0||q>1,a=a||q0&&r{const W=g>0?A==b?1:g*A:s[A],q=W*E;e.currentTime=w+M.delay+q,M.duration=q,this._validateStyleAst(I,e),I.offset=W,i.styles.push(I)}),i}visitReference(n,e){return{type:Be.Reference,animation:Ao(this,uf(n.animation),e),options:Yl(n.options)}}visitAnimateChild(n,e){return e.depCount++,{type:Be.AnimateChild,options:Yl(n.options)}}visitAnimateRef(n,e){return{type:Be.AnimateRef,animation:this.visitReference(n.animation,e),options:Yl(n.options)}}visitQuery(n,e){const i=e.currentQuerySelector,o=n.options||{};e.queryCount++,e.currentQuery=n;const[r,s]=function Soe(t){const n=!!t.split(/\s*,\s*/).find(e=>":self"==e);return n&&(t=t.replace(xoe,"")),t=t.replace(/@\*/g,A_).replace(/@\w+/g,e=>A_+"-"+e.slice(1)).replace(/:animating/g,ex),[t,n]}(n.selector);e.currentQuerySelector=i.length?i+" "+r:r,Oo(e.collectedStyles,e.currentQuerySelector,new Map);const a=Ao(this,uf(n.animation),e);return e.currentQuery=null,e.currentQuerySelector=i,{type:Be.Query,selector:r,limit:o.limit||0,optional:!!o.optional,includeSelf:s,animation:a,originalSelector:n.selector,options:Yl(n.options)}}visitStagger(n,e){e.currentQuery||e.errors.push(function Bie(){return new X(3013,!1)}());const i="full"===n.timings?{duration:0,delay:0,easing:"full"}:R_(n.timings,e.errors,!0);return{type:Be.Stagger,animation:Ao(this,uf(n.animation),e),timings:i,options:null}}}class Doe{errors;queryCount=0;depCount=0;currentTransition=null;currentQuery=null;currentQuerySelector=null;currentAnimateTimings=null;currentTime=0;collectedStyles=new Map;options=null;unsupportedCSSPropertiesFound=new Set;constructor(n){this.errors=n}}function Yl(t){return t?(t={...t}).params&&(t.params=function Moe(t){return t?{...t}:null}(t.params)):t={},t}function dx(t,n,e){return{duration:t,delay:n,easing:e}}function ux(t,n,e,i,o,r,s=null,a=!1){return{type:1,element:t,keyframes:n,preStyleProps:e,postStyleProps:i,duration:o,delay:r,totalTime:o+r,easing:s,subTimeline:a}}class B_{_map=new Map;get(n){return this._map.get(n)||[]}append(n,e){let i=this._map.get(n);i||this._map.set(n,i=[]),i.push(...e)}has(n){return this._map.has(n)}clear(){this._map.clear()}}const Ooe=new RegExp(":enter","g"),Roe=new RegExp(":leave","g");function hx(t,n,e,i,o,r=new Map,s=new Map,a,l,d=[]){return(new Foe).buildKeyframes(t,n,e,i,o,r,s,a,l,d)}class Foe{buildKeyframes(n,e,i,o,r,s,a,l,d,f=[]){d=d||new B_;const m=new fx(n,e,d,o,r,f,[]);m.options=l;const g=l.delay?As(l.delay):0;m.currentTimeline.delayNextStep(g),m.currentTimeline.setStyles([s],null,m.errors,l),Ao(this,i,m);const b=m.timelines.filter(w=>w.containsAnimation());if(b.length&&a.size){let w;for(let M=b.length-1;M>=0;M--){const E=b[M];if(E.element===e){w=E;break}}w&&!w.allowOnlyTimelineStyles()&&w.setStyles([a],null,m.errors,l)}return b.length?b.map(w=>w.buildKeyframes()):[ux(e,[],[],[],0,g,"",!1)]}visitTrigger(n,e){}visitState(n,e){}visitTransition(n,e){}visitAnimateChild(n,e){const i=e.subInstructions.get(e.element);if(i){const o=e.createSubContext(n.options),r=e.currentTimeline.currentTime,s=this._visitSubInstructions(i,o,o.options);r!=s&&e.transformIntoNewTimeline(s)}e.previousNode=n}visitAnimateRef(n,e){const i=e.createSubContext(n.options);i.transformIntoNewTimeline(),this._applyAnimationRefDelays([n.options,n.animation.options],e,i),this.visitReference(n.animation,i),e.transformIntoNewTimeline(i.currentTimeline.currentTime),e.previousNode=n}_applyAnimationRefDelays(n,e,i){for(const o of n){const r=o?.delay;if(r){const s="number"==typeof r?r:As(hf(r,o?.params??{},e.errors));i.delayNextStep(s)}}}_visitSubInstructions(n,e,i){let r=e.currentTimeline.currentTime;const s=null!=i.duration?As(i.duration):null,a=null!=i.delay?As(i.delay):null;return 0!==s&&n.forEach(l=>{const d=e.appendInstructionToTimeline(l,s,a);r=Math.max(r,d.duration+d.delay)}),r}visitReference(n,e){e.updateOptions(n.options,!0),Ao(this,n.animation,e),e.previousNode=n}visitSequence(n,e){const i=e.subContextCount;let o=e;const r=n.options;if(r&&(r.params||r.delay)&&(o=e.createSubContext(r),o.transformIntoNewTimeline(),null!=r.delay)){o.previousNode.type==Be.Style&&(o.currentTimeline.snapshotCurrentStyles(),o.previousNode=V_);const s=As(r.delay);o.delayNextStep(s)}n.steps.length&&(n.steps.forEach(s=>Ao(this,s,o)),o.currentTimeline.applyStylesToKeyframe(),o.subContextCount>i&&o.transformIntoNewTimeline()),e.previousNode=n}visitGroup(n,e){const i=[];let o=e.currentTimeline.currentTime;const r=n.options&&n.options.delay?As(n.options.delay):0;n.steps.forEach(s=>{const a=e.createSubContext(n.options);r&&a.delayNextStep(r),Ao(this,s,a),o=Math.max(o,a.currentTimeline.currentTime),i.push(a.currentTimeline)}),i.forEach(s=>e.currentTimeline.mergeTimelineCollectedStyles(s)),e.transformIntoNewTimeline(o),e.previousNode=n}_visitTiming(n,e){if(n.dynamic){const i=n.strValue;return R_(e.params?hf(i,e.params,e.errors):i,e.errors)}return{duration:n.duration,delay:n.delay,easing:n.easing}}visitAnimate(n,e){const i=e.currentAnimateTimings=this._visitTiming(n.timings,e),o=e.currentTimeline;i.delay&&(e.incrementTime(i.delay),o.snapshotCurrentStyles());const r=n.style;r.type==Be.Keyframes?this.visitKeyframes(r,e):(e.incrementTime(i.duration),this.visitStyle(r,e),o.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=n}visitStyle(n,e){const i=e.currentTimeline,o=e.currentAnimateTimings;!o&&i.hasCurrentStyleProperties()&&i.forwardFrame();const r=o&&o.easing||n.easing;n.isEmptyStep?i.applyEmptyStep(r):i.setStyles(n.styles,r,e.errors,e.options),e.previousNode=n}visitKeyframes(n,e){const i=e.currentAnimateTimings,o=e.currentTimeline.duration,r=i.duration,a=e.createSubContext().currentTimeline;a.easing=i.easing,n.styles.forEach(l=>{a.forwardTime((l.offset||0)*r),a.setStyles(l.styles,l.easing,e.errors,e.options),a.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(a),e.transformIntoNewTimeline(o+r),e.previousNode=n}visitQuery(n,e){const i=e.currentTimeline.currentTime,o=n.options||{},r=o.delay?As(o.delay):0;r&&(e.previousNode.type===Be.Style||0==i&&e.currentTimeline.hasCurrentStyleProperties())&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=V_);let s=i;const a=e.invokeQuery(n.selector,n.originalSelector,n.limit,n.includeSelf,!!o.optional,e.errors);e.currentQueryTotal=a.length;let l=null;a.forEach((d,f)=>{e.currentQueryIndex=f;const m=e.createSubContext(n.options,d);r&&m.delayNextStep(r),d===e.element&&(l=m.currentTimeline),Ao(this,n.animation,m),m.currentTimeline.applyStylesToKeyframe(),s=Math.max(s,m.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(s),l&&(e.currentTimeline.mergeTimelineCollectedStyles(l),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=n}visitStagger(n,e){const i=e.parentContext,o=e.currentTimeline,r=n.timings,s=Math.abs(r.duration),a=s*(e.currentQueryTotal-1);let l=s*e.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":l=a-l;break;case"full":l=i.currentStaggerTime}const f=e.currentTimeline;l&&f.delayNextStep(l);const m=f.currentTime;Ao(this,n.animation,e),e.previousNode=n,i.currentStaggerTime=o.currentTime-m+(o.startTime-i.currentTimeline.startTime)}}const V_={};class fx{_driver;element;subInstructions;_enterClassName;_leaveClassName;errors;timelines;parentContext=null;currentTimeline;currentAnimateTimings=null;previousNode=V_;subContextCount=0;options={};currentQueryIndex=0;currentQueryTotal=0;currentStaggerTime=0;constructor(n,e,i,o,r,s,a,l){this._driver=n,this.element=e,this.subInstructions=i,this._enterClassName=o,this._leaveClassName=r,this.errors=s,this.timelines=a,this.currentTimeline=l||new H_(this._driver,e,0),a.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(n,e){if(!n)return;const i=n;let o=this.options;null!=i.duration&&(o.duration=As(i.duration)),null!=i.delay&&(o.delay=As(i.delay));const r=i.params;if(r){let s=o.params;s||(s=this.options.params={}),Object.keys(r).forEach(a=>{(!e||!s.hasOwnProperty(a))&&(s[a]=hf(r[a],s,this.errors))})}}_copyOptions(){const n={};if(this.options){const e=this.options.params;if(e){const i=n.params={};Object.keys(e).forEach(o=>{i[o]=e[o]})}}return n}createSubContext(n=null,e,i){const o=e||this.element,r=new fx(this._driver,o,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(o,i||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(n),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(n){return this.previousNode=V_,this.currentTimeline=this.currentTimeline.fork(this.element,n),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(n,e,i){const o={duration:e??n.duration,delay:this.currentTimeline.currentTime+(i??0)+n.delay,easing:""},r=new Noe(this._driver,n.element,n.keyframes,n.preStyleProps,n.postStyleProps,o,n.stretchStartingKeyframe);return this.timelines.push(r),o}incrementTime(n){this.currentTimeline.forwardTime(this.currentTimeline.duration+n)}delayNextStep(n){n>0&&this.currentTimeline.delayNextStep(n)}invokeQuery(n,e,i,o,r,s){let a=[];if(o&&a.push(this.element),n.length>0){n=(n=n.replace(Ooe,"."+this._enterClassName)).replace(Roe,"."+this._leaveClassName);let d=this._driver.query(this.element,n,1!=i);0!==i&&(d=i<0?d.slice(d.length+i,d.length):d.slice(0,i)),a.push(...d)}return!r&&0==a.length&&s.push(function Vie(){return new X(3014,!1)}()),a}}class H_{_driver;element;startTime;_elementTimelineStylesLookup;duration=0;easing=null;_previousKeyframe=new Map;_currentKeyframe=new Map;_keyframes=new Map;_styleSummary=new Map;_localTimelineStyles=new Map;_globalTimelineStyles;_pendingStyles=new Map;_backFill=new Map;_currentEmptyStepKeyframe=null;constructor(n,e,i,o){this._driver=n,this.element=e,this.startTime=i,this._elementTimelineStylesLookup=o,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(n){const e=1===this._keyframes.size&&this._pendingStyles.size;this.duration||e?(this.forwardTime(this.currentTime+n),e&&this.snapshotCurrentStyles()):this.startTime+=n}fork(n,e){return this.applyStylesToKeyframe(),new H_(this._driver,n,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(n){this.applyStylesToKeyframe(),this.duration=n,this._loadKeyframe()}_updateStyle(n,e){this._localTimelineStyles.set(n,e),this._globalTimelineStyles.set(n,e),this._styleSummary.set(n,{time:this.currentTime,value:e})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(n){n&&this._previousKeyframe.set("easing",n);for(let[e,i]of this._globalTimelineStyles)this._backFill.set(e,i||Os),this._currentKeyframe.set(e,Os);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(n,e,i,o){e&&this._previousKeyframe.set("easing",e);const r=o&&o.params||{},s=function Loe(t,n){const e=new Map;let i;return t.forEach(o=>{if("*"===o){i??=n.keys();for(let r of i)e.set(r,Os)}else for(let[r,s]of o)e.set(r,s)}),e}(n,this._globalTimelineStyles);for(let[a,l]of s){const d=hf(l,r,i);this._pendingStyles.set(a,d),this._localTimelineStyles.has(a)||this._backFill.set(a,this._globalTimelineStyles.get(a)??Os),this._updateStyle(a,d)}}applyStylesToKeyframe(){0!=this._pendingStyles.size&&(this._pendingStyles.forEach((n,e)=>{this._currentKeyframe.set(e,n)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((n,e)=>{this._currentKeyframe.has(e)||this._currentKeyframe.set(e,n)}))}snapshotCurrentStyles(){for(let[n,e]of this._localTimelineStyles)this._pendingStyles.set(n,e),this._updateStyle(n,e)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const n=[];for(let e in this._currentKeyframe)n.push(e);return n}mergeTimelineCollectedStyles(n){n._styleSummary.forEach((e,i)=>{const o=this._styleSummary.get(i);(!o||e.time>o.time)&&this._updateStyle(i,e.value)})}buildKeyframes(){this.applyStylesToKeyframe();const n=new Set,e=new Set,i=1===this._keyframes.size&&0===this.duration;let o=[];this._keyframes.forEach((a,l)=>{const d=new Map([...this._backFill,...a]);d.forEach((f,m)=>{"!"===f?n.add(m):f===Os&&e.add(m)}),i||d.set("offset",l/this.duration),o.push(d)});const r=[...n.values()],s=[...e.values()];if(i){const a=o[0],l=new Map(a);a.set("offset",0),l.set("offset",1),o=[a,l]}return ux(this.element,o,r,s,this.duration,this.startTime,this.easing,!1)}}class Noe extends H_{keyframes;preStyleProps;postStyleProps;_stretchStartingKeyframe;timings;constructor(n,e,i,o,r,s,a=!1){super(n,e,s.delay),this.keyframes=i,this.preStyleProps=o,this.postStyleProps=r,this._stretchStartingKeyframe=a,this.timings={duration:s.duration,delay:s.delay,easing:s.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let n=this.keyframes,{delay:e,duration:i,easing:o}=this.timings;if(this._stretchStartingKeyframe&&e){const r=[],s=i+e,a=e/s,l=new Map(n[0]);l.set("offset",0),r.push(l);const d=new Map(n[0]);d.set("offset",T3(a)),r.push(d);const f=n.length-1;for(let m=1;m<=f;m++){let g=new Map(n[m]);const b=g.get("offset");g.set("offset",T3((e+b*i)/s)),r.push(g)}i=s,e=0,o="",n=r}return ux(this.element,n,this.preStyleProps,this.postStyleProps,i,e,o,!0)}}function T3(t,n=3){const e=Math.pow(10,n-1);return Math.round(t*e)/e}function E3(t,n,e,i,o,r,s,a,l,d,f,m,g){return{type:0,element:t,triggerName:n,isRemovalTransition:o,fromState:e,fromStyles:r,toState:i,toStyles:s,timelines:a,queriedElements:l,preStyleProps:d,postStyleProps:f,totalTime:m,errors:g}}const px={};class P3{_triggerName;ast;_stateStyles;constructor(n,e,i){this._triggerName=n,this.ast=e,this._stateStyles=i}match(n,e,i,o){return function Boe(t,n,e,i,o){return t.some(r=>r(n,e,i,o))}(this.ast.matchers,n,e,i,o)}buildStyles(n,e,i){let o=this._stateStyles.get("*");return void 0!==n&&(o=this._stateStyles.get(n?.toString())||o),o?o.buildStyles(e,i):new Map}build(n,e,i,o,r,s,a,l,d,f){const m=[],g=this.ast.options&&this.ast.options.params||px,w=this.buildStyles(i,a&&a.params||px,m),M=l&&l.params||px,E=this.buildStyles(o,M,m),I=new Set,A=new Map,W=new Map,q="void"===o,Y={params:I3(M,g),delay:this.ast.options?.delay},ee=f?[]:hx(n,e,this.ast.animation,r,s,w,E,Y,d,m);let oe=0;return ee.forEach(P=>{oe=Math.max(P.duration+P.delay,oe)}),m.length?E3(e,this._triggerName,i,o,q,w,E,[],[],A,W,oe,m):(ee.forEach(P=>{const R=P.element,B=Oo(A,R,new Set);P.preStyleProps.forEach(z=>B.add(z));const $=Oo(W,R,new Set);P.postStyleProps.forEach(z=>$.add(z)),R!==e&&I.add(R)}),E3(e,this._triggerName,i,o,q,w,E,ee,[...I.values()],A,W,oe))}}function I3(t,n){const e={...n};return Object.entries(t).forEach(([i,o])=>{null!=o&&(e[i]=o)}),e}class Voe{styles;defaultParams;normalizer;constructor(n,e,i){this.styles=n,this.defaultParams=e,this.normalizer=i}buildStyles(n,e){const i=new Map,o=I3(n,this.defaultParams);return this.styles.styles.forEach(r=>{"string"!=typeof r&&r.forEach((s,a)=>{s&&(s=hf(s,o,e));const l=this.normalizer.normalizePropertyName(a,e);s=this.normalizer.normalizeStyleValue(a,l,s,e),i.set(a,s)})}),i}}class Uoe{name;ast;_normalizer;transitionFactories=[];fallbackTransition;states=new Map;constructor(n,e,i){this.name=n,this.ast=e,this._normalizer=i,e.states.forEach(o=>{this.states.set(o.name,new Voe(o.style,o.options&&o.options.params||{},i))}),O3(this.states,"true","1"),O3(this.states,"false","0"),e.transitions.forEach(o=>{this.transitionFactories.push(new P3(n,o,this.states))}),this.fallbackTransition=function zoe(t,n){return new P3(t,{type:Be.Transition,animation:{type:Be.Sequence,steps:[],options:null},matchers:[(s,a)=>!0],options:null,queryCount:0,depCount:0},n)}(n,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(n,e,i,o){return this.transitionFactories.find(s=>s.match(n,e,i,o))||null}matchStyles(n,e,i){return this.fallbackTransition.buildStyles(n,e,i)}}function O3(t,n,e){t.has(n)?t.has(e)||t.set(e,t.get(n)):t.has(e)&&t.set(n,t.get(e))}const joe=new B_;class $oe{bodyNode;_driver;_normalizer;_animations=new Map;_playersById=new Map;players=[];constructor(n,e,i){this.bodyNode=n,this._driver=e,this._normalizer=i}register(n,e){const i=[],r=cx(this._driver,e,i,[]);if(i.length)throw function $ie(){return new X(3503,!1)}();this._animations.set(n,r)}_buildPlayer(n,e,i){const o=n.element,r=p3(this._normalizer,n.keyframes,e,i);return this._driver.animate(o,r,n.duration,n.delay,n.easing,[],!0)}create(n,e,i={}){const o=[],r=this._animations.get(n);let s;const a=new Map;if(r?(s=hx(this._driver,e,r,y3,Jw,new Map,new Map,i,joe,o),s.forEach(f=>{const m=Oo(a,f.element,new Map);f.postStyleProps.forEach(g=>m.set(g,null))})):(o.push(function Wie(){return new X(3300,!1)}()),s=[]),o.length)throw function Gie(){return new X(3504,!1)}();a.forEach((f,m)=>{f.forEach((g,b)=>{f.set(b,this._driver.computeStyle(m,b,Os))})});const d=va(s.map(f=>{const m=a.get(f.element);return this._buildPlayer(f,new Map,m)}));return this._playersById.set(n,d),d.onDestroy(()=>this.destroy(n)),this.players.push(d),d}destroy(n){const e=this._getPlayer(n);e.destroy(),this._playersById.delete(n);const i=this.players.indexOf(e);i>=0&&this.players.splice(i,1)}_getPlayer(n){const e=this._playersById.get(n);if(!e)throw function qie(){return new X(3301,!1)}();return e}listen(n,e,i,o){const r=Zw(e,"","","");return Yw(this._getPlayer(n),i,r,o),()=>{}}command(n,e,i,o){if("register"==i)return void this.register(n,o[0]);if("create"==i)return void this.create(n,e,o[0]||{});const r=this._getPlayer(n);switch(i){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(o[0]));break;case"destroy":this.destroy(n)}}}const A3="ng-animate-queued",mx="ng-animate-disabled",Yoe=[],R3={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},Xoe={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},yr="__ng_removed";class gx{namespaceId;value;options;get params(){return this.options.params}constructor(n,e=""){this.namespaceId=e;const i=n&&n.hasOwnProperty("value");if(this.value=function ere(t){return t??null}(i?n.value:n),i){const{value:r,...s}=n;this.options=s}else this.options={};this.options.params||(this.options.params={})}absorbOptions(n){const e=n.params;if(e){const i=this.options.params;Object.keys(e).forEach(o=>{null==i[o]&&(i[o]=e[o])})}}}const ff="void",_x=new gx(ff);class Zoe{id;hostElement;_engine;players=[];_triggers=new Map;_queue=[];_elementListeners=new Map;_hostClassName;constructor(n,e,i){this.id=n,this.hostElement=e,this._engine=i,this._hostClassName="ng-tns-"+n,Wo(e,this._hostClassName)}listen(n,e,i,o){if(!this._triggers.has(e))throw function Kie(){return new X(3302,!1)}();if(null==i||0==i.length)throw function Yie(){return new X(3303,!1)}();if(!function tre(t){return"start"==t||"done"==t}(i))throw function Xie(){return new X(3400,!1)}();const r=Oo(this._elementListeners,n,[]),s={name:e,phase:i,callback:o};r.push(s);const a=Oo(this._engine.statesByElement,n,new Map);return a.has(e)||(Wo(n,O_),Wo(n,O_+"-"+e),a.set(e,_x)),()=>{this._engine.afterFlush(()=>{const l=r.indexOf(s);l>=0&&r.splice(l,1),this._triggers.has(e)||a.delete(e)})}}register(n,e){return!this._triggers.has(n)&&(this._triggers.set(n,e),!0)}_getTrigger(n){const e=this._triggers.get(n);if(!e)throw function Zie(){return new X(3401,!1)}();return e}trigger(n,e,i,o=!0){const r=this._getTrigger(e),s=new bx(this.id,e,n);let a=this._engine.statesByElement.get(n);a||(Wo(n,O_),Wo(n,O_+"-"+e),this._engine.statesByElement.set(n,a=new Map));let l=a.get(e);const d=new gx(i,this.id);if(!(i&&i.hasOwnProperty("value"))&&l&&d.absorbOptions(l.options),a.set(e,d),l||(l=_x),d.value!==ff&&l.value===d.value){if(!function ore(t,n){const e=Object.keys(t),i=Object.keys(n);if(e.length!=i.length)return!1;for(let o=0;o{Kl(n,E),jr(n,I)})}return}const g=Oo(this._engine.playersByElement,n,[]);g.forEach(M=>{M.namespaceId==this.id&&M.triggerName==e&&M.queued&&M.destroy()});let b=r.matchTransition(l.value,d.value,n,d.params),w=!1;if(!b){if(!o)return;b=r.fallbackTransition,w=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:e,transition:b,fromState:l,toState:d,player:s,isFallbackTransition:w}),w||(Wo(n,A3),s.onStart(()=>{Gd(n,A3)})),s.onDone(()=>{let M=this.players.indexOf(s);M>=0&&this.players.splice(M,1);const E=this._engine.playersByElement.get(n);if(E){let I=E.indexOf(s);I>=0&&E.splice(I,1)}}),this.players.push(s),g.push(s),s}deregister(n){this._triggers.delete(n),this._engine.statesByElement.forEach(e=>e.delete(n)),this._elementListeners.forEach((e,i)=>{this._elementListeners.set(i,e.filter(o=>o.name!=n))})}clearElementCache(n){this._engine.statesByElement.delete(n),this._elementListeners.delete(n);const e=this._engine.playersByElement.get(n);e&&(e.forEach(i=>i.destroy()),this._engine.playersByElement.delete(n))}_signalRemovalForInnerTriggers(n,e){const i=this._engine.driver.query(n,A_,!0);i.forEach(o=>{if(o[yr])return;const r=this._engine.fetchNamespacesByElement(o);r.size?r.forEach(s=>s.triggerLeaveAnimation(o,e,!1,!0)):this.clearElementCache(o)}),this._engine.afterFlushAnimationsDone(()=>i.forEach(o=>this.clearElementCache(o)))}triggerLeaveAnimation(n,e,i,o){const r=this._engine.statesByElement.get(n),s=new Map;if(r){const a=[];if(r.forEach((l,d)=>{if(s.set(d,l.value),this._triggers.has(d)){const f=this.trigger(n,d,ff,o);f&&a.push(f)}}),a.length)return this._engine.markElementAsRemoved(this.id,n,!0,e,s),i&&va(a).onDone(()=>this._engine.processLeaveNode(n)),!0}return!1}prepareLeaveAnimationListeners(n){const e=this._elementListeners.get(n),i=this._engine.statesByElement.get(n);if(e&&i){const o=new Set;e.forEach(r=>{const s=r.name;if(o.has(s))return;o.add(s);const l=this._triggers.get(s).fallbackTransition,d=i.get(s)||_x,f=new gx(ff),m=new bx(this.id,s,n);this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:s,transition:l,fromState:d,toState:f,player:m,isFallbackTransition:!0})})}}removeNode(n,e){const i=this._engine;if(n.childElementCount&&this._signalRemovalForInnerTriggers(n,e),this.triggerLeaveAnimation(n,e,!0))return;let o=!1;if(i.totalAnimations){const r=i.players.length?i.playersByQueriedElement.get(n):[];if(r&&r.length)o=!0;else{let s=n;for(;s=s.parentNode;)if(i.statesByElement.get(s)){o=!0;break}}}if(this.prepareLeaveAnimationListeners(n),o)i.markElementAsRemoved(this.id,n,!1,e);else{const r=n[yr];(!r||r===R3)&&(i.afterFlush(()=>this.clearElementCache(n)),i.destroyInnerAnimations(n),i._onRemovalComplete(n,e))}}insertNode(n,e){Wo(n,this._hostClassName)}drainQueuedTransitions(n){const e=[];return this._queue.forEach(i=>{const o=i.player;if(o.destroyed)return;const r=i.element,s=this._elementListeners.get(r);s&&s.forEach(a=>{if(a.name==i.triggerName){const l=Zw(r,i.triggerName,i.fromState.value,i.toState.value);l._data=n,Yw(i.player,a.phase,l,a.callback)}}),o.markedForDestroy?this._engine.afterFlush(()=>{o.destroy()}):e.push(i)}),this._queue=[],e.sort((i,o)=>{const r=i.transition.ast.depCount,s=o.transition.ast.depCount;return 0==r||0==s?r-s:this._engine.driver.containsElement(i.element,o.element)?1:-1})}destroy(n){this.players.forEach(e=>e.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,n)}}class Qoe{bodyNode;driver;_normalizer;players=[];newHostElements=new Map;playersByElement=new Map;playersByQueriedElement=new Map;statesByElement=new Map;disabledNodes=new Set;totalAnimations=0;totalQueuedPlayers=0;_namespaceLookup={};_namespaceList=[];_flushFns=[];_whenQuietFns=[];namespacesByHostElement=new Map;collectedEnterElements=[];collectedLeaveElements=[];onRemovalComplete=(n,e)=>{};_onRemovalComplete(n,e){this.onRemovalComplete(n,e)}constructor(n,e,i){this.bodyNode=n,this.driver=e,this._normalizer=i}get queuedPlayers(){const n=[];return this._namespaceList.forEach(e=>{e.players.forEach(i=>{i.queued&&n.push(i)})}),n}createNamespace(n,e){const i=new Zoe(n,e,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,e)?this._balanceNamespaceList(i,e):(this.newHostElements.set(e,i),this.collectEnterElement(e)),this._namespaceLookup[n]=i}_balanceNamespaceList(n,e){const i=this._namespaceList,o=this.namespacesByHostElement;if(i.length-1>=0){let s=!1,a=this.driver.getParentElement(e);for(;a;){const l=o.get(a);if(l){const d=i.indexOf(l);i.splice(d+1,0,n),s=!0;break}a=this.driver.getParentElement(a)}s||i.unshift(n)}else i.push(n);return o.set(e,n),n}register(n,e){let i=this._namespaceLookup[n];return i||(i=this.createNamespace(n,e)),i}registerTrigger(n,e,i){let o=this._namespaceLookup[n];o&&o.register(e,i)&&this.totalAnimations++}destroy(n,e){n&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{const i=this._fetchNamespace(n);this.namespacesByHostElement.delete(i.hostElement);const o=this._namespaceList.indexOf(i);o>=0&&this._namespaceList.splice(o,1),i.destroy(e),delete this._namespaceLookup[n]}))}_fetchNamespace(n){return this._namespaceLookup[n]}fetchNamespacesByElement(n){const e=new Set,i=this.statesByElement.get(n);if(i)for(let o of i.values())if(o.namespaceId){const r=this._fetchNamespace(o.namespaceId);r&&e.add(r)}return e}trigger(n,e,i,o){if(U_(e)){const r=this._fetchNamespace(n);if(r)return r.trigger(e,i,o),!0}return!1}insertNode(n,e,i,o){if(!U_(e))return;const r=e[yr];if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;const s=this.collectedLeaveElements.indexOf(e);s>=0&&this.collectedLeaveElements.splice(s,1)}if(n){const s=this._fetchNamespace(n);s&&s.insertNode(e,i)}o&&this.collectEnterElement(e)}collectEnterElement(n){this.collectedEnterElements.push(n)}markElementAsDisabled(n,e){e?this.disabledNodes.has(n)||(this.disabledNodes.add(n),Wo(n,mx)):this.disabledNodes.has(n)&&(this.disabledNodes.delete(n),Gd(n,mx))}removeNode(n,e,i){if(U_(e)){const o=n?this._fetchNamespace(n):null;o?o.removeNode(e,i):this.markElementAsRemoved(n,e,!1,i);const r=this.namespacesByHostElement.get(e);r&&r.id!==n&&r.removeNode(e,i)}else this._onRemovalComplete(e,i)}markElementAsRemoved(n,e,i,o,r){this.collectedLeaveElements.push(e),e[yr]={namespaceId:n,setForRemoval:o,hasAnimation:i,removedBeforeQueried:!1,previousTriggersValues:r}}listen(n,e,i,o,r){return U_(e)?this._fetchNamespace(n).listen(e,i,o,r):()=>{}}_buildInstruction(n,e,i,o,r){return n.transition.build(this.driver,n.element,n.fromState.value,n.toState.value,i,o,n.fromState.options,n.toState.options,e,r)}destroyInnerAnimations(n){let e=this.driver.query(n,A_,!0);e.forEach(i=>this.destroyActiveAnimationsForElement(i)),0!=this.playersByQueriedElement.size&&(e=this.driver.query(n,ex,!0),e.forEach(i=>this.finishActiveQueriedAnimationOnElement(i)))}destroyActiveAnimationsForElement(n){const e=this.playersByElement.get(n);e&&e.forEach(i=>{i.queued?i.markedForDestroy=!0:i.destroy()})}finishActiveQueriedAnimationOnElement(n){const e=this.playersByQueriedElement.get(n);e&&e.forEach(i=>i.finish())}whenRenderingDone(){return new Promise(n=>{if(this.players.length)return va(this.players).onDone(()=>n());n()})}processLeaveNode(n){const e=n[yr];if(e&&e.setForRemoval){if(n[yr]=R3,e.namespaceId){this.destroyInnerAnimations(n);const i=this._fetchNamespace(e.namespaceId);i&&i.clearElementCache(n)}this._onRemovalComplete(n,e.setForRemoval)}n.classList?.contains(mx)&&this.markElementAsDisabled(n,!1),this.driver.query(n,".ng-animate-disabled",!0).forEach(i=>{this.markElementAsDisabled(i,!1)})}flush(n=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((i,o)=>this._balanceNamespaceList(i,o)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let i=0;ii()),this._flushFns=[],this._whenQuietFns.length){const i=this._whenQuietFns;this._whenQuietFns=[],e.length?va(e).onDone(()=>{i.forEach(o=>o())}):i.forEach(o=>o())}}reportError(n){throw function Qie(){return new X(3402,!1)}()}_flushAnimations(n,e){const i=new B_,o=[],r=new Map,s=[],a=new Map,l=new Map,d=new Map,f=new Set;this.disabledNodes.forEach(N=>{f.add(N);const K=this.driver.query(N,".ng-animate-queued",!0);for(let j=0;j{const j=y3+M++;w.set(K,j),N.forEach(Q=>Wo(Q,j))});const E=[],I=new Set,A=new Set;for(let N=0;NI.add(Q)):A.add(K))}const W=new Map,q=L3(g,Array.from(I));q.forEach((N,K)=>{const j=Jw+M++;W.set(K,j),N.forEach(Q=>Wo(Q,j))}),n.push(()=>{b.forEach((N,K)=>{const j=w.get(K);N.forEach(Q=>Gd(Q,j))}),q.forEach((N,K)=>{const j=W.get(K);N.forEach(Q=>Gd(Q,j))}),E.forEach(N=>{this.processLeaveNode(N)})});const Y=[],ee=[];for(let N=this._namespaceList.length-1;N>=0;N--)this._namespaceList[N].drainQueuedTransitions(e).forEach(j=>{const Q=j.player,he=j.element;if(Y.push(Q),this.collectedEnterElements.length){const xt=he[yr];if(xt&&xt.setForMove){if(xt.previousTriggersValues&&xt.previousTriggersValues.has(j.triggerName)){const or=xt.previousTriggersValues.get(j.triggerName),to=this.statesByElement.get(j.element);if(to&&to.has(j.triggerName)){const qa=to.get(j.triggerName);qa.value=or,to.set(j.triggerName,qa)}}return void Q.destroy()}}const xe=!m||!this.driver.containsElement(m,he),Ie=W.get(he),ht=w.get(he),Re=this._buildInstruction(j,i,ht,Ie,xe);if(Re.errors&&Re.errors.length)return void ee.push(Re);if(xe)return Q.onStart(()=>Kl(he,Re.fromStyles)),Q.onDestroy(()=>jr(he,Re.toStyles)),void o.push(Q);if(j.isFallbackTransition)return Q.onStart(()=>Kl(he,Re.fromStyles)),Q.onDestroy(()=>jr(he,Re.toStyles)),void o.push(Q);const Qe=[];Re.timelines.forEach(xt=>{xt.stretchStartingKeyframe=!0,this.disabledNodes.has(xt.element)||Qe.push(xt)}),Re.timelines=Qe,i.append(he,Re.timelines),s.push({instruction:Re,player:Q,element:he}),Re.queriedElements.forEach(xt=>Oo(a,xt,[]).push(Q)),Re.preStyleProps.forEach((xt,or)=>{if(xt.size){let to=l.get(or);to||l.set(or,to=new Set),xt.forEach((qa,Mo)=>to.add(Mo))}}),Re.postStyleProps.forEach((xt,or)=>{let to=d.get(or);to||d.set(or,to=new Set),xt.forEach((qa,Mo)=>to.add(Mo))})});if(ee.length){const N=[];ee.forEach(K=>{N.push(function Jie(){return new X(3505,!1)}())}),Y.forEach(K=>K.destroy()),this.reportError(N)}const oe=new Map,P=new Map;s.forEach(N=>{const K=N.element;i.has(K)&&(P.set(K,K),this._beforeAnimationBuild(N.player.namespaceId,N.instruction,oe))}),o.forEach(N=>{const K=N.element;this._getPreviousPlayers(K,!1,N.namespaceId,N.triggerName,null).forEach(Q=>{Oo(oe,K,[]).push(Q),Q.destroy()})});const R=E.filter(N=>V3(N,l,d)),B=new Map;N3(B,this.driver,A,d,Os).forEach(N=>{V3(N,l,d)&&R.push(N)});const z=new Map;b.forEach((N,K)=>{N3(z,this.driver,new Set(N),l,"!")}),R.forEach(N=>{const K=B.get(N),j=z.get(N);B.set(N,new Map([...K?.entries()??[],...j?.entries()??[]]))});const G=[],J=[],U={};s.forEach(N=>{const{element:K,player:j,instruction:Q}=N;if(i.has(K)){if(f.has(K))return j.onDestroy(()=>jr(K,Q.toStyles)),j.disabled=!0,j.overrideTotalTime(Q.totalTime),void o.push(j);let he=U;if(P.size>1){let Ie=K;const ht=[];for(;Ie=Ie.parentNode;){const Re=P.get(Ie);if(Re){he=Re;break}ht.push(Ie)}ht.forEach(Re=>P.set(Re,he))}const xe=this._buildAnimation(j.namespaceId,Q,oe,r,z,B);if(j.setRealPlayer(xe),he===U)G.push(j);else{const Ie=this.playersByElement.get(he);Ie&&Ie.length&&(j.parentPlayer=va(Ie)),o.push(j)}}else Kl(K,Q.fromStyles),j.onDestroy(()=>jr(K,Q.toStyles)),J.push(j),f.has(K)&&o.push(j)}),J.forEach(N=>{const K=r.get(N.element);if(K&&K.length){const j=va(K);N.setRealPlayer(j)}}),o.forEach(N=>{N.parentPlayer?N.syncPlayerEvents(N.parentPlayer):N.destroy()});for(let N=0;N!xe.destroyed);he.length?nre(this,K,he):this.processLeaveNode(K)}return E.length=0,G.forEach(N=>{this.players.push(N),N.onDone(()=>{N.destroy();const K=this.players.indexOf(N);this.players.splice(K,1)}),N.play()}),G}afterFlush(n){this._flushFns.push(n)}afterFlushAnimationsDone(n){this._whenQuietFns.push(n)}_getPreviousPlayers(n,e,i,o,r){let s=[];if(e){const a=this.playersByQueriedElement.get(n);a&&(s=a)}else{const a=this.playersByElement.get(n);if(a){const l=!r||r==ff;a.forEach(d=>{d.queued||!l&&d.triggerName!=o||s.push(d)})}}return(i||o)&&(s=s.filter(a=>!(i&&i!=a.namespaceId||o&&o!=a.triggerName))),s}_beforeAnimationBuild(n,e,i){const r=e.element,s=e.isRemovalTransition?void 0:n,a=e.isRemovalTransition?void 0:e.triggerName;for(const l of e.timelines){const d=l.element,f=d!==r,m=Oo(i,d,[]);this._getPreviousPlayers(d,f,s,a,e.toState).forEach(b=>{const w=b.getRealPlayer();w.beforeDestroy&&w.beforeDestroy(),b.destroy(),m.push(b)})}Kl(r,e.fromStyles)}_buildAnimation(n,e,i,o,r,s){const a=e.triggerName,l=e.element,d=[],f=new Set,m=new Set,g=e.timelines.map(w=>{const M=w.element;f.add(M);const E=M[yr];if(E&&E.removedBeforeQueried)return new df(w.duration,w.delay);const I=M!==l,A=function ire(t){const n=[];return B3(t,n),n}((i.get(M)||Yoe).map(oe=>oe.getRealPlayer())).filter(oe=>!!oe.element&&oe.element===M),W=r.get(M),q=s.get(M),Y=p3(this._normalizer,w.keyframes,W,q),ee=this._buildPlayer(w,Y,A);if(w.subTimeline&&o&&m.add(M),I){const oe=new bx(n,a,M);oe.setRealPlayer(ee),d.push(oe)}return ee});d.forEach(w=>{Oo(this.playersByQueriedElement,w.element,[]).push(w),w.onDone(()=>function Joe(t,n,e){let i=t.get(n);if(i){if(i.length){const o=i.indexOf(e);i.splice(o,1)}0==i.length&&t.delete(n)}return i}(this.playersByQueriedElement,w.element,w))}),f.forEach(w=>Wo(w,C3));const b=va(g);return b.onDestroy(()=>{f.forEach(w=>Gd(w,C3)),jr(l,e.toStyles)}),m.forEach(w=>{Oo(o,w,[]).push(b)}),b}_buildPlayer(n,e,i){return e.length>0?this.driver.animate(n.element,e,n.duration,n.delay,n.easing,i):new df(n.duration,n.delay)}}class bx{namespaceId;triggerName;element;_player=new df;_containsRealPlayer=!1;_queuedCallbacks=new Map;destroyed=!1;parentPlayer=null;markedForDestroy=!1;disabled=!1;queued=!0;totalTime=0;constructor(n,e,i){this.namespaceId=n,this.triggerName=e,this.element=i}setRealPlayer(n){this._containsRealPlayer||(this._player=n,this._queuedCallbacks.forEach((e,i)=>{e.forEach(o=>Yw(n,i,void 0,o))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(n.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(n){this.totalTime=n}syncPlayerEvents(n){const e=this._player;e.triggerCallback&&n.onStart(()=>e.triggerCallback("start")),n.onDone(()=>this.finish()),n.onDestroy(()=>this.destroy())}_queueEvent(n,e){Oo(this._queuedCallbacks,n,[]).push(e)}onDone(n){this.queued&&this._queueEvent("done",n),this._player.onDone(n)}onStart(n){this.queued&&this._queueEvent("start",n),this._player.onStart(n)}onDestroy(n){this.queued&&this._queueEvent("destroy",n),this._player.onDestroy(n)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(n){this.queued||this._player.setPosition(n)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(n){const e=this._player;e.triggerCallback&&e.triggerCallback(n)}}function U_(t){return t&&1===t.nodeType}function F3(t,n){const e=t.style.display;return t.style.display=n??"none",e}function N3(t,n,e,i,o){const r=[];e.forEach(l=>r.push(F3(l)));const s=[];i.forEach((l,d)=>{const f=new Map;l.forEach(m=>{const g=n.computeStyle(d,m,o);f.set(m,g),(!g||0==g.length)&&(d[yr]=Xoe,s.push(d))}),t.set(d,f)});let a=0;return e.forEach(l=>F3(l,r[a++])),s}function L3(t,n){const e=new Map;if(t.forEach(a=>e.set(a,[])),0==n.length)return e;const o=new Set(n),r=new Map;function s(a){if(!a)return 1;let l=r.get(a);if(l)return l;const d=a.parentNode;return l=e.has(d)?d:o.has(d)?1:s(d),r.set(a,l),l}return n.forEach(a=>{const l=s(a);1!==l&&e.get(l).push(a)}),e}function Wo(t,n){t.classList?.add(n)}function Gd(t,n){t.classList?.remove(n)}function nre(t,n,e){va(e).onDone(()=>t.processLeaveNode(n))}function B3(t,n){for(let e=0;eo.add(r)):n.set(t,i),e.delete(t),!0}class pf{_driver;_normalizer;_transitionEngine;_timelineEngine;_triggerCache={};onRemovalComplete=(n,e)=>{};constructor(n,e,i){this._driver=e,this._normalizer=i,this._transitionEngine=new Qoe(n.body,e,i),this._timelineEngine=new $oe(n.body,e,i),this._transitionEngine.onRemovalComplete=(o,r)=>this.onRemovalComplete(o,r)}registerTrigger(n,e,i,o,r){const s=n+"-"+o;let a=this._triggerCache[s];if(!a){const l=[],f=cx(this._driver,r,l,[]);if(l.length)throw function zie(){return new X(3404,!1)}();a=function Hoe(t,n,e){return new Uoe(t,n,e)}(o,f,this._normalizer),this._triggerCache[s]=a}this._transitionEngine.registerTrigger(e,o,a)}register(n,e){this._transitionEngine.register(n,e)}destroy(n,e){this._transitionEngine.destroy(n,e)}onInsert(n,e,i,o){this._transitionEngine.insertNode(n,e,i,o)}onRemove(n,e,i){this._transitionEngine.removeNode(n,e,i)}disableAnimations(n,e){this._transitionEngine.markElementAsDisabled(n,e)}process(n,e,i,o){if("@"==i.charAt(0)){const[r,s]=m3(i);this._timelineEngine.command(r,e,s,o)}else this._transitionEngine.trigger(n,e,i,o)}listen(n,e,i,o,r){if("@"==i.charAt(0)){const[s,a]=m3(i);return this._timelineEngine.listen(s,e,a,r)}return this._transitionEngine.listen(n,e,i,o,r)}flush(n=-1){this._transitionEngine.flush(n)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(n){this._transitionEngine.afterFlushAnimationsDone(n)}}let sre=(()=>{class t{_element;_startStyles;_endStyles;static initialStylesByElement=new WeakMap;_state=0;_initialStyles;constructor(e,i,o){this._element=e,this._startStyles=i,this._endStyles=o;let r=t.initialStylesByElement.get(e);r||t.initialStylesByElement.set(e,r=new Map),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&jr(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(jr(this._element,this._initialStyles),this._endStyles&&(jr(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(t.initialStylesByElement.delete(this._element),this._startStyles&&(Kl(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(Kl(this._element,this._endStyles),this._endStyles=null),jr(this._element,this._initialStyles),this._state=3)}}return t})();function vx(t){let n=null;return t.forEach((e,i)=>{(function are(t){return"display"===t||"position"===t})(i)&&(n=n||new Map,n.set(i,e))}),n}class H3{element;keyframes;options;_specialStyles;_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_duration;_delay;_initialized=!1;_finished=!1;_started=!1;_destroyed=!1;_finalKeyframe;_originalOnDoneFns=[];_originalOnStartFns=[];domPlayer=null;time=0;parentPlayer=null;currentSnapshot=new Map;constructor(n,e,i,o){this.element=n,this.keyframes=e,this.options=i,this._specialStyles=o,this._duration=i.duration,this._delay=i.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this._buildPlayer()&&this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return this.domPlayer;this._initialized=!0;const n=this.keyframes,e=this._triggerWebAnimation(this.element,n,this.options);if(!e)return this._onFinish(),null;this.domPlayer=e,this._finalKeyframe=n.length?n[n.length-1]:new Map;const i=()=>this._onFinish();return e.addEventListener("finish",i),this.onDestroy(()=>{e.removeEventListener("finish",i)}),e}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer?.pause()}_convertKeyframesToObject(n){const e=[];return n.forEach(i=>{e.push(Object.fromEntries(i))}),e}_triggerWebAnimation(n,e,i){const o=this._convertKeyframesToObject(e);try{return n.animate(o,i)}catch{return null}}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}play(){const n=this._buildPlayer();n&&(this.hasStarted()||(this._onStartFns.forEach(e=>e()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),n.play())}pause(){this.init(),this.domPlayer?.pause()}finish(){this.init(),this.domPlayer&&(this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish())}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer?.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}setPosition(n){this.domPlayer||this.init(),this.domPlayer&&(this.domPlayer.currentTime=n*this.time)}getPosition(){return this.domPlayer?+(this.domPlayer.currentTime??0)/this.time:this._initialized?1:0}get totalTime(){return this._delay+this._duration}beforeDestroy(){const n=new Map;this.hasStarted()&&this._finalKeyframe.forEach((i,o)=>{"offset"!==o&&n.set(o,this._finished?i:ox(this.element,o))}),this.currentSnapshot=n}triggerCallback(n){const e="start"===n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}class U3{validateStyleProperty(n){return!0}validateAnimatableStyleProperty(n){return!0}containsElement(n,e){return _3(n,e)}getParentElement(n){return Qw(n)}query(n,e,i){return b3(n,e,i)}computeStyle(n,e,i){return ox(n,e)}animate(n,e,i,o,r,s=[]){const l={duration:i,delay:o,fill:0==o?"both":"forwards"};r&&(l.easing=r);const d=new Map,f=s.filter(b=>b instanceof H3);(function hoe(t,n){return 0===t||0===n})(i,o)&&f.forEach(b=>{b.currentSnapshot.forEach((w,M)=>d.set(M,w))});let m=function coe(t){return t.length?t[0]instanceof Map?t:t.map(n=>new Map(Object.entries(n))):[]}(e).map(b=>new Map(b));m=function foe(t,n,e){if(e.size&&n.length){let i=n[0],o=[];if(e.forEach((r,s)=>{i.has(s)||o.push(s),i.set(s,r)}),o.length)for(let r=1;rs.set(a,ox(t,a)))}}return n}(n,m,d);const g=function rre(t,n){let e=null,i=null;return Array.isArray(n)&&n.length?(e=vx(n[0]),n.length>1&&(i=vx(n[n.length-1]))):n instanceof Map&&(e=vx(n)),e||i?new sre(t,e,i):null}(n,m);return new H3(n,m,l,g)}}const z3="@.disabled";class j3{namespaceId;delegate;engine;_onDestroy;\u0275type=0;constructor(n,e,i,o){this.namespaceId=n,this.delegate=e,this.engine=i,this._onDestroy=o}get data(){return this.delegate.data}destroyNode(n){this.delegate.destroyNode?.(n)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(n,e){return this.delegate.createElement(n,e)}createComment(n){return this.delegate.createComment(n)}createText(n){return this.delegate.createText(n)}appendChild(n,e){this.delegate.appendChild(n,e),this.engine.onInsert(this.namespaceId,e,n,!1)}insertBefore(n,e,i,o=!0){this.delegate.insertBefore(n,e,i),this.engine.onInsert(this.namespaceId,e,n,o)}removeChild(n,e,i,o){o?this.delegate.removeChild(n,e,i,o):this.parentNode(e)&&this.engine.onRemove(this.namespaceId,e,this.delegate)}selectRootElement(n,e){return this.delegate.selectRootElement(n,e)}parentNode(n){return this.delegate.parentNode(n)}nextSibling(n){return this.delegate.nextSibling(n)}setAttribute(n,e,i,o){this.delegate.setAttribute(n,e,i,o)}removeAttribute(n,e,i){this.delegate.removeAttribute(n,e,i)}addClass(n,e){this.delegate.addClass(n,e)}removeClass(n,e){this.delegate.removeClass(n,e)}setStyle(n,e,i,o){this.delegate.setStyle(n,e,i,o)}removeStyle(n,e,i){this.delegate.removeStyle(n,e,i)}setProperty(n,e,i){"@"==e.charAt(0)&&e==z3?this.disableAnimations(n,!!i):this.delegate.setProperty(n,e,i)}setValue(n,e){this.delegate.setValue(n,e)}listen(n,e,i,o){return this.delegate.listen(n,e,i,o)}disableAnimations(n,e){this.engine.disableAnimations(n,e)}}class lre extends j3{factory;constructor(n,e,i,o,r){super(e,i,o,r),this.factory=n,this.namespaceId=e}setProperty(n,e,i){"@"==e.charAt(0)?"."==e.charAt(1)&&e==z3?this.disableAnimations(n,i=void 0===i||!!i):this.engine.process(this.namespaceId,n,e.slice(1),i):this.delegate.setProperty(n,e,i)}listen(n,e,i,o){if("@"==e.charAt(0)){const r=function cre(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}(n);let s=e.slice(1),a="";return"@"!=s.charAt(0)&&([s,a]=function dre(t){const n=t.indexOf(".");return[t.substring(0,n),t.slice(n+1)]}(s)),this.engine.listen(this.namespaceId,r,s,a,l=>{this.factory.scheduleListenerCallback(l._data||-1,i,l)})}return this.delegate.listen(n,e,i,o)}}class ure{delegate;engine;_zone;_currentId=0;_microtaskId=1;_animationCallbacksBuffer=[];_rendererCache=new Map;_cdRecurDepth=0;constructor(n,e,i){this.delegate=n,this.engine=e,this._zone=i,e.onRemovalComplete=(o,r)=>{r?.removeChild(null,o)}}createRenderer(n,e){const o=this.delegate.createRenderer(n,e);if(!n||!e?.data?.animation){const d=this._rendererCache;let f=d.get(o);return f||(f=new j3("",o,this.engine,()=>d.delete(o)),d.set(o,f)),f}const r=e.id,s=e.id+"-"+this._currentId;this._currentId++,this.engine.register(s,n);const a=d=>{Array.isArray(d)?d.forEach(a):this.engine.registerTrigger(r,s,n,d.name,d)};return e.data.animation.forEach(a),new lre(this,s,o,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(n,e,i){if(n>=0&&ne(i));const o=this._animationCallbacksBuffer;0==o.length&&queueMicrotask(()=>{this._zone.run(()=>{o.forEach(r=>{const[s,a]=r;s(a)}),this._animationCallbacksBuffer=[]})}),o.push([e,i])}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}componentReplaced(n){this.engine.flush(),this.delegate.componentReplaced?.(n)}}const $3=[{provide:ax,useFactory:function pre(){return new k3}},{provide:pf,useClass:(()=>{class t extends pf{constructor(e,i,o){super(e,i,o)}ngOnDestroy(){this.flush()}static \u0275fac=function(i){return new(i||t)(ce(et),ce(sx),ce(ax))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})()},{provide:Uo,useFactory:function mre(){return new ure(T(Hw),T(pf),T(Ce))}}],W3=[{provide:sx,useClass:rx},{provide:Hm,useValue:"NoopAnimations"},...$3],yx=[{provide:sx,useFactory:()=>new U3},{provide:Hm,useFactory:()=>"BrowserAnimations"},...$3];let gre=(()=>{class t{static withConfig(e){return{ngModule:t,providers:e.disableAnimations?W3:yx}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:yx,imports:[c3]})}return t})();function ya(t){return this instanceof ya?(this.v=t,this):new ya(t)}function Y3(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=function kx(t){var n="function"==typeof Symbol&&Symbol.iterator,e=n&&t[n],i=0;if(e)return e.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),e={},i("next"),i("throw"),i("return"),e[Symbol.asyncIterator]=function(){return this},e);function i(r){e[r]=t[r]&&function(s){return new Promise(function(a,l){!function o(r,s,a,l){Promise.resolve(l).then(function(d){r({value:d,done:a})},s)}(a,l,(s=t[r](s)).done,s.value)})}}}"function"==typeof SuppressedError&&SuppressedError;const X3=t=>t&&"number"==typeof t.length&&"function"!=typeof t;function Z3(t){return fn(t?.then)}function Q3(t){return fn(t[hy])}function J3(t){return Symbol.asyncIterator&&fn(t?.[Symbol.asyncIterator])}function eN(t){return new TypeError(`You provided ${null!==t&&"object"==typeof t?"an invalid object":`'${t}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const tN=function jre(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function nN(t){return fn(t?.[tN])}function iN(t){return function K3(t,n,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o,i=e.apply(t,n||[]),r=[];return o=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",function s(b){return function(w){return Promise.resolve(w).then(b,m)}}),o[Symbol.asyncIterator]=function(){return this},o;function a(b,w){i[b]&&(o[b]=function(M){return new Promise(function(E,I){r.push([b,M,E,I])>1||l(b,M)})},w&&(o[b]=w(o[b])))}function l(b,w){try{!function d(b){b.value instanceof ya?Promise.resolve(b.value.v).then(f,m):g(r[0][2],b)}(i[b](w))}catch(M){g(r[0][3],M)}}function f(b){l("next",b)}function m(b){l("throw",b)}function g(b,w){b(w),r.shift(),r.length&&l(r[0][0],r[0][1])}}(this,arguments,function*(){const e=t.getReader();try{for(;;){const{value:i,done:o}=yield ya(e.read());if(o)return yield ya(void 0);yield yield ya(i)}}finally{e.releaseLock()}})}function oN(t){return fn(t?.getReader)}function qi(t){if(t instanceof zt)return t;if(null!=t){if(Q3(t))return function $re(t){return new zt(n=>{const e=t[hy]();if(fn(e.subscribe))return e.subscribe(n);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(t);if(X3(t))return function Wre(t){return new zt(n=>{for(let e=0;e{t.then(e=>{n.closed||(n.next(e),n.complete())},e=>n.error(e)).then(null,zM)})}(t);if(J3(t))return rN(t);if(nN(t))return function qre(t){return new zt(n=>{for(const e of t)if(n.next(e),n.closed)return;n.complete()})}(t);if(oN(t))return function Kre(t){return rN(iN(t))}(t)}throw eN(t)}function rN(t){return new zt(n=>{(function Yre(t,n){var e,i,o,r;return function G3(t,n,e,i){return new(e||(e=Promise))(function(r,s){function a(f){try{d(i.next(f))}catch(m){s(m)}}function l(f){try{d(i.throw(f))}catch(m){s(m)}}function d(f){f.done?r(f.value):function o(r){return r instanceof e?r:new e(function(s){s(r)})}(f.value).then(a,l)}d((i=i.apply(t,n||[])).next())})}(this,void 0,void 0,function*(){try{for(e=Y3(t);!(i=yield e.next()).done;)if(n.next(i.value),n.closed)return}catch(s){o={error:s}}finally{try{i&&!i.done&&(r=e.return)&&(yield r.call(e))}finally{if(o)throw o.error}}n.complete()})})(t,n).catch(e=>n.error(e))})}function wt(t,n){return En((e,i)=>{let o=null,r=0,s=!1;const a=()=>s&&!o&&i.complete();e.subscribe(pn(i,l=>{o?.unsubscribe();let d=0;const f=r++;qi(t(l,f)).subscribe(o=pn(i,m=>i.next(n?n(l,m,f,d++):m),()=>{o=null,a()}))},()=>{s=!0,a()}))})}function j_(t){return En((n,e)=>{try{n.subscribe(e)}finally{e.add(t)}})}function Rs(t,n,e,i=0,o=!1){const r=n.schedule(function(){e(),o?t.add(this.schedule(null,i)):this.unsubscribe()},i);if(t.add(r),!o)return r}function Tt(t,n,e=1/0){return fn(n)?Tt((i,o)=>De((r,s)=>n(i,r,o,s))(qi(t(i,o))),e):("number"==typeof n&&(e=n),En((i,o)=>function Xre(t,n,e,i,o,r,s,a){const l=[];let d=0,f=0,m=!1;const g=()=>{m&&!l.length&&!d&&n.complete()},b=M=>d{r&&n.next(M),d++;let E=!1;qi(e(M,f++)).subscribe(pn(n,I=>{o?.(I),r?b(I):n.next(I)},()=>{E=!0},void 0,()=>{if(E)try{for(d--;l.length&&dw(I)):w(I)}g()}catch(I){n.error(I)}}))};return t.subscribe(pn(n,b,()=>{m=!0,g()})),()=>{a?.()}}(i,o,t,e)))}function mf(t,n){return fn(n)?Tt(t,n,1):Tt(t,1)}function Pn(t,n){return En((e,i)=>{let o=0;e.subscribe(pn(i,r=>t.call(n,r,o++)&&i.next(r)))})}function sN(t,n=0){return En((e,i)=>{e.subscribe(pn(i,o=>Rs(i,t,()=>i.next(o),n),()=>Rs(i,t,()=>i.complete(),n),o=>Rs(i,t,()=>i.error(o),n)))})}function aN(t,n=0){return En((e,i)=>{i.add(t.schedule(()=>e.subscribe(i),n))})}function lN(t,n){if(!t)throw new Error("Iterable cannot be null");return new zt(e=>{Rs(e,n,()=>{const i=t[Symbol.asyncIterator]();Rs(e,n,()=>{i.next().then(o=>{o.done?e.complete():e.next(o.value)})},0,!0)})})}function Xn(t,n){return n?function nse(t,n){if(null!=t){if(Q3(t))return function Zre(t,n){return qi(t).pipe(aN(n),sN(n))}(t,n);if(X3(t))return function Jre(t,n){return new zt(e=>{let i=0;return n.schedule(function(){i===t.length?e.complete():(e.next(t[i++]),e.closed||this.schedule())})})}(t,n);if(Z3(t))return function Qre(t,n){return qi(t).pipe(aN(n),sN(n))}(t,n);if(J3(t))return lN(t,n);if(nN(t))return function ese(t,n){return new zt(e=>{let i;return Rs(e,n,()=>{i=t[tN](),Rs(e,n,()=>{let o,r;try{({value:o,done:r}=i.next())}catch(s){return void e.error(s)}r?e.complete():e.next(o)},0,!0)}),()=>fn(i?.return)&&i.return()})}(t,n);if(oN(t))return function tse(t,n){return lN(iN(t),n)}(t,n)}throw eN(t)}(t,n):qi(t)}function cN(t){return t&&fn(t.schedule)}function Mx(t){return t[t.length-1]}function dN(t){return fn(Mx(t))?t.pop():void 0}function gf(t){return cN(Mx(t))?t.pop():void 0}function se(...t){return Xn(t,gf(t))}class Go{headers;normalizedNames=new Map;lazyInit;lazyUpdate=null;constructor(n){n?"string"==typeof n?this.lazyInit=()=>{this.headers=new Map,n.split("\n").forEach(e=>{const i=e.indexOf(":");if(i>0){const o=e.slice(0,i),r=e.slice(i+1).trim();this.addHeaderEntry(o,r)}})}:typeof Headers<"u"&&n instanceof Headers?(this.headers=new Map,n.forEach((e,i)=>{this.addHeaderEntry(i,e)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(n).forEach(([e,i])=>{this.setHeaderEntries(e,i)})}:this.headers=new Map}has(n){return this.init(),this.headers.has(n.toLowerCase())}get(n){this.init();const e=this.headers.get(n.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(n){return this.init(),this.headers.get(n.toLowerCase())||null}append(n,e){return this.clone({name:n,value:e,op:"a"})}set(n,e){return this.clone({name:n,value:e,op:"s"})}delete(n,e){return this.clone({name:n,value:e,op:"d"})}maybeSetNormalizedName(n,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,n)}init(){this.lazyInit&&(this.lazyInit instanceof Go?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(n=>this.applyUpdate(n)),this.lazyUpdate=null))}copyFrom(n){n.init(),Array.from(n.headers.keys()).forEach(e=>{this.headers.set(e,n.headers.get(e)),this.normalizedNames.set(e,n.normalizedNames.get(e))})}clone(n){const e=new Go;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof Go?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([n]),e}applyUpdate(n){const e=n.name.toLowerCase();switch(n.op){case"a":case"s":let i=n.value;if("string"==typeof i&&(i=[i]),0===i.length)return;this.maybeSetNormalizedName(n.name,e);const o=("a"===n.op?this.headers.get(e):void 0)||[];o.push(...i),this.headers.set(e,o);break;case"d":const r=n.value;if(r){let s=this.headers.get(e);if(!s)return;s=s.filter(a=>-1===r.indexOf(a)),0===s.length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,s)}else this.headers.delete(e),this.normalizedNames.delete(e)}}addHeaderEntry(n,e){const i=n.toLowerCase();this.maybeSetNormalizedName(n,i),this.headers.has(i)?this.headers.get(i).push(e):this.headers.set(i,[e])}setHeaderEntries(n,e){const i=(Array.isArray(e)?e:[e]).map(r=>r.toString()),o=n.toLowerCase();this.headers.set(o,i),this.maybeSetNormalizedName(n,o)}forEach(n){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>n(this.normalizedNames.get(e),this.headers.get(e)))}}class ose{map=new Map;set(n,e){return this.map.set(n,e),this}get(n){return this.map.has(n)||this.map.set(n,n.defaultValue()),this.map.get(n)}delete(n){return this.map.delete(n),this}has(n){return this.map.has(n)}keys(){return this.map.keys()}}class rse{encodeKey(n){return hN(n)}encodeValue(n){return hN(n)}decodeKey(n){return decodeURIComponent(n)}decodeValue(n){return decodeURIComponent(n)}}const ase=/%(\d[a-f0-9])/gi,lse={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function hN(t){return encodeURIComponent(t).replace(ase,(n,e)=>lse[e]??n)}function $_(t){return`${t}`}class Ca{map;encoder;updates=null;cloneFrom=null;constructor(n={}){if(this.encoder=n.encoder||new rse,n.fromString){if(n.fromObject)throw new X(2805,!1);this.map=function sse(t,n){const e=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(o=>{const r=o.indexOf("="),[s,a]=-1==r?[n.decodeKey(o),""]:[n.decodeKey(o.slice(0,r)),n.decodeValue(o.slice(r+1))],l=e.get(s)||[];l.push(a),e.set(s,l)}),e}(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach(e=>{const i=n.fromObject[e],o=Array.isArray(i)?i.map($_):[$_(i)];this.map.set(e,o)})):this.map=null}has(n){return this.init(),this.map.has(n)}get(n){this.init();const e=this.map.get(n);return e?e[0]:null}getAll(n){return this.init(),this.map.get(n)||null}keys(){return this.init(),Array.from(this.map.keys())}append(n,e){return this.clone({param:n,value:e,op:"a"})}appendAll(n){const e=[];return Object.keys(n).forEach(i=>{const o=n[i];Array.isArray(o)?o.forEach(r=>{e.push({param:i,value:r,op:"a"})}):e.push({param:i,value:o,op:"a"})}),this.clone(e)}set(n,e){return this.clone({param:n,value:e,op:"s"})}delete(n,e){return this.clone({param:n,value:e,op:"d"})}toString(){return this.init(),this.keys().map(n=>{const e=this.encoder.encodeKey(n);return this.map.get(n).map(i=>e+"="+this.encoder.encodeValue(i)).join("&")}).filter(n=>""!==n).join("&")}clone(n){const e=new Ca({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat(n),e}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(n=>this.map.set(n,this.cloneFrom.map.get(n))),this.updates.forEach(n=>{switch(n.op){case"a":case"s":const e=("a"===n.op?this.map.get(n.param):void 0)||[];e.push($_(n.value)),this.map.set(n.param,e);break;case"d":if(void 0===n.value){this.map.delete(n.param);break}{let i=this.map.get(n.param)||[];const o=i.indexOf($_(n.value));-1!==o&&i.splice(o,1),i.length>0?this.map.set(n.param,i):this.map.delete(n.param)}}}),this.cloneFrom=this.updates=null)}}function fN(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function pN(t){return typeof Blob<"u"&&t instanceof Blob}function mN(t){return typeof FormData<"u"&&t instanceof FormData}const _f="Content-Type",gN="text/plain",_N="application/json",bN=`${_N}, ${gN}, */*`;class bf{url;body=null;headers;context;reportProgress=!1;withCredentials=!1;credentials;keepalive=!1;cache;priority;mode;redirect;referrer;integrity;referrerPolicy;responseType="json";method;params;urlWithParams;transferCache;timeout;constructor(n,e,i,o){let r;if(this.url=e,this.method=n.toUpperCase(),function cse(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||o?(this.body=void 0!==i?i:null,r=o):r=i,r){if(this.reportProgress=!!r.reportProgress,this.withCredentials=!!r.withCredentials,this.keepalive=!!r.keepalive,r.responseType&&(this.responseType=r.responseType),r.headers&&(this.headers=r.headers),r.context&&(this.context=r.context),r.params&&(this.params=r.params),r.priority&&(this.priority=r.priority),r.cache&&(this.cache=r.cache),r.credentials&&(this.credentials=r.credentials),"number"==typeof r.timeout){if(r.timeout<1||!Number.isInteger(r.timeout))throw new X(2822,"");this.timeout=r.timeout}r.mode&&(this.mode=r.mode),r.redirect&&(this.redirect=r.redirect),r.integrity&&(this.integrity=r.integrity),r.referrer&&(this.referrer=r.referrer),r.referrerPolicy&&(this.referrerPolicy=r.referrerPolicy),this.transferCache=r.transferCache}if(this.headers??=new Go,this.context??=new ose,this.params){const s=this.params.toString();if(0===s.length)this.urlWithParams=e;else{const a=e.indexOf("?");this.urlWithParams=e+(-1===a?"?":aee.set(oe,n.setHeaders[oe]),W)),n.setParams&&(q=Object.keys(n.setParams).reduce((ee,oe)=>ee.set(oe,n.setParams[oe]),q)),new bf(e,i,E,{params:q,headers:W,context:Y,reportProgress:A,responseType:o,withCredentials:I,transferCache:w,keepalive:r,cache:a,priority:s,timeout:M,mode:l,redirect:d,credentials:f,referrer:m,integrity:g,referrerPolicy:b})}}var wa=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}(wa||{});class Dx{headers;status;statusText;url;ok;type;redirected;responseType;constructor(n,e=200,i="OK"){this.headers=n.headers||new Go,this.status=void 0!==n.status?n.status:e,this.statusText=n.statusText||i,this.url=n.url||null,this.redirected=n.redirected,this.responseType=n.responseType,this.ok=this.status>=200&&this.status<300}}class G_ extends Dx{constructor(n={}){super(n)}type=wa.ResponseHeader;clone(n={}){return new G_({headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}class vf extends Dx{body;constructor(n={}){super(n),this.body=void 0!==n.body?n.body:null}type=wa.Response;clone(n={}){return new vf({body:void 0!==n.body?n.body:this.body,headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0,redirected:n.redirected??this.redirected,responseType:n.responseType??this.responseType})}}class Xl extends Dx{name="HttpErrorResponse";message;error;ok=!1;constructor(n){super(n,0,"Unknown Error"),this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${n.url||"(unknown url)"}`:`Http failure response for ${n.url||"(unknown url)"}: ${n.status} ${n.statusText}`,this.error=n.error||null}}const yN=new Z(""),gse=/^\)\]\}',?\n/;let CN=(()=>{class t{xhrFactory;tracingService=T(da,{optional:!0});constructor(e){this.xhrFactory=e}maybePropagateTrace(e){return this.tracingService?.propagate?this.tracingService.propagate(e):e}handle(e){if("JSONP"===e.method)throw new X(-2800,!1);const i=this.xhrFactory;return se(null).pipe(wt(()=>new zt(r=>{const s=i.build();if(s.open(e.method,e.urlWithParams),e.withCredentials&&(s.withCredentials=!0),e.headers.forEach((E,I)=>s.setRequestHeader(E,I.join(","))),e.headers.has("Accept")||s.setRequestHeader("Accept",bN),!e.headers.has(_f)){const E=e.detectContentTypeHeader();null!==E&&s.setRequestHeader(_f,E)}if(e.timeout&&(s.timeout=e.timeout),e.responseType){const E=e.responseType.toLowerCase();s.responseType="json"!==E?E:"text"}const a=e.serializeBody();let l=null;const d=()=>{if(null!==l)return l;const E=s.statusText||"OK",I=new Go(s.getAllResponseHeaders());return l=new G_({headers:I,status:s.status,statusText:E,url:s.responseURL||e.url}),l},f=this.maybePropagateTrace(()=>{let{headers:E,status:I,statusText:A,url:W}=d(),q=null;204!==I&&(q=typeof s.response>"u"?s.responseText:s.response),0===I&&(I=q?200:0);let Y=I>=200&&I<300;if("json"===e.responseType&&"string"==typeof q){const ee=q;q=q.replace(gse,"");try{q=""!==q?JSON.parse(q):null}catch(oe){q=ee,Y&&(Y=!1,q={error:oe,text:q})}}Y?(r.next(new vf({body:q,headers:E,status:I,statusText:A,url:W||void 0})),r.complete()):r.error(new Xl({error:q,headers:E,status:I,statusText:A,url:W||void 0}))}),m=this.maybePropagateTrace(E=>{const{url:I}=d(),A=new Xl({error:E,status:s.status||0,statusText:s.statusText||"Unknown Error",url:I||void 0});r.error(A)});let g=m;e.timeout&&(g=this.maybePropagateTrace(E=>{const{url:I}=d(),A=new Xl({error:new DOMException("Request timed out","TimeoutError"),status:s.status||0,statusText:s.statusText||"Request timeout",url:I||void 0});r.error(A)}));let b=!1;const w=this.maybePropagateTrace(E=>{b||(r.next(d()),b=!0);let I={type:wa.DownloadProgress,loaded:E.loaded};E.lengthComputable&&(I.total=E.total),"text"===e.responseType&&s.responseText&&(I.partialText=s.responseText),r.next(I)}),M=this.maybePropagateTrace(E=>{let I={type:wa.UploadProgress,loaded:E.loaded};E.lengthComputable&&(I.total=E.total),r.next(I)});return s.addEventListener("load",f),s.addEventListener("error",m),s.addEventListener("timeout",g),s.addEventListener("abort",m),e.reportProgress&&(s.addEventListener("progress",w),null!==a&&s.upload&&s.upload.addEventListener("progress",M)),s.send(a),r.next({type:wa.Sent}),()=>{s.removeEventListener("error",m),s.removeEventListener("abort",m),s.removeEventListener("load",f),s.removeEventListener("timeout",g),e.reportProgress&&(s.removeEventListener("progress",w),null!==a&&s.upload&&s.upload.removeEventListener("progress",M)),s.readyState!==s.DONE&&s.abort()}})))}static \u0275fac=function(i){return new(i||t)(ce(nT))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function wN(t,n){return n(t)}function _se(t,n){return(e,i)=>n.intercept(e,{handle:o=>t(o,i)})}const vse=new Z(""),yf=new Z("",{factory:()=>[]}),yse=new Z(""),xN=new Z("",{factory:()=>!0});function Cse(){let t=null;return(n,e)=>{null===t&&(t=(T(vse,{optional:!0})??[]).reduceRight(_se,wN));const i=T(bm);if(T(xN)){const r=i.add();return t(n,e).pipe(j_(r))}return t(n,e)}}let q_=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(CN),o},providedIn:"root"})}return t})(),Px=(()=>{class t{backend;injector;chain=null;pendingTasks=T(bm);contributeToStability=T(xN);constructor(e,i){this.backend=e,this.injector=i}handle(e){if(null===this.chain){const i=Array.from(new Set([...this.injector.get(yf),...this.injector.get(yse,[])]));this.chain=i.reduceRight((o,r)=>function bse(t,n,e){return(i,o)=>io(e,()=>n(i,r=>t(r,o)))}(o,r,this.injector),wN)}if(this.contributeToStability){const i=this.pendingTasks.add();return this.chain(e,o=>this.backend.handle(o)).pipe(j_(i))}return this.chain(e,i=>this.backend.handle(i))}static \u0275fac=function(i){return new(i||t)(ce(q_),ce(Wn))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Ix=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(Px),o},providedIn:"root"})}return t})();function Ox(t,n){return{body:n,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials,credentials:t.credentials,transferCache:t.transferCache,timeout:t.timeout,keepalive:t.keepalive,priority:t.priority,cache:t.cache,mode:t.mode,redirect:t.redirect,integrity:t.integrity,referrer:t.referrer,referrerPolicy:t.referrerPolicy}}let xa=(()=>{class t{handler;constructor(e){this.handler=e}request(e,i,o={}){let r;if(e instanceof bf)r=e;else{let l,d;l=o.headers instanceof Go?o.headers:new Go(o.headers),o.params&&(d=o.params instanceof Ca?o.params:new Ca({fromObject:o.params})),r=new bf(e,i,void 0!==o.body?o.body:null,{headers:l,context:o.context,params:d,reportProgress:o.reportProgress,responseType:o.responseType||"json",withCredentials:o.withCredentials,transferCache:o.transferCache,keepalive:o.keepalive,priority:o.priority,cache:o.cache,mode:o.mode,redirect:o.redirect,credentials:o.credentials,referrer:o.referrer,referrerPolicy:o.referrerPolicy,integrity:o.integrity,timeout:o.timeout})}const s=se(r).pipe(mf(l=>this.handler.handle(l)));if(e instanceof bf||"events"===o.observe)return s;const a=s.pipe(Pn(l=>l instanceof vf));switch(o.observe||"body"){case"body":switch(r.responseType){case"arraybuffer":return a.pipe(De(l=>{if(null!==l.body&&!(l.body instanceof ArrayBuffer))throw new X(2806,!1);return l.body}));case"blob":return a.pipe(De(l=>{if(null!==l.body&&!(l.body instanceof Blob))throw new X(2807,!1);return l.body}));case"text":return a.pipe(De(l=>{if(null!==l.body&&"string"!=typeof l.body)throw new X(2808,!1);return l.body}));default:return a.pipe(De(l=>l.body))}case"response":return a;default:throw new X(2809,!1)}}delete(e,i={}){return this.request("DELETE",e,i)}get(e,i={}){return this.request("GET",e,i)}head(e,i={}){return this.request("HEAD",e,i)}jsonp(e,i){return this.request("JSONP",e,{params:(new Ca).append(i,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(e,i={}){return this.request("OPTIONS",e,i)}patch(e,i,o={}){return this.request("PATCH",e,Ox(o,i))}post(e,i,o={}){return this.request("POST",e,Ox(o,i))}put(e,i,o={}){return this.request("PUT",e,Ox(o,i))}static \u0275fac=function(i){return new(i||t)(ce(Ix))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const SN=new Z("",{factory:()=>!0}),MN=new Z("",{factory:()=>"XSRF-TOKEN"}),DN=new Z("",{factory:()=>"X-XSRF-TOKEN"});let Dse=(()=>{class t{cookieName=T(MN);doc=T(et);lastCookieString="";lastToken=null;parseCount=0;getToken(){const e=this.doc.cookie||"";return e!==this.lastCookieString&&(this.parseCount++,this.lastToken=tT(e,this.cookieName),this.lastCookieString=e),this.lastToken}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Tse=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(Dse),o},providedIn:"root"})}return t})();function Ese(t,n){if(!T(SN)||"GET"===t.method||"HEAD"===t.method)return n(t);try{const o=T(ym).href,{origin:r}=new URL(o),{origin:s}=new URL(t.url,r);if(r!==s)return n(t)}catch{return n(t)}const e=T(Tse).getToken(),i=T(DN);return null!=e&&!t.headers.has(i)&&(t=t.clone({headers:t.headers.set(i,e)})),n(t)}var ka=function(t){return t[t.Interceptors=0]="Interceptors",t[t.LegacyInterceptors=1]="LegacyInterceptors",t[t.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",t[t.NoXsrfProtection=3]="NoXsrfProtection",t[t.JsonpSupport=4]="JsonpSupport",t[t.RequestsMadeViaParent=5]="RequestsMadeViaParent",t[t.Fetch=6]="Fetch",t}(ka||{});function Zl(t,n){return{\u0275kind:t,\u0275providers:n}}function Pse(...t){const n=[xa,Px,{provide:Ix,useExisting:Px},{provide:q_,useFactory:()=>T(yN,{optional:!0})??T(CN)},{provide:yf,useValue:Ese,multi:!0}];for(const e of t)n.push(...e.\u0275providers);return Gu(n)}const TN=new Z("");function $r(t){return!!t&&(t instanceof zt||fn(t.lift)&&fn(t.subscribe))}const{isArray:Ose}=Array,{getPrototypeOf:Ase,prototype:Rse,keys:Fse}=Object;function EN(t){if(1===t.length){const n=t[0];if(Ose(n))return{args:n,keys:null};if(function Nse(t){return t&&"object"==typeof t&&Ase(t)===Rse}(n)){const e=Fse(n);return{args:e.map(i=>n[i]),keys:e}}}return{args:t,keys:null}}const{isArray:Lse}=Array;function PN(t){return De(n=>function Bse(t,n){return Lse(n)?t(...n):t(n)}(t,n))}function IN(t,n){return t.reduce((e,i,o)=>(e[i]=n[o],e),{})}function Ax(...t){const n=gf(t),e=dN(t),{args:i,keys:o}=EN(t);if(0===i.length)return Xn([],n);const r=new zt(function Vse(t,n,e=Qa){return i=>{ON(n,()=>{const{length:o}=t,r=new Array(o);let s=o,a=o;for(let l=0;l{const d=Xn(t[l],n);let f=!1;d.subscribe(pn(i,m=>{r[l]=m,f||(f=!0,a--),a||i.next(e(r.slice()))},()=>{--s||i.complete()}))},i)},i)}}(i,n,o?s=>IN(o,s):Qa));return e?r.pipe(PN(e)):r}function ON(t,n,e){t?Rs(e,t,n):n()}const Rx=ay(t=>function(){t(this),this.name="EmptyError",this.message="no elements in sequence"});function qd(t=1/0){return Tt(Qa,t)}function Fs(...t){return function Hse(){return qd(1)}()(Xn(t,gf(t)))}function Sa(t){return new zt(n=>{qi(t()).subscribe(n)})}const Ni=new zt(t=>t.complete());function Cr(t,n){const e=fn(t)?t:()=>t,i=o=>o.error(e());return new zt(n?o=>n.schedule(i,0,o):i)}function wn(t){return t<=0?()=>Ni:En((n,e)=>{let i=0;n.subscribe(pn(e,o=>{++i<=t&&(e.next(o),t<=i&&e.complete())}))})}function $se(t=Wse){return En((n,e)=>{let i=!1;n.subscribe(pn(e,o=>{i=!0,e.next(o)},()=>i?e.complete():e.error(t())))})}function Wse(){return new Rx}function Wr(t,n){const e=arguments.length>=2;return i=>i.pipe(t?Pn((o,r)=>t(o,r,i)):Qa,wn(1),e?function jse(t){return En((n,e)=>{let i=!1;n.subscribe(pn(e,o=>{i=!0,e.next(o)},()=>{i||e.next(t),e.complete()}))})}(n):$se(()=>new Rx))}function zn(...t){const n=gf(t);return En((e,i)=>{(n?Fs(t,e,n):Fs(t,e)).subscribe(i)})}function ln(t){return En((n,e)=>{qi(t).subscribe(pn(e,()=>e.complete(),zp)),!e.closed&&n.subscribe(e)})}function ui(t,n,e){const i=fn(t)||n||e?{next:t,error:n,complete:e}:t;return i?En((o,r)=>{var s;null===(s=i.subscribe)||void 0===s||s.call(i);let a=!0;o.subscribe(pn(r,l=>{var d;null===(d=i.next)||void 0===d||d.call(i,l),r.next(l)},()=>{var l;a=!1,null===(l=i.complete)||void 0===l||l.call(i),r.complete()},l=>{var d;a=!1,null===(d=i.error)||void 0===d||d.call(i,l),r.error(l)},()=>{var l,d;a&&(null===(l=i.unsubscribe)||void 0===l||l.call(i)),null===(d=i.finalize)||void 0===d||d.call(i)}))}):Qa}function AN(t){return t<=0?()=>Ni:En((n,e)=>{let i=[];n.subscribe(pn(e,o=>{i.push(o),t{for(const o of i)e.next(o);e.complete()},void 0,()=>{i=null}))})}function ii(t){return En((n,e)=>{let r,i=null,o=!1;i=n.subscribe(pn(e,void 0,void 0,s=>{r=qi(t(s,ii(t)(n))),i?(i.unsubscribe(),i=null,r.subscribe(e)):o=!0})),o&&(i.unsubscribe(),i=null,r.subscribe(e))})}let iae=(()=>{class t{_doc;constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),K_=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(aae),o},providedIn:"root"})}return t})(),aae=(()=>{class t extends K_{_doc;constructor(e){super(),this._doc=e}sanitize(e,i){if(null==i)return null;switch(e){case yi.NONE:return i;case yi.HTML:return Vr(i,"HTML")?Po(i):aE(this._doc,String(i)).toString();case yi.STYLE:return Vr(i,"Style")?Po(i):i;case yi.SCRIPT:if(Vr(i,"Script"))return Po(i);throw new X(5200,!1);case yi.URL:return Vr(i,"URL")?Po(i):mh(String(i));case yi.RESOURCE_URL:if(Vr(i,"ResourceURL"))return Po(i);throw new X(5201,!1);default:throw new X(5202,!1)}}bypassSecurityTrustHtml(e){return function A9(t){return new D9(t)}(e)}bypassSecurityTrustStyle(e){return function R9(t){return new T9(t)}(e)}bypassSecurityTrustScript(e){return function F9(t){return new E9(t)}(e)}bypassSecurityTrustUrl(e){return function N9(t){return new P9(t)}(e)}bypassSecurityTrustResourceUrl(e){return function L9(t){return new I9(t)}(e)}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Ye="primary",wf=Symbol("RouteTitle");class lae{params;constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){const e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){const e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function Kd(t){return new lae(t)}function Fx(t,n,e){for(let i=0;it.length||"full"===e.pathMatch&&(n.hasChildren()||i.lengtht.length||"full"===e.pathMatch&&n.hasChildren()&&"**"!==e.path)return null;const a={};return Fx(r,t.slice(0,r.length),a)&&Fx(s,t.slice(t.length-s.length),a)?{consumed:t,posParams:a}:null}function Y_(t){return new Promise((n,e)=>{t.pipe(Wr()).subscribe({next:i=>n(i),error:i=>e(i)})})}function Gr(t,n){const e=t?Nx(t):void 0,i=n?Nx(n):void 0;if(!e||!i||e.length!=i.length)return!1;let o;for(let r=0;ri[r]===o)}return t===n}function Ql(t){return $r(t)?t:Hh(t)?Xn(Promise.resolve(t)):se(t)}function HN(t){return $r(t)?Y_(t):Promise.resolve(t)}const hae={exact:function jN(t,n,e){if(!Jl(t.segments,n.segments)||!Z_(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(const i in n.children)if(!t.children[i]||!jN(t.children[i],n.children[i],e))return!1;return!0},subset:$N},UN={exact:function pae(t,n){return Gr(t,n)},subset:function mae(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>VN(t[e],n[e]))},ignored:()=>!0},zN={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},X_={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};function Lx(t,n,e){return hae[e.paths](t.root,n.root,e.matrixParams)&&UN[e.queryParams](t.queryParams,n.queryParams)&&!("exact"===e.fragment&&t.fragment!==n.fragment)}function $N(t,n,e){return WN(t,n,n.segments,e)}function WN(t,n,e,i){if(t.segments.length>e.length){const o=t.segments.slice(0,e.length);return!(!Jl(o,e)||n.hasChildren()||!Z_(o,e,i))}if(t.segments.length===e.length){if(!Jl(t.segments,e)||!Z_(t.segments,e,i))return!1;for(const o in n.children)if(!t.children[o]||!$N(t.children[o],n.children[o],i))return!1;return!0}{const o=e.slice(0,t.segments.length),r=e.slice(t.segments.length);return!!(Jl(t.segments,o)&&Z_(t.segments,o,i)&&t.children[Ye])&&WN(t.children[Ye],n,r,i)}}function Z_(t,n,e){return n.every((i,o)=>UN[e](t[o].parameters,i.parameters))}class wr{root;queryParams;fragment;_queryParamMap;constructor(n=new Xt([],{}),e={},i=null){this.root=n,this.queryParams=e,this.fragment=i}get queryParamMap(){return this._queryParamMap??=Kd(this.queryParams),this._queryParamMap}toString(){return bae.serialize(this)}}class Xt{segments;children;parent=null;constructor(n,e){this.segments=n,this.children=e,Object.values(e).forEach(i=>i.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Q_(this)}}class xf{path;parameters;_parameterMap;constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=Kd(this.parameters),this._parameterMap}toString(){return KN(this)}}function Jl(t,n){return t.length===n.length&&t.every((e,i)=>e.path===n[i].path)}let Yd=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>new kf,providedIn:"root"})}return t})();class kf{parse(n){const e=new Eae(n);return new wr(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){const e=`/${Sf(n.root,!0)}`,i=function Cae(t){const n=Object.entries(t).map(([e,i])=>Array.isArray(i)?i.map(o=>`${J_(e)}=${J_(o)}`).join("&"):`${J_(e)}=${J_(i)}`).filter(e=>e);return n.length?`?${n.join("&")}`:""}(n.queryParams);return`${e}${i}${"string"==typeof n.fragment?`#${function vae(t){return encodeURI(t)}(n.fragment)}`:""}`}}const bae=new kf;function Q_(t){return t.segments.map(n=>KN(n)).join("/")}function Sf(t,n){if(!t.hasChildren())return Q_(t);if(n){const e=t.children[Ye]?Sf(t.children[Ye],!1):"",i=[];return Object.entries(t.children).forEach(([o,r])=>{o!==Ye&&i.push(`${o}:${Sf(r,!1)}`)}),i.length>0?`${e}(${i.join("//")})`:e}{const e=function _ae(t,n){let e=[];return Object.entries(t.children).forEach(([i,o])=>{i===Ye&&(e=e.concat(n(o,i)))}),Object.entries(t.children).forEach(([i,o])=>{i!==Ye&&(e=e.concat(n(o,i)))}),e}(t,(i,o)=>o===Ye?[Sf(t.children[Ye],!1)]:[`${o}:${Sf(i,!1)}`]);return 1===Object.keys(t.children).length&&null!=t.children[Ye]?`${Q_(t)}/${e[0]}`:`${Q_(t)}/(${e.join("//")})`}}function GN(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function J_(t){return GN(t).replace(/%3B/gi,";")}function Bx(t){return GN(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function eb(t){return decodeURIComponent(t)}function qN(t){return eb(t.replace(/\+/g,"%20"))}function KN(t){return`${Bx(t.path)}${function yae(t){return Object.entries(t).map(([n,e])=>`;${Bx(n)}=${Bx(e)}`).join("")}(t.parameters)}`}const wae=/^[^\/()?;#]+/;function Vx(t){const n=t.match(wae);return n?n[0]:""}const xae=/^[^\/()?;=#]+/,Sae=/^[^=?&#]+/,Dae=/^[^&#]+/;class Eae{url;remaining;constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new Xt([],{}):new Xt([],this.parseChildren())}parseQueryParams(){const n={};if(this.consumeOptional("?"))do{this.parseQueryParam(n)}while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(n=0){if(n>50)throw new X(4010,!1);if(""===this.remaining)return{};this.consumeOptional("/");const e=[];for(this.peekStartsWith("(")||e.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),e.push(this.parseSegment());let i={};this.peekStartsWith("/(")&&(this.capture("/"),i=this.parseParens(!0,n));let o={};return this.peekStartsWith("(")&&(o=this.parseParens(!1,n)),(e.length>0||Object.keys(i).length>0)&&(o[Ye]=new Xt(e,i)),o}parseSegment(){const n=Vx(this.remaining);if(""===n&&this.peekStartsWith(";"))throw new X(4009,!1);return this.capture(n),new xf(eb(n),this.parseMatrixParams())}parseMatrixParams(){const n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){const e=function kae(t){const n=t.match(xae);return n?n[0]:""}(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){const o=Vx(this.remaining);o&&(i=o,this.capture(i))}n[eb(e)]=eb(i)}parseQueryParam(n){const e=function Mae(t){const n=t.match(Sae);return n?n[0]:""}(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){const s=function Tae(t){const n=t.match(Dae);return n?n[0]:""}(this.remaining);s&&(i=s,this.capture(i))}const o=qN(e),r=qN(i);if(n.hasOwnProperty(o)){let s=n[o];Array.isArray(s)||(s=[s],n[o]=s),s.push(r)}else n[o]=r}parseParens(n,e){const i={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const o=Vx(this.remaining),r=this.remaining[o.length];if("/"!==r&&")"!==r&&";"!==r)throw new X(4010,!1);let s;o.indexOf(":")>-1?(s=o.slice(0,o.indexOf(":")),this.capture(s),this.capture(":")):n&&(s=Ye);const a=this.parseChildren(e+1);i[s??Ye]=1===Object.keys(a).length&&a[Ye]?a[Ye]:new Xt([],a),this.consumeOptional("//")}return i}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return!!this.peekStartsWith(n)&&(this.remaining=this.remaining.substring(n.length),!0)}capture(n){if(!this.consumeOptional(n))throw new X(4011,!1)}}function YN(t){return t.segments.length>0?new Xt([],{[Ye]:t}):t}function XN(t){const n={};for(const[i,o]of Object.entries(t.children)){const r=XN(o);if(i===Ye&&0===r.segments.length&&r.hasChildren())for(const[s,a]of Object.entries(r.children))n[s]=a;else(r.segments.length>0||r.hasChildren())&&(n[i]=r)}return function Pae(t){if(1===t.numberOfChildren&&t.children[Ye]){const n=t.children[Ye];return new Xt(t.segments.concat(n.segments),n.children)}return t}(new Xt(t.segments,n))}function ec(t){return t instanceof wr}function ZN(t){let n;const o=YN(function e(r){const s={};for(const l of r.children){const d=e(l);s[l.outlet]=d}const a=new Xt(r.url,s);return r===t&&(n=a),a}(t.root));return n??o}function QN(t,n,e,i,o){let r=t;for(;r.parent;)r=r.parent;if(0===n.length)return Hx(r,r,r,e,i,o);const s=function Oae(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new tL(!0,0,t);let n=0,e=!1;const i=t.reduce((o,r,s)=>{if("object"==typeof r&&null!=r){if(r.outlets){const a={};return Object.entries(r.outlets).forEach(([l,d])=>{a[l]="string"==typeof d?d.split("/"):d}),[...o,{outlets:a}]}if(r.segmentPath)return[...o,r.segmentPath]}return"string"!=typeof r?[...o,r]:0===s?(r.split("/").forEach((a,l)=>{0==l&&"."===a||(0==l&&""===a?e=!0:".."===a?n++:""!=a&&o.push(a))}),o):[...o,r]},[]);return new tL(e,n,i)}(n);if(s.toRoot())return Hx(r,r,new Xt([],{}),e,i,o);const a=function Aae(t,n,e){if(t.isAbsolute)return new nb(n,!0,0);if(!e)return new nb(n,!1,NaN);if(null===e.parent)return new nb(e,!0,0);const i=tb(t.commands[0])?0:1;return function Rae(t,n,e){let i=t,o=n,r=e;for(;r>o;){if(r-=o,i=i.parent,!i)throw new X(4005,!1);o=i.segments.length}return new nb(i,!1,o-r)}(e,e.segments.length-1+i,t.numberOfDoubleDots)}(s,r,t),l=a.processChildren?Df(a.segmentGroup,a.index,s.commands):nL(a.segmentGroup,a.index,s.commands);return Hx(r,a.segmentGroup,l,e,i,o)}function tb(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function Mf(t){return"object"==typeof t&&null!=t&&t.outlets}function JN(t,n,e){t||="\u0275";const i=new wr;return i.queryParams={[t]:n},e.parse(e.serialize(i)).queryParams[t]}function Hx(t,n,e,i,o,r){const s={};for(const[d,f]of Object.entries(i??{}))s[d]=Array.isArray(f)?f.map(m=>JN(d,m,r)):JN(d,f,r);let a;a=t===n?e:eL(t,n,e);const l=YN(XN(a));return new wr(l,s,o)}function eL(t,n,e){const i={};return Object.entries(t.children).forEach(([o,r])=>{i[o]=r===n?e:eL(r,n,e)}),new Xt(t.segments,i)}class tL{isAbsolute;numberOfDoubleDots;commands;constructor(n,e,i){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=i,n&&i.length>0&&tb(i[0]))throw new X(4003,!1);const o=i.find(Mf);if(o&&o!==function uae(t){return t.length>0?t[t.length-1]:null}(i))throw new X(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class nb{segmentGroup;processChildren;index;constructor(n,e,i){this.segmentGroup=n,this.processChildren=e,this.index=i}}function nL(t,n,e){if(t??=new Xt([],{}),0===t.segments.length&&t.hasChildren())return Df(t,n,e);const i=function Nae(t,n,e){let i=0,o=n;const r={match:!1,pathIndex:0,commandIndex:0};for(;o=e.length)return r;const s=t.segments[o],a=e[i];if(Mf(a))break;const l=`${a}`,d=i0&&void 0===l)break;if(l&&d&&"object"==typeof d&&void 0===d.outlets){if(!oL(l,d,s))return r;i+=2}else{if(!oL(l,{},s))return r;i++}o++}return{match:!0,pathIndex:o,commandIndex:i}}(t,n,e),o=e.slice(i.commandIndex);if(i.match&&i.pathIndexr!==Ye)&&t.children[Ye]&&1===t.numberOfChildren&&0===t.children[Ye].segments.length){const r=Df(t.children[Ye],n,e);return new Xt(t.segments,r.children)}return Object.entries(i).forEach(([r,s])=>{"string"==typeof s&&(s=[s]),null!==s&&(o[r]=nL(t.children[r],n,s))}),Object.entries(t.children).forEach(([r,s])=>{void 0===i[r]&&(o[r]=s)}),new Xt(t.segments,o)}}function Ux(t,n,e){const i=t.segments.slice(0,n);let o=0;for(;o{"string"==typeof i&&(i=[i]),null!==i&&(n[e]=Ux(new Xt([],{}),0,i))}),n}function iL(t){const n={};return Object.entries(t).forEach(([e,i])=>n[e]=`${i}`),n}function oL(t,n,e){return t==e.path&&Gr(n,e.parameters)}const Tf="imperative";var bt=function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t}(bt||{});class qr{id;url;constructor(n,e){this.id=n,this.url=e}}class ib extends qr{type=bt.NavigationStart;navigationTrigger;restoredState;constructor(n,e,i="imperative",o=null){super(n,e),this.navigationTrigger=i,this.restoredState=o}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class Kr extends qr{urlAfterRedirects;type=bt.NavigationEnd;constructor(n,e,i){super(n,e),this.urlAfterRedirects=i}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}var wo=function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t[t.Aborted=4]="Aborted",t}(wo||{}),ob=function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t}(ob||{});class Da extends qr{reason;code;type=bt.NavigationCancel;constructor(n,e,i,o){super(n,e),this.reason=i,this.code=o}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class Xd extends qr{reason;code;type=bt.NavigationSkipped;constructor(n,e,i,o){super(n,e),this.reason=i,this.code=o}}class zx extends qr{error;target;type=bt.NavigationError;constructor(n,e,i,o){super(n,e),this.error=i,this.target=o}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class rL extends qr{urlAfterRedirects;state;type=bt.RoutesRecognized;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Vae extends qr{urlAfterRedirects;state;type=bt.GuardsCheckStart;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Hae extends qr{urlAfterRedirects;state;shouldActivate;type=bt.GuardsCheckEnd;constructor(n,e,i,o,r){super(n,e),this.urlAfterRedirects=i,this.state=o,this.shouldActivate=r}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class Uae extends qr{urlAfterRedirects;state;type=bt.ResolveStart;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class zae extends qr{urlAfterRedirects;state;type=bt.ResolveEnd;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class jae{route;type=bt.RouteConfigLoadStart;constructor(n){this.route=n}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class $ae{route;type=bt.RouteConfigLoadEnd;constructor(n){this.route=n}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class Wae{snapshot;type=bt.ChildActivationStart;constructor(n){this.snapshot=n}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Gae{snapshot;type=bt.ChildActivationEnd;constructor(n){this.snapshot=n}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class qae{snapshot;type=bt.ActivationStart;constructor(n){this.snapshot=n}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Kae{snapshot;type=bt.ActivationEnd;constructor(n){this.snapshot=n}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class sL{routerEvent;position;anchor;scrollBehavior;type=bt.Scroll;constructor(n,e,i,o){this.routerEvent=n,this.position=e,this.anchor=i,this.scrollBehavior=o}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}class jx{}class aL{}class rb{url;navigationBehaviorOptions;constructor(n,e){this.url=n,this.navigationBehaviorOptions=e}}class Xae{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return this.route?.snapshot._environmentInjector??this.rootInjector}constructor(n){this.rootInjector=n,this.children=new Ef(this.rootInjector)}}let Ef=(()=>{class t{rootInjector;contexts=new Map;constructor(e){this.rootInjector=e}onChildOutletCreated(e,i){const o=this.getOrCreateContext(e);o.outlet=i,this.contexts.set(e,o)}onChildOutletDestroyed(e){const i=this.getContext(e);i&&(i.outlet=null,i.attachRef=null)}onOutletDeactivated(){const e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let i=this.getContext(e);return i||(i=new Xae(this.rootInjector),this.contexts.set(e,i)),i}getContext(e){return this.contexts.get(e)||null}static \u0275fac=function(i){return new(i||t)(ce(Wn))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class lL{_root;constructor(n){this._root=n}get root(){return this._root.value}parent(n){const e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){const e=$x(n,this._root);return e?e.children.map(i=>i.value):[]}firstChild(n){const e=$x(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){const e=Wx(n,this._root);return e.length<2?[]:e[e.length-2].children.map(o=>o.value).filter(o=>o!==n)}pathFromRoot(n){return Wx(n,this._root).map(e=>e.value)}}function $x(t,n){if(t===n.value)return n;for(const e of n.children){const i=$x(t,e);if(i)return i}return null}function Wx(t,n){if(t===n.value)return[n];for(const e of n.children){const i=Wx(t,e);if(i.length)return i.unshift(n),i}return[]}class xr{value;children;constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}}function Zd(t){const n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}class cL extends lL{snapshot;constructor(n,e){super(n),this.snapshot=e,Kx(this,n)}toString(){return this.snapshot.toString()}}function dL(t,n){const e=function Zae(t,n){const s=new qx([],{},{},"",{},Ye,t,null,{},n);return new uL("",new xr(s,[]))}(t,n),i=new Ei([new xf("",{})]),o=new Ei({}),r=new Ei({}),s=new Ei({}),a=new Ei(""),l=new Li(i,o,s,a,r,Ye,t,e.root);return l.snapshot=e.root,new cL(new xr(l,[]),e)}class Li{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(n,e,i,o,r,s,a,l){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=i,this.fragmentSubject=o,this.dataSubject=r,this.outlet=s,this.component=a,this._futureSnapshot=l,this.title=this.dataSubject?.pipe(De(d=>d[wf]))??se(void 0),this.url=n,this.params=e,this.queryParams=i,this.fragment=o,this.data=r}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.params.pipe(De(n=>Kd(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(De(n=>Kd(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Gx(t,n,e="emptyOnly"){let i;const{routeConfig:o}=t;return i=null===n||"always"!==e&&""!==o?.path&&(n.component||n.routeConfig?.loadComponent)?{params:{...t.params},data:{...t.data},resolve:{...t.data,...t._resolvedData??{}}}:{params:{...n.params,...t.params},data:{...n.data,...t.data},resolve:{...t.data,...n.data,...o?.data,...t._resolvedData}},o&&fL(o)&&(i.resolve[wf]=o.title),i}class qx{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;_environmentInjector;get title(){return this.data?.[wf]}constructor(n,e,i,o,r,s,a,l,d,f){this.url=n,this.params=e,this.queryParams=i,this.fragment=o,this.data=r,this.outlet=s,this.component=a,this.routeConfig=l,this._resolve=d,this._environmentInjector=f}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??=Kd(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=Kd(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(i=>i.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class uL extends lL{url;constructor(n,e){super(e),this.url=n,Kx(this,e)}toString(){return hL(this._root)}}function Kx(t,n){n.value._routerState=t,n.children.forEach(e=>Kx(t,e))}function hL(t){const n=t.children.length>0?` { ${t.children.map(hL).join(", ")} } `:"";return`${t.value}${n}`}function Yx(t){if(t.snapshot){const n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,Gr(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),Gr(n.params,e.params)||t.paramsSubject.next(e.params),function dae(t,n){if(t.length!==n.length)return!1;for(let e=0;eGr(e.parameters,n[i].parameters))}(t.url,n.url);return e&&!(!t.parent!=!n.parent)&&(!t.parent||Xx(t.parent,n.parent))}function fL(t){return"string"==typeof t.title||null===t.title}const Qae=new Z("");let sb=(()=>{class t{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=Ye;activateEvents=new ke;deactivateEvents=new ke;attachEvents=new ke;detachEvents=new ke;routerOutletData=uee();parentContexts=T(Ef);location=T(Ai);changeDetector=T(Dt);inputBinder=T(ab,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(e){if(e.name){const{firstChange:i,previousValue:o}=e.name;if(i)return;this.isTrackedInParentContexts(o)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(o)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new X(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new X(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new X(4012,!1);this.location.detach();const e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,i){this.activated=e,this._activatedRoute=i,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){const e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,i){if(this.isActivated)throw new X(4013,!1);this._activatedRoute=e;const o=this.location,s=e.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,l=new Jae(e,a,o.injector,this.routerOutletData);this.activated=o.createComponent(s,{index:o.length,injector:l,environmentInjector:i}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["router-outlet"]],inputs:{name:"name",routerOutletData:[1,"routerOutletData"]},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],features:[vi]})}return t})();class Jae{route;childContexts;parent;outletData;constructor(n,e,i,o){this.route=n,this.childContexts=e,this.parent=i,this.outletData=o}get(n,e){return n===Li?this.route:n===Ef?this.childContexts:n===Qae?this.outletData:this.parent.get(n,e)}}const ab=new Z("");let pL=(()=>{class t{outletDataSubscriptions=new Map;bindActivatedRouteToOutletComponent(e){this.unsubscribeFromRouteData(e),this.subscribeToRouteData(e)}unsubscribeFromRouteData(e){this.outletDataSubscriptions.get(e)?.unsubscribe(),this.outletDataSubscriptions.delete(e)}subscribeToRouteData(e){const{activatedRoute:i}=e,o=Ax([i.queryParams,i.params,i.data]).pipe(wt(([r,s,a],l)=>(a={...r,...s,...a},0===l?se(a):Promise.resolve(a)))).subscribe(r=>{if(!e.isActivated||!e.activatedComponentRef||e.activatedRoute!==i||null===i.component)return void this.unsubscribeFromRouteData(e);const s=function bte(t){const n=kt(t);if(!n)return null;const e=new Rh(n);return{get selector(){return e.selector},get type(){return e.componentType},get inputs(){return e.inputs},get outputs(){return e.outputs},get ngContentSelectors(){return e.ngContentSelectors},get isStandalone(){return n.standalone},get isSignal(){return n.signals}}}(i.component);if(s)for(const{templateName:a}of s.inputs)e.activatedComponentRef.setInput(a,r[a]);else this.unsubscribeFromRouteData(e)});this.outletDataSubscriptions.set(e,o)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),mL=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["ng-component"]],exportAs:["emptyRouterOutlet"],decls:1,vars:0,template:function(i,o){1&i&&L(0,"router-outlet")},dependencies:[sb],encapsulation:2})}return t})();function Zx(t){const n=t.children&&t.children.map(Zx),e=n?{...t,children:n}:{...t};return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==Ye&&(e.component=mL),e}function Pf(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){const i=e.value;i._futureSnapshot=n.value;const o=function tle(t,n,e){return n.children.map(i=>{for(const o of e.children)if(t.shouldReuseRoute(i.value,o.value.snapshot))return Pf(t,i,o);return Pf(t,i)})}(t,n,e);return new xr(i,o)}{if(t.shouldAttach(n.value)){const r=t.retrieve(n.value);if(null!==r){const s=r.route;return s.value._futureSnapshot=n.value,s.children=n.children.map(a=>Pf(t,a)),s}}const i=function nle(t){return new Li(new Ei(t.url),new Ei(t.params),new Ei(t.queryParams),new Ei(t.fragment),new Ei(t.data),t.outlet,t.component,t)}(n.value),o=n.children.map(r=>Pf(t,r));return new xr(i,o)}}class Qx{redirectTo;navigationBehaviorOptions;constructor(n,e){this.redirectTo=n,this.navigationBehaviorOptions=e}}const gL="ngNavigationCancelingError";function lb(t,n){const{redirectTo:e,navigationBehaviorOptions:i}=ec(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,o=_L(!1,wo.Redirect);return o.url=e,o.navigationBehaviorOptions=i,o}function _L(t,n){const e=new Error(`NavigationCancelingError: ${t||""}`);return e[gL]=!0,e.cancellationCode=n,e}function bL(t){return!!t&&t[gL]}class ole{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(n,e,i,o,r){this.routeReuseStrategy=n,this.futureState=e,this.currState=i,this.forwardEvent=o,this.inputBindingEnabled=r}activate(n){const e=this.futureState._root,i=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,i,n),Yx(this.futureState.root),this.activateChildRoutes(e,i,n)}deactivateChildRoutes(n,e,i){const o=Zd(e);n.children.forEach(r=>{const s=r.value.outlet;this.deactivateRoutes(r,o[s],i),delete o[s]}),Object.values(o).forEach(r=>{this.deactivateRouteAndItsChildren(r,i)})}deactivateRoutes(n,e,i){const o=n.value,r=e?e.value:null;if(o===r)if(o.component){const s=i.getContext(o.outlet);s&&this.deactivateChildRoutes(n,e,s.children)}else this.deactivateChildRoutes(n,e,i);else r&&this.deactivateRouteAndItsChildren(e,i)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){const i=e.getContext(n.value.outlet),o=i&&n.value.component?i.children:e,r=Zd(n);for(const s of Object.values(r))this.deactivateRouteAndItsChildren(s,o);if(i&&i.outlet){const s=i.outlet.detach(),a=i.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:a})}}deactivateRouteAndOutlet(n,e){const i=e.getContext(n.value.outlet),o=i&&n.value.component?i.children:e,r=Zd(n);for(const s of Object.values(r))this.deactivateRouteAndItsChildren(s,o);i&&(i.outlet&&(i.outlet.deactivate(),i.children.onOutletDeactivated()),i.attachRef=null,i.route=null)}activateChildRoutes(n,e,i){const o=Zd(e);n.children.forEach(r=>{this.activateRoutes(r,o[r.value.outlet],i),this.forwardEvent(new Kae(r.value.snapshot))}),n.children.length&&this.forwardEvent(new Gae(n.value.snapshot))}activateRoutes(n,e,i){const o=n.value,r=e?e.value:null;if(Yx(o),o===r)if(o.component){const s=i.getOrCreateContext(o.outlet);this.activateChildRoutes(n,e,s.children)}else this.activateChildRoutes(n,e,i);else if(o.component){const s=i.getOrCreateContext(o.outlet);if(this.routeReuseStrategy.shouldAttach(o.snapshot)){const a=this.routeReuseStrategy.retrieve(o.snapshot);this.routeReuseStrategy.store(o.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),Yx(a.route.value),this.activateChildRoutes(n,null,s.children)}else s.attachRef=null,s.route=o,s.outlet&&s.outlet.activateWith(o,s.injector),this.activateChildRoutes(n,null,s.children)}else this.activateChildRoutes(n,null,i)}}class vL{path;route;constructor(n){this.path=n,this.route=this.path[this.path.length-1]}}class cb{component;route;constructor(n,e){this.component=n,this.route=e}}function rle(t,n,e){const i=t._root;return If(i,n?n._root:null,e,[i.value])}function Qd(t,n){const e=Symbol(),i=n.get(t,e);return i===e?"function"!=typeof t||function cU(t){return null!==Kp(t)}(t)?n.get(t):t:i}function If(t,n,e,i,o={canDeactivateChecks:[],canActivateChecks:[]}){const r=Zd(n);return t.children.forEach(s=>{(function ale(t,n,e,i,o={canDeactivateChecks:[],canActivateChecks:[]}){const r=t.value,s=n?n.value:null,a=e?e.getContext(t.value.outlet):null;if(s&&r.routeConfig===s.routeConfig){const l=function lle(t,n,e){if("function"==typeof e)return io(n._environmentInjector,()=>e(t,n));switch(e){case"pathParamsChange":return!Jl(t.url,n.url);case"pathParamsOrQueryParamsChange":return!Jl(t.url,n.url)||!Gr(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Xx(t,n)||!Gr(t.queryParams,n.queryParams);default:return!Xx(t,n)}}(s,r,r.routeConfig.runGuardsAndResolvers);l?o.canActivateChecks.push(new vL(i)):(r.data=s.data,r._resolvedData=s._resolvedData),If(t,n,r.component?a?a.children:null:e,i,o),l&&a&&a.outlet&&a.outlet.isActivated&&o.canDeactivateChecks.push(new cb(a.outlet.component,s))}else s&&Of(n,a,o),o.canActivateChecks.push(new vL(i)),If(t,null,r.component?a?a.children:null:e,i,o)})(s,r[s.value.outlet],e,i.concat([s.value]),o),delete r[s.value.outlet]}),Object.entries(r).forEach(([s,a])=>Of(a,e.getContext(s),o)),o}function Of(t,n,e){const i=Zd(t),o=t.value;Object.entries(i).forEach(([r,s])=>{Of(s,o.component?n?n.children.getContext(r):null:n,e)}),e.canDeactivateChecks.push(new cb(o.component&&n&&n.outlet&&n.outlet.isActivated?n.outlet.component:null,o))}function Af(t){return"function"==typeof t}function yL(t){return t instanceof Rx||"EmptyError"===t?.name}const db=Symbol("INITIAL_VALUE");function Jd(){return wt(t=>Ax(t.map(n=>n.pipe(wn(1),zn(db)))).pipe(De(n=>{for(const e of n)if(!0!==e){if(e===db)return db;if(!1===e||mle(e))return e}return!0}),Pn(n=>n!==db),wn(1)))}function mle(t){return ec(t)||t instanceof Qx}function CL(t){return t.aborted?se(void 0).pipe(wn(1)):new zt(n=>{const e=()=>{n.next(),n.complete()};return t.addEventListener("abort",e),()=>t.removeEventListener("abort",e)})}function wL(t){return ln(CL(t))}function xL(t){return function YH(...t){return jM(t)}(ui(n=>{if("boolean"!=typeof n)throw lb(0,n)}),De(n=>!0===n))}class Ns extends Error{segmentGroup;constructor(n){super(),this.segmentGroup=n||null,Object.setPrototypeOf(this,Ns.prototype)}}class Rf extends Error{urlTree;constructor(n){super(),this.urlTree=n,Object.setPrototypeOf(this,Rf.prototype)}}function Mle(t){throw new X(4e3,!1)}class Tle{urlSerializer;urlTree;constructor(n,e){this.urlSerializer=n,this.urlTree=e}lineralizeSegments(n,e){return At(function*(){let i=[],o=e.root;for(;;){if(i=i.concat(o.segments),0===o.numberOfChildren)return i;if(o.numberOfChildren>1||!o.children[Ye])throw Mle();o=o.children[Ye]}})()}applyRedirectCommands(n,e,i,o,r){var s=this;return At(function*(){const a=yield function Ele(t,n,e){if("string"==typeof t)return Promise.resolve(t);const i=t;return Y_(Ql(io(e,()=>i(n))))}(e,o,r);if(a instanceof wr)throw new Rf(a);const l=s.applyRedirectCreateUrlTree(a,s.urlSerializer.parse(a),n,i);if("/"===a[0])throw new Rf(l);return l})()}applyRedirectCreateUrlTree(n,e,i,o){const r=this.createSegmentGroup(n,e.root,i,o);return new wr(r,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){const i={};return Object.entries(n).forEach(([o,r])=>{if("string"==typeof r&&":"===r[0]){const a=r.substring(1);i[o]=e[a]}else i[o]=r}),i}createSegmentGroup(n,e,i,o){const r=this.createSegments(n,e.segments,i,o);let s={};return Object.entries(e.children).forEach(([a,l])=>{s[a]=this.createSegmentGroup(n,l,i,o)}),new Xt(r,s)}createSegments(n,e,i,o){return e.map(r=>":"===r.path[0]?this.findPosParam(n,r,o):this.findOrReturn(r,i))}findPosParam(n,e,i){const o=i[e.path.substring(1)];if(!o)throw new X(4001,!1);return o}findOrReturn(n,e){let i=0;for(const o of e){if(o.path===n.path)return e.splice(i),o;i++}return n}}function Yr(t){return t.outlet||Ye}function Rle(t,n){const e=t.filter(i=>Yr(i)===n);return e.push(...t.filter(i=>Yr(i)!==n)),e}const Jx={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function kL(t){return{routeConfig:t.routeConfig,url:t.url,params:t.params,queryParams:t.queryParams,fragment:t.fragment,data:t.data,outlet:t.outlet,title:t.title,paramMap:t.paramMap,queryParamMap:t.queryParamMap}}function Fle(t,n,e,i,o,r,s){const a=SL(t,n,e);if(!a.matched)return se(a);const l=kL(r(a));return i=function Ple(t,n){return t.providers&&!t._injector&&(t._injector=Ag(t.providers,n,`Route: ${t.path}`)),t._injector??n}(n,i),function Sle(t,n,e,i,o,r){const s=n.canMatch;return s&&0!==s.length?se(s.map(l=>{const d=Qd(l,t);return Ql(function ple(t){return t&&Af(t.canMatch)}(d)?d.canMatch(n,e,o):io(t,()=>d(n,e,o))).pipe(wL(r))})).pipe(Jd(),xL()):se(!0)}(i,n,e,0,l,s).pipe(De(d=>!0===d?a:{...Jx}))}function SL(t,n,e){if(""===n.path)return"full"===n.pathMatch&&(t.hasChildren()||e.length>0)?{...Jx}:{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};const o=(n.matcher||cae)(e,t,n);if(!o)return{...Jx};const r={};Object.entries(o.posParams??{}).forEach(([a,l])=>{r[a]=l.path});const s=o.consumed.length>0?{...r,...o.consumed[o.consumed.length-1].parameters}:r;return{matched:!0,consumedSegments:o.consumed,remainingSegments:e.slice(o.consumed.length),parameters:s,positionalParamSegments:o.posParams??{}}}function ML(t,n,e,i){return e.length>0&&function Ble(t,n,e){return e.some(i=>ub(t,n,i)&&Yr(i)!==Ye)}(t,e,i)?{segmentGroup:new Xt(n,Lle(i,new Xt(e,t.children))),slicedSegments:[]}:0===e.length&&function Vle(t,n,e){return e.some(i=>ub(t,n,i))}(t,e,i)?{segmentGroup:new Xt(t.segments,Nle(t,e,i,t.children)),slicedSegments:e}:{segmentGroup:new Xt(t.segments,t.children),slicedSegments:e}}function Nle(t,n,e,i){const o={};for(const r of e)if(ub(t,n,r)&&!i[Yr(r)]){const s=new Xt([],{});o[Yr(r)]=s}return{...i,...o}}function Lle(t,n){const e={};e[Ye]=n;for(const i of t)if(""===i.path&&Yr(i)!==Ye){const o=new Xt([],{});e[Yr(i)]=o}return e}function ub(t,n,e){return(!(t.hasChildren()||n.length>0)||"full"!==e.pathMatch)&&""===e.path}class Ule{}function ek(){return(ek=At(function*(t,n,e,i,o,r,s="emptyOnly",a){return new $le(t,n,e,i,o,s,r,a).recognize()})).apply(this,arguments)}class $le{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(n,e,i,o,r,s,a,l){this.injector=n,this.configLoader=e,this.rootComponentType=i,this.config=o,this.urlTree=r,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.abortSignal=l,this.applyRedirects=new Tle(this.urlSerializer,this.urlTree)}noMatchError(n){return new X(4002,`'${n.segmentGroup}'`)}recognize(){var n=this;return At(function*(){const e=ML(n.urlTree.root,[],[],n.config).segmentGroup,{children:i,rootSnapshot:o}=yield n.match(e),r=new xr(o,i),s=new uL("",r),a=function Iae(t,n,e=null,i=null,o=new kf){return QN(ZN(t),n,e,i,o)}(o,[],n.urlTree.queryParams,n.urlTree.fragment);return a.queryParams=n.urlTree.queryParams,s.url=n.urlSerializer.serialize(a),{state:s,tree:a}})()}match(n){var e=this;return At(function*(){const i=new qx([],Object.freeze({}),Object.freeze({...e.urlTree.queryParams}),e.urlTree.fragment,Object.freeze({}),Ye,e.rootComponentType,null,{},e.injector);try{return{children:yield e.processSegmentGroup(e.injector,e.config,n,Ye,i),rootSnapshot:i}}catch(o){if(o instanceof Rf)return e.urlTree=o.urlTree,e.match(o.urlTree.root);throw o instanceof Ns?e.noMatchError(o):o}})()}processSegmentGroup(n,e,i,o,r){var s=this;return At(function*(){if(0===i.segments.length&&i.hasChildren())return s.processChildren(n,e,i,r);const a=yield s.processSegment(n,e,i,i.segments,o,!0,r);return a instanceof xr?[a]:[]})()}processChildren(n,e,i,o){var r=this;return At(function*(){const s=[];for(const d of Object.keys(i.children))"primary"===d?s.unshift(d):s.push(d);let a=[];for(const d of s){const f=i.children[d],m=Rle(e,d),g=yield r.processSegmentGroup(n,m,f,d,o);a.push(...g)}const l=DL(a);return function Wle(t){t.sort((n,e)=>n.value.outlet===Ye?-1:e.value.outlet===Ye?1:n.value.outlet.localeCompare(e.value.outlet))}(l),l})()}processSegment(n,e,i,o,r,s,a){var l=this;return At(function*(){for(const d of e)try{return yield l.processSegmentAgainstRoute(d._injector??n,e,d,i,o,r,s,a)}catch(f){if(f instanceof Ns||yL(f))continue;throw f}if(function Hle(t,n,e){return 0===n.length&&!t.children[e]}(i,o,r))return new Ule;throw new Ns(i)})()}processSegmentAgainstRoute(n,e,i,o,r,s,a,l){var d=this;return At(function*(){if(Yr(i)!==s&&(s===Ye||!ub(o,r,i)))throw new Ns(o);if(void 0===i.redirectTo)return d.matchSegmentAgainstRoute(n,o,i,r,s,l);if(d.allowRedirects&&a)return d.expandSegmentAgainstRouteUsingRedirect(n,o,e,i,r,s,l);throw new Ns(o)})()}expandSegmentAgainstRouteUsingRedirect(n,e,i,o,r,s,a){var l=this;return At(function*(){const{matched:d,parameters:f,consumedSegments:m,positionalParamSegments:g,remainingSegments:b}=SL(e,o,r);if(!d)throw new Ns(e);"string"==typeof o.redirectTo&&"/"===o.redirectTo[0]&&(l.absoluteRedirectCount++,l.absoluteRedirectCount>31&&(l.allowRedirects=!1));const w=l.createSnapshot(n,o,r,f,a);if(l.abortSignal.aborted)throw new Error(l.abortSignal.reason);const M=yield l.applyRedirects.applyRedirectCommands(m,o.redirectTo,g,kL(w),n),E=yield l.applyRedirects.lineralizeSegments(o,M);return l.processSegment(n,i,e,E.concat(b),s,!1,a)})()}createSnapshot(n,e,i,o,r){const s=new qx(i,o,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,function qle(t){return t.data||{}}(e),Yr(e),e.component??e._loadedComponent??null,e,function Kle(t){return t.resolve||{}}(e),n),a=Gx(s,r,this.paramsInheritanceStrategy);return s.params=Object.freeze(a.params),s.data=Object.freeze(a.data),s}matchSegmentAgainstRoute(n,e,i,o,r,s){var a=this;return At(function*(){if(a.abortSignal.aborted)throw new Error(a.abortSignal.reason);const d=yield Y_(Fle(e,i,o,n,0,q=>a.createSnapshot(n,i,q.consumedSegments,q.parameters,s),a.abortSignal));if("**"===i.path&&(e.children={}),!d?.matched)throw new Ns(e);n=i._injector??n;const{routes:f}=yield a.getChildConfig(n,i,o),m=i._loadedInjector??n,{parameters:g,consumedSegments:b,remainingSegments:w}=d,M=a.createSnapshot(n,i,b,g,s),{segmentGroup:E,slicedSegments:I}=ML(e,b,w,f);if(0===I.length&&E.hasChildren()){const q=yield a.processChildren(m,f,E,M);return new xr(M,q)}if(0===f.length&&0===I.length)return new xr(M,[]);const A=Yr(i)===r,W=yield a.processSegment(m,f,E,I,A?Ye:r,!0,M);return new xr(M,W instanceof xr?[W]:[])})()}getChildConfig(n,e,i){var o=this;return At(function*(){if(e.children)return{routes:e.children,injector:n};if(e.loadChildren){if(void 0!==e._loadedRoutes){const s=e._loadedNgModuleFactory;return s&&!e._loadedInjector&&(e._loadedInjector=s.create(n).injector),{routes:e._loadedRoutes,injector:e._loadedInjector}}if(o.abortSignal.aborted)throw new Error(o.abortSignal.reason);if(yield Y_(function kle(t,n,e,i,o){const r=n.canLoad;return void 0===r||0===r.length?se(!0):se(r.map(a=>{const l=Qd(a,t),f=Ql(function dle(t){return t&&Af(t.canLoad)}(l)?l.canLoad(n,e):io(t,()=>l(n,e)));return o?f.pipe(wL(o)):f})).pipe(Jd(),xL())}(n,e,i,0,o.abortSignal))){const s=yield o.configLoader.loadChildren(n,e);return e._loadedRoutes=s.routes,e._loadedInjector=s.injector,e._loadedNgModuleFactory=s.factory,s}throw function Dle(){throw _L(!1,wo.GuardRejected)}()}return{routes:[],injector:n}})()}}function Gle(t){const n=t.value.routeConfig;return n&&""===n.path}function DL(t){const n=[],e=new Set;for(const i of t){if(!Gle(i)){n.push(i);continue}const o=n.find(r=>i.value.routeConfig===r.value.routeConfig);void 0!==o?(o.children.push(...i.children),e.add(o)):n.push(i)}for(const i of e){const o=DL(i.children);n.push(new xr(i.value,o))}return n.filter(i=>!e.has(i))}function TL(t){const n=t.children.map(e=>TL(e)).flat();return[t,...n]}function EL(t){return wt(n=>{const e=t(n);return e?Xn(e).pipe(De(()=>n)):se(n)})}let PL=(()=>{class t{buildTitle(e){let i,o=e.root;for(;void 0!==o;)i=this.getResolvedTitleForRoute(o)??i,o=o.children.find(r=>r.outlet===Ye);return i}getResolvedTitleForRoute(e){return e.data[wf]}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>T(ece),providedIn:"root"})}return t})(),ece=(()=>{class t extends PL{title;constructor(e){super(),this.title=e}updateTitle(e){const i=this.buildTitle(e);void 0!==i&&this.title.setTitle(i)}static \u0275fac=function(i){return new(i||t)(ce(iae))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const eu=new Z("",{factory:()=>({})}),hb=new Z("");let tk=(()=>{class t{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=T(fQ);loadComponent(e,i){var o=this;return At(function*(){if(o.componentLoaders.get(i))return o.componentLoaders.get(i);if(i._loadedComponent)return Promise.resolve(i._loadedComponent);o.onLoadStartListener&&o.onLoadStartListener(i);const r=At(function*(){try{const s=yield HN(io(e,()=>i.loadComponent())),a=yield OL(IL(s));return o.onLoadEndListener&&o.onLoadEndListener(i),i._loadedComponent=a,a}finally{o.componentLoaders.delete(i)}})();return o.componentLoaders.set(i,r),r})()}loadChildren(e,i){var o=this;if(this.childrenLoaders.get(i))return this.childrenLoaders.get(i);if(i._loadedRoutes)return Promise.resolve({routes:i._loadedRoutes,injector:i._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(i);const r=At(function*(){try{const s=yield function tce(t,n,e,i){return nk.apply(this,arguments)}(i,o.compiler,e,o.onLoadEndListener);return i._loadedRoutes=s.routes,i._loadedInjector=s.injector,i._loadedNgModuleFactory=s.factory,s}finally{o.childrenLoaders.delete(i)}})();return this.childrenLoaders.set(i,r),r}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function nk(){return(nk=At(function*(t,n,e,i){const o=yield HN(io(e,()=>t.loadChildren())),r=yield OL(IL(o));let s;s=r instanceof pI||Array.isArray(r)?r:yield n.compileModuleAsync(r),i&&i(t);let a,l,f;return Array.isArray(s)?l=s:(a=s.create(e).injector,f=s,l=a.get(hb,[],{optional:!0,self:!0}).flat()),{routes:l.map(Zx),injector:a,factory:f}})).apply(this,arguments)}function IL(t){return function nce(t){return t&&"object"==typeof t&&"default"in t}(t)?t.default:t}function OL(t){return ik.apply(this,arguments)}function ik(){return(ik=At(function*(t){return t})).apply(this,arguments)}let ok=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>T(ice),providedIn:"root"})}return t})(),ice=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,i){return e}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const AL=new Z(""),RL=new Z("");function oce(t,n,e){const i=t.get(RL),o=t.get(et);if(!o.startViewTransition||i.skipNextTransition)return i.skipNextTransition=!1,new Promise(d=>setTimeout(d));let r;const s=new Promise(d=>{r=d}),a=o.startViewTransition(()=>(r(),function rce(t){return new Promise(n=>{Wi({read:()=>setTimeout(n)},{injector:t})})}(t)));a.updateCallbackDone.catch(d=>{}),a.ready.catch(d=>{}),a.finished.catch(d=>{});const{onViewTransitionCreated:l}=i;return l&&io(t,()=>l({transition:a,from:n,to:e})),s}const sce=()=>{},FL=new Z("");let rk=(()=>{class t{currentNavigation=Ct(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=Ct(null);events=new be;transitionAbortWithErrorSubject=new be;configLoader=T(tk);environmentInjector=T(Wn);destroyRef=T(dr);urlSerializer=T(Yd);rootContexts=T(Ef);location=T(jd);inputBindingEnabled=null!==T(ab,{optional:!0});titleStrategy=T(PL);options=T(eu,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly";urlHandlingStrategy=T(ok);createViewTransition=T(AL,{optional:!0});navigationErrorHandler=T(FL,{optional:!0});navigationId=0;get hasRequestedNavigation(){return 0!==this.navigationId}transitions;afterPreactivation=()=>se(void 0);rootComponentType=null;destroyed=!1;constructor(){this.configLoader.onLoadEndListener=o=>this.events.next(new $ae(o)),this.configLoader.onLoadStartListener=o=>this.events.next(new jae(o)),this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(e){const i=++this.navigationId;it(()=>{this.transitions?.next({...e,extractedUrl:this.urlHandlingStrategy.extract(e.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:i,routesRecognizeHandler:{},beforeActivateHandler:{}})})}setupNavigations(e){return this.transitions=new Ei(null),this.transitions.pipe(Pn(i=>null!==i),wt(i=>{let o=!1;const r=new AbortController,s=()=>!o&&this.currentTransition?.id===i.id;return se(i).pipe(wt(a=>{if(this.navigationId>i.id)return this.cancelNavigationTransition(i,"",wo.SupersededByNewNavigation),Ni;this.currentTransition=i;const l=this.lastSuccessfulNavigation();this.currentNavigation.set({id:a.id,initialUrl:a.rawUrl,extractedUrl:a.extractedUrl,targetBrowserUrl:"string"==typeof a.extras.browserUrl?this.urlSerializer.parse(a.extras.browserUrl):a.extras.browserUrl,trigger:a.source,extras:a.extras,previousNavigation:l?{...l,previousNavigation:null}:null,abort:()=>r.abort(),routesRecognizeHandler:a.routesRecognizeHandler,beforeActivateHandler:a.beforeActivateHandler});const d=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl();if(!d&&"reload"!==(a.extras.onSameUrlNavigation??e.onSameUrlNavigation))return this.events.next(new Xd(a.id,this.urlSerializer.serialize(a.rawUrl),"",ob.IgnoredSameUrlNavigation)),a.resolve(!1),Ni;if(this.urlHandlingStrategy.shouldProcessUrl(a.rawUrl))return se(a).pipe(wt(m=>(this.events.next(new ib(m.id,this.urlSerializer.serialize(m.extractedUrl),m.source,m.restoredState)),m.id!==this.navigationId?Ni:Promise.resolve(m))),function Yle(t,n,e,i,o,r,s){return Tt(function(){var a=At(function*(l){const{state:d,tree:f}=yield function zle(t,n,e,i,o,r){return ek.apply(this,arguments)}(t,n,e,i,l.extractedUrl,o,r,s);return{...l,targetSnapshot:d,urlAfterRedirects:f}});return function(l){return a.apply(this,arguments)}}())}(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy,r.signal),ui(m=>{i.targetSnapshot=m.targetSnapshot,i.urlAfterRedirects=m.urlAfterRedirects,this.currentNavigation.update(g=>(g.finalUrl=m.urlAfterRedirects,g)),this.events.next(new aL)}),wt(m=>Xn(i.routesRecognizeHandler.deferredHandle??se(void 0)).pipe(De(()=>m))),ui(()=>{const m=new rL(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(m)}));if(d&&this.urlHandlingStrategy.shouldProcessUrl(a.currentRawUrl)){const{id:m,extractedUrl:g,source:b,restoredState:w,extras:M}=a,E=new ib(m,this.urlSerializer.serialize(g),b,w);this.events.next(E);const I=dL(this.rootComponentType,this.environmentInjector).snapshot;return this.currentTransition=i={...a,targetSnapshot:I,urlAfterRedirects:g,extras:{...M,skipLocationChange:!1,replaceUrl:!1}},this.currentNavigation.update(A=>(A.finalUrl=g,A)),se(i)}return this.events.next(new Xd(a.id,this.urlSerializer.serialize(a.extractedUrl),"",ob.IgnoredByUrlHandlingStrategy)),a.resolve(!1),Ni}),De(a=>{const l=new Vae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);return this.events.next(l),this.currentTransition=i={...a,guards:rle(a.targetSnapshot,a.currentSnapshot,this.rootContexts)},i}),function gle(t){return Tt(n=>{const{targetSnapshot:e,currentSnapshot:i,guards:{canActivateChecks:o,canDeactivateChecks:r}}=n;return 0===r.length&&0===o.length?se({...n,guardsResult:!0}):function _le(t,n,e){return Xn(t).pipe(Tt(i=>function xle(t,n,e,i){const o=n&&n.routeConfig?n.routeConfig.canDeactivate:null;return o&&0!==o.length?se(o.map(s=>{const a=n._environmentInjector,l=Qd(s,a);return Ql(function fle(t){return t&&Af(t.canDeactivate)}(l)?l.canDeactivate(t,n,e,i):io(a,()=>l(t,n,e,i))).pipe(Wr())})).pipe(Jd()):se(!0)}(i.component,i.route,e,n)),Wr(i=>!0!==i,!0))}(r,e,i).pipe(Tt(s=>s&&function cle(t){return"boolean"==typeof t}(s)?function ble(t,n,e){return Xn(n).pipe(mf(i=>Fs(function yle(t,n){return null!==t&&n&&n(new Wae(t)),se(!0)}(i.route.parent,e),function vle(t,n){return null!==t&&n&&n(new qae(t)),se(!0)}(i.route,e),function wle(t,n){const e=n[n.length-1],o=n.slice(0,n.length-1).reverse().map(r=>function sle(t){const n=t.routeConfig?t.routeConfig.canActivateChild:null;return n&&0!==n.length?{node:t,guards:n}:null}(r)).filter(r=>null!==r).map(r=>Sa(()=>se(r.guards.map(a=>{const l=r.node._environmentInjector,d=Qd(a,l);return Ql(function hle(t){return t&&Af(t.canActivateChild)}(d)?d.canActivateChild(e,t):io(l,()=>d(e,t))).pipe(Wr())})).pipe(Jd())));return se(o).pipe(Jd())}(t,i.path),function Cle(t,n){const e=n.routeConfig?n.routeConfig.canActivate:null;if(!e||0===e.length)return se(!0);const i=e.map(o=>Sa(()=>{const r=n._environmentInjector,s=Qd(o,r);return Ql(function ule(t){return t&&Af(t.canActivate)}(s)?s.canActivate(n,t):io(r,()=>s(n,t))).pipe(Wr())}));return se(i).pipe(Jd())}(t,i.route))),Wr(i=>!0!==i,!0))}(e,o,t):se(s)),De(s=>({...n,guardsResult:s})))})}(a=>this.events.next(a)),wt(a=>{if(i.guardsResult=a.guardsResult,a.guardsResult&&"boolean"!=typeof a.guardsResult)throw lb(0,a.guardsResult);const l=new Hae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot,!!a.guardsResult);if(this.events.next(l),!s())return Ni;if(!a.guardsResult)return this.cancelNavigationTransition(a,"",wo.GuardRejected),Ni;if(0===a.guards.canActivateChecks.length)return se(a);const d=new Uae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);if(this.events.next(d),!s())return Ni;let f=!1;return se(a).pipe(function Xle(t){return Tt(n=>{const{targetSnapshot:e,guards:{canActivateChecks:i}}=n;if(!i.length)return se(n);const o=new Set(i.map(a=>a.route)),r=new Set;for(const a of o)if(!r.has(a))for(const l of TL(a))r.add(l);let s=0;return Xn(r).pipe(mf(a=>o.has(a)?function Zle(t,n,e){const i=t.routeConfig,o=t._resolve;return void 0!==i?.title&&!fL(i)&&(o[wf]=i.title),Sa(()=>(t.data=Gx(t,t.parent,e).resolve,function Qle(t,n,e){const i=Nx(t);if(0===i.length)return se({});const o={};return Xn(i).pipe(Tt(r=>function Jle(t,n,e){const i=n._environmentInjector,o=Qd(t,i);return Ql(o.resolve?o.resolve(n,e):io(i,()=>o(n,e)))}(t[r],n,e).pipe(Wr(),ui(s=>{if(s instanceof Qx)throw lb(new kf,s);o[r]=s}))),AN(1),De(()=>o),ii(r=>yL(r)?Ni:Cr(r)))}(o,t,n).pipe(De(r=>(t._resolvedData=r,t.data={...t.data,...r},null)))))}(a,e,t):(a.data=Gx(a,a.parent,t).resolve,se(void 0))),ui(()=>s++),AN(1),Tt(a=>s===r.size?se(n):Ni))})}(this.paramsInheritanceStrategy),ui({next:()=>{f=!0;const m=new zae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(m)},complete:()=>{f||this.cancelNavigationTransition(a,"",wo.NoDataFromResolver)}}))}),EL(a=>{const l=f=>{const m=[];f.routeConfig?._loadedComponent?f.component=f.routeConfig?._loadedComponent:f.routeConfig?.loadComponent&&m.push(this.configLoader.loadComponent(f._environmentInjector,f.routeConfig).then(b=>{f.component=b}));for(const g of f.children)m.push(...l(g));return m},d=l(a.targetSnapshot.root);return 0===d.length?se(a):Xn(Promise.all(d).then(()=>a))}),EL(()=>this.afterPreactivation()),wt(()=>{const{currentSnapshot:a,targetSnapshot:l}=i,d=this.createViewTransition?.(this.environmentInjector,a.root,l.root);return d?Xn(d).pipe(De(()=>i)):se(i)}),wn(1),wt(a=>{const l=function ele(t,n,e){const i=Pf(t,n._root,e?e._root:void 0);return new cL(i,n)}(e.routeReuseStrategy,a.targetSnapshot,a.currentRouterState);this.currentTransition=i=a={...a,targetRouterState:l},this.currentNavigation.update(f=>(f.targetRouterState=l,f)),this.events.next(new jx);const d=i.beforeActivateHandler.deferredHandle;return d?Xn(d.then(()=>a)):se(a)}),ui(a=>{new ole(e.routeReuseStrategy,i.targetRouterState,i.currentRouterState,l=>this.events.next(l),this.inputBindingEnabled).activate(this.rootContexts),s()&&(o=!0,this.currentNavigation.update(l=>(l.abort=sce,l)),this.lastSuccessfulNavigation.set(it(this.currentNavigation)),this.events.next(new Kr(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects))),this.titleStrategy?.updateTitle(a.targetRouterState.snapshot),a.resolve(!0))}),ln(CL(r.signal).pipe(Pn(()=>!o&&!i.targetRouterState),ui(()=>{this.cancelNavigationTransition(i,r.signal.reason+"",wo.Aborted)}))),ui({complete:()=>{o=!0}}),ln(this.transitionAbortWithErrorSubject.pipe(ui(a=>{throw a}))),j_(()=>{r.abort(),o||this.cancelNavigationTransition(i,"",wo.SupersededByNewNavigation),this.currentTransition?.id===i.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),ii(a=>{if(o=!0,this.destroyed)return i.resolve(!1),Ni;if(bL(a))this.events.next(new Da(i.id,this.urlSerializer.serialize(i.extractedUrl),a.message,a.cancellationCode)),function ile(t){return bL(t)&&ec(t.url)}(a)?this.events.next(new rb(a.url,a.navigationBehaviorOptions)):i.resolve(!1);else{const l=new zx(i.id,this.urlSerializer.serialize(i.extractedUrl),a,i.targetSnapshot??void 0);try{const d=io(this.environmentInjector,()=>this.navigationErrorHandler?.(l));if(!(d instanceof Qx))throw this.events.next(l),a;{const{message:f,cancellationCode:m}=lb(0,d);this.events.next(new Da(i.id,this.urlSerializer.serialize(i.extractedUrl),f,m)),this.events.next(new rb(d.redirectTo,d.navigationBehaviorOptions))}}catch(d){this.options.resolveNavigationPromiseOnError?i.resolve(!1):i.reject(d)}}return Ni}))}))}cancelNavigationTransition(e,i,o){const r=new Da(e.id,this.urlSerializer.serialize(e.extractedUrl),i,o);this.events.next(r),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){const e=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),i=it(this.currentNavigation),o=i?.targetBrowserUrl??i?.extractedUrl;return e.toString()!==o?.toString()&&!i?.extras.skipLocationChange}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function ace(t){return t!==Tf}const lce=new Z("");let LL=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>T(dce),providedIn:"root"})}return t})();class cce{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}shouldDestroyInjector(n){return!0}}let dce=(()=>{class t extends cce{static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),ak=(()=>{class t{urlSerializer=T(Yd);options=T(eu,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||"replace";location=T(jd);urlHandlingStrategy=T(ok);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";currentUrlTree=new wr;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:e,initialUrl:i,targetBrowserUrl:o}){const r=void 0!==e?this.urlHandlingStrategy.merge(e,i):i,s=o??r;return s instanceof wr?this.urlSerializer.serialize(s):s}commitTransition({targetRouterState:e,finalUrl:i,initialUrl:o}){i&&e?(this.currentUrlTree=i,this.rawUrlTree=this.urlHandlingStrategy.merge(i,o),this.routerState=e):this.rawUrlTree=o}routerState=dL(null,T(Wn));getRouterState(){return this.routerState}_stateMemento=this.createStateMemento();get stateMemento(){return this._stateMemento}updateStateMemento(){this._stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}restoredState(){return this.location.getState()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>T(uce),providedIn:"root"})}return t})(),uce=(()=>{class t extends ak{currentPageId=0;lastSuccessfulId=-1;get browserPageId(){return"computed"!==this.canceledNavigationResolution?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(i=>{"popstate"===i.type&&setTimeout(()=>{e(i.url,i.state,"popstate",{replaceUrl:!0})})})}handleRouterEvent(e,i){e instanceof ib?this.updateStateMemento():e instanceof Xd?this.commitTransition(i):e instanceof rL?"eager"===this.urlUpdateStrategy&&(i.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(i),i)):e instanceof jx?(this.commitTransition(i),"deferred"===this.urlUpdateStrategy&&!i.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(i),i)):e instanceof Da&&!function Bae(t){return t instanceof Da&&(t.code===wo.Redirect||t.code===wo.SupersededByNewNavigation)}(e)?this.restoreHistory(i):e instanceof zx?this.restoreHistory(i,!0):e instanceof Kr&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,{extras:i,id:o}){const{replaceUrl:r,state:s}=i;if(this.location.isCurrentPathEqualTo(e)||r){const a=this.browserPageId,l={...s,...this.generateNgRouterState(o,a)};this.location.replaceState(e,"",l)}else{const a={...s,...this.generateNgRouterState(o,this.browserPageId+1)};this.location.go(e,"",a)}}restoreHistory(e,i=!1){if("computed"===this.canceledNavigationResolution){const r=this.currentPageId-this.browserPageId;0!==r?this.location.historyGo(r):this.getCurrentUrlTree()===e.finalUrl&&0===r&&(this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}else"replace"===this.canceledNavigationResolution&&(i&&this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}resetInternalState({finalUrl:e}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,i){return"computed"===this.canceledNavigationResolution?{navigationId:e,\u0275routerPageId:i}:{navigationId:e}}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function BL(t,n){t.events.pipe(Pn(e=>e instanceof Kr||e instanceof Da||e instanceof zx||e instanceof Xd),De(e=>e instanceof Kr||e instanceof Xd?0:e instanceof Da&&(e.code===wo.Redirect||e.code===wo.SupersededByNewNavigation)?2:1),Pn(e=>2!==e),wn(1)).subscribe(()=>{n()})}let yt=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=T(VI);stateManager=T(ak);options=T(eu,{optional:!0})||{};pendingTasks=T(ta);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";navigationTransitions=T(rk);urlSerializer=T(Yd);location=T(jd);urlHandlingStrategy=T(ok);injector=T(Wn);_events=new be;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=T(LL);injectorCleanup=T(lce,{optional:!0});onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore";config=T(hb,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!T(ab,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:e=>{}}),this.subscribeToNavigationEvents()}eventsSubscription=new gt;subscribeToNavigationEvents(){const e=this.navigationTransitions.events.subscribe(i=>{try{const o=this.navigationTransitions.currentTransition,r=it(this.navigationTransitions.currentNavigation);if(null!==o&&null!==r)if(this.stateManager.handleRouterEvent(i,r),i instanceof Da&&i.code!==wo.Redirect&&i.code!==wo.SupersededByNewNavigation)this.navigated=!0;else if(i instanceof Kr)this.navigated=!0,this.injectorCleanup?.(this.routeReuseStrategy,this.routerState,this.config);else if(i instanceof rb){const s=i.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(i.url,o.currentRawUrl),l={scroll:o.extras.scroll,browserUrl:o.extras.browserUrl,info:o.extras.info,skipLocationChange:o.extras.skipLocationChange,replaceUrl:o.extras.replaceUrl||"eager"===this.urlUpdateStrategy||ace(o.source),...s};this.scheduleNavigation(a,Tf,null,l,{resolve:o.resolve,reject:o.reject,promise:o.promise})}(function Yae(t){return!(t instanceof jx||t instanceof rb||t instanceof aL)})(i)&&this._events.next(i)}catch(o){this.navigationTransitions.transitionAbortWithErrorSubject.next(o)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),Tf,this.stateManager.restoredState(),{replaceUrl:!0})}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,i,o,r)=>{this.navigateToSyncWithBrowser(e,o,i,r)})}navigateToSyncWithBrowser(e,i,o,r){const s=o?.navigationId?o:null;if(o){const l={...o};delete l.navigationId,delete l.\u0275routerPageId,0!==Object.keys(l).length&&(r.state=l)}const a=this.parseUrl(e);this.scheduleNavigation(a,i,s,r).catch(l=>{this.disposed||this.injector.get(Nr)(l)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return it(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(Zx),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription?.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0,this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,i={}){const{relativeTo:o,queryParams:r,fragment:s,queryParamsHandling:a,preserveFragment:l}=i,d=l?this.currentUrlTree.fragment:s;let m,f=null;switch(a??this.options.defaultQueryParamsHandling){case"merge":f={...this.currentUrlTree.queryParams,...r};break;case"preserve":f=this.currentUrlTree.queryParams;break;default:f=r||null}null!==f&&(f=this.removeEmptyProps(f));try{m=ZN(o?o.snapshot:this.routerState.snapshot.root)}catch{("string"!=typeof e[0]||"/"!==e[0][0])&&(e=[]),m=this.currentUrlTree.root}return QN(m,e,f,d??null,this.urlSerializer)}navigateByUrl(e,i={skipLocationChange:!1}){const o=ec(e)?e:this.parseUrl(e),r=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(r,Tf,null,i)}navigate(e,i={skipLocationChange:!1}){return function hce(t){for(let n=0;n(null!=r&&(i[o]=r),i),{})}scheduleNavigation(e,i,o,r,s){if(this.disposed)return Promise.resolve(!1);let a,l,d;s?(a=s.resolve,l=s.reject,d=s.promise):d=new Promise((m,g)=>{a=m,l=g});const f=this.pendingTasks.add();return BL(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(f))}),this.navigationTransitions.handleNavigationRequest({source:i,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:r,resolve:a,reject:l,promise:d,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),d.catch(Promise.reject.bind(Promise))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class fce extends gt{constructor(n,e){super()}schedule(n,e=0){return this}}const fb={setInterval(t,n,...e){const{delegate:i}=fb;return i?.setInterval?i.setInterval(t,n,...e):setInterval(t,n,...e)},clearInterval(t){const{delegate:n}=fb;return(n?.clearInterval||clearInterval)(t)},delegate:void 0};class lk extends fce{constructor(n,e){super(n,e),this.scheduler=n,this.work=e,this.pending=!1}schedule(n,e=0){var i;if(this.closed)return this;this.state=n;const o=this.id,r=this.scheduler;return null!=o&&(this.id=this.recycleAsyncId(r,o,e)),this.pending=!0,this.delay=e,this.id=null!==(i=this.id)&&void 0!==i?i:this.requestAsyncId(r,this.id,e),this}requestAsyncId(n,e,i=0){return fb.setInterval(n.flush.bind(n,this),i)}recycleAsyncId(n,e,i=0){if(null!=i&&this.delay===i&&!1===this.pending)return e;null!=e&&fb.clearInterval(e)}execute(n,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const i=this._execute(n,e);if(i)return i;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(n,e){let o,i=!1;try{this.work(n)}catch(r){i=!0,o=r||new Error("Scheduled action threw falsy error")}if(i)return this.unsubscribe(),o}unsubscribe(){if(!this.closed){const{id:n,scheduler:e}=this,{actions:i}=e;this.work=this.state=this.scheduler=null,this.pending=!1,Hp(i,this),null!=n&&(this.id=this.recycleAsyncId(e,n,null)),this.delay=null,super.unsubscribe()}}}const ck={now:()=>(ck.delegate||Date).now(),delegate:void 0};class Ff{constructor(n,e=Ff.now){this.schedulerActionCtor=n,this.now=e}schedule(n,e=0,i){return new this.schedulerActionCtor(this,n).schedule(i,e)}}Ff.now=ck.now;class dk extends Ff{constructor(n,e=Ff.now){super(n,e),this.actions=[],this._active=!1}flush(n){const{actions:e}=this;if(this._active)return void e.push(n);let i;this._active=!0;do{if(i=n.execute(n.state,n.delay))break}while(n=e.shift());if(this._active=!1,i){for(;n=e.shift();)n.unsubscribe();throw i}}}const Nf=new dk(lk),pce=Nf;function VL(t,n){return n?e=>Fs(n.pipe(wn(1),function mce(){return En((t,n)=>{t.subscribe(pn(n,zp))})}()),e.pipe(VL(t))):Tt((e,i)=>qi(t(e,i)).pipe(wn(1),function gce(t){return De(()=>t)}(e)))}function Ls(t=0,n,e=pce){let i=-1;return null!=n&&(cN(n)?e=n:i=n),new zt(o=>{let r=function _ce(t){return t instanceof Date&&!isNaN(t)}(t)?+t-e.now():t;r<0&&(r=0);let s=0;return e.schedule(function(){o.closed||(o.next(s++),0<=i?this.schedule(void 0,i):o.complete())},r)})}function oi(t,n=Nf){const e=Ls(t,n);return VL(()=>e)}var pb=function(t){return t.NoConnection="NoConnection",t.Unknown="Unknown",t}(pb||{});class bce{}const HL="common.operation-error";function Ze(t){if(t&&t.type&&!t.srcElement)return t;const n=new bce;if(n.originalError=t,!t||"string"==typeof t)return n.originalServerErrorMsg=t||"",n.translatableErrorMsg=t||HL,n.type=pb.Unknown,n;n.originalServerErrorMsg=function yce(t){if(t){if("string"==typeof t._body)return t._body;if(t.originalServerErrorMsg&&"string"==typeof t.originalServerErrorMsg)return t.originalServerErrorMsg;if(t.error&&"string"==typeof t.error)return t.error;if(t.error&&t.error.error&&t.error.error.message)return t.error.error.message;if(t.error&&t.error.error&&"string"==typeof t.error.error)return t.error.error;if(t.message)return t.message;if(t._body&&t._body.error)return t._body.error;try{return JSON.parse(t._body).error}catch{}}return null}(t);return null!=t.status&&(0===t.status||504===t.status)&&(n.type=pb.NoConnection,n.translatableErrorMsg="common.no-connection-error"),n.type||(n.type=pb.Unknown,n.translatableErrorMsg=n.originalServerErrorMsg?function vce(t){if(!t||0===t.length)return t;if(-1!==t.indexOf('"error":'))try{t=JSON.parse(t).error}catch{}if(t.startsWith("400")||t.startsWith("403")){const e=t.split(" - ",2);t=2===e.length?e[1]:t}const n=(t=t.trim()).substr(0,1);return n.toUpperCase()!==n&&(t=n.toUpperCase()+t.substr(1,t.length-1)),!t.endsWith(".")&&!t.endsWith(",")&&!t.endsWith(":")&&!t.endsWith(";")&&!t.endsWith("?")&&!t.endsWith("!")&&(t+="."),t}(n.originalServerErrorMsg):HL),n}class co extends be{constructor(n=1/0,e=1/0,i=ck){super(),this._bufferSize=n,this._windowTime=e,this._timestampProvider=i,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=e===1/0,this._bufferSize=Math.max(1,n),this._windowTime=Math.max(1,e)}next(n){const{isStopped:e,_buffer:i,_infiniteTimeWindow:o,_timestampProvider:r,_windowTime:s}=this;e||(i.push(n),!o&&i.push(r.now()+s)),this._trimBuffer(),super.next(n)}_subscribe(n){this._throwIfClosed(),this._trimBuffer();const e=this._innerSubscribe(n),{_infiniteTimeWindow:i,_buffer:o}=this,r=o.slice();for(let s=0;s{class t{constructor(){this.currentRefreshTimeSubject=new co(1),this.savedLocalNodes=new Map,this.savedLabels=new Map,this.savedVisibleLocalNodes=new Set}initialize(e){this.storage=localStorage,this.hypervisorPk=e,this.migrateDataToHvStorage(),this.currentRefreshTime=parseInt(this.getDataForHv(mb),10)||10,this.currentRefreshTimeSubject.next(this.currentRefreshTime),this.getSavedLocalNodes().forEach(r=>{this.savedLocalNodes.set(r.publicKey,r),r.hidden||this.savedVisibleLocalNodes.add(r.publicKey)}),this.getSavedLabels().forEach(r=>this.savedLabels.set(r.id,r)),this.loadLegacyNodeData();const i=[];this.savedLocalNodes.forEach(r=>i.push(r));const o=[];this.savedLabels.forEach(r=>o.push(r)),this.saveLocalNodes(i),this.saveLabels(o)}getDataForHv(e){return this.storage.getItem(this.hypervisorPk+e)}setDataForHv(e,i){return this.storage.setItem(this.hypervisorPk+e,i)}migrateDataToHvStorage(){const e=this.storage.getItem(mb);if(e){const r=parseInt(e,10)||10;this.setRefreshTime(r),this.storage.removeItem(mb)}const i=this.storage.getItem(_b);if(i){const r=JSON.parse(i)||[];this.saveLocalNodes(r),this.storage.removeItem(_b)}const o=this.storage.getItem(gb);if(o){const r=JSON.parse(o)||[];this.saveLabels(r),this.storage.removeItem(gb)}}loadLegacyNodeData(){const e=JSON.parse(this.storage.getItem(UL))||[];if(e.length>0){const i=this.getSavedLocalNodes(),o=this.getSavedLabels();e.forEach(r=>{i.push({publicKey:r.publicKey,hidden:r.deleted,ip:null}),this.savedLocalNodes.set(r.publicKey,i[i.length-1]),r.deleted||this.savedVisibleLocalNodes.add(r.publicKey),o.push({id:r.publicKey,identifiedElementType:uo.Node,label:r.label}),this.savedLabels.set(r.publicKey,o[o.length-1])}),this.saveLocalNodes(i),this.saveLabels(o),this.storage.removeItem(UL)}}setRefreshTime(e){this.setDataForHv(mb,e.toString()),this.currentRefreshTime=e,this.currentRefreshTimeSubject.next(this.currentRefreshTime)}getRefreshTimeObservable(){return this.currentRefreshTimeSubject.asObservable()}getRefreshTime(){return this.currentRefreshTime}includeVisibleLocalNodes(e,i){this.changeLocalNodesHiddenProperty(e,i,!1)}setLocalNodesAsHidden(e,i){this.changeLocalNodesHiddenProperty(e,i,!0)}changeLocalNodesHiddenProperty(e,i,o){if(e.length!==i.length)throw new Error("Invalid params");const r=new Map,s=new Map;e.forEach((d,f)=>{r.set(d,i[f]),s.set(d,i[f])});let a=!1;const l=this.getSavedLocalNodes();l.forEach(d=>{r.has(d.publicKey)&&(s.has(d.publicKey)&&s.delete(d.publicKey),d.ip!==r.get(d.publicKey)&&(d.ip=r.get(d.publicKey),a=!0,this.savedLocalNodes.set(d.publicKey,d)),d.hidden!==o&&(d.hidden=o,a=!0,this.savedLocalNodes.set(d.publicKey,d),o?this.savedVisibleLocalNodes.delete(d.publicKey):this.savedVisibleLocalNodes.add(d.publicKey)))}),s.forEach((d,f)=>{a=!0;const m={publicKey:f,hidden:o,ip:d};l.push(m),this.savedLocalNodes.set(f,m),o?this.savedVisibleLocalNodes.delete(f):this.savedVisibleLocalNodes.add(f)}),a&&this.saveLocalNodes(l)}getSavedLocalNodes(){return JSON.parse(this.getDataForHv(_b))||[]}getSavedVisibleLocalNodes(){return this.savedVisibleLocalNodes}saveLocalNodes(e){this.setDataForHv(_b,JSON.stringify(e))}getSavedLabels(){return JSON.parse(this.getDataForHv(gb))||[]}saveLabels(e){this.setDataForHv(gb,JSON.stringify(e))}saveLabel(e,i,o){if(i){let r=!1;const s=this.getSavedLabels().map(a=>(a.id===e&&a.identifiedElementType===o&&(r=!0,a.label=i,this.savedLabels.set(a.id,{label:a.label,id:a.id,identifiedElementType:a.identifiedElementType})),a));if(r)this.saveLabels(s);else{const a={label:i,id:e,identifiedElementType:o};s.push(a),this.savedLabels.set(e,a),this.saveLabels(s)}}else{this.savedLabels.has(e)&&this.savedLabels.delete(e);let r=!1;const s=this.getSavedLabels().filter(a=>a.id!==e||(r=!0,!1));r&&this.saveLabels(s)}}getDefaultLabel(e){return e?e.ip?e.ip:e.localPk:""}getLabelInfo(e){return this.savedLabels.has(e)?this.savedLabels.get(e):null}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const uk={};class si{_appId=T(ra);static _infix=`a${Math.floor(1e5*Math.random()).toString()}`;getId(n,e=!1){return"ng"!==this._appId&&(n+=this._appId),uk.hasOwnProperty(n)||(uk[n]=0),`${n}${e?si._infix+"-":""}${uk[n]++}`}static \u0275fac=function(e){return new(e||si)};static \u0275prov=te({token:si,factory:si.\u0275fac,providedIn:"root"})}const Lf={schedule(t){let n=requestAnimationFrame,e=cancelAnimationFrame;const{delegate:i}=Lf;i&&(n=i.requestAnimationFrame,e=i.cancelAnimationFrame);const o=n(r=>{e=void 0,t(r)});return new gt(()=>e?.(o))},requestAnimationFrame(...t){const{delegate:n}=Lf;return(n?.requestAnimationFrame||requestAnimationFrame)(...t)},cancelAnimationFrame(...t){const{delegate:n}=Lf;return(n?.cancelAnimationFrame||cancelAnimationFrame)(...t)},delegate:void 0};new class wce extends dk{flush(n){let e;this._active=!0,n?e=n.id:(e=this._scheduled,this._scheduled=void 0);const{actions:i}=this;let o;n=n||i.shift();do{if(o=n.execute(n.state,n.delay))break}while((n=i[0])&&n.id===e&&i.shift());if(this._active=!1,o){for(;(n=i[0])&&n.id===e&&i.shift();)n.unsubscribe();throw o}}}(class Cce extends lk{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}requestAsyncId(n,e,i=0){return null!==i&&i>0?super.requestAsyncId(n,e,i):(n.actions.push(this),n._scheduled||(n._scheduled=Lf.requestAnimationFrame(()=>n.flush(void 0))))}recycleAsyncId(n,e,i=0){var o;if(null!=i?i>0:this.delay>0)return super.recycleAsyncId(n,e,i);const{actions:r}=n;null!=e&&e===n._scheduled&&(null===(o=r[r.length-1])||void 0===o?void 0:o.id)!==e&&(Lf.cancelAnimationFrame(e),n._scheduled=void 0)}});let hk,kce=1;const bb={};function zL(t){return t in bb&&(delete bb[t],!0)}const Sce={setImmediate(t){const n=kce++;return bb[n]=!0,hk||(hk=Promise.resolve()),hk.then(()=>zL(n)&&t()),n},clearImmediate(t){zL(t)}},{setImmediate:Mce,clearImmediate:Dce}=Sce,vb={setImmediate(...t){const{delegate:n}=vb;return(n?.setImmediate||Mce)(...t)},clearImmediate(t){const{delegate:n}=vb;return(n?.clearImmediate||Dce)(t)},delegate:void 0};new class Ece extends dk{flush(n){this._active=!0;const e=this._scheduled;this._scheduled=void 0;const{actions:i}=this;let o;n=n||i.shift();do{if(o=n.execute(n.state,n.delay))break}while((n=i[0])&&n.id===e&&i.shift());if(this._active=!1,o){for(;(n=i[0])&&n.id===e&&i.shift();)n.unsubscribe();throw o}}}(class Tce extends lk{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}requestAsyncId(n,e,i=0){return null!==i&&i>0?super.requestAsyncId(n,e,i):(n.actions.push(this),n._scheduled||(n._scheduled=vb.setImmediate(n.flush.bind(n,void 0))))}recycleAsyncId(n,e,i=0){var o;if(null!=i?i>0:this.delay>0)return super.recycleAsyncId(n,e,i);const{actions:r}=n;null!=e&&(null===(o=r[r.length-1])||void 0===o?void 0:o.id)!==e&&(vb.clearImmediate(e),n._scheduled===e&&(n._scheduled=void 0))}});function jL(t,n=Nf){return function Ice(t){return En((n,e)=>{let i=!1,o=null,r=null,s=!1;const a=()=>{if(r?.unsubscribe(),r=null,i){i=!1;const d=o;o=null,e.next(d)}s&&e.complete()},l=()=>{r=null,s&&e.complete()};n.subscribe(pn(e,d=>{i=!0,o=d,r||qi(t(d)).subscribe(r=pn(e,a,l))},()=>{s=!0,(!i||!r||r.closed)&&e.complete()}))})}(()=>Ls(t,n))}function Bf(t,n=0){return function Oce(t){return!isNaN(parseFloat(t))&&!isNaN(Number(t))}(t)?Number(t):2===arguments.length?n:0}function Bs(t){return t instanceof Ne?t.nativeElement:t}let fk;try{fk=typeof Intl<"u"&&Intl.v8BreakIterator}catch{fk=!1}let Zn=(()=>{class t{_platformId=T(T1);isBrowser=this._platformId?function I7(t){return t===iT}(this._platformId):"object"==typeof document&&!!document;EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent);TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent);BLINK=this.isBrowser&&!(!window.chrome&&!fk)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT;WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT;IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window);FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent);ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT;SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT;constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Ace=new Z("cdk-dir-doc",{providedIn:"root",factory:()=>T(et)}),Rce=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let kr=(()=>{class t{get value(){return this.valueSignal()}valueSignal=Ct("ltr");change=new ke;constructor(){const e=T(Ace,{optional:!0});e&&this.valueSignal.set(function Fce(t){const n=t?.toLowerCase()||"";return"auto"===n&&typeof navigator<"u"&&navigator?.language?Rce.test(navigator.language)?"rtl":"ltr":"rtl"===n?"rtl":"ltr"}((e.body?e.body.dir:null)||(e.documentElement?e.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Xr=function(t){return t[t.NORMAL=0]="NORMAL",t[t.NEGATED=1]="NEGATED",t[t.INVERTED=2]="INVERTED",t}(Xr||{});let yb,tc;function $L(){if(null==tc){if("object"!=typeof document||!document||"function"!=typeof Element||!Element)return tc=!1,tc;if(document.documentElement?.style&&"scrollBehavior"in document.documentElement.style)tc=!0;else{const t=Element.prototype.scrollTo;tc=!!t&&!/\{\s*\[native code\]\s*\}/.test(t.toString())}}return tc}function Vf(){if("object"!=typeof document||!document)return Xr.NORMAL;if(null==yb){const t=document.createElement("div"),n=t.style;t.dir="rtl",n.width="1px",n.overflow="auto",n.visibility="hidden",n.pointerEvents="none",n.position="absolute";const e=document.createElement("div"),i=e.style;i.width="2px",i.height="1px",t.appendChild(e),document.body.appendChild(t),yb=Xr.NORMAL,0===t.scrollLeft&&(t.scrollLeft=1,yb=0===t.scrollLeft?Xr.NEGATED:Xr.INVERTED),t.remove()}return yb}let pk,ai=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})(),Cb=(()=>{class t{_ngZone=T(Ce);_platform=T(Zn);_renderer=T(Uo).createRenderer(null,null);_cleanupGlobalListener;constructor(){}_scrolled=new be;_scrolledCount=0;scrollContainers=new Map;register(e){this.scrollContainers.has(e)||this.scrollContainers.set(e,e.elementScrolled().subscribe(()=>this._scrolled.next(e)))}deregister(e){const i=this.scrollContainers.get(e);i&&(i.unsubscribe(),this.scrollContainers.delete(e))}scrolled(e=20){return this._platform.isBrowser?new zt(i=>{this._cleanupGlobalListener||(this._cleanupGlobalListener=this._ngZone.runOutsideAngular(()=>this._renderer.listen("document","scroll",()=>this._scrolled.next())));const o=e>0?this._scrolled.pipe(jL(e)).subscribe(i):this._scrolled.subscribe(i);return this._scrolledCount++,()=>{o.unsubscribe(),this._scrolledCount--,this._scrolledCount||(this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0)}}):se()}ngOnDestroy(){this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0,this.scrollContainers.forEach((e,i)=>this.deregister(i)),this._scrolled.complete()}ancestorScrolled(e,i){const o=this.getAncestorScrollContainers(e);return this.scrolled(i).pipe(Pn(r=>!r||o.indexOf(r)>-1))}getAncestorScrollContainers(e){const i=[];return this.scrollContainers.forEach((o,r)=>{this._scrollableContainsElement(r,e)&&i.push(r)}),i}_scrollableContainsElement(e,i){let o=Bs(i),r=e.getElementRef().nativeElement;do{if(o==r)return!0}while(o=o.parentElement);return!1}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),WL=(()=>{class t{elementRef=T(Ne);scrollDispatcher=T(Cb);ngZone=T(Ce);dir=T(kr,{optional:!0});_scrollElement=this.elementRef.nativeElement;_destroyed=new be;_renderer=T(ei);_cleanupScroll;_elementScrolled=new be;constructor(){}ngOnInit(){this._cleanupScroll=this.ngZone.runOutsideAngular(()=>this._renderer.listen(this._scrollElement,"scroll",e=>this._elementScrolled.next(e))),this.scrollDispatcher.register(this)}ngOnDestroy(){this._cleanupScroll?.(),this._elementScrolled.complete(),this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(e){const i=this.elementRef.nativeElement,o=this.dir&&"rtl"==this.dir.value;null==e.left&&(e.left=o?e.end:e.start),null==e.right&&(e.right=o?e.start:e.end),null!=e.bottom&&(e.top=i.scrollHeight-i.clientHeight-e.bottom),o&&Vf()!=Xr.NORMAL?(null!=e.left&&(e.right=i.scrollWidth-i.clientWidth-e.left),Vf()==Xr.INVERTED?e.left=e.right:Vf()==Xr.NEGATED&&(e.left=e.right?-e.right:e.right)):null!=e.right&&(e.left=i.scrollWidth-i.clientWidth-e.right),this._applyScrollToOptions(e)}_applyScrollToOptions(e){const i=this.elementRef.nativeElement;$L()?i.scrollTo(e):(null!=e.top&&(i.scrollTop=e.top),null!=e.left&&(i.scrollLeft=e.left))}measureScrollOffset(e){const i="left",o="right",r=this.elementRef.nativeElement;if("top"==e)return r.scrollTop;if("bottom"==e)return r.scrollHeight-r.clientHeight-r.scrollTop;const s=this.dir&&"rtl"==this.dir.value;return"start"==e?e=s?o:i:"end"==e&&(e=s?i:o),s&&Vf()==Xr.INVERTED?e==i?r.scrollWidth-r.clientWidth-r.scrollLeft:r.scrollLeft:s&&Vf()==Xr.NEGATED?e==i?r.scrollLeft+r.scrollWidth-r.clientWidth:-r.scrollLeft:e==i?r.scrollLeft:r.scrollWidth-r.clientWidth-r.scrollLeft}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]]})}return t})(),tu=(()=>{class t{_platform=T(Zn);_listeners;_viewportSize=null;_change=new be;_document=T(et);constructor(){const e=T(Ce),i=T(Uo).createRenderer(null,null);e.runOutsideAngular(()=>{if(this._platform.isBrowser){const o=r=>this._change.next(r);this._listeners=[i.listen("window","resize",o),i.listen("window","orientationchange",o)]}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){this._listeners?.forEach(e=>e()),this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const e={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),e}getViewportRect(){const e=this.getViewportScrollPosition(),{width:i,height:o}=this.getViewportSize();return{top:e.top,left:e.left,bottom:e.top+o,right:e.left+i,height:o,width:i}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const e=this._document,i=this._getWindow(),o=e.documentElement,r=o.getBoundingClientRect();return{top:-r.top||e.body?.scrollTop||i.scrollY||o.scrollTop||0,left:-r.left||e.body?.scrollLeft||i.scrollX||o.scrollLeft||0}}change(e=20){return e>0?this._change.pipe(jL(e)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const e=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:e.innerWidth,height:e.innerHeight}:{width:0,height:0}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Hf=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})(),GL=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ai,Hf,ai,Hf]})}return t})();function mk(){let t=typeof document<"u"&&document?document.activeElement:null;for(;t&&t.shadowRoot;){const n=t.shadowRoot.activeElement;if(n===t)break;t=n}return t}function Sr(t){return t.composedPath?t.composedPath()[0]:t.target}function qL(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}const wb=new WeakMap;let qo=(()=>{class t{_appRef;_injector=T(Ue);_environmentInjector=T(Wn);load(e){const i=this._appRef=this._appRef||this._injector.get(fr);let o=wb.get(i);o||(o={loaders:new Set,refs:[]},wb.set(i,o),i.onDestroy(()=>{wb.get(i)?.refs.forEach(r=>r.destroy()),wb.delete(i)})),o.loaders.has(e)||(o.loaders.add(e),o.refs.push(CF(e,{environmentInjector:this._environmentInjector})))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function li(t){return null==t?"":"string"==typeof t?t:`${t}px`}function xb(t){return Array.isArray(t)?t:[t]}class gk{_attachedHost=null;attach(n){return this._attachedHost=n,n.attach(this)}detach(){let n=this._attachedHost;null!=n&&(this._attachedHost=null,n.detach())}get isAttached(){return null!=this._attachedHost}setAttachedHost(n){this._attachedHost=n}}class nu extends gk{component;viewContainerRef;injector;projectableNodes;bindings;constructor(n,e,i,o,r){super(),this.component=n,this.viewContainerRef=e,this.injector=i,this.projectableNodes=o,this.bindings=r||null}}class nc extends gk{templateRef;viewContainerRef;context;injector;constructor(n,e,i,o){super(),this.templateRef=n,this.viewContainerRef=e,this.context=i,this.injector=o}get origin(){return this.templateRef.elementRef}attach(n,e=this.context){return this.context=e,super.attach(n)}detach(){return this.context=void 0,super.detach()}}class zce extends gk{element;constructor(n){super(),this.element=n instanceof Ne?n.nativeElement:n}}class kb{_attachedPortal=null;_disposeFn=null;_isDisposed=!1;hasAttached(){return!!this._attachedPortal}attach(n){return n instanceof nu?(this._attachedPortal=n,this.attachComponentPortal(n)):n instanceof nc?(this._attachedPortal=n,this.attachTemplatePortal(n)):this.attachDomPortal&&n instanceof zce?(this._attachedPortal=n,this.attachDomPortal(n)):void 0}attachDomPortal=null;detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(n){this._disposeFn=n}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}class jce extends kb{outletElement;_appRef;_defaultInjector;constructor(n,e,i){super(),this.outletElement=n,this._appRef=e,this._defaultInjector=i}attachComponentPortal(n){let e;if(n.viewContainerRef){const i=n.injector||n.viewContainerRef.injector,o=i.get(Ss,null,{optional:!0})||void 0;e=n.viewContainerRef.createComponent(n.component,{index:n.viewContainerRef.length,injector:i,ngModuleRef:o,projectableNodes:n.projectableNodes||void 0,bindings:n.bindings||void 0}),this.setDisposeFn(()=>e.destroy())}else{const i=this._appRef,o=n.injector||this._defaultInjector||Ue.NULL,r=o.get(Wn,i.injector);e=CF(n.component,{elementInjector:o,environmentInjector:r,projectableNodes:n.projectableNodes||void 0,bindings:n.bindings||void 0}),i.attachView(e.hostView),this.setDisposeFn(()=>{i.viewCount>0&&i.detachView(e.hostView),e.destroy()})}return this.outletElement.appendChild(this._getComponentRootNode(e)),this._attachedPortal=n,e}attachTemplatePortal(n){let e=n.viewContainerRef,i=e.createEmbeddedView(n.templateRef,n.context,{injector:n.injector});return i.rootNodes.forEach(o=>this.outletElement.appendChild(o)),i.detectChanges(),this.setDisposeFn(()=>{let o=e.indexOf(i);-1!==o&&e.remove(o)}),this._attachedPortal=n,i}attachDomPortal=n=>{const e=n.element,i=this.outletElement.ownerDocument.createComment("dom-portal");e.parentNode.insertBefore(i,e),this.outletElement.appendChild(e),this._attachedPortal=n,super.setDisposeFn(()=>{i.parentNode&&i.parentNode.replaceChild(e,i)})};dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(n){return n.hostView.rootNodes[0]}}let $ce=(()=>{class t extends nc{constructor(){super(T(Oi),T(Ai))}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkPortal",""]],exportAs:["cdkPortal"],features:[_e]})}return t})(),ic=(()=>{class t extends kb{_moduleRef=T(Ss,{optional:!0});_document=T(et);_viewContainerRef=T(Ai);_isInitialized=!1;_attachedRef=null;constructor(){super()}get portal(){return this._attachedPortal}set portal(e){this.hasAttached()&&!e&&!this._isInitialized||(this.hasAttached()&&super.detach(),e&&super.attach(e),this._attachedPortal=e||null)}attached=new ke;get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(e){e.setAttachedHost(this);const i=null!=e.viewContainerRef?e.viewContainerRef:this._viewContainerRef,o=i.createComponent(e.component,{index:i.length,injector:e.injector||i.injector,projectableNodes:e.projectableNodes||void 0,ngModuleRef:this._moduleRef||void 0,bindings:e.bindings||void 0});return i!==this._viewContainerRef&&this._getRootNode().appendChild(o.hostView.rootNodes[0]),super.setDisposeFn(()=>o.destroy()),this._attachedPortal=e,this._attachedRef=o,this.attached.emit(o),o}attachTemplatePortal(e){e.setAttachedHost(this);const i=this._viewContainerRef.createEmbeddedView(e.templateRef,e.context,{injector:e.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=e,this._attachedRef=i,this.attached.emit(i),i}attachDomPortal=e=>{const i=e.element,o=this._document.createComment("dom-portal");e.setAttachedHost(this),i.parentNode.insertBefore(o,i),this._getRootNode().appendChild(i),this._attachedPortal=e,super.setDisposeFn(()=>{o.parentNode&&o.parentNode.replaceChild(i,o)})};_getRootNode(){const e=this._viewContainerRef.element.nativeElement;return e.nodeType===e.ELEMENT_NODE?e:e.parentNode}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:[0,"cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],features:[_e]})}return t})(),Uf=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function Mr(t,...n){return n.length?n.some(e=>t[e]):t.altKey||t.shiftKey||t.ctrlKey||t.metaKey}const YL=$L();function _k(t){return new rde(t.get(tu),t.get(et))}class rde{_viewportRuler;_previousHTMLStyles={top:"",left:""};_previousScrollPosition;_isEnabled=!1;_document;constructor(n,e){this._viewportRuler=n,this._document=e}attach(){}enable(){if(this._canBeEnabled()){const n=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=n.style.left||"",this._previousHTMLStyles.top=n.style.top||"",n.style.left=li(-this._previousScrollPosition.left),n.style.top=li(-this._previousScrollPosition.top),n.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){const n=this._document.documentElement,i=n.style,o=this._document.body.style,r=i.scrollBehavior||"",s=o.scrollBehavior||"";this._isEnabled=!1,i.left=this._previousHTMLStyles.left,i.top=this._previousHTMLStyles.top,n.classList.remove("cdk-global-scrollblock"),YL&&(i.scrollBehavior=o.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),YL&&(i.scrollBehavior=r,o.scrollBehavior=s)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;const e=this._document.documentElement,i=this._viewportRuler.getViewportSize();return e.scrollHeight>i.height||e.scrollWidth>i.width}}class ade{_scrollDispatcher;_ngZone;_viewportRuler;_config;_scrollSubscription=null;_overlayRef;_initialScrollPosition;constructor(n,e,i,o){this._scrollDispatcher=n,this._ngZone=e,this._viewportRuler=i,this._config=o}attach(n){this._overlayRef=n}enable(){if(this._scrollSubscription)return;const n=this._scrollDispatcher.scrolled(0).pipe(Pn(e=>!e||!this._overlayRef.overlayElement.contains(e.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=n.subscribe(()=>{const e=this._viewportRuler.getViewportScrollPosition().top;Math.abs(e-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=n.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}_detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}class bk{enable(){}disable(){}attach(){}}function vk(t,n){return n.some(e=>t.bottome.bottom||t.righte.right)}function XL(t,n){return n.some(e=>t.tope.bottom||t.lefte.right)}function $f(t,n){return new lde(t.get(Cb),t.get(tu),t.get(Ce),n)}class lde{_scrollDispatcher;_viewportRuler;_ngZone;_config;_scrollSubscription=null;_overlayRef;constructor(n,e,i,o){this._scrollDispatcher=n,this._viewportRuler=e,this._ngZone=i,this._config=o}attach(n){this._overlayRef=n}enable(){this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){const e=this._overlayRef.overlayElement.getBoundingClientRect(),{width:i,height:o}=this._viewportRuler.getViewportSize();vk(e,[{width:i,height:o,bottom:o,right:i,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}}))}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}let cde=(()=>{class t{_injector=T(Ue);constructor(){}noop=()=>new bk;close=e=>function sde(t,n){return new ade(t.get(Cb),t.get(Ce),t.get(tu),n)}(this._injector,e);block=()=>_k(this._injector);reposition=e=>$f(this._injector,e);static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class Wf{positionStrategy;scrollStrategy=new bk;panelClass="";hasBackdrop=!1;backdropClass="cdk-overlay-dark-backdrop";disableAnimations;width;height;minWidth;minHeight;maxWidth;maxHeight;direction;disposeOnNavigation=!1;usePopover;eventPredicate;constructor(n){if(n){const e=Object.keys(n);for(const i of e)void 0!==n[i]&&(this[i]=n[i])}}}class dde{connectionPair;scrollableViewProperties;constructor(n,e){this.connectionPair=n,this.scrollableViewProperties=e}}let ZL=(()=>{class t{_attachedOverlays=[];_document=T(et);_isAttached=!1;constructor(){}ngOnDestroy(){this.detach()}add(e){this.remove(e),this._attachedOverlays.push(e)}remove(e){const i=this._attachedOverlays.indexOf(e);i>-1&&this._attachedOverlays.splice(i,1),0===this._attachedOverlays.length&&this.detach()}canReceiveEvent(e,i,o){return!(o.observers.length<1)&&(!e.eventPredicate||e.eventPredicate(i))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),ude=(()=>{class t extends ZL{_ngZone=T(Ce);_renderer=T(Uo).createRenderer(null,null);_cleanupKeydown;add(e){super.add(e),this._isAttached||(this._ngZone.runOutsideAngular(()=>{this._cleanupKeydown=this._renderer.listen("body","keydown",this._keydownListener)}),this._isAttached=!0)}detach(){this._isAttached&&(this._cleanupKeydown?.(),this._isAttached=!1)}_keydownListener=e=>{const i=this._attachedOverlays;for(let o=i.length-1;o>-1;o--){const r=i[o];if(this.canReceiveEvent(r,e,r._keydownEvents)){this._ngZone.run(()=>r._keydownEvents.next(e));break}}};static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),hde=(()=>{class t extends ZL{_platform=T(Zn);_ngZone=T(Ce);_renderer=T(Uo).createRenderer(null,null);_cursorOriginalValue;_cursorStyleIsSet=!1;_pointerDownEventTarget=null;_cleanups;add(e){if(super.add(e),!this._isAttached){const i=this._document.body,o={capture:!0},r=this._renderer;this._cleanups=this._ngZone.runOutsideAngular(()=>[r.listen(i,"pointerdown",this._pointerDownListener,o),r.listen(i,"click",this._clickListener,o),r.listen(i,"auxclick",this._clickListener,o),r.listen(i,"contextmenu",this._clickListener,o)]),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=i.style.cursor,i.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){this._isAttached&&(this._cleanups?.forEach(e=>e()),this._cleanups=void 0,this._platform.IOS&&this._cursorStyleIsSet&&(this._document.body.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1)}_pointerDownListener=e=>{this._pointerDownEventTarget=Sr(e)};_clickListener=e=>{const i=Sr(e),o="click"===e.type&&this._pointerDownEventTarget?this._pointerDownEventTarget:i;this._pointerDownEventTarget=null;const r=this._attachedOverlays.slice();for(let s=r.length-1;s>-1;s--){const a=r[s],l=a._outsidePointerEvents;if(a.hasAttached()&&this.canReceiveEvent(a,e,l)){if(QL(a.overlayElement,i)||QL(a.overlayElement,o))break;this._ngZone?this._ngZone.run(()=>l.next(e)):l.next(e)}}};static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function QL(t,n){const e=typeof ShadowRoot<"u"&&ShadowRoot;let i=n;for(;i;){if(i===t)return!0;i=e&&i instanceof ShadowRoot?i.host:i.parentNode}return!1}let JL=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["ng-component"]],hostAttrs:["cdk-overlay-style-loader",""],decls:0,vars:0,template:function(i,o){},styles:[".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed}@layer cdk-overlay{.cdk-overlay-container{z-index:1000}}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute}@layer cdk-overlay{.cdk-global-overlay-wrapper{z-index:1000}}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%}@layer cdk-overlay{.cdk-overlay-pane{z-index:1000}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);opacity:0;touch-action:manipulation}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}@layer cdk-overlay{.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px}@layer cdk-overlay{.cdk-overlay-connected-position-bounding-box{z-index:1000}}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.cdk-overlay-popover{background:none;border:none;padding:0;outline:0;overflow:visible;position:fixed;pointer-events:none;white-space:normal;color:inherit;text-decoration:none;width:100%;height:100%;inset:auto;top:0;left:0}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{position:fixed;z-index:auto}\n"],encapsulation:2,changeDetection:0})}return t})(),yk=(()=>{class t{_platform=T(Zn);_containerElement;_document=T(et);_styleLoader=T(qo);constructor(){}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._loadStyles(),this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const e="cdk-overlay-container";if(this._platform.isBrowser||qL()){const o=this._document.querySelectorAll(`.${e}[platform="server"], .${e}[platform="test"]`);for(let r=0;r{const n=this.element;clearTimeout(this._fallbackTimeout),this._cleanupTransitionEnd?.(),this._cleanupTransitionEnd=this._renderer.listen(n,"transitionend",this.dispose),this._fallbackTimeout=setTimeout(this.dispose,500),n.style.pointerEvents="none",n.classList.remove("cdk-overlay-backdrop-showing")})}dispose=()=>{clearTimeout(this._fallbackTimeout),this._cleanupClick?.(),this._cleanupTransitionEnd?.(),this._cleanupClick=this._cleanupTransitionEnd=this._fallbackTimeout=void 0,this.element.remove()}}function Ck(t){return t&&1===t.nodeType}class e4{_portalOutlet;_host;_pane;_config;_ngZone;_keyboardDispatcher;_document;_location;_outsideClickDispatcher;_animationsDisabled;_injector;_renderer;_backdropClick=new be;_attachments=new be;_detachments=new be;_positionStrategy;_scrollStrategy;_locationChanges=gt.EMPTY;_backdropRef=null;_detachContentMutationObserver;_detachContentAfterRenderRef;_disposed=!1;_previousHostParent;_keydownEvents=new be;_outsidePointerEvents=new be;_afterNextRenderRef;constructor(n,e,i,o,r,s,a,l,d,f=!1,m,g){this._portalOutlet=n,this._host=e,this._pane=i,this._config=o,this._ngZone=r,this._keyboardDispatcher=s,this._document=a,this._location=l,this._outsideClickDispatcher=d,this._animationsDisabled=f,this._injector=m,this._renderer=g,o.scrollStrategy&&(this._scrollStrategy=o.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=o.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropRef?.element||null}get hostElement(){return this._host}get eventPredicate(){return this._config?.eventPredicate||null}attach(n){if(this._disposed)return null;this._attachHost();const e=this._portalOutlet.attach(n);return this._positionStrategy?.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._afterNextRenderRef?.destroy(),this._afterNextRenderRef=Wi(()=>{this.hasAttached()&&this.updatePosition()},{injector:this._injector}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._completeDetachContent(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),"function"==typeof e?.onDestroy&&e.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),e}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();const n=this._portalOutlet.detach();return this._detachments.next(),this._completeDetachContent(),this._keyboardDispatcher.remove(this),this._detachContentWhenEmpty(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),n}dispose(){if(this._disposed)return;const n=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._backdropRef?.dispose(),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._afterNextRenderRef?.destroy(),this._previousHostParent=this._pane=this._host=this._backdropRef=null,n&&this._detachments.next(),this._detachments.complete(),this._completeDetachContent(),this._disposed=!0}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(n){n!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=n,this.hasAttached()&&(n.attach(this),this.updatePosition()))}updateSize(n){this._config={...this._config,...n},this._updateElementSize()}setDirection(n){this._config={...this._config,direction:n},this._updateElementDirection()}addPanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!0)}removePanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!1)}getDirection(){const n=this._config.direction;return n?"string"==typeof n?n:n.value:"ltr"}updateScrollStrategy(n){n!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=n,this.hasAttached()&&(n.attach(this),n.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;const n=this._pane.style;n.width=li(this._config.width),n.height=li(this._config.height),n.minWidth=li(this._config.minWidth),n.minHeight=li(this._config.minHeight),n.maxWidth=li(this._config.maxWidth),n.maxHeight=li(this._config.maxHeight)}_togglePointerEvents(n){this._pane.style.pointerEvents=n?"":"none"}_attachHost(){if(!this._host.parentElement){const n=this._config.usePopover?this._positionStrategy?.getPopoverInsertionPoint?.():null;Ck(n)?n.after(this._host):"parent"===n?.type?n.element.appendChild(this._host):this._previousHostParent?.appendChild(this._host)}if(this._config.usePopover)try{this._host.showPopover()}catch{}}_attachBackdrop(){const n="cdk-overlay-backdrop-showing";this._backdropRef?.dispose(),this._backdropRef=new fde(this._document,this._renderer,this._ngZone,e=>{this._backdropClick.next(e)}),this._animationsDisabled&&this._backdropRef.element.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropRef.element,this._config.backdropClass,!0),this._config.usePopover?this._host.prepend(this._backdropRef.element):this._host.parentElement.insertBefore(this._backdropRef.element,this._host),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>this._backdropRef?.element.classList.add(n))}):this._backdropRef.element.classList.add(n)}_updateStackingOrder(){!this._config.usePopover&&this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){this._animationsDisabled?(this._backdropRef?.dispose(),this._backdropRef=null):this._backdropRef?.detach()}_toggleClasses(n,e,i){const o=xb(e||[]).filter(r=>!!r);o.length&&(i?n.classList.add(...o):n.classList.remove(...o))}_detachContentWhenEmpty(){let n=!1;try{this._detachContentAfterRenderRef=Wi(()=>{n=!0,this._detachContent()},{injector:this._injector})}catch(e){if(n)throw e;this._detachContent()}globalThis.MutationObserver&&this._pane&&(this._detachContentMutationObserver||=new globalThis.MutationObserver(()=>{this._detachContent()}),this._detachContentMutationObserver.observe(this._pane,{childList:!0}))}_detachContent(){(!this._pane||!this._host||0===this._pane.children.length)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),this._completeDetachContent())}_completeDetachContent(){this._detachContentAfterRenderRef?.destroy(),this._detachContentAfterRenderRef=void 0,this._detachContentMutationObserver?.disconnect()}_disposeScrollStrategy(){const n=this._scrollStrategy;n?.disable(),n?.detach?.()}}const t4="cdk-overlay-connected-position-bounding-box",pde=/([A-Za-z%]+)$/;function Eb(t,n){return new mde(n,t.get(tu),t.get(et),t.get(Zn),t.get(yk))}class mde{_viewportRuler;_document;_platform;_overlayContainer;_overlayRef;_isInitialRender=!1;_lastBoundingBoxSize={width:0,height:0};_isPushed=!1;_canPush=!0;_growAfterOpen=!1;_hasFlexibleDimensions=!0;_positionLocked=!1;_originRect;_overlayRect;_viewportRect;_containerRect;_viewportMargin=0;_scrollables=[];_preferredPositions=[];_origin;_pane;_isDisposed=!1;_boundingBox=null;_lastPosition=null;_lastScrollVisibility=null;_positionChanges=new be;_resizeSubscription=gt.EMPTY;_offsetX=0;_offsetY=0;_transformOriginSelector;_appliedPanelClasses=[];_previousPushAmount=null;_popoverLocation="global";positionChanges=this._positionChanges;get positions(){return this._preferredPositions}constructor(n,e,i,o,r){this._viewportRuler=e,this._document=i,this._platform=o,this._overlayContainer=r,this.setOrigin(n)}attach(n){this._validatePositions(),n.hostElement.classList.add(t4),this._overlayRef=n,this._boundingBox=n.hostElement,this._pane=n.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition)return void this.reapplyLastPosition();this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._getContainerRect();const n=this._originRect,e=this._overlayRect,i=this._viewportRect,o=this._containerRect,r=[];let s;for(let a of this._preferredPositions){let l=this._getOriginPoint(n,o,a),d=this._getOverlayPoint(l,e,a),f=this._getOverlayFit(d,e,i,a);if(f.isCompletelyWithinViewport)return this._isPushed=!1,void this._applyPosition(a,l);this._canFitWithFlexibleDimensions(f,d,i)?r.push({position:a,origin:l,overlayRect:e,boundingBoxRect:this._calculateBoundingBoxRect(l,a)}):(!s||s.overlayFit.visibleAreal&&(l=f,a=d)}return this._isPushed=!1,void this._applyPosition(a.position,a.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(s.position,s.originPoint);this._applyPosition(s.position,s.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&oc(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(t4),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;const n=this._lastPosition;n?(this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._getContainerRect(),this._applyPosition(n,this._getOriginPoint(this._originRect,this._containerRect,n))):this.apply()}withScrollableContainers(n){return this._scrollables=n,this}withPositions(n){return this._preferredPositions=n,-1===n.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(n){return this._viewportMargin=n,this}withFlexibleDimensions(n=!0){return this._hasFlexibleDimensions=n,this}withGrowAfterOpen(n=!0){return this._growAfterOpen=n,this}withPush(n=!0){return this._canPush=n,this}withLockedPosition(n=!0){return this._positionLocked=n,this}setOrigin(n){return this._origin=n,this}withDefaultOffsetX(n){return this._offsetX=n,this}withDefaultOffsetY(n){return this._offsetY=n,this}withTransformOriginOn(n){return this._transformOriginSelector=n,this}withPopoverLocation(n){return this._popoverLocation=n,this}getPopoverInsertionPoint(){return"global"===this._popoverLocation?null:"inline"!==this._popoverLocation?this._popoverLocation:this._origin instanceof Ne?this._origin.nativeElement:Ck(this._origin)?this._origin:null}_getOriginPoint(n,e,i){let o,r;if("center"==i.originX)o=n.left+n.width/2;else{const s=this._isRtl()?n.right:n.left,a=this._isRtl()?n.left:n.right;o="start"==i.originX?s:a}return e.left<0&&(o-=e.left),r="center"==i.originY?n.top+n.height/2:"top"==i.originY?n.top:n.bottom,e.top<0&&(r-=e.top),{x:o,y:r}}_getOverlayPoint(n,e,i){let o,r;return o="center"==i.overlayX?-e.width/2:"start"===i.overlayX?this._isRtl()?-e.width:0:this._isRtl()?0:-e.width,r="center"==i.overlayY?-e.height/2:"top"==i.overlayY?0:-e.height,{x:n.x+o,y:n.y+r}}_getOverlayFit(n,e,i,o){const r=i4(e);let{x:s,y:a}=n,l=this._getOffset(o,"x"),d=this._getOffset(o,"y");l&&(s+=l),d&&(a+=d);let g=0-a,b=a+r.height-i.height,w=this._subtractOverflows(r.width,0-s,s+r.width-i.width),M=this._subtractOverflows(r.height,g,b),E=w*M;return{visibleArea:E,isCompletelyWithinViewport:r.width*r.height===E,fitsInViewportVertically:M===r.height,fitsInViewportHorizontally:w==r.width}}_canFitWithFlexibleDimensions(n,e,i){if(this._hasFlexibleDimensions){const o=i.bottom-e.y,r=i.right-e.x,s=n4(this._overlayRef.getConfig().minHeight),a=n4(this._overlayRef.getConfig().minWidth);return(n.fitsInViewportVertically||null!=s&&s<=o)&&(n.fitsInViewportHorizontally||null!=a&&a<=r)}return!1}_pushOverlayOnScreen(n,e,i){if(this._previousPushAmount&&this._positionLocked)return{x:n.x+this._previousPushAmount.x,y:n.y+this._previousPushAmount.y};const o=i4(e),r=this._viewportRect,s=Math.max(n.x+o.width-r.width,0),a=Math.max(n.y+o.height-r.height,0),l=Math.max(r.top-i.top-n.y,0),d=Math.max(r.left-i.left-n.x,0);let f=0,m=0;return f=o.width<=r.width?d||-s:n.xw&&!this._isInitialRender&&!this._growAfterOpen&&(s=n.y-w/2)}const l="start"===e.overlayX&&!o||"end"===e.overlayX&&o;let f,m,g;if("end"===e.overlayX&&!o||"start"===e.overlayX&&o)g=i.width-n.x+this._getViewportMarginStart()+this._getViewportMarginEnd(),f=n.x-this._getViewportMarginStart();else if(l)m=n.x,f=i.right-n.x-this._getViewportMarginEnd();else{const b=Math.min(i.right-n.x+i.left,n.x),w=this._lastBoundingBoxSize.width;f=2*b,m=n.x-b,f>w&&!this._isInitialRender&&!this._growAfterOpen&&(m=n.x-w/2)}return{top:s,left:m,bottom:a,right:g,width:f,height:r}}_setBoundingBoxStyles(n,e){const i=this._calculateBoundingBoxRect(n,e);!this._isInitialRender&&!this._growAfterOpen&&(i.height=Math.min(i.height,this._lastBoundingBoxSize.height),i.width=Math.min(i.width,this._lastBoundingBoxSize.width));const o={};if(this._hasExactPosition())o.top=o.left="0",o.bottom=o.right="auto",o.maxHeight=o.maxWidth="",o.width=o.height="100%";else{const r=this._overlayRef.getConfig().maxHeight,s=this._overlayRef.getConfig().maxWidth;o.width=li(i.width),o.height=li(i.height),o.top=li(i.top)||"auto",o.bottom=li(i.bottom)||"auto",o.left=li(i.left)||"auto",o.right=li(i.right)||"auto",o.alignItems="center"===e.overlayX?"center":"end"===e.overlayX?"flex-end":"flex-start",o.justifyContent="center"===e.overlayY?"center":"bottom"===e.overlayY?"flex-end":"flex-start",r&&(o.maxHeight=li(r)),s&&(o.maxWidth=li(s))}this._lastBoundingBoxSize=i,oc(this._boundingBox.style,o)}_resetBoundingBoxStyles(){oc(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){oc(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(n,e){const i={},o=this._hasExactPosition(),r=this._hasFlexibleDimensions,s=this._overlayRef.getConfig();if(o){const f=this._viewportRuler.getViewportScrollPosition();oc(i,this._getExactOverlayY(e,n,f)),oc(i,this._getExactOverlayX(e,n,f))}else i.position="static";let a="",l=this._getOffset(e,"x"),d=this._getOffset(e,"y");l&&(a+=`translateX(${l}px) `),d&&(a+=`translateY(${d}px)`),i.transform=a.trim(),s.maxHeight&&(o?i.maxHeight=li(s.maxHeight):r&&(i.maxHeight="")),s.maxWidth&&(o?i.maxWidth=li(s.maxWidth):r&&(i.maxWidth="")),oc(this._pane.style,i)}_getExactOverlayY(n,e,i){let o={top:"",bottom:""},r=this._getOverlayPoint(e,this._overlayRect,n);return this._isPushed&&(r=this._pushOverlayOnScreen(r,this._overlayRect,i)),"bottom"===n.overlayY?o.bottom=this._document.documentElement.clientHeight-(r.y+this._overlayRect.height)+"px":o.top=li(r.y),o}_getExactOverlayX(n,e,i){let s,o={left:"",right:""},r=this._getOverlayPoint(e,this._overlayRect,n);return this._isPushed&&(r=this._pushOverlayOnScreen(r,this._overlayRect,i)),s=this._isRtl()?"end"===n.overlayX?"left":"right":"end"===n.overlayX?"right":"left","right"===s?o.right=this._document.documentElement.clientWidth-(r.x+this._overlayRect.width)+"px":o.left=li(r.x),o}_getScrollVisibility(){const n=this._getOriginRect(),e=this._pane.getBoundingClientRect(),i=this._scrollables.map(o=>o.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:XL(n,i),isOriginOutsideView:vk(n,i),isOverlayClipped:XL(e,i),isOverlayOutsideView:vk(e,i)}}_subtractOverflows(n,...e){return e.reduce((i,o)=>i-Math.max(o,0),n)}_getNarrowedViewportRect(){const n=this._document.documentElement.clientWidth,e=this._document.documentElement.clientHeight,i=this._viewportRuler.getViewportScrollPosition();return{top:i.top+this._getViewportMarginTop(),left:i.left+this._getViewportMarginStart(),right:i.left+n-this._getViewportMarginEnd(),bottom:i.top+e-this._getViewportMarginBottom(),width:n-this._getViewportMarginStart()-this._getViewportMarginEnd(),height:e-this._getViewportMarginTop()-this._getViewportMarginBottom()}}_isRtl(){return"rtl"===this._overlayRef.getDirection()}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(n,e){return"x"===e?null==n.offsetX?this._offsetX:n.offsetX:null==n.offsetY?this._offsetY:n.offsetY}_validatePositions(){}_addPanelClasses(n){this._pane&&xb(n).forEach(e=>{""!==e&&-1===this._appliedPanelClasses.indexOf(e)&&(this._appliedPanelClasses.push(e),this._pane.classList.add(e))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(n=>{this._pane.classList.remove(n)}),this._appliedPanelClasses=[])}_getViewportMarginStart(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.start??0}_getViewportMarginEnd(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.end??0}_getViewportMarginTop(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.top??0}_getViewportMarginBottom(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.bottom??0}_getOriginRect(){const n=this._origin;if(n instanceof Ne)return n.nativeElement.getBoundingClientRect();if(n instanceof Element)return n.getBoundingClientRect();const e=n.width||0,i=n.height||0;return{top:n.y,bottom:n.y+i,left:n.x,right:n.x+e,height:i,width:e}}_getContainerRect(){const n=this._overlayRef.getConfig().usePopover&&"global"!==this._popoverLocation,e=this._overlayContainer.getContainerElement();n&&(e.style.display="block");const i=e.getBoundingClientRect();return n&&(e.style.display=""),i}}function oc(t,n){for(let e in n)n.hasOwnProperty(e)&&(t[e]=n[e]);return t}function n4(t){if("number"!=typeof t&&null!=t){const[n,e]=t.split(pde);return e&&"px"!==e?null:parseFloat(n)}return t||null}function i4(t){return{top:Math.floor(t.top),right:Math.floor(t.right),bottom:Math.floor(t.bottom),left:Math.floor(t.left),width:Math.floor(t.width),height:Math.floor(t.height)}}const o4="cdk-global-overlay-wrapper";function Pb(t){return new _de}class _de{_overlayRef;_cssPosition="static";_topOffset="";_bottomOffset="";_alignItems="";_xPosition="";_xOffset="";_width="";_height="";_isDisposed=!1;attach(n){const e=n.getConfig();this._overlayRef=n,this._width&&!e.width&&n.updateSize({width:this._width}),this._height&&!e.height&&n.updateSize({height:this._height}),n.hostElement.classList.add(o4),this._isDisposed=!1}top(n=""){return this._bottomOffset="",this._topOffset=n,this._alignItems="flex-start",this}left(n=""){return this._xOffset=n,this._xPosition="left",this}bottom(n=""){return this._topOffset="",this._bottomOffset=n,this._alignItems="flex-end",this}right(n=""){return this._xOffset=n,this._xPosition="right",this}start(n=""){return this._xOffset=n,this._xPosition="start",this}end(n=""){return this._xOffset=n,this._xPosition="end",this}width(n=""){return this._overlayRef?this._overlayRef.updateSize({width:n}):this._width=n,this}height(n=""){return this._overlayRef?this._overlayRef.updateSize({height:n}):this._height=n,this}centerHorizontally(n=""){return this.left(n),this._xPosition="center",this}centerVertically(n=""){return this.top(n),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;const n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement.style,i=this._overlayRef.getConfig(),{width:o,height:r,maxWidth:s,maxHeight:a}=i,l=!("100%"!==o&&"100vw"!==o||s&&"100%"!==s&&"100vw"!==s),d=!("100%"!==r&&"100vh"!==r||a&&"100%"!==a&&"100vh"!==a),f=this._xPosition,m=this._xOffset,g="rtl"===this._overlayRef.getConfig().direction;let b="",w="",M="";l?M="flex-start":"center"===f?(M="center",g?w=m:b=m):g?"left"===f||"end"===f?(M="flex-end",b=m):("right"===f||"start"===f)&&(M="flex-start",w=m):"left"===f||"start"===f?(M="flex-start",b=m):("right"===f||"end"===f)&&(M="flex-end",w=m),n.position=this._cssPosition,n.marginLeft=l?"0":b,n.marginTop=d?"0":this._topOffset,n.marginBottom=this._bottomOffset,n.marginRight=l?"0":w,e.justifyContent=M,e.alignItems=d?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;const n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement,i=e.style;e.classList.remove(o4),i.justifyContent=i.alignItems=n.marginTop=n.marginBottom=n.marginLeft=n.marginRight=n.position="",this._overlayRef=null,this._isDisposed=!0}}let bde=(()=>{class t{_injector=T(Ue);constructor(){}global(){return Pb()}flexibleConnectedTo(e){return Eb(this._injector,e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const wk=new Z("OVERLAY_DEFAULT_CONFIG");function ou(t,n){t.get(qo).load(JL);const e=t.get(yk),i=t.get(et),o=t.get(si),r=t.get(fr),s=t.get(kr),a=t.get(ei,null,{optional:!0})||t.get(Uo).createRenderer(null,null),l=new Wf(n),d=t.get(wk,null,{optional:!0})?.usePopover??!0;l.direction=l.direction||s.value,l.usePopover="showPopover"in i.body&&(n?.usePopover??d);const f=i.createElement("div"),m=i.createElement("div");f.id=o.getId("cdk-overlay-"),f.classList.add("cdk-overlay-pane"),m.appendChild(f),l.usePopover&&(m.setAttribute("popover","manual"),m.classList.add("cdk-overlay-popover"));const g=l.usePopover?l.positionStrategy?.getPopoverInsertionPoint?.():null;return Ck(g)?g.after(m):"parent"===g?.type?g.element.appendChild(m):e.getContainerElement().appendChild(m),new e4(new jce(f,r,t),m,f,l,t.get(Ce),t.get(ude),i,t.get(jd),t.get(hde),n?.disableAnimations??"NoopAnimations"===t.get(Hm,null,{optional:!0}),t.get(Wn),a)}let vde=(()=>{class t{scrollStrategies=T(cde);_positionBuilder=T(bde);_injector=T(Ue);constructor(){}create(e){return ou(this._injector,e)}position(){return this._positionBuilder}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const yde=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],Cde=new Z("cdk-connected-overlay-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Ue);return()=>$f(t)}});let Ib=(()=>{class t{elementRef=T(Ne);constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"]})}return t})();const wde=new Z("cdk-connected-overlay-default-config");let Ob,r4=(()=>{class t{_dir=T(kr,{optional:!0});_injector=T(Ue);_overlayRef;_templatePortal;_backdropSubscription=gt.EMPTY;_attachSubscription=gt.EMPTY;_detachSubscription=gt.EMPTY;_positionSubscription=gt.EMPTY;_offsetX;_offsetY;_position;_scrollStrategyFactory=T(Cde);_ngZone=T(Ce);origin;positions;positionStrategy;get offsetX(){return this._offsetX}set offsetX(e){this._offsetX=e,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(e){this._offsetY=e,this._position&&this._updatePositionStrategy(this._position)}width;height;minWidth;minHeight;backdropClass;panelClass;viewportMargin=0;scrollStrategy;open=!1;disableClose=!1;transformOriginSelector;hasBackdrop=!1;lockPosition=!1;flexibleDimensions=!1;growAfterOpen=!1;push=!1;disposeOnNavigation=!1;usePopover;matchWidth=!1;set _config(e){"string"!=typeof e&&this._assignConfig(e)}backdropClick=new ke;positionChange=new ke;attach=new ke;detach=new ke;overlayKeydown=new ke;overlayOutsideClick=new ke;constructor(){const e=T(Oi),i=T(Ai),o=T(wde,{optional:!0}),r=T(wk,{optional:!0});this.usePopover=!1===r?.usePopover?null:"global",this._templatePortal=new nc(e,i),this.scrollStrategy=this._scrollStrategyFactory(),o&&this._assignConfig(o)}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef?.dispose()}ngOnChanges(e){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef?.updateSize({width:this._getWidth(),minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),e.origin&&this.open&&this._position.apply()),e.open&&(this.open?this.attachOverlay():this.detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=yde);const e=this._overlayRef=ou(this._injector,this._buildConfig());this._attachSubscription=e.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=e.detachments().subscribe(()=>this.detach.emit()),e.keydownEvents().subscribe(i=>{this.overlayKeydown.next(i),27===i.keyCode&&!this.disableClose&&!Mr(i)&&(i.preventDefault(),this.detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(i=>{const o=this._getOriginElement(),r=Sr(i);(!o||o!==r&&!o.contains(r))&&this.overlayOutsideClick.next(i)})}_buildConfig(){const e=this._position=this.positionStrategy||this._createPositionStrategy(),i=new Wf({direction:this._dir||"ltr",positionStrategy:e,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop,disposeOnNavigation:this.disposeOnNavigation,usePopover:!!this.usePopover});return(this.height||0===this.height)&&(i.height=this.height),(this.minWidth||0===this.minWidth)&&(i.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(i.minHeight=this.minHeight),this.backdropClass&&(i.backdropClass=this.backdropClass),this.panelClass&&(i.panelClass=this.panelClass),i}_updatePositionStrategy(e){const i=this.positions.map(o=>({originX:o.originX,originY:o.originY,overlayX:o.overlayX,overlayY:o.overlayY,offsetX:o.offsetX||this.offsetX,offsetY:o.offsetY||this.offsetY,panelClass:o.panelClass||void 0}));return e.setOrigin(this._getOrigin()).withPositions(i).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector).withPopoverLocation(null===this.usePopover?"global":this.usePopover)}_createPositionStrategy(){const e=Eb(this._injector,this._getOrigin());return this._updatePositionStrategy(e),e}_getOrigin(){return this.origin instanceof Ib?this.origin.elementRef:this.origin}_getOriginElement(){return this.origin instanceof Ib?this.origin.elementRef.nativeElement:this.origin instanceof Ne?this.origin.nativeElement:typeof Element<"u"&&this.origin instanceof Element?this.origin:null}_getWidth(){return this.width?this.width:this.matchWidth?this._getOriginElement()?.getBoundingClientRect?.().width:void 0}attachOverlay(){this._overlayRef||this._createOverlay();const e=this._overlayRef;e.getConfig().hasBackdrop=this.hasBackdrop,e.updateSize({width:this._getWidth()}),e.hasAttached()||e.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=e.backdropClick().subscribe(i=>this.backdropClick.emit(i)):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(function Wce(t,n=!1){return En((e,i)=>{let o=0;e.subscribe(pn(i,r=>{const s=t(r,o++);(s||n)&&i.next(r),!s&&i.complete()}))})}(()=>this.positionChange.observers.length>0)).subscribe(i=>{this._ngZone.run(()=>this.positionChange.emit(i)),0===this.positionChange.observers.length&&this._positionSubscription.unsubscribe()})),this.open=!0}detachOverlay(){this._overlayRef?.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.open=!1}_assignConfig(e){this.origin=e.origin??this.origin,this.positions=e.positions??this.positions,this.positionStrategy=e.positionStrategy??this.positionStrategy,this.offsetX=e.offsetX??this.offsetX,this.offsetY=e.offsetY??this.offsetY,this.width=e.width??this.width,this.height=e.height??this.height,this.minWidth=e.minWidth??this.minWidth,this.minHeight=e.minHeight??this.minHeight,this.backdropClass=e.backdropClass??this.backdropClass,this.panelClass=e.panelClass??this.panelClass,this.viewportMargin=e.viewportMargin??this.viewportMargin,this.scrollStrategy=e.scrollStrategy??this.scrollStrategy,this.disableClose=e.disableClose??this.disableClose,this.transformOriginSelector=e.transformOriginSelector??this.transformOriginSelector,this.hasBackdrop=e.hasBackdrop??this.hasBackdrop,this.lockPosition=e.lockPosition??this.lockPosition,this.flexibleDimensions=e.flexibleDimensions??this.flexibleDimensions,this.growAfterOpen=e.growAfterOpen??this.growAfterOpen,this.push=e.push??this.push,this.disposeOnNavigation=e.disposeOnNavigation??this.disposeOnNavigation,this.usePopover=e.usePopover??this.usePopover,this.matchWidth=e.matchWidth??this.matchWidth}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:[0,"cdkConnectedOverlayOrigin","origin"],positions:[0,"cdkConnectedOverlayPositions","positions"],positionStrategy:[0,"cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:[0,"cdkConnectedOverlayOffsetX","offsetX"],offsetY:[0,"cdkConnectedOverlayOffsetY","offsetY"],width:[0,"cdkConnectedOverlayWidth","width"],height:[0,"cdkConnectedOverlayHeight","height"],minWidth:[0,"cdkConnectedOverlayMinWidth","minWidth"],minHeight:[0,"cdkConnectedOverlayMinHeight","minHeight"],backdropClass:[0,"cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:[0,"cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:[0,"cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:[0,"cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:[0,"cdkConnectedOverlayOpen","open"],disableClose:[0,"cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:[0,"cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:[2,"cdkConnectedOverlayHasBackdrop","hasBackdrop",Te],lockPosition:[2,"cdkConnectedOverlayLockPosition","lockPosition",Te],flexibleDimensions:[2,"cdkConnectedOverlayFlexibleDimensions","flexibleDimensions",Te],growAfterOpen:[2,"cdkConnectedOverlayGrowAfterOpen","growAfterOpen",Te],push:[2,"cdkConnectedOverlayPush","push",Te],disposeOnNavigation:[2,"cdkConnectedOverlayDisposeOnNavigation","disposeOnNavigation",Te],usePopover:[0,"cdkConnectedOverlayUsePopover","usePopover"],matchWidth:[2,"cdkConnectedOverlayMatchWidth","matchWidth",Te],_config:[0,"cdkConnectedOverlay","_config"]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],features:[vi]})}return t})(),ru=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[vde],imports:[ai,Uf,GL,GL]})}return t})(),xk=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["ng-component"]],exportAs:["cdkVisuallyHidden"],decls:0,vars:0,template:function(i,o){},styles:[".cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}\n"],encapsulation:2,changeDetection:0})}return t})();function su(t){return function xde(){if(void 0===Ob&&(Ob=null,typeof window<"u")){const t=window;void 0!==t.trustedTypes&&(Ob=t.trustedTypes.createPolicy("angular#components",{createHTML:n=>n}))}return Ob}()?.createHTML(t)||t}function kk(t){return Pn((n,e)=>t<=e)}function Ab(t,n=Nf){return En((e,i)=>{let o=null,r=null,s=null;const a=()=>{if(o){o.unsubscribe(),o=null;const d=r;r=null,i.next(d)}};function l(){const d=s+t,f=n.now();if(f{r=d,s=n.now(),o||(o=n.schedule(l,t),i.add(o))},()=>{a(),i.complete()},void 0,()=>{r=o=null}))})}const s4=new Set;let rc,Sk=(()=>{class t{_platform=T(Zn);_nonce=T(E1,{optional:!0});_matchMedia;constructor(){this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):Mde}matchMedia(e){return(this._platform.WEBKIT||this._platform.BLINK)&&function Sde(t,n){if(!s4.has(t))try{rc||(rc=document.createElement("style"),n&&rc.setAttribute("nonce",n),rc.setAttribute("type","text/css"),document.head.appendChild(rc)),rc.sheet&&(rc.sheet.insertRule(`@media ${t} {body{ }}`,0),s4.add(t))}catch(e){console.error(e)}}(e,this._nonce),this._matchMedia(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Mde(t){return{matches:"all"===t||""===t,media:t,addListener:()=>{},removeListener:()=>{}}}let a4=(()=>{class t{_mediaMatcher=T(Sk);_zone=T(Ce);_queries=new Map;_destroySubject=new be;constructor(){}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(e){return l4(xb(e)).some(o=>this._registerQuery(o).mql.matches)}observe(e){let r=Ax(l4(xb(e)).map(s=>this._registerQuery(s).observable));return r=Fs(r.pipe(wn(1)),r.pipe(kk(1),Ab(0))),r.pipe(De(s=>{const a={matches:!1,breakpoints:{}};return s.forEach(({matches:l,query:d})=>{a.matches=a.matches||l,a.breakpoints[d]=l}),a}))}_registerQuery(e){if(this._queries.has(e))return this._queries.get(e);const i=this._mediaMatcher.matchMedia(e),r={observable:new zt(s=>{const a=l=>this._zone.run(()=>s.next(l));return i.addListener(a),()=>{i.removeListener(a)}}).pipe(zn(i),De(({matches:s})=>({query:e,matches:s})),ln(this._destroySubject)),mql:i};return this._queries.set(e,r),r}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function l4(t){return t.map(n=>n.split(",")).reduce((n,e)=>n.concat(e)).map(n=>n.trim())}let c4=(()=>{class t{create(e){return typeof MutationObserver>"u"?null:new MutationObserver(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Tde=(()=>{class t{_mutationObserverFactory=T(c4);_observedElements=new Map;_ngZone=T(Ce);constructor(){}ngOnDestroy(){this._observedElements.forEach((e,i)=>this._cleanupObserver(i))}observe(e){const i=Bs(e);return new zt(o=>{const s=this._observeElement(i).pipe(De(a=>a.filter(l=>!function Dde(t){if("characterData"===t.type&&t.target instanceof Comment)return!0;if("childList"===t.type){for(let n=0;n!!a.length)).subscribe(a=>{this._ngZone.run(()=>{o.next(a)})});return()=>{s.unsubscribe(),this._unobserveElement(i)}})}_observeElement(e){return this._ngZone.runOutsideAngular(()=>{if(this._observedElements.has(e))this._observedElements.get(e).count++;else{const i=new be,o=this._mutationObserverFactory.create(r=>i.next(r));o&&o.observe(e,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(e,{observer:o,stream:i,count:1})}return this._observedElements.get(e).stream})}_unobserveElement(e){this._observedElements.has(e)&&(this._observedElements.get(e).count--,this._observedElements.get(e).count||this._cleanupObserver(e))}_cleanupObserver(e){if(this._observedElements.has(e)){const{observer:i,stream:o}=this._observedElements.get(e);i&&i.disconnect(),o.complete(),this._observedElements.delete(e)}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Ede=(()=>{class t{_contentObserver=T(Tde);_elementRef=T(Ne);event=new ke;get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._disabled?this._unsubscribe():this._subscribe()}_disabled=!1;get debounce(){return this._debounce}set debounce(e){this._debounce=Bf(e),this._subscribe()}_debounce;_currentSubscription=null;constructor(){}ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();const e=this._contentObserver.observe(this._elementRef);this._currentSubscription=(this.debounce?e.pipe(Ab(this.debounce)):e).subscribe(this.event)}_unsubscribe(){this._currentSubscription?.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkObserveContent",""]],inputs:{disabled:[2,"cdkObserveContentDisabled","disabled",Te],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"]})}return t})(),d4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[c4]})}return t})(),u4=(()=>{class t{_platform=T(Zn);constructor(){}isDisabled(e){return e.hasAttribute("disabled")}isVisible(e){return function Ide(t){return!!(t.offsetWidth||t.offsetHeight||"function"==typeof t.getClientRects&&t.getClientRects().length)}(e)&&"visible"===getComputedStyle(e).visibility}isTabbable(e){if(!this._platform.isBrowser)return!1;const i=function Pde(t){try{return t.frameElement}catch{return null}}(function Vde(t){return t.ownerDocument&&t.ownerDocument.defaultView||window}(e));if(i&&(-1===f4(i)||!this.isVisible(i)))return!1;let o=e.nodeName.toLowerCase(),r=f4(e);return e.hasAttribute("contenteditable")?-1!==r:!("iframe"===o||"object"===o||this._platform.WEBKIT&&this._platform.IOS&&!function Lde(t){let n=t.nodeName.toLowerCase(),e="input"===n&&t.type;return"text"===e||"password"===e||"select"===n||"textarea"===n}(e))&&("audio"===o?!!e.hasAttribute("controls")&&-1!==r:"video"===o?-1!==r&&(null!==r||this._platform.FIREFOX||e.hasAttribute("controls")):e.tabIndex>=0)}isFocusable(e,i){return function Bde(t){return!function Ade(t){return function Fde(t){return"input"==t.nodeName.toLowerCase()}(t)&&"hidden"==t.type}(t)&&(function Ode(t){let n=t.nodeName.toLowerCase();return"input"===n||"select"===n||"button"===n||"textarea"===n}(t)||function Rde(t){return function Nde(t){return"a"==t.nodeName.toLowerCase()}(t)&&t.hasAttribute("href")}(t)||t.hasAttribute("contenteditable")||h4(t))}(e)&&!this.isDisabled(e)&&(i?.ignoreVisibility||this.isVisible(e))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function h4(t){if(!t.hasAttribute("tabindex")||void 0===t.tabIndex)return!1;let n=t.getAttribute("tabindex");return!(!n||isNaN(parseInt(n,10)))}function f4(t){if(!h4(t))return null;const n=parseInt(t.getAttribute("tabindex")||"",10);return isNaN(n)?-1:n}class p4{_element;_checker;_ngZone;_document;_injector;_startAnchor=null;_endAnchor=null;_hasAttached=!1;startAnchorListener=()=>this.focusLastTabbableElement();endAnchorListener=()=>this.focusFirstTabbableElement();get enabled(){return this._enabled}set enabled(n){this._enabled=n,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}_enabled=!0;constructor(n,e,i,o,r=!1,s){this._element=n,this._checker=e,this._ngZone=i,this._document=o,this._injector=s,r||this.attachAnchors()}destroy(){const n=this._startAnchor,e=this._endAnchor;n&&(n.removeEventListener("focus",this.startAnchorListener),n.remove()),e&&(e.removeEventListener("focus",this.endAnchorListener),e.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return!!this._hasAttached||(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusInitialElement(n)))})}focusFirstTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusFirstTabbableElement(n)))})}focusLastTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusLastTabbableElement(n)))})}_getRegionBoundary(n){const e=this._element.querySelectorAll(`[cdk-focus-region-${n}], [cdkFocusRegion${n}], [cdk-focus-${n}]`);return"start"==n?e.length?e[0]:this._getFirstTabbableElement(this._element):e.length?e[e.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(n){const e=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(e){if(!this._checker.isFocusable(e)){const i=this._getFirstTabbableElement(e);return i?.focus(n),!!i}return e.focus(n),!0}return this.focusFirstTabbableElement(n)}focusFirstTabbableElement(n){const e=this._getRegionBoundary("start");return e&&e.focus(n),!!e}focusLastTabbableElement(n){const e=this._getRegionBoundary("end");return e&&e.focus(n),!!e}hasAttached(){return this._hasAttached}_getFirstTabbableElement(n){if(this._checker.isFocusable(n)&&this._checker.isTabbable(n))return n;const e=n.children;for(let i=0;i=0;i--){const o=e[i].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(e[i]):null;if(o)return o}return null}_createAnchor(){const n=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,n),n.classList.add("cdk-visually-hidden"),n.classList.add("cdk-focus-trap-anchor"),n.setAttribute("aria-hidden","true"),n}_toggleAnchorTabIndex(n,e){n?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}toggleAnchors(n){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}_executeOnStable(n){this._injector?Wi(n,{injector:this._injector}):setTimeout(n)}}let Hde=(()=>{class t{_checker=T(u4);_ngZone=T(Ce);_document=T(et);_injector=T(Ue);constructor(){T(qo).load(xk)}create(e,i=!1){return new p4(e,this._checker,this._ngZone,this._document,i,this._injector)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Ude=new Z("liveAnnouncerElement",{providedIn:"root",factory:()=>null}),zde=new Z("LIVE_ANNOUNCER_DEFAULT_OPTIONS");let jde=0,m4=(()=>{class t{_ngZone=T(Ce);_defaultOptions=T(zde,{optional:!0});_liveElement;_document=T(et);_sanitizer=T(K_);_previousTimeout;_currentPromise;_currentResolve;constructor(){const e=T(Ude,{optional:!0});this._liveElement=e||this._createLiveElement()}announce(e,...i){const o=this._defaultOptions;let r,s;return 1===i.length&&"number"==typeof i[0]?s=i[0]:[r,s]=i,this.clear(),clearTimeout(this._previousTimeout),r||(r=o&&o.politeness?o.politeness:"polite"),null==s&&o&&(s=o.duration),this._liveElement.setAttribute("aria-live",r),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular(()=>(this._currentPromise||(this._currentPromise=new Promise(a=>this._currentResolve=a)),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout(()=>{e&&"string"!=typeof e?function kde(t,n,e){const i=e.sanitize(yi.HTML,n);t.innerHTML=su(i||"")}(this._liveElement,e,this._sanitizer):this._liveElement.textContent=e,"number"==typeof s&&(this._previousTimeout=setTimeout(()=>this.clear(),s)),this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0},100),this._currentPromise))}clear(){this._liveElement&&(this._liveElement.textContent="")}ngOnDestroy(){clearTimeout(this._previousTimeout),this._liveElement?.remove(),this._liveElement=null,this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){const e="cdk-live-announcer-element",i=this._document.getElementsByClassName(e),o=this._document.createElement("div");for(let r=0;r .cdk-overlay-container [aria-modal="true"]');for(let o=0;o{class t{_platform=T(Zn);_hasCheckedHighContrastMode=!1;_document=T(et);_breakpointSubscription;constructor(){this._breakpointSubscription=T(a4).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return sc.NONE;const e=this._document.createElement("div");e.style.backgroundColor="rgb(1,2,3)",e.style.position="absolute",this._document.body.appendChild(e);const i=this._document.defaultView||window,o=i&&i.getComputedStyle?i.getComputedStyle(e):null,r=(o&&o.backgroundColor||"").replace(/ /g,"");switch(e.remove(),r){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return sc.WHITE_ON_BLACK;case"rgb(255,255,255)":case"rgb(255,250,239)":return sc.BLACK_ON_WHITE}return sc.NONE}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){const e=this._document.body.classList;e.remove(Mk,g4,_4),this._hasCheckedHighContrastMode=!0;const i=this.getHighContrastMode();i===sc.BLACK_ON_WHITE?e.add(Mk,g4):i===sc.WHITE_ON_BLACK&&e.add(Mk,_4)}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),b4=(()=>{class t{constructor(){T($de)._applyBodyHighContrastModeCssClasses()}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[d4]})}return t})();function Gde(t,n){return t===n}function Dk(t){return 0===t.buttons||0===t.detail}function Tk(t){const n=t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0];return!(!n||-1!==n.identifier||null!=n.radiusX&&1!==n.radiusX||null!=n.radiusY&&1!==n.radiusY)}function Ek(t){return function qde(){if(null==Gf&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>Gf=!0}))}finally{Gf=Gf||!1}return Gf}()?t:!!t.capture}const Kde=new Z("cdk-input-modality-detector-options"),Yde={ignoreKeys:[18,17,224,91,16]},Pk={passive:!0,capture:!0};let Xde=(()=>{class t{_platform=T(Zn);_listenerCleanups;modalityDetected;modalityChanged;get mostRecentModality(){return this._modality.value}_mostRecentTarget=null;_modality=new Ei(null);_options;_lastTouchMs=0;_onKeydown=e=>{this._options?.ignoreKeys?.some(i=>i===e.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=Sr(e))};_onMousedown=e=>{Date.now()-this._lastTouchMs<650||(this._modality.next(Dk(e)?"keyboard":"mouse"),this._mostRecentTarget=Sr(e))};_onTouchstart=e=>{Tk(e)?this._modality.next("keyboard"):(this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=Sr(e))};constructor(){const e=T(Ce),i=T(et),o=T(Kde,{optional:!0});if(this._options={...Yde,...o},this.modalityDetected=this._modality.pipe(kk(1)),this.modalityChanged=this.modalityDetected.pipe(function Wde(t,n=Qa){return t=t??Gde,En((e,i)=>{let o,r=!0;e.subscribe(pn(i,s=>{const a=n(s);(r||!t(o,a))&&(r=!1,o=a,i.next(s))}))})}()),this._platform.isBrowser){const r=T(Uo).createRenderer(null,null);this._listenerCleanups=e.runOutsideAngular(()=>[r.listen(i,"keydown",this._onKeydown,Pk),r.listen(i,"mousedown",this._onMousedown,Pk),r.listen(i,"touchstart",this._onTouchstart,Pk)])}}ngOnDestroy(){this._modality.complete(),this._listenerCleanups?.forEach(e=>e())}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Rb=function(t){return t[t.IMMEDIATE=0]="IMMEDIATE",t[t.EVENTUAL=1]="EVENTUAL",t}(Rb||{});const Zde=new Z("cdk-focus-monitor-default-options"),Fb=Ek({passive:!0,capture:!0});let ac=(()=>{class t{_ngZone=T(Ce);_platform=T(Zn);_inputModalityDetector=T(Xde);_origin=null;_lastFocusOrigin=null;_windowFocused=!1;_windowFocusTimeoutId;_originTimeoutId;_originFromTouchInteraction=!1;_elementInfo=new Map;_monitoredElementCount=0;_rootNodeFocusListenerCount=new Map;_detectionMode;_windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=setTimeout(()=>this._windowFocused=!1)};_document=T(et);_stopInputModalityDetector=new be;constructor(){const e=T(Zde,{optional:!0});this._detectionMode=e?.detectionMode||Rb.IMMEDIATE}_rootNodeFocusAndBlurListener=e=>{for(let o=Sr(e);o;o=o.parentElement)"focus"===e.type?this._onFocus(e,o):this._onBlur(e,o)};monitor(e,i=!1){const o=Bs(e);if(!this._platform.isBrowser||1!==o.nodeType)return se();const r=function Uce(t){if(function Hce(){if(null==pk){const t=typeof document<"u"?document.head:null;pk=!(!t||!t.createShadowRoot&&!t.attachShadow)}return pk}()){const n=t.getRootNode?t.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&n instanceof ShadowRoot)return n}return null}(o)||this._document,s=this._elementInfo.get(o);if(s)return i&&(s.checkChildren=!0),s.subject;const a={checkChildren:i,subject:new be,rootNode:r};return this._elementInfo.set(o,a),this._registerGlobalListeners(a),a.subject}stopMonitoring(e){const i=Bs(e),o=this._elementInfo.get(i);o&&(o.subject.complete(),this._setClasses(i),this._elementInfo.delete(i),this._removeGlobalListeners(o))}focusVia(e,i,o){const r=Bs(e);r===this._document.activeElement?this._getClosestElementsInfo(r).forEach(([a,l])=>this._originChanged(a,i,l)):(this._setOrigin(i),"function"==typeof r.focus&&r.focus(o))}ngOnDestroy(){this._elementInfo.forEach((e,i)=>this.stopMonitoring(i))}_getWindow(){return this._document.defaultView||window}_getFocusOrigin(e){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(e)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:e&&this._isLastInteractionFromInputLabel(e)?"mouse":"program"}_shouldBeAttributedToTouch(e){return this._detectionMode===Rb.EVENTUAL||!!e?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(e,i){e.classList.toggle("cdk-focused",!!i),e.classList.toggle("cdk-touch-focused","touch"===i),e.classList.toggle("cdk-keyboard-focused","keyboard"===i),e.classList.toggle("cdk-mouse-focused","mouse"===i),e.classList.toggle("cdk-program-focused","program"===i)}_setOrigin(e,i=!1){this._ngZone.runOutsideAngular(()=>{this._origin=e,this._originFromTouchInteraction="touch"===e&&i,this._detectionMode===Rb.IMMEDIATE&&(clearTimeout(this._originTimeoutId),this._originTimeoutId=setTimeout(()=>this._origin=null,this._originFromTouchInteraction?650:1))})}_onFocus(e,i){const o=this._elementInfo.get(i),r=Sr(e);!o||!o.checkChildren&&i!==r||this._originChanged(i,this._getFocusOrigin(r),o)}_onBlur(e,i){const o=this._elementInfo.get(i);!o||o.checkChildren&&e.relatedTarget instanceof Node&&i.contains(e.relatedTarget)||(this._setClasses(i),this._emitOrigin(o,null))}_emitOrigin(e,i){e.subject.observers.length&&this._ngZone.run(()=>e.subject.next(i))}_registerGlobalListeners(e){if(!this._platform.isBrowser)return;const i=e.rootNode,o=this._rootNodeFocusListenerCount.get(i)||0;o||this._ngZone.runOutsideAngular(()=>{i.addEventListener("focus",this._rootNodeFocusAndBlurListener,Fb),i.addEventListener("blur",this._rootNodeFocusAndBlurListener,Fb)}),this._rootNodeFocusListenerCount.set(i,o+1),1===++this._monitoredElementCount&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(ln(this._stopInputModalityDetector)).subscribe(r=>{this._setOrigin(r,!0)}))}_removeGlobalListeners(e){const i=e.rootNode;if(this._rootNodeFocusListenerCount.has(i)){const o=this._rootNodeFocusListenerCount.get(i);o>1?this._rootNodeFocusListenerCount.set(i,o-1):(i.removeEventListener("focus",this._rootNodeFocusAndBlurListener,Fb),i.removeEventListener("blur",this._rootNodeFocusAndBlurListener,Fb),this._rootNodeFocusListenerCount.delete(i))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(e,i,o){this._setClasses(e,i),this._emitOrigin(o,i),this._lastFocusOrigin=i}_getClosestElementsInfo(e){const i=[];return this._elementInfo.forEach((o,r)=>{(r===e||o.checkChildren&&r.contains(e))&&i.push([r,o])}),i}_isLastInteractionFromInputLabel(e){const{_mostRecentTarget:i,mostRecentModality:o}=this._inputModalityDetector;if("mouse"!==o||!i||i===e||"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.disabled)return!1;const r=e.labels;if(r)for(let s=0;s{class t{_elementRef=T(Ne);_focusMonitor=T(ac);_monitorSubscription;_focusOrigin=null;cdkFocusChange=new ke;constructor(){}get focusOrigin(){return this._focusOrigin}ngAfterViewInit(){const e=this._elementRef.nativeElement;this._monitorSubscription=this._focusMonitor.monitor(e,1===e.nodeType&&e.hasAttribute("cdkMonitorSubtreeFocus")).subscribe(i=>{this._focusOrigin=i,this.cdkFocusChange.emit(i)})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._monitorSubscription?.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkMonitorElementFocus",""],["","cdkMonitorSubtreeFocus",""]],outputs:{cdkFocusChange:"cdkFocusChange"},exportAs:["cdkMonitorFocus"]})}return t})();function Jde(t,n){}class qf{viewContainerRef;injector;id;role="dialog";panelClass="";hasBackdrop=!0;backdropClass="";disableClose=!1;closePredicate;width="";height="";minWidth;minHeight;maxWidth;maxHeight;positionStrategy;data=null;direction;ariaDescribedBy=null;ariaLabelledBy=null;ariaLabel=null;ariaModal=!1;autoFocus="first-tabbable";restoreFocus=!0;scrollStrategy;closeOnNavigation=!0;closeOnDestroy=!0;closeOnOverlayDetachments=!0;disableAnimations=!1;providers;container;templateContext}let y4=(()=>{class t extends kb{_elementRef=T(Ne);_focusTrapFactory=T(Hde);_config;_interactivityChecker=T(u4);_ngZone=T(Ce);_focusMonitor=T(ac);_renderer=T(ei);_changeDetectorRef=T(Dt);_injector=T(Ue);_platform=T(Zn);_document=T(et);_portalOutlet;_focusTrapped=new be;_focusTrap=null;_elementFocusedBeforeDialogWasOpened=null;_closeInteractionType=null;_ariaLabelledByQueue=[];_isDestroyed=!1;constructor(){super(),this._config=T(qf,{optional:!0})||new qf,this._config.ariaLabelledBy&&this._ariaLabelledByQueue.push(this._config.ariaLabelledBy)}_addAriaLabelledBy(e){this._ariaLabelledByQueue.push(e),this._changeDetectorRef.markForCheck()}_removeAriaLabelledBy(e){const i=this._ariaLabelledByQueue.indexOf(e);i>-1&&(this._ariaLabelledByQueue.splice(i,1),this._changeDetectorRef.markForCheck())}_contentAttached(){this._initializeFocusTrap(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._focusTrapped.complete(),this._isDestroyed=!0,this._restoreFocus()}attachComponentPortal(e){this._portalOutlet.hasAttached();const i=this._portalOutlet.attachComponentPortal(e);return this._contentAttached(),i}attachTemplatePortal(e){this._portalOutlet.hasAttached();const i=this._portalOutlet.attachTemplatePortal(e);return this._contentAttached(),i}attachDomPortal=e=>{this._portalOutlet.hasAttached();const i=this._portalOutlet.attachDomPortal(e);return this._contentAttached(),i};_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(e,i){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{const o=()=>{r(),s(),e.removeAttribute("tabindex")},r=this._renderer.listen(e,"blur",o),s=this._renderer.listen(e,"mousedown",o)})),e.focus(i)}_focusByCssSelector(e,i){let o=this._elementRef.nativeElement.querySelector(e);o&&this._forceFocus(o,i)}_trapFocus(e){this._isDestroyed||Wi(()=>{const i=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||i.focus(e);break;case!0:case"first-tabbable":this._focusTrap?.focusInitialElement(e)||this._focusDialogContainer(e);break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]',e);break;default:this._focusByCssSelector(this._config.autoFocus,e)}this._focusTrapped.next()},{injector:this._injector})}_restoreFocus(){const e=this._config.restoreFocus;let i=null;if("string"==typeof e?i=this._document.querySelector(e):"boolean"==typeof e?i=e?this._elementFocusedBeforeDialogWasOpened:null:e&&(i=e),this._config.restoreFocus&&i&&"function"==typeof i.focus){const o=mk(),r=this._elementRef.nativeElement;(!o||o===this._document.body||o===r||r.contains(o))&&(this._focusMonitor?(this._focusMonitor.focusVia(i,this._closeInteractionType),this._closeInteractionType=null):i.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(e){this._elementRef.nativeElement.focus?.(e)}_containsFocus(){const e=this._elementRef.nativeElement,i=mk();return e===i||e.contains(i)}_initializeFocusTrap(){this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=mk()))}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["cdk-dialog-container"]],viewQuery:function(i,o){if(1&i&&st(ic,7),2&i){let r;fe(r=pe())&&(o._portalOutlet=r.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(i,o){2&i&&We("id",o._config.id||null)("role",o._config.role)("aria-modal",o._config.ariaModal)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledByQueue[0])("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null)},features:[_e],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(i,o){1&i&&rt(0,Jde,0,0,"ng-template",0)},dependencies:[ic],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}\n"],encapsulation:2})}return t})();class Ik{overlayRef;config;componentInstance=null;componentRef=null;containerInstance;disableClose;closed=new be;backdropClick;keydownEvents;outsidePointerEvents;id;_detachSubscription;constructor(n,e){this.overlayRef=n,this.config=e,this.disableClose=e.disableClose,this.backdropClick=n.backdropClick(),this.keydownEvents=n.keydownEvents(),this.outsidePointerEvents=n.outsidePointerEvents(),this.id=e.id,this.keydownEvents.subscribe(i=>{27===i.keyCode&&!this.disableClose&&!Mr(i)&&(i.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{!this.disableClose&&this._canClose()?this.close(void 0,{focusOrigin:"mouse"}):this.containerInstance._recaptureFocus?.()}),this._detachSubscription=n.detachments().subscribe(()=>{!1!==e.closeOnOverlayDetachments&&this.close()})}close(n,e){if(this._canClose(n)){const i=this.closed;this.containerInstance._closeInteractionType=e?.focusOrigin||"program",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),i.next(n),i.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(n="",e=""){return this.overlayRef.updateSize({width:n,height:e}),this}addPanelClass(n){return this.overlayRef.addPanelClass(n),this}removePanelClass(n){return this.overlayRef.removePanelClass(n),this}_canClose(n){const e=this.config;return!!this.containerInstance&&(!e.closePredicate||e.closePredicate(n,e,this.componentInstance))}}const eue=new Z("DialogScrollStrategy",{providedIn:"root",factory:()=>{const t=T(Ue);return()=>_k(t)}}),tue=new Z("DialogData"),nue=new Z("DefaultDialogConfig");function iue(t){const n=Ct(t),e=new ke;return{valueSignal:n,get value(){return n()},change:e,ngOnDestroy(){e.complete()}}}let C4=(()=>{class t{_injector=T(Ue);_defaultOptions=T(nue,{optional:!0});_parentDialog=T(t,{optional:!0,skipSelf:!0});_overlayContainer=T(yk);_idGenerator=T(si);_openDialogsAtThisLevel=[];_afterAllClosedAtThisLevel=new be;_afterOpenedAtThisLevel=new be;_ariaHiddenElements=new Map;_scrollStrategy=T(eue);get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}afterAllClosed=Sa(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(zn(void 0)));constructor(){}open(e,i){(i={...this._defaultOptions||new qf,...i}).id=i.id||this._idGenerator.getId("cdk-dialog-"),i.id&&this.getDialogById(i.id);const r=this._getOverlayConfig(i),s=ou(this._injector,r),a=new Ik(s,i),l=this._attachContainer(s,a,i);if(a.containerInstance=l,!this.openDialogs.length){const d=this._overlayContainer.getContainerElement();l._focusTrapped?l._focusTrapped.pipe(wn(1)).subscribe(()=>{this._hideNonDialogContentFromAssistiveTechnology(d)}):this._hideNonDialogContentFromAssistiveTechnology(d)}return this._attachDialogContent(e,a,l,i),this.openDialogs.push(a),a.closed.subscribe(()=>this._removeOpenDialog(a,!0)),this.afterOpened.next(a),a}closeAll(){Ok(this.openDialogs,e=>e.close())}getDialogById(e){return this.openDialogs.find(i=>i.id===e)}ngOnDestroy(){Ok(this._openDialogsAtThisLevel,e=>{!1===e.config.closeOnDestroy&&this._removeOpenDialog(e,!1)}),Ok(this._openDialogsAtThisLevel,e=>e.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(e){const i=new Wf({positionStrategy:e.positionStrategy||Pb().centerHorizontally().centerVertically(),scrollStrategy:e.scrollStrategy||this._scrollStrategy(),panelClass:e.panelClass,hasBackdrop:e.hasBackdrop,direction:e.direction,minWidth:e.minWidth,minHeight:e.minHeight,maxWidth:e.maxWidth,maxHeight:e.maxHeight,width:e.width,height:e.height,disposeOnNavigation:e.closeOnNavigation,disableAnimations:e.disableAnimations});return e.backdropClass&&(i.backdropClass=e.backdropClass),i}_attachContainer(e,i,o){const r=o.injector||o.viewContainerRef?.injector,s=[{provide:qf,useValue:o},{provide:Ik,useValue:i},{provide:e4,useValue:e}];let a;o.container?"function"==typeof o.container?a=o.container:(a=o.container.type,s.push(...o.container.providers(o))):a=y4;const l=new nu(a,o.viewContainerRef,Ue.create({parent:r||this._injector,providers:s}));return e.attach(l).instance}_attachDialogContent(e,i,o,r){if(e instanceof Oi){const s=this._createInjector(r,i,o,void 0);let a={$implicit:r.data,dialogRef:i};r.templateContext&&(a={...a,..."function"==typeof r.templateContext?r.templateContext():r.templateContext}),o.attachTemplatePortal(new nc(e,null,a,s))}else{const s=this._createInjector(r,i,o,this._injector),a=o.attachComponentPortal(new nu(e,r.viewContainerRef,s));i.componentRef=a,i.componentInstance=a.instance}}_createInjector(e,i,o,r){const s=e.injector||e.viewContainerRef?.injector,a=[{provide:tue,useValue:e.data},{provide:Ik,useValue:i}];return e.providers&&("function"==typeof e.providers?a.push(...e.providers(i,e,o)):a.push(...e.providers)),e.direction&&(!s||!s.get(kr,null,{optional:!0}))&&a.push({provide:kr,useValue:iue(e.direction)}),Ue.create({parent:s||r,providers:a})}_removeOpenDialog(e,i){const o=this.openDialogs.indexOf(e);o>-1&&(this.openDialogs.splice(o,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((r,s)=>{r?s.setAttribute("aria-hidden",r):s.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),i&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(e){if(e.parentElement){const i=e.parentElement.children;for(let o=i.length-1;o>-1;o--){const r=i[o];r!==e&&"SCRIPT"!==r.nodeName&&"STYLE"!==r.nodeName&&!r.hasAttribute("aria-live")&&!r.hasAttribute("popover")&&(this._ariaHiddenElements.set(r,r.getAttribute("aria-hidden")),r.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ok(t,n){let e=t.length;for(;e--;)n(t[e])}let oue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[C4],imports:[ru,Uf,b4,Uf]})}return t})();const rue=new Z("MATERIAL_ANIMATIONS");let w4=null;function x4(){return T(rue,{optional:!0})?.animationsDisabled||"NoopAnimations"===T(Hm,{optional:!0})?"di-disabled":(w4??=T(Sk).matchMedia("(prefers-reduced-motion)").matches,w4?"reduced-motion":"enabled")}function hi(){return"enabled"!==x4()}function Dr(...t){const n=gf(t),e=function ise(t,n){return"number"==typeof Mx(t)?t.pop():n}(t,1/0),i=t;return i.length?1===i.length?qi(i[0]):qd(e)(Xn(i,n)):Ni}function sue(t,n){}class cn{viewContainerRef;injector;id;role="dialog";panelClass="";hasBackdrop=!0;backdropClass="";disableClose=!1;closePredicate;width="";height="";minWidth;minHeight;maxWidth;maxHeight;position;data=null;direction;ariaDescribedBy=null;ariaLabelledBy=null;ariaLabel=null;ariaModal=!1;autoFocus="first-tabbable";restoreFocus=!0;delayFocusTrap=!0;scrollStrategy;closeOnNavigation=!0;enterAnimationDuration;exitAnimationDuration}const Ak="mdc-dialog--open",k4="mdc-dialog--opening",S4="mdc-dialog--closing";let M4=(()=>{class t extends y4{_animationStateChanged=new ke;_animationsEnabled=!hi();_actionSectionCount=0;_hostElement=this._elementRef.nativeElement;_enterAnimationDuration=this._animationsEnabled?T4(this._config.enterAnimationDuration)??150:0;_exitAnimationDuration=this._animationsEnabled?T4(this._config.exitAnimationDuration)??75:0;_animationTimer=null;_contentAttached(){super._contentAttached(),this._startOpenAnimation()}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._enterAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(D4,`${this._enterAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(k4,Ak)),this._waitForAnimationToComplete(this._enterAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(Ak),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._exitAnimationDuration}),this._hostElement.classList.remove(Ak),this._animationsEnabled?(this._hostElement.style.setProperty(D4,`${this._exitAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(S4)),this._waitForAnimationToComplete(this._exitAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_updateActionSectionCount(e){this._actionSectionCount+=e,this._changeDetectorRef.markForCheck()}_finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._enterAnimationDuration)};_finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._exitAnimationDuration})};_clearAnimationClasses(){this._hostElement.classList.remove(k4,S4)}_waitForAnimationToComplete(e,i){null!==this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(i,e)}_requestAnimationFrame(e){this._ngZone.runOutsideAngular(()=>{"function"==typeof requestAnimationFrame?requestAnimationFrame(e):e()})}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(e){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:e})}ngOnDestroy(){super.ngOnDestroy(),null!==this._animationTimer&&clearTimeout(this._animationTimer)}attachComponentPortal(e){const i=super.attachComponentPortal(e);return i.location.nativeElement.classList.add("mat-mdc-dialog-component-host"),i}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275cmp=ae({type:t,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:10,hostBindings:function(i,o){2&i&&(gr("id",o._config.id),We("aria-modal",o._config.ariaModal)("role",o._config.role)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledByQueue[0])("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null),ve("_mat-animation-noopable",!o._animationsEnabled)("mat-mdc-dialog-container-with-actions",o._actionSectionCount>0))},features:[_e],decls:3,vars:0,consts:[[1,"mat-mdc-dialog-inner-container","mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1),rt(2,sue,0,0,"ng-template",2),u()())},dependencies:[ic],styles:['.mat-mdc-dialog-container{width:100%;height:100%;display:block;box-sizing:border-box;max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;outline:0}.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-max-width, 560px);min-width:var(--mat-dialog-container-min-width, 280px)}@media(max-width: 599px){.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-small-max-width, calc(100vw - 32px))}}.mat-mdc-dialog-inner-container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;opacity:0;transition:opacity linear var(--mat-dialog-transition-duration, 0ms);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mdc-dialog--closing .mat-mdc-dialog-inner-container{transition:opacity 75ms linear;transform:none}.mdc-dialog--open .mat-mdc-dialog-inner-container{opacity:1}._mat-animation-noopable .mat-mdc-dialog-inner-container{transition:none}.mat-mdc-dialog-surface{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;width:100%;height:100%;position:relative;overflow-y:auto;outline:0;transform:scale(0.8);transition:transform var(--mat-dialog-transition-duration, 0ms) cubic-bezier(0, 0, 0.2, 1);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;box-shadow:var(--mat-dialog-container-elevation-shadow, none);border-radius:var(--mat-dialog-container-shape, var(--mat-sys-corner-extra-large, 4px));background-color:var(--mat-dialog-container-color, var(--mat-sys-surface, white))}[dir=rtl] .mat-mdc-dialog-surface{text-align:right}.mdc-dialog--open .mat-mdc-dialog-surface,.mdc-dialog--closing .mat-mdc-dialog-surface{transform:none}._mat-animation-noopable .mat-mdc-dialog-surface{transition:none}.mat-mdc-dialog-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mat-mdc-dialog-title{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:var(--mat-dialog-headline-padding, 6px 24px 13px)}.mat-mdc-dialog-title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mat-mdc-dialog-title{text-align:right}.mat-mdc-dialog-container .mat-mdc-dialog-title{color:var(--mat-dialog-subhead-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-dialog-subhead-font, var(--mat-sys-headline-small-font, inherit));line-height:var(--mat-dialog-subhead-line-height, var(--mat-sys-headline-small-line-height, 1.5rem));font-size:var(--mat-dialog-subhead-size, var(--mat-sys-headline-small-size, 1rem));font-weight:var(--mat-dialog-subhead-weight, var(--mat-sys-headline-small-weight, 400));letter-spacing:var(--mat-dialog-subhead-tracking, var(--mat-sys-headline-small-tracking, 0.03125em))}.mat-mdc-dialog-content{display:block;flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;max-height:65vh}.mat-mdc-dialog-content>:first-child{margin-top:0}.mat-mdc-dialog-content>:last-child{margin-bottom:0}.mat-mdc-dialog-container .mat-mdc-dialog-content{color:var(--mat-dialog-supporting-text-color, var(--mat-sys-on-surface-variant, rgba(0, 0, 0, 0.6)));font-family:var(--mat-dialog-supporting-text-font, var(--mat-sys-body-medium-font, inherit));line-height:var(--mat-dialog-supporting-text-line-height, var(--mat-sys-body-medium-line-height, 1.5rem));font-size:var(--mat-dialog-supporting-text-size, var(--mat-sys-body-medium-size, 1rem));font-weight:var(--mat-dialog-supporting-text-weight, var(--mat-sys-body-medium-weight, 400));letter-spacing:var(--mat-dialog-supporting-text-tracking, var(--mat-sys-body-medium-tracking, 0.03125em))}.mat-mdc-dialog-container .mat-mdc-dialog-content{padding:var(--mat-dialog-content-padding, 20px 24px)}.mat-mdc-dialog-container-with-actions .mat-mdc-dialog-content{padding:var(--mat-dialog-with-actions-content-padding, 20px 24px 0)}.mat-mdc-dialog-container .mat-mdc-dialog-title+.mat-mdc-dialog-content{padding-top:0}.mat-mdc-dialog-actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;box-sizing:border-box;min-height:52px;margin:0;border-top:1px solid rgba(0,0,0,0);padding:var(--mat-dialog-actions-padding, 16px 24px);justify-content:var(--mat-dialog-actions-alignment, flex-end)}@media(forced-colors: active){.mat-mdc-dialog-actions{border-top-color:CanvasText}}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-start,.mat-mdc-dialog-actions[align=start]{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}.mat-mdc-dialog-component-host{display:contents}\n'],encapsulation:2})}return t})();const D4="--mat-dialog-transition-duration";function T4(t){return null==t?null:"number"==typeof t?t:t.endsWith("ms")?Bf(t.substring(0,t.length-2)):t.endsWith("s")?1e3*Bf(t.substring(0,t.length-1)):"0"===t?0:null}var Nb=function(t){return t[t.OPEN=0]="OPEN",t[t.CLOSING=1]="CLOSING",t[t.CLOSED=2]="CLOSED",t}(Nb||{});class Zt{_ref;_config;_containerInstance;componentInstance;componentRef=null;disableClose;id;_afterOpened=new co(1);_beforeClosed=new co(1);_result;_closeFallbackTimeout;_state=Nb.OPEN;_closeInteractionType;constructor(n,e,i){this._ref=n,this._config=e,this._containerInstance=i,this.disableClose=e.disableClose,this.id=n.id,n.addPanelClass("mat-mdc-dialog-panel"),i._animationStateChanged.pipe(Pn(o=>"opened"===o.state),wn(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),i._animationStateChanged.pipe(Pn(o=>"closed"===o.state),wn(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),n.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),Dr(this.backdropClick(),this.keydownEvents().pipe(Pn(o=>27===o.keyCode&&!this.disableClose&&!Mr(o)))).subscribe(o=>{this.disableClose||(o.preventDefault(),E4(this,"keydown"===o.type?"keyboard":"mouse"))})}close(n){const e=this._config.closePredicate;e&&!e(n,this._config,this.componentInstance)||(this._result=n,this._containerInstance._animationStateChanged.pipe(Pn(i=>"closing"===i.state),wn(1)).subscribe(i=>{this._beforeClosed.next(n),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),i.totalTime+100)}),this._state=Nb.CLOSING,this._containerInstance._startExitAnimation())}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(n){let e=this._ref.config.positionStrategy;return n&&(n.left||n.right)?n.left?e.left(n.left):e.right(n.right):e.centerHorizontally(),n&&(n.top||n.bottom)?n.top?e.top(n.top):e.bottom(n.bottom):e.centerVertically(),this._ref.updatePosition(),this}updateSize(n="",e=""){return this._ref.updateSize(n,e),this}addPanelClass(n){return this._ref.addPanelClass(n),this}removePanelClass(n){return this._ref.removePanelClass(n),this}getState(){return this._state}_finishDialogClose(){this._state=Nb.CLOSED,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}}function E4(t,n,e){return t._closeInteractionType=n,t.close(e)}const In=new Z("MatMdcDialogData"),P4=new Z("mat-mdc-dialog-default-options"),cue=new Z("mat-mdc-dialog-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Ue);return()=>_k(t)}});let Nt=(()=>{class t{_defaultOptions=T(P4,{optional:!0});_scrollStrategy=T(cue);_parentDialog=T(t,{optional:!0,skipSelf:!0});_idGenerator=T(si);_injector=T(Ue);_dialog=T(C4);_animationsDisabled=hi();_openDialogsAtThisLevel=[];_afterAllClosedAtThisLevel=new be;_afterOpenedAtThisLevel=new be;dialogConfigClass=cn;_dialogRefConstructor;_dialogContainerType;_dialogDataToken;get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}afterAllClosed=Sa(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(zn(void 0)));constructor(){this._dialogRefConstructor=Zt,this._dialogContainerType=M4,this._dialogDataToken=In}open(e,i){let o;(i={...this._defaultOptions||new cn,...i}).id=i.id||this._idGenerator.getId("mat-mdc-dialog-"),i.scrollStrategy=i.scrollStrategy||this._scrollStrategy();const r=this._dialog.open(e,{...i,positionStrategy:Pb().centerHorizontally().centerVertically(),disableClose:!0,closePredicate:void 0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,disableAnimations:this._animationsDisabled||"0"===i.enterAnimationDuration?.toLocaleString()||"0"===i.exitAnimationDuration?.toString(),container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:i},{provide:qf,useValue:i}]},templateContext:()=>({dialogRef:o}),providers:(s,a,l)=>(o=new this._dialogRefConstructor(s,i,l),o.updatePosition(i?.position),[{provide:this._dialogContainerType,useValue:l},{provide:this._dialogDataToken,useValue:a.data},{provide:this._dialogRefConstructor,useValue:o}])});return o.componentRef=r.componentRef,o.componentInstance=r.componentInstance,this.openDialogs.push(o),this.afterOpened.next(o),o.afterClosed().subscribe(()=>{const s=this.openDialogs.indexOf(o);s>-1&&(this.openDialogs.splice(s,1),this.openDialogs.length||this._getAfterAllClosed().next())}),o}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(e){return this.openDialogs.find(i=>i.id===e)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(e){let i=e.length;for(;i--;)e[i].close()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),I4=(()=>{class t{dialogRef=T(Zt,{optional:!0});_elementRef=T(Ne);_dialog=T(Nt);ariaLabel;type="button";dialogResult;_matDialogClose;constructor(){}ngOnInit(){this.dialogRef||(this.dialogRef=R4(this._elementRef,this._dialog.openDialogs))}ngOnChanges(e){const i=e._matDialogClose||e._matDialogCloseResult;i&&(this.dialogResult=i.currentValue)}_onButtonClick(e){E4(this.dialogRef,0===e.screenX&&0===e.screenY?"keyboard":"mouse",this.dialogResult)}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(i,o){1&i&&F("click",function(s){return o._onButtonClick(s)}),2&i&&We("aria-label",o.ariaLabel||null)("type",o.type)},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],type:"type",dialogResult:[0,"mat-dialog-close","dialogResult"],_matDialogClose:[0,"matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],features:[vi]})}return t})(),O4=(()=>{class t{_dialogRef=T(Zt,{optional:!0});_elementRef=T(Ne);_dialog=T(Nt);constructor(){}ngOnInit(){this._dialogRef||(this._dialogRef=R4(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then(()=>{this._onAdd()})}ngOnDestroy(){this._dialogRef?._containerInstance&&Promise.resolve().then(()=>{this._onRemove()})}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t})}return t})(),Rk=(()=>{class t extends O4{id=T(si).getId("mat-mdc-dialog-title-");_onAdd(){this._dialogRef._containerInstance?._addAriaLabelledBy?.(this.id)}_onRemove(){this._dialogRef?._containerInstance?._removeAriaLabelledBy?.(this.id)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","mat-dialog-title",""],["","matDialogTitle",""]],hostAttrs:[1,"mat-mdc-dialog-title","mdc-dialog__title"],hostVars:1,hostBindings:function(i,o){2&i&&gr("id",o.id)},inputs:{id:"id"},exportAs:["matDialogTitle"],features:[_e]})}return t})(),au=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-mdc-dialog-content","mdc-dialog__content"],features:[vI([WL])]})}return t})(),A4=(()=>{class t extends O4{align;_onAdd(){this._dialogRef._containerInstance?._updateActionSectionCount?.(1)}_onRemove(){this._dialogRef._containerInstance?._updateActionSectionCount?.(-1)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-mdc-dialog-actions","mdc-dialog__actions"],hostVars:6,hostBindings:function(i,o){2&i&&ve("mat-mdc-dialog-actions-align-start","start"===o.align)("mat-mdc-dialog-actions-align-center","center"===o.align)("mat-mdc-dialog-actions-align-end","end"===o.align)},inputs:{align:"align"},features:[_e]})}return t})();function R4(t,n){let e=t.nativeElement.parentElement;for(;e&&!e.classList.contains("mat-mdc-dialog-container");)e=e.parentElement;return e?n.find(i=>i.id===e.id):null}let due=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[Nt],imports:[oue,ru,Uf,ai]})}return t})();var Ko=function(t){return t[t.FADING_IN=0]="FADING_IN",t[t.VISIBLE=1]="VISIBLE",t[t.FADING_OUT=2]="FADING_OUT",t[t.HIDDEN=3]="HIDDEN",t}(Ko||{});class uue{_renderer;element;config;_animationForciblyDisabledThroughCss;state=Ko.HIDDEN;constructor(n,e,i,o=!1){this._renderer=n,this.element=e,this.config=i,this._animationForciblyDisabledThroughCss=o}fadeOut(){this._renderer.fadeOutRipple(this)}}const F4=Ek({passive:!0,capture:!0});class hue{_events=new Map;addHandler(n,e,i,o){const r=this._events.get(e);if(r){const s=r.get(i);s?s.add(o):r.set(i,new Set([o]))}else this._events.set(e,new Map([[i,new Set([o])]])),n.runOutsideAngular(()=>{document.addEventListener(e,this._delegateEventHandler,F4)})}removeHandler(n,e,i){const o=this._events.get(n);if(!o)return;const r=o.get(e);r&&(r.delete(i),0===r.size&&o.delete(e),0===o.size&&(this._events.delete(n),document.removeEventListener(n,this._delegateEventHandler,F4)))}_delegateEventHandler=n=>{const e=Sr(n);e&&this._events.get(n.type)?.forEach((i,o)=>{(o===e||o.contains(e))&&i.forEach(r=>r.handleEvent(n))})}}const Lb={enterDuration:225,exitDuration:150},N4=Ek({passive:!0,capture:!0}),L4=["mousedown","touchstart"],B4=["mouseup","mouseleave","touchend","touchcancel"];let pue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["ng-component"]],hostAttrs:["mat-ripple-style-loader",""],decls:0,vars:0,template:function(i,o){},styles:[".mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0, 0, 0.2, 1);transform:scale3d(0, 0, 0);background-color:var(--mat-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface) 10%, transparent))}@media(forced-colors: active){.mat-ripple-element{display:none}}.cdk-drag-preview .mat-ripple-element,.cdk-drag-placeholder .mat-ripple-element{display:none}\n"],encapsulation:2,changeDetection:0})}return t})();class Kf{_target;_ngZone;_platform;_containerElement;_triggerElement=null;_isPointerDown=!1;_activeRipples=new Map;_mostRecentTransientRipple=null;_lastTouchStartEvent;_pointerUpEventsRegistered=!1;_containerRect=null;static _eventManager=new hue;constructor(n,e,i,o,r){this._target=n,this._ngZone=e,this._platform=o,o.isBrowser&&(this._containerElement=Bs(i)),r&&r.get(qo).load(pue)}fadeInRipple(n,e,i={}){const o=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),r={...Lb,...i.animation};i.centered&&(n=o.left+o.width/2,e=o.top+o.height/2);const s=i.radius||function mue(t,n,e){const i=Math.max(Math.abs(t-e.left),Math.abs(t-e.right)),o=Math.max(Math.abs(n-e.top),Math.abs(n-e.bottom));return Math.sqrt(i*i+o*o)}(n,e,o),a=n-o.left,l=e-o.top,d=r.enterDuration,f=document.createElement("div");f.classList.add("mat-ripple-element"),f.style.left=a-s+"px",f.style.top=l-s+"px",f.style.height=2*s+"px",f.style.width=2*s+"px",null!=i.color&&(f.style.backgroundColor=i.color),f.style.transitionDuration=`${d}ms`,this._containerElement.appendChild(f);const m=window.getComputedStyle(f),b=m.transitionDuration,w="none"===m.transitionProperty||"0s"===b||"0s, 0s"===b||0===o.width&&0===o.height,M=new uue(this,f,i,w);f.style.transform="scale3d(1, 1, 1)",M.state=Ko.FADING_IN,i.persistent||(this._mostRecentTransientRipple=M);let E=null;return!w&&(d||r.exitDuration)&&this._ngZone.runOutsideAngular(()=>{const I=()=>{E&&(E.fallbackTimer=null),clearTimeout(W),this._finishRippleTransition(M)},A=()=>this._destroyRipple(M),W=setTimeout(A,d+100);f.addEventListener("transitionend",I),f.addEventListener("transitioncancel",A),E={onTransitionEnd:I,onTransitionCancel:A,fallbackTimer:W}}),this._activeRipples.set(M,E),(w||!d)&&this._finishRippleTransition(M),M}fadeOutRipple(n){if(n.state===Ko.FADING_OUT||n.state===Ko.HIDDEN)return;const e=n.element,i={...Lb,...n.config.animation};e.style.transitionDuration=`${i.exitDuration}ms`,e.style.opacity="0",n.state=Ko.FADING_OUT,(n._animationForciblyDisabledThroughCss||!i.exitDuration)&&this._finishRippleTransition(n)}fadeOutAll(){this._getActiveRipples().forEach(n=>n.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(n=>{n.config.persistent||n.fadeOut()})}setupTriggerEvents(n){const e=Bs(n);!this._platform.isBrowser||!e||e===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=e,L4.forEach(i=>{Kf._eventManager.addHandler(this._ngZone,i,e,this)}))}handleEvent(n){"mousedown"===n.type?this._onMousedown(n):"touchstart"===n.type?this._onTouchStart(n):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{B4.forEach(e=>{this._triggerElement.addEventListener(e,this,N4)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(n){n.state===Ko.FADING_IN?this._startFadeOutTransition(n):n.state===Ko.FADING_OUT&&this._destroyRipple(n)}_startFadeOutTransition(n){const e=n===this._mostRecentTransientRipple,{persistent:i}=n.config;n.state=Ko.VISIBLE,!i&&(!e||!this._isPointerDown)&&n.fadeOut()}_destroyRipple(n){const e=this._activeRipples.get(n)??null;this._activeRipples.delete(n),this._activeRipples.size||(this._containerRect=null),n===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),n.state=Ko.HIDDEN,null!==e&&(n.element.removeEventListener("transitionend",e.onTransitionEnd),n.element.removeEventListener("transitioncancel",e.onTransitionCancel),null!==e.fallbackTimer&&clearTimeout(e.fallbackTimer)),n.element.remove()}_onMousedown(n){const e=Dk(n),i=this._lastTouchStartEvent&&Date.now(){!n.config.persistent&&(n.state===Ko.VISIBLE||n.config.terminateOnPointerUp&&n.state===Ko.FADING_IN)&&n.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){const n=this._triggerElement;n&&(L4.forEach(e=>Kf._eventManager.removeHandler(e,n,this)),this._pointerUpEventsRegistered&&(B4.forEach(e=>n.removeEventListener(e,this,N4)),this._pointerUpEventsRegistered=!1))}}const Fk=new Z("mat-ripple-global-options");let lu=(()=>{class t{_elementRef=T(Ne);_animationsDisabled=hi();color;unbounded=!1;centered=!1;radius=0;animation;get disabled(){return this._disabled}set disabled(e){e&&this.fadeOutAllNonPersistent(),this._disabled=e,this._setupTriggerEventsIfEnabled()}_disabled=!1;get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(e){this._trigger=e,this._setupTriggerEventsIfEnabled()}_trigger;_rippleRenderer;_globalOptions;_isInitialized=!1;constructor(){const e=T(Ce),i=T(Zn),o=T(Fk,{optional:!0}),r=T(Ue);this._globalOptions=o||{},this._rippleRenderer=new Kf(this,e,this._elementRef,i,r)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:{...this._globalOptions.animation,...this._animationsDisabled?{enterDuration:0,exitDuration:0}:{},...this.animation},terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(e,i=0,o){return"number"==typeof e?this._rippleRenderer.fadeInRipple(e,i,{...this.rippleConfig,...o}):this._rippleRenderer.fadeInRipple(0,0,{...this.rippleConfig,...e})}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(i,o){2&i&&ve("mat-ripple-unbounded",o.unbounded)},inputs:{color:[0,"matRippleColor","color"],unbounded:[0,"matRippleUnbounded","unbounded"],centered:[0,"matRippleCentered","centered"],radius:[0,"matRippleRadius","radius"],animation:[0,"matRippleAnimation","animation"],disabled:[0,"matRippleDisabled","disabled"],trigger:[0,"matRippleTrigger","trigger"]},exportAs:["matRipple"]})}return t})();const gue={capture:!0},_ue=["focus","mousedown","mouseenter","touchstart"],Nk="mat-ripple-loader-uninitialized",Lk="mat-ripple-loader-class-name",V4="mat-ripple-loader-centered",Bb="mat-ripple-loader-disabled";let bue=(()=>{class t{_document=T(et);_animationsDisabled=hi();_globalRippleOptions=T(Fk,{optional:!0});_platform=T(Zn);_ngZone=T(Ce);_injector=T(Ue);_eventCleanups;_hosts=new Map;constructor(){const e=T(Uo).createRenderer(null,null);this._eventCleanups=this._ngZone.runOutsideAngular(()=>_ue.map(i=>e.listen(this._document,i,this._onInteraction,gue)))}ngOnDestroy(){const e=this._hosts.keys();for(const i of e)this.destroyRipple(i);this._eventCleanups.forEach(i=>i())}configureRipple(e,i){e.setAttribute(Nk,this._globalRippleOptions?.namespace??""),(i.className||!e.hasAttribute(Lk))&&e.setAttribute(Lk,i.className||""),i.centered&&e.setAttribute(V4,""),i.disabled&&e.setAttribute(Bb,"")}setDisabled(e,i){const o=this._hosts.get(e);o?(o.target.rippleDisabled=i,!i&&!o.hasSetUpEvents&&(o.hasSetUpEvents=!0,o.renderer.setupTriggerEvents(e))):i?e.setAttribute(Bb,""):e.removeAttribute(Bb)}_onInteraction=e=>{const i=Sr(e);if(i instanceof HTMLElement){const o=i.closest(`[${Nk}="${this._globalRippleOptions?.namespace??""}"]`);o&&this._createRipple(o)}};_createRipple(e){if(!this._document||this._hosts.has(e))return;e.querySelector(".mat-ripple")?.remove();const i=this._document.createElement("span");i.classList.add("mat-ripple",e.getAttribute(Lk)),e.append(i);const o=this._globalRippleOptions,r=this._animationsDisabled?0:o?.animation?.enterDuration??Lb.enterDuration,s=this._animationsDisabled?0:o?.animation?.exitDuration??Lb.exitDuration,a={rippleDisabled:this._animationsDisabled||o?.disabled||e.hasAttribute(Bb),rippleConfig:{centered:e.hasAttribute(V4),terminateOnPointerUp:o?.terminateOnPointerUp,animation:{enterDuration:r,exitDuration:s}}},l=new Kf(a,this._ngZone,i,this._platform,this._injector),d=!a.rippleDisabled;d&&l.setupTriggerEvents(e),this._hosts.set(e,{target:a,renderer:l,hasSetUpEvents:d}),e.removeAttribute(Nk)}destroyRipple(e){const i=this._hosts.get(e);i&&(i.renderer._removeTriggerEvents(),this._hosts.delete(e))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),cu=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["structural-styles"]],decls:0,vars:0,template:function(i,o){},styles:['.mat-focus-indicator{position:relative}.mat-focus-indicator::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border-width:var(--mat-focus-indicator-border-width, 3px);border-style:var(--mat-focus-indicator-border-style, solid);border-color:var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus-visible::before{content:""}@media(forced-colors: active){html{--mat-focus-indicator-display: block}}\n'],encapsulation:2,changeDetection:0})}return t})();const vue=["mat-icon-button",""],yue=["*"],Cue=new Z("MAT_BUTTON_CONFIG");function H4(t){return null==t?void 0:_r(t)}let U4=(()=>{class t{_elementRef=T(Ne);_ngZone=T(Ce);_animationsDisabled=hi();_config=T(Cue,{optional:!0});_focusMonitor=T(ac);_cleanupClick;_renderer=T(ei);_rippleLoader=T(bue);_isAnchor;_isFab=!1;color;get disableRipple(){return this._disableRipple}set disableRipple(e){this._disableRipple=e,this._updateRippleDisabled()}_disableRipple=!1;get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._updateRippleDisabled()}_disabled=!1;ariaDisabled;disabledInteractive;tabIndex;set _tabindex(e){this.tabIndex=e}constructor(){T(qo).load(cu);const e=this._elementRef.nativeElement;this._isAnchor="A"===e.tagName,this.disabledInteractive=this._config?.disabledInteractive??!1,this.color=this._config?.color??null,this._rippleLoader?.configureRipple(e,{className:"mat-mdc-button-ripple"})}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0),this._isAnchor&&this._setupAsAnchor()}ngOnDestroy(){this._cleanupClick?.(),this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement)}focus(e="program",i){e?this._focusMonitor.focusVia(this._elementRef.nativeElement,e,i):this._elementRef.nativeElement.focus(i)}_getAriaDisabled(){return null!=this.ariaDisabled?this.ariaDisabled:this._isAnchor?this.disabled||null:!(!this.disabled||!this.disabledInteractive)||null}_getDisabledAttribute(){return!(this.disabledInteractive||!this.disabled)||null}_updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementRef.nativeElement,this.disableRipple||this.disabled)}_getTabIndex(){return this._isAnchor&&this.disabled&&!this.disabledInteractive?-1:this.tabIndex}_setupAsAnchor(){this._cleanupClick=this._ngZone.runOutsideAngular(()=>this._renderer.listen(this._elementRef.nativeElement,"click",e=>{this.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}))}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,hostAttrs:[1,"mat-mdc-button-base"],hostVars:13,hostBindings:function(i,o){2&i&&(We("disabled",o._getDisabledAttribute())("aria-disabled",o._getAriaDisabled())("tabindex",o._getTabIndex()),Ge(o.color?"mat-"+o.color:""),ve("mat-mdc-button-disabled",o.disabled)("mat-mdc-button-disabled-interactive",o.disabledInteractive)("mat-unthemed",!o.color)("_mat-animation-noopable",o._animationsDisabled))},inputs:{color:"color",disableRipple:[2,"disableRipple","disableRipple",Te],disabled:[2,"disabled","disabled",Te],ariaDisabled:[2,"aria-disabled","ariaDisabled",Te],disabledInteractive:[2,"disabledInteractive","disabledInteractive",Te],tabIndex:[2,"tabIndex","tabIndex",H4],_tabindex:[2,"tabindex","_tabindex",H4]}})}return t})(),Yo=(()=>{class t extends U4{constructor(){super(),this._rippleLoader.configureRipple(this._elementRef.nativeElement,{centered:!0})}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["button","mat-icon-button",""],["a","mat-icon-button",""],["button","matIconButton",""],["a","matIconButton",""]],hostAttrs:[1,"mdc-icon-button","mat-mdc-icon-button"],exportAs:["matButton","matAnchor"],features:[_e],attrs:vue,ngContentSelectors:yue,decls:4,vars:0,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(i,o){1&i&&(xi(),ma(0,"span",0),Rt(1),ma(2,"span",1)(3,"span",2))},styles:['.mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%));flex-shrink:0;text-align:center;width:var(--mat-icon-button-state-layer-size, 40px);height:var(--mat-icon-button-state-layer-size, 40px);padding:calc(calc(var(--mat-icon-button-state-layer-size, 40px) - var(--mat-icon-button-icon-size, 24px)) / 2);font-size:var(--mat-icon-button-icon-size, 24px);color:var(--mat-icon-button-icon-color, var(--mat-sys-on-surface-variant));-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-icon-button:focus-visible>.mat-focus-indicator::before{content:"";border-radius:inherit}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface-variant) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-icon-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-icon-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-icon-button-touch-target-size, 48px);display:var(--mat-icon-button-touch-target-display, block);left:50%;width:var(--mat-icon-button-touch-target-size, 48px);transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-icon-button-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mat-icon-button-icon-size, 24px);height:var(--mat-icon-button-icon-size, 24px);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%))}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}\n',"@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}\n"],encapsulation:2,changeDetection:0})}return t})(),Bk=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ai]})}return t})();const wue=["matButton",""],xue=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],kue=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"],z4=new Map([["text",["mat-mdc-button"]],["filled",["mdc-button--unelevated","mat-mdc-unelevated-button"]],["elevated",["mdc-button--raised","mat-mdc-raised-button"]],["outlined",["mdc-button--outlined","mat-mdc-outlined-button"]],["tonal",["mat-tonal-button"]]]);let Ht=(()=>{class t extends U4{get appearance(){return this._appearance}set appearance(e){this.setAppearance(e||this._config?.defaultAppearance||"text")}_appearance=null;constructor(){super();const e=function Sue(t){return t.hasAttribute("mat-raised-button")?"elevated":t.hasAttribute("mat-stroked-button")?"outlined":t.hasAttribute("mat-flat-button")?"filled":t.hasAttribute("mat-button")?"text":null}(this._elementRef.nativeElement);e&&this.setAppearance(e)}setAppearance(e){if(e===this._appearance)return;const i=this._elementRef.nativeElement.classList,o=this._appearance?z4.get(this._appearance):null,r=z4.get(e);o&&i.remove(...o),i.add(...r),this._appearance=e}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["button","matButton",""],["a","matButton",""],["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""],["a","mat-button",""],["a","mat-raised-button",""],["a","mat-flat-button",""],["a","mat-stroked-button",""]],hostAttrs:[1,"mdc-button"],inputs:{appearance:[0,"matButton","appearance"]},exportAs:["matButton","matAnchor"],features:[_e],attrs:wue,ngContentSelectors:kue,decls:7,vars:4,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(i,o){1&i&&(xi(xue),ma(0,"span",0),Rt(1),Ms(2,"span",1),Rt(3,1),Bl(),Rt(4,2),ma(5,"span",2)(6,"span",3)),2&i&&ve("mdc-button__ripple",!o._isFab)("mdc-fab__ripple",o._isFab)},styles:['.mat-mdc-button-base{text-decoration:none}.mat-mdc-button-base .mat-icon{min-height:fit-content;flex-shrink:0}@media(hover: none){.mat-mdc-button-base:hover>span.mat-mdc-button-persistent-ripple::before{opacity:0}}.mdc-button{-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0);padding:0 8px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__label{position:relative}.mat-mdc-button{padding:0 var(--mat-button-text-horizontal-padding, 12px);height:var(--mat-button-text-container-height, 40px);font-family:var(--mat-button-text-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-text-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-text-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-text-label-text-transform);font-weight:var(--mat-button-text-label-text-weight, var(--mat-sys-label-large-weight))}.mat-mdc-button,.mat-mdc-button .mdc-button__ripple{border-radius:var(--mat-button-text-container-shape, var(--mat-sys-corner-full))}.mat-mdc-button:not(:disabled){color:var(--mat-button-text-label-text-color, var(--mat-sys-primary))}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-text-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-button-text-with-icon-horizontal-padding, 16px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-button-text-icon-spacing, 8px);margin-left:var(--mat-button-text-icon-offset, -4px)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-button-text-icon-offset, -4px);margin-left:var(--mat-button-text-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-text-icon-offset, -4px);margin-left:var(--mat-button-text-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-text-icon-spacing, 8px);margin-left:var(--mat-button-text-icon-offset, -4px)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-button-text-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-text-state-layer-color, var(--mat-sys-primary))}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-text-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-text-touch-target-size, 48px);display:var(--mat-button-text-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-unelevated-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-filled-container-height, 40px);font-family:var(--mat-button-filled-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-filled-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-filled-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-filled-label-text-transform);font-weight:var(--mat-button-filled-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-filled-horizontal-padding, 24px)}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-button-filled-icon-spacing, 8px);margin-left:var(--mat-button-filled-icon-offset, -8px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-button-filled-icon-offset, -8px);margin-left:var(--mat-button-filled-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-filled-icon-offset, -8px);margin-left:var(--mat-button-filled-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-filled-icon-spacing, 8px);margin-left:var(--mat-button-filled-icon-offset, -8px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-button-filled-ripple-color, color-mix(in srgb, var(--mat-sys-on-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-filled-state-layer-color, var(--mat-sys-on-primary))}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-filled-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-unelevated-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-unelevated-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-unelevated-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-filled-touch-target-size, 48px);display:var(--mat-button-filled-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mat-button-filled-label-text-color, var(--mat-sys-on-primary));background-color:var(--mat-button-filled-container-color, var(--mat-sys-primary))}.mat-mdc-unelevated-button,.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mat-button-filled-container-shape, var(--mat-sys-corner-full))}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-filled-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-filled-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);box-shadow:var(--mat-button-protected-container-elevation-shadow, var(--mat-sys-level1));height:var(--mat-button-protected-container-height, 40px);font-family:var(--mat-button-protected-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-protected-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-protected-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-protected-label-text-transform);font-weight:var(--mat-button-protected-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-protected-horizontal-padding, 24px)}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-button-protected-icon-spacing, 8px);margin-left:var(--mat-button-protected-icon-offset, -8px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-button-protected-icon-offset, -8px);margin-left:var(--mat-button-protected-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-protected-icon-offset, -8px);margin-left:var(--mat-button-protected-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-protected-icon-spacing, 8px);margin-left:var(--mat-button-protected-icon-offset, -8px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-button-protected-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-protected-state-layer-color, var(--mat-sys-primary))}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-protected-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-raised-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-raised-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-raised-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-protected-touch-target-size, 48px);display:var(--mat-button-protected-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-raised-button:not(:disabled){color:var(--mat-button-protected-label-text-color, var(--mat-sys-primary));background-color:var(--mat-button-protected-container-color, var(--mat-sys-surface))}.mat-mdc-raised-button,.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mat-button-protected-container-shape, var(--mat-sys-corner-full))}@media(hover: hover){.mat-mdc-raised-button:hover{box-shadow:var(--mat-button-protected-hover-container-elevation-shadow, var(--mat-sys-level2))}}.mat-mdc-raised-button:focus{box-shadow:var(--mat-button-protected-focus-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mat-button-protected-pressed-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-protected-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-protected-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mat-button-protected-disabled-container-elevation-shadow, var(--mat-sys-level0))}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-outlined-container-height, 40px);font-family:var(--mat-button-outlined-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-outlined-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-outlined-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-outlined-label-text-transform);font-weight:var(--mat-button-outlined-label-text-weight, var(--mat-sys-label-large-weight));border-radius:var(--mat-button-outlined-container-shape, var(--mat-sys-corner-full));border-width:var(--mat-button-outlined-outline-width, 1px);padding:0 var(--mat-button-outlined-horizontal-padding, 24px)}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-button-outlined-icon-spacing, 8px);margin-left:var(--mat-button-outlined-icon-offset, -8px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-button-outlined-icon-offset, -8px);margin-left:var(--mat-button-outlined-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-outlined-icon-offset, -8px);margin-left:var(--mat-button-outlined-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-outlined-icon-spacing, 8px);margin-left:var(--mat-button-outlined-icon-offset, -8px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-button-outlined-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-outlined-state-layer-color, var(--mat-sys-primary))}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-outlined-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-outlined-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-outlined-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-outlined-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-outlined-touch-target-size, 48px);display:var(--mat-button-outlined-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-outlined-button:not(:disabled){color:var(--mat-button-outlined-label-text-color, var(--mat-sys-primary));border-color:var(--mat-button-outlined-outline-color, var(--mat-sys-outline))}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-outlined-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:var(--mat-button-outlined-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-tonal-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-tonal-container-height, 40px);font-family:var(--mat-button-tonal-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-tonal-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-tonal-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-tonal-label-text-transform);font-weight:var(--mat-button-tonal-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-tonal-horizontal-padding, 24px)}.mat-tonal-button:not(:disabled){color:var(--mat-button-tonal-label-text-color, var(--mat-sys-on-secondary-container));background-color:var(--mat-button-tonal-container-color, var(--mat-sys-secondary-container))}.mat-tonal-button,.mat-tonal-button .mdc-button__ripple{border-radius:var(--mat-button-tonal-container-shape, var(--mat-sys-corner-full))}.mat-tonal-button[disabled],.mat-tonal-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-tonal-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-tonal-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-tonal-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-tonal-button>.mat-icon{margin-right:var(--mat-button-tonal-icon-spacing, 8px);margin-left:var(--mat-button-tonal-icon-offset, -8px)}[dir=rtl] .mat-tonal-button>.mat-icon{margin-right:var(--mat-button-tonal-icon-offset, -8px);margin-left:var(--mat-button-tonal-icon-spacing, 8px)}.mat-tonal-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-tonal-icon-offset, -8px);margin-left:var(--mat-button-tonal-icon-spacing, 8px)}[dir=rtl] .mat-tonal-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-tonal-icon-spacing, 8px);margin-left:var(--mat-button-tonal-icon-offset, -8px)}.mat-tonal-button .mat-ripple-element{background-color:var(--mat-button-tonal-ripple-color, color-mix(in srgb, var(--mat-sys-on-secondary-container) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-tonal-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-tonal-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-tonal-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-tonal-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-tonal-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-tonal-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-tonal-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-tonal-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-tonal-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-tonal-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-tonal-touch-target-size, 48px);display:var(--mat-button-tonal-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button,.mat-tonal-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before,.mat-tonal-button .mat-mdc-button-ripple,.mat-tonal-button .mat-mdc-button-persistent-ripple,.mat-tonal-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-tonal-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before,.mat-tonal-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-button .mat-icon,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-unelevated-button .mat-icon,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-raised-button .mat-icon,.mat-mdc-outlined-button .mdc-button__label,.mat-mdc-outlined-button .mat-icon,.mat-tonal-button .mdc-button__label,.mat-tonal-button .mat-icon{z-index:1;position:relative}.mat-mdc-button .mat-focus-indicator,.mat-mdc-unelevated-button .mat-focus-indicator,.mat-mdc-raised-button .mat-focus-indicator,.mat-mdc-outlined-button .mat-focus-indicator,.mat-tonal-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-unelevated-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-raised-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-outlined-button:focus-visible>.mat-focus-indicator::before,.mat-tonal-button:focus-visible>.mat-focus-indicator::before{content:"";border-radius:inherit}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable,.mat-tonal-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon,.mat-tonal-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px}.mat-mdc-unelevated-button .mat-focus-indicator::before,.mat-tonal-button .mat-focus-indicator::before,.mat-mdc-raised-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px)*-1)}\n',"@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}\n"],encapsulation:2,changeDetection:0})}return t})(),j4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[Bk,ai]})}return t})();function Tue(t,n){if(1&t){const e=re();h(0,"div",1)(1,"button",2),F("click",function(){return V(e),H(y().action())}),p(2),u()()}if(2&t){const e=y();c(2),D(" ",e.data.action," ")}}const Eue=["label"];function Pue(t,n){}const Iue=Math.pow(2,31)-1;class Vb{_overlayRef;instance;containerInstance;_afterDismissed=new be;_afterOpened=new be;_onAction=new be;_durationTimeoutId;_dismissedByAction=!1;constructor(n,e){this._overlayRef=e,this.containerInstance=n,n._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(n){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(n,Iue))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}}const Vk=new Z("MatSnackBarData");class Hb{politeness="polite";announcementMessage="";viewContainerRef;duration=0;panelClass;direction;data=null;horizontalPosition="center";verticalPosition="bottom"}let $4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"]})}return t})(),W4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"]})}return t})(),G4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"]})}return t})(),q4=(()=>{class t{snackBarRef=T(Vb);data=T(Vk);constructor(){}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions",""],["matButton","","matSnackBarAction","",3,"click"]],template:function(i,o){1&i&&(h(0,"div",0),p(1),u(),x(2,Tue,3,1,"div",1)),2&i&&(c(),D(" ",o.data.message,"\n"),c(),k(o.hasAction?2:-1))},dependencies:[Ht,$4,W4,G4],styles:[".mat-mdc-simple-snack-bar{display:flex}.mat-mdc-simple-snack-bar .mat-mdc-snack-bar-label{max-height:50vh;overflow:auto}\n"],encapsulation:2,changeDetection:0})}return t})();const Hk="_mat-snack-bar-enter",Uk="_mat-snack-bar-exit";let K4=(()=>{class t extends kb{_ngZone=T(Ce);_elementRef=T(Ne);_changeDetectorRef=T(Dt);_platform=T(Zn);_animationsDisabled=hi();snackBarConfig=T(Hb);_document=T(et);_trackedModals=new Set;_enterFallback;_exitFallback;_injector=T(Ue);_announceDelay=150;_announceTimeoutId;_destroyed=!1;_portalOutlet;_onAnnounce=new be;_onExit=new be;_onEnter=new be;_animationState="void";_live;_label;_role;_liveElementId=T(si).getId("mat-snack-bar-container-live-");constructor(){super();const e=this.snackBarConfig;this._live="assertive"!==e.politeness||e.announcementMessage?"off"===e.politeness?"off":"polite":"assertive",this._platform.FIREFOX&&("polite"===this._live&&(this._role="status"),"assertive"===this._live&&(this._role="alert"))}attachComponentPortal(e){this._assertNotAttached();const i=this._portalOutlet.attachComponentPortal(e);return this._afterPortalAttached(),i}attachTemplatePortal(e){this._assertNotAttached();const i=this._portalOutlet.attachTemplatePortal(e);return this._afterPortalAttached(),i}attachDomPortal=e=>{this._assertNotAttached();const i=this._portalOutlet.attachDomPortal(e);return this._afterPortalAttached(),i};onAnimationEnd(e){e===Uk?this._completeExit():e===Hk&&(clearTimeout(this._enterFallback),this._ngZone.run(()=>{this._onEnter.next(),this._onEnter.complete()}))}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce(),this._animationsDisabled?Wi(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(Hk)))},{injector:this._injector}):(clearTimeout(this._enterFallback),this._enterFallback=setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-snack-bar-fallback-visible"),this.onAnimationEnd(Hk)},200)))}exit(){return this._destroyed?se(void 0):(this._ngZone.run(()=>{this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._elementRef.nativeElement.setAttribute("mat-exit",""),clearTimeout(this._announceTimeoutId),this._animationsDisabled?Wi(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(Uk)))},{injector:this._injector}):(clearTimeout(this._exitFallback),this._exitFallback=setTimeout(()=>this.onAnimationEnd(Uk),200))}),this._onExit)}ngOnDestroy(){this._destroyed=!0,this._clearFromModals(),this._completeExit()}_completeExit(){clearTimeout(this._exitFallback),queueMicrotask(()=>{this._onExit.next(),this._onExit.complete()})}_afterPortalAttached(){const e=this._elementRef.nativeElement,i=this.snackBarConfig.panelClass;i&&(Array.isArray(i)?i.forEach(s=>e.classList.add(s)):e.classList.add(i)),this._exposeToModals();const o=this._label.nativeElement,r="mdc-snackbar__label";o.classList.toggle(r,!o.querySelector(`.${r}`))}_exposeToModals(){const e=this._liveElementId,i=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal="true"]');for(let o=0;o{const i=e.getAttribute("aria-owns");if(i){const o=i.replace(this._liveElementId,"").trim();o.length>0?e.setAttribute("aria-owns",o):e.removeAttribute("aria-owns")}}),this._trackedModals.clear()}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{if(this._destroyed)return;const e=this._elementRef.nativeElement,i=e.querySelector("[aria-hidden]"),o=e.querySelector("[aria-live]");if(i&&o){let r=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&i.contains(document.activeElement)&&(r=document.activeElement),i.removeAttribute("aria-hidden"),o.appendChild(i),r?.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-snack-bar-container"]],viewQuery:function(i,o){if(1&i&&st(ic,7)(Eue,7),2&i){let r;fe(r=pe())&&(o._portalOutlet=r.first),fe(r=pe())&&(o._label=r.first)}},hostAttrs:[1,"mdc-snackbar","mat-mdc-snack-bar-container"],hostVars:6,hostBindings:function(i,o){1&i&&F("animationend",function(s){return o.onAnimationEnd(s.animationName)})("animationcancel",function(s){return o.onAnimationEnd(s.animationName)}),2&i&&ve("mat-snack-bar-container-enter","visible"===o._animationState)("mat-snack-bar-container-exit","hidden"===o._animationState)("mat-snack-bar-container-animations-enabled",!o._animationsDisabled)},features:[_e],decls:6,vars:3,consts:[["label",""],[1,"mdc-snackbar__surface","mat-mdc-snackbar-surface"],[1,"mat-mdc-snack-bar-label"],["aria-hidden","true"],["cdkPortalOutlet",""]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2,0)(3,"div",3),rt(4,Pue,0,0,"ng-template",4),u(),L(5,"div"),u()()),2&i&&(c(5),We("aria-live",o._live)("role",o._role)("id",o._liveElementId))},dependencies:[ic],styles:["@keyframes _mat-snack-bar-enter{from{transform:scale(0.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes _mat-snack-bar-exit{from{opacity:1}to{opacity:0}}.mat-mdc-snack-bar-container{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:8px}.mat-mdc-snack-bar-handset .mat-mdc-snack-bar-container{width:100vw}.mat-snack-bar-container-animations-enabled{opacity:0}.mat-snack-bar-container-animations-enabled.mat-snack-bar-fallback-visible{opacity:1}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-enter{animation:_mat-snack-bar-enter 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-exit{animation:_mat-snack-bar-exit 75ms cubic-bezier(0.4, 0, 1, 1) forwards}.mat-mdc-snackbar-surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;padding-left:0;padding-right:8px}[dir=rtl] .mat-mdc-snackbar-surface{padding-right:0;padding-left:8px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{min-width:344px;max-width:672px}.mat-mdc-snack-bar-handset .mat-mdc-snackbar-surface{width:100%;min-width:0}@media(forced-colors: active){.mat-mdc-snackbar-surface{outline:solid 1px}}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{color:var(--mat-snack-bar-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-snack-bar-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-snack-bar-container-color, var(--mat-sys-inverse-surface))}.mdc-snackbar__label{width:100%;flex-grow:1;box-sizing:border-box;margin:0;padding:14px 8px 14px 16px}[dir=rtl] .mdc-snackbar__label{padding-left:8px;padding-right:16px}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-family:var(--mat-snack-bar-supporting-text-font, var(--mat-sys-body-medium-font));font-size:var(--mat-snack-bar-supporting-text-size, var(--mat-sys-body-medium-size));font-weight:var(--mat-snack-bar-supporting-text-weight, var(--mat-sys-body-medium-weight));line-height:var(--mat-snack-bar-supporting-text-line-height, var(--mat-sys-body-medium-line-height))}.mat-mdc-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled).mat-unthemed{color:var(--mat-snack-bar-button-color, var(--mat-sys-inverse-primary))}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){--mat-button-text-state-layer-color: currentColor;--mat-button-text-ripple-color: currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}\n"],encapsulation:2})}return t})();const Y4=new Z("mat-snack-bar-default-options",{providedIn:"root",factory:()=>new Hb});let X4=(()=>{class t{_live=T(m4);_injector=T(Ue);_breakpointObserver=T(a4);_parentSnackBar=T(t,{optional:!0,skipSelf:!0});_defaultConfig=T(Y4);_animationsDisabled=hi();_snackBarRefAtThisLevel=null;simpleSnackBarComponent=q4;snackBarContainerComponent=K4;handsetCssClass="mat-mdc-snack-bar-handset";get _openedSnackBarRef(){const e=this._parentSnackBar;return e?e._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(e){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=e:this._snackBarRefAtThisLevel=e}constructor(){}openFromComponent(e,i){return this._attach(e,i)}openFromTemplate(e,i){return this._attach(e,i)}open(e,i="",o){const r={...this._defaultConfig,...o};return r.data={message:e,action:i},r.announcementMessage===e&&(r.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,r)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(e,i){const r=Ue.create({parent:i&&i.viewContainerRef&&i.viewContainerRef.injector||this._injector,providers:[{provide:Hb,useValue:i}]}),s=new nu(this.snackBarContainerComponent,i.viewContainerRef,r),a=e.attach(s);return a.instance.snackBarConfig=i,a.instance}_attach(e,i){const o={...new Hb,...this._defaultConfig,...i},r=this._createOverlay(o),s=this._attachSnackBarContainer(r,o),a=new Vb(s,r);if(e instanceof Oi){const l=new nc(e,null,{$implicit:o.data,snackBarRef:a});a.instance=s.attachTemplatePortal(l)}else{const l=this._createInjector(o,a),d=new nu(e,void 0,l),f=s.attachComponentPortal(d);a.instance=f.instance}return this._breakpointObserver.observe("(max-width: 599.98px) and (orientation: portrait)").pipe(ln(r.detachments())).subscribe(l=>{r.overlayElement.classList.toggle(this.handsetCssClass,l.matches)}),o.announcementMessage&&s._onAnnounce.subscribe(()=>{this._live.announce(o.announcementMessage,o.politeness)}),this._animateSnackBar(a,o),this._openedSnackBarRef=a,this._openedSnackBarRef}_animateSnackBar(e,i){e.afterDismissed().subscribe(()=>{this._openedSnackBarRef==e&&(this._openedSnackBarRef=null),i.announcementMessage&&this._live.clear()}),i.duration&&i.duration>0&&e.afterOpened().subscribe(()=>e._dismissAfter(i.duration)),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{e.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):e.containerInstance.enter()}_createOverlay(e){const i=new Wf;i.direction=e.direction;const o=Pb(),r="rtl"===e.direction,s="left"===e.horizontalPosition||"start"===e.horizontalPosition&&!r||"end"===e.horizontalPosition&&r,a=!s&&"center"!==e.horizontalPosition;return s?o.left("0"):a?o.right("0"):o.centerHorizontally(),"top"===e.verticalPosition?o.top("0"):o.bottom("0"),i.positionStrategy=o,i.disableAnimations=this._animationsDisabled,ou(this._injector,i)}_createInjector(e,i){return Ue.create({parent:e&&e.viewContainerRef&&e.viewContainerRef.injector||this._injector,providers:[{provide:Vb,useValue:i},{provide:Vk,useValue:e.data}]})}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Oue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[X4],imports:[ru,Uf,j4,q4,ai]})}return t})();function du(...t){const n=dN(t),{args:e,keys:i}=EN(t),o=new zt(r=>{const{length:s}=e;if(!s)return void r.complete();const a=new Array(s);let l=s,d=s;for(let f=0;f{m||(m=!0,d--),a[f]=g},()=>l--,void 0,()=>{(!l||!m)&&(d||r.next(i?IN(i,a):a),r.complete())}))}});return n?o.pipe(PN(n)):o}function Z4(t={}){const{connector:n=()=>new be,resetOnError:e=!0,resetOnComplete:i=!0,resetOnRefCountZero:o=!0}=t;return r=>{let s,a,l,d=0,f=!1,m=!1;const g=()=>{a?.unsubscribe(),a=void 0},b=()=>{g(),s=l=void 0,f=m=!1},w=()=>{const M=s;b(),M?.unsubscribe()};return En((M,E)=>{d++,!m&&!f&&g();const I=l=l??n();E.add(()=>{d--,0===d&&!m&&!f&&(a=zk(w,o))}),I.subscribe(E),!s&&d>0&&(s=new Hu({next:A=>I.next(A),error:A=>{m=!0,g(),a=zk(b,e,A),I.error(A)},complete:()=>{f=!0,g(),a=zk(b,i),I.complete()}}),qi(M).subscribe(s))})(r)}}function zk(t,n,...e){if(!0===n)return void t();if(!1===n)return;const i=new Hu({next:()=>{i.unsubscribe(),t()}});return qi(n(...e)).subscribe(i)}function Q4(t){return Error(`Unable to find icon with the name "${t}"`)}function J4(t){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${t}".`)}function e5(t){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${t}".`)}class lc{url;svgText;options;svgElement=null;constructor(n,e,i){this.url=n,this.svgText=e,this.options=i}}let Rue=(()=>{class t{_httpClient;_sanitizer;_errorHandler;_document;_svgIconConfigs=new Map;_iconSetConfigs=new Map;_cachedIconsByUrl=new Map;_inProgressUrlFetches=new Map;_fontCssClassesByAlias=new Map;_resolvers=[];_defaultFontSetClass=["material-icons","mat-ligature-font"];constructor(e,i,o,r){this._httpClient=e,this._sanitizer=i,this._errorHandler=r,this._document=o}addSvgIcon(e,i,o){return this.addSvgIconInNamespace("",e,i,o)}addSvgIconLiteral(e,i,o){return this.addSvgIconLiteralInNamespace("",e,i,o)}addSvgIconInNamespace(e,i,o,r){return this._addSvgIconConfig(e,i,new lc(o,null,r))}addSvgIconResolver(e){return this._resolvers.push(e),this}addSvgIconLiteralInNamespace(e,i,o,r){const s=this._sanitizer.sanitize(yi.HTML,o);if(!s)throw e5(o);const a=su(s);return this._addSvgIconConfig(e,i,new lc("",a,r))}addSvgIconSet(e,i){return this.addSvgIconSetInNamespace("",e,i)}addSvgIconSetLiteral(e,i){return this.addSvgIconSetLiteralInNamespace("",e,i)}addSvgIconSetInNamespace(e,i,o){return this._addSvgIconSetConfig(e,new lc(i,null,o))}addSvgIconSetLiteralInNamespace(e,i,o){const r=this._sanitizer.sanitize(yi.HTML,i);if(!r)throw e5(i);const s=su(r);return this._addSvgIconSetConfig(e,new lc("",s,o))}registerFontClassAlias(e,i=e){return this._fontCssClassesByAlias.set(e,i),this}classNameForFontAlias(e){return this._fontCssClassesByAlias.get(e)||e}setDefaultFontSetClass(...e){return this._defaultFontSetClass=e,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(e){const i=this._sanitizer.sanitize(yi.RESOURCE_URL,e);if(!i)throw J4(e);const o=this._cachedIconsByUrl.get(i);return o?se(Ub(o)):this._loadSvgIconFromConfig(new lc(e,null)).pipe(ui(r=>this._cachedIconsByUrl.set(i,r)),De(r=>Ub(r)))}getNamedSvgIcon(e,i=""){const o=t5(i,e);let r=this._svgIconConfigs.get(o);if(r)return this._getSvgFromConfig(r);if(r=this._getIconConfigFromResolvers(i,e),r)return this._svgIconConfigs.set(o,r),this._getSvgFromConfig(r);const s=this._iconSetConfigs.get(i);return s?this._getSvgFromIconSetConfigs(e,s):Cr(Q4(o))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(e){return e.svgText?se(Ub(this._svgElementFromConfig(e))):this._loadSvgIconFromConfig(e).pipe(De(i=>Ub(i)))}_getSvgFromIconSetConfigs(e,i){const o=this._extractIconWithNameFromAnySet(e,i);return o?se(o):du(i.filter(s=>!s.svgText).map(s=>this._loadSvgIconSetFromConfig(s).pipe(ii(a=>{const d=`Loading icon set URL: ${this._sanitizer.sanitize(yi.RESOURCE_URL,s.url)} failed: ${a.message}`;return this._errorHandler.handleError(new Error(d)),se(null)})))).pipe(De(()=>{const s=this._extractIconWithNameFromAnySet(e,i);if(!s)throw Q4(e);return s}))}_extractIconWithNameFromAnySet(e,i){for(let o=i.length-1;o>=0;o--){const r=i[o];if(r.svgText&&r.svgText.toString().indexOf(e)>-1){const s=this._svgElementFromConfig(r),a=this._extractSvgIconFromSet(s,e,r.options);if(a)return a}}return null}_loadSvgIconFromConfig(e){return this._fetchIcon(e).pipe(ui(i=>e.svgText=i),De(()=>this._svgElementFromConfig(e)))}_loadSvgIconSetFromConfig(e){return e.svgText?se(null):this._fetchIcon(e).pipe(ui(i=>e.svgText=i))}_extractSvgIconFromSet(e,i,o){const r=e.querySelector(`[id="${i}"]`);if(!r)return null;const s=r.cloneNode(!0);if(s.removeAttribute("id"),"svg"===s.nodeName.toLowerCase())return this._setSvgAttributes(s,o);if("symbol"===s.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(s),o);const a=this._svgElementFromString(su(""));return a.appendChild(s),this._setSvgAttributes(a,o)}_svgElementFromString(e){const i=this._document.createElement("DIV");i.innerHTML=e;const o=i.querySelector("svg");if(!o)throw Error(" tag not found");return o}_toSvgElement(e){const i=this._svgElementFromString(su("")),o=e.attributes;for(let r=0;rsu(d)),j_(()=>this._inProgressUrlFetches.delete(s)),Z4());return this._inProgressUrlFetches.set(s,l),l}_addSvgIconConfig(e,i,o){return this._svgIconConfigs.set(t5(e,i),o),this}_addSvgIconSetConfig(e,i){const o=this._iconSetConfigs.get(e);return o?o.push(i):this._iconSetConfigs.set(e,[i]),this}_svgElementFromConfig(e){if(!e.svgElement){const i=this._svgElementFromString(e.svgText);this._setSvgAttributes(i,e.options),e.svgElement=i}return e.svgElement}_getIconConfigFromResolvers(e,i){for(let o=0;o{const t=T(et),n=t?t.location:null;return{getPathname:()=>n?n.pathname+n.search:""}}}),n5=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],Vue=n5.map(t=>`[${t}]`).join(", "),Hue=/^url\(['"]?#(.*?)['"]?\)$/;let Ae=(()=>{class t{_elementRef=T(Ne);_iconRegistry=T(Rue);_location=T(Bue);_errorHandler=T(hl);_defaultColor;get color(){return this._color||this._defaultColor}set color(e){this._color=e}_color;inline=!1;get svgIcon(){return this._svgIcon}set svgIcon(e){e!==this._svgIcon&&(e?this._updateSvgIcon(e):this._svgIcon&&this._clearSvgElement(),this._svgIcon=e)}_svgIcon;get fontSet(){return this._fontSet}set fontSet(e){const i=this._cleanupFontValue(e);i!==this._fontSet&&(this._fontSet=i,this._updateFontIconClasses())}_fontSet;get fontIcon(){return this._fontIcon}set fontIcon(e){const i=this._cleanupFontValue(e);i!==this._fontIcon&&(this._fontIcon=i,this._updateFontIconClasses())}_fontIcon;_previousFontSetClass=[];_previousFontIconClass;_svgName=null;_svgNamespace=null;_previousPath;_elementsWithExternalReferences;_currentIconFetch=gt.EMPTY;constructor(){const e=T(new tf("aria-hidden"),{optional:!0}),i=T(Lue,{optional:!0});i&&(i.color&&(this.color=this._defaultColor=i.color),i.fontSet&&(this.fontSet=i.fontSet)),e||this._elementRef.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(e){if(!e)return["",""];const i=e.split(":");switch(i.length){case 1:return["",i[0]];case 2:return i;default:throw Error(`Invalid icon name: "${e}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const e=this._elementsWithExternalReferences;if(e&&e.size){const i=this._location.getPathname();i!==this._previousPath&&(this._previousPath=i,this._prependPathToReferences(i))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(e){this._clearSvgElement();const i=this._location.getPathname();this._previousPath=i,this._cacheChildrenWithExternalReferences(e),this._prependPathToReferences(i),this._elementRef.nativeElement.appendChild(e)}_clearSvgElement(){const e=this._elementRef.nativeElement;let i=e.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();i--;){const o=e.childNodes[i];(1!==o.nodeType||"svg"===o.nodeName.toLowerCase())&&o.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const e=this._elementRef.nativeElement,i=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(o=>o.length>0);this._previousFontSetClass.forEach(o=>e.classList.remove(o)),i.forEach(o=>e.classList.add(o)),this._previousFontSetClass=i,this.fontIcon!==this._previousFontIconClass&&!i.includes("mat-ligature-font")&&(this._previousFontIconClass&&e.classList.remove(this._previousFontIconClass),this.fontIcon&&e.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(e){return"string"==typeof e?e.trim().split(" ")[0]:e}_prependPathToReferences(e){const i=this._elementsWithExternalReferences;i&&i.forEach((o,r)=>{o.forEach(s=>{r.setAttribute(s.name,`url('${e}#${s.value}')`)})})}_cacheChildrenWithExternalReferences(e){const i=e.querySelectorAll(Vue),o=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let r=0;r{const a=i[r],l=a.getAttribute(s),d=l?l.match(Hue):null;if(d){let f=o.get(a);f||(f=[],o.set(a,f)),f.push({name:s,value:d[1]})}})}_updateSvgIcon(e){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),e){const[i,o]=this._splitIconName(e);i&&(this._svgNamespace=i),o&&(this._svgName=o),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(o,i).pipe(wn(1)).subscribe(r=>this._setSvgElement(r),r=>{this._errorHandler.handleError(new Error(`Error retrieving icon ${i}:${o}! ${r.message}`))})}}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:10,hostBindings:function(i,o){2&i&&(We("data-mat-icon-type",o._usingFontIcon()?"font":"svg")("data-mat-icon-name",o._svgName||o.fontIcon)("data-mat-icon-namespace",o._svgNamespace||o.fontSet)("fontIcon",o._usingFontIcon()?o.fontIcon:null),Ge(o.color?"mat-"+o.color:""),ve("mat-icon-inline",o.inline)("mat-icon-no-color","primary"!==o.color&&"accent"!==o.color&&"warn"!==o.color))},inputs:{color:"color",inline:[2,"inline","inline",Te],svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],ngContentSelectors:Nue,decls:1,vars:0,template:function(i,o){1&i&&(xi(),Rt(0))},styles:["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color, inherit)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}\n"],encapsulation:2,changeDetection:0})}return t})(),Uue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ai]})}return t})();function jk(t,n,e){let i,o=!1;return t&&"object"==typeof t?({bufferSize:i=1/0,windowTime:n=1/0,refCount:o=!1,scheduler:e}=t):i=t??1/0,Z4({connector:()=>new co(i,n,e),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:o})}class $k{}let i5=(()=>{class t{handle(e){return e.key}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class zb{}let o5=(()=>{class t extends zb{compile(e,i){return e}compileTranslations(e,i){return e}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class Yf{}let r5=(()=>{class t extends Yf{getTranslation(e){return se({})}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();function jb(t,n){if(t===n)return!0;if(null===t||null===n)return!1;if(t!=t&&n!=n)return!0;const e=typeof t;let o;if(e==typeof n&&"object"==e)if(Array.isArray(t)){if(!Array.isArray(n))return!1;if((o=t.length)==n.length){for(let r=0;rWb(n));if(Zr(t)){const n={};return Object.keys(t).forEach(e=>{n[e]=Wb(t[e])}),n}return t}function Wk(t,n){if(!Xf(t))return Wb(n);const e=Wb(t);return Xf(e)&&Xf(n)&&Object.keys(n).forEach(i=>{Zr(n[i])?i in t?e[i]=Wk(t[i],n[i]):Object.assign(e,{[i]:n[i]}):Object.assign(e,{[i]:n[i]})}),e}function a5(t,n){const e=n.split(".");n="";do{n+=e.shift();const i=!e.length;if(Ta(t)){if(Zr(t)&&s5(t[n])&&(Zr(t[n])||cc(t[n])||i)){t=t[n],n="";continue}if(cc(t)){const o=parseInt(n,10);if(s5(t[o])&&(Zr(t[o])||cc(t[o])||i)){t=t[o],n="";continue}}}i?t=void 0:n+="."}while(e.length);return t}class Gb{}let l5=(()=>{class t extends Gb{templateMatcher=/{{\s?([^{}\s]*)\s?}}/g;interpolate(e,i){return $b(e)?this.interpolateString(e,i):function zue(t){return"function"==typeof t}(e)?this.interpolateFunction(e,i):void 0}interpolateFunction(e,i){return e(i)}interpolateString(e,i){return i?e.replace(this.templateMatcher,(o,r)=>{const s=this.getInterpolationReplacement(i,r);return void 0!==s?s:o}):e}getInterpolationReplacement(e,i){return this.formatValue(a5(e,i))}formatValue(e){return $b(e)?e:"number"==typeof e||"boolean"==typeof e?e.toString():null===e?"null":cc(e)?e.join(", "):Xf(e)?"function"==typeof e.toString&&e.toString!==Object.prototype.toString?e.toString():JSON.stringify(e):void 0}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),Gk=(()=>{class t{_onTranslationChange=new be;_onLangChange=new be;_onFallbackLangChange=new be;fallbackLang=null;currentLang;translations={};languages=[];getTranslations(e){return this.translations[e]}setTranslations(e,i,o){this.translations[e]=o&&this.hasTranslationFor(e)?Wk(this.translations[e],i):i,this.addLanguages([e]),this._onTranslationChange.next({lang:e,translations:this.getTranslations(e)})}getLanguages(){return this.languages}getCurrentLang(){return this.currentLang}getFallbackLang(){return this.fallbackLang}setFallbackLang(e,i=!0){this.fallbackLang=e,i&&this._onFallbackLangChange.next({lang:e,translations:this.translations[e]})}setCurrentLang(e,i=!0){this.currentLang=e,i&&this._onLangChange.next({lang:e,translations:this.translations[e]})}get onTranslationChange(){return this._onTranslationChange.asObservable()}get onLangChange(){return this._onLangChange.asObservable()}get onFallbackLangChange(){return this._onFallbackLangChange.asObservable()}addLanguages(e){this.languages=Array.from(new Set([...this.languages,...e]))}hasTranslationFor(e){return typeof this.translations[e]<"u"}deleteTranslations(e){delete this.translations[e]}getTranslation(e){let i=this.getValue(this.currentLang,e);return void 0===i&&null!=this.fallbackLang&&this.fallbackLang!==this.currentLang&&(i=this.getValue(this.fallbackLang,e)),i}getValue(e,i){return a5(this.getTranslations(e),i)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const qk=new Z("TRANSLATE_CONFIG"),Zf=t=>$r(t)?t:se(t);let Xo=(()=>{class t{loadingTranslations;pending=!1;_translationRequests={};lastUseLanguage=null;currentLoader=T(Yf);compiler=T(zb);parser=T(Gb);missingTranslationHandler=T($k);store=T(Gk);extend=!1;get onTranslationChange(){return this.store.onTranslationChange}get onLangChange(){return this.store.onLangChange}get onFallbackLangChange(){return this.store.onFallbackLangChange}get onDefaultLangChange(){return this.store.onFallbackLangChange}constructor(){const e={extend:!1,fallbackLang:null,...T(qk,{optional:!0})};e.lang&&this.use(e.lang),e.fallbackLang&&this.setFallbackLang(e.fallbackLang),e.extend&&(this.extend=!0)}setFallbackLang(e){this.getFallbackLang()||this.store.setFallbackLang(e,!1);const i=this.loadOrExtendLanguage(e);return $r(i)?(i.pipe(wn(1)).subscribe({next:()=>{this.store.setFallbackLang(e)},error:()=>{}}),i):(this.store.setFallbackLang(e),se(this.store.getTranslations(e)))}use(e){this.lastUseLanguage=e,this.getCurrentLang()||this.store.setCurrentLang(e,!1);const i=this.loadOrExtendLanguage(e);return $r(i)?(i.pipe(wn(1)).subscribe({next:()=>{this.changeLang(e)},error:()=>{}}),i):(this.changeLang(e),se(this.store.getTranslations(e)))}loadOrExtendLanguage(e){if(!this.store.hasTranslationFor(e)||this.extend)return this._translationRequests[e]=this._translationRequests[e]||this.loadAndCompileTranslations(e),this._translationRequests[e]}changeLang(e){e===this.lastUseLanguage&&this.store.setCurrentLang(e)}getCurrentLang(){return this.store.getCurrentLang()}loadAndCompileTranslations(e){this.pending=!0;const i=this.currentLoader.getTranslation(e).pipe(jk(1),wn(1));return this.loadingTranslations=i.pipe(De(o=>this.compiler.compileTranslations(o,e)),jk(1),wn(1)),this.loadingTranslations.subscribe({next:o=>{this.store.setTranslations(e,o,this.extend),this.pending=!1},error:o=>{this.pending=!1}}),i}setTranslation(e,i,o=!1){const r=this.compiler.compileTranslations(i,e);this.store.setTranslations(e,r,o||this.extend)}getLangs(){return this.store.getLanguages()}addLangs(e){this.store.addLanguages(e)}getParsedResultForKey(e,i){const o=this.getTextToInterpolate(e);if(Ta(o))return this.runInterpolation(o,i);const r=this.missingTranslationHandler.handle({key:e,translateService:this,...void 0!==i&&{interpolateParams:i}});return void 0!==r?r:e}getFallbackLang(){return this.store.getFallbackLang()}getTextToInterpolate(e){return this.store.getTranslation(e)}runInterpolation(e,i){if(Ta(e))return cc(e)?this.runInterpolationOnArray(e,i):Zr(e)?this.runInterpolationOnDict(e,i):this.parser.interpolate(e,i)}runInterpolationOnArray(e,i){return e.map(o=>this.runInterpolation(o,i))}runInterpolationOnDict(e,i){const o={};for(const r in e){const s=this.runInterpolation(e[r],i);void 0!==s&&(o[r]=s)}return o}getParsedResult(e,i){return e instanceof Array?this.getParsedResultForArray(e,i):this.getParsedResultForKey(e,i)}getParsedResultForArray(e,i){const o={};let r=!1;for(const a of e)o[a]=this.getParsedResultForKey(a,i),r=r||$r(o[a]);return r?du(e.map(a=>Zf(o[a]))).pipe(De(a=>{const l={};return a.forEach((d,f)=>{l[e[f]]=d}),l})):o}get(e,i){if(!Ta(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return this.pending?this.loadingTranslations.pipe(mf(()=>Zf(this.getParsedResult(e,i)))):Zf(this.getParsedResult(e,i))}getStreamOnTranslationChange(e,i){if(!Ta(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return Fs(Sa(()=>this.get(e,i)),this.onTranslationChange.pipe(wt(()=>{const o=this.getParsedResult(e,i);return Zf(o)})))}stream(e,i){if(!Ta(e)||!e.length)throw new Error('Parameter "key" required');return Fs(Sa(()=>this.get(e,i)),this.onLangChange.pipe(wt(()=>{const o=this.getParsedResult(e,i);return Zf(o)})))}instant(e,i){if(!Ta(e)||0===e.length)throw new Error('Parameter "key" is required and cannot be empty');const o=this.getParsedResult(e,i);return $r(o)?Array.isArray(e)?e.reduce((r,s)=>(r[s]=s,r),{}):e:o}set(e,i,o=this.getCurrentLang()){this.store.setTranslations(o,function jue(t,n,e){return Wk(t,function $ue(t,n){return t.split(".").reduceRight((e,i)=>({[i]:e}),n)}(n,e))}(this.store.getTranslations(o),e,$b(i)?this.compiler.compile(i,o):this.compiler.compileTranslations(i,o)),!1)}reloadLang(e){return this.resetLang(e),this.loadAndCompileTranslations(e)}resetLang(e){delete this._translationRequests[e],this.store.deleteTranslations(e)}static getBrowserLang(){if(typeof window>"u"||!window.navigator)return;const e=this.getBrowserCultureLang();return e?e.split(/[-_]/)[0]:void 0}static getBrowserCultureLang(){if(!(typeof window>"u"||typeof window.navigator>"u"))return window.navigator.languages?window.navigator.languages[0]:window.navigator.language||window.navigator.browserLanguage||window.navigator.userLanguage}getBrowserLang(){return t.getBrowserLang()}getBrowserCultureLang(){return t.getBrowserCultureLang()}get defaultLang(){return this.getFallbackLang()}get currentLang(){return this.store.getCurrentLang()}get langs(){return this.store.getLanguages()}setDefaultLang(e){return this.setFallbackLang(e)}getDefaultLang(){return this.getFallbackLang()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),we=(()=>{class t{translate=T(Xo);_ref=T(Dt);value="";lastKey=null;lastParams=[];onTranslationChange;onLangChange;onFallbackLangChange;updateValue(e,i,o){const r=s=>{this.value=void 0!==s?s:e,this.lastKey=e,this._ref.markForCheck()};if(o){const s=this.translate.getParsedResult(e,i);$r(s)?s.subscribe(r):r(s)}this.translate.get(e,i).subscribe(r)}transform(e,...i){if(!e||!e.length)return e;if(jb(e,this.lastKey)&&jb(i,this.lastParams))return this.value;let o;if(Ta(i[0])&&i.length)if($b(i[0])&&i[0].length){const r=i[0].replace(/(')?([a-zA-Z0-9_]+)(')?(\s)?:/g,'"$2":').replace(/:(\s)?(')(.*?)(')/g,':"$3"');try{o=JSON.parse(r)}catch(s){throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${i[0]}`)}}else Zr(i[0])&&(o=i[0]);return this.lastKey=e,this.lastParams=i,this.updateValue(e,o),this._dispose(),this.onTranslationChange||(this.onTranslationChange=this.translate.onTranslationChange.subscribe(r=>{(this.lastKey&&r.lang===this.translate.getCurrentLang()||r.lang===this.translate.getFallbackLang())&&(this.lastKey=null,this.updateValue(e,o,r.translations))})),this.onLangChange||(this.onLangChange=this.translate.onLangChange.subscribe(r=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,o,r.translations))})),this.onFallbackLangChange||(this.onFallbackLangChange=this.translate.onFallbackLangChange.subscribe(()=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,o))})),this.value}_dispose(){typeof this.onTranslationChange<"u"&&(this.onTranslationChange.unsubscribe(),this.onTranslationChange=void 0),typeof this.onLangChange<"u"&&(this.onLangChange.unsubscribe(),this.onLangChange=void 0),typeof this.onFallbackLangChange<"u"&&(this.onFallbackLangChange.unsubscribe(),this.onFallbackLangChange=void 0)}ngOnDestroy(){this._dispose()}static \u0275fac=function(i){return new(i||t)};static \u0275pipe=Gi({name:"translate",type:t,pure:!1});static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();function c5(t){return{provide:Yf,useClass:t}}function d5(t){return{provide:zb,useClass:t}}function u5(t){return{provide:Gb,useClass:t}}function h5(t){return{provide:$k,useClass:t}}function qb(t={},n){const e=[];return t.loader&&e.push(t.loader),t.compiler&&e.push(t.compiler),t.parser&&e.push(t.parser),t.missingTranslationHandler&&e.push(t.missingTranslationHandler),n&&e.push(Gk),(t.useDefaultLang||t.defaultLanguage)&&(console.warn("The `useDefaultLang` and `defaultLanguage` options are deprecated. Please use `fallbackLang` instead."),!0===t.useDefaultLang&&t.defaultLanguage&&(t.fallbackLang=t.defaultLanguage)),e.push({provide:qk,useValue:{fallbackLang:t.fallbackLang??null,lang:t.lang,extend:t.extend??!1}}),e.push({provide:Xo,useClass:Xo,deps:[Gk,Yf,zb,Gb,$k,qk]}),e}let f5=(()=>{class t{static forRoot(e={}){return{ngModule:t,providers:[...qb({compiler:d5(o5),parser:u5(l5),loader:c5(r5),missingTranslationHandler:h5(i5),...e},!0)]}}static forChild(e={}){return{ngModule:t,providers:[...qb(e,e.isolate??!1)]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function Wue(t,n){if(1&t&&(h(0,"div",0)(1,"mat-icon",5),p(2),u()()),2&t){const e=y();c(),C("inline",!0),c(),S(e.config.icon)}}function Gue(t,n){if(1&t&&(h(0,"div",2),p(1),_(2,"translate"),_(3,"translate"),u()),2&t){const e=y();c(),nt(" ",v(2,2,"common.error")," ",ue(3,4,e.config.smallText,e.config.smallTextTranslationParams)," ")}}var Kb=function(t){return t.Error="error",t.Done="done",t.Warning="warning",t}(Kb||{}),Yb=function(t){return t.Red="red-background",t.Green="green-background",t.Yellow="yellow-background",t}(Yb||{});let que=(()=>{class t{constructor(e,i){this.snackbarRef=i,this.config=e}close(){this.snackbarRef.dismiss()}static{this.\u0275fac=function(i){return new(i||t)(O(Vk),O(Vb))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-snack-bar"]],standalone:!1,decls:9,vars:8,consts:[[1,"icon-container"],[1,"text-container"],[1,"second-line"],[1,"close-button-separator"],[1,"close-button",3,"click"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"div"),x(1,Wue,3,2,"div",0),h(2,"div",1),p(3),_(4,"translate"),x(5,Gue,4,7,"div",2),u(),L(6,"div",3),h(7,"mat-icon",4),F("click",function(){return o.close()}),p(8,"close"),u()()),2&i&&(Ge("main-container "+o.config.color),c(),k(o.config.icon?1:-1),c(2),D(" ",ue(4,5,o.config.text,o.config.textTranslationParams)," "),c(2),k(o.config.smallText?5:-1))},dependencies:[Ae,we],styles:['.cursor-pointer[_ngcontent-%COMP%], .close-button[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.main-container[_ngcontent-%COMP%]{width:100%;display:flex;color:#fff;padding:15px;border-radius:5px}.red-background[_ngcontent-%COMP%]{background-color:#ea0606}.green-background[_ngcontent-%COMP%]{background-color:#1fb11f}.yellow-background[_ngcontent-%COMP%]{background-color:#f90}.icon-container[_ngcontent-%COMP%]{margin-right:10px;position:relative;top:1px}.text-container[_ngcontent-%COMP%]{flex-grow:1;margin-right:10px;font-size:1rem;word-break:break-word}.text-container[_ngcontent-%COMP%] .second-line[_ngcontent-%COMP%]{font-size:.8rem;opacity:.9}.close-button-separator[_ngcontent-%COMP%]{width:1px;margin-right:10px;background-color:#0000004d}.close-button[_ngcontent-%COMP%]{opacity:.7}.close-button[_ngcontent-%COMP%]:hover{opacity:1}mat-icon[_ngcontent-%COMP%]{position:relative;top:1px;-webkit-user-select:none;user-select:none}']})}}return t})(),ot=(()=>{class t{constructor(e){this.snackBar=e,this.lastWasTemporaryError=!1}showError(e,i=null,o=!1,r=null,s=null){e=Ze(e),r=r?Ze(r):null,this.lastWasTemporaryError=o,this.show(e.translatableErrorMsg,i,r?r.translatableErrorMsg:null,s,Kb.Error,Yb.Red,15e3)}showWarning(e,i=null){this.lastWasTemporaryError=!1,this.show(e,i,null,null,Kb.Warning,Yb.Yellow,15e3)}showDone(e,i=null){this.lastWasTemporaryError=!1,this.show(e,i,null,null,Kb.Done,Yb.Green,5e3)}closeCurrent(){this.snackBar.dismiss()}closeCurrentIfTemporaryError(){this.lastWasTemporaryError&&this.snackBar.dismiss()}show(e,i,o,r,s,a,l){this.snackBar.openFromComponent(que,{duration:l,panelClass:"snackbar-container",data:{text:e,textTranslationParams:i,smallText:o,smallTextTranslationParams:r,icon:s,color:a}})}static{this.\u0275fac=function(i){return new(i||t)(ce(X4))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const at={maxShortListElements:5,maxFullListElements:40,connectionRetryDelay:5e3,languages:[{code:"en",name:"English",iconName:"en.png"},{code:"es",name:"Espa\xf1ol",iconName:"es.png"},{code:"de",name:"Deutsch",iconName:"de.png"},{code:"pt",name:"Portugu\xeas (Brazil)",iconName:"pt.png"}],defaultLanguage:"en",smallModalWidth:"480px",mediumModalWidth:"640px",largeModalWidth:"900px",vpn:{hardcodedIpWhileDeveloping:!1}};class Kue{constructor(n){Object.assign(this,n)}}let Xb=(()=>{class t{constructor(e){this.translate=e,this.currentLanguage=new co(1),this.languages=new co(1),this.storageKey="lang",this.languagesInternal=[],this.settingsLoaded=!1}loadLanguageSettings(){if(this.settingsLoaded)return;this.settingsLoaded=!0;const e=[];at.languages.forEach(i=>{const o=new Kue(i);this.languagesInternal.push(o),e.push(o.code)}),this.languages.next(this.languagesInternal),this.translate.addLangs(e),this.translate.setDefaultLang(at.defaultLanguage),this.translate.onLangChange.subscribe(i=>this.onLanguageChanged(i)),this.loadCurrentLanguage()}changeLanguage(e){this.translate.use(e)}onLanguageChanged(e){this.currentLanguage.next(this.languagesInternal.find(i=>i.code===e.lang)),localStorage.setItem(this.storageKey,e.lang)}loadCurrentLanguage(){let e=localStorage.getItem(this.storageKey);e=e||at.defaultLanguage,setTimeout(()=>this.translate.use(e),16)}static{this.\u0275fac=function(i){return new(i||t)(ce(Xo))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const Yue={url:"",deserializer:t=>JSON.parse(t.data),serializer:t=>JSON.stringify(t)};class Kk extends fy{constructor(n,e){if(super(),this._socket=null,n instanceof zt)this.destination=e,this.source=n;else{const i=this._config=Object.assign({},Yue);if(this._output=new be,"string"==typeof n)i.url=n;else for(const o in n)n.hasOwnProperty(o)&&(i[o]=n[o]);if(!i.WebSocketCtor&&WebSocket)i.WebSocketCtor=WebSocket;else if(!i.WebSocketCtor)throw new Error("no WebSocket constructor can be found");this.destination=new co}}lift(n){const e=new Kk(this._config,this.destination);return e.operator=n,e.source=this,e}_resetState(){this._socket=null,this.source||(this.destination=new co),this._output=new be}multiplex(n,e,i){const o=this;return new zt(r=>{try{o.next(n())}catch(a){r.error(a)}const s=o.subscribe({next:a=>{try{i(a)&&r.next(a)}catch(l){r.error(l)}},error:a=>r.error(a),complete:()=>r.complete()});return()=>{try{o.next(e())}catch(a){r.error(a)}s.unsubscribe()}})}_connectSocket(){const{WebSocketCtor:n,protocol:e,url:i,binaryType:o}=this._config,r=this._output;let s=null;try{s=e?new n(i,e):new n(i),this._socket=s,o&&(this._socket.binaryType=o)}catch(l){return void r.error(l)}const a=new gt(()=>{this._socket=null,s&&1===s.readyState&&s.close()});s.onopen=l=>{const{_socket:d}=this;if(!d)return s.close(),void this._resetState();const{openObserver:f}=this._config;f&&f.next(l);const m=this.destination;this.destination=$p.create(g=>{if(1===s.readyState)try{const{serializer:b}=this._config;s.send(b(g))}catch(b){this.destination.error(b)}},g=>{const{closingObserver:b}=this._config;b&&b.next(void 0),g&&g.code?s.close(g.code,g.reason):r.error(new TypeError("WebSocketSubject.error must be called with an object with an error code, and an optional reason: { code: number, reason: string }")),this._resetState()},()=>{const{closingObserver:g}=this._config;g&&g.next(void 0),s.close(),this._resetState()}),m&&m instanceof co&&a.add(m.subscribe(this.destination))},s.onerror=l=>{this._resetState(),r.error(l)},s.onclose=l=>{s===this._socket&&this._resetState();const{closeObserver:d}=this._config;d&&d.next(l),l.wasClean?r.complete():r.error(l)},s.onmessage=l=>{try{const{deserializer:d}=this._config;r.next(d(l))}catch(d){r.error(d)}}}_subscribe(n){const{source:e}=this;return e?e.subscribe(n):(this._socket||this._connectSocket(),this._output.subscribe(n),n.add(()=>{const{_socket:i}=this;0===this._output.observers.length&&(i&&(1===i.readyState||0===i.readyState)&&i.close(),this._resetState())}),n)}unsubscribe(){const{_socket:n}=this;n&&(1===n.readyState||0===n.readyState)&&n.close(),this._resetState(),super.unsubscribe()}}var Qf=function(t){return t.Json="json",t.Text="text",t}(Qf||{}),uc=function(t){return t.Json="json",t.RawJson="raw-json",t}(uc||{});class Ro{constructor(n){this.responseType=Qf.Json,this.requestType=uc.Json,this.ignoreAuth=!1,Object.assign(this,n)}}let fi=(()=>{class t{constructor(e,i,o){this.http=e,this.router=i,this.ngZone=o,this.apiPrefix="api/",this.wsApiPrefix="api/"}get(e,i=null){return this.request("GET",e,{},i)}post(e,i={},o=null){return this.getCsrf().pipe(Wr(),Tt(r=>((o=o||new Ro).csrfToken=r,this.request("POST",e,i,o))))}put(e,i={},o=null){return this.getCsrf().pipe(Wr(),Tt(r=>((o=o||new Ro).csrfToken=r,this.request("PUT",e,i,o))))}delete(e,i=null){return this.getCsrf().pipe(Wr(),Tt(o=>((i=i||new Ro).csrfToken=o,this.request("DELETE",e,{},i))))}getCsrf(){return this.get("csrf").pipe(De(e=>e.csrf_token))}ws(e,i={}){const s=function Zue(t){return new Kk(t)}((location.protocol.startsWith("https")?"wss://":"ws://")+location.host+"/"+this.wsApiPrefix+e);return s.next(i),s}request(e,i,o,r){return o=o||{},r=r||new Ro,i.startsWith("/")&&(i=i.substr(1,i.length-1)),this.http.request(e,this.apiPrefix+i,{...this.getRequestOptions(r),responseType:r.responseType,withCredentials:!0,body:this.getPostBody(o,r)}).pipe(De(s=>this.successHandler(s)),ii(s=>this.errorHandler(s,r)))}getRequestOptions(e){const i={};return i.headers=new Go,(e.requestType===uc.Json||e.requestType===uc.RawJson)&&(i.headers=i.headers.append("Content-Type","application/json")),e.csrfToken&&(i.headers=i.headers.append("X-CSRF-Token",e.csrfToken)),i}getPostBody(e,i){if(i.requestType===uc.RawJson)return"string"==typeof e?e:JSON.stringify(e);if(i.requestType===uc.Json)return JSON.stringify(e);const o=new FormData;return Object.keys(e).forEach(r=>o.append(r,e[r])),o}successHandler(e){if("string"==typeof e&&"manager token is null"===e)throw new Error(e);return e}errorHandler(e,i){if(!i.ignoreAuth){if(401===e.status){const o=i.vpnKeyForAuth?["vpnlogin",i.vpnKeyForAuth]:["login"];this.ngZone.run(()=>this.router.navigate(o,{replaceUrl:!0}))}if(e.error&&"string"==typeof e.error&&e.error.includes("change password")){const o=i.vpnKeyForAuth?["vpnlogin",i.vpnKeyForAuth]:["login"];this.ngZone.run(()=>this.router.navigate(o,{replaceUrl:!0}))}}return Cr(Ze(e))}static{this.\u0275fac=function(i){return new(i||t)(ce(xa),ce(yt),ce(Ce))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const Que=["determinateSpinner"];function Jue(t,n){if(1&t&&(ul(),h(0,"svg",11),L(1,"circle",12),u()),2&t){const e=y();We("viewBox",e._viewBox()),c(),Hl("stroke-dasharray",e._strokeCircumference(),"px")("stroke-dashoffset",e._strokeCircumference()/2,"px")("stroke-width",e._circleStrokeWidth(),"%"),We("r",e._circleRadius())}}const ehe=new Z("mat-progress-spinner-default-options",{providedIn:"root",factory:()=>({diameter:p5})}),p5=100;let ci=(()=>{class t{_elementRef=T(Ne);_noopAnimations;get color(){return this._color||this._defaultColor}set color(e){this._color=e}_color;_defaultColor="primary";_determinateCircle;constructor(){const e=T(ehe),i=x4(),o=this._elementRef.nativeElement;this._noopAnimations="di-disabled"===i&&!!e&&!e._forceAnimations,this.mode="mat-spinner"===o.nodeName.toLowerCase()?"indeterminate":"determinate",!this._noopAnimations&&"reduced-motion"===i&&o.classList.add("mat-progress-spinner-reduced-motion"),e&&(e.color&&(this.color=this._defaultColor=e.color),e.diameter&&(this.diameter=e.diameter),e.strokeWidth&&(this.strokeWidth=e.strokeWidth))}mode;get value(){return"determinate"===this.mode?this._value:0}set value(e){this._value=Math.max(0,Math.min(100,e||0))}_value=0;get diameter(){return this._diameter}set diameter(e){this._diameter=e||0}_diameter=p5;get strokeWidth(){return this._strokeWidth??this.diameter/10}set strokeWidth(e){this._strokeWidth=e||0}_strokeWidth;_circleRadius(){return(this.diameter-10)/2}_viewBox(){const e=2*this._circleRadius()+this.strokeWidth;return`0 0 ${e} ${e}`}_strokeCircumference(){return 2*Math.PI*this._circleRadius()}_strokeDashOffset(){return"determinate"===this.mode?this._strokeCircumference()*(100-this._value)/100:null}_circleStrokeWidth(){return this.strokeWidth/this.diameter*100}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-progress-spinner"],["mat-spinner"]],viewQuery:function(i,o){if(1&i&&st(Que,5),2&i){let r;fe(r=pe())&&(o._determinateCircle=r.first)}},hostAttrs:["role","progressbar","tabindex","-1",1,"mat-mdc-progress-spinner","mdc-circular-progress"],hostVars:18,hostBindings:function(i,o){2&i&&(We("aria-valuemin",0)("aria-valuemax",100)("aria-valuenow","determinate"===o.mode?o.value:null)("mode",o.mode),Ge("mat-"+o.color),Hl("width",o.diameter,"px")("height",o.diameter,"px")("--mat-progress-spinner-size",o.diameter+"px")("--mat-progress-spinner-active-indicator-width",o.diameter+"px"),ve("_mat-animation-noopable",o._noopAnimations)("mdc-circular-progress--indeterminate","indeterminate"===o.mode))},inputs:{color:"color",mode:"mode",value:[2,"value","value",_r],diameter:[2,"diameter","diameter",_r],strokeWidth:[2,"strokeWidth","strokeWidth",_r]},exportAs:["matProgressSpinner"],decls:14,vars:11,consts:[["circle",""],["determinateSpinner",""],["aria-hidden","true",1,"mdc-circular-progress__determinate-container"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__determinate-circle-graphic"],["cx","50%","cy","50%",1,"mdc-circular-progress__determinate-circle"],["aria-hidden","true",1,"mdc-circular-progress__indeterminate-container"],[1,"mdc-circular-progress__spinner-layer"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-left"],[3,"ngTemplateOutlet"],[1,"mdc-circular-progress__gap-patch"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-right"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__indeterminate-circle-graphic"],["cx","50%","cy","50%"]],template:function(i,o){if(1&i&&(rt(0,Jue,2,8,"ng-template",null,0,Ul),h(2,"div",2,1),ul(),h(4,"svg",3),L(5,"circle",4),u()(),Qy(),h(6,"div",5)(7,"div",6)(8,"div",7),mr(9,8),u(),h(10,"div",9),mr(11,8),u(),h(12,"div",10),mr(13,8),u()()()),2&i){const r=Un(1);c(4),We("viewBox",o._viewBox()),c(),Hl("stroke-dasharray",o._strokeCircumference(),"px")("stroke-dashoffset",o._strokeDashOffset(),"px")("stroke-width",o._circleStrokeWidth(),"%"),We("r",o._circleRadius()),c(4),C("ngTemplateOutlet",r),c(2),C("ngTemplateOutlet",r),c(2),C("ngTemplateOutlet",r)}},dependencies:[Wd],styles:[".mat-mdc-progress-spinner{--mat-progress-spinner-animation-multiplier: 1;display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity 250ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-progress-spinner circle{stroke-width:var(--mat-progress-spinner-active-indicator-width, 4px)}.mat-mdc-progress-spinner._mat-animation-noopable,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__determinate-circle{transition:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__spinner-layer,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container{animation:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container circle{stroke-dasharray:0 !important}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle{stroke:currentColor;stroke:CanvasText}}.mat-progress-spinner-reduced-motion{--mat-progress-spinner-animation-multiplier: 1.25}.mdc-circular-progress__determinate-container,.mdc-circular-progress__indeterminate-circle-graphic,.mdc-circular-progress__indeterminate-container,.mdc-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}.mdc-circular-progress__determinate-container{transform:rotate(-90deg)}.mdc-circular-progress--indeterminate .mdc-circular-progress__determinate-container{opacity:0}.mdc-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{opacity:1;animation:mdc-circular-progress-container-rotate calc(1568.2352941176ms*var(--mat-progress-spinner-animation-multiplier)) linear infinite}.mdc-circular-progress__determinate-circle-graphic,.mdc-circular-progress__indeterminate-circle-graphic{fill:rgba(0,0,0,0)}.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--mat-progress-spinner-active-indicator-color, var(--mat-sys-primary))}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}.mdc-circular-progress__determinate-circle{transition:stroke-dashoffset 500ms cubic-bezier(0, 0, 0.2, 1)}.mdc-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}.mdc-circular-progress__gap-patch .mdc-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.mdc-circular-progress__circle-clipper .mdc-circular-progress__indeterminate-circle-graphic{width:200%}.mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{left:-100%}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-left .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-left-spin calc(1333ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-right-spin calc(1333ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.mdc-circular-progress--indeterminate .mdc-circular-progress__spinner-layer{animation:mdc-circular-progress-spinner-layer-rotate calc(5332ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}@keyframes mdc-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes mdc-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}@keyframes mdc-circular-progress-left-spin{from{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes mdc-circular-progress-right-spin{from{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}\n"],encapsulation:2,changeDetection:0})}return t})(),nhe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ai]})}return t})();const ihe=t=>({"white-theme":t});let Qr=(()=>{class t{constructor(){this.showWhite=!0}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=ae({type:t,selectors:[["app-loading-indicator"]],inputs:{showWhite:"showWhite"},standalone:!1,decls:2,vars:4,consts:[[1,"container",3,"ngClass"],[3,"diameter"]],template:function(i,o){1&i&&(h(0,"div",0),L(1,"mat-spinner",1),u()),2&i&&(C("ngClass",ie(2,ihe,o.showWhite)),c(),C("diameter",50))},dependencies:[Ft,ci],styles:["[_nghost-%COMP%]{width:100%;height:100%;display:flex}.container[_ngcontent-%COMP%]{width:100%;align-self:center;display:flex;flex-direction:column;align-items:center}.container[_ngcontent-%COMP%] > mat-spinner[_ngcontent-%COMP%]{opacity:.5}"]})}}return t})();const ohe=t=>({background:t});function rhe(t,n){1&t&&(h(0,"div",0)(1,"div"),L(2,"img",5),h(3,"div"),p(4),_(5,"translate"),u()()()),2&t&&(c(4),S(v(5,1,"common.window-size-error")))}function she(t,n){1&t&&L(0,"router-outlet")}function ahe(t,n){1&t&&L(0,"app-loading-indicator",3)}function lhe(t,n){1&t&&(h(0,"div",4)(1,"span",6)(2,"mat-icon",7),p(3,"error_outline"),u(),p(4),_(5,"translate"),u()()),2&t&&(c(2),C("inline",!0),c(2),D(" ",v(5,2,"common.data-update-problems")," "))}let Jr=(()=>{class t{constructor(e,i,o,r,s,a){this.storage=e,this.snackbarService=r,this.languageService=s,this.apiService=a,this.inVpnClient=!1,this.inLoginPage=!1,this.hypervisorPkObtained=!1,this.pkErrorShown=!1,this.pkErrorsFound=0,this.showingDataProblemMsg=!1,t.currentInstance=this,o.afterOpened.subscribe(()=>r.closeCurrent()),history.scrollRestoration&&(history.scrollRestoration="manual"),i.events.subscribe(l=>{l instanceof Kr&&(r.closeCurrent(),o.closeAll())}),o.afterAllClosed.subscribe(()=>r.closeCurrentIfTemporaryError()),i.events.subscribe(l=>{if(this.inVpnClient=i.url.includes("/vpn/")||i.url.includes("vpnlogin"),l.url){const d=this.inLoginPage;this.inLoginPage=l.url.includes("login"),d&&!this.inLoginPage&&!this.hypervisorPkObtained&&this.checkHypervisorPk(0)}i.url.length>2&&(document.title=this.inVpnClient?"Skywire VPN":"Skywire Hypervisor")}),this.languageService.loadLanguageSettings(),this.checkHypervisorPk(0)}processLoginDone(){this.inLoginPage=!1,this.hypervisorPkObtained||this.checkHypervisorPk(0)}showDataProblemMsg(){this.showingDataProblemMsg=!0}hideDataProblemMsg(){this.showingDataProblemMsg=!1}checkHypervisorPk(e){this.obtainPkSubscription&&this.obtainPkSubscription.unsubscribe(),this.obtainPkSubscription=se(1).pipe(oi(e),Tt(()=>this.apiService.get("about"))).subscribe(i=>{i.public_key?(this.finishStartup(i.public_key),this.hypervisorPkObtained=!0):(this.pkErrorShown||(this.snackbarService.showError("start.loading-error",null,!0),this.pkErrorShown=!0),this.checkHypervisorPk(1e3))},i=>{if(this.pkErrorsFound+=1,this.pkErrorsFound>4&&!this.pkErrorShown){const o=Ze(i);this.snackbarService.showError("start.loading-error",null,!0,o),this.pkErrorShown=!0}!this.inLoginPage&&this.pkErrorsFound<30&&this.checkHypervisorPk(Math.min(1e3*this.pkErrorsFound,1e4))})}finishStartup(e){this.storage.initialize(e)}static{this.\u0275fac=function(i){return new(i||t)(O(ri),O(yt),O(Nt),O(ot),O(Xb),O(fi))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-root"]],standalone:!1,decls:6,vars:7,consts:[[1,"size-alert","d-md-none"],[1,"flex-1","content","container-fluid"],[3,"ngClass"],[1,"h-100"],[1,"connection-problem-container"],["src","assets/img/size-alert.png"],[1,"blinking"],[3,"inline"]],template:function(i,o){1&i&&(x(0,rhe,6,3,"div",0),h(1,"div",1),L(2,"div",2),x(3,she,1,0,"router-outlet"),x(4,ahe,1,0,"app-loading-indicator",3),u(),x(5,lhe,6,4,"div",4)),2&i&&(k(o.inVpnClient?0:-1),c(2),C("ngClass",ie(5,ohe,o.inVpnClient)),c(),k(o.hypervisorPkObtained||o.inLoginPage?3:-1),c(),k(o.hypervisorPkObtained||o.inLoginPage?-1:4),c(),k(o.showingDataProblemMsg?5:-1))},dependencies:[Ft,sb,Ae,Qr,we],styles:[".size-alert[_ngcontent-%COMP%]{background-color:#000000d9;position:fixed;top:0;left:0;width:100%;height:100%;z-index:10000;display:inline-flex;align-items:center;justify-content:center;text-align:center;color:#fff}.size-alert[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{margin:0 40px;max-width:400px}[_nghost-%COMP%]{display:flex;flex-direction:column;justify-content:space-between;min-height:100%;height:100%}.content[_ngcontent-%COMP%]{padding:20px!important}.background[_ngcontent-%COMP%]{background-image:url(/assets/img/map.png);background-size:cover;background-position:center;opacity:.1;width:100%;height:100%;top:0;left:0;position:fixed}.connection-problem-container[_ngcontent-%COMP%]{position:fixed;bottom:0;right:0;background-color:red;padding:0 10px 5px;font-size:10px;opacity:.75}.connection-problem-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:4px}"]})}}return t})(),Che=(()=>{class t{router=T(yt);stateManager=T(ak);fragment=Ct("");queryParams=Ct({});path=Ct("");serializer=T(Yd);constructor(){this.updateState(),this.router.events?.subscribe(e=>{e instanceof Kr&&this.updateState()})}updateState(){const{fragment:e,root:i,queryParams:o}=this.stateManager.getCurrentUrlTree();this.fragment.set(e),this.queryParams.set(o),this.path.set(this.serializer.serialize(new wr(i)))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),es=(()=>{class t{router;route;tabIndexAttribute;renderer;el;locationStrategy;hrefAttributeValue=T(new tf("href"),{optional:!0});reactiveHref=function gw(t,n){return SF("function"==typeof t?wF(t,Ete,n?.equal):wF(t.source,t.computation,t.equal))}(()=>this.isAnchorElement?this.computeHref(this._urlTree()):this.hrefAttributeValue);get href(){return it(this.reactiveHref)}set href(e){this.reactiveHref.set(e)}set target(e){this._target.set(e)}get target(){return it(this._target)}_target=Ct(void 0);set queryParams(e){this._queryParams.set(e)}get queryParams(){return it(this._queryParams)}_queryParams=Ct(void 0,{equal:()=>!1});set fragment(e){this._fragment.set(e)}get fragment(){return it(this._fragment)}_fragment=Ct(void 0);set queryParamsHandling(e){this._queryParamsHandling.set(e)}get queryParamsHandling(){return it(this._queryParamsHandling)}_queryParamsHandling=Ct(void 0);set state(e){this._state.set(e)}get state(){return it(this._state)}_state=Ct(void 0,{equal:()=>!1});set info(e){this._info.set(e)}get info(){return it(this._info)}_info=Ct(void 0,{equal:()=>!1});set relativeTo(e){this._relativeTo.set(e)}get relativeTo(){return it(this._relativeTo)}_relativeTo=Ct(void 0);set preserveFragment(e){this._preserveFragment.set(e)}get preserveFragment(){return it(this._preserveFragment)}_preserveFragment=Ct(!1);set skipLocationChange(e){this._skipLocationChange.set(e)}get skipLocationChange(){return it(this._skipLocationChange)}_skipLocationChange=Ct(!1);set replaceUrl(e){this._replaceUrl.set(e)}get replaceUrl(){return it(this._replaceUrl)}_replaceUrl=Ct(!1);isAnchorElement;onChanges=new be;applicationErrorHandler=T(Nr);options=T(eu,{optional:!0});reactiveRouterState=T(Che);constructor(e,i,o,r,s,a){this.router=e,this.route=i,this.tabIndexAttribute=o,this.renderer=r,this.el=s,this.locationStrategy=a;const l=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement="a"===l||"area"===l||!("object"!=typeof customElements||!customElements.get(l)?.observedAttributes?.includes?.("href"))}setTabIndexIfNotOnNativeEl(e){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.onChanges.next(this)}routerLinkInput=Ct(null);set routerLink(e){null==e?(this.routerLinkInput.set(null),this.setTabIndexIfNotOnNativeEl(null)):(ec(e)?this.routerLinkInput.set(e):this.routerLinkInput.set(Array.isArray(e)?e:[e]),this.setTabIndexIfNotOnNativeEl("0"))}onClick(e,i,o,r,s){const a=this._urlTree();if(null===a||this.isAnchorElement&&(0!==e||i||o||r||s||"string"==typeof this.target&&"_self"!=this.target))return!0;const l={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(a,l)?.catch(d=>{this.applicationErrorHandler(d)}),!this.isAnchorElement}ngOnDestroy(){}applyAttributeValue(e,i){const o=this.renderer,r=this.el.nativeElement;null!==i?o.setAttribute(r,e,i):o.removeAttribute(r,e)}_urlTree=Fi(()=>{this.reactiveRouterState.path(),this._preserveFragment()&&this.reactiveRouterState.fragment();const e=o=>"preserve"===o||"merge"===o;(e(this._queryParamsHandling())||e(this.options?.defaultQueryParamsHandling))&&this.reactiveRouterState.queryParams();const i=this.routerLinkInput();return null!==i&&this.router.createUrlTree?ec(i)?i:this.router.createUrlTree(i,{relativeTo:void 0!==this._relativeTo()?this._relativeTo():this.route,queryParams:this._queryParams(),fragment:this._fragment(),queryParamsHandling:this._queryParamsHandling(),preserveFragment:this._preserveFragment()}):null},{equal:(e,i)=>this.computeHref(e)===this.computeHref(i)});get urlTree(){return it(this._urlTree)}computeHref(e){return null!==e&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e))??"":null}static \u0275fac=function(i){return new(i||t)(O(yt),O(Li),lh("tabindex"),O(ei),O(Ne),O(Wl))};static \u0275dir=de({type:t,selectors:[["","routerLink",""]],hostVars:2,hostBindings:function(i,o){1&i&&F("click",function(s){return o.onClick(s.button,s.ctrlKey,s.shiftKey,s.altKey,s.metaKey)}),2&i&&We("href",o.reactiveHref(),pE)("target",o._target())},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",Te],skipLocationChange:[2,"skipLocationChange","skipLocationChange",Te],replaceUrl:[2,"replaceUrl","replaceUrl",Te],routerLink:"routerLink"},features:[vi]})}return t})();class _5{}let khe=(()=>{class t{router;injector;preloadingStrategy;loader;subscription;constructor(e,i,o,r){this.router=e,this.injector=i,this.preloadingStrategy=o,this.loader=r}setUpPreloading(){this.subscription=this.router.events.pipe(Pn(e=>e instanceof Kr),mf(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription?.unsubscribe()}processRoutes(e,i){const o=[];for(const r of i){r.providers&&!r._injector&&(r._injector=Ag(r.providers,e,""));const s=r._injector??e;r._loadedNgModuleFactory&&!r._loadedInjector&&(r._loadedInjector=r._loadedNgModuleFactory.create(s).injector);const a=r._loadedInjector??s;(r.loadChildren&&!r._loadedRoutes&&void 0===r.canLoad||r.loadComponent&&!r._loadedComponent)&&o.push(this.preloadConfig(s,r)),(r.children||r._loadedRoutes)&&o.push(this.processRoutes(a,r.children??r._loadedRoutes))}return Xn(o).pipe(qd())}preloadConfig(e,i){return this.preloadingStrategy.preload(i,()=>{if(e.destroyed)return se(null);let o;o=i.loadChildren&&void 0===i.canLoad?Xn(this.loader.loadChildren(e,i)):se(null);const r=o.pipe(Tt(s=>null===s?se(void 0):(i._loadedRoutes=s.routes,i._loadedInjector=s.injector,i._loadedNgModuleFactory=s.factory,this.processRoutes(s.injector??e,s.routes))));return i.loadComponent&&!i._loadedComponent?Xn([r,this.loader.loadComponent(e,i)]).pipe(qd()):r})}static \u0275fac=function(i){return new(i||t)(ce(yt),ce(Wn),ce(_5),ce(tk))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Yk=new Z("");let b5=(()=>{class t{options;routerEventsSubscription;scrollEventsSubscription;lastId=0;lastSource=Tf;restoredId=0;store={};urlSerializer=T(Yd);zone=T(Ce);viewportScroller=T(oT);transitions=T(rk);constructor(e){this.options=e,this.options.scrollPositionRestoration||="disabled",this.options.anchorScrolling||="disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof ib?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof Kr?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof Xd&&e.code===ob.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{if(!(e instanceof sL)||"manual"===e.scrollBehavior)return;const i={behavior:"instant"};e.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0],i):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(e.position,i):e.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0])})}scheduleScrollEvent(e,i){var o=this;const r=it(this.transitions.currentNavigation)?.extras.scroll;this.zone.runOutsideAngular(At(function*(){yield new Promise(s=>{setTimeout(s),typeof requestAnimationFrame<"u"&&requestAnimationFrame(s)}),o.zone.run(()=>{o.transitions.events.next(new sL(e,"popstate"===o.lastSource?o.store[o.restoredId]:null,i,r))})}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static \u0275fac=function(i){WC()};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();function Zo(t,n){return{\u0275kind:t,\u0275providers:n}}function y5(){const t=T(Ue);return n=>{const e=t.get(fr);if(n!==e.components[0])return;const i=t.get(yt),o=t.get(C5);1===t.get(Xk)&&i.initialNavigation(),t.get(w5,null,{optional:!0})?.setUpPreloading(),t.get(Yk,null,{optional:!0})?.init(),i.resetRootComponentType(e.componentTypes[0]),o.closed||(o.next(),o.complete(),o.unsubscribe())}}const C5=new Z("",{factory:()=>new be}),Xk=new Z("",{factory:()=>1}),w5=new Z("");function Ehe(t){return Zo(0,[{provide:w5,useExisting:khe},{provide:_5,useExisting:t}])}function Ihe(t){return Ci("NgRouterViewTransitions"),Zo(9,[{provide:AL,useValue:oce},{provide:RL,useValue:{skipNextTransition:!!t?.skipInitialTransition,...t}}])}const Ohe=[jd,{provide:Yd,useClass:kf},yt,Ef,{provide:Li,useFactory:function v5(){return T(yt).routerState.root}},tk,[]];let x5=(()=>{class t{constructor(){}static forRoot(e,i){return{ngModule:t,providers:[Ohe,[],{provide:hb,multi:!0,useValue:e},[],i?.errorHandler?{provide:FL,useValue:i.errorHandler}:[],{provide:eu,useValue:i||{}},i?.useHash?{provide:Wl,useClass:zte}:{provide:Wl,useClass:PF},{provide:Yk,useFactory:()=>{const t=T(oT),n=T(eu);return n.scrollOffset&&t.setOffset(n.scrollOffset),new b5(n)}},i?.preloadingStrategy?Ehe(i.preloadingStrategy).\u0275providers:[],i?.initialNavigation?Nhe(i):[],i?.bindToComponentInputs?Zo(8,[pL,{provide:ab,useExisting:pL}]).\u0275providers:[],i?.enableViewTransitions?Ihe().\u0275providers:[],[{provide:k5,useFactory:y5},{provide:lO,multi:!0,useExisting:k5}]]}}static forChild(e){return{ngModule:t,providers:[{provide:hb,multi:!0,useValue:e}]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function Nhe(t){return["disabled"===t.initialNavigation?Zo(3,[sO(()=>{T(yt).setUpLocationChangeListener()}),{provide:Xk,useValue:2}]).\u0275providers:[],"enabledBlocking"===t.initialNavigation?Zo(2,[{provide:Zj,useValue:!0},{provide:Xk,useValue:0},sO(()=>{const n=T(Ue);return n.get(x7,Promise.resolve()).then(()=>new Promise(i=>{const o=n.get(yt),r=n.get(C5);BL(o,()=>{i(!0)}),n.get(rk).afterPreactivation=()=>(i(!0),r.closed?se(void 0):r),o.initialNavigation()}))})]).\u0275providers:[]]}const k5=new Z("");let Jf=(()=>{class t{set forceFail(e){this.forceFailInternal=e}constructor(e){this.router=e,this.forceFailInternal=!1}canActivate(e,i){return this.checkIfCanActivate()}canActivateChild(e,i){return this.checkIfCanActivate()}checkIfCanActivate(){return this.forceFailInternal?(this.router.navigate(["login"],{replaceUrl:!0}),se(!1)):se(!0)}static{this.\u0275fac=function(i){return new(i||t)(ce(yt))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Ea=function(t){return t[t.AuthDisabled=0]="AuthDisabled",t[t.Logged=1]="Logged",t[t.NotLogged=2]="NotLogged",t}(Ea||{});let ep=(()=>{class t{constructor(e,i,o){this.apiService=e,this.translateService=i,this.authGuardService=o}login(e){return this.apiService.post("login",{username:"admin",password:e},new Ro({ignoreAuth:!0})).pipe(ui(i=>{if(!0!==i)throw new Error;this.authGuardService.forceFail=!1}))}checkLogin(){return this.apiService.get("user",new Ro({ignoreAuth:!0})).pipe(De(e=>e.username?Ea.Logged:Ea.AuthDisabled),ii(e=>(e=Ze(e)).originalError&&401===e.originalError.status?(this.authGuardService.forceFail=!0,se(Ea.NotLogged)):Cr(e)))}logout(){return this.apiService.post("logout",{}).pipe(ui(e=>{if(!0!==e)throw new Error;this.authGuardService.forceFail=!0}))}changePassword(e,i){return this.apiService.post("change-password",{old_password:e,new_password:i},new Ro({responseType:Qf.Text,ignoreAuth:!0})).pipe(De(o=>{if("string"==typeof o&&"true"===o.trim())return!0;throw"Please do not change the default password."===o?new Error(this.translateService.instant("settings.password.errors.default-password")):new Error(this.translateService.instant("common.operation-error"))}),ii(o=>((o=Ze(o)).originalError&&401===o.originalError.status&&(o.translatableErrorMsg="settings.password.errors.bad-old-password"),Cr(o))))}initialConfig(e){return this.apiService.post("create-account",{username:"admin",password:e},new Ro({responseType:Qf.Text,ignoreAuth:!0})).pipe(De(i=>{if("string"==typeof i&&"true"===i.trim())return!0;throw new Error(i)}),ii(i=>((i=Ze(i)).originalError&&500===i.originalError.status&&(i.translatableErrorMsg="settings.password.initial-config.error"),Cr(i))))}userExists(){return this.apiService.get("user-exists",new Ro({ignoreAuth:!0})).pipe(De(e=>!0===e.exists),ii(()=>se(!0)))}static{this.\u0275fac=function(i){return new(i||t)(ce(fi),ce(Xo),ce(Jf))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();class Bhe{}class Lt{constructor(){this.persistentScrollPosKey="scroll-pos"}static{this.mustCallNgOnInitSuper=Symbol("You must call super.ngOnInit.")}ngOnInit(){let n=this.getLocalValue(this.persistentScrollPosKey);n=n?n.value:"0",window.scrollTo(0,Number(n)),setTimeout(()=>window.scrollTo(0,Number(n)),1)}saveScrollPosition(n){this.saveLocalValue(this.persistentScrollPosKey,window.scrollY+"")}saveLocalValue(n,e){const i=window.history.state;i[n]=e,i[n+"_time"]=(new Date).getTime(),window.history.replaceState(i,"",window.location.pathname+window.location.hash)}getLocalValue(n){if(!window.history.state||void 0===window.history.state[n])return null;const e=new Bhe;return e.value=window.history.state[n],e.date=window.history.state[n+"_time"],e}static{this.\u0275fac=function(e){return new(e||Lt)}}static{this.\u0275cmp=ae({type:Lt,selectors:[["app-page-base"]],hostBindings:function(e,i){1&e&&F("scroll",function(r){return i.saveScrollPosition(r)},iC)},standalone:!1,decls:0,vars:0,template:function(e,i){},encapsulation:2})}}let Vhe=(()=>{class t extends Lt{constructor(e,i){super(),this.authService=e,this.router=i}ngOnInit(){return this.verificationSubscription=this.authService.checkLogin().subscribe(e=>{this.router.navigate(e!==Ea.NotLogged?["nodes"]:["login"],{replaceUrl:!0})},()=>{this.router.navigate(["nodes"],{replaceUrl:!0})}),super.ngOnInit()}ngOnDestroy(){this.verificationSubscription.unsubscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(ep),O(yt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-start"]],standalone:!1,features:[_e],decls:2,vars:0,consts:[[1,"h-100","w-100"]],template:function(i,o){1&i&&(h(0,"div",0),L(1,"app-loading-indicator"),u())},dependencies:[Qr],encapsulation:2})}}return t})(),S5=(()=>{class t{_renderer;_elementRef;onChange=e=>{};onTouched=()=>{};constructor(e,i){this._renderer=e,this._elementRef=i}setProperty(e,i){this._renderer.setProperty(this._elementRef.nativeElement,e,i)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}static \u0275fac=function(i){return new(i||t)(O(ei),O(Ne))};static \u0275dir=de({type:t})}return t})(),hc=(()=>{class t extends S5{static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,features:[_e]})}return t})();const Qo=new Z(""),Uhe={provide:Qo,useExisting:jt(()=>Qt),multi:!0},jhe=new Z("");let Qt=(()=>{class t extends S5{_compositionMode;_composing=!1;constructor(e,i,o){super(e,i),this._compositionMode=o,null==this._compositionMode&&(this._compositionMode=!function zhe(){const t=na()?na().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}())}writeValue(e){this.setProperty("value",e??"")}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}static \u0275fac=function(i){return new(i||t)(O(ei),O(Ne),O(jhe,8))};static \u0275dir=de({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(i,o){1&i&&F("input",function(s){return o._handleInput(s.target.value)})("blur",function(){return o.onTouched()})("compositionstart",function(){return o._compositionStart()})("compositionend",function(s){return o._compositionEnd(s.target.value)})},standalone:!1,features:[dt([Uhe]),_e]})}return t})();function Zk(t){return null==t||0===Qk(t)}function Qk(t){return null==t?null:Array.isArray(t)||"string"==typeof t?t.length:t instanceof Set?t.size:null}const ki=new Z(""),Pa=new Z(""),$he=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class Se{static min(n){return D5(n)}static max(n){return T5(n)}static required(n){return function E5(t){return Zk(t.value)?{required:!0}:null}(n)}static requiredTrue(n){return function P5(t){return!0===t.value?null:{required:!0}}(n)}static email(n){return function I5(t){return Zk(t.value)||$he.test(t.value)?null:{email:!0}}(n)}static minLength(n){return function O5(t){return n=>{const e=n.value?.length??Qk(n.value);return null===e||0===e?null:e{if(Zk(i.value))return null;const o=i.value;return n.test(o)?null:{pattern:{requiredPattern:e,actualValue:o}}}}(n)}static nullValidator(n){return null}static compose(n){return H5(n)}static composeAsync(n){return U5(n)}}function D5(t){return n=>{if(null==n.value||null==t)return null;const e=parseFloat(n.value);return!isNaN(e)&&e{if(null==n.value||null==t)return null;const e=parseFloat(n.value);return!isNaN(e)&&e>t?{max:{max:t,actual:n.value}}:null}}function A5(t){return n=>{const e=n.value?.length??Qk(n.value);return null!==e&&e>t?{maxlength:{requiredLength:t,actualLength:e}}:null}}function Zb(t){return null}function F5(t){return null!=t}function N5(t){return Hh(t)?Xn(t):t}function L5(t){let n={};return t.forEach(e=>{n=null!=e?{...n,...e}:n}),0===Object.keys(n).length?null:n}function B5(t,n){return n.map(e=>e(t))}function V5(t){return t.map(n=>function Whe(t){return!t.validate}(n)?n:e=>n.validate(e))}function H5(t){if(!t)return null;const n=t.filter(F5);return 0==n.length?null:function(e){return L5(B5(e,n))}}function Jk(t){return null!=t?H5(V5(t)):null}function U5(t){if(!t)return null;const n=t.filter(F5);return 0==n.length?null:function(e){return du(B5(e,n).map(N5)).pipe(De(L5))}}function eS(t){return null!=t?U5(V5(t)):null}function z5(t,n){return null===t?[n]:Array.isArray(t)?[...t,n]:[t,n]}function j5(t){return t._rawValidators}function $5(t){return t._rawAsyncValidators}function tS(t){return t?Array.isArray(t)?t:[t]:[]}function Qb(t,n){return Array.isArray(t)?t.includes(n):t===n}function W5(t,n){const e=tS(n);return tS(t).forEach(o=>{Qb(e,o)||e.push(o)}),e}function G5(t,n){return tS(n).filter(e=>!Qb(t,e))}class q5{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}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=Jk(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=eS(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n=void 0){this.control?.reset(n)}hasError(n,e){return!!this.control&&this.control.hasError(n,e)}getError(n,e){return this.control?this.control.getError(n,e):null}}class Ki extends q5{name;get formDirective(){return null}get path(){return null}}class ts extends q5{_parent=null;name=null;valueAccessor=null}class K5{_cd;constructor(n){this._cd=n}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}}let Jt=(()=>{class t extends K5{constructor(e){super(e)}static \u0275fac=function(i){return new(i||t)(O(ts,2))};static \u0275dir=de({type:t,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(i,o){2&i&&ve("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)},standalone:!1,features:[_e]})}return t})(),xn=(()=>{class t extends K5{constructor(e){super(e)}static \u0275fac=function(i){return new(i||t)(O(Ki,10))};static \u0275dir=de({type:t,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["","formArray",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(i,o){2&i&&ve("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)("ng-submitted",o.isSubmitted)},standalone:!1,features:[_e]})}return t})();const tp="VALID",ev="INVALID",uu="PENDING",np="DISABLED";class hu{}class Z5 extends hu{value;source;constructor(n,e){super(),this.value=n,this.source=e}}class oS extends hu{pristine;source;constructor(n,e){super(),this.pristine=n,this.source=e}}class rS extends hu{touched;source;constructor(n,e){super(),this.touched=n,this.source=e}}class tv extends hu{status;source;constructor(n,e){super(),this.status=n,this.source=e}}class Q5 extends hu{source;constructor(n){super(),this.source=n}}class sS extends hu{source;constructor(n){super(),this.source=n}}function aS(t){return(nv(t)?t.validators:t)||null}function lS(t,n){return(nv(n)?n.asyncValidators:t)||null}function nv(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}function J5(t,n,e){const i=t.controls;if(!(n?Object.keys(i):i).length)throw new X(1e3,"");if(!i[e])throw new X(1001,"")}function eB(t,n,e){t._forEachChild((i,o)=>{if(void 0===e[o])throw new X(1002,"")})}class iv{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(n,e){this._assignValidators(n),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(n){this._rawValidators=this._composedValidatorFn=n}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(n){this._rawAsyncValidators=this._composedAsyncValidatorFn=n}get parent(){return this._parent}get status(){return it(this.statusReactive)}set status(n){it(()=>this.statusReactive.set(n))}_status=Fi(()=>this.statusReactive());statusReactive=Ct(void 0);get valid(){return this.status===tp}get invalid(){return this.status===ev}get pending(){return this.status==uu}get disabled(){return this.status===np}get enabled(){return this.status!==np}errors;get pristine(){return it(this.pristineReactive)}set pristine(n){it(()=>this.pristineReactive.set(n))}_pristine=Fi(()=>this.pristineReactive());pristineReactive=Ct(!0);get dirty(){return!this.pristine}get touched(){return it(this.touchedReactive)}set touched(n){it(()=>this.touchedReactive.set(n))}_touched=Fi(()=>this.touchedReactive());touchedReactive=Ct(!1);get untouched(){return!this.touched}_events=new be;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(n){this._assignValidators(n)}setAsyncValidators(n){this._assignAsyncValidators(n)}addValidators(n){this.setValidators(W5(n,this._rawValidators))}addAsyncValidators(n){this.setAsyncValidators(W5(n,this._rawAsyncValidators))}removeValidators(n){this.setValidators(G5(n,this._rawValidators))}removeAsyncValidators(n){this.setAsyncValidators(G5(n,this._rawAsyncValidators))}hasValidator(n){return Qb(this._rawValidators,n)}hasAsyncValidator(n){return Qb(this._rawAsyncValidators,n)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(n={}){const e=!1===this.touched;this.touched=!0;const i=n.sourceControl??this;n.onlySelf||this._parent?.markAsTouched({...n,sourceControl:i}),e&&!1!==n.emitEvent&&this._events.next(new rS(!0,i))}markAllAsDirty(n={}){this.markAsDirty({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsDirty(n))}markAllAsTouched(n={}){this.markAsTouched({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsTouched(n))}markAsUntouched(n={}){const e=!0===this.touched;this.touched=!1,this._pendingTouched=!1;const i=n.sourceControl??this;this._forEachChild(o=>{o.markAsUntouched({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:i})}),n.onlySelf||this._parent?._updateTouched(n,i),e&&!1!==n.emitEvent&&this._events.next(new rS(!1,i))}markAsDirty(n={}){const e=!0===this.pristine;this.pristine=!1;const i=n.sourceControl??this;n.onlySelf||this._parent?.markAsDirty({...n,sourceControl:i}),e&&!1!==n.emitEvent&&this._events.next(new oS(!1,i))}markAsPristine(n={}){const e=!1===this.pristine;this.pristine=!0,this._pendingDirty=!1;const i=n.sourceControl??this;this._forEachChild(o=>{o.markAsPristine({onlySelf:!0,emitEvent:n.emitEvent})}),n.onlySelf||this._parent?._updatePristine(n,i),e&&!1!==n.emitEvent&&this._events.next(new oS(!0,i))}markAsPending(n={}){this.status=uu;const e=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new tv(this.status,e)),this.statusChanges.emit(this.status)),n.onlySelf||this._parent?.markAsPending({...n,sourceControl:e})}disable(n={}){const e=this._parentMarkedDirty(n.onlySelf);this.status=np,this.errors=null,this._forEachChild(o=>{o.disable({...n,onlySelf:!0})}),this._updateValue();const i=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new Z5(this.value,i)),this._events.next(new tv(this.status,i)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...n,skipPristineCheck:e},this),this._onDisabledChange.forEach(o=>o(!0))}enable(n={}){const e=this._parentMarkedDirty(n.onlySelf);this.status=tp,this._forEachChild(i=>{i.enable({...n,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent}),this._updateAncestors({...n,skipPristineCheck:e},this),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(n,e){n.onlySelf||(this._parent?.updateValueAndValidity(n),n.skipPristineCheck||this._parent?._updatePristine({},e),this._parent?._updateTouched({},e))}setParent(n){this._parent=n}getRawValue(){return this.value}updateValueAndValidity(n={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){const i=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===tp||this.status===uu)&&this._runAsyncValidator(i,n.emitEvent)}const e=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new Z5(this.value,e)),this._events.next(new tv(this.status,e)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),n.onlySelf||this._parent?.updateValueAndValidity({...n,sourceControl:e})}_updateTreeValidity(n={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(n)),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?np:tp}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(n,e){if(this.asyncValidator){this.status=uu,this._hasOwnPendingAsyncValidator={emitEvent:!1!==e,shouldHaveEmitted:!1!==n};const i=N5(this.asyncValidator(this));this._asyncValidationSubscription=i.subscribe(o=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(o,{emitEvent:e,shouldHaveEmitted:n})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();const n=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,n}return!1}setErrors(n,e={}){this.errors=n,this._updateControlsErrors(!1!==e.emitEvent,this,e.shouldHaveEmitted)}get(n){let e=n;return null==e||(Array.isArray(e)||(e=e.split(".")),0===e.length)?null:e.reduce((i,o)=>i&&i._find(o),this)}getError(n,e){const i=e?this.get(e):this;return i?.errors?i.errors[n]:null}hasError(n,e){return!!this.getError(n,e)}get root(){let n=this;for(;n._parent;)n=n._parent;return n}_updateControlsErrors(n,e,i){this.status=this._calculateStatus(),n&&this.statusChanges.emit(this.status),(n||i)&&this._events.next(new tv(this.status,e)),this._parent&&this._parent._updateControlsErrors(n,e,i)}_initObservables(){this.valueChanges=new ke,this.statusChanges=new ke}_calculateStatus(){return this._allControlsDisabled()?np:this.errors?ev:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(uu)?uu:this._anyControlsHaveStatus(ev)?ev:tp}_anyControlsHaveStatus(n){return this._anyControls(e=>e.status===n)}_anyControlsDirty(){return this._anyControls(n=>n.dirty)}_anyControlsTouched(){return this._anyControls(n=>n.touched)}_updatePristine(n,e){const i=!this._anyControlsDirty(),o=this.pristine!==i;this.pristine=i,n.onlySelf||this._parent?._updatePristine(n,e),o&&this._events.next(new oS(this.pristine,e))}_updateTouched(n={},e){this.touched=this._anyControlsTouched(),this._events.next(new rS(this.touched,e)),n.onlySelf||this._parent?._updateTouched(n,e)}_onDisabledChange=[];_registerOnCollectionChange(n){this._onCollectionChange=n}_setUpdateStrategy(n){nv(n)&&null!=n.updateOn&&(this._updateOn=n.updateOn)}_parentMarkedDirty(n){return!n&&!!this._parent?.dirty&&!this._parent._anyControlsDirty()}_find(n){return null}_assignValidators(n){this._rawValidators=Array.isArray(n)?n.slice():n,this._composedValidatorFn=function Qhe(t){return Array.isArray(t)?Jk(t):t||null}(this._rawValidators)}_assignAsyncValidators(n){this._rawAsyncValidators=Array.isArray(n)?n.slice():n,this._composedAsyncValidatorFn=function Jhe(t){return Array.isArray(t)?eS(t):t||null}(this._rawAsyncValidators)}}class fu extends iv{constructor(n,e,i){super(aS(e),lS(i,e)),this.controls=n,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;registerControl(n,e){return this.controls[n]?this.controls[n]:(this.controls[n]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(n,e,i={}){this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}removeControl(n,e={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(n,e,i={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],e&&this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}contains(n){return this.controls.hasOwnProperty(n)&&this.controls[n].enabled}setValue(n,e={}){eB(this,0,n),Object.keys(n).forEach(i=>{J5(this,!0,i),this.controls[i].setValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(n,e={}){null!=n&&(Object.keys(n).forEach(i=>{const o=this.controls[i];o&&o.patchValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(n={},e={}){this._forEachChild((i,o)=>{i.reset(n?n[o]:null,{...e,onlySelf:!0})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e),!1!==e?.emitEvent&&this._events.next(new sS(this))}getRawValue(){return this._reduceChildren({},(n,e,i)=>(n[i]=e.getRawValue(),n))}_syncPendingControls(){let n=this._reduceChildren(!1,(e,i)=>!!i._syncPendingControls()||e);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){Object.keys(this.controls).forEach(e=>{const i=this.controls[e];i&&n(i,e)})}_setUpControls(){this._forEachChild(n=>{n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(n){for(const[e,i]of Object.entries(this.controls))if(this.contains(e)&&n(i))return!0;return!1}_reduceValue(){return this._reduceChildren({},(e,i,o)=>((i.enabled||this.disabled)&&(e[o]=i.value),e))}_reduceChildren(n,e){let i=n;return this._forEachChild((o,r)=>{i=e(i,o,r)}),i}_allControlsDisabled(){for(const n of Object.keys(this.controls))if(this.controls[n].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(n){return this.controls.hasOwnProperty(n)?this.controls[n]:null}}const ov=fu;class tB extends fu{}const fc=new Z("",{factory:()=>ip}),ip="always";function rv(t,n){return[...n.path,t]}function op(t,n,e=ip){cS(t,n),n.valueAccessor.writeValue(t.value),(t.disabled||"always"===e)&&n.valueAccessor.setDisabledState?.(t.disabled),function tfe(t,n){n.valueAccessor.registerOnChange(e=>{t._pendingValue=e,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&nB(t,n)})}(t,n),function ife(t,n){const e=(i,o)=>{n.valueAccessor.writeValue(i),o&&n.viewToModelUpdate(i)};t.registerOnChange(e),n._registerOnDestroy(()=>{t._unregisterOnChange(e)})}(t,n),function nfe(t,n){n.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&nB(t,n),"submit"!==t.updateOn&&t.markAsTouched()})}(t,n),function efe(t,n){if(n.valueAccessor.setDisabledState){const e=i=>{n.valueAccessor.setDisabledState(i)};t.registerOnDisabledChange(e),n._registerOnDestroy(()=>{t._unregisterOnDisabledChange(e)})}}(t,n)}function sv(t,n,e=!0){const i=()=>{};n?.valueAccessor?.registerOnChange(i),n?.valueAccessor?.registerOnTouched(i),lv(t,n),t&&(n._invokeOnDestroyCallbacks(),t._registerOnCollectionChange(()=>{}))}function av(t,n){t.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(n)})}function cS(t,n){const e=j5(t);null!==n.validator?t.setValidators(z5(e,n.validator)):"function"==typeof e&&t.setValidators([e]);const i=$5(t);null!==n.asyncValidator?t.setAsyncValidators(z5(i,n.asyncValidator)):"function"==typeof i&&t.setAsyncValidators([i]);const o=()=>t.updateValueAndValidity();av(n._rawValidators,o),av(n._rawAsyncValidators,o)}function lv(t,n){let e=!1;if(null!==t){if(null!==n.validator){const o=j5(t);if(Array.isArray(o)&&o.length>0){const r=o.filter(s=>s!==n.validator);r.length!==o.length&&(e=!0,t.setValidators(r))}}if(null!==n.asyncValidator){const o=$5(t);if(Array.isArray(o)&&o.length>0){const r=o.filter(s=>s!==n.asyncValidator);r.length!==o.length&&(e=!0,t.setAsyncValidators(r))}}}const i=()=>{};return av(n._rawValidators,i),av(n._rawAsyncValidators,i),e}function nB(t,n){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),n.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function iB(t,n){cS(t,n)}function uS(t,n){if(!t.hasOwnProperty("model"))return!1;const e=t.model;return!!e.isFirstChange()||!Object.is(n,e.currentValue)}function oB(t,n){t._syncPendingControls(),n.forEach(e=>{const i=e.control;"submit"===i.updateOn&&i._pendingChange&&(e.viewToModelUpdate(i._pendingValue),i._pendingChange=!1)})}function hS(t,n){if(!n)return null;let e,i,o;return Array.isArray(n),n.forEach(r=>{r.constructor===Qt?e=r:function sfe(t){return Object.getPrototypeOf(t.constructor)===hc}(r)?i=r:o=r}),o||i||e||null}const lfe={provide:Ki,useExisting:jt(()=>pu)},rp=Promise.resolve();let pu=(()=>{class t extends Ki{callSetDisabledState;get submitted(){return it(this.submittedReactive)}_submitted=Fi(()=>this.submittedReactive());submittedReactive=Ct(!1);_directives=new Set;form;ngSubmit=new ke;options;constructor(e,i,o){super(),this.callSetDisabledState=o,this.form=new fu({},Jk(e),eS(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){rp.then(()=>{const i=this._findContainer(e.path);e.control=i.registerControl(e.name,e.control),op(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){rp.then(()=>{this._findContainer(e.path)?.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){rp.then(()=>{const i=this._findContainer(e.path),o=new fu({});iB(o,e),i.registerControl(e.name,o),o.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){rp.then(()=>{this._findContainer(e.path)?.removeControl?.(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,i){rp.then(()=>{this.form.get(e.path).setValue(i)})}setValue(e){this.control.setValue(e)}onSubmit(e){return this.submittedReactive.set(!0),oB(this.form,this._directives),this.ngSubmit.emit(e),this.form._events.next(new Q5(this.control)),"dialog"===e?.target?.method}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submittedReactive.set(!1)}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}static \u0275fac=function(i){return new(i||t)(O(ki,10),O(Pa,10),O(fc,8))};static \u0275dir=de({type:t,selectors:[["form",3,"ngNoForm","",3,"formGroup","",3,"formArray",""],["ng-form"],["","ngForm",""]],hostBindings:function(i,o){1&i&&F("submit",function(s){return o.onSubmit(s)})("reset",function(){return o.onReset()})},inputs:{options:[0,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[dt([lfe]),_e]})}return t})();function rB(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}function sB(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}const mu=class extends iv{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(n=null,e,i){super(aS(e),lS(i,e)),this._applyFormState(n),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),nv(e)&&(e.nonNullable||e.initialValueIsDefault)&&(this.defaultValue=sB(n)?n.value:n)}setValue(n,e={}){this.value=this._pendingValue=n,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(i=>i(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(n,e={}){this.setValue(n,e)}reset(n=this.defaultValue,e={}){this._applyFormState(n),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),e.overwriteDefaultValue&&(this.defaultValue=this.value),this._pendingChange=!1,!1!==e?.emitEvent&&this._events.next(new sS(this))}_updateValue(){}_anyControls(n){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(n){this._onChange.push(n)}_unregisterOnChange(n){rB(this._onChange,n)}registerOnDisabledChange(n){this._onDisabledChange.push(n)}_unregisterOnDisabledChange(n){rB(this._onDisabledChange,n)}_forEachChild(n){}_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(n){sB(n)?(this.value=this._pendingValue=n.value,n.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=n}},Ia=mu;let cv=(()=>{class t extends Ki{_parent;ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective?.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return rv(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,standalone:!1,features:[_e]})}return t})();const ffe={provide:ts,useExisting:jt(()=>gu)},aB=Promise.resolve();let gu=(()=>{class t extends ts{_changeDetectorRef;callSetDisabledState;control=new mu;static ngAcceptInputType_isDisabled;_registered=!1;viewModel;name="";isDisabled;model;options;update=new ke;constructor(e,i,o,r,s,a){super(),this._changeDetectorRef=s,this.callSetDisabledState=a,this._parent=e,this._setValidators(i),this._setAsyncValidators(o),this.valueAccessor=hS(0,r)}ngOnChanges(e){if(this._checkForErrors(),!this._registered||"name"in e){if(this._registered&&(this._checkName(),this.formDirective)){const i=e.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in e&&this._updateDisabled(e),uS(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective?.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_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(){op(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(e){aB.then(()=>{this.control.setValue(e,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(e){const i=e.isDisabled.currentValue,o=0!==i&&Te(i);aB.then(()=>{o&&!this.control.disabled?this.control.disable():!o&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(e){return this._parent?rv(e,this._parent):[e]}static \u0275fac=function(i){return new(i||t)(O(Ki,9),O(ki,10),O(Pa,10),O(Qo,10),O(Dt,8),O(fc,8))};static \u0275dir=de({type:t,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],standalone:!1,features:[dt([ffe]),_e,vi]})}return t})(),kn=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""],standalone:!1})}return t})();const pfe={provide:Qo,useExisting:jt(()=>Oa),multi:!0};let Oa=(()=>{class t extends hc{writeValue(e){this.setProperty("value",e??"")}registerOnChange(e){this.onChange=i=>{e(""==i?null:parseFloat(i))}}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(i,o){1&i&&F("input",function(s){return o.onChange(s.target.value)})("blur",function(){return o.onTouched()})},standalone:!1,features:[dt([pfe]),_e]})}return t})();class dB extends iv{constructor(n,e,i){super(aS(e),lS(i,e)),this.controls=n,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;at(n){return this.controls[this._adjustIndex(n)]}push(n,e={}){Array.isArray(n)?n.forEach(i=>{this.controls.push(i),this._registerControl(i)}):(this.controls.push(n),this._registerControl(n)),this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}insert(n,e,i={}){this.controls.splice(n,0,e),this._registerControl(e),this.updateValueAndValidity({emitEvent:i.emitEvent})}removeAt(n,e={}){let i=this._adjustIndex(n);i<0&&(i=0),this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),this.controls.splice(i,1),this.updateValueAndValidity({emitEvent:e.emitEvent})}setControl(n,e,i={}){let o=this._adjustIndex(n);o<0&&(o=0),this.controls[o]&&this.controls[o]._registerOnCollectionChange(()=>{}),this.controls.splice(o,1),e&&(this.controls.splice(o,0,e),this._registerControl(e)),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(n,e={}){eB(this,0,n),n.forEach((i,o)=>{J5(this,!1,o),this.at(o).setValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(n,e={}){null!=n&&(n.forEach((i,o)=>{this.at(o)&&this.at(o).patchValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(n=[],e={}){this._forEachChild((i,o)=>{i.reset(n[o],{...e,onlySelf:!0})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e),!1!==e?.emitEvent&&this._events.next(new sS(this))}getRawValue(){return this.controls.map(n=>n.getRawValue())}clear(n={}){this.controls.length<1||(this._forEachChild(e=>e._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:n.emitEvent}))}_adjustIndex(n){return n<0?n+this.length:n}_syncPendingControls(){let n=this.controls.reduce((e,i)=>!!i._syncPendingControls()||e,!1);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){this.controls.forEach((e,i)=>{n(e,i)})}_updateValue(){this.value=this.controls.filter(n=>n.enabled||this.disabled).map(n=>n.value)}_anyControls(n){return this.controls.some(e=>e.enabled&&n(e))}_setUpControls(){this._forEachChild(n=>this._registerControl(n))}_allControlsDisabled(){for(const n of this.controls)if(n.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(n){n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)}_find(n){return this.at(n)??null}}let uv=(()=>{class t extends Ki{callSetDisabledState;get submitted(){return it(this._submittedReactive)}set submitted(e){this._submittedReactive.set(e)}_submitted=Fi(()=>this._submittedReactive());_submittedReactive=Ct(!1);_oldForm;_onCollectionChange=()=>this._updateDomValue();directives=[];constructor(e,i,o){super(),this.callSetDisabledState=o,this._setValidators(e),this._setAsyncValidators(i)}ngOnChanges(e){this.onChanges(e)}ngOnDestroy(){this.onDestroy()}onChanges(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}onDestroy(){this.form&&(lv(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get path(){return[]}addControl(e){const i=this.form.get(e.path);return op(i,e,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),i}getControl(e){return this.form.get(e.path)}removeControl(e){sv(e.control||null,e,!1),function afe(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}getFormArray(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}updateModel(e,i){this.form.get(e.path).setValue(i)}onReset(){this.resetForm()}resetForm(e=void 0,i={}){this.form.reset(e,i),this._submittedReactive.set(!1)}onSubmit(e){return this.submitted=!0,oB(this.form,this.directives),this.ngSubmit.emit(e),this.form._events.next(new Q5(this.control)),"dialog"===e?.target?.method}_updateDomValue(){this.directives.forEach(e=>{const i=e.control,o=this.form.get(e.path);i!==o&&(sv(i||null,e),(t=>t instanceof mu)(o)&&(op(o,e,this.callSetDisabledState),e.control=o))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){const i=this.form.get(e.path);iB(i,e),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){const i=this.form?.get(e.path);i&&function ofe(t,n){return lv(t,n)}(i,e)&&i.updateValueAndValidity({emitEvent:!1})}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm?._registerOnCollectionChange(()=>{})}_updateValidators(){cS(this.form,this),this._oldForm&&lv(this._oldForm,this)}_checkFormPresent(){}static \u0275fac=function(i){return new(i||t)(O(ki,10),O(Pa,10),O(fc,8))};static \u0275dir=de({type:t,features:[_e,vi]})}return t})();const fS=new Z(""),yfe={provide:Ki,useExisting:jt(()=>pc)};let pc=(()=>{class t extends cv{name=null;constructor(e,i,o){super(),this._parent=e,this._setValidators(i),this._setAsyncValidators(o)}_checkParentType(){fB(this._parent)}static \u0275fac=function(i){return new(i||t)(O(Ki,13),O(ki,10),O(Pa,10))};static \u0275dir=de({type:t,selectors:[["","formGroupName",""]],inputs:{name:[0,"formGroupName","name"]},standalone:!1,features:[dt([yfe]),_e]})}return t})();const Cfe={provide:Ki,useExisting:jt(()=>_u)};let _u=(()=>{class t extends Ki{_parent;name=null;constructor(e,i,o){super(),this._parent=e,this._setValidators(i),this._setAsyncValidators(o)}ngOnInit(){fB(this._parent),this.formDirective.addFormArray(this)}ngOnDestroy(){this.formDirective?.removeFormArray(this)}get control(){return this.formDirective.getFormArray(this)}get formDirective(){return this._parent?this._parent.formDirective:null}get path(){return rv(null==this.name?this.name:this.name.toString(),this._parent)}static \u0275fac=function(i){return new(i||t)(O(Ki,13),O(ki,10),O(Pa,10))};static \u0275dir=de({type:t,selectors:[["","formArrayName",""]],inputs:{name:[0,"formArrayName","name"]},standalone:!1,features:[dt([Cfe]),_e]})}return t})();function fB(t){return!(t instanceof pc||t instanceof uv||t instanceof _u)}const wfe={provide:ts,useExisting:jt(()=>_n)};let _n=(()=>{class t extends ts{_ngModelWarningConfig;_added=!1;viewModel;control;name=null;set isDisabled(e){}model;update=new ke;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(e,i,o,r,s){super(),this._ngModelWarningConfig=s,this._parent=e,this._setValidators(i),this._setAsyncValidators(o),this.valueAccessor=hS(0,r)}ngOnChanges(e){this._added||this._setUpControl(),uS(e,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective?.removeControl(this)}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}get path(){return rv(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_setUpControl(){this.control=this.formDirective.addControl(this),this._added=!0}static \u0275fac=function(i){return new(i||t)(O(Ki,13),O(ki,10),O(Pa,10),O(Qo,10),O(fS,8))};static \u0275dir=de({type:t,selectors:[["","formControlName",""]],inputs:{name:[0,"formControlName","name"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},standalone:!1,features:[dt([wfe]),_e,vi]})}return t})();const xfe={provide:Ki,useExisting:jt(()=>sn)};let sn=(()=>{class t extends uv{form=null;ngSubmit=new ke;get control(){return this.form}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","formGroup",""]],hostBindings:function(i,o){1&i&&F("submit",function(s){return o.onSubmit(s)})("reset",function(){return o.onReset()})},inputs:{form:[0,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[dt([xfe]),_e]})}return t})();function _B(t){return"number"==typeof t?t:parseFloat(t)}let mc=(()=>{class t{_validator=Zb;_onChange;_enabled;ngOnChanges(e){if(this.inputName in e){const i=this.normalizeInput(e[this.inputName].currentValue);this._enabled=this.enabled(i),this._validator=this._enabled?this.createValidator(i):Zb,this._onChange?.()}}validate(e){return this._validator(e)}registerOnValidatorChange(e){this._onChange=e}enabled(e){return null!=e}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,features:[vi]})}return t})();const Pfe={provide:ki,useExisting:jt(()=>hv),multi:!0};let hv=(()=>{class t extends mc{max;inputName="max";normalizeInput=e=>_B(e);createValidator=e=>T5(e);static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["input","type","number","max","","formControlName",""],["input","type","number","max","","formControl",""],["input","type","number","max","","ngModel",""]],hostVars:1,hostBindings:function(i,o){2&i&&We("max",o._enabled?o.max:null)},inputs:{max:"max"},standalone:!1,features:[dt([Pfe]),_e]})}return t})();const Ife={provide:ki,useExisting:jt(()=>gc),multi:!0};let gc=(()=>{class t extends mc{min;inputName="min";normalizeInput=e=>_B(e);createValidator=e=>D5(e);static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["input","type","number","min","","formControlName",""],["input","type","number","min","","formControl",""],["input","type","number","min","","ngModel",""]],hostVars:1,hostBindings:function(i,o){2&i&&We("min",o._enabled?o.min:null)},inputs:{min:"min"},standalone:!1,features:[dt([Ife]),_e]})}return t})();const Nfe={provide:ki,useExisting:jt(()=>Bi),multi:!0};let Bi=(()=>{class t extends mc{maxlength;inputName="maxlength";normalizeInput=e=>function gB(t){return"number"==typeof t?t:parseInt(t,10)}(e);createValidator=e=>A5(e);static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(i,o){2&i&&We("maxlength",o._enabled?o.maxlength:null)},inputs:{maxlength:"maxlength"},standalone:!1,features:[dt([Nfe]),_e]})}return t})(),wB=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function xB(t){return!!t&&(void 0!==t.asyncValidators||void 0!==t.validators||void 0!==t.updateOn)}let kB=(()=>{class t{useNonNullable=!1;get nonNullable(){const e=new t;return e.useNonNullable=!0,e}group(e,i=null){const o=this._reduceControls(e);let r={};return xB(i)?r=i:null!==i&&(r.validators=i.validator,r.asyncValidators=i.asyncValidator),new fu(o,r)}record(e,i=null){const o=this._reduceControls(e);return new tB(o,i)}control(e,i,o){let r={};return this.useNonNullable?(xB(i)?r=i:(r.validators=i,r.asyncValidators=o),new mu(e,{...r,nonNullable:!0})):new mu(e,i,o)}array(e,i,o){const r=e.map(s=>this._createControl(s));return new dB(r,i,o)}_reduceControls(e){const i={};return Object.keys(e).forEach(o=>{i[o]=this._createControl(e[o])}),i}_createControl(e){return e instanceof mu||e instanceof iv?e:Array.isArray(e)?this.control(e[0],e.length>1?e[1]:null,e.length>2?e[2]:null):this.control(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Si=(()=>{class t extends kB{group(e,i=null){return super.group(e,i)}control(e,i,o){return super.control(e,i,o)}array(e,i,o){return super.array(e,i,o)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Bfe=(()=>{class t{static withConfig(e){return{ngModule:t,providers:[{provide:fc,useValue:e.callSetDisabledState??ip}]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[wB]})}return t})(),Vfe=(()=>{class t{static withConfig(e){return{ngModule:t,providers:[{provide:fS,useValue:e.warnOnNgModelWithFormControl??"always"},{provide:fc,useValue:e.callSetDisabledState??ip}]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[wB]})}return t})();function bu(t){return null!=t&&"false"!=`${t}`}class Ufe{_box;_destroyed=new be;_resizeSubject=new be;_resizeObserver;_elementObservables=new Map;constructor(n){this._box=n,typeof ResizeObserver<"u"&&(this._resizeObserver=new ResizeObserver(e=>this._resizeSubject.next(e)))}observe(n){return this._elementObservables.has(n)||this._elementObservables.set(n,new zt(e=>{const i=this._resizeSubject.subscribe(e);return this._resizeObserver?.observe(n,{box:this._box}),()=>{this._resizeObserver?.unobserve(n),i.unsubscribe(),this._elementObservables.delete(n)}}).pipe(Pn(e=>e.some(i=>i.target===n)),jk({bufferSize:1,refCount:!0}),ln(this._destroyed))),this._elementObservables.get(n)}destroy(){this._destroyed.next(),this._destroyed.complete(),this._resizeSubject.complete(),this._elementObservables.clear()}}let SB=(()=>{class t{_cleanupErrorListener;_observers=new Map;_ngZone=T(Ce);constructor(){}ngOnDestroy(){for(const[,e]of this._observers)e.destroy();this._observers.clear(),this._cleanupErrorListener?.()}observe(e,i){const o=i?.box||"content-box";return this._observers.has(o)||this._observers.set(o,new Ufe(o)),this._observers.get(o).observe(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const zfe=["notch"],jfe=["matFormFieldNotchedOutline",""],$fe=["*"],MB=["iconPrefixContainer"],DB=["textPrefixContainer"],TB=["iconSuffixContainer"],EB=["textSuffixContainer"],Wfe=["textField"],Gfe=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],qfe=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];function Kfe(t,n){1&t&&L(0,"span",21)}function Yfe(t,n){if(1&t&&(h(0,"label",20),Rt(1,1),x(2,Kfe,1,0,"span",21),u()),2&t){const e=y(2);C("floating",e._shouldLabelFloat())("monitorResize",e._hasOutline())("id",e._labelId),We("for",e._control.disableAutomaticLabeling?null:e._control.id),c(2),k(!e.hideRequiredMarker&&e._control.required?2:-1)}}function Xfe(t,n){1&t&&x(0,Yfe,3,5,"label",20),2&t&&k(y()._hasFloatingLabel()?0:-1)}function Zfe(t,n){1&t&&L(0,"div",7)}function Qfe(t,n){}function Jfe(t,n){1&t&&rt(0,Qfe,0,0,"ng-template",13),2&t&&(y(2),C("ngTemplateOutlet",Un(1)))}function epe(t,n){if(1&t&&(h(0,"div",9),x(1,Jfe,1,1,null,13),u()),2&t){const e=y();C("matFormFieldNotchedOutlineOpen",e._shouldLabelFloat()),c(),k(e._forceDisplayInfixLabel()?-1:1)}}function tpe(t,n){1&t&&(h(0,"div",10,2),Rt(2,2),u())}function npe(t,n){1&t&&(h(0,"div",11,3),Rt(2,3),u())}function ipe(t,n){}function ope(t,n){1&t&&rt(0,ipe,0,0,"ng-template",13),2&t&&(y(),C("ngTemplateOutlet",Un(1)))}function rpe(t,n){1&t&&(h(0,"div",14,4),Rt(2,4),u())}function spe(t,n){1&t&&(h(0,"div",15,5),Rt(2,5),u())}function ape(t,n){1&t&&L(0,"div",16)}function lpe(t,n){1&t&&(h(0,"div",18),Rt(1,6),u())}function cpe(t,n){if(1&t&&(h(0,"mat-hint",22),p(1),u()),2&t){const e=y(2);C("id",e._hintLabelId),c(),S(e.hintLabel)}}function dpe(t,n){if(1&t&&(h(0,"div",19),x(1,cpe,2,2,"mat-hint",22),Rt(2,7),L(3,"div",23),Rt(4,8),u()),2&t){const e=y();c(),k(e.hintLabel?1:-1)}}let ns=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-label"]]})}return t})();const PB=new Z("MatError");let Aa=(()=>{class t{id=T(si).getId("mat-mdc-error-");constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-error"],["","matError",""]],hostAttrs:[1,"mat-mdc-form-field-error","mat-mdc-form-field-bottom-align"],hostVars:1,hostBindings:function(i,o){2&i&&gr("id",o.id)},inputs:{id:"id"},features:[dt([{provide:PB,useExisting:t}])]})}return t})(),sp=(()=>{class t{align="start";id=T(si).getId("mat-mdc-hint-");static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(i,o){2&i&&(gr("id",o.id),We("align",null),ve("mat-mdc-form-field-hint-end","end"===o.align))},inputs:{align:"align",id:"id"}})}return t})();const upe=new Z("MatPrefix"),hpe=new Z("MatSuffix"),IB=new Z("FloatingLabelParent");let OB=(()=>{class t{_elementRef=T(Ne);get floating(){return this._floating}set floating(e){this._floating=e,this.monitorResize&&this._handleResize()}_floating=!1;get monitorResize(){return this._monitorResize}set monitorResize(e){this._monitorResize=e,this._monitorResize?this._subscribeToResize():this._resizeSubscription.unsubscribe()}_monitorResize=!1;_resizeObserver=T(SB);_ngZone=T(Ce);_parent=T(IB);_resizeSubscription=new gt;constructor(){}ngOnDestroy(){this._resizeSubscription.unsubscribe()}getWidth(){return function fpe(t){if(null!==t.offsetParent)return t.scrollWidth;const e=t.cloneNode(!0);e.style.setProperty("position","absolute"),e.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(e);const i=e.scrollWidth;return e.remove(),i}(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}_handleResize(){setTimeout(()=>this._parent._handleLabelResized())}_subscribeToResize(){this._resizeSubscription.unsubscribe(),this._ngZone.runOutsideAngular(()=>{this._resizeSubscription=this._resizeObserver.observe(this._elementRef.nativeElement,{box:"border-box"}).subscribe(()=>this._handleResize())})}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(i,o){2&i&&ve("mdc-floating-label--float-above",o.floating)},inputs:{floating:"floating",monitorResize:"monitorResize"}})}return t})();const AB="mdc-line-ripple--active",fv="mdc-line-ripple--deactivating";let RB=(()=>{class t{_elementRef=T(Ne);_cleanupTransitionEnd;constructor(){const e=T(Ce),i=T(ei);e.runOutsideAngular(()=>{this._cleanupTransitionEnd=i.listen(this._elementRef.nativeElement,"transitionend",this._handleTransitionEnd)})}activate(){const e=this._elementRef.nativeElement.classList;e.remove(fv),e.add(AB)}deactivate(){this._elementRef.nativeElement.classList.add(fv)}_handleTransitionEnd=e=>{const i=this._elementRef.nativeElement.classList,o=i.contains(fv);"opacity"===e.propertyName&&o&&i.remove(AB,fv)};ngOnDestroy(){this._cleanupTransitionEnd()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"]})}return t})(),FB=(()=>{class t{_elementRef=T(Ne);_ngZone=T(Ce);open=!1;_notch;ngAfterViewInit(){const e=this._elementRef.nativeElement,i=e.querySelector(".mdc-floating-label");i?(e.classList.add("mdc-notched-outline--upgraded"),"function"==typeof requestAnimationFrame&&(i.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>i.style.transitionDuration="")}))):e.classList.add("mdc-notched-outline--no-label")}_setNotchWidth(e){this._notch.nativeElement.style.width=this.open&&e?`calc(${e}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`:""}_setMaxWidth(e){this._notch.nativeElement.style.setProperty("--mat-form-field-notch-max-width",`calc(100% - ${e}px)`)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["div","matFormFieldNotchedOutline",""]],viewQuery:function(i,o){if(1&i&&st(zfe,5),2&i){let r;fe(r=pe())&&(o._notch=r.first)}},hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(i,o){2&i&&ve("mdc-notched-outline--notched",o.open)},inputs:{open:[0,"matFormFieldNotchedOutlineOpen","open"]},attrs:jfe,ngContentSelectors:$fe,decls:5,vars:0,consts:[["notch",""],[1,"mat-mdc-notch-piece","mdc-notched-outline__leading"],[1,"mat-mdc-notch-piece","mdc-notched-outline__notch"],[1,"mat-mdc-notch-piece","mdc-notched-outline__trailing"]],template:function(i,o){1&i&&(xi(),ma(0,"div",1),Ms(1,"div",2,0),Rt(3),Bl(),ma(4,"div",3))},encapsulation:2,changeDetection:0})}return t})(),_S=(()=>{class t{value=null;stateChanges;id;placeholder;ngControl=null;focused=!1;empty=!1;shouldLabelFloat=!1;required=!1;disabled=!1;errorState=!1;controlType;autofilled;userAriaDescribedBy;disableAutomaticLabeling;describedByIds;static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t})}return t})();const bS=new Z("MatFormField"),ppe=new Z("MAT_FORM_FIELD_DEFAULT_OPTIONS");let vu,dn=(()=>{class t{_elementRef=T(Ne);_changeDetectorRef=T(Dt);_platform=T(Zn);_idGenerator=T(si);_ngZone=T(Ce);_defaults=T(ppe,{optional:!0});_currentDirection;_textField;_iconPrefixContainer;_textPrefixContainer;_iconSuffixContainer;_textSuffixContainer;_floatingLabel;_notchedOutline;_lineRipple;_iconPrefixContainerSignal=f_("iconPrefixContainer");_textPrefixContainerSignal=f_("textPrefixContainer");_iconSuffixContainerSignal=f_("iconSuffixContainer");_textSuffixContainerSignal=f_("textSuffixContainer");_prefixSuffixContainers=Fi(()=>[this._iconPrefixContainerSignal(),this._textPrefixContainerSignal(),this._iconSuffixContainerSignal(),this._textSuffixContainerSignal()].map(e=>e?.nativeElement).filter(e=>void 0!==e));_formFieldControl;_prefixChildren;_suffixChildren;_errorChildren;_hintChildren;_labelChild=pee(ns);get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(e){this._hideRequiredMarker=bu(e)}_hideRequiredMarker=!1;color="primary";get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||"auto"}set floatLabel(e){e!==this._floatLabel&&(this._floatLabel=e,this._changeDetectorRef.markForCheck())}_floatLabel;get appearance(){return this._appearanceSignal()}set appearance(e){this._appearanceSignal.set(e||this._defaults?.appearance||"fill")}_appearanceSignal=Ct("fill");get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||"fixed"}set subscriptSizing(e){this._subscriptSizing=e||this._defaults?.subscriptSizing||"fixed"}_subscriptSizing=null;get hintLabel(){return this._hintLabel}set hintLabel(e){this._hintLabel=e,this._processHints()}_hintLabel="";_hasIconPrefix=!1;_hasTextPrefix=!1;_hasIconSuffix=!1;_hasTextSuffix=!1;_labelId=this._idGenerator.getId("mat-mdc-form-field-label-");_hintLabelId=this._idGenerator.getId("mat-mdc-hint-");_describedByIds;get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(e){this._explicitFormFieldControl=e}_destroyed=new be;_isFocused=null;_explicitFormFieldControl;_previousControl=null;_previousControlValidatorFn=null;_stateChanges;_valueChanges;_describedByChanges;_outlineLabelOffsetResizeObserver=null;_animationsDisabled=hi();constructor(){const e=this._defaults,i=T(kr);e&&(e.appearance&&(this.appearance=e.appearance),this._hideRequiredMarker=!!e?.hideRequiredMarker,e.color&&(this.color=e.color)),vm(()=>this._currentDirection=i.valueSignal()),this._syncOutlineLabelOffset()}ngAfterViewInit(){this._updateFocusState(),this._animationsDisabled||this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-form-field-animations-enabled")},300)}),this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeSubscript(),this._initializePrefixAndSuffix()}ngAfterContentChecked(){this._assertFormFieldControl(),this._control!==this._previousControl&&(this._initializeControl(this._previousControl),this._control.ngControl&&this._control.ngControl.control&&(this._previousControlValidatorFn=this._control.ngControl.control.validator),this._previousControl=this._control),this._control.ngControl&&this._control.ngControl.control&&this._control.ngControl.control.validator!==this._previousControlValidatorFn&&this._changeDetectorRef.markForCheck()}ngOnDestroy(){this._outlineLabelOffsetResizeObserver?.disconnect(),this._stateChanges?.unsubscribe(),this._valueChanges?.unsubscribe(),this._describedByChanges?.unsubscribe(),this._destroyed.next(),this._destroyed.complete()}getLabelId=Fi(()=>this._hasFloatingLabel()?this._labelId:null);getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(e){const i=this._control,o="mat-mdc-form-field-type-";e&&this._elementRef.nativeElement.classList.remove(o+e.controlType),i.controlType&&this._elementRef.nativeElement.classList.add(o+i.controlType),this._stateChanges?.unsubscribe(),this._stateChanges=i.stateChanges.subscribe(()=>{this._updateFocusState(),this._changeDetectorRef.markForCheck()}),this._describedByChanges?.unsubscribe(),this._describedByChanges=i.stateChanges.pipe(zn([void 0,void 0]),De(()=>[i.errorState,i.userAriaDescribedBy]),function Hfe(){return En((t,n)=>{let e,i=!1;t.subscribe(pn(n,o=>{const r=e;e=o,i&&n.next([r,o]),i=!0}))})}(),Pn(([[r,s],[a,l]])=>r!==a||s!==l)).subscribe(()=>this._syncDescribedByIds()),this._valueChanges?.unsubscribe(),i.ngControl&&i.ngControl.valueChanges&&(this._valueChanges=i.ngControl.valueChanges.pipe(ln(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck()))}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(e=>!e._isText),this._hasTextPrefix=!!this._prefixChildren.find(e=>e._isText),this._hasIconSuffix=!!this._suffixChildren.find(e=>!e._isText),this._hasTextSuffix=!!this._suffixChildren.find(e=>e._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),Dr(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){}_updateFocusState(){const e=this._control.focused;e&&!this._isFocused?(this._isFocused=!0,this._lineRipple?.activate()):!e&&(this._isFocused||null===this._isFocused)&&(this._isFocused=!1,this._lineRipple?.deactivate()),this._elementRef.nativeElement.classList.toggle("mat-focused",e),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",e)}_syncOutlineLabelOffset(){!function mte(t,n){const e=n?.injector??T(Ue),i=e.get(fl),o=e.get(bC),r=e.get(da,null,{optional:!0});o.impl??=e.get(PE);let s=t;"function"==typeof s&&(s={mixedReadWrite:t});const a=e.get(gm,null,{optional:!0}),l=new pte(o.impl,[s.earlyRead,s.write,s.mixedReadWrite,s.read],a?.view,i,e,r?.snapshot(null));o.impl.register(l)}({earlyRead:()=>{if("outline"!==this._appearanceSignal())return this._outlineLabelOffsetResizeObserver?.disconnect(),null;if(globalThis.ResizeObserver){this._outlineLabelOffsetResizeObserver||=new globalThis.ResizeObserver(()=>{this._writeOutlinedLabelStyles(this._getOutlinedLabelOffset())});for(const e of this._prefixSuffixContainers())this._outlineLabelOffsetResizeObserver.observe(e,{box:"border-box"})}return this._getOutlinedLabelOffset()},write:e=>this._writeOutlinedLabelStyles(e())})}_shouldAlwaysFloat(){return"always"===this.floatLabel}_hasOutline(){return"outline"===this.appearance}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel=Fi(()=>!!this._labelChild());_shouldLabelFloat(){return!!this._hasFloatingLabel()&&(this._control.shouldLabelFloat||this._shouldAlwaysFloat())}_shouldForward(e){const i=this._control?this._control.ngControl:null;return i&&i[e]}_getSubscriptMessageType(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_handleLabelResized(){this._refreshOutlineNotchWidth()}_refreshOutlineNotchWidth(){this._hasOutline()&&this._floatingLabel&&this._shouldLabelFloat()?this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth()):this._notchedOutline?._setNotchWidth(0)}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){}_syncDescribedByIds(){if(this._control){let e=[];if(this._control.userAriaDescribedBy&&"string"==typeof this._control.userAriaDescribedBy&&e.push(...this._control.userAriaDescribedBy.split(" ")),"hint"===this._getSubscriptMessageType()){const r=this._hintChildren?this._hintChildren.find(a=>"start"===a.align):null,s=this._hintChildren?this._hintChildren.find(a=>"end"===a.align):null;r?e.push(r.id):this._hintLabel&&e.push(this._hintLabelId),s&&e.push(s.id)}else this._errorChildren&&e.push(...this._errorChildren.map(r=>r.id));const i=this._control.describedByIds;let o;if(i){const r=this._describedByIds||e;o=e.concat(i.filter(s=>s&&!r.includes(s)))}else o=e;this._control.setDescribedByIds(o),this._describedByIds=e}}_getOutlinedLabelOffset(){if(!this._hasOutline()||!this._floatingLabel)return null;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return["",null];if(!this._isAttachedToDom())return null;const e=this._iconPrefixContainer?.nativeElement,i=this._textPrefixContainer?.nativeElement,o=this._iconSuffixContainer?.nativeElement,r=this._textSuffixContainer?.nativeElement,s=e?.getBoundingClientRect().width??0,a=i?.getBoundingClientRect().width??0,l=o?.getBoundingClientRect().width??0,d=r?.getBoundingClientRect().width??0;return[`var(--mat-mdc-form-field-label-transform, translateY(-50%) translateX(calc(${"rtl"===this._currentDirection?"-1":"1"} * (${s+a}px + var(--mat-mdc-form-field-label-offset-x, 0px)))))`,s+a+l+d]}_writeOutlinedLabelStyles(e){if(null!==e){const[i,o]=e;this._floatingLabel&&(this._floatingLabel.element.style.transform=i),null!==o&&this._notchedOutline?._setMaxWidth(o)}}_isAttachedToDom(){const e=this._elementRef.nativeElement;if(e.getRootNode){const i=e.getRootNode();return i&&i!==e}return document.documentElement.contains(e)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-form-field"]],contentQueries:function(i,o,r){if(1&i&&(H0(r,o._labelChild,ns,5),Ds(r,_S,5)(r,upe,5)(r,hpe,5)(r,PB,5)(r,sp,5)),2&i){let s;z0(),fe(s=pe())&&(o._formFieldControl=s.first),fe(s=pe())&&(o._prefixChildren=s),fe(s=pe())&&(o._suffixChildren=s),fe(s=pe())&&(o._errorChildren=s),fe(s=pe())&&(o._hintChildren=s)}},viewQuery:function(i,o){if(1&i&&(U0(o._iconPrefixContainerSignal,MB,5)(o._textPrefixContainerSignal,DB,5)(o._iconSuffixContainerSignal,TB,5)(o._textSuffixContainerSignal,EB,5),st(Wfe,5)(MB,5)(DB,5)(TB,5)(EB,5)(OB,5)(FB,5)(RB,5)),2&i){let r;z0(4),fe(r=pe())&&(o._textField=r.first),fe(r=pe())&&(o._iconPrefixContainer=r.first),fe(r=pe())&&(o._textPrefixContainer=r.first),fe(r=pe())&&(o._iconSuffixContainer=r.first),fe(r=pe())&&(o._textSuffixContainer=r.first),fe(r=pe())&&(o._floatingLabel=r.first),fe(r=pe())&&(o._notchedOutline=r.first),fe(r=pe())&&(o._lineRipple=r.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:38,hostBindings:function(i,o){2&i&&ve("mat-mdc-form-field-label-always-float",o._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",o._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",o._hasIconSuffix)("mat-form-field-invalid",o._control.errorState)("mat-form-field-disabled",o._control.disabled)("mat-form-field-autofilled",o._control.autofilled)("mat-form-field-appearance-fill","fill"==o.appearance)("mat-form-field-appearance-outline","outline"==o.appearance)("mat-form-field-hide-placeholder",o._hasFloatingLabel()&&!o._shouldLabelFloat())("mat-primary","accent"!==o.color&&"warn"!==o.color)("mat-accent","accent"===o.color)("mat-warn","warn"===o.color)("ng-untouched",o._shouldForward("untouched"))("ng-touched",o._shouldForward("touched"))("ng-pristine",o._shouldForward("pristine"))("ng-dirty",o._shouldForward("dirty"))("ng-valid",o._shouldForward("valid"))("ng-invalid",o._shouldForward("invalid"))("ng-pending",o._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],features:[dt([{provide:bS,useExisting:t},{provide:IB,useExisting:t}])],ngContentSelectors:qfe,decls:18,vars:21,consts:[["labelTemplate",""],["textField",""],["iconPrefixContainer",""],["textPrefixContainer",""],["textSuffixContainer",""],["iconSuffixContainer",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],[1,"mat-mdc-form-field-focus-overlay"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen"],[1,"mat-mdc-form-field-icon-prefix"],[1,"mat-mdc-form-field-text-prefix"],[1,"mat-mdc-form-field-infix"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],["aria-atomic","true","aria-live","polite",1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align"],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],["matFormFieldFloatingLabel","",3,"floating","monitorResize","id"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[3,"id"],[1,"mat-mdc-form-field-hint-spacer"]],template:function(i,o){if(1&i&&(xi(Gfe),rt(0,Xfe,1,1,"ng-template",null,0,Ul),h(2,"div",6,1),F("click",function(s){return o._control.onContainerClick(s)}),x(4,Zfe,1,0,"div",7),h(5,"div",8),x(6,epe,2,2,"div",9),x(7,tpe,3,0,"div",10),x(8,npe,3,0,"div",11),h(9,"div",12),x(10,ope,1,1,null,13),Rt(11),u(),x(12,rpe,3,0,"div",14),x(13,spe,3,0,"div",15),u(),x(14,ape,1,0,"div",16),u(),h(15,"div",17),x(16,lpe,2,0,"div",18)(17,dpe,5,1,"div",19),u()),2&i){let r;c(2),ve("mdc-text-field--filled",!o._hasOutline())("mdc-text-field--outlined",o._hasOutline())("mdc-text-field--no-label",!o._hasFloatingLabel())("mdc-text-field--disabled",o._control.disabled)("mdc-text-field--invalid",o._control.errorState),c(2),k(o._hasOutline()||o._control.disabled?-1:4),c(2),k(o._hasOutline()?6:-1),c(),k(o._hasIconPrefix?7:-1),c(),k(o._hasTextPrefix?8:-1),c(2),k(!o._hasOutline()||o._forceDisplayInfixLabel()?10:-1),c(2),k(o._hasTextSuffix?12:-1),c(),k(o._hasIconSuffix?13:-1),c(),k(o._hasOutline()?-1:14),c(),ve("mat-mdc-form-field-subscript-dynamic-size","dynamic"===o.subscriptSizing);const s=o._getSubscriptMessageType();c(),k("error"===(r=s)?16:"hint"===r?17:-1)}},dependencies:[OB,FB,Wd,RB,sp],styles:['.mdc-text-field{display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field__input{width:100%;min-width:0;border:none;border-radius:0;background:none;padding:0;-moz-appearance:none;-webkit-appearance:none;height:28px}.mdc-text-field__input::-webkit-calendar-picker-indicator,.mdc-text-field__input::-webkit-search-cancel-button{display:none}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}.mdc-text-field__input::placeholder{opacity:0}.mdc-text-field__input::-moz-placeholder{opacity:0}.mdc-text-field__input::-webkit-input-placeholder{opacity:0}.mdc-text-field__input:-ms-input-placeholder{opacity:0}.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-moz-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-webkit-input-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive:-ms-input-placeholder{opacity:0}.mdc-text-field--outlined .mdc-text-field__input,.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mat-form-field-filled-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mat-form-field-filled-caret-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mat-form-field-outlined-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mat-form-field-outlined-caret-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mat-form-field-filled-error-caret-color, var(--mat-sys-error))}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mat-form-field-outlined-error-caret-color, var(--mat-sys-error))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mat-form-field-filled-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mat-form-field-outlined-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}}.mdc-text-field--filled{height:56px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));border-top-right-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mat-form-field-filled-container-color, var(--mat-sys-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mat-form-field-filled-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 4%, transparent))}.mdc-text-field--outlined{height:56px;overflow:visible;padding-right:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)));padding-left:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)) + 4px)}[dir=rtl] .mdc-text-field--outlined{padding-right:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)) + 4px);padding-left:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)))}.mdc-floating-label{position:absolute;left:0;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label{right:0;left:auto;transform-origin:right top;text-align:right}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:auto}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label{left:auto;right:4px}.mdc-text-field--filled .mdc-floating-label{left:16px;right:auto}[dir=rtl] .mdc-text-field--filled .mdc-floating-label{left:auto;right:16px}.mdc-text-field--disabled .mdc-floating-label{cursor:default}@media(forced-colors: active){.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mat-form-field-filled-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-filled-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mat-form-field-filled-hover-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label{color:var(--mat-form-field-filled-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mat-form-field-filled-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-filled-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mat-form-field-filled-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mat-form-field-filled-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-form-field-filled-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-form-field-filled-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-form-field-filled-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mat-form-field-outlined-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-outlined-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mat-form-field-outlined-hover-label-text-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label{color:var(--mat-form-field-outlined-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mat-form-field-outlined-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-outlined-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mat-form-field-outlined-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mat-form-field-outlined-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-form-field-outlined-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-form-field-outlined-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-form-field-outlined-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-floating-label--float-above{cursor:auto;transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1);font-size:.75rem}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0;content:"*"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline{text-align:right}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mat-mdc-notch-piece{box-sizing:border-box;height:100%;pointer-events:none;border:none;border-top:1px solid;border-bottom:1px solid}.mdc-text-field--focused .mat-mdc-notch-piece{border-width:2px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-outline-color, var(--mat-sys-outline));border-width:var(--mat-form-field-outlined-outline-width, 1px)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-hover-outline-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-focus-outline-color, var(--mat-sys-primary))}.mdc-text-field--outlined.mdc-text-field--disabled .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-notched-outline .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-hover-outline-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-focus-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mat-mdc-notch-piece{border-width:var(--mat-form-field-outlined-focus-outline-width, 2px)}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)))}[dir=rtl] .mdc-notched-outline__leading{border-left:none;border-right:1px solid;border-bottom-left-radius:0;border-top-left-radius:0;border-top-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__trailing{flex-grow:1;border-left:none;border-right:1px solid;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}[dir=rtl] .mdc-notched-outline__trailing{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:min(var(--mat-form-field-notch-max-width, 100%),calc(100% - max(12px, var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))) * 2))}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{max-width:min(100%,calc(100% - max(12px, var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))) * 2))}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{z-index:1;border-bottom-width:var(--mat-form-field-filled-active-indicator-height, 1px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-active-indicator-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-hover-active-indicator-color, var(--mat-sys-on-surface))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-disabled-active-indicator-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-error-active-indicator-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-error-hover-active-indicator-color, var(--mat-sys-on-error-container))}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mat-form-field-filled-focus-active-indicator-height, 2px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mat-form-field-filled-focus-active-indicator-color, var(--mat-sys-primary))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mat-form-field-filled-error-focus-active-indicator-color, var(--mat-sys-error))}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-text-field--disabled{pointer-events:none}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all;will-change:auto}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto;will-change:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:var(--mat-form-field-container-height, 56px);padding-top:var(--mat-form-field-filled-with-label-container-padding-top, 24px);padding-bottom:var(--mat-form-field-filled-with-label-container-padding-bottom, 8px)}.mdc-text-field--outlined .mat-mdc-form-field-infix,.mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:var(--mat-form-field-container-vertical-padding, 16px);padding-bottom:var(--mat-form-field-container-vertical-padding, 16px)}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:calc(var(--mat-form-field-container-height, 56px)/2)}.mdc-text-field--filled .mat-mdc-floating-label{display:var(--mat-form-field-filled-label-display, block)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(calc(calc(6.75px + var(--mat-form-field-container-height, 56px) / 2) * -1)) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}@keyframes _mat-form-field-subscript-animation{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px;opacity:1;transform:translateY(0);animation:_mat-form-field-subscript-animation 0ms cubic-bezier(0.55, 0, 0.55, 0.2)}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block;color:var(--mat-form-field-error-text-color, var(--mat-sys-error))}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font, var(--mat-sys-body-small-font));line-height:var(--mat-form-field-subscript-text-line-height, var(--mat-sys-body-small-line-height));font-size:var(--mat-form-field-subscript-text-size, var(--mat-sys-body-small-size));letter-spacing:var(--mat-form-field-subscript-text-tracking, var(--mat-sys-body-small-tracking));font-weight:var(--mat-form-field-subscript-text-weight, var(--mat-sys-body-small-weight))}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none;background-color:var(--mat-form-field-state-layer-color, var(--mat-sys-on-surface))}.mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-focus-state-layer-opacity, 0)}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:var(--mat-form-field-select-option-text-color, var(--mat-sys-neutral10))}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:var(--mat-form-field-select-disabled-option-text-color, color-mix(in srgb, var(--mat-sys-neutral10) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none;color:var(--mat-form-field-enabled-select-arrow-color, var(--mat-sys-on-surface-variant))}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select.mat-focused .mat-mdc-form-field-infix::after{color:var(--mat-form-field-focus-select-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:var(--mat-form-field-disabled-select-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}@media(forced-colors: active){.mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}}@media(forced-colors: active){.mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-form-field-container-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-form-field-container-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-form-field-container-text-tracking, var(--mat-sys-body-large-tracking));font-weight:var(--mat-form-field-container-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size)*var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%;z-index:0}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px;box-sizing:content-box}.mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-leading-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-disabled-leading-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-trailing-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-disabled-trailing-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-invalid .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-trailing-icon-color, var(--mat-sys-error))}.mat-form-field-invalid:not(.mat-focused):not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-hover-trailing-icon-color, var(--mat-sys-on-error-container))}.mat-form-field-invalid.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-focus-trailing-icon-color, var(--mat-sys-error))}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field-infix:has(textarea[cols]){width:auto}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::-moz-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::-webkit-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field.mat-form-field-animations-enabled .mat-mdc-form-field-error-wrapper{animation-duration:300ms}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}\n'],encapsulation:2,changeDetection:0})}return t})();const BB=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function VB(){if(vu)return vu;if("object"!=typeof document||!document)return vu=new Set(BB),vu;let t=document.createElement("input");return vu=new Set(BB.filter(n=>(t.setAttribute("type",n),t.type===n))),vu}let _pe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["ng-component"]],hostAttrs:["cdk-text-field-style-loader",""],decls:0,vars:0,template:function(i,o){},styles:["textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0 !important;box-sizing:content-box !important;height:auto !important;overflow:hidden !important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0 !important;box-sizing:content-box !important;height:0 !important}@keyframes cdk-text-field-autofill-start{/*!*/}@keyframes cdk-text-field-autofill-end{/*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}\n"],encapsulation:2,changeDetection:0})}return t})();const bpe={passive:!0};let vpe=(()=>{class t{_platform=T(Zn);_ngZone=T(Ce);_renderer=T(Uo).createRenderer(null,null);_styleLoader=T(qo);_monitoredElements=new Map;constructor(){}monitor(e){if(!this._platform.isBrowser)return Ni;this._styleLoader.load(_pe);const i=Bs(e),o=this._monitoredElements.get(i);if(o)return o.subject;const r=new be,s="cdk-text-field-autofilled",a=d=>{"cdk-text-field-autofill-start"!==d.animationName||i.classList.contains(s)?"cdk-text-field-autofill-end"===d.animationName&&i.classList.contains(s)&&(i.classList.remove(s),this._ngZone.run(()=>r.next({target:d.target,isAutofilled:!1}))):(i.classList.add(s),this._ngZone.run(()=>r.next({target:d.target,isAutofilled:!0})))},l=this._ngZone.runOutsideAngular(()=>(i.classList.add("cdk-text-field-autofill-monitored"),this._renderer.listen(i,"animationstart",a,bpe)));return this._monitoredElements.set(i,{subject:r,unlisten:l}),r}stopMonitoring(e){const i=Bs(e),o=this._monitoredElements.get(i);o&&(o.unlisten(),o.subject.complete(),i.classList.remove("cdk-text-field-autofill-monitored"),i.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(i))}ngOnDestroy(){this._monitoredElements.forEach((e,i)=>this.stopMonitoring(i))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),ype=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();const Cpe=new Z("MAT_INPUT_VALUE_ACCESSOR");let wpe=(()=>{class t{isErrorState(e,i){return!!(e&&e.invalid&&(e.dirty||i&&i.submitted))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),vS=(()=>{class t{isErrorState(e,i){return!!(e&&e.invalid&&(e.touched||i&&i.submitted))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class HB{_defaultMatcher;ngControl;_parentFormGroup;_parentForm;_stateChanges;errorState=!1;matcher;constructor(n,e,i,o,r){this._defaultMatcher=n,this.ngControl=e,this._parentFormGroup=i,this._parentForm=o,this._stateChanges=r}updateErrorState(){const n=this.errorState,e=this._parentFormGroup||this._parentForm,i=this.matcher||this._defaultMatcher,o=this.ngControl?this.ngControl.control:null,r=i?.isErrorState(o,e)??!1;r!==n&&(this.errorState=r,this._stateChanges.next())}}let pv=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[d4,dn,ai]})}return t})();const xpe=["button","checkbox","file","hidden","image","radio","range","reset","submit"],kpe=new Z("MAT_INPUT_CONFIG");let On=(()=>{class t{_elementRef=T(Ne);_platform=T(Zn);ngControl=T(ts,{optional:!0,self:!0});_autofillMonitor=T(vpe);_ngZone=T(Ce);_formField=T(bS,{optional:!0});_renderer=T(ei);_uid=T(si).getId("mat-input-");_previousNativeValue;_inputValueAccessor;_signalBasedValueAccessor;_previousPlaceholder=null;_errorStateTracker;_config=T(kpe,{optional:!0});_cleanupIosKeyup;_cleanupWebkitWheel;_isServer=!1;_isNativeSelect=!1;_isTextarea=!1;_isInFormField=!1;focused=!1;stateChanges=new be;controlType="mat-input";autofilled=!1;get disabled(){return this._disabled}set disabled(e){this._disabled=bu(e),this.focused&&(this.focused=!1,this.stateChanges.next())}_disabled=!1;get id(){return this._id}set id(e){this._id=e||this._uid}_id;placeholder;name;get required(){return this._required??this.ngControl?.control?.hasValidator(Se.required)??!1}set required(e){this._required=bu(e)}_required;get type(){return this._type}set type(e){this._type=e||"text",this._validateType(),!this._isTextarea&&VB().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}_type="text";get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}userAriaDescribedBy;get value(){return this._signalBasedValueAccessor?this._signalBasedValueAccessor.value():this._inputValueAccessor.value}set value(e){e!==this.value&&(this._signalBasedValueAccessor?this._signalBasedValueAccessor.value.set(e):this._inputValueAccessor.value=e,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(e){this._readonly=bu(e)}_readonly=!1;disabledInteractive;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}_neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(e=>VB().has(e));constructor(){const e=T(pu,{optional:!0}),i=T(sn,{optional:!0}),o=T(vS),r=T(Cpe,{optional:!0,self:!0}),s=this._elementRef.nativeElement,a=s.nodeName.toLowerCase();r?Fl(r.value)?this._signalBasedValueAccessor=r:this._inputValueAccessor=r:this._inputValueAccessor=s,this._previousNativeValue=this.value,this.id=this.id,this._platform.IOS&&this._ngZone.runOutsideAngular(()=>{this._cleanupIosKeyup=this._renderer.listen(s,"keyup",this._iOSKeyupListener)}),this._errorStateTracker=new HB(o,this.ngControl,i,e,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect="select"===a,this._isTextarea="textarea"===a,this._isInFormField=!!this._formField,this.disabledInteractive=this._config?.disabledInteractive||!1,this._isNativeSelect&&(this.controlType=s.multiple?"mat-native-select-multiple":"mat-native-select"),this._signalBasedValueAccessor&&vm(()=>{this._signalBasedValueAccessor.value(),this.stateChanges.next()})}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._cleanupIosKeyup?.(),this._cleanupWebkitWheel?.()}ngDoCheck(){this.ngControl&&(this.updateErrorState(),null!==this.ngControl.disabled&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(e){this._elementRef.nativeElement.focus(e)}updateErrorState(){this._errorStateTracker.updateErrorState()}_focusChanged(e){if(e!==this.focused){if(!this._isNativeSelect&&e&&this.disabled&&this.disabledInteractive){const i=this._elementRef.nativeElement;"number"===i.type?(i.type="text",i.setSelectionRange(0,0),i.type="number"):i.setSelectionRange(0,0)}this.focused=e,this.stateChanges.next()}}_onInput(){}_dirtyCheckNativeValue(){const e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next())}_dirtyCheckPlaceholder(){const e=this._getPlaceholder();if(e!==this._previousPlaceholder){const i=this._elementRef.nativeElement;this._previousPlaceholder=e,e?i.setAttribute("placeholder",e):i.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){xpe.indexOf(this._type)}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return!(this._isNeverEmpty()||this._elementRef.nativeElement.value||this._isBadInput()||this.autofilled)}get shouldLabelFloat(){if(this._isNativeSelect){const e=this._elementRef.nativeElement,i=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&i&&i.label)}return this.focused&&!this.disabled||!this.empty}get describedByIds(){return this._elementRef.nativeElement.getAttribute("aria-describedby")?.split(" ")||[]}setDescribedByIds(e){const i=this._elementRef.nativeElement;e.length?i.setAttribute("aria-describedby",e.join(" ")):i.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){const e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}_iOSKeyupListener=e=>{const i=e.target;!i.value&&0===i.selectionStart&&0===i.selectionEnd&&(i.setSelectionRange(1,1),i.setSelectionRange(0,0))};_getReadonlyAttribute(){return this._isNativeSelect?null:this.readonly||this.disabled&&this.disabledInteractive?"true":null}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:21,hostBindings:function(i,o){1&i&&F("focus",function(){return o._focusChanged(!0)})("blur",function(){return o._focusChanged(!1)})("input",function(){return o._onInput()}),2&i&&(gr("id",o.id)("disabled",o.disabled&&!o.disabledInteractive)("required",o.required),We("name",o.name||null)("readonly",o._getReadonlyAttribute())("aria-disabled",o.disabled&&o.disabledInteractive?"true":null)("aria-invalid",o.empty&&o.required?null:o.errorState)("aria-required",o.required)("id",o.id),ve("mat-input-server",o._isServer)("mat-mdc-form-field-textarea-control",o._isInFormField&&o._isTextarea)("mat-mdc-form-field-input-control",o._isInFormField)("mat-mdc-input-disabled-interactive",o.disabledInteractive)("mdc-text-field__input",o._isInFormField)("mat-mdc-native-select-inline",o._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly",disabledInteractive:[2,"disabledInteractive","disabledInteractive",Te]},exportAs:["matInput"],features:[dt([{provide:_S,useExisting:t}]),vi]})}return t})(),Spe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[pv,pv,ype,ai]})}return t})();class UB{_letterKeyStream=new be;_items=[];_selectedItemIndex=-1;_pressedLetters=[];_skipPredicateFn;_selectedItem=new be;selectedItem=this._selectedItem;constructor(n,e){const i="number"==typeof e?.debounceInterval?e.debounceInterval:200;e?.skipPredicate&&(this._skipPredicateFn=e.skipPredicate),this.setItems(n),this._setupKeyHandler(i)}destroy(){this._pressedLetters=[],this._letterKeyStream.complete(),this._selectedItem.complete()}setCurrentSelectedItemIndex(n){this._selectedItemIndex=n}setItems(n){this._items=n}handleKey(n){const e=n.keyCode;n.key&&1===n.key.length?this._letterKeyStream.next(n.key.toLocaleUpperCase()):(e>=65&&e<=90||e>=48&&e<=57)&&this._letterKeyStream.next(String.fromCharCode(e))}isTyping(){return this._pressedLetters.length>0}reset(){this._pressedLetters=[]}_setupKeyHandler(n){this._letterKeyStream.pipe(ui(e=>this._pressedLetters.push(e)),Ab(n),Pn(()=>this._pressedLetters.length>0),De(()=>this._pressedLetters.join("").toLocaleUpperCase())).subscribe(e=>{for(let i=1;io.trim()===e)&&(i.push(e),t.setAttribute(n,i.join(" ")))}function yS(t,n,e){const i=mv(t,n);e=e.trim();const o=i.filter(r=>r!==e);o.length?t.setAttribute(n,o.join(" ")):t.removeAttribute(n)}function mv(t,n){return t.getAttribute(n)?.match(/\S+/g)??[]}const WB="cdk-describedby-message",gv="cdk-describedby-host";let CS=0,Epe=(()=>{class t{_platform=T(Zn);_document=T(et);_messageRegistry=new Map;_messagesContainer=null;_id=""+CS++;constructor(){T(qo).load(xk),this._id=T(ra)+"-"+CS++}describe(e,i,o){if(!this._canBeDescribed(e,i))return;const r=wS(i,o);"string"!=typeof i?(GB(i,this._id),this._messageRegistry.set(r,{messageElement:i,referenceCount:0})):this._messageRegistry.has(r)||this._createMessageElement(i,o),this._isElementDescribedByMessage(e,r)||this._addMessageReference(e,r)}removeDescription(e,i,o){if(!i||!this._isElementNode(e))return;const r=wS(i,o);if(this._isElementDescribedByMessage(e,r)&&this._removeMessageReference(e,r),"string"==typeof i){const s=this._messageRegistry.get(r);s&&0===s.referenceCount&&this._deleteMessageElement(r)}0===this._messagesContainer?.childNodes.length&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){const e=this._document.querySelectorAll(`[${gv}="${this._id}"]`);for(let i=0;i0!=o.indexOf(WB));e.setAttribute("aria-describedby",i.join(" "))}_addMessageReference(e,i){const o=this._messageRegistry.get(i);$B(e,"aria-describedby",o.messageElement.id),e.setAttribute(gv,this._id),o.referenceCount++}_removeMessageReference(e,i){const o=this._messageRegistry.get(i);o.referenceCount--,yS(e,"aria-describedby",o.messageElement.id),e.removeAttribute(gv)}_isElementDescribedByMessage(e,i){const o=mv(e,"aria-describedby"),r=this._messageRegistry.get(i),s=r&&r.messageElement.id;return!!s&&-1!=o.indexOf(s)}_canBeDescribed(e,i){if(!this._isElementNode(e))return!1;if(i&&"object"==typeof i)return!0;const o=null==i?"":`${i}`.trim(),r=e.getAttribute("aria-label");return!(!o||r&&r.trim()===o)}_isElementNode(e){return e.nodeType===this._document.ELEMENT_NODE}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function wS(t,n){return"string"==typeof t?`${n||""}/${t}`:t}function GB(t,n){t.id||(t.id=`${WB}-${n}-${CS++}`)}const Ipe=["tooltip"],Ape=new Z("mat-tooltip-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Ue);return()=>$f(t,{scrollThrottle:20})}}),Rpe=new Z("mat-tooltip-default-options",{providedIn:"root",factory:()=>({showDelay:0,hideDelay:0,touchendHideDelay:1500})}),qB="tooltip-panel",Fpe={passive:!0};let Et=(()=>{class t{_elementRef=T(Ne);_ngZone=T(Ce);_platform=T(Zn);_ariaDescriber=T(Epe);_focusMonitor=T(ac);_dir=T(kr);_injector=T(Ue);_viewContainerRef=T(Ai);_mediaMatcher=T(Sk);_document=T(et);_renderer=T(ei);_animationsDisabled=hi();_defaultOptions=T(Rpe,{optional:!0});_overlayRef=null;_tooltipInstance=null;_overlayPanelClass;_portal;_position="below";_positionAtOrigin=!1;_disabled=!1;_tooltipClass;_viewInitialized=!1;_pointerExitEventsInitialized=!1;_tooltipComponent=Hpe;_viewportMargin=8;_currentPosition;_cssClassPrefix="mat-mdc";_ariaDescriptionPending=!1;_dirSubscribed=!1;get position(){return this._position}set position(e){e!==this._position&&(this._position=e,this._overlayRef&&(this._updatePosition(this._overlayRef),this._tooltipInstance?.show(0),this._overlayRef.updatePosition()))}get positionAtOrigin(){return this._positionAtOrigin}set positionAtOrigin(e){this._positionAtOrigin=bu(e),this._detach(),this._overlayRef=null}get disabled(){return this._disabled}set disabled(e){const i=bu(e);this._disabled!==i&&(this._disabled=i,i?this.hide(0):this._setupPointerEnterEventsIfNeeded(),this._syncAriaDescription(this.message))}get showDelay(){return this._showDelay}set showDelay(e){this._showDelay=Bf(e)}_showDelay;get hideDelay(){return this._hideDelay}set hideDelay(e){this._hideDelay=Bf(e),this._tooltipInstance&&(this._tooltipInstance._mouseLeaveHideDelay=this._hideDelay)}_hideDelay;touchGestures="auto";get message(){return this._message}set message(e){const i=this._message;this._message=null!=e?String(e).trim():"",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEnterEventsIfNeeded(),this._updateTooltipMessage()),this._syncAriaDescription(i)}_message="";get tooltipClass(){return this._tooltipClass}set tooltipClass(e){this._tooltipClass=e,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}_eventCleanups=[];_touchstartTimeout=null;_destroyed=new be;_isDestroyed=!1;constructor(){const e=this._defaultOptions;e&&(this._showDelay=e.showDelay,this._hideDelay=e.hideDelay,e.position&&(this.position=e.position),e.positionAtOrigin&&(this.positionAtOrigin=e.positionAtOrigin),e.touchGestures&&(this.touchGestures=e.touchGestures),e.tooltipClass&&(this.tooltipClass=e.tooltipClass)),this._viewportMargin=8}ngAfterViewInit(){this._viewInitialized=!0,this._setupPointerEnterEventsIfNeeded(),this._focusMonitor.monitor(this._elementRef).pipe(ln(this._destroyed)).subscribe(e=>{e?"keyboard"===e&&this._ngZone.run(()=>this.show()):this._ngZone.run(()=>this.hide(0))})}ngOnDestroy(){const e=this._elementRef.nativeElement;this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),this._eventCleanups.forEach(i=>i()),this._eventCleanups.length=0,this._destroyed.next(),this._destroyed.complete(),this._isDestroyed=!0,this._ariaDescriber.removeDescription(e,this.message,"tooltip"),this._focusMonitor.stopMonitoring(e)}show(e=this.showDelay,i){if(this.disabled||!this.message||this._isTooltipVisible())return void this._tooltipInstance?._cancelPendingAnimations();const o=this._createOverlay(i);this._detach(),this._portal=this._portal||new nu(this._tooltipComponent,this._viewContainerRef);const r=this._tooltipInstance=o.attach(this._portal).instance;r._triggerElement=this._elementRef.nativeElement,r._mouseLeaveHideDelay=this._hideDelay,r.afterHidden().pipe(ln(this._destroyed)).subscribe(()=>this._detach()),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),r.show(e)}hide(e=this.hideDelay){const i=this._tooltipInstance;i&&(i.isVisible()?i.hide(e):(i._cancelPendingAnimations(),this._detach()))}toggle(e){this._isTooltipVisible()?this.hide():this.show(void 0,e)}_isTooltipVisible(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}_createOverlay(e){if(this._overlayRef){const s=this._overlayRef.getConfig().positionStrategy;if((!this.positionAtOrigin||!e)&&s._origin instanceof Ne)return this._overlayRef;this._detach()}const i=this._injector.get(Cb).getAncestorScrollContainers(this._elementRef),o=`${this._cssClassPrefix}-${qB}`,r=Eb(this._injector,this.positionAtOrigin&&e||this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(!1).withViewportMargin(this._viewportMargin).withScrollableContainers(i).withPopoverLocation("global");return r.positionChanges.pipe(ln(this._destroyed)).subscribe(s=>{this._updateCurrentPositionClass(s.connectionPair),this._tooltipInstance&&s.scrollableViewProperties.isOverlayClipped&&this._tooltipInstance.isVisible()&&this._ngZone.run(()=>this.hide(0))}),this._overlayRef=ou(this._injector,{direction:this._dir,positionStrategy:r,panelClass:this._overlayPanelClass?[...this._overlayPanelClass,o]:o,scrollStrategy:this._injector.get(Ape)(),disableAnimations:this._animationsDisabled,eventPredicate:this._overlayEventPredicate}),this._updatePosition(this._overlayRef),this._overlayRef.detachments().pipe(ln(this._destroyed)).subscribe(()=>this._detach()),this._overlayRef.outsidePointerEvents().pipe(ln(this._destroyed)).subscribe(()=>this._tooltipInstance?._handleBodyInteraction()),this._overlayRef.keydownEvents().pipe(ln(this._destroyed)).subscribe(s=>{s.preventDefault(),s.stopPropagation(),this._ngZone.run(()=>this.hide(0))}),this._defaultOptions?.disableTooltipInteractivity&&this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`),this._dirSubscribed||(this._dirSubscribed=!0,this._dir.change.pipe(ln(this._destroyed)).subscribe(()=>{this._overlayRef&&this._updatePosition(this._overlayRef)})),this._overlayRef}_detach(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}_updatePosition(e){const i=e.getConfig().positionStrategy,o=this._getOrigin(),r=this._getOverlayPosition();i.withPositions([this._addOffset({...o.main,...r.main}),this._addOffset({...o.fallback,...r.fallback})])}_addOffset(e){const o=!this._dir||"ltr"==this._dir.value;return"top"===e.originY?e.offsetY=-8:"bottom"===e.originY?e.offsetY=8:"start"===e.originX?e.offsetX=o?-8:8:"end"===e.originX&&(e.offsetX=o?8:-8),e}_getOrigin(){const e=!this._dir||"ltr"==this._dir.value,i=this.position;let o;"above"==i||"below"==i?o={originX:"center",originY:"above"==i?"top":"bottom"}:"before"==i||"left"==i&&e||"right"==i&&!e?o={originX:"start",originY:"center"}:("after"==i||"right"==i&&e||"left"==i&&!e)&&(o={originX:"end",originY:"center"});const{x:r,y:s}=this._invertPosition(o.originX,o.originY);return{main:o,fallback:{originX:r,originY:s}}}_getOverlayPosition(){const e=!this._dir||"ltr"==this._dir.value,i=this.position;let o;"above"==i?o={overlayX:"center",overlayY:"bottom"}:"below"==i?o={overlayX:"center",overlayY:"top"}:"before"==i||"left"==i&&e||"right"==i&&!e?o={overlayX:"end",overlayY:"center"}:("after"==i||"right"==i&&e||"left"==i&&!e)&&(o={overlayX:"start",overlayY:"center"});const{x:r,y:s}=this._invertPosition(o.overlayX,o.overlayY);return{main:o,fallback:{overlayX:r,overlayY:s}}}_updateTooltipMessage(){this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),Wi(()=>{this._tooltipInstance&&this._overlayRef.updatePosition()},{injector:this._injector}))}_setTooltipClass(e){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=e instanceof Set?Array.from(e):e,this._tooltipInstance._markForCheck())}_invertPosition(e,i){return"above"===this.position||"below"===this.position?"top"===i?i="bottom":"bottom"===i&&(i="top"):"end"===e?e="start":"start"===e&&(e="end"),{x:e,y:i}}_updateCurrentPositionClass(e){const{overlayY:i,originX:o,originY:r}=e;let s;if(s="center"===i?this._dir&&"rtl"===this._dir.value?"end"===o?"left":"right":"start"===o?"left":"right":"bottom"===i&&"top"===r?"above":"below",s!==this._currentPosition){const a=this._overlayRef;if(a){const l=`${this._cssClassPrefix}-${qB}-`;a.removePanelClass(l+this._currentPosition),a.addPanelClass(l+s)}this._currentPosition=s}}_setupPointerEnterEventsIfNeeded(){this._disabled||!this.message||!this._viewInitialized||this._eventCleanups.length||(this._isTouchPlatform()?"off"!==this.touchGestures&&(this._disableNativeGesturesIfNecessary(),this._addListener("touchstart",e=>{const i=e.targetTouches?.[0],o=i?{x:i.clientX,y:i.clientY}:void 0;this._setupPointerExitEventsIfNeeded(),this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this._touchstartTimeout=setTimeout(()=>{this._touchstartTimeout=null,this.show(void 0,o)},this._defaultOptions?.touchLongPressShowDelay??500)})):this._addListener("mouseenter",e=>{let i;this._setupPointerExitEventsIfNeeded(),void 0!==e.x&&void 0!==e.y&&(i=e),this.show(void 0,i)}))}_setupPointerExitEventsIfNeeded(){if(!this._pointerExitEventsInitialized)if(this._pointerExitEventsInitialized=!0,this._isTouchPlatform()){if("off"!==this.touchGestures){this._disableNativeGesturesIfNecessary();const e=()=>{this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this.hide(this._defaultOptions?.touchendHideDelay)};this._addListener("touchend",e),this._addListener("touchcancel",e)}}else this._addListener("mouseleave",e=>{const i=e.relatedTarget;(!i||!this._overlayRef?.overlayElement.contains(i))&&this.hide()}),this._addListener("wheel",e=>{if(this._isTooltipVisible()){const i=this._document.elementFromPoint(e.clientX,e.clientY),o=this._elementRef.nativeElement;i!==o&&!o.contains(i)&&this.hide()}})}_addListener(e,i){this._eventCleanups.push(this._renderer.listen(this._elementRef.nativeElement,e,i,Fpe))}_isTouchPlatform(){return!(!this._platform.IOS&&!this._platform.ANDROID)||!!this._platform.isBrowser&&!!this._defaultOptions?.detectHoverCapability&&this._mediaMatcher.matchMedia("(any-hover: none)").matches}_disableNativeGesturesIfNecessary(){const e=this.touchGestures;if("off"!==e){const i=this._elementRef.nativeElement,o=i.style;("on"===e||"INPUT"!==i.nodeName&&"TEXTAREA"!==i.nodeName)&&(o.userSelect=o.msUserSelect=o.webkitUserSelect=o.MozUserSelect="none"),("on"===e||!i.draggable)&&(o.webkitUserDrag="none"),o.touchAction="none",o.webkitTapHighlightColor="transparent"}}_syncAriaDescription(e){this._ariaDescriptionPending||(this._ariaDescriptionPending=!0,this._ariaDescriber.removeDescription(this._elementRef.nativeElement,e,"tooltip"),this._isDestroyed||Wi({write:()=>{this._ariaDescriptionPending=!1,this.message&&!this.disabled&&this._ariaDescriber.describe(this._elementRef.nativeElement,this.message,"tooltip")}},{injector:this._injector}))}_overlayEventPredicate=e=>"keydown"!==e.type||this._isTooltipVisible()&&27===e.keyCode&&!Mr(e);static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matTooltip",""]],hostAttrs:[1,"mat-mdc-tooltip-trigger"],hostVars:2,hostBindings:function(i,o){2&i&&ve("mat-mdc-tooltip-disabled",o.disabled)},inputs:{position:[0,"matTooltipPosition","position"],positionAtOrigin:[0,"matTooltipPositionAtOrigin","positionAtOrigin"],disabled:[0,"matTooltipDisabled","disabled"],showDelay:[0,"matTooltipShowDelay","showDelay"],hideDelay:[0,"matTooltipHideDelay","hideDelay"],touchGestures:[0,"matTooltipTouchGestures","touchGestures"],message:[0,"matTooltip","message"],tooltipClass:[0,"matTooltipClass","tooltipClass"]},exportAs:["matTooltip"]})}return t})(),Hpe=(()=>{class t{_changeDetectorRef=T(Dt);_elementRef=T(Ne);_isMultiline=!1;message;tooltipClass;_showTimeoutId;_hideTimeoutId;_triggerElement;_mouseLeaveHideDelay;_animationsDisabled=hi();_tooltip;_closeOnInteraction=!1;_isVisible=!1;_onHide=new be;_showAnimation="mat-mdc-tooltip-show";_hideAnimation="mat-mdc-tooltip-hide";constructor(){}show(e){null!=this._hideTimeoutId&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=setTimeout(()=>{this._toggleVisibility(!0),this._showTimeoutId=void 0},e)}hide(e){null!=this._showTimeoutId&&clearTimeout(this._showTimeoutId),this._hideTimeoutId=setTimeout(()=>{this._toggleVisibility(!1),this._hideTimeoutId=void 0},e)}afterHidden(){return this._onHide}isVisible(){return this._isVisible}ngOnDestroy(){this._cancelPendingAnimations(),this._onHide.complete(),this._triggerElement=null}_handleBodyInteraction(){this._closeOnInteraction&&this.hide(0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_handleMouseLeave({relatedTarget:e}){(!e||!this._triggerElement.contains(e))&&(this.isVisible()?this.hide(this._mouseLeaveHideDelay):this._finalizeAnimation(!1))}_onShow(){this._isMultiline=this._isTooltipMultiline(),this._markForCheck()}_isTooltipMultiline(){const e=this._elementRef.nativeElement.getBoundingClientRect();return e.height>24&&e.width>=200}_handleAnimationEnd({animationName:e}){(e===this._showAnimation||e===this._hideAnimation)&&this._finalizeAnimation(e===this._showAnimation)}_cancelPendingAnimations(){null!=this._showTimeoutId&&clearTimeout(this._showTimeoutId),null!=this._hideTimeoutId&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=this._hideTimeoutId=void 0}_finalizeAnimation(e){e?this._closeOnInteraction=!0:this.isVisible()||this._onHide.next()}_toggleVisibility(e){const i=this._tooltip.nativeElement,o=this._showAnimation,r=this._hideAnimation;if(i.classList.remove(e?r:o),i.classList.add(e?o:r),this._isVisible!==e&&(this._isVisible=e,this._changeDetectorRef.markForCheck()),e&&!this._animationsDisabled&&"function"==typeof getComputedStyle){const s=getComputedStyle(i);("0s"===s.getPropertyValue("animation-duration")||"none"===s.getPropertyValue("animation-name"))&&(this._animationsDisabled=!0)}e&&this._onShow(),this._animationsDisabled&&(i.classList.add("_mat-animation-noopable"),this._finalizeAnimation(e))}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-tooltip-component"]],viewQuery:function(i,o){if(1&i&&st(Ipe,7),2&i){let r;fe(r=pe())&&(o._tooltip=r.first)}},hostAttrs:["aria-hidden","true"],hostBindings:function(i,o){1&i&&F("mouseleave",function(s){return o._handleMouseLeave(s)})},decls:4,vars:5,consts:[["tooltip",""],[1,"mdc-tooltip","mat-mdc-tooltip",3,"animationend"],[1,"mat-mdc-tooltip-surface","mdc-tooltip__surface"]],template:function(i,o){1&i&&(Ms(0,"div",1,0),Jg("animationend",function(s){return o._handleAnimationEnd(s)}),Ms(2,"div",2),p(3),Bl()()),2&i&&(Ge(o.tooltipClass),ve("mdc-tooltip--multiline",o._isMultiline),c(3),S(o.message))},styles:['.mat-mdc-tooltip{position:relative;transform:scale(0);display:inline-flex}.mat-mdc-tooltip::before{content:"";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-surface{word-break:normal;overflow-wrap:anywhere;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center;will-change:transform,opacity;background-color:var(--mat-tooltip-container-color, var(--mat-sys-inverse-surface));color:var(--mat-tooltip-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-tooltip-container-shape, var(--mat-sys-corner-extra-small));font-family:var(--mat-tooltip-supporting-text-font, var(--mat-sys-body-small-font));font-size:var(--mat-tooltip-supporting-text-size, var(--mat-sys-body-small-size));font-weight:var(--mat-tooltip-supporting-text-weight, var(--mat-sys-body-small-weight));line-height:var(--mat-tooltip-supporting-text-line-height, var(--mat-sys-body-small-line-height));letter-spacing:var(--mat-tooltip-supporting-text-tracking, var(--mat-sys-body-small-tracking))}.mat-mdc-tooltip-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:right}.mat-mdc-tooltip-panel{line-height:normal}.mat-mdc-tooltip-panel.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}\n'],encapsulation:2,changeDetection:0})}return t})();const Upe=["button1"],zpe=["button2"],jpe=["*"],$pe=t=>({"for-dark-background":t});function Wpe(t,n){1&t&&L(0,"mat-spinner",3),2&t&&C("diameter",y().loadingSize)}function Gpe(t,n){1&t&&(h(0,"mat-icon"),p(1,"error_outline"),u())}var _c=function(t){return t[t.Normal=0]="Normal",t[t.Error=1]="Error",t[t.Loading=2]="Loading",t}(_c||{});let Mi=(()=>{class t{constructor(){this.forDarkBackground=!1,this.disabled=!1,this.color="",this.loadingSize=20,this.action=new ke,this.state=_c.Normal,this.buttonStates=_c}ngOnDestroy(){this.action.complete()}click(){this.disabled||(this.reset(),this.action.emit())}reset(e=!0){this.state=_c.Normal,e&&(this.disabled=!1)}focus(){this.button1&&this.button1.focus(),this.button2&&this.button2.focus()}showEnabled(){this.disabled=!1}showDisabled(){this.disabled=!0}showLoading(e=!0){this.state=_c.Loading,e&&(this.disabled=!0)}showError(e=!0){this.state=_c.Error,e&&(this.disabled=!1)}get isLoading(){return this.state===_c.Loading}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=ae({type:t,selectors:[["app-button"]],viewQuery:function(i,o){if(1&i&&st(Upe,5)(zpe,5),2&i){let r;fe(r=pe())&&(o.button1=r.first),fe(r=pe())&&(o.button2=r.first)}},inputs:{forDarkBackground:"forDarkBackground",disabled:"disabled",color:"color",loadingSize:"loadingSize"},outputs:{action:"action"},standalone:!1,ngContentSelectors:jpe,decls:6,vars:7,consts:[["button2",""],["mat-raised-button","",3,"click","disabled","color","ngClass"],[1,"d-flex"],[3,"diameter"]],template:function(i,o){1&i&&(xi(),h(0,"button",1,0),F("click",function(){return o.click()}),h(2,"div",2),x(3,Wpe,1,1,"mat-spinner",3),x(4,Gpe,2,0,"mat-icon"),Rt(5),u()()),2&i&&(C("disabled",o.disabled)("color",o.color)("ngClass",ie(5,$pe,o.forDarkBackground)),c(3),k(o.state===o.buttonStates.Loading?3:-1),c(),k(o.state===o.buttonStates.Error?4:-1))},dependencies:[Ft,Ht,Ae,ci],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], button[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px}button[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}mat-icon[_ngcontent-%COMP%], mat-spinner[_ngcontent-%COMP%]{display:inline-block;margin-right:15px}.for-dark-background[_ngcontent-%COMP%]:disabled{background-color:#000!important;color:#fff!important;opacity:.3}"]})}}return t})();const qpe=["button"],Kpe=["firstInput"],Ype=t=>({"rounded-elevated-box":t}),KB=(t,n)=>({"white-form-field":t,"element-disabled":n}),Xpe=(t,n)=>({"mt-2 app-button":t,"float-right":n}),Zpe=t=>({"element-disabled":t});function Qpe(t,n){if(1&t&&(h(0,"mat-form-field",6)(1,"div",7)(2,"label",8),p(3),_(4,"translate"),u(),L(5,"input",12),u(),h(6,"mat-error")(7,"span"),p(8),_(9,"translate"),u()()()),2&t){const e=y();C("ngClass",ie(7,Zpe,e.working)),c(3),S(v(4,3,"settings.password.old-password")),c(5),S(v(9,5,"settings.password.errors.old-password-required"))}}let YB=(()=>{class t{constructor(e,i,o,r){this.authService=e,this.router=i,this.snackbarService=o,this.dialog=r,this.workingState=new ke,this.forInitialConfig=!1}ngOnInit(){this.form=new ov({oldPassword:new Ia("",this.forInitialConfig?null:Se.required),newPassword:new Ia("",Se.compose([Se.required,Se.minLength(6),Se.maxLength(64)])),newPasswordConfirmation:new Ia("",[Se.required,this.validatePasswords.bind(this)])}),this.formSubscription=this.form.controls.newPassword.valueChanges.subscribe(()=>this.form.controls.newPasswordConfirmation.updateValueAndValidity())}ngAfterViewInit(){this.forInitialConfig&&setTimeout(()=>this.firstInput.nativeElement.focus())}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe(),this.formSubscription.unsubscribe()}get working(){return!!this.button&&this.button.isLoading}changePassword(){this.form.valid&&!this.button.disabled&&(this.button.showLoading(),this.workingState.next(!0),this.subscription=this.forInitialConfig?this.authService.initialConfig(this.form.get("newPassword").value).subscribe(()=>{this.dialog.closeAll(),this.snackbarService.showDone("settings.password.initial-config.done"),this.workingState.next(!1)},e=>{this.button.showError(),e=Ze(e),this.snackbarService.showError(e,null,!0),this.workingState.next(!1)}):this.authService.changePassword(this.form.get("oldPassword").value,this.form.get("newPassword").value).subscribe(()=>{this.router.navigate(["nodes"]),this.snackbarService.showDone("settings.password.password-changed"),this.workingState.next(!1)},e=>{this.button.showError(),e=Ze(e),this.snackbarService.showError(e),this.workingState.next(!1)}))}validatePasswords(){return this.form&&this.form.get("newPassword").value!==this.form.get("newPasswordConfirmation").value?{invalid:!0}:null}static{this.\u0275fac=function(i){return new(i||t)(O(ep),O(yt),O(ot),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-password"]],viewQuery:function(i,o){if(1&i&&st(qpe,5)(Kpe,5),2&i){let r;fe(r=pe())&&(o.button=r.first),fe(r=pe())&&(o.firstInput=r.first)}},inputs:{forInitialConfig:"forInitialConfig"},outputs:{workingState:"workingState"},standalone:!1,decls:33,vars:40,consts:[["firstInput",""],["button",""],[3,"ngClass"],[1,"box-internal-container","overflow"],[1,"help-icon",3,"inline","matTooltip"],[3,"formGroup"],[1,"white-form-field",3,"ngClass"],[1,"field-container"],["for","remoteKey",1,"field-label"],["type","password","formControlName","newPassword","maxlength","64","matInput",""],["type","password","formControlName","newPasswordConfirmation","maxlength","64","matInput",""],["color","primary",3,"action","ngClass","disabled","forDarkBackground"],["type","password","formControlName","oldPassword","maxlength","64","matInput",""]],template:function(i,o){1&i&&(h(0,"div",2)(1,"div",3)(2,"div")(3,"mat-icon",4),_(4,"translate"),p(5," help "),u()(),h(6,"form",5),x(7,Qpe,10,9,"mat-form-field",6),h(8,"mat-form-field",2)(9,"div",7)(10,"label",8),p(11),_(12,"translate"),u(),L(13,"input",9,0),u(),h(15,"mat-error")(16,"span"),p(17),_(18,"translate"),u()()(),h(19,"mat-form-field",2)(20,"div",7)(21,"label",8),p(22),_(23,"translate"),u(),L(24,"input",10),u(),h(25,"mat-error")(26,"span"),p(27),_(28,"translate"),u()()(),h(29,"app-button",11,1),F("action",function(){return o.changePassword()}),p(31),_(32,"translate"),u()()()()),2&i&&(C("ngClass",ie(29,Ype,!o.forInitialConfig)),c(2),Ge((o.forInitialConfig?"":"white-")+"form-help-icon-container"),c(),C("inline",!0)("matTooltip",v(4,17,o.forInitialConfig?"settings.password.initial-config-help":"settings.password.help")),c(3),C("formGroup",o.form),c(),k(o.forInitialConfig?-1:7),c(),C("ngClass",pt(31,KB,!o.forInitialConfig,o.working)),c(3),S(v(12,19,o.forInitialConfig?"settings.password.initial-config.password":"settings.password.new-password")),c(6),S(v(18,21,"settings.password.errors.new-password-error")),c(2),C("ngClass",pt(34,KB,!o.forInitialConfig,o.working)),c(3),S(v(23,23,o.forInitialConfig?"settings.password.initial-config.repeat-password":"settings.password.repeat-password")),c(5),S(v(28,25,"settings.password.errors.passwords-not-match")),c(2),C("ngClass",pt(37,Xpe,!o.forInitialConfig,o.forInitialConfig))("disabled",!o.form.valid)("forDarkBackground",!o.forInitialConfig),c(2),D(" ",v(32,27,o.forInitialConfig?"settings.password.initial-config.set-password":"settings.change-password")," "))},dependencies:[Ft,kn,Qt,Jt,xn,Bi,sn,_n,dn,Aa,On,Ae,Et,Mi,we],styles:[".help-icon[_ngcontent-%COMP%]{display:inline}mat-form-field[_ngcontent-%COMP%]{margin-right:32px}app-button[_ngcontent-%COMP%]{float:right;margin-right:32px}"]})}}return t})();const Jpe=["*"],XB=t=>({"content-margin":t});function eme(t,n){1&t&&(h(0,"button",2)(1,"mat-icon"),p(2,"close"),u()())}function tme(t,n){1&t&&mr(0)}function nme(t,n){if(1&t&&(h(0,"mat-dialog-content",4),rt(1,tme,1,0,"ng-container",5),u()),2&t){const e=y(),i=Un(8);C("ngClass",ie(2,XB,e.includeVerticalMargins)),c(),C("ngTemplateOutlet",i)}}function ime(t,n){1&t&&mr(0)}function ome(t,n){if(1&t&&(h(0,"div",4),rt(1,ime,1,0,"ng-container",5),u()),2&t){const e=y(),i=Un(8);C("ngClass",ie(2,XB,e.includeVerticalMargins)),c(),C("ngTemplateOutlet",i)}}function rme(t,n){1&t&&Rt(0)}let Sn=(()=>{class t{set dialog(e){e.disableClose=!0,this.dialogInternal=e}constructor(e){this.matDialog=e,this.includeScrollableArea=!0,this.includeVerticalMargins=!0}onKeyUp(){this.closePopup()}closePopup(){this.disableDismiss||this.matDialog.openDialogs[this.matDialog.openDialogs.length-1].id===this.dialogInternal.id&&this.dialogInternal.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-dialog"]],hostBindings:function(i,o){1&i&&F("keyup.esc",function(){return o.onKeyUp()},iC)},inputs:{headline:"headline",disableDismiss:"disableDismiss",includeScrollableArea:"includeScrollableArea",includeVerticalMargins:"includeVerticalMargins",dialog:"dialog"},standalone:!1,ngContentSelectors:Jpe,decls:9,vars:4,consts:[["contentTemplate",""],["mat-dialog-title","",1,"header"],["mat-dialog-close","","mat-icon-button","",1,"grey-button-background"],[1,"header-separator"],[3,"ngClass"],[4,"ngTemplateOutlet"]],template:function(i,o){1&i&&(xi(),h(0,"div",1)(1,"span"),p(2),u(),x(3,eme,3,0,"button",2),u(),L(4,"div",3),x(5,nme,2,4,"mat-dialog-content",4),x(6,ome,2,4,"div",4),rt(7,rme,1,0,"ng-template",null,0,Ul)),2&i&&(c(2),S(o.headline),c(),k(o.disableDismiss?-1:3),c(2),k(o.includeScrollableArea?5:-1),c(),k(o.includeScrollableArea?-1:6))},dependencies:[Ft,Wd,I4,Rk,au,Yo,Ae],styles:['.cursor-pointer[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}[_nghost-%COMP%]{color:#202226}.header[_ngcontent-%COMP%]{margin:-24px -24px 0;color:#215f9e;padding:0 14px 0 24px;font-size:1rem;text-transform:uppercase;font-weight:700;display:flex;align-items:center}.header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex-grow:1}@media(max-width:767px){.header[_ngcontent-%COMP%]{padding:0 2px 0 24px}}.header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{line-height:1rem;margin:18px 0}.header[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%]{color:#a6b2b2;width:32px;height:32px;line-height:20px;margin-left:10px;padding:0}@media(max-width:767px){.header[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%]{width:46px;height:46px}}.header-separator[_ngcontent-%COMP%]{height:1px;background-color:#215f9e33;margin-left:-12px;margin-right:-12px}.content-margin[_ngcontent-%COMP%]{padding-top:18px;padding-bottom:24px!important}']})}}return t})(),sme=(()=>{class t{static openDialog(e){const i=new cn;return i.autoFocus=!1,i.width=at.smallModalWidth,e.open(t,i)}constructor(e){this.dialogRef=e,this.disableDismiss=!1}static{this.\u0275fac=function(i){return new(i||t)(O(Zt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-initial-setup"]],standalone:!1,decls:3,vars:6,consts:[[3,"headline","dialog","disableDismiss"],[3,"workingState","forInitialConfig"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),_(1,"translate"),h(2,"app-password",1),F("workingState",function(s){return o.disableDismiss=s}),u()()),2&i&&(C("headline",v(1,4,"settings.password.initial-config.title"))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),c(2),C("forInitialConfig",!0))},dependencies:[YB,Sn,we],encapsulation:2})}}return t})();var xS=function QB(t){var n,e,i,P,R,o=I.prototype={constructor:I,toString:null,valueOf:null},r=new I(1),s=20,a=4,l=-7,d=21,f=-1e7,m=1e7,g=!1,b=1,w=0,M={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xa0",suffix:""},E="0123456789abcdefghijklmnopqrstuvwxyz";function I(P,R){var B,$,z,G,J,U,N,K,j=this;if(!(j instanceof I))return new I(P,R);if(K=typeof P,null==R){if(W(P))return j.s=P.s,void(!P.c||P.e>m?j.c=j.e=null:P.e=10;J/=10,G++);return void(G>m?j.c=j.e=null:(j.e=G,j.c=[P]))}N=String(P)}else{if("string"==K){if(!ame.test(N=P))return i(j,N)}else{if("bigint"!=K)throw Error(xo+"Invalid argument: "+P);N=String(P)}j.s=45==N.charCodeAt(0)?(N=N.slice(1),-1):1}(G=N.indexOf("."))>-1&&(N=N.replace(".","")),(J=N.search(/e/i))>0?(G<0&&(G=J),G+=+N.slice(J+1),N=N.substring(0,J)):G<0&&(G=N.length)}else{if("string"!=K)throw Error(xo+"String expected: "+P);for(An(R,2,E.length,"Base"),j.s=45===(N=P).charCodeAt(0)?(N=N.slice(1),-1):1,B=E.slice(0,R),G=J=0,U=N.length;JG){G=U;continue}}else if(!z&&(N==N.toUpperCase()&&(N=N.toLowerCase())||N==N.toLowerCase()&&(N=N.toUpperCase()))){z=!0,J=-1,G=0;continue}return i(j,P,R)}(G=(N=e(N,R,10,j.s)).indexOf("."))>-1?N=N.replace(".",""):G=N.length}for(J=0;48===N.charCodeAt(J);J++);for(U=N.length;48===N.charCodeAt(--U););if(N=N.slice(J,++U))if(U-=J,(G=G-J-1)>m)j.c=j.e=null;else if(G=d)?bv(N,J):Fa(N,J,"0");else if(G=(P=ee(new I(P),R,B)).e,U=(N=Pr(P.c)).length,1==$||2==$&&(R<=G||G<=l)){for(;UJ),N=Fa(N,G,"0"),G+1>U){if(--R>0)for(N+=".";R--;N+="0");}else if((R+=G-U)>0)for(G+1==U&&(N+=".");R--;N+="0");return P.s<0&&z?"-"+N:N}function W(P){return P instanceof I||!!P&&!0===P._isBigNumber}function q(P,R){for(var B,$,z=1,G=new I(P[0]);z=10;z/=10,$++);return(B=$+14*B-1)>m?P.c=P.e=null:B=10;U/=10,z++);if((G=R-z)<0)G+=14,N=Q[K=0],j=Tr(N/he[z-(J=R)-1]%10);else if((K=kS((G+1)/14))>=Q.length){if(!$)break e;for(;Q.length<=K;Q.push(0));N=j=0,z=1,J=(G%=14)-14+1}else{for(N=U=Q[K],z=1;U>=10;U/=10,z++);j=(J=(G%=14)-14+z)<0?0:Tr(N/he[z-J-1]%10)}if($=$||R<0||null!=Q[K+1]||(J<0?N:N%he[z-J-1]),$=B<4?(j||$)&&(0==B||B==(P.s<0?3:2)):j>5||5==j&&(4==B||$||6==B&&(G>0?J>0?N/he[z-J]:0:Q[K-1])%10&1||B==(P.s<0?8:7)),R<1||!Q[0])return Q.length=0,$?(Q[0]=he[(14-(R-=P.e+1)%14)%14],P.e=-R||0):Q[0]=P.e=0,P;if(0==G?(Q.length=K,U=1,K--):(Q.length=K+1,U=he[14-G],Q[K]=J>0?Tr(N/he[z-J]%he[J])*U:0),$)for(;;){if(0==K){for(G=1,J=Q[0];J>=10;J/=10,G++);for(J=Q[0]+=U,U=1;J>=10;J/=10,U++);G!=U&&(P.e++,Q[0]==Er&&(Q[0]=1));break}if(Q[K]+=U,Q[K]!=Er)break;Q[K--]=0,U=1}for(G=Q.length;0===Q[--G];Q.pop());}P.e>m?P.c=P.e=null:P.e=d?bv(R,B):Fa(R,B,"0"),P.s<0?"-"+R:R)}return I.clone=QB,I.ROUND_UP=0,I.ROUND_DOWN=1,I.ROUND_CEIL=2,I.ROUND_FLOOR=3,I.ROUND_HALF_UP=4,I.ROUND_HALF_DOWN=5,I.ROUND_HALF_EVEN=6,I.ROUND_HALF_CEIL=7,I.ROUND_HALF_FLOOR=8,I.EUCLID=9,I.config=I.set=function(P){var R,B;if(null!=P){if("object"!=typeof P)throw Error(xo+"Object expected: "+P);if(P.hasOwnProperty(R="DECIMAL_PLACES")&&(An(B=P[R],0,Di,R),s=B),P.hasOwnProperty(R="ROUNDING_MODE")&&(An(B=P[R],0,8,R),a=B),P.hasOwnProperty(R="EXPONENTIAL_AT")&&((B=P[R])&&B.pop?(An(B[0],-Di,0,R),An(B[1],0,Di,R),l=B[0],d=B[1]):(An(B,-Di,Di,R),l=-(d=B<0?-B:B))),P.hasOwnProperty(R="RANGE"))if((B=P[R])&&B.pop)An(B[0],-Di,-1,R),An(B[1],1,Di,R),f=B[0],m=B[1];else{if(An(B,-Di,Di,R),!B)throw Error(xo+R+" cannot be zero: "+B);f=-(m=B<0?-B:B)}if(P.hasOwnProperty(R="CRYPTO")){if((B=P[R])!==!!B)throw Error(xo+R+" not true or false: "+B);if(B){if(!(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes)))throw g=!B,Error(xo+"crypto unavailable");g=B}else g=B}if(P.hasOwnProperty(R="MODULO_MODE")&&(An(B=P[R],0,9,R),b=B),P.hasOwnProperty(R="POW_PRECISION")&&(An(B=P[R],0,Di,R),w=B),P.hasOwnProperty(R="FORMAT")){if("object"!=typeof(B=P[R]))throw Error(xo+R+" not an object: "+B);M=B}if(P.hasOwnProperty(R="ALPHABET")){if("string"!=typeof(B=P[R])||/^.?$|[+\-.\s]|(.).*\1/.test(B))throw Error(xo+R+" invalid: "+B);E=B}}return{DECIMAL_PLACES:s,ROUNDING_MODE:a,EXPONENTIAL_AT:[l,d],RANGE:[f,m],CRYPTO:g,MODULO_MODE:b,POW_PRECISION:w,FORMAT:M,ALPHABET:E}},I.isBigNumber=function(P){if(!W(P))return!1;var R,B,$=P.c,z=P.e,G=P.s;if("[object Array]"!={}.toString.call($))return null===$&&null===z&&(null===G||1===G||-1===G);if(1!==G&&-1!==G||z<-Di||z>Di||z!==Tr(z))return!1;if(0===$[0])return 0===z&&1===$.length;if((R=(z+1)%14)<1&&(R+=14),String($[0]).length!==R)return!1;for(R=0;R<$.length;R++)if((B=$[R])<0||B>=Er||B!==Tr(B))return!1;return 0!==B},I.maximum=I.max=function(){return q(arguments,-1)},I.minimum=I.min=function(){return q(arguments,1)},I.random=(P=9007199254740992,R=Math.random()*P&2097151?function(){return Tr(Math.random()*P)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(B){var $,z,G,J,U,N=0,K=[],j=new I(r);if(null==B?B=s:An(B,0,Di),J=kS(B/14),g)if(crypto.getRandomValues){for($=crypto.getRandomValues(new Uint32Array(J*=2));N>>11))>=9e15?(z=crypto.getRandomValues(new Uint32Array(2)),$[N]=z[0],$[N+1]=z[1]):(K.push(U%1e14),N+=2);N=J/2}else{if(!crypto.randomBytes)throw g=!1,Error(xo+"crypto unavailable");for($=crypto.randomBytes(J*=7);N=9e15?crypto.randomBytes(7).copy($,N):(K.push(U%1e14),N+=7);N=J/7}if(!g)for(;N=10;U/=10,N++);N<14&&(G-=14-N)}return j.e=G,j.c=K,j}),I.sum=function(){for(var P=1,R=arguments,B=new I(R[0]);Pz-1&&(null==U[J+1]&&(U[J+1]=0),U[J+1]+=U[J]/z|0,U[J]%=z)}return U.reverse()}return function(B,$,z,G,J){var U,N,K,j,Q,he,xe,Ie,ht=B.indexOf("."),Re=s,Qe=a;for(ht>=0&&(j=w,w=0,B=B.replace(".",""),he=(Ie=new I($)).pow(B.length-ht),w=j,Ie.c=R(Fa(Pr(he.c),he.e,"0"),10,z,P),Ie.e=Ie.c.length),K=j=(xe=R(B,$,z,J?(U=E,P):(U=P,E))).length;0==xe[--j];xe.pop());if(!xe[0])return U.charAt(0);if(ht<0?--K:(he.c=xe,he.e=K,he.s=G,xe=(he=n(he,Ie,Re,Qe,z)).c,Q=he.r,K=he.e),ht=xe[N=K+Re+1],j=z/2,Q=Q||N<0||null!=xe[N+1],Q=Qe<4?(null!=ht||Q)&&(0==Qe||Qe==(he.s<0?3:2)):ht>j||ht==j&&(4==Qe||Q||6==Qe&&1&xe[N-1]||Qe==(he.s<0?8:7)),N<1||!xe[0])B=Q?Fa(U.charAt(1),-Re,U.charAt(0)):U.charAt(0);else{if(xe.length=N,Q)for(--z;++xe[--N]>z;)xe[N]=0,N||(++K,xe=[1].concat(xe));for(j=xe.length;!xe[--j];);for(ht=0,B="";ht<=j;B+=U.charAt(xe[ht++]));B=Fa(B,K,U.charAt(0))}return B}}(),n=function(){function P($,z,G){var J,U,N,K,j=0,Q=$.length,he=z%Ra,xe=z/Ra|0;for($=$.slice();Q--;)j=((U=he*(N=$[Q]%Ra)+(J=xe*N+(K=$[Q]/Ra|0)*he)%Ra*Ra+j)/G|0)+(J/Ra|0)+xe*K,$[Q]=U%G;return j&&($=[j].concat($)),$}function R($,z,G,J){var U,N;if(G!=J)N=G>J?1:-1;else for(U=N=0;Uz[U]?1:-1;break}return N}function B($,z,G,J){for(var U=0;G--;)$[G]-=U,$[G]=(U=$[G]1;$.splice(0,1));}return function($,z,G,J,U){var N,K,j,Q,he,xe,Ie,ht,Re,Qe,ct,xt,or,to,qa,Mo,Fp,rr=$.s==z.s?1:-1,fo=$.c,$n=z.c;if(!(fo&&fo[0]&&$n&&$n[0]))return new I($.s&&z.s&&(fo?!$n||fo[0]!=$n[0]:$n)?fo&&0==fo[0]||!$n?0*rr:rr/0:NaN);for(Re=(ht=new I(rr)).c=[],rr=G+(K=$.e-z.e)+1,U||(U=Er,K=Jo($.e/14)-Jo(z.e/14),rr=rr/14|0),j=0;$n[j]==(fo[j]||0);j++);if($n[j]>(fo[j]||0)&&K--,rr<0)Re.push(1),Q=!0;else{for(to=fo.length,Mo=$n.length,j=0,rr+=2,(he=Tr(U/($n[0]+1)))>1&&($n=P($n,he,U),fo=P(fo,he,U),Mo=$n.length,to=fo.length),or=Mo,ct=(Qe=fo.slice(0,Mo)).length;ct=U/2&&qa++;do{if(he=0,(N=R($n,Qe,Mo,ct))<0){if(xt=Qe[0],Mo!=ct&&(xt=xt*U+(Qe[1]||0)),(he=Tr(xt/qa))>1)for(he>=U&&(he=U-1),Ie=(xe=P($n,he,U)).length,ct=Qe.length;1==R(xe,Qe,Ie,ct);)he--,B(xe,Mo=10;rr/=10,j++);ee(ht,G+(ht.e=j+14*K-1)+1,J,Q)}else ht.e=K,ht.r=+Q;return ht}}(),i=function(){var P=/^(-?)0([xbo])(?=\w[\w.]*$)/i,R=/^([^.]+)\.$/,B=/^\.([^.]+)$/,$=/^-?(Infinity|NaN)$/,z=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(G,J,U){var N,K=J.replace(z,"");if($.test(K))return G.s=isNaN(K)?null:K<0?-1:1,void(G.c=G.e=null);if(K=K.replace(P,function(j,Q,he){return N="x"==(he=he.toLowerCase())?16:"b"==he?2:8,U&&U!=N?j:Q}),U&&(N=U,K=K.replace(R,"$1").replace(B,"0.$1")),J!=K)return new I(K,N);throw Error(xo+"Not a"+(U?" base "+U:"")+" number: "+J)}}(),o.absoluteValue=o.abs=function(){var P=new I(this);return P.s<0&&(P.s=1),P},o.comparedTo=function(P,R){return bc(this,new I(P,R))},o.decimalPlaces=o.dp=function(P,R){var B,$,z,G=this;if(null!=P)return An(P,0,Di),null==R?R=a:An(R,0,8),ee(new I(G),P+G.e+1,R);if(!(B=G.c))return null;if($=14*((z=B.length-1)-Jo(this.e/14)),z=B[z])for(;z%10==0;z/=10,$--);return $<0&&($=0),$},o.dividedBy=o.div=function(P,R){return n(this,new I(P,R),s,a)},o.dividedToIntegerBy=o.idiv=function(P,R){return n(this,new I(P,R),0,1)},o.exponentiatedBy=o.pow=function(P,R){var B,$,z,G,U,N,K,j,Q=this;if((P=new I(P)).c&&!P.isInteger())throw Error(xo+"Exponent not an integer: "+oe(P));if(null!=R&&(R=new I(R)),U=P.e>14,!Q.c||!Q.c[0]||1==Q.c[0]&&!Q.e&&1==Q.c.length||!P.c||!P.c[0])return j=new I(Math.pow(+oe(Q),U?P.s*(2-_v(P)):+oe(P))),R?j.mod(R):j;if(N=P.s<0,R){if(R.c?!R.c[0]:!R.s)return new I(NaN);($=!N&&Q.isInteger()&&R.isInteger())&&(Q=Q.mod(R))}else{if(P.e>9&&(Q.e>0||Q.e<-1||(0==Q.e?Q.c[0]>1||U&&Q.c[1]>=24e7:Q.c[0]<8e13||U&&Q.c[0]<=9999975e7)))return G=Q.s<0&&_v(P)?-0:0,Q.e>-1&&(G=1/G),new I(N?1/G:G);w&&(G=kS(w/14+2))}for(U?(B=new I(.5),N&&(P.s=1),K=_v(P)):K=(z=Math.abs(+oe(P)))%2,j=new I(r);;){if(K){if(!(j=j.times(Q)).c)break;G?j.c.length>G&&(j.c.length=G):$&&(j=j.mod(R))}if(z){if(0===(z=Tr(z/2)))break;K=z%2}else if(ee(P=P.times(B),P.e+1,1),P.e>14)K=_v(P);else{if(0===(z=+oe(P)))break;K=z%2}Q=Q.times(Q),G?Q.c&&Q.c.length>G&&(Q.c.length=G):$&&(Q=Q.mod(R))}return $?j:(N&&(j=r.div(j)),R?j.mod(R):G?ee(j,w,a,void 0):j)},o.integerValue=function(P){var R=new I(this);return null==P?P=a:An(P,0,8),ee(R,R.e+1,P)},o.isEqualTo=o.eq=function(P,R){return 0===bc(this,new I(P,R))},o.isFinite=function(){return!!this.c},o.isGreaterThan=o.gt=function(P,R){return bc(this,new I(P,R))>0},o.isGreaterThanOrEqualTo=o.gte=function(P,R){return 1===(R=bc(this,new I(P,R)))||0===R},o.isInteger=function(){return!!this.c&&Jo(this.e/14)>this.c.length-2},o.isLessThan=o.lt=function(P,R){return bc(this,new I(P,R))<0},o.isLessThanOrEqualTo=o.lte=function(P,R){return-1===(R=bc(this,new I(P,R)))||0===R},o.isNaN=function(){return!this.s},o.isNegative=function(){return this.s<0},o.isPositive=function(){return this.s>0},o.isZero=function(){return!!this.c&&0==this.c[0]},o.minus=function(P,R){var B,$,z,G,J=this,U=J.s;if(R=(P=new I(P,R)).s,!U||!R)return new I(NaN);if(U!=R)return P.s=-R,J.plus(P);var N=J.e/14,K=P.e/14,j=J.c,Q=P.c;if(!N||!K){if(!j||!Q)return j?(P.s=-R,P):new I(Q?J:NaN);if(!j[0]||!Q[0])return Q[0]?(P.s=-R,P):new I(j[0]?J:3==a?-0:0)}if(N=Jo(N),K=Jo(K),j=j.slice(),U=N-K){for((G=U<0)?(U=-U,z=j):(K=N,z=Q),z.reverse(),R=U;R--;z.push(0));z.reverse()}else for($=(G=(U=j.length)<(R=Q.length))?U:R,U=R=0;R<$;R++)if(j[R]!=Q[R]){G=j[R]0)for(;R--;j[B++]=0);for(R=Er-1;$>U;){if(j[--$]=0;){for(B=0,he=xt[z]%Re,xe=xt[z]/Re|0,G=z+(J=N);G>z;)B=((K=he*(K=ct[--J]%Re)+(U=xe*K+(j=ct[J]/Re|0)*he)%Re*Re+Ie[G]+B)/ht|0)+(U/Re|0)+xe*j,Ie[G--]=K%ht;Ie[G]=B}return B?++$:Ie.splice(0,1),Y(P,Ie,$)},o.negated=function(){var P=new I(this);return P.s=-P.s||null,P},o.plus=function(P,R){var B,$=this,z=$.s;if(R=(P=new I(P,R)).s,!z||!R)return new I(NaN);if(z!=R)return P.s=-R,$.minus(P);var G=$.e/14,J=P.e/14,U=$.c,N=P.c;if(!G||!J){if(!U||!N)return new I(z/0);if(!U[0]||!N[0])return N[0]?P:new I(U[0]?$:0*z)}if(G=Jo(G),J=Jo(J),U=U.slice(),z=G-J){for(z>0?(J=G,B=N):(z=-z,B=U),B.reverse();z--;B.push(0));B.reverse()}for((z=U.length)-(R=N.length)<0&&(B=N,N=U,U=B,R=z),z=0;R;)z=(U[--R]=U[R]+N[R]+z)/Er|0,U[R]=Er===U[R]?0:U[R]%Er;return z&&(U=[z].concat(U),++J),Y(P,U,J)},o.precision=o.sd=function(P,R){var B,$,z,G=this;if(null!=P&&P!==!!P)return An(P,1,Di),null==R?R=a:An(R,0,8),ee(new I(G),P,R);if(!(B=G.c))return null;if($=14*(z=B.length-1)+1,z=B[z]){for(;z%10==0;z/=10,$--);for(z=B[0];z>=10;z/=10,$++);}return P&&G.e+1>$&&($=G.e+1),$},o.shiftedBy=function(P){return An(P,-ZB,ZB),this.times("1e"+P)},o.squareRoot=o.sqrt=function(){var P,R,B,$,z,G=this,J=G.c,U=G.s,N=G.e,K=s+4,j=new I("0.5");if(1!==U||!J||!J[0])return new I(!U||U<0&&(!J||J[0])?NaN:J?G:1/0);if(0==(U=Math.sqrt(+oe(G)))||U==1/0?(((R=Pr(J)).length+N)%2==0&&(R+="0"),U=Math.sqrt(+R),N=Jo((N+1)/2)-(N<0||N%2),B=new I(R=U==1/0?"5e"+N:(R=U.toExponential()).slice(0,R.indexOf("e")+1)+N)):B=new I(U+""),B.c[0])for((U=(N=B.e)+K)<3&&(U=0);;)if(B=j.times((z=B).plus(n(G,z,K,1))),Pr(z.c).slice(0,U)===(R=Pr(B.c)).slice(0,U)){if(B.e0&&Ie>0){for(j=xe.substr(0,G=Ie%U||U);G0&&(j+=K+xe.slice(G)),he&&(j="-"+j)}$=Q?j+(B.decimalSeparator||"")+((N=+B.fractionGroupSize)?Q.replace(new RegExp("\\d{"+N+"}\\B","g"),"$&"+(B.fractionGroupSeparator||"")):Q):j}return(B.prefix||"")+$+(B.suffix||"")},o.toFraction=function(P){var R,B,$,z,G,J,U,N,K,j,Q,he,xe=this,Ie=xe.c;if(null!=P&&(!(U=new I(P)).isInteger()&&(U.c||1!==U.s)||U.lt(r)))throw Error(xo+"Argument "+(U.isInteger()?"out of range: ":"not an integer: ")+oe(U));if(!Ie)return new I(xe);for(R=new I(r),K=B=new I(r),$=N=new I(r),he=Pr(Ie),G=R.e=he.length-xe.e-1,R.c[0]=SS[(J=G%14)<0?14+J:J],P=!P||U.comparedTo(R)>0?G>0?R:K:U,J=m,m=1/0,U=new I(he),N.c[0]=0;j=n(U,R,0,1),1!=(z=B.plus(j.times($))).comparedTo(P);)B=$,$=z,K=N.plus(j.times(z=K)),N=z,R=U.minus(j.times(z=R)),U=z;return z=n(P.minus(B),$,0,1),N=N.plus(z.times(K)),B=B.plus(z.times($)),N.s=K.s=xe.s,Q=n(K,$,G*=2,a).minus(xe).abs().comparedTo(n(N,B,G,a).minus(xe).abs())<1?[K,$]:[N,B],m=J,Q},o.toNumber=function(){return+oe(this)},o.toObject=function(){var P=this;return{c:P.c?P.c.slice():null,e:P.e,s:P.s}},o.toPrecision=function(P,R){return null!=P&&An(P,1,Di),A(this,P,R,2)},o.toString=function(P){var R,B=this,$=B.s,z=B.e;return null===z?$?(R="Infinity",$<0&&(R="-"+R)):R="NaN":(null==P?R=z<=l||z>=d?bv(Pr(B.c),z):Fa(Pr(B.c),z,"0"):(An(P,2,E.length,"Base"),R=e(Fa(Pr(B.c),z,"0"),10,P,$,!0)),$<0&&B.c[0]&&(R="-"+R)),R},o.valueOf=o.toJSON=function(){return oe(this)},o._isBigNumber=!0,null!=t&&I.set(t),I}(),ame=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,kS=Math.ceil,Tr=Math.floor,xo="[BigNumber Error] ",Er=1e14,ZB=9007199254740991,SS=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Ra=1e7,Di=1e9;function Jo(t){var n=0|t;return t>0||t===n?n:n-1}function Pr(t){for(var n,e,i=1,o=t.length,r=t[0]+"";id^e?1:-1;for(a=(l=o.length)<(d=r.length)?l:d,s=0;sr[s]^e?1:-1;return l==d?0:l>d^e?1:-1}function An(t,n,e,i){if(te||t!==Tr(t))throw Error(xo+(i||"Argument")+("number"==typeof t?te?" out of range: ":" not an integer: ":" not a primitive number: ")+String(t))}function _v(t){var n=t.c.length-1;return Jo(t.e/14)==n&&t.c[n]%2!=0}function bv(t,n){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(n<0?"e":"e+")+n}function Fa(t,n,e){var i,o;if(n<0){for(o=e+".";++n;o+=e);t=o+t}else if(++n>(i=t.length)){for(o=e,n-=i;--n;o+=e);t+=o}else n{class t{constructor(e,i){this.apiService=e,this.storageService=i}getNodes(){let e=[];return this.apiService.get("visors-summary").pipe(De(i=>{i&&i.forEach(l=>{const d=new MS;d.online=l.online,d.localPk=l.overview.local_pk,d.version=l.overview.build_info.version,d.configVersion=l.config_version,d.os=l.overview.build_info.os,d.arch=l.overview.build_info.arch,d.autoconnectTransports=l.public_autoconnect,d.isPublic=l.is_public,d.buildTag=l.build_tag?l.build_tag:"",d.rewardsAddress=l.reward_address,d.ip=l.overview&&l.overview.local_ip&&l.overview.local_ip.trim()?l.overview.local_ip:null,d.publicIp=l.overview&&l.overview.public_ip&&l.overview.public_ip.trim()?l.overview.public_ip:null,d.isSymmeticNat=l.overview.is_symmetic_nat,l.overview.country_code&&(d.countryCode=l.overview.country_code),l.overview.region_name&&(d.regionName=l.overview.region_name),l.overview.city_name&&(d.cityName=l.overview.city_name),l.overview.latitude&&(d.latitude=l.overview.latitude),l.overview.longitude&&(d.longitude=l.overview.longitude);const f=this.storageService.getLabelInfo(d.localPk);if(d.label=f&&f.label?f.label:this.storageService.getDefaultLabel(d),!d.online)return d.dmsgServerPk="",d.roundTripPing="",void e.push(d);d.health={servicesHealth:l.health.services_health,uptimeTrackerHealth:l.health.uptime_tracker_health,autoconnectHealth:l.health.autoconnect_health,transportabilityHealth:l.health.transportability_health},d.dmsgServerPk=l.dmsg_stats.server_public_key,d.connectedDmsgServers=l.connected_dmsg_servers||[],d.roundTripPing=this.nsToMs(l.dmsg_stats.round_trip),l.dmsg_servers&&Array.isArray(l.dmsg_servers)&&(d.dmsgServers=l.dmsg_servers.map(m=>({pk:m.pk,latency:m.latency||0}))),d.transports=[],l.overview.transports&&l.overview.transports.forEach(m=>{d.transports.push({id:m.id,localPk:m.local_pk,remotePk:m.remote_pk,type:m.type,recv:m.log?m.log.recv:0,sent:m.log?m.log.sent:0,latencyMs:m.latency_ms||0})}),d.apps=[],l.overview.apps&&l.overview.apps.forEach(m=>{d.apps.push({name:m.name,autostart:m.auto_start,port:m.port,status:m.status,detailedStatus:m.detailed_status,args:m.args})}),d.isHypervisor=l.is_hypervisor,e.push(d)});const o=new Map,r=[],s=[];e.forEach(l=>{o.set(l.localPk,l),l.online&&(r.push(l.localPk),s.push(l.ip))}),this.storageService.includeVisibleLocalNodes(r,s);const a=[];return this.storageService.getSavedLocalNodes().forEach(l=>{if(!o.has(l.publicKey)&&!l.hidden){const d=new MS;d.localPk=l.publicKey;const f=this.storageService.getLabelInfo(l.publicKey);d.label=f&&f.label?f.label:this.storageService.getDefaultLabel(d),d.online=!1,d.dmsgServerPk="",d.roundTripPing="",a.push(d)}o.has(l.publicKey)&&!o.get(l.publicKey).online&&l.hidden&&o.delete(l.publicKey)}),e=[],o.forEach(l=>e.push(l)),e=e.concat(a),e}))}nsToMs(e){let i=new vv(e).dividedBy(1e6);return i=i.isLessThan(10)?i.decimalPlaces(2):i.decimalPlaces(0),i.toString(10)}getNode(e){return this.apiService.get(`visors/${e}/summary`).pipe(De(i=>{const o=new MS;o.localPk=i.overview.local_pk,o.version=i.overview.build_info.version,o.configVersion=i.config_version,o.os=i.overview.build_info.os,o.arch=i.overview.build_info.arch,o.secondsOnline=Math.floor(Number.parseFloat(i.uptime)),o.minHops=i.min_hops,o.buildTag=i.build_tag,o.skybianBuildVersion=i.skybian_build_version,o.connectedDmsgServers=i.connected_dmsg_servers||[],o.isSymmeticNat=i.overview.is_symmetic_nat,o.publicIp=i.overview.public_ip,o.autoconnectTransports=i.public_autoconnect,o.isPublic=i.is_public,o.rewardsAddress=i.reward_address,i.overview.country_code&&(o.countryCode=i.overview.country_code),i.overview.region_name&&(o.regionName=i.overview.region_name),i.overview.city_name&&(o.cityName=i.overview.city_name),i.overview.latitude&&(o.latitude=i.overview.latitude),i.overview.longitude&&(o.longitude=i.overview.longitude),o.ip=i.overview.local_ip&&i.overview.local_ip.trim()?i.overview.local_ip:null;const r=this.storageService.getLabelInfo(o.localPk);o.label=r&&r.label?r.label:this.storageService.getDefaultLabel(o),o.health={servicesHealth:i.health.services_health,uptimeTrackerHealth:i.health.uptime_tracker_health,autoconnectHealth:i.health.autoconnect_health,transportabilityHealth:i.health.transportability_health},o.transports=[],i.overview.transports&&i.overview.transports.forEach(a=>{o.transports.push({id:a.id,localPk:a.local_pk,remotePk:a.remote_pk,type:a.type,recv:a.log.recv,sent:a.log.sent,latencyMs:a.latency_ms||0})}),o.persistentTransports=[],i.persistent_transports&&i.persistent_transports.forEach(a=>{o.persistentTransports.push({pk:a.pk,type:a.type})}),o.routes=[],i.routes&&i.routes.forEach(a=>{o.routes.push({key:a.key,rule:a.rule}),a.rule_summary&&(o.routes[o.routes.length-1].ruleSummary={keepAlive:a.rule_summary.keep_alive,ruleType:a.rule_summary.rule_type,keyRouteId:a.rule_summary.key_route_id},a.rule_summary.app_fields&&a.rule_summary.app_fields.route_descriptor&&(o.routes[o.routes.length-1].appFields={routeDescriptor:{dstPk:a.rule_summary.app_fields.route_descriptor.dst_pk,dstPort:a.rule_summary.app_fields.route_descriptor.dst_port,srcPk:a.rule_summary.app_fields.route_descriptor.src_pk,srcPort:a.rule_summary.app_fields.route_descriptor.src_port}}),a.rule_summary.forward_fields&&(o.routes[o.routes.length-1].forwardFields={nextRid:a.rule_summary.forward_fields.next_rid,nextTid:a.rule_summary.forward_fields.next_tid},a.rule_summary.forward_fields.route_descriptor&&(o.routes[o.routes.length-1].forwardFields.routeDescriptor={dstPk:a.rule_summary.forward_fields.route_descriptor.dst_pk,dstPort:a.rule_summary.forward_fields.route_descriptor.dst_port,srcPk:a.rule_summary.forward_fields.route_descriptor.src_pk,srcPort:a.rule_summary.forward_fields.route_descriptor.src_port})),a.rule_summary.intermediary_forward_fields&&(o.routes[o.routes.length-1].intermediaryForwardFields={nextRid:a.rule_summary.intermediary_forward_fields.next_rid,nextTid:a.rule_summary.intermediary_forward_fields.next_tid}))}),o.apps=[],i.overview.apps&&i.overview.apps.forEach(a=>{o.apps.push({name:a.name,status:a.status,port:a.port,autostart:a.auto_start,detailedStatus:a.detailed_status,args:a.args})});let s=!1;return i.dmsg_stats&&(o.dmsgServerPk=i.dmsg_stats.server_public_key,o.roundTripPing=this.nsToMs(i.dmsg_stats.round_trip),s=!0),s||(o.dmsgServerPk="-",o.roundTripPing="-1"),i.dmsg_servers&&Array.isArray(i.dmsg_servers)&&(o.dmsgServers=i.dmsg_servers.map(a=>({pk:a.pk,latency:a.latency||0}))),o.isHypervisor=i.is_hypervisor,o}))}setRewardsAddress(e,i){return this.apiService.put(`visors/${e}/reward`,{reward_address:i})}getRewardsAddress(e){return this.apiService.get(`visors/${e}/reward`)}getRuntimeLogs(e){return this.apiService.get(`visors/${e}/runtime-logs`)}getRuntimeLogsSince(e,i){return this.apiService.get(`visors/${e}/runtime-logs?since=${i}`)}getRuntimeStats(e){return this.apiService.get(`visors/${e}/runtime-stats`)}getHostStats(e){return this.apiService.get(`visors/${e}/host-stats`)}getNetworkView(e=!1){return this.apiService.get("network-view"+(e?"?refresh=true":""))}getRewardRules(){return this.apiService.get("reward-rules",new Ro({responseType:Qf.Text}))}deleteRewardsAddress(e){return this.apiService.delete(`visors/${e}/reward`)}getProxies(e){return this.apiService.get(`visors/${e}/proxies`)}setProxyEnabled(e,i,o){return this.apiService.post(`visors/${e}/proxies/set`,{kind:i,enable:o})}setProxyUpstream(e,i,o){return this.apiService.post(`visors/${e}/proxies/upstream`,{kind:i,addr:o})}getSkynetPorts(e){return this.apiService.get(`visors/${e}/skynet-ports`)}registerSkynetPort(e,i){return this.apiService.post(`visors/${e}/skynet-ports/register`,{port:i})}deregisterSkynetPort(e,i){return this.apiService.post(`visors/${e}/skynet-ports/deregister`,{port:i})}getForwardedPorts(e){return this.apiService.get(`visors/${e}/forwarded-ports`)}registerForwardedPort(e,i){return this.apiService.post(`visors/${e}/forwarded-ports/register`,i)}updateForwardedPort(e,i){return this.apiService.post(`visors/${e}/forwarded-ports/update`,i)}getSkynetForwards(e){return this.apiService.get(`visors/${e}/skynet-forwards`)}skynetConnect(e,i,o,r,s){return this.apiService.post(`visors/${e}/skynet-forwards/connect`,{network:i,remote_pk:o,remote_port:r,local_port:s})}skynetDisconnect(e,i){return this.apiService.post(`visors/${e}/skynet-forwards/disconnect`,{id:i})}shutdown(e){return this.apiService.post(`visors/${e}/shutdown`)}checkIfUpdating(e){return this.apiService.get(`visors/${e}/update/ws/running`)}checkUpdate(e){let i="stable";return i=localStorage.getItem(vc.Channel)||i,this.apiService.get(`visors/${e}/update/available/${i}`)}update(e){const i={channel:"stable"};if(localStorage.getItem(vc.UseCustomSettings)){const r=localStorage.getItem(vc.Channel);r&&(i.channel=r);const s=localStorage.getItem(vc.Version);s&&(i.version=s);const a=localStorage.getItem(vc.ArchiveURL);a&&(i.archive_url=a);const l=localStorage.getItem(vc.ChecksumsURL);l&&(i.checksums_url=l)}return this.apiService.ws(`visors/${e}/update/ws`,i)}static{this.\u0275fac=function(i){return new(i||t)(ce(fi),ce(ri))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();class cme{}let JB=(()=>{class t{constructor(e,i){this.storageService=e,this.nodeService=i,this.dataSubject=new Ei(null),this.lastEmitedData=new cme,this.firstCallToGetDataMade=!1,this.storageService.getRefreshTimeObservable().subscribe(o=>{this.dataRefreshDelay=1e3*o,this.forceRefresh()})}startRequestingData(){return this.firstCallToGetDataMade||this.getData(0),this.dataSubject.asObservable()}stopRequestingData(){this.updateSubscription&&(this.updateSubscription.unsubscribe(),this.firstCallToGetDataMade=!1)}getData(e){this.firstCallToGetDataMade=!0,this.updateSubscription&&this.updateSubscription.unsubscribe(),this.updateSubscription=se(1).pipe(oi(e),ui(()=>{this.lastEmitedData.updating=!0,this.dataSubject.next(this.lastEmitedData)}),oi(120),Tt(()=>this.nodeService.getNodes())).subscribe(i=>{this.lastEmitedData={data:i,error:null,momentOfLastCorrectUpdate:Date.now(),updating:!1},this.dataSubject.next(this.lastEmitedData),this.getData(this.dataRefreshDelay)},i=>{i=Ze(i),this.lastEmitedData={data:this.lastEmitedData.data,error:i,momentOfLastCorrectUpdate:this.lastEmitedData.momentOfLastCorrectUpdate,updating:!1},this.dataSubject.next(this.lastEmitedData),this.getData(at.connectionRetryDelay)})}forceRefresh(){this.getData(0)}static{this.\u0275fac=function(i){return new(i||t)(ce(ri),ce(Yi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function dme(t,n){if(1&t){const e=re();h(0,"button",3),F("click",function(){const o=V(e).$implicit;return H(y().closePopup(o))}),L(1,"img",4),h(2,"div",5),p(3),u()()}if(2&t){const e=n.$implicit;c(),C("src","assets/img/lang/"+e.iconName,$i),c(2),S(e.name)}}let eV=(()=>{class t{static openDialog(e){const i=new cn;return i.autoFocus=!1,i.width=at.mediumModalWidth,e.open(t,i)}constructor(e,i){this.dialogRef=e,this.languageService=i,this.languages=[]}ngOnInit(){this.subscription=this.languageService.languages.subscribe(e=>{this.languages=e})}ngOnDestroy(){this.subscription.unsubscribe()}closePopup(e=null){e&&this.languageService.changeLanguage(e.code),this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(Xb))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-select-language"]],standalone:!1,decls:5,vars:4,consts:[[3,"headline","dialog"],[1,"options-container"],["mat-button","","color","accent",1,"grey-button-background"],["mat-button","","color","accent",1,"grey-button-background",3,"click"],[3,"src"],[1,"label"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),_(1,"translate"),h(2,"div",1),me(3,dme,4,2,"button",2,Le),u()()),2&i&&(C("headline",v(1,2,"language.title"))("dialog",o.dialogRef),c(3),ge(o.languages))},dependencies:[Ht,Sn,we],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}.options-container[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:118px;height:auto!important;margin:20px;font-size:.7rem;line-height:unset;padding:0!important;color:unset}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .mdc-button__label{width:100%}@media(max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:90px;font-size:.6rem;margin:6px}}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:64px;height:64px;margin:10px 0}@media(max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:48px;height:48px;margin:7px 0}}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{color:#202226!important;background-color:#ffffff40;padding:4px 10px}@media(max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{padding:4px 5px}}"]})}}return t})();function ume(t,n){1&t&&L(0,"img",1),2&t&&C("src","assets/img/lang/"+y().language.iconName,$i)}let hme=(()=>{class t{constructor(e,i){this.languageService=e,this.dialog=i}ngOnInit(){this.subscription=this.languageService.currentLanguage.subscribe(e=>{this.language=e})}ngOnDestroy(){this.subscription.unsubscribe()}openLanguageWindow(){eV.openDialog(this.dialog)}static{this.\u0275fac=function(i){return new(i||t)(O(Xb),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-lang-button"]],standalone:!1,decls:3,vars:4,consts:[["mat-button","",1,"lang-button","subtle-transparent-button",3,"click","matTooltip"],[1,"flag",3,"src"]],template:function(i,o){1&i&&(h(0,"button",0),_(1,"translate"),F("click",function(){return o.openLanguageWindow()}),x(2,ume,1,1,"img",1),u()),2&i&&(C("matTooltip",v(1,2,"language.title")),c(2),k(o.language?2:-1))},dependencies:[Ht,Et,we],styles:[".lang-button[_ngcontent-%COMP%]{height:40px;background-color:#f8f9f9;border-radius:100%;padding:0;line-height:1;padding:0!important}.lang-button[_ngcontent-%COMP%] .flag[_ngcontent-%COMP%]{width:20px;height:20px}"]})}}return t})();const fme=t=>({"element-disabled":t});function pme(t,n){if(1&t){const e=re();h(0,"div",8),F("click",function(){return V(e),H(y().configure())}),p(1),_(2,"translate"),u()}2&t&&(c(),S(v(2,1,"login.initial-config")))}let tV=(()=>{class t extends Lt{constructor(e,i,o,r,s,a){super(),this.authService=e,this.router=i,this.snackbarService=o,this.dialog=r,this.route=s,this.multipleNodeDataService=a,this.loading=!1,this.isForVpn=!1,this.vpnKey="",this.userExists=!0}ngOnInit(){return this.multipleNodeDataService.stopRequestingData(),this.routeSubscription=this.route.paramMap.subscribe(e=>{this.vpnKey=e.get("key"),this.isForVpn=-1!==window.location.href.indexOf("vpnlogin"),this.verificationSubscription=this.authService.checkLogin().subscribe(i=>{i!==Ea.NotLogged&&(Jr.currentInstance.processLoginDone(),setTimeout(()=>{this.router.navigate(this.isForVpn?["vpn",this.vpnKey,"status"]:["nodes"],{replaceUrl:!0})},5))})}),this.form=new ov({password:new Ia("",Se.required)}),this.authService.userExists().subscribe(e=>this.userExists=e,()=>this.userExists=!0),super.ngOnInit()}ngOnDestroy(){this.loginSubscription&&this.loginSubscription.unsubscribe(),this.verificationSubscription.unsubscribe(),this.routeSubscription.unsubscribe()}login(){!this.form.valid||this.loading||(this.loading=!0,this.loginSubscription=this.authService.login(this.form.get("password").value).subscribe(()=>this.onLoginSuccess(),e=>this.onLoginError(e)))}configure(){sme.openDialog(this.dialog)}onLoginSuccess(){Jr.currentInstance.processLoginDone(),setTimeout(()=>{this.router.navigate(this.isForVpn?["vpn",this.vpnKey,"status"]:["nodes"],{replaceUrl:!0})})}onLoginError(e){e=Ze(e),this.loading=!1,this.snackbarService.showError(e.originalError&&401===e.originalError.status?"login.incorrect-password":e.translatableErrorMsg)}static{this.\u0275fac=function(i){return new(i||t)(O(ep),O(yt),O(ot),O(Nt),O(Li),O(JB))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-login"]],standalone:!1,features:[_e],decls:12,vars:9,consts:[[1,"w-100","h-100","d-flex","justify-content-center"],[1,"row","main-container"],["src","/assets/img/logo-v.png",1,"logo"],[1,"mt-5",3,"formGroup"],[1,"login-input",3,"ngClass"],["type","password","formControlName","password","autocomplete","off",3,"keydown.enter","placeholder"],[3,"click","disabled"],["class","config-link",3,"click",4,"ngIf"],[1,"config-link",3,"click"]],template:function(i,o){1&i&&(h(0,"div",0),L(1,"app-lang-button"),h(2,"div",1),L(3,"img",2),h(4,"form",3)(5,"div",4)(6,"input",5),_(7,"translate"),F("keydown.enter",function(){return o.login()}),u(),h(8,"button",6),F("click",function(){return o.login()}),h(9,"mat-icon"),p(10,"chevron_right"),u()()()(),rt(11,pme,3,3,"div",7),u()()),2&i&&(c(4),C("formGroup",o.form),c(),C("ngClass",ie(7,fme,o.loading)),c(),C("placeholder",v(7,5,"login.password")),c(2),C("disabled",!o.form.valid||o.loading),c(3),C("ngIf",!o.userExists))},dependencies:[Ft,lf,kn,Qt,Jt,xn,sn,_n,Ae,hme,we],styles:['.cursor-pointer[_ngcontent-%COMP%], .config-link[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}app-lang-button[_ngcontent-%COMP%]{position:fixed;right:10px;top:10px;z-index:10}.main-container[_ngcontent-%COMP%]{z-index:1;height:100%;flex-direction:column;align-items:center;justify-content:center}.logo[_ngcontent-%COMP%]{width:170px}.login-input[_ngcontent-%COMP%]{height:35px;width:300px;overflow:hidden;border-radius:10px;box-shadow:0 3px 8px #0000001a,0 6px 20px #0000001a;display:flex}.login-input[_ngcontent-%COMP%] input[type=password][_ngcontent-%COMP%]{background:#fff;width:calc(100% - 35px);height:100%;font-size:.875rem;border:none;padding-left:10px;padding-right:10px}.login-input[_ngcontent-%COMP%] input[type=password][_ngcontent-%COMP%]:focus{outline:none}.login-input[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{background:#fff;color:#202226;width:35px;height:35px;line-height:35px;border:none;display:flex;cursor:pointer;align-items:center}.login-input[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{color:#777}.config-link[_ngcontent-%COMP%]{color:#f8f9f9;font-size:.7rem;margin-top:20px}']})}}return t})();const mme=["firstInput"];let DS=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.formBuilder=o,this.storageService=r,this.snackbarService=s}ngOnInit(){this.form=this.formBuilder.group({label:[this.data.label]})}ngAfterViewInit(){setTimeout(()=>this.firstInput.nativeElement.focus())}save(){const e=this.form.get("label").value.trim();e!==this.data.label?(this.storageService.saveLabel(this.data.id,e,this.data.identifiedElementType),e?this.snackbarService.showDone("edit-label.done"):this.snackbarService.showWarning("edit-label.label-removed-warning"),this.dialogRef.close(!0)):this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Si),O(ri),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-edit-label"]],viewQuery:function(i,o){if(1&i&&st(mme,5),2&i){let r;fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:11,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","label","maxlength","66","matInput",""],["color","primary",1,"float-right",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),_(7,"translate"),u(),L(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.save()}),p(11),_(12,"translate"),u()()),2&i&&(C("headline",v(1,5,"labeled-element.edit-label"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(4),S(v(7,7,"edit-label.label")),c(5),S(v(12,9,"common.save")))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,On,Mi,Sn,we],encapsulation:2})}}return t})();const gme=["cancelButton"],_me=["confirmButton"];function bme(t,n){if(1&t&&(h(0,"div"),p(1),_(2,"translate"),u()),2&t){const e=n.$implicit;c(),D(" - ",v(2,1,e)," ")}}function vme(t,n){if(1&t&&(h(0,"div",4),me(1,bme,3,3,"div",null,Le),u()),2&t){const e=y();c(),ge(e.state!==e.confirmationStates.Done?e.data.list:e.doneList)}}function yme(t,n){if(1&t&&(h(0,"div",3),p(1),_(2,"translate"),u()),2&t){const e=y();c(),D(" ",v(2,1,e.data.lowerText)," ")}}function Cme(t,n){if(1&t){const e=re();h(0,"app-button",8,1),F("action",function(){return V(e),H(y().closeModal())}),p(2),_(3,"translate"),u()}if(2&t){const e=y();c(2),D(" ",v(3,1,e.data.cancelButtonText)," ")}}var Cu=function(t){return t.Asking="Asking",t.Processing="Processing",t.Done="Done",t}(Cu||{});let wme=(()=>{class t{constructor(e,i){this.dialogRef=e,this.data=i,this.disableDismiss=!1,this.state=Cu.Asking,this.confirmationStates=Cu,this.operationAccepted=new ke,this.disableDismiss=!!i.disableDismiss,this.dialogRef.disableClose=this.disableDismiss}ngAfterViewInit(){this.data.cancelButtonText?setTimeout(()=>this.cancelButton.focus()):setTimeout(()=>this.confirmButton.focus())}ngOnDestroy(){this.operationAccepted.complete()}closeModal(){this.dialogRef.close()}sendOperationAcceptedEvent(){this.operationAccepted.emit()}showAsking(e){e&&(this.data=e),this.state=Cu.Asking,this.confirmButton.reset(),this.disableDismiss=!1,this.dialogRef.disableClose=this.disableDismiss,this.cancelButton&&this.cancelButton.showEnabled()}showProcessing(){this.state=Cu.Processing,this.disableDismiss=!0,this.confirmButton.showLoading(),this.cancelButton&&this.cancelButton.showDisabled()}showDone(e,i,o=null){this.doneTitle=e||this.data.headerText,this.doneText=i,this.doneList=o,this.confirmButton.reset(),setTimeout(()=>this.confirmButton.focus()),this.state=Cu.Done,this.dialogRef.disableClose=!1,this.disableDismiss=!1}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-confirmation"]],viewQuery:function(i,o){if(1&i&&st(gme,5)(_me,5),2&i){let r;fe(r=pe())&&(o.cancelButton=r.first),fe(r=pe())&&(o.confirmButton=r.first)}},outputs:{operationAccepted:"operationAccepted"},standalone:!1,decls:13,vars:14,consts:[["confirmButton",""],["cancelButton",""],[3,"headline","dialog","disableDismiss"],[1,"text-container"],[1,"list-container"],[1,"buttons"],["color","accent"],["color","primary",3,"action"],["color","accent",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),_(1,"translate"),h(2,"div",3),p(3),_(4,"translate"),u(),x(5,vme,3,0,"div",4),x(6,yme,3,3,"div",3),h(7,"div",5),x(8,Cme,4,3,"app-button",6),h(9,"app-button",7,0),F("action",function(){return o.state===o.confirmationStates.Asking?o.sendOperationAcceptedEvent():o.closeModal()}),p(11),_(12,"translate"),u()()()),2&i&&(C("headline",v(1,8,o.state!==o.confirmationStates.Done?o.data.headerText:o.doneTitle))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),c(3),D(" ",v(4,10,o.state!==o.confirmationStates.Done?o.data.text:o.doneText)," "),c(2),k(o.data.list&&o.state!==o.confirmationStates.Done||o.doneList&&o.state===o.confirmationStates.Done?5:-1),c(),k(o.data.lowerText&&o.state!==o.confirmationStates.Done?6:-1),c(2),k(o.data.cancelButtonText&&o.state!==o.confirmationStates.Done?8:-1),c(3),D(" ",v(12,12,o.state!==o.confirmationStates.Done?o.data.confirmButtonText:"confirmation.close")," "))},dependencies:[Mi,Sn,we],styles:[".text-container[_ngcontent-%COMP%]{word-break:break-word}.list-container[_ngcontent-%COMP%]{font-size:14px;margin:10px;color:#215f9e;word-break:break-word}.buttons[_ngcontent-%COMP%]{margin-top:15px;text-align:right}.buttons[_ngcontent-%COMP%] app-button[_ngcontent-%COMP%]{margin-left:5px}"]})}}return t})();class Ut{static createConfirmationDialog(n,e){const i={text:e,headerText:"confirmation.header-text",confirmButtonText:"confirmation.confirm-button",cancelButtonText:"confirmation.cancel-button",disableDismiss:!1},o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,n.open(wme,o)}static checkIfTagIsUpdatable(n){return!(null==n||n.toUpperCase()==="Windows".toUpperCase()||n.toUpperCase()==="Win".toUpperCase()||n.toUpperCase()==="Mac".toUpperCase()||n.toUpperCase()==="Macos".toUpperCase()||n.toUpperCase()==="Mac OS".toUpperCase()||n.toUpperCase()==="Darwin".toUpperCase())}static checkIfTagCanOpenterminal(n){return!(null==n||n.toUpperCase()==="Windows".toUpperCase()||n.toUpperCase()==="Win".toUpperCase())}static checkIfIpValidOrEmpty(n){if(!n)return!0;const e=n.split(".");if(4!==e.length)return!1;for(const i of e){const o=Number.parseInt(i,10);if(isNaN(o)||o+""!==i||o<0||o>255)return!1}return!0}}function xme(t,n){if(1&t&&(h(0,"mat-icon",4),p(1),u()),2&t){const e=y().$implicit;C("inline",!0),c(),S(e.icon)}}function kme(t,n){if(1&t){const e=re();h(0,"div",1)(1,"button",2),F("click",function(){const o=V(e).$index;return H(y().closePopup(o+1))}),h(2,"div",3),x(3,xme,2,2,"mat-icon",4),h(4,"span"),p(5),_(6,"translate"),u()()()()}if(2&t){const e=n.$implicit;c(3),k(e.icon?3:-1),c(2),S(v(6,2,e.label))}}let ho=(()=>{class t{static openDialog(e,i,o){const r=new cn;return r.data={options:i,title:o},r.autoFocus=!1,r.width=at.smallModalWidth,e.open(t,r)}constructor(e,i){this.data=e,this.dialogRef=i}closePopup(e){this.dialogRef.close(e)}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-select-option"]],standalone:!1,decls:4,vars:5,consts:[[3,"headline","dialog","includeVerticalMargins"],[1,"options-list-button-container"],["mat-button","",1,"grey-button-background",3,"click"],[1,"internal-container"],[1,"icon",3,"inline"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),_(1,"translate"),me(2,kme,7,4,"div",1,Le),u()),2&i&&(C("headline",v(1,3,o.data.title))("dialog",o.dialogRef)("includeVerticalMargins",!1),c(2),ge(o.data.options))},dependencies:[Ht,Ae,Sn,we],styles:[".icon[_ngcontent-%COMP%]{font-size:14px;width:14px;line-height:1}.grey-button-background[_ngcontent-%COMP%]{justify-content:left!important;min-height:45px}"]})}}return t})();var Mn=function(t){return t.TextInput="TextInput",t.Select="Select",t}(Mn||{});class Pt{constructor(n,e,i,o){this.properties=n,this.label=e,this.sortingMode=i,this.labelProperties=o}get id(){return this.properties.join("")}}var lt=function(t){return t.Text="Text",t.Number="Number",t.NumberReversed="NumberReversed",t.Boolean="Boolean",t}(lt||{});class wu{get sortingArrow(){return this.sortReverse?"keyboard_arrow_up":"keyboard_arrow_down"}get currentSortingColumn(){return this.sortBy}get sortingInReverseOrder(){return this.sortReverse}get dataSorted(){return this.dataUpdatedSubject.asObservable()}get currentlySortingByLabel(){return this.sortByLabel}constructor(n,e,i,o,r,s){this.dialog=n,this.translateService=e,this.storageService=i,this.sortReverse=!1,this.sortByLabel=!1,this.tieBreakerColumnIndex=null,this.columnStorageKeyPrefix="col_",this.orderStorageKeyPrefix="order_",this.labelStorageKeyPrefix="label_",this.dataUpdatedSubject=new be,this.sortableColumns=o,this.id=s,this.defaultColumnIndex=r,this.sortBy=o[r];const a=this.storageService.getDataForHv(this.columnStorageKeyPrefix+s);if(a){const l=o.find(d=>d.id===a);l&&(this.sortBy=l)}this.sortReverse="true"===this.storageService.getDataForHv(this.orderStorageKeyPrefix+s),this.sortByLabel="true"===this.storageService.getDataForHv(this.labelStorageKeyPrefix+s)}dispose(){this.dataUpdatedSubject.complete()}setTieBreakerColumnIndex(n){this.tieBreakerColumnIndex=n}setData(n){this.data=n,this.sortData()}changeSortingOrder(n){if(this.sortBy===n||n.labelProperties)if(n.labelProperties){const e=[{label:this.translateService.instant("tables.sort-by-value")},{label:this.translateService.instant("tables.sort-by-value")+" "+this.translateService.instant("tables.inverted-order")},{label:this.translateService.instant("tables.sort-by-label")},{label:this.translateService.instant("tables.sort-by-label")+" "+this.translateService.instant("tables.inverted-order")}];ho.openDialog(this.dialog,e,"tables.title").afterClosed().subscribe(i=>{i&&this.changeSortingParams(n,i>2,i%2==0)})}else this.sortReverse=!this.sortReverse,this.storageService.setDataForHv(this.orderStorageKeyPrefix+this.id,String(this.sortReverse)),this.sortData();else this.changeSortingParams(n,!1,!1)}changeSortingParams(n,e,i){this.sortBy=n,this.sortByLabel=e,this.sortReverse=i,this.storageService.setDataForHv(this.columnStorageKeyPrefix+this.id,n.id),this.storageService.setDataForHv(this.orderStorageKeyPrefix+this.id,String(this.sortReverse)),this.storageService.setDataForHv(this.labelStorageKeyPrefix+this.id,String(this.sortByLabel)),this.sortData()}openSortingOrderModal(){const n=[],e=[];this.sortableColumns.forEach(i=>{const o=this.translateService.instant(i.label);n.push({label:o}),e.push({sortBy:i,sortReverse:!1,sortByLabel:!1}),n.push({label:o+" "+this.translateService.instant("tables.inverted-order")}),e.push({sortBy:i,sortReverse:!0,sortByLabel:!1}),i.labelProperties&&(n.push({label:o+" "+this.translateService.instant("tables.label")}),e.push({sortBy:i,sortReverse:!1,sortByLabel:!0}),n.push({label:o+" "+this.translateService.instant("tables.label")+" "+this.translateService.instant("tables.inverted-order")}),e.push({sortBy:i,sortReverse:!0,sortByLabel:!0}))}),ho.openDialog(this.dialog,n,"tables.title").afterClosed().subscribe(i=>{i&&this.changeSortingParams(e[i-1].sortBy,e[i-1].sortByLabel,e[i-1].sortReverse)})}sortData(){this.data&&(this.data.sort((n,e)=>{let i=this.getSortResponse(this.sortBy,n,e,!0);return 0===i&&null!==this.tieBreakerColumnIndex&&this.sortableColumns[this.tieBreakerColumnIndex]!==this.sortBy&&(i=this.getSortResponse(this.sortableColumns[this.tieBreakerColumnIndex],n,e,!1)),0===i&&this.sortableColumns[this.defaultColumnIndex]!==this.sortBy&&(i=this.getSortResponse(this.sortableColumns[this.defaultColumnIndex],n,e,!1)),i}),this.dataUpdatedSubject.next())}getSortResponse(n,e,i,o){let s=e,a=i;(this.sortByLabel&&o&&n.labelProperties?n.labelProperties:n.properties).forEach(f=>{s=s[f],a=a[f]});const l=this.sortByLabel&&o?lt.Text:n.sortingMode;let d=0;return l===lt.Text?d=this.sortReverse?a.localeCompare(s):s.localeCompare(a):l===lt.NumberReversed?d=this.sortReverse?s-a:a-s:l===lt.Number?d=this.sortReverse?a-s:s-a:l===lt.Boolean&&(s&&!a?d=-1:!s&&a&&(d=1),d*=this.sortReverse?-1:1),d}}let Dme=(()=>{class t{_animationsDisabled=hi();state="unchecked";disabled=!1;appearance="full";constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:12,hostBindings:function(i,o){2&i&&ve("mat-pseudo-checkbox-indeterminate","indeterminate"===o.state)("mat-pseudo-checkbox-checked","checked"===o.state)("mat-pseudo-checkbox-disabled",o.disabled)("mat-pseudo-checkbox-minimal","minimal"===o.appearance)("mat-pseudo-checkbox-full","full"===o.appearance)("_mat-animation-noopable",o._animationsDisabled)},inputs:{state:"state",disabled:"disabled",appearance:"appearance"},decls:0,vars:0,template:function(i,o){},styles:['.mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-minimal-selected-checkmark-color, var(--mat-sys-primary))}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full{border-color:var(--mat-pseudo-checkbox-full-unselected-icon-color, var(--mat-sys-on-surface-variant));border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-pseudo-checkbox-full-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-pseudo-checkbox-full-selected-icon-color, var(--mat-sys-primary));border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-full-selected-checkmark-color, var(--mat-sys-on-primary))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-pseudo-checkbox-full-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-full-disabled-selected-checkmark-color, var(--mat-sys-surface))}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}\n'],encapsulation:2,changeDetection:0})}return t})();const Tme=["text"],Eme=[[["mat-icon"]],"*"],Pme=["mat-icon","*"];function Ime(t,n){if(1&t&&L(0,"mat-pseudo-checkbox",1),2&t){const e=y();C("disabled",e.disabled)("state",e.selected?"checked":"unchecked")}}function Ome(t,n){1&t&&L(0,"mat-pseudo-checkbox",3),2&t&&C("disabled",y().disabled)}function Ame(t,n){if(1&t&&(h(0,"span",4),p(1),u()),2&t){const e=y();c(),D("(",e.group.label,")")}}const nV=new Z("MAT_OPTION_PARENT_COMPONENT"),iV=new Z("MatOptgroup");class Rme{source;isUserInput;constructor(n,e=!1){this.source=n,this.isUserInput=e}}let is=(()=>{class t{_element=T(Ne);_changeDetectorRef=T(Dt);_parent=T(nV,{optional:!0});group=T(iV,{optional:!0});_signalDisableRipple=!1;_selected=!1;_active=!1;_mostRecentViewValue="";get multiple(){return this._parent&&this._parent.multiple}get selected(){return this._selected}value;id=T(si).getId("mat-option-");get disabled(){return this.group&&this.group.disabled||this._disabled()}set disabled(e){this._disabled.set(e)}_disabled=Ct(!1);get disableRipple(){return this._signalDisableRipple?this._parent.disableRipple():!!this._parent?.disableRipple}get hideSingleSelectionIndicator(){return!(!this._parent||!this._parent.hideSingleSelectionIndicator)}onSelectionChange=new ke;_text;_stateChanges=new be;constructor(){const e=T(qo);e.load(cu),e.load(xk),this._signalDisableRipple=!!this._parent&&Fl(this._parent.disableRipple)}get active(){return this._active}get viewValue(){return(this._text?.nativeElement.textContent||"").trim()}select(e=!0){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),e&&this._emitSelectionChangeEvent())}deselect(e=!0){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),e&&this._emitSelectionChangeEvent())}focus(e,i){const o=this._getHostElement();"function"==typeof o.focus&&o.focus(i)}setActiveStyles(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}setInactiveStyles(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}getLabel(){return this.viewValue}_handleKeydown(e){(13===e.keyCode||32===e.keyCode)&&!Mr(e)&&(this._selectViaInteraction(),e.preventDefault())}_selectViaInteraction(){this.disabled||(this._selected=!this.multiple||!this._selected,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._element.nativeElement}ngAfterViewChecked(){if(this._selected){const e=this.viewValue;e!==this._mostRecentViewValue&&(this._mostRecentViewValue&&this._stateChanges.next(),this._mostRecentViewValue=e)}}ngOnDestroy(){this._stateChanges.complete()}_emitSelectionChangeEvent(e=!1){this.onSelectionChange.emit(new Rme(this,e))}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-option"]],viewQuery:function(i,o){if(1&i&&st(Tme,7),2&i){let r;fe(r=pe())&&(o._text=r.first)}},hostAttrs:["role","option",1,"mat-mdc-option","mdc-list-item"],hostVars:11,hostBindings:function(i,o){1&i&&F("click",function(){return o._selectViaInteraction()})("keydown",function(s){return o._handleKeydown(s)}),2&i&&(gr("id",o.id),We("aria-selected",o.selected)("aria-disabled",o.disabled.toString()),ve("mdc-list-item--selected",o.selected)("mat-mdc-option-multiple",o.multiple)("mat-mdc-option-active",o.active)("mdc-list-item--disabled",o.disabled))},inputs:{value:"value",id:"id",disabled:[2,"disabled","disabled",Te]},outputs:{onSelectionChange:"onSelectionChange"},exportAs:["matOption"],ngContentSelectors:Pme,decls:8,vars:5,consts:[["text",""],["aria-hidden","true",1,"mat-mdc-option-pseudo-checkbox",3,"disabled","state"],[1,"mdc-list-item__primary-text"],["state","checked","aria-hidden","true","appearance","minimal",1,"mat-mdc-option-pseudo-checkbox",3,"disabled"],[1,"cdk-visually-hidden"],["aria-hidden","true","mat-ripple","",1,"mat-mdc-option-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled"]],template:function(i,o){1&i&&(xi(Eme),x(0,Ime,1,2,"mat-pseudo-checkbox",1),Rt(1),h(2,"span",2,0),Rt(4,1),u(),x(5,Ome,1,1,"mat-pseudo-checkbox",3),x(6,Ame,2,1,"span",4),L(7,"div",5)),2&i&&(k(o.multiple?0:-1),c(5),k(o.multiple||!o.selected||o.hideSingleSelectionIndicator?-1:5),c(),k(o.group&&o.group._inert?6:-1),c(),C("matRippleTrigger",o._getHostElement())("matRippleDisabled",o.disabled||o.disableRipple))},dependencies:[Dme,lu],styles:['.mat-mdc-option{-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-option-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-option-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-option-label-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-option-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-option-label-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent));outline:0}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-active,.mat-mdc-option-multiple,:focus,:hover){background-color:var(--mat-option-selected-state-layer-color, var(--mat-sys-secondary-container))}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-active,.mat-mdc-option-multiple,:focus,:hover) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option.mdc-list-item{align-items:center;background:rgba(0,0,0,0)}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}@media(forced-colors: active){.mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{right:auto;left:16px}}.mat-mdc-option-multiple{--mat-list-list-item-selected-container-color: var(--mat-list-list-item-container-color, transparent)}.mat-mdc-option-active .mat-focus-indicator::before{content:""}\n'],encapsulation:2,changeDetection:0})}return t})();class oV{_items;_activeItemIndex=Ct(-1);_activeItem=Ct(null);_wrap=!1;_typeaheadSubscription=gt.EMPTY;_itemChangesSubscription;_vertical=!0;_horizontal=null;_allowedModifierKeys=[];_homeAndEnd=!1;_pageUpAndDown={enabled:!1,delta:10};_effectRef;_typeahead;_skipPredicateFn=n=>n.disabled;constructor(n,e){this._items=n,n instanceof ud?this._itemChangesSubscription=n.changes.subscribe(i=>this._itemsChanged(i.toArray())):Fl(n)&&(this._effectRef=vm(()=>this._itemsChanged(n()),{injector:e}))}tabOut=new be;change=new be;skipPredicate(n){return this._skipPredicateFn=n,this}withWrap(n=!0){return this._wrap=n,this}withVerticalOrientation(n=!0){return this._vertical=n,this}withHorizontalOrientation(n){return this._horizontal=n,this}withAllowedModifierKeys(n){return this._allowedModifierKeys=n,this}withTypeAhead(n=200){this._typeaheadSubscription.unsubscribe();const e=this._getItemsArray();return this._typeahead=new UB(e,{debounceInterval:"number"==typeof n?n:void 0,skipPredicate:i=>this._skipPredicateFn(i)}),this._typeaheadSubscription=this._typeahead.selectedItem.subscribe(i=>{this.setActiveItem(i)}),this}cancelTypeahead(){return this._typeahead?.reset(),this}withHomeAndEnd(n=!0){return this._homeAndEnd=n,this}withPageUpDown(n=!0,e=10){return this._pageUpAndDown={enabled:n,delta:e},this}setActiveItem(n){const e=this._activeItem();this.updateActiveItem(n),this._activeItem()!==e&&this.change.next(this._activeItemIndex())}onKeydown(n){const e=n.keyCode,o=["altKey","ctrlKey","metaKey","shiftKey"].every(r=>!n[r]||this._allowedModifierKeys.indexOf(r)>-1);switch(e){case 9:return void this.tabOut.next();case 40:if(this._vertical&&o){this.setNextItemActive();break}return;case 38:if(this._vertical&&o){this.setPreviousItemActive();break}return;case 39:if(this._horizontal&&o){"rtl"===this._horizontal?this.setPreviousItemActive():this.setNextItemActive();break}return;case 37:if(this._horizontal&&o){"rtl"===this._horizontal?this.setNextItemActive():this.setPreviousItemActive();break}return;case 36:if(this._homeAndEnd&&o){this.setFirstItemActive();break}return;case 35:if(this._homeAndEnd&&o){this.setLastItemActive();break}return;case 33:if(this._pageUpAndDown.enabled&&o){const r=this._activeItemIndex()-this._pageUpAndDown.delta;this._setActiveItemByIndex(r>0?r:0,1);break}return;case 34:if(this._pageUpAndDown.enabled&&o){const r=this._activeItemIndex()+this._pageUpAndDown.delta,s=this._getItemsArray().length;this._setActiveItemByIndex(r-1&&i!==this._activeItemIndex()&&(this._activeItemIndex.set(i),this._typeahead?.setCurrentSelectedItemIndex(i))}}}class Lme extends oV{setActiveItem(n){this.activeItem&&this.activeItem.setInactiveStyles(),super.setActiveItem(n),this.activeItem&&this.activeItem.setActiveStyles()}}class Bme{_multiple;_emitChanges;compareWith;_selection=new Set;_deselectedToEmit=[];_selectedToEmit=[];_selected=null;get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}changed=new be;constructor(n=!1,e,i=!0,o){this._multiple=n,this._emitChanges=i,this.compareWith=o,e&&e.length&&(n?e.forEach(r=>this._markSelected(r)):this._markSelected(e[0]),this._selectedToEmit.length=0)}select(...n){this._verifyValueAssignment(n),n.forEach(i=>this._markSelected(i));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}deselect(...n){this._verifyValueAssignment(n),n.forEach(i=>this._unmarkSelected(i));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}setSelection(...n){this._verifyValueAssignment(n);const e=this.selected,i=new Set(n.map(r=>this._getConcreteValue(r)));n.forEach(r=>this._markSelected(r)),e.filter(r=>!i.has(this._getConcreteValue(r,i))).forEach(r=>this._unmarkSelected(r));const o=this._hasQueuedChanges();return this._emitChangeEvent(),o}toggle(n){return this.isSelected(n)?this.deselect(n):this.select(n)}clear(n=!0){this._unmarkAll();const e=this._hasQueuedChanges();return n&&this._emitChangeEvent(),e}isSelected(n){return this._selection.has(this._getConcreteValue(n))}isEmpty(){return 0===this._selection.size}hasValue(){return!this.isEmpty()}sort(n){this._multiple&&this.selected&&this._selected.sort(n)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(n){n=this._getConcreteValue(n),this.isSelected(n)||(this._multiple||this._unmarkAll(),this.isSelected(n)||this._selection.add(n),this._emitChanges&&this._selectedToEmit.push(n))}_unmarkSelected(n){n=this._getConcreteValue(n),this.isSelected(n)&&(this._selection.delete(n),this._emitChanges&&this._deselectedToEmit.push(n))}_unmarkAll(){this.isEmpty()||this._selection.forEach(n=>this._unmarkSelected(n))}_verifyValueAssignment(n){}_hasQueuedChanges(){return!(!this._deselectedToEmit.length&&!this._selectedToEmit.length)}_getConcreteValue(n,e){if(this.compareWith){e=e??this._selection;for(let i of e)if(this.compareWith(n,i))return i;return n}return n}}let Vme=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ai]})}return t})(),rV=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[Bk,Vme,is,ai]})}return t})();const Hme=["trigger"],Ume=["panel"],zme=[[["mat-select-trigger"]],"*"],jme=["mat-select-trigger","*"];function $me(t,n){if(1&t&&(h(0,"span",4),p(1),u()),2&t){const e=y();c(),S(e.placeholder)}}function Wme(t,n){1&t&&Rt(0)}function Gme(t,n){if(1&t&&(h(0,"span",11),p(1),u()),2&t){const e=y(2);c(),S(e.triggerValue)}}function qme(t,n){if(1&t&&(h(0,"span",5),x(1,Wme,1,0)(2,Gme,2,1,"span",11),u()),2&t){const e=y();c(),k(e.customTrigger?1:2)}}function Kme(t,n){if(1&t){const e=re();h(0,"div",12,1),F("keydown",function(o){return V(e),H(y()._handleKeydown(o))}),Rt(2,1),u()}if(2&t){const e=y();Ge(e.panelClass),ve("mat-select-panel-animations-enabled",!e._animationsDisabled)("mat-primary","primary"===(null==e._parentFormField?null:e._parentFormField.color))("mat-accent","accent"===(null==e._parentFormField?null:e._parentFormField.color))("mat-warn","warn"===(null==e._parentFormField?null:e._parentFormField.color))("mat-undefined",!(null!=e._parentFormField&&e._parentFormField.color)),We("id",e.id+"-panel")("aria-multiselectable",e.multiple)("aria-label",e.ariaLabel||null)("aria-labelledby",e._getPanelAriaLabelledby())}}const Yme=new Z("mat-select-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Ue);return()=>$f(t)}}),Xme=new Z("MAT_SELECT_CONFIG"),sV=new Z("MatSelectTrigger");class Zme{source;value;constructor(n,e){this.source=n,this.value=e}}let Na=(()=>{class t{_viewportRuler=T(tu);_changeDetectorRef=T(Dt);_elementRef=T(Ne);_dir=T(kr,{optional:!0});_idGenerator=T(si);_renderer=T(ei);_parentFormField=T(bS,{optional:!0});ngControl=T(ts,{self:!0,optional:!0});_liveAnnouncer=T(m4);_defaultOptions=T(Xme,{optional:!0});_animationsDisabled=hi();_popoverLocation;_initialized=new be;_cleanupDetach;options;optionGroups;customTrigger;_positions=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"}];_scrollOptionIntoView(e){const i=this.options.toArray()[e];if(i){const o=this.panel.nativeElement,r=function Fme(t,n,e){if(e.length){let i=n.toArray(),o=e.toArray(),r=0;for(let s=0;se+i?Math.max(0,t-i+n):e}(s.offsetTop,s.offsetHeight,o.scrollTop,o.offsetHeight)}}_positioningSettled(){this._scrollOptionIntoView(this._keyManager.activeItemIndex||0)}_getChangeEvent(e){return new Zme(this,e)}_scrollStrategyFactory=T(Yme);_panelOpen=!1;_compareWith=(e,i)=>e===i;_uid=this._idGenerator.getId("mat-select-");_triggerAriaLabelledBy=null;_previousControl;_destroy=new be;_errorStateTracker;stateChanges=new be;disableAutomaticLabeling=!0;userAriaDescribedBy;_selectionModel;_keyManager;_preferredOverlayOrigin;_overlayWidth;_onChange=()=>{};_onTouched=()=>{};_valueId=this._idGenerator.getId("mat-select-value-");_scrollStrategy;_overlayPanelClass=this._defaultOptions?.overlayPanelClass||"";get focused(){return this._focused||this._panelOpen}_focused=!1;controlType="mat-select";trigger;panel;_overlayDir;panelClass;disabled=!1;get disableRipple(){return this._disableRipple()}set disableRipple(e){this._disableRipple.set(e)}_disableRipple=Ct(!1);tabIndex=0;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._syncParentProperties()}_hideSingleSelectionIndicator=this._defaultOptions?.hideSingleSelectionIndicator??!1;get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.stateChanges.next()}_placeholder;get required(){return this._required??this.ngControl?.control?.hasValidator(Se.required)??!1}set required(e){this._required=e,this.stateChanges.next()}_required;get multiple(){return this._multiple}set multiple(e){this._multiple=e}_multiple=!1;disableOptionCentering=this._defaultOptions?.disableOptionCentering??!1;get compareWith(){return this._compareWith}set compareWith(e){this._compareWith=e,this._selectionModel&&this._initializeSelection()}get value(){return this._value}set value(e){this._assignValue(e)&&this._onChange(e)}_value;ariaLabel="";ariaLabelledby;get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}typeaheadDebounceInterval;sortComparator;get id(){return this._id}set id(e){this._id=e||this._uid,this.stateChanges.next()}_id;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}panelWidth=this._defaultOptions&&typeof this._defaultOptions.panelWidth<"u"?this._defaultOptions.panelWidth:"auto";canSelectNullableOptions=this._defaultOptions?.canSelectNullableOptions??!1;optionSelectionChanges=Sa(()=>{const e=this.options;return e?e.changes.pipe(zn(e),wt(()=>Dr(...e.map(i=>i.onSelectionChange)))):this._initialized.pipe(wt(()=>this.optionSelectionChanges))});openedChange=new ke;_openedStream=this.openedChange.pipe(Pn(e=>e),De(()=>{}));_closedStream=this.openedChange.pipe(Pn(e=>!e),De(()=>{}));selectionChange=new ke;valueChange=new ke;constructor(){const e=T(vS),i=T(pu,{optional:!0}),o=T(sn,{optional:!0}),r=T(new tf("tabindex"),{optional:!0}),s=T(wk,{optional:!0});this.ngControl&&(this.ngControl.valueAccessor=this),null!=this._defaultOptions?.typeaheadDebounceInterval&&(this.typeaheadDebounceInterval=this._defaultOptions.typeaheadDebounceInterval),this._errorStateTracker=new HB(e,this.ngControl,o,i,this.stateChanges),this._scrollStrategy=this._scrollStrategyFactory(),this.tabIndex=null==r?0:parseInt(r)||0,this._popoverLocation=!1===s?.usePopover?null:"inline",this.id=this.id}ngOnInit(){this._selectionModel=new Bme(this.multiple),this.stateChanges.next(),this._viewportRuler.change().pipe(ln(this._destroy)).subscribe(()=>{this.panelOpen&&(this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._changeDetectorRef.detectChanges())})}ngAfterContentInit(){this._initialized.next(),this._initialized.complete(),this._initKeyManager(),this._selectionModel.changed.pipe(ln(this._destroy)).subscribe(e=>{e.added.forEach(i=>i.select()),e.removed.forEach(i=>i.deselect())}),this.options.changes.pipe(zn(null),ln(this._destroy)).subscribe(()=>{this._resetOptions(),this._initializeSelection()})}ngDoCheck(){const e=this._getTriggerAriaLabelledby(),i=this.ngControl;if(e!==this._triggerAriaLabelledBy){const o=this._elementRef.nativeElement;this._triggerAriaLabelledBy=e,e?o.setAttribute("aria-labelledby",e):o.removeAttribute("aria-labelledby")}i&&(this._previousControl!==i.control&&(void 0!==this._previousControl&&null!==i.disabled&&i.disabled!==this.disabled&&(this.disabled=i.disabled),this._previousControl=i.control),this.updateErrorState())}ngOnChanges(e){(e.disabled||e.userAriaDescribedBy)&&this.stateChanges.next(),e.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this.typeaheadDebounceInterval),e.panelClass&&this.panelClass instanceof Set&&(this.panelClass=Array.from(this.panelClass))}ngOnDestroy(){this._cleanupDetach?.(),this._keyManager?.destroy(),this._destroy.next(),this._destroy.complete(),this.stateChanges.complete(),this._clearFromModal()}toggle(){this.panelOpen?this.close():this.open()}open(){this._canOpen()&&(this._parentFormField&&(this._preferredOverlayOrigin=this._parentFormField.getConnectedOverlayOrigin()),this._cleanupDetach?.(),this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._applyModalPanelOwnership(),this._panelOpen=!0,this._overlayDir.positionChange.pipe(wn(1)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this._positioningSettled()}),this._overlayDir.attachOverlay(),this._keyManager.withHorizontalOrientation(null),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck(),this.stateChanges.next(),Promise.resolve().then(()=>this.openedChange.emit(!0)))}_trackedModal=null;_applyModalPanelOwnership(){const e=this._elementRef.nativeElement.closest('body > .cdk-overlay-container [aria-modal="true"]');if(!e)return;const i=`${this.id}-panel`;this._trackedModal&&yS(this._trackedModal,"aria-owns",i),$B(e,"aria-owns",i),this._trackedModal=e}_clearFromModal(){this._trackedModal&&(yS(this._trackedModal,"aria-owns",`${this.id}-panel`),this._trackedModal=null)}close(){this._panelOpen&&(this._panelOpen=!1,this._exitAndDetach(),this._keyManager.withHorizontalOrientation(this._isRtl()?"rtl":"ltr"),this._changeDetectorRef.markForCheck(),this._onTouched(),this.stateChanges.next(),Promise.resolve().then(()=>this.openedChange.emit(!1)))}_exitAndDetach(){if(this._animationsDisabled||!this.panel)return void this._detachOverlay();this._cleanupDetach?.(),this._cleanupDetach=()=>{i(),clearTimeout(o),this._cleanupDetach=void 0};const e=this.panel.nativeElement,i=this._renderer.listen(e,"animationend",r=>{"_mat-select-exit"===r.animationName&&(this._cleanupDetach?.(),this._detachOverlay())}),o=setTimeout(()=>{this._cleanupDetach?.(),this._detachOverlay()},200);e.classList.add("mat-select-panel-exit")}_detachOverlay(){this._overlayDir.detachOverlay(),this._changeDetectorRef.markForCheck()}writeValue(e){this._assignValue(e)}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}get panelOpen(){return this._panelOpen}get selected(){return this.multiple?this._selectionModel?.selected||[]:this._selectionModel?.selected[0]}get triggerValue(){if(this.empty)return"";if(this._multiple){const e=this._selectionModel.selected.map(i=>i.viewValue);return this._isRtl()&&e.reverse(),e.join(", ")}return this._selectionModel.selected[0].viewValue}updateErrorState(){this._errorStateTracker.updateErrorState()}_isRtl(){return!!this._dir&&"rtl"===this._dir.value}_handleKeydown(e){this.disabled||(this.panelOpen?this._handleOpenKeydown(e):this._handleClosedKeydown(e))}_handleClosedKeydown(e){const i=e.keyCode,o=40===i||38===i||37===i||39===i,r=13===i||32===i,s=this._keyManager;if(!s.isTyping()&&r&&!Mr(e)||(this.multiple||e.altKey)&&o)e.preventDefault(),this.open();else if(!this.multiple){const a=this.selected;s.onKeydown(e);const l=this.selected;l&&a!==l&&this._liveAnnouncer.announce(l.viewValue,1e4)}}_handleOpenKeydown(e){const i=this._keyManager,o=e.keyCode,r=40===o||38===o,s=i.isTyping();if(r&&e.altKey)e.preventDefault(),this.close();else if(s||13!==o&&32!==o||!i.activeItem||Mr(e))if(!s&&this._multiple&&65===o&&e.ctrlKey){e.preventDefault();const a=this.options.some(l=>!l.disabled&&!l.selected);this.options.forEach(l=>{l.disabled||(a?l.select():l.deselect())})}else{const a=i.activeItemIndex;i.onKeydown(e),this._multiple&&r&&e.shiftKey&&i.activeItem&&i.activeItemIndex!==a&&i.activeItem._selectViaInteraction()}else e.preventDefault(),i.activeItem._selectViaInteraction()}_handleOverlayKeydown(e){27===e.keyCode&&!Mr(e)&&(e.preventDefault(),this.close())}_onFocus(){this.disabled||(this._focused=!0,this.stateChanges.next())}_onBlur(){this._focused=!1,this._keyManager?.cancelTypeahead(),!this.disabled&&!this.panelOpen&&(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}get empty(){return!this._selectionModel||this._selectionModel.isEmpty()}_initializeSelection(){Promise.resolve().then(()=>{this.ngControl&&(this._value=this.ngControl.value),this._setSelectionByValue(this._value),this.stateChanges.next()})}_setSelectionByValue(e){if(this.options.forEach(i=>i.setInactiveStyles()),this._selectionModel.clear(),this.multiple&&e)Array.isArray(e),e.forEach(i=>this._selectOptionByValue(i)),this._sortValues();else{const i=this._selectOptionByValue(e);i?this._keyManager.updateActiveItem(i):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}_selectOptionByValue(e){const i=this.options.find(o=>{if(this._selectionModel.isSelected(o))return!1;try{return(null!=o.value||this.canSelectNullableOptions)&&this._compareWith(o.value,e)}catch{return!1}});return i&&this._selectionModel.select(i),i}_assignValue(e){return!!(e!==this._value||this._multiple&&Array.isArray(e))&&(this.options&&this._setSelectionByValue(e),this._value=e,!0)}_skipPredicate=e=>!this.panelOpen&&e.disabled;_getOverlayWidth(e){return"auto"===this.panelWidth?(e instanceof Ib?e.elementRef:e||this._elementRef).nativeElement.getBoundingClientRect().width:null===this.panelWidth?"":this.panelWidth}_syncParentProperties(){if(this.options)for(const e of this.options)e._changeDetectorRef.markForCheck()}_initKeyManager(){this._keyManager=new Lme(this.options).withTypeAhead(this.typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?"rtl":"ltr").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(["shiftKey"]).skipPredicate(this._skipPredicate),this._keyManager.tabOut.subscribe(()=>{this.panelOpen&&(!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction(),this.focus(),this.close())}),this._keyManager.change.subscribe(()=>{this._panelOpen&&this.panel?this._scrollOptionIntoView(this._keyManager.activeItemIndex||0):!this._panelOpen&&!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction()})}_resetOptions(){const e=Dr(this.options.changes,this._destroy);this.optionSelectionChanges.pipe(ln(e)).subscribe(i=>{this._onSelect(i.source,i.isUserInput),i.isUserInput&&!this.multiple&&this._panelOpen&&(this.close(),this.focus())}),Dr(...this.options.map(i=>i._stateChanges)).pipe(ln(e)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this.stateChanges.next()})}_onSelect(e,i){const o=this._selectionModel.isSelected(e);this.canSelectNullableOptions||null!=e.value||this._multiple?(o!==e.selected&&(e.selected?this._selectionModel.select(e):this._selectionModel.deselect(e)),i&&this._keyManager.setActiveItem(e),this.multiple&&(this._sortValues(),i&&this.focus())):(e.deselect(),this._selectionModel.clear(),null!=this.value&&this._propagateChanges(e.value)),o!==this._selectionModel.isSelected(e)&&this._propagateChanges(),this.stateChanges.next()}_sortValues(){if(this.multiple){const e=this.options.toArray();this._selectionModel.sort((i,o)=>this.sortComparator?this.sortComparator(i,o,e):e.indexOf(i)-e.indexOf(o)),this.stateChanges.next()}}_propagateChanges(e){let i;i=this.multiple?this.selected.map(o=>o.value):this.selected?this.selected.value:e,this._value=i,this.valueChange.emit(i),this._onChange(i),this.selectionChange.emit(this._getChangeEvent(i)),this._changeDetectorRef.markForCheck()}_highlightCorrectOption(){if(this._keyManager)if(this.empty){let e=-1;for(let i=0;i0&&!!this._overlayDir}focus(e){this._elementRef.nativeElement.focus(e)}_getPanelAriaLabelledby(){if(this.ariaLabel)return null;const e=this._parentFormField?.getLabelId()||null;return this.ariaLabelledby?(e?e+" ":"")+this.ariaLabelledby:e}_getAriaActiveDescendant(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}_getTriggerAriaLabelledby(){if(this.ariaLabel)return null;let e=this._parentFormField?.getLabelId()||"";return this.ariaLabelledby&&(e+=" "+this.ariaLabelledby),e||(e=this._valueId),e}get describedByIds(){return this._elementRef.nativeElement.getAttribute("aria-describedby")?.split(" ")||[]}setDescribedByIds(e){const i=this._elementRef.nativeElement;e.length?i.setAttribute("aria-describedby",e.join(" ")):i.removeAttribute("aria-describedby")}onContainerClick(e){const i=Sr(e);i&&("MAT-OPTION"===i.tagName||i.classList.contains("cdk-overlay-backdrop")||i.closest(".mat-mdc-select-panel"))||(this.focus(),this.open())}get shouldLabelFloat(){return this.panelOpen||!this.empty||this.focused&&!!this.placeholder}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-select"]],contentQueries:function(i,o,r){if(1&i&&Ds(r,sV,5)(r,is,5)(r,iV,5),2&i){let s;fe(s=pe())&&(o.customTrigger=s.first),fe(s=pe())&&(o.options=s),fe(s=pe())&&(o.optionGroups=s)}},viewQuery:function(i,o){if(1&i&&st(Hme,5)(Ume,5)(r4,5),2&i){let r;fe(r=pe())&&(o.trigger=r.first),fe(r=pe())&&(o.panel=r.first),fe(r=pe())&&(o._overlayDir=r.first)}},hostAttrs:["role","combobox","aria-haspopup","listbox",1,"mat-mdc-select"],hostVars:21,hostBindings:function(i,o){1&i&&F("keydown",function(s){return o._handleKeydown(s)})("focus",function(){return o._onFocus()})("blur",function(){return o._onBlur()}),2&i&&(We("id",o.id)("tabindex",o.disabled?-1:o.tabIndex)("aria-controls",o.panelOpen?o.id+"-panel":null)("aria-expanded",o.panelOpen)("aria-label",o.ariaLabel||null)("aria-required",o.required.toString())("aria-disabled",o.disabled.toString())("aria-invalid",o.errorState)("aria-activedescendant",o._getAriaActiveDescendant()),ve("mat-mdc-select-disabled",o.disabled)("mat-mdc-select-invalid",o.errorState)("mat-mdc-select-required",o.required)("mat-mdc-select-empty",o.empty)("mat-mdc-select-multiple",o.multiple)("mat-select-open",o.panelOpen))},inputs:{userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],panelClass:"panelClass",disabled:[2,"disabled","disabled",Te],disableRipple:[2,"disableRipple","disableRipple",Te],tabIndex:[2,"tabIndex","tabIndex",e=>null==e?0:_r(e)],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",Te],placeholder:"placeholder",required:[2,"required","required",Te],multiple:[2,"multiple","multiple",Te],disableOptionCentering:[2,"disableOptionCentering","disableOptionCentering",Te],compareWith:"compareWith",value:"value",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],errorStateMatcher:"errorStateMatcher",typeaheadDebounceInterval:[2,"typeaheadDebounceInterval","typeaheadDebounceInterval",_r],sortComparator:"sortComparator",id:"id",panelWidth:"panelWidth",canSelectNullableOptions:[2,"canSelectNullableOptions","canSelectNullableOptions",Te]},outputs:{openedChange:"openedChange",_openedStream:"opened",_closedStream:"closed",selectionChange:"selectionChange",valueChange:"valueChange"},exportAs:["matSelect"],features:[dt([{provide:_S,useExisting:t},{provide:nV,useExisting:t}]),vi],ngContentSelectors:jme,decls:11,vars:10,consts:[["fallbackOverlayOrigin","cdkOverlayOrigin","trigger",""],["panel",""],["cdk-overlay-origin","",1,"mat-mdc-select-trigger",3,"click"],[1,"mat-mdc-select-value"],[1,"mat-mdc-select-placeholder","mat-mdc-select-min-line"],[1,"mat-mdc-select-value-text"],[1,"mat-mdc-select-arrow-wrapper"],[1,"mat-mdc-select-arrow"],["viewBox","0 0 24 24","width","24px","height","24px","focusable","false","aria-hidden","true"],["d","M7 10l5 5 5-5z"],["cdk-connected-overlay","","cdkConnectedOverlayHasBackdrop","","cdkConnectedOverlayBackdropClass","cdk-overlay-transparent-backdrop",3,"detach","backdropClick","overlayKeydown","cdkConnectedOverlayDisableClose","cdkConnectedOverlayPanelClass","cdkConnectedOverlayScrollStrategy","cdkConnectedOverlayOrigin","cdkConnectedOverlayPositions","cdkConnectedOverlayWidth","cdkConnectedOverlayFlexibleDimensions","cdkConnectedOverlayUsePopover"],[1,"mat-mdc-select-min-line"],["role","listbox","tabindex","-1",1,"mat-mdc-select-panel","mdc-menu-surface","mdc-menu-surface--open",3,"keydown"]],template:function(i,o){if(1&i&&(xi(zme),h(0,"div",2,0),F("click",function(){return o.open()}),h(3,"div",3),x(4,$me,2,1,"span",4)(5,qme,3,1,"span",5),u(),h(6,"div",6)(7,"div",7),ul(),h(8,"svg",8),L(9,"path",9),u()()()(),rt(10,Kme,3,16,"ng-template",10),F("detach",function(){return o.close()})("backdropClick",function(){return o.close()})("overlayKeydown",function(s){return o._handleOverlayKeydown(s)})),2&i){const r=Un(1);c(3),We("id",o._valueId),c(),k(o.empty?4:5),c(6),C("cdkConnectedOverlayDisableClose",!0)("cdkConnectedOverlayPanelClass",o._overlayPanelClass)("cdkConnectedOverlayScrollStrategy",o._scrollStrategy)("cdkConnectedOverlayOrigin",o._preferredOverlayOrigin||r)("cdkConnectedOverlayPositions",o._positions)("cdkConnectedOverlayWidth",o._overlayWidth)("cdkConnectedOverlayFlexibleDimensions",!0)("cdkConnectedOverlayUsePopover",o._popoverLocation)}},dependencies:[Ib,r4],styles:['@keyframes _mat-select-enter{from{opacity:0;transform:scaleY(0.8)}to{opacity:1;transform:none}}@keyframes _mat-select-exit{from{opacity:1}to{opacity:0}}.mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-sys-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-sys-body-large-tracking))}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-disabled .mat-mdc-select-placeholder{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color, var(--mat-sys-error))}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-select-open .mat-mdc-select-arrow{transform:rotate(180deg)}.mat-form-field-animations-enabled .mat-mdc-select-arrow{transition:transform 80ms linear}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}@media(forced-colors: active){.mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .mat-mdc-select-arrow svg{fill:GrayText}}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:relative;background-color:var(--mat-select-panel-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-select-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}.mat-select-panel-animations-enabled{animation:_mat-select-enter 120ms cubic-bezier(0, 0, 0.2, 1)}.mat-select-panel-animations-enabled.mat-select-panel-exit{animation:_mat-select-exit 100ms linear}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field:not(.mat-form-field-animations-enabled) .mat-mdc-select-placeholder,._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform, translateY(-8px))}\n'],encapsulation:2,changeDetection:0})}return t})(),Qme=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-select-trigger"]],features:[dt([{provide:sV,useExisting:t}])]})}return t})(),Jme=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ru,rV,ai,Hf,pv,rV]})}return t})();function ege(t,n){if(1&t&&L(0,"input",6),2&t){const e=y().$implicit;C("formControlName",e.keyNameInFiltersObject)("maxlength",e.maxlength)}}function tge(t,n){if(1&t&&(h(0,"div",10),L(1,"div",11),u()),2&t){const e=y().$implicit,i=y(2).$implicit;ao("background-image: url('"+i.printableLabelGeneralSettings.defaultImage+"'); width: "+i.printableLabelGeneralSettings.imageWidth+"px; height: "+i.printableLabelGeneralSettings.imageHeight+"px;"),c(),ao("background-image: url('"+e.image+"');")}}function nge(t,n){if(1&t&&(h(0,"mat-option",8),x(1,tge,2,4,"div",9),p(2),_(3,"translate"),u()),2&t){const e=n.$implicit,i=y(2).$implicit;C("value",e.value),c(),k(i.printableLabelGeneralSettings&&e.image?1:-1),c(),D(" ",v(3,3,e.label)," ")}}function ige(t,n){if(1&t&&(h(0,"mat-select",7),me(1,nge,4,5,"mat-option",8,Le),u()),2&t){const e=y().$implicit;C("formControlName",e.keyNameInFiltersObject),c(),ge(e.printableLabelsForValues)}}function oge(t,n){if(1&t&&(h(0,"mat-form-field")(1,"div",4)(2,"label",5),p(3),_(4,"translate"),u(),x(5,ege,1,2,"input",6),x(6,ige,3,1,"mat-select",7),u()()),2&t){const e=n.$implicit,i=y();c(3),S(v(4,3,e.filterName)),c(2),k(e.type===i.filterFieldTypes.TextInput?5:-1),c(),k(e.type===i.filterFieldTypes.Select?6:-1)}}let rge=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.data=e,this.dialogRef=i,this.formBuilder=o,this.filterFieldTypes=Mn}ngOnInit(){const e={};this.data.filterPropertiesList.forEach(i=>{e[i.keyNameInFiltersObject]=[this.data.currentFilters[i.keyNameInFiltersObject]]}),this.form=this.formBuilder.group(e)}apply(){const e={};this.data.filterPropertiesList.forEach(i=>{e[i.keyNameInFiltersObject]=this.form.get(i.keyNameInFiltersObject).value.trim()}),this.dialogRef.close(e)}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt),O(Si))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-filters-selection"]],standalone:!1,decls:9,vars:8,consts:[["button",""],[3,"headline","dialog"],[3,"formGroup"],["color","primary",1,"float-right",3,"action"],[1,"field-container"],["for","remoteKey",1,"field-label"],["matInput","",3,"formControlName","maxlength"],[3,"formControlName"],[3,"value"],[1,"image-container",3,"style"],[1,"image-container"],[1,"image"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2),me(3,oge,7,5,"mat-form-field",null,Le),u(),h(5,"app-button",3,0),F("action",function(){return o.apply()}),p(7),_(8,"translate"),u()()),2&i&&(C("headline",v(1,4,"filters.filter-action"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(),ge(o.data.filterPropertiesList),c(4),D(" ",v(8,6,"common.ok")," "))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,On,Na,is,Mi,Sn,we],styles:[".image-container[_ngcontent-%COMP%]{display:inline-block;background-size:contain;margin-right:5px}.image-container[_ngcontent-%COMP%] .image[_ngcontent-%COMP%]{background-size:contain;width:100%;height:100%}"]})}}return t})();class xu{get currentFiltersTexts(){return this.currentFiltersTextsInternal}get currentUrlQueryParams(){return this.currentUrlQueryParamsInternal}get dataFiltered(){return this.dataUpdatedSubject.asObservable()}constructor(n,e,i,o,r){this.dialog=n,this.route=e,this.router=i,this.currentFiltersTextsInternal=[],this.dataUpdatedSubject=new be,this.filterPropertiesList=o,this.currentFilters={},this.filterPropertiesList.forEach(s=>{s.keyNameInFiltersObject=r+"_"+s.keyNameInElementsArray,this.currentFilters[s.keyNameInFiltersObject]=""}),this.navigationsSubscription=this.route.queryParamMap.subscribe(s=>{Object.keys(this.currentFilters).forEach(a=>{s.has(a)&&(this.currentFilters[a]=s.get(a))}),this.currentUrlQueryParamsInternal={},s.keys.forEach(a=>{this.currentUrlQueryParamsInternal[a]=s.get(a)}),this.filter()})}dispose(){this.dataUpdatedSubject.complete(),this.navigationsSubscription.unsubscribe()}setData(n){this.data=n,this.filter()}removeFilters(){const n=Ut.createConfirmationDialog(this.dialog,"filters.remove-confirmation");n.componentInstance.operationAccepted.subscribe(()=>{n.componentInstance.closeModal(),this.router.navigate([],{queryParams:{}})})}changeFilters(){rge.openDialog(this.dialog,{filterPropertiesList:this.filterPropertiesList,currentFilters:this.currentFilters}).afterClosed().subscribe(e=>{e&&this.router.navigate([],{queryParams:e})})}filter(){if(this.data){let n,e=!1;Object.keys(this.currentFilters).forEach(i=>{this.currentFilters[i]&&(e=!0)}),e?(n=function Sme(t,n,e){if(t){const i=[];return Object.keys(n).forEach(r=>{if(n[r])for(const s of e)if(s.keyNameInFiltersObject===r){i.push(s);break}}),t.filter(r=>{let s=!0;return i.forEach(a=>{const l=String(r[a.keyNameInElementsArray]).toLowerCase().includes(n[a.keyNameInFiltersObject].toLowerCase()),d=a.secondaryKeyNameInElementsArray&&String(r[a.secondaryKeyNameInElementsArray]).toLowerCase().includes(n[a.keyNameInFiltersObject].toLowerCase());!l&&!d&&(s=!1)}),s})}return null}(this.data,this.currentFilters,this.filterPropertiesList),this.updateCurrentFilters()):(n=this.data,this.updateCurrentFilters()),this.dataUpdatedSubject.next(n)}}updateCurrentFilters(){this.currentFiltersTextsInternal=function Mme(t,n){const e=[];return n.forEach(i=>{if(t[i.keyNameInFiltersObject]){let o,r;i.printableLabelsForValues&&i.printableLabelsForValues.forEach(s=>{s.value===t[i.keyNameInFiltersObject]&&(r=s.label)}),r||(o=t[i.keyNameInFiltersObject]),e.push({filterName:i.filterName,translatableValue:r,value:o})}}),e}(this.currentFilters,this.filterPropertiesList)}}function sge(t,n){if(1&t){const e=re();h(0,"div",3)(1,"div",4)(2,"div",5),p(3),u(),h(4,"div",6),p(5),u()(),h(6,"div",7)(7,"app-button",8),F("click",function(){const o=V(e).$implicit;return H(y(2).openTerminal(o.key))}),p(8),_(9,"translate"),u()()()}if(2&t){const e=n.$implicit;c(3),S(e.label),c(2),S(e.version),c(3),D(" ",v(9,3,"update-all.update-button")," ")}}function age(t,n){if(1&t&&(h(0,"div",1),p(1),_(2,"translate"),u(),h(3,"div",2),me(4,sge,10,5,"div",3,Le),u()),2&t){const e=y();c(),D(" ",v(2,1,"update-all.updatable-list-text")," "),c(3),ge(e.updatableNodes)}}function lge(t,n){if(1&t&&(h(0,"div",6),p(1),u()),2&t){const e=y().$implicit;c(),S(e.tag)}}function cge(t,n){if(1&t&&(h(0,"div",3)(1,"div",4)(2,"div",5),p(3),u(),h(4,"div",6),p(5),u(),x(6,lge,2,1,"div",6),u()()),2&t){const e=n.$implicit;c(3),S(e.label),c(2),S(e.version),c(),k(e.tag?6:-1)}}function dge(t,n){if(1&t&&(h(0,"div",1),p(1),_(2,"translate"),u(),h(3,"div",2),me(4,cge,7,3,"div",3,Le),u()),2&t){const e=y();c(),D(" ",v(2,1,"update-all.non-updatable-list-text")," "),c(3),ge(e.nonUpdatableNodes)}}let uge=(()=>{class t{static openDialog(e,i,o){const r=new cn;return r.data=[i,o],r.autoFocus=!1,r.width=at.smallModalWidth,e.open(t,r)}constructor(e,i){this.dialogRef=e,this.updatableNodes=i[0],this.nonUpdatableNodes=i[1]}openTerminal(e){const i=window.location.protocol,o=window.location.host.replace("localhost:4200","127.0.0.1:8000");window.open(i+"//"+o+"/pty/"+e+"?commands=update","_blank","noopener noreferrer")}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-update-all"]],standalone:!1,decls:4,vars:6,consts:[[3,"headline","dialog"],[1,"text-container"],[1,"list-container"],[1,"list-element"],[1,"left-part"],[1,"name"],[1,"version"],[1,"right-part"],["color","primary",3,"click"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),_(1,"translate"),x(2,age,6,3),x(3,dge,6,3),u()),2&i&&(C("headline",v(1,4,"update-all.title"))("dialog",o.dialogRef),c(2),k(o.updatableNodes&&o.updatableNodes.length>0?2:-1),c(),k(o.nonUpdatableNodes&&o.nonUpdatableNodes.length>0?3:-1))},dependencies:[Mi,Sn,we],styles:[".text-container[_ngcontent-%COMP%]{word-break:break-word}.list-container[_ngcontent-%COMP%]{font-size:14px;margin:10px;color:#215f9e;word-break:break-word;line-height:1.2}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%]{display:flex;margin-bottom:10px}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%]{flex-grow:1;flex-shrink:1;align-self:center;margin-right:10px;min-width:0}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:575px){.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-size:.7rem}}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%] .version[_ngcontent-%COMP%]{font-size:.7rem;color:#777;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .right-part[_ngcontent-%COMP%]{flex-basis:0;flex-shrink:0}.list-container[_ngcontent-%COMP%] .details[_ngcontent-%COMP%]{color:#777}"]})}}return t})();const hge=["mat-internal-form-field",""],fge=["*"];let aV=(()=>{class t{labelPosition="after";static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["div","mat-internal-form-field",""]],hostAttrs:[1,"mdc-form-field","mat-internal-form-field"],hostVars:2,hostBindings:function(i,o){2&i&&ve("mdc-form-field--align-end","before"===o.labelPosition)},inputs:{labelPosition:"labelPosition"},attrs:hge,ngContentSelectors:fge,decls:1,vars:0,template:function(i,o){1&i&&(xi(),Rt(0))},styles:[".mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-flex;align-items:center;vertical-align:middle}.mat-internal-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mat-internal-form-field>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end .mdc-form-field--align-end label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0}\n"],encapsulation:2,changeDetection:0})}return t})();const pge=["input"],mge=["label"],gge=["*"],TS={color:"accent",clickAction:"check-indeterminate",disabledInteractive:!1},_ge=new Z("mat-checkbox-default-options",{providedIn:"root",factory:()=>TS});var Xi=function(t){return t[t.Init=0]="Init",t[t.Checked=1]="Checked",t[t.Unchecked=2]="Unchecked",t[t.Indeterminate=3]="Indeterminate",t}(Xi||{});class bge{source;checked}let Fo=(()=>{class t{_elementRef=T(Ne);_changeDetectorRef=T(Dt);_ngZone=T(Ce);_animationsDisabled=hi();_options=T(_ge,{optional:!0});focus(){this._inputElement.nativeElement.focus()}_createChangeEvent(e){const i=new bge;return i.source=this,i.checked=e,i}_getAnimationTargetElement(){return this._inputElement?.nativeElement}_animationClasses={uncheckedToChecked:"mdc-checkbox--anim-unchecked-checked",uncheckedToIndeterminate:"mdc-checkbox--anim-unchecked-indeterminate",checkedToUnchecked:"mdc-checkbox--anim-checked-unchecked",checkedToIndeterminate:"mdc-checkbox--anim-checked-indeterminate",indeterminateToChecked:"mdc-checkbox--anim-indeterminate-checked",indeterminateToUnchecked:"mdc-checkbox--anim-indeterminate-unchecked"};ariaLabel="";ariaLabelledby=null;ariaDescribedby;ariaExpanded;ariaControls;ariaOwns;_uniqueId;id;get inputId(){return`${this.id||this._uniqueId}-input`}required=!1;labelPosition="after";name=null;change=new ke;indeterminateChange=new ke;value;disableRipple=!1;_inputElement;_labelElement;tabIndex;color;disabledInteractive;_onTouched=()=>{};_currentAnimationClass="";_currentCheckState=Xi.Init;_controlValueAccessorChangeFn=()=>{};_validatorChangeFn=()=>{};constructor(){T(qo).load(cu);const e=T(new tf("tabindex"),{optional:!0});this._options=this._options||TS,this.color=this._options.color||TS.color,this.tabIndex=null==e?0:parseInt(e)||0,this.id=this._uniqueId=T(si).getId("mat-mdc-checkbox-"),this.disabledInteractive=this._options?.disabledInteractive??!1}ngOnChanges(e){e.required&&this._validatorChangeFn()}ngAfterViewInit(){this._syncIndeterminate(this.indeterminate)}get checked(){return this._checked}set checked(e){e!=this.checked&&(this._checked=e,this._changeDetectorRef.markForCheck())}_checked=!1;get disabled(){return this._disabled}set disabled(e){e!==this.disabled&&(this._disabled=e,this._changeDetectorRef.markForCheck())}_disabled=!1;get indeterminate(){return this._indeterminate()}set indeterminate(e){const i=e!=this._indeterminate();this._indeterminate.set(e),i&&(this._transitionCheckState(e?Xi.Indeterminate:this.checked?Xi.Checked:Xi.Unchecked),this.indeterminateChange.emit(e)),this._syncIndeterminate(e)}_indeterminate=Ct(!1);_isRippleDisabled(){return this.disableRipple||this.disabled}_onLabelTextChange(){this._changeDetectorRef.detectChanges()}writeValue(e){this.checked=!!e}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}validate(e){return this.required&&!0!==e.value?{required:!0}:null}registerOnValidatorChange(e){this._validatorChangeFn=e}_transitionCheckState(e){let i=this._currentCheckState,o=this._getAnimationTargetElement();if(i!==e&&o&&(this._currentAnimationClass&&o.classList.remove(this._currentAnimationClass),this._currentAnimationClass=this._getAnimationClassForCheckStateTransition(i,e),this._currentCheckState=e,this._currentAnimationClass.length>0)){o.classList.add(this._currentAnimationClass);const r=this._currentAnimationClass;this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{o.classList.remove(r)},1e3)})}}_emitChangeEvent(){this._controlValueAccessorChangeFn(this.checked),this.change.emit(this._createChangeEvent(this.checked)),this._inputElement&&(this._inputElement.nativeElement.checked=this.checked)}toggle(){this.checked=!this.checked,this._controlValueAccessorChangeFn(this.checked)}_handleInputClick(){const e=this._options?.clickAction;this.disabled||"noop"===e?(this.disabled&&this.disabledInteractive||!this.disabled&&"noop"===e)&&(this._inputElement.nativeElement.checked=this.checked,this._inputElement.nativeElement.indeterminate=this.indeterminate):(this.indeterminate&&"check"!==e&&Promise.resolve().then(()=>{this._indeterminate.set(!1),this.indeterminateChange.emit(!1)}),this._checked=!this._checked,this._transitionCheckState(this._checked?Xi.Checked:Xi.Unchecked),this._emitChangeEvent())}_onInteractionEvent(e){e.stopPropagation()}_onBlur(){Promise.resolve().then(()=>{this._onTouched(),this._changeDetectorRef.markForCheck()})}_getAnimationClassForCheckStateTransition(e,i){if(this._animationsDisabled)return"";switch(e){case Xi.Init:if(i===Xi.Checked)return this._animationClasses.uncheckedToChecked;if(i==Xi.Indeterminate)return this._checked?this._animationClasses.checkedToIndeterminate:this._animationClasses.uncheckedToIndeterminate;break;case Xi.Unchecked:return i===Xi.Checked?this._animationClasses.uncheckedToChecked:this._animationClasses.uncheckedToIndeterminate;case Xi.Checked:return i===Xi.Unchecked?this._animationClasses.checkedToUnchecked:this._animationClasses.checkedToIndeterminate;case Xi.Indeterminate:return i===Xi.Checked?this._animationClasses.indeterminateToChecked:this._animationClasses.indeterminateToUnchecked}return""}_syncIndeterminate(e){const i=this._inputElement;i&&(i.nativeElement.indeterminate=e)}_onInputClick(){this._handleInputClick()}_onTouchTargetClick(){this._handleInputClick(),this.disabled||this._inputElement.nativeElement.focus()}_preventBubblingFromLabel(e){e.target&&this._labelElement.nativeElement.contains(e.target)&&e.stopPropagation()}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-checkbox"]],viewQuery:function(i,o){if(1&i&&st(pge,5)(mge,5),2&i){let r;fe(r=pe())&&(o._inputElement=r.first),fe(r=pe())&&(o._labelElement=r.first)}},hostAttrs:[1,"mat-mdc-checkbox"],hostVars:16,hostBindings:function(i,o){2&i&&(gr("id",o.id),We("tabindex",null)("aria-label",null)("aria-labelledby",null),Ge(o.color?"mat-"+o.color:"mat-accent"),ve("_mat-animation-noopable",o._animationsDisabled)("mdc-checkbox--disabled",o.disabled)("mat-mdc-checkbox-disabled",o.disabled)("mat-mdc-checkbox-checked",o.checked)("mat-mdc-checkbox-disabled-interactive",o.disabledInteractive))},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],ariaExpanded:[2,"aria-expanded","ariaExpanded",Te],ariaControls:[0,"aria-controls","ariaControls"],ariaOwns:[0,"aria-owns","ariaOwns"],id:"id",required:[2,"required","required",Te],labelPosition:"labelPosition",name:"name",value:"value",disableRipple:[2,"disableRipple","disableRipple",Te],tabIndex:[2,"tabIndex","tabIndex",e=>null==e?void 0:_r(e)],color:"color",disabledInteractive:[2,"disabledInteractive","disabledInteractive",Te],checked:[2,"checked","checked",Te],disabled:[2,"disabled","disabled",Te],indeterminate:[2,"indeterminate","indeterminate",Te]},outputs:{change:"change",indeterminateChange:"indeterminateChange"},exportAs:["matCheckbox"],features:[dt([{provide:Qo,useExisting:jt(()=>t),multi:!0},{provide:ki,useExisting:t,multi:!0}]),vi],ngContentSelectors:gge,decls:15,vars:23,consts:[["checkbox",""],["input",""],["label",""],["mat-internal-form-field","",3,"click","labelPosition"],[1,"mdc-checkbox"],["aria-hidden","true",1,"mat-mdc-checkbox-touch-target",3,"click"],["type","checkbox",1,"mdc-checkbox__native-control",3,"blur","click","change","checked","indeterminate","disabled","id","required","tabIndex"],["aria-hidden","true",1,"mdc-checkbox__ripple"],["aria-hidden","true",1,"mdc-checkbox__background"],["focusable","false","viewBox","0 0 24 24",1,"mdc-checkbox__checkmark"],["fill","none","d","M1.73,12.91 8.1,19.28 22.79,4.59",1,"mdc-checkbox__checkmark-path"],[1,"mdc-checkbox__mixedmark"],["mat-ripple","","aria-hidden","true",1,"mat-mdc-checkbox-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-label",3,"for"]],template:function(i,o){if(1&i&&(xi(),h(0,"div",3),F("click",function(s){return o._preventBubblingFromLabel(s)}),h(1,"div",4,0)(3,"div",5),F("click",function(){return o._onTouchTargetClick()}),u(),h(4,"input",6,1),F("blur",function(){return o._onBlur()})("click",function(){return o._onInputClick()})("change",function(s){return o._onInteractionEvent(s)}),u(),L(6,"div",7),h(7,"div",8),ul(),h(8,"svg",9),L(9,"path",10),u(),Qy(),L(10,"div",11),u(),L(11,"div",12),u(),h(12,"label",13,2),Rt(14),u()()),2&i){const r=Un(2);C("labelPosition",o.labelPosition),c(4),ve("mdc-checkbox--selected",o.checked),C("checked",o.checked)("indeterminate",o.indeterminate)("disabled",o.disabled&&!o.disabledInteractive)("id",o.inputId)("required",o.required)("tabIndex",o.disabled&&!o.disabledInteractive?-1:o.tabIndex),We("aria-label",o.ariaLabel||null)("aria-labelledby",o.ariaLabelledby)("aria-describedby",o.ariaDescribedby)("aria-checked",o.indeterminate?"mixed":null)("aria-controls",o.ariaControls)("aria-disabled",!(!o.disabled||!o.disabledInteractive)||null)("aria-expanded",o.ariaExpanded)("aria-owns",o.ariaOwns)("name",o.name)("value",o.value),c(7),C("matRippleTrigger",r)("matRippleDisabled",o.disableRipple||o.disabled)("matRippleCentered",!0),c(),C("for",o.inputId)}},dependencies:[lu,aV],styles:['.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom;padding:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2);margin:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox:hover>.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity));background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:hover>.mat-mdc-checkbox-ripple>.mat-ripple-element{background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity));background-color:var(--mat-checkbox-unselected-focus-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-unselected-focus-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:active>.mdc-checkbox__native-control+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));background-color:var(--mat-checkbox-unselected-pressed-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:active>.mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-unselected-pressed-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity));background-color:var(--mat-checkbox-selected-hover-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-hover-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity));background-color:var(--mat-checkbox-selected-focus-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-focus-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:active>.mdc-checkbox__native-control:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));background-color:var(--mat-checkbox-selected-pressed-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:active>.mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-pressed-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control+.mdc-checkbox__ripple{background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1;width:var(--mat-checkbox-state-layer-size, 40px);height:var(--mat-checkbox-state-layer-size, 40px);top:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2);right:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2);left:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms cubic-bezier(0.4, 0, 0.6, 1);-webkit-print-color-adjust:exact;color-adjust:exact;border-color:var(--mat-checkbox-unselected-icon-color, var(--mat-sys-on-surface-variant));top:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2);left:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2)}.mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-icon-color, var(--mat-sys-primary))}.mdc-checkbox--disabled .mdc-checkbox__background{border-color:var(--mat-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox__native-control:disabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:disabled:indeterminate~.mdc-checkbox__background{background-color:var(--mat-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:rgba(0,0,0,0)}@media(forced-colors: active){.mdc-checkbox__native-control:disabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:disabled:indeterminate~.mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox:hover>.mdc-checkbox__native-control:not(:checked)~.mdc-checkbox__background,.mdc-checkbox:hover>.mdc-checkbox__native-control:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mat-checkbox-unselected-hover-icon-color, var(--mat-sys-on-surface));background-color:rgba(0,0,0,0)}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox:hover>.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-hover-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-hover-icon-color, var(--mat-sys-primary))}.mdc-checkbox__native-control:focus:focus:not(:checked)~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mat-checkbox-unselected-focus-icon-color, var(--mat-sys-on-surface))}.mdc-checkbox__native-control:focus:focus:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-focus-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-focus-icon-color, var(--mat-sys-primary))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox:hover>.mdc-checkbox__native-control~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__background{border-color:var(--mat-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox:hover>.mdc-checkbox__native-control~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{background-color:var(--mat-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:rgba(0,0,0,0)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms cubic-bezier(0.4, 0, 0.6, 1);color:var(--mat-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}@media(forced-colors: active){.mdc-checkbox__checkmark{color:CanvasText}}.mdc-checkbox--disabled .mdc-checkbox__checkmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:var(--mat-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__checkmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:GrayText}}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);border-color:var(--mat-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}@media(forced-colors: active){.mdc-checkbox__mixedmark{margin:0 1px}}.mdc-checkbox--disabled .mdc-checkbox__mixedmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__mixedmark{border-color:var(--mat-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__mixedmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__mixedmark{border-color:GrayText}}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__checkmark{transition:opacity 180ms cubic-bezier(0, 0, 0.2, 1),transform 180ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mat-mdc-checkbox{display:inline-block;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mat-mdc-checkbox-touch-target,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__native-control,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__ripple,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mat-mdc-checkbox-ripple::before,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__mixedmark{transition:none !important;animation:none !important}.mat-mdc-checkbox label{cursor:pointer}.mat-mdc-checkbox .mat-internal-form-field{color:var(--mat-checkbox-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-checkbox-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-checkbox-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-checkbox-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-checkbox-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-checkbox-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive{pointer-events:auto}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive input{cursor:default}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{cursor:default;color:var(--mat-checkbox-disabled-label-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:GrayText}}.mat-mdc-checkbox label:empty{display:none}.mat-mdc-checkbox .mdc-checkbox__ripple{opacity:0}.mat-mdc-checkbox .mat-mdc-checkbox-ripple,.mdc-checkbox__ripple{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-checkbox .mat-mdc-checkbox-ripple:not(:empty),.mdc-checkbox__ripple:not(:empty){transform:translateZ(0)}.mat-mdc-checkbox-ripple .mat-ripple-element{opacity:.1}.mat-mdc-checkbox-touch-target{position:absolute;top:50%;left:50%;height:var(--mat-checkbox-touch-target-size, 48px);width:var(--mat-checkbox-touch-target-size, 48px);transform:translate(-50%, -50%);display:var(--mat-checkbox-touch-target-display, block)}.mat-mdc-checkbox .mat-mdc-checkbox-ripple::before{border-radius:50%}.mdc-checkbox__native-control:focus-visible~.mat-focus-indicator::before{content:""}\n'],encapsulation:2,changeDetection:0})}return t})(),vge=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[Fo,ai]})}return t})();const yge=["button"],Cge=t=>({"element-disabled":t}),wge=t=>({"element-margin":t});function xge(t,n){1&t&&(h(0,"span",17),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"bulk-rewards.checking")))}function kge(t,n){if(1&t&&(h(0,"span",18)(1,"span"),p(2),_(3,"translate"),u(),h(4,"span"),p(5),_(6,"translate"),u()()),2&t){const e=y(2).$implicit;c(2),D(" ",v(3,2,"bulk-rewards.error-checking")),c(3),D(" ",v(6,4,e.operationError))}}function Sge(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y(2).$implicit;c(),D(" ",e.currentAddress)}}function Mge(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"bulk-rewards.not-registered")))}function Dge(t,n){if(1&t&&(zr(0,12),h(1,"mat-checkbox",13)(2,"div")(3,"div",14),p(4),u(),h(5,"div",15)(6,"span",16),p(7),_(8,"translate"),u(),x(9,xge,3,3,"span",17),x(10,kge,7,6,"span",18),x(11,Sge,2,1,"span"),x(12,Mge,3,3,"span"),u()()(),pr()),2&t){const e=y(),i=e.$implicit;C("formGroupName",e.$index),c(4),D(" ",i.label," "),c(3),S(v(8,7,"bulk-rewards.current-address")),c(2),k(null!==i.currentAddress||i.operationError?-1:9),c(),k(i.operationError?10:-1),c(),k(i.currentAddress&&!i.operationError?11:-1),c(),k(""!==i.currentAddress||i.operationError?-1:12)}}function Tge(t,n){1&t&&(h(0,"span",17),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"bulk-rewards.processing")))}function Ege(t,n){if(1&t&&(h(0,"span",18)(1,"span"),p(2),_(3,"translate"),u(),h(4,"span"),p(5),_(6,"translate"),u()()),2&t){const e=y(2).$implicit;c(2),D(" ",v(3,2,"bulk-rewards.error-processing")),c(3),D(" ",v(6,4,e.operationError))}}function Pge(t,n){1&t&&(h(0,"span",22),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"bulk-rewards.done")))}function Ige(t,n){if(1&t&&(h(0,"div",19),p(1,"-"),u(),h(2,"div",20),p(3),h(4,"div",21),x(5,Tge,3,3,"span",17),x(6,Ege,7,6,"span",18),x(7,Pge,3,3,"span",22),u()()),2&t){const e=y().$implicit;c(3),D(" ",e.label," "),c(2),k(e.processing&&!e.operationError?5:-1),c(),k(e.operationError?6:-1),c(),k(e.processing||e.operationError?-1:7)}}function Oge(t,n){if(1&t&&(h(0,"div",9),x(1,Dge,13,9,"ng-container",12),x(2,Ige,8,4),u()),2&t){const e=y();C("ngClass",ie(3,wge,e.processingStarted)),c(),k(e.processingStarted?-1:1),c(),k(e.processingStarted?2:-1)}}function Age(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"bulk-rewards.perform-changes")," ")}function Rge(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"common.close")," ")}let Fge=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.nodeService=o,this.formBuilder=r,this.dialog=s,this.processingStarted=!1,this.processingFinished=!1,this.currentlyProcessed=0,this.form=r.group({address:["",Se.compose([Se.minLength(20),Se.maxLength(112)])],nodes:r.array([])}),i.nodes.forEach(a=>{const l=this.formBuilder.group({selected:[!0]});this.form.get("nodes").push(l)}),this.startChecking()}formValid(){if(!this.processingStarted){if(!this.form.valid)return!1;let e=0;return this.form.get("nodes").controls.forEach((i,o)=>{i.get("selected")?.value&&(e+=1)}),e>0}return!0}get disableDismiss(){return this.processingStarted&&!this.processingFinished}startChecking(){this.nodesToEdit=[],this.data.nodes.forEach(e=>{this.nodesToEdit.push({key:e.key,label:e.label,currentAddress:null,operationError:"",processing:!1})}),this.operationSubscriptions=[],this.nodesToEdit.forEach((e,i)=>{this.operationSubscriptions.push(this.nodeService.getRewardsAddress(e.key).subscribe(o=>{this.nodesToEdit[i].currentAddress=o},o=>{this.nodesToEdit[i].operationError=o.translatableErrorMsg?o.translatableErrorMsg:o.originalServerErrorMsg}))})}checkBeforeProcessing(){if(this.form.valid)if(this.form.get("address").value)this.startProcessing();else{const i=Ut.createConfirmationDialog(this.dialog,"bulk-rewards.empty-warning");i.componentInstance.operationAccepted.subscribe(()=>{i.componentInstance.closeModal(),this.startProcessing()})}}startProcessing(){this.processingStarted=!0,this.button.showLoading(),this.closeoperationSubscriptions();const e=[];this.form.get("nodes").controls.forEach((o,r)=>{o.get("selected")?.value&&(this.nodesToEdit[r].operationError="",this.nodesToEdit[r].processing=!0,e.push(this.nodesToEdit[r]))}),this.nodesToEdit=e;const i=this.form.get("address").value;this.form.get("address").disable(),this.currentlyProcessed=0,this.operationSubscriptions=[],this.nodesToEdit.forEach((o,r)=>{let s=this.nodeService.setRewardsAddress(o.key,i);i||(s=this.nodeService.deleteRewardsAddress(o.key)),this.operationSubscriptions.push(se(0).pipe(oi(100),Tt(()=>s)).subscribe(a=>{this.nodesToEdit[r].processing=!1,this.currentlyProcessed+=1,this.currentlyProcessed===this.nodesToEdit.length&&(this.processingFinished=!0,this.button.reset())},a=>{this.nodesToEdit[r].processing=!1,this.nodesToEdit[r].operationError=a.translatableErrorMsg?a.translatableErrorMsg:a.originalServerErrorMsg,this.currentlyProcessed+=1,this.currentlyProcessed===this.nodesToEdit.length&&(this.processingFinished=!0,this.button.reset())}))})}ngOnDestroy(){this.closeoperationSubscriptions()}closeoperationSubscriptions(){this.operationSubscriptions&&this.operationSubscriptions.forEach(e=>e.unsubscribe())}closeModal(){this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Yi),O(Si),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-bulk-reward-address-changer"]],viewQuery:function(i,o){if(1&i&&st(yge,5),2&i){let r;fe(r=pe())&&(o.button=r.first)}},standalone:!1,decls:31,vars:27,consts:[["button",""],[3,"headline","dialog","disableDismiss"],[3,"formGroup"],[1,"text-container"],["href","https://github.com/skycoin/skywire/blob/develop/rewards/mainnet_rules.md","target","_blank","rel","noreferrer nofollow noopener"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","address","maxlength","112","matInput","",3,"ngClass"],["formArrayName","nodes",1,"list-container"],[1,"list-element",3,"ngClass"],[1,"buttons"],["type","mat-raised-button","color","primary",3,"action","disabled"],[3,"formGroupName"],["color","primary","formControlName","selected"],[1,"contents"],[1,"address","contents"],[1,"address-label"],[1,"blinking"],[1,"red-text"],[1,"left-area"],[1,"right-area","contents"],[1,"address"],[1,"green-text"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2)(3,"div",3)(4,"span"),p(5),_(6,"translate"),u(),h(7,"a",4),p(8),_(9,"translate"),u()(),h(10,"mat-form-field")(11,"div",5)(12,"label",6),p(13),_(14,"translate"),u(),L(15,"input",7),u(),h(16,"mat-error")(17,"span"),p(18),_(19,"translate"),u()()(),h(20,"div",3),p(21),_(22,"translate"),u(),h(23,"div",8),me(24,Oge,3,5,"div",9,Le),u()(),h(26,"div",10)(27,"app-button",11,0),F("action",function(){return o.processingStarted?o.closeModal():o.checkBeforeProcessing()}),x(29,Age,2,3),x(30,Rge,2,3),u()()()),2&i&&(C("headline",v(1,13,"bulk-rewards.title"))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),c(2),C("formGroup",o.form),c(3),D("",v(6,15,"bulk-rewards.info")," "),c(3),D(" ",v(9,17,"bulk-rewards.more-info-link")," "),c(5),S(v(14,19,"rewards-address-config.address")),c(2),C("ngClass",ie(25,Cge,o.processingStarted)),c(3),S(v(19,21,"rewards-address-config.address-error")),c(3),D(" ",v(22,23,"bulk-rewards.select-visors")," "),c(3),ge(o.nodesToEdit),c(3),C("disabled",!o.formValid()),c(2),k(o.processingStarted?-1:29),c(),k(o.processingStarted?30:-1))},dependencies:[Ft,kn,Qt,Jt,xn,Bi,sn,_n,pc,_u,dn,Aa,On,Fo,Mi,Sn,we],styles:[".text-container[_ngcontent-%COMP%]{word-break:break-word}mat-form-field[_ngcontent-%COMP%]{margin-top:10px}.list-container[_ngcontent-%COMP%]{font-size:14px;margin:10px;color:#215f9e;word-break:break-word}.list-container[_ngcontent-%COMP%] .element-margin[_ngcontent-%COMP%]{margin:15px 0}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%]{display:flex}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-area[_ngcontent-%COMP%]{width:12px;flex-grow:0;flex-shrink:0}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .right-area[_ngcontent-%COMP%]{flex-grow:1}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .contents[_ngcontent-%COMP%]{white-space:normal;line-height:1.2}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .address[_ngcontent-%COMP%]{font-size:.7rem;color:#777}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .address[_ngcontent-%COMP%] .address-label[_ngcontent-%COMP%]{opacity:.7}.buttons[_ngcontent-%COMP%]{margin-top:15px;text-align:right}.buttons[_ngcontent-%COMP%] app-button[_ngcontent-%COMP%]{margin-left:5px}"]})}}return t})(),ap=(()=>{class t{constructor(e){this.dom=e}copy(e){let i=null;try{return i=this.dom.createElement("textarea"),i.style.height="0px",i.style.left="-100px",i.style.opacity="0",i.style.position="fixed",i.style.top="-100px",i.style.width="0px",this.dom.body.appendChild(i),i.value=e,i.select(),this.dom.execCommand("copy"),!0}catch{return!1}finally{i&&i.parentNode&&i.parentNode.removeChild(i)}}static{this.\u0275fac=function(i){return new(i||t)(ce(et))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac})}}return t})(),Nge=(()=>{class t{constructor(e){this.http=e,this.rewardSystemUrl="/api/rewards",this.rewardDataCache=new Map,this.cachedDates=[],this.fetching=!1}getLastNDays(e){const i=[];for(let o=0;o0}fetchRewardData(e){return this.hasCache()?se(this.rewardDataCache):(this.fetching=!0,du(e.map(o=>this.http.get(`${this.rewardSystemUrl}/skycoin-rewards/visor/${o}?days=7`).pipe(De(r=>({pk:o,history:r&&r.history?r.history:[]})),ii(()=>se({pk:o,history:[]}))))).pipe(De(o=>{const r=new Map;for(const{pk:s,history:a}of o){const l={pk:s,rewardAddress:"",dailyAmounts:{},dailySent:{},weekTotal:0};for(const d of a)d.date&&(l.dailyAmounts[d.date]=d.amount||0,l.dailySent[d.date]=d.sent||!1,l.weekTotal+=d.amount||0);r.set(s,l)}return this.rewardDataCache=r,this.cachedDates=this.getLastNDays(7),this.fetching=!1,r}),ii(o=>(this.fetching=!1,se(new Map)))))}clearCache(){this.rewardDataCache=new Map,this.cachedDates=[]}static{this.\u0275fac=function(i){return new(i||t)(ce(xa))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();class lV extends oV{_origin="program";setFocusOrigin(n){return this._origin=n,this}setActiveItem(n){super.setActiveItem(n),this.activeItem&&this.activeItem.focus(this._origin)}}const Lge=["mat-menu-item",""],Bge=[[["mat-icon"],["","matMenuItemIcon",""]],"*"],Vge=["mat-icon, [matMenuItemIcon]","*"];function Hge(t,n){1&t&&(ul(),h(0,"svg",2),L(1,"polygon",3),u())}const Uge=["*"];function zge(t,n){if(1&t){const e=re();Ms(0,"div",0),Jg("click",function(){return V(e),H(y().closed.emit("click"))})("animationstart",function(o){return V(e),H(y()._onAnimationStart(o.animationName))})("animationend",function(o){return V(e),H(y()._onAnimationDone(o.animationName))})("animationcancel",function(o){return V(e),H(y()._onAnimationDone(o.animationName))}),Ms(1,"div",1),Rt(2),Bl()()}if(2&t){const e=y();Ge(e._classList),ve("mat-menu-panel-animations-disabled",e._animationsDisabled)("mat-menu-panel-exit-animation","void"===e._panelAnimationState)("mat-menu-panel-animating",e._isAnimating()),gr("id",e.panelId),We("aria-label",e.ariaLabel||null)("aria-labelledby",e.ariaLabelledby||null)("aria-describedby",e.ariaDescribedby||null)}}const ES=new Z("MAT_MENU_PANEL");let Vs=(()=>{class t{_elementRef=T(Ne);_document=T(et);_focusMonitor=T(ac);_parentMenu=T(ES,{optional:!0});_changeDetectorRef=T(Dt);role="menuitem";disabled=!1;disableRipple=!1;_hovered=new be;_focused=new be;_highlighted=!1;_triggersSubmenu=!1;constructor(){T(qo).load(cu),this._parentMenu?.addItem?.(this)}focus(e,i){this._focusMonitor&&e?this._focusMonitor.focusVia(this._getHostElement(),e,i):this._getHostElement().focus(i),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(e){this.disabled&&(e.preventDefault(),e.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){const e=this._elementRef.nativeElement.cloneNode(!0),i=e.querySelectorAll("mat-icon, .material-icons");for(let o=0;o({overlapTrigger:!1,xPosition:"after",yPosition:"below",backdropClass:"cdk-overlay-transparent-backdrop"})}),PS="_mat-menu-enter",yv="_mat-menu-exit";let os=(()=>{class t{_elementRef=T(Ne);_changeDetectorRef=T(Dt);_injector=T(Ue);_keyManager;_xPosition;_yPosition;_firstItemFocusRef;_exitFallbackTimeout;_animationsDisabled=hi();_allItems;_directDescendantItems=new ud;_classList={};_panelAnimationState="void";_animationDone=new be;_isAnimating=Ct(!1);parentMenu;direction;overlayPanelClass;backdropClass;ariaLabel;ariaLabelledby;ariaDescribedby;get xPosition(){return this._xPosition}set xPosition(e){this._xPosition=e,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(e){this._yPosition=e,this.setPositionClasses()}templateRef;items;lazyContent;overlapTrigger=!1;hasBackdrop;set panelClass(e){const i=this._previousPanelClass,o={...this._classList};i&&i.length&&i.split(" ").forEach(r=>{o[r]=!1}),this._previousPanelClass=e,e&&e.length&&(e.split(" ").forEach(r=>{o[r]=!0}),this._elementRef.nativeElement.className=""),this._classList=o}_previousPanelClass;get classList(){return this.panelClass}set classList(e){this.panelClass=e}closed=new ke;close=this.closed;panelId=T(si).getId("mat-menu-panel-");constructor(){const e=T($ge);this.overlayPanelClass=e.overlayPanelClass||"",this._xPosition=e.xPosition,this._yPosition=e.yPosition,this.backdropClass=e.backdropClass,this.overlapTrigger=e.overlapTrigger,this.hasBackdrop=e.hasBackdrop}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new lV(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit("tab")),this._directDescendantItems.changes.pipe(zn(this._directDescendantItems),wt(e=>Dr(...e.map(i=>i._focused)))).subscribe(e=>this._keyManager.updateActiveItem(e)),this._directDescendantItems.changes.subscribe(e=>{const i=this._keyManager;if("enter"===this._panelAnimationState&&i.activeItem?._hasFocus()){const o=e.toArray(),r=Math.max(0,Math.min(o.length-1,i.activeItemIndex||0));o[r]&&!o[r].disabled?i.setActiveItem(r):i.setNextItemActive()}})}ngOnDestroy(){this._keyManager?.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),this._firstItemFocusRef?.destroy(),clearTimeout(this._exitFallbackTimeout)}_hovered(){return this._directDescendantItems.changes.pipe(zn(this._directDescendantItems),wt(i=>Dr(...i.map(o=>o._hovered))))}addItem(e){}removeItem(e){}_handleKeydown(e){const i=e.keyCode,o=this._keyManager;switch(i){case 27:Mr(e)||(e.preventDefault(),this.closed.emit("keydown"));break;case 37:this.parentMenu&&"ltr"===this.direction&&this.closed.emit("keydown");break;case 39:this.parentMenu&&"rtl"===this.direction&&this.closed.emit("keydown");break;default:return(38===i||40===i)&&o.setFocusOrigin("keyboard"),void o.onKeydown(e)}}focusFirstItem(e="program"){this._firstItemFocusRef?.destroy(),this._firstItemFocusRef=Wi(()=>{const i=this._resolvePanel();if(!i||!i.contains(document.activeElement)){const o=this._keyManager;o.setFocusOrigin(e).setFirstItemActive(),!o.activeItem&&i&&i.focus()}},{injector:this._injector})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(e){}setPositionClasses(e=this.xPosition,i=this.yPosition){this._classList={...this._classList,"mat-menu-before":"before"===e,"mat-menu-after":"after"===e,"mat-menu-above":"above"===i,"mat-menu-below":"below"===i},this._changeDetectorRef.markForCheck()}_onAnimationDone(e){const i=e===yv;(i||e===PS)&&(i&&(clearTimeout(this._exitFallbackTimeout),this._exitFallbackTimeout=void 0),this._animationDone.next(i?"void":"enter"),this._isAnimating.set(!1))}_onAnimationStart(e){(e===PS||e===yv)&&this._isAnimating.set(!0)}_setIsOpen(e){if(this._panelAnimationState=e?"enter":"void",e){if(0===this._keyManager.activeItemIndex){const i=this._resolvePanel();i&&(i.scrollTop=0)}}else this._animationsDisabled||(this._exitFallbackTimeout=setTimeout(()=>this._onAnimationDone(yv),200));this._animationsDisabled&&setTimeout(()=>{this._onAnimationDone(e?PS:yv)}),this._changeDetectorRef.markForCheck()}_updateDirectDescendants(){this._allItems.changes.pipe(zn(this._allItems)).subscribe(e=>{this._directDescendantItems.reset(e.filter(i=>i._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}_resolvePanel(){let e=null;return this._directDescendantItems.length&&(e=this._directDescendantItems.first._getHostElement().closest('[role="menu"]')),e}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-menu"]],contentQueries:function(i,o,r){if(1&i&&Ds(r,jge,5)(r,Vs,5)(r,Vs,4),2&i){let s;fe(s=pe())&&(o.lazyContent=s.first),fe(s=pe())&&(o._allItems=s),fe(s=pe())&&(o.items=s)}},viewQuery:function(i,o){if(1&i&&st(Oi,5),2&i){let r;fe(r=pe())&&(o.templateRef=r.first)}},hostVars:3,hostBindings:function(i,o){2&i&&We("aria-label",null)("aria-labelledby",null)("aria-describedby",null)},inputs:{backdropClass:"backdropClass",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:[2,"overlapTrigger","overlapTrigger",Te],hasBackdrop:[2,"hasBackdrop","hasBackdrop",e=>null==e?null:Te(e)],panelClass:[0,"class","panelClass"],classList:"classList"},outputs:{closed:"closed",close:"close"},exportAs:["matMenu"],features:[dt([{provide:ES,useExisting:t}])],ngContentSelectors:Uge,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-mdc-menu-panel",3,"click","animationstart","animationend","animationcancel","id"],[1,"mat-mdc-menu-content"]],template:function(i,o){1&i&&(xi(),Fg(0,zge,3,12,"ng-template"))},styles:['mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-sys-label-large-weight))}@keyframes _mat-menu-enter{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:none}}@keyframes _mat-menu-exit{from{opacity:1}to{opacity:0}}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;box-sizing:border-box;outline:0;animation:_mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1);border-radius:var(--mat-menu-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-sys-surface-container));box-shadow:var(--mat-menu-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));will-change:transform,opacity}.mat-mdc-menu-panel.mat-menu-panel-exit-animation{animation:_mat-menu-exit 100ms 25ms linear forwards}.mat-mdc-menu-panel.mat-menu-panel-animations-disabled{animation:none}.mat-mdc-menu-panel.mat-menu-panel-animating{pointer-events:none}.mat-mdc-menu-panel.mat-menu-panel-animating:has(.mat-mdc-menu-content:empty){display:none}@media(forced-colors: active){.mat-mdc-menu-panel{outline:solid 1px}}.mat-mdc-menu-panel .mat-divider{border-top-color:var(--mat-menu-divider-color, var(--mat-sys-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing, 8px);margin-top:var(--mat-menu-divider-top-spacing, 8px)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px;padding-left:var(--mat-menu-item-leading-spacing, 12px);padding-right:var(--mat-menu-item-trailing-spacing, 12px);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-menu-item::-moz-focus-inner{border:0}[dir=rtl] .mat-mdc-menu-item{padding-left:var(--mat-menu-item-trailing-spacing, 12px);padding-right:var(--mat-menu-item-leading-spacing, 12px)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-trailing-spacing, 12px)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-trailing-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-leading-spacing, 12px)}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing, 12px);height:var(--mat-menu-item-icon-size, 24px);width:var(--mat-menu-item-icon-size, 24px)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing, 12px)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}@media(forced-colors: active){.mat-mdc-menu-item{margin-top:1px}}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size, 24px);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing, 12px)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing, 12px);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1);transform-origin:center}@media(forced-colors: active){.mat-mdc-menu-submenu-icon{fill:CanvasText}}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n'],encapsulation:2,changeDetection:0})}return t})();const Wge=new Z("mat-menu-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Ue);return()=>$f(t)}}),ku=new WeakMap;let Gge=(()=>{class t{_canHaveBackdrop;_element=T(Ne);_viewContainerRef=T(Ai);_menuItemInstance=T(Vs,{optional:!0,self:!0});_dir=T(kr,{optional:!0});_focusMonitor=T(ac);_ngZone=T(Ce);_injector=T(Ue);_scrollStrategy=T(Wge);_changeDetectorRef=T(Dt);_animationsDisabled=hi();_portal;_overlayRef=null;_menuOpen=!1;_closingActionsSubscription=gt.EMPTY;_menuCloseSubscription=gt.EMPTY;_pendingRemoval;_parentMaterialMenu;_parentInnerPadding;_openedBy=void 0;get _menu(){return this._menuInternal}set _menu(e){e!==this._menuInternal&&(this._menuInternal=e,this._menuCloseSubscription.unsubscribe(),e&&(this._menuCloseSubscription=e.close.subscribe(i=>{this._destroyMenu(i),("click"===i||"tab"===i)&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(i)})),this._menuItemInstance?._setTriggersSubmenu(this._triggersSubmenu()))}_menuInternal=null;constructor(e){this._canHaveBackdrop=e;const i=T(ES,{optional:!0});this._parentMaterialMenu=i instanceof os?i:void 0}ngOnDestroy(){this._menu&&this._ownsMenu(this._menu)&&ku.delete(this._menu),this._pendingRemoval?.unsubscribe(),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null)}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this._menu)}_closeMenu(){this._menu?.close.emit()}_openMenu(e){if(this._triggerIsAriaDisabled())return;const i=this._menu;if(this._menuOpen||!i)return;this._pendingRemoval?.unsubscribe();const o=ku.get(i);ku.set(i,this),o&&o!==this&&o._closeMenu();const r=this._createOverlay(i),s=r.getConfig(),a=s.positionStrategy;this._setPosition(i,a),s.hasBackdrop=this._canHaveBackdrop?null==i.hasBackdrop?!this._triggersSubmenu():i.hasBackdrop:i.hasBackdrop??!1,r.hasAttached()||(r.attach(this._getPortal(i)),i.lazyContent?.attach(this.menuData)),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this._closeMenu()),i.parentMenu=this._triggersSubmenu()?this._parentMaterialMenu:void 0,i.direction=this.dir,e&&i.focusFirstItem(this._openedBy||"program"),this._setIsMenuOpen(!0),i instanceof os&&(i._setIsOpen(!0),i._directDescendantItems.changes.pipe(ln(i.close)).subscribe(()=>{a.withLockedPosition(!1).reapplyLastPosition(),a.withLockedPosition(!0)}))}focus(e,i){this._focusMonitor&&e?this._focusMonitor.focusVia(this._element,e,i):this._element.nativeElement.focus(i)}_destroyMenu(e){const i=this._overlayRef,o=this._menu;!i||!this.menuOpen||(this._closingActionsSubscription.unsubscribe(),this._pendingRemoval?.unsubscribe(),o instanceof os&&this._ownsMenu(o)?(this._pendingRemoval=o._animationDone.pipe(wn(1)).subscribe(()=>{i.detach(),ku.has(o)||o.lazyContent?.detach()}),o._setIsOpen(!1)):(i.detach(),o?.lazyContent?.detach()),o&&this._ownsMenu(o)&&ku.delete(o),this.restoreFocus&&("keydown"===e||!this._openedBy||!this._triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,this._setIsMenuOpen(!1))}_setIsMenuOpen(e){e!==this._menuOpen&&(this._menuOpen=e,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this._triggersSubmenu()&&this._menuItemInstance._setHighlighted(e),this._changeDetectorRef.markForCheck())}_createOverlay(e){if(!this._overlayRef){const i=this._getOverlayConfig(e);this._subscribeToPositions(e,i.positionStrategy),this._overlayRef=ou(this._injector,i),this._overlayRef.keydownEvents().subscribe(o=>{this._menu instanceof os&&this._menu._handleKeydown(o)})}return this._overlayRef}_getOverlayConfig(e){return new Wf({positionStrategy:Eb(this._injector,this._getOverlayOrigin()).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:e.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:e.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir||"ltr",disableAnimations:this._animationsDisabled})}_subscribeToPositions(e,i){e.setPositionClasses&&i.positionChanges.subscribe(o=>{this._ngZone.run(()=>{e.setPositionClasses("start"===o.connectionPair.overlayX?"after":"before","top"===o.connectionPair.overlayY?"below":"above")})})}_setPosition(e,i){let[o,r]="before"===e.xPosition?["end","start"]:["start","end"],[s,a]="above"===e.yPosition?["bottom","top"]:["top","bottom"],[l,d]=[s,a],[f,m]=[o,r],g=0;if(this._triggersSubmenu()){if(m=o="before"===e.xPosition?"start":"end",r=f="end"===o?"start":"end",this._parentMaterialMenu){if(null==this._parentInnerPadding){const b=this._parentMaterialMenu.items.first;this._parentInnerPadding=b?b._getHostElement().offsetTop:0}g="bottom"===s?this._parentInnerPadding:-this._parentInnerPadding}}else e.overlapTrigger||(l="top"===s?"bottom":"top",d="top"===a?"bottom":"top");i.withPositions([{originX:o,originY:l,overlayX:f,overlayY:s,offsetY:g},{originX:r,originY:l,overlayX:m,overlayY:s,offsetY:g},{originX:o,originY:d,overlayX:f,overlayY:a,offsetY:-g},{originX:r,originY:d,overlayX:m,overlayY:a,offsetY:-g}])}_menuClosingActions(){const e=this._getOutsideClickStream(this._overlayRef),i=this._overlayRef.detachments();return Dr(e,this._parentMaterialMenu?this._parentMaterialMenu.closed:se(),this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe(Pn(s=>this._menuOpen&&s!==this._menuItemInstance)):se(),i)}_getPortal(e){return(!this._portal||this._portal.templateRef!==e.templateRef)&&(this._portal=new nc(e.templateRef,this._viewContainerRef)),this._portal}_ownsMenu(e){return ku.get(e)===this}_triggerIsAriaDisabled(){return Te(this._element.nativeElement.getAttribute("aria-disabled"))}static \u0275fac=function(i){WC()};static \u0275dir=de({type:t})}return t})(),Su=(()=>{class t extends Gge{_cleanupTouchstart;_hoverSubscription=gt.EMPTY;get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(e){this.menu=e}get menu(){return this._menu}set menu(e){this._menu=e}menuData;restoreFocus=!0;menuOpened=new ke;onMenuOpen=this.menuOpened;menuClosed=new ke;onMenuClose=this.menuClosed;constructor(){super(!0);const e=T(ei);this._cleanupTouchstart=e.listen(this._element.nativeElement,"touchstart",i=>{Tk(i)||(this._openedBy="touch")},{passive:!0})}triggersSubmenu(){return super._triggersSubmenu()}toggleMenu(){return this.menuOpen?this.closeMenu():this.openMenu()}openMenu(){this._openMenu(!0)}closeMenu(){this._closeMenu()}updatePosition(){this._overlayRef?.updatePosition()}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){super.ngOnDestroy(),this._cleanupTouchstart(),this._hoverSubscription.unsubscribe()}_getOverlayOrigin(){return this._element}_getOutsideClickStream(e){return e.backdropClick()}_handleMousedown(e){Dk(e)||(this._openedBy=0===e.button?"mouse":void 0,this.triggersSubmenu()&&e.preventDefault())}_handleKeydown(e){const i=e.keyCode;(13===i||32===i)&&(this._openedBy="keyboard"),this.triggersSubmenu()&&(39===i&&"ltr"===this.dir||37===i&&"rtl"===this.dir)&&(this._openedBy="keyboard",this.openMenu())}_handleClick(e){this.triggersSubmenu()?(e.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){this.triggersSubmenu()&&this._parentMaterialMenu&&(this._hoverSubscription=this._parentMaterialMenu._hovered().subscribe(e=>{e===this._menuItemInstance&&!e.disabled&&"void"!==this._parentMaterialMenu?._panelAnimationState&&(this._openedBy="mouse",this._openMenu(!1))}))}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:[1,"mat-mdc-menu-trigger"],hostVars:3,hostBindings:function(i,o){1&i&&F("click",function(s){return o._handleClick(s)})("mousedown",function(s){return o._handleMousedown(s)})("keydown",function(s){return o._handleKeydown(s)}),2&i&&We("aria-haspopup",o.menu?"menu":null)("aria-expanded",o.menuOpen)("aria-controls",o.menuOpen?null==o.menu?null:o.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:[0,"mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:[0,"matMenuTriggerFor","menu"],menuData:[0,"matMenuTriggerData","menuData"],restoreFocus:[0,"matMenuTriggerRestoreFocus","restoreFocus"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"},exportAs:["matMenuTrigger"],features:[_e]})}return t})(),qge=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[Bk,ru,ai,Hf]})}return t})();const cV=()=>["1"],La=t=>[t],dV=t=>({number:t});function Kge(t,n){if(1&t&&(h(0,"a",4)(1,"mat-icon",10),p(2,"chevron_left"),u(),p(3),_(4,"translate"),u()),2&t){const e=y();C("routerLink",e.linkParts.concat(vt(6,cV)))("queryParams",e.queryParams),c(),C("inline",!0),c(2),D(" ",v(4,4,"paginator.first")," ")}}function Yge(t,n){if(1&t&&(h(0,"a",5)(1,"mat-icon",10),p(2,"chevron_left"),u(),h(3,"span",11),p(4),_(5,"translate"),u()()),2&t){const e=y();C("routerLink",e.linkParts.concat(vt(6,cV)))("queryParams",e.queryParams),c(),C("inline",!0),c(3),S(v(5,4,"paginator.first"))}}function Xge(t,n){if(1&t&&(h(0,"a",4)(1,"div")(2,"mat-icon",10),p(3,"chevron_left"),u()()()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(3,La,(e.currentPage-1).toString())))("queryParams",e.queryParams),c(2),C("inline",!0)}}function Zge(t,n){if(1&t&&(h(0,"a",4),p(1),u()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(3,La,(e.currentPage-2).toString())))("queryParams",e.queryParams),c(),S(e.currentPage-2)}}function Qge(t,n){if(1&t&&(h(0,"a",6),p(1),u()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(3,La,(e.currentPage-1).toString())))("queryParams",e.queryParams),c(),S(e.currentPage-1)}}function Jge(t,n){if(1&t&&(h(0,"a",6),p(1),u()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(3,La,(e.currentPage+1).toString())))("queryParams",e.queryParams),c(),S(e.currentPage+1)}}function e_e(t,n){if(1&t&&(h(0,"a",4),p(1),u()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(3,La,(e.currentPage+2).toString())))("queryParams",e.queryParams),c(),S(e.currentPage+2)}}function t_e(t,n){if(1&t&&(h(0,"a",4)(1,"div")(2,"mat-icon",10),p(3,"chevron_right"),u()()()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(3,La,(e.currentPage+1).toString())))("queryParams",e.queryParams),c(2),C("inline",!0)}}function n_e(t,n){if(1&t&&(h(0,"a",4),p(1),_(2,"translate"),h(3,"mat-icon",10),p(4,"chevron_right"),u()()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(6,La,e.numberOfPages.toString())))("queryParams",e.queryParams),c(),D(" ",v(2,4,"paginator.last")," "),c(2),C("inline",!0)}}function i_e(t,n){if(1&t&&(h(0,"a",5)(1,"mat-icon",10),p(2,"chevron_right"),u(),h(3,"span",11),p(4),_(5,"translate"),u()()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(6,La,e.numberOfPages.toString())))("queryParams",e.queryParams),c(),C("inline",!0),c(3),S(v(5,4,"paginator.last"))}}function o_e(t,n){if(1&t&&(h(0,"div",8),p(1),_(2,"translate"),u()),2&t){const e=y();c(),S(ue(2,1,"paginator.total",ie(4,dV,e.numberOfPages)))}}function r_e(t,n){if(1&t&&(h(0,"div",9),p(1),_(2,"translate"),u()),2&t){const e=y();c(),S(ue(2,1,"paginator.total",ie(4,dV,e.numberOfPages)))}}let Cv=(()=>{class t{constructor(e,i){this.dialog=e,this.router=i,this.linkParts=[""],this.queryParams={}}openSelectionDialog(){const e=[];for(let i=1;i<=this.numberOfPages;i++)e.push({label:i.toString()});ho.openDialog(this.dialog,e,"paginator.select-page-title").afterClosed().subscribe(i=>{i&&this.router.navigate(this.linkParts.concat([i.toString()]),{queryParams:this.queryParams})})}static{this.\u0275fac=function(i){return new(i||t)(O(Nt),O(yt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-paginator"]],inputs:{currentPage:"currentPage",numberOfPages:"numberOfPages",linkParts:"linkParts",queryParams:"queryParams"},standalone:!1,decls:21,vars:13,consts:[[1,"main-container"],[1,"d-inline-block","small-rounded-elevated-box","mt-3"],[1,"d-flex"],[1,"responsive-height","d-md-none"],[1,"d-none","d-md-flex",3,"routerLink","queryParams"],[1,"d-flex","d-md-none","flex-column",3,"routerLink","queryParams"],[3,"routerLink","queryParams"],[1,"selected",3,"click"],[1,"d-none","d-md-block","total-pages"],[1,"d-block","d-md-none","total-pages"],[3,"inline"],[1,"label"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3),p(4,"\xa0"),L(5,"br"),p(6,"\xa0"),u(),x(7,Kge,5,7,"a",4),x(8,Yge,6,7,"a",5),x(9,Xge,4,5,"a",4),x(10,Zge,2,5,"a",4),x(11,Qge,2,5,"a",6),h(12,"a",7),F("click",function(){return o.openSelectionDialog()}),p(13),u(),x(14,Jge,2,5,"a",6),x(15,e_e,2,5,"a",4),x(16,t_e,4,5,"a",4),x(17,n_e,5,8,"a",4),x(18,i_e,6,8,"a",5),u()(),x(19,o_e,3,6,"div",8),x(20,r_e,3,6,"div",9),u()),2&i&&(c(7),k(o.currentPage>3?7:-1),c(),k(o.currentPage>2?8:-1),c(),k(o.currentPage>1?9:-1),c(),k(o.currentPage>2?10:-1),c(),k(o.currentPage>1?11:-1),c(2),S(o.currentPage),c(),k(o.currentPage3?19:-1),c(),k(o.numberOfPages>2?20:-1))},dependencies:[es,Ae,we],styles:[".main-container[_ngcontent-%COMP%]{text-align:right}.main-container[_ngcontent-%COMP%] .responsive-height[_ngcontent-%COMP%]{padding:10px 0;width:0px}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:10px;border-right:rgba(255,255,255,.15) solid 1px;border-left:rgba(255,255,255,.15) solid 1px;min-width:40px;text-align:center;color:#f8f9f980;text-decoration:none;display:flex;align-items:center;justify-content:center}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:#0003}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:.7rem}.main-container[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{color:#f8f9f9;background:#0000005c;padding:10px 20px;cursor:pointer}.main-container[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]:hover{background:#0009}.main-container[_ngcontent-%COMP%] .total-pages[_ngcontent-%COMP%]{font-size:.6rem;margin-top:-3px;margin-right:4px}"]})}}return t})();function lp(t){return En((n,e)=>{let i,r,o=!1;const s=()=>{i=n.subscribe(pn(e,void 0,void 0,a=>{r||(r=new be,qi(t(r)).subscribe(pn(e,()=>i?s():o=!0))),r&&r.next(a)})),o&&(i.unsubscribe(),i=null,o=!1,s())};s()})}const rs={AF:"Afghanistan",AX:"Aland Islands",AL:"Albania",DZ:"Algeria",AS:"American Samoa",AD:"Andorra",AO:"Angola",AI:"Anguilla",AQ:"Antarctica",AG:"Antigua and Barbuda",AR:"Argentina",AM:"Armenia",AW:"Aruba",AU:"Australia",AT:"Austria",AZ:"Azerbaijan",BS:"Bahamas",BH:"Bahrain",BD:"Bangladesh",BB:"Barbados",BY:"Belarus",BE:"Belgium",BZ:"Belize",BJ:"Benin",BM:"Bermuda",BT:"Bhutan",BO:"Bolivia",BA:"Bosnia and Herzegovina",BW:"Botswana",BV:"Bouvet Island",BR:"Brazil",IO:"British Indian Ocean Territory",BN:"Brunei Darussalam",BG:"Bulgaria",BF:"Burkina Faso",BI:"Burundi",KH:"Cambodia",CM:"Cameroon",CA:"Canada",CV:"Cape Verde",KY:"Cayman Islands",CF:"Central African Republic",TD:"Chad",CL:"Chile",CN:"China",CX:"Christmas Island",CC:"Cocos (Keeling) Islands",CO:"Colombia",KM:"Comoros",CG:"Congo",CD:"Congo, Democratic Republic",CK:"Cook Islands",CR:"Costa Rica",CI:"Cote D'Ivoire",HR:"Croatia",CU:"Cuba",CY:"Cyprus",CZ:"Czech Republic",DK:"Denmark",DJ:"Djibouti",DM:"Dominica",DO:"Dominican Republic",EC:"Ecuador",EG:"Egypt",SV:"El Salvador",GQ:"Equatorial Guinea",ER:"Eritrea",EE:"Estonia",ET:"Ethiopia",FK:"Falkland Islands (Malvinas)",FO:"Faroe Islands",FJ:"Fiji",FI:"Finland",FR:"France",GF:"French Guiana",PF:"French Polynesia",TF:"French Southern Territories",GA:"Gabon",GM:"Gambia",GE:"Georgia",DE:"Germany",GH:"Ghana",GI:"Gibraltar",GR:"Greece",GL:"Greenland",GD:"Grenada",GP:"Guadeloupe",GU:"Guam",GT:"Guatemala",GG:"Guernsey",GN:"Guinea",GW:"Guinea-Bissau",GY:"Guyana",HT:"Haiti",HM:"Heard Island and Mcdonald Islands",VA:"Holy See (Vatican City State)",HN:"Honduras",HK:"Hong Kong",HU:"Hungary",IS:"Iceland",IN:"India",ID:"Indonesia",IR:"Iran",IQ:"Iraq",IE:"Ireland",IM:"Isle of Man",IL:"Israel",IT:"Italy",JM:"Jamaica",JP:"Japan",JE:"Jersey",JO:"Jordan",KZ:"Kazakhstan",KE:"Kenya",KI:"Kiribati",KP:"Korea (North)",KR:"Korea (South)",XK:"Kosovo",KW:"Kuwait",KG:"Kyrgyzstan",LA:"Laos",LV:"Latvia",LB:"Lebanon",LS:"Lesotho",LR:"Liberia",LY:"Libyan Arab Jamahiriya",LI:"Liechtenstein",LT:"Lithuania",LU:"Luxembourg",MO:"Macao",MK:"Macedonia",MG:"Madagascar",MW:"Malawi",MY:"Malaysia",MV:"Maldives",ML:"Mali",MT:"Malta",MH:"Marshall Islands",MQ:"Martinique",MR:"Mauritania",MU:"Mauritius",YT:"Mayotte",MX:"Mexico",FM:"Micronesia",MD:"Moldova",MC:"Monaco",MN:"Mongolia",MS:"Montserrat",MA:"Morocco",MZ:"Mozambique",MM:"Myanmar",NA:"Namibia",NR:"Nauru",NP:"Nepal",NL:"Netherlands",AN:"Netherlands Antilles",NC:"New Caledonia",NZ:"New Zealand",NI:"Nicaragua",NE:"Niger",NG:"Nigeria",NU:"Niue",NF:"Norfolk Island",MP:"Northern Mariana Islands",NO:"Norway",OM:"Oman",PK:"Pakistan",PW:"Palau",PS:"Palestinian Territory, Occupied",PA:"Panama",PG:"Papua New Guinea",PY:"Paraguay",PE:"Peru",PH:"Philippines",PN:"Pitcairn",PL:"Poland",PT:"Portugal",PR:"Puerto Rico",QA:"Qatar",RE:"Reunion",RO:"Romania",RU:"Russian Federation",RW:"Rwanda",SH:"Saint Helena",KN:"Saint Kitts and Nevis",LC:"Saint Lucia",PM:"Saint Pierre and Miquelon",VC:"Saint Vincent and the Grenadines",WS:"Samoa",SM:"San Marino",ST:"Sao Tome and Principe",SA:"Saudi Arabia",SN:"Senegal",RS:"Serbia",ME:"Montenegro",SC:"Seychelles",SL:"Sierra Leone",SG:"Singapore",SK:"Slovakia",SI:"Slovenia",SB:"Solomon Islands",SO:"Somalia",ZA:"South Africa",GS:"South Georgia and the South Sandwich Islands",ES:"Spain",LK:"Sri Lanka",SD:"Sudan",SR:"Suriname",SJ:"Svalbard and Jan Mayen",SZ:"Swaziland",SE:"Sweden",CH:"Switzerland",SY:"Syrian Arab Republic",TW:"Taiwan, Province of China",TJ:"Tajikistan",TZ:"Tanzania",TH:"Thailand",TL:"Timor-Leste",TG:"Togo",TK:"Tokelau",TO:"Tonga",TT:"Trinidad and Tobago",TN:"Tunisia",TR:"Turkey",TM:"Turkmenistan",TC:"Turks and Caicos Islands",TV:"Tuvalu",UG:"Uganda",UA:"Ukraine",AE:"United Arab Emirates",GB:"United Kingdom",US:"United States",UM:"United States Minor Outlying Islands",UY:"Uruguay",UZ:"Uzbekistan",VU:"Vanuatu",VE:"Venezuela",VN:"Viet Nam",VG:"Virgin Islands, British",VI:"Virgin Islands, U.S.",WF:"Wallis and Futuna",EH:"Western Sahara",YE:"Yemen",ZM:"Zambia",ZW:"Zimbabwe",ZZ:"Unknown"};let Hs=(()=>{class t{constructor(e){this.apiService=e}changeAppState(e,i,o){return this.apiService.put(`visors/${e}/apps/${encodeURIComponent(i)}`,{status:o?1:0})}changeAppAutostart(e,i,o){return this.changeAppSettings(e,i,{autostart:o})}changeAppSettings(e,i,o){return this.apiService.put(`visors/${e}/apps/${encodeURIComponent(i)}`,o)}getLogMessages(e,i,o){const s=RF(-1!==o?Date.now()-864e5*o:0,"yyyy-MM-ddTHH:mm:ssZZZZZ","en-US");return this.apiService.get(this.getLogMessagesUrl(e,i)+`?since=${s}`).pipe(De(a=>a.logs))}getLogMessagesUrl(e,i){return`visors/${e}/apps/${encodeURIComponent(i)}/logs`}static{this.\u0275fac=function(i){return new(i||t)(ce(fi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var bn=function(t){return t.None="None",t.Favorite="Favorite",t.Blocked="Blocked",t}(bn||{}),er=function(t){return t.BitsSpeedAndBytesVolume="BitsSpeedAndBytesVolume",t.OnlyBytes="OnlyBytes",t.OnlyBits="OnlyBits",t}(er||{});let Cc=(()=>{class t{constructor(e,i){this.router=e,this.storageService=i,this.maxHistoryElements=30,this.savedServersStorageKey="VpnServers",this.checkIpSettingStorageKey="VpnGetIp",this.dataUnitsSettingStorageKey="VpnDataUnits",this.serversMap=new Map,this.savedDataVersion=0,this.currentServerSubject=new co(1),this.historySubject=new co(1),this.favoritesSubject=new co(1),this.blockedSubject=new co(1)}initialize(){this.migrateDataToHvStorage(),this.serversMap=new Map;const e=this.storageService.getDataForHv(this.savedServersStorageKey);if(e){const i=JSON.parse(e);i.serverList.forEach(o=>{this.serversMap.set(o.pk,o)}),this.savedDataVersion=i.version,i.selectedServerPk&&this.updateCurrentServerPk(i.selectedServerPk)}this.launchListEvents()}migrateDataToHvStorage(){const e=localStorage.getItem(this.savedServersStorageKey);e&&(this.storageService.setDataForHv(this.savedServersStorageKey,e),localStorage.removeItem(this.savedServersStorageKey));const i=localStorage.getItem(this.checkIpSettingStorageKey);i&&(this.storageService.setDataForHv(this.checkIpSettingStorageKey,i),localStorage.removeItem(this.checkIpSettingStorageKey));const o=localStorage.getItem(this.dataUnitsSettingStorageKey);o&&(this.storageService.setDataForHv(this.dataUnitsSettingStorageKey,o),localStorage.removeItem(this.dataUnitsSettingStorageKey))}get currentServer(){return this.serversMap.get(this.currentServerPk)}get currentServerObservable(){return this.currentServerSubject.asObservable()}get history(){return this.historySubject.asObservable()}get favorites(){return this.favoritesSubject.asObservable()}get blocked(){return this.blockedSubject.asObservable()}getSavedVersion(e,i){return i&&this.checkIfDataWasChanged(),this.serversMap.get(e)}getCheckIpSetting(){const e=this.storageService.getDataForHv(this.checkIpSettingStorageKey);return null==e||"false"!==e}setCheckIpSetting(e){this.storageService.setDataForHv(this.checkIpSettingStorageKey,e?"true":"false")}getDataUnitsSetting(){return this.storageService.getDataForHv(this.dataUnitsSettingStorageKey)??er.BitsSpeedAndBytesVolume}setDataUnitsSetting(e){this.storageService.setDataForHv(this.dataUnitsSettingStorageKey,e)}updateFromDiscovery(e){this.checkIfDataWasChanged(),e.forEach(i=>{if(this.serversMap.has(i.pk)){const o=this.serversMap.get(i.pk);o.countryCode=i.countryCode,o.name=i.name,o.location=i.location,o.note=i.note}}),this.saveData()}updateServer(e){this.serversMap.set(e.pk,e),this.cleanServers(),this.saveData()}processFromDiscovery(e){this.checkIfDataWasChanged();const i=this.serversMap.get(e.pk);return i?(i.countryCode=e.countryCode,i.name=e.name,i.location=e.location,i.note=e.note,this.saveData(),i):{countryCode:e.countryCode,name:e.name,customName:null,pk:e.pk,lastUsed:0,inHistory:!1,flag:bn.None,location:e.location,personalNote:null,note:e.note,enteredManually:!1,usedWithPassword:!1}}processFromManual(e){this.checkIfDataWasChanged();const i=this.serversMap.get(e.pk);return i?(i.customName=e.name,i.personalNote=e.note,i.enteredManually=!0,this.saveData(),i):{countryCode:"zz",name:"",customName:e.name,pk:e.pk,lastUsed:0,inHistory:!1,flag:bn.None,location:"",personalNote:e.note,note:"",enteredManually:!0,usedWithPassword:!1}}changeFlag(e,i){this.checkIfDataWasChanged();const o=this.serversMap.get(e.pk);o&&(e=o),e.flag!==i&&(e.flag=i,this.serversMap.has(e.pk)||this.serversMap.set(e.pk,e),this.cleanServers(),this.saveData())}removeFromHistory(e){this.checkIfDataWasChanged();const i=this.serversMap.get(e);!i||!i.inHistory||(i.inHistory=!1,this.cleanServers(),this.saveData())}modifyCurrentServer(e){this.checkIfDataWasChanged(),e.pk!==this.currentServerPk&&(this.serversMap.has(e.pk)||this.serversMap.set(e.pk,e),this.updateCurrentServerPk(e.pk),this.cleanServers(),this.saveData())}compareCurrentServer(e){if(this.checkIfDataWasChanged(),e){if(!this.currentServerPk||this.currentServerPk!==e){if(this.currentServerPk=e,!this.serversMap.get(e)){const o=this.processFromManual({pk:e});this.serversMap.set(o.pk,o),this.cleanServers()}this.saveData(),this.currentServerSubject.next(this.currentServer)}}else this.currentServerPk&&(this.currentServerPk=null,this.saveData(),this.currentServerSubject.next(this.currentServer))}updateHistory(){this.checkIfDataWasChanged(),this.currentServer.lastUsed=Date.now(),this.currentServer.inHistory=!0;let e=[];this.serversMap.forEach(o=>{o.inHistory&&e.push(o)}),e=e.sort((o,r)=>r.lastUsed-o.lastUsed);let i=0;e.forEach(o=>{i{!i.inHistory&&i.flag===bn.None&&i.pk!==this.currentServerPk&&!i.customName&&!i.personalNote&&e.push(i.pk)}),e.forEach(i=>{this.serversMap.delete(i)})}saveData(){let e=0;const i=this.storageService.getDataForHv(this.savedServersStorageKey);if(i&&(e=JSON.parse(i).version),e!==this.savedDataVersion)return void this.router.navigate(["vpn","unavailable"],{queryParams:{problem:"storage"}});this.savedDataVersion+=1;const o={version:this.savedDataVersion,serverList:Array.from(this.serversMap.values()),selectedServerPk:this.currentServerPk},r=JSON.stringify(o);this.storageService.setDataForHv(this.savedServersStorageKey,r),this.launchListEvents()}checkIfDataWasChanged(){let e=0;const i=this.storageService.getDataForHv(this.savedServersStorageKey);i&&(e=JSON.parse(i).version),e!==this.savedDataVersion&&this.initialize()}launchListEvents(){const e=[],i=[],o=[];this.serversMap.forEach(r=>{r.inHistory&&e.push(r),r.flag===bn.Favorite&&i.push(r),r.flag===bn.Blocked&&o.push(r)}),this.historySubject.next(e),this.favoritesSubject.next(i),this.blockedSubject.next(o)}updateCurrentServerPk(e){this.currentServerPk=e,this.currentServerSubject.next(this.currentServer)}static{this.\u0275fac=function(i){return new(i||t)(ce(yt),ce(ri))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var un=function(t){return t.Stopped="stopped",t.Connecting="Connecting",t.Running="Running",t.ShuttingDown="Shutting down",t.Reconnecting="Connection failed, reconnecting",t}(un||{});class s_e{constructor(){this.updateDate=Date.now()}}class a_e{}class l_e{constructor(){this.latency=0,this.uploadSpeed=0,this.downloadSpeed=0,this.totalUploaded=0,this.totalDownloaded=0,this.connectionDuration=0,this.error=""}}var Vi=function(t){return t[t.PerformingInitialCheck=1]="PerformingInitialCheck",t[t.Off=10]="Off",t[t.Starting=20]="Starting",t[t.Running=100]="Running",t[t.Disconnecting=200]="Disconnecting",t}(Vi||{}),Ir=function(t){return t[t.Busy=1]="Busy",t[t.Ok=2]="Ok",t[t.MustStop=3]="MustStop",t[t.SamePkRunning=4]="SamePkRunning",t[t.SamePkStopped=5]="SamePkStopped",t}(Ir||{});let wc=(()=>{class t{constructor(e,i,o,r,s,a,l){this.apiService=e,this.appsService=i,this.router=o,this.vpnSavedDataService=r,this.http=s,this.snackbarService=a,this.translateService=l,this.vpnClientAppName="vpn-client",this.standardWaitTime=2e3,this.stateSubject=new Ei(null),this.errorSubject=new Ei(!1),this.working=!0,this.requestedServer=null,this.requestedPassword=null,this.updatesStopped=!1,this.currentEventData=new s_e,this.currentEventData.busy=!0,this.lastServiceState=Vi.PerformingInitialCheck}initialize(e){e&&(this.nodeKey?e!==this.nodeKey?this.router.navigate(["vpn","unavailable"],{queryParams:{problem:"pkChange"}}):this.updatesStopped&&(this.updatesStopped=!1,this.updateData()):(this.nodeKey=e,this.vpnSavedDataService.initialize(),this.updateData()))}get backendState(){return this.stateSubject.asObservable()}get errorsConnecting(){return this.errorSubject.asObservable()}updateData(){this.continuallyUpdateData(0)}start(){return!this.working&&this.lastServiceState<20&&(this.changeAppState(!0),!0)}stop(){return!this.working&&this.lastServiceState>=20&&this.lastServiceState<200&&(this.changeAppState(!1),!0)}getIpData(){return this.http.request("GET",window.location.protocol+"//ip.skycoin.com/").pipe(lp(e=>Fs(e.pipe(oi(this.standardWaitTime),wn(4)),Cr(""))),De(e=>[e&&e.ip_address?e.ip_address:this.translateService.instant("common.unknown"),e&&e.country_name?e.country_name:this.translateService.instant("common.unknown")]))}changeServerUsingHistory(e,i){return this.requestedServer=e,this.requestedPassword=i,this.updateRequestedServerPasswordSetting(),this.changeServer()}changeServerUsingDiscovery(e,i){return this.requestedServer=this.vpnSavedDataService.processFromDiscovery(e),this.requestedPassword=i,this.updateRequestedServerPasswordSetting(),this.changeServer()}changeServerManually(e,i){return this.requestedServer=this.vpnSavedDataService.processFromManual(e),this.requestedPassword=i,this.updateRequestedServerPasswordSetting(),this.changeServer()}updateRequestedServerPasswordSetting(){this.requestedServer.usedWithPassword=!!this.requestedPassword&&""!==this.requestedPassword;const e=this.vpnSavedDataService.getSavedVersion(this.requestedServer.pk,!0);e&&(e.usedWithPassword=this.requestedServer.usedWithPassword,this.vpnSavedDataService.updateServer(e))}changeServer(){return!this.working&&(this.stop()||this.processServerChange(),!0)}checkNewPk(e){return this.working?Ir.Busy:this.lastServiceState!==Vi.Off?e===this.vpnSavedDataService.currentServer.pk?Ir.SamePkRunning:Ir.MustStop:this.vpnSavedDataService.currentServer&&e===this.vpnSavedDataService.currentServer.pk?Ir.SamePkStopped:Ir.Ok}processServerChange(){this.dataSubscription&&this.dataSubscription.unsubscribe();const e={pk:this.requestedServer.pk};e.passcode=this.requestedPassword?this.requestedPassword:"",this.stopContinuallyUpdatingData(),this.working=!0,this.sendUpdate(),this.dataSubscription=this.appsService.changeAppSettings(this.nodeKey,this.vpnClientAppName,e).subscribe(()=>{this.vpnSavedDataService.modifyCurrentServer(this.requestedServer),this.requestedServer=null,this.requestedPassword=null,this.working=!1,this.start()},i=>{i=Ze(i),this.snackbarService.showError("vpn.server-change.backend-error",null,!1,i.originalServerErrorMsg),this.working=!1,this.requestedServer=null,this.requestedPassword=null,this.sendUpdate(),this.updateData()})}changeAppState(e){if(this.working)return;this.stopContinuallyUpdatingData(),this.working=!0,this.sendUpdate();const i={status:1};e?(this.lastServiceState=Vi.Starting,this.connectionHistoryPk=null):(this.lastServiceState=Vi.Disconnecting,i.status=0),this.dataSubscription&&this.dataSubscription.unsubscribe(),this.dataSubscription=this.appsService.changeAppSettings(this.nodeKey,this.vpnClientAppName,i).pipe(ii(o=>this.getVpnClientState().pipe(Tt(r=>{if(r){if(e&&r.running)return se(!0);if(!e&&!r.running)return se(!0)}return Cr(o)}))),lp(o=>Fs(o.pipe(oi(this.standardWaitTime),wn(3)),o.pipe(Tt(r=>Cr(r)))))).subscribe(o=>{this.working=!1;const r=this.processAppData(o);this.lastServiceState=r.running?Vi.Running:Vi.Off,this.currentEventData.vpnClientAppData=r,this.currentEventData.updateDate=Date.now(),this.sendUpdate(),this.updateData(),!e&&this.requestedServer&&this.processServerChange()},o=>{o=Ze(o),this.snackbarService.showError(this.lastServiceState===Vi.Starting?"vpn.status-page.problem-starting-error":this.lastServiceState===Vi.Disconnecting?"vpn.status-page.problem-stopping-error":"vpn.status-page.generic-problem-error",null,!1,o.originalServerErrorMsg),this.working=!1,this.sendUpdate(),this.updateData()})}continuallyUpdateData(e){if(this.working&&this.lastServiceState!==Vi.PerformingInitialCheck)return;this.continuousUpdateSubscription&&this.continuousUpdateSubscription.unsubscribe();let i=0;this.continuousUpdateSubscription=se(0).pipe(oi(e),Tt(()=>this.getVpnClientState()),lp(o=>o.pipe(Tt(r=>(this.errorSubject.next(!0),Jr.currentInstance.showDataProblemMsg(),(r=Ze(r)).originalError&&r.originalError.status&&401===r.originalError.status?Cr(r):this.lastServiceState!==Vi.PerformingInitialCheck||i<4?(i+=1,se(r).pipe(oi(this.standardWaitTime))):Cr(r)))))).subscribe(o=>{o?(this.errorSubject.next(!1),Jr.currentInstance.hideDataProblemMsg(),this.lastServiceState===Vi.PerformingInitialCheck&&(this.working=!1),this.vpnSavedDataService.compareCurrentServer(o.serverPk),this.lastServiceState=o.running?Vi.Running:Vi.Off,this.currentEventData.vpnClientAppData=o,this.currentEventData.updateDate=Date.now(),this.sendUpdate()):this.lastServiceState===Vi.PerformingInitialCheck&&(this.router.navigate(["vpn","unavailable"]),this.nodeKey=null,this.updatesStopped=!0),this.continuallyUpdateData(this.standardWaitTime)},o=>{(o=Ze(o)).originalError&&o.originalError.status&&401===o.originalError.status||(this.router.navigate(["vpn","unavailable"]),this.nodeKey=null),this.updatesStopped=!0})}stopContinuallyUpdatingData(){this.continuousUpdateSubscription&&this.continuousUpdateSubscription.unsubscribe()}getVpnClientState(){let e;const i=new Ro;return i.vpnKeyForAuth=this.nodeKey,this.apiService.get(`visors/${this.nodeKey}/summary`,i).pipe(Tt(o=>{let r;if(o&&o.overview)if(this.visorPublicIp=o.overview.public_ip&&o.overview.public_ip.trim()?o.overview.public_ip:null,o.overview.country_code){this.visorCountryCode=o.overview.country_code;const s=rs[o.overview.country_code.toUpperCase()];this.visorCountryName=s||o.overview.country_code}else this.visorCountryCode=null,this.visorCountryName=null;if(o&&o.overview&&o.overview.apps&&o.overview.apps.length>0&&o.overview.apps.forEach(s=>{s.name===this.vpnClientAppName&&(r=s)}),r&&(e=this.processAppData(r)),e.minHops=o.min_hops?o.min_hops:0,e&&e.running){const s=new Ro;return s.vpnKeyForAuth=this.nodeKey,this.apiService.get(`visors/${this.nodeKey}/apps/${this.vpnClientAppName}/connections`,s)}return se(null)}),De(o=>{if(o&&o.length>0){const r=new l_e;o.forEach(s=>{r.latency+=s.latency/o.length,r.uploadSpeed+=s.upload_speed/o.length,r.downloadSpeed+=s.download_speed/o.length,r.totalUploaded+=s.bandwidth_sent,r.totalDownloaded+=s.bandwidth_received,s.error&&(r.error=s.error),s.connection_duration>r.connectionDuration&&(r.connectionDuration=s.connection_duration)}),(!this.connectionHistoryPk||this.connectionHistoryPk!==e.serverPk)&&(this.connectionHistoryPk=e.serverPk,this.uploadSpeedHistory=[0,0,0,0,0,0,0,0,0,0],this.downloadSpeedHistory=[0,0,0,0,0,0,0,0,0,0],this.latencyHistory=[0,0,0,0,0,0,0,0,0,0]),r.latency=Math.round(r.latency),r.uploadSpeed=Math.round(r.uploadSpeed),r.downloadSpeed=Math.round(r.downloadSpeed),r.totalUploaded=Math.round(r.totalUploaded),r.totalDownloaded=Math.round(r.totalDownloaded),this.uploadSpeedHistory.splice(0,1),this.uploadSpeedHistory.push(r.uploadSpeed),r.uploadSpeedHistory=this.uploadSpeedHistory,this.downloadSpeedHistory.splice(0,1),this.downloadSpeedHistory.push(r.downloadSpeed),r.downloadSpeedHistory=this.downloadSpeedHistory,this.latencyHistory.splice(0,1),this.latencyHistory.push(r.latency),r.latencyHistory=this.latencyHistory,e.connectionData=r}return e}))}processAppData(e){const i=new a_e;if(i.running=0!==e.status&&2!==e.status,i.connectionDuration=e.connection_duration,i.appState=un.Stopped,i.running?e.detailed_status===un.Connecting||3===e.status?i.appState=un.Connecting:e.detailed_status===un.Running?i.appState=un.Running:e.detailed_status===un.ShuttingDown?i.appState=un.ShuttingDown:e.detailed_status===un.Reconnecting&&(i.appState=un.Reconnecting):2===e.status&&(i.lastErrorMsg=e.detailed_status,i.lastErrorMsg||(i.lastErrorMsg=this.translateService.instant("vpn.status-page.unknown-error"))),i.killswitch=!1,e.args&&e.args.length>0)for(let o=0;o{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.formBuilder=o,this.snackbarService=r,this.vpnSavedDataService=s}ngOnInit(){this.form=this.formBuilder.group({value:[(this.data.editName?this.data.server.customName:this.data.server.personalNote)||""]}),setTimeout(()=>this.firstInput.nativeElement.focus())}process(){let e=this.vpnSavedDataService.getSavedVersion(this.data.server.pk,!0);e=e||this.data.server;const i=this.form.get("value").value;i!==(this.data.editName?this.data.server.customName:this.data.server.personalNote)?(this.data.editName?e.customName=i:e.personalNote=i,this.vpnSavedDataService.updateServer(e),this.snackbarService.showDone("vpn.server-options.edit-value.changes-made-confirmation"),this.dialogRef.close(!0)):this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Si),O(ot),O(Cc))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-edit-vpn-server-value"]],viewQuery:function(i,o){if(1&i&&st(c_e,5),2&i){let r;fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:11,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","value","maxlength","100","matInput",""],["color","primary",1,"float-right",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),_(7,"translate"),u(),L(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.process()}),p(11),_(12,"translate"),u()()),2&i&&(C("headline",v(1,5,"vpn.server-options.edit-value."+(o.data.editName?"name":"note")+"-title"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(4),S(v(7,7,"vpn.server-options.edit-value."+(o.data.editName?"name":"note")+"-label")),c(5),D(" ",v(12,9,"vpn.server-options.edit-value.apply-button")," "))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,On,Mi,Sn,we],encapsulation:2})}}return t})();const u_e=["firstInput"];let uV=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.mediumModalWidth,e.open(t,o)}constructor(e,i,o){this.dialogRef=e,this.data=i,this.formBuilder=o}ngOnInit(){this.form=this.formBuilder.group({password:["",this.data?void 0:Se.required]}),setTimeout(()=>this.firstInput.nativeElement.focus())}process(){this.dialogRef.close("-"+this.form.get("password").value)}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Si))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-enter-vpn-server-password"]],viewQuery:function(i,o){if(1&i&&st(u_e,5),2&i){let r;fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:12,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","password","type","password","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),_(7,"translate"),u(),L(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.process()}),p(11),_(12,"translate"),u()()),2&i&&(C("headline",v(1,6,"vpn.server-list.password-dialog.title"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(4),S(v(7,8,"vpn.server-list.password-dialog.password"+(o.data?"-if-any":"")+"-label")),c(4),C("disabled",!o.form.valid),c(),D(" ",v(12,10,"vpn.server-list.password-dialog.continue-button")," "))},dependencies:[kn,Qt,Jt,xn,sn,_n,dn,On,Mi,Sn,we],encapsulation:2})}}return t})(),pi=(()=>{class t{static{this.serverListTabStorageKey="ServerListTab"}static{this.currentPk=""}static changeCurrentPk(e){this.currentPk=e}static setDefaultTabForServerList(e){sessionStorage.setItem(t.serverListTabStorageKey,e)}static get vpnTabsData(){const e=sessionStorage.getItem(t.serverListTabStorageKey);return[{icon:"power_settings_new",label:"vpn.start",linkParts:["/vpn",this.currentPk,"status"]},{icon:"list",label:"vpn.servers",linkParts:e?["/vpn",this.currentPk,"servers",e,"1"]:["/vpn",this.currentPk,"servers"]},{icon:"settings",label:"vpn.settings",linkParts:["/vpn",this.currentPk,"settings"]}]}static getLatencyValueString(e){return e<1e3?"time-in-ms":"time-in-segs"}static getPrintableLatency(e){return e<1e3?e+"":(e/1e3).toFixed(1)}static processServerChange(e,i,o,r,s,a,l,d,f,m,g){let b;if(d&&(f||m)||f&&(d||m)||m&&(d||f))throw new Error("Invalid call");if(d)b=d.pk;else if(f)b=f.pk;else{if(!m)throw new Error("Invalid call");b=m.pk}const w=o.getSavedVersion(b,!0),M=w&&(g||w.usedWithPassword),E=i.checkNewPk(b);if(E!==Ir.Busy)if(E!==Ir.SamePkRunning||M){if(E===Ir.MustStop||E===Ir.SamePkRunning&&M){const I=Ut.createConfirmationDialog(s,"vpn.server-change.change-server-while-connected-confirmation");return void I.componentInstance.operationAccepted.subscribe(()=>{I.componentInstance.closeModal(),d?i.changeServerUsingHistory(d,g):f?i.changeServerUsingDiscovery(f,g):m&&i.changeServerManually(m,g),t.redirectAfterServerChange(e,a,l)})}if(E===Ir.SamePkStopped&&!M){const I=Ut.createConfirmationDialog(s,"vpn.server-change.start-same-server-confirmation");return void I.componentInstance.operationAccepted.subscribe(()=>{I.componentInstance.closeModal(),m&&w&&o.processFromManual(m),i.start(),t.redirectAfterServerChange(e,a,l)})}d?i.changeServerUsingHistory(d,g):f?i.changeServerUsingDiscovery(f,g):m&&i.changeServerManually(m,g),t.redirectAfterServerChange(e,a,l)}else r.showWarning("vpn.server-change.already-selected-warning");else r.showError("vpn.server-change.busy-error")}static redirectAfterServerChange(e,i,o){i&&i.close(),e.navigate(["vpn",o,"status"])}static openServerOptions(e,i,o,r,s,a){const l=[],d=[];return e.usedWithPassword?(l.push({icon:"lock_open",label:"vpn.server-options.connect-without-password"}),d.push(201),l.push({icon:"lock_outlined",label:"vpn.server-options.connect-using-another-password"}),d.push(202)):e.enteredManually&&(l.push({icon:"lock_outlined",label:"vpn.server-options.connect-using-password"}),d.push(202)),l.push({icon:"edit",label:"vpn.server-options.edit-name"}),d.push(101),l.push({icon:"subject",label:"vpn.server-options.edit-label"}),d.push(102),(!e||e.flag!==bn.Favorite)&&(l.push({icon:"star",label:"vpn.server-options.make-favorite"}),d.push(1)),e&&e.flag===bn.Favorite&&(l.push({icon:"star_outline",label:"vpn.server-options.remove-from-favorites"}),d.push(-1)),(!e||e.flag!==bn.Blocked)&&(l.push({icon:"pan_tool",label:"vpn.server-options.block"}),d.push(2)),e&&e.flag===bn.Blocked&&(l.push({icon:"thumb_up",label:"vpn.server-options.unblock"}),d.push(-2)),e&&e.inHistory&&(l.push({icon:"delete",label:"vpn.server-options.remove-from-history"}),d.push(-3)),ho.openDialog(a,l,"common.options").afterClosed().pipe(Tt(f=>{if(f){const m=o.getSavedVersion(e.pk,!0);if(e=m||e,d[f-=1]>200){if(201===d[f]){let g=!1;const b=Ut.createConfirmationDialog(a,"vpn.server-options.connect-without-password-confirmation");return b.componentInstance.operationAccepted.subscribe(()=>{g=!0,t.processServerChange(i,r,o,s,a,null,t.currentPk,e,null,null,null),b.componentInstance.closeModal()}),b.afterClosed().pipe(De(()=>g))}return uV.openDialog(a,!1).afterClosed().pipe(De(g=>!(!g||"-"===g||(t.processServerChange(i,r,o,s,a,null,t.currentPk,e,null,null,g.substr(1)),0))))}if(d[f]>100)return d_e.openDialog(a,{editName:101===d[f],server:e}).afterClosed();if(1===d[f])return t.makeFavorite(e,o,s,a);if(-1===d[f])return o.changeFlag(e,bn.None),s.showDone("vpn.server-options.remove-from-favorites-done"),se(!0);if(2===d[f])return t.blockServer(e,o,r,s,a);if(-2===d[f])return o.changeFlag(e,bn.None),s.showDone("vpn.server-options.unblock-done"),se(!0);if(-3===d[f])return t.removeFromHistory(e,o,s,a)}return se(!1)}))}static removeFromHistory(e,i,o,r){let s=!1;const a=Ut.createConfirmationDialog(r,"vpn.server-options.remove-from-history-confirmation");return a.componentInstance.operationAccepted.subscribe(()=>{s=!0,i.removeFromHistory(e.pk),o.showDone("vpn.server-options.remove-from-history-done"),a.componentInstance.closeModal()}),a.afterClosed().pipe(De(()=>s))}static makeFavorite(e,i,o,r){if(e.flag!==bn.Blocked)return i.changeFlag(e,bn.Favorite),o.showDone("vpn.server-options.make-favorite-done"),se(!0);let s=!1;const a=Ut.createConfirmationDialog(r,"vpn.server-options.make-favorite-confirmation");return a.componentInstance.operationAccepted.subscribe(()=>{s=!0,i.changeFlag(e,bn.Favorite),o.showDone("vpn.server-options.make-favorite-done"),a.componentInstance.closeModal()}),a.afterClosed().pipe(De(()=>s))}static blockServer(e,i,o,r,s){if(e.flag!==bn.Favorite&&(!i.currentServer||i.currentServer.pk!==e.pk))return i.changeFlag(e,bn.Blocked),r.showDone("vpn.server-options.block-done"),se(!0);let a=!1;const l=i.currentServer&&i.currentServer.pk===e.pk;let d;d=e.flag!==bn.Favorite?"vpn.server-options.block-selected-confirmation":l?"vpn.server-options.block-selected-favorite-confirmation":"vpn.server-options.block-confirmation";const f=Ut.createConfirmationDialog(s,d);return f.componentInstance.operationAccepted.subscribe(()=>{a=!0,i.changeFlag(e,bn.Blocked),r.showDone("vpn.server-options.block-done"),l&&o.stop(),f.componentInstance.closeModal()}),f.afterClosed().pipe(De(()=>a))}}return t})(),h_e=(()=>{class t{constructor(e){this.clipboardService=e,this.copyEvent=new ke,this.errorEvent=new ke,this.value=""}ngOnDestroy(){this.copyEvent.complete(),this.errorEvent.complete()}copyToClipboard(){this.clipboardService.copy(this.value)?this.copyEvent.emit(this.value):this.errorEvent.emit()}static{this.\u0275fac=function(i){return new(i||t)(O(ap))}}static{this.\u0275dir=de({type:t,selectors:[["","clipboard",""]],hostBindings:function(i,o){1&i&&F("click",function(){return o.copyToClipboard()})},inputs:{value:[0,"clipboard","value"]},outputs:{copyEvent:"copyEvent",errorEvent:"errorEvent"},standalone:!1})}}return t})();const f_e=()=>({"tooltip-word-break":!0});function p_e(t,n){if(1&t&&(h(0,"span",1),p(1),u()),2&t){const e=y();c(),S(e.shortText)}}function m_e(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y();c(),S(e.text)}}let hV=(()=>{class t{constructor(){this.short=!1,this.showTooltip=!0,this.shortTextLength=5}get shortText(){if(this.text.length>2*this.shortTextLength){const e=this.text.length;return`${this.text.slice(0,this.shortTextLength)}...${this.text.slice(e-this.shortTextLength,e)}`}return this.text}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=ae({type:t,selectors:[["app-truncated-text"]],inputs:{short:"short",showTooltip:"showTooltip",text:"text",shortTextLength:"shortTextLength"},standalone:!1,decls:3,vars:5,consts:[[1,"wrapper",3,"matTooltip","matTooltipClass"],[1,"nowrap"]],template:function(i,o){1&i&&(h(0,"div",0),x(1,p_e,2,1,"span",1),x(2,m_e,2,1,"span"),u()),2&i&&(C("matTooltip",o.short&&o.showTooltip?o.text:"")("matTooltipClass",vt(4,f_e)),c(),k(o.short?1:-1),c(),k(o.short?-1:2))},dependencies:[Et],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.nowrap[_ngcontent-%COMP%]{white-space:nowrap}.wrapper[_ngcontent-%COMP%]{display:inline}']})}}return t})();const g_e=t=>({text:t}),__e=()=>({"tooltip-word-break":!0});function b_e(t,n){if(1&t&&(L(0,"app-truncated-text",2),h(1,"mat-icon",3),p(2,"filter_none"),u()),2&t){const e=y();C("short",e.short)("showTooltip",!1)("shortTextLength",e.shortTextLength)("text",e.text),c(),C("inline",!0)}}function v_e(t,n){if(1&t&&(h(0,"div",1)(1,"div",4),p(2),u(),h(3,"mat-icon",3),p(4,"filter_none"),u()()),2&t){const e=y();c(2),S(e.text),c(),C("inline",!0)}}let cp=(()=>{class t{constructor(e){this.snackbarService=e,this.short=!1,this.shortSimple=!1,this.shortTextLength=5}onCopyToClipboardClicked(){this.snackbarService.showDone("copy.copied")}static{this.\u0275fac=function(i){return new(i||t)(O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-copy-to-clipboard-text"]],inputs:{text:"text",short:"short",shortSimple:"shortSimple",shortTextLength:"shortTextLength"},standalone:!1,decls:4,vars:11,consts:[[1,"wrapper","highlight-internal-icon",3,"copyEvent","clipboard","matTooltip","matTooltipClass"],[1,"d-flex"],[1,"text-margin",3,"short","showTooltip","shortTextLength","text"],[3,"inline"],[1,"single-line","text-margin"]],template:function(i,o){1&i&&(h(0,"div",0),_(1,"translate"),F("copyEvent",function(){return o.onCopyToClipboardClicked()}),x(2,b_e,3,5),x(3,v_e,5,2,"div",1),u()),2&i&&(C("clipboard",o.text)("matTooltip",ue(1,5,o.short||o.shortSimple?"copy.tooltip-with-text":"copy.tooltip",ie(8,g_e,o.text)))("matTooltipClass",vt(10,__e)),c(2),k(o.shortSimple?-1:2),c(),k(o.shortSimple?3:-1))},dependencies:[Ae,Et,h_e,hV,we],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.wrapper[_ngcontent-%COMP%]{display:inline}.wrapper[_ngcontent-%COMP%] .text-margin[_ngcontent-%COMP%]{margin-right:5px}.wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:.6rem;-webkit-user-select:none;user-select:none;flex-shrink:0;display:inline!important}']})}}return t})();var xc=function(t){return t[t.Seconds=0]="Seconds",t[t.Minutes=1]="Minutes",t[t.Hours=2]="Hours",t[t.Days=3]="Days",t[t.Weeks=4]="Weeks",t}(xc||{});class y_e{}class wv{static getElapsedTime(n){const e=new y_e;e.timeRepresentation=xc.Seconds,e.totalMinutes=Math.floor(n/60).toString(),e.translationVarName="second";let i=1;n>=60&&n<3600?(e.timeRepresentation=xc.Minutes,i=60,e.translationVarName="minute"):n>=3600&&n<86400?(e.timeRepresentation=xc.Hours,i=3600,e.translationVarName="hour"):n>=86400&&n<604800?(e.timeRepresentation=xc.Days,i=86400,e.translationVarName="day"):n>=604800&&(e.timeRepresentation=xc.Weeks,i=604800,e.translationVarName="week");const o=Math.floor(n/i);return e.elapsedTime=o.toString(),(e.timeRepresentation===xc.Seconds||o>1)&&(e.translationVarName=e.translationVarName+"s"),e}}const C_e=t=>({"grey-button-background":t}),fV=t=>({time:t});function w_e(t,n){1&t&&L(0,"mat-spinner",2),2&t&&C("diameter",14)}function x_e(t,n){1&t&&L(0,"mat-spinner",3),2&t&&C("diameter",18)}function k_e(t,n){1&t&&(h(0,"mat-icon",5),p(1,"refresh"),u()),2&t&&C("inline",!0)}function S_e(t,n){1&t&&(h(0,"mat-icon",6),p(1,"warning"),u()),2&t&&C("inline",!0)}function M_e(t,n){if(1&t&&(x(0,k_e,2,1,"mat-icon",5),x(1,S_e,2,1,"mat-icon",6)),2&t){const e=y();k(e.showAlert?-1:0),c(),k(e.showAlert?1:-1)}}function D_e(t,n){if(1&t&&(h(0,"span",4),p(1),_(2,"translate"),u()),2&t){const e=y();c(),S(ue(2,1,"refresh-button."+e.elapsedTime.translationVarName,ie(4,fV,e.elapsedTime.elapsedTime)))}}let T_e=(()=>{class t{constructor(){this.refeshRate=-1}set secondsSinceLastUpdate(e){this.elapsedTime=wv.getElapsedTime(e)}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=ae({type:t,selectors:[["app-refresh-button"]],inputs:{secondsSinceLastUpdate:"secondsSinceLastUpdate",showLoading:"showLoading",showAlert:"showAlert",refeshRate:"refeshRate"},standalone:!1,decls:7,vars:14,consts:[["mat-button","",1,"time-button","subtle-transparent-button","white-theme",3,"disabled","ngClass","matTooltip"],[1,"internal-container"],[1,"icon","d-none","d-md-inline-block",3,"diameter"],[1,"icon","d-md-none",3,"diameter"],[1,"d-none","d-md-inline"],[1,"icon",3,"inline"],[1,"icon","alert",3,"inline"]],template:function(i,o){1&i&&(h(0,"button",0),_(1,"translate"),h(2,"div",1),x(3,w_e,1,1,"mat-spinner",2),x(4,x_e,1,1,"mat-spinner",3),x(5,M_e,2,2),x(6,D_e,3,6,"span",4),u()()),2&i&&(C("disabled",o.showLoading)("ngClass",ie(10,C_e,!o.showLoading))("matTooltip",o.showAlert?ue(1,7,"refresh-button.error-tooltip",ie(12,fV,o.refeshRate)):""),c(3),k(o.showLoading?3:-1),c(),k(o.showLoading?4:-1),c(),k(o.showLoading?-1:5),c(),k(o.elapsedTime?6:-1))},dependencies:[Ft,Ht,Ae,Et,ci,we],styles:[".time-button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px;height:40px}.time-button[disabled][_ngcontent-%COMP%]{opacity:.7!important;color:#f8f9f9}.time-button[disabled][_ngcontent-%COMP%] span[_ngcontent-%COMP%]{opacity:.7}.time-button[_ngcontent-%COMP%] .internal-container[_ngcontent-%COMP%]{display:flex;align-items:center}.time-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:16px;margin-right:5px;opacity:.5;display:inline-block}@media(max-width:767px){.time-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:22px;margin-right:0;opacity:.75}}.time-button[_ngcontent-%COMP%] .alert[_ngcontent-%COMP%]{color:orange;opacity:1}.time-button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:.6rem}"]})}}return t})(),dp=(()=>{class t{static{this.accumulatedMeasurements=["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}static{this.measurementsPerSec=["B/s","KB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"]}static{this.accumulatedMeasurementsInBits=["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"]}static{this.measurementsPerSecInBits=["b/s","Kb/s","Mb/s","Gb/s","Tb/s","Pb/s","Eb/s","Zb/s","Yb/s"]}transform(e,i){let r,o=!0;i?i.showPerSecond?i.useBits?(r=t.measurementsPerSecInBits,o=!1):r=t.measurementsPerSec:i.useBits?(r=t.accumulatedMeasurementsInBits,o=!1):r=t.accumulatedMeasurements:r=t.accumulatedMeasurements;let s=new xS(e);o||(s=s.multipliedBy(8));let a=r[0],l=0;for(;s.dividedBy(1024).isGreaterThan(1);)s=s.dividedBy(1024),l+=1,a=r[l];let d="";return(!i||i.showValue)&&(d=i&&i.limitDecimals?new xS(s).decimalPlaces(1).toString():s.toFixed(2)),(!i||i.showValue&&i.showUnit)&&(d+=" "),(!i||i.showUnit)&&(d+=a),d}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275pipe=Gi({name:"autoScale",type:t,pure:!0,standalone:!1})}}return t})();const pV=(t,n)=>({"d-lg-none":t,"d-none":n}),E_e=t=>({"normal-height":t}),P_e=(t,n)=>({"d-none d-lg-flex":t,"d-flex":n}),I_e=t=>({transparent:t}),O_e=(t,n)=>({"d-lg-none":t,"d-none d-md-inline-block":n}),IS=(t,n)=>({"mouse-disabled":t,"grey-button-background":n}),A_e=t=>({"d-none":t}),R_e=(t,n)=>({"animation-container":t,"d-none":n}),F_e=t=>({time:t}),mV=t=>({showValue:!0,showUnit:!0,showPerSecond:!0,useBits:t});function N_e(t,n){if(1&t){const e=re();h(0,"button",21),F("click",function(){return V(e),H(y().requestAction(null))}),h(1,"mat-icon"),p(2,"chevron_left"),u()()}}function L_e(t,n){if(1&t&&(h(0,"span",5),p(1),u()),2&t){const e=y();c(),S(e.pageHeaderLabel)}}function B_e(t,n){if(1&t&&(p(0),_(1,"translate")),2&t){const e=y();D(" ",v(1,1,e.titleParts[e.titleParts.length-1])," ")}}function V_e(t,n){1&t&&L(0,"img",6)}function H_e(t,n){if(1&t){const e=re();h(0,"div",23),F("click",function(){const o=V(e).$implicit;return H(y(2).requestAction(o.actionName))}),h(1,"mat-icon",24),p(2),u(),p(3),_(4,"translate"),u()}if(2&t){const e=n.$implicit;C("disabled",e.disabled),c(),C("ngClass",ie(6,I_e,e.disabled)),c(),S(e.icon),c(),D(" ",v(4,4,e.name)," ")}}function U_e(t,n){1&t&&L(0,"div",10)}function z_e(t,n){if(1&t&&(me(0,H_e,5,8,"div",22,Le),x(2,U_e,1,0,"div",10)),2&t){const e=y();ge(e.optionsData),c(2),k(e.returnText?2:-1)}}function j_e(t,n){1&t&&L(0,"div",10)}function $_e(t,n){1&t&&L(0,"img",26),2&t&&C("src","assets/img/lang/"+y(2).language.iconName,$i)}function W_e(t,n){if(1&t){const e=re();h(0,"div",25),F("click",function(){return V(e),H(y().openLanguageWindow())}),x(1,$_e,1,1,"img",26),p(2),_(3,"translate"),u()}if(2&t){const e=y();c(),k(e.language?1:-1),c(),D(" ",v(3,2,e.language?e.language.name:"")," ")}}function G_e(t,n){if(1&t){const e=re();h(0,"div",15)(1,"a",27),_(2,"translate"),F("click",function(){return V(e),H(y().requestAction(null))}),h(3,"mat-icon",28),p(4,"chevron_left"),u()()()}if(2&t){const e=y();c(),C("matTooltip",v(2,2,e.returnText)),c(2),C("inline",!0)}}function q_e(t,n){if(1&t&&(h(0,"span",31),p(1),u()),2&t){const e=y(3);c(),S(e.pageHeaderLabel)}}function K_e(t,n){1&t&&L(0,"app-copy-to-clipboard-text",32),2&t&&C("text",on(y(3).pageHeaderIdentifier))("short",!1)}function Y_e(t,n){if(1&t&&(h(0,"span",29),x(1,q_e,2,1,"span",31),x(2,K_e,1,3,"app-copy-to-clipboard-text",32),u()),2&t){const e=y(2);c(),k(e.pageHeaderLabel?1:-1),c(),k(e.pageHeaderIdentifier?2:-1)}}function X_e(t,n){if(1&t&&(h(0,"span",30),p(1),_(2,"translate"),u()),2&t){const e=y(2);c(),D(" ",v(2,1,e.titleParts[e.titleParts.length-1])," ")}}function Z_e(t,n){if(1&t&&x(0,Y_e,3,2,"span",29)(1,X_e,3,3,"span",30),2&t){const e=y();k(e.pageHeaderLabel||e.pageHeaderIdentifier?0:1)}}function Q_e(t,n){1&t&&L(0,"img",16)}function J_e(t,n){1&t&&L(0,"span",33)}function ebe(t,n){if(1&t&&(h(0,"a",34)(1,"mat-icon",28),p(2),u(),h(3,"span"),p(4),_(5,"translate"),u()()),2&t){const e=y().$implicit,i=y();C("href",e.externalUrl,$i)("ngClass",pt(7,IS,i.disableMouse,!i.disableMouse)),c(),C("inline",!0),c(),S(e.icon),c(2),S(v(5,5,e.label))}}function tbe(t,n){if(1&t&&(h(0,"a",35)(1,"mat-icon",28),p(2),u(),h(3,"span"),p(4),_(5,"translate"),u()()),2&t){const e=y(),i=e.$implicit,o=e.$index,r=y();C("disabled",o===r.selectedTabIndex)("routerLink",i.linkParts)("ngClass",pt(8,IS,r.disableMouse,!r.disableMouse&&o!==r.selectedTabIndex)),c(),C("inline",!0),c(),S(i.icon),c(2),S(v(5,6,i.label))}}function nbe(t,n){if(1&t&&(x(0,J_e,1,0,"span",33),h(1,"div",24),x(2,ebe,6,10,"a",34),x(3,tbe,6,11,"a",35),u()),2&t){const e=n.$implicit,i=n.$index,o=y();k(i>0&&o.tabsData[i-1].group!==e.group?0:-1),c(),C("ngClass",pt(4,O_e,e.onlyIfLessThanLg,1!==o.tabsData.length)),c(),k(e.externalUrl?2:-1),c(),k(e.externalUrl?-1:3)}}function ibe(t,n){if(1&t){const e=re();h(0,"div",18)(1,"button",36),F("click",function(){return V(e),H(y().openTabSelector())}),h(2,"div",37)(3,"mat-icon",28),p(4),u(),h(5,"span"),p(6),_(7,"translate"),u(),h(8,"mat-icon",28),p(9,"keyboard_arrow_down"),u()()()()}if(2&t){const e=y();C("ngClass",ie(8,A_e,1===e.tabsData.length)),c(),C("ngClass",pt(10,IS,e.disableMouse,!e.disableMouse)),c(2),C("inline",!0),c(),S(e.tabsData[e.selectedTabIndex].icon),c(2),S(v(7,6,e.tabsData[e.selectedTabIndex].label)),c(2),C("inline",!0)}}function obe(t,n){if(1&t){const e=re();h(0,"app-refresh-button",41),F("click",function(){return V(e),H(y(2).sendRefreshEvent())}),u()}if(2&t){const e=y(2);C("secondsSinceLastUpdate",e.secondsSinceLastUpdate)("showLoading",e.showLoading)("showAlert",e.showAlert)("refeshRate",e.refeshRate)}}function rbe(t,n){if(1&t&&(h(0,"div",19),x(1,obe,1,4,"app-refresh-button",38),h(2,"button",39)(3,"div",40)(4,"mat-icon",28),p(5,"menu"),u()()()()),2&t){const e=y(),i=Un(13);c(),k(e.showUpdateButton?1:-1),c(),C("matMenuTriggerFor",i),c(2),C("inline",!0)}}function sbe(t,n){if(1&t){const e=re();h(0,"div",43)(1,"div",49),F("click",function(){return V(e),H(y(2).openLanguageWindow())}),L(2,"img",50),p(3),_(4,"translate"),u()()}if(2&t){const e=y(2);c(2),C("src","assets/img/lang/"+e.language.iconName,$i),c(),D(" ",v(4,2,e.language?e.language.name:"")," ")}}function abe(t,n){1&t&&(h(0,"div",45),_(1,"translate"),h(2,"mat-icon",28),p(3,"warning"),u(),p(4),_(5,"translate"),u()),2&t&&(C("matTooltip",v(1,3,"vpn.connection-error.info")),c(2),C("inline",!0),c(2),D(" ",v(5,5,"vpn.connection-error.text")," "))}function lbe(t,n){1&t&&(h(0,"div",55)(1,"mat-icon",54),p(2,"brightness_1"),u()()),2&t&&(c(),C("inline",!0))}function cbe(t,n){if(1&t&&(h(0,"table",47)(1,"tr")(2,"td",51),_(3,"translate"),h(4,"div",24)(5,"div",52)(6,"div",53)(7,"mat-icon",54),p(8,"brightness_1"),u(),p(9),_(10,"translate"),u()()(),x(11,lbe,3,1,"div",55),h(12,"mat-icon",54),p(13,"brightness_1"),u(),p(14),_(15,"translate"),u(),h(16,"td",51),_(17,"translate"),h(18,"mat-icon",28),p(19,"swap_horiz"),u(),p(20),_(21,"translate"),u()(),h(22,"tr")(23,"td",51),_(24,"translate"),h(25,"mat-icon",28),p(26,"arrow_upward"),u(),p(27),_(28,"autoScale"),u(),h(29,"td",51),_(30,"translate"),h(31,"mat-icon",28),p(32,"arrow_downward"),u(),p(33),_(34,"autoScale"),u()()()),2&t){const e=y(2);c(2),Ge(e.vpnData.stateClass+" state-td"),C("matTooltip",v(3,18,e.vpnData.state+"-info")),c(2),C("ngClass",pt(39,R_e,e.showVpnStateAnimation,!e.showVpnStateAnimation)),c(3),C("inline",!0),c(2),D(" ",v(10,20,e.vpnData.state)," "),c(2),k(e.showVpnStateAnimatedDot?11:-1),c(),C("inline",!0),c(2),D(" ",v(15,22,e.vpnData.state)," "),c(2),C("matTooltip",v(17,24,"vpn.connection-info.latency-info")),c(2),C("inline",!0),c(2),D(" ",ue(21,26,"common."+e.getLatencyValueString(e.vpnData.latency),ie(42,F_e,e.getPrintableLatency(e.vpnData.latency)))," "),c(3),C("matTooltip",v(24,29,"vpn.connection-info.upload-info")),c(2),C("inline",!0),c(2),D(" ",ue(28,31,e.vpnData.uploadSpeed,ie(44,mV,e.showVpnDataStatsInBits))," "),c(2),C("matTooltip",v(30,34,"vpn.connection-info.download-info")),c(2),C("inline",!0),c(2),D(" ",ue(34,36,e.vpnData.downloadSpeed,ie(46,mV,e.showVpnDataStatsInBits))," ")}}function dbe(t,n){1&t&&L(0,"mat-spinner",48),2&t&&C("diameter",20)}function ube(t,n){if(1&t&&(h(0,"div")(1,"div",42),x(2,sbe,5,4,"div",43),L(3,"div",44),x(4,abe,6,7,"div",45),u(),h(5,"div",46),x(6,cbe,35,48,"table",47),x(7,dbe,1,1,"mat-spinner",48),u()()),2&t){const e=y();c(2),k(!e.hideLanguageButton&&e.language?2:-1),c(2),k(e.errorsConnectingToVpn?4:-1),c(2),k(e.vpnData?6:-1),c(),k(e.vpnData?-1:7)}}function hbe(t,n){1&t&&(h(0,"div",20)(1,"div",56)(2,"mat-icon",28),p(3,"error_outline"),u(),p(4),_(5,"translate"),u(),h(6,"div",57),p(7),_(8,"translate"),u()()),2&t&&(c(2),C("inline",!0),c(2),D(" ",v(5,3,"vpn.remote-access-title")," "),c(3),D(" ",v(8,5,"vpn.remote-access-text")," "))}let tr=(()=>{class t{set localVpnKey(e){this.localVpnKeyInternal=e,e?this.startGettingVpnInfo():this.stopGettingVpnInfo()}constructor(e,i,o,r,s){this.languageService=e,this.dialog=i,this.router=o,this.vpnClientService=r,this.vpnSavedDataService=s,this.disableMouse=!1,this.selectedTabIndex=0,this.refeshRate=-1,this.showUpdateButton=!0,this.localVpnKeyInternal="",this.refreshRequested=new ke,this.optionSelected=new ke,this.hideLanguageButton=!0,this.showVpnInfo=!1,this.initialVpnStateObtained=!1,this.lastVpnState="",this.showVpnStateAnimation=!1,this.showVpnStateAnimatedDot=!0,this.showVpnDataStatsInBits=!0,this.remoteAccess=!1,this.errorsConnectingToVpn=!1,this.langSubscriptionsGroup=[]}ngOnInit(){this.langSubscriptionsGroup.push(this.languageService.currentLanguage.subscribe(i=>{this.language=i})),this.langSubscriptionsGroup.push(this.languageService.languages.subscribe(i=>{this.hideLanguageButton=!(i.length>1)}));const e=window.location.hostname;!e.toLowerCase().includes("localhost")&&!e.toLowerCase().includes("127.0.0.1")&&(this.remoteAccess=!0)}ngOnDestroy(){this.langSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.refreshRequested.complete(),this.optionSelected.complete(),this.stopGettingVpnInfo()}startGettingVpnInfo(){this.showVpnInfo=!0,this.vpnClientService.initialize(this.localVpnKeyInternal),this.updateVpnDataStatsUnit(),this.vpnDataSubscription=this.vpnClientService.backendState.subscribe(e=>{e&&(this.vpnData={state:"",stateClass:"",latency:e.vpnClientAppData.connectionData?e.vpnClientAppData.connectionData.latency:0,downloadSpeed:e.vpnClientAppData.connectionData?e.vpnClientAppData.connectionData.downloadSpeed:0,uploadSpeed:e.vpnClientAppData.connectionData?e.vpnClientAppData.connectionData.uploadSpeed:0},e.vpnClientAppData.appState===un.Stopped?(this.vpnData.state="vpn.connection-info.state-disconnected",this.vpnData.stateClass="red-clear-text"):e.vpnClientAppData.appState===un.Connecting?(this.vpnData.state="vpn.connection-info.state-connecting",this.vpnData.stateClass="yellow-clear-text"):e.vpnClientAppData.appState===un.Running?(this.vpnData.state="vpn.connection-info.state-connected",this.vpnData.stateClass="green-clear-text"):e.vpnClientAppData.appState===un.ShuttingDown?(this.vpnData.state="vpn.connection-info.state-disconnecting",this.vpnData.stateClass="yellow-clear-text"):e.vpnClientAppData.appState===un.Reconnecting&&(this.vpnData.state="vpn.connection-info.state-reconnecting",this.vpnData.stateClass="yellow-clear-text"),this.initialVpnStateObtained?this.lastVpnState!==this.vpnData.state&&(this.lastVpnState=this.vpnData.state,this.showVpnStateAnimation=!1,this.showVpnStateChangeAnimationSubscription&&this.showVpnStateChangeAnimationSubscription.unsubscribe(),this.showVpnStateChangeAnimationSubscription=se(0).pipe(oi(1)).subscribe(()=>this.showVpnStateAnimation=!0)):(this.initialVpnStateObtained=!0,this.lastVpnState=this.vpnData.state),this.showVpnStateAnimatedDot=!1,this.showVpnStateAnimatedDotSubscription&&this.showVpnStateAnimatedDotSubscription.unsubscribe(),this.showVpnStateAnimatedDotSubscription=se(0).pipe(oi(1)).subscribe(()=>this.showVpnStateAnimatedDot=!0))}),this.errorsConnectingToVpnSubscription=this.vpnClientService.errorsConnecting.subscribe(e=>{this.errorsConnectingToVpn=e})}stopGettingVpnInfo(){this.showVpnInfo=!1,this.vpnDataSubscription&&this.vpnDataSubscription.unsubscribe(),this.errorsConnectingToVpnSubscription&&this.errorsConnectingToVpnSubscription.unsubscribe()}getLatencyValueString(e){return pi.getLatencyValueString(e)}getPrintableLatency(e){return pi.getPrintableLatency(e)}requestAction(e){this.optionSelected.emit(e)}openLanguageWindow(){eV.openDialog(this.dialog)}sendRefreshEvent(){this.refreshRequested.emit()}openTabSelector(){const e=[];this.tabsData.forEach(i=>{e.push({label:i.label,icon:i.icon})}),ho.openDialog(this.dialog,e,"tabs-window.title").afterClosed().subscribe(i=>{i&&(i-=1)!==this.selectedTabIndex&&this.router.navigate(this.tabsData[i].linkParts)})}updateVpnDataStatsUnit(){const e=this.vpnSavedDataService.getDataUnitsSetting();this.showVpnDataStatsInBits=e===er.BitsSpeedAndBytesVolume||e===er.OnlyBits}static{this.\u0275fac=function(i){return new(i||t)(O(Xb),O(Nt),O(yt),O(wc),O(Cc))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-top-bar"]],inputs:{disableMouse:"disableMouse",titleParts:"titleParts",pageHeaderLabel:"pageHeaderLabel",pageHeaderIdentifier:"pageHeaderIdentifier",tabsData:"tabsData",selectedTabIndex:"selectedTabIndex",optionsData:"optionsData",returnText:"returnText",secondsSinceLastUpdate:"secondsSinceLastUpdate",showLoading:"showLoading",showAlert:"showAlert",refeshRate:"refeshRate",showUpdateButton:"showUpdateButton",localVpnKey:"localVpnKey"},outputs:{refreshRequested:"refreshRequested",optionSelected:"optionSelected"},standalone:!1,decls:30,vars:29,consts:[["menu","matMenu"],[1,"top-bar",3,"ngClass"],[1,"button-container"],["mat-icon-button","",1,"transparent-button"],[1,"logo-container"],[1,"page-header-label-mobile"],["src","/assets/img/logo-s.png"],["mat-icon-button","",1,"transparent-button",3,"matMenuTriggerFor"],[1,"top-bar-margin",3,"ngClass"],[3,"overlapTrigger"],[1,"menu-separator"],["mat-menu-item",""],[1,"main-container",3,"ngClass"],[1,"main-area"],[1,"title",3,"ngClass"],[1,"return-container"],["src","./assets/img/logo-vpn.png",1,"title-image"],[1,"lower-container"],[1,"d-md-none",3,"ngClass"],[1,"right-container"],[1,"remote-vpn-alert-container"],["mat-icon-button","",1,"transparent-button",3,"click"],["mat-menu-item","",3,"disabled"],["mat-menu-item","",3,"click","disabled"],[3,"ngClass"],["mat-menu-item","",3,"click"],[1,"flag",3,"src"],[1,"return-button","transparent-button",3,"click","matTooltip"],[3,"inline"],[1,"page-header"],[1,"title-text"],[1,"page-header-label"],[1,"page-header-id",3,"text","short"],["aria-hidden","true",1,"tab-group-separator","d-none","d-md-inline-block"],["mat-button","","target","_blank","rel","noreferrer nofollow noopener",1,"tab-button","white-theme",3,"href","ngClass"],["mat-button","",1,"tab-button","white-theme",3,"disabled","routerLink","ngClass"],["mat-button","",1,"tab-button","select-tab-button","white-theme",3,"click","ngClass"],[1,"d-flex"],[3,"secondsSinceLastUpdate","showLoading","showAlert","refeshRate"],["mat-button","",1,"menu-button","subtle-transparent-button","d-none","d-lg-block",3,"matMenuTriggerFor"],[1,"icon-container"],[3,"click","secondsSinceLastUpdate","showLoading","showAlert","refeshRate"],[1,"top-text-vpn-container"],[1,"languaje-button-vpn"],[1,"elements-separator"],[1,"connection-error-msg-vpn","blinking",3,"matTooltip"],[1,"vpn-info","vpn-dark-box-radius"],["cellspacing","0","cellpadding","0"],[3,"diameter"],[1,"text-container",3,"click"],[1,"language-flag",3,"src"],[3,"matTooltip"],[1,"internal-animation-container"],[1,"animation-area"],[1,"state-icon",3,"inline"],[1,"aminated-state-icon-container"],[1,"top-line"],[1,"bottom-line"]],template:function(i,o){if(1&i&&(h(0,"div",1)(1,"div",2),x(2,N_e,3,0,"button",3),u(),h(3,"div",4),x(4,L_e,2,1,"span",5)(5,B_e,2,3)(6,V_e,1,0,"img",6),u(),h(7,"div",2)(8,"button",7)(9,"mat-icon"),p(10,"menu"),u()()()(),L(11,"div",8),h(12,"mat-menu",9,0),x(14,z_e,3,1),x(15,j_e,1,0,"div",10),x(16,W_e,4,4,"div",11),u(),h(17,"div",12)(18,"div",13)(19,"div",14),x(20,G_e,5,4,"div",15),x(21,Z_e,2,1),x(22,Q_e,1,0,"img",16),u(),h(23,"div",17),me(24,nbe,4,7,null,null,Le),x(26,ibe,10,13,"div",18),x(27,rbe,6,3,"div",19),u()(),x(28,ube,8,4,"div"),u(),x(29,hbe,9,7,"div",20)),2&i){const r=Un(13);C("ngClass",pt(18,pV,!o.showVpnInfo,o.showVpnInfo)),c(2),k(o.returnText?2:-1),c(2),k(o.pageHeaderLabel?4:o.titleParts&&o.titleParts.length>=2?5:6),c(4),C("matMenuTriggerFor",r),c(3),C("ngClass",pt(21,pV,!o.showVpnInfo,o.showVpnInfo)),c(),C("overlapTrigger",!1),c(2),k(o.optionsData&&o.optionsData.length>=1?14:-1),c(),k(!o.hideLanguageButton&&o.optionsData&&o.optionsData.length>=1?15:-1),c(),k(o.hideLanguageButton?-1:16),c(),C("ngClass",ie(24,E_e,!o.showVpnInfo)),c(2),C("ngClass",pt(26,P_e,!o.showVpnInfo,o.showVpnInfo)),c(),k(o.returnText?20:-1),c(),k(o.showVpnInfo?-1:21),c(),k(o.showVpnInfo?22:-1),c(2),ge(o.tabsData),c(2),k(o.tabsData&&o.tabsData[o.selectedTabIndex]?26:-1),c(),k(o.showVpnInfo?-1:27),c(),k(o.showVpnInfo?28:-1),c(),k(o.showVpnInfo&&o.remoteAccess?29:-1)}},dependencies:[Ft,es,Ht,Yo,Ae,Et,os,Vs,Su,ci,cp,T_e,we,dp],styles:["@media(max-width:991px){.normal-height[_ngcontent-%COMP%]{height:55px!important}}.main-container[_ngcontent-%COMP%]{border-bottom:1px solid rgba(255,255,255,.15);padding-bottom:10px;margin-bottom:-5px;height:100px;display:flex}.main-container[_ngcontent-%COMP%] .main-area[_ngcontent-%COMP%]{flex-grow:1}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:.875rem;margin-bottom:15px;margin-left:5px;flex-direction:row;align-items:center}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .title-text[_ngcontent-%COMP%]{z-index:1}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .title-image[_ngcontent-%COMP%]{width:124px;height:21px}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .return-container[_ngcontent-%COMP%]{width:30px;position:relative;top:2px}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .return-container[_ngcontent-%COMP%] .return-button[_ngcontent-%COMP%]{line-height:1;font-size:25px;position:relative;top:2px;width:100%;margin-right:4px;cursor:pointer}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;align-items:center;gap:2px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-group-separator[_ngcontent-%COMP%]{width:1px;height:20px;background:#fff3;margin:0 8px;align-self:center}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{flex:0 0 auto;min-width:0}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px;opacity:.5;margin-right:0;text-decoration:none;height:40px;display:flex;align-items:center}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%]:hover{opacity:.75}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[disabled][_ngcontent-%COMP%]{opacity:1!important;color:#f8f9f9;background:#000000b3!important}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{margin-right:2px;opacity:.75;font-size:18px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:1rem;margin:0 4px;position:relative;top:-1px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .select-tab-button[_ngcontent-%COMP%]{opacity:.75!important}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .select-tab-button[_ngcontent-%COMP%]:hover{opacity:1!important}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%]{display:flex;align-items:center;margin-left:auto}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] app-refresh-button[_ngcontent-%COMP%]{align-self:flex-end}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%]{height:32px;width:32px;min-width:0px!important;background-color:#f8f9f9;border-radius:100%;padding:0!important;line-height:normal;color:#929292;font-size:20px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%] .icon-container[_ngcontent-%COMP%]{display:flex;place-content:center}.menu-separator[_ngcontent-%COMP%]{width:100%;height:1px;background-color:#0000001f}.flag[_ngcontent-%COMP%]{width:24px;margin-right:16px}.transparent[_ngcontent-%COMP%]{opacity:.5}.top-bar[_ngcontent-%COMP%]{position:fixed;z-index:10;width:100%;height:56px;background-color:#f8f9f9;top:0;left:0;right:0;color:#202226;display:flex}.top-bar[_ngcontent-%COMP%] .logo-container[_ngcontent-%COMP%]{flex-grow:1;display:flex;justify-content:center;align-items:center}.top-bar[_ngcontent-%COMP%] .logo-container[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{height:28px}.top-bar[_ngcontent-%COMP%] .button-container[_ngcontent-%COMP%]{flex-shrink:0;width:56px}.top-bar[_ngcontent-%COMP%] .button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:56px;height:56px}.top-bar-margin[_ngcontent-%COMP%]{margin-top:56px;flex-shrink:0}.vpn-info[_ngcontent-%COMP%]{font-size:.7rem;background:#000000b3;padding:15px 20px;align-self:center}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] .state-td[_ngcontent-%COMP%]{font-weight:700}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:2px 0;min-width:90px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:3px;font-size:12px;position:relative;top:1px;-webkit-user-select:none;user-select:none;width:auto;line-height:1}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .state-icon[_ngcontent-%COMP%]{transform:scale(.75)}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .aminated-state-icon-container[_ngcontent-%COMP%]{width:0px;height:0px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .aminated-state-icon-container[_ngcontent-%COMP%] .state-icon[_ngcontent-%COMP%]{height:auto;animation:_ngcontent-%COMP%_state-icon-animation 1s linear 1}@keyframes _ngcontent-%COMP%_state-icon-animation{0%{transform:perspective(1px) scale(1);opacity:.8}to{transform:scale(2);opacity:0}}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .animation-container[_ngcontent-%COMP%]{width:0px;height:0px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .animation-container[_ngcontent-%COMP%] .internal-animation-container[_ngcontent-%COMP%]{width:200px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .animation-container[_ngcontent-%COMP%] .internal-animation-container[_ngcontent-%COMP%] .animation-area[_ngcontent-%COMP%]{display:inline-block;animation:_ngcontent-%COMP%_state-animation 1s linear 1;opacity:0}@keyframes _ngcontent-%COMP%_state-animation{0%{transform:scale(1);opacity:1}to{transform:scale(2.5);opacity:0}}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-of-type{padding-right:30px}.vpn-info[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.top-text-vpn-container[_ngcontent-%COMP%]{display:flex;flex-direction:row-reverse;font-size:.6rem}.top-text-vpn-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:3px}.top-text-vpn-container[_ngcontent-%COMP%] .connection-error-msg-vpn[_ngcontent-%COMP%]{margin:-5px 5px 5px 10px;color:orange}.top-text-vpn-container[_ngcontent-%COMP%] .elements-separator[_ngcontent-%COMP%]{flex-grow:1}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%]{margin:-5px 10px 5px 0}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{cursor:pointer;display:inline;opacity:.8}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]:hover{opacity:1}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .language-flag[_ngcontent-%COMP%]{width:11px;height:11px;margin-right:2px}.remote-vpn-alert-container[_ngcontent-%COMP%]{background-color:#da3439;margin:0 -21px;padding:10px 20px 15px;text-align:center}.remote-vpn-alert-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:14px}.remote-vpn-alert-container[_ngcontent-%COMP%] .top-line[_ngcontent-%COMP%]{font-size:1.25rem}.remote-vpn-alert-container[_ngcontent-%COMP%] .bottom-line[_ngcontent-%COMP%]{font-size:.8rem}.page-header[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;line-height:1.1;gap:2px;min-width:0}.page-header-label[_ngcontent-%COMP%]{font-size:18px;font-weight:500;letter-spacing:.2px}.page-header-id[_ngcontent-%COMP%]{display:inline-block;font-size:12px;opacity:.65;font-family:monospace;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-header-label-mobile[_ngcontent-%COMP%]{font-weight:500;font-size:14px}"]})}}return t})();const gV=()=>["start.title"],fbe=t=>({"paginator-icons-fixer":t}),_V=()=>["/nodes","rewards"],bV=()=>["/nodes","list"],pbe=()=>({"click-effect":!0}),mbe=t=>["/nodes",t,"rewards"],gbe=(t,n)=>({"click-effect":t,"non-selectable":n}),vV=t=>["/nodes",t],_be=t=>({"selectable click-effect":t}),bbe=(t,n)=>n.type;function vbe(t,n){if(1&t&&(h(0,"div",1)(1,"div"),L(2,"app-top-bar",3),u(),L(3,"app-loading-indicator",4),u()),2&t){const e=y();c(2),C("titleParts",vt(4,gV))("tabsData",e.tabsData)("selectedTabIndex",e.showRewardsInfo?1:0)("showUpdateButton",!1)}}function ybe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().$implicit.translatableValue)," ")}function Cbe(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.value," ")}function wbe(t,n){if(1&t&&(h(0,"div",19)(1,"span"),p(2),_(3,"translate"),u(),x(4,ybe,2,3),x(5,Cbe,1,1),u()),2&t){const e=n.$implicit;c(2),D("",v(3,3,e.filterName),": "),c(2),k(e.translatableValue?4:-1),c(),k(e.value?5:-1)}}function xbe(t,n){if(1&t){const e=re();h(0,"div",18),F("click",function(){return V(e),H(y(2).dataFilterer.removeFilters())}),me(1,wbe,6,5,"div",19,Le),h(3,"div",20),p(4),_(5,"translate"),u()()}if(2&t){const e=y(2);c(),ge(e.dataFilterer.currentFiltersTexts),c(3),S(v(5,1,"filters.press-to-remove"))}}function kbe(t,n){if(1&t){const e=re();h(0,"mat-icon",21),_(1,"translate"),F("click",function(){return V(e),H(y(2).dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",v(1,2,"filters.filter-action"))}function Sbe(t,n){1&t&&(h(0,"mat-icon",13),p(1,"more_horiz"),u()),2&t&&(y(),C("matMenuTriggerFor",Un(12)))}function Mbe(t,n){if(1&t&&L(0,"app-paginator",16),2&t){const e=y(2);C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",e.showRewardsInfo?vt(4,_V):vt(5,bV))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function Dbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Tbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Ebe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Pbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Ibe(t,n){if(1&t&&(h(0,"th",33),p(1),u()),2&t){const e=n.$implicit;c(),D(" ",e," ")}}function Obe(t,n){1&t&&(me(0,Ibe,2,1,"th",33,Le),h(2,"th",34),p(3),_(4,"translate"),u()),2&t&&(ge(y(4).rewardDateHeaders),c(3),D(" ",v(4,1,"nodes.reward-total")," "))}function Abe(t,n){1&t&&(h(0,"th"),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"nodes.rewards-loading")," "))}function Rbe(t,n){1&t&&(h(0,"mat-icon",35),_(1,"translate"),p(2,"star"),u()),2&t&&C("inline",!0)("matTooltip",v(1,2,"nodes.hypervisor-info"))}function Fbe(t,n){if(1&t&&(h(0,"td",33)(1,"span",37),p(2),u()()),2&t){const e=n.$implicit,i=y(2).$implicit,o=y(4);c(),Ge(o.getRewardClass(i.localPk,e)),c(),S(o.getRewardAmount(i.localPk,e))}}function Nbe(t,n){if(1&t&&(me(0,Fbe,3,3,"td",33,Le),h(2,"td",34)(3,"span",40),p(4),u()()),2&t){const e=y().$implicit,i=y(4);ge(i.rewardDates),c(4),S(i.getWeekTotal(e.localPk))}}function Lbe(t,n){1&t&&(h(0,"td")(1,"span",37),p(2,"..."),u()())}function Bbe(t,n){1&t&&(h(0,"button",39),_(1,"translate"),h(2,"mat-icon",27),p(3,"chevron_right"),u()()),2&t&&(C("matTooltip",v(1,2,"nodes.view-node")),c(2),C("inline",!0))}function Vbe(t,n){if(1&t){const e=re();h(0,"button",38),_(1,"translate"),F("click",function(o){V(e);const r=y().$implicit,s=y(4);return o.stopPropagation(),o.preventDefault(),H(s.deleteNode(r))}),h(2,"mat-icon"),p(3,"close"),u()()}2&t&&C("matTooltip",v(1,1,"nodes.delete-node"))}function Hbe(t,n){if(1&t){const e=re();h(0,"a",32)(1,"td"),x(2,Rbe,3,4,"mat-icon",35),u(),h(3,"td"),L(4,"span",36),_(5,"translate"),u(),h(6,"td"),p(7),u(),h(8,"td"),p(9),u(),h(10,"td")(11,"span",37),p(12),u()(),x(13,Nbe,5,1),x(14,Lbe,3,0,"td"),h(15,"td",31)(16,"button",38),_(17,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(4);return o.stopPropagation(),o.preventDefault(),H(s.copyToClipboard(r))}),h(18,"mat-icon",27),p(19,"filter_none"),u()(),h(20,"button",38),_(21,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(4);return o.stopPropagation(),o.preventDefault(),H(s.showEditLabelDialog(r))}),h(22,"mat-icon",27),p(23,"short_text"),u()(),x(24,Bbe,4,4,"button",39),x(25,Vbe,4,3,"button",39),u()()}if(2&t){const e=n.$implicit,i=y(4);C("ngClass",vt(23,pbe))("routerLink",ie(24,mbe,e.localPk)),c(2),k(e.isHypervisor?2:-1),c(2),Ge(i.nodeStatusClass(e,!0)),C("matTooltip",v(5,17,i.nodeStatusText(e,!0))),c(3),D(" ",e.label," "),c(2),D(" ",e.localPk," "),c(3),S(i.getRewardAddress(e.localPk)),c(),k(i.rewardDataLoaded?13:-1),c(),k(i.rewardDataLoading?14:-1),c(2),C("matTooltip",v(17,19,"nodes.copy-key")),c(2),C("inline",!0),c(2),C("matTooltip",v(21,21,"labeled-element.edit-label")),c(2),C("inline",!0),c(2),k(e.online?24:-1),c(),k(e.online?-1:25)}}function Ube(t,n){if(1&t){const e=re();h(0,"table",23)(1,"tr")(2,"th",25),_(3,"translate"),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.hypervisorSortData))}),h(4,"mat-icon",26),p(5,"star_outline"),u(),x(6,Dbe,2,2,"mat-icon",27),u(),h(7,"th",25),_(8,"translate"),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.stateSortData))}),L(9,"span",28),x(10,Tbe,2,2,"mat-icon",27),u(),h(11,"th",29),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.labelSortData))}),p(12),_(13,"translate"),x(14,Ebe,2,2,"mat-icon",27),u(),h(15,"th",30),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.keySortData))}),p(16),_(17,"translate"),x(18,Pbe,2,2,"mat-icon",27),u(),h(19,"th"),p(20),_(21,"translate"),u(),x(22,Obe,5,3),x(23,Abe,3,3,"th"),L(24,"th",31),u(),me(25,Hbe,26,26,"a",32,Le),u()}if(2&t){const e=y(3);c(2),C("matTooltip",v(3,11,"nodes.hypervisor")),c(4),k(e.dataSorter.currentSortingColumn===e.hypervisorSortData?6:-1),c(),C("matTooltip",v(8,13,"nodes.state-tooltip")),c(3),k(e.dataSorter.currentSortingColumn===e.stateSortData?10:-1),c(2),D(" ",v(13,15,"nodes.label")," "),c(2),k(e.dataSorter.currentSortingColumn===e.labelSortData?14:-1),c(2),D(" ",v(17,17,"nodes.key")," "),c(2),k(e.dataSorter.currentSortingColumn===e.keySortData?18:-1),c(2),D(" ",v(21,19,"nodes.reward-address")," "),c(2),k(e.rewardDataLoaded?22:-1),c(),k(e.rewardDataLoading?23:-1),c(2),ge(e.dataSource)}}function zbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function jbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function $be(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Wbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Gbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function qbe(t,n){1&t&&(h(0,"mat-icon",35),_(1,"translate"),p(2,"star"),u()),2&t&&C("inline",!0)("matTooltip",v(1,2,"nodes.hypervisor-info"))}function Kbe(t,n){if(1&t&&(h(0,"div",37),p(1),u(),h(2,"div",37),p(3),u()),2&t){const e=y(2).$implicit;c(),S(e.ip),c(2),S(e.publicIp)}}function Ybe(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=y(2).$implicit;c(),S(e.publicIp)}}function Xbe(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=y(2).$implicit;c(),S(e.ip)}}function Zbe(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=y(2).$implicit;c(),Fd("",e.cityName?e.cityName+", ":"","",e.regionName?e.regionName+", ":"","",e.countryCode)}}function Qbe(t,n){if(1&t&&(x(0,Kbe,4,2)(1,Ybe,2,1,"div",37)(2,Xbe,2,1,"div",37),x(3,Zbe,2,3,"div",37)),2&t){const e=y().$implicit;k(e.ip&&e.publicIp&&e.ip!==e.publicIp?0:e.publicIp?1:e.ip?2:-1),c(3),k(e.countryCode?3:-1)}}function Jbe(t,n){1&t&&(h(0,"span"),p(1,"-"),u())}function eve(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=n.$implicit;c(),nt("",e.type,": ",e.count)}}function tve(t,n){if(1&t&&(me(0,eve,2,2,"div",37,bbe),h(2,"div",37),p(3),u()),2&t){const e=y().$implicit;ge(y(4).getTransportCounts(e)),c(3),D("Total: ",e.transports.length)}}function nve(t,n){1&t&&(h(0,"span",37),p(1,"Total: 0"),u())}function ive(t,n){1&t&&(h(0,"span"),p(1,"-"),u())}function ove(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=y().$implicit;c(),S(e.version)}}function rve(t,n){if(1&t&&(h(0,"div",37),p(1),_(2,"translate"),u(),h(3,"div",37),p(4),_(5,"translate"),u()),2&t){const e=y().$implicit;c(),nt("",v(2,4,"nodes.visor-version"),": ",e.version||"-"),c(3),nt("",v(5,6,"nodes.config-label"),": ",e.configVersion||"-")}}function sve(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=n.$implicit;c(),S(e)}}function ave(t,n){if(1&t&&me(0,sve,2,1,"div",37,Le),2&t){const e=y().$implicit;ge(y(4).getNodeServices(e))}}function lve(t,n){1&t&&(h(0,"span"),p(1,"-"),u())}function cve(t,n){1&t&&(h(0,"mat-icon",41),p(1,"check_circle"),u()),2&t&&C("matTooltip",y().$implicit.rewardsAddress)}function dve(t,n){1&t&&(h(0,"mat-icon",42),_(1,"translate"),p(2,"cancel"),u()),2&t&&C("matTooltip",v(1,1,"nodes.reward-not-set"))}function uve(t,n){1&t&&(h(0,"button",39),_(1,"translate"),h(2,"mat-icon",27),p(3,"chevron_right"),u()()),2&t&&(C("matTooltip",v(1,2,"nodes.view-node")),c(2),C("inline",!0))}function hve(t,n){if(1&t){const e=re();h(0,"button",38),_(1,"translate"),F("click",function(o){V(e);const r=y().$implicit,s=y(4);return o.stopPropagation(),o.preventDefault(),H(s.deleteNode(r))}),h(2,"mat-icon"),p(3,"close"),u()()}2&t&&C("matTooltip",v(1,1,"nodes.delete-node"))}function fve(t,n){if(1&t){const e=re();h(0,"a",32)(1,"td"),x(2,qbe,3,4,"mat-icon",35),u(),h(3,"td"),L(4,"span",36),_(5,"translate"),u(),h(6,"td"),p(7),u(),h(8,"td"),x(9,Qbe,4,2),x(10,Jbe,2,0,"span"),u(),h(11,"td"),x(12,tve,4,1),x(13,nve,2,0,"span",37),x(14,ive,2,0,"span"),u(),h(15,"td"),p(16),u(),h(17,"td"),x(18,ove,2,1,"div",37)(19,rve,6,8),u(),h(20,"td"),x(21,ave,2,0),x(22,lve,2,0,"span"),u(),h(23,"td"),x(24,cve,2,1,"mat-icon",41),x(25,dve,3,3,"mat-icon",42),u(),h(26,"td",31)(27,"button",38),_(28,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(4);return o.stopPropagation(),o.preventDefault(),H(s.copyToClipboard(r))}),h(29,"mat-icon",27),p(30,"filter_none"),u()(),h(31,"button",38),_(32,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(4);return o.stopPropagation(),o.preventDefault(),H(s.showEditLabelDialog(r))}),h(33,"mat-icon",27),p(34,"short_text"),u()(),x(35,uve,4,4,"button",39),x(36,hve,4,3,"button",39),u()()}if(2&t){const e=n.$implicit,i=y(4);C("ngClass",pt(30,gbe,e.online,!e.online))("routerLink",e.online?ie(33,vV,e.localPk):null),c(2),k(e.isHypervisor?2:-1),c(2),Ge(i.nodeStatusClass(e,!0)),C("matTooltip",v(5,24,i.nodeStatusText(e,!0))),c(3),D(" ",e.label," "),c(2),k(e.ip||e.publicIp||e.countryCode?9:-1),c(),k(e.ip||e.publicIp||e.countryCode?-1:10),c(2),k(e.transports&&e.transports.length>0?12:-1),c(),k(e.transports&&0===e.transports.length?13:-1),c(),k(e.transports?-1:14),c(2),D(" ",e.localPk," "),c(2),k(e.version&&e.configVersion&&e.version===e.configVersion?18:19),c(3),k(i.getNodeServices(e).length>0?21:-1),c(),k(0===i.getNodeServices(e).length?22:-1),c(2),k(e.rewardsAddress?24:-1),c(),k(e.rewardsAddress?-1:25),c(2),C("matTooltip",v(28,26,"nodes.copy-key")),c(2),C("inline",!0),c(2),C("matTooltip",v(32,28,"labeled-element.edit-label")),c(2),C("inline",!0),c(2),k(e.online?35:-1),c(),k(e.online?-1:36)}}function pve(t,n){if(1&t){const e=re();h(0,"table",23)(1,"tr")(2,"th",25),_(3,"translate"),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.hypervisorSortData))}),h(4,"mat-icon",26),p(5,"star_outline"),u(),x(6,zbe,2,2,"mat-icon",27),u(),h(7,"th",25),_(8,"translate"),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.stateSortData))}),L(9,"span",28),x(10,jbe,2,2,"mat-icon",27),u(),h(11,"th",29),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.labelSortData))}),p(12),_(13,"translate"),x(14,$be,2,2,"mat-icon",27),u(),h(15,"th"),p(16),_(17,"translate"),u(),h(18,"th"),p(19),_(20,"translate"),u(),h(21,"th",30),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.keySortData))}),p(22),_(23,"translate"),x(24,Wbe,2,2,"mat-icon",27),u(),h(25,"th",30),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.versionSortData))}),p(26),_(27,"translate"),x(28,Gbe,2,2,"mat-icon",27),u(),h(29,"th"),p(30),_(31,"translate"),u(),h(32,"th"),p(33),_(34,"translate"),u(),L(35,"th",31),u(),me(36,fve,37,35,"a",32,Le),u()}if(2&t){const e=y(3);c(2),C("matTooltip",v(3,14,"nodes.hypervisor")),c(4),k(e.dataSorter.currentSortingColumn===e.hypervisorSortData?6:-1),c(),C("matTooltip",v(8,16,"nodes.state-tooltip")),c(3),k(e.dataSorter.currentSortingColumn===e.stateSortData?10:-1),c(2),D(" ",v(13,18,"nodes.label")," "),c(2),k(e.dataSorter.currentSortingColumn===e.labelSortData?14:-1),c(2),D(" ",v(17,20,"nodes.ip-location")," "),c(3),D(" ",v(20,22,"nodes.transports")," "),c(3),D(" ",v(23,24,"nodes.key")," "),c(2),k(e.dataSorter.currentSortingColumn===e.keySortData?24:-1),c(2),D(" ",v(27,26,"nodes.version")," "),c(2),k(e.dataSorter.currentSortingColumn===e.versionSortData?28:-1),c(2),D(" ",v(31,28,"nodes.services")," "),c(3),D(" ",v(34,30,"nodes.reward")," "),c(3),ge(e.dataSource)}}function mve(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.label")," ")}function gve(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.inverted-order")," ")}function _ve(t,n){1&t&&(h(0,"div",49)(1,"mat-icon",53),p(2,"star"),u(),p(3,"\xa0 "),h(4,"span",54),p(5),_(6,"translate"),u()()),2&t&&(c(),C("inline",!0),c(4),S(v(6,2,"nodes.hypervisor")))}function bve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y(2).$implicit;c(),S(e.ip)}}function vve(t,n){1&t&&(h(0,"span"),p(1," / "),u())}function yve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y(2).$implicit;c(),S(e.publicIp)}}function Cve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),_(3,"translate"),u(),p(4,": "),x(5,bve,2,1,"span"),x(6,vve,2,0,"span"),x(7,yve,2,1,"span"),u()),2&t){const e=y().$implicit;c(2),S(v(3,4,"nodes.ip")),c(3),k(e.ip?5:-1),c(),k(e.ip&&e.publicIp?6:-1),c(),k(e.publicIp?7:-1)}}function wve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y(2).$implicit;c(),D("",e.cityName,", ")}}function xve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y(2).$implicit;c(),D("",e.regionName,", ")}}function kve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),_(3,"translate"),u(),p(4,": "),x(5,wve,2,1,"span"),x(6,xve,2,1,"span"),p(7),u()),2&t){const e=y().$implicit;c(2),S(v(3,4,"nodes.location")),c(3),k(e.cityName?5:-1),c(),k(e.regionName?6:-1),c(),D("",e.countryCode," ")}}function Sve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),_(3,"translate"),u(),p(4),u()),2&t){const e=y().$implicit;c(2),S(v(3,2,"nodes.version")),c(2),D(": ",e.version," ")}}function Mve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),_(3,"translate"),u(),p(4),u()),2&t){const e=y().$implicit;c(2),S(v(3,2,"nodes.config-version")),c(2),D(": ",e.configVersion," ")}}function Dve(t,n){if(1&t){const e=re();h(0,"a",47)(1,"tr",48)(2,"td",48)(3,"div",44)(4,"div",45),x(5,_ve,7,4,"div",49),h(6,"div",49)(7,"span",8),p(8),_(9,"translate"),u(),p(10,": "),h(11,"span"),p(12),_(13,"translate"),u()(),h(14,"div",49)(15,"span",8),p(16),_(17,"translate"),u(),p(18),u(),x(19,Cve,8,6,"div",49),x(20,kve,8,6,"div",49),h(21,"div",50)(22,"span",8),p(23),_(24,"translate"),u(),p(25),u(),x(26,Sve,5,4,"div",49),x(27,Mve,5,4,"div",49),u(),L(28,"div",51),h(29,"div",46)(30,"button",52),_(31,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(4);return o.stopPropagation(),o.preventDefault(),H(s.showOptionsDialog(r))}),h(32,"mat-icon"),p(33),u()()()()()()()}if(2&t){const e=n.$implicit,i=y(4);C("ngClass",ie(27,_be,e.online))("routerLink",e.online?ie(29,vV,e.localPk):null),c(5),k(e.isHypervisor?5:-1),c(3),S(v(9,17,"nodes.state")),c(3),Ge(i.nodeStatusClass(e,!1)+" title"),c(),S(v(13,19,i.nodeStatusText(e,!1))),c(4),S(v(17,21,"nodes.label")),c(2),D(": ",e.label," "),c(),k(e.ip||e.publicIp?19:-1),c(),k(e.countryCode?20:-1),c(3),S(v(24,23,"nodes.key")),c(2),D(": ",e.localPk," "),c(),k(e.version?26:-1),c(),k(e.configVersion?27:-1),c(3),C("matTooltip",v(31,25,"common.options")),c(3),S("add")}}function Tve(t,n){if(1&t){const e=re();h(0,"table",24)(1,"tr",43),F("click",function(){return V(e),H(y(3).dataSorter.openSortingOrderModal())}),h(2,"td")(3,"div",44)(4,"div",45)(5,"div",8),p(6),_(7,"translate"),u(),h(8,"div"),p(9),_(10,"translate"),x(11,mve,2,3),x(12,gve,2,3),u()(),h(13,"div",46)(14,"mat-icon",27),p(15,"keyboard_arrow_down"),u()()()()(),me(16,Dve,34,31,"a",47,Le),u()}if(2&t){const e=y(3);c(6),S(v(7,5,"tables.sorting-title")),c(3),D("",v(10,7,e.dataSorter.currentSortingColumn.label)," "),c(2),k(e.dataSorter.currentlySortingByLabel?11:-1),c(),k(e.dataSorter.sortingInReverseOrder?12:-1),c(2),C("inline",!0),c(2),ge(e.dataSource)}}function Eve(t,n){if(1&t&&(h(0,"div",17)(1,"div",22),x(2,Ube,27,21,"table",23),x(3,pve,38,32,"table",23),x(4,Tve,18,9,"table",24),u()()),2&t){const e=y(2);c(2),k(e.showRewardsInfo&&e.dataSource.length>0?2:-1),c(),k(!e.showRewardsInfo&&e.dataSource.length>0?3:-1),c(),k(e.dataSource.length>0?4:-1)}}function Pve(t,n){if(1&t&&L(0,"app-paginator",16),2&t){const e=y(2);C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",e.showRewardsInfo?vt(4,_V):vt(5,bV))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function Ive(t,n){1&t&&(h(0,"span",57),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"nodes.empty")))}function Ove(t,n){1&t&&(h(0,"span",57),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"nodes.empty-with-filter")))}function Ave(t,n){if(1&t&&(h(0,"div",17)(1,"div",55)(2,"mat-icon",56),p(3,"warning"),u(),x(4,Ive,3,3,"span",57),x(5,Ove,3,3,"span",57),u()()),2&t){const e=y(2);c(2),C("inline",!0),c(2),k(0===e.allNodes.length?4:-1),c(),k(0!==e.allNodes.length?5:-1)}}function Rve(t,n){if(1&t){const e=re();h(0,"div",2)(1,"div",5)(2,"app-top-bar",6),F("refreshRequested",function(){return V(e),H(y().forceDataRefresh(!0))})("optionSelected",function(o){return V(e),H(y().performAction(o))}),u()(),h(3,"div",5)(4,"div",7)(5,"div",8),x(6,xbe,6,3,"div",9),u(),h(7,"div",10)(8,"div",11),x(9,kbe,3,4,"mat-icon",12),x(10,Sbe,2,1,"mat-icon",13),h(11,"mat-menu",14,0)(13,"div",15),F("click",function(){return V(e),H(y().removeOffline())}),p(14),_(15,"translate"),u()()(),x(16,Mbe,1,6,"app-paginator",16),u()(),x(17,Eve,5,3,"div",17),x(18,Pve,1,6,"app-paginator",16),x(19,Ave,6,3,"div",17),u()()}if(2&t){const e=y();c(2),C("titleParts",vt(22,gV))("tabsData",e.tabsData)("selectedTabIndex",e.showRewardsInfo?1:0)("secondsSinceLastUpdate",e.secondsSinceLastUpdate)("showLoading",e.updating)("showAlert",e.errorsUpdating)("refeshRate",e.storageService.getRefreshTime())("optionsData",e.options),c(2),C("ngClass",ie(23,fbe,e.numberOfPages>1)),c(2),k(e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0?6:-1),c(3),k(e.allNodes&&e.allNodes.length>0?9:-1),c(),k(e.dataSource.length>0?10:-1),c(),C("overlapTrigger",!1),c(2),C("disabled",on(!e.hasOfflineNodes)),c(),D(" ",v(15,20,"nodes.delete-all-offline")," "),c(2),k(e.numberOfPages>1?16:-1),c(),k(0!==e.dataSource.length?17:-1),c(),k(e.numberOfPages>1?18:-1),c(),k(0===e.dataSource.length?19:-1)}}let yV=(()=>{class t extends Lt{constructor(e,i,o,r,s,a,l,d,f,m,g,b){super(),this.nodeService=e,this.multipleNodeDataService=i,this.router=o,this.dialog=r,this.authService=s,this.storageService=a,this.ngZone=l,this.snackbarService=d,this.clipboardService=f,this.translateService=m,this.rewardService=g,this.persistentServerDataResponseKey="serv-dat-response",this.nodesListId="nl",this.dmsgListId="dl",this.hypervisorSortData=new Pt(["isHypervisor"],"nodes.hypervisor",lt.Boolean),this.stateSortData=new Pt(["online"],"nodes.state",lt.Boolean),this.labelSortData=new Pt(["label"],"nodes.label",lt.Text),this.keySortData=new Pt(["localPk"],"nodes.key",lt.Text),this.versionSortData=new Pt(["version"],"nodes.version",lt.Text),this.configVersionSortData=new Pt(["configVersion"],"nodes.config-version",lt.Text),this.dmsgServerSortData=new Pt(["dmsgServerPk"],"nodes.dmsg-server",lt.Text,["dmsgServerPk_label"]),this.pingSortData=new Pt(["roundTripPing"],"nodes.ping",lt.Number),this.loading=!0,this.dataSource=[],this.tabsData=[],this.options=[],this.showDmsgInfo=!1,this.showRewardsInfo=!1,this.canLogOut=!0,this.rewardDataMap=new Map,this.rewardDates=[],this.rewardDateHeaders=[],this.rewardDataLoading=!1,this.rewardDataLoaded=!1,this.hasOfflineNodes=!1,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"nodes.filter-dialog.online",keyNameInElementsArray:"online",type:Mn.Select,printableLabelsForValues:[{value:"",label:"nodes.filter-dialog.online-options.any"},{value:"true",label:"nodes.filter-dialog.online-options.online"},{value:"false",label:"nodes.filter-dialog.online-options.offline"}]},{filterName:"nodes.filter-dialog.label",keyNameInElementsArray:"label",type:Mn.TextInput,maxlength:100},{filterName:"nodes.filter-dialog.key",keyNameInElementsArray:"localPk",type:Mn.TextInput,maxlength:66},{filterName:"nodes.filter-dialog.dmsg",keyNameInElementsArray:"dmsgServerPk",secondaryKeyNameInElementsArray:"dmsgServerPk_label",type:Mn.TextInput,maxlength:66}],this.secondsSinceLastUpdate=0,this.lastUpdate=Date.now(),this.updating=!1,this.errorsUpdating=!1,this.lastUpdateRequestedManually=!1,this.labeledElementTypes=uo,this.updateOptionsMenu(),this.authVerificationSubscription=this.authService.checkLogin().subscribe(E=>{this.canLogOut=E!==Ea.AuthDisabled,this.updateOptionsMenu()}),this.showRewardsInfo=-1!==this.router.url.indexOf("rewards"),this.showDmsgInfo=!1,this.filterProperties.splice(this.filterProperties.length-1);const M=this.showRewardsInfo?"rl":this.nodesListId;this.dataSorter=new wu(this.dialog,this.translateService,this.storageService,[this.hypervisorSortData,this.stateSortData,this.labelSortData,this.keySortData,this.versionSortData,this.configVersionSortData],3,M),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new xu(this.dialog,b,this.router,this.filterProperties,M),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(E=>{this.filteredNodes=E,this.hasOfflineNodes=!1,this.filteredNodes.forEach(I=>{I.online||(this.hasOfflineNodes=!0)}),this.dataSorter.setData(this.filteredNodes)}),this.navigationsSubscription=b.paramMap.subscribe(E=>{if(E.has("page")){let I=Number.parseInt(E.get("page"),10);(isNaN(I)||I<1)&&(I=1),this.currentPageInUrl=I,this.recalculateElementsToShow()}}),this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"schedule",label:"nodes.uptime-title",linkParts:["/nodes","uptime"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}],this.languageSubscription=this.translateService.onLangChange.subscribe(()=>{this.multipleNodeDataService.forceRefresh()})}updateOptionsMenu(){this.options=[],this.options.push({name:"nodes.modify-rewards-all",actionName:"modifyRewardsAll",icon:"edit"}),this.canLogOut&&this.options.push({name:"common.logout",actionName:"logout",icon:"power_settings_new"})}ngOnInit(){return this.startGettingData(!0),this.ngZone.runOutsideAngular(()=>{this.updateTimeSubscription=Ls(5e3,5e3).subscribe(()=>this.ngZone.run(()=>{this.secondsSinceLastUpdate=Math.floor((Date.now()-this.lastUpdate)/1e3)}))}),super.ngOnInit()}ngOnDestroy(){this.authVerificationSubscription.unsubscribe(),this.dataSubscription.unsubscribe(),this.updateTimeSubscription.unsubscribe(),this.navigationsSubscription.unsubscribe(),this.languageSubscription.unsubscribe(),this.updateSubscription&&this.updateSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose()}performAction(e){"logout"===e?this.logout():"updateAll"===e?this.updateAll():"modifyRewardsAll"===e&&this.changeRewardsToAll()}nodeStatusClass(e,i){return e.online?e.health&&e.health.servicesHealth===yu.Unhealthy?i?"dot-yellow blinking":"yellow-text":e.health&&e.health.servicesHealth===yu.Healthy?i?"dot-green":"green-text":i?"dot-outline-gray":"":i?"dot-red":"red-text"}nodeStatusText(e,i){return e.online?e.health&&e.health.servicesHealth===yu.Healthy?"node.statuses.online"+(i?"-tooltip":""):e.health&&e.health.servicesHealth===yu.Unhealthy?"node.statuses.partially-online"+(i?"-tooltip":""):e.health&&e.health.servicesHealth===yu.Connecting?"node.statuses.connecting"+(i?"-tooltip":""):"node.statuses.unknown"+(i?"-tooltip":""):"node.statuses.offline"+(i?"-tooltip":"")}forceDataRefresh(e=!1){e&&(this.lastUpdateRequestedManually=!0),this.multipleNodeDataService.forceRefresh()}startGettingData(e){const i=e?this.getLocalValue(this.persistentServerDataResponseKey):null;let o=this.multipleNodeDataService.startRequestingData();i&&(o=se(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{i||this.saveLocalValue(this.persistentServerDataResponseKey,JSON.stringify(r)),this.updating=!r||r.updating,r&&!r.updating&&(r.data&&!r.error?(this.allNodes=r.data,this.dataFilterer.setData(this.allNodes),this.showRewardsInfo&&!this.rewardDataLoaded&&!this.rewardDataLoading&&this.loadRewardData(),this.loading=!1,this.snackbarService.closeCurrentIfTemporaryError(),this.lastUpdate=r.momentOfLastCorrectUpdate,this.secondsSinceLastUpdate=Math.floor((Date.now()-r.momentOfLastCorrectUpdate)/1e3),this.errorsUpdating=!1,Jr.currentInstance.hideDataProblemMsg(),this.lastUpdateRequestedManually&&(this.snackbarService.showDone("common.refreshed",null),this.lastUpdateRequestedManually=!1)):r.error&&(this.errorsUpdating||this.snackbarService.showError(this.loading?"common.loading-error":"nodes.error-load",null,!0,r.error),this.loading=!1,this.errorsUpdating=!0,Jr.currentInstance.showDataProblemMsg())),i&&this.startGettingData(!1)})}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredNodes){const e=at.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredNodes.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.nodesToShow=this.filteredNodes.slice(i,i+e)}else this.nodesToShow=null;this.nodesToShow&&(this.dataSource=this.nodesToShow)}logout(){const e=Ut.createConfirmationDialog(this.dialog,"common.logout-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.authService.logout().subscribe(()=>this.router.navigate(["login"]),()=>this.snackbarService.showError("common.logout-error"))})}updateAll(){if(!this.dataSource||0===this.dataSource.length)return void this.snackbarService.showError("nodes.no-visors-to-update");const e=[],i=[];this.dataSource.forEach(o=>{if(o.online){const r={key:o.localPk,label:o.label,version:o.version,tag:o.buildTag};Ut.checkIfTagIsUpdatable(o.buildTag)?e.push(r):i.push(r)}}),uge.openDialog(this.dialog,e,i)}changeRewardsToAll(){if(!this.dataSource||0===this.dataSource.length)return void this.snackbarService.showError("nodes.no-visors-to-modify");const e=[];this.dataSource.forEach(o=>{o.online&&e.push({key:o.localPk,label:o.label})}),Fge.openDialog(this.dialog,{nodes:e})}recursivelyUpdateWallets(e,i,o=0){return this.nodeService.update(e[e.length-1]).pipe(ii(()=>se(null)),Tt(r=>(r&&r.updated&&!r.error?this.snackbarService.showDone(this.translateService.instant("nodes.update.done",{name:i[i.length-1]})):(this.snackbarService.showError(this.translateService.instant("nodes.update.update-error",{name:i[i.length-1]})),o+=1),e.pop(),i.pop(),e.length>=1?this.recursivelyUpdateWallets(e,i,o):se(o))))}showOptionsDialog(e){const i=[{icon:"filter_none",label:"nodes.copy-key"}];i.push({icon:"short_text",label:"labeled-element.edit-label"}),e.online||i.push({icon:"close",label:"nodes.delete-node"}),ho.openDialog(this.dialog,i,"common.options").afterClosed().subscribe(o=>{1===o?this.copySpecificTextToClipboard(e.localPk):2===o?this.showEditLabelDialog(e):3===o&&this.deleteNode(e)})}copyToClipboard(e){this.copySpecificTextToClipboard(e.localPk)}copySpecificTextToClipboard(e){this.clipboardService.copy(e)&&this.snackbarService.showDone("copy.copied")}showEditLabelDialog(e){let i=this.storageService.getLabelInfo(e.localPk);i||(i={id:e.localPk,label:"",identifiedElementType:uo.Node}),DS.openDialog(this.dialog,i).afterClosed().subscribe(o=>{o&&this.forceDataRefresh()})}deleteNode(e){const i=Ut.createConfirmationDialog(this.dialog,"nodes.delete-node-confirmation");i.componentInstance.operationAccepted.subscribe(()=>{i.close(),this.storageService.setLocalNodesAsHidden([e.localPk],[e.ip]),this.forceDataRefresh(),this.snackbarService.showDone("nodes.deleted")})}getTransportCounts(e){if(!e.transports||0===e.transports.length)return[];const i={};return e.transports.forEach(o=>{const r=(o.type||"unknown").toUpperCase();i[r]=(i[r]||0)+1}),Object.keys(i).sort().map(o=>({type:o,count:i[o]}))}getNodeServices(e){const i=[];return e.apps&&e.apps.forEach(o=>{1===o.status&&("skysocks"===o.name?i.push("Proxy Server"):"vpn-server"===o.name&&i.push("VPN Server"))}),e.isPublic&&i.push("Public Visor"),e.autoconnectTransports&&i.push("Autoconnect"),i}loadRewardData(){if(!this.allNodes||0===this.allNodes.length)return;this.rewardDataLoading=!0;const e=this.allNodes.map(i=>i.localPk);this.rewardService.fetchRewardData(e).subscribe(i=>{this.rewardDataMap=i,this.rewardDates=this.rewardService.getCachedDates(),this.rewardDateHeaders=this.rewardDates.map(o=>this.rewardService.formatDateShort(o)),this.rewardDataLoading=!1,this.rewardDataLoaded=!0})}getRewardData(e){return this.rewardDataMap.get(e)||null}getRewardAmount(e,i){const o=this.rewardDataMap.get(e);return o&&o.dailyAmounts[i]&&0!==o.dailyAmounts[i]?o.dailyAmounts[i].toFixed(2):"-"}getRewardClass(e,i){const o=this.rewardDataMap.get(e);return o&&o.dailyAmounts[i]&&0!==o.dailyAmounts[i]?o.dailySent[i]?"reward-sent":"reward-pending":""}getWeekTotal(e){const i=this.rewardDataMap.get(e);return i&&0!==i.weekTotal?i.weekTotal.toFixed(2):"-"}getRewardAddress(e){const i=this.allNodes?.find(r=>r.localPk===e);if(i?.rewardsAddress)return i.rewardsAddress;const o=this.rewardDataMap.get(e);return o?.rewardAddress?o.rewardAddress:"-"}removeOffline(){let e="nodes.delete-all-offline-confirmation";this.dataFilterer.currentFiltersTexts&&this.dataFilterer.currentFiltersTexts.length>0&&(e="nodes.delete-all-filtered-offline-confirmation");const i=Ut.createConfirmationDialog(this.dialog,e);i.componentInstance.operationAccepted.subscribe(()=>{i.close();const o=[],r=[];this.filteredNodes.forEach(s=>{s.online||(o.push(s.localPk),r.push(s.ip))}),o.length>0&&(this.storageService.setLocalNodesAsHidden(o,r),this.forceDataRefresh(),1===o.length?this.snackbarService.showDone("nodes.deleted-singular"):this.snackbarService.showDone("nodes.deleted-plural",{number:o.length}))})}static{this.\u0275fac=function(i){return new(i||t)(O(Yi),O(JB),O(yt),O(Nt),O(ep),O(ri),O(Ce),O(ot),O(ap),O(Xo),O(Nge),O(Li))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-node-list"]],standalone:!1,features:[_e],decls:2,vars:2,consts:[["selectionMenu","matMenu"],[1,"d-flex","flex-column","h-100","w-100"],[1,"row"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton"],[1,"h-100"],[1,"col-12"],[3,"refreshRequested","optionSelected","titleParts","tabsData","selectedTabIndex","secondsSinceLastUpdate","showLoading","showAlert","refeshRate","optionsData"],[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click","disabled"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow","full-node-list-margins"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none","nowrap"],[1,"sortable-column","small-column",3,"click","matTooltip"],[1,"hypervisor-icon","grey-text"],[3,"inline"],[1,"dot-outline-gray"],[1,"sortable-column","labels",3,"click"],[1,"sortable-column",3,"click"],[1,"actions"],[1,"selectable","link-row",3,"ngClass","routerLink"],[1,"reward-day-column"],[1,"reward-total-column"],[1,"hypervisor-icon",3,"inline","matTooltip"],[3,"matTooltip"],[2,"font-size","0.85em"],["mat-button","",1,"big-action-button","transparent-button",3,"click","matTooltip"],["mat-button","",1,"big-action-button","transparent-button",3,"matTooltip"],[2,"font-size","0.85em","font-weight","bold"],[2,"color","#4caf50","font-size","20px",3,"matTooltip"],[2,"color","#f44336","font-size","20px",3,"matTooltip"],[1,"selectable","click-effect",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[1,"link-row",3,"ngClass","routerLink"],[1,"d-block"],[1,"list-row"],[1,"list-row","long-content"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"hypervisor-icon",3,"inline"],[1,"yellow-clear-text","title"],[1,"box-internal-container","font-sm"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(x(0,vbe,4,5,"div",1),x(1,Rve,20,25,"div",2)),2&i&&(k(o.loading?0:-1),c(),k(o.loading?-1:1))},dependencies:[Ft,es,Ht,Yo,Ae,Et,os,Vs,Su,Qr,Cv,tr,we],styles:[".labels[_ngcontent-%COMP%]{width:15%}.actions[_ngcontent-%COMP%]{text-align:right;width:120px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}.hypervisor-icon[_ngcontent-%COMP%]{font-size:14px!important;line-height:14px!important;position:relative;top:2px;margin-left:2px;color:#d48b05}.small-column[_ngcontent-%COMP%]{width:1px}.non-selectable[_ngcontent-%COMP%]{cursor:not-allowed}.reward-day-column[_ngcontent-%COMP%]{text-align:center;white-space:nowrap;min-width:60px}.reward-total-column[_ngcontent-%COMP%]{text-align:center;white-space:nowrap;min-width:70px}.reward-sent[_ngcontent-%COMP%]{color:#4caf50}.reward-pending[_ngcontent-%COMP%]{color:#ff9800}"]})}}return t})();function Fve(t,n){1&t&&(h(0,"div",6),L(1,"mat-spinner",7),u())}function Nve(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2,".dmsg"),u(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),u()()),2&t){const e=y(4);c(3),Ge(e.proxyStatus.dmsg_web.running?"status-ok":"status-off"),c(),D(" ",e.proxyStatus.dmsg_web.running?"Yes":"No"," "),c(2),S(e.proxyStatus.dmsg_web.socks_addr||"-"),c(2),S(e.proxyStatus.dmsg_web.upstream_socks||"direct")}}function Lve(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2,".skynet"),u(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),u()()),2&t){const e=y(4);c(3),Ge(e.proxyStatus.skynet_web.running?"status-ok":"status-off"),c(),D(" ",e.proxyStatus.skynet_web.running?"Yes":"No"," "),c(2),S(e.proxyStatus.skynet_web.socks_addr||"-"),c(2),S(e.proxyStatus.skynet_web.upstream_socks||"direct")}}function Bve(t,n){if(1&t&&(h(0,"table",21)(1,"tr")(2,"th"),p(3,"Resolver"),u(),h(4,"th"),p(5,"Running"),u(),h(6,"th"),p(7,"SOCKS"),u(),h(8,"th"),p(9,"Upstream"),u()(),rt(10,Nve,9,5,"tr",3)(11,Lve,9,5,"tr",3),u()),2&t){const e=y(3);c(10),C("ngIf",e.proxyStatus.dmsg_web),c(),C("ngIf",e.proxyStatus.skynet_web)}}function Vve(t,n){if(1&t&&(h(0,"div",19),rt(1,Bve,12,2,"table",20),u()),2&t){const e=y(2);c(),C("ngIf",e.proxyStatus.dmsg_web||e.proxyStatus.skynet_web)}}function Hve(t,n){if(1&t){const e=re();h(0,"div")(1,"h3",8),p(2,"Resolving Proxy"),u(),h(3,"p",9),p(4," Browse "),h(5,"strong"),p(6,".skynet"),u(),p(7," and "),h(8,"strong"),p(9,".dmsg"),u(),p(10," domains. Set an upstream SOCKS5 proxy to route all other traffic through skysocks. "),u(),rt(11,Vve,2,1,"div",10),h(12,"div",11)(13,"div",12)(14,"mat-checkbox",13),F("change",function(o){V(e);const r=y();return r.form.get("skynetEnabled").setValue(o.checked),H(r.toggleProxy())}),p(15," Enable resolving proxy (.skynet + .dmsg) "),u()(),h(16,"form",14)(17,"div",15)(18,"mat-form-field",16)(19,"mat-label"),p(20,"Upstream SOCKS5 (e.g. 127.0.0.1:1080)"),u(),L(21,"input",17),u(),h(22,"button",18),F("click",function(){return V(e),H(y().setUpstream())}),p(23," Set "),u()()()()()}if(2&t){const e=y();c(11),C("ngIf",e.proxyStatus),c(3),C("checked",e.form.get("skynetEnabled").value)("disabled",e.loading),c(2),C("formGroup",e.form),c(6),C("disabled",e.loading)}}let Uve=(()=>{class t{constructor(e,i,o,r){this.dialogRef=e,this.data=i,this.nodeService=o,this.snackbarService=r,this.loading=!1,this.proxyStatus=null,this.skynetPorts=[],this.newPort="",this.form=new ov({skynetEnabled:new Ia(!1),upstream:new Ia("")}),this.loadStatus(),this.loadPorts()}loadStatus(){this.loading=!0,this.nodeService.getProxies(this.data.nodeKey).subscribe(e=>{this.proxyStatus=e,this.loading=!1;const i=e?.skynet_web?.running||!1,o=e?.skynet_web?.upstream_socks||"";this.form.get("skynetEnabled").setValue(i),this.form.get("upstream").setValue(o)},()=>{this.loading=!1})}loadPorts(){this.nodeService.getSkynetPorts(this.data.nodeKey).subscribe(e=>{this.skynetPorts=(e||[]).sort((i,o)=>i-o)},()=>{})}toggleProxy(){const e=this.form.get("skynetEnabled").value;this.loading=!0,this.nodeService.setProxyEnabled(this.data.nodeKey,"skynet",e).subscribe(()=>{this.nodeService.setProxyEnabled(this.data.nodeKey,"dmsg",e).subscribe(()=>{this.loading=!1,this.snackbarService.showDone(e?"Resolving proxy enabled":"Resolving proxy disabled"),this.loadStatus()},()=>{this.loading=!1})},()=>{this.loading=!1,this.snackbarService.showError("Failed to toggle proxy")})}setUpstream(){const e=this.form.get("upstream").value.trim();this.loading=!0,this.nodeService.setProxyUpstream(this.data.nodeKey,"skynet",e).subscribe(()=>{this.loading=!1,this.snackbarService.showDone(e?`Upstream set to ${e}`:"Upstream cleared"),this.loadStatus()},()=>{this.loading=!1,this.snackbarService.showError("Failed to set upstream")})}addPort(){const e=parseInt(this.newPort,10);isNaN(e)||e<1||e>65535?this.snackbarService.showError("Invalid port number"):this.nodeService.registerSkynetPort(this.data.nodeKey,e).subscribe(()=>{this.newPort="",this.snackbarService.showDone(`Port ${e} forwarded`),this.loadPorts()},i=>{this.snackbarService.showError(i?.error?.error||"Failed to register port")})}removePort(e){this.nodeService.deregisterSkynetPort(this.data.nodeKey,e).subscribe(()=>{this.snackbarService.showDone(`Port ${e} removed`),this.loadPorts()},()=>{this.snackbarService.showError("Failed to deregister port")})}close(){this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Yi),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-proxy-settings"]],standalone:!1,decls:9,vars:2,consts:[[1,"generic-dialog-container"],["mat-dialog-title",""],["class","text-center py-3",4,"ngIf"],[4,"ngIf"],["align","end"],["mat-button","",3,"click"],[1,"text-center","py-3"],["diameter","30",1,"mx-auto"],[1,"section-title"],[1,"help-text"],["class","proxy-status",4,"ngIf"],[1,"proxy-form"],[1,"form-row","toggle-row"],[3,"change","checked","disabled"],[3,"formGroup"],[1,"form-row","upstream-row"],["appearance","outline",1,"upstream-field"],["matInput","","formControlName","upstream","placeholder","127.0.0.1:1080"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"proxy-status"],["class","status-table",4,"ngIf"],[1,"status-table"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"h2",1),p(2,"Skynet Settings"),u(),h(3,"mat-dialog-content"),rt(4,Fve,2,0,"div",2)(5,Hve,24,5,"div",3),u(),h(6,"mat-dialog-actions",4)(7,"button",5),F("click",function(){return o.close()}),p(8,"Close"),u()()()),2&i&&(c(4),C("ngIf",o.loading),c(),C("ngIf",!o.loading))},dependencies:[lf,kn,Qt,Jt,xn,sn,_n,Rk,A4,au,dn,ns,On,Ht,ci,Fo],styles:[".section-title[_ngcontent-%COMP%]{font-size:15px;font-weight:500;margin:16px 0 4px;color:#000000de}.section-title[_ngcontent-%COMP%]:first-of-type{margin-top:0}.help-text[_ngcontent-%COMP%]{color:#0009;font-size:13px;margin-bottom:12px}.help-text[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:#0000000f;padding:1px 4px;border-radius:3px;font-size:12px}.status-table[_ngcontent-%COMP%]{width:100%;margin-bottom:12px;border-collapse:collapse}.status-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .status-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:5px 8px;text-align:left;border-bottom:1px solid rgba(0,0,0,.08);font-size:13px}.status-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{color:#00000080;font-weight:500}.status-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{color:#000000de}.status-table[_ngcontent-%COMP%] .status-ok[_ngcontent-%COMP%]{color:#4caf50;font-weight:500}.status-table[_ngcontent-%COMP%] .status-off[_ngcontent-%COMP%]{color:#00000061}.proxy-form[_ngcontent-%COMP%]{margin-top:8px;margin-bottom:8px}.form-row[_ngcontent-%COMP%]{margin-bottom:12px}.upstream-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.upstream-row[_ngcontent-%COMP%] .upstream-field[_ngcontent-%COMP%]{flex:1}.no-ports[_ngcontent-%COMP%]{color:#00000061;font-style:italic;font-size:13px}.port-list[_ngcontent-%COMP%]{margin-bottom:8px}.port-item[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border-bottom:1px solid rgba(0,0,0,.06)}.port-item[_ngcontent-%COMP%] .port-number[_ngcontent-%COMP%]{font-family:monospace;font-size:14px;font-weight:500}.add-port-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.add-port-row[_ngcontent-%COMP%] .port-field[_ngcontent-%COMP%]{width:120px}"]})}}return t})();const zve=["content"],OS=t=>({number:t}),jve=t=>({count:t}),$ve=t=>({time:t});function Wve(t,n){if(1&t&&(h(0,"div",15),p(1),_(2,"translate"),u()),2&t){const e=y(2);c(),D(" ",ue(2,1,"node.logs.filter-ignored",ie(4,OS,e.logEntries.length-e.filteredLogEntries.length))," ")}}function Gve(t,n){if(1&t){const e=re();h(0,"div",12),F("click",function(){return V(e),H(y().showFilters())}),h(1,"div",13)(2,"div")(3,"span"),p(4),_(5,"translate"),u(),h(6,"span",14),p(7),_(8,"translate"),u()(),x(9,Wve,3,6,"div",15),u(),L(10,"div",16),u()}if(2&t){const e=y();c(4),D("",v(5,3,"node.logs.selected-filter")," "),c(3),S(v(8,5,"node.logs."+e.levelDetails.get(e.currentMinimumLevel).levelFilterName)),c(2),k(e.logEntries.length>e.filteredLogEntries.length?9:-1)}}function qve(t,n){if(1&t&&(h(0,"div",3)(1,"mat-icon",17),p(2,"history"),u(),p(3),_(4,"translate"),u()),2&t){const e=y();c(),C("inline",!0),c(2),D(" ",ue(4,2,"node.logs.dropped",ie(5,jve,e.totalDropped))," ")}}function Kve(t,n){if(1&t&&(h(0,"div",4)(1,"a",18),p(2),_(3,"translate"),u()()),2&t){const e=y();c(),C("href",e.getFullLogsUrl(),$i),c(),D(" ",ue(3,2,"node.logs.view-rest",ie(5,OS,e.totalLogs))," ")}}function Yve(t,n){1&t&&p(0," : ")}function Xve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y().$implicit;c(),D(" ",e.msg," ")}}function Zve(t,n){if(1&t&&(h(0,"span",21),p(1),u(),h(2,"span"),p(3),u()),2&t){const e=n.$implicit;c(),D(" ",e.name," "),c(2),D(' ="',e.value,'" ')}}function Qve(t,n){if(1&t&&(h(0,"div",4)(1,"span",19),p(2),u(),h(3,"span"),p(4),u(),p(5," [ "),h(6,"span",19),p(7),u(),h(8,"span",20),p(9),u(),p(10," ]"),x(11,Yve,1,0),x(12,Xve,2,1,"span"),me(13,Zve,4,2,null,null,Le),u()),2&t){const e=n.$implicit,i=y(2);c(2),D(" ",e.time," "),c(),Ge(i.levelDetails.get(e.level).colorClass),c(),D(" ",i.levelDetails.get(e.level).name," "),c(3),D(" ",e.func," "),c(2),D(" ",e._module," "),c(2),k(e.msg?11:-1),c(),k(e.msg?12:-1),c(),ge(e.extra)}}function Jve(t,n){1&t&&me(0,Qve,15,8,"div",4,Le),2&t&&ge(y().filteredLogEntries)}function eye(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"node.logs.view-all")," ")}function tye(t,n){if(1&t&&(p(0),_(1,"translate")),2&t){const e=y(2);D(" ",ue(1,1,"node.logs.view-rest",ie(4,OS,e.totalLogs))," ")}}function nye(t,n){if(1&t&&(h(0,"div",4)(1,"a",18),x(2,eye,2,3),x(3,tye,2,6),u()()),2&t){const e=y();c(),C("href",e.getFullLogsUrl(),$i),c(),k(e.hasMoreLogMessages?-1:2),c(),k(e.hasMoreLogMessages?3:-1)}}function iye(t,n){1&t&&(h(0,"div",5),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"node.logs.no-logs")," "))}function oye(t,n){1&t&&(h(0,"div",5),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"node.logs.no-logs-for-filter")," "))}function rye(t,n){1&t&&L(0,"app-loading-indicator",6),2&t&&C("showWhite",!1)}function sye(t,n){if(1&t&&(h(0,"div",11)(1,"mat-icon",9),p(2,"refresh"),u(),h(3,"span"),p(4),_(5,"translate"),u()()),2&t){const e=y();c(),C("inline",!0),c(3),S(ue(5,2,"refresh-button."+e.elapsedTime.translationVarName,ie(5,$ve,e.elapsedTime.elapsedTime)))}}var vn=function(t){return t[t.PanicLevel=0]="PanicLevel",t[t.FatalLevel=1]="FatalLevel",t[t.ErrorLevel=2]="ErrorLevel",t[t.WarnLevel=3]="WarnLevel",t[t.InfoLevel=4]="InfoLevel",t[t.DebugLevel=5]="DebugLevel",t[t.TraceLevel=6]="TraceLevel",t[t.Unknown=7]="Unknown",t}(vn||{});class aye{constructor(){this.extra=[]}}let lye=(()=>{class t{static openDialog(e){const i=new cn;return i.autoFocus=!1,i.width=at.largeModalWidth,e.open(t,i)}constructor(e,i,o,r,s){this.dialogRef=e,this.nodeService=i,this.snackbarService=o,this.ngZone=r,this.dialog=s,this.levelDetails=new Map([[vn.PanicLevel,{name:"PANIC",colorClass:"panic-level-color",levelFilterName:"filter-panic",importance:8}],[vn.FatalLevel,{name:"FATAL",colorClass:"fatal-level-color",levelFilterName:"filter-faltal",importance:7}],[vn.ErrorLevel,{name:"ERROR",colorClass:"error-level-color",levelFilterName:"filter-error",importance:6}],[vn.WarnLevel,{name:"WARNING",colorClass:"warning-level-color",levelFilterName:"filter-warning",importance:5}],[vn.InfoLevel,{name:"INFO",colorClass:"info-level-color",levelFilterName:"filter-info",importance:4}],[vn.DebugLevel,{name:"DEBUG",colorClass:"debug-level-color",levelFilterName:"filter-debug",importance:3}],[vn.TraceLevel,{name:"TRACE",colorClass:"trace-level-color",levelFilterName:"filter-all",importance:2}],[vn.Unknown,{name:"UNKNOWN LOG",colorClass:"unknown-level-color",levelFilterName:"filter-all",importance:1}]]),this.currentMinimumLevel=vn.Unknown,this.loading=!0,this.LoadingMoment=0,this.liveTail=!0,this.livePollMs=2e3,this.logCursor=0,this.totalDropped=0,this.wasAtBottom=!0,this.maxElementsPerPage=1e3,this.logEntries=[],this.filteredLogEntries=[],this.hasMoreLogMessages=!1,this.totalLogs=0,this.shouldShowError=!0}ngOnInit(){this.loadData(0)}ngOnDestroy(){this.removeSubscription(),this.removeTimeSubscription()}showFilters(){const e=[{icon:"",label:"node.logs.filter-all"},{icon:"",label:"node.logs.filter-debug"},{icon:"",label:"node.logs.filter-info"},{icon:"",label:"node.logs.filter-warning"},{icon:"",label:"node.logs.filter-error"},{icon:"",label:"node.logs.filter-faltal"},{icon:"",label:"node.logs.filter-panic"}],i=[vn.Unknown,vn.DebugLevel,vn.InfoLevel,vn.WarnLevel,vn.ErrorLevel,vn.FatalLevel,vn.PanicLevel];for(let o=0;o<=i.length;o++)this.currentMinimumLevel===i[o]&&(e[o].icon="check");ho.openDialog(this.dialog,e,"node.logs.filter-title").afterClosed().subscribe(o=>{this.currentMinimumLevel=i[o-1],this.filter()})}loadData(e){this.removeSubscription(),this.captureScrollTailState(),this.loading=0===this.logEntries.length;const i=this.logCursor;this.subscription=se(1).pipe(oi(e),Tt(()=>this.nodeService.getRuntimeLogsSince(Me.getCurrentNodeKey(),i))).subscribe(o=>this.onLogsDeltaReceived(o),o=>this.onLogsError(o))}toggleLiveTail(){this.liveTail=!this.liveTail,this.liveTail?this.loadData(0):this.removeSubscription()}captureScrollTailState(){if(!this.content)return void(this.wasAtBottom=!0);const e=this.content.nativeElement;this.wasAtBottom=e.scrollHeight-e.scrollTop-e.clientHeight<40}removeSubscription(){this.subscription&&this.subscription.unsubscribe()}removeTimeSubscription(){this.timeUpdateSubscription&&this.timeUpdateSubscription.unsubscribe()}onLogsDeltaReceived(e){if(!e)return this.loading=!1,void this.scheduleNextPoll();const i=0===this.logCursor;this.logCursor="number"==typeof e.latest?e.latest:this.logCursor,"number"==typeof e.dropped&&e.dropped>0&&(this.totalDropped+=e.dropped);const o=Array.isArray(e.entries)?e.entries:[];if(0===o.length)return this.loading=!1,this.LoadingMoment=Date.now(),this.shouldShowError=!0,this.startUpdatingTime(),void this.scheduleNextPoll();const r=[];for(const s of o)try{r.push(JSON.parse(s))}catch{}i&&(this.logEntries=[]),this.appendParsedEntries(r),this.logEntries.length>this.maxElementsPerPage&&(this.logEntries=this.logEntries.slice(this.logEntries.length-this.maxElementsPerPage),this.hasMoreLogMessages=!0),this.totalLogs=this.logCursor,this.loading=!1,this.LoadingMoment=Date.now(),this.shouldShowError=!0,this.startUpdatingTime(),this.filter(),this.scheduleNextPoll()}scheduleNextPoll(){this.liveTail&&this.loadData(this.livePollMs)}appendParsedEntries(e){e.forEach(i=>{const o=new aye;o.time=i.time,o._module=i._module,o.msg=i.msg,o.func=i.func;const r=i.level?i.level.toLowerCase():"";if(o.level=r.includes("panic")?vn.PanicLevel:r.includes("fatal")?vn.FatalLevel:r.includes("error")?vn.ErrorLevel:r.includes("warn")?vn.WarnLevel:r.includes("info")?vn.InfoLevel:r.includes("debug")?vn.DebugLevel:r.includes("trace")?vn.TraceLevel:vn.Unknown,i.current_backoff){const a=Math.floor(i.current_backoff/1e9),l=Math.floor(a/60),d=Math.floor(a%60);o.extra.push(l?{name:"current_backoff",value:l+"m"+d+"s"}:{name:"current_backoff",value:d+"s"})}i.error&&o.extra.push({name:"error",value:i.error});const s=new Set;s.add("time"),s.add("_module"),s.add("msg"),s.add("func"),s.add("level"),s.add("current_backoff"),s.add("error"),s.add("log_line");for(const a in i)s.has(a)||o.extra.push({name:a,value:i[a]});this.logEntries.push(o)})}filter(){this.filteredLogEntries=[];const e=this.levelDetails.get(this.currentMinimumLevel).importance;this.logEntries.forEach(i=>{const o=this.levelDetails.get(i.level).importance;e<=o&&this.filteredLogEntries.push(i)}),this.wasAtBottom&&setTimeout(()=>{this.content&&(this.content.nativeElement.scrollTop=this.content.nativeElement.scrollHeight)})}startUpdatingTime(){this.elapsedTime=wv.getElapsedTime(Math.floor((Date.now()-this.LoadingMoment)/1e3)),this.removeTimeSubscription(),this.timeUpdateSubscription=Ls(5e3,5e3).subscribe(()=>this.ngZone.run(()=>{this.elapsedTime=wv.getElapsedTime(Math.floor((Date.now()-this.LoadingMoment)/1e3))}))}getFullLogsUrl(){return window.location.origin+"/api/visors/"+Me.getCurrentNodeKey()+"/runtime-logs"}onLogsError(e){e=Ze(e),this.shouldShowError&&(this.snackbarService.showError("common.loading-error",null,!0,e),this.shouldShowError=!1),this.loadData(at.connectionRetryDelay)}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(Yi),O(ot),O(Ce),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-node-logs"]],viewQuery:function(i,o){if(1&i&&st(zve,5),2&i){let r;fe(r=pe())&&(o.content=r.first)}},standalone:!1,decls:21,vars:20,consts:[["content",""],[3,"headline","includeVerticalMargins","includeScrollableArea","dialog"],[1,"top-dialog-button"],[1,"logs-dropped-banner"],[1,"log-entry"],[1,"log-empty-msg"],[3,"showWhite"],[1,"logs-footer"],[1,"live-tail-toggle","subtle-transparent-button",3,"click"],[1,"icon",3,"inline"],[1,"update-button","subtle-transparent-button",3,"click"],[1,"update-time"],[1,"top-dialog-button",3,"click"],[1,"top-dialog-button-content"],[1,"actual-value"],[1,"small"],[1,"top-dialog-button-margin"],[3,"inline"],["target","_blank",1,"view-raw-link",3,"href"],[1,"transparent"],[1,"module-color"],[1,"extra-data-color"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),x(2,Gve,11,7,"div",2),x(3,qve,5,7,"div",3),h(4,"mat-dialog-content",null,0),x(6,Kve,4,7,"div",4),x(7,Jve,2,0),x(8,nye,4,3,"div",4),x(9,iye,3,3,"div",5),x(10,oye,3,3,"div",5),x(11,rye,1,1,"app-loading-indicator",6),h(12,"div",7)(13,"div",8),F("click",function(){return o.toggleLiveTail()}),h(14,"mat-icon",9),p(15),u(),h(16,"span"),p(17),_(18,"translate"),u()(),h(19,"div",10),F("click",function(){return o.loadData(0)}),x(20,sye,6,7,"div",11),u()()()()),2&i&&(C("headline",v(1,16,"node.logs.title"))("includeVerticalMargins",!1)("includeScrollableArea",!1)("dialog",o.dialogRef),c(2),k(!o.loading&&o.logEntries&&o.logEntries.length>0?2:-1),c(),k(o.totalDropped>0?3:-1),c(3),k(!o.loading&&o.hasMoreLogMessages?6:-1),c(),k(o.loading?-1:7),c(),k(!o.loading&&o.logEntries&&o.logEntries.length>0?8:-1),c(),k(o.loading||o.logEntries&&0!==o.logEntries.length?-1:9),c(),k(!o.loading&&o.logEntries&&o.logEntries.length>0&&o.filteredLogEntries.length<1?10:-1),c(),k(o.loading?11:-1),c(3),C("inline",!0),c(),S(o.liveTail?"pause":"play_arrow"),c(2),S(v(18,18,o.liveTail?"node.logs.live-on":"node.logs.live-off")),c(3),k(o.loading?-1:20))},dependencies:[au,Ae,Sn,Qr,we],styles:[".top-dialog-button[_ngcontent-%COMP%]{color:#777!important}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%]{text-align:center}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .actual-value[_ngcontent-%COMP%]{color:#202226}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .small[_ngcontent-%COMP%]{font-size:.6rem}.log-entry[_ngcontent-%COMP%]{margin-top:15px;word-break:break-word}.log-entry[_ngcontent-%COMP%] .transparent[_ngcontent-%COMP%]{color:#999}.log-entry[_ngcontent-%COMP%]:first-of-type{margin-top:0}.log-entry[_ngcontent-%COMP%]:last-of-type{margin-bottom:24px}.log-empty-msg[_ngcontent-%COMP%]{text-align:center}.view-raw-link[_ngcontent-%COMP%]{color:#215f9e}.update-button[_ngcontent-%COMP%]{display:flex;justify-content:center;cursor:pointer}.update-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:5px;margin-right:5px}.update-button[_ngcontent-%COMP%] .update-time[_ngcontent-%COMP%]{text-align:center;font-size:.7rem;color:#202226;margin:0 5px}.panic-level-color[_ngcontent-%COMP%], .fatal-level-color[_ngcontent-%COMP%]{color:red}.error-level-color[_ngcontent-%COMP%]{color:#d10000}.warning-level-color[_ngcontent-%COMP%]{color:#e27505}.info-level-color[_ngcontent-%COMP%]{color:#0d9519}.debug-level-color[_ngcontent-%COMP%]{color:#0065ff}.trace-level-color[_ngcontent-%COMP%]{color:#468cf5}.unknown-level-color[_ngcontent-%COMP%]{color:#e27505}.module-color[_ngcontent-%COMP%]{color:#a119fc}.extra-data-color[_ngcontent-%COMP%]{color:#ad8021}.logs-footer[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;border-top:1px solid rgba(255,255,255,.08)}.live-tail-toggle[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:13px}.live-tail-toggle[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:18px}.logs-dropped-banner[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding:6px 10px;background:#ffc80014;border-bottom:1px solid rgba(255,200,0,.2);font-size:12px;opacity:.9}.logs-dropped-banner[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px}"]})}}return t})();class CV{constructor(n,e){this.canBeUpdated=!1,this.canOpenTerminal=!1,this.options=[],this.dialog=n.get(Nt),this.router=n.get(yt),this.snackbarService=n.get(ot),this.nodeService=n.get(Yi),this.storageService=n.get(ri),this.showingFullList=e,this.returnButtonText=e?"node.title":"nodes.title",this.updateOptions()}updateOptions(){this.options=[],this.options.push({name:"actions.menu.turn-off",actionName:"shutdown",icon:"power_settings_new"})}setCurrentNode(n){this.currentNode=n,this.canBeUpdated=!!Ut.checkIfTagIsUpdatable(n.buildTag),this.canOpenTerminal=Ut.checkIfTagCanOpenterminal(n.buildTag),this.updateOptions()}setCurrentNodeKey(n){this.currentNodeKey=n}performAction(n,e){"terminal"===n?this.terminal():"update"===n?this.update():"logs"===n?this.runtimeLogs():"proxy"===n?this.openProxySettings():"shutdown"===n?this.shutdown():null===n&&this.back()}dispose(){this.updateSubscription&&this.updateSubscription.unsubscribe(),this.shutdownSubscription&&this.shutdownSubscription.unsubscribe()}shutdown(){const n=Ut.createConfirmationDialog(this.dialog,"actions.turn-off.confirmation");n.componentInstance.operationAccepted.subscribe(()=>{n.componentInstance.showProcessing(),this.shutdownSubscription=this.nodeService.shutdown(this.currentNodeKey).subscribe(()=>{this.snackbarService.showDone("actions.turn-off.done"),n.close(),this.router.navigate(["nodes"])},e=>{e=Ze(e),n.componentInstance.showDone("confirmation.error-header-text",e.translatableErrorMsg)})})}update(){const n=Ut.createConfirmationDialog(this.dialog,"actions.update.confirmation");n.componentInstance.operationAccepted.subscribe(()=>{const e=window.location.protocol,i=window.location.host.replace("localhost:4200","127.0.0.1:8000");window.open(e+"//"+i+"/pty/"+this.currentNodeKey+"?commands=update","_blank","noopener noreferrer"),n.close()})}terminal(){const n=window.location.protocol,e=window.location.host.replace("localhost:4200","127.0.0.1:8000");window.open(n+"//"+e+"/pty/"+this.currentNodeKey,"_blank","noopener noreferrer")}runtimeLogs(){lye.openDialog(this.dialog)}openProxySettings(){this.dialog.open(Uve,{width:"550px",data:{nodeKey:this.currentNodeKey}})}back(){this.router.navigate(this.showingFullList?["nodes",this.currentNodeKey]:["nodes"])}}class cye{constructor(){this.trafficData=new dye}}class dye{constructor(){this.totalSent=0,this.totalReceived=0,this.sentHistory=[],this.receivedHistory=[]}}class uye{constructor(){this.lastEmitedData=new cye,this.dataSubject=new Ei(null),this.whenUpdateWasScheduled=0,this.stopRequestedDate=-1,this.consecutiveErrors=0}}let hye=(()=>{class t{constructor(e,i){this.storageService=e,this.nodeService=i,this.maxTrafficHistorySlots=10,this.expirationTime=6e4,this.nodesMap=new Map,this.storageService.getRefreshTimeObservable().subscribe(o=>{this.dataRefreshDelay=1e3*o,this.nodesMap.forEach(r=>{this.forceSpecificNodeRefresh(r.pk)})}),this.checkForExpired()}checkForExpired(){setInterval(()=>{try{this.nodesMap.forEach(e=>{this.finishIfExpired(e)})}catch{}},5e3)}startRequestingData(e){let i=this.nodesMap.get(e);return i?i.stopRequestedDate=-1:(i=new uye,i.pk=e,this.nodesMap.set(e,i),this.startDataSubscription(0,i)),i.dataSubject.asObservable()}stopRequestingSpecificNode(e){const i=this.nodesMap.get(e);i&&(i.stopRequestedDate=Date.now())}startDataSubscription(e,i){i.updateSubscription&&i.updateSubscription.unsubscribe();let o=0;i.updateSubscription=se(1).pipe(oi(e),ui(()=>{i.lastEmitedData.updating=!0,i.dataSubject.next(i.lastEmitedData)}),oi(120),ui(()=>{o=performance.now(),console.log("[HV-DIAG] fetching node data for",i.pk.substring(0,8)+"...")}),Tt(()=>this.nodeService.getNode(i.pk))).subscribe(r=>{console.log("[HV-DIAG] fetch completed in",(performance.now()-o).toFixed(0),"ms for",i.pk.substring(0,8)+"..."),i.consecutiveErrors=0,this.updateTrafficData(r.transports,i.lastEmitedData.trafficData,i.whenUpdateWasScheduled);let s=this.calculateRemainingTime(i.whenUpdateWasScheduled);s<1e3&&(i.whenUpdateWasScheduled=Date.now(),s=this.dataRefreshDelay),i.lastEmitedData={data:r,error:null,momentOfLastCorrectUpdate:Date.now(),updating:!1,trafficData:i.lastEmitedData.trafficData},i.dataSubject.next(i.lastEmitedData),this.startDataSubscription(s,i)},r=>{if(r=Ze(r),i.consecutiveErrors=(i.consecutiveErrors||0)+1,i.lastEmitedData={data:i.lastEmitedData.data,error:r,momentOfLastCorrectUpdate:i.lastEmitedData.momentOfLastCorrectUpdate,updating:!1,trafficData:i.lastEmitedData.trafficData},i.dataSubject.next(i.lastEmitedData),r.originalError&&400===r.originalError.status)i.dataSubject.complete(),i.updateSubscription.unsubscribe(),this.nodesMap.delete(i.pk);else{const a=Math.min(at.connectionRetryDelay*Math.pow(2,i.consecutiveErrors-1),3e4);this.startDataSubscription(a,i)}})}calculateRemainingTime(e){if(e<1)return 0;let i=this.dataRefreshDelay-(Date.now()-e);return i<0&&(i=0),i}updateTrafficData(e,i,o){if(i.totalSent=0,i.totalReceived=0,e&&e.length>0&&(i.totalSent=e.reduce((r,s)=>r+s.sent,0),i.totalReceived=e.reduce((r,s)=>r+s.recv,0)),0===i.sentHistory.length)for(let r=0;rthis.maxTrafficHistorySlots&&(s=this.maxTrafficHistorySlots),0===s)i.sentHistory[i.sentHistory.length-1]=i.totalSent,i.receivedHistory[i.receivedHistory.length-1]=i.totalReceived;else for(let a=0;athis.maxTrafficHistorySlots&&(i.sentHistory.splice(0,i.sentHistory.length-this.maxTrafficHistorySlots),i.receivedHistory.splice(0,i.receivedHistory.length-this.maxTrafficHistorySlots))}}forceSpecificNodeRefresh(e){const i=this.nodesMap.get(e);i&&this.startDataSubscription(0,i)}finishIfExpired(e){e.stopRequestedDate>0&&Date.now()-e.stopRequestedDate>this.expirationTime&&(e.dataSubject.complete(),e.updateSubscription.unsubscribe(),this.nodesMap.delete(e.pk))}static{this.\u0275fac=function(i){return new(i||t)(ce(ri),ce(Yi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function fye(t,n){if(1&t){const e=re();zr(0),h(1,"div",2)(2,"div",3)(3,"app-top-bar",4),F("optionSelected",function(o){return V(e),H(y().performAction(o))})("refreshRequested",function(){return V(e),H(y().forceDataRefresh(!0))}),u()(),h(4,"div",3)(5,"div",5)(6,"div",6),L(7,"router-outlet"),u()()()(),pr()}if(2&t){const e=y();c(3),C("titleParts",e.titleParts)("pageHeaderLabel",e.headerLabel)("pageHeaderIdentifier",e.headerIdentifier)("tabsData",e.tabsData)("selectedTabIndex",e.selectedTabIndex)("secondsSinceLastUpdate",e.secondsSinceLastUpdate)("showLoading",e.updating)("showAlert",e.errorsUpdating)("refeshRate",e.storageService.getRefreshTime())("optionsData",e.nodeActionsHelper?e.nodeActionsHelper.options:null)("returnText",e.nodeActionsHelper?e.nodeActionsHelper.returnButtonText:"")}}function pye(t,n){1&t&&(zr(0),L(1,"app-loading-indicator"),pr())}function mye(t,n){1&t&&(zr(0),h(1,"div",10)(2,"div")(3,"mat-icon",11),p(4,"error"),u(),p(5),_(6,"translate"),u()(),pr()),2&t&&(c(3),C("inline",!0),c(2),D(" ",v(6,2,"node.not-found")," "))}function gye(t,n){if(1&t){const e=re();zr(0),h(1,"div",10)(2,"div")(3,"mat-icon",11),p(4,"error"),u(),p(5),_(6,"translate"),L(7,"br"),h(8,"button",12),F("click",function(){return V(e),H(y(2).retryLoading())}),p(9),_(10,"translate"),u()()(),pr()}2&t&&(c(3),C("inline",!0),c(2),D(" ",v(6,3,"node.error-load")," "),c(4),D(" ",v(10,5,"common.refresh")," "))}function _ye(t,n){if(1&t){const e=re();h(0,"div",7)(1,"div")(2,"app-top-bar",8),F("optionSelected",function(o){return V(e),H(y().performAction(o))}),u()(),rt(3,pye,2,0,"ng-container",9)(4,mye,7,4,"ng-container",9)(5,gye,11,7,"ng-container",9),u()}if(2&t){const e=y();c(2),C("titleParts",e.titleParts)("pageHeaderLabel",e.headerLabel)("pageHeaderIdentifier",e.headerIdentifier)("tabsData",e.tabsData)("selectedTabIndex",e.selectedTabIndex)("showUpdateButton",!1)("optionsData",e.nodeActionsHelper?e.nodeActionsHelper.options:null)("returnText",e.nodeActionsHelper?e.nodeActionsHelper.returnButtonText:""),c(),C("ngIf",!e.notFound&&!e.loadFailed),c(),C("ngIf",e.notFound),c(),C("ngIf",e.loadFailed)}}let Me=(()=>{class t extends Lt{static refreshCurrentDisplayedData(){t.currentInstanceInternal&&t.currentInstanceInternal.forceDataRefresh(!1)}static getCurrentNodeKey(){return t.currentNodeKey}static get currentNode(){return t.nodeSubject.asObservable()}static get currentTrafficData(){return t.trafficDataSubject.asObservable()}constructor(e,i,o,r,s,a,l,d){super(),this.storageService=e,this.singleNodeDataService=i,this.route=o,this.ngZone=r,this.snackbarService=s,this.injector=a,this.cdr=l,this.persistentDataResponseKey="serv-dat-response",this.nodeLoaded=!1,this.notFound=!1,this.titleParts=[],this.tabsData=[],this.selectedTabIndex=-1,this.headerLabel="",this.headerIdentifier="",this.showingFullList=!1,this.initialRouteEventFired=!1,this.secondsSinceLastUpdate=0,this.lastUpdate=Date.now(),this.updating=!1,this.errorsUpdating=!1,this.lastUpdateRequestedManually=!1,this.loadFailed=!1,this.consecutiveLoadErrors=0,this.instanceId="",t.nodeSubject=new co(1),t.trafficDataSubject=new co(1),t.currentInstanceInternal=this,this.instanceId=Math.random().toString(36).substring(7),console.log("[HV-DIAG] NodeComponent constructor, instance:",this.instanceId),this.navigationsSubscription=d.events.subscribe(f=>{f.urlAfterRedirects&&(this.lastUrl=f.urlAfterRedirects,this.processRouteUpdate(),this.initialRouteEventFired=!0)})}ngOnInit(){return this.ngZone.runOutsideAngular(()=>{this.updateTimeSubscription=Ls(5e3,5e3).subscribe(()=>this.ngZone.run(()=>{this.secondsSinceLastUpdate=Math.floor((Date.now()-this.lastUpdate)/1e3)}))}),this.initSubscription=se(0).pipe(oi(500)).subscribe(()=>{this.initialRouteEventFired||(this.lastUrl=window.location.href,this.processRouteUpdate())}),super.ngOnInit()}processRouteUpdate(){console.log("[HV-DIAG] processRouteUpdate called, instance id:",this.instanceId),t.currentNodeKey=this.route.snapshot.params.key,this.nodeActionsHelper&&this.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),this.updateTabBar(),this.navigationsSubscription.unsubscribe(),this.startGettingData(!0)}refreshHeader(){if(!this.node)return this.headerLabel="",void(this.headerIdentifier="");const e=this.storageService.getLabelInfo(this.node.localPk);this.headerLabel=e&&e.label?e.label:this.node.label||(this.node.localPk?this.node.localPk.slice(0,8)+"\u2026":""),this.headerIdentifier=this.node.localPk||""}updateTabBar(){if(this.lastUrl&&(this.lastUrl.includes("/info")||this.lastUrl.includes("/routing")||this.lastUrl.includes("/transports")||this.lastUrl.includes("/bandwidth")||this.lastUrl.includes("/uptime")||this.lastUrl.includes("/rewards")||this.lastUrl.includes("/skynet")||this.lastUrl.includes("/web-proxy")||this.lastUrl.includes("/resources")||this.lastUrl.includes("/terminal")||this.lastUrl.includes("/logs")||this.lastUrl.includes("/chat")||this.lastUrl.includes("/dmsg")||this.lastUrl.includes("/apps")&&!this.lastUrl.includes("/apps-list")))this.titleParts=["nodes.title","node.title"],this.tabsData=[{icon:"info",label:"node.tabs.info",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"info"]:null},{icon:"shuffle",label:"node.tabs.routing",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"routing"]:null},{icon:"swap_horiz",label:"node.tabs.transports",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"transports"]:null},{icon:"equalizer",label:"node.tabs.bandwidth",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"bandwidth"]:null},{icon:"schedule",label:"node.tabs.uptime",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"uptime"]:null},{icon:"apps",label:"node.tabs.apps",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"apps"]:null},{icon:"forum",label:"node.tabs.chat",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"chat"]:null},{icon:"monetization_on",label:"node.tabs.rewards",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"rewards"]:null},{icon:"public",label:"node.tabs.skynet",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"skynet"]:null},{icon:"language",label:"node.tabs.web-proxy",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"web-proxy"]:null},{icon:"memory",label:"node.tabs.resources",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"resources"]:null},{icon:"terminal",label:"node.tabs.terminal",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"terminal"]:null},{icon:"description",label:"node.tabs.logs",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"logs"]:null},{icon:"device_hub",label:"node.tabs.dmsg",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"dmsg"]:null}],this.selectedTabIndex=0,this.lastUrl.includes("/routing")&&(this.selectedTabIndex=1),this.lastUrl.includes("/transports")&&(this.selectedTabIndex=2),this.lastUrl.includes("/bandwidth")&&(this.selectedTabIndex=3),this.lastUrl.includes("/uptime")&&(this.selectedTabIndex=4),this.lastUrl.includes("/apps")&&!this.lastUrl.includes("/apps-list")&&(this.selectedTabIndex=5),this.lastUrl.includes("/chat")&&(this.selectedTabIndex=6),this.lastUrl.includes("/rewards")&&(this.selectedTabIndex=7),this.lastUrl.includes("/skynet")&&(this.selectedTabIndex=8),this.lastUrl.includes("/web-proxy")&&(this.selectedTabIndex=9),this.lastUrl.includes("/resources")&&(this.selectedTabIndex=10),this.lastUrl.includes("/terminal")&&(this.selectedTabIndex=11),this.lastUrl.includes("/logs")&&(this.selectedTabIndex=12),this.lastUrl.includes("/dmsg")&&(this.selectedTabIndex=13),this.showingFullList=!1,this.nodeActionsHelper=new CV(this.injector,this.showingFullList),this.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),this.node&&this.nodeActionsHelper.setCurrentNode(this.node);else if(this.lastUrl&&this.lastUrl.includes("/apps-list")){this.showingFullList=!0,this.nodeActionsHelper=new CV(this.injector,this.showingFullList),this.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),this.node&&this.nodeActionsHelper.setCurrentNode(this.node);const e="apps.apps-list";this.titleParts=["nodes.title","node.title",e+".title"],this.tabsData=[{icon:"view_headline",label:e+".list-title",linkParts:[]}],this.selectedTabIndex=0}else this.titleParts=[],this.tabsData=[]}performAction(e){this.nodeActionsHelper.performAction(e,t.currentNodeKey)}forceDataRefresh(e=!1){e&&(this.lastUpdateRequestedManually=!0),this.singleNodeDataService.forceSpecificNodeRefresh(t.currentNodeKey)}retryLoading(){this.loadFailed=!1,this.consecutiveLoadErrors=0,this.startGettingData(!1)}startGettingData(e){const i=e?this.getLocalValue(this.persistentDataResponseKey):null;let o=this.singleNodeDataService.startRequestingData(t.currentNodeKey);i&&(o=se(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{if(performance.now(),console.log("[HV-DIAG] data event received",{updating:r?.updating,hasData:!!r?.data,hasError:!!r?.error,transports:r?.data?.transports?.length??"n/a",routes:r?.data?.routes?.length??"n/a",apps:r?.data?.apps?.length??"n/a"}),!i){const a=performance.now();this.saveLocalValue(this.persistentDataResponseKey,JSON.stringify(r)),console.log("[HV-DIAG] saveLocalValue took",(performance.now()-a).toFixed(1),"ms")}if(this.updating=!r||r.updating,console.log("[HV-DIAG] updating:",this.updating,"node set:",!!this.node,"notFound:",this.notFound,"loadFailed:",this.loadFailed),r&&!r.updating)if(r.data&&!r.error){const a=performance.now();this.ngZone.run(()=>{this.node=r.data,this.trafficData=r.trafficData,this.nodeLoaded=!0,this.refreshHeader()}),console.log("[HV-DIAG] node assigned, instance:",this.instanceId,"nodeLoaded:",this.nodeLoaded,"node.localPk:",this.node?.localPk?.substring(0,8),"transports:",this.node?.transports?.length,"routes:",this.node?.routes?.length);try{t.nodeSubject.next(this.node)}catch(l){console.error("[HV-DIAG] ERROR in nodeSubject.next:",l)}t.trafficDataSubject.next(this.trafficData),this.nodeActionsHelper&&this.nodeActionsHelper.setCurrentNode(this.node),this.snackbarService.closeCurrentIfTemporaryError(),this.lastUpdate=r.momentOfLastCorrectUpdate,this.secondsSinceLastUpdate=Math.floor((Date.now()-r.momentOfLastCorrectUpdate)/1e3),this.errorsUpdating=!1,this.consecutiveLoadErrors=0,this.loadFailed=!1,Jr.currentInstance.hideDataProblemMsg(),console.log("[HV-DIAG] data processing took",(performance.now()-a).toFixed(1),"ms"),console.log("[HV-DIAG] AFTER ASSIGNMENT: this.node is",this.node?"SET":"NULL","this.notFound:",this.notFound,"this.loadFailed:",this.loadFailed),this.cdr.detectChanges(),this.lastUpdateRequestedManually&&(this.snackbarService.showDone("common.refreshed",null),this.lastUpdateRequestedManually=!1)}else if(r.error){if(r.error.originalError&&400===r.error.originalError.status)return void(this.notFound=!0);if(this.consecutiveLoadErrors++,!this.node&&this.consecutiveLoadErrors>=3)return this.loadFailed=!0,this.singleNodeDataService.stopRequestingSpecificNode(t.currentNodeKey),this.snackbarService.showError("common.loading-error",null,!0,r.error),void Jr.currentInstance.showDataProblemMsg();this.errorsUpdating||this.snackbarService.showError(this.node?"node.error-load":"common.loading-error",null,!0,r.error),this.errorsUpdating=!0,Jr.currentInstance.showDataProblemMsg()}i&&this.startGettingData(!1)})}ngOnDestroy(){console.log("[HV-DIAG] ngOnDestroy, instance:",this.instanceId),this.singleNodeDataService.stopRequestingSpecificNode(t.currentNodeKey),this.dataSubscription.unsubscribe(),this.updateTimeSubscription.unsubscribe(),this.navigationsSubscription.unsubscribe(),this.initSubscription.unsubscribe(),t.currentInstanceInternal=void 0,t.currentNodeKey=void 0,t.nodeSubject.complete(),t.nodeSubject=void 0,t.trafficDataSubject.complete(),t.trafficDataSubject=void 0,this.nodeActionsHelper.dispose()}static{this.\u0275fac=function(i){return new(i||t)(O(ri),O(hye),O(Li),O(Ce),O(ot),O(Ue),O(Dt),O(yt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-node"]],standalone:!1,features:[_e],decls:3,vars:2,consts:[["loadingBlock",""],[4,"ngIf","ngIfElse"],[1,"row"],[1,"col-12"],[3,"optionSelected","refreshRequested","titleParts","pageHeaderLabel","pageHeaderIdentifier","tabsData","selectedTabIndex","secondsSinceLastUpdate","showLoading","showAlert","refeshRate","optionsData","returnText"],[1,"full-size-main-area"],[1,"d-flex","flex-column","h-100"],[1,"d-flex","flex-column","h-100","w-100"],[3,"optionSelected","titleParts","pageHeaderLabel","pageHeaderIdentifier","tabsData","selectedTabIndex","showUpdateButton","optionsData","returnText"],[4,"ngIf"],[1,"w-100","h-100","d-flex","not-found-label"],[3,"inline"],["mat-raised-button","","color","primary",2,"margin-top","16px",3,"click"]],template:function(i,o){if(1&i&&rt(0,fye,8,11,"ng-container",1)(1,_ye,6,11,"ng-template",null,0,Ul),2&i){const r=Un(2);C("ngIf",o.nodeLoaded)("ngIfElse",r)}},dependencies:[lf,sb,Ht,Ae,Qr,tr,we],styles:[".not-found-label[_ngcontent-%COMP%]{align-items:center;justify-content:center;font-size:1rem;position:relative}.not-found-label[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:5px;font-size:22px;opacity:.5;margin-right:3px}.full-size-main-area[_ngcontent-%COMP%], .main-area[_ngcontent-%COMP%]{width:100%}@media(min-width:992px){.main-area[_ngcontent-%COMP%]{width:73%;padding-right:20px;float:left}}.right-bar[_ngcontent-%COMP%]{width:27%;float:right;display:none}@media(min-width:992px){.right-bar[_ngcontent-%COMP%]{display:block;width:27%;float:right}}"]})}}return t})();function bye(t,n){if(1&t&&(h(0,"mat-option",9),p(1),_(2,"translate"),u()),2&t){const e=n.$implicit;C("value",on(e)),c(),nt(" ",e," ",v(2,4,"settings.seconds")," ")}}let vye=(()=>{class t{constructor(e,i,o){this.formBuilder=e,this.storageService=i,this.snackbarService=o,this.timesList=["3","5","10","15","30","60","90","150","300"]}ngOnInit(){this.form=this.formBuilder.group({refreshRate:[this.storageService.getRefreshTime().toString()]}),this.subscription=this.form.get("refreshRate").valueChanges.subscribe(e=>{this.storageService.setRefreshTime(e),this.snackbarService.showDone("settings.refresh-rate-confirmation")})}ngOnDestroy(){this.subscription.unsubscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(Si),O(ri),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-refresh-rate"]],standalone:!1,decls:15,vars:8,consts:[[1,"rounded-elevated-box"],[1,"box-internal-container","overflow"],[1,"white-form-help-icon-container"],[1,"help-icon",3,"inline","matTooltip"],[3,"formGroup"],[1,"white-form-field"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","refreshRate"],[3,"value"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"div",2)(3,"mat-icon",3),_(4,"translate"),p(5," help "),u()(),h(6,"form",4)(7,"mat-form-field",5)(8,"div",6)(9,"label",7),p(10),_(11,"translate"),u(),h(12,"mat-select",8),me(13,bye,3,6,"mat-option",9,Le),u()()()()()()),2&i&&(c(3),C("inline",!0)("matTooltip",v(4,4,"settings.refresh-rate-help")),c(3),C("formGroup",o.form),c(4),S(v(11,6,"settings.refresh-rate")),c(3),ge(o.timesList))},dependencies:[kn,Jt,xn,sn,_n,dn,Ae,Et,Na,is,we],styles:[".help-icon[_ngcontent-%COMP%]{display:inline}mat-form-field[_ngcontent-%COMP%]{margin-right:32px}mat-form-field[_ngcontent-%COMP%] .mat-mdc-form-field-bottom-align{margin-bottom:0!important}"]})}}return t})();const yye=t=>({number:t});let wV=(()=>{class t{constructor(){this.numberOfElements=0,this.linkParts=[""],this.queryParams={}}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=ae({type:t,selectors:[["app-view-all-link"]],inputs:{numberOfElements:"numberOfElements",linkParts:"linkParts",queryParams:"queryParams"},standalone:!1,decls:6,vars:9,consts:[[1,"main-container"],[3,"routerLink","queryParams"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"a",1),p(2),_(3,"translate"),h(4,"mat-icon",2),p(5,"chevron_right"),u()()()),2&i&&(c(),C("routerLink",o.linkParts)("queryParams",o.queryParams),c(),D(" ",ue(3,4,"view-all-link.label",ie(7,yye,o.numberOfElements))," "),c(2),C("inline",!0))},dependencies:[es,Ae,we],styles:[".main-container[_ngcontent-%COMP%]{padding-top:20px;margin-bottom:4px;text-align:right;font-size:.875rem}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.main-container[_ngcontent-%COMP%]{margin:0;padding:16px}}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#f8f9f9;text-decoration:none}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}"]})}}return t})();const Cye=t=>({"paginator-icons-fixer":t}),AS=()=>["/settings","labels"],wye=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),xye=t=>({"d-lg-none d-xl-table":t}),kye=t=>({"d-lg-table d-xl-none":t});function Sye(t,n){1&t&&(h(0,"span",3),p(1),_(2,"translate"),h(3,"mat-icon",14),_(4,"translate"),p(5,"help"),u()()),2&t&&(c(),D(" ",v(2,3,"labels.title")," "),c(2),C("inline",!0)("matTooltip",v(4,5,"labels.info")))}function Mye(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().$implicit.translatableValue)," ")}function Dye(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.value," ")}function Tye(t,n){if(1&t&&(h(0,"div",16)(1,"span"),p(2),_(3,"translate"),u(),x(4,Mye,2,3),x(5,Dye,1,1),u()),2&t){const e=n.$implicit;c(2),D("",v(3,3,e.filterName),": "),c(2),k(e.translatableValue?4:-1),c(),k(e.value?5:-1)}}function Eye(t,n){if(1&t){const e=re();h(0,"div",15),F("click",function(){return V(e),H(y().dataFilterer.removeFilters())}),me(1,Tye,6,5,"div",16,Le),h(3,"div",17),p(4),_(5,"translate"),u()()}if(2&t){const e=y();c(),ge(e.dataFilterer.currentFiltersTexts),c(3),S(v(5,1,"filters.press-to-remove"))}}function Pye(t,n){if(1&t){const e=re();h(0,"mat-icon",18),_(1,"translate"),F("click",function(){return V(e),H(y().dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",v(1,2,"filters.filter-action"))}function Iye(t,n){if(1&t&&(h(0,"mat-icon",8),p(1,"more_horiz"),u()),2&t){y();const e=Un(9);C("inline",!0)("matMenuTriggerFor",e)}}function Oye(t,n){if(1&t&&L(0,"app-paginator",12),2&t){const e=y();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",vt(4,AS))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function Aye(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Rye(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Fye(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Nye(t,n){if(1&t){const e=re();h(0,"tr")(1,"td",30)(2,"mat-checkbox",31),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),_(9,"translate"),u(),h(10,"td",23)(11,"button",32),_(12,"translate"),F("click",function(){const o=V(e).$implicit;return H(y(2).delete(o.id))}),h(13,"mat-icon",22),p(14,"close"),u()()()()}if(2&t){const e=n.$implicit,i=y(2);c(2),C("checked",i.selections.get(e.id)),c(2),D(" ",e.label," "),c(2),D(" ",e.id," "),c(2),nt(" ",i.getLabelTypeIdentification(e)[0]," - ",v(9,7,i.getLabelTypeIdentification(e)[1])," "),c(3),C("matTooltip",v(12,9,"labels.delete")),c(2),C("inline",!0)}}function Lye(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.label")," ")}function Bye(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.inverted-order")," ")}function Vye(t,n){if(1&t){const e=re();h(0,"tr")(1,"td")(2,"div",26)(3,"div",33)(4,"mat-checkbox",31),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(5,"div",27)(6,"div",34)(7,"span",2),p(8),_(9,"translate"),u(),p(10),u(),h(11,"div",35)(12,"span",2),p(13),_(14,"translate"),u(),p(15),u(),h(16,"div",34)(17,"span",2),p(18),_(19,"translate"),u(),p(20),_(21,"translate"),u()(),L(22,"div",36),h(23,"div",28)(24,"button",37),_(25,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(2);return o.stopPropagation(),H(s.showOptionsDialog(r))}),h(26,"mat-icon"),p(27),u()()()()()()}if(2&t){const e=n.$implicit,i=y(2);c(4),C("checked",i.selections.get(e.id)),c(4),S(v(9,10,"labels.label")),c(2),D(": ",e.label," "),c(3),S(v(14,12,"labels.id")),c(2),D(": ",e.id," "),c(3),S(v(19,14,"labels.type")),c(2),nt(": ",i.getLabelTypeIdentification(e)[0]," - ",v(21,16,i.getLabelTypeIdentification(e)[1])," "),c(4),C("matTooltip",v(25,18,"common.options")),c(3),S("add")}}function Hye(t,n){if(1&t&&L(0,"app-view-all-link",29),2&t){const e=y(2);C("numberOfElements",e.filteredLabels.length)("linkParts",vt(3,AS))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function Uye(t,n){if(1&t){const e=re();h(0,"div",13)(1,"div",19)(2,"table",20)(3,"tr"),L(4,"th"),h(5,"th",21),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.labelSortData))}),p(6),_(7,"translate"),x(8,Aye,2,2,"mat-icon",22),u(),h(9,"th",21),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.idSortData))}),p(10),_(11,"translate"),x(12,Rye,2,2,"mat-icon",22),u(),h(13,"th",21),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.typeSortData))}),p(14),_(15,"translate"),x(16,Fye,2,2,"mat-icon",22),u(),L(17,"th",23),u(),me(18,Nye,15,11,"tr",null,Le),u(),h(20,"table",24)(21,"tr",25),F("click",function(){return V(e),H(y().dataSorter.openSortingOrderModal())}),h(22,"td")(23,"div",26)(24,"div",27)(25,"div",2),p(26),_(27,"translate"),u(),h(28,"div"),p(29),_(30,"translate"),x(31,Lye,2,3),x(32,Bye,2,3),u()(),h(33,"div",28)(34,"mat-icon",22),p(35,"keyboard_arrow_down"),u()()()()(),me(36,Vye,28,20,"tr",null,Le),u(),x(38,Hye,1,4,"app-view-all-link",29),u()()}if(2&t){const e=y();c(),C("ngClass",pt(25,wye,e.showShortList_,!e.showShortList_)),c(),C("ngClass",ie(28,xye,e.showShortList_)),c(4),D(" ",v(7,15,"labels.label")," "),c(2),k(e.dataSorter.currentSortingColumn===e.labelSortData?8:-1),c(2),D(" ",v(11,17,"labels.id")," "),c(2),k(e.dataSorter.currentSortingColumn===e.idSortData?12:-1),c(2),D(" ",v(15,19,"labels.type")," "),c(2),k(e.dataSorter.currentSortingColumn===e.typeSortData?16:-1),c(2),ge(e.dataSource),c(2),C("ngClass",ie(30,kye,e.showShortList_)),c(6),S(v(27,21,"tables.sorting-title")),c(3),D("",v(30,23,e.dataSorter.currentSortingColumn.label)," "),c(2),k(e.dataSorter.currentlySortingByLabel?31:-1),c(),k(e.dataSorter.sortingInReverseOrder?32:-1),c(2),C("inline",!0),c(2),ge(e.dataSource),c(2),k(e.showShortList_&&e.numberOfPages>1?38:-1)}}function zye(t,n){1&t&&(h(0,"span",40),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"labels.empty")))}function jye(t,n){1&t&&(h(0,"span",40),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"labels.empty-with-filter")))}function $ye(t,n){if(1&t&&(h(0,"div",13)(1,"div",38)(2,"mat-icon",39),p(3,"warning"),u(),x(4,zye,3,3,"span",40),x(5,jye,3,3,"span",40),u()()),2&t){const e=y();c(2),C("inline",!0),c(2),k(0===e.allLabels.length?4:-1),c(),k(0!==e.allLabels.length?5:-1)}}function Wye(t,n){if(1&t&&L(0,"app-paginator",12),2&t){const e=y();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",vt(4,AS))("queryParams",e.dataFilterer.currentUrlQueryParams)}}let xV=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter.setData(this.filteredLabels)}constructor(e,i,o,r,s,a){this.dialog=e,this.route=i,this.router=o,this.snackbarService=r,this.translateService=s,this.storageService=a,this.listId="ll",this.labelSortData=new Pt(["label"],"labels.label",lt.Text),this.idSortData=new Pt(["id"],"labels.id",lt.Text),this.typeSortData=new Pt(["identifiedElementType_sort"],"labels.type",lt.Text),this.selections=new Map,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"labels.filter-dialog.label",keyNameInElementsArray:"label",type:Mn.TextInput,maxlength:100},{filterName:"labels.filter-dialog.id",keyNameInElementsArray:"id",type:Mn.TextInput,maxlength:66},{filterName:"labels.filter-dialog.type",keyNameInElementsArray:"identifiedElementType",type:Mn.Select,printableLabelsForValues:[{value:"",label:"labels.filter-dialog.type-options.any"},{value:uo.Node,label:"labels.filter-dialog.type-options.visor"},{value:uo.DmsgServer,label:"labels.filter-dialog.type-options.dmsg-server"},{value:uo.Transport,label:"labels.filter-dialog.type-options.transport"}]}],this.dataSorter=new wu(this.dialog,this.translateService,this.storageService,[this.labelSortData,this.idSortData,this.typeSortData],0,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new xu(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(d=>{this.filteredLabels=d,this.dataSorter.setData(this.filteredLabels)}),this.loadData(),this.navigationsSubscription=this.route.paramMap.subscribe(d=>{if(d.has("page")){let f=Number.parseInt(d.get("page"),10);(isNaN(f)||f<1)&&(f=1),this.currentPageInUrl=f,this.recalculateElementsToShow()}})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose()}loadData(){this.allLabels=this.storageService.getSavedLabels(),this.allLabels.forEach(e=>{e.identifiedElementType_sort=this.getLabelTypeIdentification(e)[0]}),this.dataFilterer.setData(this.allLabels)}getLabelTypeIdentification(e){return e.identifiedElementType===uo.Node?["1","labels.filter-dialog.type-options.visor"]:e.identifiedElementType===uo.DmsgServer?["2","labels.filter-dialog.type-options.dmsg-server"]:e.identifiedElementType===uo.Transport?["3","labels.filter-dialog.type-options.transport"]:void 0}changeSelection(e){this.selections.get(e.id)?this.selections.set(e.id,!1):this.selections.set(e.id,!0)}hasSelectedElements(){if(!this.selections)return!1;let e=!1;return this.selections.forEach(i=>{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}deleteSelected(){const e=Ut.createConfirmationDialog(this.dialog,"labels.delete-selected-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.close(),this.selections.forEach((i,o)=>{i&&this.storageService.saveLabel(o,"",null)}),this.snackbarService.showDone("labels.deleted"),this.loadData()})}showOptionsDialog(e){ho.openDialog(this.dialog,[{icon:"close",label:"labels.delete"}],"common.options").afterClosed().subscribe(o=>{1===o&&this.delete(e.id)})}delete(e){const i=Ut.createConfirmationDialog(this.dialog,"labels.delete-confirmation");i.componentInstance.operationAccepted.subscribe(()=>{i.close(),this.storageService.saveLabel(e,"",null),this.snackbarService.showDone("labels.deleted"),this.loadData()})}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredLabels){const e=this.showShortList_?at.maxShortListElements:at.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredLabels.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.labelsToShow=this.filteredLabels.slice(i,i+e);const r=new Map;this.labelsToShow.forEach(a=>{r.set(a.id,!0),this.selections.has(a.id)||this.selections.set(a.id,!1)});const s=[];this.selections.forEach((a,l)=>{r.has(l)||s.push(l)}),s.forEach(a=>{this.selections.delete(a)})}else this.labelsToShow=null,this.selections=new Map;this.dataSource=this.labelsToShow}static{this.\u0275fac=function(i){return new(i||t)(O(Nt),O(Li),O(yt),O(ot),O(Xo),O(ri))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-label-list"]],inputs:{showShortList:"showShortList"},standalone:!1,decls:23,vars:23,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"inline","matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"click"],[3,"inline"],[1,"actions"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[3,"numberOfElements","linkParts","queryParams"],[1,"selection-col"],[3,"change","checked"],["mat-button","",1,"action-button","transparent-button",3,"click","matTooltip"],[1,"check-part"],[1,"list-row"],[1,"list-row","long-content"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,Sye,6,7,"span",3),x(3,Eye,6,3,"div",4),u(),h(4,"div",5)(5,"div",6),x(6,Pye,3,4,"mat-icon",7),x(7,Iye,2,2,"mat-icon",8),h(8,"mat-menu",9,0)(10,"div",10),F("click",function(){return o.changeAllSelections(!0)}),p(11),_(12,"translate"),u(),h(13,"div",10),F("click",function(){return o.changeAllSelections(!1)}),p(14),_(15,"translate"),u(),h(16,"div",11),F("click",function(){return o.deleteSelected()}),p(17),_(18,"translate"),u()()(),x(19,Oye,1,5,"app-paginator",12),u()(),x(20,Uye,39,32,"div",13),x(21,$ye,6,3,"div",13),x(22,Wye,1,5,"app-paginator",12)),2&i&&(C("ngClass",ie(21,Cye,!o.showShortList_&&o.numberOfPages>1&&o.dataSource)),c(2),k(o.showShortList_?2:-1),c(),k(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?3:-1),c(3),k(o.allLabels&&o.allLabels.length>0?6:-1),c(),k(o.dataSource&&o.dataSource.length>0?7:-1),c(),C("overlapTrigger",!1),c(3),D(" ",v(12,15,"selection.select-all")," "),c(3),D(" ",v(15,17,"selection.unselect-all")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(18,19,"selection.delete-all")," "),c(2),k(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?19:-1),c(),k(o.dataSource&&o.dataSource.length>0?20:-1),c(),k(o.dataSource&&0!==o.dataSource.length?-1:21),c(),k(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?22:-1))},dependencies:[Ft,Ht,Yo,Ae,Et,os,Vs,Su,Fo,wV,Cv,we],styles:[".overflow[_ngcontent-%COMP%]{display:block;width:100%;overflow-x:auto}.overflow[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{width:100%}.actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"]})}}return t})();const Gye=()=>["start.title"];function qye(t,n){1&t&&L(0,"app-password")}function Kye(t,n){1&t&&(h(0,"div",5),L(1,"mat-spinner",7),p(2),_(3,"translate"),u()),2&t&&(c(),C("diameter",11),c(),D(" ",v(3,2,"settings.checking-auth")," "))}let Yye=(()=>{class t extends Lt{constructor(e,i,o,r){super(),this.authService=e,this.router=i,this.snackbarService=o,this.dialog=r,this.persistentAuthDataResponseKey="serv-aut-response",this.tabsData=[],this.options=[],this.waitBeforeShowingLoading=!0,this.authChecked=!1,this.authActive=!1,this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"schedule",label:"nodes.uptime-title",linkParts:["/nodes","uptime"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}],this.updateOptionsMenu()}ngOnInit(){return setTimeout(()=>{this.waitBeforeShowingLoading=!1},500),this.checkAuth(0,!0),super.ngOnInit()}checkAuth(e,i){const o=i?this.getLocalValue(this.persistentAuthDataResponseKey):null;let r=this.authService.checkLogin();o&&(r=se(JSON.parse(o.value))),this.authSubscription=se(1).pipe(oi(e),Tt(()=>r)).subscribe(s=>{o||this.saveLocalValue(this.persistentAuthDataResponseKey,JSON.stringify(s)),this.authChecked=!0,this.authActive=s===Ea.Logged,this.updateOptionsMenu(),o&&this.checkAuth(0,!1)},()=>{this.checkAuth(15e3,!1)})}ngOnDestroy(){this.authSubscription.unsubscribe()}updateOptionsMenu(){this.options=[],this.authActive&&(this.options=[{name:"common.logout",actionName:"logout",icon:"power_settings_new"}])}performAction(e){"logout"===e&&this.logout()}logout(){const e=Ut.createConfirmationDialog(this.dialog,"common.logout-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.authService.logout().subscribe(()=>this.router.navigate(["login"]),()=>this.snackbarService.showError("common.logout-error"))})}static{this.\u0275fac=function(i){return new(i||t)(O(ep),O(yt),O(ot),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-settings"]],standalone:!1,features:[_e],decls:8,vars:9,consts:[[1,"row"],[1,"col-12"],[3,"optionSelected","titleParts","tabsData","selectedTabIndex","showUpdateButton","optionsData"],[1,"content","col-12","mt-4.5"],[1,"d-block","mb-4"],[1,"white-theme","checking-container"],[3,"showShortList"],[3,"diameter"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"app-top-bar",2),F("optionSelected",function(s){return o.performAction(s)}),u()(),h(3,"div",3),L(4,"app-refresh-rate",4),x(5,qye,1,0,"app-password"),x(6,Kye,4,4,"div",5),L(7,"app-label-list",6),u()()),2&i&&(c(2),C("titleParts",vt(8,Gye))("tabsData",o.tabsData)("selectedTabIndex",7)("showUpdateButton",!1)("optionsData",o.options),c(3),k(o.authChecked&&o.authActive?5:-1),c(),k(o.authChecked||o.waitBeforeShowingLoading?-1:6),c(),C("showShortList",!0))},dependencies:[ci,YB,vye,tr,xV,we],styles:[".checking-container[_ngcontent-%COMP%]{font-size:10px;opacity:.5}.checking-container[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%]{display:inline-block}.show-link[_ngcontent-%COMP%]{cursor:pointer;font-size:.8rem}"]})}}return t})(),RS=(()=>{class t{constructor(e){this.apiService=e}get(e,i){return this.apiService.get(`visors/${e}/routes/${i}`)}delete(e,i){return this.apiService.delete(`visors/${e}/routes/${i}`)}setMinHops(e,i){return this.apiService.post(`visors/${e}/min-hops`,{min_hops:i})}static{this.\u0275fac=function(i){return new(i||t)(ce(fi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function Mu(t){return t+.5|0}const Us=(t,n,e)=>Math.max(Math.min(t,e),n);function up(t){return Us(Mu(2.55*t),0,255)}function Ba(t){return Us(Mu(255*t),0,255)}function zs(t){return Us(Mu(t/2.55)/100,0,1)}function kV(t){return Us(Mu(100*t),0,100)}const nr={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},FS=[..."0123456789ABCDEF"],Xye=t=>FS[15&t],Zye=t=>FS[(240&t)>>4]+FS[15&t],xv=t=>(240&t)>>4==(15&t);const n1e=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function SV(t,n,e){const i=n*Math.min(e,1-e),o=(r,s=(r+t/30)%12)=>e-i*Math.max(Math.min(s-3,9-s,1),-1);return[o(0),o(8),o(4)]}function i1e(t,n,e){const i=(o,r=(o+t/60)%6)=>e-e*n*Math.max(Math.min(r,4-r,1),0);return[i(5),i(3),i(1)]}function o1e(t,n,e){const i=SV(t,1,.5);let o;for(n+e>1&&(o=1/(n+e),n*=o,e*=o),o=0;o<3;o++)i[o]*=1-n-e,i[o]+=n;return i}function NS(t){const e=t.r/255,i=t.g/255,o=t.b/255,r=Math.max(e,i,o),s=Math.min(e,i,o),a=(r+s)/2;let l,d,f;return r!==s&&(f=r-s,d=a>.5?f/(2-r-s):f/(r+s),l=function r1e(t,n,e,i,o){return t===o?(n-e)/i+(nt<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Du=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Sv(t,n,e){if(t){let i=NS(t);i[n]=Math.max(0,Math.min(i[n]+i[n]*e,0===n?360:1)),i=BS(i),t.r=i[0],t.g=i[1],t.b=i[2]}}function EV(t,n){return t&&Object.assign(n||{},t)}function PV(t){var n={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(n={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(n.a=Ba(t[3]))):(n=EV(t,{r:0,g:0,b:0,a:1})).a=Ba(n.a),n}function _1e(t){return"r"===t.charAt(0)?function p1e(t){const n=f1e.exec(t);let i,o,r,e=255;if(n){if(n[7]!==i){const s=+n[7];e=n[8]?up(s):Us(255*s,0,255)}return i=+n[1],o=+n[3],r=+n[5],i=255&(n[2]?up(i):Us(i,0,255)),o=255&(n[4]?up(o):Us(o,0,255)),r=255&(n[6]?up(r):Us(r,0,255)),{r:i,g:o,b:r,a:e}}}(t):function l1e(t){const n=n1e.exec(t);let i,e=255;if(!n)return;n[5]!==i&&(e=n[6]?up(+n[5]):Ba(+n[5]));const o=MV(+n[2]),r=+n[3]/100,s=+n[4]/100;return i="hwb"===n[1]?function s1e(t,n,e){return LS(o1e,t,n,e)}(o,r,s):"hsv"===n[1]?function a1e(t,n,e){return LS(i1e,t,n,e)}(o,r,s):BS(o,r,s),{r:i[0],g:i[1],b:i[2],a:e}}(t)}class Tu{constructor(n){if(n instanceof Tu)return n;const e=typeof n;let i;"object"===e?i=PV(n):"string"===e&&(i=function Jye(t){var e,n=t.length;return"#"===t[0]&&(4===n||5===n?e={r:255&17*nr[t[1]],g:255&17*nr[t[2]],b:255&17*nr[t[3]],a:5===n?17*nr[t[4]]:255}:(7===n||9===n)&&(e={r:nr[t[1]]<<4|nr[t[2]],g:nr[t[3]]<<4|nr[t[4]],b:nr[t[5]]<<4|nr[t[6]],a:9===n?nr[t[7]]<<4|nr[t[8]]:255})),e}(n)||function h1e(t){kv||(kv=function u1e(){const t={},n=Object.keys(TV),e=Object.keys(DV);let i,o,r,s,a;for(i=0;i>16&255,r>>8&255,255&r]}return t}(),kv.transparent=[0,0,0,0]);const n=kv[t.toLowerCase()];return n&&{r:n[0],g:n[1],b:n[2],a:4===n.length?n[3]:255}}(n)||_1e(n)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var n=EV(this._rgb);return n&&(n.a=zs(n.a)),n}set rgb(n){this._rgb=PV(n)}rgbString(){return this._valid?function m1e(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${zs(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}(this._rgb):void 0}hexString(){return this._valid?function t1e(t){var n=(t=>xv(t.r)&&xv(t.g)&&xv(t.b)&&xv(t.a))(t)?Xye:Zye;return t?"#"+n(t.r)+n(t.g)+n(t.b)+((t,n)=>t<255?n(t):"")(t.a,n):void 0}(this._rgb):void 0}hslString(){return this._valid?function d1e(t){if(!t)return;const n=NS(t),e=n[0],i=kV(n[1]),o=kV(n[2]);return t.a<255?`hsla(${e}, ${i}%, ${o}%, ${zs(t.a)})`:`hsl(${e}, ${i}%, ${o}%)`}(this._rgb):void 0}mix(n,e){if(n){const i=this.rgb,o=n.rgb;let r;const s=e===r?.5:e,a=2*s-1,l=i.a-o.a,d=((a*l===-1?a:(a+l)/(1+a*l))+1)/2;r=1-d,i.r=255&d*i.r+r*o.r+.5,i.g=255&d*i.g+r*o.g+.5,i.b=255&d*i.b+r*o.b+.5,i.a=s*i.a+(1-s)*o.a,this.rgb=i}return this}interpolate(n,e){return n&&(this._rgb=function g1e(t,n,e){const i=Du(zs(t.r)),o=Du(zs(t.g)),r=Du(zs(t.b));return{r:Ba(VS(i+e*(Du(zs(n.r))-i))),g:Ba(VS(o+e*(Du(zs(n.g))-o))),b:Ba(VS(r+e*(Du(zs(n.b))-r))),a:t.a+e*(n.a-t.a)}}(this._rgb,n._rgb,e)),this}clone(){return new Tu(this.rgb)}alpha(n){return this._rgb.a=Ba(n),this}clearer(n){return this._rgb.a*=1-n,this}greyscale(){const n=this._rgb,e=Mu(.3*n.r+.59*n.g+.11*n.b);return n.r=n.g=n.b=e,this}opaquer(n){return this._rgb.a*=1+n,this}negate(){const n=this._rgb;return n.r=255-n.r,n.g=255-n.g,n.b=255-n.b,this}lighten(n){return Sv(this._rgb,2,n),this}darken(n){return Sv(this._rgb,2,-n),this}saturate(n){return Sv(this._rgb,1,n),this}desaturate(n){return Sv(this._rgb,1,-n),this}rotate(n){return function c1e(t,n){var e=NS(t);e[0]=MV(e[0]+n),e=BS(e),t.r=e[0],t.g=e[1],t.b=e[2]}(this._rgb,n),this}}const b1e=(()=>{let t=0;return()=>t++})();function ut(t){return null==t}function yn(t){if(Array.isArray&&Array.isArray(t))return!0;const n=Object.prototype.toString.call(t);return"[object"===n.slice(0,7)&&"Array]"===n.slice(-6)}function mt(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function jn(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function No(t,n){return jn(t)?t:n}function qe(t,n){return typeof t>"u"?n:t}function hn(t,n,e){if(t&&"function"==typeof t.call)return t.apply(e,n)}function Wt(t,n,e,i){let o,r,s;if(yn(t))if(r=t.length,i)for(o=r-1;o>=0;o--)n.call(e,t[o],o);else for(o=0;ot,x:t=>t.x,y:t=>t.y};function Va(t,n){return(AV[n]||(AV[n]=function x1e(t){const n=function w1e(t){const n=t.split("."),e=[];let i="";for(const o of n)i+=o,i.endsWith("\\")?i=i.slice(0,-1)+".":(e.push(i),i="");return e}(t);return e=>{for(const i of n){if(""===i)break;e=e&&e[i]}return e}}(n)))(t)}function HS(t){return t.charAt(0).toUpperCase()+t.slice(1)}const pp=t=>typeof t<"u",Ha=t=>"function"==typeof t,RV=(t,n)=>{if(t.size!==n.size)return!1;for(const e of t)if(!n.has(e))return!1;return!0},It=Math.PI,Cn=2*It,S1e=Cn+It,Tv=Number.POSITIVE_INFINITY,M1e=It/180,Qn=It/2,kc=It/4,FV=2*It/3,Ua=Math.log10,ss=Math.sign;function mp(t,n,e){return Math.abs(t-n)l&&d=Math.min(n,e)-i&&t<=Math.max(n,e)+i}function jS(t,n,e){e=e||(s=>t[s]1;)r=o+i>>1,e(r)?o=r:i=r;return{lo:o,hi:i}}const Ws=(t,n,e,i)=>jS(t,e,i?o=>{const r=t[o][n];return rt[o][n]jS(t,e,i=>t[i][n]>=e),HV=["push","pop","shift","splice","unshift"];function UV(t,n){const e=t._chartjs;if(!e)return;const i=e.listeners,o=i.indexOf(n);-1!==o&&i.splice(o,1),!(i.length>0)&&(HV.forEach(r=>{delete t[r]}),delete t._chartjs)}const jV=typeof window>"u"?function(t){return t()}:window.requestAnimationFrame;function $V(t,n){let e=[],i=!1;return function(...o){e=o,i||(i=!0,jV.call(window,()=>{i=!1,t.apply(n,e)}))}}const Qi=(t,n,e)=>"start"===t?n:"end"===t?e:(n+e)/2;const Ev=t=>0===t||1===t,qV=(t,n,e)=>-Math.pow(2,10*(t-=1))*Math.sin((t-n)*Cn/e),KV=(t,n,e)=>Math.pow(2,-10*t)*Math.sin((t-n)*Cn/e)+1,_p={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*Qn),easeOutSine:t=>Math.sin(t*Qn),easeInOutSine:t=>-.5*(Math.cos(It*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>Ev(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>Ev(t)?t:qV(t,.075,.3),easeOutElastic:t=>Ev(t)?t:KV(t,.075,.3),easeInOutElastic:t=>Ev(t)?t:t<.5?.5*qV(2*t,.1125,.45):.5+.5*KV(2*t-1,.1125,.45),easeInBack:t=>t*t*(2.70158*t-1.70158),easeOutBack:t=>(t-=1)*t*(2.70158*t+1.70158)+1,easeInOutBack(t){let n=1.70158;return(t/=.5)<1?t*t*((1+(n*=1.525))*t-n)*.5:.5*((t-=2)*t*((1+(n*=1.525))*t+n)+2)},easeInBounce:t=>1-_p.easeOutBounce(1-t),easeOutBounce:t=>t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,easeInOutBounce:t=>t<.5?.5*_p.easeInBounce(2*t):.5*_p.easeOutBounce(2*t-1)+.5};function WS(t){if(t&&"object"==typeof t){const n=t.toString();return"[object CanvasPattern]"===n||"[object CanvasGradient]"===n}return!1}function YV(t){return WS(t)?t:new Tu(t)}function GS(t){return WS(t)?t:new Tu(t).saturate(.5).darken(.1).hexString()}const L1e=["x","y","borderWidth","radius","tension"],B1e=["color","borderColor","backgroundColor"],XV=new Map;function bp(t,n,e){return function U1e(t,n){n=n||{};const e=t+JSON.stringify(n);let i=XV.get(e);return i||(i=new Intl.NumberFormat(t,n),XV.set(e,i)),i}(n,e).format(t)}const ZV={values:t=>yn(t)?t:""+t,numeric(t,n,e){if(0===t)return"0";const i=this.chart.options.locale;let o,r=t;if(e.length>1){const d=Math.max(Math.abs(e[0].value),Math.abs(e[e.length-1].value));(d<1e-4||d>1e15)&&(o="scientific"),r=function z1e(t,n){let e=n.length>3?n[2].value-n[1].value:n[1].value-n[0].value;return Math.abs(e)>=1&&t!==Math.floor(t)&&(e=t-Math.floor(t)),e}(t,e)}const s=Ua(Math.abs(r)),a=isNaN(s)?1:Math.max(Math.min(-1*Math.floor(s),20),0),l={notation:o,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),bp(t,i,l)},logarithmic(t,n,e){if(0===t)return"0";const i=e[n].significand||t/Math.pow(10,Math.floor(Ua(t)));return[1,2,3,5,10,15].includes(i)||n>.8*e.length?ZV.numeric.call(this,t,n,e):""}};var Pv={formatters:ZV};const Sc=Object.create(null),qS=Object.create(null);function vp(t,n){if(!n)return t;const e=n.split(".");for(let i=0,o=e.length;ii.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(i,o)=>GS(o.backgroundColor),this.hoverBorderColor=(i,o)=>GS(o.borderColor),this.hoverColor=(i,o)=>GS(o.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(n),this.apply(e)}set(n,e){return KS(this,n,e)}get(n){return vp(this,n)}describe(n,e){return KS(qS,n,e)}override(n,e){return KS(Sc,n,e)}route(n,e,i,o){const r=vp(this,n),s=vp(this,i),a="_"+e;Object.defineProperties(r,{[a]:{value:r[e],writable:!0},[e]:{enumerable:!0,get(){const l=this[a],d=s[o];return mt(l)?Object.assign({},d,l):qe(l,d)},set(l){this[a]=l}}})}apply(n){n.forEach(e=>e(this))}}var Dn=new $1e({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function V1e(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:n=>"onProgress"!==n&&"onComplete"!==n&&"fn"!==n}),t.set("animations",{colors:{type:"color",properties:B1e},numbers:{type:"number",properties:L1e}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:n=>0|n}}}})},function H1e(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function j1e(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(n,e)=>e.lineWidth,tickColor:(n,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Pv.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:n=>!n.startsWith("before")&&!n.startsWith("after")&&"callback"!==n&&"parser"!==n,_indexable:n=>"borderDash"!==n&&"tickBorderDash"!==n&&"dash"!==n}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:n=>"backdropPadding"!==n&&"callback"!==n,_indexable:n=>"backdropPadding"!==n})}]);function Iv(t,n,e,i,o){let r=n[o];return r||(r=n[o]=t.measureText(o).width,e.push(o)),r>i&&(i=r),i}function Mc(t,n,e){const i=t.currentDevicePixelRatio,o=0!==e?Math.max(e/2,.5):0;return Math.round((n-o)*i)/i+o}function QV(t,n){!n&&!t||((n=n||t.getContext("2d")).save(),n.resetTransform(),n.clearRect(0,0,t.width,t.height),n.restore())}function YS(t,n,e,i){!function JV(t,n,e,i,o){let r,s,a,l,d,f,m,g;const b=n.pointStyle,w=n.rotation,M=n.radius;let E=(w||0)*M1e;if(b&&"object"==typeof b&&(r=b.toString(),"[object HTMLImageElement]"===r||"[object HTMLCanvasElement]"===r))return t.save(),t.translate(e,i),t.rotate(E),t.drawImage(b,-b.width/2,-b.height/2,b.width,b.height),void t.restore();if(!(isNaN(M)||M<=0)){switch(t.beginPath(),b){default:o?t.ellipse(e,i,o/2,M,0,0,Cn):t.arc(e,i,M,0,Cn),t.closePath();break;case"triangle":f=o?o/2:M,t.moveTo(e+Math.sin(E)*f,i-Math.cos(E)*M),E+=FV,t.lineTo(e+Math.sin(E)*f,i-Math.cos(E)*M),E+=FV,t.lineTo(e+Math.sin(E)*f,i-Math.cos(E)*M),t.closePath();break;case"rectRounded":d=.516*M,l=M-d,s=Math.cos(E+kc)*l,m=Math.cos(E+kc)*(o?o/2-d:l),a=Math.sin(E+kc)*l,g=Math.sin(E+kc)*(o?o/2-d:l),t.arc(e-m,i-a,d,E-It,E-Qn),t.arc(e+g,i-s,d,E-Qn,E),t.arc(e+m,i+a,d,E,E+Qn),t.arc(e-g,i+s,d,E+Qn,E+It),t.closePath();break;case"rect":if(!w){l=Math.SQRT1_2*M,f=o?o/2:l,t.rect(e-f,i-l,2*f,2*l);break}E+=kc;case"rectRot":m=Math.cos(E)*(o?o/2:M),s=Math.cos(E)*M,a=Math.sin(E)*M,g=Math.sin(E)*(o?o/2:M),t.moveTo(e-m,i-a),t.lineTo(e+g,i-s),t.lineTo(e+m,i+a),t.lineTo(e-g,i+s),t.closePath();break;case"crossRot":E+=kc;case"cross":m=Math.cos(E)*(o?o/2:M),s=Math.cos(E)*M,a=Math.sin(E)*M,g=Math.sin(E)*(o?o/2:M),t.moveTo(e-m,i-a),t.lineTo(e+m,i+a),t.moveTo(e+g,i-s),t.lineTo(e-g,i+s);break;case"star":m=Math.cos(E)*(o?o/2:M),s=Math.cos(E)*M,a=Math.sin(E)*M,g=Math.sin(E)*(o?o/2:M),t.moveTo(e-m,i-a),t.lineTo(e+m,i+a),t.moveTo(e+g,i-s),t.lineTo(e-g,i+s),E+=kc,m=Math.cos(E)*(o?o/2:M),s=Math.cos(E)*M,a=Math.sin(E)*M,g=Math.sin(E)*(o?o/2:M),t.moveTo(e-m,i-a),t.lineTo(e+m,i+a),t.moveTo(e+g,i-s),t.lineTo(e-g,i+s);break;case"line":s=o?o/2:Math.cos(E)*M,a=Math.sin(E)*M,t.moveTo(e-s,i-a),t.lineTo(e+s,i+a);break;case"dash":t.moveTo(e,i),t.lineTo(e+Math.cos(E)*(o?o/2:M),i+Math.sin(E)*M);break;case!1:t.closePath()}t.fill(),n.borderWidth>0&&t.stroke()}}(t,n,e,i,null)}function Gs(t,n,e){return e=e||.5,!n||t&&t.x>n.left-e&&t.xn.top-e&&t.y0&&""!==r.strokeColor;let l,d;for(t.save(),t.font=o.string,function Y1e(t,n){n.translation&&t.translate(n.translation[0],n.translation[1]),ut(n.rotation)||t.rotate(n.rotation),n.color&&(t.fillStyle=n.color),n.textAlign&&(t.textAlign=n.textAlign),n.textBaseline&&(t.textBaseline=n.textBaseline)}(t,r),l=0;l+t||0;function e8(t){return function XS(t,n){const e={},i=mt(n),o=i?Object.keys(n):n,r=mt(t)?i?s=>qe(t[s],t[n[s]]):s=>t[s]:()=>t;for(const s of o)e[s]=tCe(r(s));return e}(t,{top:"y",right:"x",bottom:"y",left:"x"})}function Ji(t){const n=e8(t);return n.width=n.left+n.right,n.height=n.top+n.bottom,n}function mi(t,n){let e=qe((t=t||{}).size,(n=n||Dn.font).size);"string"==typeof e&&(e=parseInt(e,10));let i=qe(t.style,n.style);i&&!(""+i).match(J1e)&&(console.warn('Invalid font style specified: "'+i+'"'),i=void 0);const o={family:qe(t.family,n.family),lineHeight:eCe(qe(t.lineHeight,n.lineHeight),e),size:e,style:i,weight:qe(t.weight,n.weight),string:""};return o.string=function W1e(t){return!t||ut(t.size)||ut(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(o),o}function Cp(t,n,e,i){let r,s,a,o=!0;for(r=0,s=t.length;rt[0]){const r=e||t;typeof i>"u"&&(i=r8("_fallback",t));const s={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:r,_fallback:i,_getTarget:o,override:a=>ZS([a,...t],n,r,i)};return new Proxy(s,{deleteProperty:(a,l)=>(delete a[l],delete a._keys,delete t[0][l],!0),get:(a,l)=>n8(a,l,()=>function dCe(t,n,e,i){let o;for(const r of n)if(o=r8(iCe(r,t),e),typeof o<"u")return QS(t,o)?JS(e,i,t,o):o}(l,n,t,a)),getOwnPropertyDescriptor:(a,l)=>Reflect.getOwnPropertyDescriptor(a._scopes[0],l),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(a,l)=>s8(a).includes(l),ownKeys:a=>s8(a),set(a,l,d){const f=a._storage||(a._storage=o());return a[l]=f[l]=d,delete a._keys,!0}})}function Pu(t,n,e,i){const o={_cacheable:!1,_proxy:t,_context:n,_subProxy:e,_stack:new Set,_descriptors:t8(t,i),setContext:r=>Pu(t,r,e,i),override:r=>Pu(t.override(r),n,e,i)};return new Proxy(o,{deleteProperty:(r,s)=>(delete r[s],delete t[s],!0),get:(r,s,a)=>n8(r,s,()=>function oCe(t,n,e){const{_proxy:i,_context:o,_subProxy:r,_descriptors:s}=t;let a=i[n];return Ha(a)&&s.isScriptable(n)&&(a=function rCe(t,n,e,i){const{_proxy:o,_context:r,_subProxy:s,_stack:a}=e;if(a.has(t))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+t);a.add(t);let l=n(r,s||i);return a.delete(t),QS(t,l)&&(l=JS(o._scopes,o,t,l)),l}(n,a,t,e)),yn(a)&&a.length&&(a=function sCe(t,n,e,i){const{_proxy:o,_context:r,_subProxy:s,_descriptors:a}=e;if(typeof r.index<"u"&&i(t))return n[r.index%n.length];if(mt(n[0])){const l=n,d=o._scopes.filter(f=>f!==l);n=[];for(const f of l){const m=JS(d,o,t,f);n.push(Pu(m,r,s&&s[t],a))}}return n}(n,a,t,s.isIndexable)),QS(n,a)&&(a=Pu(a,o,r&&r[n],s)),a}(r,s,a)),getOwnPropertyDescriptor:(r,s)=>r._descriptors.allKeys?Reflect.has(t,s)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,s),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(r,s)=>Reflect.has(t,s),ownKeys:()=>Reflect.ownKeys(t),set:(r,s,a)=>(t[s]=a,delete r[s],!0)})}function t8(t,n={scriptable:!0,indexable:!0}){const{_scriptable:e=n.scriptable,_indexable:i=n.indexable,_allKeys:o=n.allKeys}=t;return{allKeys:o,scriptable:e,indexable:i,isScriptable:Ha(e)?e:()=>e,isIndexable:Ha(i)?i:()=>i}}const iCe=(t,n)=>t?t+HS(n):n,QS=(t,n)=>mt(n)&&"adapters"!==t&&(null===Object.getPrototypeOf(n)||n.constructor===Object);function n8(t,n,e){if(Object.prototype.hasOwnProperty.call(t,n)||"constructor"===n)return t[n];const i=e();return t[n]=i,i}function i8(t,n,e){return Ha(t)?t(n,e):t}const aCe=(t,n)=>!0===t?n:"string"==typeof t?Va(n,t):void 0;function lCe(t,n,e,i,o){for(const r of n){const s=aCe(e,r);if(s){t.add(s);const a=i8(s._fallback,e,o);if(typeof a<"u"&&a!==e&&a!==i)return a}else if(!1===s&&typeof i<"u"&&e!==i)return null}return!1}function JS(t,n,e,i){const o=n._rootScopes,r=i8(n._fallback,e,i),s=[...t,...o],a=new Set;a.add(i);let l=o8(a,s,e,r||e,i);return!(null===l||typeof r<"u"&&r!==e&&(l=o8(a,s,r,l,i),null===l))&&ZS(Array.from(a),[""],o,r,()=>function cCe(t,n,e){const i=t._getTarget();n in i||(i[n]={});const o=i[n];return yn(o)&&mt(e)?e:o||{}}(n,e,i))}function o8(t,n,e,i,o){for(;e;)e=lCe(t,n,e,i,o);return e}function r8(t,n){for(const e of n){if(!e)continue;const i=e[t];if(typeof i<"u")return i}}function s8(t){let n=t._keys;return n||(n=t._keys=function uCe(t){const n=new Set;for(const e of t)for(const i of Object.keys(e).filter(o=>!o.startsWith("_")))n.add(i);return Array.from(n)}(t._scopes)),n}const hCe=Number.EPSILON||1e-14,Iu=(t,n)=>n"x"===t?"y":"x";function fCe(t,n,e,i){const o=t.skip?n:t,r=n,s=e.skip?n:e,a=zS(r,o),l=zS(s,r);let d=a/(a+l),f=l/(a+l);d=isNaN(d)?0:d,f=isNaN(f)?0:f;const m=i*d,g=i*f;return{previous:{x:r.x-m*(s.x-o.x),y:r.y-m*(s.y-o.y)},next:{x:r.x+g*(s.x-o.x),y:r.y+g*(s.y-o.y)}}}function Rv(t,n,e){return Math.max(Math.min(t,e),n)}function bCe(t,n,e,i,o){let r,s,a,l;if(n.spanGaps&&(t=t.filter(d=>!d.skip)),"monotone"===n.cubicInterpolationMode)!function gCe(t,n="x"){const e=l8(n),i=t.length,o=Array(i).fill(0),r=Array(i);let s,a,l,d=Iu(t,0);for(s=0;st.ownerDocument.defaultView.getComputedStyle(t,null),yCe=["top","right","bottom","left"];function Ec(t,n,e){const i={};e=e?"-"+e:"";for(let o=0;o<4;o++){const r=yCe[o];i[r]=parseFloat(t[n+"-"+r+e])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}function Pc(t,n){if("native"in t)return t;const{canvas:e,currentDevicePixelRatio:i}=n,o=Nv(e),r="border-box"===o.boxSizing,s=Ec(o,"padding"),a=Ec(o,"border","width"),{x:l,y:d,box:f}=function wCe(t,n){const e=t.touches,i=e&&e.length?e[0]:t,{offsetX:o,offsetY:r}=i;let a,l,s=!1;if(((t,n,e)=>(t>0||n>0)&&(!e||!e.shadowRoot))(o,r,t.target))a=o,l=r;else{const d=n.getBoundingClientRect();a=i.clientX-d.left,l=i.clientY-d.top,s=!0}return{x:a,y:l,box:s}}(t,e),m=s.left+(f&&a.left),g=s.top+(f&&a.top);let{width:b,height:w}=n;return r&&(b-=s.width+a.width,w-=s.height+a.height),{x:Math.round((l-m)/b*e.width/i),y:Math.round((d-g)/w*e.height/i)}}const ja=t=>Math.round(10*t)/10;function c8(t,n,e){const i=n||1,o=ja(t.height*i),r=ja(t.width*i);t.height=ja(t.height),t.width=ja(t.width);const s=t.canvas;return s.style&&(e||!s.style.height&&!s.style.width)&&(s.style.height=`${t.height}px`,s.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==i||s.height!==o||s.width!==r)&&(t.currentDevicePixelRatio=i,s.height=o,s.width=r,t.ctx.setTransform(i,0,0,i,0,0),!0)}const SCe=function(){let t=!1;try{const n={get passive(){return t=!0,!1}};eM()&&(window.addEventListener("test",null,n),window.removeEventListener("test",null,n))}catch{}return t}();function d8(t,n){const e=function vCe(t,n){return Nv(t).getPropertyValue(n)}(t,n),i=e&&e.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}function Ic(t,n,e,i){return{x:t.x+e*(n.x-t.x),y:t.y+e*(n.y-t.y)}}function MCe(t,n,e,i){return{x:t.x+e*(n.x-t.x),y:"middle"===i?e<.5?t.y:n.y:"after"===i?e<1?t.y:n.y:e>0?n.y:t.y}}function DCe(t,n,e,i){const o={x:t.cp2x,y:t.cp2y},r={x:n.cp1x,y:n.cp1y},s=Ic(t,o,e),a=Ic(o,r,e),l=Ic(r,n,e),d=Ic(s,a,e),f=Ic(a,l,e);return Ic(d,f,e)}function f8(t){return"angle"===t?{between:gp,compare:P1e,normalize:Zi}:{between:$s,compare:(n,e)=>n-e,normalize:n=>n}}function p8({start:t,end:n,count:e,loop:i,style:o}){return{start:t%e,end:n%e,loop:i&&(n-t+1)%e==0,style:o}}function m8(t,n,e){if(!e)return[t];const{property:i,start:o,end:r}=e,s=n.length,{compare:a,between:l,normalize:d}=f8(i),{start:f,end:m,loop:g,style:b}=function PCe(t,n,e){const{property:i,start:o,end:r}=e,{between:s,normalize:a}=f8(i),l=n.length;let g,b,{start:d,end:f,loop:m}=t;if(m){for(d+=l,f+=l,g=0,b=l;gM||l(o,W,I)&&0!==a(o,W),oe=()=>!M||0===a(r,I)||l(r,W,I);for(let P=f,R=f;P<=m;++P)A=n[P%s],!A.skip&&(I=d(A[i]),I!==W&&(M=l(I,o,r),null===E&&ee()&&(E=0===a(I,o)?P:R),null!==E&&oe()&&(w.push(p8({start:E,end:P,loop:g,count:s,style:b})),E=null),R=P,W=I));return null!==E&&w.push(p8({start:E,end:m,loop:g,count:s,style:b})),w}function g8(t,n){const e=[],i=t.segments;for(let o=0;oa({chart:n,initial:e.initial,numSteps:s,currentStep:Math.min(i-e.start,s)}))}_refresh(){this._request||(this._running=!0,this._request=jV.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(n=Date.now()){let e=0;this._charts.forEach((i,o)=>{if(!i.running||!i.items.length)return;const r=i.items;let l,s=r.length-1,a=!1;for(;s>=0;--s)l=r[s],l._active?(l._total>i.duration&&(i.duration=l._total),l.tick(n),a=!0):(r[s]=r[r.length-1],r.pop());a&&(o.draw(),this._notify(o,i,n,"progress")),r.length||(i.running=!1,this._notify(o,i,n,"complete"),i.initial=!1),e+=r.length}),this._lastDate=n,0===e&&(this._running=!1)}_getAnims(n){const e=this._charts;let i=e.get(n);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(n,i)),i}listen(n,e,i){this._getAnims(n).listeners[e].push(i)}add(n,e){!e||!e.length||this._getAnims(n).items.push(...e)}has(n){return this._getAnims(n).items.length>0}start(n){const e=this._charts.get(n);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((i,o)=>Math.max(i,o._duration),0),this._refresh())}running(n){if(!this._running)return!1;const e=this._charts.get(n);return!(!e||!e.running||!e.items.length)}stop(n){const e=this._charts.get(n);if(!e||!e.items.length)return;const i=e.items;let o=i.length-1;for(;o>=0;--o)i[o].cancel();e.items=[],this._notify(n,e,Date.now(),"complete")}remove(n){return this._charts.delete(n)}}var qs=new LCe;const y8="transparent",BCe={boolean:(t,n,e)=>e>.5?n:t,color(t,n,e){const i=YV(t||y8),o=i.valid&&YV(n||y8);return o&&o.valid?o.mix(i,e).hexString():n},number:(t,n,e)=>t+(n-t)*e};class VCe{constructor(n,e,i,o){const r=e[i];o=Cp([n.to,o,r,n.from]);const s=Cp([n.from,r,o]);this._active=!0,this._fn=n.fn||BCe[n.type||typeof s],this._easing=_p[n.easing]||_p.linear,this._start=Math.floor(Date.now()+(n.delay||0)),this._duration=this._total=Math.floor(n.duration),this._loop=!!n.loop,this._target=e,this._prop=i,this._from=s,this._to=o,this._promises=void 0}active(){return this._active}update(n,e,i){if(this._active){this._notify(!1);const o=this._target[this._prop],r=i-this._start,s=this._duration-r;this._start=i,this._duration=Math.floor(Math.max(s,n.duration)),this._total+=r,this._loop=!!n.loop,this._to=Cp([n.to,e,o,n.from]),this._from=Cp([n.from,o,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(n){const e=n-this._start,i=this._duration,o=this._prop,r=this._from,s=this._loop,a=this._to;let l;if(this._active=r!==a&&(s||e1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[o]=this._fn(r,a,l))}wait(){const n=this._promises||(this._promises=[]);return new Promise((e,i)=>{n.push({res:e,rej:i})})}_notify(n){const e=n?"res":"rej",i=this._promises||[];for(let o=0;o{const r=n[o];if(!mt(r))return;const s={};for(const a of e)s[a]=r[a];(yn(r.properties)&&r.properties||[o]).forEach(a=>{(a===o||!i.has(a))&&i.set(a,s)})})}_animateOptions(n,e){const i=e.options,o=function UCe(t,n){if(!n)return;let e=t.options;if(e)return e.$shared&&(t.options=e=Object.assign({},e,{$shared:!1,$animations:{}})),e;t.options=n}(n,i);if(!o)return[];const r=this._createAnimations(o,i);return i.$shared&&function HCe(t,n){const e=[],i=Object.keys(n);for(let o=0;o{n.options=i},()=>{}),r}_createAnimations(n,e){const i=this._properties,o=[],r=n.$animations||(n.$animations={}),s=Object.keys(e),a=Date.now();let l;for(l=s.length-1;l>=0;--l){const d=s[l];if("$"===d.charAt(0))continue;if("options"===d){o.push(...this._animateOptions(n,e));continue}const f=e[d];let m=r[d];const g=i.get(d);if(m){if(g&&m.active()){m.update(g,f,a);continue}m.cancel()}g&&g.duration?(r[d]=m=new VCe(g,n,d,f),o.push(m)):n[d]=f}return o}update(n,e){if(0===this._properties.size)return void Object.assign(n,e);const i=this._createAnimations(n,e);return i.length?(qs.add(this._chart,i),!0):void 0}}function w8(t,n){const e=t&&t.options||{},i=e.reverse,o=void 0===e.min?n:0,r=void 0===e.max?n:0;return{start:i?r:o,end:i?o:r}}function x8(t,n){const e=[],i=t._getSortedDatasetMetas(n);let o,r;for(o=0,r=i.length;o0||!e&&r<0)return o.index}return null}function M8(t,n){const{chart:e,_cachedMeta:i}=t,o=e._stacks||(e._stacks={}),{iScale:r,vScale:s,index:a}=i,l=r.axis,d=s.axis,f=function WCe(t,n,e){return`${t.id}.${n.id}.${e.stack||e.type}`}(r,s,i),m=n.length;let g;for(let b=0;be[i].axis===n).shift()}function wp(t,n){const e=t.controller.index,i=t.vScale&&t.vScale.axis;if(i){n=n||t._parsed;for(const o of n){const r=o._stacks;if(!r||void 0===r[i]||void 0===r[i][e])return;delete r[i][e],void 0!==r[i]._visualValues&&void 0!==r[i]._visualValues[e]&&delete r[i]._visualValues[e]}}}const oM=t=>"reset"===t||"none"===t,D8=(t,n)=>n?t:Object.assign({},t);let $a=(()=>class t{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,i){this.chart=e,this._ctx=e.ctx,this.index=i,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=nM(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(e){this.index!==e&&wp(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,i=this._cachedMeta,o=this.getDataset(),r=(g,b,w,M)=>"x"===g?b:"r"===g?M:w,s=i.xAxisID=qe(o.xAxisID,iM(e,"x")),a=i.yAxisID=qe(o.yAxisID,iM(e,"y")),l=i.rAxisID=qe(o.rAxisID,iM(e,"r")),d=i.indexAxis,f=i.iAxisID=r(d,s,a,l),m=i.vAxisID=r(d,a,s,l);i.xScale=this.getScaleForId(s),i.yScale=this.getScaleForId(a),i.rScale=this.getScaleForId(l),i.iScale=this.getScaleForId(f),i.vScale=this.getScaleForId(m)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const i=this._cachedMeta;return e===i.iScale?i.vScale:i.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&UV(this._data,this),e._stacked&&wp(e)}_dataCheck(){const e=this.getDataset(),i=e.data||(e.data=[]),o=this._data;if(mt(i))this._data=function $Ce(t,n){const{iScale:e,vScale:i}=n,o="x"===e.axis?"x":"y",r="x"===i.axis?"x":"y",s=Object.keys(t),a=new Array(s.length);let l,d,f;for(l=0,d=s.length;l{const i="_onData"+HS(e),o=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...r){const s=o.apply(this,r);return t._chartjs.listeners.forEach(a=>{"function"==typeof a[i]&&a[i](...r)}),s}})}))}(i,this),this._syncList=[],this._data=i}}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const i=this._cachedMeta,o=this.getDataset();let r=!1;this._dataCheck();const s=i._stacked;i._stacked=nM(i.vScale,i),i.stack!==o.stack&&(r=!0,wp(i),i.stack=o.stack),this._resyncElements(e),(r||s!==i._stacked)&&(M8(this,i._parsed),i._stacked=nM(i.vScale,i))}configure(){const e=this.chart.config,i=e.datasetScopeKeys(this._type),o=e.getOptionScopes(this.getDataset(),i,!0);this.options=e.createResolver(o,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,i){const{_cachedMeta:o,_data:r}=this,{iScale:s,_stacked:a}=o,l=s.axis;let m,g,b,d=0===e&&i===r.length||o._sorted,f=e>0&&o._parsed[e-1];if(!1===this._parsing)o._parsed=r,o._sorted=!0,b=r;else{b=yn(r[e])?this.parseArrayData(o,r,e,i):mt(r[e])?this.parseObjectData(o,r,e,i):this.parsePrimitiveData(o,r,e,i);const w=()=>null===g[l]||f&&g[l]t&&!n.hidden&&n._stacked&&{keys:x8(this.chart,!0),values:null})(i,o),f={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:m,max:g}=function GCe(t){const{min:n,max:e,minDefined:i,maxDefined:o}=t.getUserBounds();return{min:i?n:Number.NEGATIVE_INFINITY,max:o?e:Number.POSITIVE_INFINITY}}(l);let b,w;function M(){w=r[b];const E=w[l.axis];return!jn(w[e.axis])||m>E||g=0;--b)if(!M()){this.updateRangeFromParsed(f,e,w,d);break}return f}getAllParsedValues(e){const i=this._cachedMeta._parsed,o=[];let r,s,a;for(r=0,s=i.length;r=0&&ethis.getContext(o,r,i),g);return E.$shared&&(E.$shared=d,s[a]=Object.freeze(D8(E,d))),E}_resolveAnimations(e,i,o){const r=this.chart,s=this._cachedDataOpts,a=`animation-${i}`,l=s[a];if(l)return l;let d;if(!1!==r.options.animation){const m=this.chart.config,g=m.datasetAnimationScopeKeys(this._type,i),b=m.getOptionScopes(this.getDataset(),g);d=m.createResolver(b,this.getContext(e,o,i))}const f=new C8(r,d&&d.animations);return d&&d._cacheable&&(s[a]=Object.freeze(f)),f}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,i){return!i||oM(e)||this.chart._animationsDisabled}_getSharedOptions(e,i){const o=this.resolveDataElementOptions(e,i),r=this._sharedOptions,s=this.getSharedOptions(o),a=this.includeOptions(i,s)||s!==r;return this.updateSharedOptions(s,i,o),{sharedOptions:s,includeOptions:a}}updateElement(e,i,o,r){oM(r)?Object.assign(e,o):this._resolveAnimations(i,r).update(e,o)}updateSharedOptions(e,i,o){e&&!oM(i)&&this._resolveAnimations(void 0,i).update(e,o)}_setStyle(e,i,o,r){e.active=r;const s=this.getStyle(i,r);this._resolveAnimations(i,o,r).update(e,{options:!r&&this.getSharedOptions(s)||s})}removeHoverStyle(e,i,o){this._setStyle(e,o,"active",!1)}setHoverStyle(e,i,o){this._setStyle(e,o,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const i=this._data,o=this._cachedMeta.data;for(const[l,d,f]of this._syncList)this[l](d,f);this._syncList=[];const r=o.length,s=i.length,a=Math.min(s,r);a&&this.parse(0,a),s>r?this._insertElements(r,s-r,e):s{for(f.length+=i,l=f.length-1;l>=a;l--)f[l]=f[l-i]};for(d(s),l=e;lclass t extends $a{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(e){const i=this._cachedMeta,{dataset:o,data:r=[],_dataset:s}=i,a=this.chart._animationsDisabled;let{start:l,count:d}=function WV(t,n,e){const i=n.length;let o=0,r=i;if(t._sorted){const{iScale:s,vScale:a,_parsed:l}=t,d=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,f=s.axis,{min:m,max:g,minDefined:b,maxDefined:w}=s.getUserBounds();if(b){if(o=Math.min(Ws(l,f,m).lo,e?i:Ws(n,f,s.getPixelForValue(m)).lo),d){const M=l.slice(0,o+1).reverse().findIndex(E=>!ut(E[a.axis]));o-=Math.max(0,M)}o=Ti(o,0,i-1)}if(w){let M=Math.max(Ws(l,s.axis,g,!0).hi+1,e?0:Ws(n,f,s.getPixelForValue(g),!0).hi+1);if(d){const E=l.slice(M-1).findIndex(I=>!ut(I[a.axis]));M+=Math.max(0,E)}r=Ti(M,o,i)-o}else r=i-o}return{start:o,count:r}}(i,r,a);this._drawStart=l,this._drawCount=d,function GV(t){const{xScale:n,yScale:e,_scaleRanges:i}=t,o={xmin:n.min,xmax:n.max,ymin:e.min,ymax:e.max};if(!i)return t._scaleRanges=o,!0;const r=i.xmin!==n.min||i.xmax!==n.max||i.ymin!==e.min||i.ymax!==e.max;return Object.assign(i,o),r}(i)&&(l=0,d=r.length),o._chart=this.chart,o._datasetIndex=this.index,o._decimated=!!s._decimated,o.points=r;const f=this.resolveDatasetElementOptions(e);this.options.showLine||(f.borderWidth=0),f.segment=this.options.segment,this.updateElement(o,void 0,{animated:!a,options:f},e),this.updateElements(r,l,d,e)}updateElements(e,i,o,r){const s="reset"===r,{iScale:a,vScale:l,_stacked:d,_dataset:f}=this._cachedMeta,{sharedOptions:m,includeOptions:g}=this._getSharedOptions(i,r),b=a.axis,w=l.axis,{spanGaps:M,segment:E}=this.options,I=Eu(M)?M:Number.POSITIVE_INFINITY,A=this.chart._animationsDisabled||s||"none"===r,W=i+o,q=e.length;let Y=i>0&&this.getParsed(i-1);for(let ee=0;ee=W){P.skip=!0;continue}const R=this.getParsed(ee),B=ut(R[w]),$=P[b]=a.getPixelForValue(R[b],ee),z=P[w]=s||B?l.getBasePixel():l.getPixelForValue(d?this.applyStack(l,R,d):R[w],ee);P.skip=isNaN($)||isNaN(z)||B,P.stop=ee>0&&Math.abs(R[b]-Y[b])>I,E&&(P.parsed=R,P.raw=f.data[ee]),g&&(P.options=m||this.resolveDataElementOptions(ee,oe.active?"active":r)),A||this.updateElement(oe,ee,P,r),Y=R}}getMaxOverflow(){const e=this._cachedMeta,i=e.dataset,o=i.options&&i.options.borderWidth||0,r=e.data||[];if(!r.length)return o;const s=r[0].size(this.resolveDataElementOptions(0)),a=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(o,s,a)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}})();function h0e(t,n,e,i){const{controller:o,data:r,_sorted:s}=t,a=o._cachedMeta.iScale,l=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null;if(a&&n===a.axis&&"r"!==n&&s&&r.length){const d=a._reversePixels?O1e:Ws;if(!i){const f=d(r,n,e);if(l){const{vScale:m}=o._cachedMeta,{_parsed:g}=t,b=g.slice(0,f.lo+1).reverse().findIndex(M=>!ut(M[m.axis]));f.lo-=Math.max(0,b);const w=g.slice(f.hi).findIndex(M=>!ut(M[m.axis]));f.hi+=Math.max(0,w)}return f}if(o._sharedOptions){const f=r[0],m="function"==typeof f.getRange&&f.getRange(n);if(m){const g=d(r,n,e-m),b=d(r,n,e+m);return{lo:g.lo,hi:b.hi}}}}return{lo:0,hi:r.length-1}}function xp(t,n,e,i,o){const r=t.getSortedVisibleDatasetMetas(),s=e[n];for(let a=0,l=r.length;a{l[s]&&l[s](n[e],o)&&(r.push({element:l,datasetIndex:d,index:f}),a=a||l.inRange(n.x,n.y,o))}),i&&!a?[]:r}var g0e={evaluateInteractionItems:xp,modes:{index(t,n,e,i){const o=Pc(n,t),r=e.axis||"x",s=e.includeInvisible||!1,a=e.intersect?lM(t,o,r,i,s):cM(t,o,r,!1,i,s),l=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach(d=>{const f=a[0].index,m=d.data[f];m&&!m.skip&&l.push({element:m,datasetIndex:d.index,index:f})}),l):[]},dataset(t,n,e,i){const o=Pc(n,t),r=e.axis||"xy",s=e.includeInvisible||!1;let a=e.intersect?lM(t,o,r,i,s):cM(t,o,r,!1,i,s);if(a.length>0){const l=a[0].datasetIndex,d=t.getDatasetMeta(l).data;a=[];for(let f=0;flM(t,Pc(n,t),e.axis||"xy",i,e.includeInvisible||!1),nearest:(t,n,e,i)=>cM(t,Pc(n,t),e.axis||"xy",e.intersect,i,e.includeInvisible||!1),x:(t,n,e,i)=>R8(t,Pc(n,t),"x",e.intersect,i),y:(t,n,e,i)=>R8(t,Pc(n,t),"y",e.intersect,i)}};const F8=["left","top","right","bottom"];function kp(t,n){return t.filter(e=>e.pos===n)}function N8(t,n){return t.filter(e=>-1===F8.indexOf(e.pos)&&e.box.axis===n)}function Sp(t,n){return t.sort((e,i)=>{const o=n?i:e,r=n?e:i;return o.weight===r.weight?o.index-r.index:o.weight-r.weight})}function L8(t,n,e,i){return Math.max(t[e],n[e])+Math.max(t[i],n[i])}function B8(t,n){t.top=Math.max(t.top,n.top),t.left=Math.max(t.left,n.left),t.bottom=Math.max(t.bottom,n.bottom),t.right=Math.max(t.right,n.right)}function C0e(t,n,e,i){const{pos:o,box:r}=e,s=t.maxPadding;if(!mt(o)){e.size&&(t[o]-=e.size);const m=i[e.stack]||{size:0,count:1};m.size=Math.max(m.size,e.horizontal?r.height:r.width),e.size=m.size/m.count,t[o]+=e.size}r.getPadding&&B8(s,r.getPadding());const a=Math.max(0,n.outerWidth-L8(s,t,"left","right")),l=Math.max(0,n.outerHeight-L8(s,t,"top","bottom")),d=a!==t.w,f=l!==t.h;return t.w=a,t.h=l,e.horizontal?{same:d,other:f}:{same:f,other:d}}function x0e(t,n){const e=n.maxPadding;return function i(o){const r={left:0,top:0,right:0,bottom:0};return o.forEach(s=>{r[s]=Math.max(n[s],e[s])}),r}(t?["left","right"]:["top","bottom"])}function Mp(t,n,e,i){const o=[];let r,s,a,l,d,f;for(r=0,s=t.length,d=0;rd.box.fullSize),!0),i=Sp(kp(n,"left"),!0),o=Sp(kp(n,"right")),r=Sp(kp(n,"top"),!0),s=Sp(kp(n,"bottom")),a=N8(n,"x"),l=N8(n,"y");return{fullSize:e,leftAndTop:i.concat(r),rightAndBottom:o.concat(l).concat(s).concat(a),chartArea:kp(n,"chartArea"),vertical:i.concat(o).concat(l),horizontal:r.concat(s).concat(a)}}(t.boxes),l=a.vertical,d=a.horizontal;Wt(t.boxes,M=>{"function"==typeof M.beforeLayout&&M.beforeLayout()});const f=l.reduce((M,E)=>E.box.options&&!1===E.box.options.display?M:M+1,0)||1,m=Object.freeze({outerWidth:n,outerHeight:e,padding:o,availableWidth:r,availableHeight:s,vBoxMaxWidth:r/2/f,hBoxMaxHeight:s/2}),g=Object.assign({},o);B8(g,Ji(i));const b=Object.assign({maxPadding:g,w:r,h:s,x:o.left,y:o.top},o),w=function v0e(t,n){const e=function b0e(t){const n={};for(const e of t){const{stack:i,pos:o,stackWeight:r}=e;if(!i||!F8.includes(o))continue;const s=n[i]||(n[i]={count:0,placed:0,weight:0,size:0});s.count++,s.weight+=r}return n}(t),{vBoxMaxWidth:i,hBoxMaxHeight:o}=n;let r,s,a;for(r=0,s=t.length;r{const E=M.box;Object.assign(E,t.chartArea),E.update(b.w,b.h,{left:0,top:0,right:0,bottom:0})})}};class H8{acquireContext(n,e){}releaseContext(n){return!1}addEventListener(n,e,i){}removeEventListener(n,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(n,e,i,o){return e=Math.max(0,e||n.width),i=i||n.height,{width:e,height:Math.max(0,o?Math.floor(e/o):i)}}isAttached(n){return!0}updateConfig(n){}}class k0e extends H8{acquireContext(n){return n&&n.getContext&&n.getContext("2d")||null}updateConfig(n){n.options.animation=!1}}const Vv="$chartjs",S0e={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},U8=t=>null===t||""===t,z8=!!SCe&&{passive:!0};function T0e(t,n,e){t&&t.canvas&&t.canvas.removeEventListener(n,e,z8)}function Hv(t,n){for(const e of t)if(e===n||e.contains(n))return!0}function P0e(t,n,e){const i=t.canvas,o=new MutationObserver(r=>{let s=!1;for(const a of r)s=s||Hv(a.addedNodes,i),s=s&&!Hv(a.removedNodes,i);s&&e()});return o.observe(document,{childList:!0,subtree:!0}),o}function I0e(t,n,e){const i=t.canvas,o=new MutationObserver(r=>{let s=!1;for(const a of r)s=s||Hv(a.removedNodes,i),s=s&&!Hv(a.addedNodes,i);s&&e()});return o.observe(document,{childList:!0,subtree:!0}),o}const Dp=new Map;let j8=0;function $8(){const t=window.devicePixelRatio;t!==j8&&(j8=t,Dp.forEach((n,e)=>{e.currentDevicePixelRatio!==t&&n()}))}function R0e(t,n,e){const i=t.canvas,o=i&&tM(i);if(!o)return;const r=$V((a,l)=>{const d=o.clientWidth;e(a,l),d{const l=a[0],d=l.contentRect.width,f=l.contentRect.height;0===d&&0===f||r(d,f)});return s.observe(o),function O0e(t,n){Dp.size||window.addEventListener("resize",$8),Dp.set(t,n)}(t,r),s}function dM(t,n,e){e&&e.disconnect(),"resize"===n&&function A0e(t){Dp.delete(t),Dp.size||window.removeEventListener("resize",$8)}(t)}function F0e(t,n,e){const i=t.canvas,o=$V(r=>{null!==t.ctx&&e(function E0e(t,n){const e=S0e[t.type]||t.type,{x:i,y:o}=Pc(t,n);return{type:e,chart:n,native:t,x:void 0!==i?i:null,y:void 0!==o?o:null}}(r,t))},t);return function D0e(t,n,e){t&&t.addEventListener(n,e,z8)}(i,n,o),o}class N0e extends H8{acquireContext(n,e){const i=n&&n.getContext&&n.getContext("2d");return i&&i.canvas===n?(function M0e(t,n){const e=t.style,i=t.getAttribute("height"),o=t.getAttribute("width");if(t[Vv]={initial:{height:i,width:o,style:{display:e.display,height:e.height,width:e.width}}},e.display=e.display||"block",e.boxSizing=e.boxSizing||"border-box",U8(o)){const r=d8(t,"width");void 0!==r&&(t.width=r)}if(U8(i))if(""===t.style.height)t.height=t.width/(n||2);else{const r=d8(t,"height");void 0!==r&&(t.height=r)}}(n,e),i):null}releaseContext(n){const e=n.canvas;if(!e[Vv])return!1;const i=e[Vv].initial;["height","width"].forEach(r=>{const s=i[r];ut(s)?e.removeAttribute(r):e.setAttribute(r,s)});const o=i.style||{};return Object.keys(o).forEach(r=>{e.style[r]=o[r]}),e.width=e.width,delete e[Vv],!0}addEventListener(n,e,i){this.removeEventListener(n,e),(n.$proxies||(n.$proxies={}))[e]=({attach:P0e,detach:I0e,resize:R0e}[e]||F0e)(n,e,i)}removeEventListener(n,e){const i=n.$proxies||(n.$proxies={}),o=i[e];o&&(({attach:dM,detach:dM,resize:dM}[e]||T0e)(n,e,o),i[e]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(n,e,i,o){return function kCe(t,n,e,i){const o=Nv(t),r=Ec(o,"margin"),s=Fv(o.maxWidth,t,"clientWidth")||Tv,a=Fv(o.maxHeight,t,"clientHeight")||Tv,l=function xCe(t,n,e){let i,o;if(void 0===n||void 0===e){const r=t&&tM(t);if(r){const s=r.getBoundingClientRect(),a=Nv(r),l=Ec(a,"border","width"),d=Ec(a,"padding");n=s.width-d.width-l.width,e=s.height-d.height-l.height,i=Fv(a.maxWidth,r,"clientWidth"),o=Fv(a.maxHeight,r,"clientHeight")}else n=t.clientWidth,e=t.clientHeight}return{width:n,height:e,maxWidth:i||Tv,maxHeight:o||Tv}}(t,n,e);let{width:d,height:f}=l;if("content-box"===o.boxSizing){const g=Ec(o,"border","width"),b=Ec(o,"padding");d-=b.width+g.width,f-=b.height+g.height}return d=Math.max(0,d-r.width),f=Math.max(0,i?d/i:f-r.height),d=ja(Math.min(d,s,l.maxWidth)),f=ja(Math.min(f,a,l.maxHeight)),d&&!f&&(f=ja(d/2)),(void 0!==n||void 0!==e)&&i&&l.height&&f>l.height&&(f=l.height,d=ja(Math.floor(f*i))),{width:d,height:f}}(n,e,i,o)}isAttached(n){const e=n&&tM(n);return!(!e||!e.isConnected)}}class Ks{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(n){const{x:e,y:i}=this.getProps(["x","y"],n);return{x:e,y:i}}hasValue(){return Eu(this.x)&&Eu(this.y)}getProps(n,e){const i=this.$animations;if(!e||!i)return this;const o={};return n.forEach(r=>{o[r]=i[r]&&i[r].active()?i[r]._to:this[r]}),o}}function Uv(t,n,e,i,o){const r=qe(i,0),s=Math.min(qe(o,t.length),t.length);let l,d,f,a=0;for(e=Math.ceil(e),o&&(l=o-i,e=l/Math.floor(l/e)),f=r;f<0;)a++,f=Math.round(r+a*e);for(d=Math.max(r,0);d"top"===n||"left"===n?t[n]+e:t[n]-e,G8=(t,n)=>Math.min(n||t,t);function q8(t,n){const e=[],i=t.length/n,o=t.length;let r=0;for(;rs+a)))return l}function Tp(t){return t.drawTicks?t.tickLength:0}function K8(t,n){if(!t.display)return 0;const e=mi(t.font,n),i=Ji(t.padding);return(yn(t.text)?t.text.length:1)*e.lineHeight+i.height}function Y0e(t,n,e){let i=(t=>"start"===t?"left":"end"===t?"right":"center")(t);return(e&&"right"!==n||!e&&"right"===n)&&(i=(t=>"left"===t?"right":"right"===t?"left":t)(i)),i}class Ac extends Ks{constructor(n){super(),this.id=n.id,this.type=n.type,this.options=void 0,this.ctx=n.ctx,this.chart=n.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(n){this.options=n.setContext(this.getContext()),this.axis=n.axis,this._userMin=this.parse(n.min),this._userMax=this.parse(n.max),this._suggestedMin=this.parse(n.suggestedMin),this._suggestedMax=this.parse(n.suggestedMax)}parse(n,e){return n}getUserBounds(){let{_userMin:n,_userMax:e,_suggestedMin:i,_suggestedMax:o}=this;return n=No(n,Number.POSITIVE_INFINITY),e=No(e,Number.NEGATIVE_INFINITY),i=No(i,Number.POSITIVE_INFINITY),o=No(o,Number.NEGATIVE_INFINITY),{min:No(n,i),max:No(e,o),minDefined:jn(n),maxDefined:jn(e)}}getMinMax(n){let s,{min:e,max:i,minDefined:o,maxDefined:r}=this.getUserBounds();if(o&&r)return{min:e,max:i};const a=this.getMatchingVisibleMetas();for(let l=0,d=a.length;li?i:e,i=o&&e>i?e:i,{min:No(e,No(i,e)),max:No(i,No(e,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const n=this.chart.data;return this.options.labels||(this.isHorizontal()?n.xLabels:n.yLabels)||n.labels||[]}getLabelItems(n=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(n))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){hn(this.options.beforeUpdate,[this])}update(n,e,i){const{beginAtZero:o,grace:r,ticks:s}=this.options,a=s.sampleSize;this.beforeUpdate(),this.maxWidth=n,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=function nCe(t,n,e){const{min:i,max:o}=t,r=((t,n)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*n:+t)(n,(o-i)/2),s=(a,l)=>e&&0===a?0:a+l;return{min:s(i,-Math.abs(r)),max:s(o,r)}}(this,r,o),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=ao)return function z0e(t,n,e,i){let s,o=0,r=e[0];for(i=Math.ceil(i),s=0;so-r).pop(),n}(i);for(let s=0,a=r.length-1;so)return l}return Math.max(o,1)}(r,n,o);if(s>0){let m,g;const b=s>1?Math.round((l-a)/(s-1)):null;for(Uv(n,d,f,ut(b)?0:a-b,a),m=0,g=s-1;m=r||i<=1||!this.isHorizontal())return void(this.labelRotation=o);const f=this._getLabelSizes(),m=f.widest.width,g=f.highest.height,b=Ti(this.chart.width-m,0,this.maxWidth);a=n.offset?this.maxWidth/i:b/(i-1),m+6>a&&(a=b/(i-(n.offset?.5:1)),l=this.maxHeight-Tp(n.grid)-e.padding-K8(n.title,this.chart.options.font),d=Math.sqrt(m*m+g*g),s=function US(t){return t*(180/It)}(Math.min(Math.asin(Ti((f.highest.height+6)/a,-1,1)),Math.asin(Ti(l/d,-1,1))-Math.asin(Ti(g/d,-1,1)))),s=Math.max(o,Math.min(r,s))),this.labelRotation=s}afterCalculateLabelRotation(){hn(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){hn(this.options.beforeFit,[this])}fit(){const n={width:0,height:0},{chart:e,options:{ticks:i,title:o,grid:r}}=this,s=this._isVisible(),a=this.isHorizontal();if(s){const l=K8(o,e.options.font);if(a?(n.width=this.maxWidth,n.height=Tp(r)+l):(n.height=this.maxHeight,n.width=Tp(r)+l),i.display&&this.ticks.length){const{first:d,last:f,widest:m,highest:g}=this._getLabelSizes(),b=2*i.padding,w=Or(this.labelRotation),M=Math.cos(w),E=Math.sin(w);a?n.height=Math.min(this.maxHeight,n.height+(i.mirror?0:E*m.width+M*g.height)+b):n.width=Math.min(this.maxWidth,n.width+(i.mirror?0:M*m.width+E*g.height)+b),this._calculatePadding(d,f,E,M)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=n.height):(this.width=n.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(n,e,i,o){const{ticks:{align:r,padding:s},position:a}=this.options,l=0!==this.labelRotation,d="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const f=this.getPixelForTick(0)-this.left,m=this.right-this.getPixelForTick(this.ticks.length-1);let g=0,b=0;l?d?(g=o*n.width,b=i*e.height):(g=i*n.height,b=o*e.width):"start"===r?b=e.width:"end"===r?g=n.width:"inner"!==r&&(g=n.width/2,b=e.width/2),this.paddingLeft=Math.max((g-f+s)*this.width/(this.width-f),0),this.paddingRight=Math.max((b-m+s)*this.width/(this.width-m),0)}else{let f=e.height/2,m=n.height/2;"start"===r?(f=0,m=n.height):"end"===r&&(f=e.height,m=0),this.paddingTop=f+s,this.paddingBottom=m+s}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){hn(this.options.afterFit,[this])}isHorizontal(){const{axis:n,position:e}=this.options;return"top"===e||"bottom"===e||"x"===n}isFullSize(){return this.options.fullSize}_convertTicksToLabels(n){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(n),e=0,i=n.length;e{const i=e.gc,o=i.length/2;let r;if(o>n){for(r=0;r({width:s[R]||0,height:a[R]||0});return{first:P(0),last:P(e-1),widest:P(ee),highest:P(oe),widths:s,heights:a}}getLabelForValue(n){return n}getPixelForValue(n,e){return NaN}getValueForPixel(n){}getPixelForTick(n){const e=this.ticks;return n<0||n>e.length-1?null:this.getPixelForValue(e[n].value)}getPixelForDecimal(n){this._reversePixels&&(n=1-n);const e=this._startPixel+n*this._length;return function I1e(t){return Ti(t,-32768,32767)}(this._alignToPixels?Mc(this.chart,e,0):e)}getDecimalForPixel(n){const e=(n-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:n,max:e}=this;return n<0&&e<0?e:n>0&&e>0?n:0}getContext(n){const e=this.ticks||[];if(n>=0&&na*o?a/i:l/o:l*o0}_computeGridLineItems(n){const e=this.axis,i=this.chart,o=this.options,{grid:r,position:s,border:a}=o,l=r.offset,d=this.isHorizontal(),m=this.ticks.length+(l?1:0),g=Tp(r),b=[],w=a.setContext(this.getContext()),M=w.display?w.width:0,E=M/2,I=function(N){return Mc(i,N,M)};let A,W,q,Y,ee,oe,P,R,B,$,z,G;if("top"===s)A=I(this.bottom),oe=this.bottom-g,R=A-E,$=I(n.top)+E,G=n.bottom;else if("bottom"===s)A=I(this.top),$=n.top,G=I(n.bottom)-E,oe=A+E,R=this.top+g;else if("left"===s)A=I(this.right),ee=this.right-g,P=A-E,B=I(n.left)+E,z=n.right;else if("right"===s)A=I(this.left),B=n.left,z=I(n.right)-E,ee=A+E,P=this.left+g;else if("x"===e){if("center"===s)A=I((n.top+n.bottom)/2+.5);else if(mt(s)){const N=Object.keys(s)[0];A=I(this.chart.scales[N].getPixelForValue(s[N]))}$=n.top,G=n.bottom,oe=A+E,R=oe+g}else if("y"===e){if("center"===s)A=I((n.left+n.right)/2);else if(mt(s)){const N=Object.keys(s)[0];A=I(this.chart.scales[N].getPixelForValue(s[N]))}ee=A-E,P=ee-g,B=n.left,z=n.right}const J=qe(o.ticks.maxTicksLimit,m),U=Math.max(1,Math.ceil(m/J));for(W=0;W0&&(ct-=Re/2)}xe={left:ct,top:Qe,width:Re+Ie.width,height:ht+Ie.height,color:U.backdropColor}}E.push({label:q,font:R,textOffset:z,options:{rotation:M,color:K,strokeColor:j,strokeWidth:Q,textAlign:he,textBaseline:G,translation:[Y,ee],backdrop:xe}})}return E}_getXAxisLabelAlignment(){const{position:n,ticks:e}=this.options;if(-Or(this.labelRotation))return"top"===n?"left":"right";let o="center";return"start"===e.align?o="left":"end"===e.align?o="right":"inner"===e.align&&(o="inner"),o}_getYAxisLabelAlignment(n){const{position:e,ticks:{crossAlign:i,mirror:o,padding:r}}=this.options,a=n+r,l=this._getLabelSizes().widest.width;let d,f;return"left"===e?o?(f=this.right+r,"near"===i?d="left":"center"===i?(d="center",f+=l/2):(d="right",f+=l)):(f=this.right-a,"near"===i?d="right":"center"===i?(d="center",f-=l/2):(d="left",f=this.left)):"right"===e?o?(f=this.left+r,"near"===i?d="right":"center"===i?(d="center",f-=l/2):(d="left",f-=l)):(f=this.left+a,"near"===i?d="left":"center"===i?(d="center",f+=l/2):(d="right",f=this.right)):d="right",{textAlign:d,x:f}}_computeLabelArea(){if(this.options.ticks.mirror)return;const n=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:n.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:n.width}:void 0}drawBackground(){const{ctx:n,options:{backgroundColor:e},left:i,top:o,width:r,height:s}=this;e&&(n.save(),n.fillStyle=e,n.fillRect(i,o,r,s),n.restore())}getLineWidthForValue(n){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const o=this.ticks.findIndex(r=>r.value===n);return o>=0?e.setContext(this.getContext(o)).lineWidth:0}drawGrid(n){const e=this.options.grid,i=this.ctx,o=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(n));let r,s;const a=(l,d,f)=>{!f.width||!f.color||(i.save(),i.lineWidth=f.width,i.strokeStyle=f.color,i.setLineDash(f.borderDash||[]),i.lineDashOffset=f.borderDashOffset,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(d.x,d.y),i.stroke(),i.restore())};if(e.display)for(r=0,s=o.length;r{this.drawBackground(),this.drawGrid(r),this.drawTitle()}},{z:o,draw:()=>{this.drawBorder()}},{z:e,draw:r=>{this.drawLabels(r)}}]:[{z:e,draw:r=>{this.draw(r)}}]}getMatchingVisibleMetas(n){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",o=[];let r,s;for(r=0,s=e.length;r{const i=e.split("."),o=i.pop(),r=[t].concat(i).join("."),s=n[e].split("."),a=s.pop(),l=s.join(".");Dn.route(r,o,l,a)})}(n,t.defaultRoutes),t.descriptors&&Dn.describe(n,t.descriptors)}(n,s,i),this.override&&Dn.override(n.id,n.overrides)),s}get(n){return this.items[n]}unregister(n){const e=this.items,i=n.id,o=this.scope;i in e&&delete e[i],o&&i in Dn[o]&&(delete Dn[o][i],this.override&&delete Sc[i])}}class ewe{constructor(){this.controllers=new zv($a,"datasets",!0),this.elements=new zv(Ks,"elements"),this.plugins=new zv(Object,"plugins"),this.scales=new zv(Ac,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...n){this._each("register",n)}remove(...n){this._each("unregister",n)}addControllers(...n){this._each("register",n,this.controllers)}addElements(...n){this._each("register",n,this.elements)}addPlugins(...n){this._each("register",n,this.plugins)}addScales(...n){this._each("register",n,this.scales)}getController(n){return this._get(n,this.controllers,"controller")}getElement(n){return this._get(n,this.elements,"element")}getPlugin(n){return this._get(n,this.plugins,"plugin")}getScale(n){return this._get(n,this.scales,"scale")}removeControllers(...n){this._each("unregister",n,this.controllers)}removeElements(...n){this._each("unregister",n,this.elements)}removePlugins(...n){this._each("unregister",n,this.plugins)}removeScales(...n){this._each("unregister",n,this.scales)}_each(n,e,i){[...e].forEach(o=>{const r=i||this._getRegistryForType(o);i||r.isForType(o)||r===this.plugins&&o.id?this._exec(n,r,o):Wt(o,s=>{const a=i||this._getRegistryForType(s);this._exec(n,a,s)})})}_exec(n,e,i){const o=HS(n);hn(i["before"+o],[],i),e[n](i),hn(i["after"+o],[],i)}_getRegistryForType(n){for(let e=0;er.filter(a=>!s.some(l=>a.plugin.id===l.plugin.id));this._notify(o(e,i),n,"stop"),this._notify(o(i,e),n,"start")}}function iwe(t,n){return n||!1!==t?!0===t?{}:t:null}function rwe(t,{plugin:n,local:e},i,o){const r=t.pluginScopeKeys(n),s=t.getOptionScopes(i,r);return e&&n.defaults&&s.push(n.defaults),t.createResolver(s,o,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function uM(t,n){return((n.datasets||{})[t]||{}).indexAxis||n.indexAxis||(Dn.datasets[t]||{}).indexAxis||"x"}function Y8(t){if("x"===t||"y"===t||"r"===t)return t}function lwe(t){return"top"===t||"bottom"===t?"x":"left"===t||"right"===t?"y":void 0}function hM(t,...n){if(Y8(t))return t;for(const e of n){const i=e.axis||lwe(e.position)||t.length>1&&Y8(t[0].toLowerCase());if(i)return i}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function X8(t,n,e){if(e[n+"AxisID"]===t)return{axis:n}}function Z8(t){const n=t.options||(t.options={});n.plugins=qe(n.plugins,{}),n.scales=function dwe(t,n){const e=Sc[t.type]||{scales:{}},i=n.scales||{},o=uM(t.type,n),r=Object.create(null);return Object.keys(i).forEach(s=>{const a=i[s];if(!mt(a))return console.error(`Invalid scale configuration for scale: ${s}`);if(a._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${s}`);const l=hM(s,a,function cwe(t,n){if(n.data&&n.data.datasets){const e=n.data.datasets.filter(i=>i.xAxisID===t||i.yAxisID===t);if(e.length)return X8(t,"x",e[0])||X8(t,"y",e[0])}return{}}(s,t),Dn.scales[a.type]),d=function awe(t,n){return t===n?"_index_":"_value_"}(l,o),f=e.scales||{};r[s]=fp(Object.create(null),[{axis:l},a,f[l],f[d]])}),t.data.datasets.forEach(s=>{const a=s.type||t.type,l=s.indexAxis||uM(a,n),f=(Sc[a]||{}).scales||{};Object.keys(f).forEach(m=>{const g=function swe(t,n){let e=t;return"_index_"===t?e=n:"_value_"===t&&(e="x"===n?"y":"x"),e}(m,l),b=s[g+"AxisID"]||g;r[b]=r[b]||Object.create(null),fp(r[b],[{axis:g},i[b],f[m]])})}),Object.keys(r).forEach(s=>{const a=r[s];fp(a,[Dn.scales[a.type],Dn.scale])}),r}(t,n)}function Q8(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const J8=new Map,e6=new Set;function jv(t,n){let e=J8.get(t);return e||(e=n(),J8.set(t,e),e6.add(e)),e}const Ep=(t,n,e)=>{const i=Va(n,e);void 0!==i&&t.add(i)};class hwe{constructor(n){this._config=function uwe(t){return(t=t||{}).data=Q8(t.data),Z8(t),t}(n),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(n){this._config.type=n}get data(){return this._config.data}set data(n){this._config.data=Q8(n)}get options(){return this._config.options}set options(n){this._config.options=n}get plugins(){return this._config.plugins}update(){const n=this._config;this.clearCache(),Z8(n)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(n){return jv(n,()=>[[`datasets.${n}`,""]])}datasetAnimationScopeKeys(n,e){return jv(`${n}.transition.${e}`,()=>[[`datasets.${n}.transitions.${e}`,`transitions.${e}`],[`datasets.${n}`,""]])}datasetElementScopeKeys(n,e){return jv(`${n}-${e}`,()=>[[`datasets.${n}.elements.${e}`,`datasets.${n}`,`elements.${e}`,""]])}pluginScopeKeys(n){const e=n.id;return jv(`${this.type}-plugin-${e}`,()=>[[`plugins.${e}`,...n.additionalOptionScopes||[]]])}_cachedScopes(n,e){const i=this._scopeCache;let o=i.get(n);return(!o||e)&&(o=new Map,i.set(n,o)),o}getOptionScopes(n,e,i){const{options:o,type:r}=this,s=this._cachedScopes(n,i),a=s.get(e);if(a)return a;const l=new Set;e.forEach(f=>{n&&(l.add(n),f.forEach(m=>Ep(l,n,m))),f.forEach(m=>Ep(l,o,m)),f.forEach(m=>Ep(l,Sc[r]||{},m)),f.forEach(m=>Ep(l,Dn,m)),f.forEach(m=>Ep(l,qS,m))});const d=Array.from(l);return 0===d.length&&d.push(Object.create(null)),e6.has(e)&&s.set(e,d),d}chartOptionScopes(){const{options:n,type:e}=this;return[n,Sc[e]||{},Dn.datasets[e]||{},{type:e},Dn,qS]}resolveNamedOptions(n,e,i,o=[""]){const r={$shared:!0},{resolver:s,subPrefixes:a}=t6(this._resolverCache,n,o);let l=s;(function pwe(t,n){const{isScriptable:e,isIndexable:i}=t8(t);for(const o of n){const r=e(o),s=i(o),a=(s||r)&&t[o];if(r&&(Ha(a)||fwe(a))||s&&yn(a))return!0}return!1})(s,e)&&(r.$shared=!1,l=Pu(s,i=Ha(i)?i():i,this.createResolver(n,i,a)));for(const d of e)r[d]=l[d];return r}createResolver(n,e,i=[""],o){const{resolver:r}=t6(this._resolverCache,n,i);return mt(e)?Pu(r,e,void 0,o):r}}function t6(t,n,e){let i=t.get(n);i||(i=new Map,t.set(n,i));const o=e.join();let r=i.get(o);return r||(r={resolver:ZS(n,e),subPrefixes:e.filter(a=>!a.toLowerCase().includes("hover"))},i.set(o,r)),r}const fwe=t=>mt(t)&&Object.getOwnPropertyNames(t).some(n=>Ha(t[n])),gwe=["top","bottom","left","right","chartArea"];function n6(t,n){return"top"===t||"bottom"===t||-1===gwe.indexOf(t)&&"x"===n}function i6(t,n){return function(e,i){return e[t]===i[t]?e[n]-i[n]:e[t]-i[t]}}function o6(t){const n=t.chart,e=n.options.animation;n.notifyPlugins("afterRender"),hn(e&&e.onComplete,[t],n)}function _we(t){const n=t.chart,e=n.options.animation;hn(e&&e.onProgress,[t],n)}function r6(t){return eM()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const $v={},s6=t=>{const n=r6(t);return Object.values($v).filter(e=>e.canvas===n).pop()};function bwe(t,n,e){const i=Object.keys(t);for(const o of i){const r=+o;if(r>=n){const s=t[o];delete t[o],(e>0||r>n)&&(t[r+e]=s)}}}let fM=(()=>class t{static defaults=Dn;static instances=$v;static overrides=Sc;static registry=as;static version="4.5.1";static getChart=s6;static register(...e){as.add(...e),a6()}static unregister(...e){as.remove(...e),a6()}constructor(e,i){const o=this.config=new hwe(i),r=r6(e),s=s6(r);if(s)throw new Error("Canvas is already in use. Chart with ID '"+s.id+"' must be destroyed before the canvas with ID '"+s.canvas.id+"' can be reused.");const a=o.createResolver(o.chartOptionScopes(),this.getContext());this.platform=new(o.platform||function L0e(t){return!eM()||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas?k0e:N0e}(r)),this.platform.updateConfig(o);const l=this.platform.acquireContext(r,a.aspectRatio),d=l&&l.canvas,f=d&&d.height,m=d&&d.width;this.id=b1e(),this.ctx=l,this.canvas=d,this.width=m,this.height=f,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new twe,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=function F1e(t,n){let e;return function(...i){return n?(clearTimeout(e),e=setTimeout(t,n,i)):t.apply(this,i),n}}(g=>this.update(g),a.resizeDelay||0),this._dataChanges=[],$v[this.id]=this,l&&d?(qs.listen(this,"complete",o6),qs.listen(this,"progress",_we),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:i},width:o,height:r,_aspectRatio:s}=this;return ut(e)?i&&s?s:r?o/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return as}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():c8(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return QV(this.canvas,this.ctx),this}stop(){return qs.stop(this),this}resize(e,i){qs.running(this)?this._resizeBeforeDraw={width:e,height:i}:this._resize(e,i)}_resize(e,i){const o=this.options,a=this.platform.getMaximumSize(this.canvas,e,i,o.maintainAspectRatio&&this.aspectRatio),l=o.devicePixelRatio||this.platform.getDevicePixelRatio(),d=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,c8(this,l,!0)&&(this.notifyPlugins("resize",{size:a}),hn(o.onResize,[this,a],this),this.attached&&this._doResize(d)&&this.render())}ensureScalesHaveIDs(){Wt(this.options.scales||{},(o,r)=>{o.id=r})}buildOrUpdateScales(){const e=this.options,i=e.scales,o=this.scales,r=Object.keys(o).reduce((a,l)=>(a[l]=!1,a),{});let s=[];i&&(s=s.concat(Object.keys(i).map(a=>{const l=i[a],d=hM(a,l),f="r"===d,m="x"===d;return{options:l,dposition:f?"chartArea":m?"bottom":"left",dtype:f?"radialLinear":m?"category":"linear"}}))),Wt(s,a=>{const l=a.options,d=l.id,f=hM(d,l),m=qe(l.type,a.dtype);(void 0===l.position||n6(l.position,f)!==n6(a.dposition))&&(l.position=a.dposition),r[d]=!0;let g=null;d in o&&o[d].type===m?g=o[d]:(g=new(as.getScale(m))({id:d,type:m,ctx:this.ctx,chart:this}),o[g.id]=g),g.init(l,e)}),Wt(r,(a,l)=>{a||delete o[l]}),Wt(o,a=>{eo.configure(this,a,a.options),eo.addBox(this,a)})}_updateMetasets(){const e=this._metasets,i=this.data.datasets.length,o=e.length;if(e.sort((r,s)=>r.index-s.index),o>i){for(let r=i;ri.length&&delete this._stacks,e.forEach((o,r)=>{0===i.filter(s=>s===o._dataset).length&&this._destroyDatasetMeta(r)})}buildOrUpdateControllers(){const e=[],i=this.data.datasets;let o,r;for(this._removeUnreferencedMetasets(),o=0,r=i.length;o{this.getDatasetMeta(i).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const i=this.config;i.update();const o=this._options=i.createResolver(i.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!o.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0}))return;const s=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let a=0;for(let f=0,m=this.data.datasets.length;f{f.reset()}),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(i6("z","_idx"));const{_active:l,_lastEvent:d}=this;d?this._eventHandler(d,!0):l.length&&this._updateHoverStyles(l,l,!0),this.render()}_updateScales(){Wt(this.scales,e=>{eo.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,i=new Set(Object.keys(this._listeners)),o=new Set(e.events);(!RV(i,o)||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,i=this._getUniformDataChanges()||[];for(const{method:o,start:r,count:s}of i)bwe(e,r,"_removeElements"===o?-s:s)}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const i=this.data.datasets.length,o=s=>new Set(e.filter(a=>a[0]===s).map((a,l)=>l+","+a.splice(1).join(","))),r=o(0);for(let s=1;ss.split(",")).map(s=>({method:s[1],start:+s[2],count:+s[3]}))}_updateLayout(e){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;eo.update(this,this.width,this.height,e);const i=this.chartArea,o=i.width<=0||i.height<=0;this._layers=[],Wt(this.boxes,r=>{o&&"chartArea"===r.position||(r.configure&&r.configure(),this._layers.push(...r._layers()))},this),this._layers.forEach((r,s)=>{r._idx=s}),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})){for(let i=0,o=this.data.datasets.length;i=0;--i)this._drawDataset(e[i]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const i=this.ctx,o={meta:e,index:e.index,cancelable:!0},r=v8(this,e);!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(r&&Ov(i,r),e.controller.draw(),r&&Av(i),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(e){return Gs(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,i,o,r){const s=g0e.modes[i];return"function"==typeof s?s(this,e,o,r):[]}getDatasetMeta(e){const i=this.data.datasets[e],o=this._metasets;let r=o.filter(s=>s&&s._dataset===i).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:i&&i.order||0,index:e,_dataset:i,_parsed:[],_sorted:!1},o.push(r)),r}getContext(){return this.$context||(this.$context=za(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const i=this.data.datasets[e];if(!i)return!1;const o=this.getDatasetMeta(e);return"boolean"==typeof o.hidden?!o.hidden:!i.hidden}setDatasetVisibility(e,i){this.getDatasetMeta(e).hidden=!i}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,i,o){const r=o?"show":"hide",s=this.getDatasetMeta(e),a=s.controller._resolveAnimations(void 0,r);pp(i)?(s.data[i].hidden=!o,this.update()):(this.setDatasetVisibility(e,o),a.update(s,{visible:o}),this.update(l=>l.datasetIndex===e?r:void 0))}hide(e,i){this._updateVisibility(e,i,!1)}show(e,i){this._updateVisibility(e,i,!0)}_destroyDatasetMeta(e){const i=this._metasets[e];i&&i.controller&&i.controller._destroy(),delete this._metasets[e]}_stop(){let e,i;for(this.stop(),qs.remove(this),e=0,i=this.data.datasets.length;e{i.addEventListener(this,s,a),e[s]=a},r=(s,a,l)=>{s.offsetX=a,s.offsetY=l,this._eventHandler(s)};Wt(this.options.events,s=>o(s,r))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,i=this.platform,o=(d,f)=>{i.addEventListener(this,d,f),e[d]=f},r=(d,f)=>{e[d]&&(i.removeEventListener(this,d,f),delete e[d])},s=(d,f)=>{this.canvas&&this.resize(d,f)};let a;const l=()=>{r("attach",l),this.attached=!0,this.resize(),o("resize",s),o("detach",a)};a=()=>{this.attached=!1,r("resize",s),this._stop(),this._resize(0,0),o("attach",l)},i.isAttached(this.canvas)?l():a()}unbindEvents(){Wt(this._listeners,(e,i)=>{this.platform.removeEventListener(this,i,e)}),this._listeners={},Wt(this._responsiveListeners,(e,i)=>{this.platform.removeEventListener(this,i,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,i,o){const r=o?"set":"remove";let s,a,l,d;for("dataset"===i&&(s=this.getDatasetMeta(e[0].datasetIndex),s.controller["_"+r+"DatasetHoverStyle"]()),l=0,d=e.length;l{const l=this.getDatasetMeta(s);if(!l)throw new Error("No dataset found at index "+s);return{datasetIndex:s,element:l.data[a],index:a}});!Mv(o,i)&&(this._active=o,this._lastEvent=null,this._updateHoverStyles(o,i))}notifyPlugins(e,i,o){return this._plugins.notify(this,e,i,o)}isPluginEnabled(e){return 1===this._plugins._cache.filter(i=>i.plugin.id===e).length}_updateHoverStyles(e,i,o){const r=this.options.hover,s=(d,f)=>d.filter(m=>!f.some(g=>m.datasetIndex===g.datasetIndex&&m.index===g.index)),a=s(i,e),l=o?e:s(e,i);a.length&&this.updateHoverStyle(a,r.mode,!1),l.length&&r.mode&&this.updateHoverStyle(l,r.mode,!0)}_eventHandler(e,i){const o={event:e,replay:i,cancelable:!0,inChartArea:this.isPointInArea(e)},r=a=>(a.options.events||this.options.events).includes(e.native.type);if(!1===this.notifyPlugins("beforeEvent",o,r))return;const s=this._handleEvent(e,i,o.inChartArea);return o.cancelable=!1,this.notifyPlugins("afterEvent",o,r),(s||o.changed)&&this.render(),this}_handleEvent(e,i,o){const{_active:r=[],options:s}=this,l=this._getActiveElements(e,r,o,i),d=function k1e(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}(e),f=function vwe(t,n,e,i){return e&&"mouseout"!==t.type?i?n:t:null}(e,this._lastEvent,o,d);o&&(this._lastEvent=null,hn(s.onHover,[e,l,this],this),d&&hn(s.onClick,[e,l,this],this));const m=!Mv(l,r);return(m||i)&&(this._active=l,this._updateHoverStyles(l,r,i)),this._lastEvent=f,m}_getActiveElements(e,i,o,r){if("mouseout"===e.type)return[];if(!o)return i;const s=this.options.hover;return this.getElementsAtEventForMode(e,s.mode,s,r)}})();function a6(){return Wt(fM.instances,t=>t._plugins.invalidate())}function l6(t,n,e=n){t.lineCap=qe(e.borderCapStyle,n.borderCapStyle),t.setLineDash(qe(e.borderDash,n.borderDash)),t.lineDashOffset=qe(e.borderDashOffset,n.borderDashOffset),t.lineJoin=qe(e.borderJoinStyle,n.borderJoinStyle),t.lineWidth=qe(e.borderWidth,n.borderWidth),t.strokeStyle=qe(e.borderColor,n.borderColor)}function Dwe(t,n,e){t.lineTo(e.x,e.y)}function c6(t,n,e={}){const i=t.length,{start:o=0,end:r=i-1}=e,{start:s,end:a}=n,l=Math.max(o,s),d=Math.min(r,a);return{count:i,start:l,loop:n.loop,ilen:da&&r>a)?i+d-l:d-l}}function Ewe(t,n,e,i){const{points:o,options:r}=n,{count:s,start:a,loop:l,ilen:d}=c6(o,e,i),f=function Twe(t){return t.stepped?q1e:t.tension||"monotone"===t.cubicInterpolationMode?K1e:Dwe}(r);let b,w,M,{move:m=!0,reverse:g}=i||{};for(b=0;b<=d;++b)w=o[(a+(g?d-b:b))%s],!w.skip&&(m?(t.moveTo(w.x,w.y),m=!1):f(t,M,w,g,r.stepped),M=w);return l&&(w=o[(a+(g?d:0))%s],f(t,M,w,g,r.stepped)),!!l}function Pwe(t,n,e,i){const o=n.points,{count:r,start:s,ilen:a}=c6(o,e,i),{move:l=!0,reverse:d}=i||{};let g,b,w,M,E,I,f=0,m=0;const A=q=>(s+(d?a-q:q))%r,W=()=>{M!==E&&(t.lineTo(f,E),t.lineTo(f,M),t.lineTo(f,I))};for(l&&(b=o[A(0)],t.moveTo(b.x,b.y)),g=0;g<=a;++g){if(b=o[A(g)],b.skip)continue;const q=b.x,Y=b.y,ee=0|q;ee===w?(YE&&(E=Y),f=(m*f+q)/++m):(W(),t.lineTo(q,Y),w=ee,m=0,M=E=Y),I=Y}W()}function pM(t){const n=t.options;return t._decimated||t._loop||n.tension||"monotone"===n.cubicInterpolationMode||n.stepped||n.borderDash&&n.borderDash.length?Ewe:Pwe}const Rwe="function"==typeof Path2D;let Pp=(()=>class t extends Ks{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:e=>"borderDash"!==e&&"fill"!==e};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,i){const o=this.options;!o.tension&&"monotone"!==o.cubicInterpolationMode||o.stepped||this._pointsUpdated||(bCe(this._points,o,e,o.spanGaps?this._loop:this._fullLoop,i),this._pointsUpdated=!0)}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=function ACe(t,n){const e=t.points,i=t.options.spanGaps,o=e.length;if(!o)return[];const r=!!t._loop,{start:s,end:a}=function ICe(t,n,e,i){let o=0,r=n-1;if(e&&!i)for(;oo&&t[r%n].skip;)r--;return r%=n,{start:o,end:r}}(e,o,r,i);return function _8(t,n,e,i){return i&&i.setContext&&e?function RCe(t,n,e,i){const o=t._chart.getContext(),r=b8(t.options),{_datasetIndex:s,options:{spanGaps:a}}=t,l=e.length,d=[];let f=r,m=n[0].start,g=m;function b(w,M,E,I){const A=a?-1:1;if(w!==M){for(w+=l;e[w%l].skip;)w-=A;for(;e[M%l].skip;)M+=A;w%l!==M%l&&(d.push({start:w%l,end:M%l,loop:E,style:I}),f=I,m=M%l)}}for(const w of n){m=a?m:w.start;let E,M=e[m%l];for(g=m+1;g<=w.end;g++){const I=e[g%l];E=b8(i.setContext(za(o,{type:"segment",p0:M,p1:I,p0DataIndex:(g-1)%l,p1DataIndex:g%l,datasetIndex:s}))),FCe(E,f)&&b(m,g-1,w.loop,f),M=I,f=E}mclass t extends Ks{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(e){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,e&&Object.assign(this,e)}inRange(e,i,o){const r=this.options,{x:s,y:a}=this.getProps(["x","y"],o);return Math.pow(e-s,2)+Math.pow(i-a,2)t;n--){const i=e[n];if(!isNaN(i.x)&&!isNaN(i.y))break}return n}function v6(t,n,e,i){return t&&n?i(t[e],n[e]):t?t[e]:n?n[e]:0}function y6(t,n){let e=[],i=!1;return yn(t)?(i=!0,e=t):e=function txe(t,n){const{x:e=null,y:i=null}=t||{},o=n.points,r=[];return n.segments.forEach(({start:s,end:a})=>{a=Gv(s,a,o);const l=o[s],d=o[a];null!==i?(r.push({x:l.x,y:i}),r.push({x:d.x,y:i})):null!==e&&(r.push({x:e,y:l.y}),r.push({x:e,y:d.y}))}),r}(t,n),e.length?new Pp({points:e,options:{tension:0},_loop:i,_fullLoop:i}):null}function C6(t){return t&&!1!==t.fill}function nxe(t,n,e){let o=t[n].fill;const r=[n];let s;if(!e)return o;for(;!1!==o&&-1===r.indexOf(o);){if(!jn(o))return o;if(s=t[o],!s)return!1;if(s.visible)return o;r.push(o),o=s.fill}return!1}function ixe(t,n,e){const i=function axe(t){const n=t.options,e=n.fill;let i=qe(e&&e.target,e);return void 0===i&&(i=!!n.backgroundColor),!1!==i&&null!==i&&(!0===i?"origin":i)}(t);if(mt(i))return!isNaN(i.value)&&i;let o=parseFloat(i);return jn(o)&&Math.floor(o)===o?function oxe(t,n,e,i){return("-"===t||"+"===t)&&(e=n+e),!(e===n||e<0||e>=i)&&e}(i[0],n,o,e):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function dxe(t,n,e){const i=[];for(let o=0;o=0;--s){const a=o[s].$filler;a&&(a.line.updateControlPoints(r,a.axis),i&&a.fill&&vM(t.ctx,a,r))}},beforeDatasetsDraw(t,n,e){if("beforeDatasetsDraw"!==e.drawTime)return;const i=t.getSortedVisibleDatasetMetas();for(let o=i.length-1;o>=0;--o){const r=i[o].$filler;C6(r)&&vM(t.ctx,r,t.chartArea)}},beforeDatasetDraw(t,n,e){const i=n.meta.$filler;!C6(i)||"beforeDatasetDraw"!==e.drawTime||vM(t.ctx,i,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};function L6(t){const n=this.getLabels();return t>=0&&tclass t extends Ac{static id="category";static defaults={ticks:{callback:L6}};constructor(e){super(e),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(e){const i=this._addedLabels;if(i.length){const o=this.getLabels();for(const{index:r,label:s}of i)o[r]===s&&o.splice(r,1);this._addedLabels=[]}super.init(e)}parse(e,i){if(ut(e))return null;const o=this.getLabels();return((t,n)=>null===t?null:Ti(Math.round(t),0,n))(i=isFinite(i)&&o[i]===e?i:function Bxe(t,n,e,i){const o=t.indexOf(n);return-1===o?((t,n,e,i)=>("string"==typeof n?(e=t.push(n)-1,i.unshift({index:e,label:n})):isNaN(n)&&(e=null),e))(t,n,e,i):o!==t.lastIndexOf(n)?e:o}(o,e,qe(i,e),this._addedLabels),o.length-1)}determineDataLimits(){const{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:o,max:r}=this.getMinMax(!0);"ticks"===this.options.bounds&&(e||(o=0),i||(r=this.getLabels().length-1)),this.min=o,this.max=r}buildTicks(){const e=this.min,i=this.max,o=this.options.offset,r=[];let s=this.getLabels();s=0===e&&i===s.length-1?s:s.slice(e,i+1),this._valueRange=Math.max(s.length-(o?0:1),1),this._startValue=this.min-(o?.5:0);for(let a=e;a<=i;a++)r.push({value:a});return r}getLabelForValue(e){return L6.call(this,e)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(e){return"number"!=typeof e&&(e=this.parse(e)),null===e?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getPixelForTick(e){const i=this.ticks;return e<0||e>i.length-1?null:this.getPixelForValue(i[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}})();function V6(t,n,{horizontal:e,minRotation:i}){const o=Or(i),r=(e?Math.sin(o):Math.cos(o))||.001;return Math.min(n/r,.75*n*(""+t).length)}class Yv extends Ac{constructor(n){super(n),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(n,e){return ut(n)||("number"==typeof n||n instanceof Number)&&!isFinite(+n)?null:+n}handleTickRangeOptions(){const{beginAtZero:n}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:o,max:r}=this;const s=l=>o=e?o:l,a=l=>r=i?r:l;if(n){const l=ss(o),d=ss(r);l<0&&d<0?a(0):l>0&&d>0&&s(0)}if(o===r){let l=0===r?1:Math.abs(.05*r);a(r+l),n||s(o-l)}this.min=o,this.max=r}getTickLimit(){const n=this.options.ticks;let o,{maxTicksLimit:e,stepSize:i}=n;return i?(o=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,o>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${o} ticks. Limiting to 1000.`),o=1e3)):(o=this.computeTickLimit(),e=e||11),e&&(o=Math.min(e,o)),o}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const n=this.options,e=n.ticks;let i=this.getTickLimit();i=Math.max(2,i);const s=function Hxe(t,n){const e=[],{bounds:o,step:r,min:s,max:a,precision:l,count:d,maxTicks:f,maxDigits:m,includeBounds:g}=t,b=r||1,w=f-1,{min:M,max:E}=n,I=!ut(s),A=!ut(a),W=!ut(d),q=(E-M)/(m+1);let ee,oe,P,R,Y=NV((E-M)/w/b)*b;if(Y<1e-14&&!I&&!A)return[{value:M},{value:E}];R=Math.ceil(E/Y)-Math.floor(M/Y),R>w&&(Y=NV(R*Y/w/b)*b),ut(l)||(ee=Math.pow(10,l),Y=Math.ceil(Y*ee)/ee),"ticks"===o?(oe=Math.floor(M/Y)*Y,P=Math.ceil(E/Y)*Y):(oe=M,P=E),I&&A&&r&&function E1e(t,n){const e=Math.round(t);return e-n<=t&&e+n>=t}((a-s)/r,Y/1e3)?(R=Math.round(Math.min((a-s)/Y,f)),Y=(a-s)/R,oe=s,P=a):W?(oe=I?s:oe,P=A?a:P,R=d-1,Y=(P-oe)/R):(R=(P-oe)/Y,R=mp(R,Math.round(R),Y/1e3)?Math.round(R):Math.ceil(R));const B=Math.max(BV(Y),BV(oe));ee=Math.pow(10,ut(l)?B:l),oe=Math.round(oe*ee)/ee,P=Math.round(P*ee)/ee;let $=0;for(I&&(g&&oe!==s?(e.push({value:s}),oea)break;e.push({value:z})}return A&&g&&P!==a?e.length&&mp(e[e.length-1].value,a,V6(a,q,t))?e[e.length-1].value=a:e.push({value:a}):(!A||P===a)&&e.push({value:P}),e}({maxTicks:i,bounds:n.bounds,min:n.min,max:n.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===n.bounds&&function LV(t,n,e){let i,o,r;for(i=0,o=t.length;i{class t{static{this.topInternalMargin=5}constructor(e){this.height=100,this.animated=!1,this.min=void 0,this.max=void 0,this.differ=e.find([]).create(null)}ngAfterViewInit(){this.chart=new fM(this.chartElement.nativeElement,{type:"line",data:{labels:Array.from(Array(this.data.length).keys()),datasets:[{data:this.data,backgroundColor:"rgba(10, 15, 22, 0.4)",borderColor:"rgba(10, 15, 22, 0.4)",borderWidth:1}]},options:{maintainAspectRatio:!1,events:[],plugins:{legend:{display:!1},tooltip:{enabled:!1}},scales:{y:{display:!1,suggestedMin:0},x:{display:!1}},elements:{point:{radius:0}},layout:{padding:{left:0,right:0,top:t.topInternalMargin,bottom:0}},animation:!!this.animated&&void 0}}),void 0!==this.min&&void 0!==this.max&&(this.updateMinAndMax(),this.chart.update())}ngDoCheck(){this.differ.diff(this.data)&&this.chart&&(void 0!==this.min&&void 0!==this.max&&this.updateMinAndMax(),this.animated?this.chart.update():this.chart.update("none"))}ngOnDestroy(){this.chart&&this.chart.destroy()}updateMinAndMax(){this.chart.options.scales.y.min=this.min,this.chart.options.scales.y.max=this.max}static{this.\u0275fac=function(i){return new(i||t)(O(__))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-line-chart"]],viewQuery:function(i,o){if(1&i&&st(cke,5),2&i){let r;fe(r=pe())&&(o.chartElement=r.first)}},inputs:{data:"data",height:"height",animated:"animated",min:"min",max:"max"},standalone:!1,decls:3,vars:2,consts:[["chart",""],[1,"chart-container"]],template:function(i,o){1&i&&(h(0,"div",1),L(1,"canvas",null,0),u()),2&i&&ao("height: "+o.height+"px;")},styles:[".chart-container[_ngcontent-%COMP%]{position:relative;width:100%;overflow:hidden;border-radius:10px}"]})}}return t})();const X6=()=>({showValue:!0}),Z6=()=>({showUnit:!0});function dke(t,n){if(1&t&&(h(0,"div",0),L(1,"app-line-chart",1),h(2,"div",2)(3,"span",3),p(4),_(5,"translate"),u(),h(6,"span",4)(7,"span",5),p(8),_(9,"autoScale"),u(),h(10,"span",6),p(11),_(12,"autoScale"),u()()()()),2&t){const e=y();c(),C("data",e.trafficData.sentHistory),c(3),S(v(5,4,"common.uploaded")),c(4),S(ue(9,6,e.trafficData.totalSent,vt(12,X6))),c(3),S(ue(12,9,e.trafficData.totalSent,vt(13,Z6)))}}function uke(t,n){if(1&t&&(h(0,"div",0),L(1,"app-line-chart",1),h(2,"div",2)(3,"span",3),p(4),_(5,"translate"),u(),h(6,"span",4)(7,"span",5),p(8),_(9,"autoScale"),u(),h(10,"span",6),p(11),_(12,"autoScale"),u()()()()),2&t){const e=y();c(),C("data",e.trafficData.receivedHistory),c(3),S(v(5,4,"common.downloaded")),c(4),S(ue(9,6,e.trafficData.totalReceived,vt(12,X6))),c(3),S(ue(12,9,e.trafficData.totalReceived,vt(13,Z6)))}}let hke=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=ae({type:t,selectors:[["app-charts"]],inputs:{trafficData:"trafficData"},standalone:!1,decls:2,vars:2,consts:[[1,"small-rounded-elevated-box","chart"],[3,"data"],[1,"info"],[1,"text"],[1,"rate"],[1,"value"],[1,"unit"]],template:function(i,o){1&i&&(x(0,dke,13,14,"div",0),x(1,uke,13,14,"div",0)),2&i&&(k(o.trafficData?0:-1),c(),k(o.trafficData?1:-1))},dependencies:[Qv,we,dp],styles:[".chart[_ngcontent-%COMP%]{position:relative;margin-bottom:20px}.chart[_ngcontent-%COMP%]:last-child{margin-bottom:10px}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%]{position:absolute;bottom:0;left:0;display:flex;justify-content:space-between;align-items:flex-end;padding:10px;width:100%}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#f8f9f9}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.text[_ngcontent-%COMP%]{font-size:.8rem;text-transform:uppercase;font-weight:700}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.rate[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:700}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.rate[_ngcontent-%COMP%] .unit[_ngcontent-%COMP%]{font-size:.8rem;padding-left:5px}"]})}}return t})();function fke(t,n){1&t&&(h(0,"div",4)(1,"mat-icon",2),p(2,"settings"),u(),p(3),_(4,"translate"),u()),2&t&&(c(),C("inline",!0),c(2),D("",v(4,2,"routes.details.specific-fields-titles.app")," "))}function pke(t,n){1&t&&(h(0,"div",4)(1,"mat-icon",2),p(2,"swap_horiz"),u(),p(3),_(4,"translate"),u()),2&t&&(c(),C("inline",!0),c(2),D("",v(4,2,"routes.details.specific-fields-titles.forward")," "))}function mke(t,n){1&t&&(h(0,"div",4)(1,"mat-icon",2),p(2,"arrow_forward"),u(),p(3),_(4,"translate"),u()),2&t&&(c(),C("inline",!0),c(2),D("",v(4,2,"routes.details.specific-fields-titles.intermediary-forward")," "))}function gke(t,n){if(1&t&&(h(0,"div")(1,"div",3)(2,"span"),p(3),_(4,"translate"),u(),p(5),u(),h(6,"div",3)(7,"span"),p(8),_(9,"translate"),u(),p(10),u()()),2&t){const e=y(2);c(3),S(v(4,5,"routes.details.specific-fields.route-id")),c(2),D(" ",e.routeRule.forwardFields?e.routeRule.forwardFields.nextRid:e.routeRule.intermediaryForwardFields.nextRid," "),c(3),S(v(9,7,"routes.details.specific-fields.transport-id")),c(2),nt(" ",e.routeRule.forwardFields?e.routeRule.forwardFields.nextTid:e.routeRule.intermediaryForwardFields.nextTid," ",e.getLabel(e.routeRule.forwardFields?e.routeRule.forwardFields.nextTid:e.routeRule.intermediaryForwardFields.nextTid)," ")}}function _ke(t,n){if(1&t&&(h(0,"div")(1,"div",3)(2,"span"),p(3),_(4,"translate"),u(),p(5),u(),h(6,"div",3)(7,"span"),p(8),_(9,"translate"),u(),p(10),u(),h(11,"div",3)(12,"span"),p(13),_(14,"translate"),u(),p(15),u(),h(16,"div",3)(17,"span"),p(18),_(19,"translate"),u(),p(20),u()()),2&t){const e=y(2);c(3),S(v(4,10,"routes.details.specific-fields.destination-pk")),c(2),nt(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.dstPk:e.routeRule.forwardFields.routeDescriptor.dstPk," ",e.getLabel(e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.dstPk:e.routeRule.forwardFields.routeDescriptor.dstPk)," "),c(3),S(v(9,12,"routes.details.specific-fields.source-pk")),c(2),nt(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.srcPk:e.routeRule.forwardFields.routeDescriptor.srcPk," ",e.getLabel(e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.srcPk:e.routeRule.forwardFields.routeDescriptor.srcPk)," "),c(3),S(v(14,14,"routes.details.specific-fields.destination-port")),c(2),D(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.dstPort:e.routeRule.forwardFields.routeDescriptor.dstPort," "),c(3),S(v(19,16,"routes.details.specific-fields.source-port")),c(2),D(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.srcPort:e.routeRule.forwardFields.routeDescriptor.srcPort," ")}}function bke(t,n){if(1&t&&(h(0,"div")(1,"div",4)(2,"mat-icon",2),p(3,"list"),u(),p(4),_(5,"translate"),u(),h(6,"div",3)(7,"span"),p(8),_(9,"translate"),u(),p(10),u(),h(11,"div",3)(12,"span"),p(13),_(14,"translate"),u(),p(15),u(),h(16,"div",3)(17,"span"),p(18),_(19,"translate"),u(),p(20),u(),x(21,fke,5,4,"div",4),x(22,pke,5,4,"div",4),x(23,mke,5,4,"div",4),x(24,gke,11,9,"div"),x(25,_ke,21,18,"div"),u()),2&t){const e=y();c(2),C("inline",!0),c(2),D("",v(5,13,"routes.details.summary.title")," "),c(4),S(v(9,15,"routes.details.summary.keep-alive")),c(2),D(" ",e.routeRule.ruleSummary.keepAlive," "),c(3),S(v(14,17,"routes.details.summary.type")),c(2),D(" ",e.getRuleTypeName(e.routeRule.ruleSummary.ruleType)," "),c(3),S(v(19,19,"routes.details.summary.key-route-id")),c(2),D(" ",e.routeRule.ruleSummary.keyRouteId," "),c(),k(e.routeRule.appFields?21:-1),c(),k(e.routeRule.forwardFields?22:-1),c(),k(e.routeRule.intermediaryForwardFields?23:-1),c(),k(e.routeRule.forwardFields||e.routeRule.intermediaryForwardFields?24:-1),c(),k(e.routeRule.appFields&&e.routeRule.appFields.routeDescriptor||e.routeRule.forwardFields&&e.routeRule.forwardFields.routeDescriptor?25:-1)}}let vke=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.largeModalWidth,e.open(t,o)}constructor(e,i,o){this.dialogRef=i,this.storageService=o,this.ruleTypes=new Map([[0,"App"],[1,"Forward"],[2,"Intermediary forward"]]),this.routeRule=e}getRuleTypeName(e){return this.ruleTypes.has(e)?this.ruleTypes.get(e):e.toString()}closePopup(){this.dialogRef.close()}getLabel(e){const i=this.storageService.getLabelInfo(e);return i?" ("+i.label+")":""}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt),O(ri))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-route-details"]],standalone:!1,decls:19,vars:17,consts:[[1,"info-dialog",3,"headline","dialog"],[1,"title","mt-0"],[3,"inline"],[1,"item"],[1,"title"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),_(1,"translate"),h(2,"div")(3,"div",1)(4,"mat-icon",2),p(5,"list"),u(),p(6),_(7,"translate"),u(),h(8,"div",3)(9,"span"),p(10),_(11,"translate"),u(),p(12),u(),h(13,"div",3)(14,"span"),p(15),_(16,"translate"),u(),p(17),u(),x(18,bke,26,21,"div"),u()()),2&i&&(C("headline",v(1,9,"routes.details.title"))("dialog",o.dialogRef),c(4),C("inline",!0),c(2),D("",v(7,11,"routes.details.basic.title")," "),c(4),S(v(11,13,"routes.details.basic.key")),c(2),D(" ",o.routeRule.key," "),c(3),S(v(16,15,"routes.details.basic.rule")),c(2),D(" ",o.routeRule.rule," "),c(),k(o.routeRule.ruleSummary?18:-1))},dependencies:[Ae,Sn,we],encapsulation:2})}}return t})();const yke=t=>({text:t}),Cke=()=>({"tooltip-word-break":!0});function wke(t,n){if(1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t){const e=y();c(),D(" ",v(2,1,e.labelComponents.prefix)," ")}}function xke(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y();c(),D(" ",e.labelComponents.prefixSeparator," ")}}function kke(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y();c(),D(" ",e.labelComponents.label," ")}}function Ske(t,n){if(1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t){const e=y();c(),D(" ",v(2,1,e.labelComponents.translatableLabel)," ")}}class Mke{constructor(){this.prefix="",this.prefixSeparator="",this.label="",this.translatableLabel=""}}let Fc=(()=>{class t{set id(e){this.idInternal=e,this.labelComponents=t.getLabelComponents(this.storageService,this.id)}get id(){return this.idInternal?this.idInternal:""}static getLabelComponents(e,i){let o;o=!!e.getSavedVisibleLocalNodes().has(i);const r=new Mke;return r.labelInfo=e.getLabelInfo(i),r.labelInfo&&r.labelInfo.label?(o&&(r.prefix="labeled-element.local-element",r.prefixSeparator=" - "),r.label=r.labelInfo.label):e.getSavedVisibleLocalNodes().has(i)?r.prefix="labeled-element.unnamed-local-visor":r.translatableLabel="labeled-element.unnamed-element",r}static getCompleteLabel(e,i,o){const r=t.getLabelComponents(e,o);return(r.prefix?i.instant(r.prefix):"")+r.prefixSeparator+r.label+(r.translatableLabel?i.instant(r.translatableLabel):"")}constructor(e,i,o,r,s){this.dialog=e,this.storageService=i,this.clipboardService=o,this.snackbarService=r,this.router=s,this.short=!1,this.shortTextLength=5,this.elementType=uo.Node,this.labelEdited=new ke}ngOnDestroy(){this.labelEdited.complete()}processClick(){const e=[{icon:"filter_none",label:"labeled-element.copy"},{icon:"edit",label:"labeled-element.edit-label"}];this.labelComponents.labelInfo&&e.push({icon:"close",label:"labeled-element.remove-label"}),e.push({icon:"list",label:"labeled-element.view-all-labels"}),ho.openDialog(this.dialog,e,"common.options").afterClosed().subscribe(i=>{if(1===i)this.clipboardService.copy(this.id)&&this.snackbarService.showDone("copy.copied");else if(i>2)if(3===i&&this.labelComponents.labelInfo){const o=Ut.createConfirmationDialog(this.dialog,"labeled-element.remove-label-confirmation");o.componentInstance.operationAccepted.subscribe(()=>{o.componentInstance.closeModal(),this.storageService.saveLabel(this.id,null,this.elementType),this.snackbarService.showDone("edit-label.label-removed-warning"),this.labelEdited.emit()})}else this.router.navigate(["/settings","labels"]);else if(2===i){let o=this.labelComponents.labelInfo;o||(o={id:this.id,label:"",identifiedElementType:this.elementType}),DS.openDialog(this.dialog,o).afterClosed().subscribe(r=>{r&&this.labelEdited.emit()})}})}static{this.\u0275fac=function(i){return new(i||t)(O(Nt),O(ri),O(ap),O(ot),O(yt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-labeled-element-text"]],inputs:{id:"id",short:"short",shortTextLength:"shortTextLength",elementType:"elementType"},outputs:{labelEdited:"labelEdited"},standalone:!1,decls:12,vars:17,consts:[[1,"wrapper","highlight-internal-icon",3,"click","matTooltip","matTooltipClass"],[1,"label"],[3,"short","showTooltip","shortTextLength","text"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"div",0),_(1,"translate"),F("click",function(s){return s.stopPropagation(),s.preventDefault(),o.processClick()}),h(2,"span",1),x(3,wke,3,3,"span"),x(4,xke,2,1,"span"),x(5,kke,2,1,"span"),x(6,Ske,3,3,"span"),u(),L(7,"br")(8,"app-truncated-text",2),p(9," \xa0"),h(10,"mat-icon",3),p(11,"settings"),u()()),2&i&&(C("matTooltip",ue(1,11,o.short?"labeled-element.tooltip-with-text":"labeled-element.tooltip",ie(14,yke,o.id)))("matTooltipClass",vt(16,Cke)),c(3),k(o.labelComponents&&o.labelComponents.prefix?3:-1),c(),k(o.labelComponents&&o.labelComponents.prefixSeparator?4:-1),c(),k(o.labelComponents&&o.labelComponents.label?5:-1),c(),k(o.labelComponents&&o.labelComponents.translatableLabel?6:-1),c(2),C("short",o.short)("showTooltip",!1)("shortTextLength",o.shortTextLength)("text",o.id),c(2),C("inline",!0))},dependencies:[Ae,Et,hV,we],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.wrapper[_ngcontent-%COMP%]{display:inline}.wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:.8rem;-webkit-user-select:none;user-select:none}.label[_ngcontent-%COMP%]{opacity:.7;font-size:.8rem}']})}}return t})();const Dke=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),Tke=t=>({"d-lg-none d-xl-table":t}),Eke=t=>({"d-lg-table d-xl-none":t});function Pke(t,n){1&t&&(h(0,"span",3),p(1),_(2,"translate"),h(3,"mat-icon",13),_(4,"translate"),p(5,"help"),u()()),2&t&&(c(),D(" ",v(2,3,"routes.title")," "),c(2),C("inline",!0)("matTooltip",v(4,5,"routes.info")))}function Ike(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().$implicit.translatableValue)," ")}function Oke(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.value," ")}function Ake(t,n){if(1&t&&(h(0,"div",15)(1,"span"),p(2),_(3,"translate"),u(),x(4,Ike,2,3),x(5,Oke,1,1),u()),2&t){const e=n.$implicit;c(2),D("",v(3,3,e.filterName),": "),c(2),k(e.translatableValue?4:-1),c(),k(e.value?5:-1)}}function Rke(t,n){if(1&t){const e=re();h(0,"div",14),F("click",function(){return V(e),H(y().dataFilterer.removeFilters())}),me(1,Ake,6,5,"div",15,Le),h(3,"div",16),p(4),_(5,"translate"),u()()}if(2&t){const e=y();c(),ge(e.dataFilterer.currentFiltersTexts),c(3),S(v(5,1,"filters.press-to-remove"))}}function Fke(t,n){if(1&t){const e=re();h(0,"mat-icon",17),_(1,"translate"),F("click",function(){return V(e),H(y().dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",v(1,2,"filters.filter-action"))}function Nke(t,n){1&t&&(h(0,"mat-icon",8),p(1,"more_horiz"),u()),2&t&&(y(),C("matMenuTriggerFor",Un(9)))}function Lke(t,n){if(1&t&&(h(0,"mat-icon",21),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Bke(t,n){if(1&t&&(h(0,"mat-icon",21),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Vke(t,n){if(1&t&&(h(0,"mat-icon",21),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Hke(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.appFields.routeDescriptor.srcPort," ")}function Uke(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.forwardFields.routeDescriptor.srcPort," ")}function zke(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function jke(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.appFields.routeDescriptor.dstPort," ")}function $ke(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.forwardFields.routeDescriptor.dstPort," ")}function Wke(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function Gke(t,n){if(1&t){const e=re();h(0,"app-labeled-element-text",33),F("labelEdited",function(){return V(e),H(y(3).refreshData())}),u()}if(2&t){const e=y().$implicit,i=y(2);C("id",on(e.dst))("elementType",i.labeledElementTypes.Node)}}function qke(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function Kke(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.forwardFields.nextRid," ")}function Yke(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.intermediaryForwardFields.nextRid," ")}function Xke(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function Zke(t,n){if(1&t){const e=re();h(0,"app-labeled-element-text",33),F("labelEdited",function(){return V(e),H(y(3).refreshData())}),u()}if(2&t){const e=y().$implicit,i=y(2);C("id",on(e.forwardFields.nextTid))("elementType",i.labeledElementTypes.Transport)}}function Qke(t,n){if(1&t){const e=re();h(0,"app-labeled-element-text",33),F("labelEdited",function(){return V(e),H(y(3).refreshData())}),u()}if(2&t){const e=y().$implicit,i=y(2);C("id",on(e.intermediaryForwardFields.nextTid))("elementType",i.labeledElementTypes.Transport)}}function Jke(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function eSe(t,n){1&t&&(p(0),_(1,"number")),2&t&&D(" ",ue(1,1,y().$implicit.ruleSummary.keepAlive/1e9,"1.0-1"),"s ")}function tSe(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function nSe(t,n){if(1&t){const e=re();h(0,"tr")(1,"td",28)(2,"mat-checkbox",29),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(3,"td",30),p(4),u(),h(5,"td"),p(6),u(),h(7,"td",30),x(8,Hke,1,1)(9,Uke,1,1)(10,zke,2,0,"span",16),u(),h(11,"td",30),x(12,jke,1,1)(13,$ke,1,1)(14,Wke,2,0,"span",16),u(),h(15,"td"),x(16,Gke,1,3,"app-labeled-element-text",31)(17,qke,2,0,"span",16),u(),h(18,"td",30),x(19,Kke,1,1)(20,Yke,1,1)(21,Xke,2,0,"span",16),u(),h(22,"td"),x(23,Zke,1,3,"app-labeled-element-text",31)(24,Qke,1,3,"app-labeled-element-text",31)(25,Jke,2,0,"span",16),u(),h(26,"td",30),x(27,eSe,2,4)(28,tSe,2,0,"span",16),u(),h(29,"td",22)(30,"button",32),_(31,"translate"),F("click",function(){const o=V(e).$implicit;return H(y(2).details(o))}),h(32,"mat-icon",21),p(33,"visibility"),u()(),h(34,"button",32),_(35,"translate"),F("click",function(){const o=V(e).$implicit;return H(y(2).delete(o.key))}),h(36,"mat-icon",21),p(37,"close"),u()()()()}if(2&t){const e=n.$implicit,i=y(2);c(2),C("checked",i.selections.get(e.key)),c(2),S(e.key),c(2),S(i.getTypeName(e.type)),c(2),k(null!=e.appFields&&e.appFields.routeDescriptor?8:null!=e.forwardFields&&e.forwardFields.routeDescriptor?9:10),c(4),k(null!=e.appFields&&e.appFields.routeDescriptor?12:null!=e.forwardFields&&e.forwardFields.routeDescriptor?13:14),c(4),k(e.appFields||e.forwardFields?16:17),c(3),k(null!=e.forwardFields&&e.forwardFields.nextRid||0===(null==e.forwardFields?null:e.forwardFields.nextRid)?19:null!=e.intermediaryForwardFields&&e.intermediaryForwardFields.nextRid||0===(null==e.intermediaryForwardFields?null:e.intermediaryForwardFields.nextRid)?20:21),c(4),k(null!=e.forwardFields&&e.forwardFields.nextTid?23:null!=e.intermediaryForwardFields&&e.intermediaryForwardFields.nextTid?24:25),c(4),k(null!=e.ruleSummary&&e.ruleSummary.keepAlive?27:28),c(3),C("matTooltip",v(31,13,"routes.details.title")),c(2),C("inline",!0),c(2),C("matTooltip",v(35,15,"routes.delete")),c(2),C("inline",!0)}}function iSe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.label")," ")}function oSe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.inverted-order")," ")}function rSe(t,n){if(1&t){const e=re();h(0,"div",35)(1,"span",2),p(2),_(3,"translate"),u(),p(4),u(),h(5,"div",35)(6,"span",2),p(7),_(8,"translate"),u(),p(9),u(),h(10,"div",35)(11,"span",2),p(12),_(13,"translate"),u(),p(14,": "),h(15,"app-labeled-element-text",33),F("labelEdited",function(){return V(e),H(y(3).refreshData())}),u()()}if(2&t){const e=y().$implicit,i=y(2);c(2),S(v(3,8,"routes.local-port")),c(2),D(": ",null==((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor))?null:((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor)).srcPort," "),c(3),S(v(8,10,"routes.remote-port")),c(2),D(": ",null==((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor))?null:((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor)).dstPort," "),c(3),S(v(13,12,"routes.remote-pk")),c(3),C("id",on(e.dst))("elementType",i.labeledElementTypes.Node)}}function sSe(t,n){if(1&t){const e=re();h(0,"div",35)(1,"span",2),p(2),_(3,"translate"),u(),p(4),u(),h(5,"div",35)(6,"span",2),p(7),_(8,"translate"),u(),p(9,": "),h(10,"app-labeled-element-text",33),F("labelEdited",function(){return V(e),H(y(3).refreshData())}),u()()}if(2&t){const e=y().$implicit,i=y(2);c(2),S(v(3,6,"routes.next-rid")),c(2),D(": ",(null==e.forwardFields?null:e.forwardFields.nextRid)??(null==e.intermediaryForwardFields?null:e.intermediaryForwardFields.nextRid)," "),c(3),S(v(8,8,"routes.next-tp")),c(3),C("id",on((null==e.forwardFields?null:e.forwardFields.nextTid)||(null==e.intermediaryForwardFields?null:e.intermediaryForwardFields.nextTid)))("elementType",i.labeledElementTypes.Transport)}}function aSe(t,n){if(1&t&&(h(0,"div",35)(1,"span",2),p(2),_(3,"translate"),u(),p(4),_(5,"number"),u()),2&t){const e=y().$implicit;c(2),S(v(3,2,"routes.keep-alive")),c(2),D(": ",ue(5,4,e.ruleSummary.keepAlive/1e9,"1.0-1"),"s ")}}function lSe(t,n){if(1&t){const e=re();h(0,"tr")(1,"td")(2,"div",25)(3,"div",34)(4,"mat-checkbox",29),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(5,"div",26)(6,"div",35)(7,"span",2),p(8),_(9,"translate"),u(),p(10),u(),h(11,"div",35)(12,"span",2),p(13),_(14,"translate"),u(),p(15),u(),x(16,rSe,16,14),x(17,sSe,11,10),x(18,aSe,6,7,"div",35),u(),L(19,"div",36),h(20,"div",27)(21,"button",37),_(22,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(2);return o.stopPropagation(),H(s.showOptionsDialog(r))}),h(23,"mat-icon"),p(24),u()()()()()()}if(2&t){const e=n.$implicit,i=y(2);c(4),C("checked",i.selections.get(e.key)),c(4),S(v(9,10,"routes.key")),c(2),D(": ",e.key," "),c(3),S(v(14,12,"routes.type")),c(2),D(": ",i.getTypeName(e.type)," "),c(),k(null!=e.appFields&&e.appFields.routeDescriptor||null!=e.forwardFields&&e.forwardFields.routeDescriptor?16:-1),c(),k(null!=e.forwardFields&&e.forwardFields.nextTid||null!=e.intermediaryForwardFields&&e.intermediaryForwardFields.nextTid?17:-1),c(),k(null!=e.ruleSummary&&e.ruleSummary.keepAlive?18:-1),c(3),C("matTooltip",v(22,14,"common.options")),c(3),S("add")}}function cSe(t,n){if(1&t){const e=re();h(0,"div",12)(1,"div",18)(2,"table",19)(3,"tr"),L(4,"th"),h(5,"th",20),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.keySortData))}),p(6),_(7,"translate"),x(8,Lke,2,2,"mat-icon",21),u(),h(9,"th",20),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.typeSortData))}),p(10),_(11,"translate"),x(12,Bke,2,2,"mat-icon",21),u(),h(13,"th"),p(14),_(15,"translate"),u(),h(16,"th"),p(17),_(18,"translate"),u(),h(19,"th",20),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.destinationSortData))}),p(20),_(21,"translate"),x(22,Vke,2,2,"mat-icon",21),u(),h(23,"th"),p(24),_(25,"translate"),u(),h(26,"th"),p(27),_(28,"translate"),u(),h(29,"th"),p(30),_(31,"translate"),u(),L(32,"th",22),u(),me(33,nSe,38,17,"tr",null,Le),u(),h(35,"table",23)(36,"tr",24),F("click",function(){return V(e),H(y().dataSorter.openSortingOrderModal())}),h(37,"td")(38,"div",25)(39,"div",26)(40,"div",2),p(41),_(42,"translate"),u(),h(43,"div"),p(44),_(45,"translate"),x(46,iSe,2,3),x(47,oSe,2,3),u()(),h(48,"div",27)(49,"mat-icon",21),p(50,"keyboard_arrow_down"),u()()()()(),me(51,lSe,25,16,"tr",null,Le),u()()()}if(2&t){const e=y();c(),C("ngClass",pt(39,Dke,e.showShortList_,!e.showShortList_)),c(),C("ngClass",ie(42,Tke,e.showShortList_)),c(4),D(" ",v(7,19,"routes.key")," "),c(2),k(e.dataSorter.currentSortingColumn===e.keySortData?8:-1),c(2),D(" ",v(11,21,"routes.type")," "),c(2),k(e.dataSorter.currentSortingColumn===e.typeSortData?12:-1),c(2),S(v(15,23,"routes.local-port")),c(3),S(v(18,25,"routes.remote-port")),c(3),D(" ",v(21,27,"routes.remote-pk")," "),c(2),k(e.dataSorter.currentSortingColumn===e.destinationSortData?22:-1),c(2),S(v(25,29,"routes.next-rid")),c(3),S(v(28,31,"routes.next-tp")),c(3),S(v(31,33,"routes.keep-alive")),c(3),ge(e.dataSource),c(2),C("ngClass",ie(44,Eke,e.showShortList_)),c(6),S(v(42,35,"tables.sorting-title")),c(3),D("",v(45,37,e.dataSorter.currentSortingColumn.label)," "),c(2),k(e.dataSorter.currentlySortingByLabel?46:-1),c(),k(e.dataSorter.sortingInReverseOrder?47:-1),c(2),C("inline",!0),c(2),ge(e.dataSource)}}function dSe(t,n){1&t&&(h(0,"span",40),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"routes.empty")))}function uSe(t,n){1&t&&(h(0,"span",40),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"routes.empty-with-filter")))}function hSe(t,n){if(1&t&&(h(0,"div",12)(1,"div",38)(2,"mat-icon",39),p(3,"warning"),u(),x(4,dSe,3,3,"span",40),x(5,uSe,3,3,"span",40),u()()),2&t){const e=y();c(2),C("inline",!0),c(2),k(0===e.allRoutes.length?4:-1),c(),k(0!==e.allRoutes.length?5:-1)}}let fSe=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter.setData(this.filteredRoutes)}set routes(e){if(!e)return;const i=performance.now();console.log("[HV-DIAG] route-list setter called, routes:",e.length);const o=e.map(r=>r.key).sort().join(",");if(o===this.lastRouteKeys&&e.length===this.lastRouteCount)return this.cdr.markForCheck(),void console.log("[HV-DIAG] route-list skip (unchanged) took",(performance.now()-i).toFixed(1),"ms");console.log("[HV-DIAG] route-list FULL reprocessing",e.length,"routes"),this.lastRouteCount=e.length,this.lastRouteKeys=o,this.allRoutes=e,this.allRoutes.forEach(r=>{if(r.type=r.ruleSummary.ruleType||0===r.ruleSummary.ruleType?r.ruleSummary.ruleType:"",r.appFields||r.forwardFields){const s=r.appFields?r.appFields.routeDescriptor:r.forwardFields.routeDescriptor;r.src=s.srcPk,r.src_label=Fc.getCompleteLabel(this.storageService,this.translateService,r.src),r.dst=s.dstPk,r.dst_label=Fc.getCompleteLabel(this.storageService,this.translateService,r.dst)}else r.intermediaryForwardFields?(r.src="",r.src_label="",r.dst=r.intermediaryForwardFields.nextTid,r.dst_label=Fc.getCompleteLabel(this.storageService,this.translateService,r.dst)):(r.src="",r.src_label="",r.dst="",r.dst_label="")}),this.dataFilterer.setData(this.allRoutes)}constructor(e,i,o,r,s,a,l,d){this.routeService=e,this.dialog=i,this.route=o,this.router=r,this.snackbarService=s,this.translateService=a,this.storageService=l,this.cdr=d,this.listId="rl",this.keySortData=new Pt(["key"],"routes.key",lt.Number),this.typeSortData=new Pt(["type"],"routes.type",lt.Number),this.sourceSortData=new Pt(["src"],"routes.source",lt.Text,["src_label"]),this.destinationSortData=new Pt(["dst"],"routes.destination",lt.Text,["dst_label"]),this.labeledElementTypes=uo,this.selections=new Map,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.lastRouteCount=-1,this.lastRouteKeys="",this.filterProperties=[{filterName:"routes.filter-dialog.key",keyNameInElementsArray:"key",type:Mn.TextInput,maxlength:8},{filterName:"routes.filter-dialog.source",keyNameInElementsArray:"src",secondaryKeyNameInElementsArray:"src_label",type:Mn.TextInput,maxlength:66},{filterName:"routes.filter-dialog.destination",keyNameInElementsArray:"dst",secondaryKeyNameInElementsArray:"dst_label",type:Mn.TextInput,maxlength:66}],this.ruleTypes=new Map([[0,"App"],[1,"Forward"],[2,"Int. forward"]]),this.operationSubscriptionsGroup=[],this.dataSorter=new wu(this.dialog,this.translateService,this.storageService,[this.keySortData,this.typeSortData,this.sourceSortData,this.destinationSortData],0,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()});const m={filterName:"routes.filter-dialog.type",keyNameInElementsArray:"type",type:Mn.Select,printableLabelsForValues:[{value:"",label:"routes.filter-dialog.any-type-option"}]};this.ruleTypes.forEach((g,b)=>{m.printableLabelsForValues.push({value:b+"",label:g})}),this.filterProperties=[m].concat(this.filterProperties),this.dataFilterer=new xu(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(g=>{this.filteredRoutes=g,this.dataSorter.setData(this.filteredRoutes)}),this.navigationsSubscription=this.route.paramMap.subscribe(g=>{if(g.has("page")){let b=Number.parseInt(g.get("page"),10);(isNaN(b)||b<1)&&(b=1),this.currentPageInUrl=b,this.recalculateElementsToShow()}})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.dataSortedSubscription.unsubscribe(),this.dataFiltererSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFilterer.dispose()}refreshData(){Me.refreshCurrentDisplayedData()}getTypeName(e){return this.ruleTypes.has(e)?this.ruleTypes.get(e):"Unknown"}changeSelection(e){this.selections.get(e.key)?this.selections.set(e.key,!1):this.selections.set(e.key,!0)}hasSelectedElements(){if(!this.selections)return!1;let e=!1;return this.selections.forEach(i=>{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}deleteSelected(){const e=[];this.selections.forEach((i,o)=>{i&&e.push(o)}),0!==e.length&&this.deleteRecursively(e,null)}showOptionsDialog(e){ho.openDialog(this.dialog,[{icon:"visibility",label:"routes.details.title"},{icon:"close",label:"routes.delete"}],"common.options").afterClosed().subscribe(o=>{1===o?this.details(e):2===o&&this.delete(e.key)})}details(e){vke.openDialog(this.dialog,e)}delete(e){this.operationSubscriptionsGroup.push(this.startDeleting(e).subscribe(()=>{Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("routes.deleted")},i=>{i=Ze(i),this.snackbarService.showError(i)}))}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredRoutes){this.numberOfPages=1,this.currentPage=1,this.routesToShow=this.filteredRoutes.slice();const e=new Map;this.routesToShow.forEach(o=>{e.set(o.key,!0),this.selections.has(o.key)||this.selections.set(o.key,!1)});const i=[];this.selections.forEach((o,r)=>{e.has(r)||i.push(r)}),i.forEach(o=>{this.selections.delete(o)})}else this.routesToShow=null,this.selections=new Map;this.dataSource=this.routesToShow,this.cdr.markForCheck()}startDeleting(e){return this.routeService.delete(Me.getCurrentNodeKey(),e.toString())}deleteRecursively(e,i){this.operationSubscriptionsGroup.push(this.startDeleting(e[e.length-1]).subscribe(()=>{e.pop(),0===e.length?(i&&i.close(),Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("routes.deleted")):this.deleteRecursively(e,i)},o=>{Me.refreshCurrentDisplayedData(),o=Ze(o),i?i.componentInstance.showDone("confirmation.error-header-text",o.translatableErrorMsg):this.snackbarService.showError(o)}))}static{this.\u0275fac=function(i){return new(i||t)(O(RS),O(Nt),O(Li),O(yt),O(ot),O(Xo),O(ri),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-route-list"]],inputs:{nodePK:"nodePK",showShortList:"showShortList",routes:"routes"},standalone:!1,decls:21,vars:18,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[1,"rounded-elevated-box","mt-3"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"click"],[3,"inline"],[1,"actions"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[1,"selection-col"],[3,"change","checked"],[1,"mono"],[3,"id","elementType"],["mat-button","",1,"action-button","transparent-button",3,"click","matTooltip"],[3,"labelEdited","id","elementType"],[1,"check-part"],[1,"list-row","long-content"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,Pke,6,7,"span",3),x(3,Rke,6,3,"div",4),u(),h(4,"div",5)(5,"div",6),x(6,Fke,3,4,"mat-icon",7),x(7,Nke,2,1,"mat-icon",8),h(8,"mat-menu",9,0)(10,"div",10),F("click",function(){return o.changeAllSelections(!0)}),p(11),_(12,"translate"),u(),h(13,"div",10),F("click",function(){return o.changeAllSelections(!1)}),p(14),_(15,"translate"),u(),h(16,"div",11),F("click",function(){return o.deleteSelected()}),p(17),_(18,"translate"),u()()()()(),x(19,cSe,53,46,"div",12),x(20,hSe,6,3,"div",12)),2&i&&(c(2),k(o.showShortList_?2:-1),c(),k(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?3:-1),c(3),k(o.allRoutes&&o.allRoutes.length>0?6:-1),c(),k(o.dataSource&&o.dataSource.length>0?7:-1),c(),C("overlapTrigger",!1),c(3),D(" ",v(12,12,"selection.select-all")," "),c(3),D(" ",v(15,14,"selection.unselect-all")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(18,16,"selection.delete-all")," "),c(2),k(o.dataSource&&o.dataSource.length>0?19:-1),c(),k(o.dataSource&&0!==o.dataSource.length?-1:20))},dependencies:[Ft,Ht,Yo,Ae,Et,os,Vs,Su,Fo,Fc,Gl,we],styles:[".actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"],changeDetection:0})}}return t})();function pSe(t,n){if(1&t){const e=re();h(0,"form",12),F("ngSubmit",function(){return V(e),H(y(2).submitRouterConfig())}),h(1,"mat-form-field",13)(2,"mat-label"),p(3),_(4,"translate"),u(),L(5,"input",14),u(),h(6,"div",15)(7,"button",16),p(8),_(9,"translate"),u(),h(10,"button",17),F("click",function(){return V(e),H(y(2).toggleRouterForm())}),p(11),_(12,"translate"),u()()()}if(2&t){const e=y(2);C("formGroup",e.routerForm),c(3),S(v(4,5,"node.details.router-info.min-hops")),c(4),C("disabled",!e.routerForm.valid),c(),D(" ",v(9,7,"common.save")," "),c(3),D(" ",v(12,9,"common.cancel")," ")}}function mSe(t,n){if(1&t){const e=re();h(0,"div",0)(1,"div",6)(2,"span",4),p(3),_(4,"translate"),u(),h(5,"span",7)(6,"span",8),p(7),_(8,"translate"),u(),p(9),h(10,"button",9),F("click",function(){return V(e),H(y().toggleRouterForm())}),h(11,"mat-icon",10),p(12),u()()(),x(13,pSe,13,11,"form",11),u()()}if(2&t){const e=y();c(3),S(v(4,6,"node.details.router-info.title")),c(4),D("",v(8,8,"node.details.router-info.min-hops")," "),c(2),D(" ",e.node.minHops," "),c(2),C("inline",!0),c(),S(e.showRouterForm?"close":"edit"),c(),k(e.showRouterForm?13:-1)}}let gSe=(()=>{class t extends Lt{constructor(e,i,o){super(),this.formBuilder=e,this.routeService=i,this.snackbarService=o,this.showRouterForm=!1,this.routerForm=this.formBuilder.group({min:[1,Se.compose([Se.required,Se.maxLength(3),Se.pattern("^[0-9]+$")])]})}ngOnInit(){return this.dataSubscription=Me.currentNode.subscribe(e=>{this.nodePK=e.localPk,this.node=e,this.routes=e.routes}),this.trafficSubscription=Me.currentTrafficData.subscribe(e=>{this.trafficData=e}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription.unsubscribe(),this.trafficSubscription?.unsubscribe(),this.saveRouterSubscription?.unsubscribe()}toggleRouterForm(){this.showRouterForm=!this.showRouterForm,this.showRouterForm&&this.node&&this.routerForm.get("min").setValue(this.node.minHops)}submitRouterConfig(){if(!this.routerForm.valid||!this.node)return;const e=parseInt(this.routerForm.get("min").value,10);this.saveRouterSubscription=this.routeService.setMinHops(this.node.localPk,e).subscribe({next:()=>{this.snackbarService.showDone("router-config.done"),this.showRouterForm=!1,Me.refreshCurrentDisplayedData()},error:i=>{i=Ze(i),this.snackbarService.showError(i)}})}static{this.\u0275fac=function(i){return new(i||t)(O(Si),O(RS),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-routing"]],standalone:!1,features:[_e],decls:8,vars:8,consts:[[1,"rounded-elevated-box","mt-3"],[3,"routes","showShortList","nodePK"],[1,"rounded-elevated-box","mt-3","traffic-box"],[1,"box-internal-container"],[1,"section-title"],[1,"d-flex","flex-column","justify-content-end","mt-3",3,"trafficData"],[1,"box-internal-container","overflow","font-smaller"],[1,"info-line"],[1,"title"],["mat-icon-button","",1,"inline-edit-btn",3,"click"],[3,"inline"],[1,"inline-form",3,"formGroup"],[1,"inline-form",3,"ngSubmit","formGroup"],["appearance","outline",1,"inline-form-field-sm"],["matInput","","type","number","formControlName","min","min","0","max","999"],[1,"inline-form-actions"],["mat-raised-button","","color","primary","type","submit",3,"disabled"],["mat-button","","type","button",3,"click"]],template:function(i,o){1&i&&(x(0,mSe,14,10,"div",0),L(1,"app-route-list",1),h(2,"div",2)(3,"div",3)(4,"span",4),p(5),_(6,"translate"),u(),L(7,"app-charts",5),u()()),2&i&&(k(o.node?0:-1),c(),C("routes",o.routes)("showShortList",!0)("nodePK",o.nodePK),c(4),S(v(6,6,"node.details.node-traffic-data")),c(2),C("trafficData",o.trafficData))},dependencies:[kn,Qt,Oa,Jt,xn,gc,hv,sn,_n,dn,ns,On,Ht,Yo,Ae,hke,fSe,we],encapsulation:2})}}return t})();function _Se(t,n){if(1&t&&(h(0,"mat-option",5),p(1),_(2,"translate"),u()),2&t){const e=n.$implicit;C("value",e.days),c(),S(v(2,2,e.text))}}let bSe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.data=e,this.dialogRef=i,this.formBuilder=o}ngOnInit(){this.filters=[{text:"apps.log.filter.7-days",days:7},{text:"apps.log.filter.1-month",days:30},{text:"apps.log.filter.3-months",days:90},{text:"apps.log.filter.6-months",days:180},{text:"apps.log.filter.1-year",days:365},{text:"apps.log.filter.all",days:-1}],this.form=this.formBuilder.group({filter:[this.data.days]}),this.formSubscription=this.form.get("filter").valueChanges.subscribe(e=>{this.dialogRef.close(this.filters.find(i=>i.days===e))})}ngOnDestroy(){this.formSubscription.unsubscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt),O(Si))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-log-filter"]],standalone:!1,decls:11,vars:8,consts:[[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","filter"],[3,"value"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),_(1,"translate"),h(2,"form",1)(3,"mat-form-field")(4,"div",2)(5,"label",3),p(6),_(7,"translate"),u(),h(8,"mat-select",4),me(9,_Se,3,4,"mat-option",5,Le),u()()()()()),2&i&&(C("headline",v(1,4,"apps.log.filter.title"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(4),S(v(7,6,"apps.log.filter.filter")),c(3),ge(o.filters))},dependencies:[kn,Jt,xn,sn,_n,dn,Na,is,Sn,we],styles:["mat-form-field[_ngcontent-%COMP%]{margin-bottom:-24px}"]})}}return t})();const vSe=["content"],ySe=t=>({totalLogs:t});function CSe(t,n){if(1&t&&(h(0,"app-button",7)(1,"div",11),p(2),_(3,"translate"),u()()),2&t){const e=y();c(2),D(" ",ue(3,1,"apps.log.view-all",ie(4,ySe,e.totalLogs))," ")}}function wSe(t,n){if(1&t&&(h(0,"div",8)(1,"span",12),p(2),u(),p(3),u()),2&t){const e=n.$implicit;c(2),D(" ",e.time," "),c(),D(" ",e.msg," ")}}function xSe(t,n){1&t&&(h(0,"div",9),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"apps.log.empty")," "))}function kSe(t,n){1&t&&L(0,"app-loading-indicator",10),2&t&&C("showWhite",!1)}let SSe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.largeModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.dialogRef=i,this.appsService=o,this.dialog=r,this.snackbarService=s,this.apiService=a,this.logMessages=[],this.hasMoreLogMessages=!1,this.totalLogs=0,this.loading=!1,this.currentFilter={text:"apps.log.filter.7-days",days:7},this.shouldShowError=!0}ngOnInit(){this.loadData(0)}ngOnDestroy(){this.removeSubscription()}filter(){bSe.openDialog(this.dialog,this.currentFilter).afterClosed().subscribe(e=>{e&&(this.currentFilter=e,this.logMessages=[],this.loadData(0))})}getLogsUrl(){return"/"+this.apiService.apiPrefix+this.appsService.getLogMessagesUrl(Me.getCurrentNodeKey(),this.data.name)}loadData(e){this.removeSubscription(),this.loading=!0,this.subscription=se(1).pipe(oi(e),Tt(()=>this.appsService.getLogMessages(Me.getCurrentNodeKey(),this.data.name,this.currentFilter.days))).subscribe(i=>this.onLogsReceived(i),i=>this.onLogsError(i))}removeSubscription(){this.subscription&&this.subscription.unsubscribe()}onLogsReceived(e=[]){this.loading=!1,this.shouldShowError=!0,this.snackbarService.closeCurrentIfTemporaryError();let i=0;this.hasMoreLogMessages=!1,this.totalLogs=e.length,e.forEach(o=>{if(i<5e3){const r=o.startsWith("[")?0:-1,s=-1!==r?o.indexOf("]"):-1;this.logMessages.push(-1!==r&&-1!==s?{time:o.substr(r,s+1),msg:o.substr(s+1)}:{time:"",msg:o})}else this.hasMoreLogMessages=!0;i+=1}),setTimeout(()=>{this.content.nativeElement.scrollTop=this.content.nativeElement.scrollHeight})}onLogsError(e){e=Ze(e),this.shouldShowError&&(this.snackbarService.showError("common.loading-error",null,!0,e),this.shouldShowError=!1),this.loadData(at.connectionRetryDelay)}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt),O(Hs),O(Nt),O(ot),O(fi))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-log"]],viewQuery:function(i,o){if(1&i&&st(vSe,5),2&i){let r;fe(r=pe())&&(o.content=r.first)}},standalone:!1,decls:20,vars:16,consts:[["content",""],[3,"headline","includeVerticalMargins","includeScrollableArea","dialog"],[1,"top-dialog-button",3,"click"],[1,"top-dialog-button-content"],[1,"actual-value"],[1,"top-dialog-button-margin"],["target","_blank",3,"href"],["color","primary",1,"full-logs-button"],[1,"app-log-message"],[1,"app-log-empty","mt-3"],[3,"showWhite"],[1,"text-container"],[1,"transparent"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"div",2),F("click",function(){return o.filter()}),h(3,"div",3)(4,"div")(5,"span"),p(6),_(7,"translate"),u(),h(8,"span",4),p(9),_(10,"translate"),u()()(),L(11,"div",5),u(),h(12,"mat-dialog-content",null,0)(14,"a",6),x(15,CSe,4,6,"app-button",7),u(),me(16,wSe,4,2,"div",8,Le),x(18,xSe,3,3,"div",9),x(19,kSe,1,1,"app-loading-indicator",10),u()()),2&i&&(C("headline",v(1,10,"apps.log.title"))("includeVerticalMargins",!1)("includeScrollableArea",!1)("dialog",o.dialogRef),c(6),D("",v(7,12,"apps.log.filter-button")," "),c(3),S(v(10,14,o.currentFilter.text)),c(5),C("href",o.getLogsUrl(),$i),c(),k(o.hasMoreLogMessages?15:-1),c(),ge(o.logMessages),c(2),k(o.loading||o.logMessages&&0!==o.logMessages.length?-1:18),c(),k(o.loading?19:-1))},dependencies:[au,Mi,Sn,Qr,we],styles:[".mat-mdc-dialog-content[_ngcontent-%COMP%]{font-size:.875rem}.app-log-message[_ngcontent-%COMP%]{margin-top:15px;word-break:break-word}.app-log-message[_ngcontent-%COMP%] .transparent[_ngcontent-%COMP%]{color:#999}.app-log-message[_ngcontent-%COMP%]:first-of-type{margin-top:0}.app-log-message[_ngcontent-%COMP%]:last-of-type{margin-bottom:24px}.top-dialog-button[_ngcontent-%COMP%]{color:#777!important}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%]{text-align:center}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .actual-value[_ngcontent-%COMP%]{color:#202226}.full-logs-button[_ngcontent-%COMP%] button{width:100%!important;display:block;text-align:center;margin-bottom:15px}.full-logs-button[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{width:100%}"]})}}return t})();const MSe=["button"],DSe=["firstInput"],kM=t=>({"element-disabled":t});function TSe(t,n){if(1&t&&(h(0,"mat-form-field",4)(1,"div",5)(2,"label",10),p(3),_(4,"translate"),u(),L(5,"input",11),u()()),2&t){const e=y();C("ngClass",ie(4,kM,e.disableDismiss)),c(3),S(v(4,2,"apps.vpn-socks-server-settings.netifc"))}}function ESe(t,n){if(1&t){const e=re();h(0,"div",8)(1,"mat-checkbox",12),F("change",function(o){return V(e),H(y().setSecureMode(o))}),p(2),_(3,"translate"),h(4,"mat-icon",13),_(5,"translate"),p(6,"help"),u()()()}if(2&t){const e=y();c(),C("checked",e.secureMode)("ngClass",ie(9,kM,e.disableDismiss)),c(),D(" ",v(3,5,"apps.vpn-socks-server-settings.secure-mode-check")," "),c(2),C("inline",!0)("matTooltip",v(5,7,"apps.vpn-socks-server-settings.secure-mode-info"))}}let PSe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.appsService=i,this.formBuilder=o,this.dialogRef=r,this.snackbarService=s,this.dialog=a,this.configuringVpn=!1,this.secureMode=!1,-1!==e.name.toLocaleLowerCase().indexOf("vpn")&&(this.configuringVpn=!0)}ngOnInit(){if(this.form=this.formBuilder.group({whitelist:["",this.validateWhitelist.bind(this)],netifc:[""]}),this.data.args&&this.data.args.length>0)for(let e=0;ethis.firstInput.nativeElement.focus())}ngOnDestroy(){this.formSubscription&&this.formSubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()}get disableDismiss(){return!!this.button&&this.button.isLoading}setSecureMode(e){this.button.disabled||(this.secureMode=!!e.checked)}saveChanges(){if(!this.form.valid||this.button.disabled)return;const i=this.normalizedWhitelist()?"apps.vpn-socks-server-settings.set-whitelist-confirmation":"apps.vpn-socks-server-settings.clear-whitelist-confirmation",o=Ut.createConfirmationDialog(this.dialog,i);o.componentInstance.operationAccepted.subscribe(()=>{o.close(),this.continueSavingChanges()})}continueSavingChanges(){this.button.showLoading();const e={whitelist:this.normalizedWhitelist()};this.configuringVpn&&(e.secure=this.secureMode,e.netifc=this.form.get("netifc").value),this.operationSubscription=this.appsService.changeAppSettings(Me.getCurrentNodeKey(),this.data.name,e).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)})}normalizedWhitelist(){const e=(this.form.get("whitelist").value||"").trim();return""===e?"":e.split(/[\s,]+/).filter(i=>i.length>0).join(",")}onSuccess(){Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.vpn-socks-server-settings.changes-made"),this.dialogRef.close()}onError(e){this.button.showError(),e=Ze(e),this.snackbarService.showError(e)}validateWhitelist(e){const i=(e&&(e.value||"")).trim();if(""===i)return null;for(const o of i.split(/[\s,]+/))if(""!==o&&(66!==o.length||!/^[0-9a-fA-F]+$/.test(o)))return{invalid:!0};return null}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Hs),O(Si),O(Zt),O(ot),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-skysocks-settings"]],viewQuery:function(i,o){if(1&i&&st(MSe,5)(DSe,5),2&i){let r;fe(r=pe())&&(o.button=r.first),fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:23,vars:24,consts:[["firstInput",""],["button",""],[3,"headline","dialog","disableDismiss"],[3,"formGroup"],[3,"ngClass"],[1,"field-container"],["for","whitelist",1,"field-label"],["id","whitelist","formControlName","whitelist","rows","3","matInput","","placeholder","02abc..., 03def..."],[1,"main-theme","settings-option"],["color","primary",1,"float-right",3,"action","disabled"],["for","remoteKey",1,"field-label"],["id","netifc","type","text","formControlName","netifc","matInput",""],["color","primary",3,"change","checked","ngClass"],[1,"help-icon",3,"inline","matTooltip"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),_(1,"translate"),h(2,"form",3)(3,"mat-form-field",4)(4,"div",5)(5,"label",6),p(6),_(7,"translate"),u(),L(8,"textarea",7,0),u(),h(10,"mat-hint"),p(11),_(12,"translate"),u(),h(13,"mat-error")(14,"span"),p(15),_(16,"translate"),u()()(),x(17,TSe,6,6,"mat-form-field",4),x(18,ESe,7,11,"div",8),u(),h(19,"app-button",9,1),F("action",function(){return o.saveChanges()}),p(21),_(22,"translate"),u()()),2&i&&(C("headline",v(1,12,"apps.vpn-socks-server-settings."+(o.configuringVpn?"vpn-title":"socks-title")))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),c(2),C("formGroup",o.form),c(),C("ngClass",ie(22,kM,o.disableDismiss)),c(3),S(v(7,14,"apps.vpn-socks-server-settings.whitelist")),c(5),S(v(12,16,"apps.vpn-socks-server-settings.whitelist-help")),c(4),S(v(16,18,"apps.vpn-socks-server-settings.whitelist-invalid-pk")),c(2),k(o.configuringVpn?17:-1),c(),k(o.configuringVpn?18:-1),c(),C("disabled",!o.form.valid),c(2),D(" ",v(22,20,"apps.vpn-socks-server-settings.save")," "))},dependencies:[Ft,kn,Qt,Jt,xn,sn,_n,dn,sp,Aa,On,Ae,Et,Fo,Mi,Sn,we],styles:["mat-checkbox[_ngcontent-%COMP%]{margin-bottom:15px}"]})}}return t})();const ISe=["firstInput"];let OSe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i||"",o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.dialogRef=e,this.data=i,this.formBuilder=o}ngOnInit(){this.form=this.formBuilder.group({note:[this.data]}),setTimeout(()=>this.firstInput.nativeElement.focus())}finish(){const e=this.form.get("note").value.trim();this.dialogRef.close("-"+e)}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Si))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-edit-skysocks-client-note"]],viewQuery:function(i,o){if(1&i&&st(ISe,5),2&i){let r;fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:11,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","note","maxlength","100","matInput",""],["color","primary","type","mat-raised-button",1,"float-right",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),_(7,"translate"),u(),L(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.finish()}),p(11),_(12,"translate"),u()()),2&i&&(C("headline",v(1,5,"apps.vpn-socks-client-settings.change-note-dialog.title"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(4),S(v(7,7,"apps.vpn-socks-client-settings.change-note-dialog.note")),c(5),S(v(12,9,"common.save")))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,On,Mi,Sn,we],encapsulation:2})}}return t})();function ASe(t,n){if(1&t&&p(0),2&t){const e=y().$implicit;D(" ",y(2).completeCountriesList[e.toUpperCase()]," ")}}function RSe(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.toUpperCase()," ")}function FSe(t,n){if(1&t&&(h(0,"mat-option",9)(1,"div",10),L(2,"div"),u(),x(3,ASe,1,1),x(4,RSe,1,1),u()),2&t){const e=n.$implicit,i=y(2);C("value",e.toUpperCase()),c(2),ao("background-image: url('assets/img/flags/"+e.toLocaleLowerCase()+".png');"),c(),k(i.completeCountriesList[e.toUpperCase()]?3:-1),c(),k(i.completeCountriesList[e.toUpperCase()]?-1:4)}}function NSe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"apps.vpn-socks-client-settings.filter-dialog.any-country")," ")}function LSe(t,n){if(1&t&&p(0),2&t){const e=y(3);D(" ",e.completeCountriesList[e.form.get("country").value]," ")}}function BSe(t,n){1&t&&p(0),2&t&&D(" ",y(3).form.get("country").value," ")}function VSe(t,n){if(1&t&&(h(0,"div",10),L(1,"div"),u(),x(2,LSe,1,1),x(3,BSe,1,1)),2&t){const e=y(2);c(),ao("background-image: url('assets/img/flags/"+e.form.get("country").value.toLocaleLowerCase()+".png');"),c(),k(e.completeCountriesList[e.form.get("country").value]?2:-1),c(),k(e.completeCountriesList[e.form.get("country").value]?-1:3)}}function HSe(t,n){if(1&t&&(h(0,"mat-form-field")(1,"div",3)(2,"label",4),p(3),_(4,"translate"),u(),h(5,"mat-select",8)(6,"mat-option",9),p(7),_(8,"translate"),u(),me(9,FSe,5,5,"mat-option",9,Le),h(11,"mat-select-trigger"),x(12,NSe,2,3),x(13,VSe,4,4),u()()()()),2&t){const e=y();c(3),S(v(4,5,"apps.vpn-socks-client-settings.filter-dialog.country")),c(3),C("value","-"),c(),S(v(8,7,"apps.vpn-socks-client-settings.filter-dialog.any-country")),c(2),ge(e.data.availableCountries),c(3),k("-"===e.form.get("country").value?12:-1),c(),k("-"!==e.form.get("country").value?13:-1)}}class Q6{constructor(){this.country="",this.location="",this.key=""}}let USe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.data=e,this.dialogRef=i,this.formBuilder=o,this.completeCountriesList=rs}ngOnInit(){this.form=this.formBuilder.group({country:[this.data.currentFilters.country?this.data.currentFilters.country:"-"],"location-text":[this.data.currentFilters.location],"key-text":[this.data.currentFilters.key]})}apply(){const e=new Q6;let i=this.form.get("country").value.trim();"-"===i&&(i=""),e.country=i,e.location=this.form.get("location-text").value.trim(),e.key=this.form.get("key-text").value.trim(),this.dialogRef.close(e)}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt),O(Si))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-skysocks-client-filter"]],standalone:!1,decls:20,vars:15,consts:[["button",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","location-text","maxlength","100","matInput",""],["formControlName","key-text","maxlength","66","matInput",""],["type","mat-raised-button","color","primary",1,"float-right",3,"action"],["formControlName","country","id","country"],[3,"value"],[1,"flag-container"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2),x(3,HSe,14,9,"mat-form-field"),h(4,"mat-form-field")(5,"div",3)(6,"label",4),p(7),_(8,"translate"),u(),L(9,"input",5),u()(),h(10,"mat-form-field")(11,"div",3)(12,"label",4),p(13),_(14,"translate"),u(),L(15,"input",6),u()()(),h(16,"app-button",7,0),F("action",function(){return o.apply()}),p(18),_(19,"translate"),u()()),2&i&&(C("headline",v(1,7,"apps.vpn-socks-client-settings.filter-dialog.title"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(),k(o.data.availableCountries.length>0?3:-1),c(4),S(v(8,9,"apps.vpn-socks-client-settings.filter-dialog.location")),c(6),S(v(14,11,"apps.vpn-socks-client-settings.filter-dialog.pub-key")),c(5),D(" ",v(19,13,"apps.vpn-socks-client-settings.filter-dialog.apply")," "))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,On,Na,Qme,is,Mi,Sn,we],encapsulation:2})}}return t})(),zSe=(()=>{class t{constructor(e){this.http=e,this.discoveryServiceUrl="https://sd.skycoin.com/api/services?type="}getServices(e){const i=[];return this.http.get(this.discoveryServiceUrl+(e?"proxy":"vpn")).pipe(lp(o=>o.pipe(oi(4e3))),De(o=>(o||(o=[]),o.forEach(r=>{const s=new lme,a=r.address.split(":");2===a.length&&(s.address=r.address,s.pk=a[0],s.port=a[1],s.location="",r.geo&&(r.geo.country&&(s.country=r.geo.country,s.location+=rs[r.geo.country.toUpperCase()]?rs[r.geo.country.toUpperCase()]:r.geo.country),r.geo.region&&r.geo.country&&(s.location+=", "),r.geo.region&&(s.region=r.geo.region,s.location+=s.region)),i.push(s))}),i)))}static{this.\u0275fac=function(i){return new(i||t)(ce(xa))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const SM=["*"];function jSe(t,n){1&t&&Rt(0)}const $Se=["tabListContainer"],WSe=["tabList"],GSe=["tabListInner"],qSe=["nextPaginator"],KSe=["previousPaginator"],YSe=["content"];function XSe(t,n){}const ZSe=["tabBodyWrapper"],QSe=["tabHeader"];function JSe(t,n){}function eMe(t,n){1&t&&rt(0,JSe,0,0,"ng-template",12),2&t&&C("cdkPortalOutlet",y().$implicit.templateLabel)}function tMe(t,n){1&t&&p(0),2&t&&S(y().$implicit.textLabel)}function nMe(t,n){if(1&t){const e=re();h(0,"div",7,2),F("click",function(){const o=V(e),r=o.$implicit,s=o.$index,a=y(),l=Un(1);return H(a._handleClick(r,l,s))})("cdkFocusChange",function(o){const r=V(e).$index;return H(y()._tabFocusChanged(o,r))}),L(2,"span",8)(3,"div",9),h(4,"span",10)(5,"span",11),x(6,eMe,1,1,null,12)(7,tMe,1,1),u()()()}if(2&t){const e=n.$implicit,i=n.$index,o=Un(1),r=y();Ge(e.labelClass),ve("mdc-tab--active",r.selectedIndex===i),C("id",r._getTabLabelId(e,i))("disabled",e.disabled)("fitInkBarToContent",r.fitInkBarToContent),We("tabIndex",r._getTabIndex(i))("aria-posinset",i+1)("aria-setsize",r._tabs.length)("aria-controls",r._getTabContentId(i))("aria-selected",r.selectedIndex===i)("aria-label",e.ariaLabel||null)("aria-labelledby",!e.ariaLabel&&e.ariaLabelledby?e.ariaLabelledby:null),c(3),C("matRippleTrigger",o)("matRippleDisabled",e.disabled||r.disableRipple),c(3),k(e.templateLabel?6:7)}}function iMe(t,n){1&t&&Rt(0)}function oMe(t,n){if(1&t){const e=re();h(0,"mat-tab-body",13),F("_onCentered",function(){return V(e),H(y()._removeTabBodyWrapperHeight())})("_onCentering",function(o){return V(e),H(y()._setTabBodyWrapperHeight(o))})("_beforeCentering",function(o){return V(e),H(y()._bodyCentered(o))}),u()}if(2&t){const e=n.$implicit,i=n.$index,o=y();Ge(e.bodyClass),C("id",o._getTabContentId(i))("content",e.content)("position",e.position)("animationDuration",o.animationDuration)("preserveContent",o.preserveContent),We("tabindex",null!=o.contentTabIndex&&o.selectedIndex===i?o.contentTabIndex:null)("aria-labelledby",o._getTabLabelId(e,i))("aria-hidden",o.selectedIndex!==i)}}const rMe=new Z("MatTabContent");let sMe=(()=>{class t{template=T(Oi);constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matTabContent",""]],features:[dt([{provide:rMe,useExisting:t}])]})}return t})();const aMe=new Z("MatTabLabel"),J6=new Z("MAT_TAB");let lMe=(()=>{class t extends $ce{_closestTab=T(J6,{optional:!0});static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","mat-tab-label",""],["","matTabLabel",""]],features:[dt([{provide:aMe,useExisting:t}]),_e]})}return t})();const eH=new Z("MAT_TAB_GROUP");let tH=(()=>{class t{_viewContainerRef=T(Ai);_closestTabGroup=T(eH,{optional:!0});disabled=!1;get templateLabel(){return this._templateLabel}set templateLabel(e){this._setTemplateLabelInput(e)}_templateLabel;_explicitContent=void 0;_implicitContent;textLabel="";ariaLabel;ariaLabelledby;labelClass;bodyClass;id=null;_contentPortal=null;get content(){return this._contentPortal}_stateChanges=new be;position=null;origin=null;isActive=!1;constructor(){T(qo).load(cu)}ngOnChanges(e){(e.hasOwnProperty("textLabel")||e.hasOwnProperty("disabled"))&&this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}ngOnInit(){this._contentPortal=new nc(this._explicitContent||this._implicitContent,this._viewContainerRef)}_setTemplateLabelInput(e){e&&e._closestTab===this&&(this._templateLabel=e)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-tab"]],contentQueries:function(i,o,r){if(1&i&&Ds(r,lMe,5)(r,sMe,7,Oi),2&i){let s;fe(s=pe())&&(o.templateLabel=s.first),fe(s=pe())&&(o._explicitContent=s.first)}},viewQuery:function(i,o){if(1&i&&st(Oi,7),2&i){let r;fe(r=pe())&&(o._implicitContent=r.first)}},hostAttrs:["hidden",""],hostVars:1,hostBindings:function(i,o){2&i&&We("id",null)},inputs:{disabled:[2,"disabled","disabled",Te],textLabel:[0,"label","textLabel"],ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],labelClass:"labelClass",bodyClass:"bodyClass",id:"id"},exportAs:["matTab"],features:[dt([{provide:J6,useExisting:t}]),vi],ngContentSelectors:SM,decls:1,vars:0,template:function(i,o){1&i&&(xi(),Fg(0,jSe,1,0,"ng-template"))},encapsulation:2})}return t})();const MM="mdc-tab-indicator--active",nH="mdc-tab-indicator--no-transition";class cMe{_items;_currentItem;constructor(n){this._items=n}hide(){this._items.forEach(n=>n.deactivateInkBar()),this._currentItem=void 0}alignToElement(n){const e=this._items.find(o=>o.elementRef.nativeElement===n),i=this._currentItem;if(e!==i&&(i?.deactivateInkBar(),e)){const o=i?.elementRef.nativeElement.getBoundingClientRect?.();e.activateInkBar(o),this._currentItem=e}}}let dMe=(()=>{class t{_elementRef=T(Ne);_inkBarElement=null;_inkBarContentElement=null;_fitToContent=!1;get fitInkBarToContent(){return this._fitToContent}set fitInkBarToContent(e){this._fitToContent!==e&&(this._fitToContent=e,this._inkBarElement&&this._appendInkBarElement())}activateInkBar(e){const i=this._elementRef.nativeElement;if(!e||!i.getBoundingClientRect||!this._inkBarContentElement)return void i.classList.add(MM);const o=i.getBoundingClientRect(),r=e.width/o.width,s=e.left-o.left;i.classList.add(nH),this._inkBarContentElement.style.setProperty("transform",`translateX(${s}px) scaleX(${r})`),i.getBoundingClientRect(),i.classList.remove(nH),i.classList.add(MM),this._inkBarContentElement.style.setProperty("transform","")}deactivateInkBar(){this._elementRef.nativeElement.classList.remove(MM)}ngOnInit(){this._createInkBarElement()}ngOnDestroy(){this._inkBarElement?.remove(),this._inkBarElement=this._inkBarContentElement=null}_createInkBarElement(){const e=this._elementRef.nativeElement.ownerDocument||document,i=this._inkBarElement=e.createElement("span"),o=this._inkBarContentElement=e.createElement("span");i.className="mdc-tab-indicator",o.className="mdc-tab-indicator__content mdc-tab-indicator__content--underline",i.appendChild(this._inkBarContentElement),this._appendInkBarElement()}_appendInkBarElement(){(this._fitToContent?this._elementRef.nativeElement.querySelector(".mdc-tab__content"):this._elementRef.nativeElement).appendChild(this._inkBarElement)}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,inputs:{fitInkBarToContent:[2,"fitInkBarToContent","fitInkBarToContent",Te]}})}return t})(),iH=(()=>{class t extends dMe{elementRef=T(Ne);disabled=!1;focus(){this.elementRef.nativeElement.focus()}getOffsetLeft(){return this.elementRef.nativeElement.offsetLeft}getOffsetWidth(){return this.elementRef.nativeElement.offsetWidth}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","matTabLabelWrapper",""]],hostVars:3,hostBindings:function(i,o){2&i&&(We("aria-disabled",!!o.disabled),ve("mat-mdc-tab-disabled",o.disabled))},inputs:{disabled:[2,"disabled","disabled",Te]},features:[_e]})}return t})();const oH={passive:!0};let fMe=(()=>{class t{_elementRef=T(Ne);_changeDetectorRef=T(Dt);_viewportRuler=T(tu);_dir=T(kr,{optional:!0});_ngZone=T(Ce);_platform=T(Zn);_sharedResizeObserver=T(SB);_injector=T(Ue);_renderer=T(ei);_animationsDisabled=hi();_eventCleanups;_scrollDistance=0;_selectedIndexChanged=!1;_destroyed=new be;_showPaginationControls=!1;_disableScrollAfter=!0;_disableScrollBefore=!0;_tabLabelCount;_scrollDistanceChanged=!1;_keyManager;_currentTextContent;_stopScrolling=new be;disablePagination=!1;get selectedIndex(){return this._selectedIndex}set selectedIndex(e){const i=isNaN(e)?0:e;this._selectedIndex!=i&&(this._selectedIndexChanged=!0,this._selectedIndex=i,this._keyManager&&this._keyManager.updateActiveItem(i))}_selectedIndex=0;selectFocusedIndex=new ke;indexFocused=new ke;constructor(){this._eventCleanups=this._ngZone.runOutsideAngular(()=>[this._renderer.listen(this._elementRef.nativeElement,"mouseleave",()=>this._stopInterval())])}ngAfterViewInit(){this._eventCleanups.push(this._renderer.listen(this._previousPaginator.nativeElement,"touchstart",()=>this._handlePaginatorPress("before"),oH),this._renderer.listen(this._nextPaginator.nativeElement,"touchstart",()=>this._handlePaginatorPress("after"),oH))}ngAfterContentInit(){const e=this._dir?this._dir.change:se("ltr"),i=this._sharedResizeObserver.observe(this._elementRef.nativeElement).pipe(Ab(32),ln(this._destroyed)),o=this._viewportRuler.change(150).pipe(ln(this._destroyed)),r=()=>{this.updatePagination(),this._alignInkBarToSelectedTab()};this._keyManager=new lV(this._items).withHorizontalOrientation(this._getLayoutDirection()).withHomeAndEnd().withWrap().skipPredicate(()=>!1),this._keyManager.updateActiveItem(Math.max(this._selectedIndex,0)),Wi(r,{injector:this._injector}),Dr(e,o,i,this._items.changes,this._itemsResized()).pipe(ln(this._destroyed)).subscribe(()=>{this._ngZone.run(()=>{Promise.resolve().then(()=>{this._scrollDistance=Math.max(0,Math.min(this._getMaxScrollDistance(),this._scrollDistance)),r()})}),this._keyManager?.withHorizontalOrientation(this._getLayoutDirection())}),this._keyManager.change.subscribe(s=>{this.indexFocused.emit(s),this._setTabFocus(s)})}_itemsResized(){return"function"!=typeof ResizeObserver?Ni:this._items.changes.pipe(zn(this._items),wt(e=>new zt(i=>this._ngZone.runOutsideAngular(()=>{const o=new ResizeObserver(r=>i.next(r));return e.forEach(r=>o.observe(r.elementRef.nativeElement)),()=>{o.disconnect()}}))),kk(1),Pn(e=>e.some(i=>i.contentRect.width>0&&i.contentRect.height>0)))}ngAfterContentChecked(){this._tabLabelCount!=this._items.length&&(this.updatePagination(),this._tabLabelCount=this._items.length,this._changeDetectorRef.markForCheck()),this._selectedIndexChanged&&(this._scrollToLabel(this._selectedIndex),this._checkScrollingControls(),this._alignInkBarToSelectedTab(),this._selectedIndexChanged=!1,this._changeDetectorRef.markForCheck()),this._scrollDistanceChanged&&(this._updateTabScrollPosition(),this._scrollDistanceChanged=!1,this._changeDetectorRef.markForCheck())}ngOnDestroy(){this._eventCleanups.forEach(e=>e()),this._keyManager?.destroy(),this._destroyed.next(),this._destroyed.complete(),this._stopScrolling.complete()}_handleKeydown(e){if(!Mr(e))switch(e.keyCode){case 13:case 32:if(this.focusIndex!==this.selectedIndex){const i=this._items.get(this.focusIndex);i&&!i.disabled&&(this.selectFocusedIndex.emit(this.focusIndex),this._itemSelected(e))}break;default:this._keyManager?.onKeydown(e)}}_onContentChanges(){const e=this._elementRef.nativeElement.textContent;e!==this._currentTextContent&&(this._currentTextContent=e||"",this._ngZone.run(()=>{this.updatePagination(),this._alignInkBarToSelectedTab(),this._changeDetectorRef.markForCheck()}))}updatePagination(){this._checkPaginationEnabled(),this._checkScrollingControls(),this._updateTabScrollPosition()}get focusIndex(){return this._keyManager?this._keyManager.activeItemIndex:0}set focusIndex(e){!this._isValidIndex(e)||this.focusIndex===e||!this._keyManager||this._keyManager.setActiveItem(e)}_isValidIndex(e){return!this._items||!!this._items.toArray()[e]}_setTabFocus(e){if(this._showPaginationControls&&this._scrollToLabel(e),this._items&&this._items.length){this._items.toArray()[e].focus();const i=this._tabListContainer.nativeElement;i.scrollLeft="ltr"==this._getLayoutDirection()?0:i.scrollWidth-i.offsetWidth}}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_updateTabScrollPosition(){if(this.disablePagination)return;const e=this.scrollDistance,i="ltr"===this._getLayoutDirection()?-e:e;this._tabList.nativeElement.style.transform=`translateX(${Math.round(i)}px)`,(this._platform.TRIDENT||this._platform.EDGE)&&(this._tabListContainer.nativeElement.scrollLeft=0)}get scrollDistance(){return this._scrollDistance}set scrollDistance(e){this._scrollTo(e)}_scrollHeader(e){return this._scrollTo(this._scrollDistance+("before"==e?-1:1)*this._tabListContainer.nativeElement.offsetWidth/3)}_handlePaginatorClick(e){this._stopInterval(),this._scrollHeader(e)}_scrollToLabel(e){if(this.disablePagination)return;const i=this._items?this._items.toArray()[e]:null;if(!i)return;const o=this._tabListContainer.nativeElement.offsetWidth,{offsetLeft:r,offsetWidth:s}=i.elementRef.nativeElement;let a,l;"ltr"==this._getLayoutDirection()?(a=r,l=a+s):(l=this._tabListInner.nativeElement.offsetWidth-r,a=l-s);const d=this.scrollDistance,f=this.scrollDistance+o;af&&(this.scrollDistance+=Math.min(l-f,a-d))}_checkPaginationEnabled(){if(this.disablePagination)this._showPaginationControls=!1;else{const o=this._tabListInner.nativeElement.scrollWidth-this._elementRef.nativeElement.offsetWidth>=5;o||(this.scrollDistance=0),o!==this._showPaginationControls&&(this._showPaginationControls=o,this._changeDetectorRef.markForCheck())}}_checkScrollingControls(){this.disablePagination?this._disableScrollAfter=this._disableScrollBefore=!0:(this._disableScrollBefore=0==this.scrollDistance,this._disableScrollAfter=this.scrollDistance==this._getMaxScrollDistance(),this._changeDetectorRef.markForCheck())}_getMaxScrollDistance(){return this._tabListInner.nativeElement.scrollWidth-this._tabListContainer.nativeElement.offsetWidth||0}_alignInkBarToSelectedTab(){const e=this._items&&this._items.length?this._items.toArray()[this.selectedIndex]:null,i=e?e.elementRef.nativeElement:null;i?this._inkBar.alignToElement(i):this._inkBar.hide()}_stopInterval(){this._stopScrolling.next()}_handlePaginatorPress(e,i){i&&null!=i.button&&0!==i.button||(this._stopInterval(),Ls(650,100).pipe(ln(Dr(this._stopScrolling,this._destroyed))).subscribe(()=>{const{maxScrollDistance:o,distance:r}=this._scrollHeader(e);(0===r||r>=o)&&this._stopInterval()}))}_scrollTo(e){if(this.disablePagination)return{maxScrollDistance:0,distance:0};const i=this._getMaxScrollDistance();return this._scrollDistance=Math.max(0,Math.min(i,e)),this._scrollDistanceChanged=!0,this._checkScrollingControls(),{maxScrollDistance:i,distance:this._scrollDistance}}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,inputs:{disablePagination:[2,"disablePagination","disablePagination",Te],selectedIndex:[2,"selectedIndex","selectedIndex",_r]},outputs:{selectFocusedIndex:"selectFocusedIndex",indexFocused:"indexFocused"}})}return t})(),pMe=(()=>{class t extends fMe{_items;_tabListContainer;_tabList;_tabListInner;_nextPaginator;_previousPaginator;_inkBar;ariaLabel;ariaLabelledby;disableRipple=!1;ngAfterContentInit(){this._inkBar=new cMe(this._items),super.ngAfterContentInit()}_itemSelected(e){e.preventDefault()}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275cmp=ae({type:t,selectors:[["mat-tab-header"]],contentQueries:function(i,o,r){if(1&i&&Ds(r,iH,4),2&i){let s;fe(s=pe())&&(o._items=s)}},viewQuery:function(i,o){if(1&i&&st($Se,7)(WSe,7)(GSe,7)(qSe,5)(KSe,5),2&i){let r;fe(r=pe())&&(o._tabListContainer=r.first),fe(r=pe())&&(o._tabList=r.first),fe(r=pe())&&(o._tabListInner=r.first),fe(r=pe())&&(o._nextPaginator=r.first),fe(r=pe())&&(o._previousPaginator=r.first)}},hostAttrs:[1,"mat-mdc-tab-header"],hostVars:4,hostBindings:function(i,o){2&i&&ve("mat-mdc-tab-header-pagination-controls-enabled",o._showPaginationControls)("mat-mdc-tab-header-rtl","rtl"==o._getLayoutDirection())},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],disableRipple:[2,"disableRipple","disableRipple",Te]},features:[_e],ngContentSelectors:SM,decls:13,vars:10,consts:[["previousPaginator",""],["tabListContainer",""],["tabList",""],["tabListInner",""],["nextPaginator",""],["mat-ripple","",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-before",3,"click","mousedown","touchend","matRippleDisabled"],[1,"mat-mdc-tab-header-pagination-chevron"],[1,"mat-mdc-tab-label-container",3,"keydown"],["role","tablist",1,"mat-mdc-tab-list",3,"cdkObserveContent"],[1,"mat-mdc-tab-labels"],["mat-ripple","",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-after",3,"mousedown","click","touchend","matRippleDisabled"]],template:function(i,o){1&i&&(xi(),h(0,"div",5,0),F("click",function(){return o._handlePaginatorClick("before")})("mousedown",function(s){return o._handlePaginatorPress("before",s)})("touchend",function(){return o._stopInterval()}),L(2,"div",6),u(),h(3,"div",7,1),F("keydown",function(s){return o._handleKeydown(s)}),h(5,"div",8,2),F("cdkObserveContent",function(){return o._onContentChanges()}),h(7,"div",9,3),Rt(9),u()()(),h(10,"div",10,4),F("mousedown",function(s){return o._handlePaginatorPress("after",s)})("click",function(){return o._handlePaginatorClick("after")})("touchend",function(){return o._stopInterval()}),L(12,"div",6),u()),2&i&&(ve("mat-mdc-tab-header-pagination-disabled",o._disableScrollBefore),C("matRippleDisabled",o._disableScrollBefore||o.disableRipple),c(3),ve("_mat-animation-noopable",o._animationsDisabled),c(2),We("aria-label",o.ariaLabel||null)("aria-labelledby",o.ariaLabelledby||null),c(5),ve("mat-mdc-tab-header-pagination-disabled",o._disableScrollAfter),C("matRippleDisabled",o._disableScrollAfter||o.disableRipple))},dependencies:[lu,Ede],styles:[".mat-mdc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mdc-tab-indicator .mdc-tab-indicator__content{transition-duration:var(--mat-tab-animation-duration, 250ms)}.mat-mdc-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;outline:0}.mat-mdc-tab-header-pagination::-moz-focus-inner{border:0}.mat-mdc-tab-header-pagination .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab-header-pagination-controls-enabled .mat-mdc-tab-header-pagination{display:flex}.mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after{padding-left:4px}.mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-pagination-after{padding-right:4px}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-mdc-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px;border-color:var(--mat-tab-pagination-icon-color, var(--mat-sys-on-surface))}.mat-mdc-tab-header-pagination-disabled{box-shadow:none;cursor:default;pointer-events:none}.mat-mdc-tab-header-pagination-disabled .mat-mdc-tab-header-pagination-chevron{opacity:.4}.mat-mdc-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-mdc-tab-list{transition:none}.mat-mdc-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1;border-bottom-style:solid;border-bottom-width:var(--mat-tab-divider-height, 1px);border-bottom-color:var(--mat-tab-divider-color, var(--mat-sys-surface-variant))}.mat-mdc-tab-group-inverted-header .mat-mdc-tab-label-container{border-bottom:none;border-top-style:solid;border-top-width:var(--mat-tab-divider-height, 1px);border-top-color:var(--mat-tab-divider-color, var(--mat-sys-surface-variant))}.mat-mdc-tab-labels{display:flex;flex:1 0 auto}[mat-align-tabs=center]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:flex-end}.cdk-drop-list .mat-mdc-tab-labels,.mat-mdc-tab-labels.cdk-drop-list{min-height:var(--mat-tab-container-height, 48px)}.mat-mdc-tab::before{margin:5px}@media(forced-colors: active){.mat-mdc-tab[aria-disabled=true]{color:GrayText}}\n"],encapsulation:2})}return t})();const mMe=new Z("MAT_TABS_CONFIG");let rH=(()=>{class t extends ic{_host=T(DM);_ngZone=T(Ce);_centeringSub=gt.EMPTY;_leavingSub=gt.EMPTY;constructor(){super()}ngOnInit(){super.ngOnInit(),this._centeringSub=this._host._beforeCentering.pipe(zn(this._host._isCenterPosition())).subscribe(e=>{this._host._content&&e&&!this.hasAttached()&&this._ngZone.run(()=>{Promise.resolve().then(),this.attach(this._host._content)})}),this._leavingSub=this._host._afterLeavingCenter.subscribe(()=>{this._host.preserveContent||this._ngZone.run(()=>this.detach())})}ngOnDestroy(){super.ngOnDestroy(),this._centeringSub.unsubscribe(),this._leavingSub.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matTabBodyHost",""]],features:[_e]})}return t})(),DM=(()=>{class t{_elementRef=T(Ne);_dir=T(kr,{optional:!0});_ngZone=T(Ce);_injector=T(Ue);_renderer=T(ei);_diAnimationsDisabled=hi();_eventCleanups;_initialized=!1;_fallbackTimer;_positionIndex;_dirChangeSubscription=gt.EMPTY;_position;_previousPosition;_onCentering=new ke;_beforeCentering=new ke;_afterLeavingCenter=new ke;_onCentered=new ke(!0);_portalHost;_contentElement;_content;animationDuration="500ms";preserveContent=!1;set position(e){this._positionIndex=e,this._computePositionAnimationState()}constructor(){if(this._dir){const e=T(Dt);this._dirChangeSubscription=this._dir.change.subscribe(i=>{this._computePositionAnimationState(i),e.markForCheck()})}}ngOnInit(){this._bindTransitionEvents(),"center"===this._position&&(this._setActiveClass(!0),Wi(()=>this._onCentering.emit(this._elementRef.nativeElement.clientHeight),{injector:this._injector})),this._initialized=!0}ngOnDestroy(){clearTimeout(this._fallbackTimer),this._eventCleanups?.forEach(e=>e()),this._dirChangeSubscription.unsubscribe()}_bindTransitionEvents(){this._ngZone.runOutsideAngular(()=>{const e=this._elementRef.nativeElement,i=o=>{o.target===this._contentElement?.nativeElement&&(this._elementRef.nativeElement.classList.remove("mat-tab-body-animating"),"transitionend"===o.type&&this._transitionDone())};this._eventCleanups=[this._renderer.listen(e,"transitionstart",o=>{o.target===this._contentElement?.nativeElement&&(this._elementRef.nativeElement.classList.add("mat-tab-body-animating"),this._transitionStarted())}),this._renderer.listen(e,"transitionend",i),this._renderer.listen(e,"transitioncancel",i)]})}_transitionStarted(){clearTimeout(this._fallbackTimer);const e="center"===this._position;this._beforeCentering.emit(e),e&&this._onCentering.emit(this._elementRef.nativeElement.clientHeight)}_transitionDone(){"center"===this._position?this._onCentered.emit():"center"===this._previousPosition&&this._afterLeavingCenter.emit()}_setActiveClass(e){this._elementRef.nativeElement.classList.toggle("mat-mdc-tab-body-active",e)}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_isCenterPosition(){return 0===this._positionIndex}_computePositionAnimationState(e=this._getLayoutDirection()){this._previousPosition=this._position,this._position=this._positionIndex<0?"ltr"==e?"left":"right":this._positionIndex>0?"ltr"==e?"right":"left":"center",this._animationsDisabled()?this._simulateTransitionEvents():this._initialized&&("center"===this._position||"center"===this._previousPosition)&&(clearTimeout(this._fallbackTimer),this._fallbackTimer=this._ngZone.runOutsideAngular(()=>setTimeout(()=>this._simulateTransitionEvents(),100)))}_simulateTransitionEvents(){this._transitionStarted(),Wi(()=>this._transitionDone(),{injector:this._injector})}_animationsDisabled(){return this._diAnimationsDisabled||"0ms"===this.animationDuration||"0s"===this.animationDuration}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-tab-body"]],viewQuery:function(i,o){if(1&i&&st(rH,5)(YSe,5),2&i){let r;fe(r=pe())&&(o._portalHost=r.first),fe(r=pe())&&(o._contentElement=r.first)}},hostAttrs:[1,"mat-mdc-tab-body"],hostVars:1,hostBindings:function(i,o){2&i&&We("inert","center"===o._position?null:"")},inputs:{_content:[0,"content","_content"],animationDuration:"animationDuration",preserveContent:"preserveContent",position:"position"},outputs:{_onCentering:"_onCentering",_beforeCentering:"_beforeCentering",_onCentered:"_onCentered"},decls:3,vars:6,consts:[["content",""],["cdkScrollable","",1,"mat-mdc-tab-body-content"],["matTabBodyHost",""]],template:function(i,o){1&i&&(h(0,"div",1,0),rt(2,XSe,0,0,"ng-template",2),u()),2&i&&ve("mat-tab-body-content-left","left"===o._position)("mat-tab-body-content-right","right"===o._position)("mat-tab-body-content-can-animate","center"===o._position||"center"===o._previousPosition)},dependencies:[rH,WL],styles:[".mat-mdc-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-mdc-tab-body.mat-mdc-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-mdc-tab-group.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body.mat-mdc-tab-body-active{overflow-y:hidden}.mat-mdc-tab-body-content{height:100%;overflow:auto;transform:none;visibility:hidden}.mat-tab-body-animating>.mat-mdc-tab-body-content,.mat-mdc-tab-body-active>.mat-mdc-tab-body-content{visibility:visible}.mat-tab-body-animating>.mat-mdc-tab-body-content{min-height:1px}.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body-content{overflow:hidden}.mat-tab-body-content-can-animate{transition:transform var(--mat-tab-animation-duration) 1ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable .mat-tab-body-content-can-animate{transition:none}.mat-tab-body-content-left{transform:translate3d(-100%, 0, 0)}.mat-tab-body-content-right{transform:translate3d(100%, 0, 0)}\n"],encapsulation:2})}return t})(),gMe=(()=>{class t{_elementRef=T(Ne);_changeDetectorRef=T(Dt);_ngZone=T(Ce);_tabsSubscription=gt.EMPTY;_tabLabelSubscription=gt.EMPTY;_tabBodySubscription=gt.EMPTY;_diAnimationsDisabled=hi();_allTabs;_tabBodies;_tabBodyWrapper;_tabHeader;_tabs=new ud;_indexToSelect=0;_lastFocusedTabIndex=null;_tabBodyWrapperHeight=0;color;get fitInkBarToContent(){return this._fitInkBarToContent}set fitInkBarToContent(e){this._fitInkBarToContent=e,this._changeDetectorRef.markForCheck()}_fitInkBarToContent=!1;stretchTabs=!0;alignTabs=null;dynamicHeight=!1;get selectedIndex(){return this._selectedIndex}set selectedIndex(e){this._indexToSelect=isNaN(e)?null:e}_selectedIndex=null;headerPosition="above";get animationDuration(){return this._animationDuration}set animationDuration(e){const i=e+"";this._animationDuration=/^\d+$/.test(i)?e+"ms":i}_animationDuration;get contentTabIndex(){return this._contentTabIndex}set contentTabIndex(e){this._contentTabIndex=isNaN(e)?null:e}_contentTabIndex=null;disablePagination=!1;disableRipple=!1;preserveContent=!1;get backgroundColor(){return this._backgroundColor}set backgroundColor(e){const i=this._elementRef.nativeElement.classList;i.remove("mat-tabs-with-background",`mat-background-${this.backgroundColor}`),e&&i.add("mat-tabs-with-background",`mat-background-${e}`),this._backgroundColor=e}_backgroundColor;ariaLabel;ariaLabelledby;selectedIndexChange=new ke;focusChange=new ke;animationDone=new ke;selectedTabChange=new ke(!0);_groupId;_isServer=!T(Zn).isBrowser;constructor(){const e=T(mMe,{optional:!0});this._groupId=T(si).getId("mat-tab-group-"),this.animationDuration=e&&e.animationDuration?e.animationDuration:"500ms",this.disablePagination=!(!e||null==e.disablePagination)&&e.disablePagination,this.dynamicHeight=!(!e||null==e.dynamicHeight)&&e.dynamicHeight,null!=e?.contentTabIndex&&(this.contentTabIndex=e.contentTabIndex),this.preserveContent=!!e?.preserveContent,this.fitInkBarToContent=!(!e||null==e.fitInkBarToContent)&&e.fitInkBarToContent,this.stretchTabs=!e||null==e.stretchTabs||e.stretchTabs,this.alignTabs=e&&null!=e.alignTabs?e.alignTabs:null}ngAfterContentChecked(){const e=this._indexToSelect=this._clampTabIndex(this._indexToSelect);if(this._selectedIndex!=e){const i=null==this._selectedIndex;if(!i){this.selectedTabChange.emit(this._createChangeEvent(e));const o=this._tabBodyWrapper.nativeElement;o.style.minHeight=o.clientHeight+"px"}Promise.resolve().then(()=>{this._tabs.forEach((o,r)=>o.isActive=r===e),i||(this.selectedIndexChange.emit(e),this._tabBodyWrapper.nativeElement.style.minHeight="")})}this._tabs.forEach((i,o)=>{i.position=o-e,null!=this._selectedIndex&&0==i.position&&!i.origin&&(i.origin=e-this._selectedIndex)}),this._selectedIndex!==e&&(this._selectedIndex=e,this._lastFocusedTabIndex=null,this._changeDetectorRef.markForCheck())}ngAfterContentInit(){this._subscribeToAllTabChanges(),this._subscribeToTabLabels(),this._tabsSubscription=this._tabs.changes.subscribe(()=>{const e=this._clampTabIndex(this._indexToSelect);if(e===this._selectedIndex){const i=this._tabs.toArray();let o;for(let r=0;r{i[e].isActive=!0,this.selectedTabChange.emit(this._createChangeEvent(e))})}this._changeDetectorRef.markForCheck()})}ngAfterViewInit(){this._tabBodySubscription=this._tabBodies.changes.subscribe(()=>this._bodyCentered(!0))}_subscribeToAllTabChanges(){this._allTabs.changes.pipe(zn(this._allTabs)).subscribe(e=>{this._tabs.reset(e.filter(i=>i._closestTabGroup===this||!i._closestTabGroup)),this._tabs.notifyOnChanges()})}ngOnDestroy(){this._tabs.destroy(),this._tabsSubscription.unsubscribe(),this._tabLabelSubscription.unsubscribe(),this._tabBodySubscription.unsubscribe()}realignInkBar(){this._tabHeader&&this._tabHeader._alignInkBarToSelectedTab()}updatePagination(){this._tabHeader&&this._tabHeader.updatePagination()}focusTab(e){const i=this._tabHeader;i&&(i.focusIndex=e)}_focusChanged(e){this._lastFocusedTabIndex=e,this.focusChange.emit(this._createChangeEvent(e))}_createChangeEvent(e){const i=new _Me;return i.index=e,this._tabs&&this._tabs.length&&(i.tab=this._tabs.toArray()[e]),i}_subscribeToTabLabels(){this._tabLabelSubscription&&this._tabLabelSubscription.unsubscribe(),this._tabLabelSubscription=Dr(...this._tabs.map(e=>e._stateChanges)).subscribe(()=>this._changeDetectorRef.markForCheck())}_clampTabIndex(e){return Math.min(this._tabs.length-1,Math.max(e||0,0))}_getTabLabelId(e,i){return e.id||`${this._groupId}-label-${i}`}_getTabContentId(e){return`${this._groupId}-content-${e}`}_setTabBodyWrapperHeight(e){if(!this.dynamicHeight||!this._tabBodyWrapperHeight)return void(this._tabBodyWrapperHeight=e);const i=this._tabBodyWrapper.nativeElement;i.style.height=this._tabBodyWrapperHeight+"px",this._tabBodyWrapper.nativeElement.offsetHeight&&(i.style.height=e+"px")}_removeTabBodyWrapperHeight(){const e=this._tabBodyWrapper.nativeElement;this._tabBodyWrapperHeight=e.clientHeight,e.style.height="",this._ngZone.run(()=>this.animationDone.emit())}_handleClick(e,i,o){i.focusIndex=o,e.disabled||(this.selectedIndex=o)}_getTabIndex(e){return e===(this._lastFocusedTabIndex??this.selectedIndex)?0:-1}_tabFocusChanged(e,i){e&&"mouse"!==e&&"touch"!==e&&(this._tabHeader.focusIndex=i)}_bodyCentered(e){e&&this._tabBodies?.forEach((i,o)=>i._setActiveClass(o===this._selectedIndex))}_animationsDisabled(){return this._diAnimationsDisabled||"0"===this.animationDuration||"0ms"===this.animationDuration}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-tab-group"]],contentQueries:function(i,o,r){if(1&i&&Ds(r,tH,5),2&i){let s;fe(s=pe())&&(o._allTabs=s)}},viewQuery:function(i,o){if(1&i&&st(ZSe,5)(QSe,5)(DM,5),2&i){let r;fe(r=pe())&&(o._tabBodyWrapper=r.first),fe(r=pe())&&(o._tabHeader=r.first),fe(r=pe())&&(o._tabBodies=r)}},hostAttrs:[1,"mat-mdc-tab-group"],hostVars:11,hostBindings:function(i,o){2&i&&(We("mat-align-tabs",o.alignTabs),Ge("mat-"+(o.color||"primary")),Hl("--mat-tab-animation-duration",o.animationDuration),ve("mat-mdc-tab-group-dynamic-height",o.dynamicHeight)("mat-mdc-tab-group-inverted-header","below"===o.headerPosition)("mat-mdc-tab-group-stretch-tabs",o.stretchTabs))},inputs:{color:"color",fitInkBarToContent:[2,"fitInkBarToContent","fitInkBarToContent",Te],stretchTabs:[2,"mat-stretch-tabs","stretchTabs",Te],alignTabs:[0,"mat-align-tabs","alignTabs"],dynamicHeight:[2,"dynamicHeight","dynamicHeight",Te],selectedIndex:[2,"selectedIndex","selectedIndex",_r],headerPosition:"headerPosition",animationDuration:"animationDuration",contentTabIndex:[2,"contentTabIndex","contentTabIndex",_r],disablePagination:[2,"disablePagination","disablePagination",Te],disableRipple:[2,"disableRipple","disableRipple",Te],preserveContent:[2,"preserveContent","preserveContent",Te],backgroundColor:"backgroundColor",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"]},outputs:{selectedIndexChange:"selectedIndexChange",focusChange:"focusChange",animationDone:"animationDone",selectedTabChange:"selectedTabChange"},exportAs:["matTabGroup"],features:[dt([{provide:eH,useExisting:t}])],ngContentSelectors:SM,decls:9,vars:8,consts:[["tabHeader",""],["tabBodyWrapper",""],["tabNode",""],[3,"indexFocused","selectFocusedIndex","selectedIndex","disableRipple","disablePagination","aria-label","aria-labelledby"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-focus-indicator",3,"id","mdc-tab--active","class","disabled","fitInkBarToContent"],[1,"mat-mdc-tab-body-wrapper"],["role","tabpanel",3,"id","class","content","position","animationDuration","preserveContent"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-focus-indicator",3,"click","cdkFocusChange","id","disabled","fitInkBarToContent"],[1,"mdc-tab__ripple"],["mat-ripple","",1,"mat-mdc-tab-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mdc-tab__content"],[1,"mdc-tab__text-label"],[3,"cdkPortalOutlet"],["role","tabpanel",3,"_onCentered","_onCentering","_beforeCentering","id","content","position","animationDuration","preserveContent"]],template:function(i,o){1&i&&(xi(),h(0,"mat-tab-header",3,0),F("indexFocused",function(s){return o._focusChanged(s)})("selectFocusedIndex",function(s){return o.selectedIndex=s}),me(2,nMe,8,17,"div",4,Le),u(),x(4,iMe,1,0),h(5,"div",5,1),me(7,oMe,1,10,"mat-tab-body",6,Le),u()),2&i&&(C("selectedIndex",o.selectedIndex||0)("disableRipple",o.disableRipple)("disablePagination",o.disablePagination),D0("aria-label",o.ariaLabel)("aria-labelledby",o.ariaLabelledby),c(2),ge(o._tabs),c(2),k(o._isServer?4:-1),c(),ve("_mat-animation-noopable",o._animationsDisabled()),c(2),ge(o._tabs))},dependencies:[pMe,iH,Qde,lu,ic,DM],styles:['.mdc-tab{min-width:90px;padding:0 24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;z-index:1;touch-action:manipulation}.mdc-tab__content{display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__text-label{transition:150ms color linear;display:inline-block;line-height:1;z-index:2}.mdc-tab--active .mdc-tab__text-label{transition-delay:100ms}._mat-animation-noopable .mdc-tab__text-label{transition:none}.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator__content{transition:var(--mat-tab-animation-duration, 250ms) transform cubic-bezier(0.4, 0, 0.2, 1);transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:1}._mat-animation-noopable .mdc-tab-indicator__content,.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mat-mdc-tab-ripple.mat-mdc-tab-ripple{position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none}.mat-mdc-tab{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none;background:none;height:var(--mat-tab-container-height, 48px);font-family:var(--mat-tab-label-text-font, var(--mat-sys-title-small-font));font-size:var(--mat-tab-label-text-size, var(--mat-sys-title-small-size));letter-spacing:var(--mat-tab-label-text-tracking, var(--mat-sys-title-small-tracking));line-height:var(--mat-tab-label-text-line-height, var(--mat-sys-title-small-line-height));font-weight:var(--mat-tab-label-text-weight, var(--mat-sys-title-small-weight))}.mat-mdc-tab.mdc-tab{flex-grow:0}.mat-mdc-tab .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-indicator-color, var(--mat-sys-primary));border-top-width:var(--mat-tab-active-indicator-height, 2px);border-radius:var(--mat-tab-active-indicator-shape, 0)}.mat-mdc-tab:hover .mdc-tab__text-label{color:var(--mat-tab-inactive-hover-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab:focus .mdc-tab__text-label{color:var(--mat-tab-inactive-focus-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-active-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__ripple::before,.mat-mdc-tab.mdc-tab--active .mat-ripple-element{background-color:var(--mat-tab-active-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab__text-label{color:var(--mat-tab-active-hover-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-hover-indicator-color, var(--mat-sys-primary))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-active-focus-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-focus-indicator-color, var(--mat-sys-primary))}.mat-mdc-tab.mat-mdc-tab-disabled{opacity:.4;pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__content{pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple::before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element{background-color:var(--mat-tab-disabled-ripple-color, var(--mat-sys-on-surface-variant))}.mat-mdc-tab .mdc-tab__ripple::before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-inactive-label-text-color, var(--mat-sys-on-surface));display:inline-flex;align-items:center}.mat-mdc-tab .mdc-tab__content{position:relative;pointer-events:auto}.mat-mdc-tab:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab-group.mat-mdc-tab-group-stretch-tabs>.mat-mdc-tab-header .mat-mdc-tab{flex-grow:1}.mat-mdc-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-tab-background-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab__text-label{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-focus-indicator::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-focus-indicator::before{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab__ripple::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header{flex-direction:column-reverse}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header .mdc-tab-indicator__content--underline{align-self:flex-start}.mat-mdc-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable{transition:none !important;animation:none !important}\n'],encapsulation:2})}return t})();class _Me{index;tab}let bMe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ai]})}return t})(),vMe=(()=>{class t{constructor(e){this.dialog=e,this.tabNames=[""],this.selectedTab=0,this.tabChanged=new ke}ngOnDestroy(){this.tabChanged.complete()}showTabSelector(){const e=[];this.tabNames.forEach((i,o)=>{e.push({icon:o===this.selectedTab?"check":"",label:i})}),ho.openDialog(this.dialog,e,"node.logs.filter-title").afterClosed().subscribe(i=>{this.tabChanged.emit(i-1)})}static{this.\u0275fac=function(i){return new(i||t)(O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-tab-selector"]],inputs:{tabNames:"tabNames",selectedTab:"selectedTab"},outputs:{tabChanged:"tabChanged"},standalone:!1,decls:9,vars:4,consts:[[1,"top-dialog-button",3,"click"],[1,"top-dialog-button-content"],[1,"tab-name"],[1,"icon",3,"inline"],[1,"top-dialog-button-margin"]],template:function(i,o){1&i&&(h(0,"div",0),F("click",function(){return o.showTabSelector()}),h(1,"div",1)(2,"div",2)(3,"span"),p(4),_(5,"translate"),u()(),h(6,"mat-icon",3),p(7,"expand_more"),u()(),L(8,"div",4),u()),2&i&&(c(4),S(v(5,2,o.tabNames[o.selectedTab])),c(2),C("inline",!0))},dependencies:[Ae,we],styles:[".top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%]{display:flex}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .tab-name[_ngcontent-%COMP%]{flex-grow:1;margin-right:10px;align-self:center}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:20px;flex-shrink:0;align-self:center}"]})}}return t})();const yMe=["button"],CMe=["settingsButton"],wMe=["firstInput"],xMe=["tabGroup"],cs=t=>({"element-disabled":t}),sH=t=>({highlighted:t}),kMe=(t,n)=>({currentElementsRange:t,totalElements:n}),SMe=t=>({number:t});function MMe(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.vpn-socks-client-settings.remote-key-length-error")))}function DMe(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.vpn-socks-client-settings.remote-key-chars-error")))}function TMe(t,n){1&t&&L(0,"app-loading-indicator",15),2&t&&C("showWhite",!1)}function EMe(t,n){1&t&&(h(0,"div",16)(1,"mat-icon",20),p(2,"error"),u(),p(3),_(4,"translate"),u()),2&t&&(c(),C("inline",!0),c(2),D(" ",v(4,2,"apps.vpn-socks-client-settings.no-elements")," "))}function PMe(t,n){1&t&&(h(0,"div",24),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"apps.vpn-socks-client-settings.no-filter")," "))}function IMe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().$implicit[1])," ")}function OMe(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit[2]," ")}function AMe(t,n){if(1&t&&(h(0,"div",24)(1,"span"),p(2),_(3,"translate"),u(),x(4,IMe,2,3),x(5,OMe,1,1),u()),2&t){const e=n.$implicit;c(2),D("",v(3,3,e[0])," "),c(2),k(e[1]?4:-1),c(),k(e[2]?5:-1)}}function RMe(t,n){1&t&&(h(0,"div",16)(1,"mat-icon",20),p(2,"error"),u(),p(3),_(4,"translate"),u()),2&t&&(c(),C("inline",!0),c(2),D(" ",v(4,2,"apps.vpn-socks-client-settings.no-elements-for-filters")," "))}function FMe(t,n){if(1&t&&(h(0,"span",10),p(1),u()),2&t){const e=n.$implicit;C("ngClass",ie(2,sH,n.$index%2!=0)),c(),S(e)}}function NMe(t,n){if(1&t&&(h(0,"div",30),L(1,"div"),u()),2&t){const e=y(2).$implicit;c(),ao("background-image: url('assets/img/flags/"+e.country.toLocaleLowerCase()+".png');")}}function LMe(t,n){if(1&t&&(h(0,"span",10),p(1),u()),2&t){const e=n.$implicit;C("ngClass",ie(2,sH,n.$index%2!=0)),c(),S(e)}}function BMe(t,n){if(1&t&&(h(0,"div",24)(1,"span"),p(2),_(3,"translate"),u(),h(4,"span"),p(5,"\xa0 "),x(6,NMe,2,2,"div",30),me(7,LMe,2,4,"span",10,Le),u()()),2&t){const e=y().$implicit,i=y(2);c(2),S(v(3,2,"apps.vpn-socks-client-settings.location")),c(4),k(e.country?6:-1),c(),ge(i.getHighlightedTextParts(e.location,i.currentFilters.location))}}function VMe(t,n){if(1&t){const e=re();h(0,"div",18)(1,"button",26),F("click",function(){const o=V(e).$implicit;return H(y(2).saveChanges(o.pk,null,!1,o.location))}),h(2,"div",27)(3,"div",24)(4,"span"),p(5),_(6,"translate"),u(),h(7,"span"),p(8,"\xa0"),me(9,FMe,2,4,"span",10,Le),u()(),x(11,BMe,9,4,"div",24),u()(),h(12,"button",28),_(13,"translate"),F("click",function(){const o=V(e).$implicit;return H(y(2).copyPk(o.pk))}),h(14,"mat-icon",29),p(15,"filter_none"),u()()()}if(2&t){const e=n.$implicit,i=y(2);c(),C("ngClass",ie(9,cs,i.disableDismiss)),c(4),S(v(6,5,"apps.vpn-socks-client-settings.key")),c(4),ge(i.getHighlightedTextParts(e.pk,i.currentFilters.key)),c(2),k(e.location?11:-1),c(),C("matTooltip",v(13,7,"apps.vpn-socks-client-settings.copy-pk-info")),c(2),C("inline",!0)}}function HMe(t,n){if(1&t){const e=re();h(0,"button",21),F("click",function(){return V(e),H(y().changeFilters())}),h(1,"div",22)(2,"div",23)(3,"mat-icon",20),p(4,"filter_list"),u()(),h(5,"div"),x(6,PMe,3,3,"div",24),me(7,AMe,6,5,"div",24,Le),h(9,"div",25),p(10),_(11,"translate"),u()()()(),x(12,RMe,5,4,"div",16),me(13,VMe,16,11,"div",18,Le)}if(2&t){const e=y();c(3),C("inline",!0),c(3),k(0===e.currentFiltersTexts.length?6:-1),c(),ge(e.currentFiltersTexts),c(3),S(v(11,4,"apps.vpn-socks-client-settings.click-to-change")),c(2),k(0===e.filteredProxiesFromDiscovery.length?12:-1),c(),ge(e.proxiesFromDiscoveryToShow)}}function UMe(t,n){if(1&t){const e=re();h(0,"div",17)(1,"span"),p(2),_(3,"translate"),u(),h(4,"button",31),F("click",function(){return V(e),H(y().goToPreviousPage())}),h(5,"mat-icon"),p(6,"chevron_left"),u()(),h(7,"button",31),F("click",function(){return V(e),H(y().goToNextPage())}),h(8,"mat-icon"),p(9,"chevron_right"),u()()()}if(2&t){const e=y();c(2),S(ue(3,1,"apps.vpn-socks-client-settings.pagination-info",pt(4,kMe,e.currentRange,e.filteredProxiesFromDiscovery.length)))}}function zMe(t,n){if(1&t&&(h(0,"div")(1,"div",16)(2,"mat-icon",20),p(3,"error"),u(),p(4),_(5,"translate"),u()()),2&t){const e=y();c(2),C("inline",!0),c(2),D(" ",ue(5,2,"apps.vpn-socks-client-settings.no-history",ie(5,SMe,e.maxHistoryElements))," ")}}function jMe(t,n){1&t&&mr(0)}function $Me(t,n){1&t&&mr(0)}function WMe(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y(2).$implicit;c(),D(" ",e.note)}}function GMe(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"apps.vpn-socks-client-settings.note-entered-manually")))}function qMe(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y(4).$implicit;c(),D(" (",e.location,")")}}function KMe(t,n){if(1&t&&(h(0,"span"),p(1),_(2,"translate"),u(),x(3,qMe,2,1,"span")),2&t){const e=y(3).$implicit;c(),D(" ",v(2,2,"apps.vpn-socks-client-settings.note-obtained")),c(2),k(e.location?3:-1)}}function YMe(t,n){if(1&t&&(x(0,GMe,3,3,"span"),x(1,KMe,4,4)),2&t){const e=y(2).$implicit;k(e.enteredManually?0:-1),c(),k(e.enteredManually?-1:1)}}function XMe(t,n){if(1&t&&(h(0,"div",36)(1,"div",37)(2,"div",24)(3,"span"),p(4),_(5,"translate"),u(),h(6,"span"),p(7),u()(),h(8,"div",24)(9,"span"),p(10),_(11,"translate"),u(),x(12,WMe,2,1,"span"),x(13,YMe,2,2),u()(),h(14,"div",38)(15,"div",39)(16,"mat-icon",20),p(17,"add"),u()()()()),2&t){const e=y().$implicit;c(4),S(v(5,6,"apps.vpn-socks-client-settings.key")),c(3),D(" ",e.key),c(3),S(v(11,8,"apps.vpn-socks-client-settings.note")),c(2),k(e.note?12:-1),c(),k(e.note?-1:13),c(3),C("inline",!0)}}function ZMe(t,n){if(1&t){const e=re();h(0,"div",18)(1,"button",32),F("click",function(){const o=V(e).$implicit;return H(y().useFromHistory(o))}),rt(2,jMe,1,0,"ng-container",33),u(),h(3,"button",34),_(4,"translate"),F("click",function(){const o=V(e).$implicit;return H(y().changeNote(o))}),h(5,"mat-icon",29),p(6,"edit"),u()(),h(7,"button",34),_(8,"translate"),F("click",function(){const o=V(e).$implicit;return H(y().removeFromHistory(o.key))}),h(9,"mat-icon",29),p(10,"close"),u()(),h(11,"button",35),F("click",function(){const o=V(e).$implicit;return H(y().openHistoryOptions(o))}),rt(12,$Me,1,0,"ng-container",33),u(),rt(13,XMe,18,10,"ng-template",null,0,Ul),u()}if(2&t){const e=Un(14),i=y();c(),C("ngClass",ie(12,cs,i.disableDismiss)),c(),C("ngTemplateOutlet",e),c(),C("matTooltip",v(4,8,"apps.vpn-socks-client-settings.change-note")),c(2),C("inline",!0),c(2),C("matTooltip",v(8,10,"apps.vpn-socks-client-settings.remove-entry")),c(2),C("inline",!0),c(2),C("ngClass",ie(14,cs,i.disableDismiss)),c(),C("ngTemplateOutlet",e)}}function QMe(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.vpn-socks-client-settings.dns-error")))}function JMe(t,n){if(1&t&&(h(0,"mat-form-field",10)(1,"div",11)(2,"label",12),p(3),_(4,"translate"),u(),L(5,"input",40),u(),h(6,"mat-error"),x(7,QMe,3,3,"span"),u()(),h(8,"div",41)(9,"mat-checkbox",42),p(10),_(11,"translate"),h(12,"mat-icon",43),_(13,"translate"),p(14,"help"),u()()()),2&t){const e=y();C("ngClass",ie(13,cs,e.disableDismiss)),c(3),S(v(4,7,"apps.vpn-socks-client-settings.dns")),c(4),k(e.settingsForm.get("dns").valid?-1:7),c(2),C("ngClass",ie(15,cs,e.disableDismiss)),c(),D(" ",v(11,9,"apps.vpn-socks-client-settings.killswitch-check")," "),c(2),C("inline",!0)("matTooltip",v(13,11,"apps.vpn-socks-client-settings.killswitch-info"))}}function eDe(t,n){if(1&t&&(h(0,"mat-form-field",10)(1,"div",11)(2,"label",44),p(3),_(4,"translate"),u(),L(5,"input",45),u(),h(6,"mat-hint"),p(7),_(8,"translate"),u()(),h(9,"mat-form-field",10)(10,"div",11)(11,"label",44),p(12),_(13,"translate"),u(),L(14,"input",46),u(),h(15,"mat-hint"),p(16),_(17,"translate"),u()(),h(18,"mat-form-field",10)(19,"div",11)(20,"label",44),p(21),_(22,"translate"),u(),L(23,"input",47),u(),h(24,"mat-hint"),p(25),_(26,"translate"),u()(),h(27,"mat-form-field",10)(28,"div",11)(29,"label",44),p(30),_(31,"translate"),u(),L(32,"input",48),u(),h(33,"mat-hint"),p(34),_(35,"translate"),u()()),2&t){const e=y();C("ngClass",ie(28,cs,e.disableDismiss)),c(3),S(v(4,12,"apps.vpn-socks-client-settings.addr")),c(4),S(v(8,14,"apps.vpn-socks-client-settings.addr-hint")),c(2),C("ngClass",ie(30,cs,e.disableDismiss)),c(3),S(v(13,16,"apps.vpn-socks-client-settings.http")),c(4),S(v(17,18,"apps.vpn-socks-client-settings.http-hint")),c(2),C("ngClass",ie(32,cs,e.disableDismiss)),c(3),S(v(22,20,"apps.vpn-socks-client-settings.tries")),c(4),S(v(26,22,"apps.vpn-socks-client-settings.tries-hint")),c(2),C("ngClass",ie(34,cs,e.disableDismiss)),c(3),S(v(31,24,"apps.vpn-socks-client-settings.retry-time")),c(4),S(v(35,26,"apps.vpn-socks-client-settings.retry-time-hint"))}}function tDe(t,n){1&t&&(h(0,"div",19)(1,"mat-icon",20),p(2,"warning"),u(),p(3),_(4,"translate"),u()),2&t&&(c(),C("inline",!0),c(2),D(" ",v(4,2,"apps.vpn-socks-client-settings.settings-changed-alert")," "))}let nDe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.largeModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a,l,d,f){this.data=e,this.dialogRef=i,this.appsService=o,this.formBuilder=r,this.snackbarService=s,this.dialog=a,this.proxyDiscoveryService=l,this.clipboardService=d,this.storageService=f,this.socksHistoryStorageKey="SkysocksClientHistory_",this.vpnHistoryStorageKey="VpnClientHistory_",this.maxHistoryElements=10,this.maxElementsPerPage=10,this.tabLabels=[],this.currentTab=0,this.countriesFromDiscovery=new Set,this.loadingFromDiscovery=!0,this.numberOfPages=1,this.currentPage=1,this.currentRange="1 - 1",this.currentFilters=new Q6,this.currentFiltersTexts=[],this.configuringVpn=!1,this.initialSocksAddr="",this.initialSocksHTTP="",this.initialSocksTries="",this.initialSocksRetryTime="",this.initialKillswitchSetting=!1,this.initialDnsSetting="",this.working=!1,-1!==e.name.toLocaleLowerCase().indexOf("vpn")?(this.configuringVpn=!0,this.tabLabels=["apps.vpn-socks-client-settings.remote-visor-tab","apps.vpn-socks-client-settings.discovery-tab","apps.vpn-socks-client-settings.history-tab","apps.vpn-socks-client-settings.settings-tab"]):this.tabLabels=["apps.vpn-socks-client-settings.remote-visor-tab","apps.vpn-socks-client-settings.discovery-tab","apps.vpn-socks-client-settings.history-tab","apps.vpn-socks-client-settings.settings-tab"]}ngOnInit(){this.migrateDataToHvStorage(),this.discoverySubscription=this.proxyDiscoveryService.getServices(!this.configuringVpn).subscribe(o=>{this.proxiesFromDiscovery=o,this.proxiesFromDiscovery.forEach(r=>{r.country&&this.countriesFromDiscovery.add(r.country.toUpperCase())}),this.filterProxies(),this.loadingFromDiscovery=!1});const e=this.storageService.getDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey);this.history=e?JSON.parse(e):[];let i="";if(this.data.args&&this.data.args.length>0)for(let o=0;othis.firstInput.nativeElement.focus())}ngOnDestroy(){this.discoverySubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()}migrateDataToHvStorage(){const e=localStorage.getItem(this.socksHistoryStorageKey);e&&(this.storageService.setDataForHv(this.socksHistoryStorageKey,e),localStorage.removeItem(this.socksHistoryStorageKey));const i=localStorage.getItem(this.vpnHistoryStorageKey);i&&(this.storageService.setDataForHv(this.vpnHistoryStorageKey,i),localStorage.removeItem(this.vpnHistoryStorageKey))}get disableDismiss(){return this.button&&this.button.isLoading||this.settingsButton&&this.settingsButton.isLoading}tabChangeRequested(e){this.tabGroup.selectedIndex=e}tabIdexChanged(){this.currentTab=this.tabGroup.selectedIndex}validateIp(){if(this.settingsForm){const e=this.settingsForm.get("dns").value;return Ut.checkIfIpValidOrEmpty(e)?null:{invalid:!0}}return null}get settingsChanged(){return this.configuringVpn?this.initialKillswitchSetting!==this.settingsForm.get("killswitch").value||this.initialDnsSetting!==this.settingsForm.get("dns").value:this.initialSocksAddr!==(this.settingsForm.get("addr").value||"")||this.initialSocksHTTP!==(this.settingsForm.get("http").value||"")||String(this.initialSocksTries)!==String(this.settingsForm.get("tries").value||"")||String(this.initialSocksRetryTime)!==String(this.settingsForm.get("retryTime").value||"")}changeFilters(){const e=[];this.countriesFromDiscovery.forEach(o=>e.push(o)),USe.openDialog(this.dialog,{currentFilters:this.currentFilters,availableCountries:e}).afterClosed().subscribe(o=>{o&&(this.currentFilters=o,this.filterProxies())})}getHighlightedTextParts(e,i){if(!i)return[e];const o=e.toLowerCase(),r=i.toLowerCase();let s=!0,a=0;const l=[];for(;s;){const d=o.indexOf(r,a);-1===d?s=!1:(l.push(e.substring(a,d)),l.push(e.substring(d,d+i.length)),a=d+i.length)}return l.push(e.substring(a)),l}filterProxies(){this.filteredProxiesFromDiscovery=this.currentFilters.country||this.currentFilters.location||this.currentFilters.key?this.proxiesFromDiscovery.filter(e=>!(this.currentFilters.country&&(!e.country||!e.country.toUpperCase().includes(this.currentFilters.country.toUpperCase()))||this.currentFilters.location&&!e.location.toLowerCase().includes(this.currentFilters.location.toLowerCase())||this.currentFilters.key&&!e.address.toLowerCase().includes(this.currentFilters.key.toLowerCase()))):this.proxiesFromDiscovery,this.updateCurrentFilters(),this.updatePagination()}updateCurrentFilters(){if(this.currentFiltersTexts=[],this.currentFilters.country){const e=rs[this.currentFilters.country.toUpperCase()]?rs[this.currentFilters.country.toUpperCase()]:this.currentFilters.country.toUpperCase();this.currentFiltersTexts.push(["apps.vpn-socks-client-settings.filter-dialog.country","",e])}this.currentFilters.location&&this.currentFiltersTexts.push(["apps.vpn-socks-client-settings.filter-dialog.location","",this.currentFilters.location]),this.currentFilters.key&&this.currentFiltersTexts.push(["apps.vpn-socks-client-settings.filter-dialog.pub-key","",this.currentFilters.key])}updatePagination(){this.currentPage=1,this.numberOfPages=Math.ceil(this.filteredProxiesFromDiscovery.length/this.maxElementsPerPage),this.showCurrentPage()}goToNextPage(){this.currentPage>=this.numberOfPages||(this.currentPage+=1,this.showCurrentPage())}goToPreviousPage(){this.currentPage<=1||(this.currentPage-=1,this.showCurrentPage())}showCurrentPage(){this.proxiesFromDiscoveryToShow=this.filteredProxiesFromDiscovery.slice((this.currentPage-1)*this.maxElementsPerPage,this.currentPage*this.maxElementsPerPage),this.currentRange=(this.currentPage-1)*this.maxElementsPerPage+1+" - ",this.currentRange+=this.currentPage{1===o?this.useFromHistory(e):2===o?this.changeNote(e):3===o&&this.removeFromHistory(e.key)})}removeFromHistory(e){const o=Ut.createConfirmationDialog(this.dialog,"apps.vpn-socks-client-settings.remove-from-history-confirmation");o.componentInstance.operationAccepted.subscribe(()=>{this.history=this.history.filter(s=>s.key!==e);const r=JSON.stringify(this.history);this.storageService.setDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey,r),o.close()})}changeNote(e){OSe.openDialog(this.dialog,e.note).afterClosed().subscribe(i=>{if(i){i=i.substr(1,i.length-1),this.history.forEach(r=>{r.key===e.key&&(r.note=i)});const o=JSON.stringify(this.history);this.storageService.setDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey,o),i?this.snackbarService.showDone("apps.vpn-socks-client-settings.changes-made"):this.snackbarService.showWarning("apps.vpn-socks-client-settings.default-note-warning")}})}useFromHistory(e){this.saveChanges(e.key,null,e.enteredManually,e.location,e.note)}saveChanges(e=null,i=null,o=null,r=null,s=null){if(!this.form.valid&&!e||this.working)return;o=!e||o,i=e?i:this.form.get("password").value,e=e||this.form.get("pk").value;const l=Ut.createConfirmationDialog(this.dialog,"apps.vpn-socks-client-settings.change-key-confirmation");l.componentInstance.operationAccepted.subscribe(()=>{l.close(),this.continueSavingChanges(e,i,o,r,s)})}saveSettings(){if(this.working)return;let e;e=this.configuringVpn?{killswitch:this.settingsForm.get("killswitch").value,dns:this.settingsForm.get("dns").value}:{custom_setting:{addr:this.settingsForm.get("addr").value||"",http:this.settingsForm.get("http").value||"",tries:this.settingsForm.get("tries").value||"","retry-time":this.settingsForm.get("retryTime").value||""}},this.settingsButton.showLoading(!1),this.button.showLoading(!1),this.working=!0,this.operationSubscription=this.appsService.changeAppSettings(Me.getCurrentNodeKey(),this.data.name,e).subscribe(()=>{if(this.configuringVpn)this.initialKillswitchSetting=e.killswitch,this.initialDnsSetting=e.dns;else{const i=e.custom_setting||{};this.initialSocksAddr=i.addr,this.initialSocksHTTP=i.http,this.initialSocksTries=i.tries,this.initialSocksRetryTime=i["retry-time"]}this.snackbarService.showDone("apps.vpn-socks-client-settings.changes-made"),this.working=!1,this.settingsButton.reset(!1),this.button.reset(!1),Me.refreshCurrentDisplayedData()},i=>{this.working=!1,this.settingsButton.showError(!1),this.button.reset(!1),i=Ze(i),this.snackbarService.showError(i)})}copyPk(e){this.clipboardService.copy(e)?this.snackbarService.showDone("apps.vpn-socks-client-settings.copied-pk-info"):this.snackbarService.showError("apps.vpn-socks-client-settings.copy-pk-error")}continueSavingChanges(e,i,o,r,s){if(this.working)return;this.button.showLoading(!1),this.settingsButton&&this.settingsButton.showLoading(!1),this.working=!0;const a={pk:e};this.operationSubscription=this.appsService.changeAppSettings(Me.getCurrentNodeKey(),this.data.name,a).subscribe(()=>this.onServerDataChangeSuccess(e,!!i,o,r,s),l=>this.onServerDataChangeError(l))}onServerDataChangeSuccess(e,i,o,r,s){this.history=this.history.filter(d=>d.key!==e);const a={key:e,enteredManually:o};if(i&&(a.hasPassword=i),r&&(a.location=r),s&&(a.note=s),this.history=[a].concat(this.history),this.history.length>this.maxHistoryElements){const d=this.history.length-this.maxHistoryElements;this.history.splice(this.history.length-d,d)}this.form.get("pk").setValue(e);const l=JSON.stringify(this.history);this.storageService.setDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey,l),Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.vpn-socks-client-settings.changes-made"),this.working=!1,this.button.reset(!1),this.settingsButton&&this.settingsButton.reset(!1)}onServerDataChangeError(e){this.working=!1,this.button.showError(!1),this.settingsButton&&this.settingsButton.reset(!1),e=Ze(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt),O(Hs),O(Si),O(ot),O(Nt),O(zSe),O(ap),O(ri))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-skysocks-client-settings"]],viewQuery:function(i,o){if(1&i&&st(yMe,5)(CMe,5)(wMe,5)(xMe,5),2&i){let r;fe(r=pe())&&(o.button=r.first),fe(r=pe())&&(o.settingsButton=r.first),fe(r=pe())&&(o.firstInput=r.first),fe(r=pe())&&(o.tabGroup=r.first)}},standalone:!1,decls:45,vars:45,consts:[["content",""],["tabGroup",""],["firstInput",""],["button",""],["settingsButton",""],[3,"headline","dialog","disableDismiss","includeVerticalMargins","includeScrollableArea"],[3,"tabChanged","tabNames","selectedTab"],[3,"selectedIndexChange"],[3,"label"],[3,"formGroup"],[3,"ngClass"],[1,"field-container"],["for","remoteKey",1,"field-label"],["id","pk","formControlName","pk","maxlength","66","matInput",""],["color","primary",1,"float-right",3,"action","disabled"],[1,"loading-indicator",3,"showWhite"],[1,"info-text"],[1,"paginator"],[1,"d-flex"],[1,"settings-changed-warning"],[3,"inline"],["mat-button","",1,"list-button","grey-button-background","w-100",3,"click"],[1,"filter-button-content"],[1,"icon-area"],[1,"item"],[1,"blue-part"],["mat-button","",1,"list-button","grey-button-background","w-100",3,"click","ngClass"],[1,"button-content"],["mat-button","",1,"list-button","grey-button-background",3,"click","matTooltip"],[1,"option-button-icon",3,"inline"],[1,"flag-container"],["mat-icon-button","",1,"hard-grey-button-background",3,"click"],["mat-button","",1,"list-button","grey-button-background","w-100","d-none","d-md-inline",3,"click","ngClass"],[4,"ngTemplateOutlet"],["mat-button","",1,"list-button","grey-button-background","d-none","d-md-inline",3,"click","matTooltip"],["mat-button","",1,"list-button","grey-button-background","w-100","d-md-none",3,"click","ngClass"],[1,"button-content","d-flex"],[1,"full-size-area"],[1,"options-container"],[1,"small-button","d-md-none"],["formControlName","dns","maxlength","15","matInput",""],[1,"main-theme","settings-option"],["color","primary","formControlName","killswitch",3,"ngClass"],[1,"help-icon",3,"inline","matTooltip"],[1,"field-label"],["formControlName","addr","maxlength","64","matInput","","placeholder","127.0.0.1:1080"],["formControlName","http","maxlength","64","matInput","","placeholder","127.0.0.1:8080"],["formControlName","tries","maxlength","5","matInput","","type","number","min","1","placeholder","3"],["formControlName","retryTime","maxlength","5","matInput","","type","number","min","0","placeholder","5"]],template:function(i,o){1&i&&(h(0,"app-dialog",5),_(1,"translate"),h(2,"app-tab-selector",6),F("tabChanged",function(s){return o.tabChangeRequested(s)}),u(),h(3,"mat-dialog-content",null,0)(5,"mat-tab-group",7,1),F("selectedIndexChange",function(){return o.tabIdexChanged()}),h(7,"mat-tab",8),_(8,"translate"),h(9,"form",9)(10,"mat-form-field",10)(11,"div",11)(12,"label",12),p(13),_(14,"translate"),u(),L(15,"input",13,2),u(),h(17,"mat-error"),x(18,MMe,3,3,"span")(19,DMe,3,3,"span"),u()(),h(20,"app-button",14,3),F("action",function(){return o.saveChanges()}),p(22),_(23,"translate"),u()()(),h(24,"mat-tab",8),_(25,"translate"),x(26,TMe,1,1,"app-loading-indicator",15),x(27,EMe,5,4,"div",16),x(28,HMe,15,6),x(29,UMe,10,7,"div",17),u(),h(30,"mat-tab",8),_(31,"translate"),x(32,zMe,6,7,"div"),me(33,ZMe,15,16,"div",18,Le),u(),h(35,"mat-tab",8),_(36,"translate"),h(37,"form",9),x(38,JMe,15,17)(39,eDe,36,36),x(40,tDe,5,4,"div",19),h(41,"app-button",14,4),F("action",function(){return o.saveSettings()}),p(43),_(44,"translate"),u()()()()()()),2&i&&(C("headline",v(1,27,"apps.vpn-socks-client-settings."+(o.configuringVpn?"vpn-title":"socks-title")))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss)("includeVerticalMargins",!1)("includeScrollableArea",!1),c(2),C("tabNames",o.tabLabels)("selectedTab",o.currentTab),c(5),C("label",v(8,29,o.tabLabels[0])),c(2),C("formGroup",o.form),c(),C("ngClass",ie(43,cs,o.disableDismiss)),c(3),S(v(14,31,"apps.vpn-socks-client-settings.public-key")),c(5),k(o.form.get("pk").hasError("pattern")?19:18),c(2),C("disabled",!o.form.valid||o.working),c(2),D(" ",v(23,33,"apps.vpn-socks-client-settings.save")," "),c(2),C("label",v(25,35,o.tabLabels[1])),c(2),k(o.loadingFromDiscovery?26:-1),c(),k(o.loadingFromDiscovery||0!==o.proxiesFromDiscovery.length?-1:27),c(),k(!o.loadingFromDiscovery&&o.proxiesFromDiscovery.length>0?28:-1),c(),k(o.numberOfPages>1?29:-1),c(),C("label",v(31,37,o.tabLabels[2])),c(2),k(0===o.history.length?32:-1),c(),ge(o.history),c(2),C("label",v(36,39,o.tabLabels[3])),c(2),C("formGroup",o.settingsForm),c(),k(o.configuringVpn?38:39),c(2),k(o.settingsChanged?40:-1),c(),C("disabled",!o.settingsForm.valid||!o.settingsChanged||o.working),c(2),D(" ",v(44,41,"apps.vpn-socks-client-settings.save-settings")," "))},dependencies:[Ft,Wd,kn,Qt,Oa,Jt,xn,Bi,gc,sn,_n,au,dn,sp,Aa,On,tH,gMe,Ht,Yo,Ae,Et,Fo,Mi,Sn,Qr,vMe,we],styles:["mat-tab-header{border-bottom:solid 1px rgba(0,0,0,.12)}@media(max-width:767px){ mat-tab-header{display:none!important}}app-tab-selector[_ngcontent-%COMP%]{display:none}@media(max-width:767px){app-tab-selector[_ngcontent-%COMP%]{display:block!important}}form[_ngcontent-%COMP%]{margin-top:15px}.info-text[_ngcontent-%COMP%]{margin-top:20px;margin-bottom:2px;text-align:center;color:#202226}.info-text[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:5px}.loading-indicator[_ngcontent-%COMP%]{height:100px}.password-history-warning[_ngcontent-%COMP%]{font-size:.7rem;opacity:.7;position:relative;top:-5px}.list-button[_ngcontent-%COMP%]{border-bottom:solid 1px rgba(0,0,0,.12);height:auto;justify-content:left}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%]{padding:15px 0;white-space:normal;line-height:1.3;color:#202226;text-align:left;display:flex;font-size:.8rem;word-break:break-word}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .icon-area[_ngcontent-%COMP%]{font-size:20px;margin-right:15px;color:#999;opacity:.4;align-self:center}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{margin:4px 0}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type{color:#999}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .blue-part[_ngcontent-%COMP%]{color:#215f9e}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%]{text-align:left;padding:15px 0;white-space:normal}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .full-size-area[_ngcontent-%COMP%]{flex-grow:1}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{line-height:1.3;margin:4px 0;font-size:.8rem;color:#202226;word-break:break-all}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]:first-of-type{color:#999}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .highlighted[_ngcontent-%COMP%]{background-color:#ff0}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .options-container[_ngcontent-%COMP%]{flex-shrink:0;margin-left:5px;text-align:right;line-height:1}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .options-container[_ngcontent-%COMP%] .small-button[_ngcontent-%COMP%]{width:24px;height:24px;line-height:14px;font-size:14px;margin-left:5px}.list-button[_ngcontent-%COMP%] .option-button-icon[_ngcontent-%COMP%]{font-size:14px;margin:0!important;overflow:visible!important}.paginator[_ngcontent-%COMP%]{float:right;margin-top:15px;display:flex;align-items:center}@media(max-width:767px){.paginator[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{font-size:.7rem}}.paginator[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-left:5px;display:flex}.settings-option[_ngcontent-%COMP%]{margin-top:20px}.settings-option[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{margin-bottom:15px}.settings-changed-warning[_ngcontent-%COMP%]{font-size:.7rem;opacity:.7;position:relative}"]})}}return t})();const iDe=["button"],oDe=t=>({name:t}),aH=t=>({"element-disabled":t}),lH=t=>({number:t});function rDe(t,n){if(1&t){const e=re();zr(0,4),h(1,"div",7)(2,"mat-form-field",8)(3,"div",9)(4,"label",10),p(5),_(6,"translate"),u(),L(7,"input",11),u()(),h(8,"mat-form-field",8)(9,"div",9)(10,"label",12),p(11),_(12,"translate"),u(),L(13,"input",13),u()(),h(14,"button",14),_(15,"translate"),F("click",function(){const o=V(e).$index;return H(y().removeSetting(o))}),h(16,"mat-icon",15),p(17,"close"),u()()(),pr()}if(2&t){const e=n.$index,i=y();c(),C("formGroupName",e),c(),C("ngClass",ie(15,aH,i.disableDismiss)),c(3),S(ue(6,7,"apps.user-app-settings.name",ie(17,lH,e+1))),c(3),C("ngClass",ie(19,aH,i.disableDismiss)),c(3),S(ue(12,10,"apps.user-app-settings.value",ie(21,lH,e+1))),c(3),C("matTooltip",v(15,13,"apps.user-app-settings.remove")),c(2),C("inline",!0)}}let sDe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.appsService=i,this.formBuilder=o,this.dialogRef=r,this.snackbarService=s,this.dialog=a,this.appName="",this.appName=e.name}ngOnInit(){if(this.form=this.formBuilder.group({settings:this.formBuilder.array([])}),this.data.args&&this.data.args.length>0)for(let e=0;e{let s=r.get("name").value,a=r.get("value").value;s=s&&s.trim(),a=a&&a.trim(),s?(o[s]=a,i+=1):e=!0}),e||0===i){const s=Ut.createConfirmationDialog(this.dialog,"apps.user-app-settings."+(0===i?"empty-confirmation":"invalid-confirmation"));s.componentInstance.operationAccepted.subscribe(()=>{s.close(),this.continueSavingChanges(o)})}else this.continueSavingChanges(o)}continueSavingChanges(e){this.button.showLoading();const i={custom_setting:e};this.operationSubscription=this.appsService.changeAppSettings(Me.getCurrentNodeKey(),this.data.name,i).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)})}onSuccess(){Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.user-app-settings.changes-made"),this.dialogRef.close()}onError(e){this.button.showError(),e=Ze(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Hs),O(Si),O(Zt),O(ot),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-user-app-settings"]],viewQuery:function(i,o){if(1&i&&st(iDe,5),2&i){let r;fe(r=pe())&&(o.button=r.first)}},standalone:!1,decls:16,vars:19,consts:[["button",""],[3,"headline","dialog","disableDismiss"],[1,"info-container"],[3,"formGroup"],["formArrayName","settings"],[1,"add-setting",3,"click"],["color","primary",1,"float-right",3,"action","disabled"],[1,"settings-row",3,"formGroupName"],[3,"ngClass"],[1,"field-container"],["for","name",1,"field-label"],["id","name","formControlName","name","matInput",""],["for","value",1,"field-label"],["id","value","formControlName","value","matInput",""],["mat-button","",1,"transparent-button",3,"click","matTooltip"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"div",2),p(3),_(4,"translate"),u(),h(5,"form",3),me(6,rDe,18,23,"ng-container",4,Le),u(),h(8,"div")(9,"a",5),F("click",function(){return o.addSetting()}),p(10),_(11,"translate"),u()(),h(12,"app-button",6,0),F("action",function(){return o.saveChanges()}),p(14),_(15,"translate"),u()()),2&i&&(C("headline",ue(1,8,"apps.user-app-settings.title",ie(17,oDe,o.appName)))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),c(3),S(v(4,11,"apps.user-app-settings.info")),c(2),C("formGroup",o.form),c(),ge(o.settingsControls),c(4),D("+ ",v(11,13,"apps.user-app-settings.add")),c(2),C("disabled",!o.form.valid),c(2),D(" ",v(15,15,"apps.user-app-settings.save")," "))},dependencies:[Ft,kn,Qt,Jt,xn,sn,_n,pc,_u,dn,On,Ht,Ae,Et,Mi,Sn,we],styles:[".info-container[_ngcontent-%COMP%]{margin-bottom:10px}.settings-row[_ngcontent-%COMP%]{display:flex}mat-form-field[_ngcontent-%COMP%]{flex-grow:1;margin-right:10px}button[_ngcontent-%COMP%]{flex-shrink:0;width:50px;padding:0!important;align-self:center;border-radius:10px}button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin:0!important}.add-setting[_ngcontent-%COMP%]{color:#215f9e!important;cursor:pointer}"]})}}return t})();const aDe=["button"],ir=t=>({"element-disabled":t});let lDe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.appsService=i,this.formBuilder=o,this.dialogRef=r,this.snackbarService=s,this.dialog=a}ngOnInit(){if(this.form=this.formBuilder.group({localhostOnly:[!0],port:["",Se.compose([Se.required,Se.min(1025),Se.max(65536)])],skynet:[!0],dmsg:[!0],persist:[!1],persistMaxSize:["",Se.pattern("^[0-9]*$")],persistPerPeerRate:["",Se.pattern("^[0-9]*$")],persistPerPeerCap:["",Se.pattern("^[0-9]*$")],persistTotalCap:["",Se.pattern("^[0-9]*$")],persistTtl:["",Se.pattern("^[0-9]*$")],persistSeed:["",Se.pattern("^[0-9]*$")],pairEnable:[!1]}),this.formSubscription=this.form.get("localhostOnly").valueChanges.subscribe(e=>{if(!e){this.form.get("localhostOnly").setValue(!0);const i=Ut.createConfirmationDialog(this.dialog,"apps.skychat-settings.non-localhost-confirmation");i.componentInstance.operationAccepted.subscribe(()=>{i.componentInstance.closeModal(),this.form.get("localhostOnly").setValue(!1,{emitEvent:!1})})}}),this.data.args&&this.data.args.length>0)for(let e=0;e=0?"true"===e.slice(o+1).toLowerCase():"true"!==i&&"false"!==i||"true"===i}ngOnDestroy(){this.formSubscription&&this.formSubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()}get disableDismiss(){return!!this.button&&this.button.isLoading}saveChanges(){if(!this.form.valid||this.button.disabled)return;this.button.showLoading();const e={address:(this.form.get("localhostOnly").value?":":"*:")+this.form.get("port").value},i={skynet:this.form.get("skynet").value?"true":"false",dmsg:this.form.get("dmsg").value?"true":"false",persist:this.form.get("persist").value?"true":"false","pair-enable":this.form.get("pairEnable").value?"true":"false"},o=(r,s)=>{const a=this.form.get(s).value;""!==a&&null!=a&&(i[r]=String(a))};o("persist-max-size","persistMaxSize"),o("persist-per-peer-rate","persistPerPeerRate"),o("persist-per-peer-cap","persistPerPeerCap"),o("persist-total-cap","persistTotalCap"),o("persist-ttl","persistTtl"),o("persist-seed","persistSeed"),e.custom_setting=i,this.operationSubscription=this.appsService.changeAppSettings(Me.getCurrentNodeKey(),this.data.name,e).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)})}onSuccess(){Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.skychat-settings.changes-made"),this.dialogRef.close()}onError(e){this.button.showError(),e=Ze(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Hs),O(Si),O(Zt),O(ot),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-skychat-settings"]],viewQuery:function(i,o){if(1&i&&st(aDe,5),2&i){let r;fe(r=pe())&&(o.button=r.first)}},standalone:!1,decls:120,vars:135,consts:[["button",""],[3,"headline","dialog","disableDismiss"],[3,"formGroup"],[1,"sk-section-title"],[3,"ngClass"],[1,"field-container"],["for","localhostOnly",1,"field-label"],["formControlName","localhostOnly"],[3,"value"],["for","port",1,"field-label"],["formControlName","port","type","number","matInput",""],[1,"settings-option"],["color","primary","formControlName","skynet",3,"ngClass"],[1,"help-icon",3,"inline","matTooltip"],["color","primary","formControlName","dmsg",3,"ngClass"],[1,"sk-section-help"],["color","primary","formControlName","persist",3,"ngClass"],[1,"field-label"],["formControlName","persistMaxSize","type","number","min","1","matInput","","placeholder","4096"],["formControlName","persistPerPeerRate","type","number","min","0","matInput","","placeholder","20"],["formControlName","persistPerPeerCap","type","number","min","0","matInput","","placeholder","500"],["formControlName","persistTotalCap","type","number","min","1","matInput","","placeholder","10"],["formControlName","persistTtl","type","number","min","0","matInput","","placeholder","30"],["formControlName","persistSeed","type","number","min","0","matInput","","placeholder","50"],["color","primary","formControlName","pairEnable",3,"ngClass"],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2)(3,"h4",3),p(4),_(5,"translate"),u(),h(6,"mat-form-field",4)(7,"div",5)(8,"label",6),p(9),_(10,"translate"),u(),h(11,"mat-select",7)(12,"mat-option",8),p(13),_(14,"translate"),u(),h(15,"mat-option",8),p(16),_(17,"translate"),u()()()(),h(18,"mat-form-field",4)(19,"div",5)(20,"label",9),p(21),_(22,"translate"),u(),L(23,"input",10),u(),h(24,"mat-error")(25,"span"),p(26),_(27,"translate"),u()()(),h(28,"div",11)(29,"mat-checkbox",12),p(30),_(31,"translate"),h(32,"mat-icon",13),_(33,"translate"),p(34,"help"),u()()(),h(35,"div",11)(36,"mat-checkbox",14),p(37),_(38,"translate"),h(39,"mat-icon",13),_(40,"translate"),p(41,"help"),u()()(),h(42,"h4",3),p(43),_(44,"translate"),u(),h(45,"p",15),p(46),_(47,"translate"),u(),h(48,"div",11)(49,"mat-checkbox",16),p(50),_(51,"translate"),u()(),h(52,"mat-form-field",4)(53,"div",5)(54,"label",17),p(55),_(56,"translate"),u(),L(57,"input",18),u(),h(58,"mat-hint"),p(59),_(60,"translate"),u()(),h(61,"mat-form-field",4)(62,"div",5)(63,"label",17),p(64),_(65,"translate"),u(),L(66,"input",19),u(),h(67,"mat-hint"),p(68),_(69,"translate"),u()(),h(70,"mat-form-field",4)(71,"div",5)(72,"label",17),p(73),_(74,"translate"),u(),L(75,"input",20),u(),h(76,"mat-hint"),p(77),_(78,"translate"),u()(),h(79,"mat-form-field",4)(80,"div",5)(81,"label",17),p(82),_(83,"translate"),u(),L(84,"input",21),u(),h(85,"mat-hint"),p(86),_(87,"translate"),u()(),h(88,"mat-form-field",4)(89,"div",5)(90,"label",17),p(91),_(92,"translate"),u(),L(93,"input",22),u(),h(94,"mat-hint"),p(95),_(96,"translate"),u()(),h(97,"mat-form-field",4)(98,"div",5)(99,"label",17),p(100),_(101,"translate"),u(),L(102,"input",23),u(),h(103,"mat-hint"),p(104),_(105,"translate"),u()(),h(106,"h4",3),p(107),_(108,"translate"),u(),h(109,"div",11)(110,"mat-checkbox",24),p(111),_(112,"translate"),h(113,"mat-icon",13),_(114,"translate"),p(115,"help"),u()()()(),h(116,"app-button",25,0),F("action",function(){return o.saveChanges()}),p(118),_(119,"translate"),u()()),2&i&&(C("headline",v(1,51,"apps.skychat-settings.title"))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),c(2),C("formGroup",o.form),c(2),S(v(5,53,"apps.skychat-settings.listener-section")),c(2),C("ngClass",ie(111,ir,o.disableDismiss)),c(3),S(v(10,55,"apps.skychat-settings.localhost-only")),c(3),C("value",!0),c(),S(v(14,57,"common.yes")),c(2),C("value",!1),c(),S(v(17,59,"common.no")),c(2),C("ngClass",ie(113,ir,o.disableDismiss)),c(3),S(v(22,61,"apps.skychat-settings.port")),c(5),S(v(27,63,"apps.skychat-settings.port-error")),c(3),C("ngClass",ie(115,ir,o.disableDismiss)),c(),D(" ",v(31,65,"apps.skychat-settings.skynet")," "),c(2),C("inline",!0)("matTooltip",v(33,67,"apps.skychat-settings.skynet-info")),c(4),C("ngClass",ie(117,ir,o.disableDismiss)),c(),D(" ",v(38,69,"apps.skychat-settings.dmsg")," "),c(2),C("inline",!0)("matTooltip",v(40,71,"apps.skychat-settings.dmsg-info")),c(4),S(v(44,73,"apps.skychat-settings.persistence-section")),c(3),S(v(47,75,"apps.skychat-settings.persistence-help")),c(3),C("ngClass",ie(119,ir,o.disableDismiss)),c(),D(" ",v(51,77,"apps.skychat-settings.persist-enable")," "),c(2),C("ngClass",ie(121,ir,o.disableDismiss)),c(3),S(v(56,79,"apps.skychat-settings.persist-max-size")),c(4),S(v(60,81,"apps.skychat-settings.persist-max-size-hint")),c(2),C("ngClass",ie(123,ir,o.disableDismiss)),c(3),S(v(65,83,"apps.skychat-settings.persist-per-peer-rate")),c(4),S(v(69,85,"apps.skychat-settings.persist-per-peer-rate-hint")),c(2),C("ngClass",ie(125,ir,o.disableDismiss)),c(3),S(v(74,87,"apps.skychat-settings.persist-per-peer-cap")),c(4),S(v(78,89,"apps.skychat-settings.persist-per-peer-cap-hint")),c(2),C("ngClass",ie(127,ir,o.disableDismiss)),c(3),S(v(83,91,"apps.skychat-settings.persist-total-cap")),c(4),S(v(87,93,"apps.skychat-settings.persist-total-cap-hint")),c(2),C("ngClass",ie(129,ir,o.disableDismiss)),c(3),S(v(92,95,"apps.skychat-settings.persist-ttl")),c(4),S(v(96,97,"apps.skychat-settings.persist-ttl-hint")),c(2),C("ngClass",ie(131,ir,o.disableDismiss)),c(3),S(v(101,99,"apps.skychat-settings.persist-seed")),c(4),S(v(105,101,"apps.skychat-settings.persist-seed-hint")),c(3),S(v(108,103,"apps.skychat-settings.pairing-section")),c(3),C("ngClass",ie(133,ir,o.disableDismiss)),c(),D(" ",v(112,105,"apps.skychat-settings.pair-enable")," "),c(2),C("inline",!0)("matTooltip",v(114,107,"apps.skychat-settings.pair-enable-info")),c(3),C("disabled",!o.form.valid),c(2),D(" ",v(119,109,"apps.skychat-settings.save")," "))},dependencies:[Ft,kn,Qt,Oa,Jt,xn,gc,sn,_n,dn,sp,Aa,On,Ae,Et,Na,is,Fo,Mi,Sn,we],encapsulation:2})}}return t})();const cDe=t=>({"paginator-icons-fixer":t}),cH=(t,n)=>["/nodes",t,"apps-list",n],dDe=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),uDe=t=>({"d-lg-none d-xl-table":t}),hDe=t=>({"d-lg-table d-xl-none":t}),dH=t=>({error:t}),fDe=(t,n)=>["/nodes",t,"apps-list",n,"1"];function pDe(t,n){1&t&&(h(0,"span",3),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.apps-list.title-official")))}function mDe(t,n){1&t&&(h(0,"span",3),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.apps-list.title-user")))}function gDe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().$implicit.translatableValue)," ")}function _De(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.value," ")}function bDe(t,n){if(1&t&&(h(0,"div",15)(1,"span"),p(2),_(3,"translate"),u(),x(4,gDe,2,3),x(5,_De,1,1),u()),2&t){const e=n.$implicit;c(2),D("",v(3,3,e.filterName),": "),c(2),k(e.translatableValue?4:-1),c(),k(e.value?5:-1)}}function vDe(t,n){if(1&t){const e=re();h(0,"div",14),F("click",function(){return V(e),H(y().dataFilterer.removeFilters())}),me(1,bDe,6,5,"div",15,Le),h(3,"div",16),p(4),_(5,"translate"),u()()}if(2&t){const e=y();c(),ge(e.dataFilterer.currentFiltersTexts),c(3),S(v(5,1,"filters.press-to-remove"))}}function yDe(t,n){if(1&t){const e=re();h(0,"mat-icon",17),_(1,"translate"),F("click",function(){return V(e),H(y().dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",v(1,2,"filters.filter-action"))}function CDe(t,n){1&t&&(h(0,"mat-icon",8),p(1,"more_horiz"),u()),2&t&&(y(),C("matMenuTriggerFor",Un(10)))}function wDe(t,n){if(1&t&&L(0,"app-paginator",12),2&t){const e=y();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",pt(4,cH,e.nodePK,e.showOfficialApps))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function xDe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function kDe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function SDe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function MDe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function DDe(t,n){if(1&t&&(L(0,"i",38),_(1,"translate")),2&t){const e=y().$implicit,i=y(2);Ge(i.getStateClass(e)),C("matTooltip",v(1,3,i.getStateTooltip(e)))}}function TDe(t,n){if(1&t&&(h(0,"mat-icon",34),_(1,"translate"),p(2,"warning"),u()),2&t){const e=y().$implicit;C("inline",!0)("matTooltip",ue(1,2,"apps.status-failed-tooltip",ie(5,dH,e.detailedStatus?e.detailedStatus:"")))}}function EDe(t,n){if(1&t&&(h(0,"a",36)(1,"button",37),_(2,"translate"),h(3,"mat-icon",22),p(4,"open_in_browser"),u()()()),2&t){const e=y().$implicit;C("href",y(2).getLink(e),$i),c(),C("matTooltip",v(2,3,"apps.open")),c(2),C("inline",!0)}}function PDe(t,n){if(1&t){const e=re();h(0,"button",35),_(1,"translate"),F("click",function(){V(e);const o=y().$implicit;return H(y(2).config(o))}),h(2,"mat-icon",22),p(3,"settings"),u()()}2&t&&(C("matTooltip",v(1,2,"apps.settings")),c(2),C("inline",!0))}function IDe(t,n){if(1&t){const e=re();h(0,"tr")(1,"td",31)(2,"mat-checkbox",32),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(3,"td"),x(4,DDe,2,5,"i",33),x(5,TDe,3,7,"mat-icon",34),u(),h(6,"td"),p(7),u(),h(8,"td"),p(9),u(),h(10,"td")(11,"button",35),_(12,"translate"),F("click",function(){const o=V(e).$implicit;return H(y(2).changeAppAutostart(o))}),h(13,"mat-icon",22),p(14),u()()(),h(15,"td",24),x(16,EDe,5,5,"a",36),x(17,PDe,4,4,"button",37),h(18,"button",35),_(19,"translate"),F("click",function(){const o=V(e).$implicit;return H(y(2).viewLogs(o))}),h(20,"mat-icon",22),p(21,"list"),u()(),h(22,"button",35),_(23,"translate"),F("click",function(){const o=V(e).$implicit;return H(y(2).changeAppState(o))}),h(24,"mat-icon",22),p(25),u()()()()}if(2&t){const e=n.$implicit,i=y(2);c(2),C("checked",i.selections.get(e.name)),c(2),k(2!==e.status?4:-1),c(),k(2===e.status?5:-1),c(2),D(" ",e.name," "),c(2),D(" ",e.port," "),c(2),C("matTooltip",v(12,15,e.autostart?"apps.apps-list.disable-autostart":"apps.apps-list.enable-autostart")),c(2),C("inline",!0),c(),S(e.autostart?"done":"close"),c(2),k(i.getLink(e)?16:-1),c(),k(i.appsWithoutConfig.has(e.name)?-1:17),c(),C("matTooltip",v(19,17,"apps.view-logs")),c(2),C("inline",!0),c(2),C("matTooltip",v(23,19,"apps."+(0===e.status||2===e.status?"start-app":"stop-app"))),c(2),C("inline",!0),c(),S(0===e.status||2===e.status?"play_arrow":"stop")}}function ODe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.label")," ")}function ADe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.inverted-order")," ")}function RDe(t,n){if(1&t&&(h(0,"a",43),F("click",function(i){return i.stopPropagation()}),h(1,"button",44),_(2,"translate"),h(3,"mat-icon"),p(4,"open_in_browser"),u()()()),2&t){const e=y().$implicit;C("href",y(2).getLink(e),$i),c(),C("matTooltip",v(2,2,"apps.open"))}}function FDe(t,n){if(1&t){const e=re();h(0,"tr")(1,"td")(2,"div",27)(3,"div",39)(4,"mat-checkbox",32),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(5,"div",28)(6,"div",40)(7,"span",2),p(8),_(9,"translate"),u(),p(10),u(),h(11,"div",40)(12,"span",2),p(13),_(14,"translate"),u(),p(15),u(),h(16,"div",40)(17,"span",2),p(18),_(19,"translate"),u(),p(20,": "),h(21,"span"),p(22),_(23,"translate"),u()(),h(24,"div",40)(25,"span",2),p(26),_(27,"translate"),u(),p(28,": "),h(29,"span"),p(30),_(31,"translate"),u()()(),L(32,"div",41),h(33,"div",29),x(34,RDe,5,4,"a",36),h(35,"button",42),_(36,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(2);return o.stopPropagation(),H(s.showOptionsDialog(r))}),h(37,"mat-icon"),p(38),u()()()()()()}if(2&t){const e=n.$implicit,i=y(2);c(4),C("checked",i.selections.get(e.name)),c(4),S(v(9,16,"apps.apps-list.app-name")),c(2),D(": ",e.name," "),c(3),S(v(14,18,"apps.apps-list.port")),c(2),D(": ",e.port," "),c(3),S(v(19,20,"apps.apps-list.state")),c(3),Ge(i.getSmallScreenStateClass(e)+" title"),c(),D(" ",ue(23,22,i.getSmallScreenStateTextVar(e),ie(31,dH,e.detailedStatus?e.detailedStatus:""))," "),c(4),S(v(27,25,"apps.apps-list.auto-start")),c(3),Ge((e.autostart?"green-clear-text":"red-clear-text")+" title"),c(),D(" ",v(31,27,e.autostart?"apps.apps-list.autostart-enabled":"apps.apps-list.autostart-disabled")," "),c(4),k(i.getLink(e)?34:-1),c(),C("matTooltip",v(36,29,"common.options")),c(3),S("add")}}function NDe(t,n){if(1&t&&L(0,"app-view-all-link",30),2&t){const e=y(2);C("numberOfElements",e.filteredApps.length)("linkParts",pt(3,fDe,e.nodePK,e.showOfficialApps))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function LDe(t,n){if(1&t){const e=re();h(0,"div",13)(1,"div",18)(2,"table",19)(3,"tr"),L(4,"th"),h(5,"th",20),_(6,"translate"),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.stateSortData))}),L(7,"span",21),x(8,xDe,2,2,"mat-icon",22),u(),h(9,"th",23),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.nameSortData))}),p(10),_(11,"translate"),x(12,kDe,2,2,"mat-icon",22),u(),h(13,"th",23),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.portSortData))}),p(14),_(15,"translate"),x(16,SDe,2,2,"mat-icon",22),u(),h(17,"th",23),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.autoStartSortData))}),p(18),_(19,"translate"),x(20,MDe,2,2,"mat-icon",22),u(),L(21,"th",24),u(),me(22,IDe,26,21,"tr",null,Le),u(),h(24,"table",25)(25,"tr",26),F("click",function(){return V(e),H(y().dataSorter.openSortingOrderModal())}),h(26,"td")(27,"div",27)(28,"div",28)(29,"div",2),p(30),_(31,"translate"),u(),h(32,"div"),p(33),_(34,"translate"),x(35,ODe,2,3),x(36,ADe,2,3),u()(),h(37,"div",29)(38,"mat-icon",22),p(39,"keyboard_arrow_down"),u()()()()(),me(40,FDe,39,33,"tr",null,Le),u(),x(42,NDe,1,6,"app-view-all-link",30),u()()}if(2&t){const e=y();c(),C("ngClass",pt(29,dDe,e.showShortList_,!e.showShortList_)),c(),C("ngClass",ie(32,uDe,e.showShortList_)),c(3),C("matTooltip",v(6,17,"apps.apps-list.state-tooltip")),c(3),k(e.dataSorter.currentSortingColumn===e.stateSortData?8:-1),c(2),D(" ",v(11,19,"apps.apps-list.app-name")," "),c(2),k(e.dataSorter.currentSortingColumn===e.nameSortData?12:-1),c(2),D(" ",v(15,21,"apps.apps-list.port")," "),c(2),k(e.dataSorter.currentSortingColumn===e.portSortData?16:-1),c(2),D(" ",v(19,23,"apps.apps-list.auto-start")," "),c(2),k(e.dataSorter.currentSortingColumn===e.autoStartSortData?20:-1),c(2),ge(e.dataSource),c(2),C("ngClass",ie(34,hDe,e.showShortList_)),c(6),S(v(31,25,"tables.sorting-title")),c(3),D("",v(34,27,e.dataSorter.currentSortingColumn.label)," "),c(2),k(e.dataSorter.currentlySortingByLabel?35:-1),c(),k(e.dataSorter.sortingInReverseOrder?36:-1),c(2),C("inline",!0),c(2),ge(e.dataSource),c(2),k(e.showShortList_&&e.numberOfPages>1?42:-1)}}function BDe(t,n){1&t&&(h(0,"span",47),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.apps-list.empty-official")))}function VDe(t,n){1&t&&(h(0,"span",47),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.apps-list.empty-user")))}function HDe(t,n){1&t&&(h(0,"span",47),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.apps-list.empty-with-filter")))}function UDe(t,n){if(1&t&&(h(0,"div",13)(1,"div",45)(2,"mat-icon",46),p(3,"warning"),u(),x(4,BDe,3,3,"span",47),x(5,VDe,3,3,"span",47),x(6,HDe,3,3,"span",47),u()()),2&t){const e=y();c(2),C("inline",!0),c(2),k(0===e.allAppsForType.length&&e.showOfficialApps?4:-1),c(),k(0!==e.allAppsForType.length||e.showOfficialApps?-1:5),c(),k(0!==e.allAppsForType.length?6:-1)}}function zDe(t,n){if(1&t&&L(0,"app-paginator",12),2&t){const e=y();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",pt(4,cH,e.nodePK,e.showOfficialApps))("queryParams",e.dataFilterer.currentUrlQueryParams)}}let uH=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter&&this.dataSorter.setData(this.filteredApps)}set apps(e){this.allApps=e||[],this.allApps&&(this.allAppsForType=[],this.allApps.forEach(i=>{(this.showOfficialApps&&this.officialAppsList.has(i.name)||!this.showOfficialApps&&!this.officialAppsList.has(i.name))&&this.allAppsForType.push(i)}),this.dataFilterer&&this.dataFilterer.setData(this.allAppsForType))}constructor(e,i,o,r,s,a,l){this.appsService=e,this.dialog=i,this.route=o,this.router=r,this.snackbarService=s,this.translateService=a,this.storageService=l,this.listIdForOfficialApps="op",this.listIdForUserApps="up",this.officialAppsList=new Set(["skychat","skysocks","skysocks-client","vpn-client","vpn-server"]),this.showOfficialApps=!0,this.stateSortData=new Pt(["status"],"apps.apps-list.state",lt.NumberReversed),this.nameSortData=new Pt(["name"],"apps.apps-list.app-name",lt.Text),this.portSortData=new Pt(["port"],"apps.apps-list.port",lt.Number),this.autoStartSortData=new Pt(["autostart"],"apps.apps-list.auto-start",lt.Boolean),this.selections=new Map,this.appsWithoutConfig=new Set,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"apps.apps-list.filter-dialog.state",keyNameInElementsArray:"status",type:Mn.Select,printableLabelsForValues:[{value:"",label:"apps.apps-list.filter-dialog.state-options.any"},{value:"1",label:"apps.apps-list.filter-dialog.state-options.running"},{value:"0",label:"apps.apps-list.filter-dialog.state-options.stopped"}]},{filterName:"apps.apps-list.filter-dialog.name",keyNameInElementsArray:"name",type:Mn.TextInput,maxlength:50},{filterName:"apps.apps-list.filter-dialog.port",keyNameInElementsArray:"port",type:Mn.TextInput,maxlength:8},{filterName:"apps.apps-list.filter-dialog.autostart",keyNameInElementsArray:"autostart",type:Mn.Select,printableLabelsForValues:[{value:"",label:"apps.apps-list.filter-dialog.autostart-options.any"},{value:"true",label:"apps.apps-list.filter-dialog.autostart-options.enabled"},{value:"false",label:"apps.apps-list.filter-dialog.autostart-options.disabled"}]}],this.refreshAgain=!1,this.operationSubscriptionsGroup=[],this.navigationsSubscription=this.route.paramMap.subscribe(d=>{if(d.has("showOfficialApps")&&(this.showOfficialApps=d.get("showOfficialApps").toUpperCase()==="true".toUpperCase()),d.has("page")){let f=Number.parseInt(d.get("page"),10);(isNaN(f)||f<1)&&(f=1),this.currentPageInUrl=f,this.recalculateElementsToShow()}})}ngOnInit(){const e=this.showOfficialApps?this.listIdForOfficialApps:this.listIdForUserApps;this.dataSorter=new wu(this.dialog,this.translateService,this.storageService,[this.stateSortData,this.nameSortData,this.portSortData,this.autoStartSortData],1,e),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataSorter&&this.dataSorter.setData(this.filteredApps),this.dataFilterer=new xu(this.dialog,this.route,this.router,this.filterProperties,e),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(o=>{this.filteredApps=o,this.dataSorter.setData(this.filteredApps)}),this.allAppsForType&&this.dataFilterer.setData(this.allAppsForType)}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.dataSortedSubscription.unsubscribe(),this.dataFiltererSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFilterer.dispose()}getLink(e){if("skychat"===e.name.toLocaleLowerCase()&&this.nodeIp&&0!==e.status&&2!==e.status){let i="8001",o="127.0.0.1";if(e.args)for(let r=0;r{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}changeStateOfSelected(e){const i=[];this.selections.forEach((o,r)=>{o&&(e&&(0===this.appsMap.get(r).status||2===this.appsMap.get(r).status)||!e&&0!==this.appsMap.get(r).status&&2!==this.appsMap.get(r).status)&&i.push(r)}),this.changeAppsValRecursively(i,!1,e)}changeAutostartOfSelected(e){const i=[];this.selections.forEach((o,r)=>{o&&(e&&!this.appsMap.get(r).autostart||!e&&this.appsMap.get(r).autostart)&&i.push(r)}),0!==i.length&&this.changeAppsValRecursively(i,!0,e,null)}showOptionsDialog(e){const i=[{icon:"list",label:"apps.view-logs"},{icon:0===e.status||2===e.status?"play_arrow":"stop",label:"apps."+(0===e.status||2===e.status?"start-app":"stop-app")},{icon:e.autostart?"close":"done",label:e.autostart?"apps.apps-list.disable-autostart":"apps.apps-list.enable-autostart"}];this.appsWithoutConfig.has(e.name)||i.push({icon:"settings",label:"apps.settings"}),ho.openDialog(this.dialog,i,"common.options").afterClosed().subscribe(o=>{1===o?this.viewLogs(e):2===o?this.changeAppState(e):3===o?this.changeAppAutostart(e):4===o&&this.config(e)})}changeAppState(e){this.changeSingleAppVal(this.startChangingAppState(e.name,0===e.status||2===e.status))}changeAppAutostart(e){this.changeSingleAppVal(this.startChangingAppAutostart(e.name,!e.autostart))}changeSingleAppVal(e,i=null){this.operationSubscriptionsGroup.push(e.subscribe(()=>{i&&i.close(),setTimeout(()=>{this.refreshAgain=!0,Me.refreshCurrentDisplayedData()},50),this.snackbarService.showDone("apps.operation-completed")},o=>{o=Ze(o),setTimeout(()=>{this.refreshAgain=!0,Me.refreshCurrentDisplayedData()},50),i?i.componentInstance.showDone("confirmation.error-header-text",o.translatableErrorMsg):this.snackbarService.showError(o)}))}viewLogs(e){0!==e.status&&2!==e.status?SSe.openDialog(this.dialog,e):this.snackbarService.showError("apps.apps-list.unavailable-logs-error")}config(e){"skychat"===e.name?lDe.openDialog(this.dialog,e):"skysocks"===e.name||"vpn-server"===e.name?PSe.openDialog(this.dialog,e):"skysocks-client"===e.name||"vpn-client"===e.name?nDe.openDialog(this.dialog,e):sDe.openDialog(this.dialog,e)}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredApps){const e=this.showShortList_?at.maxShortListElements:at.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredApps.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.appsToShow=this.filteredApps.slice(i,i+e),this.appsMap=new Map,this.appsToShow.forEach(s=>{this.appsMap.set(s.name,s),this.selections.has(s.name)||this.selections.set(s.name,!1)});const r=[];this.selections.forEach((s,a)=>{this.appsMap.has(a)||r.push(a)}),r.forEach(s=>{this.selections.delete(s)})}else this.appsToShow=null,this.selections=new Map;this.dataSource=this.appsToShow,this.refreshAgain&&(this.refreshAgain=!1,setTimeout(()=>Me.refreshCurrentDisplayedData(),2e3))}startChangingAppState(e,i){return this.appsService.changeAppState(Me.getCurrentNodeKey(),e,i).pipe(De(o=>(null!=o.status&&this.dataSource.forEach(r=>{r.name===e&&(r.status=o.status,r.detailedStatus=o.detailed_status)}),o)))}startChangingAppAutostart(e,i){return this.appsService.changeAppAutostart(Me.getCurrentNodeKey(),e,i)}changeAppsValRecursively(e,i,o,r=null){if(!e||0===e.length)return setTimeout(()=>Me.refreshCurrentDisplayedData(),50),this.snackbarService.showWarning("apps.operation-unnecessary"),void(r&&r.close());let s;s=i?this.startChangingAppAutostart(e[e.length-1],o):this.startChangingAppState(e[e.length-1],o),this.operationSubscriptionsGroup.push(s.subscribe(()=>{e.pop(),0===e.length?(r&&r.close(),setTimeout(()=>{this.refreshAgain=!0,Me.refreshCurrentDisplayedData()},50),this.snackbarService.showDone("apps.operation-completed")):this.changeAppsValRecursively(e,i,o,r)},a=>{a=Ze(a),setTimeout(()=>{this.refreshAgain=!0,Me.refreshCurrentDisplayedData()},50),r?r.componentInstance.showDone("confirmation.error-header-text",a.translatableErrorMsg):this.snackbarService.showError(a)}))}static{this.\u0275fac=function(i){return new(i||t)(O(Hs),O(Nt),O(Li),O(yt),O(ot),O(Xo),O(ri))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-node-app-list"]],inputs:{nodePK:"nodePK",nodeIp:"nodeIp",showOfficialApps:"showOfficialApps",showShortList:"showShortList",apps:"apps"},standalone:!1,decls:33,vars:39,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"click","matTooltip"],[1,"dot-outline-white"],[3,"inline"],[1,"sortable-column",3,"click"],[1,"actions"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[3,"numberOfElements","linkParts","queryParams"],[1,"selection-col"],[3,"change","checked"],[3,"class","matTooltip"],[1,"red-text",3,"inline","matTooltip"],["mat-button","",1,"big-action-button","transparent-button",3,"click","matTooltip"],["target","_blank","rel","noreferrer nofollow noopener",1,"skychat-link",3,"href"],["mat-button","",1,"big-action-button","transparent-button",3,"matTooltip"],[3,"matTooltip"],[1,"check-part"],[1,"list-row"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],["target","_blank","rel","noreferrer nofollow noopener",1,"skychat-link",3,"click","href"],["mat-icon-button","",1,"transparent-button",3,"matTooltip"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,pDe,3,3,"span",3),x(3,mDe,3,3,"span",3),x(4,vDe,6,3,"div",4),u(),h(5,"div",5)(6,"div",6),x(7,yDe,3,4,"mat-icon",7),x(8,CDe,2,1,"mat-icon",8),h(9,"mat-menu",9,0)(11,"div",10),F("click",function(){return o.changeAllSelections(!0)}),p(12),_(13,"translate"),u(),h(14,"div",10),F("click",function(){return o.changeAllSelections(!1)}),p(15),_(16,"translate"),u(),h(17,"div",11),F("click",function(){return o.changeStateOfSelected(!0)}),p(18),_(19,"translate"),u(),h(20,"div",11),F("click",function(){return o.changeStateOfSelected(!1)}),p(21),_(22,"translate"),u(),h(23,"div",11),F("click",function(){return o.changeAutostartOfSelected(!0)}),p(24),_(25,"translate"),u(),h(26,"div",11),F("click",function(){return o.changeAutostartOfSelected(!1)}),p(27),_(28,"translate"),u()()(),x(29,wDe,1,7,"app-paginator",12),u()(),x(30,LDe,43,36,"div",13),x(31,UDe,7,4,"div",13),x(32,zDe,1,7,"app-paginator",12)),2&i&&(C("ngClass",ie(37,cDe,!o.showShortList_&&o.numberOfPages>1&&o.dataSource)),c(2),k(o.showShortList_&&o.showOfficialApps?2:-1),c(),k(o.showShortList_&&!o.showOfficialApps?3:-1),c(),k(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?4:-1),c(3),k(o.allAppsForType&&o.allAppsForType.length>0?7:-1),c(),k(o.dataSource&&o.dataSource.length>0?8:-1),c(),C("overlapTrigger",!1),c(3),D(" ",v(13,25,"selection.select-all")," "),c(3),D(" ",v(16,27,"selection.unselect-all")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(19,29,"selection.start-all")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(22,31,"selection.stop-all")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(25,33,"selection.enable-autostart-all")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(28,35,"selection.disable-autostart-all")," "),c(2),k(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?29:-1),c(),k(o.dataSource&&o.dataSource.length>0?30:-1),c(),k(o.dataSource&&0!==o.dataSource.length?-1:31),c(),k(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?32:-1))},dependencies:[Ft,Ht,Yo,Ae,Et,os,Vs,Su,Fo,wV,Cv,we],styles:[".actions[_ngcontent-%COMP%]{text-align:right;width:150px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}.skychat-link[_ngcontent-%COMP%]{color:#f8f9f9;text-decoration:none}.skychat-link[_ngcontent-%COMP%] .big-action-button[_ngcontent-%COMP%]{margin-right:5px}"]})}}return t})(),jDe=(()=>{class t extends Lt{ngOnInit(){return this.dataSubscription=Me.currentNode.subscribe(e=>{this.nodePK=e.localPk,this.apps=e.apps,this.nodeIp=e.ip}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})()}static{this.\u0275cmp=ae({type:t,selectors:[["app-apps"]],standalone:!1,features:[_e],decls:2,vars:10,consts:[[3,"showOfficialApps","apps","showShortList","nodePK","nodeIp"]],template:function(i,o){1&i&&L(0,"app-node-app-list",0)(1,"app-node-app-list",0),2&i&&(C("showOfficialApps",!0)("apps",o.apps)("showShortList",!0)("nodePK",o.nodePK)("nodeIp",o.nodeIp),c(),C("showOfficialApps",!1)("apps",o.apps)("showShortList",!0)("nodePK",o.nodePK)("nodeIp",o.nodeIp))},dependencies:[uH],encapsulation:2})}}return t})();function $De(t,n){if(1&t&&(h(0,"span",4),p(1),u()),2&t){const e=y();c(),Kh(" ",e.host.hostname," \xb7 ",e.host.platform||e.host.os," ",e.host.arch," \xb7 uptime ",e.fmtUptime(e.host.uptime_seconds)," ")}}function WDe(t,n){if(1&t&&(h(0,"div",13),p(1),_(2,"number"),u()),2&t){const e=y(3);c(),nt("",e.host.cpu_logical_count," cores \xb7 visor ",ue(2,2,e.procCPUPercent,"1.0-1"),"%")}}function GDe(t,n){if(1&t&&(h(0,"div",13),p(1),_(2,"number"),u()),2&t){const e=y(3);c(),Fd(" ",e.fmtBytes(e.host.mem_used)," / ",e.fmtBytes(e.host.mem_total)," \xb7 visor RSS ",ue(2,3,e.procMemRssMB,"1.0-0"),"M ")}}function qDe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=y(3);c(),nt("",e.fmtBytes(e.host.disk_used)," / ",e.fmtBytes(e.host.disk_total)," on /")}}function KDe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=y(3);c(),nt(" fds ",e.host.process.num_fds||"-"," \xb7 conns ",e.host.process.open_conns||0," ")}}function YDe(t,n){if(1&t&&(h(0,"div",7)(1,"div",8)(2,"div",9)(3,"span",10),p(4),_(5,"translate"),u(),h(6,"span",11),p(7),_(8,"number"),u()(),L(9,"app-line-chart",12),x(10,WDe,3,5,"div",13),u(),h(11,"div",8)(12,"div",9)(13,"span",10),p(14),_(15,"translate"),u(),h(16,"span",11),p(17),_(18,"number"),u()(),L(19,"app-line-chart",12),x(20,GDe,3,6,"div",13),u(),h(21,"div",8)(22,"div",9)(23,"span",10),p(24),_(25,"translate"),u(),h(26,"span",11),p(27),_(28,"number"),u()(),L(29,"app-line-chart",12),x(30,qDe,2,2,"div",13),u(),h(31,"div",8)(32,"div",9)(33,"span",10),p(34),_(35,"translate"),u(),h(36,"span",11),p(37),u()(),L(38,"app-line-chart",14),h(39,"div",13),p(40),u()(),h(41,"div",8)(42,"div",9)(43,"span",10),p(44),_(45,"translate"),u(),h(46,"span",11),p(47),u()(),L(48,"app-line-chart",14),h(49,"div",13),p(50),u()(),h(51,"div",8)(52,"div",9)(53,"span",10),p(54),_(55,"translate"),u(),h(56,"span",11),p(57),u()(),L(58,"app-line-chart",14),x(59,KDe,2,2,"div",13),u()()),2&t){const e=y(2);c(4),S(v(5,36,"node.resource-monitor.cpu")),c(3),D("",e.host?ue(8,38,e.host.cpu_percent,"1.0-1"):"-","%"),c(2),C("data",e.cpuPctSeries)("min",0)("max",100)("height",60),c(),k(e.host?10:-1),c(4),S(v(15,41,"node.resource-monitor.memory")),c(3),D("",e.host?ue(18,43,e.host.mem_percent,"1.0-1"):"-","%"),c(2),C("data",e.memPctSeries)("min",0)("max",100)("height",60),c(),k(e.host?20:-1),c(4),S(v(25,46,"node.resource-monitor.disk")),c(3),D("",e.host&&e.host.disk_percent?ue(28,48,e.host.disk_percent,"1.0-1"):"-","%"),c(2),C("data",e.diskPctSeries)("min",0)("max",100)("height",60),c(),k(e.host&&e.host.disk_total?30:-1),c(4),S(v(35,51,"node.resource-monitor.net-rx")),c(3),S(e.fmtBps(e.netRxBpsSeries[e.netRxBpsSeries.length-1])),c(),C("data",e.netRxBpsSeries)("height",60),c(2),D("",e.host?e.fmtBytes(e.host.net_bytes_recv):"-"," total"),c(4),S(v(45,53,"node.resource-monitor.net-tx")),c(3),S(e.fmtBps(e.netTxBpsSeries[e.netTxBpsSeries.length-1])),c(),C("data",e.netTxBpsSeries)("height",60),c(2),D("",e.host?e.fmtBytes(e.host.net_bytes_sent):"-"," total"),c(4),S(v(55,55,"node.resource-monitor.threads")),c(3),S(e.host&&e.host.process?e.host.process.num_threads:"-"),c(),C("data",e.threadsSeries)("height",60),c(),k(e.host&&e.host.process?59:-1)}}function XDe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=y(3);c(),nt("heap_sys ",e.fmtBytes(e.proc.mem_heap_sys)," \xb7 sys ",e.fmtBytes(e.proc.mem_sys))}}function ZDe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=y(3);c(),nt("GOMAXPROCS ",e.proc.gomaxprocs," \xb7 ",e.proc.go_version)}}function QDe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=y(3);c(),nt("total ",e.proc.num_gc," GCs \xb7 alloc ",e.fmtBytes(e.proc.mem_total_alloc)," since start")}}function JDe(t,n){if(1&t&&(h(0,"div",7)(1,"div",8)(2,"div",9)(3,"span",10),p(4),_(5,"translate"),u(),h(6,"span",11),p(7),_(8,"number"),u()(),L(9,"app-line-chart",14),x(10,XDe,2,2,"div",13),u(),h(11,"div",8)(12,"div",9)(13,"span",10),p(14),_(15,"translate"),u(),h(16,"span",11),p(17),u()(),L(18,"app-line-chart",14),x(19,ZDe,2,2,"div",13),u(),h(20,"div",8)(21,"div",9)(22,"span",10),p(23),_(24,"translate"),u(),h(25,"span",11),p(26),u()(),L(27,"app-line-chart",14),x(28,QDe,2,2,"div",13),u()()),2&t){const e=y(2);c(4),S(v(5,15,"node.resource-monitor.heap")),c(3),D("",e.proc?ue(8,17,e.proc.mem_heap_alloc/1024/1024,"1.0-1"):"-","M"),c(2),C("data",e.heapMbSeries)("height",60),c(),k(e.proc?10:-1),c(4),S(v(15,20,"node.resource-monitor.goroutines")),c(3),S(e.proc?e.proc.num_goroutine:"-"),c(),C("data",e.goroutinesSeries)("height",60),c(),k(e.proc?19:-1),c(4),S(v(24,22,"node.resource-monitor.gc")),c(3),D("",e.gcSeries[e.gcSeries.length-1]||0,"/s"),c(),C("data",e.gcSeries)("height",60),c(),k(e.proc?28:-1)}}function eTe(t,n){if(1&t){const e=re();h(0,"div",5)(1,"span",6),F("click",function(){return V(e),H(y().setTab("host"))}),p(2),_(3,"translate"),u(),h(4,"span",6),F("click",function(){return V(e),H(y().setTab("process"))}),p(5),_(6,"translate"),u()(),x(7,YDe,60,57,"div",7),x(8,JDe,29,24,"div",7)}if(2&t){const e=y();c(),ve("active","host"===e.activeTab),c(),D(" ",v(3,8,"node.resource-monitor.tab-host")," "),c(2),ve("active","process"===e.activeTab),c(),D(" ",v(6,10,"node.resource-monitor.tab-process")," "),c(2),k("host"===e.activeTab?7:-1),c(),k("process"===e.activeTab?8:-1)}}let nTe=(()=>{class t{constructor(e,i){this.nodeService=e,this.cdr=i,this.openByDefault=!1,this.expanded=!1,this.activeTab="host",this.host=null,this.proc=null,this.procCPUPercent=0,this.procMemRssMB=0,this.cpuPctSeries=[],this.memPctSeries=[],this.diskPctSeries=[],this.netRxBpsSeries=[],this.netTxBpsSeries=[],this.goroutinesSeries=[],this.heapMbSeries=[],this.gcSeries=[],this.threadsSeries=[],this.prevNetRx=0,this.prevNetTx=0,this.prevGc=0,this.prevSampleAtMs=0,this.firstHostSample=!0,this.firstProcSample=!0}ngOnInit(){this.openByDefault&&(this.expanded=!0,this.startPolling())}ngOnDestroy(){this.stopPolling()}toggleExpanded(){this.expanded=!this.expanded,this.expanded?this.startPolling():this.stopPolling()}setTab(e){this.activeTab=e}fmtBytes(e){return null==e||isNaN(e)?"-":e>=1e9?(e/1e9).toFixed(1)+"G":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toFixed(0)+"B"}fmtBps(e){return null==e||isNaN(e)||e<0?"0B/s":this.fmtBytes(e)+"/s"}fmtUptime(e){if(!e)return"-";const i=Math.floor(e/86400),o=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return i>0?`${i}d ${o}h`:o>0?`${o}h ${r}m`:`${r}m`}startPolling(){this.stopPolling(),this.firstHostSample=!0,this.firstProcSample=!0,this.prevSampleAtMs=0,this.pollSub=Ls(0,1e3).subscribe(()=>{this.pollHost(),this.pollProc()})}stopPolling(){this.pollSub&&(this.pollSub.unsubscribe(),this.pollSub=null),this.hostSub&&(this.hostSub.unsubscribe(),this.hostSub=null),this.procSub&&(this.procSub.unsubscribe(),this.procSub=null)}pollHost(){this.nodeKey&&(this.hostSub&&this.hostSub.unsubscribe(),this.hostSub=this.nodeService.getHostStats(this.nodeKey).subscribe(e=>this.onHostStats(e),()=>{}))}pollProc(){this.nodeKey&&(this.procSub&&this.procSub.unsubscribe(),this.procSub=this.nodeService.getRuntimeStats(this.nodeKey).subscribe(e=>this.onRuntimeStats(e),()=>{}))}onHostStats(e){this.host=e,this.procCPUPercent=e.process?e.process.cpu_percent:0,this.procMemRssMB=e.process?e.process.mem_rss/1024/1024:0;const i=Date.now();let o=(i-this.prevSampleAtMs)/1e3;if((o<=0||o>5)&&(o=1),this.prevSampleAtMs=i,this.push(this.cpuPctSeries,e.cpu_percent),this.push(this.memPctSeries,e.mem_percent),this.push(this.diskPctSeries,e.disk_percent||0),this.push(this.threadsSeries,e.process&&e.process.num_threads||0),this.firstHostSample)this.firstHostSample=!1;else{const r=Math.max(0,e.net_bytes_recv-this.prevNetRx)/o,s=Math.max(0,e.net_bytes_sent-this.prevNetTx)/o;this.push(this.netRxBpsSeries,r),this.push(this.netTxBpsSeries,s)}this.prevNetRx=e.net_bytes_recv,this.prevNetTx=e.net_bytes_sent,this.cdr.markForCheck()}onRuntimeStats(e){this.proc=e,this.push(this.goroutinesSeries,e.num_goroutine),this.push(this.heapMbSeries,e.mem_heap_alloc/1024/1024),this.firstProcSample?this.firstProcSample=!1:this.push(this.gcSeries,Math.max(0,e.num_gc-this.prevGc)),this.prevGc=e.num_gc,this.cdr.markForCheck()}push(e,i){e.push(i),e.length>60&&e.shift()}static{this.\u0275fac=function(i){return new(i||t)(O(Yi),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-resource-monitor"]],inputs:{nodeKey:"nodeKey",openByDefault:"openByDefault"},standalone:!1,decls:9,vars:7,consts:[[1,"resource-monitor","mt-3"],[1,"rm-header",3,"click"],[1,"rm-toggle-icon",3,"inline"],[1,"section-title"],[1,"rm-host-summary"],[1,"rm-tabs"],[1,"rm-tab",3,"click"],[1,"rm-grid"],[1,"rm-cell"],[1,"rm-cell-header"],[1,"rm-cell-label"],[1,"rm-cell-value"],[3,"data","min","max","height"],[1,"rm-cell-foot"],[3,"data","height"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1),F("click",function(){return o.toggleExpanded()}),h(2,"mat-icon",2),p(3),u(),h(4,"span",3),p(5),_(6,"translate"),u(),x(7,$De,2,4,"span",4),u(),x(8,eTe,9,12),u()),2&i&&(c(2),C("inline",!0),c(),S(o.expanded?"expand_less":"expand_more"),c(2),S(v(6,5,"node.resource-monitor.title")),c(2),k(o.host?7:-1),c(),k(o.expanded?8:-1))},dependencies:[Ae,Qv,Gl,we],styles:[".resource-monitor[_ngcontent-%COMP%]{border-top:1px solid rgba(255,255,255,.08);padding-top:12px}.rm-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none;padding:4px 0}.rm-toggle-icon[_ngcontent-%COMP%]{font-size:22px}.rm-host-summary[_ngcontent-%COMP%]{margin-left:auto;opacity:.6;font-size:12px}.rm-tabs[_ngcontent-%COMP%]{display:flex;gap:16px;margin:8px 0 12px;font-size:13px}.rm-tab[_ngcontent-%COMP%]{cursor:pointer;padding:4px 8px;border-radius:4px;opacity:.6}.rm-tab.active[_ngcontent-%COMP%]{opacity:1;background:#ffffff0f}.rm-tab[_ngcontent-%COMP%]:hover{opacity:.9}.rm-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.rm-cell[_ngcontent-%COMP%]{background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:6px;padding:8px 10px;min-height:110px;display:flex;flex-direction:column}.rm-cell-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:2px}.rm-cell-label[_ngcontent-%COMP%]{font-size:11px;text-transform:uppercase;opacity:.7;letter-spacing:.5px}.rm-cell-value[_ngcontent-%COMP%]{font-size:14px;font-weight:500;font-variant-numeric:tabular-nums}.rm-cell-foot[_ngcontent-%COMP%]{margin-top:2px;font-size:11px;opacity:.5;font-variant-numeric:tabular-nums}"]})}}return t})();function iTe(t,n){1&t&&L(0,"app-resource-monitor",0),2&t&&C("nodeKey",y().node.localPk)("openByDefault",!0)}let oTe=(()=>{class t extends Lt{ngOnInit(){return this.dataSubscription=Me.currentNode.subscribe(e=>{this.node=e}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription&&this.dataSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})()}static{this.\u0275cmp=ae({type:t,selectors:[["app-node-resources"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[3,"nodeKey","openByDefault"]],template:function(i,o){1&i&&x(0,iTe,1,2,"app-resource-monitor",0),2&i&&k(o.node?0:-1)},dependencies:[nTe],encapsulation:2})}}return t})();const rTe=["logEl"],sTe=t=>({active:t});function aTe(t,n){if(1&t&&(h(0,"span",8),p(1),u()),2&t){const e=y(2);c(),D("\xb7 ",e.errorText)}}function lTe(t,n){1&t&&(h(0,"span",9),p(1),_(2,"translate"),u()),2&t&&(c(),D("\xb7 ",v(2,1,"skychat.no-history")))}function cTe(t,n){if(1&t){const e=re();h(0,"mat-form-field",34)(1,"mat-label"),p(2),_(3,"translate"),u(),h(4,"input",35),Yt("ngModelChange",function(o){V(e);const r=y(3);return nn(r.pwOld,o)||(r.pwOld=o),H(o)}),u()()}if(2&t){const e=y(3);c(2),S(v(3,2,"skychat.password.old")),c(2),Kt("ngModel",e.pwOld)}}function dTe(t,n){if(1&t){const e=re();h(0,"button",39),F("click",function(){return V(e),H(y(3).clearPassword())}),p(1),_(2,"translate"),u()}if(2&t){const e=y(3);C("disabled",e.pwBusy||!e.pwOld),c(),D(" ",v(2,2,"skychat.password.clear")," ")}}function uTe(t,n){if(1&t){const e=re();h(0,"div",13)(1,"div",33),p(2),_(3,"translate"),u(),x(4,cTe,5,4,"mat-form-field",34),h(5,"mat-form-field",34)(6,"mat-label"),p(7),_(8,"translate"),u(),h(9,"input",35),Yt("ngModelChange",function(o){V(e);const r=y(2);return nn(r.pwNew,o)||(r.pwNew=o),H(o)}),u()(),h(10,"mat-form-field",34)(11,"mat-label"),p(12),_(13,"translate"),u(),h(14,"input",35),Yt("ngModelChange",function(o){V(e);const r=y(2);return nn(r.pwConfirm,o)||(r.pwConfirm=o),H(o)}),u()(),h(15,"div",36)(16,"button",37),F("click",function(){return V(e),H(y(2).applyPassword())}),p(17),_(18,"translate"),u(),x(19,dTe,3,4,"button",38),u()()}if(2&t){const e=y(2);c(2),D(" ",v(3,9,e.pwIsSet?"skychat.password.help-set":"skychat.password.help-unset")," "),c(2),k(e.pwIsSet?4:-1),c(3),S(v(8,11,"skychat.password.new")),c(2),Kt("ngModel",e.pwNew),c(3),S(v(13,13,"skychat.password.confirm")),c(2),Kt("ngModel",e.pwConfirm),c(2),C("disabled",e.pwBusy||!e.pwNew),c(),D(" ",v(18,15,e.pwIsSet?"skychat.password.change":"skychat.password.set")," "),c(2),k(e.pwIsSet?19:-1)}}function hTe(t,n){1&t&&(h(0,"div",17),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"skychat.peers-empty")))}function fTe(t,n){if(1&t){const e=re();h(0,"div",40),F("click",function(){const o=V(e).$implicit;return H(y(2).pickRecipient(o))}),h(1,"span",41),p(2),u()()}if(2&t){const e=n.$implicit,i=y(2);C("ngClass",ie(3,sTe,i.toPK===e))("matTooltip",e),c(2),S(e)}}function pTe(t,n){1&t&&(h(0,"div",21),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"skychat.empty")))}function mTe(t,n){if(1&t){const e=re();h(0,"div",22)(1,"div",42)(2,"span",43),F("click",function(){const o=V(e).$implicit;return H(y(2).pickRecipient(o.peer))}),p(3),u(),h(4,"span",44),p(5),_(6,"date"),u()(),h(7,"div",45),p(8),u()()}if(2&t){const e=n.$implicit;C("ngClass",e.direction),c(2),C("matTooltip",e.peer),c(),nt(" ","out"===e.direction?"\u2192":"\u2190"," ",e.peer," "),c(2),S(ue(6,6,e.ts,"mediumTime")),c(3),S(e.text)}}function gTe(t,n){if(1&t){const e=re();h(0,"div",1)(1,"div",2)(2,"div",3),L(3,"span",4),h(4,"span",5),p(5),_(6,"translate"),u(),h(7,"span",6),p(8,"\xb7"),u(),h(9,"span",7),p(10),_(11,"translate"),_(12,"translate"),u(),x(13,aTe,2,1,"span",8),x(14,lTe,3,3,"span",9),L(15,"span",10),h(16,"button",11),F("click",function(){return V(e),H(y().togglePassword())}),h(17,"mat-icon",12),p(18),u(),p(19),_(20,"translate"),u()(),x(21,uTe,20,17,"div",13),h(22,"div",14)(23,"aside",15)(24,"div",16),p(25),_(26,"translate"),u(),x(27,hTe,3,3,"div",17),me(28,fTe,3,5,"div",18,Le),u(),h(30,"section",19)(31,"div",20,0),x(33,pTe,3,3,"div",21),me(34,mTe,9,9,"div",22,CO),u(),h(36,"div",23)(37,"mat-form-field",24)(38,"mat-label"),p(39),_(40,"translate"),u(),h(41,"input",25),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.toPK,o)||(r.toPK=o),H(o)}),u()(),h(42,"mat-form-field",26)(43,"mat-label"),p(44),_(45,"translate"),u(),h(46,"mat-select",27),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.network,o)||(r.network=o),H(o)}),h(47,"mat-option",28),p(48,"skynet"),u(),h(49,"mat-option",29),p(50,"dmsg"),u()()()(),h(51,"div",23)(52,"mat-form-field",30)(53,"mat-label"),p(54),_(55,"translate"),u(),h(56,"textarea",31),_(57,"translate"),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.message,o)||(r.message=o),H(o)}),F("keydown.enter",function(o){V(e);const r=y();return H(o.ctrlKey&&r.send())}),u()(),h(58,"button",32),F("click",function(){return V(e),H(y().send())}),h(59,"mat-icon"),p(60,"send"),u(),p(61),_(62,"translate"),u()()()()()()}if(2&t){const e=y();c(3),C("ngClass",e.connected?"dot-green":"dot-outline-gray"),c(2),S(v(6,21,"skychat.title")),c(5),S(e.connected?v(11,23,"skychat.connected"):v(12,25,"skychat.disconnected")),c(3),k(e.errorText?13:-1),c(),k(e.historyAvailable?-1:14),c(3),C("inline",!0),c(),S(e.pwIsSet?"lock":"lock_open"),c(),D(" ",v(20,27,e.pwOpen?"skychat.password.hide":e.pwIsSet?"skychat.password.change":"skychat.password.set")," "),c(2),k(e.pwOpen?21:-1),c(4),S(v(26,29,"skychat.peers")),c(2),k(0===e.peers.length?27:-1),c(),ge(e.peers),c(5),k(0===e.messages.length?33:-1),c(),ge(e.messages),c(5),S(v(40,31,"skychat.to")),c(2),Kt("ngModel",e.toPK),c(3),S(v(45,33,"skychat.network")),c(2),Kt("ngModel",e.network),c(8),S(v(55,35,"skychat.message")),c(2),Kt("ngModel",e.message),C("placeholder",v(57,37,"skychat.placeholder")),c(2),C("disabled",e.sending||!e.message.trim()||!e.toPK.trim()),c(3),D(" ",v(62,39,"skychat.send")," ")}}let _Te=(()=>{class t extends Lt{get peers(){const e=[],i=new Set;for(let o=this.messages.length-1;o>=0;o--){const r=this.messages[o].peer;!r||i.has(r)||(i.add(r),e.push(r))}return e}constructor(e,i,o){super(),this.api=e,this.snackbar=i,this.cdr=o,this.toPK="",this.message="",this.network="skynet",this.sending=!1,this.messages=[],this.connected=!1,this.errorText="",this.historyAvailable=!0,this.wasAtBottom=!0,this.es=null,this.pwOpen=!1,this.pwIsSet=!1,this.pwOld="",this.pwNew="",this.pwConfirm="",this.pwBusy=!1}ngOnInit(){return this.nodeSub=Me.currentNode.subscribe(e=>{const i=!this.node;this.node=e,i&&(this.connectSSE(),this.tryLoadPeers(),this.refreshPasswordState())}),super.ngOnInit()}ngOnDestroy(){this.nodeSub&&this.nodeSub.unsubscribe(),this.disconnectSSE()}ngAfterViewChecked(){if(this.wasAtBottom&&this.logEl){const e=this.logEl.nativeElement;e.scrollTop=e.scrollHeight}}proxyUrl(e){return`/api/visors/${this.node.localPk}/skychat/proxy/${e.replace(/^\/+/,"")}`}connectSSE(){if(this.node&&!this.es)try{this.es=new EventSource(this.proxyUrl("sse")),this.es.onopen=()=>{this.connected=!0,this.errorText="",this.cdr.markForCheck()},this.es.onerror=()=>{this.connected=!1,this.errorText="Disconnected \u2014 retrying\u2026",this.cdr.markForCheck()},this.es.onmessage=e=>this.handleSSE(e.data)}catch(e){this.errorText=`SSE setup failed: ${e?.message||e}`}}disconnectSSE(){this.es&&(this.es.close(),this.es=null)}handleSSE(e){let i=null;try{i=JSON.parse(e)}catch{}if(!i||"object"!=typeof i)return;const o={peer:i.sender||i.from||"",direction:"in",text:"string"==typeof i.message?i.message:i.text||"",ts:Date.now()};!o.peer||!o.text||(this.captureScroll(),this.messages.push(o),this.messages.length>500&&this.messages.shift(),this.cdr.markForCheck())}send(){var e=this;if(this.sending)return;const i=this.toPK.trim(),o=this.message.trim();if(i&&o){if(66!==i.length||!/^[0-9a-fA-F]+$/.test(i))return void this.snackbar.showError("Recipient must be a 66-char hex public key");this.sending=!0,fetch(this.proxyUrl("message"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({recipient:i,message:o,network:this.network})}).then(function(){var r=At(function*(s){if(!s.ok){const a=yield s.text();throw new Error(a||`HTTP ${s.status}`)}e.captureScroll(),e.messages.push({peer:i,direction:"out",text:o,ts:Date.now()}),e.messages.length>500&&e.messages.shift(),e.message="",e.cdr.markForCheck()});return function(s){return r.apply(this,arguments)}}()).catch(r=>{this.snackbar.showError(r?.message||String(r))}).finally(()=>{this.sending=!1,this.cdr.markForCheck()})}}tryLoadPeers(){var e=this;!this.node||!this.historyAvailable||fetch(this.proxyUrl("history?limit=100")).then(function(){var i=At(function*(o){if(503===o.status)return e.historyAvailable=!1,null;if(!o.ok)throw new Error(`HTTP ${o.status}`);return o.json()});return function(o){return i.apply(this,arguments)}}()).then(i=>{if(!Array.isArray(i))return;const o=i.map(r=>({peer:r.peer||r.sender||"",direction:"out"===r.direction?"out":"in",text:r.message||r.text||"",ts:r.timestamp||r.ts||Date.now()})).filter(r=>r.peer&&r.text);this.messages=o.concat(this.messages),this.cdr.markForCheck()}).catch(()=>{})}pickRecipient(e){this.toPK=e}captureScroll(){if(!this.logEl)return void(this.wasAtBottom=!0);const e=this.logEl.nativeElement;this.wasAtBottom=e.scrollHeight-e.scrollTop-e.clientHeight<40}togglePassword(){this.pwOpen=!this.pwOpen,this.pwOpen?this.refreshPasswordState():this.resetPasswordForm()}refreshPasswordState(){this.node&&this.api.get(`visors/${this.node.localPk}/skychat/password`).subscribe(e=>{this.pwIsSet=!(!e||!e.set),this.cdr.markForCheck()},()=>{})}resetPasswordForm(){this.pwOld="",this.pwNew="",this.pwConfirm=""}validateNewPassword(){return this.pwNew.length<6||this.pwNew.length>64?"skychat.password.errors.length":this.pwNew!==this.pwConfirm?"skychat.password.errors.mismatch":null}applyPassword(){if(!this.node||this.pwBusy)return;const e=this.validateNewPassword();e?this.snackbar.showError(e):(this.pwBusy=!0,this.api.put(`visors/${this.node.localPk}/skychat/password`,{old_password:this.pwIsSet?this.pwOld:"",new_password:this.pwNew}).subscribe(()=>{this.pwBusy=!1,this.pwIsSet=!0,this.resetPasswordForm(),this.snackbar.showDone("skychat.password.saved"),this.cdr.markForCheck()},i=>{this.pwBusy=!1,this.snackbar.showError(i?.originalError?.error?.error||i?.message||String(i)),this.cdr.markForCheck()}))}clearPassword(){if(this.node&&!this.pwBusy&&this.pwIsSet){if(!this.pwOld)return void this.snackbar.showError("skychat.password.errors.old-required");this.pwBusy=!0,this.api.delete(`visors/${this.node.localPk}/skychat/password?old_password=${encodeURIComponent(this.pwOld)}`).subscribe(()=>{this.pwBusy=!1,this.pwIsSet=!1,this.resetPasswordForm(),this.snackbar.showDone("skychat.password.cleared"),this.cdr.markForCheck()},e=>{this.pwBusy=!1,this.snackbar.showError(e?.originalError?.error?.error||e?.message||String(e)),this.cdr.markForCheck()})}}static{this.\u0275fac=function(i){return new(i||t)(O(fi),O(ot),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-skychat"]],viewQuery:function(i,o){if(1&i&&st(rTe,5),2&i){let r;fe(r=pe())&&(o.logEl=r.first)}},standalone:!1,features:[_e],decls:1,vars:1,consts:[["logEl",""],[1,"rounded-elevated-box","mt-3","skychat-box"],[1,"box-internal-container","sc-shell"],[1,"sc-status"],[1,"dot",3,"ngClass"],[1,"status-text"],[1,"status-sep"],[1,"status-conn"],[1,"error"],[1,"hint"],[1,"sc-status-spacer"],["mat-button","","type","button",1,"sc-password-toggle",3,"click"],[1,"lock-icon",3,"inline"],[1,"sc-password"],[1,"sc-body"],[1,"sc-sidebar"],[1,"sc-sidebar-title"],[1,"sc-sidebar-empty"],[1,"sc-peer",3,"ngClass","matTooltip"],[1,"sc-chat"],[1,"sc-log"],[1,"sc-empty"],[1,"sc-msg",3,"ngClass"],[1,"sc-composer"],["appearance","outline",1,"field-pk"],["matInput","","placeholder","02abc\u2026",3,"ngModelChange","ngModel"],["appearance","outline",1,"field-sm"],["panelClass","skynet-select-panel",3,"ngModelChange","ngModel"],["value","skynet"],["value","dmsg"],["appearance","outline",1,"field-msg"],["matInput","","rows","2",3,"ngModelChange","keydown.enter","ngModel","placeholder"],["mat-raised-button","","color","primary",1,"send-btn",3,"click","disabled"],[1,"sc-password-help"],["appearance","outline",1,"field-pw"],["matInput","","type","password","maxlength","64",3,"ngModelChange","ngModel"],[1,"sc-password-actions"],["mat-raised-button","","color","primary",3,"click","disabled"],["mat-stroked-button","","color","warn",3,"disabled"],["mat-stroked-button","","color","warn",3,"click","disabled"],[1,"sc-peer",3,"click","ngClass","matTooltip"],[1,"peer-pk","mono","small"],[1,"sc-msg-meta"],[1,"peer","mono","small",3,"click","matTooltip"],[1,"ts"],[1,"sc-msg-text"]],template:function(i,o){1&i&&x(0,gTe,63,41,"div",1),2&i&&k(o.node?0:-1)},dependencies:[Ft,Qt,Jt,Bi,dn,ns,On,Ht,Ae,Et,gu,Na,is,vr,we],styles:[".skychat-box[_ngcontent-%COMP%]{display:flex;flex-direction:column}.sc-shell[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.sc-status[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:13px;padding:6px 4px}.sc-status[_ngcontent-%COMP%] .status-text[_ngcontent-%COMP%]{font-weight:600;font-size:14px}.sc-status[_ngcontent-%COMP%] .status-sep[_ngcontent-%COMP%]{opacity:.5}.sc-status[_ngcontent-%COMP%] .status-conn[_ngcontent-%COMP%]{font-weight:500}.sc-status[_ngcontent-%COMP%] .error[_ngcontent-%COMP%]{opacity:.85;color:#e53935e6}.sc-status[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{opacity:.6}.sc-status[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{display:inline-block;width:8px;height:8px;border-radius:50%}.sc-status[_ngcontent-%COMP%] .dot-green[_ngcontent-%COMP%]{background:#4caf50}.sc-status[_ngcontent-%COMP%] .dot-outline-gray[_ngcontent-%COMP%]{border:1px solid rgba(255,255,255,.4)}.sc-status[_ngcontent-%COMP%] .sc-status-spacer[_ngcontent-%COMP%]{flex:1 1 auto}.sc-status[_ngcontent-%COMP%] .sc-password-toggle[_ngcontent-%COMP%]{font-size:12px;line-height:1.2}.sc-status[_ngcontent-%COMP%] .sc-password-toggle[_ngcontent-%COMP%] .lock-icon[_ngcontent-%COMP%]{font-size:16px;vertical-align:middle;margin-right:4px}.sc-password[_ngcontent-%COMP%]{margin:8px 0 4px;padding:12px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:6px;display:flex;flex-wrap:wrap;gap:12px 16px;align-items:flex-end}.sc-password[_ngcontent-%COMP%] .sc-password-help[_ngcontent-%COMP%]{flex:1 1 100%;font-size:12px;opacity:.75;margin-bottom:4px}.sc-password[_ngcontent-%COMP%] .field-pw[_ngcontent-%COMP%]{flex:1 1 200px;min-width:180px}.sc-password[_ngcontent-%COMP%] .sc-password-actions[_ngcontent-%COMP%]{flex:1 1 100%;display:flex;gap:8px;justify-content:flex-end}.sc-body[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:stretch}.sc-sidebar[_ngcontent-%COMP%]{flex:0 0 220px;max-width:240px;display:flex;flex-direction:column;gap:4px;padding:8px;background:#0000002e;border:1px solid rgba(255,255,255,.06);border-radius:6px;overflow-y:auto;max-height:60vh}.sc-sidebar[_ngcontent-%COMP%] .sc-sidebar-title[_ngcontent-%COMP%]{font-size:11px;text-transform:uppercase;letter-spacing:.5px;opacity:.6;padding:2px 4px 6px}.sc-sidebar[_ngcontent-%COMP%] .sc-sidebar-empty[_ngcontent-%COMP%]{padding:8px 4px;font-size:12px;opacity:.5}.sc-sidebar[_ngcontent-%COMP%] .sc-peer[_ngcontent-%COMP%]{cursor:pointer;padding:6px 8px;border-radius:4px;border:1px solid transparent;background:#ffffff08}.sc-sidebar[_ngcontent-%COMP%] .sc-peer[_ngcontent-%COMP%]:hover{background:#ffffff0f}.sc-sidebar[_ngcontent-%COMP%] .sc-peer.active[_ngcontent-%COMP%]{background:#2196f32e;border-color:#2196f373}.sc-sidebar[_ngcontent-%COMP%] .sc-peer[_ngcontent-%COMP%] .peer-pk[_ngcontent-%COMP%]{display:block;word-break:break-all;line-height:1.25;font-size:10px}@media(max-width:720px){.sc-body[_ngcontent-%COMP%]{flex-direction:column}.sc-sidebar[_ngcontent-%COMP%]{flex:0 0 auto;max-width:none;max-height:140px}}.sc-chat[_ngcontent-%COMP%]{flex:1 1 auto;display:flex;flex-direction:column;min-width:0}.sc-log[_ngcontent-%COMP%]{background:#0000002e;border:1px solid rgba(255,255,255,.06);border-radius:6px;padding:8px;height:50vh;min-height:320px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.sc-empty[_ngcontent-%COMP%]{margin:auto;opacity:.5;font-size:13px}.sc-msg[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border-radius:6px;background:#ffffff08;max-width:80%}.sc-msg.in[_ngcontent-%COMP%]{align-self:flex-start}.sc-msg.out[_ngcontent-%COMP%]{align-self:flex-end;background:#2196f32e}.sc-msg-meta[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center;font-size:11px;opacity:.7;flex-wrap:wrap}.sc-msg-meta[_ngcontent-%COMP%] .peer[_ngcontent-%COMP%]{cursor:pointer;-webkit-text-decoration:underline dotted transparent;text-decoration:underline dotted transparent;word-break:break-all}.sc-msg-meta[_ngcontent-%COMP%] .peer[_ngcontent-%COMP%]:hover{text-decoration-color:currentColor}.sc-msg-text[_ngcontent-%COMP%]{white-space:pre-wrap;word-break:break-word;font-size:13px}.sc-composer[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:flex-start;margin-top:8px}.sc-composer[_ngcontent-%COMP%] .field-pk[_ngcontent-%COMP%]{flex:1 1 360px}.sc-composer[_ngcontent-%COMP%] .field-sm[_ngcontent-%COMP%]{flex:0 1 130px}.sc-composer[_ngcontent-%COMP%] .field-msg[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0}.sc-composer[_ngcontent-%COMP%] .send-btn[_ngcontent-%COMP%]{flex:0 0 auto;align-self:center;height:56px;white-space:nowrap}"]})}}return t})();function ds(t=0,n=Nf){return t<0&&(t=0),Ls(t,t,n)}function bTe(t,n){1&t&&(h(0,"div",8),L(1,"mat-spinner",13),h(2,"span",14),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"bandwidth.loading")))}function vTe(t,n){if(1&t&&(h(0,"div",9)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",14),p(4),u()()),2&t){const e=y(2);c(4),S(e.error)}}function yTe(t,n){if(1&t&&(h(0,"span",16),p(1),_(2,"translate"),_(3,"date"),u()),2&t){const e=y(3);c(),nt("\u2014 ",v(2,2,"bandwidth.last-updated"),": ",ue(3,4,e.fetchedAt,"HH:mm:ss"))}}function CTe(t,n){if(1&t&&(h(0,"div",10)(1,"mat-icon"),p(2,"swap_vert"),u(),h(3,"span",15),p(4),_(5,"translate"),_(6,"translate"),_(7,"translate"),u(),x(8,yTe,4,7,"span",16),u()),2&t){const e=y(2);c(4),q0(" ",e.rows.length," ",v(5,6,"bandwidth.transports")," \xb7 ",e.fmtBytes(e.totalNetworkBw)," ",v(6,8,"bandwidth.total")," (",1===e.windowDays?v(7,10,"bandwidth.window-now"):e.windowDays+"d",") "),c(4),k(e.fetchedAt?8:-1)}}function wTe(t,n){1&t&&(h(0,"div",11),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"bandwidth.empty")))}function xTe(t,n){if(1&t&&(h(0,"span",25),p(1),u()),2&t){const e=y().$implicit,i=y(2);C("matTooltip",i.fmtLatencyTriple(e.current)),c(),D(" ",i.fmtLatency(e.current.latency_avg_ms)," ")}}function kTe(t,n){if(1&t&&(h(0,"div")(1,"span",24),p(2),_(3,"translate"),u(),h(4,"strong"),p(5),_(6,"date"),u()()),2&t){const e=y(3).$implicit;c(2),D("",v(3,2,"bandwidth.sampled-at"),":"),c(3),S(ue(6,4,e.current.sampled_at,"HH:mm:ss"))}}function STe(t,n){if(1&t&&(h(0,"div",27)(1,"div",28),p(2),_(3,"translate"),u(),h(4,"div",29)(5,"div")(6,"span",24),p(7),_(8,"translate"),u(),h(9,"strong"),p(10),u()(),h(11,"div")(12,"span",24),p(13),_(14,"translate"),u(),h(15,"strong"),p(16),u()(),h(17,"div")(18,"span",24),p(19),_(20,"translate"),u(),h(21,"strong"),p(22),u()(),x(23,kTe,7,7,"div"),u()()),2&t){const e=y(2).$implicit,i=y(2);c(2),S(v(3,8,"bandwidth.current-snapshot")),c(5),D("",v(8,10,"bandwidth.sent"),":"),c(3),S(i.fmtBytes(e.current.sent_bytes)),c(3),D("",v(14,12,"bandwidth.recv"),":"),c(3),S(i.fmtBytes(e.current.recv_bytes)),c(3),D("",v(20,14,"bandwidth.latency-current"),":"),c(3),S(i.fmtLatencyTriple(e.current)),c(),k(e.current.sampled_at?23:-1)}}function MTe(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2),u(),h(3,"td",31),p(4),u(),h(5,"td",31),p(6),u(),h(7,"td",31)(8,"strong"),p(9),u()(),h(10,"td",31),p(11),u(),h(12,"td",32),p(13),u()()),2&t){const e=n.$implicit,i=y(5);c(2),S(e.date),c(2),S(i.fmtBytes(e.sent_bytes)),c(2),S(i.fmtBytes(e.recv_bytes)),c(3),S(i.fmtBytes((e.sent_bytes||0)+(e.recv_bytes||0))),c(2),S(i.fmtLatencyTriple(e)),c(2),S(e.samples||0)}}function DTe(t,n){if(1&t&&(h(0,"div",27)(1,"div",28),p(2),_(3,"translate"),u(),h(4,"table",30)(5,"tr")(6,"th"),p(7),_(8,"translate"),u(),h(9,"th",31),p(10),_(11,"translate"),u(),h(12,"th",31),p(13),_(14,"translate"),u(),h(15,"th",31),p(16),_(17,"translate"),u(),h(18,"th",31),p(19),_(20,"translate"),u(),h(21,"th",31),p(22),_(23,"translate"),u()(),me(24,MTe,14,6,"tr",null,wi().trackDay,!0),u()()),2&t){const e=y(2).$implicit;c(2),S(v(3,7,"bandwidth.daily-history")),c(5),S(v(8,9,"bandwidth.date")),c(3),S(v(11,11,"bandwidth.sent")),c(3),S(v(14,13,"bandwidth.recv")),c(3),S(v(17,15,"bandwidth.total")),c(3),S(v(20,17,"bandwidth.latency-min-avg-max")),c(3),S(v(23,19,"bandwidth.samples")),c(2),ge(e.daily)}}function TTe(t,n){1&t&&(h(0,"div",27)(1,"div",24),p(2),_(3,"translate"),u()()),2&t&&(c(2),S(v(3,1,"bandwidth.no-history")))}function ETe(t,n){if(1&t&&(h(0,"div",26),x(1,STe,24,16,"div",27),x(2,DTe,26,21,"div",27)(3,TTe,4,3,"div",27),u()),2&t){const e=y().$implicit;c(),k(e.current?1:-1),c(),k(e.daily&&e.daily.length>0?2:3)}}function PTe(t,n){if(1&t){const e=re();h(0,"div",17)(1,"div",18),F("click",function(){const o=V(e).$implicit;return H(y(2).toggleRow(o))}),h(2,"mat-icon",19),p(3),u(),h(4,"span",20),p(5),u(),h(6,"span",21),p(7),u(),h(8,"span",22),p(9),u(),h(10,"span",23)(11,"strong"),p(12),u(),h(13,"span",24),p(14),u()(),x(15,xTe,2,2,"span",25),u(),x(16,ETe,4,2,"div",26),u()}if(2&t){const e=n.$implicit,i=y(2);ve("expanded",e.expanded),c(2),C("inline",!0),c(),S(e.expanded?"expand_more":"chevron_right"),c(2),S(e.type||"-"),c(2),S(e.id),c(2),D("\u2192 ",i.remotePK(e)),c(3),S(i.fmtBytes(e.totalBw)),c(2),nt("\u2191 ",i.fmtBytes(e.totalSent)," \u2193 ",i.fmtBytes(e.totalRecv)),c(),k(null!=e.current&&e.current.latency_avg_ms?15:-1),c(),k(e.expanded?16:-1)}}function ITe(t,n){if(1&t){const e=re();h(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3)(4,"span",4),p(5),_(6,"translate"),u(),h(7,"button",5),F("click",function(){return V(e),H(y().setWindow(1))}),p(8),_(9,"translate"),u(),h(10,"button",5),F("click",function(){return V(e),H(y().setWindow(7))}),p(11,"7d"),u(),h(12,"button",5),F("click",function(){return V(e),H(y().setWindow(30))}),p(13,"30d"),u()(),h(14,"button",6),F("click",function(){return V(e),H(y().refreshNow())}),h(15,"mat-icon",7),p(16,"refresh"),u(),p(17),_(18,"translate"),u()(),x(19,bTe,5,4,"div",8),x(20,vTe,5,1,"div",9),x(21,CTe,9,12,"div",10),x(22,wTe,3,3,"div",11),me(23,PTe,17,12,"div",12,wi().trackRow,!0),u()()}if(2&t){const e=y();c(5),D("",v(6,14,"bandwidth.window"),":"),c(2),ve("active",1===e.windowDays),c(),S(v(9,16,"bandwidth.window-now")),c(2),ve("active",7===e.windowDays),c(2),ve("active",30===e.windowDays),c(3),C("inline",!0),c(2),D(" ",v(18,18,"bandwidth.refresh")," "),c(2),k(e.loading&&0===e.rows.length?19:-1),c(),k(e.error&&0===e.rows.length?20:-1),c(),k(e.rows.length>0?21:-1),c(),k(0!==e.rows.length||e.loading||e.error?-1:22),c(),ge(e.rows)}}let OTe=(()=>{class t extends Lt{constructor(e,i){super(),this.api=e,this.cdr=i,this.rows=[],this.loading=!0,this.error=null,this.fetchedAt=null,this.windowDays=7}ngOnInit(){return this.nodeSub=Me.currentNode.subscribe(e=>{const i=!this.node;this.node=e,i&&e&&this.startPolling()}),super.ngOnInit()}ngOnDestroy(){this.nodeSub?.unsubscribe(),this.pollSub?.unsubscribe()}setWindow(e){e!==this.windowDays&&(this.windowDays=e,this.recompute())}refreshNow(){this.node&&this.fetchOnce().subscribe()}toggleRow(e){e.expanded=!e.expanded}startPolling(){this.pollSub=ds(3e4).pipe(zn(0),wt(()=>this.fetchOnce())).subscribe()}fetchOnce(){return this.api.get(`visors/${this.node.localPk}/local-transport-stats`).pipe(ii(e=>(this.error=e?.message||"Failed to fetch bandwidth",this.loading=!1,this.cdr.markForCheck(),se(null))),wt(e=>(e&&this.consume(e),se(e))))}consume(e){this.rows=(e.transports||[]).map(o=>this.toRow(o)),this.recompute(),this.fetchedAt=e.fetched_at?new Date(e.fetched_at):new Date,this.loading=!1,this.error=null,this.cdr.markForCheck()}toRow(e){return{...e,expanded:!1,totalSent:0,totalRecv:0,totalBw:0}}recompute(){const e=new Date;e.setUTCDate(e.getUTCDate()-this.windowDays);const i=e.toISOString().slice(0,10);for(const o of this.rows){let r=0,s=0;if(1===this.windowDays)r=o.current?.sent_bytes||0,s=o.current?.recv_bytes||0;else for(const a of o.daily||[])a.date>=i&&(r+=a.sent_bytes||0,s+=a.recv_bytes||0);o.totalSent=r,o.totalRecv=s,o.totalBw=r+s}this.rows.sort((o,r)=>r.totalBw-o.totalBw)}get totalNetworkBw(){return this.rows.reduce((e,i)=>e+i.totalBw,0)}fmtBytes(e){if(null==e)return"-";if(0===e)return"0 B";const i=["B","KB","MB","GB","TB"];let o=0,r=e;for(;r>=1024&&oi!==this.node.localPk)||e.edges[0])||""}trackRow(e,i){return i.id}trackDay(e,i){return i.date}static{this.\u0275fac=function(i){return new(i||t)(O(fi),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-bandwidth"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow"],[1,"bw-controls"],[1,"control-group"],[1,"control-label"],["mat-button","",3,"click"],["mat-stroked-button","",1,"refresh-btn",3,"click"],[3,"inline"],[1,"loading-row"],[1,"error-row"],[1,"summary-line"],[1,"bw-empty"],[1,"bw-row",3,"expanded"],[3,"diameter"],[1,"ml-2"],[1,"ml-1"],[1,"last-updated"],[1,"bw-row"],[1,"bw-row-head",3,"click"],[1,"bw-exp",3,"inline"],[1,"bw-type-pill"],[1,"bw-tp-id","mono","small"],[1,"bw-remote","mono","small"],[1,"bw-totals"],[1,"dim"],[1,"bw-latency","dim",3,"matTooltip"],[1,"bw-row-body"],[1,"bw-section"],[1,"bw-section-title"],[1,"bw-grid"],[1,"responsive-table-translucid","bw-daily"],[1,"num"],[1,"num","dim"]],template:function(i,o){1&i&&x(0,ITe,25,20,"div",0),2&i&&k(o.node?0:-1)},dependencies:[Ht,Ae,Et,ci,vr,we],styles:[".bw-controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.bw-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.bw-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] .control-label[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffa6}.bw-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{min-width:0;padding:0 12px!important;opacity:.6;color:#ffffffd9!important}.bw-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{opacity:1;background:#2196f32e!important;color:#fff!important}.bw-controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%]{margin-left:auto;color:#ffffffd9!important}.bw-controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:inherit}.loading-row[_ngcontent-%COMP%], .error-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:16px 0}.error-row[_ngcontent-%COMP%]{color:#f87171}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em;margin-bottom:8px}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.bw-empty[_ngcontent-%COMP%]{padding:24px 0;color:#fff9;text-align:center}.dim[_ngcontent-%COMP%]{color:#fff9}.small[_ngcontent-%COMP%]{font-size:.85em}.mono[_ngcontent-%COMP%]{font-family:monospace;word-break:break-all}.bw-row[_ngcontent-%COMP%]{background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:4px;margin-bottom:6px}.bw-row.expanded[_ngcontent-%COMP%]{border-color:#2196f34d}.bw-row-head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:8px 12px;cursor:pointer;flex-wrap:wrap}.bw-row-head[_ngcontent-%COMP%]:hover{background:#ffffff0a}.bw-row-head[_ngcontent-%COMP%] .bw-exp[_ngcontent-%COMP%]{color:#fff9}.bw-row-head[_ngcontent-%COMP%] .bw-type-pill[_ngcontent-%COMP%]{display:inline-block;padding:1px 6px;border-radius:3px;background:#2196f32e;border:1px solid rgba(33,150,243,.35);font-size:11px;text-transform:lowercase}.bw-row-head[_ngcontent-%COMP%] .bw-tp-id[_ngcontent-%COMP%]{flex:0 1 320px;min-width:0;font-size:11px;color:#ffffffd9}.bw-row-head[_ngcontent-%COMP%] .bw-remote[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0;font-size:11px;color:#ffffffb3}.bw-row-head[_ngcontent-%COMP%] .bw-totals[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:8px;font-size:13px;flex:0 0 auto}.bw-row-head[_ngcontent-%COMP%] .bw-latency[_ngcontent-%COMP%]{font-size:12px;flex:0 0 auto}.bw-row-body[_ngcontent-%COMP%]{padding:4px 16px 12px 36px;border-top:1px solid rgba(255,255,255,.05)}.bw-section[_ngcontent-%COMP%]{margin-top:10px}.bw-section[_ngcontent-%COMP%] .bw-section-title[_ngcontent-%COMP%]{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:#ffffff8c;margin-bottom:6px}.bw-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:6px 16px;font-size:12px}.bw-grid[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{margin-left:4px;color:#fffffff2}.bw-daily[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .bw-daily[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{font-size:12px}.bw-daily[_ngcontent-%COMP%] td.num[_ngcontent-%COMP%], .bw-daily[_ngcontent-%COMP%] th.num[_ngcontent-%COMP%]{text-align:right;white-space:nowrap}"]})}}return t})();const ATe=(t,n)=>n.name;function RTe(t,n){1&t&&(h(0,"div",8),L(1,"mat-spinner",13),h(2,"span",14),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"uptime.loading")))}function FTe(t,n){if(1&t&&(h(0,"div",9)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",14),p(4),u()()),2&t){const e=y(2);c(4),S(e.error)}}function NTe(t,n){1&t&&(h(0,"div",10),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"uptime.empty")))}function LTe(t,n){if(1&t&&(h(0,"span",16)(1,"span",18),p(2),_(3,"translate"),u(),h(4,"span",19),p(5),u()()),2&t){const e=n.$implicit,i=y(3);c(2),S(v(3,3,i.tierLabel(e.name))),c(2),C("ngClass",i.pctClass(e.pct)),c(),S(i.fmtPct(e.pct))}}function BTe(t,n){if(1&t&&(h(0,"span",17),p(1),_(2,"translate"),_(3,"date"),u()),2&t){const e=y(3);c(),nt("\u2014 ",v(2,2,"uptime.last-updated"),": ",ue(3,4,e.fetchedAt,"HH:mm:ss"))}}function VTe(t,n){if(1&t&&(h(0,"div",11)(1,"span",15),p(2),_(3,"translate"),u(),me(4,LTe,6,5,"span",16,ATe),x(6,BTe,4,7,"span",17),u()),2&t){const e=y(2);c(2),D("",v(3,2,"uptime.window-avg"),":"),c(2),ge(e.summary),c(2),k(e.fetchedAt?6:-1)}}function HTe(t,n){1&t&&(h(0,"span",22),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"uptime.today")))}function UTe(t,n){if(1&t&&L(0,"span",28),2&t){const e=n.$implicit,i=y(4);ve("on","on"===e.state)("off","off"===e.state)("future","future"===e.state),C("matTooltip",i.cellTooltip(e))}}function zTe(t,n){if(1&t&&(h(0,"div",23)(1,"span",24),_(2,"translate"),p(3),_(4,"translate"),u(),h(5,"div",25),me(6,UTe,1,7,"span",26,wi().trackCell,!0),u(),h(8,"span",27),p(9),u()()),2&t){const e=n.$implicit,i=y(3);c(),C("matTooltip",v(2,4,i.tierInfo(e.name))),c(2),S(v(4,6,i.tierLabel(e.name))),c(3),ge(e.cells),c(2),C("ngClass",i.pctClass(e.pct,e.empty)),c(),D(" ",e.empty?"\u2013":i.fmtPct(e.pct)," ")}}function jTe(t,n){if(1&t&&(h(0,"div",12)(1,"div",20)(2,"span",21),p(3),u(),x(4,HTe,3,3,"span",22),u(),me(5,zTe,10,8,"div",23,wi().trackTier,!0),u()),2&t){const e=n.$implicit;c(3),S(e.date),c(),k(e.isToday?4:-1),c(),ge(e.tiers)}}function $Te(t,n){if(1&t){const e=re();h(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3)(4,"span",4),p(5),_(6,"translate"),u(),h(7,"button",5),F("click",function(){return V(e),H(y().setWindow(1))}),p(8),_(9,"translate"),u(),h(10,"button",5),F("click",function(){return V(e),H(y().setWindow(7))}),p(11,"7d"),u(),h(12,"button",5),F("click",function(){return V(e),H(y().setWindow(30))}),p(13,"30d"),u()(),h(14,"button",6),F("click",function(){return V(e),H(y().refreshNow())}),h(15,"mat-icon",7),p(16,"refresh"),u(),p(17),_(18,"translate"),u()(),x(19,RTe,5,4,"div",8),x(20,FTe,5,1,"div",9),x(21,NTe,3,3,"div",10),x(22,VTe,7,4,"div",11),me(23,jTe,7,2,"div",12,wi().trackDay,!0),u()()}if(2&t){const e=y();c(5),D("",v(6,14,"uptime.window"),":"),c(2),ve("active",1===e.windowDays),c(),S(v(9,16,"uptime.window-now")),c(2),ve("active",7===e.windowDays),c(2),ve("active",30===e.windowDays),c(3),C("inline",!0),c(2),D(" ",v(18,18,"uptime.refresh")," "),c(2),k(e.loading&&0===e.days.length?19:-1),c(),k(e.error&&0===e.days.length?20:-1),c(),k(0!==e.days.length||e.loading||e.error?-1:21),c(),k(e.days.length>0?22:-1),c(),ge(e.days)}}const TM=["process","dmsg","skynet"];let WTe=(()=>{class t extends Lt{constructor(e,i){super(),this.api=e,this.cdr=i,this.days=[],this.loading=!0,this.error=null,this.fetchedAt=null,this.windowDays=7,this.summary=[]}ngOnInit(){return this.nodeSub=Me.currentNode.subscribe(e=>{const i=!this.node;this.node=e,i&&e&&this.startPolling()}),super.ngOnInit()}ngOnDestroy(){this.nodeSub?.unsubscribe(),this.pollSub?.unsubscribe()}setWindow(e){e!==this.windowDays&&(this.windowDays=e,this.refreshNow())}refreshNow(){this.node&&this.fetchOnce().subscribe()}startPolling(){this.pollSub=ds(6e4).pipe(zn(0),wt(()=>this.fetchOnce())).subscribe()}fetchOnce(){const e=new Date,o=`?since=${new Date(e.getTime()-86400*this.windowDays*1e3).toISOString()}&until=${e.toISOString()}`;return this.api.get(`visors/${this.node.localPk}/local-uptime-stats${o}`).pipe(ii(r=>(this.error=r?.message||"Failed to fetch uptime",this.loading=!1,this.cdr.markForCheck(),se(null))),wt(r=>(r&&this.consume(r),se(r))))}consume(e){const i=e.tiers||{},o=(new Date).toISOString().slice(0,10),r=new Date,s=Math.floor((60*r.getUTCHours()+r.getUTCMinutes())/5),a=new Set;for(const g of TM){const b=i[g];if(b)for(const w of Object.keys(b))a.add(w)}const l=Array.from(a).sort().reverse(),d=[],f={},m={};for(const g of l){const b=g===o,w=[];for(const M of TM){const E=i[M]&&i[M][g]||"",I=this.buildCells(E,b,s);let A=0,W=0;for(const q of I)"future"!==q.state&&(W++,"on"===q.state&&A++);w.push({name:M,cells:I,pct:W>0?A/W*100:0,empty:!E}),f[M]=(f[M]||0)+A,m[M]=(m[M]||0)+W}d.push({date:g,isToday:b,tiers:w})}this.days=d,this.summary=TM.map(g=>({name:g,pct:m[g]>0?f[g]/m[g]*100:0})),this.fetchedAt=e.fetched_at?new Date(e.fetched_at):new Date,this.loading=!1,this.error=null,this.cdr.markForCheck()}buildCells(e,i,o){let s=e||"";s.length<288&&(s=s.padEnd(288," ")),s.length>288&&(s=s.slice(0,288));const a=new Array(288);for(let l=0;l<288;l++){let d;d=i&&l>=o?"future":"."===s.charAt(l)?"on":"off",a[l]={state:d,slot:l}}return a}fmtSlot(e){const i=5*e;return`${Math.floor(i/60).toString().padStart(2,"0")}:${(i%60).toString().padStart(2,"0")}`}cellTooltip(e){const i=this.fmtSlot(e.slot),o=this.fmtSlot(Math.min(e.slot+1,288));let r;switch(e.state){case"on":r="online";break;case"off":r="offline";break;default:r="future"}return`${i}\u2013${o} UTC: ${r}`}fmtPct(e){return e>=99.95?"100%":e>0&&e<1?"<1%":e.toFixed(1)+"%"}pctClass(e,i=!1){return i?"dim":e>=99?"up-good":e>=80?"up-mid":"up-bad"}tierLabel(e){return"uptime.tier-"+e}tierInfo(e){return"uptime.tier-"+e+"-info"}trackDay(e,i){return i.date}trackTier(e,i){return i.name}trackCell(e,i){return i.slot}static{this.\u0275fac=function(i){return new(i||t)(O(fi),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-uptime"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow"],[1,"up-controls"],[1,"control-group"],[1,"control-label"],["mat-button","",3,"click"],["mat-stroked-button","",1,"refresh-btn",3,"click"],[3,"inline"],[1,"loading-row"],[1,"error-row"],[1,"up-empty"],[1,"summary-strip"],[1,"up-day-block"],[3,"diameter"],[1,"ml-2"],[1,"summary-label"],[1,"summary-tier"],[1,"last-updated","dim","small"],[1,"summary-tier-name"],[1,"summary-tier-pct","mono",3,"ngClass"],[1,"up-day-head"],[1,"up-day-date","mono"],[1,"up-day-today","dim","small"],[1,"up-tier-line"],[1,"up-tier-name","small",3,"matTooltip"],[1,"up-bar"],[1,"up-cell",3,"on","off","future","matTooltip"],[1,"up-pct","mono","small",3,"ngClass"],[1,"up-cell",3,"matTooltip"]],template:function(i,o){1&i&&x(0,$Te,25,20,"div",0),2&i&&k(o.node?0:-1)},dependencies:[Ft,Ht,Ae,Et,ci,vr,we],styles:[".up-controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] .control-label[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffa6}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{min-width:0;padding:0 12px!important;opacity:.6;color:#ffffffd9!important}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{opacity:1;background:#2196f32e!important;color:#fff!important}.up-controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%]{margin-left:auto;color:#ffffffd9!important}.up-controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:inherit}.loading-row[_ngcontent-%COMP%], .error-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:12px}.up-empty[_ngcontent-%COMP%]{padding:24px;text-align:center;color:#ffffff80;font-style:italic}.summary-strip[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:8px 12px;margin-bottom:12px;background:#ffffff0a;border-radius:4px}.summary-strip[_ngcontent-%COMP%] .summary-label[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffa6}.summary-strip[_ngcontent-%COMP%] .summary-tier[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:6px}.summary-strip[_ngcontent-%COMP%] .summary-tier[_ngcontent-%COMP%] .summary-tier-name[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffbf}.summary-strip[_ngcontent-%COMP%] .summary-tier[_ngcontent-%COMP%] .summary-tier-pct[_ngcontent-%COMP%]{font-size:.95em;font-weight:600}.summary-strip[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{margin-left:auto}.up-day-block[_ngcontent-%COMP%]{margin-bottom:12px;background:#ffffff08;border-radius:4px;padding:8px 12px}.up-day-head[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:12px;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:6px}.up-day-head[_ngcontent-%COMP%] .up-day-date[_ngcontent-%COMP%]{font-weight:600;color:#fff;font-size:.95em}.up-day-head[_ngcontent-%COMP%] .up-day-today[_ngcontent-%COMP%]{color:#2196f3d9;text-transform:uppercase;letter-spacing:.05em}.up-tier-line[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:2px 0}.up-tier-line[_ngcontent-%COMP%] .up-tier-name[_ngcontent-%COMP%]{flex:0 0 auto;width:80px;color:#ffffffb3;text-transform:capitalize;cursor:help}.up-tier-line[_ngcontent-%COMP%] .up-bar[_ngcontent-%COMP%]{flex:1;display:flex;height:12px;background:#00000040;border-radius:2px;overflow:hidden;min-width:0}.up-tier-line[_ngcontent-%COMP%] .up-cell[_ngcontent-%COMP%]{flex:1;min-width:1px;height:100%;border-right:1px solid rgba(0,0,0,.18)}.up-tier-line[_ngcontent-%COMP%] .up-cell.on[_ngcontent-%COMP%]{background:#4caf50}.up-tier-line[_ngcontent-%COMP%] .up-cell.off[_ngcontent-%COMP%]{background:#e5393566}.up-tier-line[_ngcontent-%COMP%] .up-cell.future[_ngcontent-%COMP%]{background:#ffffff0a;background-image:repeating-linear-gradient(45deg,transparent,transparent 2px,rgba(255,255,255,.06) 2px,rgba(255,255,255,.06) 4px)}.up-tier-line[_ngcontent-%COMP%] .up-cell[_ngcontent-%COMP%]:last-child{border-right:none}.up-tier-line[_ngcontent-%COMP%] .up-pct[_ngcontent-%COMP%]{flex:0 0 auto;width:56px;text-align:right}.mono[_ngcontent-%COMP%]{font-family:monospace}.small[_ngcontent-%COMP%]{font-size:.85em}.dim[_ngcontent-%COMP%]{color:#ffffff8c}.up-good[_ngcontent-%COMP%]{color:#4caf50}.up-mid[_ngcontent-%COMP%]{color:#ff9800}.up-bad[_ngcontent-%COMP%]{color:#e53935}.ml-2[_ngcontent-%COMP%]{margin-left:8px}.ml-1[_ngcontent-%COMP%]{margin-left:4px}.mt-3[_ngcontent-%COMP%]{margin-top:12px}"]})}}return t})();function GTe(t,n){1&t&&L(0,"iframe",6),2&t&&C("src",y(2).iframeUrl,nC)}function qTe(t,n){if(1&t){const e=re();h(0,"div",0)(1,"div",1)(2,"div",2)(3,"span",3),p(4),_(5,"translate"),u(),h(6,"button",4),F("click",function(){return V(e),H(y().openFullWindow())}),h(7,"mat-icon",5),p(8,"open_in_new"),u(),p(9),_(10,"translate"),u()(),x(11,GTe,1,1,"iframe",6),u()()}if(2&t){const e=y();c(4),S(v(5,4,"terminal.help")),c(3),C("inline",!0),c(2),D(" ",v(10,6,"terminal.open-fullscreen")," "),c(2),k(e.iframeUrl?11:-1)}}let KTe=(()=>{class t extends Lt{constructor(e){super(),this.sanitizer=e,this.iframeUrl=null,this.fullWindowUrl="",this.boundPk=""}ngOnInit(){return this.nodeSub=Me.currentNode.subscribe(e=>{if(this.node=e,e&&e.localPk&&e.localPk!==this.boundPk){const i="/pty/"+e.localPk;this.iframeUrl=this.sanitizer.bypassSecurityTrustResourceUrl(i),this.fullWindowUrl=window.location.origin+i,this.boundPk=e.localPk}}),super.ngOnInit()}ngOnDestroy(){this.nodeSub?.unsubscribe()}openFullWindow(){this.fullWindowUrl&&window.open(this.fullWindowUrl,"_blank","noopener noreferrer")}static{this.\u0275fac=function(i){return new(i||t)(O(K_))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-terminal"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[1,"rounded-elevated-box","mt-3","term-box"],[1,"box-internal-container","term-shell"],[1,"term-controls"],[1,"dim","small"],["mat-stroked-button","",1,"term-fullscreen",3,"click"],[3,"inline"],["allowfullscreen","",1,"term-frame",3,"src"]],template:function(i,o){1&i&&x(0,qTe,12,8,"div",0),2&i&&k(o.node?0:-1)},dependencies:[Ht,Ae,we],styles:[".term-box[_ngcontent-%COMP%]{display:flex;flex-direction:column}.term-shell[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;padding-bottom:4px}.term-controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;padding:4px 0}.term-controls[_ngcontent-%COMP%] .dim[_ngcontent-%COMP%]{color:#fff9}.term-controls[_ngcontent-%COMP%] .small[_ngcontent-%COMP%]{font-size:.85em}.term-controls[_ngcontent-%COMP%] .term-fullscreen[_ngcontent-%COMP%]{margin-left:auto;color:#ffffffd9!important}.term-controls[_ngcontent-%COMP%] .term-fullscreen[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:inherit}.term-frame[_ngcontent-%COMP%]{width:100%;height:70vh;min-height:420px;border:1px solid rgba(255,255,255,.08);border-radius:6px;background:#000}"]})}}return t})();function YTe(t,n){1&t&&(h(0,"div",4),L(1,"mat-spinner",14),h(2,"span",15),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"web-proxy.loading")))}function XTe(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2,".dmsg"),u(),h(3,"td"),p(4),u(),h(5,"td",16),p(6),u(),h(7,"td",16),p(8),u()()),2&t){const e=y(3);c(3),Ge(e.proxyStatus.dmsg_web.running?"wp-ok":"wp-off"),c(),D(" ",e.proxyStatus.dmsg_web.running?"Yes":"No"," "),c(2),S(e.proxyStatus.dmsg_web.socks_addr||"-"),c(2),S(e.proxyStatus.dmsg_web.upstream_socks||"direct")}}function ZTe(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2,".skynet"),u(),h(3,"td"),p(4),u(),h(5,"td",16),p(6),u(),h(7,"td",16),p(8),u()()),2&t){const e=y(3);c(3),Ge(e.proxyStatus.skynet_web.running?"wp-ok":"wp-off"),c(),D(" ",e.proxyStatus.skynet_web.running?"Yes":"No"," "),c(2),S(e.proxyStatus.skynet_web.socks_addr||"-"),c(2),S(e.proxyStatus.skynet_web.upstream_socks||"direct")}}function QTe(t,n){if(1&t&&(h(0,"table",5)(1,"tr")(2,"th"),p(3),_(4,"translate"),u(),h(5,"th"),p(6),_(7,"translate"),u(),h(8,"th"),p(9),_(10,"translate"),u(),h(11,"th"),p(12),_(13,"translate"),u()(),x(14,XTe,9,5,"tr"),x(15,ZTe,9,5,"tr"),u()),2&t){const e=y(2);c(3),S(v(4,6,"web-proxy.resolver")),c(3),S(v(7,8,"web-proxy.running")),c(3),S(v(10,10,"web-proxy.socks-addr")),c(3),S(v(13,12,"web-proxy.upstream")),c(2),k(e.proxyStatus.dmsg_web?14:-1),c(),k(e.proxyStatus.skynet_web?15:-1)}}function JTe(t,n){if(1&t){const e=re();h(0,"div",0)(1,"div",1)(2,"span",2),p(3),_(4,"translate"),u(),h(5,"p",3),p(6),_(7,"translate"),u(),x(8,YTe,5,4,"div",4),x(9,QTe,16,14,"table",5),h(10,"div",6)(11,"mat-checkbox",7),F("change",function(o){V(e);const r=y();return r.form.get("skynetEnabled").setValue(o.checked),H(r.toggleProxy())}),p(12),_(13,"translate"),u(),h(14,"form",8)(15,"mat-form-field",9)(16,"mat-label"),p(17),_(18,"translate"),u(),L(19,"input",10),u(),h(20,"button",11),F("click",function(){return V(e),H(y().setUpstream())}),p(21),_(22,"translate"),u()(),h(23,"button",12),F("click",function(){return V(e),H(y().refresh())}),h(24,"mat-icon",13),p(25,"refresh"),u(),p(26),_(27,"translate"),u()()()()}if(2&t){const e=y();c(3),S(v(4,14,"web-proxy.title")),c(3),S(v(7,16,"web-proxy.help")),c(2),k(e.loading&&!e.proxyStatus?8:-1),c(),k(e.proxyStatus&&(e.proxyStatus.dmsg_web||e.proxyStatus.skynet_web)?9:-1),c(2),C("checked",e.form.get("skynetEnabled").value)("disabled",e.loading),c(),D(" ",v(13,18,"web-proxy.enable")," "),c(2),C("formGroup",e.form),c(3),S(v(18,20,"web-proxy.upstream-label")),c(3),C("disabled",e.loading),c(),D(" ",v(22,22,"web-proxy.set")," "),c(2),C("disabled",e.loading),c(),C("inline",!0),c(2),D(" ",v(27,24,"web-proxy.refresh")," ")}}let e2e=(()=>{class t extends Lt{constructor(e,i,o){super(),this.nodeService=e,this.snackbar=i,this.cdr=o,this.loading=!1,this.proxyStatus=null,this.form=new ov({skynetEnabled:new Ia(!1),upstream:new Ia("")})}ngOnInit(){return this.nodeSub=Me.currentNode.subscribe(e=>{const i=!this.node;this.node=e,i&&e&&this.loadStatus()}),super.ngOnInit()}ngOnDestroy(){this.nodeSub?.unsubscribe()}loadStatus(){this.node&&(this.loading=!0,this.nodeService.getProxies(this.node.localPk).subscribe(e=>{this.proxyStatus=e,this.loading=!1;const i=e?.skynet_web?.running||!1,o=e?.skynet_web?.upstream_socks||"";this.form.get("skynetEnabled").setValue(i),this.form.get("upstream").setValue(o),this.cdr.markForCheck()},()=>{this.loading=!1,this.cdr.markForCheck()}))}toggleProxy(){if(!this.node)return;const e=this.form.get("skynetEnabled").value;this.loading=!0,this.nodeService.setProxyEnabled(this.node.localPk,"skynet",e).subscribe(()=>{this.nodeService.setProxyEnabled(this.node.localPk,"dmsg",e).subscribe(()=>{this.loading=!1,this.snackbar.showDone(e?"Resolving proxy enabled":"Resolving proxy disabled"),this.loadStatus()},()=>{this.loading=!1})},()=>{this.loading=!1,this.snackbar.showError("Failed to toggle proxy")})}setUpstream(){if(!this.node)return;const e=(this.form.get("upstream").value||"").trim();this.loading=!0,this.nodeService.setProxyUpstream(this.node.localPk,"skynet",e).subscribe(()=>{this.loading=!1,this.snackbar.showDone(e?`Upstream set to ${e}`:"Upstream cleared"),this.loadStatus()},()=>{this.loading=!1,this.snackbar.showError("Failed to set upstream")})}refresh(){this.loadStatus()}static{this.\u0275fac=function(i){return new(i||t)(O(Yi),O(ot),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-web-proxy"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow"],[1,"section-title"],[1,"dim","small","wp-help"],[1,"loading-row"],[1,"responsive-table-translucid","wp-status"],[1,"wp-controls"],[3,"change","checked","disabled"],[1,"wp-upstream",3,"formGroup"],["appearance","outline",1,"wp-upstream-field"],["matInput","","formControlName","upstream","placeholder","127.0.0.1:1080"],["mat-raised-button","","color","primary",3,"click","disabled"],["mat-stroked-button","",1,"wp-refresh",3,"click","disabled"],[3,"inline"],[3,"diameter"],[1,"ml-2"],[1,"mono","small"]],template:function(i,o){1&i&&x(0,JTe,28,26,"div",0),2&i&&k(o.node?0:-1)},dependencies:[kn,Qt,Jt,xn,sn,_n,dn,ns,On,Ht,Ae,ci,Fo,we],styles:[".dim[_ngcontent-%COMP%]{color:#fff9}.small[_ngcontent-%COMP%]{font-size:.85em}.mono[_ngcontent-%COMP%]{font-family:monospace;word-break:break-all}.wp-help[_ngcontent-%COMP%]{margin:4px 0 12px}.loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:12px 0}.wp-status[_ngcontent-%COMP%]{margin-bottom:16px}.wp-status[_ngcontent-%COMP%] td.mono[_ngcontent-%COMP%]{font-size:11px}.wp-status[_ngcontent-%COMP%] .wp-ok[_ngcontent-%COMP%]{color:#4caf50}.wp-status[_ngcontent-%COMP%] .wp-off[_ngcontent-%COMP%]{color:#fff9}.wp-controls[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;align-items:flex-start}.wp-controls[_ngcontent-%COMP%] .wp-upstream[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.wp-controls[_ngcontent-%COMP%] .wp-upstream-field[_ngcontent-%COMP%]{flex:1 1 320px;min-width:220px}.wp-controls[_ngcontent-%COMP%] .wp-refresh[_ngcontent-%COMP%]{color:#ffffffd9!important}.wp-controls[_ngcontent-%COMP%] .wp-refresh[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:inherit}"]})}}return t})();const t2e=["content"],n2e=t=>({count:t}),i2e=t=>({number:t}),o2e=(t,n)=>n.level,r2e=(t,n)=>n.name;function s2e(t,n){if(1&t){const e=re();h(0,"button",16),F("click",function(){const o=V(e).$implicit;return H(y(2).setLevel(o.level))}),p(1),u()}if(2&t){const e=n.$implicit;ve("active",y(2).minLevel===e.level),c(),D(" ",e.label," ")}}function a2e(t,n){if(1&t&&(h(0,"div",11)(1,"mat-icon",9),p(2,"history"),u(),p(3),_(4,"translate"),u()),2&t){const e=y(2);c(),C("inline",!0),c(2),D(" ",ue(4,2,"logs.dropped",ie(5,n2e,e.totalDropped))," ")}}function l2e(t,n){1&t&&(h(0,"div",12),L(1,"mat-spinner",17),h(2,"span",18),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"logs.loading")))}function c2e(t,n){1&t&&(h(0,"div",13),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"logs.empty")))}function d2e(t,n){if(1&t&&(h(0,"div",15)(1,"a",19),p(2),_(3,"translate"),u()()),2&t){const e=y(2);c(),C("href",e.fullLogsUrl(),$i),c(),D(" ",ue(3,2,"logs.view-rest",ie(5,i2e,e.totalLogs))," ")}}function u2e(t,n){if(1&t&&(h(0,"span",22),p(1),u()),2&t){const e=y().$implicit;c(),D("[",e.func,"]")}}function h2e(t,n){if(1&t&&(h(0,"span",24),p(1),u()),2&t){const e=n.$implicit;c(),nt(" ",e.name,"=",e.value)}}function f2e(t,n){if(1&t&&(h(0,"div",15)(1,"span",20),p(2),u(),h(3,"span",21),p(4),u(),x(5,u2e,2,1,"span",22),h(6,"span",23),p(7),u(),me(8,h2e,2,2,"span",24,r2e),u()),2&t){const e=n.$implicit,i=y(2);c(2),S(e.time),c(),Ge(i.levelClass(e.level)),c(),S(i.levelName(e.level)),c(),k(e.func?5:-1),c(2),S(e.msg),c(),ge(e.extra)}}function p2e(t,n){if(1&t){const e=re();h(0,"div",1)(1,"div",2)(2,"div",3)(3,"div",4)(4,"span",5),p(5),_(6,"translate"),u(),me(7,s2e,2,3,"button",6,o2e),u(),h(9,"div",7)(10,"button",8),F("click",function(){return V(e),H(y().toggleLiveTail())}),h(11,"mat-icon",9),p(12),u(),p(13),_(14,"translate"),_(15,"translate"),u(),h(16,"a",10)(17,"mat-icon",9),p(18,"open_in_new"),u(),p(19),_(20,"translate"),u()()(),x(21,a2e,5,7,"div",11),x(22,l2e,5,4,"div",12),x(23,c2e,3,3,"div",13),h(24,"div",14,0),x(26,d2e,4,7,"div",15),me(27,f2e,10,6,"div",15,wi().trackEntry,!0),u()()()}if(2&t){const e=y();c(5),D("",v(6,13,"logs.filter"),":"),c(2),ge(e.levels),c(3),ve("active",e.liveTail),c(),C("inline",!0),c(),S(e.liveTail?"pause":"play_arrow"),c(),D(" ",e.liveTail?v(14,15,"logs.pause"):v(15,17,"logs.resume")," "),c(3),C("href",e.fullLogsUrl(),$i),c(),C("inline",!0),c(2),D(" ",v(20,19,"logs.open-raw")," "),c(2),k(e.totalDropped>0?21:-1),c(),k(e.loading&&0===e.logEntries.length?22:-1),c(),k(0!==e.filteredLogEntries.length||e.loading?-1:23),c(3),k(e.hasMoreLogMessages?26:-1),c(),ge(e.filteredLogEntries)}}var Bt=function(t){return t[t.Panic=8]="Panic",t[t.Fatal=7]="Fatal",t[t.Error=6]="Error",t[t.Warn=5]="Warn",t[t.Info=4]="Info",t[t.Debug=3]="Debug",t[t.Trace=2]="Trace",t[t.Unknown=1]="Unknown",t}(Bt||{});let m2e=(()=>{class t extends Lt{constructor(e,i,o,r){super(),this.nodeService=e,this.snackbar=i,this.ngZone=o,this.cdr=r,this.loading=!0,this.liveTail=!0,this.livePollMs=2e3,this.totalDropped=0,this.totalLogs=0,this.hasMoreLogMessages=!1,this.minLevel=Bt.Unknown,this.levels=[{level:Bt.Unknown,label:"All",cls:""},{level:Bt.Debug,label:"Debug+",cls:""},{level:Bt.Info,label:"Info+",cls:""},{level:Bt.Warn,label:"Warn+",cls:""},{level:Bt.Error,label:"Error+",cls:""},{level:Bt.Fatal,label:"Fatal+",cls:""},{level:Bt.Panic,label:"Panic",cls:""}],this.logEntries=[],this.filteredLogEntries=[],this.maxBufferEntries=1e3,this.logCursor=0,this.wasAtBottom=!0,this.shouldShowError=!0}ngOnInit(){return this.nodeSub=Me.currentNode.subscribe(e=>{const i=!this.node;this.node=e,i&&e&&this.loadData(0)}),super.ngOnInit()}ngOnDestroy(){this.nodeSub?.unsubscribe(),this.subscription?.unsubscribe()}setLevel(e){this.minLevel=e,this.applyFilter()}toggleLiveTail(){this.liveTail=!this.liveTail,this.liveTail?this.loadData(0):this.subscription?.unsubscribe()}fullLogsUrl(){if(!this.node)return"";return window.location.origin+"/api/visors/"+this.node.localPk+"/runtime-logs"}loadData(e){if(!this.node)return;this.subscription?.unsubscribe(),this.captureScrollTailState(),this.loading=0===this.logEntries.length;const i=this.logCursor;this.subscription=se(1).pipe(oi(e),Tt(()=>this.nodeService.getRuntimeLogsSince(this.node.localPk,i))).subscribe(o=>this.onDelta(o),o=>this.onError(o))}onDelta(e){if(!e)return this.loading=!1,void this.scheduleNext();const i=0===this.logCursor;this.logCursor="number"==typeof e.latest?e.latest:this.logCursor,"number"==typeof e.dropped&&e.dropped>0&&(this.totalDropped+=e.dropped);const o=Array.isArray(e.entries)?e.entries:[],r=[];for(const s of o)try{r.push(JSON.parse(s))}catch{}i&&(this.logEntries=[]),this.appendParsed(r),this.logEntries.length>this.maxBufferEntries&&(this.logEntries=this.logEntries.slice(this.logEntries.length-this.maxBufferEntries),this.hasMoreLogMessages=!0),this.totalLogs=this.logCursor,this.loading=!1,this.shouldShowError=!0,this.applyFilter(),this.cdr.markForCheck(),this.scheduleNext()}appendParsed(e){for(const i of e){const o={time:i.time,level:this.parseLevel(i.level),msg:i.msg,func:i.func,module:i._module,extra:[]};i.error&&o.extra.push({name:"error",value:i.error});const r=new Set(["time","_module","msg","func","level","log_line","error"]);for(const s in i)r.has(s)||o.extra.push({name:s,value:i[s]});this.logEntries.push(o)}}parseLevel(e){const i=(e||"").toLowerCase();return i.includes("panic")?Bt.Panic:i.includes("fatal")?Bt.Fatal:i.includes("error")?Bt.Error:i.includes("warn")?Bt.Warn:i.includes("info")?Bt.Info:i.includes("debug")?Bt.Debug:i.includes("trace")?Bt.Trace:Bt.Unknown}applyFilter(){this.filteredLogEntries=this.logEntries.filter(e=>e.level>=this.minLevel),this.wasAtBottom&&setTimeout(()=>{if(this.content){const e=this.content.nativeElement;e.scrollTop=e.scrollHeight}})}captureScrollTailState(){if(!this.content)return void(this.wasAtBottom=!0);const e=this.content.nativeElement;this.wasAtBottom=e.scrollHeight-e.scrollTop-e.clientHeight<40}scheduleNext(){this.liveTail&&this.ngZone.run(()=>this.loadData(this.livePollMs))}onError(e){e=Ze(e),this.shouldShowError&&(this.snackbar.showError("common.loading-error",null,!0,e),this.shouldShowError=!1),this.loadData(at.connectionRetryDelay)}levelClass(e){switch(e){case Bt.Panic:case Bt.Fatal:return"lvl-fatal";case Bt.Error:return"lvl-error";case Bt.Warn:return"lvl-warn";case Bt.Info:return"lvl-info";case Bt.Debug:return"lvl-debug";case Bt.Trace:return"lvl-trace";default:return"lvl-unknown"}}levelName(e){switch(e){case Bt.Panic:return"PANIC";case Bt.Fatal:return"FATAL";case Bt.Error:return"ERROR";case Bt.Warn:return"WARN";case Bt.Info:return"INFO";case Bt.Debug:return"DEBUG";case Bt.Trace:return"TRACE";default:return"LOG"}}trackEntry(e,i){return i}static{this.\u0275fac=function(i){return new(i||t)(O(Yi),O(ot),O(Ce),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-logs"]],viewQuery:function(i,o){if(1&i&&st(t2e,5),2&i){let r;fe(r=pe())&&(o.content=r.first)}},standalone:!1,features:[_e],decls:1,vars:1,consts:[["content",""],[1,"rounded-elevated-box","mt-3","logs-box"],[1,"box-internal-container","logs-shell"],[1,"logs-controls"],[1,"logs-filter-row"],[1,"control-label","dim"],["mat-button","",3,"active"],[1,"logs-action-row"],["mat-button","",1,"logs-tail",3,"click"],[3,"inline"],["target","_blank","rel","noreferrer",1,"logs-raw-link",3,"href"],[1,"logs-dropped-banner"],[1,"loading-row"],[1,"logs-empty"],[1,"logs-list"],[1,"log-entry"],["mat-button","",3,"click"],[3,"diameter"],[1,"ml-2"],["target","_blank",1,"logs-raw-link",3,"href"],[1,"le-time","dim"],[1,"le-level"],[1,"le-func","dim"],[1,"le-msg"],[1,"le-extra","dim"]],template:function(i,o){1&i&&x(0,p2e,29,21,"div",1),2&i&&k(o.node?0:-1)},dependencies:[Ht,Ae,ci,we],styles:[".dim[_ngcontent-%COMP%]{color:#fff9}.logs-box[_ngcontent-%COMP%]{display:flex;flex-direction:column}.logs-shell[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.logs-controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding-bottom:4px;border-bottom:1px solid rgba(255,255,255,.06)}.logs-filter-row[_ngcontent-%COMP%], .logs-action-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.logs-action-row[_ngcontent-%COMP%]{margin-left:auto;gap:8px}.logs-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{min-width:0;padding:0 10px!important;opacity:.65;color:#ffffffd9!important}.logs-controls[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{opacity:1;background:#2196f32e!important;color:#fff!important}.control-label[_ngcontent-%COMP%]{margin-right:4px;font-size:.85em}.logs-raw-link[_ngcontent-%COMP%]{color:#ffffffd9;text-decoration:none;display:inline-flex;align-items:center;gap:4px;font-size:.9em}.logs-raw-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.logs-raw-link[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{font-size:16px}.logs-dropped-banner[_ngcontent-%COMP%]{background:#e539351f;border:1px solid rgba(229,57,53,.35);color:#ffc8c8f2;padding:6px 10px;border-radius:4px;font-size:.85em;display:flex;align-items:center;gap:6px}.loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:16px 0}.logs-empty[_ngcontent-%COMP%]{padding:24px 0;text-align:center;color:#ffffff80}.logs-list[_ngcontent-%COMP%]{background:#00000040;border:1px solid rgba(255,255,255,.06);border-radius:6px;font-family:Consolas,Monaco,Courier New,monospace;font-size:.78em;height:65vh;min-height:400px;overflow-y:auto;padding:8px 12px}.log-entry[_ngcontent-%COMP%]{white-space:pre-wrap;word-break:break-word;padding:1px 0;line-height:1.4}.log-entry[_ngcontent-%COMP%] .le-time[_ngcontent-%COMP%]{margin-right:6px}.log-entry[_ngcontent-%COMP%] .le-level[_ngcontent-%COMP%]{display:inline-block;min-width:50px;margin-right:6px;font-weight:600}.log-entry[_ngcontent-%COMP%] .le-func[_ngcontent-%COMP%]{margin-right:6px}.log-entry[_ngcontent-%COMP%] .le-msg[_ngcontent-%COMP%]{color:#ffffffeb}.log-entry[_ngcontent-%COMP%] .le-extra[_ngcontent-%COMP%]{font-size:.92em}.lvl-fatal[_ngcontent-%COMP%]{color:#ff6b6b}.lvl-error[_ngcontent-%COMP%]{color:#f44336}.lvl-warn[_ngcontent-%COMP%]{color:#ff9800}.lvl-info[_ngcontent-%COMP%]{color:#4caf50}.lvl-debug[_ngcontent-%COMP%]{color:#03a9f4}.lvl-trace[_ngcontent-%COMP%]{color:#ffffff8c}.lvl-unknown[_ngcontent-%COMP%]{color:#ffffffb3}"]})}}return t})(),hH=(()=>{class t{constructor(e){this.apiService=e}create(e,i,o){const r={remote_pk:i};return o&&(r.transport_type=o),this.apiService.post(`visors/${e}/transports`,r)}delete(e,i){return this.apiService.delete(`visors/${e}/transports/${i}`)}savePersistentTransportsData(e,i){return this.apiService.put(`visors/${e}/persistent-transports`,i)}getPersistentTransports(e){return this.apiService.get(`visors/${e}/persistent-transports`)}types(e){return this.apiService.get(`visors/${e}/transport-types`)}changeAutoconnectSetting(e,i){const o={};return o.public_autoconnect=i,this.apiService.put(`visors/${e}/public-autoconnect`,o)}static{this.\u0275fac=function(i){return new(i||t)(ce(fi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const g2e=["switch"],_2e=["*"];function b2e(t,n){1&t&&(h(0,"span",11),ul(),h(1,"svg",13),L(2,"path",14),u(),h(3,"svg",15),L(4,"path",16),u()())}const v2e=new Z("mat-slide-toggle-default-options",{providedIn:"root",factory:()=>({disableToggleValue:!1,hideIcon:!1,disabledInteractive:!1})});class fH{source;checked;constructor(n,e){this.source=n,this.checked=e}}let pH=(()=>{class t{_elementRef=T(Ne);_focusMonitor=T(ac);_changeDetectorRef=T(Dt);defaults=T(v2e);_onChange=e=>{};_onTouched=()=>{};_validatorOnChange=()=>{};_uniqueId;_checked=!1;_createChangeEvent(e){return new fH(this,e)}_labelId;get buttonId(){return`${this.id||this._uniqueId}-button`}_switchElement;focus(){this._switchElement.nativeElement.focus()}_noopAnimations=hi();_focused=!1;name=null;id;labelPosition="after";ariaLabel=null;ariaLabelledby=null;ariaDescribedby;required=!1;color;disabled=!1;disableRipple=!1;tabIndex=0;get checked(){return this._checked}set checked(e){this._checked=e,this._changeDetectorRef.markForCheck()}hideIcon;disabledInteractive;change=new ke;toggleChange=new ke;get inputId(){return`${this.id||this._uniqueId}-input`}constructor(){T(qo).load(cu);const e=T(new tf("tabindex"),{optional:!0}),i=this.defaults;this.tabIndex=null==e?0:parseInt(e)||0,this.color=i.color||"accent",this.id=this._uniqueId=T(si).getId("mat-mdc-slide-toggle-"),this.hideIcon=i.hideIcon??!1,this.disabledInteractive=i.disabledInteractive??!1,this._labelId=this._uniqueId+"-label"}ngAfterContentInit(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{"keyboard"===e||"program"===e?(this._focused=!0,this._changeDetectorRef.markForCheck()):e||Promise.resolve().then(()=>{this._focused=!1,this._onTouched(),this._changeDetectorRef.markForCheck()})})}ngOnChanges(e){e.required&&this._validatorOnChange()}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}writeValue(e){this.checked=!!e}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}validate(e){return this.required&&!0!==e.value?{required:!0}:null}registerOnValidatorChange(e){this._validatorOnChange=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck()}toggle(){this.checked=!this.checked,this._onChange(this.checked)}_emitChangeEvent(){this._onChange(this.checked),this.change.emit(this._createChangeEvent(this.checked))}_handleClick(){this.disabled||(this.toggleChange.emit(),this.defaults.disableToggleValue||(this.checked=!this.checked,this._onChange(this.checked),this.change.emit(new fH(this,this.checked))))}_getAriaLabelledBy(){return this.ariaLabelledby?this.ariaLabelledby:this.ariaLabel?null:this._labelId}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-slide-toggle"]],viewQuery:function(i,o){if(1&i&&st(g2e,5),2&i){let r;fe(r=pe())&&(o._switchElement=r.first)}},hostAttrs:[1,"mat-mdc-slide-toggle"],hostVars:13,hostBindings:function(i,o){2&i&&(gr("id",o.id),We("tabindex",null)("aria-label",null)("name",null)("aria-labelledby",null),Ge(o.color?"mat-"+o.color:""),ve("mat-mdc-slide-toggle-focused",o._focused)("mat-mdc-slide-toggle-checked",o.checked)("_mat-animation-noopable",o._noopAnimations))},inputs:{name:"name",id:"id",labelPosition:"labelPosition",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],required:[2,"required","required",Te],color:"color",disabled:[2,"disabled","disabled",Te],disableRipple:[2,"disableRipple","disableRipple",Te],tabIndex:[2,"tabIndex","tabIndex",e=>null==e?0:_r(e)],checked:[2,"checked","checked",Te],hideIcon:[2,"hideIcon","hideIcon",Te],disabledInteractive:[2,"disabledInteractive","disabledInteractive",Te]},outputs:{change:"change",toggleChange:"toggleChange"},exportAs:["matSlideToggle"],features:[dt([{provide:Qo,useExisting:jt(()=>t),multi:!0},{provide:ki,useExisting:t,multi:!0}]),vi],ngContentSelectors:_2e,decls:14,vars:27,consts:[["switch",""],["mat-internal-form-field","",3,"labelPosition"],["role","switch","type","button",1,"mdc-switch",3,"click","tabIndex","disabled"],[1,"mat-mdc-slide-toggle-touch-target"],[1,"mdc-switch__track"],[1,"mdc-switch__handle-track"],[1,"mdc-switch__handle"],[1,"mdc-switch__shadow"],[1,"mdc-elevation-overlay"],[1,"mdc-switch__ripple"],["mat-ripple","",1,"mat-mdc-slide-toggle-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-switch__icons"],[1,"mdc-label",3,"click","for"],["viewBox","0 0 24 24","aria-hidden","true",1,"mdc-switch__icon","mdc-switch__icon--on"],["d","M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z"],["viewBox","0 0 24 24","aria-hidden","true",1,"mdc-switch__icon","mdc-switch__icon--off"],["d","M20 13H4v-2h16v2z"]],template:function(i,o){if(1&i&&(xi(),h(0,"div",1)(1,"button",2,0),F("click",function(){return o._handleClick()}),L(3,"div",3)(4,"span",4),h(5,"span",5)(6,"span",6)(7,"span",7),L(8,"span",8),u(),h(9,"span",9),L(10,"span",10),u(),x(11,b2e,5,0,"span",11),u()()(),h(12,"label",12),F("click",function(s){return s.stopPropagation()}),Rt(13),u()()),2&i){const r=Un(2);C("labelPosition",o.labelPosition),c(),ve("mdc-switch--selected",o.checked)("mdc-switch--unselected",!o.checked)("mdc-switch--checked",o.checked)("mdc-switch--disabled",o.disabled)("mat-mdc-slide-toggle-disabled-interactive",o.disabledInteractive),C("tabIndex",o.disabled&&!o.disabledInteractive?-1:o.tabIndex)("disabled",o.disabled&&!o.disabledInteractive),We("id",o.buttonId)("name",o.name)("aria-label",o.ariaLabel)("aria-labelledby",o._getAriaLabelledBy())("aria-describedby",o.ariaDescribedby)("aria-required",o.required||null)("aria-checked",o.checked)("aria-disabled",o.disabled&&o.disabledInteractive?"true":null),c(9),C("matRippleTrigger",r)("matRippleDisabled",o.disableRipple||o.disabled)("matRippleCentered",!0),c(),k(o.hideIcon?-1:11),c(),C("for",o.buttonId),We("id",o._labelId)}},dependencies:[lu,aV],styles:['.mdc-switch{align-items:center;background:none;border:none;cursor:pointer;display:inline-flex;flex-shrink:0;margin:0;outline:none;overflow:visible;padding:0;position:relative;width:var(--mat-slide-toggle-track-width, 52px)}.mdc-switch.mdc-switch--disabled{cursor:default;pointer-events:none}.mdc-switch.mat-mdc-slide-toggle-disabled-interactive{pointer-events:auto}.mdc-switch__track{overflow:hidden;position:relative;width:100%;height:var(--mat-slide-toggle-track-height, 32px);border-radius:var(--mat-slide-toggle-track-shape, var(--mat-sys-corner-full))}.mdc-switch--disabled.mdc-switch .mdc-switch__track{opacity:var(--mat-slide-toggle-disabled-track-opacity, 0.12)}.mdc-switch__track::before,.mdc-switch__track::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";height:100%;left:0;position:absolute;width:100%;border-width:var(--mat-slide-toggle-track-outline-width, 2px);border-color:var(--mat-slide-toggle-track-outline-color, var(--mat-sys-outline))}.mdc-switch--selected .mdc-switch__track::before,.mdc-switch--selected .mdc-switch__track::after{border-width:var(--mat-slide-toggle-selected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-selected-track-outline-color, transparent)}.mdc-switch--disabled .mdc-switch__track::before,.mdc-switch--disabled .mdc-switch__track::after{border-width:var(--mat-slide-toggle-disabled-unselected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-disabled-unselected-track-outline-color, var(--mat-sys-on-surface))}@media(forced-colors: active){.mdc-switch__track{border-color:currentColor}}.mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0);background:var(--mat-slide-toggle-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch--selected .mdc-switch__track::before{transform:translateX(-100%)}.mdc-switch--selected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-hover-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-focus-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:active .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-pressed-track-color, var(--mat-sys-surface-variant))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::before,.mdc-switch.mdc-switch--disabled .mdc-switch__track::before{background:var(--mat-slide-toggle-disabled-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch__track::after{transform:translateX(-100%);background:var(--mat-slide-toggle-selected-track-color, var(--mat-sys-primary))}[dir=rtl] .mdc-switch__track::after{transform:translateX(100%)}.mdc-switch--selected .mdc-switch__track::after{transform:translateX(0)}.mdc-switch--selected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-hover-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-focus-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:active .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-pressed-track-color, var(--mat-sys-primary))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::after,.mdc-switch.mdc-switch--disabled .mdc-switch__track::after{background:var(--mat-slide-toggle-disabled-selected-track-color, var(--mat-sys-on-surface))}.mdc-switch__handle-track{height:100%;pointer-events:none;position:absolute;top:0;transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);left:0;right:auto;transform:translateX(0);width:calc(100% - var(--mat-slide-toggle-handle-width))}[dir=rtl] .mdc-switch__handle-track{left:auto;right:0}.mdc-switch--selected .mdc-switch__handle-track{transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__handle-track{transform:translateX(-100%)}.mdc-switch__handle{display:flex;pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);left:0;right:auto;transition:width 75ms cubic-bezier(0.4, 0, 0.2, 1),height 75ms cubic-bezier(0.4, 0, 0.2, 1),margin 75ms cubic-bezier(0.4, 0, 0.2, 1);width:var(--mat-slide-toggle-handle-width);height:var(--mat-slide-toggle-handle-height);border-radius:var(--mat-slide-toggle-handle-shape, var(--mat-sys-corner-full))}[dir=rtl] .mdc-switch__handle{left:auto;right:0}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle{width:var(--mat-slide-toggle-unselected-handle-size, 16px);height:var(--mat-slide-toggle-unselected-handle-size, 16px);margin:var(--mat-slide-toggle-unselected-handle-horizontal-margin, 0 8px)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-unselected-with-icon-handle-horizontal-margin, 0 4px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle{width:var(--mat-slide-toggle-selected-handle-size, 24px);height:var(--mat-slide-toggle-selected-handle-size, 24px);margin:var(--mat-slide-toggle-selected-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-selected-with-icon-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch__handle:has(.mdc-switch__icons){width:var(--mat-slide-toggle-with-icon-handle-size, 24px);height:var(--mat-slide-toggle-with-icon-handle-size, 24px)}.mat-mdc-slide-toggle .mdc-switch:active:not(.mdc-switch--disabled) .mdc-switch__handle{width:var(--mat-slide-toggle-pressed-handle-size, 28px);height:var(--mat-slide-toggle-pressed-handle-size, 28px)}.mat-mdc-slide-toggle .mdc-switch--selected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-selected-pressed-handle-horizontal-margin, 0 22px)}.mat-mdc-slide-toggle .mdc-switch--unselected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-unselected-pressed-handle-horizontal-margin, 0 2px)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-selected-handle-opacity, 1)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-unselected-handle-opacity, 0.38)}.mdc-switch__handle::before,.mdc-switch__handle::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";width:100%;height:100%;left:0;position:absolute;top:0;transition:background-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1),border-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);z-index:-1}@media(forced-colors: active){.mdc-switch__handle::before,.mdc-switch__handle::after{border-color:currentColor}}.mdc-switch--selected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-handle-color, var(--mat-sys-on-primary))}.mdc-switch--selected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-hover-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-focus-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-pressed-handle-color, var(--mat-sys-primary-container))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:hover:not(:focus):not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:focus:not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:active .mdc-switch__handle::after,.mdc-switch--selected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-selected-handle-color, var(--mat-sys-surface))}.mdc-switch--unselected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-handle-color, var(--mat-sys-outline))}.mdc-switch--unselected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-hover-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-focus-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-pressed-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-unselected-handle-color, var(--mat-sys-on-surface))}.mdc-switch__handle::before{background:var(--mat-slide-toggle-handle-surface-color)}.mdc-switch__shadow{border-radius:inherit;bottom:0;left:0;position:absolute;right:0;top:0}.mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-handle-elevation-shadow)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__shadow,.mdc-switch.mdc-switch--disabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-disabled-handle-elevation-shadow)}.mdc-switch__ripple{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);z-index:-1;width:var(--mat-slide-toggle-state-layer-size, 40px);height:var(--mat-slide-toggle-state-layer-size, 40px)}.mdc-switch__ripple::after{content:"";opacity:0}.mdc-switch--disabled .mdc-switch__ripple::after{display:none}.mat-mdc-slide-toggle-disabled-interactive .mdc-switch__ripple::after{display:block}.mdc-switch:hover .mdc-switch__ripple::after{transition:75ms opacity cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:focus .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:active .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:hover:not(:focus) .mdc-switch__ripple::after,.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-hover-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-focus-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--unselected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-pressed-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-hover-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--selected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-focus-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--selected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-pressed-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch__icons{position:relative;height:100%;width:100%;z-index:1;transform:translateZ(0)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-unselected-icon-opacity, 0.38)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-selected-icon-opacity, 0.38)}.mdc-switch__icon{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;opacity:0;transition:opacity 30ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-switch--unselected .mdc-switch__icon{width:var(--mat-slide-toggle-unselected-icon-size, 16px);height:var(--mat-slide-toggle-unselected-icon-size, 16px);fill:var(--mat-slide-toggle-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__icon{width:var(--mat-slide-toggle-selected-icon-size, 16px);height:var(--mat-slide-toggle-selected-icon-size, 16px);fill:var(--mat-slide-toggle-selected-icon-color, var(--mat-sys-on-primary-container))}.mdc-switch--selected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-selected-icon-color, var(--mat-sys-on-surface))}.mdc-switch--selected .mdc-switch__icon--on,.mdc-switch--unselected .mdc-switch__icon--off{opacity:1;transition:opacity 45ms 30ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle{-webkit-user-select:none;user-select:none;display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple,.mat-mdc-slide-toggle .mdc-switch__ripple::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple:not(:empty),.mat-mdc-slide-toggle .mdc-switch__ripple::after:not(:empty){transform:translateZ(0)}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mat-focus-indicator::before{content:""}.mat-mdc-slide-toggle .mat-internal-form-field{color:var(--mat-slide-toggle-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-slide-toggle-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-slide-toggle-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-slide-toggle-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-slide-toggle-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-slide-toggle-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-slide-toggle .mat-ripple-element{opacity:.12}.mat-mdc-slide-toggle .mat-focus-indicator::before{border-radius:50%}.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle-track,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__icon,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::after,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::after{transition:none}.mat-mdc-slide-toggle .mdc-switch:enabled+.mdc-label{cursor:pointer}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:var(--mat-slide-toggle-disabled-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-slide-toggle label:empty{display:none}.mat-mdc-slide-toggle-touch-target{position:absolute;top:50%;left:50%;height:var(--mat-slide-toggle-touch-target-size, 48px);width:100%;transform:translate(-50%, -50%);display:var(--mat-slide-toggle-touch-target-display, block)}[dir=rtl] .mat-mdc-slide-toggle-touch-target{left:auto;right:50%;transform:translate(50%, -50%)}\n'],encapsulation:2,changeDetection:0})}return t})(),y2e=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[pH,ai]})}return t})();function C2e(t,n){1&t&&(p(0),_(1,"translate"),h(2,"mat-icon",5),_(3,"translate"),p(4,"help"),u()),2&t&&(D(" ",v(1,3,"common.yes")," "),c(2),C("inline",!0)("matTooltip",v(3,5,"transports.persistent-transport-tooltip")))}function w2e(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"common.no")," ")}function x2e(t,n){1&t&&(p(0),_(1,"number")),2&t&&D(" ",ue(1,1,y().data.latencyMs,"1.0-0")," ms ")}function k2e(t,n){1&t&&p(0," - ")}let S2e=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.largeModalWidth,e.open(t,o)}constructor(e,i){this.data=e,this.dialogRef=i}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-transport-details"]],standalone:!1,decls:57,vars:50,consts:[[1,"info-dialog",3,"headline","dialog"],[1,"title","mt-0"],[3,"inline"],[1,"item"],[1,"title"],[1,"help-icon","d-none","d-md-inline",3,"inline","matTooltip"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),_(1,"translate"),h(2,"div")(3,"div",1)(4,"mat-icon",2),p(5,"list"),u(),p(6),_(7,"translate"),u(),h(8,"div",3)(9,"span"),p(10),_(11,"translate"),u(),x(12,C2e,5,7),x(13,w2e,2,3),u(),h(14,"div",3)(15,"span"),p(16),_(17,"translate"),u(),p(18),u(),h(19,"div",3)(20,"span"),p(21),_(22,"translate"),u(),p(23),u(),h(24,"div",3)(25,"span"),p(26),_(27,"translate"),u(),p(28),u(),h(29,"div",3)(30,"span"),p(31),_(32,"translate"),u(),p(33),u(),h(34,"div",4)(35,"mat-icon",2),p(36,"import_export"),u(),p(37),_(38,"translate"),u(),h(39,"div",3)(40,"span"),p(41),_(42,"translate"),u(),p(43),_(44,"autoScale"),u(),h(45,"div",3)(46,"span"),p(47),_(48,"translate"),u(),p(49),_(50,"autoScale"),u(),h(51,"div",3)(52,"span"),p(53),_(54,"translate"),u(),x(55,x2e,2,4),x(56,k2e,1,0),u()()()),2&i&&(C("headline",v(1,24,"transports.details.title"))("dialog",o.dialogRef),c(4),C("inline",!0),c(2),D("",v(7,26,"transports.details.basic.title")," "),c(4),S(v(11,28,"transports.details.basic.persistent")),c(2),k(o.data.isPersistent?12:-1),c(),k(o.data.isPersistent?-1:13),c(3),S(v(17,30,"transports.details.basic.id")),c(2),D(" ",o.data.id," "),c(3),S(v(22,32,"transports.details.basic.local-pk")),c(2),D(" ",o.data.localPk," "),c(3),S(v(27,34,"transports.details.basic.remote-pk")),c(2),D(" ",o.data.remotePk," "),c(3),S(v(32,36,"transports.details.basic.type")),c(2),D(" ",o.data.type," "),c(2),C("inline",!0),c(2),D("",v(38,38,"transports.details.data.title")," "),c(4),S(v(42,40,"transports.details.data.uploaded")),c(2),D(" ",v(44,42,o.data.sent)," "),c(4),S(v(48,44,"transports.details.data.downloaded")),c(2),D(" ",v(50,46,o.data.recv)," "),c(4),S(v(54,48,"transports.latency")),c(2),k(o.data.latencyMs&&o.data.latencyMs>0?55:-1),c(),k(o.data.latencyMs&&0!==o.data.latencyMs?-1:56))},dependencies:[Ae,Et,Sn,Gl,we,dp],styles:[".help-icon[_ngcontent-%COMP%]{opacity:.5;font-size:14px;cursor:default}"]})}}return t})();const M2e=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),D2e=t=>({"d-lg-none d-xl-table":t}),T2e=t=>({"d-lg-table d-xl-none":t}),mH=t=>({offline:t});function E2e(t,n){1&t&&(h(0,"span",3),p(1),_(2,"translate"),h(3,"mat-icon",14),_(4,"translate"),p(5,"help"),u()()),2&t&&(c(),D(" ",v(2,3,"transports.title")," "),c(2),C("inline",!0)("matTooltip",v(4,5,"transports.info")))}function P2e(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().$implicit.translatableValue)," ")}function I2e(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.value," ")}function O2e(t,n){if(1&t&&(h(0,"div",16)(1,"span"),p(2),_(3,"translate"),u(),x(4,P2e,2,3),x(5,I2e,1,1),u()),2&t){const e=n.$implicit;c(2),D("",v(3,3,e.filterName),": "),c(2),k(e.translatableValue?4:-1),c(),k(e.value?5:-1)}}function A2e(t,n){if(1&t){const e=re();h(0,"div",15),F("click",function(){return V(e),H(y().dataFilterer.removeFilters())}),me(1,O2e,6,5,"div",16,Le),h(3,"div",17),p(4),_(5,"translate"),u()()}if(2&t){const e=y();c(),ge(e.dataFilterer.currentFiltersTexts),c(3),S(v(5,1,"filters.press-to-remove"))}}function R2e(t,n){if(1&t){const e=re();h(0,"mat-icon",18),F("click",function(){return V(e),H(y().dataFilterer.changeFilters())}),p(1,"filter_list"),u()}2&t&&C("inline",!0)}function F2e(t,n){if(1&t&&(h(0,"mat-icon",9),p(1,"more_horiz"),u()),2&t){y();const e=Un(12);C("inline",!0)("matMenuTriggerFor",e)}}function N2e(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"transports.dialog.errors.remote-key-length-error")," ")}function L2e(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"transports.dialog.errors.remote-key-chars-error")," ")}function B2e(t,n){if(1&t&&(h(0,"mat-option",32),p(1),u()),2&t){const e=n.$implicit;C("value",e),c(),S(e)}}function V2e(t,n){1&t&&me(0,B2e,2,2,"mat-option",32,Le),2&t&&ge(y(2).addAvailableTypes)}function H2e(t,n){if(1&t){const e=re();h(0,"div",13)(1,"div",19)(2,"form",20),F("ngSubmit",function(){return V(e),H(y().submitAddForm())}),h(3,"div",21)(4,"mat-form-field",22)(5,"mat-label"),p(6),_(7,"translate"),u(),L(8,"input",23),h(9,"mat-error"),x(10,N2e,2,3)(11,L2e,2,3),u()(),h(12,"mat-form-field",24)(13,"mat-label"),p(14),_(15,"translate"),u(),L(16,"input",25),u(),h(17,"mat-form-field",26)(18,"mat-label"),p(19),_(20,"translate"),u(),h(21,"mat-select",27),x(22,V2e,2,0),u()()(),h(23,"div",21)(24,"mat-checkbox",28),F("change",function(o){return V(e),H(y().setAddPersistent(o))}),p(25),_(26,"translate"),h(27,"mat-icon",29),_(28,"translate"),p(29,"help"),u()(),h(30,"button",30)(31,"mat-icon"),p(32,"add"),u(),p(33),_(34,"translate"),u(),h(35,"button",31),F("click",function(){return V(e),H(y().cancelAddForm())}),p(36),_(37,"translate"),u()()()()()}if(2&t){const e=y();c(2),C("formGroup",e.addForm),c(4),S(v(7,14,"transports.dialog.remote-key")),c(4),k(e.addForm.get("remoteKey").hasError("pattern")?11:10),c(4),S(v(15,16,"transports.dialog.label")),c(5),S(v(20,18,"transports.dialog.transport-type")),c(3),k(e.addAvailableTypes?22:-1),c(2),C("checked",e.addingPersistent),c(),D(" ",v(26,20,"transports.dialog.make-persistent")," "),c(2),C("inline",!0)("matTooltip",v(28,22,"transports.dialog.persistent-tooltip")),c(3),C("disabled",!e.addForm.valid||e.addBusy),c(3),D(" ",v(34,24,"transports.create")," "),c(2),C("disabled",e.addBusy),c(),D(" ",v(37,26,"common.cancel")," ")}}function U2e(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function z2e(t,n){1&t&&p(0," * ")}function j2e(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u(),x(2,z2e,1,0)),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow),c(),k(e.dataSorter.currentlySortingByLabel?2:-1)}}function $2e(t,n){1&t&&p(0," * ")}function W2e(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u(),x(2,$2e,1,0)),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow),c(),k(e.dataSorter.currentlySortingByLabel?2:-1)}}function G2e(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function q2e(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function K2e(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Y2e(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function X2e(t,n){if(1&t){const e=re();h(0,"button",51),_(1,"translate"),F("click",function(){V(e);const o=y().$implicit;return H(y(2).changeIfPersistent([o],!1))}),h(2,"mat-icon",52),p(3,"star"),u()()}2&t&&(C("matTooltip",v(1,2,"transports.persistent-transport-button-tooltip")),c(2),C("inline",!0))}function Z2e(t,n){if(1&t){const e=re();h(0,"button",51),_(1,"translate"),F("click",function(){V(e);const o=y().$implicit;return H(y(2).changeIfPersistent([o],!0))}),h(2,"mat-icon",53),p(3,"star_outline"),u()()}2&t&&(C("matTooltip",v(1,2,"transports.non-persistent-transport-button-tooltip")),c(2),C("inline",!0))}function Q2e(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"transports.offline")))}function J2e(t,n){if(1&t){const e=re();h(0,"td")(1,"app-labeled-element-text",54),F("labelEdited",function(){return V(e),H(y(3).refreshData())}),u(),x(2,Q2e,3,3,"span"),u()}if(2&t){const e=y().$implicit,i=y(2);c(),C("id",on(e.id))("elementType",i.labeledElementTypes.Transport),c(),k(e.notFound?2:-1)}}function eEe(t,n){1&t&&(h(0,"td"),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"transports.offline")," "))}function tEe(t,n){if(1&t&&(h(0,"td"),p(1),_(2,"autoScale"),u()),2&t){const e=y().$implicit;c(),D(" ",v(2,1,e.sent)," ")}}function nEe(t,n){if(1&t&&(h(0,"td"),p(1),_(2,"autoScale"),u()),2&t){const e=y().$implicit;c(),D(" ",v(2,1,e.recv)," ")}}function iEe(t,n){1&t&&(h(0,"td"),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"transports.offline")," "))}function oEe(t,n){1&t&&(h(0,"td"),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"transports.offline")," "))}function rEe(t,n){1&t&&(p(0),_(1,"number")),2&t&&D(" ",ue(1,1,y(2).$implicit.latencyMs,"1.0-0")," ms ")}function sEe(t,n){1&t&&(h(0,"span",17),p(1,"-"),u())}function aEe(t,n){if(1&t&&(h(0,"td"),x(1,rEe,2,4),x(2,sEe,2,0,"span",17),u()),2&t){const e=y().$implicit;c(),k(e.latencyMs&&e.latencyMs>0?1:-1),c(),k(e.latencyMs&&0!==e.latencyMs?-1:2)}}function lEe(t,n){1&t&&(h(0,"td"),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"transports.offline")," "))}function cEe(t,n){if(1&t){const e=re();h(0,"button",55),_(1,"translate"),F("click",function(){V(e);const o=y().$implicit;return H(y(2).details(o))}),h(2,"mat-icon",37),p(3,"visibility"),u()()}2&t&&(C("matTooltip",v(1,2,"transports.details.title")),c(2),C("inline",!0))}function dEe(t,n){if(1&t){const e=re();h(0,"button",55),_(1,"translate"),F("click",function(){V(e);const o=y().$implicit;return H(y(2).delete(o))}),h(2,"mat-icon",37),p(3,"close"),u()()}2&t&&(C("matTooltip",v(1,2,"transports.delete")),c(2),C("inline",!0))}function uEe(t,n){if(1&t){const e=re();h(0,"tr",40)(1,"td",46)(2,"mat-checkbox",47),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(3,"td"),x(4,X2e,4,4,"button",48),x(5,Z2e,4,4,"button",48),u(),x(6,J2e,3,4,"td"),x(7,eEe,3,3,"td"),h(8,"td")(9,"app-labeled-element-text",49),F("labelEdited",function(){return V(e),H(y(2).refreshData())}),u()(),h(10,"td"),p(11),u(),x(12,tEe,3,3,"td"),x(13,nEe,3,3,"td"),x(14,iEe,3,3,"td"),x(15,oEe,3,3,"td"),x(16,aEe,3,2,"td"),x(17,lEe,3,3,"td"),h(18,"td",39),x(19,cEe,4,4,"button",50),x(20,dEe,4,4,"button",50),u()()}if(2&t){const e=n.$implicit,i=y(2);C("ngClass",ie(17,mH,e.notFound)),c(2),C("checked",i.selections.get(e.id)),c(2),k(e.isPersistent?4:-1),c(),k(e.isPersistent?-1:5),c(),k(e.notFound?-1:6),c(),k(e.notFound?7:-1),c(2),C("id",on(e.remotePk)),c(2),D(" ",e.type," "),c(),k(e.notFound?-1:12),c(),k(e.notFound?-1:13),c(),k(e.notFound?14:-1),c(),k(e.notFound?15:-1),c(),k(e.notFound?-1:16),c(),k(e.notFound?17:-1),c(2),k(e.notFound?-1:19),c(),k(e.notFound?-1:20)}}function hEe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.label")," ")}function fEe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.inverted-order")," ")}function pEe(t,n){1&t&&(h(0,"div",58)(1,"div",58)(2,"mat-icon",63),p(3,"star"),u(),p(4,"\xa0 "),h(5,"span",64),p(6),_(7,"translate"),u()()()),2&t&&(c(2),C("inline",!0),c(4),S(v(7,2,"transports.persistent")))}function mEe(t,n){if(1&t){const e=re();h(0,"app-labeled-element-text",54),F("labelEdited",function(){return V(e),H(y(3).refreshData())}),u()}if(2&t){const e=y().$implicit,i=y(2);C("id",on(e.id))("elementType",i.labeledElementTypes.Transport)}}function gEe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"transports.offline")," ")}function _Ee(t,n){1&t&&(p(0),_(1,"autoScale")),2&t&&D(" ",v(1,1,y().$implicit.sent)," ")}function bEe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"transports.offline")," ")}function vEe(t,n){1&t&&(p(0),_(1,"autoScale")),2&t&&D(" ",v(1,1,y().$implicit.recv)," ")}function yEe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"transports.offline")," ")}function CEe(t,n){1&t&&(p(0),_(1,"number")),2&t&&D(" ",ue(1,1,y(2).$implicit.latencyMs,"1.0-0")," ms ")}function wEe(t,n){1&t&&p(0," - ")}function xEe(t,n){if(1&t&&(x(0,CEe,2,4),x(1,wEe,1,0)),2&t){const e=y().$implicit;k(e.latencyMs&&e.latencyMs>0?0:-1),c(),k(e.latencyMs&&0!==e.latencyMs?-1:1)}}function kEe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"transports.offline")," ")}function SEe(t,n){if(1&t){const e=re();h(0,"tr")(1,"td")(2,"div",56)(3,"div",57)(4,"mat-checkbox",47),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(5,"div",44),x(6,pEe,8,4,"div",58),h(7,"div",59)(8,"span",2),p(9),_(10,"translate"),u(),p(11,": "),x(12,mEe,1,3,"app-labeled-element-text",60),x(13,gEe,2,3),u(),h(14,"div",59)(15,"span",2),p(16),_(17,"translate"),u(),p(18,": "),h(19,"app-labeled-element-text",49),F("labelEdited",function(){return V(e),H(y(2).refreshData())}),u()(),h(20,"div",58)(21,"span",2),p(22),_(23,"translate"),u(),p(24),u(),h(25,"div",58)(26,"span",2),p(27),_(28,"translate"),u(),p(29,": "),x(30,_Ee,2,3),x(31,bEe,2,3),u(),h(32,"div",58)(33,"span",2),p(34),_(35,"translate"),u(),p(36,": "),x(37,vEe,2,3),x(38,yEe,2,3),u(),h(39,"div",58)(40,"span",2),p(41),_(42,"translate"),u(),p(43,": "),x(44,xEe,2,2),x(45,kEe,2,3),u()(),L(46,"div",61),h(47,"div",45)(48,"button",62),_(49,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(2);return o.stopPropagation(),H(s.showOptionsDialog(r))}),h(50,"mat-icon"),p(51),u()()()()()()}if(2&t){const e=n.$implicit,i=y(2);c(2),C("ngClass",ie(36,mH,e.notFound)),c(2),C("checked",i.selections.get(e.id)),c(2),k(e.isPersistent?6:-1),c(3),S(v(10,22,"transports.id")),c(3),k(e.notFound?-1:12),c(),k(e.notFound?13:-1),c(3),S(v(17,24,"transports.remote-node")),c(3),C("id",on(e.remotePk)),c(3),S(v(23,26,"transports.type")),c(2),D(": ",e.type," "),c(3),S(v(28,28,"common.uploaded")),c(3),k(e.notFound?-1:30),c(),k(e.notFound?31:-1),c(3),S(v(35,30,"common.downloaded")),c(3),k(e.notFound?-1:37),c(),k(e.notFound?38:-1),c(3),S(v(42,32,"transports.latency")),c(3),k(e.notFound?-1:44),c(),k(e.notFound?45:-1),c(3),C("matTooltip",v(49,34,"common.options")),c(3),S("add")}}function MEe(t,n){if(1&t){const e=re();h(0,"div",13)(1,"div",33)(2,"table",34)(3,"tr"),L(4,"th"),h(5,"th",35),_(6,"translate"),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.persistentSortData))}),h(7,"mat-icon",36),p(8,"star_outline"),u(),x(9,U2e,2,2,"mat-icon",37),u(),h(10,"th",38),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.idSortData))}),p(11),_(12,"translate"),x(13,j2e,3,3),u(),h(14,"th",38),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.remotePkSortData))}),p(15),_(16,"translate"),x(17,W2e,3,3),u(),h(18,"th",38),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.typeSortData))}),p(19),_(20,"translate"),x(21,G2e,2,2,"mat-icon",37),u(),h(22,"th",38),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.uploadedSortData))}),p(23),_(24,"translate"),x(25,q2e,2,2,"mat-icon",37),u(),h(26,"th",38),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.downloadedSortData))}),p(27),_(28,"translate"),x(29,K2e,2,2,"mat-icon",37),u(),h(30,"th",38),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.latencySortData))}),p(31),_(32,"translate"),x(33,Y2e,2,2,"mat-icon",37),u(),L(34,"th",39),u(),me(35,uEe,21,19,"tr",40,Le),u(),h(37,"table",41)(38,"tr",42),F("click",function(){return V(e),H(y().dataSorter.openSortingOrderModal())}),h(39,"td")(40,"div",43)(41,"div",44)(42,"div",2),p(43),_(44,"translate"),u(),h(45,"div"),p(46),_(47,"translate"),x(48,hEe,2,3),x(49,fEe,2,3),u()(),h(50,"div",45)(51,"mat-icon",37),p(52,"keyboard_arrow_down"),u()()()()(),me(53,SEe,52,38,"tr",null,Le),u()()()}if(2&t){const e=y();c(),C("ngClass",pt(40,M2e,e.showShortList_,!e.showShortList_)),c(),C("ngClass",ie(43,D2e,e.showShortList_)),c(3),C("matTooltip",v(6,22,"transports.persistent-tooltip")),c(4),k(e.dataSorter.currentSortingColumn===e.persistentSortData?9:-1),c(2),D(" ",v(12,24,"transports.id")," "),c(2),k(e.dataSorter.currentSortingColumn===e.idSortData?13:-1),c(2),D(" ",v(16,26,"transports.remote-node")," "),c(2),k(e.dataSorter.currentSortingColumn===e.remotePkSortData?17:-1),c(2),D(" ",v(20,28,"transports.type")," "),c(2),k(e.dataSorter.currentSortingColumn===e.typeSortData?21:-1),c(2),D(" ",v(24,30,"common.uploaded")," "),c(2),k(e.dataSorter.currentSortingColumn===e.uploadedSortData?25:-1),c(2),D(" ",v(28,32,"common.downloaded")," "),c(2),k(e.dataSorter.currentSortingColumn===e.downloadedSortData?29:-1),c(2),D(" ",v(32,34,"transports.latency")," "),c(2),k(e.dataSorter.currentSortingColumn===e.latencySortData?33:-1),c(2),ge(e.dataSource),c(2),C("ngClass",ie(45,T2e,e.showShortList_)),c(6),S(v(44,36,"tables.sorting-title")),c(3),D("",v(47,38,e.dataSorter.currentSortingColumn.label)," "),c(2),k(e.dataSorter.currentlySortingByLabel?48:-1),c(),k(e.dataSorter.sortingInReverseOrder?49:-1),c(2),C("inline",!0),c(2),ge(e.dataSource)}}function DEe(t,n){1&t&&(h(0,"span",67),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"transports.empty")))}function TEe(t,n){1&t&&(h(0,"span",67),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"transports.empty-with-filter")))}function EEe(t,n){if(1&t&&(h(0,"div",13)(1,"div",65)(2,"mat-icon",66),p(3,"warning"),u(),x(4,DEe,3,3,"span",67),x(5,TEe,3,3,"span",67),u()()),2&t){const e=y();c(2),C("inline",!0),c(2),k(0===e.allTransports.length?4:-1),c(),k(0!==e.allTransports.length?5:-1)}}let PEe=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter.setData(this.filteredTransports)}set node(e){const i=performance.now();console.log("[HV-DIAG] transport-list setter called, transports:",e.transports?.length,"persistentTransports:",e.persistentTransports?.length);const o=e.transports.map(s=>s.id).sort().join(",");if(o===this.lastTransportIds&&e.transports.length===this.lastTransportCount)return this.allTransports&&(e.transports.forEach(s=>{const a=this.allTransports.find(l=>l.id===s.id);a&&(a.sent=s.sent,a.recv=s.recv)}),this.cdr.markForCheck()),void console.log("[HV-DIAG] transport-list stats-only update took",(performance.now()-i).toFixed(1),"ms");console.log("[HV-DIAG] transport-list FULL reprocessing",e.transports.length,"transports"),this.lastTransportCount=e.transports.length,this.lastTransportIds=o,this.currentNode=e,this.allTransports=e.transports,this.nodePK=e.localPk;const r=new Map;e.persistentTransports.forEach(s=>r.set(this.getPersistentTransportID(s.pk,s.type),s)),this.allTransports.forEach(s=>{r.has(this.getPersistentTransportID(s.remotePk,s.type))?(s.isPersistent=!0,r.delete(this.getPersistentTransportID(s.remotePk,s.type))):s.isPersistent=!1}),r.forEach((s,a)=>{this.allTransports.push({id:this.getPersistentTransportID(s.pk,s.type),localPk:e.localPk,remotePk:s.pk,type:s.type,recv:0,sent:0,isPersistent:!0,notFound:!0})}),this.allTransports.forEach(s=>{s.id_label=Fc.getCompleteLabel(this.storageService,this.translateService,s.id),s.remote_pk_label=Fc.getCompleteLabel(this.storageService,this.translateService,s.remotePk)}),this.dataFilterer.setData(this.allTransports),this.cdr.markForCheck()}constructor(e,i,o,r,s,a,l,d,f,m){this.dialog=e,this.transportService=i,this.route=o,this.router=r,this.snackbarService=s,this.translateService=a,this.storageService=l,this.nodeService=d,this.cdr=f,this.formBuilder=m,this.listId="tr",this.persistentSortData=new Pt(["isPersistent"],"transports.persistent",lt.Boolean),this.idSortData=new Pt(["id"],"transports.id",lt.Text,["id_label"]),this.remotePkSortData=new Pt(["remotePk"],"transports.remote-node",lt.Text,["remote_pk_label"]),this.typeSortData=new Pt(["type"],"transports.type",lt.Text),this.uploadedSortData=new Pt(["sent"],"common.uploaded",lt.NumberReversed),this.downloadedSortData=new Pt(["recv"],"common.downloaded",lt.NumberReversed),this.latencySortData=new Pt(["latencyMs"],"transports.latency",lt.Number),this.selections=new Map,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.lastTransportCount=-1,this.lastTransportIds="",this.filterProperties=[{filterName:"transports.filter-dialog.persistent",keyNameInElementsArray:"isPersistent",type:Mn.Select,printableLabelsForValues:[{value:"",label:"transports.filter-dialog.persistent-options.any"},{value:"true",label:"transports.filter-dialog.persistent-options.persistent"},{value:"false",label:"transports.filter-dialog.persistent-options.non-persistent"}]},{filterName:"transports.filter-dialog.id",keyNameInElementsArray:"id",secondaryKeyNameInElementsArray:"id_label",type:Mn.TextInput,maxlength:36},{filterName:"transports.filter-dialog.remote-node",keyNameInElementsArray:"remotePk",secondaryKeyNameInElementsArray:"remote_pk_label",type:Mn.TextInput,maxlength:66}],this.labeledElementTypes=uo,this.showAddForm=!1,this.addingPersistent=!1,this.addAvailableTypes=null,this.addBusy=!1,this.operationSubscriptionsGroup=[],this.addForm=this.formBuilder.group({remoteKey:["",Se.compose([Se.required,Se.minLength(66),Se.maxLength(66),Se.pattern("^[0-9a-fA-F]+$")])],label:[""],type:["",Se.required]}),this.dataSorter=new wu(this.dialog,this.translateService,this.storageService,[this.persistentSortData,this.idSortData,this.remotePkSortData,this.typeSortData,this.uploadedSortData,this.downloadedSortData,this.latencySortData],1,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new xu(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(b=>{this.filteredTransports=b,this.dataSorter.setData(this.filteredTransports)}),this.navigationsSubscription=this.route.paramMap.subscribe(b=>{if(b.has("page")){let w=Number.parseInt(b.get("page"),10);(isNaN(w)||w<1)&&(w=1),this.currentPageInUrl=w,this.recalculateElementsToShow()}}),this.languageSubscription=this.translateService.onLangChange.subscribe(()=>{this.node=this.currentNode})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.languageSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose(),this.persistentTransportSubscription&&this.persistentTransportSubscription.unsubscribe(),this.addOperationSubscription&&this.addOperationSubscription.unsubscribe(),this.addTypesSubscription&&this.addTypesSubscription.unsubscribe()}changeSelection(e){this.selections.get(e.id)?this.selections.set(e.id,!1):this.selections.set(e.id,!0)}hasSelectedElements(){if(!this.selections)return!1;let e=!1;return this.selections.forEach(i=>{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}deleteSelected(){const e=[];this.selections.forEach((i,o)=>{i&&e.push(o)}),0!==e.length&&this.deleteRecursively(e,null)}toggleAddForm(){this.showAddForm=!this.showAddForm,this.showAddForm&&null===this.addAvailableTypes&&this.loadAddTypes(),this.showAddForm||this.resetAddForm()}cancelAddForm(){this.showAddForm=!1,this.resetAddForm()}setAddPersistent(e){this.addingPersistent=!!e.checked}submitAddForm(){if(!this.addForm.valid||this.addBusy)return;const e=this.addForm.get("remoteKey").value,i=this.addForm.get("type").value,o=this.addForm.get("label").value;this.addBusy=!0,this.addingPersistent?this.addOperationSubscription=this.transportService.getPersistentTransports(Me.getCurrentNodeKey()).subscribe(r=>{const s=r||[];s.some(l=>l.pk.toUpperCase()===e.toUpperCase()&&l.type.toUpperCase()===i.toUpperCase())?this.doCreateTransport(e,i,o,!0):(s.push({pk:e,type:i}),this.addOperationSubscription=this.transportService.savePersistentTransportsData(Me.getCurrentNodeKey(),s).subscribe(()=>{this.doCreateTransport(e,i,o,!0)},l=>this.onAddError(l)))},r=>this.onAddError(r)):this.doCreateTransport(e,i,o,!1)}doCreateTransport(e,i,o,r){this.addOperationSubscription=this.transportService.create(Me.getCurrentNodeKey(),e,i).subscribe(s=>{let a=!1;o&&(s&&s.id?this.storageService.saveLabel(s.id,o,uo.Transport):a=!0),this.addBusy=!1,this.cancelAddForm(),Me.refreshCurrentDisplayedData(),a?this.snackbarService.showWarning("transports.dialog.success-without-label"):this.snackbarService.showDone("transports.dialog.success")},s=>{r?(this.addBusy=!1,this.cancelAddForm(),Me.refreshCurrentDisplayedData(),this.snackbarService.showWarning("transports.dialog.only-persistent-created")):this.onAddError(s)})}onAddError(e){this.addBusy=!1,e=Ze(e),this.snackbarService.showError(e)}resetAddForm(){this.addForm.reset({remoteKey:"",label:"",type:this.addAvailableTypes&&this.addAvailableTypes[0]||""}),this.addingPersistent=!1,this.addBusy=!1}loadAddTypes(){this.addTypesSubscription=se(1).pipe(oi(0),Tt(()=>this.transportService.types(Me.getCurrentNodeKey()))).subscribe(e=>{e.sort((o,r)=>"stcp"===o.toLowerCase()?1:"stcp"===r.toLowerCase()?-1:o.localeCompare(r));let i=e.findIndex(o=>"dmsg"===o.toLowerCase());i=-1!==i?i:0,this.addAvailableTypes=e,this.addForm.get("type").setValue(e[i]||""),this.cdr.markForCheck()},e=>{e=Ze(e),this.snackbarService.showError(e),this.addAvailableTypes=[],this.cdr.markForCheck()})}showOptionsDialog(e){const i=[];i.push(e.isPersistent?{icon:"star_outline",label:"transports.make-non-persistent"}:{icon:"star",label:"transports.make-persistent"}),e.notFound||(i.push({icon:"visibility",label:"transports.details.title"}),i.push({icon:"close",label:"transports.delete"})),ho.openDialog(this.dialog,i,"common.options").afterClosed().subscribe(o=>{1===o?this.changeIfPersistent([e],!e.isPersistent):2===o?this.details(e):3===o&&this.delete(e)})}changeIfPersistentOfSelected(e){const i=[];this.allTransports.forEach(o=>{this.selections.has(o.id)&&this.selections.get(o.id)&&i.push(o)}),this.changeIfPersistent(i,e)}changeIfPersistent(e,i){e.length<1||(this.persistentTransportSubscription=this.transportService.getPersistentTransports(this.nodePK).subscribe(o=>{const r=o||[];let s;const a=new Map;if(e.forEach(l=>a.set(this.getPersistentTransportID(l.remotePk,l.type),l)),i)r.forEach(l=>{a.has(this.getPersistentTransportID(l.pk,l.type))&&a.delete(this.getPersistentTransportID(l.pk,l.type))}),s=0===a.size,s||a.forEach(l=>r.push({pk:l.remotePk,type:l.type}));else{s=!0;for(let l=0;l{Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("transports.changes-made")},l=>{l=Ze(l),this.snackbarService.showError(l)})},o=>{o=Ze(o),this.snackbarService.showError(o)}))}details(e){S2e.openDialog(this.dialog,e)}delete(e){this.operationSubscriptionsGroup.push(this.startDeleting(e.id).subscribe(()=>{Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("transports.deleted")},i=>{i=Ze(i),this.snackbarService.showError(i)}))}refreshData(){Me.refreshCurrentDisplayedData()}getPersistentTransportID(e,i){return e.toUpperCase()+i.toUpperCase()}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredTransports){this.numberOfPages=1,this.currentPage=1,this.transportsToShow=this.filteredTransports.slice();const e=new Map;this.transportsToShow.forEach(o=>{e.set(o.id,!0),this.selections.has(o.id)||this.selections.set(o.id,!1)});const i=[];this.selections.forEach((o,r)=>{e.has(r)||i.push(r)}),i.forEach(o=>{this.selections.delete(o)})}else this.transportsToShow=null,this.selections=new Map;this.dataSource=this.transportsToShow,this.cdr.markForCheck()}startDeleting(e){return this.transportService.delete(Me.getCurrentNodeKey(),e)}deleteRecursively(e,i){this.operationSubscriptionsGroup.push(this.startDeleting(e[e.length-1]).subscribe(()=>{e.pop(),0===e.length?(i&&i.close(),Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("transports.deleted")):this.deleteRecursively(e,i)},o=>{Me.refreshCurrentDisplayedData(),o=Ze(o),i?i.componentInstance.showDone("confirmation.error-header-text",o.translatableErrorMsg):this.snackbarService.showError(o)}))}static{this.\u0275fac=function(i){return new(i||t)(O(Nt),O(hH),O(Li),O(yt),O(ot),O(Xo),O(ri),O(Yi),O(Dt),O(Si))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-transport-list"]],inputs:{showShortList:"showShortList",node:"node"},standalone:!1,decls:31,vars:34,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[3,"click","inline","matTooltip"],[1,"small-icon",3,"inline"],[3,"inline","matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[1,"rounded-elevated-box","mt-3"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline"],[1,"box-internal-container","small-node-list-margins"],[1,"inline-add-transport",3,"ngSubmit","formGroup"],[1,"add-row"],["appearance","outline",1,"field-pk"],["matInput","","formControlName","remoteKey","maxlength","66","placeholder","02abc..."],["appearance","outline",1,"field-md"],["matInput","","formControlName","label","maxlength","66"],["appearance","outline",1,"field-sm"],["formControlName","type","panelClass","skynet-select-panel"],["color","primary",3,"change","checked"],[1,"help-icon",3,"inline","matTooltip"],["mat-raised-button","","color","primary","type","submit",3,"disabled"],["mat-button","","type","button",3,"click","disabled"],[3,"value"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column","small-column",3,"click","matTooltip"],[1,"persistent-icon","grey-text"],[3,"inline"],[1,"sortable-column",3,"click"],[1,"actions"],[3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[1,"selection-col"],[3,"change","checked"],["mat-button","",1,"action-button","subtle-transparent-button",3,"matTooltip"],[3,"labelEdited","id"],["mat-button","",1,"action-button","transparent-button",3,"matTooltip"],["mat-button","",1,"action-button","subtle-transparent-button",3,"click","matTooltip"],[1,"persistent-icon","default-cursor",3,"inline"],[1,"persistent-icon","grey-text",3,"inline"],[3,"labelEdited","id","elementType"],["mat-button","",1,"action-button","transparent-button",3,"click","matTooltip"],[1,"list-item-container",3,"ngClass"],[1,"check-part"],[1,"list-row"],[1,"list-row","long-content"],[3,"id","elementType"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"persistent-icon",3,"inline"],[1,"yellow-clear-text","title"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,E2e,6,7,"span",3),x(3,A2e,6,3,"div",4),u(),h(4,"div",5)(5,"div",6)(6,"mat-icon",7),_(7,"translate"),F("click",function(){return o.toggleAddForm()}),p(8),u(),x(9,R2e,2,1,"mat-icon",8),x(10,F2e,2,2,"mat-icon",9),h(11,"mat-menu",10,0)(13,"div",11),F("click",function(){return o.changeAllSelections(!0)}),p(14),_(15,"translate"),u(),h(16,"div",11),F("click",function(){return o.changeAllSelections(!1)}),p(17),_(18,"translate"),u(),h(19,"div",12),F("click",function(){return o.changeIfPersistentOfSelected(!0)}),p(20),_(21,"translate"),u(),h(22,"div",12),F("click",function(){return o.changeIfPersistentOfSelected(!1)}),p(23),_(24,"translate"),u(),h(25,"div",12),F("click",function(){return o.deleteSelected()}),p(26),_(27,"translate"),u()()()()(),x(28,H2e,38,28,"div",13),x(29,MEe,55,47,"div",13),x(30,EEe,6,3,"div",13)),2&i&&(c(2),k(o.showShortList_?2:-1),c(),k(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?3:-1),c(3),C("inline",!0)("matTooltip",v(7,22,o.showAddForm?"common.cancel":"transports.create")),c(2),S(o.showAddForm?"remove":"add"),c(),k(o.allTransports&&o.allTransports.length>0?9:-1),c(),k(o.dataSource&&o.dataSource.length>0?10:-1),c(),C("overlapTrigger",!1),c(3),D(" ",v(15,24,"selection.select-all")," "),c(3),D(" ",v(18,26,"selection.unselect-all")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(21,28,"transports.make-selected-persistent")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(24,30,"transports.make-selected-non-persistent")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(27,32,"selection.delete-all")," "),c(2),k(o.showAddForm?28:-1),c(),k(o.dataSource&&o.dataSource.length>0?29:-1),c(),k(o.dataSource&&0!==o.dataSource.length?-1:30))},dependencies:[Ft,kn,Qt,Jt,xn,Bi,sn,_n,dn,ns,Aa,On,Ht,Yo,Ae,Et,os,Vs,Su,Na,is,Fo,Fc,Gl,we,dp],styles:[".overflow[_ngcontent-%COMP%]{display:block;width:100%;overflow-x:auto}.overflow[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{width:100%}.actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}.small-column[_ngcontent-%COMP%]{width:1px;text-align:center}.persistent-icon[_ngcontent-%COMP%]{font-size:14px!important;color:#d48b05}.offline[_ngcontent-%COMP%]{opacity:.35}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:8px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{flex:1 1 220px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] .field-pk[_ngcontent-%COMP%]{flex:2 1 360px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] .field-md[_ngcontent-%COMP%]{flex:1 1 180px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] .field-sm[_ngcontent-%COMP%]{flex:0 1 140px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-left:auto}.inline-add-transport[_ngcontent-%COMP%] .help-icon[_ngcontent-%COMP%]{margin-left:4px;opacity:.6;cursor:help}"],changeDetection:0})}}return t})();function IEe(t,n){1&t&&(h(0,"span"),p(1,", "),u())}function OEe(t,n){if(1&t&&(h(0,"span")(1,"span",11),p(2),u(),p(3,": "),h(4,"span",6),p(5),u(),x(6,IEe,2,0,"span"),u()),2&t){const e=n.$implicit,i=n.$index,o=n.$count;c(2),S(e.type),c(3),S(e.count),c(),k(i!==o-1?6:-1)}}function AEe(t,n){if(1&t&&(p(0," ("),me(1,OEe,7,3,"span",null,Le),p(3,") ")),2&t){const e=y(2);c(),ge(e.transportStats.byType)}}function REe(t,n){if(1&t){const e=re();h(0,"div",0)(1,"div",1)(2,"span",2),p(3),_(4,"translate"),u(),h(5,"span",3)(6,"span",4),p(7),_(8,"translate"),u(),h(9,"span",5)(10,"span",6),p(11),u(),x(12,AEe,4,0),u()(),h(13,"span",7)(14,"span",4),p(15),_(16,"translate"),u(),h(17,"mat-slide-toggle",8),F("change",function(){return V(e),H(y().changeTransportsConfig())}),u(),h(18,"mat-icon",9),_(19,"translate"),p(20,"info"),u()(),h(21,"span",7)(22,"span",4),p(23),_(24,"translate"),u(),h(25,"mat-slide-toggle",8),F("change",function(){return V(e),H(y().changePublicConfig())}),u(),h(26,"mat-icon",9),_(27,"translate"),p(28,"info"),u()()()(),L(29,"app-transport-list",10)}if(2&t){const e=y();c(3),S(v(4,14,"node.details.transports-info.title")),c(4),D("",v(8,16,"node.details.transports-info.total")," "),c(4),S(e.transportStats.total),c(),k(e.transportStats.byType.length>0?12:-1),c(3),S(v(16,18,"node.details.transports-info.autoconnect")),c(2),C("checked",!!e.node.autoconnectTransports),c(),C("inline",!0)("matTooltip",v(19,20,"node.details.transports-info.autoconnect-info")),c(5),S(v(24,22,"node.details.transports-info.is-public")),c(2),C("checked",!!e.isPublic),c(),C("inline",!0)("matTooltip",v(27,24,"node.details.transports-info.is-public-info")),c(3),C("node",e.node)("showShortList",!1)}}let FEe=(()=>{class t extends Lt{constructor(e,i,o){super(),this.apiService=e,this.transportService=i,this.snackbarService=o,this.transportStats={total:0,byType:[]},this.isPublic=!1}ngOnInit(){return this.dataSubscription=Me.currentNode.subscribe(e=>{this.node=e,this.transportStats=this.computeTransportStats(e),e&&this.fetchPublicStatus(e.localPk)}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription?.unsubscribe(),this.autoconnectSubscription?.unsubscribe(),this.publicToggleSubscription?.unsubscribe()}computeTransportStats(e){if(!e||!e.transports)return{total:0,byType:[]};const i={};for(const r of e.transports)i[r.type]=(i[r.type]||0)+1;const o=Object.entries(i).map(([r,s])=>({type:r,count:s})).sort((r,s)=>s.count-r.count);return{total:e.transports.length,byType:o}}fetchPublicStatus(e){this.apiService.get(`visors/${e}/public`).subscribe(i=>{this.isPublic=!(!i||!0!==i.is_public)},()=>{this.isPublic=!1})}changeTransportsConfig(){if(!this.node)return;const e=!this.node.autoconnectTransports;this.autoconnectSubscription=this.transportService.changeAutoconnectSetting(this.node.localPk,e).subscribe(()=>{this.snackbarService.showDone(e?"node.details.transports-info.enable-done":"node.details.transports-info.disable-done"),Me.refreshCurrentDisplayedData()},i=>{i=Ze(i),this.snackbarService.showError(i)})}changePublicConfig(){if(!this.node)return;const e=!this.isPublic;this.publicToggleSubscription=this.apiService.put(`visors/${this.node.localPk}/public`,{is_public:e}).subscribe(()=>{this.isPublic=e,this.snackbarService.showDone(e?"node.details.transports-info.public-enable-done":"node.details.transports-info.public-disable-done")},i=>{i=Ze(i),this.snackbarService.showError(i)})}static{this.\u0275fac=function(i){return new(i||t)(O(fi),O(hH),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-all-transports"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow","font-smaller"],[1,"section-title"],[1,"info-line"],[1,"title"],[1,"transport-stats"],[1,"transport-count"],[1,"info-line","toggle-line"],["color","primary",3,"change","checked"],[1,"info-tip",3,"inline","matTooltip"],[3,"node","showShortList"],[1,"transport-type"]],template:function(i,o){1&i&&x(0,REe,30,26),2&i&&k(o.node?0:-1)},dependencies:[Ae,Et,pH,PEe,we],encapsulation:2})}}return t})();const NEe=(t,n)=>n.date;function LEe(t,n){1&t&&(h(0,"a",23)(1,"mat-icon",24),_(2,"translate"),p(3," open_in_browser "),u()()),2&t&&(C("href","https://explorer.skycoin.com/app/address/"+y(2).rewardsAddress,$i),c(),C("inline",!0)("matTooltip",v(2,3,"node.details.rewards-info.open-in-explorer")))}function BEe(t,n){if(1&t&&(L(0,"app-copy-to-clipboard-text",22),x(1,LEe,4,5,"a",23)),2&t){const e=y();C("text",on(e.rewardsAddress)),c(),k(e.rewardsAddressIsXpub?-1:1)}}function VEe(t,n){1&t&&(p(0),_(1,"translate"),h(2,"mat-icon",25),_(3,"translate"),p(4,"info"),u()),2&t&&(D(" ",v(1,3,"node.details.rewards-info.not-registered")," "),c(2),C("inline",!0)("matTooltip",v(3,5,"node.details.rewards-info.not-registered-info")))}function HEe(t,n){if(1&t){const e=re();h(0,"form",26),F("ngSubmit",function(){return V(e),H(y().submitRewardAddress())}),h(1,"mat-form-field",27)(2,"mat-label"),p(3),_(4,"translate"),u(),L(5,"input",28),u(),h(6,"div",29)(7,"button",30),p(8),_(9,"translate"),u(),h(10,"button",31),F("click",function(){return V(e),H(y().toggleRewardForm())}),p(11),_(12,"translate"),u()()()}if(2&t){const e=y();C("formGroup",e.rewardForm),c(3),S(v(4,5,"node.details.rewards-info.rewards-address")),c(4),C("disabled",!e.rewardForm.valid),c(),D(" ",v(9,7,"common.save")," "),c(3),D(" ",v(12,9,"common.cancel")," ")}}function UEe(t,n){if(1&t&&(h(0,"pre",9),p(1),_(2,"translate"),u()),2&t){const e=y();c(),S(e.rewardRules||v(2,1,"common.loading"))}}function zEe(t,n){if(1&t&&(h(0,"span",11),p(1),u()),2&t){const e=y();c(),D("(",e.label,")")}}function jEe(t,n){if(1&t&&(h(0,"div",17)(1,"span",32),p(2),u(),h(3,"span",33),p(4),u()()),2&t){const e=y();c(2),D(" Total: ",e.total.toFixed(2)," SKY "),c(2),D(" (",e.days," days) ")}}function $Ee(t,n){1&t&&(h(0,"div",18),L(1,"mat-spinner",34),u())}function WEe(t,n){if(1&t&&(h(0,"div",19),p(1),u()),2&t){const e=y();c(),S(e.errorMsg)}}function GEe(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.amount.toFixed(6)," ")}function qEe(t,n){1&t&&(h(0,"span",36),p(1,"-"),u())}function KEe(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.share.toFixed(4),"% ")}function YEe(t,n){1&t&&(h(0,"span",36),p(1,"-"),u())}function XEe(t,n){if(1&t&&(h(0,"a",37),p(1),u()),2&t){const e=y().$implicit;C("href","https://explorer.skycoin.com/app/transaction/"+e.txid,$i),c(),D(" ",e.txid.substring(0,12),"... ")}}function ZEe(t,n){1&t&&(h(0,"span",36),p(1,"-"),u())}function QEe(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2),u(),h(3,"td"),x(4,GEe,1,1)(5,qEe,2,0,"span",36),u(),h(6,"td"),x(7,KEe,1,1)(8,YEe,2,0,"span",36),u(),h(9,"td")(10,"span"),p(11),u()(),h(12,"td"),x(13,XEe,2,2,"a",37)(14,ZEe,2,0,"span",36),u()()),2&t){const e=n.$implicit,i=y(2);Ge(i.statusClass(e)),c(2),S(i.formatDate(e.date)),c(2),k(e.amount>0?4:5),c(3),k(e.share>0?7:8),c(3),Ge("status-badge "+i.statusClass(e)),c(),S(i.statusText(e)),c(2),k(e.txid?13:14)}}function JEe(t,n){if(1&t&&(h(0,"table",20)(1,"tr")(2,"th"),p(3,"Date"),u(),h(4,"th"),p(5,"Amount (SKY)"),u(),h(6,"th"),p(7,"Share (%)"),u(),h(8,"th"),p(9,"Status"),u(),h(10,"th"),p(11,"Transaction"),u()(),me(12,QEe,15,9,"tr",35,NEe),u()),2&t){const e=y();c(12),ge(e.history)}}function ePe(t,n){1&t&&(h(0,"div",21),p(1," No reward data available for this visor. "),u())}let tPe=(()=>{class t{constructor(e,i,o,r,s,a,l){this.http=e,this.route=i,this.nodeComponent=o,this.storageService=r,this.nodeService=s,this.snackbarService=a,this.formBuilder=l,this.pk="",this.label="",this.rewardsAddress="",this.history=[],this.loading=!1,this.days=30,this.total=0,this.errorMsg="",this.showRewardForm=!1,this.showRewardRules=!1,this.rewardRules=null,this.rewardForm=this.formBuilder.group({address:["",Se.compose([Se.minLength(20),Se.maxLength(112)])]})}ngOnInit(){this.pk=this.nodeComponent.node?.localPk||this.route.snapshot.parent?.paramMap.get("key")||"";const e=this.storageService.getLabelInfo(this.pk);this.label=e?.label||"",this.nodeSub=Me.currentNode.subscribe(i=>{this.rewardsAddress=i?.rewardsAddress||""}),this.loadHistory()}ngOnDestroy(){this.nodeSub?.unsubscribe(),this.dataSub?.unsubscribe(),this.saveRewardsSubscription?.unsubscribe(),this.rewardRulesSubscription?.unsubscribe()}loadHistory(){this.pk&&(this.loading=!0,this.errorMsg="",this.dataSub=this.http.get(`/api/rewards/skycoin-rewards/visor/${this.pk}?days=${this.days}`).pipe(ii(e=>(this.errorMsg="Failed to load reward data",se({history:[]})))).subscribe(e=>{this.history=e?.history||[],this.total=this.history.reduce((i,o)=>i+(o.amount||0),0),this.loading=!1}))}changeDays(e){this.days=e,this.loadHistory()}formatDate(e){return new Date(e+"T00:00:00").toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}statusClass(e){return e.amount&&0!==e.amount?e.sent?"sent":"pending":"no-reward"}statusText(e){return e.amount&&0!==e.amount?e.sent?"Sent":"Pending":"No reward"}get rewardsAddressIsXpub(){return!!this.rewardsAddress&&this.rewardsAddress.startsWith("xpub")}toggleRewardForm(){this.showRewardForm=!this.showRewardForm,this.showRewardForm&&this.rewardForm.get("address").setValue(this.rewardsAddress||"")}submitRewardAddress(){if(!this.rewardForm.valid)return;const e=(this.rewardForm.get("address").value||"").trim(),i=e?this.nodeService.setRewardsAddress(this.pk,e):this.nodeService.deleteRewardsAddress(this.pk);this.saveRewardsSubscription=i.subscribe({next:()=>{this.snackbarService.showDone("rewards-address-config.done"),this.showRewardForm=!1,Me.refreshCurrentDisplayedData()},error:o=>{o=Ze(o),this.snackbarService.showError(o)}})}toggleRewardRules(){this.showRewardRules=!this.showRewardRules,this.showRewardRules&&null===this.rewardRules&&(this.rewardRulesSubscription=this.nodeService.getRewardRules().subscribe(e=>{this.rewardRules=e||""},()=>{this.rewardRules="",this.snackbarService.showError("common.loading-error")}))}static{this.\u0275fac=function(i){return new(i||t)(O(xa),O(Li),O(Me),O(ri),O(Yi),O(ot),O(Si))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-node-rewards"]],standalone:!1,decls:46,vars:33,consts:[[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow"],[1,"section-title"],[1,"info-line"],[1,"title"],["mat-icon-button","",1,"inline-edit-btn",3,"click","matTooltip"],[3,"inline"],[1,"inline-form",3,"formGroup"],[1,"info-line","collapsible-link",3,"click"],[1,"reward-rules"],[1,"d-flex","justify-content-between","align-items-center","mb-3"],[1,"label-text","ml-2"],[1,"d-flex","align-items-center"],[1,"mr-2",2,"font-size","0.85em","color","#ccc"],["mat-button","",3,"click"],[1,"pk-row","mb-3"],[2,"font-size","0.75em","color","#999"],[1,"total-row","mb-3"],[1,"d-flex","justify-content-center","py-4"],[1,"error-msg","py-2"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid"],[1,"py-4","text-center",2,"color","#999"],[1,"text-with-right-margin",3,"text"],["target","_blank","rel","noreferrer nofollow noopener",3,"href"],[1,"link-icon","transparent-button",3,"inline","matTooltip"],[3,"inline","matTooltip"],[1,"inline-form",3,"ngSubmit","formGroup"],["appearance","outline",1,"inline-form-field"],["matInput","","formControlName","address","maxlength","112","placeholder","2\u2026"],[1,"inline-form-actions"],["mat-raised-button","","color","primary","type","submit",3,"disabled"],["mat-button","","type","button",3,"click"],[2,"font-size","1.1em","font-weight","bold","color","#4caf50"],[2,"font-size","0.85em","color","#999","margin-left","12px"],["diameter","30"],[3,"class"],[2,"color","#666"],["target","_blank","rel","noopener",2,"font-size","0.8em","color","#3399ff",3,"href"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"span",2),p(3),_(4,"translate"),u(),h(5,"span",3)(6,"span",4),p(7),_(8,"translate"),u(),x(9,BEe,2,3),x(10,VEe,5,7),h(11,"button",5),_(12,"translate"),F("click",function(){return o.toggleRewardForm()}),h(13,"mat-icon",6),p(14),u()()(),x(15,HEe,13,11,"form",7),h(16,"span",8),F("click",function(){return o.toggleRewardRules()}),h(17,"mat-icon",6),p(18),u(),p(19),_(20,"translate"),u(),x(21,UEe,3,3,"pre",9),u()(),h(22,"div",0)(23,"div",1)(24,"div",10)(25,"div")(26,"span",4),p(27,"Reward History"),u(),x(28,zEe,2,1,"span",11),u(),h(29,"div",12)(30,"span",13),p(31,"Show:"),u(),h(32,"button",14),F("click",function(){return o.changeDays(7)}),p(33,"7d"),u(),h(34,"button",14),F("click",function(){return o.changeDays(30)}),p(35,"30d"),u(),h(36,"button",14),F("click",function(){return o.changeDays(90)}),p(37,"90d"),u()()(),h(38,"div",15)(39,"span",16),p(40),u()(),x(41,jEe,5,2,"div",17),x(42,$Ee,2,0,"div",18),x(43,WEe,2,1,"div",19),x(44,JEe,14,0,"table",20),x(45,ePe,2,0,"div",21),u()()),2&i&&(c(3),S(v(4,25,"node.details.rewards-info.title")),c(4),D("",v(8,27,"node.details.rewards-info.rewards-address")," "),c(2),k(o.rewardsAddress?9:-1),c(),k(o.rewardsAddress?-1:10),c(),C("matTooltip",v(12,29,o.rewardsAddress?"node.details.rewards-info.change-address-button":"node.details.rewards-info.set-address-button")),c(2),C("inline",!0),c(),S(o.showRewardForm?"close":"edit"),c(),k(o.showRewardForm?15:-1),c(2),C("inline",!0),c(),S(o.showRewardRules?"expand_more":"chevron_right"),c(),D(" ",v(20,31,"node.details.rewards-info.show-rules")," "),c(2),k(o.showRewardRules?21:-1),c(7),k(o.label?28:-1),c(4),ve("active-days",7===o.days),c(2),ve("active-days",30===o.days),c(2),ve("active-days",90===o.days),c(4),S(o.pk),c(),k(!o.loading&&o.history.length>0?41:-1),c(),k(o.loading?42:-1),c(),k(o.errorMsg?43:-1),c(),k(!o.loading&&o.history.length>0?44:-1),c(),k(o.loading||0!==o.history.length||o.errorMsg?-1:45))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,ns,On,Ht,Yo,Ae,Et,ci,cp,we],styles:[".title[_ngcontent-%COMP%]{font-size:1.1em;font-weight:700;color:#f8f9f9}.label-text[_ngcontent-%COMP%]{font-size:.9em;color:#aaa}.active-days[_ngcontent-%COMP%]{color:#4caf50!important;font-weight:700}.total-row[_ngcontent-%COMP%]{padding:8px 0;border-bottom:1px solid rgba(255,255,255,.1)}.error-msg[_ngcontent-%COMP%]{color:#f44336;text-align:center}.status-badge[_ngcontent-%COMP%]{padding:2px 8px;border-radius:4px;font-size:.8em}.status-badge.sent[_ngcontent-%COMP%]{background:#4caf5033;color:#4caf50}.status-badge.pending[_ngcontent-%COMP%]{background:#ffc10733;color:#ffc107}.status-badge.no-reward[_ngcontent-%COMP%]{color:#666}tr.sent[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-left:2px solid rgba(76,175,80,.3)}tr.pending[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-left:2px solid rgba(255,193,7,.3)}"]})}}return t})(),nPe=(()=>{class t{constructor(e){this.apiService=e}get(){return this.apiService.get("service-health")}static{this.\u0275fac=function(i){return new(i||t)(ce(fi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const iPe=()=>["nodes.services-health-title"],oPe=(t,n)=>n.reason;function rPe(t,n){1&t&&(h(0,"div",4),L(1,"mat-spinner",10),h(2,"span",11),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"services-health.loading")))}function sPe(t,n){if(1&t&&(h(0,"div",5)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",11),p(4),u()()),2&t){const e=y();c(4),S(e.error)}}function aPe(t,n){1&t&&(h(0,"mat-icon",18),p(1,"warning"),u(),h(2,"span"),p(3),_(4,"translate"),u()),2&t&&(c(3),S(v(4,1,"services-health.degraded")))}function lPe(t,n){1&t&&(h(0,"mat-icon",19),p(1,"check_circle"),u(),h(2,"span"),p(3),_(4,"translate"),u()),2&t&&(c(3),S(v(4,1,"services-health.all-ok")))}function cPe(t,n){if(1&t&&(h(0,"span",13),p(1),_(2,"translate"),_(3,"date"),u()),2&t){const e=y(2);c(),nt(" \u2014 ",v(2,2,"services-health.last-updated"),": ",ue(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function dPe(t,n){if(1&t&&(h(0,"code"),p(1),u()),2&t){const e=y().$implicit;c(),S(e.version)}}function uPe(t,n){1&t&&(h(0,"span",8),p(1,"\u2014"),u())}function hPe(t,n){if(1&t&&(h(0,"tr")(1,"td"),L(2,"span"),u(),h(3,"td")(4,"strong"),p(5),u()(),h(6,"td"),p(7),u(),h(8,"td"),p(9),u(),h(10,"td"),x(11,dPe,2,1,"code")(12,uPe,2,0,"span",8),u(),h(13,"td")(14,"code",8),p(15),u()()()),2&t){const e=n.$implicit,i=y(2);c(2),Ge(i.statusClass(e)),c(3),S(e.name),c(2),D(" ",e.status," "),c(),Ge(i.latencyClass(e)),c(),D(" ",e.latency_ms,"\xa0ms "),c(2),k(e.version?11:12),c(4),S(i.shortUrl(e.url))}}function fPe(t,n){if(1&t&&(h(0,"div",22)(1,"span",8),p(2),_(3,"translate"),u(),h(4,"code"),p(5),u()()),2&t){const e=y().$implicit;c(2),D("",v(3,2,"services-health.version"),":"),c(3),S(e.version)}}function pPe(t,n){if(1&t&&(h(0,"div",23),p(1),u()),2&t){const e=y().$implicit;c(),S(e.error)}}function mPe(t,n){if(1&t&&(h(0,"div",17)(1,"div",20),L(2,"span"),h(3,"strong",11),p(4),u(),h(5,"span",21),p(6),u()(),h(7,"div",22)(8,"span",8),p(9),_(10,"translate"),u(),p(11),u(),x(12,fPe,6,4,"div",22),h(13,"div",22)(14,"span",8),p(15),_(16,"translate"),u(),h(17,"code",8),p(18),u()(),x(19,pPe,2,1,"div",23),u()),2&t){const e=n.$implicit,i=y(2);c(2),Ge(i.statusClass(e)),c(2),S(e.name),c(),Ge(i.latencyClass(e)),c(),D("",e.latency_ms,"\xa0ms"),c(3),D("",v(10,12,"services-health.status"),":"),c(2),D(" ",e.status," "),c(),k(e.version?12:-1),c(3),D("",v(16,14,"services-health.endpoint"),":"),c(3),S(i.shortUrl(e.url)),c(),k(e.error?19:-1)}}function gPe(t,n){if(1&t&&(h(0,"div",12),x(1,aPe,5,3)(2,lPe,5,3),x(3,cPe,4,7,"span",13),u(),h(4,"table",14)(5,"tr"),L(6,"th",15),h(7,"th"),p(8),_(9,"translate"),u(),h(10,"th"),p(11),_(12,"translate"),u(),h(13,"th"),p(14),_(15,"translate"),u(),h(16,"th"),p(17),_(18,"translate"),u(),h(19,"th"),p(20),_(21,"translate"),u()(),me(22,hPe,16,9,"tr",null,wi().trackByName,!0),u(),h(24,"div",16),me(25,mPe,20,16,"div",17,wi().trackByName,!0),u()),2&t){const e=y();c(),k(e.anyDown()?1:2),c(2),k(e.lastUpdated?3:-1),c(5),S(v(9,7,"services-health.service")),c(3),S(v(12,9,"services-health.status")),c(3),S(v(15,11,"services-health.latency")),c(3),S(v(18,13,"services-health.version")),c(3),S(v(21,15,"services-health.endpoint")),c(2),ge(e.entries),c(3),ge(e.entries)}}function _Pe(t,n){1&t&&(h(0,"div",4),L(1,"mat-spinner",10),h(2,"span",11),p(3,"\u2026"),u()()),2&t&&(c(),C("diameter",14))}function bPe(t,n){1&t&&(h(0,"div",8),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"services-health.rsn-empty")))}function vPe(t,n){if(1&t&&(h(0,"span",28),p(1),_(2,"number"),u()),2&t){const e=y().$implicit;Ge(y().successClass(e.snapshot)),c(),D(" ",ue(2,3,e.snapshot.success_rate_pct,"1.0-1"),"% ")}}function yPe(t,n){if(1&t&&(h(0,"div",23),p(1),_(2,"translate"),u()),2&t){const e=y().$implicit;c(),nt("",v(2,2,"services-health.rsn-error"),": ",e.error)}}function CPe(t,n){if(1&t&&(h(0,"div")(1,"span",8),p(2),_(3,"translate"),u(),h(4,"span"),p(5),_(6,"date"),u()()),2&t){const e=y(2).$implicit;c(2),D("",v(3,2,"services-health.rsn-last-success"),":"),c(3),S(ue(6,4,e.snapshot.last_success_at,"HH:mm:ss"))}}function wPe(t,n){if(1&t&&(h(0,"div")(1,"span",8),p(2),_(3,"translate"),u(),h(4,"span"),p(5),_(6,"date"),u()()),2&t){const e=y(2).$implicit;c(2),D("",v(3,2,"services-health.rsn-last-failure"),":"),c(3),S(ue(6,4,e.snapshot.last_failure_at,"HH:mm:ss"))}}function xPe(t,n){if(1&t&&(h(0,"span",31),p(1),u()),2&t){const e=n.$implicit;c(),nt("",e.reason," (",e.count,")")}}function kPe(t,n){if(1&t&&(h(0,"div",30)(1,"span",8),p(2),_(3,"translate"),u(),me(4,xPe,2,2,"span",31,oPe),u()),2&t){const e=y(2).$implicit,i=y();c(2),D("",v(3,1,"services-health.rsn-failure-reasons"),":"),c(2),ge(i.topFailureReasons(e.snapshot))}}function SPe(t,n){if(1&t&&(h(0,"div",29)(1,"div")(2,"span",8),p(3),_(4,"translate"),u(),h(5,"strong"),p(6),u()(),h(7,"div")(8,"span",8),p(9),_(10,"translate"),u(),h(11,"strong"),p(12),u()(),h(13,"div")(14,"span",8),p(15),_(16,"translate"),u(),h(17,"strong"),p(18),u()(),h(19,"div")(20,"span",8),p(21),_(22,"translate"),u(),h(23,"strong"),p(24),u()(),h(25,"div")(26,"span",8),p(27),_(28,"translate"),u(),h(29,"strong"),p(30),u()(),h(31,"div")(32,"span",8),p(33),_(34,"translate"),u(),h(35,"strong"),p(36),u()(),x(37,CPe,7,7,"div"),x(38,wPe,7,7,"div"),u(),x(39,kPe,6,3,"div",30)),2&t){const e=y().$implicit,i=y();c(3),D("",v(4,15,"services-health.rsn-success"),":"),c(3),S(e.snapshot.successful||0),c(3),D("",v(10,17,"services-health.rsn-failed"),":"),c(3),S(e.snapshot.failed||0),c(3),D("",v(16,19,"services-health.rsn-active"),":"),c(3),S(e.snapshot.active_requests||0),c(3),D("",v(22,21,"services-health.rsn-latency-p50"),":"),c(3),D("",(null==e.snapshot.latency_ms?null:e.snapshot.latency_ms.p50_ms)||0," ms"),c(3),D("",v(28,23,"services-health.rsn-latency-p95"),":"),c(3),D("",(null==e.snapshot.latency_ms?null:e.snapshot.latency_ms.p95_ms)||0," ms"),c(3),D("",v(34,25,"services-health.rsn-latency-p99"),":"),c(3),D("",(null==e.snapshot.latency_ms?null:e.snapshot.latency_ms.p99_ms)||0," ms"),c(),k(e.snapshot.last_success_at?37:-1),c(),k(e.snapshot.last_failure_at?38:-1),c(),k(i.topFailureReasons(e.snapshot).length>0?39:-1)}}function MPe(t,n){if(1&t&&(h(0,"div",9)(1,"div",24),L(2,"span",25),h(3,"code",26),p(4),u(),x(5,vPe,3,6,"span",27),u(),x(6,yPe,3,4,"div",23),x(7,SPe,40,27),u()),2&t){const e=n.$implicit;c(2),C("ngClass",e.snapshot?"dot-green":"dot-red"),c(2),S(e.pk),c(),k(e.snapshot?5:-1),c(),k(e.error?6:-1),c(),k(e.snapshot?7:-1)}}let DPe=(()=>{class t extends Lt{constructor(e,i){super(),this.healthSvc=e,this.api=i,this.tabsData=[],this.entries=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.rsnStats=[],this.rsnLoading=!0,this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"schedule",label:"nodes.uptime-title",linkParts:["/nodes","uptime"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=ds(15e3).pipe(zn(0),wt(()=>this.healthSvc.get())).subscribe({next:e=>{this.entries=e||[],this.loading=!1,this.error=null,this.lastUpdated=new Date},error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch services health"}}),this.rsnSub=ds(3e4).pipe(zn(0),wt(()=>this.api.get("route-setup-nodes/stats"))).subscribe({next:e=>{this.rsnStats=Array.isArray(e)?e:[],this.rsnLoading=!1},error:()=>{this.rsnLoading=!1}}),super.ngOnInit()}ngOnDestroy(){this.sub?.unsubscribe(),this.rsnSub?.unsubscribe()}topFailureReasons(e){return e?.failures_by_reason?Object.entries(e.failures_by_reason).map(([i,o])=>({reason:i,count:o})).filter(i=>i.count>0).sort((i,o)=>o.count-i.count).slice(0,3):[]}successClass(e){const i=e?.success_rate_pct??0;return i>=90?"latency-fast":i>=70?"latency-medium":"latency-slow"}trackRSN(e,i){return i.pk}statusClass(e){const i=(e?.status||"").toUpperCase();return"OK"===i?"dot-green":"DOWN"===i?"dot-red":"dot-outline-gray"}anyDown(){return this.entries.some(e=>"OK"!==(e?.status||"").toUpperCase())}latencyClass(e){const i=e?.latency_ms??0;return i<500?"latency-fast":i<2e3?"latency-medium":"latency-slow"}shortUrl(e){if(!e)return"";try{return new URL(e).host}catch{return e}}trackByName(e,i){return i.name}static{this.\u0275fac=function(i){return new(i||t)(O(nPe),O(fi))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-services-health"]],standalone:!1,features:[_e],decls:15,vars:13,consts:[[1,"row"],[1,"col-12"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton"],[1,"content","col-12","mt-4.5"],[1,"loading-row"],[1,"error-row"],[1,"rsn-section","mt-4"],[1,"rsn-title"],[1,"dim"],[1,"rsn-card"],[3,"diameter"],[1,"ml-2"],[1,"summary-line"],[1,"last-updated"],[1,"responsive-table-translucid","d-none","d-md-table","mt-3"],[1,"small-column"],[1,"d-md-none","mt-3"],[1,"mobile-card"],[1,"warn"],[1,"ok"],[1,"mobile-header"],[1,"ml-auto"],[1,"mobile-row"],[1,"error-detail"],[1,"rsn-card-header"],[1,"dot",3,"ngClass"],[1,"rsn-pk","mono","small"],[1,"rsn-rate",3,"class"],[1,"rsn-rate"],[1,"rsn-grid"],[1,"rsn-failures"],[1,"rsn-fail-pill"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1),L(2,"app-top-bar",2),u(),h(3,"div",3),x(4,rPe,5,4,"div",4),x(5,sPe,5,1,"div",5),x(6,gPe,27,17),h(7,"div",6)(8,"h3",7),p(9),_(10,"translate"),u(),x(11,_Pe,4,1,"div",4),x(12,bPe,3,3,"div",8),me(13,MPe,8,5,"div",9,o.trackRSN,!0),u()()()),2&i&&(c(2),C("titleParts",vt(12,iPe))("tabsData",o.tabsData)("selectedTabIndex",6)("showUpdateButton",!1),c(2),k(o.loading&&0===o.entries.length?4:-1),c(),k(o.error&&0===o.entries.length?5:-1),c(),k(o.entries.length>0?6:-1),c(3),S(v(10,10,"services-health.rsn-section")),c(2),k(o.rsnLoading&&0===o.rsnStats.length?11:-1),c(),k(o.rsnLoading||0!==o.rsnStats.length?-1:12),c(),ge(o.rsnStats))},dependencies:[Ft,Ae,ci,tr,Gl,vr,we],styles:[".loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffbf;padding:24px 0}.error-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#f87171;padding:24px 0}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;margin-right:6px}.summary-line[_ngcontent-%COMP%] mat-icon.ok[_ngcontent-%COMP%]{color:#4ade80}.summary-line[_ngcontent-%COMP%] mat-icon.warn[_ngcontent-%COMP%]{color:#fbbf24}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.small-column[_ngcontent-%COMP%]{width:24px}.dim[_ngcontent-%COMP%]{color:#ffffff8c}.latency-fast[_ngcontent-%COMP%]{color:#4ade80}.latency-medium[_ngcontent-%COMP%]{color:#fbbf24}.latency-slow[_ngcontent-%COMP%]{color:#f87171}.error-detail[_ngcontent-%COMP%]{color:#f87171;font-size:.8em;margin-top:4px}.mobile-card[_ngcontent-%COMP%]{background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:12px;margin-bottom:10px}.mobile-card[_ngcontent-%COMP%] .mobile-header[_ngcontent-%COMP%]{display:flex;align-items:center;margin-bottom:8px;font-size:1em}.mobile-card[_ngcontent-%COMP%] .mobile-row[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffd9;padding:2px 0}.mobile-card[_ngcontent-%COMP%] .mobile-row[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:#ffffffd9}code[_ngcontent-%COMP%]{font-family:monospace;font-size:.9em}.rsn-section[_ngcontent-%COMP%] .rsn-title[_ngcontent-%COMP%]{font-size:1em;font-weight:600;color:#fffffff2;margin:0 0 10px}.rsn-section[_ngcontent-%COMP%] .rsn-card[_ngcontent-%COMP%]{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:10px 14px;margin-bottom:10px}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:50%;display:inline-block}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .dot-green[_ngcontent-%COMP%]{background:#4caf50}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .dot-red[_ngcontent-%COMP%]{background:#f44336}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .rsn-pk[_ngcontent-%COMP%]{font-family:monospace;font-size:11px;color:#ffffffb3;word-break:break-all;flex:1 1 auto;min-width:0}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .rsn-rate[_ngcontent-%COMP%]{font-weight:600;font-size:13px}.rsn-section[_ngcontent-%COMP%] .rsn-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px 16px;font-size:12px}.rsn-section[_ngcontent-%COMP%] .rsn-grid[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{margin-left:6px;color:#fffffff2}.rsn-section[_ngcontent-%COMP%] .rsn-failures[_ngcontent-%COMP%]{margin-top:8px;font-size:11px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.rsn-section[_ngcontent-%COMP%] .rsn-failures[_ngcontent-%COMP%] .rsn-fail-pill[_ngcontent-%COMP%]{background:#e5393526;border:1px solid rgba(229,57,53,.35);color:#ffc8c8f2;padding:1px 6px;border-radius:3px}"]})}}return t})();const TPe=()=>["nodes.network-title"],gH=(t,n)=>n.pk;function EPe(t,n){1&t&&(h(0,"div",4),L(1,"mat-spinner",7),h(2,"span",8),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"network-view.loading")))}function PPe(t,n){if(1&t&&(h(0,"div",5)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",8),p(4),u()()),2&t){const e=y();c(4),S(e.error)}}function IPe(t,n){if(1&t&&(h(0,"div",15),p(1),_(2,"translate"),_(3,"date"),u()),2&t){const e=y(2);c(),nt(" ",v(2,2,"network-view.last-updated"),": ",ue(3,4,e.lastUpdated,"mediumTime")," ")}}function OPe(t,n){if(1&t&&(h(0,"tr",32)(1,"td",36),p(2),u(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),u(),h(9,"td",31),p(10),u(),h(11,"td",31),p(12),u(),h(13,"td",31),p(14),u(),h(15,"td",31),p(16),u(),h(17,"td",31)(18,"strong"),p(19),u()(),h(20,"td"),p(21),u()()),2&t){const e=n.$implicit;C("ngClass",y(2).rowClass(e)),c(),C("matTooltip",e.pk),c(),S(e.pk),c(2),S(e.country||"-"),c(2),S(e.version||"-"),c(2),S(e.services||"-"),c(2),S(e.stcpr),c(2),S(e.sudph),c(2),S(e.dmsg),c(2),S(e.stcp),c(3),S(e.total),c(2),S(e.ut_status||"-")}}function APe(t,n){if(1&t&&(h(0,"div",34)(1,"div",37),p(2),u(),h(3,"div",38),p(4),u(),h(5,"div",39),p(6),h(7,"strong"),p(8),u(),p(9),u()()),2&t){const e=n.$implicit;C("ngClass",y(2).rowClass(e)),c(),C("matTooltip",e.pk),c(),S(e.pk),c(2),Fd(" ",e.country||"-"," \xb7 ",e.version||"-"," \xb7 ",e.services||"-"," "),c(2),Kh(" stcpr ",e.stcpr," \xb7 sudph ",e.sudph," \xb7 dmsg ",e.dmsg," \xb7 stcp ",e.stcp," \xb7 "),c(2),D("total ",e.total),c(),D(" \xb7 ",e.ut_status||"-"," ")}}function RPe(t,n){1&t&&(h(0,"p",35),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"network-view.empty")))}function FPe(t,n){if(1&t){const e=re();h(0,"div",6)(1,"div",9)(2,"div",10)(3,"div",11)(4,"span")(5,"strong"),p(6),u(),p(7," visors"),u(),L(8,"span",12),h(9,"span"),p(10),u(),L(11,"span",13),h(12,"span"),p(13),u(),L(14,"span",14),h(15,"span"),p(16),u()(),x(17,IPe,4,7,"div",15),h(18,"button",16),_(19,"translate"),F("click",function(){return V(e),H(y().refreshNow())}),h(20,"mat-icon",17),p(21,"refresh"),u()()(),h(22,"div",18)(23,"mat-form-field",19)(24,"mat-label"),p(25),_(26,"translate"),u(),h(27,"input",20),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.searchTerm,o)||(r.searchTerm=o),H(o)}),F("ngModelChange",function(){return V(e),H(y().applyFilters())}),u()(),h(28,"mat-form-field",21)(29,"mat-label"),p(30),_(31,"translate"),u(),h(32,"input",22),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.filterCountry,o)||(r.filterCountry=o),H(o)}),F("ngModelChange",function(){return V(e),H(y().applyFilters())}),u()(),h(33,"mat-form-field",21)(34,"mat-label"),p(35),_(36,"translate"),u(),h(37,"input",23),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.filterVersion,o)||(r.filterVersion=o),H(o)}),F("ngModelChange",function(){return V(e),H(y().applyFilters())}),u()(),h(38,"mat-form-field",21)(39,"mat-label"),p(40),_(41,"translate"),u(),h(42,"input",24),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.filterMinTransports,o)||(r.filterMinTransports=o),H(o)}),F("ngModelChange",function(){return V(e),H(y().applyFilters())}),u()(),h(43,"mat-checkbox",25),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.showOnlineOnly,o)||(r.showOnlineOnly=o),H(o)}),F("ngModelChange",function(){return V(e),H(y().applyFilters())}),p(44),_(45,"translate"),u()(),h(46,"div",26),L(47,"span",27),h(48,"span"),p(49),_(50,"translate"),u(),L(51,"span",28),h(52,"span"),p(53),_(54,"translate"),u(),L(55,"span",29),h(56,"span"),p(57),_(58,"translate"),u()(),h(59,"table",30)(60,"tr")(61,"th"),p(62),_(63,"translate"),u(),h(64,"th"),p(65),_(66,"translate"),u(),h(67,"th"),p(68),_(69,"translate"),u(),h(70,"th"),p(71),_(72,"translate"),u(),h(73,"th",31),p(74,"stcpr"),u(),h(75,"th",31),p(76,"sudph"),u(),h(77,"th",31),p(78,"dmsg"),u(),h(79,"th",31),p(80,"stcp"),u(),h(81,"th",31),p(82),_(83,"translate"),u(),h(84,"th"),p(85),_(86,"translate"),u()(),me(87,OPe,22,12,"tr",32,gH),u(),h(89,"div",33),me(90,APe,10,12,"div",34,gH),u(),x(92,RPe,3,3,"p",35),u()()}if(2&t){const e=y();c(6),S(e.totals.all),c(4),D("",e.totals.online," online"),c(3),D("",e.totals.offline," offline"),c(3),D("",e.totals.notInUT," not in UT"),c(),k(e.lastUpdated?17:-1),c(),C("matTooltip",v(19,27,"network-view.refresh")),c(2),C("inline",!0),c(5),S(v(26,29,"network-view.search")),c(2),Kt("ngModel",e.searchTerm),c(3),S(v(31,31,"network-view.country")),c(2),Kt("ngModel",e.filterCountry),c(3),S(v(36,33,"network-view.version")),c(2),Kt("ngModel",e.filterVersion),c(3),S(v(41,35,"network-view.min-transports")),c(2),Kt("ngModel",e.filterMinTransports),c(),Kt("ngModel",e.showOnlineOnly),c(),D(" ",v(45,37,"network-view.online-only")," "),c(5),S(v(50,39,"network-view.legend.offline")),c(4),S(v(54,41,"network-view.legend.not-in-ut")),c(4),S(v(58,43,"network-view.legend.low-transports")),c(5),S(v(63,45,"network-view.col.pk")),c(3),S(v(66,47,"network-view.col.country")),c(3),S(v(69,49,"network-view.col.version")),c(3),S(v(72,51,"network-view.col.services")),c(11),S(v(83,53,"network-view.col.total")),c(3),S(v(86,55,"network-view.col.status")),c(2),ge(e.filteredEntries),c(3),ge(e.filteredEntries),c(2),k(0===e.filteredEntries.length?92:-1)}}let NPe=(()=>{class t extends Lt{constructor(e){super(),this.nodeService=e,this.tabsData=[],this.entries=[],this.filteredEntries=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.filterCountry="",this.filterVersion="",this.filterMinTransports=null,this.showOnlineOnly=!0,this.searchTerm="",this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"schedule",label:"nodes.uptime-title",linkParts:["/nodes","uptime"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=ds(3e5).pipe(zn(0),wt(()=>this.nodeService.getNetworkView())).subscribe({next:e=>this.onResponse(e),error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch network view"}}),super.ngOnInit()}refreshNow(){this.loading=0===this.entries.length,this.nodeService.getNetworkView(!0).subscribe({next:e=>this.onResponse(e),error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch network view"}})}onResponse(e){this.entries=e?.entries||[],this.loading=!1,this.error=null,this.lastUpdated=new Date,this.applyFilters()}ngOnDestroy(){this.sub&&this.sub.unsubscribe()}applyFilters(){const e=(this.searchTerm||"").trim().toLowerCase(),i=(this.filterCountry||"").trim().toUpperCase(),o=(this.filterVersion||"").trim(),r=this.filterMinTransports||0;this.filteredEntries=this.entries.filter(s=>!(this.showOnlineOnly&&"online"!==(s.ut_status||"")||i&&(s.country||"").toUpperCase()!==i||o&&(s.version||"")!==o||r>0&&(s.total||0)0?6:-1))},dependencies:[Ft,Qt,Oa,Jt,Bi,gc,dn,ns,On,Yo,Ae,Et,gu,ci,Fo,tr,vr,we],styles:[".nv-header[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:16px;padding:8px 4px 4px}.nv-header[_ngcontent-%COMP%] .nv-totals[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:13px}.nv-header[_ngcontent-%COMP%] .nv-fetched[_ngcontent-%COMP%]{margin-left:auto;font-size:12px;opacity:.6}.nv-header[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:8px}.nv-header[_ngcontent-%COMP%] .dot-green[_ngcontent-%COMP%]{background:#4caf50}.nv-header[_ngcontent-%COMP%] .dot-red[_ngcontent-%COMP%]{background:#e53935}.nv-header[_ngcontent-%COMP%] .dot-outline-gray[_ngcontent-%COMP%]{border:1px solid rgba(255,255,255,.4)}.nv-filters[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:8px 4px;border-bottom:1px solid rgba(255,255,255,.06)}.nv-filters[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{flex:0 1 200px}.nv-filters[_ngcontent-%COMP%] .field-sm[_ngcontent-%COMP%]{flex:0 1 130px}.nv-filters[_ngcontent-%COMP%] .field-md[_ngcontent-%COMP%]{flex:1 1 280px}.nv-legend[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12px;padding:8px 4px;opacity:.8}.nv-legend[_ngcontent-%COMP%] .row-marker[_ngcontent-%COMP%]{display:inline-block;width:16px;height:12px;border-radius:2px;margin-left:6px}.responsive-table-translucid[_ngcontent-%COMP%] th.num[_ngcontent-%COMP%], .responsive-table-translucid[_ngcontent-%COMP%] td.num[_ngcontent-%COMP%]{text-align:right;font-variant-numeric:tabular-nums}.row-offline[_ngcontent-%COMP%]{color:#e53935d9!important}.row-not-in-ut[_ngcontent-%COMP%]{background:#e539351f!important;color:#ffffffe6!important}.row-low-transports[_ngcontent-%COMP%]{background:#ffa7261f!important;color:#ffdc96f2!important}.row-marker.row-offline[_ngcontent-%COMP%]{background:#e5393580}.row-marker.row-not-in-ut[_ngcontent-%COMP%]{background:#e5393540}.row-marker.row-low-transports[_ngcontent-%COMP%]{background:#ffa7264d}.nv-cards[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;padding:8px 0}.nv-card[_ngcontent-%COMP%]{border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:8px 10px}.nv-card[_ngcontent-%COMP%] .nv-card-pk[_ngcontent-%COMP%]{font-weight:600}.nv-card[_ngcontent-%COMP%] .nv-card-meta[_ngcontent-%COMP%]{opacity:.7;font-size:12px}.nv-card[_ngcontent-%COMP%] .nv-card-tps[_ngcontent-%COMP%]{font-size:12px;margin-top:2px;font-variant-numeric:tabular-nums}.nv-empty[_ngcontent-%COMP%]{text-align:center;opacity:.6;padding:24px}"]})}}return t})();const LPe=()=>["nodes.resources-title"],BPe=t=>({count:t}),VPe=(t,n)=>({"click-effect":t,"non-selectable":n}),_H=t=>["/nodes",t,"resources"];function HPe(t,n){1&t&&(h(0,"div",4),L(1,"mat-spinner",6),h(2,"span",7),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"multi-resources.loading")))}function UPe(t,n){if(1&t&&(h(0,"div",5)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",7),p(4),u()()),2&t){const e=y();c(4),S(e.error)}}function zPe(t,n){if(1&t&&(h(0,"span",10),p(1),_(2,"translate"),_(3,"date"),u()),2&t){const e=y(2);c(),nt(" \u2014 ",v(2,2,"multi-resources.last-updated"),": ",ue(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function jPe(t,n){if(1&t&&(h(0,"div",23),p(1),u()),2&t){const e=y().$implicit;c(),S(e.error)}}function $Pe(t,n){if(1&t&&(h(0,"div",26),p(1),u(),h(2,"div",26),p(3),u()),2&t){const e=y(2).$implicit;c(),S(e.node.ip),c(2),S(e.node.publicIp)}}function WPe(t,n){if(1&t&&(h(0,"div",26),p(1),u()),2&t){const e=y(2).$implicit;c(),S(e.node.publicIp)}}function GPe(t,n){if(1&t&&(h(0,"div",26),p(1),u()),2&t){const e=y(2).$implicit;c(),S(e.node.ip)}}function qPe(t,n){if(1&t&&(h(0,"div",26),p(1),u()),2&t){const e=y(2).$implicit;c(),Fd("",e.node.cityName?e.node.cityName+", ":"","",e.node.regionName?e.node.regionName+", ":"","",e.node.countryCode)}}function KPe(t,n){if(1&t&&(x(0,$Pe,4,2)(1,WPe,2,1,"div",26)(2,GPe,2,1,"div",26),x(3,qPe,2,3,"div",26)),2&t){const e=y().$implicit;k(e.node.ip&&e.node.publicIp&&e.node.ip!==e.node.publicIp?0:e.node.publicIp?1:e.node.ip?2:-1),c(3),k(e.node.countryCode?3:-1)}}function YPe(t,n){1&t&&(h(0,"span"),p(1,"-"),u())}function XPe(t,n){1&t&&(p(0),_(1,"number")),2&t&&D(" ",ue(1,1,y().$implicit.stats.cpu_percent,"1.0-1"),"% ")}function ZPe(t,n){1&t&&(h(0,"span",24),p(1,"-"),u())}function QPe(t,n){if(1&t&&(p(0),_(1,"number"),h(2,"div",27),p(3),u()),2&t){const e=y().$implicit,i=y(2);D(" ",ue(1,3,e.stats.mem_percent,"1.0-1"),"% "),c(3),nt("",i.fmtBytes(e.stats.mem_used)," / ",i.fmtBytes(e.stats.mem_total))}}function JPe(t,n){1&t&&(h(0,"span",24),p(1,"-"),u())}function eIe(t,n){1&t&&(p(0),_(1,"number")),2&t&&D(" ",ue(1,1,y().$implicit.stats.disk_percent,"1.0-1"),"% ")}function tIe(t,n){1&t&&(h(0,"span",24),p(1,"-"),u())}function nIe(t,n){1&t&&(h(0,"mat-icon",25),p(1,"chevron_right"),u()),2&t&&C("inline",!0)}function iIe(t,n){if(1&t&&(h(0,"a",18)(1,"td"),L(2,"span",21),u(),h(3,"td")(4,"div"),p(5),u(),h(6,"div",22),p(7),u(),x(8,jPe,2,1,"div",23),u(),h(9,"td"),x(10,KPe,4,2)(11,YPe,2,0,"span"),u(),h(12,"td",16),x(13,XPe,2,4)(14,ZPe,2,0,"span",24),u(),h(15,"td",16),x(16,QPe,4,6)(17,JPe,2,0,"span",24),u(),h(18,"td",16),x(19,eIe,2,4)(20,tIe,2,0,"span",24),u(),h(21,"td",16),p(22),u(),h(23,"td",16),p(24),u(),h(25,"td",16),p(26),u(),h(27,"td",17),x(28,nIe,2,1,"mat-icon",25),u()()),2&t){const e=n.$implicit,i=y(2);C("ngClass",pt(20,VPe,e.node.online,!e.node.online))("routerLink",e.node.online?ie(23,_H,e.node.localPk):null),c(2),C("ngClass",e.node.online?"dot-green":"dot-red"),c(3),S(e.node.label||e.node.localPk),c(2),S(e.node.localPk),c(),k(e.error?8:-1),c(2),k(e.node.publicIp||e.node.ip?10:11),c(2),Ge(i.pctClass(null==e.stats?null:e.stats.cpu_percent)),c(),k(void 0!==(null==e.stats?null:e.stats.cpu_percent)?13:14),c(2),Ge(i.pctClass(null==e.stats?null:e.stats.mem_percent)),c(),k(void 0!==(null==e.stats?null:e.stats.mem_percent)?16:17),c(2),Ge(i.pctClass(null==e.stats?null:e.stats.disk_percent)),c(),k(void 0!==(null==e.stats?null:e.stats.disk_percent)?19:20),c(3),S(i.formatRate(e.txRate)),c(2),S(i.formatRate(e.rxRate)),c(2),S(i.formatBytes(null==e.stats||null==e.stats.process?null:e.stats.process.mem_rss)),c(2),k(e.node.online?28:-1)}}function oIe(t,n){if(1&t&&(h(0,"div",23),p(1),u()),2&t){const e=y().$implicit;c(),S(e.error)}}function rIe(t,n){if(1&t&&(h(0,"div",31)(1,"div")(2,"span",24),p(3),_(4,"translate"),u(),h(5,"strong"),p(6),_(7,"number"),u()(),h(8,"div")(9,"span",24),p(10),_(11,"translate"),u(),h(12,"strong"),p(13),_(14,"number"),u()(),h(15,"div")(16,"span",24),p(17),_(18,"translate"),u(),h(19,"strong"),p(20),_(21,"number"),u()(),h(22,"div")(23,"span",24),p(24),_(25,"translate"),u(),h(26,"strong"),p(27),u()(),h(28,"div")(29,"span",24),p(30),_(31,"translate"),u(),h(32,"strong"),p(33),u()(),h(34,"div")(35,"span",24),p(36),_(37,"translate"),u(),h(38,"strong"),p(39),u()()()),2&t){const e=y().$implicit,i=y(2);c(3),D("",v(4,18,"multi-resources.cpu"),":"),c(2),Ge(i.pctClass(e.stats.cpu_percent)),c(),D("",ue(7,20,e.stats.cpu_percent,"1.0-1"),"%"),c(4),D("",v(11,23,"multi-resources.mem"),":"),c(2),Ge(i.pctClass(e.stats.mem_percent)),c(),D("",ue(14,25,e.stats.mem_percent,"1.0-1"),"%"),c(4),D("",v(18,28,"multi-resources.disk"),":"),c(2),Ge(i.pctClass(e.stats.disk_percent)),c(),D("",ue(21,30,e.stats.disk_percent,"1.0-1"),"%"),c(4),D("",v(25,33,"multi-resources.tx"),":"),c(3),S(i.formatRate(e.txRate)),c(3),D("",v(31,35,"multi-resources.rx"),":"),c(3),S(i.formatRate(e.rxRate)),c(3),D("",v(37,37,"multi-resources.proc-rss"),":"),c(3),S(i.formatBytes(null==e.stats.process?null:e.stats.process.mem_rss))}}function sIe(t,n){if(1&t&&(h(0,"a",20)(1,"div",28)(2,"div",29),L(3,"span",21),h(4,"strong",7),p(5),u()(),h(6,"div",30),p(7),u(),x(8,oIe,2,1,"div",23),x(9,rIe,40,39,"div",31),u()()),2&t){const e=n.$implicit;C("routerLink",e.node.online?ie(6,_H,e.node.localPk):null),c(3),C("ngClass",e.node.online?"dot-green":"dot-red"),c(2),S(e.node.label||e.node.localPk),c(2),S(e.node.localPk),c(),k(e.error?8:-1),c(),k(e.stats?9:-1)}}function aIe(t,n){if(1&t&&(h(0,"div",8)(1,"mat-icon"),p(2,"memory"),u(),h(3,"span",9),p(4),_(5,"translate"),u(),x(6,zPe,4,7,"span",10),u(),h(7,"div",11)(8,"div",12)(9,"table",13)(10,"tr"),L(11,"th",14),h(12,"th",15),p(13),_(14,"translate"),u(),h(15,"th"),p(16),_(17,"translate"),u(),h(18,"th",16),p(19),_(20,"translate"),u(),h(21,"th",16),p(22),_(23,"translate"),u(),h(24,"th",16),p(25),_(26,"translate"),u(),h(27,"th",16),p(28),_(29,"translate"),u(),h(30,"th",16),p(31),_(32,"translate"),u(),h(33,"th",16),p(34),_(35,"translate"),u(),L(36,"th",17),u(),me(37,iIe,29,25,"a",18,wi().trackRow,!0),u(),h(39,"div",19),me(40,sIe,10,8,"a",20,wi().trackRow,!0),u()()()),2&t){const e=y();c(4),S(ue(5,10,"multi-resources.summary",ie(29,BPe,e.rows.length))),c(2),k(e.lastUpdated?6:-1),c(7),S(v(14,13,"multi-resources.visor")),c(3),S(v(17,15,"nodes.ip-location")),c(3),S(v(20,17,"multi-resources.cpu")),c(3),S(v(23,19,"multi-resources.mem")),c(3),S(v(26,21,"multi-resources.disk")),c(3),S(v(29,23,"multi-resources.tx")),c(3),S(v(32,25,"multi-resources.rx")),c(3),S(v(35,27,"multi-resources.proc-rss")),c(3),ge(e.rows),c(3),ge(e.rows)}}let lIe=(()=>{class t extends Lt{constructor(e,i,o){super(),this.nodeService=e,this.api=i,this.cdr=o,this.tabsData=[],this.rows=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"schedule",label:"nodes.uptime-title",linkParts:["/nodes","uptime"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=ds(5e3).pipe(zn(0),wt(()=>this.nodeService.getNodes()),wt(e=>{const i=(e||[]).filter(r=>r.online);return 0===i.length?se({nodes:e||[],stats:[]}):du(i.map(r=>this.api.get(`visors/${r.localPk}/host-stats`).pipe(ii(s=>se({__error:s?.message||"failed"}))))).pipe(wt(r=>se({nodes:e||[],stats:r.map((s,a)=>({pk:i[a].localPk,stats:s&&!s.__error?s:void 0,error:s&&s.__error?s.__error:void 0}))})))})).subscribe({next:({nodes:e,stats:i})=>{this.mergeStats(e,i),this.loading=!1,this.error=null,this.lastUpdated=new Date,this.cdr.markForCheck()},error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch resources"}}),super.ngOnInit()}ngOnDestroy(){this.sub?.unsubscribe()}mergeStats(e,i){const o=new Map;i.forEach(l=>o.set(l.pk,{stats:l.stats,error:l.error}));const r=new Map;this.rows.forEach(l=>r.set(l.node.localPk,l));const s=Date.now(),a=e.map(l=>{const d=o.get(l.localPk),f=r.get(l.localPk),m={node:l,...d};if(d?.stats){const g=d.stats.net_bytes_sent||0,b=d.stats.net_bytes_recv||0;if(f?.lastSampleAt&&void 0!==f.prevSent&&void 0!==f.prevRecv){const w=(s-f.lastSampleAt)/1e3;if(w>0){const M=Math.max(0,(g-f.prevSent)/w),E=Math.max(0,(b-f.prevRecv)/w);m.txRate=M,m.rxRate=E}}m.prevSent=g,m.prevRecv=b,m.lastSampleAt=s}return m});a.sort((l,d)=>{const f=(l.node.label||"").toLowerCase(),m=(d.node.label||"").toLowerCase();return f!==m?f=90?"pct-bad":e>=70?"pct-warn":"pct-ok"}formatRate(e){if(null==e||e<0)return"-";const i=["B/s","KB/s","MB/s","GB/s"];let o=0,r=e;for(;r>=1024&&o=1024&&o0?6:-1))},dependencies:[Ft,es,Ae,ci,tr,Gl,vr,we],styles:[".loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffbf;padding:24px 0}.error-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#f87171;padding:24px 0}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-green[_ngcontent-%COMP%]{background:#4caf50}.dot-red[_ngcontent-%COMP%]{background:#f44336}.visor-link[_ngcontent-%COMP%]{color:#fffffff2;text-decoration:none}.visor-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.visor-pk[_ngcontent-%COMP%]{color:#ffffff8c;font-size:11px;word-break:break-all;font-family:monospace}.visor-err[_ngcontent-%COMP%]{color:#f87171;font-size:12px;margin-top:2px}.dim[_ngcontent-%COMP%]{color:#fff9}.small[_ngcontent-%COMP%]{font-size:.85em}.pct-ok[_ngcontent-%COMP%]{color:#4caf50;font-weight:500}.pct-warn[_ngcontent-%COMP%]{color:#ff9800;font-weight:500}.pct-bad[_ngcontent-%COMP%]{color:#f44336;font-weight:600}.pct-na[_ngcontent-%COMP%]{color:#ffffff80}.mobile-card[_ngcontent-%COMP%]{background:#ffffff0a;border-radius:4px;padding:12px;margin-bottom:10px}.mobile-card[_ngcontent-%COMP%] .mobile-header[_ngcontent-%COMP%]{display:flex;align-items:center}.mobile-card[_ngcontent-%COMP%] .mobile-pk[_ngcontent-%COMP%]{color:#ffffff8c;font-size:11px;word-break:break-all;font-family:monospace;margin:4px 0 6px}.mobile-card[_ngcontent-%COMP%] .mobile-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;font-size:12px}"]})}}return t})();const cIe=()=>["nodes.uptime-title"],dIe=t=>["/nodes",t,"uptime"],uIe=(t,n)=>n.left;function hIe(t,n){1&t&&(h(0,"div",9),L(1,"mat-spinner",13),h(2,"span",14),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"uptime.loading-fleet")))}function fIe(t,n){if(1&t&&(h(0,"div",10)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",14),p(4),u()()),2&t){const e=y();c(4),S(e.error)}}function pIe(t,n){1&t&&(h(0,"div",11),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"uptime.fleet-empty")))}function mIe(t,n){if(1&t&&(h(0,"div",12)(1,"mat-icon"),p(2,"schedule"),u(),h(3,"span",15),p(4),_(5,"translate"),_(6,"translate"),_(7,"date"),u()()),2&t){const e=y();c(4),Kh(" ",e.rows.length," ",v(5,4,"common.visors")," \xb7 ",v(6,6,"uptime.last-updated"),": ",ue(7,8,e.lastUpdated,"HH:mm:ss")," ")}}function gIe(t,n){if(1&t&&(h(0,"span",33),p(1),u()),2&t){const e=n.$implicit;Hl("left",e.left,"%"),c(),S(e.label)}}function _Ie(t,n){if(1&t&&(h(0,"div",26)(1,"span",28),p(2,"\xa0"),u(),h(3,"span",29),p(4,"\xa0"),u(),h(5,"div",30),me(6,gIe,2,3,"span",31,uIe),u(),h(8,"span",32),p(9,"\xa0"),u()()),2&t){const e=y(2);c(6),ge(e.ticks)}}function bIe(t,n){if(1&t&&(h(0,"a",37),p(1),u()),2&t){const e=y().$implicit;C("routerLink",ie(3,dIe,e.pk))("matTooltip",e.label||e.pk),c(),S(e.pk)}}function vIe(t,n){if(1&t&&(h(0,"span",38),p(1),u()),2&t){const e=y().$implicit;C("matTooltip",e.version||e.pk),c(),S(e.pk)}}function yIe(t,n){if(1&t&&L(0,"span",41),2&t){const e=n.$implicit,i=y(3);C("ngClass",i.blockClass(e))("matTooltip",i.blockTooltip(e))}}function CIe(t,n){if(1&t&&(h(0,"div",34)(1,"span",35),L(2,"span",36),_(3,"translate"),x(4,bIe,2,5,"a",37)(5,vIe,2,2,"span",38),u(),h(6,"span",39),_(7,"translate"),p(8),u(),h(9,"div",40),me(10,yIe,1,2,"span",41,wi().trackBlock,!0),u(),h(12,"span",42),_(13,"translate"),p(14),u()()),2&t){const e=n.$implicit,i=y(2);ve("row-offline",!e.online),c(2),ve("online",e.online)("offline",!e.online),C("matTooltip",v(3,14,e.online?"uptime.online":"uptime.offline")),c(2),k(e.managed?4:5),c(2),C("ngClass",i.pctClass(e.recentPct))("matTooltip",v(7,16,"uptime.today-pct")+": "+i.fmtPct(e.recentPct)),c(2),D(" ",i.fmtPct(e.recentPct)," "),c(2),ge(e.blocks),c(2),C("ngClass",i.pctClass(e.windowPct))("matTooltip",v(13,18,"uptime.window-avg")+": "+i.fmtPct(e.windowPct)),c(2),D(" ",i.fmtPct(e.windowPct)," ")}}function wIe(t,n){if(1&t&&(h(0,"div",16)(1,"span",17),p(2),_(3,"translate"),u(),h(4,"span",18),L(5,"span",19),p(6),_(7,"translate"),u(),h(8,"span",18),L(9,"span",20),p(10,"1\u20133"),u(),h(11,"span",18),L(12,"span",21),p(13,"4\u20136"),u(),h(14,"span",18),L(15,"span",22),p(16,"7\u20139"),u(),h(17,"span",18),L(18,"span",23),p(19),_(20,"translate"),u(),h(21,"span",18),L(22,"span",24),p(23),_(24,"translate"),u()(),h(25,"div",25),x(26,_Ie,10,0,"div",26),me(27,CIe,15,20,"div",27,wi().trackRow,!0),u()),2&t){const e=y();c(2),D("",v(3,5,"uptime.legend"),":"),c(4),S(v(7,7,"uptime.legend-down")),c(13),S(v(20,9,"uptime.legend-up")),c(4),S(v(24,11,"uptime.legend-future")),c(3),k(e.ticks.length>0?26:-1),c(),ge(e.rows)}}let kIe=(()=>{class t extends Lt{constructor(e,i,o){super(),this.nodeService=e,this.api=i,this.cdr=o,this.tabsData=[],this.rows=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.windowDays=7,this.filter="connected",this.ticks=[],this.totalBlocks=0,this.allRows=[],this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"schedule",label:"nodes.uptime-title",linkParts:["/nodes","uptime"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=ds(6e4).pipe(zn(0),wt(()=>this.fetchOnce())).subscribe(),super.ngOnInit()}ngOnDestroy(){this.sub?.unsubscribe()}setWindow(e){e!==this.windowDays&&(this.windowDays=e,this.refreshNow())}setFilter(e){e!==this.filter&&(this.filter=e,this.applyFilter())}refreshNow(){this.fetchOnce().subscribe()}fetchOnce(){return du({summaries:this.api.get(`network/visor-uptime?days=${this.windowDays}`).pipe(ln(Ls(45e3)),ii(e=>(this.error=e?.message||"Failed to fetch network uptime",this.loading=!1,this.cdr.markForCheck(),se([])))),nodes:this.nodeService.getNodes().pipe(ii(()=>se([])))}).pipe(wt(({summaries:e,nodes:i})=>(this.consume(e||[],i||[]),se(null))))}consume(e,i){const o={};for(const g of i)o[g.localPk]=g;const r=new Set;for(const g of e){for(const b of Object.keys(g.timeline||{}))r.add(b);for(const b of Object.keys(g.daily||{}))r.add(b)}const s=Array.from(r).sort(),a=(new Date).toISOString().slice(0,10),l=new Date,d=Math.floor((60*l.getUTCHours()+l.getUTCMinutes())/5),f=Math.floor(d/12),m=[];for(const g of e){const b=this.buildBlocks(g,s,a,d,f);let w=0,M=0;for(const q of b)q.future||(w+=q.count,M+=12);const E=M>0?w/M*100:0;let I=0;const A=g.daily||{};if(void 0!==A[a]){const q=parseFloat(A[a]);I=isNaN(q)?0:q}else{const q=Object.keys(A).sort().reverse();for(const Y of q){const ee=parseFloat(A[Y]);if(!isNaN(ee)){I=ee;break}}}const W=!!o[g.pk];m.push({pk:g.pk,online:g.on,version:g.version||"",blocks:b,windowPct:E,recentPct:I,managed:W,label:W&&o[g.pk].label||""})}this.applyTrimmed(m),m.sort((g,b)=>b.windowPct-g.windowPct),this.allRows=m,this.totalBlocks=m.length>0?m[0].blocks.length:0,this.ticks=this.buildTicks(this.totalBlocks),this.applyFilter(),this.loading=!1,this.error=null,this.lastUpdated=new Date,this.cdr.markForCheck()}buildBlocks(e,i,o,r,s){const a=[];for(const l of i){const d=e.timeline&&e.timeline[l]||"",f=d.length>=288?d.slice(0,288):d.padEnd(288," "),m=l===o;for(let g=0;g<24;g++){const b=12*g,w=b+12;let M=0;for(let A=b;As)E=!0,M=-1;else if(m&&g===s&&r{for(const l of e){const d=l.blocks[a];if(!d||d.future||d.count>0)return!1}return!0};let r=0;for(;r=48){let o=1;for(let r=24;re.managed):this.allRows.slice(),this.cdr.markForCheck()}fmtPct(e){return e>=99.95?"100%":e>0&&e<1?"<1%":e.toFixed(1)+"%"}pctClass(e){return e>=99?"up-good":e>=80?"up-mid":"up-bad"}blockClass(e){return e.future?"future":e.count<=0?"lvl0":e.count<=3?"lvl1":e.count<=6?"lvl2":e.count<=9?"lvl3":"lvl4"}blockTooltip(e){return e.future?`${e.label} \u2014 future`:e.count<0?`${e.label} \u2014 no data`:`${e.label} \u2014 ${e.count}/12 slots online`}trackRow(e,i){return i.pk}trackBlock(e,i){return e}static{this.\u0275fac=function(i){return new(i||t)(O(Yi),O(fi),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-multi-visor-uptime"]],standalone:!1,features:[_e],decls:35,vars:38,consts:[[3,"titleParts","tabsData","selectedTabIndex"],[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow"],[1,"up-controls"],[1,"control-group"],[1,"control-label"],["mat-button","",3,"click"],["mat-stroked-button","",1,"refresh-btn",3,"click"],[3,"inline"],[1,"loading-row"],[1,"error-row"],[1,"up-empty"],[1,"summary-line"],[3,"diameter"],[1,"ml-2"],[1,"ml-1"],[1,"legend","small"],[1,"legend-label"],[1,"legend-item"],[1,"up-block","lvl0"],[1,"up-block","lvl1"],[1,"up-block","lvl2"],[1,"up-block","lvl3"],[1,"up-block","lvl4"],[1,"up-block","future"],[1,"fleet-graph"],[1,"up-row","tick-row"],[1,"up-row",3,"row-offline"],[1,"up-row-pk","small","dim"],[1,"up-row-today","small","dim"],[1,"up-row-bar","tick-bar"],[1,"tick",3,"left"],[1,"up-row-pct","small","dim"],[1,"tick"],[1,"up-row"],[1,"up-row-pk","mono","small"],[1,"dot",3,"matTooltip"],[3,"routerLink","matTooltip"],[3,"matTooltip"],[1,"up-row-today","mono","small",3,"ngClass","matTooltip"],[1,"up-row-bar"],[1,"up-block",3,"ngClass","matTooltip"],[1,"up-row-pct","mono","small",3,"ngClass","matTooltip"]],template:function(i,o){1&i&&(L(0,"app-top-bar",0),h(1,"div",1)(2,"div",2)(3,"div",3)(4,"div",4)(5,"span",5),p(6),_(7,"translate"),u(),h(8,"button",6),F("click",function(){return o.setWindow(1)}),p(9),_(10,"translate"),u(),h(11,"button",6),F("click",function(){return o.setWindow(7)}),p(12,"7d"),u(),h(13,"button",6),F("click",function(){return o.setWindow(30)}),p(14,"30d"),u()(),h(15,"div",4)(16,"span",5),p(17),_(18,"translate"),u(),h(19,"button",6),F("click",function(){return o.setFilter("connected")}),p(20),_(21,"translate"),u(),h(22,"button",6),F("click",function(){return o.setFilter("all")}),p(23),_(24,"translate"),u()(),h(25,"button",7),F("click",function(){return o.refreshNow()}),h(26,"mat-icon",8),p(27,"refresh"),u(),p(28),_(29,"translate"),u()(),x(30,hIe,5,4,"div",9),x(31,fIe,5,1,"div",10),x(32,pIe,3,3,"div",11),x(33,mIe,8,11,"div",12),x(34,wIe,29,13),u()()),2&i&&(C("titleParts",vt(37,cIe))("tabsData",o.tabsData)("selectedTabIndex",7),c(6),D("",v(7,25,"uptime.window"),":"),c(2),ve("active",1===o.windowDays),c(),S(v(10,27,"uptime.window-now")),c(2),ve("active",7===o.windowDays),c(2),ve("active",30===o.windowDays),c(4),D("",v(18,29,"uptime.fleet-filter"),":"),c(2),ve("active","connected"===o.filter),c(),S(v(21,31,"uptime.fleet-filter-connected")),c(2),ve("active","all"===o.filter),c(),S(v(24,33,"uptime.fleet-filter-all")),c(3),C("inline",!0),c(2),D(" ",v(29,35,"uptime.refresh")," "),c(2),k(o.loading&&0===o.rows.length?30:-1),c(),k(o.error&&0===o.rows.length?31:-1),c(),k(o.loading||o.error||0!==o.rows.length?-1:32),c(),k(o.lastUpdated&&o.rows.length>0?33:-1),c(),k(o.rows.length>0?34:-1))},dependencies:[Ft,es,Ht,Ae,Et,ci,tr,vr,we],styles:['.up-controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:12px}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] .control-label[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffa6}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{min-width:0;padding:0 12px!important;opacity:.6;color:#ffffffd9!important}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{opacity:1;background:#2196f32e!important;color:#fff!important}.up-controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%]{margin-left:auto;color:#ffffffd9!important}.up-controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:inherit}.loading-row[_ngcontent-%COMP%], .error-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:12px}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;font-size:.9em;color:#ffffffb3;margin-bottom:8px}.summary-line[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{font-size:16px;height:16px;width:16px}.up-empty[_ngcontent-%COMP%]{padding:24px;text-align:center;color:#ffffff80;font-style:italic}.legend[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px;color:#ffffffa6}.legend[_ngcontent-%COMP%] .legend-label[_ngcontent-%COMP%]{font-weight:600;color:#ffffffbf}.legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px}.legend[_ngcontent-%COMP%] .up-block[_ngcontent-%COMP%]{display:inline-block;width:12px;height:10px;vertical-align:middle;border:1px solid rgba(0,0,0,.25);border-radius:1px}.fleet-graph[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1px;font-family:monospace}.up-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:1px 0}.up-row[_ngcontent-%COMP%] .up-row-pk[_ngcontent-%COMP%]{flex:0 0 auto;width:600px;max-width:38vw;color:#ffffffbf;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.up-row[_ngcontent-%COMP%] .up-row-pk[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:inherit;text-decoration:none}.up-row[_ngcontent-%COMP%] .up-row-pk[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.up-row[_ngcontent-%COMP%] .up-row-bar[_ngcontent-%COMP%]{flex:1;display:flex;height:14px;background:#0003;border-radius:2px;overflow:hidden;min-width:0}.up-row[_ngcontent-%COMP%] .up-row-today[_ngcontent-%COMP%]{flex:0 0 auto;width:56px;text-align:right;font-weight:600}.up-row[_ngcontent-%COMP%] .up-row-pct[_ngcontent-%COMP%]{flex:0 0 auto;width:56px;text-align:right}.up-row.tick-row[_ngcontent-%COMP%]{align-items:flex-end;padding:0}.up-row.tick-row[_ngcontent-%COMP%] .tick-bar[_ngcontent-%COMP%]{position:relative;height:14px;background:transparent;border-radius:0;overflow:visible}.up-row.tick-row[_ngcontent-%COMP%] .tick[_ngcontent-%COMP%]{position:absolute;bottom:0;transform:translate(-50%);font-size:.75em;color:#ffffff80;pointer-events:none;white-space:nowrap}.up-row.tick-row[_ngcontent-%COMP%] .tick[_ngcontent-%COMP%]:after{content:"";display:block;margin:0 auto;width:1px;height:4px;background:#ffffff4d}.up-row.row-offline[_ngcontent-%COMP%]{opacity:.6}.up-block[_ngcontent-%COMP%]{flex:1;min-width:1px;height:100%;border-right:1px solid rgba(0,0,0,.18)}.up-block[_ngcontent-%COMP%]:last-child{border-right:none}.up-block.lvl0[_ngcontent-%COMP%]{background:#e5393559}.up-block.lvl1[_ngcontent-%COMP%]{background:#4caf5040}.up-block.lvl2[_ngcontent-%COMP%]{background:#4caf5080}.up-block.lvl3[_ngcontent-%COMP%]{background:#4caf50bf}.up-block.lvl4[_ngcontent-%COMP%]{background:#4caf50}.up-block.future[_ngcontent-%COMP%]{background:#ffffff0a;background-image:repeating-linear-gradient(45deg,transparent,transparent 2px,rgba(255,255,255,.06) 2px,rgba(255,255,255,.06) 4px)}.dot[_ngcontent-%COMP%]{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:middle;box-shadow:0 0 0 1px #0006 inset}.dot.online[_ngcontent-%COMP%]{background:#4caf50;box-shadow:0 0 0 1px #0006 inset,0 0 4px #4caf50b3}.dot.offline[_ngcontent-%COMP%]{background:#e53935}.mono[_ngcontent-%COMP%]{font-family:monospace}.small[_ngcontent-%COMP%]{font-size:.85em}.dim[_ngcontent-%COMP%]{color:#ffffff8c}.up-good[_ngcontent-%COMP%]{color:#4caf50}.up-mid[_ngcontent-%COMP%]{color:#ff9800}.up-bad[_ngcontent-%COMP%]{color:#e53935}.ml-2[_ngcontent-%COMP%]{margin-left:8px}.ml-1[_ngcontent-%COMP%]{margin-left:4px}.mt-3[_ngcontent-%COMP%]{margin-top:12px}@media(max-width:1100px){.up-row[_ngcontent-%COMP%] .up-row-pk[_ngcontent-%COMP%]{width:280px;max-width:35vw}}']})}}return t})();const SIe=()=>["nodes.transports-title"],MIe=(t,n,e)=>({transports:t,bandwidth:n,days:e}),DIe=t=>({"nt-row-offline":t}),vH=t=>({"nt-type-offline":t}),TIe=t=>({"nt-child-offline":t});function EIe(t,n){if(1&t){const e=re();h(0,"div",5)(1,"span",6),p(2),_(3,"translate"),u(),h(4,"button",7),F("click",function(){return V(e),H(y().setHideEdges(!1))}),p(5),_(6,"translate"),u(),h(7,"button",7),F("click",function(){return V(e),H(y().setHideEdges(!0))}),p(8),_(9,"translate"),u()()}if(2&t){const e=y();c(2),D("",v(3,7,"network-transports.edges"),":"),c(2),ve("active",!e.hideEdges),c(),D(" ",v(6,9,"network-transports.edges-show")," "),c(2),ve("active",e.hideEdges),c(),D(" ",v(9,11,"network-transports.edges-hide")," ")}}function PIe(t,n){1&t&&(h(0,"div",10),L(1,"mat-spinner",12),h(2,"span",13),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"network-transports.loading")))}function IIe(t,n){if(1&t&&(h(0,"div",11)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",13),p(4),u()()),2&t){const e=y();c(4),S(e.error)}}function OIe(t,n){if(1&t&&(h(0,"span",16),p(1),_(2,"translate"),_(3,"date"),u()),2&t){const e=y(2);c(),nt(" \u2014 ",v(2,2,"network-transports.last-updated"),": ",ue(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function AIe(t,n){1&t&&(h(0,"th"),p(1),_(2,"translate"),u(),h(3,"th"),p(4),_(5,"translate"),u()),2&t&&(c(),S(v(2,2,"network-transports.edge-a")),c(3),S(v(5,4,"network-transports.edge-b")))}function RIe(t,n){if(1&t&&(h(0,"td",21),p(1),u(),h(2,"td",21),p(3),u()),2&t){const e=y().$implicit;c(),S(e.edge_a),c(2),S(e.edge_b)}}function FIe(t,n){if(1&t&&(h(0,"tr",20)(1,"td",21),p(2),u(),h(3,"td")(4,"span",22),p(5),u()(),x(6,RIe,4,2),h(7,"td",19),p(8),u(),h(9,"td",19),p(10),u(),h(11,"td",19)(12,"strong"),p(13),u()(),h(14,"td",23),p(15),u()()),2&t){const e=n.$implicit,i=y(3);C("ngClass",ie(10,DIe,!e.live)),c(2),S(e.id),c(2),C("ngClass",ie(12,vH,!e.live)),c(),S(e.type),c(),k(i.hideEdges?-1:6),c(2),S(i.fmtBytes(e.sent)),c(2),S(i.fmtBytes(e.recv)),c(3),S(i.fmtBytes(e.bandwidth)),c(),C("matTooltip",i.fmtLatencyFull(e.latency)),c(),S(i.fmtLatency(e.latency))}}function NIe(t,n){if(1&t&&(h(0,"table",17)(1,"tr")(2,"th"),p(3),_(4,"translate"),u(),h(5,"th"),p(6),_(7,"translate"),u(),x(8,AIe,6,6),h(9,"th",19),p(10),_(11,"translate"),u(),h(12,"th",19),p(13),_(14,"translate"),u(),h(15,"th",19),p(16),_(17,"translate"),u(),h(18,"th",19),p(19),_(20,"translate"),u()(),me(21,FIe,16,14,"tr",20,wi().trackTpId,!0),u()),2&t){const e=y(2);c(3),S(v(4,7,"network-transports.tp-id")),c(3),S(v(7,9,"network-transports.type")),c(2),k(e.hideEdges?-1:8),c(2),S(v(11,11,"network-transports.sent")),c(3),S(v(14,13,"network-transports.recv")),c(3),S(v(17,15,"network-transports.total")),c(3),S(v(20,17,"network-transports.latency")),c(2),ge(e.visibleByTransport)}}function LIe(t,n){if(1&t&&(h(0,"span",30),_(1,"translate"),p(2),u()),2&t){const e=y().$implicit;C("matTooltip",v(1,2,"network-transports.offline-count-tooltip")),c(2),D(" ",e.offlineCount," offline ")}}function BIe(t,n){if(1&t&&(h(0,"span",38),p(1),u()),2&t){const e=y().$implicit,i=y(5);C("matTooltip",i.fmtLatencyFull(e.latency)),c(),S(i.fmtLatency(e.latency))}}function VIe(t,n){if(1&t&&(h(0,"div",32)(1,"span",33),p(2),u(),h(3,"span",34),p(4),u(),h(5,"span",35),p(6),u(),h(7,"span",36),p(8,"\u2192"),u(),h(9,"span",37),p(10),u(),h(11,"span",29),p(12),u(),h(13,"span",29),p(14),u(),h(15,"span")(16,"strong"),p(17),u()(),x(18,BIe,2,2,"span",38),u()),2&t){const e=n.$implicit,i=n.$index,o=n.$count,r=y(5);C("ngClass",ie(10,TIe,!e.live)),c(2),S(i===o-1?"\u2514\u2500\u2500":"\u251c\u2500\u2500"),c(2),S(e.id),c(),C("ngClass",ie(12,vH,!e.live)),c(),S(e.type),c(4),S(e.remote),c(2),D("\u2191 ",r.fmtBytes(e.sent)),c(2),D("\u2193 ",r.fmtBytes(e.recv)),c(3),S(r.fmtBytes(e.bandwidth)),c(),k(e.latency&&e.latency.avg?18:-1)}}function HIe(t,n){if(1&t&&(h(0,"div",31),me(1,VIe,19,14,"div",32,wi().trackChildId,!0),u()),2&t){const e=y().$implicit;c(),ge(e.transports)}}function UIe(t,n){if(1&t){const e=re();h(0,"div",24)(1,"div",25),F("click",function(){const o=V(e).$implicit;return H(y(3).toggleVisor(o))}),h(2,"mat-icon",26),p(3),u(),h(4,"span",27),p(5),u(),h(6,"span",28)(7,"strong"),p(8),u()(),h(9,"span",29),p(10),u(),h(11,"span",29),p(12),u(),x(13,LIe,3,4,"span",30),u(),x(14,HIe,3,0,"div",31),u()}if(2&t){const e=n.$implicit,i=y(3);c(2),C("inline",!0),c(),S(e.expanded?"expand_more":"chevron_right"),c(2),S(e.pk),c(3),S(i.fmtBytes(e.bandwidth)),c(2),nt("\u2191 ",i.fmtBytes(e.sent)," \u2193 ",i.fmtBytes(e.recv)),c(2),D("\xb7 ",e.transports.length," tp"),c(),k(!i.hideOffline&&e.offlineCount>0?13:-1),c(),k(e.expanded?14:-1)}}function zIe(t,n){if(1&t&&(h(0,"div",18),me(1,UIe,15,9,"div",24,wi().trackVisorPk,!0),u()),2&t){const e=y(2);c(),ge(e.visibleByVisor)}}function jIe(t,n){if(1&t&&(h(0,"div",14)(1,"mat-icon"),p(2,"swap_horiz"),u(),h(3,"span",15),p(4),_(5,"translate"),u(),x(6,OIe,4,7,"span",16),u(),x(7,NIe,23,19,"table",17),x(8,zIe,3,0,"div",18)),2&t){const e=y();c(4),D(" ",ue(5,4,"network-transports.summary",EA(7,MIe,e.rawCount,e.fmtBytes(e.networkBandwidth),e.days))," "),c(2),k(e.lastUpdated?6:-1),c(),k("compact"===e.viewMode?7:-1),c(),k("tree"===e.viewMode?8:-1)}}let $Ie=(()=>{class t extends Lt{constructor(e,i){super(),this.api=e,this.cdr=i,this.tabsData=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.days=1,this.viewMode="compact",this.hideEdges=!1,this.hideOffline=!1,this.rawCount=0,this.networkBandwidth=0,this.byTransport=[],this.byVisor=[],this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"schedule",label:"nodes.uptime-title",linkParts:["/nodes","uptime"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=ds(3e5).pipe(zn(0),wt(()=>this.fetch())).subscribe(),super.ngOnInit()}ngOnDestroy(){this.sub?.unsubscribe()}refreshNow(){this.fetch().subscribe()}setDays(e){e!==this.days&&(this.days=e,this.fetch().subscribe())}setViewMode(e){this.viewMode=e}setHideEdges(e){this.hideEdges=e}setHideOffline(e){this.hideOffline=e}get visibleByTransport(){return this.hideOffline?this.byTransport.filter(e=>e.live):this.byTransport}get visibleByVisor(){return this.hideOffline?this.byVisor.map(e=>({...e,transports:e.transports.filter(i=>i.live)})).filter(e=>e.transports.length>0):this.byVisor}toggleVisor(e){e.expanded=!e.expanded}fetch(){return this.loading=0===this.byTransport.length&&0===this.byVisor.length,this.api.get(`network/transports?days=${this.days}`).pipe(ii(e=>(this.error=e?.message||"Failed to fetch transports",this.loading=!1,this.cdr.markForCheck(),se(null))),wt(e=>null===e?se(null):(this.consume(Array.isArray(e)?e:[]),se(e))))}consume(e){this.rawCount=e.length;let i=0;const o=[],r=new Map;for(const a of e){if(!a.edges||a.edges.length<2)continue;const[l,d]=this.verifiedBandwidth(a),f=l+d;if(i+=f,0===f&&!a.latency)continue;o.push({id:a.id,type:a.type,edge_a:a.edges[0],edge_b:a.edges[1],sent:l,recv:d,bandwidth:f,latency:a.latency,live:!!a.live});const m=r.get(a.edges[0])||this.newVisorNode(a.edges[0]);m.sent+=l,m.recv+=d,m.bandwidth+=f,a.live?m.liveCount++:m.offlineCount++,m.transports.push({id:a.id,type:a.type,remote:a.edges[1],sent:l,recv:d,bandwidth:f,latency:a.latency,live:!!a.live}),r.set(a.edges[0],m);const g=r.get(a.edges[1])||this.newVisorNode(a.edges[1]);g.sent+=d,g.recv+=l,g.bandwidth+=f,a.live?g.liveCount++:g.offlineCount++,g.transports.push({id:a.id,type:a.type,remote:a.edges[0],sent:d,recv:l,bandwidth:f,latency:a.latency,live:!!a.live}),r.set(a.edges[1],g)}o.sort((a,l)=>l.bandwidth-a.bandwidth);const s=Array.from(r.values()).sort((a,l)=>l.bandwidth-a.bandwidth);s.forEach(a=>a.transports.sort((l,d)=>d.bandwidth-l.bandwidth)),this.byTransport=o,this.byVisor=s,this.networkBandwidth=i,this.loading=!1,this.error=null,this.lastUpdated=new Date,this.cdr.markForCheck()}newVisorNode(e){return{pk:e,sent:0,recv:0,bandwidth:0,transports:[],liveCount:0,offlineCount:0,expanded:!1}}verifiedBandwidth(e){let i=0,o=0;for(const r of e.daily||[]){const s=!!r.a&&((r.a.sent||0)>0||(r.a.recv||0)>0),a=!!r.b&&((r.b.sent||0)>0||(r.b.recv||0)>0);s&&a?(i+=Math.min(r.a.sent||0,r.b.recv||0),o+=Math.min(r.a.recv||0,r.b.sent||0)):s?(i+=r.a.sent||0,o+=r.a.recv||0):a&&(i+=r.b.recv||0,o+=r.b.sent||0)}return[i,o]}fmtBytes(e){if(!e||e<0)return"-";const i=["B","KB","MB","GB","TB"];let o=0,r=e;for(;r>=1024&&o0||o.byVisor.length>0?47:-1))},dependencies:[Ft,Ht,Ae,Et,ci,tr,vr,we],styles:[".controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:12px;padding:10px 14px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:6px}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] .control-label[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffa6;margin-right:4px}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{min-width:0;padding:0 12px!important;opacity:.6;color:#ffffffd9!important}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{opacity:1;background:#2196f32e!important;color:#fff!important}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:inherit}.controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%]{margin-left:auto;color:#ffffffd9!important}.controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:inherit}.loading-row[_ngcontent-%COMP%], .error-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:24px 0}.error-row[_ngcontent-%COMP%]{color:#f87171}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.dim[_ngcontent-%COMP%]{color:#fff9}.small[_ngcontent-%COMP%]{font-size:.85em}.mono[_ngcontent-%COMP%]{font-family:monospace;word-break:break-all}.num[_ngcontent-%COMP%]{text-align:right}.nt-compact[_ngcontent-%COMP%]{table-layout:auto}.nt-compact[_ngcontent-%COMP%] td.mono[_ngcontent-%COMP%]{font-size:11px}.nt-compact[_ngcontent-%COMP%] th.num[_ngcontent-%COMP%], .nt-compact[_ngcontent-%COMP%] td.num[_ngcontent-%COMP%]{white-space:nowrap}.nt-compact[_ngcontent-%COMP%] tr.nt-row-offline[_ngcontent-%COMP%]{background:#e5393514;color:#ffb4b4f2}.nt-compact[_ngcontent-%COMP%] tr.nt-row-offline[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{box-shadow:inset 3px 0 #e53935b3}.nt-compact[_ngcontent-%COMP%] tr.nt-row-offline[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{opacity:.95}.nt-type-pill[_ngcontent-%COMP%]{display:inline-block;padding:1px 6px;border-radius:3px;font-size:11px;text-transform:lowercase;background:#2196f32e;border:1px solid rgba(33,150,243,.35);color:#ffffffe6}.nt-type-pill.nt-type-offline[_ngcontent-%COMP%]{background:#e539352e;border-color:#e5393566;color:#ffc8c8f2}.nt-offline-count[_ngcontent-%COMP%]{margin-left:4px;font-size:11px;color:#e53935d9;background:#e539351f;border:1px solid rgba(229,57,53,.3);border-radius:3px;padding:0 6px}.nt-tree[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px}.nt-visor[_ngcontent-%COMP%]{background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:4px}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:6px 10px;cursor:pointer;flex-wrap:wrap}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%]:hover{background:#ffffff0a}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .exp[_ngcontent-%COMP%]{color:#fff9}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .nt-pk[_ngcontent-%COMP%]{flex:1 1 320px;min-width:0;font-size:11px;color:#ffffffd9}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .nt-bw[_ngcontent-%COMP%]{font-size:13px}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .dim[_ngcontent-%COMP%]{font-size:12px}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%]{padding:4px 12px 8px 36px;display:flex;flex-direction:column;gap:4px}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;padding:2px 0}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-prefix[_ngcontent-%COMP%]{font-family:monospace;color:#ffffff73}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-tp-id[_ngcontent-%COMP%]{font-size:11px;color:#ffffffd9}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-tp-type[_ngcontent-%COMP%]{background:#2196f32e;border:1px solid rgba(33,150,243,.35);padding:0 6px;border-radius:3px;font-size:10px;text-transform:lowercase}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-tp-type.nt-type-offline[_ngcontent-%COMP%]{background:#e539352e;border-color:#e5393566;color:#ffc8c8f2}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-arrow[_ngcontent-%COMP%]{color:#ffffff73}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-tp-remote[_ngcontent-%COMP%]{font-size:11px;color:#ffffffb3}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child.nt-child-offline[_ngcontent-%COMP%]{opacity:.55;color:#ffc8c8b3}"]})}}return t})(),WIe=(()=>{class t{constructor(e){this.apiService=e}getSessions(e){return this.apiService.get(`visors/${e}/dmsg/sessions`)}connectAll(e){return this.apiService.post(`visors/${e}/dmsg/connect-all`)}setSessionsCount(e,i){return this.apiService.put(`visors/${e}/dmsg/sessions-count`,{count:i})}static{this.\u0275fac=function(i){return new(i||t)(ce(fi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function GIe(t,n){1&t&&(h(0,"div",1),L(1,"mat-spinner",3),h(2,"span",4),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"dmsg-settings.loading")))}function qIe(t,n){if(1&t&&(h(0,"div",2)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",4),p(4),u()()),2&t){const e=y();c(4),S(e.error)}}function KIe(t,n){if(1&t&&(h(0,"span",7),p(1),_(2,"translate"),_(3,"date"),u()),2&t){const e=y(2);c(),nt(" \u2014 ",v(2,2,"dmsg-settings.last-updated"),": ",ue(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function YIe(t,n){1&t&&L(0,"mat-spinner",11),2&t&&C("diameter",14)}function XIe(t,n){1&t&&L(0,"mat-spinner",11),2&t&&C("diameter",14)}function ZIe(t,n){if(1&t&&(h(0,"div",19),p(1),_(2,"translate"),u()),2&t){const e=y(3);c(),nt(" ",v(2,2,"dmsg-settings.result-failed"),": ",e.objectKeys(e.lastActionResult.failed).length," ")}}function QIe(t,n){if(1&t&&(h(0,"div",15)(1,"span",18),p(2),u(),p(3),_(4,"translate"),_(5,"translate"),_(6,"translate"),x(7,ZIe,3,4,"div",19),u()),2&t){const e=y(2);c(2),D("",e.lastActionLabel,":"),c(),K0(" ",v(4,8,"dmsg-settings.result-total")," ",e.lastActionResult.total,", ",v(5,10,"dmsg-settings.result-already")," ",e.lastActionResult.already_connected,", ",v(6,12,"dmsg-settings.result-new")," ",e.lastActionResult.newly_connected," "),c(4),k(e.lastActionResult.failed&&e.objectKeys(e.lastActionResult.failed).length>0?7:-1)}}function JIe(t,n){if(1&t&&(h(0,"div",26),p(1),u()),2&t){const e=n.$implicit;c(),S(e)}}function eOe(t,n){if(1&t&&(h(0,"div",24),me(1,JIe,2,1,"div",26,wi().trackByPk,!0),u()),2&t){const e=y().$implicit;c(),ge(e.servers)}}function tOe(t,n){1&t&&(h(0,"div",25),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"dmsg-settings.no-sessions")))}function nOe(t,n){if(1&t&&(h(0,"div",16)(1,"div",20)(2,"span",21),p(3),u(),h(4,"span",22),p(5),_(6,"translate"),u()(),h(7,"div",23),p(8),u(),x(9,eOe,3,0,"div",24)(10,tOe,3,3,"div",25),u()),2&t){const e=n.$implicit,i=y(2);c(3),S(i.roleLabel(e.role)),c(2),nt("",e.count," ",v(6,5,"dmsg-settings.sessions")),c(3),S(e.pk),c(),k(e.servers&&e.servers.length>0?9:10)}}function iOe(t,n){1&t&&(h(0,"div",17)(1,"div",25),p(2),_(3,"translate"),u()()),2&t&&(c(2),S(v(3,1,"dmsg-settings.no-clients")))}function oOe(t,n){if(1&t){const e=re();h(0,"div",5)(1,"mat-icon"),p(2,"hub"),u(),h(3,"span",6),p(4),_(5,"translate"),u(),x(6,KIe,4,7,"span",7),u(),h(7,"div",8)(8,"div",9)(9,"button",10),F("click",function(){return V(e),H(y().connectAll())}),x(10,YIe,1,1,"mat-spinner",11),p(11),_(12,"translate"),u()(),h(13,"span",12),p(14,"|"),u(),h(15,"div",9)(16,"label",13),p(17),_(18,"translate"),u(),h(19,"input",14),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.sessionsCountInput,o)||(r.sessionsCountInput=o),H(o)}),u(),h(20,"button",10),F("click",function(){return V(e),H(y().applySessionsCount())}),x(21,XIe,1,1,"mat-spinner",11),p(22),_(23,"translate"),u()()(),x(24,QIe,8,14,"div",15),me(25,nOe,11,7,"div",16,wi().trackByRole,!0),x(27,iOe,4,3,"div",17)}if(2&t){const e=y();c(4),S(v(5,13,"dmsg-settings.summary")),c(2),k(e.lastUpdated?6:-1),c(3),C("disabled",e.connectAllInFlight||e.setCountInFlight),c(),k(e.connectAllInFlight?10:-1),c(),D(" ",v(12,15,"dmsg-settings.connect-all")," "),c(6),D("",v(18,17,"dmsg-settings.sessions-count-label"),":"),c(2),Kt("ngModel",e.sessionsCountInput),C("disabled",e.setCountInFlight||e.connectAllInFlight),c(),C("disabled",e.setCountInFlight||e.connectAllInFlight),c(),k(e.setCountInFlight?21:-1),c(),D(" ",v(23,19,"dmsg-settings.apply-count")," "),c(2),k(e.lastActionResult?24:-1),c(),ge(e.clientList()),c(2),k(0===e.clientList().length?27:-1)}}let rOe=(()=>{class t extends Lt{constructor(e,i){super(),this.dmsgSvc=e,this.snackbar=i,this.pk="",this.sessions=null,this.loading=!0,this.error=null,this.lastUpdated=null,this.sessionsCountInput=0,this.connectAllInFlight=!1,this.setCountInFlight=!1,this.lastActionResult=null,this.lastActionLabel=""}ngOnInit(){return this.nodeSub=Me.currentNode.subscribe(e=>{const i=!this.pk;this.pk=e?.localPk||"",i&&this.pk&&this.startPolling()}),super.ngOnInit()}ngOnDestroy(){this.nodeSub?.unsubscribe(),this.pollSub?.unsubscribe()}startPolling(){this.pollSub=ds(2e4).pipe(zn(0),wt(()=>this.dmsgSvc.getSessions(this.pk))).subscribe({next:e=>{this.sessions=e||{},this.loading=!1,this.error=null,this.lastUpdated=new Date},error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch dmsg sessions"}})}refresh(){this.pk&&this.dmsgSvc.getSessions(this.pk).subscribe({next:e=>{this.sessions=e||{},this.lastUpdated=new Date},error:()=>{}})}connectAll(){this.connectAllInFlight||!this.pk||(this.connectAllInFlight=!0,this.lastActionResult=null,this.dmsgSvc.connectAll(this.pk).subscribe({next:e=>{this.connectAllInFlight=!1,this.lastActionResult=e,this.lastActionLabel="Connect to all",this.snackbar.showDone(`Opened ${e.newly_connected} new session(s); already had ${e.already_connected}.`),this.refresh()},error:e=>{this.connectAllInFlight=!1,this.snackbar.showError(`connect-all failed: ${e?.message||"unknown error"}`)}}))}applySessionsCount(){if(!this.setCountInFlight&&this.pk){if(this.sessionsCountInput<0)return void this.snackbar.showError("Sessions count must be >= 0");this.setCountInFlight=!0,this.lastActionResult=null,this.dmsgSvc.setSessionsCount(this.pk,this.sessionsCountInput).subscribe({next:e=>{this.setCountInFlight=!1,this.lastActionResult=e,this.lastActionLabel=`Set sessions_count = ${this.sessionsCountInput}`,this.snackbar.showDone(`Persisted sessions_count=${this.sessionsCountInput}; opened ${e.newly_connected} new session(s).`),this.refresh()},error:e=>{this.setCountInFlight=!1,this.snackbar.showError(`set-sessions failed: ${e?.message||"unknown error"}`)}})}}clientList(){const e=[];return this.sessions&&(this.sessions.main&&e.push(this.sessions.main),this.sessions.route_setup&&e.push(this.sessions.route_setup),this.sessions.transport_setup&&e.push(this.sessions.transport_setup)),e}roleLabel(e){switch(e){case"main":return"Main visor";case"route_setup":return"Route Setup Node";case"transport_setup":return"Transport Setup Node";default:return e}}trackByRole(e,i){return i.role}trackByPk(e,i){return i}objectKeys(e){return e?Object.keys(e):[]}static{this.\u0275fac=function(i){return new(i||t)(O(WIe),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-dmsg-settings"]],standalone:!1,features:[_e],decls:4,vars:3,consts:[[1,"dmsg-tab-body"],[1,"loading-row"],[1,"error-row"],[3,"diameter"],[1,"ml-2"],[1,"summary-line"],[1,"ml-1"],[1,"last-updated"],[1,"actions","mt-3"],[1,"action-group"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"d-inline-block","mr-2",3,"diameter"],[1,"divider"],["for","sessions-count"],["id","sessions-count","type","number","min","0","max","99",3,"ngModelChange","ngModel","disabled"],[1,"action-result"],[1,"client-card"],[1,"client-card","missing"],[1,"result-label"],[1,"result-failed"],[1,"client-header"],[1,"role"],[1,"count"],[1,"client-pk"],[1,"server-list"],[1,"empty"],[1,"server"]],template:function(i,o){1&i&&(h(0,"div",0),x(1,GIe,5,4,"div",1),x(2,qIe,5,1,"div",2),x(3,oOe,28,21),u()),2&i&&(c(),k(o.loading&&!o.sessions?1:-1),c(),k(o.error&&!o.sessions?2:-1),c(),k(o.sessions?3:-1))},dependencies:[Qt,Oa,Jt,gc,hv,Ht,Ae,gu,ci,vr,we],styles:['@charset "UTF-8";.dmsg-tab-body[_ngcontent-%COMP%]{margin-top:1.5rem}.loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffbf;padding:24px 0}.error-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#f87171;padding:24px 0}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:16px 0 24px;padding:14px 16px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:6px}.actions[_ngcontent-%COMP%] .action-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.actions[_ngcontent-%COMP%] .action-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{color:#ffffffbf;font-size:.9em}.actions[_ngcontent-%COMP%] .action-group[_ngcontent-%COMP%] input[type=number][_ngcontent-%COMP%]{width:72px;background:#ffffff14;border:1px solid rgba(255,255,255,.15);color:#fff;padding:4px 8px;border-radius:4px;font-size:.95em}.actions[_ngcontent-%COMP%] .divider[_ngcontent-%COMP%]{color:#ffffff40;padding:0 6px}.action-result[_ngcontent-%COMP%]{margin:8px 0 20px;padding:10px 14px;background:#4ade8014;border-left:3px solid #4ade80;border-radius:4px;font-size:.9em;color:#ffffffe6}.action-result[_ngcontent-%COMP%] .result-label[_ngcontent-%COMP%]{font-weight:600;margin-right:8px}.action-result[_ngcontent-%COMP%] .result-failed[_ngcontent-%COMP%]{color:#f87171;margin-top:4px;font-size:.85em}.client-card[_ngcontent-%COMP%]{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:14px 16px;margin-bottom:14px}.client-card[_ngcontent-%COMP%] .client-header[_ngcontent-%COMP%]{display:flex;align-items:baseline;margin-bottom:10px;gap:10px}.client-card[_ngcontent-%COMP%] .client-header[_ngcontent-%COMP%] .role[_ngcontent-%COMP%]{font-size:1.1em;font-weight:600;color:#fff}.client-card[_ngcontent-%COMP%] .client-header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%]{color:#ffffffa6;font-size:.85em}.client-card[_ngcontent-%COMP%] .client-pk[_ngcontent-%COMP%]{font-family:monospace;font-size:.8em;color:#ffffff8c;margin-bottom:10px;word-break:break-all}.client-card[_ngcontent-%COMP%] .server-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:3px}.client-card[_ngcontent-%COMP%] .server-list[_ngcontent-%COMP%] .server[_ngcontent-%COMP%]{font-family:monospace;font-size:.82em;color:#ffffffd9;padding:2px 0}.client-card[_ngcontent-%COMP%] .server-list[_ngcontent-%COMP%] .server[_ngcontent-%COMP%]:before{content:"\\2022";margin-right:8px;color:#4ade80}.client-card[_ngcontent-%COMP%] .empty[_ngcontent-%COMP%]{color:#ffffff80;font-size:.9em;font-style:italic}.client-card.missing[_ngcontent-%COMP%]{opacity:.55}']})}}return t})();function sOe(t,n){if(1&t&&L(0,"app-node-app-list",0),2&t){const e=y();C("apps",e.apps)("showShortList",!1)("nodePK",e.nodePK)}}let aOe=(()=>{class t extends Lt{ngOnInit(){return this.dataSubscription=Me.currentNode.subscribe(e=>{this.nodePK=e.localPk,this.apps=e.apps}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})()}static{this.\u0275cmp=ae({type:t,selectors:[["app-all-apps"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[3,"apps","showShortList","nodePK"]],template:function(i,o){1&i&&x(0,sOe,1,3,"app-node-app-list",0),2&i&&k(o.apps?0:-1)},dependencies:[uH],encapsulation:2})}}return t})();const PM=t=>({time:t}),lOe=(t,n)=>({"latency-high":t,"latency-very-high":n}),cOe=(t,n)=>n.name;function dOe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),_(3,"translate"),u(),L(4,"app-copy-to-clipboard-text",8),u()),2&t){const e=y(2);c(2),D("",v(3,3,"node.details.node-info.public-ip")," "),c(2),C("text",on(e.node.publicIp))}}function uOe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),_(3,"translate"),u(),L(4,"app-copy-to-clipboard-text",8),u()),2&t){const e=y(2);c(2),D("",v(3,3,"node.details.node-info.ip")," "),c(2),C("text",on(e.node.ip))}}function hOe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&nt(" ",y(2).node.dmsgServers.length," ",v(1,2,"node.details.node-info.connected")," ")}function fOe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"node.details.node-info.no-dmsg-server")," ")}function pOe(t,n){if(1&t&&(h(0,"span",15),p(1),u()),2&t){const e=y().$implicit,i=y(3);C("ngClass",pt(2,lOe,e.latency>3e8,e.latency>8e8)),c(),D(" ",i.formatLatency(e.latency)," ")}}function mOe(t,n){if(1&t&&(h(0,"div",14),L(1,"app-copy-to-clipboard-text",8),x(2,pOe,2,5,"span",15),u()),2&t){const e=n.$implicit;c(),C("text",on(e.pk)),c(),k(e.latency>0?2:-1)}}function gOe(t,n){if(1&t&&(h(0,"div",9),me(1,mOe,3,3,"div",14,Le),u()),2&t){const e=y(2);c(),ge(e.node.dmsgServers)}}function _Oe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),_(3,"translate"),u(),p(4),u()),2&t){const e=y(2);c(2),D("",v(3,2,"node.details.node-info.skybian-version")," "),c(2),D(" ",e.node.skybianBuildVersion," ")}}function bOe(t,n){if(1&t&&(h(0,"mat-icon",10),_(1,"translate"),p(2," info "),u()),2&t){const e=y(2);C("inline",!0)("matTooltip",ue(1,2,"node.details.node-info.time.minutes",ie(5,PM,e.timeOnline.totalMinutes)))}}function vOe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),u(),p(3),u()),2&t){const e=n.$implicit;c(2),D("",e.name,": "),c(),D(" ",e.value," ")}}function yOe(t,n){1&t&&me(0,vOe,4,2,"span",3,cOe),2&t&&ge(y(3).ports)}function COe(t,n){if(1&t){const e=re();L(0,"div",11),h(1,"div",1)(2,"span",12),F("click",function(){V(e);const o=y(2);return H(o.showPorts=!o.showPorts)}),h(3,"mat-icon",13),p(4),u(),p(5),_(6,"translate"),h(7,"span",16),p(8),u()(),x(9,yOe,2,0),u()}if(2&t){const e=y(2);c(3),C("inline",!0),c(),S(e.showPorts?"expand_more":"chevron_right"),c(),D(" ",v(6,5,"node.details.ports.title")," "),c(3),D("(",e.ports.length,")"),c(),k(e.showPorts?9:-1)}}function wOe(t,n){if(1&t&&(h(0,"span",19),p(1),u()),2&t){const e=y(4);c(),S(e.configSaveMsg)}}function xOe(t,n){if(1&t){const e=re();h(0,"div",17)(1,"button",18),F("click",function(){return V(e),H(y(3).startEditConfig())}),h(2,"mat-icon",13),p(3,"edit"),u(),p(4),_(5,"translate"),u(),x(6,wOe,2,1,"span",19),u(),h(7,"pre",20),p(8),u()}if(2&t){const e=y(3);c(2),C("inline",!0),c(2),D(" ",v(5,4,"node.details.config.edit")," "),c(2),k(e.configSaveMsg?6:-1),c(2),S(e.rawConfig)}}function kOe(t,n){if(1&t&&(h(0,"div",24)(1,"mat-icon",13),p(2,"error_outline"),u(),p(3),u()),2&t){const e=y(4);c(),C("inline",!0),c(2),D(" ",e.configError," ")}}function SOe(t,n){if(1&t&&(h(0,"div",24)(1,"mat-icon",13),p(2,"error_outline"),u(),p(3),u()),2&t){const e=y(4);c(),C("inline",!0),c(2),D(" ",e.configSaveErr," ")}}function MOe(t,n){if(1&t){const e=re();h(0,"div",17)(1,"button",21),F("click",function(){return V(e),H(y(3).saveConfig())}),h(2,"mat-icon",13),p(3,"save"),u(),p(4),_(5,"translate"),_(6,"translate"),u(),h(7,"button",22),F("click",function(){return V(e),H(y(3).cancelEditConfig())}),p(8),_(9,"translate"),u(),h(10,"span",23),p(11),_(12,"translate"),u()(),x(13,kOe,4,2,"div",24),x(14,SOe,4,2,"div",24),h(15,"textarea",25),F("input",function(o){return V(e),H(y(3).onConfigDraftChange(o.target.value))}),u()}if(2&t){const e=y(3);c(),C("disabled",!!e.configError||e.configSaving),c(),C("inline",!0),c(2),D(" ",e.configSaving?v(5,10,"common.loading"):v(6,12,"node.details.config.save")," "),c(3),C("disabled",e.configSaving),c(),D(" ",v(9,14,"common.cancel")," "),c(3),D(" ",v(12,16,"node.details.config.restart-hint")," "),c(2),k(e.configError?13:-1),c(),k(e.configSaveErr?14:-1),c(),C("value",e.configDraft)("disabled",e.configSaving)}}function DOe(t,n){if(1&t&&(x(0,xOe,9,6),x(1,MOe,16,18)),2&t){const e=y(2);k(e.editingConfig?-1:0),c(),k(e.editingConfig?1:-1)}}function TOe(t,n){if(1&t){const e=re();h(0,"div",0)(1,"div",1)(2,"span",2),p(3),_(4,"translate"),u(),h(5,"span",3)(6,"span",4),p(7),_(8,"translate"),u(),h(9,"span",5),F("click",function(){return V(e),H(y().showEditLabelDialog())}),h(10,"span",6),p(11),u(),h(12,"mat-icon",7),p(13,"edit"),u()()(),h(14,"span",3)(15,"span",4),p(16),_(17,"translate"),u(),L(18,"app-copy-to-clipboard-text",8),u(),h(19,"span",3)(20,"span",4),p(21),_(22,"translate"),u(),p(23),_(24,"translate"),u(),x(25,dOe,5,5,"span",3),x(26,uOe,5,5,"span",3),h(27,"span",3)(28,"span",4),p(29),_(30,"translate"),u(),x(31,hOe,2,4),x(32,fOe,2,3),u(),x(33,gOe,3,0,"div",9),h(34,"span",3)(35,"span",4),p(36),_(37,"translate"),u(),p(38),_(39,"translate"),u(),h(40,"span",3)(41,"span",4),p(42),_(43,"translate"),u(),p(44),_(45,"translate"),u(),h(46,"span",3)(47,"span",4),p(48),_(49,"translate"),u(),p(50),_(51,"translate"),u(),h(52,"span",3)(53,"span",4),p(54),_(55,"translate"),u(),p(56),_(57,"translate"),u(),h(58,"span",3)(59,"span",4),p(60),_(61,"translate"),u(),p(62),_(63,"translate"),u(),x(64,_Oe,5,4,"span",3),h(65,"span",3)(66,"span",4),p(67),_(68,"translate"),u(),p(69),_(70,"translate"),x(71,bOe,3,7,"mat-icon",10),u()(),x(72,COe,10,7),L(73,"div",11),h(74,"div",1)(75,"span",12),F("click",function(){return V(e),H(y().onConfigToggle())}),h(76,"mat-icon",13),p(77),u(),p(78),_(79,"translate"),u(),x(80,DOe,2,2),u()()}if(2&t){const e=y();c(3),S(v(4,34,e.node.isHypervisor?"node.details.node-info.title-local":"node.details.node-info.title")),c(4),D("",v(8,36,"node.details.node-info.label")," "),c(4),S(e.node.label),c(),C("inline",!0),c(4),D("",v(17,38,"node.details.node-info.public-key")," "),c(2),C("text",on(e.node.localPk)),c(3),D("",v(22,40,"node.details.node-info.symmetic-nat")," "),c(2),D(" ",v(24,42,e.node.isSymmeticNat?"common.yes":"common.no")," "),c(2),k(e.node.isSymmeticNat?-1:25),c(),k(e.node.ip?26:-1),c(3),D("",v(30,44,"node.details.node-info.dmsg-servers")," "),c(2),k(e.node.dmsgServers&&e.node.dmsgServers.length>0?31:-1),c(),k(e.node.dmsgServers&&0!==e.node.dmsgServers.length?-1:32),c(),k(e.node.dmsgServers&&e.node.dmsgServers.length>0?33:-1),c(3),D("",v(37,46,"node.details.node-info.ping")," "),c(2),D(" ",ue(39,48,"common.time-in-ms",ie(74,PM,e.node.roundTripPing))," "),c(4),D("",v(43,51,"node.details.node-info.node-version")," "),c(2),D(" ",e.node.version?e.node.version:v(45,53,"common.unknown")," "),c(4),D("",v(49,55,"node.details.node-info.config-version")," "),c(2),D(" ",e.node.configVersion?e.node.configVersion:v(51,57,"common.unknown")," "),c(4),D("",v(55,59,"node.details.node-info.os")," "),c(2),D(" ",e.node.os?e.node.os:v(57,61,"common.unknown")," "),c(4),D("",v(61,63,"node.details.node-info.arch")," "),c(2),D(" ",e.node.arch?e.node.arch:v(63,65,"common.unknown")," "),c(2),k(e.node.skybianBuildVersion?64:-1),c(3),D("",v(68,67,"node.details.node-info.time.title")," "),c(2),D(" ",ue(70,69,"node.details.node-info.time."+e.timeOnline.translationVarName,ie(76,PM,e.timeOnline.elapsedTime))," "),c(2),k(e.timeOnline.totalMinutes>60?71:-1),c(),k(e.ports.length>0?72:-1),c(4),C("inline",!0),c(),S(e.showConfigSection?"expand_more":"chevron_right"),c(),D(" ",v(79,72,"node.details.config.title")," "),c(2),k(e.showConfigSection&&e.rawConfig?80:-1)}}let EOe=(()=>{class t{set nodeInfo(e){this.node=e,this.timeOnline=wv.getElapsedTime(e.secondsOnline),this.fetchPorts(e.localPk)}constructor(e,i,o,r){this.dialog=e,this.storageService=i,this.snackbarService=o,this.apiService=r,this.ports=[],this.showPorts=!1,this.rawConfig="",this.showConfigSection=!1,this.editingConfig=!1,this.configDraft="",this.configError="",this.configSaving=!1,this.configSaveMsg="",this.configSaveErr=""}ngOnDestroy(){}showEditLabelDialog(){let e=this.storageService.getLabelInfo(this.node.localPk);e||(e={id:this.node.localPk,label:"",identifiedElementType:uo.Node}),DS.openDialog(this.dialog,e).afterClosed().subscribe(i=>{i&&Me.refreshCurrentDisplayedData()})}hasDmsgServer(){return!(!this.node||0===this.node.dmsgServerPk.replace(/0/g,"").length)}formatLatency(e){const i=e/1e6;return i<10?i.toFixed(2)+"ms":Math.round(i)+"ms"}fetchPorts(e){this.apiService.get(`visors/${e}/ports`).subscribe(i=>{this.ports=i&&"object"==typeof i?Object.entries(i).map(([o,r])=>({name:o,value:JSON.stringify(r)})):[]},()=>{this.ports=[]})}onConfigToggle(){this.showConfigSection=!this.showConfigSection,this.showConfigSection&&!this.rawConfig&&this.apiService.get(`visors/${this.node.localPk}/runtime-config`).subscribe(e=>{this.rawConfig=JSON.stringify(e,null,2)},()=>{this.snackbarService.showError("common.loading-error")})}startEditConfig(){this.editingConfig=!0,this.configDraft=this.rawConfig,this.configError="",this.configSaveErr="",this.configSaveMsg=""}cancelEditConfig(){this.editingConfig=!1,this.configDraft="",this.configError="",this.configSaveErr=""}onConfigDraftChange(e){if(this.configDraft=e,this.configSaveMsg="",this.configSaveErr="",e.trim())try{JSON.parse(e),this.configError=""}catch(i){this.configError=i?.message||"Invalid JSON"}else this.configError="Config is empty"}saveConfig(){this.configError||this.configSaving||(this.configSaving=!0,this.configSaveErr="",this.configSaveMsg="",this.apiService.put(`visors/${this.node.localPk}/runtime-config`,this.configDraft,new Ro({requestType:uc.RawJson})).subscribe(e=>{this.configSaving=!1,this.rawConfig=this.configDraft,this.editingConfig=!1,this.configSaveMsg=e&&e.restart_required?"Saved. Restart the visor for changes to take effect.":"Saved."},e=>{this.configSaving=!1,this.configSaveErr=e?.originalError?.error?.error||e?.message||"Save failed"}))}static{this.\u0275fac=function(i){return new(i||t)(O(Nt),O(ri),O(ot),O(fi))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-node-info-content"]],inputs:{nodeInfo:"nodeInfo"},standalone:!1,decls:1,vars:1,consts:[[1,"font-smaller","d-flex","flex-column","mt-4.5"],[1,"d-flex","flex-column"],[1,"section-title"],[1,"info-line"],[1,"title"],[1,"highlight-internal-icon",3,"click"],[1,"text-with-small-right-margin"],[1,"edit-icon",3,"inline"],[3,"text"],[1,"dmsg-servers-list"],[3,"inline","matTooltip"],[1,"separator"],[1,"section-title","collapsible-header",2,"cursor","pointer",3,"click"],[3,"inline"],[1,"dmsg-server-item"],[1,"dmsg-latency",3,"ngClass"],[1,"count-badge"],[1,"config-actions"],["mat-stroked-button","",3,"click"],[1,"config-save-msg"],[1,"raw-config"],["mat-raised-button","","color","primary",3,"click","disabled"],["mat-button","",3,"click","disabled"],[1,"config-restart-hint","dim"],[1,"config-error"],["spellcheck","false",1,"raw-config","config-editor",3,"input","value","disabled"]],template:function(i,o){1&i&&x(0,TOe,81,78,"div",0),2&i&&k(o.node?0:-1)},dependencies:[Ft,Ht,Ae,Et,cp,we],styles:[".section-title[_ngcontent-%COMP%]{font-size:1rem;font-weight:700;text-transform:uppercase;color:#00d4ff;text-shadow:0 0 10px rgba(0,212,255,.5),0 0 20px rgba(0,212,255,.3);letter-spacing:1px;margin-bottom:8px}.info-table[_ngcontent-%COMP%]{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;align-items:baseline;margin-top:8px}.info-table[_ngcontent-%COMP%] .info-label[_ngcontent-%COMP%]{opacity:.7;white-space:nowrap;font-size:.9em}.info-table[_ngcontent-%COMP%] .info-value[_ngcontent-%COMP%]{word-break:break-word}.separator[_ngcontent-%COMP%]{width:100%;height:0px;margin:1rem 0;border-top:1px solid rgba(255,255,255,.15);opacity:.5}.config-button-container[_ngcontent-%COMP%]{margin-top:10px;margin-left:-4px}.dmsg-servers-list[_ngcontent-%COMP%]{margin-left:0;margin-top:8px;display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:#00d4ff0d;border-radius:6px;border-left:2px solid rgba(0,212,255,.3)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%]{font-family:Consolas,Monaco,Courier New,monospace;font-size:.82em;display:flex;align-items:center;gap:10px;padding:4px 0;color:#fffffff2;transition:all .2s ease}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%]:hover{color:#00d4ff;text-shadow:0 0 8px rgba(0,212,255,.4)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%] .dmsg-latency[_ngcontent-%COMP%]{color:#4ade80;font-weight:500;font-size:.95em;text-shadow:0 0 6px rgba(74,222,128,.3)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%] .dmsg-latency.latency-high[_ngcontent-%COMP%]{color:#fbbf24;text-shadow:0 0 6px rgba(251,191,36,.3)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%] .dmsg-latency.latency-very-high[_ngcontent-%COMP%]{color:#f87171;text-shadow:0 0 6px rgba(248,113,113,.3)}.glow-value[_ngcontent-%COMP%]{color:#e0f2fe;text-shadow:0 0 4px rgba(224,242,254,.2)}.status-online[_ngcontent-%COMP%]{color:#4ade80;text-shadow:0 0 8px rgba(74,222,128,.5)}.status-offline[_ngcontent-%COMP%]{color:#f87171;text-shadow:0 0 8px rgba(248,113,113,.5)}.raw-config[_ngcontent-%COMP%]{margin-top:10px;padding:12px;background:#0000004d;border:1px solid rgba(0,212,255,.2);border-radius:6px;font-family:Consolas,Monaco,Courier New,monospace;font-size:.8em;color:#ffffffe6;overflow-x:auto;max-height:400px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}textarea.raw-config.config-editor[_ngcontent-%COMP%]{display:block;width:100%;min-height:320px;resize:vertical;white-space:pre;word-break:normal;outline:none;caret-color:#fff}textarea.raw-config.config-editor[_ngcontent-%COMP%]:focus{border-color:#00d4ff99}textarea.raw-config.config-editor[_ngcontent-%COMP%]:disabled{opacity:.6}.config-actions[_ngcontent-%COMP%]{margin-top:8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.config-actions[_ngcontent-%COMP%] button.mat-mdc-button-base[_ngcontent-%COMP%]:not(:disabled):not(.mat-primary):not(.mat-accent):not(.mat-warn){color:#ffffffeb!important}.config-actions[_ngcontent-%COMP%] button.mat-mdc-button-base[_ngcontent-%COMP%]:not(:disabled):not(.mat-primary):not(.mat-accent):not(.mat-warn) .mat-icon[_ngcontent-%COMP%]{color:inherit}.config-actions[_ngcontent-%COMP%] button.mat-mdc-outlined-button[_ngcontent-%COMP%]:not(:disabled){border-color:#ffffff59!important}.config-actions[_ngcontent-%COMP%] .config-restart-hint[_ngcontent-%COMP%]{font-size:.85em;margin-left:auto}.config-actions[_ngcontent-%COMP%] .config-save-msg[_ngcontent-%COMP%]{color:#4caf50f2;font-size:.9em}.config-error[_ngcontent-%COMP%]{margin-top:6px;padding:8px 10px;background:#e539351f;border:1px solid rgba(229,57,53,.35);border-radius:4px;color:#ffc8c8f2;font-size:.85em;display:flex;align-items:center;gap:6px}.config-error[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{font-size:16px}.sub-health[_ngcontent-%COMP%]{padding-left:12px;font-size:.9em;color:#ffffffd9}.collapsible-header[_ngcontent-%COMP%]{display:flex;align-items:center;-webkit-user-select:none;user-select:none}.collapsible-header[_ngcontent-%COMP%]:hover{color:#a5b4fc}.collapsible-header[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:4px;font-size:18px;width:18px;height:18px}.collapsible-header[_ngcontent-%COMP%] .count-badge[_ngcontent-%COMP%]{margin-left:6px;color:#ffffff8c;font-weight:400;font-size:.85em}.transport-stats[_ngcontent-%COMP%]{color:#ffffffd9}.transport-stats[_ngcontent-%COMP%] .transport-type[_ngcontent-%COMP%]{color:#a5b4fc;font-weight:500}.transport-stats[_ngcontent-%COMP%] .transport-count[_ngcontent-%COMP%]{color:#4ade80;font-weight:600}.reward-rules[_ngcontent-%COMP%]{background:#00000040;padding:8px 10px;margin:6px 0;font-size:12px;max-height:360px;overflow:auto;white-space:pre-wrap;word-break:break-word}"]})}}return t})(),POe=(()=>{class t extends Lt{ngOnInit(){return this.nodeSubscription=Me.currentNode.subscribe(e=>{this.node=e}),super.ngOnInit()}ngOnDestroy(){this.nodeSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})()}static{this.\u0275cmp=ae({type:t,selectors:[["app-node-info"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[3,"nodeInfo"]],template:function(i,o){1&i&&L(0,"app-node-info-content",0),2&i&&C("nodeInfo",o.node)},dependencies:[EOe],encapsulation:2})}}return t})();const IOe=()=>[];function OOe(t,n){1&t&&(h(0,"div",6),L(1,"mat-spinner",7),u())}function AOe(t,n){1&t&&(h(0,"span"),p(1,"open"),u())}function ROe(t,n){1&t&&(h(0,"span"),p(1,"s"),u())}function FOe(t,n){if(1&t&&(h(0,"span"),p(1),rt(2,ROe,2,0,"span",5),u()),2&t){const e=y().$implicit;c(),D(" ",e.whitelist.length," PK"),c(),C("ngIf",1!==e.whitelist.length)}}function NOe(t,n){if(1&t){const e=re();h(0,"button",41),F("click",function(){V(e);const o=y(2).$implicit;return H(y(3).clearWhitelist(o))}),p(1," Clear "),u()}}function LOe(t,n){if(1&t){const e=re();h(0,"tr",32)(1,"td",33)(2,"div",34)(3,"p",35),p(4," Comma- or whitespace-separated public keys. Empty = accessible to all authenticated peers. "),u(),h(5,"mat-form-field",36)(6,"mat-label"),p(7),u(),h(8,"textarea",37),Yt("ngModelChange",function(o){V(e);const r=y(4);return nn(r.whitelistInput,o)||(r.whitelistInput=o),H(o)}),u()(),h(9,"div",38)(10,"button",22),F("click",function(){V(e);const o=y().$implicit;return H(y(3).saveWhitelist(o))}),h(11,"mat-icon"),p(12,"save"),u(),p(13," Save "),u(),rt(14,NOe,2,0,"button",39),h(15,"button",40),F("click",function(){return V(e),H(y(4).cancelEditWhitelist())}),p(16,"Cancel"),u()()()()()}if(2&t){const e=y().$implicit,i=y(3);c(7),D("Allowed PKs for port ",e.port),c(),Kt("ngModel",i.whitelistInput),c(6),C("ngIf",e.whitelist&&e.whitelist.length>0)}}function BOe(t,n){if(1&t){const e=re();zr(0),h(1,"tr")(2,"td",25),p(3),u(),h(4,"td",25),p(5),u(),h(6,"td"),p(7),u(),h(8,"td")(9,"mat-checkbox",26),F("change",function(){const o=V(e).$implicit;return H(y(3).toggleSkynet(o))}),u()(),h(10,"td")(11,"mat-checkbox",26),F("change",function(){const o=V(e).$implicit;return H(y(3).toggleDmsg(o))}),u()(),h(12,"td")(13,"mat-checkbox",26),F("change",function(){const o=V(e).$implicit;return H(y(3).toggleLanding(o))}),u()(),h(14,"td")(15,"button",27),F("click",function(){const o=V(e).$implicit;return H(y(3).startEditWhitelist(o))}),rt(16,AOe,2,0,"span",5)(17,FOe,3,2,"span",5),h(18,"mat-icon",28),p(19,"edit"),u()()(),h(20,"td",29)(21,"button",30),F("click",function(){const o=V(e).$implicit;return H(y(3).removePort(o.port))}),h(22,"mat-icon"),p(23,"close"),u()()()(),rt(24,LOe,17,3,"tr",31),pr()}if(2&t){const e=n.$implicit,i=y(3);c(3),S(e.port),c(2),S(e.proxy_addr||"localhost:"+(e.local_port||e.port)),c(2),S(e.label||"-"),c(2),C("checked",e.skynet),c(2),C("checked",e.dmsg),c(2),C("checked",e.show_on_landing),c(2),C("matTooltip",(e.whitelist||vt(10,IOe)).join(", ")||"Open to all peers"),c(),C("ngIf",!e.whitelist||0===e.whitelist.length),c(),C("ngIf",e.whitelist&&e.whitelist.length>0),c(7),C("ngIf",i.editingWhitelistPort===e.port)}}function VOe(t,n){if(1&t&&(h(0,"table",23)(1,"tr")(2,"th"),p(3,"Port"),u(),h(4,"th"),p(5,"Target"),u(),h(6,"th"),p(7,"Label"),u(),h(8,"th"),p(9,"Skynet"),u(),h(10,"th"),p(11,"DMSG"),u(),h(12,"th"),p(13,"Landing"),u(),h(14,"th"),p(15,"Whitelist"),u(),L(16,"th"),u(),rt(17,BOe,25,11,"ng-container",24),u()),2&t){const e=y(2);c(17),C("ngForOf",e.ports)}}function HOe(t,n){1&t&&(h(0,"p",42),p(1,"No ports forwarded."),u())}function UOe(t,n){if(1&t){const e=re();h(0,"div"),rt(1,VOe,18,1,"table",8)(2,HOe,2,0,"p",9),h(3,"div",10)(4,"div",11)(5,"mat-form-field",12)(6,"mat-label"),p(7,"Skynet Port"),u(),h(8,"input",13),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newPort,o)||(r.newPort=o),H(o)}),u()(),h(9,"mat-form-field",12)(10,"mat-label"),p(11,"Local Port"),u(),h(12,"input",14),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newLocalPort,o)||(r.newLocalPort=o),H(o)}),u()(),h(13,"mat-form-field",15)(14,"mat-label"),p(15,"Target Address"),u(),h(16,"input",16),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newProxyAddr,o)||(r.newProxyAddr=o),H(o)}),u()(),h(17,"mat-form-field",15)(18,"mat-label"),p(19,"Label"),u(),h(20,"input",17),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newLabel,o)||(r.newLabel=o),H(o)}),u()()(),h(21,"div",11)(22,"mat-form-field",18)(23,"mat-label"),p(24,"Description"),u(),h(25,"input",19),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newDesc,o)||(r.newDesc=o),H(o)}),u()(),h(26,"mat-form-field",18)(27,"mat-label"),p(28,"Whitelist (optional)"),u(),h(29,"textarea",20),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newWhitelist,o)||(r.newWhitelist=o),H(o)}),u()()(),h(30,"div",11)(31,"mat-checkbox",21),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newSkynet,o)||(r.newSkynet=o),H(o)}),p(32,"Skynet"),u(),h(33,"mat-checkbox",21),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newDmsg,o)||(r.newDmsg=o),H(o)}),p(34,"DMSG"),u(),h(35,"mat-checkbox",21),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newShowLanding,o)||(r.newShowLanding=o),H(o)}),p(36,"Show on landing page"),u(),h(37,"button",22),F("click",function(){return V(e),H(y().addPort())}),h(38,"mat-icon"),p(39,"add"),u(),p(40," Forward "),u()(),h(41,"p",3),p(42," Target Address overrides Local Port \u2014 set it to forward to a host:port elsewhere on the LAN (e.g. "),h(43,"code"),p(44,"192.168.1.20:5432"),u(),p(45,") instead of localhost. Whitelist accepts comma- or whitespace-separated 66-char hex public keys; leave empty to allow all authenticated peers (you can edit the whitelist per-row later, on the table above). "),u()()()}if(2&t){const e=y();c(),C("ngIf",e.ports.length>0),c(),C("ngIf",0===e.ports.length),c(6),Kt("ngModel",e.newPort),c(4),Kt("ngModel",e.newLocalPort),c(4),Kt("ngModel",e.newProxyAddr),c(4),Kt("ngModel",e.newLabel),c(5),Kt("ngModel",e.newDesc),c(4),Kt("ngModel",e.newWhitelist),c(2),Kt("ngModel",e.newSkynet),c(2),Kt("ngModel",e.newDmsg),c(2),Kt("ngModel",e.newShowLanding)}}function zOe(t,n){1&t&&(h(0,"div",6),L(1,"mat-spinner",7),u())}function jOe(t,n){if(1&t){const e=re();h(0,"tr")(1,"td",25),p(2),u(),h(3,"td",49),p(4),u(),h(5,"td",25),p(6),u(),h(7,"td",25),p(8),u(),h(9,"td",29)(10,"button",50),F("click",function(){const o=V(e).$implicit;return H(y(3).disconnect(o.id))}),h(11,"mat-icon"),p(12,"close"),u()()()()}if(2&t){const e=n.$implicit;c(2),S(e.network||"skynet"),c(2),S(e.remotePK),c(2),S(e.remotePort),c(2),S(e.localPort)}}function $Oe(t,n){if(1&t&&(h(0,"table",23)(1,"tr")(2,"th"),p(3,"Network"),u(),h(4,"th"),p(5,"Remote PK"),u(),h(6,"th"),p(7,"Remote Port"),u(),h(8,"th"),p(9,"Local Port"),u(),L(10,"th"),u(),rt(11,jOe,13,4,"tr",24),u()),2&t){const e=y(2);c(11),C("ngForOf",e.forwards)}}function WOe(t,n){1&t&&(h(0,"p",42),p(1,"No active reverse proxies."),u())}function GOe(t,n){if(1&t){const e=re();h(0,"div"),rt(1,$Oe,12,1,"table",8)(2,WOe,2,0,"p",9),h(3,"div",11)(4,"mat-form-field",12)(5,"mat-label"),p(6,"Network"),u(),h(7,"mat-select",43),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.connectNetwork,o)||(r.connectNetwork=o),H(o)}),h(8,"mat-option",44),p(9,"skynet"),u(),h(10,"mat-option",45),p(11,"dmsg"),u()()(),h(12,"mat-form-field",46)(13,"mat-label"),p(14,"Remote Public Key"),u(),h(15,"input",47),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.connectPK,o)||(r.connectPK=o),H(o)}),u()()(),h(16,"div",11)(17,"mat-form-field",12)(18,"mat-label"),p(19,"Remote Port"),u(),h(20,"input",13),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.connectRemotePort,o)||(r.connectRemotePort=o),H(o)}),u()(),h(21,"mat-form-field",12)(22,"mat-label"),p(23,"Local Port"),u(),h(24,"input",48),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.connectLocalPort,o)||(r.connectLocalPort=o),H(o)}),u()(),h(25,"button",22),F("click",function(){return V(e),H(y().connect())}),h(26,"mat-icon"),p(27,"link"),u(),p(28," Connect "),u()()()}if(2&t){const e=y();c(),C("ngIf",e.forwards.length>0),c(),C("ngIf",0===e.forwards.length),c(5),Kt("ngModel",e.connectNetwork),c(8),Kt("ngModel",e.connectPK),c(5),Kt("ngModel",e.connectRemotePort),c(4),Kt("ngModel",e.connectLocalPort)}}let qOe=(()=>{class t extends Lt{constructor(e,i){super(),this.nodeService=e,this.snackbarService=i,this.ports=[],this.portsLoading=!0,this.newPort="",this.newLocalPort="",this.newProxyAddr="",this.newLabel="",this.newDesc="",this.newWhitelist="",this.newSkynet=!0,this.newDmsg=!0,this.newShowLanding=!0,this.editingWhitelistPort=null,this.whitelistInput="",this.forwards=[],this.forwardsLoading=!0,this.connectNetwork="skynet",this.connectPK="",this.connectRemotePort="",this.connectLocalPort="",this.nodeKey=""}ngOnInit(){return this.nodeKey=Me.getCurrentNodeKey(),this.loadPorts(),this.loadForwards(),super.ngOnInit()}ngOnDestroy(){this.portsSub&&this.portsSub.unsubscribe(),this.fwdsSub&&this.fwdsSub.unsubscribe()}loadPorts(){this.portsLoading=!0,this.portsSub=this.nodeService.getForwardedPorts(this.nodeKey).subscribe(e=>{this.ports=(e||[]).sort((i,o)=>i.port-o.port),this.portsLoading=!1},()=>{this.ports=[],this.portsLoading=!1})}addPort(){const e=parseInt(this.newPort,10);if(isNaN(e)||e<1||e>65535)return void this.snackbarService.showError("Enter a valid port (1-65535)");const i=this.newLocalPort?parseInt(this.newLocalPort,10):0,o=(this.newProxyAddr||"").trim();let r=[];const s=(this.newWhitelist||"").trim();if(""!==s){r=s.split(/[\s,]+/).map(l=>l.trim()).filter(l=>l.length>0);for(const l of r)if(66!==l.length||!/^[0-9a-fA-F]+$/.test(l))return void this.snackbarService.showError(`Invalid public key in whitelist: ${l}`)}this.nodeService.registerForwardedPort(this.nodeKey,{port:e,local_port:i||void 0,proxy_addr:o||void 0,label:this.newLabel,description:this.newDesc,show_on_landing:this.newShowLanding,skynet:this.newSkynet,dmsg:this.newDmsg,whitelist:r.length>0?r:void 0}).subscribe(()=>{this.newPort="",this.newLocalPort="",this.newProxyAddr="",this.newLabel="",this.newDesc="",this.newWhitelist="",this.snackbarService.showDone(`Port ${e} forwarded`),this.loadPorts()},l=>{this.snackbarService.showError(l?.error?.error||"Failed")})}removePort(e){this.nodeService.deregisterSkynetPort(this.nodeKey,e).subscribe(()=>{this.snackbarService.showDone(`Port ${e} removed`),this.loadPorts()},()=>{this.snackbarService.showError("Failed to remove port")})}toggleLanding(e){e.show_on_landing=!e.show_on_landing,this.nodeService.updateForwardedPort(this.nodeKey,e).subscribe(()=>{},()=>{this.snackbarService.showError("Failed to update"),this.loadPorts()})}toggleSkynet(e){e.skynet=!e.skynet,this.nodeService.updateForwardedPort(this.nodeKey,e).subscribe(()=>{},()=>{this.snackbarService.showError("Failed to update"),this.loadPorts()})}toggleDmsg(e){e.dmsg=!e.dmsg,this.nodeService.updateForwardedPort(this.nodeKey,e).subscribe(()=>{},()=>{this.snackbarService.showError("Failed to update"),this.loadPorts()})}startEditWhitelist(e){this.editingWhitelistPort=e.port,this.whitelistInput=(e.whitelist||[]).join(", ")}cancelEditWhitelist(){this.editingWhitelistPort=null,this.whitelistInput=""}saveWhitelist(e){const i=(this.whitelistInput||"").trim();let o=[];if(""!==i){o=i.split(/[\s,]+/).map(s=>s.trim()).filter(s=>s.length>0);for(const s of o)if(66!==s.length||!/^[0-9a-fA-F]+$/.test(s))return void this.snackbarService.showError(`Invalid public key: ${s}`)}const r={...e,whitelist:o};this.nodeService.updateForwardedPort(this.nodeKey,r).subscribe(()=>{this.snackbarService.showDone(0===o.length?`Whitelist cleared on port ${e.port}`:`Whitelist set on port ${e.port} (${o.length} PK${1===o.length?"":"s"})`),this.cancelEditWhitelist(),this.loadPorts()},s=>{this.snackbarService.showError(s?.error?.error||"Failed to update whitelist")})}clearWhitelist(e){const i={...e,whitelist:[]};this.nodeService.updateForwardedPort(this.nodeKey,i).subscribe(()=>{this.snackbarService.showDone(`Whitelist cleared on port ${e.port}`),this.cancelEditWhitelist(),this.loadPorts()},o=>{this.snackbarService.showError(o?.error?.error||"Failed to clear whitelist")})}loadForwards(){this.forwardsLoading=!0,this.fwdsSub=this.nodeService.getSkynetForwards(this.nodeKey).subscribe(e=>{if(this.forwards=[],e)for(const[i,o]of Object.entries(e))this.forwards.push({id:i,network:o.network||"skynet",remotePK:o.remote_pk||"",remotePort:o.remote_port||0,localPort:o.local_port||0});this.forwardsLoading=!1},()=>{this.forwards=[],this.forwardsLoading=!1})}connect(){const e=parseInt(this.connectRemotePort,10),i=parseInt(this.connectLocalPort,10);this.connectPK&&66===this.connectPK.length?isNaN(e)||e<1?this.snackbarService.showError("Enter a valid remote port"):isNaN(i)||i<1?this.snackbarService.showError("Enter a valid local port"):"skynet"===this.connectNetwork||"dmsg"===this.connectNetwork?this.nodeService.skynetConnect(this.nodeKey,this.connectNetwork,this.connectPK,e,i).subscribe(()=>{this.connectPK="",this.connectRemotePort="",this.connectLocalPort="",this.snackbarService.showDone(`Connected via ${this.connectNetwork}: remote ${e} \u2192 localhost:${i}`),this.loadForwards()},o=>{this.snackbarService.showError(o?.error?.error||"Failed")}):this.snackbarService.showError("Network must be skynet or dmsg"):this.snackbarService.showError("Enter a valid public key")}disconnect(e){this.nodeService.skynetDisconnect(this.nodeKey,e).subscribe(()=>{this.snackbarService.showDone("Disconnected"),this.loadForwards()},()=>{this.snackbarService.showError("Failed")})}static{this.\u0275fac=function(i){return new(i||t)(O(Yi),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-skynet"]],standalone:!1,features:[_e],decls:21,vars:4,consts:[[1,"container-elevated-translucid","mt-4.5","skynet-container"],[1,"section"],[1,"section-title"],[1,"section-desc"],["class","text-center py-2",4,"ngIf"],[4,"ngIf"],[1,"text-center","py-2"],["diameter","24",1,"mx-auto"],["class","data-table",4,"ngIf"],["class","empty-msg",4,"ngIf"],[1,"add-form"],[1,"add-row"],["appearance","outline",1,"field-sm"],["matInput","","placeholder","80","type","number",3,"ngModelChange","ngModel"],["matInput","","placeholder","3000","type","number",3,"ngModelChange","ngModel"],["appearance","outline",1,"field-md"],["matInput","","placeholder","192.168.1.20:5432",3,"ngModelChange","ngModel"],["matInput","","placeholder","My Service",3,"ngModelChange","ngModel"],["appearance","outline",1,"field-lg"],["matInput","","placeholder","Optional description",3,"ngModelChange","ngModel"],["matInput","","rows","2","placeholder","02abc..., 03def... (empty = open to all)",3,"ngModelChange","ngModel"],["color","primary",3,"ngModelChange","ngModel"],["mat-raised-button","","color","primary",3,"click"],[1,"data-table"],[4,"ngFor","ngForOf"],[1,"mono"],["color","primary",3,"change","checked"],["mat-button","",3,"click","matTooltip"],[1,"edit-icon"],[1,"action-col"],["mat-icon-button","","color","warn","matTooltip","Remove",3,"click"],["class","whitelist-edit-row",4,"ngIf"],[1,"whitelist-edit-row"],["colspan","8"],[1,"whitelist-edit"],[1,"whitelist-help"],["appearance","outline",1,"whitelist-input"],["matInput","","rows","3","placeholder","02abc..., 03def...",3,"ngModelChange","ngModel"],[1,"whitelist-actions"],["mat-stroked-button","",3,"click",4,"ngIf"],["mat-button","",3,"click"],["mat-stroked-button","",3,"click"],[1,"empty-msg"],["panelClass","skynet-select-panel",3,"ngModelChange","ngModel"],["value","skynet"],["value","dmsg"],["appearance","outline",1,"field-pk"],["matInput","","placeholder","02abc...",3,"ngModelChange","ngModel"],["matInput","","placeholder","9090","type","number",3,"ngModelChange","ngModel"],[1,"mono","small"],["mat-icon-button","","color","warn","matTooltip","Disconnect",3,"click"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"h4",2),p(3,"Forwarded Ports"),u(),h(4,"p",3),p(5," Expose local TCP ports over skynet and/or DMSG. "),u(),rt(6,OOe,2,0,"div",4)(7,UOe,46,11,"div",5),u(),h(8,"div",1)(9,"h4",2),p(10,"Reverse Proxy"),u(),h(11,"p",3),p(12," Map a remote visor's port to a local port. The Network selector picks the transport: "),h(13,"code"),p(14,"skynet"),u(),p(15," goes through the routing layer; "),h(16,"code"),p(17,"dmsg"),u(),p(18," opens a direct DMSG stream. A single forward uses one network at a time. "),u(),rt(19,zOe,2,0,"div",4)(20,GOe,29,6,"div",5),u()()),2&i&&(c(6),C("ngIf",o.portsLoading),c(),C("ngIf",!o.portsLoading),c(12),C("ngIf",o.forwardsLoading),c(),C("ngIf",!o.forwardsLoading))},dependencies:[zF,lf,Qt,Oa,Jt,dn,ns,On,Ht,Yo,Ae,Et,gu,Na,is,ci,Fo],styles:[".skynet-container[_ngcontent-%COMP%]{padding:20px;max-width:900px}.section[_ngcontent-%COMP%]{margin-bottom:28px}.section-title[_ngcontent-%COMP%]{font-size:16px;font-weight:500;margin-bottom:4px}.section-desc[_ngcontent-%COMP%]{color:#fff9;font-size:13px;margin-bottom:16px}.section-desc[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:#ffffff1a;padding:1px 4px;border-radius:3px;font-size:12px}.data-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;margin-bottom:16px}.data-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .data-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:8px 12px;text-align:left;border-bottom:1px solid rgba(255,255,255,.08)}.data-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{color:#ffffff80;font-weight:500;font-size:13px}.data-table[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%]{font-family:monospace}.data-table[_ngcontent-%COMP%] .small[_ngcontent-%COMP%]{font-size:12px;color:#ffffffb3;word-break:break-all}.data-table[_ngcontent-%COMP%] .action-col[_ngcontent-%COMP%]{width:48px;text-align:right}.empty-msg[_ngcontent-%COMP%]{color:#ffffff61;font-style:italic;margin-bottom:16px}.add-form[_ngcontent-%COMP%]{margin-top:8px}.add-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.field-sm[_ngcontent-%COMP%]{width:120px}.field-md[_ngcontent-%COMP%]{width:200px}.field-lg[_ngcontent-%COMP%]{width:300px}.field-pk[_ngcontent-%COMP%]{width:100%;max-width:580px}.edit-icon[_ngcontent-%COMP%]{font-size:14px;width:14px;height:14px;vertical-align:middle;margin-left:4px;opacity:.6}.whitelist-edit-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{background:#ffffff08;padding:12px 16px!important}.whitelist-edit[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.whitelist-help[_ngcontent-%COMP%]{margin:0;color:#fff9;font-size:12px}.whitelist-input[_ngcontent-%COMP%]{width:100%;max-width:720px}.whitelist-actions[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center}[_nghost-%COMP%] .mat-mdc-text-field-wrapper{background:#ffffff14!important}[_nghost-%COMP%] .mdc-text-field--outlined .mdc-notched-outline__leading, [_nghost-%COMP%] .mdc-text-field--outlined .mdc-notched-outline__notch, [_nghost-%COMP%] .mdc-text-field--outlined .mdc-notched-outline__trailing{border-color:#ffffff4d!important}[_nghost-%COMP%] .mat-mdc-input-element, [_nghost-%COMP%] .mdc-text-field__input{color:#fff!important;caret-color:#fff!important}[_nghost-%COMP%] .mdc-floating-label{color:#fff9!important}[_nghost-%COMP%] .mdc-label, [_nghost-%COMP%] .mdc-form-field>label, [_nghost-%COMP%] .mat-mdc-checkbox label{color:#ffffffde!important}"]})}}return t})();const KOe=()=>["settings.title","labels.title"];let YOe=(()=>{class t{constructor(e){this.router=e,this.tabsData=[],this.returnButtonText="settings.title",this.tabsData=[{icon:"view_headline",label:"labels.list-title",linkParts:[]}]}performAction(e){null===e&&this.router.navigate(["settings"])}static{this.\u0275fac=function(i){return new(i||t)(O(yt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-all-labels"]],standalone:!1,decls:5,vars:6,consts:[[1,"row"],[1,"col-12"],[3,"optionSelected","titleParts","tabsData","showUpdateButton","returnText"],[1,"content","col-12"],[3,"showShortList"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"app-top-bar",2),F("optionSelected",function(s){return o.performAction(s)}),u()(),h(3,"div",3),L(4,"app-label-list",4),u()()),2&i&&(c(2),C("titleParts",vt(5,KOe))("tabsData",o.tabsData)("showUpdateButton",!1)("returnText",o.returnButtonText),c(2),C("showShortList",!1))},dependencies:[tr,xV],encapsulation:2})}}return t})();const XOe=["firstInput"];function ZOe(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.server-list.add-server-dialog.pk-length-error")))}function QOe(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.server-list.add-server-dialog.pk-chars-error")))}let JOe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a,l,d){this.dialogRef=e,this.data=i,this.formBuilder=o,this.dialog=r,this.router=s,this.vpnClientService=a,this.vpnSavedDataService=l,this.snackbarService=d}ngOnInit(){this.form=this.formBuilder.group({pk:["",Se.compose([Se.required,Se.minLength(66),Se.maxLength(66),Se.pattern("^[0-9a-fA-F]+$")])],password:[""],name:[""],note:[""]}),setTimeout(()=>this.firstInput.nativeElement.focus())}process(){if(!this.form.valid)return;const e={pk:this.form.get("pk").value,name:this.form.get("name").value,note:this.form.get("note").value};pi.processServerChange(this.router,this.vpnClientService,this.vpnSavedDataService,this.snackbarService,this.dialog,this.dialogRef,this.data,null,null,e,this.form.get("password").value)}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Si),O(Nt),O(yt),O(wc),O(Cc),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-add-vpn-server"]],viewQuery:function(i,o){if(1&i&&st(XOe,5),2&i){let r;fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:34,vars:22,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","pk","maxlength","66","matInput",""],["formControlName","password","type","password","matInput",""],["formControlName","name","maxlength","100","matInput",""],["formControlName","note","maxlength","100","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),_(7,"translate"),u(),L(8,"input",5,0),u(),h(10,"mat-error"),x(11,ZOe,3,3,"span")(12,QOe,3,3,"span"),u()(),h(13,"mat-form-field")(14,"div",3)(15,"label",4),p(16),_(17,"translate"),u(),L(18,"input",6),u()(),h(19,"mat-form-field")(20,"div",3)(21,"label",4),p(22),_(23,"translate"),u(),L(24,"input",7),u()(),h(25,"mat-form-field")(26,"div",3)(27,"label",4),p(28),_(29,"translate"),u(),L(30,"input",8),u()()(),h(31,"app-button",9),F("action",function(){return o.process()}),p(32),_(33,"translate"),u()()),2&i&&(C("headline",v(1,10,"vpn.server-list.add-server-dialog.title"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(4),S(v(7,12,"vpn.server-list.add-server-dialog.pk-label")),c(5),k(o.form.get("pk").hasError("pattern")?12:11),c(5),S(v(17,14,"vpn.server-list.add-server-dialog.password-label")),c(6),S(v(23,16,"vpn.server-list.add-server-dialog.name-label")),c(6),S(v(29,18,"vpn.server-list.add-server-dialog.note-label")),c(3),C("disabled",!o.form.valid),c(),D(" ",v(33,20,"vpn.server-list.add-server-dialog.use-server-button")," "))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,Aa,On,Mi,Sn,we],encapsulation:2})}}return t})();class eAe{constructor(){this.countryCode="ZZ"}}let tAe=(()=>{class t{constructor(e){this.http=e,this.discoveryServiceUrl="https://sd.skycoin.com/api/services?type=vpn"}getServers(){return this.servers?se(this.servers):this.http.get(this.discoveryServiceUrl).pipe(lp(e=>e.pipe(oi(4e3))),De(e=>{const i=[];return e&&e.forEach(o=>{const r=new eAe,s=o.address.split(":");2===s.length&&(r.pk=s[0],r.location="",o.geo&&(o.geo.country&&(r.countryCode=o.geo.country),o.geo.region&&(r.location=o.geo.region)),r.name=s[0],r.note="",i.push(r))}),this.servers=i,i}))}static{this.\u0275fac=function(i){return new(i||t)(ce(xa))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const yH=()=>["vpn.title"],nAe=t=>({deactivated:t}),Jv=(t,n)=>["/vpn",t,"servers",n,1],iAe=t=>({"mb-3":t}),oAe=(t,n)=>({"public-pk-column":t,"history-pk-column":n}),rAe=t=>({"selectable click-effect":t}),sAe=(t,n)=>({custom:t,original:n}),aAe=(t,n)=>["/vpn",t,"servers",n];function lAe(t,n){1&t&&mr(0)}function cAe(t,n){if(1&t&&(h(0,"div",1)(1,"div",3),L(2,"app-top-bar",4),h(3,"div",5)(4,"div",6)(5,"div",7),rt(6,lAe,1,0,"ng-container",8),u()()()(),L(7,"app-loading-indicator",9),u()),2&t){const e=y(),i=Un(2);c(2),C("titleParts",vt(6,yH))("tabsData",e.tabsData)("selectedTabIndex",1)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),c(4),C("ngTemplateOutlet",i)}}function dAe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),_(3,"translate"),u()()),2&t&&(c(2),S(v(3,1,"vpn.server-list.tabs.public")))}function uAe(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),_(3,"translate"),u()()),2&t){const e=y(2);C("routerLink",pt(4,Jv,e.currentLocalPk,e.lists.Public)),c(2),S(v(3,2,"vpn.server-list.tabs.public"))}}function hAe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),_(3,"translate"),u()()),2&t&&(c(2),S(v(3,1,"vpn.server-list.tabs.history")))}function fAe(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),_(3,"translate"),u()()),2&t){const e=y(2);C("routerLink",pt(4,Jv,e.currentLocalPk,e.lists.History)),c(2),S(v(3,2,"vpn.server-list.tabs.history"))}}function pAe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),_(3,"translate"),u()()),2&t&&(c(2),S(v(3,1,"vpn.server-list.tabs.favorites")))}function mAe(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),_(3,"translate"),u()()),2&t){const e=y(2);C("routerLink",pt(4,Jv,e.currentLocalPk,e.lists.Favorites)),c(2),S(v(3,2,"vpn.server-list.tabs.favorites"))}}function gAe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),_(3,"translate"),u()()),2&t&&(c(2),S(v(3,1,"vpn.server-list.tabs.blocked")))}function _Ae(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),_(3,"translate"),u()()),2&t){const e=y(2);C("routerLink",pt(4,Jv,e.currentLocalPk,e.lists.Blocked)),c(2),S(v(3,2,"vpn.server-list.tabs.blocked"))}}function bAe(t,n){1&t&&L(0,"br")}function vAe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().$implicit.translatableValue)," ")}function yAe(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.value," ")}function CAe(t,n){if(1&t&&(h(0,"div",23)(1,"span"),p(2),_(3,"translate"),u(),x(4,vAe,2,3),x(5,yAe,1,1),u()),2&t){const e=n.$implicit;c(2),D("",v(3,3,e.filterName),": "),c(2),k(e.translatableValue?4:-1),c(),k(e.value?5:-1)}}function wAe(t,n){if(1&t){const e=re();h(0,"div",21),F("click",function(){return V(e),H(y(3).dataFilterer.removeFilters())}),h(1,"div",22)(2,"mat-icon",18),p(3,"search"),u(),p(4),_(5,"translate"),u(),me(6,CAe,6,5,"div",23,Le),u()}if(2&t){const e=y(3);c(2),C("inline",!0),c(2),D(" ",v(5,2,"vpn.server-list.current-filters")),c(2),ge(e.dataFilterer.currentFiltersTexts)}}function xAe(t,n){if(1&t&&(x(0,bAe,1,0,"br"),x(1,wAe,8,4,"div",20)),2&t){const e=y(2);k(e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0?0:-1),c(),k(e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0?1:-1)}}function kAe(t,n){if(1&t){const e=re();h(0,"div",10)(1,"div",11)(2,"div",12)(3,"div",13),x(4,dAe,4,3,"div",14),x(5,uAe,4,7,"a",15),x(6,hAe,4,3,"div",14),x(7,fAe,4,7,"a",15),x(8,pAe,4,3,"div",14),x(9,mAe,4,7,"a",15),x(10,gAe,4,3,"div",14),x(11,_Ae,4,7,"a",15),u()()()(),h(12,"div",16)(13,"div",11)(14,"div",12)(15,"div",13)(16,"div",17),_(17,"translate"),F("click",function(){V(e);const o=y();return H(o.dataFilterer?o.dataFilterer.changeFilters():null)}),h(18,"span")(19,"mat-icon",18),p(20,"search"),u()()()()()()(),h(21,"div",19)(22,"div",11)(23,"div",12)(24,"div",13)(25,"div",17),_(26,"translate"),F("click",function(){return V(e),H(y().enterManually())}),h(27,"span")(28,"mat-icon",18),p(29,"add"),u()()()()()()(),x(30,xAe,2,2)}if(2&t){const e=y();c(4),k(e.currentList===e.lists.Public?4:-1),c(),k(e.currentList!==e.lists.Public?5:-1),c(),k(e.currentList===e.lists.History?6:-1),c(),k(e.currentList!==e.lists.History?7:-1),c(),k(e.currentList===e.lists.Favorites?8:-1),c(),k(e.currentList!==e.lists.Favorites?9:-1),c(),k(e.currentList===e.lists.Blocked?10:-1),c(),k(e.currentList!==e.lists.Blocked?11:-1),c(),C("ngClass",ie(18,nAe,e.loading)),c(4),C("matTooltip",v(17,14,"filters.filter-info")),c(3),C("inline",!0),c(6),C("matTooltip",v(26,16,"vpn.server-list.add-manually-info")),c(3),C("inline",!0),c(2),k(e.dataFilterer?30:-1)}}function SAe(t,n){1&t&&mr(0)}function MAe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=y(5);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function DAe(t,n){if(1&t){const e=re();h(0,"th",41),_(1,"translate"),F("click",function(){V(e);const o=y(4);return H(o.dataSorter.changeSortingOrder(o.dateSortData))}),h(2,"div",34)(3,"div",35),p(4),_(5,"translate"),u(),x(6,MAe,2,2,"mat-icon",18),u()()}if(2&t){const e=y(4);C("matTooltip",v(1,3,"vpn.server-list.date-info")),c(4),D(" ",v(5,5,"vpn.server-list.date-small-table-label")," "),c(2),k(e.dataSorter.currentSortingColumn===e.dateSortData?6:-1)}}function TAe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function EAe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function PAe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function IAe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function OAe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function AAe(t,n){if(1&t&&(h(0,"td",43),p(1),_(2,"date"),u()),2&t){const e=y().$implicit;c(),D(" ",ue(2,1,e.lastUsed,"yyyy/MM/dd, H:mm a")," ")}}function RAe(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.location," ")}function FAe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"vpn.server-list.unknown")," ")}function NAe(t,n){if(1&t&&(h(0,"mat-icon",55),_(1,"translate"),F("click",function(i){return i.stopPropagation()}),p(2,"info_outline"),u()),2&t){const e=y().$implicit,i=y(4);C("inline",!0)("matTooltip",ue(1,2,i.getNoteVar(e),pt(5,sAe,e.personalNote,e.note)))}}function LAe(t,n){if(1&t){const e=re();h(0,"tr",42),F("click",function(){const o=V(e).$implicit,r=y(4);return H(r.currentList!==r.lists.Blocked?r.selectServer(o):null)}),x(1,AAe,3,4,"td",43),h(2,"td",44)(3,"div",45),L(4,"div",46),u()(),h(5,"td",47),L(6,"app-vpn-server-name",48),u(),h(7,"td",49),x(8,RAe,1,1),x(9,FAe,2,3),u(),h(10,"td",50)(11,"app-copy-to-clipboard-text",51),F("click",function(o){return o.stopPropagation()}),u()(),h(12,"td",52),x(13,NAe,3,8,"mat-icon",53),u(),h(14,"td",39)(15,"button",54),_(16,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(4);return o.stopPropagation(),H(s.openOptions(r))}),h(17,"mat-icon",18),p(18,"settings"),u()()()()}if(2&t){const e=n.$implicit,i=y(4);C("ngClass",ie(23,rAe,i.currentList!==i.lists.Blocked)),c(),k(i.currentList===i.lists.History?1:-1),c(3),ao("background-image: url('assets/img/big-flags/"+e.countryCode.toLocaleLowerCase()+".png');"),C("matTooltip",i.getCountryName(e.countryCode)),c(2),C("isCurrentServer",i.currentServer&&e.pk===i.currentServer.pk)("isFavorite",e.flag===i.serverFlags.Favorite&&i.currentList!==i.lists.Favorites)("isBlocked",e.flag===i.serverFlags.Blocked&&i.currentList!==i.lists.Blocked)("isInHistory",e.inHistory&&i.currentList!==i.lists.History)("hasPassword",e.usedWithPassword)("name",e.name)("pk",e.pk)("customName",e.customName)("defaultName","vpn.server-list.none"),c(2),k(e.location?8:-1),c(),k(e.location?-1:9),c(2),C("shortSimple",!0)("text",e.pk),c(2),k(e.note||e.personalNote?13:-1),c(2),C("matTooltip",v(16,21,"vpn.server-options.tooltip")),c(2),C("inline",!0)}}function BAe(t,n){if(1&t){const e=re();h(0,"table",30)(1,"tr"),x(2,DAe,7,7,"th",31),h(3,"th",32),_(4,"translate"),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.countrySortData))}),h(5,"mat-icon",18),p(6,"flag"),u(),x(7,TAe,2,2,"mat-icon",18),u(),h(8,"th",33),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.nameSortData))}),h(9,"div",34)(10,"div",35),p(11),_(12,"translate"),u(),x(13,EAe,2,2,"mat-icon",18),u()(),h(14,"th",36),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.locationSortData))}),h(15,"div",34)(16,"div",35),p(17),_(18,"translate"),u(),x(19,PAe,2,2,"mat-icon",18),u()(),h(20,"th",37),_(21,"translate"),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.pkSortData))}),h(22,"div",34)(23,"div",35),p(24),_(25,"translate"),u(),x(26,IAe,2,2,"mat-icon",18),u()(),h(27,"th",38),_(28,"translate"),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.noteSortData))}),h(29,"div",34)(30,"mat-icon",18),p(31,"info_outline"),u(),x(32,OAe,2,2,"mat-icon",18),u()(),L(33,"th",39),u(),me(34,LAe,19,25,"tr",40,Le),u()}if(2&t){const e=y(3);c(2),k(e.currentList===e.lists.History?2:-1),c(),C("matTooltip",v(4,15,"vpn.server-list.country-info")),c(2),C("inline",!0),c(2),k(e.dataSorter.currentSortingColumn===e.countrySortData?7:-1),c(4),D(" ",v(12,17,"vpn.server-list.name-small-table-label")," "),c(2),k(e.dataSorter.currentSortingColumn===e.nameSortData?13:-1),c(4),D(" ",v(18,19,"vpn.server-list.location-small-table-label")," "),c(2),k(e.dataSorter.currentSortingColumn===e.locationSortData?19:-1),c(),C("ngClass",pt(27,oAe,e.currentList===e.lists.Public,e.currentList===e.lists.History))("matTooltip",v(21,21,"vpn.server-list.public-key-info")),c(4),D(" ",v(25,23,"vpn.server-list.public-key-small-table-label")," "),c(2),k(e.dataSorter.currentSortingColumn===e.pkSortData?26:-1),c(),C("matTooltip",v(28,25,"vpn.server-list.note-info")),c(3),C("inline",!0),c(2),k(e.dataSorter.currentSortingColumn===e.noteSortData?32:-1),c(2),ge(e.dataSource)}}function VAe(t,n){if(1&t&&(h(0,"div",27)(1,"div",29),x(2,BAe,36,30,"table",30),u()()),2&t){const e=y(2);c(2),k(e.dataSource.length>0?2:-1)}}function HAe(t,n){if(1&t&&L(0,"app-paginator",28),2&t){const e=y(2);C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",pt(4,aAe,e.currentLocalPk,e.currentList))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function UAe(t,n){1&t&&(h(0,"span",58),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.server-list.empty-discovery")))}function zAe(t,n){1&t&&(h(0,"span",58),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.server-list.empty-history")))}function jAe(t,n){1&t&&(h(0,"span",58),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.server-list.empty-favorites")))}function $Ae(t,n){1&t&&(h(0,"span",58),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.server-list.empty-blocked")))}function WAe(t,n){1&t&&(h(0,"span",58),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.server-list.empty-with-filter")))}function GAe(t,n){if(1&t&&(h(0,"div",27)(1,"div",56)(2,"mat-icon",57),p(3,"warning"),u(),x(4,UAe,3,3,"span",58),x(5,zAe,3,3,"span",58),x(6,jAe,3,3,"span",58),x(7,$Ae,3,3,"span",58),x(8,WAe,3,3,"span",58),u()()),2&t){const e=y(2);c(2),C("inline",!0),c(2),k(0===e.allServers.length&&e.currentList===e.lists.Public?4:-1),c(),k(0===e.allServers.length&&e.currentList===e.lists.History?5:-1),c(),k(0===e.allServers.length&&e.currentList===e.lists.Favorites?6:-1),c(),k(0===e.allServers.length&&e.currentList===e.lists.Blocked?7:-1),c(),k(0!==e.allServers.length?8:-1)}}function qAe(t,n){if(1&t&&(h(0,"div",2)(1,"div",24),L(2,"app-top-bar",4),u(),h(3,"div",25)(4,"div",6)(5,"div",26),rt(6,SAe,1,0,"ng-container",8),u(),x(7,VAe,3,1,"div",27),x(8,HAe,1,7,"app-paginator",28),x(9,GAe,9,6,"div",27),u()()()),2&t){const e=y(),i=Un(2);c(2),C("titleParts",vt(10,yH))("tabsData",e.tabsData)("selectedTabIndex",1)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),c(3),C("ngClass",ie(11,iAe,!e.dataFilterer.currentFiltersTexts||e.dataFilterer.currentFiltersTexts.length<1)),c(),C("ngTemplateOutlet",i),c(),k(0!==e.dataSource.length?7:-1),c(),k(e.numberOfPages>1?8:-1),c(),k(0===e.dataSource.length?9:-1)}}var gi=function(t){return t.Public="public",t.History="history",t.Favorites="favorites",t.Blocked="blocked",t}(gi||{});let CH=(()=>{class t extends Lt{constructor(e,i,o,r,s,a,l,d,f){super(),this.dialog=e,this.router=i,this.translateService=o,this.route=r,this.vpnClientDiscoveryService=s,this.vpnClientService=a,this.vpnSavedDataService=l,this.snackbarService=d,this.storageService=f,this.persistentServerDataResponseKey="serv-dat-response",this.maxFullListElements=50,this.dateSortData=new Pt(["lastUsed"],"vpn.server-list.date-small-table-label",lt.NumberReversed),this.countrySortData=new Pt(["countryName"],"vpn.server-list.country-small-table-label",lt.Text),this.nameSortData=new Pt(["name"],"vpn.server-list.name-small-table-label",lt.Text),this.locationSortData=new Pt(["location"],"vpn.server-list.location-small-table-label",lt.Text),this.pkSortData=new Pt(["pk"],"vpn.server-list.public-key-small-table-label",lt.Text),this.noteSortData=new Pt(["note"],"vpn.server-list.note-small-table-label",lt.Text),this.loading=!0,this.loadingBackendData=!0,this.tabsData=pi.vpnTabsData,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.currentList=gi.Public,this.vpnRunning=!1,this.serverFlags=bn,this.lists=gi,this.initialLoadStarted=!1,this.navigationsSubscription=r.paramMap.subscribe(m=>{if(m.has("type")?m.get("type")===gi.Favorites?(this.currentList=gi.Favorites,this.listId="vfs"):m.get("type")===gi.Blocked?(this.currentList=gi.Blocked,this.listId="vbs"):m.get("type")===gi.History?(this.currentList=gi.History,this.listId="vhs"):(this.currentList=gi.Public,this.listId="vps"):(this.currentList=gi.Public,this.listId="vps"),pi.setDefaultTabForServerList(this.currentList),m.has("key")&&(this.currentLocalPk=m.get("key"),pi.changeCurrentPk(this.currentLocalPk),this.tabsData=pi.vpnTabsData),m.has("page")){let g=Number.parseInt(m.get("page"),10);(isNaN(g)||g<1)&&(g=1),this.currentPageInUrl=g,this.recalculateElementsToShow()}this.initialLoadStarted||(this.initialLoadStarted=!0,this.loadData(!0))}),this.currentServerSubscription=this.vpnSavedDataService.currentServerObservable.subscribe(m=>this.currentServer=m),this.backendDataSubscription=this.vpnClientService.backendState.subscribe(m=>{m&&(this.loadingBackendData=!1,this.vpnRunning=m.vpnClientAppData.running)})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.currentServerSubscription.unsubscribe(),this.backendDataSubscription.unsubscribe(),this.dataSortedSubscription&&this.dataSortedSubscription.unsubscribe(),this.dataFiltererSubscription&&this.dataFiltererSubscription.unsubscribe(),this.dataSubscription&&this.dataSubscription.unsubscribe(),this.dataFilterer&&this.dataFilterer.dispose(),this.dataSorter&&this.dataSorter.dispose()}enterManually(){JOe.openDialog(this.dialog,this.currentLocalPk)}getNoteVar(e){return e.note&&e.personalNote?"vpn.server-list.notes-info":!e.note&&e.personalNote?e.personalNote:e.note}selectServer(e){const i=this.vpnSavedDataService.getSavedVersion(e.pk,!0);if(this.snackbarService.closeCurrentIfTemporaryError(),i&&i.flag===bn.Blocked)this.snackbarService.showError("vpn.starting-blocked-server-error",{},!0);else{if(this.currentServer&&this.currentServer.pk===e.pk){if(this.vpnRunning)this.snackbarService.showWarning("vpn.server-change.already-selected-warning");else{const o=Ut.createConfirmationDialog(this.dialog,"vpn.server-change.start-same-server-confirmation");o.componentInstance.operationAccepted.subscribe(()=>{o.componentInstance.closeModal(),this.vpnClientService.start(),pi.redirectAfterServerChange(this.router,null,this.currentLocalPk)})}return}if(i&&i.usedWithPassword)return void uV.openDialog(this.dialog,!0).afterClosed().subscribe(o=>{o&&this.makeServerChange(e,"-"===o?null:o.substr(1))});this.makeServerChange(e,null)}}makeServerChange(e,i){pi.processServerChange(this.router,this.vpnClientService,this.vpnSavedDataService,this.snackbarService,this.dialog,null,this.currentLocalPk,e.originalLocalData,e.originalDiscoveryData,null,i)}openOptions(e){let i=this.vpnSavedDataService.getSavedVersion(e.pk,!0);i||(i=this.vpnSavedDataService.processFromDiscovery(e.originalDiscoveryData)),i?pi.openServerOptions(i,this.router,this.vpnSavedDataService,this.vpnClientService,this.snackbarService,this.dialog).subscribe(o=>{o&&this.processAllServers()}):this.snackbarService.showError("vpn.unexpedted-error")}loadData(e){if(this.currentList===gi.Public){const i=e?this.getLocalValue(this.persistentServerDataResponseKey):null;let o=this.vpnClientDiscoveryService.getServers();i&&(o=se(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{i||this.saveLocalValue(this.persistentServerDataResponseKey,JSON.stringify(r)),this.allServers=r.map(s=>({countryCode:s.countryCode,countryName:this.getCountryName(s.countryCode),name:s.name,customName:null,location:s.location,pk:s.pk,note:s.note,personalNote:null,originalDiscoveryData:s})),this.vpnSavedDataService.updateFromDiscovery(r),this.loading=!1,this.processAllServers(),i&&this.loadData(!1)})}else{let i;i=this.currentList===gi.History?this.vpnSavedDataService.history:this.currentList===gi.Favorites?this.vpnSavedDataService.favorites:this.vpnSavedDataService.blocked,this.dataSubscription=i.subscribe(o=>{const r=[];o.forEach(s=>{r.push({countryCode:s.countryCode,countryName:this.getCountryName(s.countryCode),name:s.name,customName:null,location:s.location,pk:s.pk,note:s.note,personalNote:null,lastUsed:s.lastUsed,inHistory:s.inHistory,flag:s.flag,originalLocalData:s})}),this.allServers=r,this.loading=!1,this.processAllServers()})}}processAllServers(){this.fillFilterPropertiesArray();const e=new Set;this.allServers.forEach((d,f)=>{e.add(d.countryCode);const m=this.vpnSavedDataService.getSavedVersion(d.pk,0===f);d.customName=m?m.customName:null,d.personalNote=m?m.personalNote:null,d.inHistory=!!m&&m.inHistory,d.flag=m?m.flag:bn.None,d.enteredManually=!!m&&m.enteredManually,d.usedWithPassword=!!m&&m.usedWithPassword});let i=[];e.forEach(d=>{i.push({label:this.getCountryName(d),value:d,image:"/assets/img/big-flags/"+d.toLowerCase()+".png"})}),i.sort((d,f)=>d.label.localeCompare(f.label)),i=[{label:"vpn.server-list.filter-dialog.country-options.any",value:""}].concat(i),this.filterProperties=[{filterName:"vpn.server-list.filter-dialog.country",keyNameInElementsArray:"countryCode",type:Mn.Select,printableLabelsForValues:i,printableLabelGeneralSettings:{defaultImage:"/assets/img/big-flags/unknown.png",imageWidth:20,imageHeight:15}}].concat(this.filterProperties);const r=[];let s,a,l;this.currentList===gi.Public?(r.push(this.countrySortData),r.push(this.nameSortData),r.push(this.locationSortData),r.push(this.pkSortData),r.push(this.noteSortData),s=0,a=1):(this.currentList===gi.History&&r.push(this.dateSortData),r.push(this.countrySortData),r.push(this.nameSortData),r.push(this.locationSortData),r.push(this.pkSortData),r.push(this.noteSortData),s=this.currentList===gi.History?0:1,a=this.currentList===gi.History?2:3),this.dataSorter=new wu(this.dialog,this.translateService,this.storageService,r,s,this.listId),this.dataSorter.setTieBreakerColumnIndex(a),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new xu(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(d=>{this.filteredServers=d,this.dataSorter.setData(this.filteredServers)}),l=this.currentList===gi.Public?this.allServers.filter(d=>d.flag!==bn.Blocked):this.allServers,this.dataFilterer.setData(l)}fillFilterPropertiesArray(){this.filterProperties=[{filterName:"vpn.server-list.filter-dialog.name",keyNameInElementsArray:"name",secondaryKeyNameInElementsArray:"customName",type:Mn.TextInput,maxlength:100},{filterName:"vpn.server-list.filter-dialog.location",keyNameInElementsArray:"location",type:Mn.TextInput,maxlength:100},{filterName:"vpn.server-list.filter-dialog.public-key",keyNameInElementsArray:"pk",type:Mn.TextInput,maxlength:100}]}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredServers){const e=this.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredServers.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.serversToShow=this.filteredServers.slice(i,i+e)}else this.serversToShow=null;this.dataSource=this.serversToShow}getCountryName(e){return rs[e.toUpperCase()]?rs[e.toUpperCase()]:e}static{this.\u0275fac=function(i){return new(i||t)(O(Nt),O(yt),O(Xo),O(Li),O(tAe),O(wc),O(Cc),O(ot),O(ri))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-vpn-server-list"]],standalone:!1,features:[_e],decls:4,vars:2,consts:[["topPart",""],[1,"d-flex","flex-column","h-100","w-100"],[1,"row"],[1,"loading-top-container"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton","localVpnKey"],[1,"main-container"],[1,"width-limiter"],[1,"center-container","mt-4.5"],[4,"ngTemplateOutlet"],[1,"h-100","loading-indicator"],[1,"option-bar-container"],[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","allow-overflow"],[1,"option-bar"],[1,"text-option","selected"],[1,"text-option",3,"routerLink"],[1,"option-bar-container","option-bar-margin",3,"ngClass"],[1,"icon-option",3,"click","matTooltip"],[3,"inline"],[1,"option-bar-container","option-bar-margin"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"transparent-50"],[1,"item"],[1,"col-12"],[1,"col-12","vpn-table-container"],[1,"center-container","mt-4.5",3,"ngClass"],[1,"rounded-elevated-box"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"box-internal-container"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table"],[1,"sortable-column","date-column","click-effect",3,"matTooltip"],[1,"sortable-column","flag-column","center","click-effect",3,"click","matTooltip"],[1,"sortable-column","name-column","click-effect",3,"click"],[1,"header-container"],[1,"header-text"],[1,"sortable-column","location-column","click-effect",3,"click"],[1,"sortable-column","pk-column","click-effect",3,"click","ngClass","matTooltip"],[1,"sortable-column","note-column","center","click-effect",3,"click","matTooltip"],[1,"actions"],[3,"ngClass"],[1,"sortable-column","date-column","click-effect",3,"click","matTooltip"],[3,"click","ngClass"],[1,"date-column"],[1,"flag-column","icon-fixer"],[1,"flag"],[3,"matTooltip"],[1,"name-column"],[3,"isCurrentServer","isFavorite","isBlocked","isInHistory","hasPassword","name","pk","customName","defaultName"],[1,"location-column"],[1,"pk-column","history-pk-column"],[1,"d-inline-block","w-100",3,"click","shortSimple","text"],[1,"center","note-column"],[1,"note-icon",3,"inline","matTooltip"],["mat-button","",1,"big-action-button","transparent-button","vpn-small-button",3,"click","matTooltip"],[1,"note-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","font-sm"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(x(0,cAe,8,7,"div",1),rt(1,kAe,31,20,"ng-template",null,0,Ul),x(3,qAe,10,13,"div",2)),2&i&&(k(o.loading||o.loadingBackendData?0:-1),c(3),k(o.loading||o.loadingBackendData?-1:3))},styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%], .note-column[_ngcontent-%COMP%], .pk-column[_ngcontent-%COMP%], .location-column[_ngcontent-%COMP%], .name-column[_ngcontent-%COMP%], .date-column[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}.center-container[_ngcontent-%COMP%]{text-align:center}.center-container[_ngcontent-%COMP%] app-paginator[_ngcontent-%COMP%]{display:inline-block}.loading-top-container[_ngcontent-%COMP%]{z-index:1}.loading-indicator[_ngcontent-%COMP%]{padding-top:30px;padding-bottom:20px}.deactivated[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.option-bar-container[_ngcontent-%COMP%]{display:inline-block}.option-bar-container[_ngcontent-%COMP%] .allow-overflow[_ngcontent-%COMP%]{overflow:visible}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%]{display:flex;margin:-17px}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > div[_ngcontent-%COMP%], .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{height:55px;line-height:55px;cursor:pointer;color:#fff;text-decoration:none;-webkit-user-select:none;user-select:none}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:hover, .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:#0003}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > .icon-option[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:inline-block}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > .icon-option[_ngcontent-%COMP%]:active span[_ngcontent-%COMP%], .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:active span[_ngcontent-%COMP%]{transform:scale(.95)}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .text-option[_ngcontent-%COMP%]{padding:0 40px;font-size:1rem}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .icon-option[_ngcontent-%COMP%]{width:55px;font-size:24px}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{background:#0000005c;cursor:unset!important}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]:hover{background:#0009}.option-bar-margin[_ngcontent-%COMP%]{margin-left:10px}.filter-label[_ngcontent-%COMP%]{font-size:.7rem;display:inline-block;padding:5px 10px;margin-bottom:7px}.filter-label[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{vertical-align:middle}table[_ngcontent-%COMP%]{width:100%}tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:2px 5px!important;font-size:12px!important;font-weight:400!important}tr[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{padding-left:5px!important;padding-right:5px!important}.date-column[_ngcontent-%COMP%]{width:150px}.name-column[_ngcontent-%COMP%]{max-width:0;width:20%}.location-column[_ngcontent-%COMP%]{max-width:0;min-width:72px}.pk-column[_ngcontent-%COMP%]{max-width:0;width:25%}.history-pk-column[_ngcontent-%COMP%]{width:20%!important}.icon-fixer[_ngcontent-%COMP%]{line-height:0px}.note-column[_ngcontent-%COMP%]{max-width:0;width:3%;min-width:60px}.note-column[_ngcontent-%COMP%] .note-icon[_ngcontent-%COMP%]{opacity:.55;font-size:16px!important;display:inline}.flag-column[_ngcontent-%COMP%]{width:1px;line-height:0px}.actions[_ngcontent-%COMP%]{width:1px}.header-container[_ngcontent-%COMP%]{max-width:100%;display:inline-flex}.header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%]{flex-grow:1}.flag[_ngcontent-%COMP%]{width:20px;height:15px;display:inline-block;margin-right:5px;background-image:url(/assets/img/big-flags/unknown.png);background-size:contain}.flag[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{width:20px;height:15px;background-size:contain}.center[_ngcontent-%COMP%]{text-align:center}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"]})}}return t})();const Rp=(t,n)=>({"small-text-icon":t,"big-text-icon":n});function KAe(t,n){if(1&t&&(h(0,"mat-icon",0),_(1,"translate"),p(2,"done"),u()),2&t){const e=y();C("ngClass",pt(5,Rp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",v(1,3,"vpn.server-conditions.selected-info"))}}function YAe(t,n){if(1&t&&(h(0,"mat-icon",1),_(1,"translate"),p(2,"clear"),u()),2&t){const e=y();C("ngClass",pt(5,Rp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",v(1,3,"vpn.server-conditions.blocked-info"))}}function XAe(t,n){if(1&t&&(h(0,"mat-icon",2),_(1,"translate"),p(2,"star"),u()),2&t){const e=y();C("ngClass",pt(5,Rp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",v(1,3,"vpn.server-conditions.favorite-info"))}}function ZAe(t,n){if(1&t&&(h(0,"mat-icon",0),_(1,"translate"),p(2,"history"),u()),2&t){const e=y();C("ngClass",pt(5,Rp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",v(1,3,"vpn.server-conditions.history-info"))}}function QAe(t,n){if(1&t&&(h(0,"mat-icon",0),_(1,"translate"),p(2,"lock_outlined"),u()),2&t){const e=y();C("ngClass",pt(5,Rp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",v(1,3,"vpn.server-conditions.has-password-info"))}}function JAe(t,n){if(1&t&&(p(0),h(1,"mat-icon",3),p(2,"fiber_manual_record"),u(),p(3)),2&t){const e=y();D(" ",e.customName," "),c(),C("inline",!0),c(2),D(" ",e.name,"\n")}}function eRe(t,n){1&t&&p(0),2&t&&D(" ",y().customName,"\n")}function tRe(t,n){1&t&&p(0),2&t&&D(" ",y().name,"\n")}function nRe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().defaultName),"\n")}let wH=(()=>{class t{constructor(){this.isCurrentServer=!1,this.isFavorite=!1,this.isBlocked=!1,this.isInHistory=!1,this.hasPassword=!1,this.name="",this.customName="",this.pk="",this.defaultName="",this.adjustIconsForBigText=!1}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=ae({type:t,selectors:[["app-vpn-server-name"]],inputs:{isCurrentServer:"isCurrentServer",isFavorite:"isFavorite",isBlocked:"isBlocked",isInHistory:"isInHistory",hasPassword:"hasPassword",name:"name",customName:"customName",pk:"pk",defaultName:"defaultName",adjustIconsForBigText:"adjustIconsForBigText"},standalone:!1,decls:9,vars:9,consts:[[1,"server-condition-icon",3,"ngClass","inline","matTooltip"],[1,"server-condition-icon","red-clear-text",3,"ngClass","inline","matTooltip"],[1,"server-condition-icon","yellow-clear-text",3,"ngClass","inline","matTooltip"],[1,"name-separator",3,"inline"]],template:function(i,o){1&i&&(x(0,KAe,3,8,"mat-icon",0),x(1,YAe,3,8,"mat-icon",1),x(2,XAe,3,8,"mat-icon",2),x(3,ZAe,3,8,"mat-icon",0),x(4,QAe,3,8,"mat-icon",0),x(5,JAe,4,3),x(6,eRe,1,1),x(7,tRe,1,1),x(8,nRe,2,3)),2&i&&(k(o.isCurrentServer?0:-1),c(),k(o.isBlocked?1:-1),c(),k(o.isFavorite?2:-1),c(),k(o.isInHistory?3:-1),c(),k(o.hasPassword?4:-1),c(),k(!o.customName||!o.name||o.pk&&o.name===o.pk?-1:5),c(),k((!o.name||o.pk&&o.name===o.pk)&&o.customName?6:-1),c(),k(!o.name||o.pk&&o.name===o.pk||o.customName?-1:7),c(),k(o.name&&(!o.pk||o.name!==o.pk)||o.customName?-1:8))},dependencies:[Ft,Ae,Et,we],styles:[".server-condition-icon[_ngcontent-%COMP%]{font-size:14px!important;line-height:14px!important;margin-right:3px;position:relative;width:14px!important;-webkit-user-select:none;user-select:none;cursor:default}.small-text-icon[_ngcontent-%COMP%]{top:2px}.big-text-icon[_ngcontent-%COMP%]{top:0}.name-separator[_ngcontent-%COMP%]{display:inline!important;font-size:8px!important;opacity:.5!important}"]})}}return t})();const xH=()=>["vpn.title"],kH=t=>({"disabled-button":t}),iRe=(t,n)=>({custom:t,original:n}),Ru=t=>({showValue:!0,showUnit:!0,showPerSecond:!0,limitDecimals:!0,useBits:t}),SH=t=>({showValue:!0,showUnit:!0,showPerSecond:!0,useBits:t}),MH=t=>({showValue:!0,showUnit:!0,useBits:t}),ey=t=>({time:t});function oRe(t,n){if(1&t&&(h(0,"div",0)(1,"div"),L(2,"app-top-bar",2),u(),L(3,"app-loading-indicator"),u()),2&t){const e=y();c(2),C("titleParts",vt(5,xH))("tabsData",e.tabsData)("selectedTabIndex",0)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk)}}function rRe(t,n){1&t&&L(0,"mat-spinner",22),2&t&&C("diameter",40)}function sRe(t,n){1&t&&(h(0,"mat-icon",23),p(1,"power_settings_new"),u()),2&t&&C("inline",!0)}function aRe(t,n){if(1&t){const e=re();h(0,"div",28),L(1,"div",29),u(),h(2,"div",30)(3,"div",31),L(4,"app-vpn-server-name",32),u(),h(5,"div",33),L(6,"app-copy-to-clipboard-text",34),u()(),h(7,"div",35),L(8,"div"),u(),h(9,"div",36)(10,"mat-icon",37),_(11,"translate"),F("click",function(){return V(e),H(y(3).openServerOptions())}),p(12,"settings"),u()()}if(2&t){const e=y(3);c(),ao("background-image: url('assets/img/big-flags/"+e.currentRemoteServer.countryCode.toLocaleLowerCase()+".png');"),C("matTooltip",e.getCountryName(e.currentRemoteServer.countryCode)),c(3),C("isFavorite",e.currentRemoteServer.flag===e.serverFlags.Favorite)("isBlocked",e.currentRemoteServer.flag===e.serverFlags.Blocked)("hasPassword",e.currentRemoteServer.usedWithPassword)("name",e.currentRemoteServer.name)("pk",e.currentRemoteServer.pk)("customName",e.currentRemoteServer.customName),c(2),C("shortSimple",!0)("text",e.currentRemoteServer.pk),c(4),C("inline",!0)("matTooltip",v(11,13,"vpn.server-options.tooltip"))}}function lRe(t,n){1&t&&(h(0,"div",25),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.status-page.no-server")))}function cRe(t,n){if(1&t&&(h(0,"div",26)(1,"mat-icon",23),p(2,"info_outline"),u(),p(3),_(4,"translate"),u()),2&t){const e=y(3);c(),C("inline",!0),c(2),D(" ",ue(4,2,e.getNoteVar(),pt(5,iRe,e.currentRemoteServer.personalNote,e.currentRemoteServer.note))," ")}}function dRe(t,n){if(1&t&&(h(0,"div",27)(1,"mat-icon",23),p(2,"cancel"),u(),p(3),_(4,"translate"),u()),2&t){const e=y(3);c(),C("inline",!0),c(2),nt(" ",v(4,3,"vpn.status-page.last-error")," ",e.backendState.vpnClientAppData.lastErrorMsg," ")}}function uRe(t,n){if(1&t){const e=re();h(0,"div",6)(1,"div",9)(2,"div",11),p(3),_(4,"translate"),u(),h(5,"div")(6,"div",18),F("click",function(){return V(e),H(y(2).start())}),h(7,"div",19),L(8,"div",20),u(),h(9,"div",19),L(10,"div",21),u(),x(11,rRe,1,1,"mat-spinner",22),x(12,sRe,2,1,"mat-icon",23),u()(),h(13,"div",24),x(14,aRe,13,15),x(15,lRe,3,3,"div",25),u(),h(16,"div"),x(17,cRe,5,8,"div",26),u(),h(18,"div"),x(19,dRe,5,5,"div",27),u()()()}if(2&t){const e=y(2);c(3),S(v(4,8,"vpn.status-page.start-title")),c(3),C("ngClass",ie(10,kH,e.showBusy)),c(5),k(e.showBusy?11:-1),c(),k(e.showBusy?-1:12),c(2),k(e.currentRemoteServer?14:-1),c(),k(e.currentRemoteServer?-1:15),c(2),k(e.currentRemoteServer&&(e.currentRemoteServer.note||e.currentRemoteServer.personalNote)?17:-1),c(2),k(e.backendState&&e.backendState.vpnClientAppData&&e.backendState.vpnClientAppData.lastErrorMsg?19:-1)}}function hRe(t,n){if(1&t&&(h(0,"div",44)(1,"mat-icon",23),p(2,"cancel"),u(),p(3),_(4,"translate"),u()),2&t){const e=y(3);c(),C("inline",!0),c(2),nt(" ",v(4,3,"vpn.status-page.last-error")," ",e.backendState.vpnClientAppData.connectionData.error," ")}}function fRe(t,n){1&t&&(h(0,"div"),L(1,"mat-spinner",22),u()),2&t&&(c(),C("diameter",24))}function pRe(t,n){1&t&&(h(0,"mat-icon",23),p(1,"power_settings_new"),u()),2&t&&C("inline",!0)}function mRe(t,n){if(1&t){const e=re();h(0,"div",7)(1,"div",9)(2,"div",38)(3,"div",39)(4,"mat-icon",23),p(5,"timer"),u(),h(6,"span"),p(7),u()()(),h(8,"div",40),p(9),_(10,"translate"),u(),h(11,"div",41)(12,"div",42),p(13),_(14,"translate"),u(),L(15,"div"),u(),h(16,"div",43),p(17),_(18,"translate"),u(),x(19,hRe,5,5,"div",44),h(20,"div",45)(21,"div",46),_(22,"translate"),h(23,"div",47),L(24,"app-line-chart",48),u(),h(25,"div",49)(26,"div",50)(27,"div",51),p(28),_(29,"autoScale"),u(),L(30,"div",52),u()(),h(31,"div",49)(32,"div",53)(33,"div",51),p(34),_(35,"autoScale"),u(),L(36,"div",52),u()(),h(37,"div",49)(38,"div",54)(39,"div",51),p(40),_(41,"autoScale"),u()()(),h(42,"div",55)(43,"mat-icon",56),p(44,"keyboard_backspace"),u(),h(45,"div",57),p(46),_(47,"autoScale"),u(),h(48,"div",58),p(49),_(50,"autoScale"),_(51,"translate"),u()()(),h(52,"div",46),_(53,"translate"),h(54,"div",47),L(55,"app-line-chart",48),u(),h(56,"div",59)(57,"div",50)(58,"div",51),p(59),_(60,"autoScale"),u(),L(61,"div",52),u()(),h(62,"div",49)(63,"div",53)(64,"div",51),p(65),_(66,"autoScale"),u(),L(67,"div",52),u()(),h(68,"div",49)(69,"div",54)(70,"div",51),p(71),_(72,"autoScale"),u()()(),h(73,"div",55)(74,"mat-icon",60),p(75,"keyboard_backspace"),u(),h(76,"div",57),p(77),_(78,"autoScale"),u(),h(79,"div",58),p(80),_(81,"autoScale"),_(82,"translate"),u()()()(),h(83,"div",61)(84,"div",62),_(85,"translate"),h(86,"div",47),L(87,"app-line-chart",63),u(),h(88,"div",59)(89,"div",50)(90,"div",51),p(91),_(92,"translate"),u(),L(93,"div",52),u()(),h(94,"div",49)(95,"div",53)(96,"div",51),p(97),_(98,"translate"),u(),L(99,"div",52),u()(),h(100,"div",49)(101,"div",54)(102,"div",51),p(103),_(104,"translate"),u()()(),h(105,"div",55)(106,"mat-icon",23),p(107,"swap_horiz"),u(),h(108,"div"),p(109),_(110,"translate"),u()()()(),h(111,"div",64),F("click",function(){return V(e),H(y(2).stop())}),h(112,"div",65)(113,"div",66),x(114,fRe,2,1,"div"),x(115,pRe,2,1,"mat-icon",23),h(116,"span"),p(117),_(118,"translate"),u()()()()()()}if(2&t){const e=y(2);c(4),C("inline",!0),c(3),S(e.connectionTimeString),c(2),S(v(10,58,"vpn.connection-info.state-title")),c(4),S(v(14,60,e.currentStateText)),c(2),Ge("state-line "+e.currentStateLineClass),c(2),S(v(18,62,e.currentStateText+"-info")),c(2),k(e.backendState&&e.backendState.vpnClientAppData&&e.backendState.vpnClientAppData.connectionData&&e.backendState.vpnClientAppData.connectionData.error?19:-1),c(2),C("matTooltip",v(22,64,"vpn.status-page.upload-info")),c(3),C("animated",!1)("data",e.sentHistory)("min",e.minUploadInGraph)("max",e.maxUploadInGraph),c(4),D(" ",ue(29,66,e.maxUploadInGraph,ie(118,Ru,e.showSpeedsInBits))," "),c(2),ao("margin-top: "+e.graphsTopInternalMargin+"px;"),c(4),D(" ",ue(35,69,e.midUploadInGraph,ie(120,Ru,e.showSpeedsInBits))," "),c(2),ao("margin-top: "+e.graphsTopInternalMargin/2+"px;"),c(4),D(" ",ue(41,72,e.minUploadInGraph,ie(122,Ru,e.showSpeedsInBits))," "),c(3),C("inline",!0),c(3),S(ue(47,75,e.uploadSpeed,ie(124,SH,e.showSpeedsInBits))),c(3),nt(" ",ue(50,78,e.totalUploaded,ie(126,MH,e.showTotalsInBits))," ",v(51,81,"vpn.status-page.total-data-label")," "),c(3),C("matTooltip",v(53,83,"vpn.status-page.download-info")),c(3),C("animated",!1)("data",e.receivedHistory)("min",e.minDownloadInGraph)("max",e.maxDownloadInGraph),c(4),D(" ",ue(60,85,e.maxDownloadInGraph,ie(128,Ru,e.showSpeedsInBits))," "),c(2),ao("margin-top: "+e.graphsTopInternalMargin+"px;"),c(4),D(" ",ue(66,88,e.midDownloadInGraph,ie(130,Ru,e.showSpeedsInBits))," "),c(2),ao("margin-top: "+e.graphsTopInternalMargin/2+"px;"),c(4),D(" ",ue(72,91,e.minDownloadInGraph,ie(132,Ru,e.showSpeedsInBits))," "),c(3),C("inline",!0),c(3),S(ue(78,94,e.downloadSpeed,ie(134,SH,e.showSpeedsInBits))),c(3),nt(" ",ue(81,97,e.totalDownloaded,ie(136,MH,e.showTotalsInBits))," ",v(82,100,"vpn.status-page.total-data-label")," "),c(4),C("matTooltip",v(85,102,"vpn.status-page.latency-info")),c(3),C("animated",!1)("data",e.latencyHistory)("min",e.minLatencyInGraph)("max",e.maxLatencyInGraph),c(4),D(" ",ue(92,104,"common."+e.getLatencyValueString(e.maxLatencyInGraph),ie(138,ey,e.getPrintableLatency(e.maxLatencyInGraph)))," "),c(2),ao("margin-top: "+e.graphsTopInternalMargin+"px;"),c(4),D(" ",ue(98,107,"common."+e.getLatencyValueString(e.midLatencyInGraph),ie(140,ey,e.getPrintableLatency(e.midLatencyInGraph)))," "),c(2),ao("margin-top: "+e.graphsTopInternalMargin/2+"px;"),c(4),D(" ",ue(104,110,"common."+e.getLatencyValueString(e.minLatencyInGraph),ie(142,ey,e.getPrintableLatency(e.minLatencyInGraph)))," "),c(3),C("inline",!0),c(3),S(ue(110,113,"common."+e.getLatencyValueString(e.latency),ie(144,ey,e.getPrintableLatency(e.latency)))),c(2),C("ngClass",ie(146,kH,e.showBusy)),c(3),k(e.showBusy?114:-1),c(),k(e.showBusy?-1:115),c(2),S(v(118,116,"vpn.status-page.disconnect"))}}function gRe(t,n){1&t&&p(0),2&t&&D(" ",y(3).currentIp," ")}function _Re(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"common.unknown")," ")}function bRe(t,n){1&t&&L(0,"mat-spinner",22),2&t&&C("diameter",20)}function vRe(t,n){1&t&&(h(0,"mat-icon",67),_(1,"translate"),p(2,"warning"),u()),2&t&&C("inline",!0)("matTooltip",v(1,2,"vpn.status-page.data.ip-problem-info"))}function yRe(t,n){if(1&t){const e=re();h(0,"mat-icon",69),_(1,"translate"),F("click",function(){return V(e),H(y(3).getIp())}),p(2,"refresh"),u()}2&t&&C("inline",!0)("matTooltip",v(1,2,"vpn.status-page.data.ip-refresh-info"))}function CRe(t,n){if(1&t&&(h(0,"div",12),x(1,gRe,1,1),x(2,_Re,2,3),x(3,bRe,1,1,"mat-spinner",22),x(4,vRe,3,4,"mat-icon",67),x(5,yRe,3,4,"mat-icon",68),u()),2&t){const e=y(2);c(),k(e.currentIp?1:-1),c(),k(e.currentIp||e.loadingCurrentIp?-1:2),c(),k(e.loadingCurrentIp?3:-1),c(),k(e.problemGettingIp?4:-1),c(),k(e.loadingCurrentIp?-1:5)}}function wRe(t,n){1&t&&(h(0,"div",12),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"vpn.status-page.data.unavailable")," "))}function xRe(t,n){1&t&&p(0),2&t&&D(" ",y(3).ipCountry," ")}function kRe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"common.unknown")," ")}function SRe(t,n){1&t&&L(0,"mat-spinner",22),2&t&&C("diameter",20)}function MRe(t,n){1&t&&(h(0,"mat-icon",67),_(1,"translate"),p(2,"warning"),u()),2&t&&C("inline",!0)("matTooltip",v(1,2,"vpn.status-page.data.ip-country-problem-info"))}function DRe(t,n){if(1&t&&(h(0,"div",12),x(1,xRe,1,1),x(2,kRe,2,3),x(3,SRe,1,1,"mat-spinner",22),x(4,MRe,3,4,"mat-icon",67),u()),2&t){const e=y(2);c(),k(e.ipCountry?1:-1),c(),k(e.ipCountry||e.loadingCurrentIp?-1:2),c(),k(e.loadingCurrentIp?3:-1),c(),k(e.problemGettingIp?4:-1)}}function TRe(t,n){1&t&&(h(0,"div",12),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"vpn.status-page.data.unavailable")," "))}function ERe(t,n){if(1&t){const e=re();h(0,"div")(1,"div",11),p(2),_(3,"translate"),u(),h(4,"div",12),L(5,"app-vpn-server-name",70),h(6,"mat-icon",69),_(7,"translate"),F("click",function(){return V(e),H(y(2).openServerOptions())}),p(8,"settings"),u()()()}if(2&t){const e=y(2);c(2),S(v(3,10,"vpn.status-page.data.server")),c(3),C("isFavorite",e.currentRemoteServer.flag===e.serverFlags.Favorite)("isBlocked",e.currentRemoteServer.flag===e.serverFlags.Blocked)("hasPassword",e.currentRemoteServer.usedWithPassword)("adjustIconsForBigText",!0)("name",e.currentRemoteServer.name)("pk",e.currentRemoteServer.pk)("customName",e.currentRemoteServer.customName),c(),C("inline",!0)("matTooltip",v(7,12,"vpn.server-options.tooltip"))}}function PRe(t,n){1&t&&L(0,"div",13)}function IRe(t,n){if(1&t&&(h(0,"div")(1,"div",11),p(2),_(3,"translate"),u(),h(4,"div",16),p(5),u()()),2&t){const e=y(2);c(2),S(v(3,2,"vpn.status-page.data.server-note")),c(3),D(" ",e.currentRemoteServer.personalNote," ")}}function ORe(t,n){1&t&&L(0,"div",13)}function ARe(t,n){if(1&t&&(h(0,"div")(1,"div",11),p(2),_(3,"translate"),u(),h(4,"div",16),p(5),u()()),2&t){const e=y(2);c(2),S(v(3,2,"vpn.status-page.data."+(e.currentRemoteServer.personalNote?"original-":"")+"server-note")),c(3),D(" ",e.currentRemoteServer.note," ")}}function RRe(t,n){1&t&&L(0,"div",13)}function FRe(t,n){if(1&t&&(h(0,"div")(1,"div",11),p(2),_(3,"translate"),u(),h(4,"div",16),L(5,"app-copy-to-clipboard-text",17),u()()),2&t){const e=y(2);c(2),S(v(3,2,"vpn.status-page.data.remote-pk")),c(3),C("text",e.currentRemoteServer.pk)}}function NRe(t,n){1&t&&L(0,"div",13)}function LRe(t,n){if(1&t&&(h(0,"div",1)(1,"div",3)(2,"div",4),L(3,"app-top-bar",2),u()(),h(4,"div",5),x(5,uRe,20,12,"div",6),x(6,mRe,119,148,"div",7),h(7,"div",8)(8,"div",9)(9,"div",10)(10,"div")(11,"div",11),p(12),_(13,"translate"),u(),x(14,CRe,6,5,"div",12),x(15,wRe,3,3,"div",12),u(),L(16,"div",13),h(17,"div")(18,"div",11),p(19),_(20,"translate"),u(),x(21,DRe,5,4,"div",12),x(22,TRe,3,3,"div",12),u(),L(23,"div",14)(24,"div",15)(25,"div",14),x(26,ERe,9,14,"div"),x(27,PRe,1,0,"div",13),x(28,IRe,6,4,"div"),x(29,ORe,1,0,"div",13),x(30,ARe,6,4,"div"),x(31,RRe,1,0,"div",13),x(32,FRe,6,4,"div"),x(33,NRe,1,0,"div",13),h(34,"div")(35,"div",11),p(36),_(37,"translate"),u(),h(38,"div",16),L(39,"app-copy-to-clipboard-text",17),u()()()()()()()),2&t){const e=y();c(3),C("titleParts",vt(29,xH))("tabsData",e.tabsData)("selectedTabIndex",0)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),c(2),k(e.showStarted?-1:5),c(),k(e.showStarted?6:-1),c(6),S(v(13,23,"vpn.status-page.data.ip")),c(2),k(e.ipInfoAllowed?14:-1),c(),k(e.ipInfoAllowed?-1:15),c(4),S(v(20,25,"vpn.status-page.data.country")),c(2),k(e.ipInfoAllowed?21:-1),c(),k(e.ipInfoAllowed?-1:22),c(4),k(e.showStarted&&e.currentRemoteServer?26:-1),c(),k(e.showStarted&&e.currentRemoteServer?27:-1),c(),k(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.personalNote?28:-1),c(),k(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.personalNote?29:-1),c(),k(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.note?30:-1),c(),k(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.note?31:-1),c(),k(e.showStarted&&e.currentRemoteServer?32:-1),c(),k(e.showStarted&&e.currentRemoteServer?33:-1),c(3),S(v(37,27,"vpn.status-page.data.local-pk")),c(3),C("text",e.currentLocalPk)}}let BRe=(()=>{class t extends Lt{constructor(e,i,o,r,s,a){super(),this.vpnClientService=e,this.vpnSavedDataService=i,this.snackbarService=o,this.route=r,this.dialog=s,this.router=a,this.persistentServerDataResponseKey="serv-dat-response",this.tabsData=pi.vpnTabsData,this.sentHistory=[0,0,0,0,0,0,0,0,0,0],this.receivedHistory=[0,0,0,0,0,0,0,0,0,0],this.latencyHistory=[0,0,0,0,0,0,0,0,0,0],this.minUploadInGraph=0,this.midUploadInGraph=0,this.maxUploadInGraph=0,this.minDownloadInGraph=0,this.midDownloadInGraph=0,this.maxDownloadInGraph=0,this.minLatencyInGraph=0,this.midLatencyInGraph=0,this.maxLatencyInGraph=0,this.graphsTopInternalMargin=Qv.topInternalMargin,this.connectionTimeString="00:00:00",this.calculatedSegs=-1,this.uploadSpeed=0,this.downloadSpeed=0,this.totalUploaded=0,this.totalDownloaded=0,this.latency=0,this.showSpeedsInBits=!0,this.showTotalsInBits=!1,this.loading=!0,this.showStartedLastValue=!1,this.showStarted=!1,this.lastAppState=null,this.showBusy=!1,this.stopRequested=!1,this.loadingCurrentIp=!0,this.problemGettingIp=!1,this.serverFlags=bn,this.ipInfoAllowed=this.vpnSavedDataService.getCheckIpSetting();const l=this.vpnSavedDataService.getDataUnitsSetting();l===er.OnlyBits?(this.showSpeedsInBits=!0,this.showTotalsInBits=!0):l===er.OnlyBytes?(this.showSpeedsInBits=!1,this.showTotalsInBits=!1):(this.showSpeedsInBits=!0,this.showTotalsInBits=!1)}ngOnInit(){return this.navigationsSubscription=this.route.paramMap.subscribe(e=>{e.has("key")&&(this.currentLocalPk=e.get("key"),pi.changeCurrentPk(this.currentLocalPk),this.tabsData=pi.vpnTabsData),setTimeout(()=>this.navigationsSubscription.unsubscribe()),this.startGettingData(!0),this.currentRemoteServerSubscription=this.vpnSavedDataService.currentServerObservable.subscribe(i=>{this.currentRemoteServer=i})}),super.ngOnInit()}startGettingData(e){const i=e?this.getLocalValue(this.persistentServerDataResponseKey):null;let o=this.vpnClientService.backendState;i&&(o=se(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{if(i||this.saveLocalValue(this.persistentServerDataResponseKey,JSON.stringify(r)),r&&r.serviceState!==Vi.PerformingInitialCheck){if(this.backendState=r,r.publicIp?(this.currentIp=r.publicIp,this.problemGettingIp=!1):this.currentIp=null,this.ipCountry=r.countryName?r.countryName:null,this.loadingCurrentIp=!1,this.showStarted=r.vpnClientAppData.running||r.vpnClientAppData.appState!==un.Stopped,this.showStartedLastValue!==this.showStarted){for(let s=0;s<10;s++)this.receivedHistory[s]=0,this.sentHistory[s]=0,this.latencyHistory[s]=0;this.updateGraphLimits(),this.uploadSpeed=0,this.downloadSpeed=0,this.totalUploaded=0,this.totalDownloaded=0,this.latency=0}if(this.lastAppState=r.vpnClientAppData.appState,this.showStartedLastValue=this.showStarted,this.stopRequested?this.showStarted||(this.stopRequested=!1,this.showBusy=r.busy):this.showBusy=r.busy,r.vpnClientAppData.connectionData){for(let s=0;s<10;s++)this.receivedHistory[s]=r.vpnClientAppData.connectionData.downloadSpeedHistory[s],this.sentHistory[s]=r.vpnClientAppData.connectionData.uploadSpeedHistory[s],this.latencyHistory[s]=r.vpnClientAppData.connectionData.latencyHistory[s];this.updateGraphLimits(),this.uploadSpeed=r.vpnClientAppData.connectionData.uploadSpeed,this.downloadSpeed=r.vpnClientAppData.connectionData.downloadSpeed,this.totalUploaded=r.vpnClientAppData.connectionData.totalUploaded,this.totalDownloaded=r.vpnClientAppData.connectionData.totalDownloaded,this.latency=r.vpnClientAppData.connectionData.latency}r.vpnClientAppData.running&&r.vpnClientAppData.appState===un.Running&&r.vpnClientAppData.connectionData&&r.vpnClientAppData.connectionData.connectionDuration?(-1===this.calculatedSegs||r.vpnClientAppData.connectionData.connectionDuration>this.calculatedSegs+2||r.vpnClientAppData.connectionData.connectionDuration{this.calculatedSegs+=1,this.refreshConnectionTimeString()})):this.timeUpdateSubscription&&(this.timeUpdateSubscription.unsubscribe(),this.timeUpdateSubscription=null,this.calculatedSegs=-1,this.connectionTimeString="00:00:00"),this.loading=!1}i&&this.startGettingData(!1)})}refreshConnectionTimeString(){const e=this.calculatedSegs%60,i=Math.floor(this.calculatedSegs/60),o=i%60,r=Math.floor(i/60);this.connectionTimeString=String(r).padStart(2,"0")+":"+String(o).padStart(2,"0")+":"+String(e).padStart(2,"0")}ngOnDestroy(){this.dataSubscription.unsubscribe(),this.navigationsSubscription.unsubscribe(),this.currentRemoteServerSubscription.unsubscribe(),this.closeOperationSubscription(),this.timeUpdateSubscription&&this.timeUpdateSubscription.unsubscribe()}start(){if(!this.currentRemoteServer)return this.router.navigate(["vpn",this.currentLocalPk,"servers"]),void setTimeout(()=>this.snackbarService.showWarning("vpn.status-page.select-server-warning"),100);this.currentRemoteServer.flag!==bn.Blocked?(this.showBusy=!0,this.vpnClientService.start()):this.snackbarService.showError("vpn.starting-blocked-server-error")}stop(){if(!this.backendState.vpnClientAppData.killswitch)return void this.finishStoppingVpn();const e=Ut.createConfirmationDialog(this.dialog,"vpn.status-page.disconnect-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.finishStoppingVpn()})}finishStoppingVpn(){this.stopRequested=!0,this.showBusy=!0,this.vpnClientService.stop()}openServerOptions(){pi.openServerOptions(this.currentRemoteServer,this.router,this.vpnSavedDataService,this.vpnClientService,this.snackbarService,this.dialog).subscribe()}getCountryName(e){return rs[e.toUpperCase()]?rs[e.toUpperCase()]:e}getNoteVar(){return this.currentRemoteServer.note&&this.currentRemoteServer.personalNote?"vpn.server-list.notes-info":!this.currentRemoteServer.note&&this.currentRemoteServer.personalNote?this.currentRemoteServer.personalNote:this.currentRemoteServer.note}getLatencyValueString(e){return pi.getLatencyValueString(e)}getPrintableLatency(e){return pi.getPrintableLatency(e)}get currentStateText(){return this.backendState.vpnClientAppData.appState===un.Stopped?"vpn.connection-info.state-disconnected":this.backendState.vpnClientAppData.appState===un.Connecting?"vpn.connection-info.state-connecting":this.backendState.vpnClientAppData.appState===un.Running?"vpn.connection-info.state-connected":this.backendState.vpnClientAppData.appState===un.ShuttingDown?"vpn.connection-info.state-disconnecting":this.backendState.vpnClientAppData.appState===un.Reconnecting?"vpn.connection-info.state-reconnecting":void 0}get currentStateLineClass(){return this.backendState.vpnClientAppData.appState===un.Stopped?"red-line":this.backendState.vpnClientAppData.appState===un.Connecting?"yellow-line":this.backendState.vpnClientAppData.appState===un.Running?"green-line":"yellow-line"}closeOperationSubscription(){this.operationSubscription&&this.operationSubscription.unsubscribe()}updateGraphLimits(){const e=this.calculateGraphLimits(this.sentHistory);this.minUploadInGraph=e[0],this.midUploadInGraph=e[1],this.maxUploadInGraph=e[2];const i=this.calculateGraphLimits(this.receivedHistory);this.minDownloadInGraph=i[0],this.midDownloadInGraph=i[1],this.maxDownloadInGraph=i[2];const o=this.calculateGraphLimits(this.latencyHistory);this.minLatencyInGraph=o[0],this.midLatencyInGraph=o[1],this.maxLatencyInGraph=o[2]}calculateGraphLimits(e){let o=0;return e.forEach(s=>{s>o&&(o=s)}),0===o&&(o+=1),[0,new vv(o).minus(0).dividedBy(2).plus(0).decimalPlaces(1).toNumber(),o]}getIp(){this.ipInfoAllowed&&(this.vpnClientService.updateData(),this.snackbarService.showDone("common.refreshed"))}static{this.\u0275fac=function(i){return new(i||t)(O(wc),O(Cc),O(ot),O(Li),O(Nt),O(yt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-vpn-status"]],standalone:!1,features:[_e],decls:2,vars:2,consts:[[1,"d-flex","flex-column","h-100","w-100"],[1,"general-container"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton","localVpnKey"],[1,"row"],[1,"col-12"],[1,"row","flex-1"],[1,"col-7","column","left-area"],[1,"col-7","column","left-area-connected"],[1,"col-5","column","right-area"],[1,"column-container"],[1,"content-area"],[1,"title"],[1,"big-text"],[1,"margin"],[1,"big-margin"],[1,"separator"],[1,"small-text"],[3,"text"],[1,"start-button",3,"click","ngClass"],[1,"start-button-img-container"],[1,"start-button-img"],[1,"start-button-img","animated-button"],[3,"diameter"],[3,"inline"],[1,"current-server"],[1,"none"],[1,"lower-text","current-server-note"],[1,"lower-text","last-error"],[1,"flag"],[3,"matTooltip"],[1,"text-container"],[1,"top-line"],["defaultName","vpn.unnamed",3,"isFavorite","isBlocked","hasPassword","name","pk","customName"],[1,"bottom-line"],[3,"shortSimple","text"],[1,"icon-button-separator"],[1,"icon-button"],[1,"transparent-button","vpn-small-button",3,"click","inline","matTooltip"],[1,"time-container"],[1,"time-content"],[1,"state-title"],[1,"d-inline-block"],[1,"state-text"],[1,"state-explanation"],[1,"last-connected-error"],[1,"data-container"],[1,"rounded-elevated-box","data-box","big-box",3,"matTooltip"],[1,"chart-container"],["height","140","color","#00000080",3,"animated","data","min","max"],[1,"chart-label"],[1,"label-container","label-top"],[1,"label"],[1,"line"],[1,"label-container","label-mid"],[1,"label-container","label-bottom"],[1,"content"],[1,"upload",3,"inline"],[1,"speed"],[1,"total"],[1,"chart-label","top-chart-label"],[1,"download",3,"inline"],[1,"latency-container"],[1,"rounded-elevated-box","data-box","small-box",3,"matTooltip"],["height","50","color","#00000080",3,"animated","data","min","max"],[1,"disconnect-button",3,"click","ngClass"],[1,"disconnect-button-container"],[1,"d-inline-flex"],[1,"small-icon","blinking",3,"inline","matTooltip"],[1,"big-icon","transparent-button","vpn-small-button",3,"inline","matTooltip"],[1,"big-icon","transparent-button","vpn-small-button",3,"click","inline","matTooltip"],["defaultName","vpn.unnamed",3,"isFavorite","isBlocked","hasPassword","adjustIconsForBigText","name","pk","customName"]],template:function(i,o){1&i&&(x(0,oRe,4,6,"div",0),x(1,LRe,40,30,"div",1)),2&i&&(k(o.loading?0:-1),c(),k(o.loading?-1:1))},dependencies:[Ft,Ae,Et,ci,cp,Qv,Qr,tr,wH,we,dp],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .bottom-line[_ngcontent-%COMP%], .left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .top-line[_ngcontent-%COMP%], .left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .none[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}.general-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%}.column[_ngcontent-%COMP%]{height:100%;display:flex;align-items:center;padding-top:40px;padding-bottom:20px}.column[_ngcontent-%COMP%] .column-container[_ngcontent-%COMP%]{width:100%;text-align:center}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%]{background:#000000b3;border-radius:100px;font-size:.8rem;padding:8px 15px;display:inline-block}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%] .time-content[_ngcontent-%COMP%]{color:#bbb}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%] .time-content[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:10px}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%] .time-content[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{vertical-align:top}.left-area-connected[_ngcontent-%COMP%] .state-title[_ngcontent-%COMP%]{font-size:1rem;color:#bbb}.left-area-connected[_ngcontent-%COMP%] .state-text[_ngcontent-%COMP%]{font-size:2rem;text-transform:uppercase}.left-area-connected[_ngcontent-%COMP%] .state-line[_ngcontent-%COMP%]{height:1px;width:100%;margin-bottom:5px}.left-area-connected[_ngcontent-%COMP%] .green-line[_ngcontent-%COMP%]{background-color:#2ecc54}.left-area-connected[_ngcontent-%COMP%] .yellow-line[_ngcontent-%COMP%]{background-color:#d48b05}.left-area-connected[_ngcontent-%COMP%] .red-line[_ngcontent-%COMP%]{background-color:#da3439}.left-area-connected[_ngcontent-%COMP%] .state-explanation[_ngcontent-%COMP%]{font-size:.7rem}.left-area-connected[_ngcontent-%COMP%] .last-connected-error[_ngcontent-%COMP%]{margin-top:15px;font-size:.8rem;color:#ff393f}.left-area-connected[_ngcontent-%COMP%] .last-connected-error[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px;display:inline;-webkit-user-select:none;user-select:none}.left-area-connected[_ngcontent-%COMP%] .data-container[_ngcontent-%COMP%]{margin-top:20px}.left-area-connected[_ngcontent-%COMP%] .latency-container[_ngcontent-%COMP%]{margin-bottom:20px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%]{cursor:default;display:inline-block}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-container[_ngcontent-%COMP%]{height:0px;position:relative;top:-3px;left:-3px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%]{height:0px;text-align:left}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%]{position:relative;top:-3px;left:-3px;display:flex;margin-right:-6px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:.6rem;margin-left:5px;opacity:.2}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%] .line[_ngcontent-%COMP%]{height:1px;width:10px;background-color:#fff;flex-grow:1;opacity:.1;margin-left:10px;margin-right:5px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-top[_ngcontent-%COMP%]{align-items:flex-start}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-mid[_ngcontent-%COMP%]{align-items:center}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-bottom[_ngcontent-%COMP%]{align-items:flex-end;position:relative;top:-6px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%]{width:170px;height:140px;margin:5px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .chart-container[_ngcontent-%COMP%]{width:170px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]{width:170px;height:140px;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;padding-bottom:20px;position:relative;top:-3px;left:-3px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:25px;transform:rotate(-90deg);width:40px;height:40px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .download[_ngcontent-%COMP%]{transform:rotate(-90deg)}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .upload[_ngcontent-%COMP%]{transform:rotate(90deg)}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .speed[_ngcontent-%COMP%]{font-size:.875rem}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .total[_ngcontent-%COMP%]{font-size:.8rem;color:#bbb}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%]{height:140px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%]{width:352px;height:50px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .chart-container[_ngcontent-%COMP%]{width:352px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]{display:inline-flex;align-items:center;height:100%;font-size:.875rem;position:relative}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;height:25px;margin-right:5px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%]{height:50px}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%]{background:linear-gradient(#940000,#7b0000) no-repeat!important;box-shadow:5px 5px 7px #00000080;width:352px;font-size:24px;display:inline-block;border-radius:10px;overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%]:hover{background:linear-gradient(#a10000,#900000) no-repeat!important}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%]:active{transform:scale(.98);box-shadow:0 0 7px #00000080}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%]{background-image:url(/assets/img/background-pattern.png);padding:12px}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:10px;align-self:center}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%]{display:inline-block;position:relative;top:4px;margin-right:10px;align-self:center}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{position:relative;top:-2px;line-height:1.7}.left-area[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:700;text-align:center;text-transform:uppercase}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]{text-align:center;margin:10px 0;cursor:pointer;display:inline-block;width:140px;height:140px}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]:active mat-icon[_ngcontent-%COMP%]{transform:scale(.9)}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]:hover .start-button-img-container[_ngcontent-%COMP%]{opacity:1}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{text-shadow:0px 0px 5px white}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .start-button-img-container[_ngcontent-%COMP%]{width:0px;height:0px;opacity:.7}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .start-button-img-container[_ngcontent-%COMP%] .start-button-img[_ngcontent-%COMP%]{display:inline-block;background-image:url(/assets/img/start-button.png);background-size:contain;width:140px;height:140px}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .start-button-img-container[_ngcontent-%COMP%] .animated-button[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_button-animation 4s linear infinite;pointer-events:none}@keyframes _ngcontent-%COMP%_button-animation{0%{transform:scale(1.5);opacity:0}25%{transform:scale(1);opacity:.8}50%{transform:scale(1.5);opacity:0}to{transform:scale(1.5);opacity:0}}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{line-height:140px;font-size:50px;-webkit-user-select:none;user-select:none;text-shadow:0px 0px 2px white}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%]{display:inline-block;margin-top:50px;opacity:.5}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%]{display:inline-flex;background:#000000b3;border-radius:10px;padding:10px 15px;max-width:280px;text-align:left}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .none[_ngcontent-%COMP%]{font-size:.875rem}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .flag[_ngcontent-%COMP%]{background-image:url(/assets/img/big-flags/unknown.png);width:20px;height:15px;background-size:contain;align-self:center;flex-shrink:0;margin-right:12px}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .flag[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{width:20px;height:15px;background-size:contain}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{overflow:hidden}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .top-line[_ngcontent-%COMP%]{font-size:.875rem}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .bottom-line[_ngcontent-%COMP%]{font-size:.7rem;color:#bbb}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button-separator[_ngcontent-%COMP%]{display:flex;align-items:center}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button-separator[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{width:1px;height:30px;background:#ffffff26;margin-left:12px}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button[_ngcontent-%COMP%]{font-size:22px;line-height:1;display:flex;align-items:center;padding-left:12px}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{cursor:pointer}.left-area[_ngcontent-%COMP%] .lower-text[_ngcontent-%COMP%]{display:inline-block;max-width:280px;margin-top:10px}.left-area[_ngcontent-%COMP%] .lower-text[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px;display:inline;-webkit-user-select:none;user-select:none}.left-area[_ngcontent-%COMP%] .current-server-note[_ngcontent-%COMP%]{font-size:.8rem;color:#bbb}.left-area[_ngcontent-%COMP%] .last-error[_ngcontent-%COMP%]{font-size:.8rem;color:#ff393f}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%]{background:#3d67a226;padding:30px;text-align:left;max-width:420px;opacity:.95}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:.8rem;color:#bbb}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%]{font-size:1.25rem;overflow-wrap:break-word}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%]{display:inline-block;opacity:.5;margin-left:5px;position:relative;top:2px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] .small-icon[_ngcontent-%COMP%]{color:#d48b05;opacity:.7;font-size:.875rem;cursor:default;margin-left:5px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] .big-icon[_ngcontent-%COMP%]{font-size:1.125rem;margin-left:5px;position:relative;top:2px;line-height:1}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .small-text[_ngcontent-%COMP%]{font-size:.7rem;margin-top:1px;overflow-wrap:break-word}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .margin[_ngcontent-%COMP%]{height:12px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-margin[_ngcontent-%COMP%]{height:15px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .separator[_ngcontent-%COMP%]{height:1px;width:100%;background:#ffffff26}.disabled-button[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}"]})}}return t})(),IM=(()=>{class t{set lastError(e){this.lastErrorInternal=e}constructor(e){this.router=e}canActivate(e,i){return this.checkIfCanActivate()}canActivateChild(e,i){return this.checkIfCanActivate()}checkIfCanActivate(){return this.lastErrorInternal?(this.router.navigate(["vpn","unavailable"],{queryParams:{problem:this.lastErrorInternal}}),se(!1)):se(!0)}static{this.\u0275fac=function(i){return new(i||t)(ce(yt))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Ga=function(t){return t.UnableToConnectWithTheVpnClientApp="unavailable",t.NoLocalVisorPkProvided="pk",t.InvalidStorageState="storage",t.LocalVisorPkChangedDuringUsage="pkChange",t}(Ga||{});let VRe=(()=>{class t extends Lt{constructor(e,i,o){super(),this.route=e,this.vpnAuthGuardService=i,this.vpnClientService=o,this.problem=null,this.navigationsSubscription=this.route.queryParamMap.subscribe(r=>{this.problem=r.get("problem"),this.problem||(this.problem=Ga.UnableToConnectWithTheVpnClientApp),this.vpnAuthGuardService.lastError=this.problem,this.vpnClientService.stopContinuallyUpdatingData(),setTimeout(()=>this.navigationsSubscription.unsubscribe())})}getTitle(){return this.problem===Ga.NoLocalVisorPkProvided?"vpn.error-page.text-pk":this.problem===Ga.InvalidStorageState?"vpn.error-page.text-storage":this.problem===Ga.LocalVisorPkChangedDuringUsage?"vpn.error-page.text-pk-change":"vpn.error-page.text"}getInfo(){return this.problem===Ga.NoLocalVisorPkProvided?"vpn.error-page.more-info-pk":this.problem===Ga.InvalidStorageState?"vpn.error-page.more-info-storage":this.problem===Ga.LocalVisorPkChangedDuringUsage?"vpn.error-page.more-info-pk-change":"vpn.error-page.more-info"}static{this.\u0275fac=function(i){return new(i||t)(O(Li),O(IM),O(wc))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-vpn-error"]],standalone:!1,features:[_e],decls:12,vars:7,consts:[[1,"main-container"],[1,"text-container"],[1,"inner-container"],[1,"error-icon"],[3,"inline"],[1,"more-info"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3)(4,"mat-icon",4),p(5,"error_outline"),u()(),h(6,"div"),p(7),_(8,"translate"),u(),h(9,"div",5),p(10),_(11,"translate"),u()()()()),2&i&&(c(4),C("inline",!0),c(3),S(v(8,3,o.getTitle())),c(3),S(v(11,5,o.getInfo())))},dependencies:[Ae,we],styles:[".main-container[_ngcontent-%COMP%]{height:100%;display:flex}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{width:100%;align-self:center;text-align:center}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .inner-container[_ngcontent-%COMP%]{max-width:550px;display:inline-block;font-size:1.25rem}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .inner-container[_ngcontent-%COMP%] .error-icon[_ngcontent-%COMP%]{font-size:80px}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .inner-container[_ngcontent-%COMP%] .more-info[_ngcontent-%COMP%]{font-size:.8rem;opacity:.75;margin-top:10px}"]})}}return t})();const HRe=["button"],URe=["firstInput"],zRe=t=>({"element-disabled":t});let jRe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.formBuilder=o,this.snackbarService=r,this.routeService=s}ngOnInit(){this.form=this.formBuilder.group({min:[this.data.minHops,Se.compose([Se.required,Se.maxLength(3),Se.pattern("^[0-9]+$")])]}),setTimeout(()=>this.firstInput.nativeElement.focus())}ngOnDestroy(){this.operationSubscription&&this.operationSubscription.unsubscribe()}get disableDismiss(){return!!this.button&&this.button.isLoading}save(){!this.form.valid||this.operationSubscription||(this.button.showLoading(),this.operationSubscription=this.routeService.setMinHops(this.data.nodePk,Number.parseInt(this.form.get("min").value,10)).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)}))}onSuccess(e){this.dialogRef.close(!0),this.snackbarService.showDone("router-config.done")}onError(e){this.button.showError(),this.operationSubscription=null,e=Ze(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Si),O(ot),O(RS))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-router-config"]],viewQuery:function(i,o){if(1&i&&st(HRe,5)(URe,5),2&i){let r;fe(r=pe())&&(o.button=r.first),fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:21,vars:22,consts:[["firstInput",""],["button",""],[3,"headline","dialog","disableDismiss"],[1,"info-container"],[3,"formGroup","ngClass"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","min","maxlength","3","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),_(1,"translate"),h(2,"div",3),p(3),_(4,"translate"),u(),h(5,"form",4)(6,"mat-form-field")(7,"div",5)(8,"label",6),p(9),_(10,"translate"),u(),L(11,"input",7,0),u(),h(13,"mat-error")(14,"span"),p(15),_(16,"translate"),u()()()(),h(17,"app-button",8,1),F("action",function(){return o.save()}),p(19),_(20,"translate"),u()()),2&i&&(C("headline",v(1,10,"router-config.title"))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),c(3),S(v(4,12,"router-config.info")),c(2),C("formGroup",o.form)("ngClass",ie(20,zRe,o.disableDismiss)),c(4),S(v(10,14,"router-config.min-hops")),c(6),S(v(16,16,"router-config.min-hops-error")),c(2),C("disabled",!o.form.valid),c(2),D(" ",v(20,18,"router-config.save-config-button")," "))},dependencies:[Ft,kn,Qt,Jt,xn,Bi,sn,_n,dn,Aa,On,Mi,Sn,we],styles:[".info-container[_ngcontent-%COMP%]{margin-bottom:10px}"]})}}return t})();const $Re=["button"],WRe=["firstInput"];let GRe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.dialogRef=e,this.data=i,this.formBuilder=o,this.snackbarService=r,this.appsService=s,this.vpnClientService=a}ngOnInit(){this.form=this.formBuilder.group({ip:[this.data.ip,Se.compose([Se.maxLength(15),this.validateIp.bind(this)])]}),setTimeout(()=>this.firstInput.nativeElement.focus())}ngOnDestroy(){this.operationSubscription&&this.operationSubscription.unsubscribe()}validateIp(){if(this.form){const e=this.form.get("ip").value;return Ut.checkIfIpValidOrEmpty(e)?null:{invalid:!0}}return null}save(){!this.form.valid||this.operationSubscription||(this.button.showLoading(),this.operationSubscription=this.appsService.changeAppSettings(this.data.nodePk,this.vpnClientService.vpnClientAppName,{dns:this.form.get("ip").value}).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)}))}onSuccess(e){this.dialogRef.close(!0),this.snackbarService.showDone("vpn.dns-config.done")}onError(e){this.button.showError(),this.operationSubscription=null,e=Ze(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(kB),O(ot),O(Hs),O(wc))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-vpn-dns-config"]],viewQuery:function(i,o){if(1&i&&st($Re,5)(WRe,5),2&i){let r;fe(r=pe())&&(o.button=r.first),fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:14,vars:11,consts:[["firstInput",""],["button",""],[3,"headline"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","ip","maxlength","15","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),_(1,"translate"),h(2,"form",3)(3,"mat-form-field")(4,"div",4)(5,"label",5),p(6),_(7,"translate"),u(),L(8,"input",6,0),u()()(),h(10,"app-button",7,1),F("action",function(){return o.save()}),p(12),_(13,"translate"),u()()),2&i&&(C("headline",v(1,5,"vpn.dns-config.title")),c(2),C("formGroup",o.form),c(4),S(v(7,7,"vpn.dns-config.ip")),c(4),C("disabled",!o.form.valid),c(2),D(" ",v(13,9,"vpn.dns-config.save-config-button")," "))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,On,Mi,Sn,we],encapsulation:2})}}return t})();const qRe=["topBarLoading"],KRe=["topBarLoaded"],DH=()=>["vpn.title"];function YRe(t,n){if(1&t&&(h(0,"div",2)(1,"div"),L(2,"app-top-bar",4,0),u(),L(4,"app-loading-indicator",5),u()),2&t){const e=y();c(2),C("titleParts",vt(5,DH))("tabsData",e.tabsData)("selectedTabIndex",2)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk)}}function XRe(t,n){1&t&&L(0,"mat-spinner",17),2&t&&C("diameter",12)}function ZRe(t,n){if(1&t){const e=re();h(0,"div",3)(1,"div",6),L(2,"app-top-bar",4,1),u(),h(4,"div",7)(5,"div",8)(6,"div",9)(7,"div",10)(8,"table",11)(9,"tr")(10,"th",12)(11,"div",13)(12,"div",14),p(13),_(14,"translate"),u()()(),h(15,"th",12),p(16),_(17,"translate"),u()(),h(18,"tr",15),F("click",function(){return V(e),H(y().changeKillswitchOption())}),h(19,"td",12)(20,"div"),p(21),_(22,"translate"),h(23,"mat-icon",16),_(24,"translate"),p(25,"help"),u()()(),h(26,"td",12),L(27,"span"),p(28),_(29,"translate"),x(30,XRe,1,1,"mat-spinner",17),u()(),h(31,"tr",15),F("click",function(){return V(e),H(y().changeGetIpOption())}),h(32,"td",12)(33,"div"),p(34),_(35,"translate"),h(36,"mat-icon",16),_(37,"translate"),p(38,"help"),u()()(),h(39,"td",12),L(40,"span"),p(41),_(42,"translate"),u()(),h(43,"tr",15),F("click",function(){return V(e),H(y().changeDataUnits())}),h(44,"td",12)(45,"div"),p(46),_(47,"translate"),h(48,"mat-icon",16),_(49,"translate"),p(50,"help"),u()()(),h(51,"td",12),p(52),_(53,"translate"),u()(),h(54,"tr",15),F("click",function(){return V(e),H(y().changeHops())}),h(55,"td",12)(56,"div"),p(57),_(58,"translate"),h(59,"mat-icon",16),_(60,"translate"),p(61,"help"),u()()(),h(62,"td",12),p(63),u()(),h(64,"tr",15),F("click",function(){return V(e),H(y().changeDns())}),h(65,"td",12)(66,"div"),p(67),_(68,"translate"),h(69,"mat-icon",16),_(70,"translate"),p(71,"help"),u()()(),h(72,"td",12),p(73),_(74,"translate"),u()()()()()()()()}if(2&t){const e=y();c(2),C("titleParts",vt(64,DH))("tabsData",e.tabsData)("selectedTabIndex",2)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),c(11),D(" ",v(14,32,"vpn.settings-page.setting-small-table-label")," "),c(3),D(" ",v(17,34,"vpn.settings-page.value-small-table-label")," "),c(5),D(" ",v(22,36,"vpn.settings-page.killswitch")," "),c(2),C("inline",!0)("matTooltip",v(24,38,"vpn.settings-page.killswitch-info")),c(4),Ge(e.getStatusClass(e.backendData.vpnClientAppData.killswitch)),c(),D(" ",v(29,40,e.getStatusText(e.backendData.vpnClientAppData.killswitch))," "),c(2),k(e.working===e.workingOptions.Killswitch?30:-1),c(4),D(" ",v(35,42,"vpn.settings-page.get-ip")," "),c(2),C("inline",!0)("matTooltip",v(37,44,"vpn.settings-page.get-ip-info")),c(4),Ge(e.getStatusClass(e.getIpOption)),c(),D(" ",v(42,46,e.getStatusText(e.getIpOption))," "),c(5),D(" ",v(47,48,"vpn.settings-page.data-units")," "),c(2),C("inline",!0)("matTooltip",v(49,50,"vpn.settings-page.data-units-info")),c(4),D(" ",v(53,52,e.getUnitsOptionText(e.dataUnitsOption))," "),c(5),D(" ",v(58,54,"vpn.settings-page.minimum-hops")," "),c(2),C("inline",!0)("matTooltip",v(60,56,"vpn.settings-page.minimum-hops-info")),c(4),D(" ",e.backendData.vpnClientAppData.minHops," "),c(4),D(" ",v(68,58,"vpn.settings-page.dns")," "),c(2),C("inline",!0)("matTooltip",v(70,60,"vpn.settings-page.dns-info")),c(4),D(" ",e.backendData.vpnClientAppData.dns?e.backendData.vpnClientAppData.dns:v(74,62,"vpn.settings-page.setting-none")," ")}}var Nc=function(t){return t[t.None=0]="None",t[t.Killswitch=1]="Killswitch",t}(Nc||{});const QRe=[{path:"",component:Vhe},{path:"login",component:tV},{path:"nodes",canActivate:[Jf],canActivateChild:[Jf],children:[{path:"",redirectTo:"list/1",pathMatch:"full"},{path:"list",redirectTo:"list/1",pathMatch:"full"},{path:"list/:page",component:yV},{path:"dmsg",redirectTo:"rewards/1",pathMatch:"full"},{path:"dmsg/:page",redirectTo:"rewards/1"},{path:"rewards",redirectTo:"rewards/1",pathMatch:"full"},{path:"rewards/:page",component:yV},{path:"services-health",component:DPe},{path:"network",component:NPe},{path:"resources",component:lIe},{path:"uptime",component:kIe},{path:"transports",component:$Ie},{path:"dmsg-settings",redirectTo:"list/1"},{path:":key",component:Me,children:[{path:"",redirectTo:"info",pathMatch:"full"},{path:"info",component:POe},{path:"routing",component:gSe},{path:"apps",component:jDe},{path:"resources",component:oTe},{path:"chat",component:_Te},{path:"bandwidth",component:OTe},{path:"uptime",component:WTe},{path:"terminal",component:KTe},{path:"web-proxy",component:e2e},{path:"logs",component:m2e},{path:"dmsg",component:rOe},{path:"transports",component:FEe},{path:"transports/:page",redirectTo:"transports"},{path:"routes",redirectTo:"routing",pathMatch:"full"},{path:"routes/:page",redirectTo:"routing"},{path:"rewards",component:tPe},{path:"skynet",component:qOe},{path:"apps-list/:showOfficialApps/:page",component:aOe}]}]},{path:"settings",canActivate:[Jf],canActivateChild:[Jf],children:[{path:"",component:Yye},{path:"labels",redirectTo:"labels/1",pathMatch:"full"},{path:"labels/:page",component:YOe}]},{path:"vpnlogin/:key",component:tV},{path:"vpn",canActivate:[IM],canActivateChild:[IM],children:[{path:"unavailable",component:VRe},{path:":key",children:[{path:"status",component:BRe},{path:"servers",redirectTo:"servers/public/1",pathMatch:"full"},{path:"servers/:type/:page",component:CH},{path:"settings",component:(()=>{class t extends Lt{constructor(e,i,o,r,s,a){super(),this.vpnClientService=e,this.snackbarService=i,this.appsService=o,this.vpnSavedDataService=r,this.dialog=s,this.loading=!0,this.tabsData=pi.vpnTabsData,this.working=Nc.None,this.workingOptions=Nc,this.navigationsSubscription=a.paramMap.subscribe(l=>{l.has("key")&&(this.currentLocalPk=l.get("key"),pi.changeCurrentPk(this.currentLocalPk),this.tabsData=pi.vpnTabsData)}),this.dataSubscription=this.vpnClientService.backendState.subscribe(l=>{l&&l.serviceState!==Vi.PerformingInitialCheck&&(this.backendData=l,this.loading=!1)}),this.getIpOption=this.vpnSavedDataService.getCheckIpSetting(),this.dataUnitsOption=this.vpnSavedDataService.getDataUnitsSetting()}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.dataSubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()}getStatusClass(e){return!0===e?"dot-green":"dot-red"}getStatusText(e){return!0===e?"vpn.settings-page.setting-on":"vpn.settings-page.setting-off"}getUnitsOptionText(e){switch(e){case er.OnlyBits:return"vpn.settings-page.data-units-modal.only-bits";case er.OnlyBytes:return"vpn.settings-page.data-units-modal.only-bytes";default:return"vpn.settings-page.data-units-modal.bits-speed-and-bytes-volume"}}changeKillswitchOption(){if(this.working===Nc.None)if(this.backendData.vpnClientAppData.running){const e=Ut.createConfirmationDialog(this.dialog,"vpn.settings-page.change-while-connected-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.finishChangingKillswitchOption()})}else this.finishChangingKillswitchOption();else this.snackbarService.showWarning("vpn.settings-page.working-warning")}finishChangingKillswitchOption(){this.working=Nc.Killswitch,this.operationSubscription=this.appsService.changeAppSettings(this.currentLocalPk,this.vpnClientService.vpnClientAppName,{killswitch:!this.backendData.vpnClientAppData.killswitch}).subscribe(()=>{this.working=Nc.None,this.vpnClientService.updateData()},e=>{this.working=Nc.None,e=Ze(e),this.snackbarService.showError(e)})}changeGetIpOption(){this.getIpOption=!this.getIpOption,this.vpnSavedDataService.setCheckIpSetting(this.getIpOption)}changeDataUnits(){const e=[],i=[];Object.keys(er).forEach(o=>{const r={label:this.getUnitsOptionText(er[o])};this.dataUnitsOption===er[o]&&(r.icon="done"),e.push(r),i.push(er[o])}),ho.openDialog(this.dialog,e,"vpn.settings-page.data-units-modal.title").afterClosed().subscribe(o=>{o&&(this.dataUnitsOption=i[o-1],this.vpnSavedDataService.setDataUnitsSetting(this.dataUnitsOption),this.topBarLoading&&this.topBarLoading.updateVpnDataStatsUnit(),this.topBarLoaded&&this.topBarLoaded.updateVpnDataStatsUnit())})}changeHops(){jRe.openDialog(this.dialog,{nodePk:this.currentLocalPk,minHops:this.backendData.vpnClientAppData.minHops}).afterClosed().subscribe()}changeDns(){GRe.openDialog(this.dialog,{nodePk:this.currentLocalPk,ip:this.backendData.vpnClientAppData.dns}).afterClosed().subscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(wc),O(ot),O(Hs),O(Cc),O(Nt),O(Li))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-vpn-settings-list"]],viewQuery:function(i,o){if(1&i&&st(qRe,5)(KRe,5),2&i){let r;fe(r=pe())&&(o.topBarLoading=r.first),fe(r=pe())&&(o.topBarLoaded=r.first)}},standalone:!1,features:[_e],decls:2,vars:2,consts:[["topBarLoading",""],["topBarLoaded",""],[1,"d-flex","flex-column","h-100","w-100"],[1,"row"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton","localVpnKey"],[1,"h-100"],[1,"col-12"],[1,"col-12","mt-4.5","vpn-table-container"],[1,"width-limiter"],[1,"rounded-elevated-box"],[1,"box-internal-container"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table"],[1,"data-column"],[1,"header-container"],[1,"header-text"],[1,"selectable",3,"click"],[1,"help-icon",3,"inline","matTooltip"],[3,"diameter"]],template:function(i,o){1&i&&(x(0,YRe,5,6,"div",2),x(1,ZRe,75,65,"div",3)),2&i&&(k(o.loading?0:-1),c(),k(o.loading?-1:1))},dependencies:[Ae,Et,ci,Qr,tr,we],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%], .data-column[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}table[_ngcontent-%COMP%]{width:100%}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-top:7px!important;padding-bottom:7px!important;font-size:12px!important;font-weight:400!important}.data-column[_ngcontent-%COMP%]{max-width:0;width:50%}.header-container[_ngcontent-%COMP%]{max-width:100%;display:inline-flex}.header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%]{flex-grow:1}mat-spinner[_ngcontent-%COMP%]{display:inline-block;opacity:.5;margin-left:2px;position:relative;top:2px}mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}"]})}}return t})()},{path:"**",redirectTo:"status"}]},{path:"**",redirectTo:"/vpn/unavailable?problem=pk"}]},{path:"**",redirectTo:""}];let JRe=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=tt({type:t})}static{this.\u0275inj=Je({imports:[x5.forRoot(QRe,{useHash:!0}),x5]})}}return t})(),tFe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ai]})}return t})(),nFe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[b4,ru,ai,Hf]})}return t})();class iFe{getTranslation(n){return Xn(Lc(995)(`./${n}.json`))}}let oFe=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=tt({type:t})}static{this.\u0275inj=Je({imports:[f5.forRoot({loader:{provide:Yf,useClass:iFe}}),f5]})}}return t})(),rFe=(()=>{class t{shouldDetach(e){return!1}store(e,i){}shouldAttach(e){return!1}retrieve(e){return null}shouldReuseRoute(e,i){return!1}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac})}}return t})();const sFe={disabled:!0};let aFe=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=tt({type:t,bootstrap:[Jr]})}static{this.\u0275inj=Je({providers:[ap,{provide:Y4,useValue:{duration:3e3,verticalPosition:"top"}},{provide:P4,useValue:{width:"600px",hasBackdrop:!0}},{provide:vS,useClass:wpe},{provide:LL,useClass:rFe},{provide:Fk,useValue:sFe},Pse(Zl(ka.LegacyInterceptors,[{provide:TN,useFactory:Cse},{provide:yf,useExisting:TN,multi:!0}]))],imports:[c3,gre,Vfe,JRe,oFe,Oue,due,pv,Spe,bMe,j4,Uue,nFe,qge,Bfe,tFe,Jme,nhe,vge,y2e]})}}return t})();(function DA(t,n,e){const i=t.\u0275cmp;i.directiveDefs=Rg(n,gI),i.pipeDefs=Rg(e,sr)})(CH,[Ft,Wd,es,Ht,Ae,Et,cp,Qr,Cv,tr,wH],[vr,we]),Cie().bootstrapModule(aFe,{applicationProviders:[function vee(t){const n=t?.scheduleInRootZone,e=function bee({ngZoneFactory:t,scheduleInRootZone:n}){return t??=()=>new Ce({...$R(),scheduleInRootZone:n}),[{provide:_m,useValue:!1},{provide:Ce,useFactory:t},{provide:fs,multi:!0,useFactory:()=>{const e=T(gee,{optional:!0});return()=>e.initialize()}},{provide:fs,multi:!0,useFactory:()=>{const e=T(yee);return()=>{e.initialize()}}},{provide:XD,useValue:n??WD}]}({ngZoneFactory:()=>{const i=$R(t);return i.scheduleInRootZone=n,i.shouldCoalesceEventChangeDetection&&Ci("NgZone_CoalesceEvent"),new Ce(i)},scheduleInRootZone:n});return Gu([{provide:_ee,useValue:!0},e])}()]}).catch(t=>console.log(t))},995(Fu,ty,Lc){var Rn={"./de.json":[229,[229]],"./de_base.json":[735,[735]],"./en.json":[473,[473]],"./es.json":[18,[18]],"./es_base.json":[434,[434]],"./pt.json":[750,[750]],"./pt_base.json":[718,[718]]};function us(Ka){if(!Lc.o(Rn,Ka))return Promise.resolve().then(()=>{var Pe=new Error("Cannot find module '"+Ka+"'");throw Pe.code="MODULE_NOT_FOUND",Pe});var Bc=Rn[Ka],Fn=Bc[0];return Lc.e(Bc[1][0]).then(()=>Lc.t(Fn,19))}us.keys=()=>Object.keys(Rn),us.id=995,Fu.exports=us}},Fu=>{Fu(Fu.s=29)}]); \ No newline at end of file diff --git a/pkg/visor/static/main.9b3d1a64bbf5d827.js b/pkg/visor/static/main.9b3d1a64bbf5d827.js deleted file mode 100644 index f1e10b56fd..0000000000 --- a/pkg/visor/static/main.9b3d1a64bbf5d827.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkskywire_manager=self.webpackChunkskywire_manager||[]).push([[792],{398(Eu,Yv,Ec){"use strict";let An=null,os=!1,Ua=1;const Rn=Symbol("SIGNAL");function Te(t){const n=An;return An=t,n}const Ic={version:0,lastCleanEpoch:0,dirty:!1,producers:void 0,producersTail:void 0,consumers:void 0,consumersTail:void 0,recomputing:!1,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:"unknown",producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Pu(t){if(os)throw new Error("");if(null===An)return;An.consumerOnSignalRead(t);const n=An.producersTail;if(void 0!==n&&n.producer===t)return;let e;const i=An.recomputing;if(i&&(e=void 0!==n?n.nextProducer:An.producers,void 0!==e&&e.producer===t))return An.producersTail=e,void(e.lastReadVersion=t.version);const o=t.consumersTail;if(void 0!==o&&o.consumer===An&&(!i||function D6(t,n){const e=n.producersTail;if(void 0!==e){let i=n.producers;do{if(i===t)return!0;if(i===e)break;i=i.nextProducer}while(void 0!==i)}return!1}(o,An)))return;const r=Ac(An),s={producer:t,consumer:An,nextProducer:e,prevConsumer:o,lastReadVersion:t.version,nextConsumer:void 0};An.producersTail=s,void 0!==n?n.nextProducer=s:An.producers=s,r&&MD(t,s)}function Iu(t){if((!Ac(t)||t.dirty)&&(t.dirty||t.lastCleanEpoch!==Ua)){if(!t.producerMustRecompute(t)&&!Ip(t))return void Pp(t);t.producerRecomputeValue(t),Pp(t)}}function kD(t){if(void 0===t.consumers)return;const n=os;os=!0;try{for(let e=t.consumers;void 0!==e;e=e.nextConsumer){const i=e.consumer;i.dirty||x6(i)}}finally{os=n}}function DD(){return!1!==An?.consumerAllowSignalWrites}function x6(t){t.dirty=!0,kD(t),t.consumerMarkedDirty?.(t)}function Pp(t){t.dirty=!1,t.lastCleanEpoch=Ua}function Oc(t){return t&&function S6(t){t.producersTail=void 0,t.recomputing=!0}(t),Te(t)}function Ou(t,n){Te(n),t&&function k6(t){t.recomputing=!1;const n=t.producersTail;let e=void 0!==n?n.nextProducer:t.producers;if(void 0!==e){if(Ac(t))do{e=Zv(e)}while(void 0!==e);void 0!==n?n.nextProducer=void 0:t.producers=void 0}}(t)}function Ip(t){for(let n=t.producers;void 0!==n;n=n.nextProducer){const e=n.producer,i=n.lastReadVersion;if(i!==e.version||(Iu(e),i!==e.version))return!0}return!1}function Au(t){if(Ac(t)){let n=t.producers;for(;void 0!==n;)n=Zv(n)}t.producers=void 0,t.producersTail=void 0,t.consumers=void 0,t.consumersTail=void 0}function MD(t,n){const e=t.consumersTail,i=Ac(t);if(void 0!==e?(n.nextConsumer=e.nextConsumer,e.nextConsumer=n):(n.nextConsumer=void 0,t.consumers=n),n.prevConsumer=e,t.consumersTail=n,!i)for(let o=t.producers;void 0!==o;o=o.nextProducer)MD(o.producer,o)}function Zv(t){const n=t.producer,e=t.nextProducer,i=t.nextConsumer,o=t.prevConsumer;if(t.nextConsumer=void 0,t.prevConsumer=void 0,void 0!==i?i.prevConsumer=o:n.consumersTail=o,void 0!==o)o.nextConsumer=i;else if(n.consumers=i,!Ac(n)){let r=n.producers;for(;void 0!==r;)r=Zv(r)}return e}function Ac(t){return t.consumerIsAlwaysLive||void 0!==t.consumers}function Jv(t,n){return Object.is(t,n)}function TD(t,n){const e=Object.create(M6);e.computation=t,void 0!==n&&(e.equal=n);const i=()=>{if(Iu(e),Pu(e),e.value===rs)throw e.error;return e.value};return i[Rn]=e,i}const za=Symbol("UNSET"),Rc=Symbol("COMPUTING"),rs=Symbol("ERRORED"),M6={...Ic,value:za,dirty:!0,error:null,equal:Jv,kind:"computed",producerMustRecompute:t=>t.value===za||t.value===Rc,producerRecomputeValue(t){if(t.value===Rc)throw new Error("");const n=t.value;t.value=Rc;const e=Oc(t);let i,o=!1;try{i=t.computation(),Te(null),o=n!==za&&n!==rs&&i!==rs&&t.equal(n,i)}catch(r){i=rs,t.error=r}finally{Ou(t,e)}o?t.value=n:(t.value=i,t.version++)}};let ED=function T6(){throw new Error};function PD(t){ED(t)}function Ap(t,n){DD()||PD(t),t.equal(t.value,n)||(t.value=n,function O6(t){t.version++,function w6(){Ua++}(),kD(t)}(t))}function ID(t,n){DD()||PD(t),Ap(t,n(t.value))}const ey={...Ic,equal:Jv,value:void 0,kind:"signal"},A6={...Ic,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,kind:"effect"};function cn(t){return"function"==typeof t}function ty(t){const e=t(i=>{Error.call(i),i.stack=(new Error).stack});return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}const ny=ty(t=>function(e){t(this),this.message=e?`${e.length} errors occurred during unsubscription:\n${e.map((i,o)=>`${o+1}) ${i.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=e});function Rp(t,n){if(t){const e=t.indexOf(n);0<=e&&t.splice(e,1)}}class pt{constructor(n){this.initialTeardown=n,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let n;if(!this.closed){this.closed=!0;const{_parentage:e}=this;if(e)if(this._parentage=null,Array.isArray(e))for(const r of e)r.remove(this);else e.remove(this);const{initialTeardown:i}=this;if(cn(i))try{i()}catch(r){n=r instanceof ny?r.errors:[r]}const{_finalizers:o}=this;if(o){this._finalizers=null;for(const r of o)try{RD(r)}catch(s){n=n??[],s instanceof ny?n=[...n,...s.errors]:n.push(s)}}if(n)throw new ny(n)}}add(n){var e;if(n&&n!==this)if(this.closed)RD(n);else{if(n instanceof pt){if(n.closed||n._hasParent(this))return;n._addParent(this)}(this._finalizers=null!==(e=this._finalizers)&&void 0!==e?e:[]).push(n)}}_hasParent(n){const{_parentage:e}=this;return e===n||Array.isArray(e)&&e.includes(n)}_addParent(n){const{_parentage:e}=this;this._parentage=Array.isArray(e)?(e.push(n),e):e?[e,n]:n}_removeParent(n){const{_parentage:e}=this;e===n?this._parentage=null:Array.isArray(e)&&Rp(e,n)}remove(n){const{_finalizers:e}=this;e&&Rp(e,n),n instanceof pt&&n._removeParent(this)}}pt.EMPTY=(()=>{const t=new pt;return t.closed=!0,t})();const OD=pt.EMPTY;function AD(t){return t instanceof pt||t&&"closed"in t&&cn(t.remove)&&cn(t.add)&&cn(t.unsubscribe)}function RD(t){cn(t)?t():t.unsubscribe()}const $a={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Fp={setTimeout(t,n,...e){const{delegate:i}=Fp;return i?.setTimeout?i.setTimeout(t,n,...e):setTimeout(t,n,...e)},clearTimeout(t){const{delegate:n}=Fp;return(n?.clearTimeout||clearTimeout)(t)},delegate:void 0};function FD(t){Fp.setTimeout(()=>{const{onUnhandledError:n}=$a;if(!n)throw t;n(t)})}function Np(){}const F6=iy("C",void 0,void 0);function iy(t,n,e){return{kind:t,value:n,error:e}}let Wa=null;function Lp(t){if($a.useDeprecatedSynchronousErrorHandling){const n=!Wa;if(n&&(Wa={errorThrown:!1,error:null}),t(),n){const{errorThrown:e,error:i}=Wa;if(Wa=null,e)throw i}}else t()}class Bp extends pt{constructor(n){super(),this.isStopped=!1,n?(this.destination=n,AD(n)&&n.add(this)):this.destination=U6}static create(n,e,i){return new Ru(n,e,i)}next(n){this.isStopped?ry(function L6(t){return iy("N",t,void 0)}(n),this):this._next(n)}error(n){this.isStopped?ry(function N6(t){return iy("E",void 0,t)}(n),this):(this.isStopped=!0,this._error(n))}complete(){this.isStopped?ry(F6,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(n){this.destination.next(n)}_error(n){try{this.destination.error(n)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const V6=Function.prototype.bind;function oy(t,n){return V6.call(t,n)}class H6{constructor(n){this.partialObserver=n}next(n){const{partialObserver:e}=this;if(e.next)try{e.next(n)}catch(i){Vp(i)}}error(n){const{partialObserver:e}=this;if(e.error)try{e.error(n)}catch(i){Vp(i)}else Vp(n)}complete(){const{partialObserver:n}=this;if(n.complete)try{n.complete()}catch(e){Vp(e)}}}class Ru extends Bp{constructor(n,e,i){let o;if(super(),cn(n)||!n)o={next:n??void 0,error:e??void 0,complete:i??void 0};else{let r;this&&$a.useDeprecatedNextContext?(r=Object.create(n),r.unsubscribe=()=>this.unsubscribe(),o={next:n.next&&oy(n.next,r),error:n.error&&oy(n.error,r),complete:n.complete&&oy(n.complete,r)}):o=n}this.destination=new H6(o)}}function Vp(t){$a.useDeprecatedSynchronousErrorHandling?function B6(t){$a.useDeprecatedSynchronousErrorHandling&&Wa&&(Wa.errorThrown=!0,Wa.error=t)}(t):FD(t)}function ry(t,n){const{onStoppedNotification:e}=$a;e&&Fp.setTimeout(()=>e(t,n))}const U6={closed:!0,next:Np,error:function j6(t){throw t},complete:Np},sy="function"==typeof Symbol&&Symbol.observable||"@@observable";function Ga(t){return t}function ND(t){return 0===t.length?Ga:1===t.length?t[0]:function(e){return t.reduce((i,o)=>o(i),e)}}let Ft=(()=>{class t{constructor(e){e&&(this._subscribe=e)}lift(e){const i=new t;return i.source=this,i.operator=e,i}subscribe(e,i,o){const r=function W6(t){return t&&t instanceof Bp||function $6(t){return t&&cn(t.next)&&cn(t.error)&&cn(t.complete)}(t)&&AD(t)}(e)?e:new Ru(e,i,o);return Lp(()=>{const{operator:s,source:a}=this;r.add(s?s.call(r,a):a?this._subscribe(r):this._trySubscribe(r))}),r}_trySubscribe(e){try{return this._subscribe(e)}catch(i){e.error(i)}}forEach(e,i){return new(i=LD(i))((o,r)=>{const s=new Ru({next:a=>{try{e(a)}catch(l){r(l),s.unsubscribe()}},error:r,complete:o});this.subscribe(s)})}_subscribe(e){var i;return null===(i=this.source)||void 0===i?void 0:i.subscribe(e)}[sy](){return this}pipe(...e){return ND(e)(this)}toPromise(e){return new(e=LD(e))((i,o)=>{let r;this.subscribe(s=>r=s,s=>o(s),()=>i(r))})}}return t.create=n=>new t(n),t})();function LD(t){var n;return null!==(n=t??$a.Promise)&&void 0!==n?n:Promise}const G6=ty(t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let ly,me=(()=>{class t extends Ft{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(e){const i=new ay(this,this);return i.operator=e,i}_throwIfClosed(){if(this.closed)throw new G6}next(e){Lp(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(e)}})}error(e){Lp(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=e;const{observers:i}=this;for(;i.length;)i.shift().error(e)}})}complete(){Lp(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:e}=this;for(;e.length;)e.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0}_trySubscribe(e){return this._throwIfClosed(),super._trySubscribe(e)}_subscribe(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)}_innerSubscribe(e){const{hasError:i,isStopped:o,observers:r}=this;return i||o?OD:(this.currentObservers=null,r.push(e),new pt(()=>{this.currentObservers=null,Rp(r,e)}))}_checkFinalizedStatuses(e){const{hasError:i,thrownError:o,isStopped:r}=this;i?e.error(o):r&&e.complete()}asObservable(){const e=new Ft;return e.source=this,e}}return t.create=(n,e)=>new ay(n,e),t})();class ay extends me{constructor(n,e){super(),this.destination=n,this.source=e}next(n){var e,i;null===(i=null===(e=this.destination)||void 0===e?void 0:e.next)||void 0===i||i.call(e,n)}error(n){var e,i;null===(i=null===(e=this.destination)||void 0===e?void 0:e.error)||void 0===i||i.call(e,n)}complete(){var n,e;null===(e=null===(n=this.destination)||void 0===n?void 0:n.complete)||void 0===e||e.call(n)}_subscribe(n){var e,i;return null!==(i=null===(e=this.source)||void 0===e?void 0:e.subscribe(n))&&void 0!==i?i:OD}}class ki extends me{constructor(n){super(),this._value=n}get value(){return this.getValue()}_subscribe(n){const e=super._subscribe(n);return!e.closed&&n.next(this._value),e}getValue(){const{hasError:n,thrownError:e,_value:i}=this;if(n)throw e;return this._throwIfClosed(),i}next(n){super.next(this._value=n)}}function cy(){return ly}function $s(t){const n=ly;return ly=t,n}const q6=Symbol("NotFound");function dy(t){return t===q6||"\u0275NotFound"===t?.name}Error;const HD="https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss";class X extends Error{code;constructor(n,e){super(co(n,e)),this.code=n}}function co(t,n){return`${function Y6(t){return`NG0${Math.abs(t)}`}(t)}${n?": "+n:""}`}const Fn=globalThis;function Tt(t){for(let n in t)if(t[n]===Tt)return n;throw Error("")}function X6(t,n){for(const e in n)n.hasOwnProperty(e)&&!t.hasOwnProperty(e)&&(t[e]=n[e])}function Ws(t){if("string"==typeof t)return t;if(Array.isArray(t))return`[${t.map(Ws).join(", ")}]`;if(null==t)return""+t;const n=t.overriddenName||t.name;if(n)return`${n}`;const e=t.toString();if(null==e)return""+e;const i=e.indexOf("\n");return i>=0?e.slice(0,i):e}function uy(t,n){return t?n?`${t} ${n}`:t:n||""}const Z6=Tt({__forward_ref__:Tt});function Nt(t){return t.__forward_ref__=Nt,t}function qe(t){return jp(t)?t():t}function jp(t){return"function"==typeof t&&t.hasOwnProperty(Z6)&&t.__forward_ref__===Nt}function te(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function Je(t){return{providers:t.providers||[],imports:t.imports||[]}}function Up(t){return function oj(t,n){return t.hasOwnProperty(n)&&t[n]||null}(t,$p)}function zp(t){return t&&t.hasOwnProperty(hy)?t[hy]:null}const $p=Tt({\u0275prov:Tt}),hy=Tt({\u0275inj:Tt});class Z{_desc;ngMetadataName="InjectionToken";\u0275prov;constructor(n,e){this._desc=n,this.\u0275prov=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.\u0275prov=te({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function py(t){return t&&!!t.\u0275providers}const jD=Tt({\u0275cmp:Tt}),dj=Tt({\u0275dir:Tt}),uj=Tt({\u0275pipe:Tt}),UD=Tt({\u0275mod:Tt}),Ya=Tt({\u0275fac:Tt}),Fu=Tt({__NG_ELEMENT_ID__:Tt}),zD=Tt({__NG_ENV_ID__:Tt});function Er(t){return Gp(t),t[UD]||null}function xt(t){return Gp(t),t[jD]||null}function Zi(t){return Gp(t),t[dj]||null}function tr(t){return Gp(t),t[uj]||null}function Gp(t,n){if(null==t)throw new X(-919,!1)}function je(t){return"string"==typeof t?t:null==t?"":String(t)}const gy=Tt({ngErrorCode:Tt}),$D=Tt({ngErrorMessage:Tt}),Nu=Tt({ngTokenPath:Tt});function _y(t,n){return WD("",-200,n)}function by(t,n){throw new X(-201,!1)}function WD(t,n,e){const i=new X(n,t);return i[gy]=n,i[$D]=t,e&&(i[Nu]=e),i}let vy;function GD(){return vy}function uo(t){const n=vy;return vy=t,n}function qD(t,n,e){const i=Up(t);return i&&"root"==i.providedIn?void 0===i.value?i.value=i.factory():i.value:8&e?null:void 0!==n?n:void by()}const Xa={};class _j{injector;constructor(n){this.injector=n}retrieve(n,e){const i=Lu(e)||0;try{return this.injector.get(n,8&i?null:Xa,i)}catch(o){if(dy(o))return o;throw o}}}function bj(t,n=0){const e=cy();if(void 0===e)throw new X(-203,!1);if(null===e)return qD(t,void 0,n);{const i=function vj(t){return{optional:!!(8&t),host:!!(1&t),self:!!(2&t),skipSelf:!!(4&t)}}(n),o=e.retrieve(t,i);if(dy(o)){if(i.optional)return null;throw o}return o}}function ce(t,n=0){return(GD()||bj)(qe(t),n)}function D(t,n){return ce(t,Lu(n))}function Lu(t){return typeof t>"u"||"number"==typeof t?t:0|(t.optional&&8)|(t.host&&1)|(t.self&&2)|(t.skipSelf&&4)}function Cy(t){const n=[];for(let e=0;eArray.isArray(e)?Bc(e,n):n(e))}function YD(t,n,e){n>=t.length?t.push(e):t.splice(n,0,e)}function qp(t,n){return n>=t.length-1?t.pop():t.splice(n,1)[0]}function Yp(t,n,e){let i=Vu(t,n);return i>=0?t[1|i]=e:(i=~i,function ZD(t,n,e,i){let o=t.length;if(o==n)t.push(e,i);else if(1===o)t.push(i,t[0]),t[0]=e;else{for(o--,t.push(t[o-1],t[o]);o>n;)t[o]=t[o-2],o--;t[n]=e,t[n+1]=i}}(t,i,n,e)),i}function wy(t,n){const e=Vu(t,n);if(e>=0)return t[1|e]}function Vu(t,n){return function wj(t,n,e){let i=0,o=t.length>>e;for(;o!==i;){const r=i+(o-i>>1),s=t[r<n?o=r:i=r+1}return~(o<{e.push(s)};return Bc(n,s=>{const a=s;Zp(a,r,[],i)&&(o||=[],o.push(a))}),void 0!==o&&JD(o,r),e}function JD(t,n){for(let e=0;e{n(r,i)})}}function Zp(t,n,e,i){if(!(t=qe(t)))return!1;let o=null,r=zp(t);const s=!r&&xt(t);if(r||s){if(s&&!s.standalone)return!1;o=t}else{const l=t.ngModule;if(r=zp(l),!r)return!1;o=l}const a=i.has(o);if(s){if(a)return!1;if(i.add(o),s.dependencies){const l="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const c of l)Zp(c,n,e,i)}}else{if(!r)return!1;{if(null!=r.imports&&!a){let c;i.add(o),Bc(r.imports,f=>{Zp(f,n,e,i)&&(c||=[],c.push(f))}),void 0!==c&&JD(c,n)}if(!a){const c=Za(o)||(()=>new o);n({provide:o,useFactory:c,deps:Yt},o),n({provide:xy,useValue:o,multi:!0},o),n({provide:ss,useValue:()=>ce(o),multi:!0},o)}const l=r.providers;if(null!=l&&!a){const c=t;ky(l,f=>{n(f,c)})}}}return o!==t&&void 0!==t.providers}function ky(t,n){for(let e of t)py(e)&&(e=e.\u0275providers),Array.isArray(e)?ky(e,n):n(e)}const kj=Tt({provide:String,useValue:Tt});function Dy(t){return null!==t&&"object"==typeof t&&kj in t}function as(t){return"function"==typeof t}const My=new Z(""),Qp={},iM={};let Ty;function Jp(){return void 0===Ty&&(Ty=new Xp),Ty}class zn{}class Qa extends zn{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(n,e,i,o){super(),this.parent=e,this.source=i,this.scopes=o,Py(n,s=>this.processProvider(s)),this.records.set(QD,Vc(void 0,this)),o.has("environment")&&this.records.set(zn,Vc(void 0,this));const r=this.records.get(My);null!=r&&"string"==typeof r.value&&this.scopes.add(r.value),this.injectorDefTypes=new Set(this.get(xy,Yt,{self:!0}))}retrieve(n,e){const i=Lu(e)||0;try{return this.get(n,Xa,i)}catch(o){if(dy(o))return o;throw o}}destroy(){ju(this),this._destroyed=!0;const n=Te(null);try{for(const i of this._ngOnDestroyHooks)i.ngOnDestroy();const e=this._onDestroyHooks;this._onDestroyHooks=[];for(const i of e)i()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),Te(n)}}onDestroy(n){return ju(this),this._onDestroyHooks.push(n),()=>this.removeOnDestroy(n)}runInContext(n){ju(this);const e=$s(this),i=uo(void 0);try{return n()}finally{$s(e),uo(i)}}get(n,e=Xa,i){if(ju(this),n.hasOwnProperty(zD))return n[zD](this);const o=Lu(i),s=$s(this),a=uo(void 0);try{if(!(4&o)){let c=this.records.get(n);if(void 0===c){const f=function Pj(t){return"function"==typeof t||"object"==typeof t&&"InjectionToken"===t.ngMetadataName}(n)&&Up(n);c=f&&this.injectableDefInScope(f)?Vc(Ey(n),Qp):null,this.records.set(n,c)}if(null!=c)return this.hydrate(n,c,o)}return(2&o?Jp():this.parent).get(n,e=8&o&&e===Xa?null:e)}catch(l){const c=function mj(t){return t[gy]}(l);throw-200===c||-201===c?new X(c,null):l}finally{uo(a),$s(s)}}resolveInjectorInitializers(){const n=Te(null),e=$s(this),i=uo(void 0);try{const r=this.get(ss,Yt,{self:!0});for(const s of r)s()}finally{$s(e),uo(i),Te(n)}}toString(){return"R3Injector[...]"}processProvider(n){let e=as(n=qe(n))?n:qe(n&&n.provide);const i=function Mj(t){return Dy(t)?Vc(void 0,t.useValue):Vc(oM(t),Qp)}(n);if(!as(n)&&!0===n.multi){let o=this.records.get(e);o||(o=Vc(void 0,Qp,!0),o.factory=()=>Cy(o.multi),this.records.set(e,o)),e=n,o.multi.push(n)}this.records.set(e,i)}hydrate(n,e,i){const o=Te(null);try{if(e.value===iM)throw _y();return e.value===Qp&&(e.value=iM,e.value=e.factory(void 0,i)),"object"==typeof e.value&&e.value&&function Ej(t){return null!==t&&"object"==typeof t&&"function"==typeof t.ngOnDestroy}(e.value)&&this._ngOnDestroyHooks.add(e.value),e.value}finally{Te(o)}}injectableDefInScope(n){if(!n.providedIn)return!1;const e=qe(n.providedIn);return"string"==typeof e?"any"===e||this.scopes.has(e):this.injectorDefTypes.has(e)}removeOnDestroy(n){const e=this._onDestroyHooks.indexOf(n);-1!==e&&this._onDestroyHooks.splice(e,1)}}function Ey(t){const n=Up(t),e=null!==n?n.factory:Za(t);if(null!==e)return e;if(t instanceof Z)throw new X(-204,!1);if(t instanceof Function)return function Dj(t){if(t.length>0)throw new X(-204,!1);const e=function rj(t){return(t?.[$p]??null)||null}(t);return null!==e?()=>e.factory(t):()=>new t}(t);throw new X(-204,!1)}function oM(t,n,e){let i;if(as(t)){const o=qe(t);return Za(o)||Ey(o)}if(Dy(t))i=()=>qe(t.useValue);else if(function tM(t){return!(!t||!t.useFactory)}(t))i=()=>t.useFactory(...Cy(t.deps||[]));else if(function eM(t){return!(!t||!t.useExisting)}(t))i=(o,r)=>ce(qe(t.useExisting),void 0!==r&&8&r?8:void 0);else{const o=qe(t&&(t.useClass||t.provide));if(!function Tj(t){return!!t.deps}(t))return Za(o)||Ey(o);i=()=>new o(...Cy(t.deps))}return i}function ju(t){if(t.destroyed)throw new X(-205,!1)}function Vc(t,n,e=!1){return{factory:t,value:n,multi:e?[]:void 0}}function Py(t,n){for(const e of t)Array.isArray(e)?Py(e,n):e&&py(e)?Py(e.\u0275providers,n):n(e)}function Qi(t,n){let e;t instanceof Qa?(ju(t),e=t):e=new _j(t);const o=$s(e),r=uo(void 0);try{return n()}finally{$s(o),uo(r)}}function Iy(){return void 0!==GD()||null!=cy()}function Dn(t){return Array.isArray(t)&&"object"==typeof t[1]}function Ji(t){return Array.isArray(t)&&!0===t[1]}function sM(t){return!!(4&t.flags)}function Ir(t){return t.componentOffset>-1}function $c(t){return!(1&~t.flags)}function ir(t){return!!t.template}function Ks(t){return!!(512&t[2])}function us(t){return!(256&~t[2])}function gi(t){for(;Array.isArray(t);)t=t[0];return t}function Wc(t,n){return gi(n[t])}function Zn(t,n){return gi(n[t.index])}function Gc(t,n){return t.data[n]}function il(t,n){return t[n]}function eo(t,n){const e=n[t];return Dn(e)?e:e[0]}function Fy(t){return!(128&~t[2])}function Li(t,n){return null==n?null:t[n]}function hM(t){t[17]=0}function fM(t){1024&t[2]||(t[2]|=1024,Fy(t)&&qc(t))}function im(t){return!!(9216&t[2]||t[24]?.dirty)}function Ny(t){t[10].changeDetectionScheduler?.notify(8),64&t[2]&&(t[2]|=1024),im(t)&&qc(t)}function qc(t){t[10].changeDetectionScheduler?.notify(0);let n=hs(t);for(;null!==n&&!(8192&n[2])&&(n[2]|=8192,Fy(n));)n=hs(n)}function om(t,n){if(us(t))throw new X(911,!1);null===t[21]&&(t[21]=[]),t[21].push(n)}function hs(t){const n=t[3];return Ji(n)?n[3]:n}function mM(t){return t[7]??=[]}function gM(t){return t.cleanup??=[]}const Be={lFrame:IM(null),bindingsEnabled:!0,skipHydrationRootTNode:null};let Vy=!1;function _M(){Be.lFrame.elementDepthCount--}function Hy(){return Be.bindingsEnabled}function bM(){return null!==Be.skipHydrationRootTNode}function vM(t){return Be.skipHydrationRootTNode===t}function yM(){Be.skipHydrationRootTNode=null}function ne(){return Be.lFrame.lView}function ze(){return Be.lFrame.tView}function j(t){return Be.lFrame.contextLView=t,t[8]}function U(t){return Be.lFrame.contextLView=null,t}function Ve(){let t=CM();for(;null!==t&&64===t.type;)t=t.parent;return t}function CM(){return Be.lFrame.currentTNode}function fs(t,n){const e=Be.lFrame;e.currentTNode=t,e.isParent=n}function wM(){return Be.lFrame.isParent}function xM(){Be.lFrame.isParent=!1}function DM(){return Vy}function rm(t){const n=Vy;return Vy=t,n}function Bi(){const t=Be.lFrame;let n=t.bindingRootIndex;return-1===n&&(n=t.bindingRootIndex=t.tView.bindingStartIndex),n}function ps(){return Be.lFrame.bindingIndex}function ho(){return Be.lFrame.bindingIndex++}function ms(t){const n=Be.lFrame,e=n.bindingIndex;return n.bindingIndex=n.bindingIndex+t,e}function zj(t,n){const e=Be.lFrame;e.bindingIndex=e.bindingRootIndex=t,jy(n)}function jy(t){Be.lFrame.currentDirectiveIndex=t}function zy(){return Be.lFrame.currentQueryIndex}function sm(t){Be.lFrame.currentQueryIndex=t}function Wj(t){const n=t[1];return 2===n.type?n.declTNode:1===n.type?t[5]:null}function EM(t,n,e){if(4&e){let o=n,r=t;for(;!(o=o.parent,null!==o||1&e||(o=Wj(r),null===o||(r=r[14],10&o.type))););if(null===o)return!1;n=o,t=r}const i=Be.lFrame=PM();return i.currentTNode=n,i.lView=t,!0}function $y(t){const n=PM(),e=t[1];Be.lFrame=n,n.currentTNode=e.firstChild,n.lView=t,n.tView=e,n.contextLView=t,n.bindingIndex=e.bindingStartIndex,n.inI18n=!1}function PM(){const t=Be.lFrame,n=null===t?null:t.child;return null===n?IM(t):n}function IM(t){const n={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=n),n}function OM(){const t=Be.lFrame;return Be.lFrame=t.parent,t.currentTNode=null,t.lView=null,t}const AM=OM;function Wy(){const t=OM();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 Di(){return Be.lFrame.selectedIndex}function ol(t){Be.lFrame.selectedIndex=t}function or(){const t=Be.lFrame;return Gc(t.tView,t.selectedIndex)}function rl(){Be.lFrame.currentNamespace="svg"}function Gy(){!function Kj(){Be.lFrame.currentNamespace=null}()}let RM=!0;function am(){return RM}function $u(t){RM=t}function FM(t,n=null,e=null,i){const o=NM(t,n,e);return o.resolveInjectorInitializers(),o}function NM(t,n=null,e=null,i,o=new Set){const r=[e||Yt,Sj(t)];return new Qa(r,n||Jp(),null,o)}class He{static THROW_IF_NOT_FOUND=Xa;static NULL=new Xp;static create(n,e){if(Array.isArray(n))return FM({name:""},e,n);{const i=n.name??"";return FM({name:i},n.parent,n.providers)}}static \u0275prov=te({token:He,providedIn:"any",factory:()=>ce(QD)});static __NG_ELEMENT_ID__=-1}const et=new Z("");let rr=(()=>class t{static __NG_ELEMENT_ID__=Xj;static __NG_ENV_ID__=e=>e})();class LM extends rr{_lView;constructor(n){super(),this._lView=n}get destroyed(){return us(this._lView)}onDestroy(n){const e=this._lView;return om(e,n),()=>function Ly(t,n){if(null===t[21])return;const e=t[21].indexOf(n);-1!==e&&t[21].splice(e,1)}(e,n)}}function Xj(){return new LM(ne())}const BM=!1,Zj=new Z("");let Ys=(()=>{class t{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new ki(!1);debugTaskTracker=D(Zj,{optional:!0});get hasPendingTasks(){return!this.destroyed&&this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new Ft(e=>{e.next(!1),e.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);const e=this.taskId++;return this.pendingTasks.add(e),this.debugTaskTracker?.add(e),e}has(e){return this.pendingTasks.has(e)}remove(e){this.pendingTasks.delete(e),this.debugTaskTracker?.remove(e),0===this.pendingTasks.size&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})();const we=class Qj extends me{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(n=!1){super(),this.__isAsync=n,Iy()&&(this.destroyRef=D(rr,{optional:!0})??void 0,this.pendingTasks=D(Ys,{optional:!0})??void 0)}emit(n){const e=Te(null);try{super.next(n)}finally{Te(e)}}subscribe(n,e,i){let o=n,r=e||(()=>null),s=i;if(n&&"object"==typeof n){const l=n;o=l.next?.bind(l),r=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(r=this.wrapInTimeout(r),o&&(o=this.wrapInTimeout(o)),s&&(s=this.wrapInTimeout(s)));const a=super.subscribe({next:o,error:r,complete:s});return n instanceof pt&&n.add(a),a}wrapInTimeout(n){return e=>{const i=this.pendingTasks?.add();setTimeout(()=>{try{n(e)}finally{void 0!==i&&this.pendingTasks?.remove(i)}})}}};function lm(...t){}function VM(t){let n,e;function i(){t=lm;try{void 0!==e&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(e),void 0!==n&&clearTimeout(n)}catch{}}return n=setTimeout(()=>{t(),i()}),"function"==typeof requestAnimationFrame&&(e=requestAnimationFrame(()=>{t(),i()})),()=>i()}function Jj(t){return queueMicrotask(()=>t()),()=>{t=lm}}const qy="isAngularZone",cm=qy+"_ID";let eU=0;class _e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new we(!1);onMicrotaskEmpty=new we(!1);onStable=new we(!1);onError=new we(!1);constructor(n){const{enableLongStackTrace:e=!1,shouldCoalesceEventChangeDetection:i=!1,shouldCoalesceRunChangeDetection:o=!1,scheduleInRootZone:r=BM}=n;if(typeof Zone>"u")throw new X(908,!1);Zone.assertZonePatched();const s=this;s._nesting=0,s._outer=s._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(s._inner=s._inner.fork(new Zone.TaskTrackingZoneSpec)),e&&Zone.longStackTraceZoneSpec&&(s._inner=s._inner.fork(Zone.longStackTraceZoneSpec)),s.shouldCoalesceEventChangeDetection=!o&&i,s.shouldCoalesceRunChangeDetection=o,s.callbackScheduled=!1,s.scheduleInRootZone=r,function iU(t){const n=()=>{!function nU(t){function n(){VM(()=>{t.callbackScheduled=!1,Yy(t),t.isCheckStableRunning=!0,Ky(t),t.isCheckStableRunning=!1})}t.isCheckStableRunning||t.callbackScheduled||(t.callbackScheduled=!0,t.scheduleInRootZone?Zone.root.run(()=>{n()}):t._outer.run(()=>{n()}),Yy(t))}(t)},e=eU++;t._inner=t._inner.fork({name:"angular",properties:{[qy]:!0,[cm]:e,[cm+e]:!0},onInvokeTask:(i,o,r,s,a,l)=>{if(function rU(t){return UM(t,"__ignore_ng_zone__")}(l))return i.invokeTask(r,s,a,l);try{return HM(t),i.invokeTask(r,s,a,l)}finally{(t.shouldCoalesceEventChangeDetection&&"eventTask"===s.type||t.shouldCoalesceRunChangeDetection)&&n(),jM(t)}},onInvoke:(i,o,r,s,a,l,c)=>{try{return HM(t),i.invoke(r,s,a,l,c)}finally{t.shouldCoalesceRunChangeDetection&&!t.callbackScheduled&&!function sU(t){return UM(t,"__scheduler_tick__")}(l)&&n(),jM(t)}},onHasTask:(i,o,r,s)=>{i.hasTask(r,s),o===r&&("microTask"==s.change?(t._hasPendingMicrotasks=s.microTask,Yy(t),Ky(t)):"macroTask"==s.change&&(t.hasPendingMacrotasks=s.macroTask))},onHandleError:(i,o,r,s)=>(i.handleError(r,s),t.runOutsideAngular(()=>t.onError.emit(s)),!1)})}(s)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get(qy)}static assertInAngularZone(){if(!_e.isInAngularZone())throw new X(909,!1)}static assertNotInAngularZone(){if(_e.isInAngularZone())throw new X(909,!1)}run(n,e,i){return this._inner.run(n,e,i)}runTask(n,e,i,o){const r=this._inner,s=r.scheduleEventTask("NgZoneEvent: "+o,n,tU,lm,lm);try{return r.runTask(s,e,i)}finally{r.cancelTask(s)}}runGuarded(n,e,i){return this._inner.runGuarded(n,e,i)}runOutsideAngular(n){return this._outer.run(n)}}const tU={};function Ky(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 Yy(t){t.hasPendingMicrotasks=!!(t._hasPendingMicrotasks||(t.shouldCoalesceEventChangeDetection||t.shouldCoalesceRunChangeDetection)&&!0===t.callbackScheduled)}function HM(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function jM(t){t._nesting--,Ky(t)}class oU{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new we;onMicrotaskEmpty=new we;onStable=new we;onError=new we;run(n,e,i){return n.apply(e,i)}runGuarded(n,e,i){return n.apply(e,i)}runOutsideAngular(n){return n()}runTask(n,e,i,o){return n.apply(e,i)}}function UM(t,n){return!(!Array.isArray(t)||1!==t.length)&&!0===t[0]?.data?.[n]}class sl{_console=console;handleError(n){this._console.error("ERROR",n)}}const Or=new Z("",{factory:()=>{const t=D(_e),n=D(zn);let e;return i=>{t.runOutsideAngular(()=>{n.destroyed&&!e?setTimeout(()=>{throw i}):(e??=n.get(sl),e.handleError(i))})}}}),aU={provide:ss,useValue:()=>{D(sl,{optional:!0})},multi:!0};function yt(t,n){const[e,i,o]=function P6(t,n){const e=Object.create(ey);e.value=t,void 0!==n&&(e.equal=n);const i=()=>function I6(t){return Pu(t),t.value}(e);return i[Rn]=e,[i,s=>Ap(e,s),s=>ID(e,s)]}(t,n?.equal),r=e;return r.set=i,r.update=o,r.asReadonly=Xy.bind(r),r}function Xy(){const t=this[Rn];if(void 0===t.readonlyFn){const n=()=>this();n[Rn]=t,t.readonlyFn=n}return t.readonlyFn}let dm=(()=>class t{view;node;constructor(e,i){this.view=e,this.node=i}static __NG_ELEMENT_ID__=cU})();function cU(){return new dm(ne(),Ve())}class al{}const um=new Z("",{factory:()=>!0}),zM=new Z("");let hm=(()=>{class t{internalPendingTasks=D(Ys);scheduler=D(al);errorHandler=D(Or);add(){const e=this.internalPendingTasks.add();return()=>{this.internalPendingTasks.has(e)&&(this.scheduler.notify(11),this.internalPendingTasks.remove(e))}}run(e){const i=this.add();e().catch(this.errorHandler).finally(i)}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})(),$M=(()=>{class t{static \u0275prov=te({token:t,providedIn:"root",factory:()=>new dU})}return t})();class dU{dirtyEffectCount=0;queues=new Map;add(n){this.enqueue(n),this.schedule(n)}schedule(n){n.dirty&&this.dirtyEffectCount++}remove(n){const i=this.queues.get(n.zone);i.has(n)&&(i.delete(n),n.dirty&&this.dirtyEffectCount--)}enqueue(n){const e=n.zone;this.queues.has(e)||this.queues.set(e,new Set);const i=this.queues.get(e);i.has(n)||i.add(n)}flush(){for(;this.dirtyEffectCount>0;){let n=!1;for(const[e,i]of this.queues)n||=null===e?this.flushQueue(i):e.run(()=>this.flushQueue(i));n||(this.dirtyEffectCount=0)}}flushQueue(n){let e=!1;for(const i of n)i.dirty&&(this.dirtyEffectCount--,e=!0,i.run());return e}}class Zy{[Rn];constructor(n){this[Rn]=n}destroy(){this[Rn].destroy()}}function fm(t,n){const e=n?.injector??D(He);let o,i=!0!==n?.manualCleanup?e.get(rr):null;const r=e.get(dm,null,{optional:!0}),s=e.get(al);return null!==r?(o=function fU(t,n,e){const i=Object.create(hU);return i.view=t,i.zone=typeof Zone<"u"?Zone.current:null,i.notifier=n,i.fn=GM(i,e),t[23]??=new Set,t[23].add(i),i.consumerMarkedDirty(i),i}(r.view,s,t),i instanceof LM&&i._lView===r.view&&(i=null)):o=function pU(t,n,e){const i=Object.create(uU);return i.fn=GM(i,t),i.scheduler=n,i.notifier=e,i.zone=typeof Zone<"u"?Zone.current:null,i.scheduler.add(i),i.notifier.notify(12),i}(t,e.get($M),s),o.injector=e,null!==i&&(o.onDestroyFns=[i.onDestroy(()=>o.destroy())]),new Zy(o)}const WM={...A6,cleanupFns:void 0,zone:null,onDestroyFns:null,run(){const t=rm(!1);try{!function R6(t){if(t.dirty=!1,t.version>0&&!Ip(t))return;t.version++;const n=Oc(t);try{t.cleanup(),t.fn()}finally{Ou(t,n)}}(this)}finally{rm(t)}},cleanup(){if(!this.cleanupFns?.length)return;const t=Te(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],Te(t)}}},uU={...WM,consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(Au(this),null!==this.onDestroyFns)for(const t of this.onDestroyFns)t();this.cleanup(),this.scheduler.remove(this)}},hU={...WM,consumerMarkedDirty(){this.view[2]|=8192,qc(this.view),this.notifier.notify(13)},destroy(){if(Au(this),null!==this.onDestroyFns)for(const t of this.onDestroyFns)t();this.cleanup(),this.view[23]?.delete(this)}};function GM(t,n){return()=>{n(e=>(t.cleanupFns??=[]).push(e))}}let qM=null;function Xs(){return qM}class gU{}let pm=(()=>{class t{historyGo(e){throw new Error("")}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>D(bU),providedIn:"platform"})}return t})();const _U=new Z("");let bU=(()=>{class t extends pm{_location;_history;_doc=D(et);constructor(){super(),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Xs().getBaseHref(this._doc)}onPopState(e){const i=Xs().getGlobalEventTarget(this._doc,"window");return i.addEventListener("popstate",e,!1),()=>i.removeEventListener("popstate",e)}onHashChange(e){const i=Xs().getGlobalEventTarget(this._doc,"window");return i.addEventListener("hashchange",e,!1),()=>i.removeEventListener("hashchange",e)}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(e){this._location.pathname=e}pushState(e,i,o){this._history.pushState(e,i,o)}replaceState(e,i,o){this._history.replaceState(e,i,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(e=0){this._history.go(e)}getState(){return this._history.state}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>new t,providedIn:"platform"})}return t})();function KM(t,n){n=encodeURIComponent(n);for(const e of t.split(";")){const i=e.indexOf("="),[o,r]=-1==i?[e,""]:[e.slice(0,i),e.slice(i+1)];if(o.trim()===n)return decodeURIComponent(r)}return null}class YM{}const XM="browser";let ZM=(()=>{class t{static \u0275prov=te({token:t,providedIn:"root",factory:()=>new DU(D(et),window)})}return t})();class DU{document;window;offset=()=>[0,0];constructor(n,e){this.document=n,this.window=e}setOffset(n){this.offset=Array.isArray(n)?()=>n:n}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(n,e){this.window.scrollTo({...e,left:n[0],top:n[1]})}scrollToAnchor(n,e){const i=function MU(t,n){const e=t.getElementById(n)||t.getElementsByName(n)[0];if(e)return e;if("function"==typeof t.createTreeWalker&&t.body&&"function"==typeof t.body.attachShadow){const i=t.createTreeWalker(t.body,NodeFilter.SHOW_ELEMENT);let o=i.currentNode;for(;o;){const r=o.shadowRoot;if(r){const s=r.getElementById(n)||r.querySelector(`[name="${n}"]`);if(s)return s}o=i.nextNode()}}return null}(this.document,n);i&&(this.scrollToElement(i,e),i.focus())}setHistoryScrollRestoration(n){try{this.window.history.scrollRestoration=n}catch{console.warn(co(2400,!1))}}scrollToElement(n,e){const i=n.getBoundingClientRect(),o=i.left+this.window.pageXOffset,r=i.top+this.window.pageYOffset,s=this.offset();this.window.scrollTo({...e,left:o-s[0],top:r-s[1]})}}function lT(t,n,e,i,o,r,s){try{var a=t[r](s),l=a.value}catch(c){return void e(c)}a.done?n(l):Promise.resolve(l).then(i,o)}function Et(t){return function(){var n=this,e=arguments;return new Promise(function(i,o){var r=t.apply(n,e);function s(l){lT(r,i,o,s,a,"next",l)}function a(l){lT(r,i,o,s,a,"throw",l)}s(void 0)})}}function Mn(t){return n=>{if(function tz(t){return cn(t?.lift)}(n))return n.lift(function(e){try{return t(e,this)}catch(i){this.error(i)}});throw new TypeError("Unable to lift unknown Observable type")}}function dn(t,n,e,i,o){return new nz(t,n,e,i,o)}class nz extends Bp{constructor(n,e,i,o,r,s){super(n),this.onFinalize=r,this.shouldUnsubscribe=s,this._next=e?function(a){try{e(a)}catch(l){n.error(l)}}:super._next,this._error=o?function(a){try{o(a)}catch(l){n.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=i?function(){try{i()}catch(a){n.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var n;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:e}=this;super.unsubscribe(),!e&&(null===(n=this.onFinalize)||void 0===n||n.call(this))}}}function Se(t,n){return Mn((e,i)=>{let o=0;e.subscribe(dn(i,r=>{i.next(t.call(n,r,o++))}))})}function gs(t){return{toString:t}.toString()}function CT(t,n,e,i){null!==n?n.applyValueToInputSignal(n,i):t[e]=i}class Rz{previousValue;currentValue;firstChange;constructor(n,e,i){this.previousValue=n,this.currentValue=e,this.firstChange=i}isFirstChange(){return this.firstChange}}const _i=(()=>{const t=()=>wT;return t.ngInherit=!0,t})();function wT(t){return t.type.prototype.ngOnChanges&&(t.setInput=Nz),Fz}function Fz(){const t=ST(this),n=t?.current;if(n){const e=t.previous;if(e===Pr)t.previous=n;else for(let i in n)e[i]=n[i];t.current=null,this.ngOnChanges(n)}}function Nz(t,n,e,i,o){const r=this.declaredInputs[i],s=ST(t)||function Lz(t,n){return t[xT]=n}(t,{previous:Pr,current:null}),a=s.current||(s.current={}),l=s.previous,c=l[r];a[r]=new Rz(c&&c.currentValue,e,l===Pr),CT(t,n,o,e)}const xT="__ngSimpleChanges__";function ST(t){return t[xT]||null}const dl=[],Lt=function(t,n=null,e){for(let i=0;i=i)break}else n[l]<0&&(t[17]+=65536),(a>14>16&&(3&t[2])===n&&(t[2]+=16384,MT(a,r)):MT(a,r)}class Qu{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(n,e,i,o){this.factory=n,this.name=o,this.canSeeViewProviders=e,this.injectImpl=i}}function ET(t){return 3===t||4===t||6===t}function PT(t){return 64===t.charCodeAt(0)}function td(t,n){if(null!==n&&0!==n.length)if(null===t||0===t.length)t=n.slice();else{let e=-1;for(let i=0;in){s=r-1;break}}}for(;r>16}(t),i=n;for(;e>0;)i=i[14],e--;return i}let uC=!0;function Dm(t){const n=uC;return uC=t,n}let qz=0;const Rr={};function Mm(t,n){const e=RT(t,n);if(-1!==e)return e;const i=n[1];i.firstCreatePass&&(t.injectorIndex=n.length,hC(i.data,t),hC(n,null),hC(i.blueprint,null));const o=Tm(t,n),r=t.injectorIndex;if(dC(o)){const s=Ju(o),a=eh(o,n),l=a[1].data;for(let c=0;c<8;c++)n[r+c]=a[s+c]|l[s+c]}return n[r+8]=o,r}function hC(t,n){t.push(0,0,0,0,0,0,0,0,n)}function RT(t,n){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null===n[t.injectorIndex+8]?-1:t.injectorIndex}function Tm(t,n){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;let e=0,i=null,o=n;for(;null!==o;){if(i=jT(o),null===i)return-1;if(e++,o=o[14],-1!==i.injectorIndex)return i.injectorIndex|e<<16}return-1}function fC(t,n,e){!function Kz(t,n,e){let i;"string"==typeof e?i=e.charCodeAt(0)||0:e.hasOwnProperty(Fu)&&(i=e[Fu]),null==i&&(i=e[Fu]=qz++);const o=255&i;n.data[t+(o>>5)]|=1<=0?255&n:Qz:n}(e);if("function"==typeof r){if(!EM(n,t,i))return 1&i?FT(o,0,i):NT(n,e,i,o);try{let s;if(s=r(i),null!=s||8&i)return s;by()}finally{AM()}}else if("number"==typeof r){let s=null,a=RT(t,n),l=-1,c=1&i?n[15][5]:null;for((-1===a||4&i)&&(l=-1===a?Tm(t,n):n[a+8],-1!==l&&HT(i,!1)?(s=n[1],a=Ju(l),n=eh(l,n)):a=-1);-1!==a;){const f=n[1];if(VT(r,a,f.data)){const m=Xz(a,n,e,s,i,c);if(m!==Rr)return m}l=n[a+8],-1!==l&&HT(i,n[1].data[a+8]===c)&&VT(r,a,n)?(s=f,a=Ju(l),n=eh(l,n)):a=-1}}return o}function Xz(t,n,e,i,o,r){const s=n[1],a=s.data[t+8],f=Em(a,s,e,null==i?Ir(a)&&uC:i!=s&&!!(3&a.type),1&o&&r===a);return null!==f?th(n,s,f,a,o):Rr}function Em(t,n,e,i,o){const r=t.providerIndexes,s=n.data,a=1048575&r,l=t.directiveStart,f=r>>20,g=o?a+f:t.directiveEnd;for(let _=i?a:a+f;_=l&&w.type===e)return _}if(o){const _=s[l];if(_&&ir(_)&&_.type===e)return l}return null}function th(t,n,e,i,o){let r=t[e];const s=n.data;if(r instanceof Qu){const a=r;if(a.resolving)throw _y();const l=Dm(a.canSeeViewProviders);a.resolving=!0;const m=a.injectImpl?uo(a.injectImpl):null;EM(t,i,0);try{r=t[e]=a.factory(void 0,o,s,t,i),n.firstCreatePass&&e>=i.directiveStart&&function jz(t,n,e){const{ngOnChanges:i,ngOnInit:o,ngDoCheck:r}=n.type.prototype;if(i){const s=wT(n);(e.preOrderHooks??=[]).push(t,s),(e.preOrderCheckHooks??=[]).push(t,s)}o&&(e.preOrderHooks??=[]).push(0-t,o),r&&((e.preOrderHooks??=[]).push(t,r),(e.preOrderCheckHooks??=[]).push(t,r))}(e,s[e],n)}finally{null!==m&&uo(m),Dm(l),a.resolving=!1,AM()}}return r}function VT(t,n,e){return!!(e[n+(t>>5)]&1<{const n=t.prototype.constructor,e=n[Ya]||pC(n),i=Object.prototype;let o=Object.getPrototypeOf(t.prototype).constructor;for(;o&&o!==i;){const r=o[Ya]||pC(o);if(r&&r!==e)return r;o=Object.getPrototypeOf(o)}return r=>new r})}function pC(t){return jp(t)?()=>{const n=pC(qe(t));return n&&n()}:Za(t)}function jT(t){const n=t[1],e=n.type;return 2===e?n.declTNode:1===e?t[5]:null}function nh(t){return function Yz(t,n){if("class"===n)return t.classes;if("style"===n)return t.styles;const e=t.attrs;if(e){const i=e.length;let o=0;for(;oclass t{nativeElement;constructor(e){this.nativeElement=e}static __NG_ELEMENT_ID__=a7})();function GT(t){return t instanceof Re?t.nativeElement:t}function l7(){return this._results[Symbol.iterator]()}class id{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new me}constructor(n=!1){this._emitDistinctChangesOnly=n}get(n){return this._results[n]}map(n){return this._results.map(n)}filter(n){return this._results.filter(n)}find(n){return this._results.find(n)}reduce(n,e){return this._results.reduce(n,e)}forEach(n){this._results.forEach(n)}some(n){return this._results.some(n)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(n,e){this.dirty=!1;const i=function Ao(t){return t.flat(Number.POSITIVE_INFINITY)}(n);(this._changesDetected=!function Cj(t,n,e){if(t.length!==n.length)return!1;for(let i=0;iR7}),R7="ng",u2=new Z(""),wC=new Z("",{providedIn:"platform",factory:()=>"unknown"}),Rm=new Z(""),xC=new Z("",{factory:()=>D(et).body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null}),j7=new Z("",{factory:()=>!1}),W7=new Z("");function Vm(t){return!(32&~t.flags)}function V2(t,n){const e=t.contentQueries;if(null!==e){const i=Te(null);try{for(let o=0;ot,createScript:t=>t,createScriptURL:t=>t})}catch{}return Gm}()?.createHTML(t)||t}function G2(t){return function UC(){if(void 0===qm&&(qm=null,Fn.trustedTypes))try{qm=Fn.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return qm}()?.createScriptURL(t)||t}class hl{changingThisBreaksApplicationSecurity;constructor(n){this.changingThisBreaksApplicationSecurity=n}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${HD})`}}class C9 extends hl{getTypeName(){return"HTML"}}class w9 extends hl{getTypeName(){return"Style"}}class x9 extends hl{getTypeName(){return"Script"}}class S9 extends hl{getTypeName(){return"URL"}}class k9 extends hl{getTypeName(){return"ResourceURL"}}function Mo(t){return t instanceof hl?t.changingThisBreaksApplicationSecurity:t}function Fr(t,n){const e=function D9(t){return t instanceof hl&&t.getTypeName()||null}(t);if(null!=e&&e!==n){if("ResourceURL"===e&&"URL"===n)return!0;throw new Error(`Required a safe ${n}, got a ${e} (see ${HD})`)}return e===n}class O9{inertDocumentHelper;constructor(n){this.inertDocumentHelper=n}getInertBodyElement(n){n=""+n;try{const e=(new window.DOMParser).parseFromString(rd(n),"text/html").body;return null===e?this.inertDocumentHelper.getInertBodyElement(n):(e.firstChild?.remove(),e)}catch{return null}}}class A9{defaultDoc;inertDocument;constructor(n){this.defaultDoc=n,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(n){const e=this.inertDocument.createElement("template");return e.innerHTML=rd(n),e}}const F9=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function ch(t){return(t=String(t)).match(F9)?t:"unsafe:"+t}function Nr(t){const n={};for(const e of t.split(","))n[e]=!0;return n}function sd(...t){const n={};for(const e of t)for(const i in e)e.hasOwnProperty(i)&&(n[i]=!0);return n}const K2=Nr("area,br,col,hr,img,wbr"),Y2=Nr("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),X2=Nr("rp,rt"),zC=sd(K2,sd(Y2,Nr("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),sd(X2,Nr("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),sd(X2,Y2)),$C=Nr("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),WC=sd($C,Nr("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),Nr("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext")),N9=Nr("script,style,template");class L9{sanitizedSomething=!1;buf=[];sanitizeChildren(n){let e=n.firstChild,i=!0,o=[];for(;e;)if(e.nodeType===Node.ELEMENT_NODE?i=this.startElement(e):e.nodeType===Node.TEXT_NODE?this.chars(e.nodeValue):this.sanitizedSomething=!0,i&&e.firstChild)o.push(e),e=H9(e);else for(;e;){e.nodeType===Node.ELEMENT_NODE&&this.endElement(e);let r=V9(e);if(r){e=r;break}e=o.pop()}return this.buf.join("")}startElement(n){const e=Z2(n).toLowerCase();if(!zC.hasOwnProperty(e))return this.sanitizedSomething=!0,!N9.hasOwnProperty(e);this.buf.push("<"),this.buf.push(e);const i=n.attributes;for(let o=0;o"),!0}endElement(n){const e=Z2(n).toLowerCase();zC.hasOwnProperty(e)&&!K2.hasOwnProperty(e)&&(this.buf.push(""))}chars(n){this.buf.push(J2(n))}}function V9(t){const n=t.nextSibling;if(n&&t!==n.previousSibling)throw Q2(n);return n}function H9(t){const n=t.firstChild;if(n&&function B9(t,n){return(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}(t,n))throw Q2(n);return n}function Z2(t){const n=t.nodeName;return"string"==typeof n?n:"FORM"}function Q2(t){return new Error(`Failed to sanitize html because the element is clobbered: ${t.outerHTML}`)}const j9=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,U9=/([^\#-~ |!])/g;function J2(t){return t.replace(/&/g,"&").replace(j9,function(n){return"&#"+(1024*(n.charCodeAt(0)-55296)+(n.charCodeAt(1)-56320)+65536)+";"}).replace(U9,function(n){return"&#"+n.charCodeAt(0)+";"}).replace(//g,">")}let Km;function eE(t,n){let e=null;try{Km=Km||function q2(t){const n=new A9(t);return function R9(){try{return!!(new window.DOMParser).parseFromString(rd(""),"text/html")}catch{return!1}}()?new O9(n):n}(t);let i=n?String(n):"";e=Km.getInertBodyElement(i);let o=5,r=i;do{if(0===o)throw new Error("Failed to sanitize html because the input is unstable");o--,i=r,r=e.innerHTML,e=Km.getInertBodyElement(i)}while(i!==r);return rd((new L9).sanitizeChildren(qC(e)||e))}finally{if(e){const i=qC(e)||e;for(;i.firstChild;)i.firstChild.remove()}}}function qC(t){return"content"in t&&function z9(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}const $9=/^>|^->||--!>|)/g;function YC(t,n){return t.createComment(function tE(t){return t.replace($9,n=>n.replace(W9,"\u200b$1\u200b"))}(n))}function Ym(t,n,e){return t.createElement(n,e)}function fl(t,n,e,i,o){t.insertBefore(n,e,i,o)}function iE(t,n,e){t.appendChild(n,e)}function oE(t,n,e,i,o){null!==i?fl(t,n,e,i,o):iE(t,n,e)}function dh(t,n,e,i){t.removeChild(null,n,e,i)}function sE(t,n,e){const{mergedAttrs:i,classes:o,styles:r}=e;null!==i&&function Wz(t,n,e){let i=0;for(;i-1){let r;for(;++or?"":o[f+1].toLowerCase(),2&i&&c!==m){if(sr(i))return!1;s=!0}}}}else{if(!s&&!sr(i)&&!sr(l))return!1;if(s&&sr(l))continue;s=!1,i=l|1&i}}return sr(i)||s}function sr(t){return!(1&t)}function _$(t,n,e,i){if(null===n)return-1;let o=0;if(i||!e){let r=!1;for(;o-1)for(e++;e0?'="'+a+'"':"")+"]"}else 8&i?o+="."+s:4&i&&(o+=" "+s);else""!==o&&!sr(s)&&(n+=mE(r,o),o=""),i=s,r=r||!sr(i);e++}return""!==o&&(n+=mE(r,o)),n}const At={};function QC(t,n,e,i,o,r,s,a,l,c,f){const m=27+i,g=m+o,_=function k$(t,n){const e=[];for(let i=0;i{class t{impl=null;execute(){this.impl?.execute()}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})();const xE=[0,1,2,3];let SE=(()=>{class t{ngZone=D(_e);scheduler=D(al);errorHandler=D(sl,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){D(oa,{optional:!0})}execute(){const e=this.sequences.size>0;e&&Lt(ge.AfterRenderHooksStart),this.executing=!0;for(const i of xE)for(const o of this.sequences)if(!o.erroredOrDestroyed&&o.hooks[i])try{o.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>(0,o.hooks[i])(o.pipelinedValue),o.snapshot))}catch(r){o.erroredOrDestroyed=!0,this.errorHandler?.handleError(r)}this.executing=!1;for(const i of this.sequences)i.afterRun(),i.once&&(this.sequences.delete(i),i.destroy());for(const i of this.deferredRegistrations)this.sequences.add(i);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),e&&Lt(ge.AfterRenderHooksEnd)}register(e){const{view:i}=e;void 0!==i?((i[25]??=[]).push(e),qc(i),i[2]|=8192):this.executing?this.deferredRegistrations.add(e):this.addSequence(e)}addSequence(e){this.sequences.add(e),this.scheduler.notify(7)}unregister(e){this.executing&&this.sequences.has(e)?(e.erroredOrDestroyed=!0,e.pipelinedValue=void 0,e.once=!0):(this.sequences.delete(e),this.deferredRegistrations.delete(e))}maybeTrace(e,i){return i?i.run(d1.AFTER_NEXT_RENDER,e):e()}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})();class kE{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(n,e,i,o,r,s=null){this.impl=n,this.hooks=e,this.view=i,this.once=o,this.snapshot=s,this.unregisterOnDestroy=r?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();const n=this.view?.[25];n&&(this.view[25]=n.filter(e=>e!==this))}}function Vi(t,n){const e=n?.injector??D(He);return vi("NgAfterNextRender"),function DE(t,n,e,i){const o=n.get(u1);o.impl??=n.get(SE);const r=n.get(oa,null,{optional:!0}),s=!0!==e?.manualCleanup?n.get(rr):null,a=n.get(dm,null,{optional:!0}),l=new kE(o.impl,function U$(t){return t instanceof Function?[void 0,void 0,t,void 0]:[t.earlyRead,t.write,t.mixedReadWrite,t.read]}(t),a?.view,i,s,r?.snapshot(null));return o.impl.register(l),l}(t,e,n,!0)}const og=new Z("",{factory:()=>({queue:new Set,isScheduled:!1,scheduler:null,injector:D(zn)})});function ME(t,n,e){const i=t.get(og);if(Array.isArray(n))for(const o of n)i.queue.add(o),e?.detachedLeaveAnimationFns?.push(o);else i.queue.add(n),e?.detachedLeaveAnimationFns?.push(n);i.scheduler&&i.scheduler(t)}function TE(t,n,e,i){const o=t?.[26]?.enter;null!==n&&o&&o.has(e.index)&&function h1(t,n){for(const[e,i]of n)ME(t,i.animateFns)}(i,o)}function cd(t,n,e,i,o,r,s,a){if(null!=o){let l,c=!1;Ji(o)?l=o:Dn(o)&&(c=!0,o=o[0]);const f=gi(o);0===t&&null!==i?(TE(a,i,r,e),null==s?iE(n,i,f):fl(n,i,f,s||null,!0)):1===t&&null!==i?(TE(a,i,r,e),fl(n,i,f,s||null,!0),function R$(t,n){const e=fh.get(t);if(!e||0===e.length)return;const i=n.parentNode,o=n.previousSibling;for(let r=e.length-1;r>=0;r--){const s=e[r],a=s.parentNode;s===n?(e.splice(r,1),o1.add(s),s.dispatchEvent(new CustomEvent("animationend",{detail:{cancel:!0}}))):(o&&s===o||a&&i&&a!==i)&&(e.splice(r,1),s.dispatchEvent(new CustomEvent("animationend",{detail:{cancel:!0}})),s.parentNode?.removeChild(s))}}(r,f)):2===t?(a?.[26]?.leave?.has(r.index)&&function s1(t,n){const e=fh.get(t);e?e.includes(n)||e.push(n):fh.set(t,[n])}(r,f),IE(a,r,e,m=>{o1.has(f)?o1.delete(f):dh(n,f,c,m)})):3===t&&IE(a,r,e,()=>{n.destroyNode(f)}),null!=l&&function Z$(t,n,e,i,o,r,s){const a=i[7];a!==gi(i)&&cd(n,t,e,r,a,o,s);for(let c=10;c=0?i[a]():i[-a].unsubscribe(),s+=2}else e[s].call(i[e[s+1]]);null!==i&&(n[7]=null);const o=n[21];if(null!==o){n[21]=null;for(let s=0;s{if(o.leave&&o.leave.has(n.index)){const s=o.leave.get(n.index),a=[];if(s){for(let l=0;l{t[26].running=void 0,bl.delete(t[19]),n(!0)}):n(!1)}(t,i)}else t&&bl.delete(t[19]),i(!1)},o)}function m1(t,n,e){return function OE(t,n,e){let i=n;for(;null!==i&&168&i.type;)i=(n=i).parent;if(null===i)return e[0];if(Ir(i)){const{encapsulation:o}=t.data[i.directiveStart+i.componentOffset];if(o===No.None||o===No.Emulated)return null}return Zn(i,e)}(t,n.parent,e)}function AE(t,n,e){return FE(t,n,e)}let FE=function RE(t,n,e){return 40&t.type?Zn(t,e):null};function _1(t,n,e,i){const o=m1(t,i,n),r=n[11],a=AE(i.parent||n[5],i,n);if(null!=o)if(Array.isArray(e))for(let l=0;l27&&_E(t,n,27,!1),Lt(s?ge.TemplateUpdateStart:ge.TemplateCreateStart,o,e),e(i,o)}finally{ol(r),Lt(s?ge.TemplateUpdateEnd:ge.TemplateCreateEnd,o,e)}}function ag(t,n,e){(function iW(t,n,e){const i=e.directiveStart,o=e.directiveEnd;Ir(e)&&function D$(t,n,e){const i=Zn(n,t),o=function gE(t){const n=t.tView;return null===n||n.incompleteFirstPass?t.tView=QC(1,null,t.template,t.decls,t.vars,t.directiveDefs,t.pipeDefs,t.viewQuery,t.schemas,t.consts,t.id):n}(e),r=t[10].rendererFactory,s=e1(t,Zm(t,o,null,JC(e),i,n,null,r.createRenderer(i,e),null,null,null));t[n.index]=s}(n,e,t.data[i+e.componentOffset]),t.firstCreatePass||Mm(e,n);const r=e.initialInputs;for(let s=i;snull;function y1(t,n,e,i,o,r){ug(t,n[1],n,e,i)?Ir(t)&&jE(n,t.index):(3&t.type&&(e=function nW(t){return"class"===t?"className":"for"===t?"htmlFor":"formaction"===t?"formAction":"innerHtml"===t?"innerHTML":"readonly"===t?"readOnly":"tabindex"===t?"tabIndex":t}(e)),C1(t,n,e,i,o,r))}function C1(t,n,e,i,o,r){if(3&t.type){const s=Zn(t,n);i=null!=r?r(i,t.value||"",e):i,o.setProperty(s,e,i)}}function jE(t,n){const e=eo(n,t);16&e[2]||(e[2]|=64)}function rW(t,n){null!==t.hostBindings&&t.hostBindings(1,n)}function w1(t,n){const e=t.directiveRegistry;let i=null;if(e)for(let o=0;o{qc(t.lView)},consumerOnSignalRead(){this.lView[24]=this}},bW={...Ic,consumerIsAlwaysLive:!0,kind:"template",consumerMarkedDirty:t=>{let n=hs(t.lView);for(;n&&!GE(n[1]);)n=hs(n);n&&fM(n)},consumerOnSignalRead(){this.lView[24]=this}};function GE(t){return 2!==t.type}function qE(t){if(null===t[23])return;let n=!0;for(;n;){let e=!1;for(const i of t[23])i.dirty&&(e=!0,null===i.zone||Zone.current===i.zone?i.run():i.zone.run(()=>i.run()));n=e&&!!(8192&t[2])}}function fg(t,n=0){const i=t[10].rendererFactory;i.begin?.();try{!function yW(t,n){const e=DM();try{rm(!0),S1(t,n);let i=0;for(;im(t);){if(100===i)throw new X(103,!1);i++,S1(t,1)}}finally{rm(e)}}(t,n)}finally{i.end?.()}}function KE(t,n,e,i){if(us(n))return;const o=n[2];$y(n);let a=!0,l=null,c=null;GE(t)?(c=function fW(t){return t[24]??function pW(t){const n=WE.pop()??Object.create(gW);return n.lView=t,n}(t)}(n),l=Oc(c)):null===function Xv(){return An}()?(a=!1,c=function _W(t){const n=t[24]??Object.create(bW);return n.lView=t,n}(n),l=Oc(c)):n[24]&&(Au(n[24]),n[24]=null);try{hM(n),function MM(t){return Be.lFrame.bindingIndex=t}(t.bindingStartIndex),null!==e&&VE(t,n,e,2,i);const f=!(3&~o);if(f){const _=t.preOrderCheckHooks;null!==_&&Sm(n,_,null)}else{const _=t.preOrderHooks;null!==_&&km(n,_,0,null),lC(n,0)}if(function CW(t){for(let n=n2(t);null!==n;n=i2(n)){if(!(2&n[2]))continue;const e=n[9];for(let i=0;i0&&(e[o-1][4]=n),i0&&(t[e-1][4]=i[4]);const r=qp(t,10+n);!function EE(t,n){PE(t,n),n[0]=null,n[5]=null}(i[1],i);const s=r[18];null!==s&&s.detachView(r[1]),i[3]=null,i[4]=null,i[2]&=-129}return i}function eP(t,n){const e=t[9],i=n[3];(Dn(i)||n[15]!==i[3][15])&&(t[2]|=2),null===e?t[9]=[n]:e.push(n)}class bh{_lView;_cdRefInjectingView;_appRef=null;_attachedToViewContainer=!1;exhaustive;get rootNodes(){const n=this._lView,e=n[1];return gh(e,n,e.firstChild,[])}constructor(n,e){this._lView=n,this._cdRefInjectingView=e}get context(){return this._lView[8]}set context(n){this._lView[8]=n}get destroyed(){return us(this._lView)}destroy(){if(this._appRef)this._appRef.detachView(this);else if(this._attachedToViewContainer){const n=this._lView[3];if(Ji(n)){const e=n[8],i=e?e.indexOf(this):-1;i>-1&&(_h(n,i),qp(e,i))}this._attachedToViewContainer=!1}mh(this._lView[1],this._lView)}onDestroy(n){om(this._lView,n)}markForCheck(){hd(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[2]&=-129}reattach(){Ny(this._lView),this._lView[2]|=128}detectChanges(){this._lView[2]|=1024,fg(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new X(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;const n=Ks(this._lView),e=this._lView[16];null!==e&&!n&&f1(e,this._lView),PE(this._lView[1],this._lView)}attachToAppRef(n){if(this._attachedToViewContainer)throw new X(902,!1);this._appRef=n;const e=Ks(this._lView),i=this._lView[16];null!==i&&!e&&eP(i,this._lView),Ny(this._lView)}}let Ti=(()=>class t{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=kW;constructor(e,i,o){this._declarationLView=e,this._declarationTContainer=i,this.elementRef=o}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,i){return this.createEmbeddedViewImpl(e,i)}createEmbeddedViewImpl(e,i,o){const r=ud(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:i,dehydratedView:o});return new bh(r)}})();function kW(){return pg(Ve(),ne())}function pg(t,n){return 4&t.type?new Ti(n,t,nd(t,n)):null}function Cl(t,n,e,i,o){let r=t.data[n];if(null===r)r=function E1(t,n,e,i,o){const r=CM(),s=wM(),l=t.data[n]=function RW(t,n,e,i,o,r){let s=n?n.injectorIndex:-1,a=0;return bM()&&(a|=128),{type:e,index:i,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:a,providerIndexes:0,value:o,attrs:r,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:n,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}(0,s?r:r&&r.parent,e,n,i,o);return function AW(t,n,e,i){null===t.firstChild&&(t.firstChild=n),null!==e&&(i?null==e.child&&null!==n.parent&&(e.child=n):null===e.next&&(e.next=n,n.prev=e))}(t,l,r,s),l}(t,n,e,i,o),function Uj(){return Be.lFrame.inI18n}()&&(r.flags|=32);else if(64&r.type){r.type=e,r.value=i,r.attrs=o;const s=function zu(){const t=Be.lFrame,n=t.currentTNode;return t.isParent?n:n.parent}();r.injectorIndex=null===s?-1:s.injectorIndex}return fs(r,!0),r}function vP(t,n){let e=0,i=t.firstChild;if(i){const o=t.data.r;for(;eclass t{destroyNode=null;static __NG_ELEMENT_ID__=()=>function bG(){const t=ne(),e=eo(Ve().index,t);return(Dn(e)?e:t)[11]}()})(),vG=(()=>{class t{static \u0275prov=te({token:t,providedIn:"root",factory:()=>null})}return t})();const L1={};class md{injector;parentInjector;constructor(n,e){this.injector=n,this.parentInjector=e}get(n,e,i){const o=this.injector.get(n,L1,i);return o!==L1||e===L1?o:this.parentInjector.get(n,e,i)}}function Sg(t,n,e){let i=e?t.styles:null,o=e?t.classes:null,r=0;if(null!==n)for(let s=0;s0&&(e.directiveToIndex=new Map);for(let g=0;g0;){const e=t[--n];if("number"==typeof e&&e<0)return e}return 0})(s)!=a&&s.push(a),s.push(e,i,r)}}(t,n,i,hh(t,e,o.hostVars,At),o)}function PG(t,n,e){if(e){if(n.exportAs)for(let i=0;il?a[l]:null}"string"==typeof s&&(r+=2)}return null}(n,e,r,t.index)),null!==f)(f.__ngLastListenerFn__||f).__ngNextListenerFn__=s,f.__ngLastListenerFn__=s,c=!0;else{const m=Zn(t,e),g=i?i(m):m,_=o.listen(g,r,a);(function FG(t){return t.startsWith("animation")||t.startsWith("transition")})(r)||RP(i?k=>i(gi(k[t.index])):t.index,n,e,r,a,_,!1)}return c}function RP(t,n,e,i,o,r,s){const a=n.firstCreatePass?gM(n):null,l=mM(e),c=l.length;l.push(o,r),a&&a.push(i,t,c,(c+1)*(s?-1:1))}function _d(t,n,e,i,o,r){const a=n[1],m=n[e][a.data[e].outputs[i]].subscribe(r);RP(t.index,a,n,o,r,m,!0)}const _s=Symbol("BINDING");function z1(t){return t.debugInfo?.className||t.type.name||null}class UP extends wg{ngModule;constructor(n){super(),this.ngModule=n}resolveComponentFactory(n){const e=xt(n);return new Th(e,this.ngModule)}}class Th extends kP{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=function qG(t){return Object.keys(t).map(n=>{const[e,i,o]=t[n],r={propName:e,templateName:n,isSignal:0!==(i&Qm.SignalBased)};return o&&(r.transform=o),r})}(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=function KG(t){return Object.keys(t).map(n=>({propName:t[n],templateName:n}))}(this.componentDef.outputs),this.cachedOutputs}constructor(n,e){super(),this.componentDef=n,this.ngModule=e,this.componentType=n.type,this.selector=function x$(t){return t.map(w$).join(",")}(n.selectors),this.ngContentSelectors=n.ngContentSelectors??[],this.isBoundToModule=!!e}create(n,e,i,o,r,s){Lt(ge.DynamicComponentStart);const a=Te(null);try{const l=this.componentDef,c=function YG(t,n,e){let i=n instanceof zn?n:n?.injector;return i&&null!==t.getStandaloneInjector&&(i=t.getStandaloneInjector(i)||i),i?new md(e,i):e}(l,o||this.ngModule,n),f=function XG(t){const n=t.get(Lo,null);if(null===n)throw new X(407,!1);return{rendererFactory:n,sanitizer:t.get(vG,null),changeDetectionScheduler:t.get(al,null),ngReflect:!1,tracingService:t.get(oa,null,{optional:!0})}}(c),m=f.tracingService;return m&&m.componentCreate?m.componentCreate(z1(l),()=>this.createComponentRef(f,c,e,i,r,s)):this.createComponentRef(f,c,e,i,r,s)}finally{Te(a)}}createComponentRef(n,e,i,o,r,s){const a=this.componentDef,l=function JG(t,n,e,i){const o=t?["ng-version","21.2.4"]:function S$(t){const n=[],e=[];let i=1,o=2;for(;i{if(1&e&&t)for(const i of t)i.create();if(2&e&&n)for(const i of n)i.update()}:null}(r,s),1,a,l,null,null,null,[o],null)}(o,a,s,r),c=n.rendererFactory.createRenderer(null,a),f=o?function J$(t,n,e,i){const r=i.get(j7,!1)||e===No.ShadowDom||e===No.ExperimentalIsolatedShadowDom,s=t.selectRootElement(n,r);return function eW(t){HE(t)}(s),s}(c,o,a.encapsulation,e):function ZG(t,n){const e=function QG(t){return(t.selectors[0][0]||"div").toLowerCase()}(t);return Ym(n,e,"svg"===e?"svg":"math"===e?"math":null)}(a,c),m=s?.some(zP)||r?.some(w=>"function"!=typeof w&&w.bindings.some(zP)),g=Zm(null,l,null,512|JC(a),null,null,n,c,e,null,null);g[27]=f,$y(g);let _=null;try{const w=V1(27,g,2,"#host",()=>l.directiveRegistry,!0,0);sE(c,f,w),po(f,g),ag(l,g,w),VC(l,w,g),H1(l,w),void 0!==i&&function nq(t,n,e){const i=t.projection=[];for(let o=0;oclass t{static __NG_ELEMENT_ID__=iq})();function iq(){return WP(Ve(),ne())}class $1 extends Ei{_lContainer;_hostTNode;_hostLView;constructor(n,e,i){super(),this._lContainer=n,this._hostTNode=e,this._hostLView=i}get element(){return nd(this._hostTNode,this._hostLView)}get injector(){return new Bn(this._hostTNode,this._hostLView)}get parentInjector(){const n=Tm(this._hostTNode,this._hostLView);if(dC(n)){const e=eh(n,this._hostLView),i=Ju(n);return new Bn(e[1].data[i+8],e)}return new Bn(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(n){const e=$P(this._lContainer);return null!==e&&e[n]||null}get length(){return this._lContainer.length-10}createEmbeddedView(n,e,i){let o,r;"number"==typeof i?o=i:null!=i&&(o=i.index,r=i.injector);const a=n.createEmbeddedViewImpl(e||{},r,null);return this.insertImpl(a,o,yl(this._hostTNode,null)),a}createComponent(n,e,i,o,r,s,a){const l=n&&!function Zu(t){return"function"==typeof t}(n);let c;if(l)c=e;else{const T=e||{};c=T.index,i=T.injector,o=T.projectableNodes,r=T.environmentInjector||T.ngModuleRef,s=T.directives,a=T.bindings}const f=l?n:new Th(xt(n)),m=i||this.parentInjector;if(!r&&null==f.ngModule){const I=(l?m:this.parentInjector).get(zn,null);I&&(r=I)}xt(f.componentType??{});const k=f.create(m,o,null,r,s,a);return this.insertImpl(k.hostView,c,yl(this._hostTNode,null)),k}insert(n,e){return this.insertImpl(n,e,!0)}insertImpl(n,e,i){const o=n._lView;if(function Nj(t){return Ji(t[3])}(o)){const a=this.indexOf(n);if(-1!==a)this.detach(a);else{const l=o[3],c=new $1(l,l[5],l[3]);c.detach(c.indexOf(n))}}const r=this._adjustIndex(e),s=this._lContainer;return fd(s,o,r,i),n.attachToViewContainerRef(),YD(W1(s),r,n),n}move(n,e){return this.insert(n,e)}indexOf(n){const e=$P(this._lContainer);return null!==e?e.indexOf(n):-1}remove(n){const e=this._adjustIndex(n,-1),i=_h(this._lContainer,e);i&&(qp(W1(this._lContainer),e),mh(i[1],i))}detach(n){const e=this._adjustIndex(n,-1),i=_h(this._lContainer,e);return i&&null!=qp(W1(this._lContainer),e)?new bh(i):null}_adjustIndex(n,e=0){return n??this.length+e}}function $P(t){return t[8]}function W1(t){return t[8]||(t[8]=[])}function WP(t,n){let e;const i=n[t.index];return Ji(i)?e=i:(e=QE(i,n,null,t),n[t.index]=e,e1(n,e)),GP(e,n,t,i),new $1(e,t,n)}let GP=function KP(t,n,e,i){if(t[7])return;let o;o=8&e.type?gi(i):function oq(t,n){const e=t[11],i=e.createComment(""),o=Zn(n,t),r=e.parentNode(o);return fl(e,r,i,e.nextSibling(o),!1),i}(n,e),t[7]=o};class q1{queryList;matches=null;constructor(n){this.queryList=n}clone(){return new q1(this.queryList)}setDirty(){this.queryList.setDirty()}}class K1{queries;constructor(n=[]){this.queries=n}createEmbeddedView(n){const e=n.queries;if(null!==e){const i=null!==n.contentQueries?n.contentQueries[0]:e.length,o=[];for(let r=0;rn.trim())}(n):n}}class Y1{queries;constructor(n=[]){this.queries=n}elementStart(n,e){for(let i=0;i0)i.push(s[a/2]);else{const c=r[a+1],f=n[-l];for(let m=10;m{i._dirtyCounter();const r=function pq(t,n){const e=t._lView,i=t._queryIndex;if(void 0===e||void 0===i||4&e[2])return n?void 0:Yt;const o=Q1(e,i),r=tI(e,i);return o.reset(r,GT),n?o.first:o._changesDetected||void 0===t._flatValue?t._flatValue=o.toArray():t._flatValue}(i,t);if(n&&void 0===r)throw new X(-951,!1);return r});return i=o[Rn],i._dirtyCounter=yt(0),i._flatValue=void 0,o}function nI(t){return e0(!0,!1)}function iI(t){return e0(!0,!0)}function oI(t,n){const e=t[Rn];e._lView=ne(),e._queryIndex=n,e._queryList=Q1(e._lView,n),e._queryList.onDirty(()=>e._dirtyCounter.update(i=>i+1))}let bs=class{},lI=class{};class o0 extends bs{ngModuleType;_parent;_bootstrapComponents=[];_r3Injector;instance;destroyCbs=[];componentFactoryResolver=new UP(this);constructor(n,e,i,o=!0){super(),this.ngModuleType=n,this._parent=e;const r=Er(n);this._bootstrapComponents=Lr(r.bootstrap),this._r3Injector=NM(n,e,[{provide:bs,useValue:this},{provide:wg,useValue:this.componentFactoryResolver},...i],Ws(n),new Set(["environment"])),o&&this.resolveInjectorInitializers()}resolveInjectorInitializers(){this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(this.ngModuleType)}get injector(){return this._r3Injector}destroy(){const n=this._r3Injector;!n.destroyed&&n.destroy(),this.destroyCbs.forEach(e=>e()),this.destroyCbs=null}onDestroy(n){this.destroyCbs.push(n)}}class cI extends lI{moduleType;constructor(n){super(),this.moduleType=n}create(n){return new o0(this.moduleType,n,[])}}class wq extends bs{injector;componentFactoryResolver=new UP(this);instance=null;constructor(n){super();const e=new Qa([...n.providers,{provide:bs,useValue:this},{provide:wg,useValue:this.componentFactoryResolver}],n.parent||Jp(),n.debugName,new Set(["environment"]));this.injector=e,n.runEnvironmentInitializers&&e.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(n){this.injector.onDestroy(n)}}function Mg(t,n,e=null){return new wq({providers:t,parent:n,debugName:e,runEnvironmentInitializers:!0}).injector}let xq=(()=>{class t{_injector;cachedInjectors=new Map;constructor(e){this._injector=e}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){const i=Sy(0,e.type),o=i.length>0?Mg([i],this._injector,""):null;this.cachedInjectors.set(e,o)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(const e of this.cachedInjectors.values())null!==e&&e.destroy()}finally{this.cachedInjectors.clear()}}static \u0275prov=te({token:t,providedIn:"environment",factory:()=>new t(ce(zn))})}return t})();function re(t){return gs(()=>{const n=uI(t),e={...n,decls:t.decls,vars:t.vars,template:t.template,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,onPush:t.changeDetection===Im.OnPush,directiveDefs:null,pipeDefs:null,dependencies:n.standalone&&t.dependencies||null,getStandaloneInjector:n.standalone?o=>o.get(xq).getOrCreateStandaloneInjector(e):null,getExternalStyles:null,signals:t.signals??!1,data:t.data||{},encapsulation:t.encapsulation||No.Emulated,styles:t.styles||Yt,_:null,schemas:t.schemas||null,tView:null,id:""};n.standalone&&vi("NgStandalone"),hI(e);const i=t.dependencies;return e.directiveDefs=Tg(i,dI),e.pipeDefs=Tg(i,tr),e.id=function Mq(t){let n=0;const i=[t.selectors,t.ngContentSelectors,t.hostVars,t.hostAttrs,"function"==typeof t.consts?"":t.consts,t.vars,t.decls,t.encapsulation,t.standalone,t.signals,t.exportAs,JSON.stringify(t.inputs),JSON.stringify(t.outputs),Object.getOwnPropertyNames(t.type.prototype),!!t.contentQueries,!!t.viewQuery];for(const r of i.join("|"))n=Math.imul(31,n)+r.charCodeAt(0)|0;return n+=2147483648,"c"+n}(e),e})}function dI(t){return xt(t)||Zi(t)}function tt(t){return gs(()=>({type:t.type,bootstrap:t.bootstrap||Yt,declarations:t.declarations||Yt,imports:t.imports||Yt,exports:t.exports||Yt,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}))}function Sq(t,n){if(null==t)return Pr;const e={};for(const i in t)if(t.hasOwnProperty(i)){const o=t[i];let r,s,a,l;Array.isArray(o)?(a=o[0],r=o[1],s=o[2]??r,l=o[3]||null):(r=o,s=o,a=Qm.None,l=null),e[r]=[i,a,l],n[r]=s}return e}function kq(t){if(null==t)return Pr;const n={};for(const e in t)t.hasOwnProperty(e)&&(n[t[e]]=e);return n}function de(t){return gs(()=>{const n=uI(t);return hI(n),n})}function Hi(t){return{type:t.type,name:t.name,factory:null,pure:!1!==t.pure,standalone:t.standalone??!0,onDestroy:t.type.prototype.ngOnDestroy||null}}function uI(t){const n={};return{type:t.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:n,inputConfig:t.inputs||Pr,exportAs:t.exportAs||null,standalone:t.standalone??!0,signals:!0===t.signals,selectors:t.selectors||Yt,viewQuery:t.viewQuery||null,features:t.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,inputs:Sq(t.inputs,n),outputs:kq(t.outputs),debugInfo:null}}function hI(t){t.features?.forEach(n=>n(t))}function Tg(t,n){return t?()=>{const e="function"==typeof t?t():t,i=[];for(const o of e){const r=n(o);null!==r&&i.push(r)}return i}:null}function fI(t){const n=e=>{const i=Array.isArray(t);null===e.hostDirectives?(e.resolveHostDirectives=Eq,e.hostDirectives=i?t.map(r0):[t]):i?e.hostDirectives.unshift(...t.map(r0)):e.hostDirectives.unshift(t)};return n.ngInherit=!0,n}function Eq(t){const n=[];let e=!1,i=null,o=null;for(let r=0;r=0;i--){const o=t[i];o.hostVars=n+=o.hostVars,o.hostAttrs=td(o.hostAttrs,e=td(e,o.hostAttrs))}}(i)}function Oq(t,n){for(const e in n.inputs){if(!n.inputs.hasOwnProperty(e)||t.inputs.hasOwnProperty(e))continue;const i=n.inputs[e];void 0!==i&&(t.inputs[e]=i,t.declaredInputs[e]=n.declaredInputs[e])}}function s0(t){return t===Pr?{}:t===Yt?[]:t}function Rq(t,n){const e=t.viewQuery;t.viewQuery=e?(i,o)=>{n(i,o),e(i,o)}:n}function Fq(t,n){const e=t.contentQueries;t.contentQueries=e?(i,o,r)=>{n(i,o,r),e(i,o,r)}:n}function Nq(t,n){const e=t.hostBindings;t.hostBindings=e?(i,o)=>{n(i,o),e(i,o)}:n}function bI(t,n,e,i,o,r,s,a){if(e.firstCreatePass){t.mergedAttrs=td(t.mergedAttrs,t.attrs);const f=t.tView=QC(2,t,o,r,s,e.directiveRegistry,e.pipeRegistry,null,e.schemas,e.consts,null);null!==e.queries&&(e.queries.template(e,t),f.queries=e.queries.embeddedTView(t))}a&&(t.flags|=a),fs(t,!1);const l=vI(e,n,t,i);am()&&_1(e,n,l,t),po(l,n);const c=QE(l,n,l,t);n[i+27]=c,e1(n,c)}function Dl(t,n,e,i,o,r,s,a,l,c,f){const m=e+27;let g;if(n.firstCreatePass){if(g=Cl(n,m,4,s||null,a||null),null!=c){const _=Li(n.consts,c);g.localNames=[];for(let w=0;w<_.length;w+=2)g.localNames.push(_[w],-1)}}else g=n.data[m];return bI(g,t,n,e,i,o,r,l),null!=c&&dd(t,g,f),g}function it(t,n,e,i,o,r,s,a){const l=ne(),c=ze();return function Lq(t,n,e,i,o,r,s,a,l,c,f){const m=e+27;let g;n.firstCreatePass?(g=Cl(n,m,4,s||null,a||null),Hy()&&MP(n,t,g,Li(n.consts,c),w1),kT(n,g)):g=n.data[m],bI(g,t,n,e,i,o,r,l),$c(g)&&ag(n,t,g),null!=c&&dd(t,g,f)}(l,c,t,n,e,i,o,Li(c.consts,r),void 0,s,a),it}function Eg(t,n,e,i,o,r,s,a){const l=ne(),c=ze();return Dl(l,c,t,n,e,i,o,Li(c.consts,r),void 0,s,a),Eg}let vI=function yI(t,n,e,i){return $u(!0),n[11].createComment("")};let AI=(()=>{class t{log(e){console.log(e)}warn(e){console.warn(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})();function El(t){return"function"==typeof t&&void 0!==t[Rn]}function FI(t){return El(t)&&"function"==typeof t.set}const XI=new Z(""),ZI=new Z("");let p0,f0=(()=>{class t{_ngZone;registry;_isZoneStable=!0;_callbacks=[];_taskTrackingZone=null;_destroyRef;constructor(e,i,o){this._ngZone=e,this.registry=i,Iy()&&(this._destroyRef=D(rr,{optional:!0})??void 0),p0||(function WK(t){p0=t}(o),o.addToWindow(i)),this._watchAngularEvents(),e.run(()=>{this._taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){const e=this._ngZone.onUnstable.subscribe({next:()=>{this._isZoneStable=!1}}),i=this._ngZone.runOutsideAngular(()=>this._ngZone.onStable.subscribe({next:()=>{_e.assertNotInAngularZone(),queueMicrotask(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}}));this._destroyRef?.onDestroy(()=>{e.unsubscribe(),i.unsubscribe()})}isStable(){return this._isZoneStable&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())queueMicrotask(()=>{for(;0!==this._callbacks.length;){let e=this._callbacks.pop();clearTimeout(e.timeoutId),e.doneCb()}});else{let e=this.getPendingTasks();this._callbacks=this._callbacks.filter(i=>!i.updateCb||!i.updateCb(e)||(clearTimeout(i.timeoutId),!1))}}getPendingTasks(){return this._taskTrackingZone?this._taskTrackingZone.macroTasks.map(e=>({source:e.source,creationLocation:e.creationLocation,data:e.data})):[]}addCallback(e,i,o){let r=-1;i&&i>0&&(r=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==r),e()},i)),this._callbacks.push({doneCb:e,timeoutId:r,updateCb:o})}whenStable(e,i,o){if(o&&!this._taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(e,i,o),this._runCallbacksIfReady()}registerApplication(e){this.registry.registerApplication(e,this)}unregisterApplication(e){this.registry.unregisterApplication(e)}findProviders(e,i,o){return[]}static \u0275fac=function(i){return new(i||t)(ce(_e),ce($K),ce(ZI))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),$K=(()=>{class t{_applications=new Map;registerApplication(e,i){this._applications.set(e,i)}unregisterApplication(e){this._applications.delete(e)}unregisterAllApplications(){this._applications.clear()}getTestability(e){return this._applications.get(e)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(e,i=!0){return p0?.findTestabilityInTree(this,e,i)??null}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})();function Rh(t){return!!t&&"function"==typeof t.then}function QI(t){return!!t&&"function"==typeof t.subscribe}const JI=new Z("");function eO(t){return Hu([{provide:JI,multi:!0,useValue:t}])}let tO=(()=>{class t{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((e,i)=>{this.resolve=e,this.reject=i});appInits=D(JI,{optional:!0})??[];injector=D(He);constructor(){}runInitializers(){if(this.initialized)return;const e=[];for(const o of this.appInits){const r=Qi(this.injector,o);if(Rh(r))e.push(r);else if(QI(r)){const s=new Promise((a,l)=>{r.subscribe({complete:a,error:l})});e.push(s)}}const i=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{i()}).catch(o=>{this.reject(o)}),0===e.length&&i(),this.initialized=!0}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const nO=new Z("");function iO(t,n){return Array.isArray(n)?n.reduce(iO,t):{...t,...n}}let lr=(()=>{class t{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=D(Or);afterRenderManager=D(u1);zonelessEnabled=D(um);rootEffectScheduler=D($M);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new me;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=D(Ys);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(Se(e=>!e))}constructor(){D(oa,{optional:!0})}whenStable(){let e;return new Promise(i=>{e=this.isStable.subscribe({next:o=>{o&&i()}})}).finally(()=>{e.unsubscribe()})}_injector=D(zn);_rendererFactory=null;get injector(){return this._injector}bootstrap(e,i){return this.bootstrapImpl(e,i)}bootstrapImpl(e,i,o=He.NULL){return this._injector.get(_e).run(()=>{Lt(ge.BootstrapComponentStart);const s=e instanceof kP;if(!this._injector.get(tO).done)throw new X(405,"");let l;l=s?e:this._injector.get(wg).resolveComponentFactory(e),this.componentTypes.push(l.componentType);const c=function qK(t){return t.isBoundToModule}(l)?void 0:this._injector.get(bs),m=l.create(o,[],i||l.selector,c),g=m.location.nativeElement,_=m.injector.get(XI,null);return _?.registerApplication(g),m.onDestroy(()=>{this.detachView(m.hostView),Lg(this.components,m),_?.unregisterApplication(g)}),this._loadComponent(m),Lt(ge.BootstrapComponentEnd,m),m})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){Lt(ge.ChangeDetectionStart),null!==this.tracingSnapshot?this.tracingSnapshot.run(d1.CHANGE_DETECTION,this.tickImpl):this.tickImpl()}tickImpl=()=>{if(this._runningTick)throw Lt(ge.ChangeDetectionEnd),new X(101,!1);const e=Te(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,Te(e),this.afterTick.next(),Lt(ge.ChangeDetectionEnd)}};synchronize(){null===this._rendererFactory&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(Lo,null,{optional:!0}));let e=0;for(;0!==this.dirtyFlags&&e++<10;){Lt(ge.ChangeDetectionSyncStart);try{this.synchronizeOnce()}finally{Lt(ge.ChangeDetectionSyncEnd)}}}synchronizeOnce(){16&this.dirtyFlags&&(this.dirtyFlags&=-17,this.rootEffectScheduler.flush());let e=!1;if(7&this.dirtyFlags){const i=!!(1&this.dirtyFlags);this.dirtyFlags&=-8,this.dirtyFlags|=8;for(let{_lView:o}of this.allViews)(i||im(o))&&(fg(o,i&&!this.zonelessEnabled?0:1),e=!0);if(this.dirtyFlags&=-5,this.syncDirtyFlagsWithViews(),23&this.dirtyFlags)return}e||(this._rendererFactory?.begin?.(),this._rendererFactory?.end?.()),8&this.dirtyFlags&&(this.dirtyFlags&=-9,this.afterRenderManager.execute()),this.syncDirtyFlagsWithViews()}syncDirtyFlagsWithViews(){this.allViews.some(({_lView:e})=>im(e))?this.dirtyFlags|=2:this.dirtyFlags&=-8}attachView(e){const i=e;this._views.push(i),i.attachToAppRef(this)}detachView(e){const i=e;Lg(this._views,i),i.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView);try{this.tick()}catch(o){this.internalErrorHandler(o)}this.components.push(e),this._injector.get(nO,[]).forEach(o=>o(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy())}finally{this._destroyed=!0,this._views=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>Lg(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new X(406,!1);const e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Lg(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}function y0(t,n){const e=ne();if(un(e,ho(),n)){const o=ze(),r=or();if(ug(r,o,e,t,n))Ir(r)&&jE(e,r.index);else{const a=Zn(r,e);lg(e[11],a,null,r.value,t,n,null)}}return y0}function $e(t,n,e,i){const o=ne();return un(o,ho(),n)&&(ze(),function sW(t,n,e,i,o,r){const s=Zn(t,n);lg(n[11],s,r,t.value,e,i,o)}(or(),o,t,n,e,i)),$e}function Br(){return ne()[15][8]}class FY{destroy(n){}updateValue(n,e){}swap(n,e){const i=Math.min(n,e),o=Math.max(n,e),r=this.detach(o);if(o-i>1){const s=this.detach(i);this.attach(i,r),this.attach(o,s)}else this.attach(i,r)}move(n,e){this.attach(e,this.detach(n))}}function w0(t,n,e,i,o){return t===e&&Object.is(n,i)?1:Object.is(o(t,n),o(e,i))?-1:0}function x0(t,n,e,i){return!(void 0===n||!n.has(i)||(t.attach(e,n.get(i)),n.delete(i),0))}function hO(t,n,e,i,o){if(x0(t,n,i,e(i,o)))t.updateValue(i,o);else{const r=t.create(i,o);t.attach(i,r)}}function fO(t,n,e,i){const o=new Set;for(let r=n;r<=e;r++)o.add(i(r,t.at(r)));return o}class pO{kvMap=new Map;_vMap=void 0;has(n){return this.kvMap.has(n)}delete(n){if(!this.has(n))return!1;const e=this.kvMap.get(n);return void 0!==this._vMap&&this._vMap.has(e)?(this.kvMap.set(n,this._vMap.get(e)),this._vMap.delete(e)):this.kvMap.delete(n),!0}get(n){return this.kvMap.get(n)}set(n,e){if(this.kvMap.has(n)){let i=this.kvMap.get(n);void 0===this._vMap&&(this._vMap=new Map);const o=this._vMap;for(;o.has(i);)i=o.get(i);o.set(i,e)}else this.kvMap.set(n,e)}forEach(n){for(let[e,i]of this.kvMap)if(n(i,e),void 0!==this._vMap){const o=this._vMap;for(;o.has(i);)i=o.get(i),n(i,e)}}}function x(t,n,e,i,o,r,s,a){vi("NgControlFlow");const l=ne(),c=ze();return Dl(l,c,t,n,e,i,o,Li(c.consts,r),256,s,a),S0}function S0(t,n,e,i,o,r,s,a){vi("NgControlFlow");const l=ne(),c=ze();return Dl(l,c,t,n,e,i,o,Li(c.consts,r),512,s,a),S0}function S(t,n){vi("NgControlFlow");const e=ne(),i=ho(),o=e[i]!==At?e[i]:-1,r=-1!==o?jg(e,27+o):void 0;if(un(e,i,t)){const a=Te(null);try{if(void 0!==r&&k1(r,0),-1!==t){const l=27+t,c=jg(e,l),f=k0(e[1],l),m=null;fd(c,ud(e,f,n,{dehydratedView:m}),0,yl(f,m))}}finally{Te(a)}}else if(void 0!==r){const a=JE(r,0);void 0!==a&&(a[8]=n)}}class LY{lContainer;$implicit;$index;constructor(n,e,i){this.lContainer=n,this.$implicit=e,this.$index=i}get $count(){return this.lContainer.length-10}}function mO(t){return t}function Fe(t,n){return n}class BY{hasEmptyBlock;trackByFn;liveCollection;constructor(n,e,i){this.hasEmptyBlock=n,this.trackByFn=e,this.liveCollection=i}}function ve(t,n,e,i,o,r,s,a,l,c,f,m,g){vi("NgControlFlow");const _=ne(),w=ze(),k=void 0!==l,T=ne(),I=a?s.bind(T[15][8]):s,R=new BY(k,I);T[27+t]=R,Dl(_,w,t+1,n,e,i,o,Li(w.consts,r),256),k&&Dl(_,w,t+2,l,c,f,m,Li(w.consts,g),512)}class VY extends FY{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(n,e,i){super(),this.lContainer=n,this.hostLView=e,this.templateTNode=i}get length(){return this.lContainer.length-10}at(n){return this.getLView(n)[8].$implicit}attach(n,e){const i=e[6];this.needsIndexUpdate||=n!==this.length,fd(this.lContainer,e,n,yl(this.templateTNode,i)),function HY(t,n){if(t.length<=10)return;const i=t[10+n],o=i?i[26]:void 0;i&&o&&o.detachedLeaveAnimationFns&&o.detachedLeaveAnimationFns.length>0&&(function z$(t,n){const e=t.get(og);if(n.detachedLeaveAnimationFns){for(const i of n.detachedLeaveAnimationFns)e.queue.delete(i);n.detachedLeaveAnimationFns=void 0}}(i[9],o),bl.delete(i[19]),o.detachedLeaveAnimationFns=void 0)}(this.lContainer,n)}detach(n){return this.needsIndexUpdate||=n!==this.length-1,function jY(t,n){if(t.length<=10)return;const i=t[10+n],o=i?i[26]:void 0;o&&o.leave&&o.leave.size>0&&(o.detachedLeaveAnimationFns=[])}(this.lContainer,n),function UY(t,n){return _h(t,n)}(this.lContainer,n)}create(n,e){return ud(this.hostLView,this.templateTNode,new LY(this.lContainer,e,n),{dehydratedView:null})}destroy(n){mh(n[1],n)}updateValue(n,e){this.getLView(n)[8].$implicit=e}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let n=0;n{t.destroy(c)})}(l,t,r.trackByFn,n),l.updateIndexes(),r.hasEmptyBlock){const c=ho(),f=0===l.length;if(un(i,c,f)){const m=e+2,g=jg(i,m);if(f){const _=k0(o,m),w=null;fd(g,ud(i,_,void 0,{dehydratedView:w}),0,yl(_,w))}else o.firstUpdatePass&&function vg(t){const n=t[6]??[],i=t[3][11],o=[];for(const r of n)void 0!==r.data.di?o.push(r):vP(r,i);t[6]=o}(g),k1(g,0)}}}finally{Te(n)}}function jg(t,n){return t[n]}function k0(t,n){return Gc(t,n)}function C(t,n,e){const i=ne();return un(i,ho(),n)&&(ze(),y1(or(),i,t,n,i[11],e)),C}function D0(t,n,e,i,o){ug(n,t,e,o?"class":"style",i)}function h(t,n,e,i){const o=ne(),r=o[1],s=t+27,a=r.firstCreatePass?V1(s,o,2,n,w1,Hy(),e,i):r.data[s];if(Ir(a)){const l=o[10].tracingService;if(l&&l.componentCreate)return l.componentCreate(z1(r.data[a.directiveStart+a.componentOffset]),()=>(gO(t,n,o,a,i),h))}return gO(t,n,o,a,i),h}function gO(t,n,e,i,o){if(cg(i,e,t,n,M0),$c(i)){const r=e[1];ag(r,e,i),VC(r,i,e)}null!=o&&dd(e,i)}function u(){const t=ze(),e=dg(Ve());return t.firstCreatePass&&H1(t,e),vM(e)&&yM(),_M(),null!=e.classesWithoutHost&&function zz(t){return!!(8&t.flags)}(e)&&D0(t,e,ne(),e.classesWithoutHost,!0),null!=e.stylesWithoutHost&&function $z(t){return!!(16&t.flags)}(e)&&D0(t,e,ne(),e.stylesWithoutHost,!1),u}function B(t,n,e,i){return h(t,n,e,i),u(),B}function vs(t,n,e,i){const o=ne(),r=o[1],s=t+27,a=r.firstCreatePass?function OP(t,n,e,i,o,r){const s=n.consts,l=Cl(n,t,e,i,Li(s,o));if(l.mergedAttrs=td(l.mergedAttrs,l.attrs),null!=r){const c=Li(s,r);l.localNames=[];for(let f=0;f($u(!0),Ym(n[11],i,function Yj(){return Be.lFrame.currentNamespace}()));function Vr(t,n,e){const i=ne(),o=i[1],r=t+27,s=o.firstCreatePass?V1(r,i,8,"ng-container",w1,Hy(),n,e):o.data[r];if(cg(s,i,t,"ng-container",E0),$c(s)){const a=i[1];ag(a,i,s),VC(a,s,i)}return null!=e&&dd(i,s),Vr}function cr(){const t=ze(),e=dg(Ve());return t.firstCreatePass&&H1(t,e),cr}function dr(t,n,e){return Vr(t,n,e),cr(),dr}let E0=(t,n,e,i,o)=>($u(!0),YC(n[11],""));function oe(){return ne()}function ur(t,n,e){const i=ne();return un(i,ho(),n)&&(ze(),C1(or(),i,t,n,i[11],e)),ur}const Nh=void 0;var qY=["en",[["a","p"],["AM","PM"]],[["AM","PM"]],[["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"]],Nh,[["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"]],Nh,[["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\u202fa","h:mm:ss\u202fa","h:mm:ss\u202fa z","h:mm:ss\u202fa zzzz"],["{1}, {0}",Nh,Nh,Nh],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function GY(t){const n=Math.floor(Math.abs(t)),e=t.toString().replace(/^[^.]*\.?/,"").length;return 1===n&&0===e?1:5}];let Sd={};function to(t){const n=function KY(t){return t.toLowerCase().replace(/_/g,"-")}(t);let e=CO(n);if(e)return e;const i=n.split("-")[0];if(e=CO(i),e)return e;if("en"===i)return qY;throw new X(701,!1)}function CO(t){return t in Sd||(Sd[t]=Fn.ng&&Fn.ng.common&&Fn.ng.common.locales&&Fn.ng.common.locales[t]),Sd[t]}var hn=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}(hn||{});const Ug="en-US";let wO=Ug;function F(t,n,e){const i=ne(),o=ze(),r=Ve();return O0(o,i,i[11],r,t,n,e),F}function qg(t,n,e){const i=ne(),o=ze(),r=Ve();return(3&r.type||e)&&U1(r,o,i,e,i[11],t,n,sa(r,i,n)),qg}function O0(t,n,e,i,o,r,s){let a=!0,l=null;if((3&i.type||s)&&(l??=sa(i,n,r),U1(i,t,n,s,e,o,r,l)&&(a=!1)),a){const c=i.outputs?.[o],f=i.hostDirectiveOutputs?.[o];if(f&&f.length)for(let m=0;m0;)n=n[14],t--;return n}(t,Be.lFrame.contextLView))[8]}(t)}function RX(t,n){let e=null;const i=function b$(t){const n=t.attrs;if(null!=n){const e=n.indexOf(5);if(!(1&e))return n[e+1]}return null}(t);for(let o=0;o>17&32767}function N0(t){return 2|t}function kd(t){return(131068&t)>>2}function L0(t,n){return-131069&t|n<<2}function B0(t){return 1|t}function UO(t,n,e,i){const o=t[e+1],r=null===n;let s=i?Al(o):kd(o),a=!1;for(;0!==s&&(!1===a||r);){const c=t[s+1];jX(t[s],n)&&(a=!0,t[s+1]=i?B0(c):N0(c)),s=i?Al(c):kd(c)}a&&(t[e+1]=i?N0(o):B0(o))}function jX(t,n){return null===t||null==n||(Array.isArray(t)?t[1]:t)===n||!(!Array.isArray(t)||"string"!=typeof n)&&Vu(t,n)>=0}const ri={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function zO(t){return t.substring(ri.key,ri.keyEnd)}function UX(t){return t.substring(ri.value,ri.valueEnd)}function $O(t,n){const e=ri.textEnd;return e===n?-1:(n=ri.keyEnd=function WX(t,n,e){for(;n32;)n++;return n}(t,ri.key=n,e),Dd(t,n,e))}function WO(t,n){const e=ri.textEnd;let i=ri.key=Dd(t,n,e);return e===i?-1:(i=ri.keyEnd=function GX(t,n,e){let i;for(;n=65&&(-33&i)<=90||i>=48&&i<=57);)n++;return n}(t,i,e),i=qO(t,i,e),i=ri.value=Dd(t,i,e),i=ri.valueEnd=function qX(t,n,e){let i=-1,o=-1,r=-1,s=n,a=s;for(;s32&&(a=s),r=o,o=i,i=-33&l}return a}(t,i,e),qO(t,i,e))}function GO(t){ri.key=0,ri.keyEnd=0,ri.value=0,ri.valueEnd=0,ri.textEnd=t.length}function Dd(t,n,e){for(;n=0;e=WO(n,e))JO(t,zO(n),UX(n))}function Ze(t){XO(tZ,YX,t,!0)}function YX(t,n){for(let e=function zX(t){return GO(t),$O(t,Dd(t,0,ri.textEnd))}(n);e>=0;e=$O(n,e))Yp(t,zO(n),!0)}function YO(t,n,e,i){const o=ne(),r=ze(),s=ms(2);r.firstUpdatePass&&QO(r,t,s,i),n!==At&&un(o,s,n)&&eA(r,r.data[Di()],o,o[11],t,o[s+1]=function iZ(t,n){return null==t||""===t||("string"==typeof n?t+=n:"object"==typeof t&&(t=Ws(Mo(t)))),t}(n,e),i,s)}function XO(t,n,e,i){const o=ze(),r=ms(2);o.firstUpdatePass&&QO(o,null,r,i);const s=ne();if(e!==At&&un(s,r,e)){const a=o.data[Di()];if(nA(a,i)&&!ZO(o,r)){let l=i?a.classesWithoutHost:a.stylesWithoutHost;null!==l&&(e=uy(l,e||"")),D0(o,a,s,e,i)}else!function nZ(t,n,e,i,o,r,s,a){o===At&&(o=Yt);let l=0,c=0,f=0=t.expandoStartIndex}function QO(t,n,e,i){const o=t.data;if(null===o[e+1]){const r=o[Di()],s=ZO(t,e);nA(r,i)&&null===n&&!s&&(n=!1),n=function XX(t,n,e,i){const o=function Uy(t){const n=Be.lFrame.currentDirectiveIndex;return-1===n?null:t[n]}(t);let r=i?n.residualClasses:n.residualStyles;if(null===o)0===(i?n.classBindings:n.styleBindings)&&(e=jh(e=V0(null,t,n,e,i),n.attrs,i),r=null);else{const s=n.directiveStylingLast;if(-1===s||t[s]!==o)if(e=V0(o,t,n,e,i),null===r){let l=function ZX(t,n,e){const i=e?n.classBindings:n.styleBindings;if(0!==kd(i))return t[Al(i)]}(t,n,i);void 0!==l&&Array.isArray(l)&&(l=V0(null,t,n,l[1],i),l=jh(l,n.attrs,i),function QX(t,n,e,i){t[Al(e?n.classBindings:n.styleBindings)]=i}(t,n,i,l))}else r=function JX(t,n,e){let i;const o=n.directiveEnd;for(let r=1+n.directiveStylingLast;r0)&&(c=!0)):f=e,o)if(0!==l){const g=Al(t[a+1]);t[i+1]=Kg(g,a),0!==g&&(t[g+1]=L0(t[g+1],i)),t[a+1]=function LX(t,n){return 131071&t|n<<17}(t[a+1],i)}else t[i+1]=Kg(a,0),0!==a&&(t[a+1]=L0(t[a+1],i)),a=i;else t[i+1]=Kg(l,0),0===a?a=i:t[l+1]=L0(t[l+1],i),l=i;c&&(t[i+1]=N0(t[i+1])),UO(t,f,i,!0),UO(t,f,i,!1),function HX(t,n,e,i,o){const r=o?t.residualClasses:t.residualStyles;null!=r&&"string"==typeof n&&Vu(r,n)>=0&&(e[i+1]=B0(e[i+1]))}(n,f,t,i,r),s=Kg(a,l),r?n.classBindings=s:n.styleBindings=s}(o,r,n,e,s,i)}}function V0(t,n,e,i,o){let r=null;const s=e.directiveEnd;let a=e.directiveStylingLast;for(-1===a?a=e.directiveStart:a++;a0;){const l=t[o],c=Array.isArray(l),f=c?l[1]:l,m=null===f;let g=e[o+1];g===At&&(g=m?Yt:void 0);let _=m?wy(g,i):f===i?g:void 0;if(c&&!Yg(_)&&(_=wy(l,i)),Yg(_)&&(a=_,s))return a;const w=t[o+1];o=s?Al(w):kd(w)}if(null!==n){let l=r?n.residualClasses:n.residualStyles;null!=l&&(a=wy(l,i))}return a}function Yg(t){return void 0!==t}function nA(t,n){return!!(t.flags&(n?8:16))}function p(t,n=""){const e=ne(),i=ze(),o=t+27,r=i.firstCreatePass?Cl(i,o,1,n,null):i.data[o],s=iA(i,e,r,n);e[o]=s,am()&&_1(i,e,s,r),fs(r,!1)}let iA=(t,n,e,i)=>($u(!0),function KC(t,n){return t.createText(n)}(n[11],i));function M(t){return E("",t),M}function E(t,n,e){const i=ne(),o=function rA(t,n,e,i=""){return un(t,ho(),e)?n+je(e)+i:At}(i,t,n,e);return o!==At&&Cs(i,Di(),o),E}function gt(t,n,e,i,o){const r=ne(),s=function sA(t,n,e,i,o,r=""){const a=Sl(t,ps(),e,o);return ms(2),a?n+je(e)+i+je(o)+r:At}(r,t,n,e,i,o);return s!==At&&Cs(r,Di(),s),gt}function Uh(t,n,e,i,o,r,s){const a=ne(),l=function aA(t,n,e,i,o,r,s,a=""){const c=Dg(t,ps(),e,o,s);return ms(3),c?n+je(e)+i+je(o)+r+je(s)+a:At}(a,t,n,e,i,o,r,s);return l!==At&&Cs(a,Di(),l),Uh}function Xg(t,n,e,i,o,r,s,a,l){const c=ne(),f=function lA(t,n,e,i,o,r,s,a,l,c=""){const m=Bo(t,ps(),e,o,s,l);return ms(4),m?n+je(e)+i+je(o)+r+je(s)+a+je(l)+c:At}(c,t,n,e,i,o,r,s,a,l);return f!==At&&Cs(c,Di(),f),Xg}function H0(t,n,e,i,o,r,s,a,l,c,f,m,g){const _=ne(),w=function dA(t,n,e,i,o,r,s,a,l,c,f,m,g,_=""){const w=ps();let k=Bo(t,w,e,o,s,l);return k=Sl(t,w+4,f,g)||k,ms(6),k?n+je(e)+i+je(o)+r+je(s)+a+je(l)+c+je(f)+m+je(g)+_:At}(_,t,n,e,i,o,r,s,a,l,c,f,m,g);return w!==At&&Cs(_,Di(),w),H0}function Cs(t,n,e){const i=Wc(n,t);!function nE(t,n,e){t.setValue(n,e)}(t[11],i,e)}function Ut(t,n,e){FI(n)&&(n=n());const i=ne();return un(i,ho(),n)&&(ze(),y1(or(),i,t,n,i[11],e)),Ut}function Zt(t,n){const e=FI(t);return e&&t.set(n),e}function zt(t,n){const e=ne(),i=ze(),o=Ve();return O0(i,e,e[11],o,t,n),zt}function Qt(t){return un(ne(),ho(),t)?je(t):At}function vA(t,n,e){const i=ze();i.firstCreatePass&&yA(n,i.data,i.blueprint,ir(t),e)}function yA(t,n,e,i,o){if(t=qe(t),Array.isArray(t))for(let r=0;r>20;if(as(t)||!t.multi){const _=new Qu(c,o,O,null),w=U0(l,n,o?f:f+g,m);-1===w?(fC(Mm(a,s),r,l),j0(r,t,n.length),n.push(l),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),e.push(_),s.push(_)):(e[w]=_,s[w]=_)}else{const _=U0(l,n,f+g,m),w=U0(l,n,f,f+g),T=w>=0&&e[w];if(o&&!T||!o&&!(_>=0&&e[_])){fC(Mm(a,s),r,l);const I=function yZ(t,n,e,i,o){const s=new Qu(t,e,O,null);return s.multi=[],s.index=n,s.componentProviders=0,CA(s,o,i&&!e),s}(o?vZ:bZ,e.length,o,i,c);!o&&T&&(e[w].providerFactory=I),j0(r,t,n.length,0),n.push(l),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),e.push(I),s.push(I)}else j0(r,t,_>-1?_:w,CA(e[o?w:_],c,!o&&i));!o&&i&&T&&e[w].componentProviders++}}}function j0(t,n,e,i){const o=as(n),r=function nM(t){return!!t.useClass}(n);if(o||r){const l=(r?qe(n.useClass):n).prototype.ngOnDestroy;if(l){const c=t.destroyHooks||(t.destroyHooks=[]);if(!o&&n.multi){const f=c.indexOf(e);-1===f?c.push(e,[i,l]):c[f+1].push(i,l)}else c.push(e,l)}}}function CA(t,n,e){return e&&t.componentProviders++,t.multi.push(n)-1}function U0(t,n,e,i){for(let o=e;o{e.providersResolver=(i,o)=>vA(i,o?o(t):t,!1),n&&(e.viewProvidersResolver=(i,o)=>vA(i,o?o(n):n,!0))}}function Ct(t,n){const e=Bi()+t,i=ne();return i[e]===At?ar(i,e,n()):function gd(t,n){return t[n]}(i,e)}function se(t,n,e){return kA(ne(),Bi(),t,n,e)}function _t(t,n,e,i){return DA(ne(),Bi(),t,n,e,i)}function SA(t,n,e,i,o){return function MA(t,n,e,i,o,r,s,a){const l=n+e;return Dg(t,l,o,r,s)?ar(t,l+3,a?i.call(a,o,r,s):i(o,r,s)):zh(t,l+3)}(ne(),Bi(),t,n,e,i,o)}function zh(t,n){const e=t[n];return e===At?void 0:e}function kA(t,n,e,i,o,r){const s=n+e;return un(t,s,o)?ar(t,s+1,r?i.call(r,o):i(o)):zh(t,s+1)}function DA(t,n,e,i,o,r,s){const a=n+e;return Sl(t,a,o,r)?ar(t,a+2,s?i.call(s,o,r):i(o,r)):zh(t,a+2)}function b(t,n){const e=ze();let i;const o=t+27;e.firstCreatePass?(i=function EZ(t,n){if(n)for(let e=n.length-1;e>=0;e--){const i=n[e];if(t===i.name)return i}}(n,e.pipeRegistry),e.data[o]=i,i.onDestroy&&(e.destroyHooks??=[]).push(o,i.onDestroy)):i=e.data[o];const r=i.factory||(i.factory=Za(i.type)),a=uo(O);try{const l=Dm(!1),c=r();return Dm(l),function Ry(t,n,e,i){e>=t.data.length&&(t.data[e]=null,t.blueprint[e]=null),n[e]=i}(e,ne(),o,c),c}finally{uo(a)}}function y(t,n,e){const i=t+27,o=ne(),r=il(o,i);return $h(o,i)?kA(o,Bi(),n,r.transform,e,r):r.transform(e)}function pe(t,n,e,i){const o=t+27,r=ne(),s=il(r,o);return $h(r,o)?DA(r,Bi(),n,s.transform,e,i,s):s.transform(e,i)}function $h(t,n){return t[1].data[n].pure}function Rl(t,n){return pg(t,n)}class sQ{ngModuleFactory;componentFactories;constructor(n,e){this.ngModuleFactory=n,this.componentFactories=e}}let aQ=(()=>{class t{compileModuleSync(e){return new cI(e)}compileModuleAsync(e){return Promise.resolve(this.compileModuleSync(e))}compileModuleAndAllComponentsSync(e){const i=this.compileModuleSync(e),r=Lr(Er(e).declarations).reduce((s,a)=>{const l=xt(a);return l&&s.push(new Th(l)),s},[]);return new sQ(i,r)}compileModuleAndAllComponentsAsync(e){return Promise.resolve(this.compileModuleAndAllComponentsSync(e))}clearCache(){}clearCacheFor(e){}getModuleId(e){}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),cQ=(()=>{class t{applicationErrorHandler=D(Or);appRef=D(lr);taskService=D(Ys);ngZone=D(_e);zonelessEnabled=D(um);tracing=D(oa,{optional:!0});zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new pt;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(cm):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(D(zM,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{const e=this.taskService.add();this.runningTick||(this.cleanup(),this.zonelessEnabled&&!this.appRef.includeAllTestViews)?(this.switchToMicrotaskScheduler(),this.taskService.remove(e)):this.taskService.remove(e)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{const e=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(e)})})}notify(e){if(!this.zonelessEnabled&&5===e)return;switch(e){case 0:case 6:case 13:this.appRef.dirtyFlags|=2;break;case 3:case 2:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 12:this.appRef.dirtyFlags|=16;break;case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;const i=this.useMicrotaskScheduler?Jj:VM;this.pendingRenderTaskId=this.taskService.add(),this.cancelScheduledCallback=this.scheduleInRootZone?Zone.root.run(()=>i(()=>this.tick())):this.ngZone.runOutsideAngular(()=>i(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||null!==this.pendingRenderTaskId||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(cm+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(0===this.appRef.dirtyFlags)return void this.cleanup();!this.zonelessEnabled&&7&this.appRef.dirtyFlags&&(this.appRef.dirtyFlags|=1);const e=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(i){this.applicationErrorHandler(i)}finally{this.taskService.remove(e),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,null!==this.pendingRenderTaskId){const e=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(e)}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const ua=new Z("",{factory:()=>D(ua,{optional:!0,skipSelf:!0})||function dQ(){return typeof $localize<"u"&&$localize.locale||Ug}()}),a_=Symbol("InputSignalNode#UNSET"),IR={...ey,transformFn:void 0,applyValueToInputSignal(t,n){Ap(t,n)}};function OR(t,n){const e=Object.create(IR);function i(){if(Pu(e),e.value===a_)throw new X(-950,null);return e.value}return e.value=t,e.transformFn=n?.transform,i[Rn]=e,i}class Yh{attributeName;constructor(n){this.attributeName=n}__NG_ELEMENT_ID__=()=>nh(this.attributeName);toString(){return`HostAttributeToken ${this.attributeName}`}}function AR(t,n){return OR(t,n)}const ree=(AR.required=function oee(t){return OR(a_,t)},AR);function RR(t,n){return nI()}const l_=(RR.required=function see(t,n){return iI()},RR);function FR(t,n){return nI()}const lee=(FR.required=function aee(t,n){return iI()},FR);let dee=(()=>{class t{zone=D(_e);changeDetectionScheduler=D(al);applicationRef=D(lr);applicationErrorHandler=D(Or);_onMicrotaskEmptySubscription;initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler.runningTick||this.zone.run(()=>{try{this.applicationRef.dirtyFlags|=1,this.applicationRef._tick()}catch(e){this.applicationErrorHandler(e)}})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const uee=new Z("",{factory:()=>!1});function VR(t){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:t?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:t?.runCoalescing??!1}}let pee=(()=>{class t{subscription=new pt;initialized=!1;zone=D(_e);pendingTasks=D(Ys);initialize(){if(this.initialized)return;this.initialized=!0;let e=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(e=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{_e.assertNotInAngularZone(),queueMicrotask(()=>{null!==e&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(e),e=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{_e.assertInAngularZone(),e??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const c_=new Z(""),bee=new Z("");function Xh(t){return!t.moduleRef}let UR;function zR(){UR=vee}function vee(t,n){const e=t.injector.get(lr);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(i=>e.bootstrap(i));else{if(!t.instance.ngDoBootstrap)throw new X(-403,!1);t.instance.ngDoBootstrap(e)}n.push(t)}let $R=(()=>{class t{_injector;_modules=[];_destroyListeners=[];_destroyed=!1;constructor(e){this._injector=e}bootstrapModuleFactory(e,i){const o=[[{provide:al,useExisting:cQ},{provide:_e,useClass:oU},{provide:um,useValue:!0}],...i?.applicationProviders??[],aU],r=function Cq(t,n,e){return new o0(t,n,e,!1)}(e.moduleType,this.injector,o);return zR(),function jR(t){const n=Xh(t)?t.r3Injector:t.moduleRef.injector,e=n.get(_e);return e.run(()=>{Xh(t)?t.r3Injector.resolveInjectorInitializers():t.moduleRef.resolveInjectorInitializers();const i=n.get(Or);let o;if(e.runOutsideAngular(()=>{o=e.onError.subscribe({next:i})}),Xh(t)){const r=()=>n.destroy(),s=t.platformInjector.get(c_);s.add(r),n.onDestroy(()=>{o.unsubscribe(),s.delete(r)})}else{const r=()=>t.moduleRef.destroy(),s=t.platformInjector.get(c_);s.add(r),t.moduleRef.onDestroy(()=>{Lg(t.allPlatformModules,t.moduleRef),o.unsubscribe(),s.delete(r)})}return function yee(t,n,e){try{const i=e();return Rh(i)?i.catch(o=>{throw n.runOutsideAngular(()=>t(o)),o}):i}catch(i){throw n.runOutsideAngular(()=>t(i)),i}}(i,e,()=>{const r=n.get(Ys),s=r.add(),a=n.get(tO);return a.runInitializers(),a.donePromise.then(()=>{if(function QY(t){"string"==typeof t&&(wO=t.toLowerCase().replace(/_/g,"-"))}(n.get(ua,Ug)||Ug),!n.get(bee,!0))return Xh(t)?n.get(lr):(t.allPlatformModules.push(t.moduleRef),t.moduleRef);if(Xh(t)){const f=n.get(lr);return void 0!==t.rootComponent&&f.bootstrap(t.rootComponent),f}return UR?.(t.moduleRef,t.allPlatformModules),t.moduleRef}).finally(()=>{r.remove(s)})})})}({moduleRef:r,allPlatformModules:this._modules,platformInjector:this.injector})}bootstrapModule(e,i=[]){const o=iO({},i);return zR(),function cee(t,n,e){const i=new cI(e);return Promise.resolve(i)}(0,0,e).then(r=>this.bootstrapModuleFactory(r,o))}onDestroy(e){this._destroyListeners.push(e)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new X(404,!1);this._modules.slice().forEach(i=>i.destroy()),this._destroyListeners.forEach(i=>i());const e=this._injector.get(c_,null);e&&(e.forEach(i=>i()),e.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}static \u0275fac=function(i){return new(i||t)(ce(He))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})(),Rd=null;function WR(t,n,e=[]){const i=`Platform: ${n}`,o=new Z(i);return(r=[])=>{let s=d_();if(!s){const a=[...e,...r,{provide:o,useValue:!0}];s=t?.(a)??function Cee(t){if(d_())throw new X(400,!1);(function GK(){!function E6(t){ED=t}(()=>{throw new X(600,"")})})(),Rd=t;const n=t.get($R);return function qR(t){const n=t.get(u2,null);Qi(t,()=>{n?.forEach(e=>e())})}(t),n}(function GR(t=[],n){return He.create({name:n,providers:[{provide:My,useValue:"platform"},{provide:c_,useValue:new Set([()=>Rd=null])},...t]})}(a,i))}return function wee(){const n=d_();if(!n)throw new X(-401,!1);return n}()}}function d_(){return Rd?.get($R)??null}let Jt=(()=>class t{static __NG_ELEMENT_ID__=Lee})();function Lee(t){return function Bee(t,n,e){if(Ir(t)&&!e){const i=eo(t.index,n);return new bh(i,i)}return 175&t.type?new bh(n[15],n):null}(Ve(),ne(),!(16&~t))}class tF{supports(n){return kg(n)}create(n){return new Hee(n)}}const Vee=(t,n)=>n;class Hee{length=0;collection;_linkedRecords=null;_unlinkedRecords=null;_previousItHead=null;_itHead=null;_itTail=null;_additionsHead=null;_additionsTail=null;_movesHead=null;_movesTail=null;_removalsHead=null;_removalsTail=null;_identityChangesHead=null;_identityChangesTail=null;_trackByFn;constructor(n){this._trackByFn=n||Vee}forEachItem(n){let e;for(e=this._itHead;null!==e;e=e._next)n(e)}forEachOperation(n){let e=this._itHead,i=this._removalsHead,o=0,r=null;for(;e||i;){const s=!i||e&&e.currentIndex{s=this._trackByFn(o,a),null!==e&&Object.is(e.trackById,s)?(i&&(e=this._verifyReinsertion(e,a,s,o)),Object.is(e.item,a)||this._addIdentityChange(e,a)):(e=this._mismatch(e,a,s,o),i=!0),e=e._next,o++}),this.length=o;return this._truncate(e),this.collection=n,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let n;for(n=this._previousItHead=this._itHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._additionsHead;null!==n;n=n._nextAdded)n.previousIndex=n.currentIndex;for(this._additionsHead=this._additionsTail=null,n=this._movesHead;null!==n;n=n._nextMoved)n.previousIndex=n.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(n,e,i,o){let r;return null===n?r=this._itTail:(r=n._prev,this._remove(n)),null!==(n=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null))?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._reinsertAfter(n,r,o)):null!==(n=null===this._linkedRecords?null:this._linkedRecords.get(i,o))?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._moveAfter(n,r,o)):n=this._addAfter(new jee(e,i),r,o),n}_verifyReinsertion(n,e,i,o){let r=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null);return null!==r?n=this._reinsertAfter(r,n._prev,o):n.currentIndex!=o&&(n.currentIndex=o,this._addToMoves(n,o)),n}_truncate(n){for(;null!==n;){const e=n._next;this._addToRemovals(this._unlink(n)),n=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(n,e,i){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(n);const o=n._prevRemoved,r=n._nextRemoved;return null===o?this._removalsHead=r:o._nextRemoved=r,null===r?this._removalsTail=o:r._prevRemoved=o,this._insertAfter(n,e,i),this._addToMoves(n,i),n}_moveAfter(n,e,i){return this._unlink(n),this._insertAfter(n,e,i),this._addToMoves(n,i),n}_addAfter(n,e,i){return this._insertAfter(n,e,i),this._additionsTail=null===this._additionsTail?this._additionsHead=n:this._additionsTail._nextAdded=n,n}_insertAfter(n,e,i){const o=null===e?this._itHead:e._next;return n._next=o,n._prev=e,null===o?this._itTail=n:o._prev=n,null===e?this._itHead=n:e._next=n,null===this._linkedRecords&&(this._linkedRecords=new nF),this._linkedRecords.put(n),n.currentIndex=i,n}_remove(n){return this._addToRemovals(this._unlink(n))}_unlink(n){null!==this._linkedRecords&&this._linkedRecords.remove(n);const e=n._prev,i=n._next;return null===e?this._itHead=i:e._next=i,null===i?this._itTail=e:i._prev=e,n}_addToMoves(n,e){return n.previousIndex===e||(this._movesTail=null===this._movesTail?this._movesHead=n:this._movesTail._nextMoved=n),n}_addToRemovals(n){return null===this._unlinkedRecords&&(this._unlinkedRecords=new nF),this._unlinkedRecords.put(n),n.currentIndex=null,n._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=n,n._prevRemoved=null):(n._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=n),n}_addIdentityChange(n,e){return n.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=n:this._identityChangesTail._nextIdentityChange=n,n}}class jee{item;trackById;currentIndex=null;previousIndex=null;_nextPrevious=null;_prev=null;_next=null;_prevDup=null;_nextDup=null;_prevRemoved=null;_nextRemoved=null;_nextAdded=null;_nextMoved=null;_nextIdentityChange=null;constructor(n,e){this.item=n,this.trackById=e}}class Uee{_head=null;_tail=null;add(n){null===this._head?(this._head=this._tail=n,n._nextDup=null,n._prevDup=null):(this._tail._nextDup=n,n._prevDup=this._tail,n._nextDup=null,this._tail=n)}get(n,e){let i;for(i=this._head;null!==i;i=i._nextDup)if((null===e||e<=i.currentIndex)&&Object.is(i.trackById,n))return i;return null}remove(n){const e=n._prevDup,i=n._nextDup;return null===e?this._head=i:e._nextDup=i,null===i?this._tail=e:i._prevDup=e,null===this._head}}class nF{map=new Map;put(n){const e=n.trackById;let i=this.map.get(e);i||(i=new Uee,this.map.set(e,i)),i.add(n)}get(n,e){const o=this.map.get(n);return o?o.get(n,e):null}remove(n){const e=n.trackById;return this.map.get(e).remove(n)&&this.map.delete(e),n}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function iF(t,n,e){const i=t.previousIndex;if(null===i)return i;let o=0;return e&&i{class t{factories;static \u0275prov=te({token:t,providedIn:"root",factory:rF});constructor(e){this.factories=e}static create(e,i){if(null!=i){const o=i.factories.slice();e=e.concat(o)}return new t(e)}static extend(e){return{provide:t,useFactory:()=>{const i=D(t,{optional:!0,skipSelf:!0});return t.create(e,i||rF())}}}find(e){const i=this.factories.find(o=>o.supports(e));if(null!=i)return i;throw new X(901,!1)}}return t})();const qee=WR(null,"core",[]);let Kee=(()=>{class t{constructor(e){}static \u0275fac=function(i){return new(i||t)(ce(lr))};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function De(t){return"boolean"==typeof t?t:null!=t&&"false"!==t}function hr(t,n=NaN){return isNaN(parseFloat(t))||isNaN(Number(t))?n:Number(t)}const sw=Symbol("NOT_SET"),mF=new Set,ate={...ey,kind:"afterRenderEffectPhase",consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,value:sw,cleanup:null,consumerMarkedDirty(){if(this.sequence.impl.executing){if(null===this.sequence.lastPhase||this.sequence.lastPhase(Pu(c),c.value),c.signal[Rn]=c,c.registerCleanupFn=f=>(c.cleanup??=new Set).add(f),this.nodes[a]=c,this.hooks[a]=f=>c.phaseFn(f)}}afterRun(){super.afterRun(),this.lastPhase=null}destroy(){if(null!==this.onDestroyFns)for(const n of this.onDestroyFns)n();super.destroy();for(const n of this.nodes)if(n)try{for(const e of n.cleanup??mF)e()}finally{Au(n)}}}function gF(t,n){const e=xt(t),i=n.elementInjector||Jp();return new Th(e).create(i,n.projectableNodes,n.hostElement,n.environmentInjector,n.directives,n.bindings)}function _F(t,n,e){const i=Object.create(mte);i.source=t,i.computation=n,null!=e&&(i.equal=e);const r=()=>{if(Iu(i),Pu(i),i.value===rs)throw i.error;return i.value};return r[Rn]=i,r}const mte={...Ic,value:za,dirty:!0,error:null,equal:Jv,kind:"linkedSignal",producerMustRecompute:t=>t.value===za||t.value===Rc,producerRecomputeValue(t){if(t.value===Rc)throw new Error("");const n=t.value;t.value=Rc;const e=Oc(t);let i;try{const o=t.source();i=t.computation(o,n===za||n===rs?void 0:{source:t.sourceValue,value:n}),t.sourceValue=o}catch(o){i=rs,t.error=o}finally{Ou(t,e)}n!==za&&i!==rs&&t.equal(n,i)?t.value=n:(t.value=i,t.version++)}};function nt(t){return function gte(t){const n=Te(null);try{return t()}finally{Te(n)}}(t)}function Ii(t,n){return TD(t,n?.equal)}const xte=t=>t;function yF(t,n){const e=t[Rn],i=t;return i.set=o=>function fte(t,n){Iu(t),Ap(t,n),Pp(t)}(e,o),i.update=o=>function pte(t,n){if(Iu(t),t.value===rs)throw t.error;ID(t,n),Pp(t)}(e,o),i.asReadonly=Xy.bind(t),i}function dw(t,n){return t?n?t.endsWith("/")?n.startsWith("/")?t+n.slice(1):t+n:n.startsWith("/")?t+n:`${t}/${n}`:t:n}function xF(t){const n=t.search(/#|\?|$/);return"/"===t[n-1]?t.slice(0,n-1)+t.slice(n):t}function ws(t){return t&&"?"!==t[0]?`?${t}`:t}Error,Error;let Bl=(()=>{class t{historyGo(e){throw new Error("")}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>D(kF),providedIn:"root"})}return t})();const SF=new Z("");let kF=(()=>{class t extends Bl{_platformLocation;_baseHref;_removeListenerFns=[];constructor(e,i){super(),this._platformLocation=e,this._baseHref=i??this._platformLocation.getBaseHrefFromDOM()??D(et).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}prepareExternalUrl(e){return dw(this._baseHref,e)}path(e=!1){const i=this._platformLocation.pathname+ws(this._platformLocation.search),o=this._platformLocation.hash;return o&&e?`${i}${o}`:i}pushState(e,i,o,r){const s=this.prepareExternalUrl(o+ws(r));this._platformLocation.pushState(e,i,s)}replaceState(e,i,o,r){const s=this.prepareExternalUrl(o+ws(r));this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static \u0275fac=function(i){return new(i||t)(ce(pm),ce(SF,8))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Fd=(()=>{class t{_subject=new me;_basePath;_locationStrategy;_urlChangeListeners=[];_urlChangeSubscription=null;constructor(e){this._locationStrategy=e;const i=this._locationStrategy.getBaseHref();this._basePath=function Rte(t){if(new RegExp("^(https?:)?//").test(t)){const[,e]=t.split(/\/\/[^\/]+/);return e}return t}(xF(DF(i))),this._locationStrategy.onPopState(o=>{this._subject.next({url:this.path(!0),pop:!0,state:o.state,type:o.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(e=!1){return this.normalize(this._locationStrategy.path(e))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(e,i=""){return this.path()==this.normalize(e+ws(i))}normalize(e){return t.stripTrailingSlash(function Ate(t,n){if(!t||!n.startsWith(t))return n;const e=n.substring(t.length);return""===e||["/",";","?","#"].includes(e[0])?e:n}(this._basePath,DF(e)))}prepareExternalUrl(e){return e&&"/"!==e[0]&&(e="/"+e),this._locationStrategy.prepareExternalUrl(e)}go(e,i="",o=null){this._locationStrategy.pushState(o,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+ws(i)),o)}replaceState(e,i="",o=null){this._locationStrategy.replaceState(o,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+ws(i)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(e=0){this._locationStrategy.historyGo?.(e)}onUrlChange(e){return this._urlChangeListeners.push(e),this._urlChangeSubscription??=this.subscribe(i=>{this._notifyUrlChangeListeners(i.url,i.state)}),()=>{const i=this._urlChangeListeners.indexOf(e);this._urlChangeListeners.splice(i,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(e="",i){this._urlChangeListeners.forEach(o=>o(e,i))}subscribe(e,i,o){return this._subject.subscribe({next:e,error:i??void 0,complete:o??void 0})}static normalizeQueryParams=ws;static joinWithSlash=dw;static stripTrailingSlash=xF;static \u0275fac=function(i){return new(i||t)(ce(Bl))};static \u0275prov=te({token:t,factory:()=>function Ote(){return new Fd(ce(Bl))}(),providedIn:"root"})}return t})();function DF(t){return t.replace(/\/index.html$/,"")}let Nte=(()=>{class t extends Bl{_platformLocation;_baseHref="";_removeListenerFns=[];constructor(e,i){super(),this._platformLocation=e,null!=i&&(this._baseHref=i)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}path(e=!1){const i=this._platformLocation.hash??"#";return i.length>0?i.substring(1):i}prepareExternalUrl(e){const i=dw(this._baseHref,e);return i.length>0?"#"+i:i}pushState(e,i,o,r){const s=this.prepareExternalUrl(o+ws(r))||this._platformLocation.pathname;this._platformLocation.pushState(e,i,s)}replaceState(e,i,o,r){const s=this.prepareExternalUrl(o+ws(r))||this._platformLocation.pathname;this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static \u0275fac=function(i){return new(i||t)(ce(pm),ce(SF,8))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();var g_=function(t){return t[t.Decimal=0]="Decimal",t[t.Percent=1]="Percent",t[t.Currency=2]="Currency",t[t.Scientific=3]="Scientific",t}(g_||{}),io=function(t){return t[t.Format=0]="Format",t[t.Standalone=1]="Standalone",t}(io||{}),en=function(t){return t[t.Narrow=0]="Narrow",t[t.Abbreviated=1]="Abbreviated",t[t.Wide=2]="Wide",t[t.Short=3]="Short",t}(en||{}),To=function(t){return t[t.Short=0]="Short",t[t.Medium=1]="Medium",t[t.Long=2]="Long",t[t.Full=3]="Full",t}(To||{});function __(t,n){return Ho(to(t)[hn.DateFormat],n)}function b_(t,n){return Ho(to(t)[hn.TimeFormat],n)}function v_(t,n){return Ho(to(t)[hn.DateTimeFormat],n)}function Vo(t,n){const e=to(t),i=e[hn.NumberSymbols][n];if(typeof i>"u"){if(12===n)return e[hn.NumberSymbols][0];if(13===n)return e[hn.NumberSymbols][1]}return i}function TF(t){if(!t[hn.ExtraData])throw new X(2303,!1)}function Ho(t,n){for(let e=n;e>-1;e--)if(typeof t[e]<"u")return t[e];throw new X(2304,!1)}function hw(t){const[n,e]=t.split(":");return{hours:+n,minutes:+e}}const Xte=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,y_={},Zte=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?: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}|c{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]*)/;function EF(t,n,e,i){let o=function sne(t){if(OF(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[o,r=1,s=1]=t.split("-").map(a=>+a);return C_(o,r-1,s)}const e=parseFloat(t);if(!isNaN(t-e))return new Date(e);let i;if(i=t.match(Xte))return function ane(t){const n=new Date(0);let e=0,i=0;const o=t[8]?n.setUTCFullYear:n.setFullYear,r=t[8]?n.setUTCHours:n.setHours;t[9]&&(e=Number(t[9]+t[10]),i=Number(t[9]+t[11])),o.call(n,Number(t[1]),Number(t[2])-1,Number(t[3]));const s=Number(t[4]||0)-e,a=Number(t[5]||0)-i,l=Number(t[6]||0),c=Math.floor(1e3*parseFloat("0."+(t[7]||0)));return r.call(n,s,a,l,c),n}(i)}const n=new Date(t);if(!OF(n))throw new X(2311,!1);return n}(t);n=xs(e,n)||n;let a,s=[];for(;n;){if(a=Zte.exec(n),!a){s.push(n);break}{s=s.concat(a.slice(1));const f=s.pop();if(!f)break;n=f}}let l=o.getTimezoneOffset();i&&(l=IF(i,l),o=function rne(t,n){const o=t.getTimezoneOffset();return function one(t,n){return(t=new Date(t.getTime())).setMinutes(t.getMinutes()+n),t}(t,-1*(IF(n,o)-o))}(o,i));let c="";return s.forEach(f=>{const m=function ine(t){if(pw[t])return pw[t];let n;switch(t){case"G":case"GG":case"GGG":n=rn(3,en.Abbreviated);break;case"GGGG":n=rn(3,en.Wide);break;case"GGGGG":n=rn(3,en.Narrow);break;case"y":n=ei(0,1,0,!1,!0);break;case"yy":n=ei(0,2,0,!0,!0);break;case"yyy":n=ei(0,3,0,!1,!0);break;case"yyyy":n=ei(0,4,0,!1,!0);break;case"Y":n=k_(1);break;case"YY":n=k_(2,!0);break;case"YYY":n=k_(3);break;case"YYYY":n=k_(4);break;case"M":case"L":n=ei(1,1,1);break;case"MM":case"LL":n=ei(1,2,1);break;case"MMM":n=rn(2,en.Abbreviated);break;case"MMMM":n=rn(2,en.Wide);break;case"MMMMM":n=rn(2,en.Narrow);break;case"LLL":n=rn(2,en.Abbreviated,io.Standalone);break;case"LLLL":n=rn(2,en.Wide,io.Standalone);break;case"LLLLL":n=rn(2,en.Narrow,io.Standalone);break;case"w":n=fw(1);break;case"ww":n=fw(2);break;case"W":n=fw(1,!0);break;case"d":n=ei(2,1);break;case"dd":n=ei(2,2);break;case"c":case"cc":n=ei(7,1);break;case"ccc":n=rn(1,en.Abbreviated,io.Standalone);break;case"cccc":n=rn(1,en.Wide,io.Standalone);break;case"ccccc":n=rn(1,en.Narrow,io.Standalone);break;case"cccccc":n=rn(1,en.Short,io.Standalone);break;case"E":case"EE":case"EEE":n=rn(1,en.Abbreviated);break;case"EEEE":n=rn(1,en.Wide);break;case"EEEEE":n=rn(1,en.Narrow);break;case"EEEEEE":n=rn(1,en.Short);break;case"a":case"aa":case"aaa":n=rn(0,en.Abbreviated);break;case"aaaa":n=rn(0,en.Wide);break;case"aaaaa":n=rn(0,en.Narrow);break;case"b":case"bb":case"bbb":n=rn(0,en.Abbreviated,io.Standalone,!0);break;case"bbbb":n=rn(0,en.Wide,io.Standalone,!0);break;case"bbbbb":n=rn(0,en.Narrow,io.Standalone,!0);break;case"B":case"BB":case"BBB":n=rn(0,en.Abbreviated,io.Format,!0);break;case"BBBB":n=rn(0,en.Wide,io.Format,!0);break;case"BBBBB":n=rn(0,en.Narrow,io.Format,!0);break;case"h":n=ei(3,1,-12);break;case"hh":n=ei(3,2,-12);break;case"H":n=ei(3,1);break;case"HH":n=ei(3,2);break;case"m":n=ei(4,1);break;case"mm":n=ei(4,2);break;case"s":n=ei(5,1);break;case"ss":n=ei(5,2);break;case"S":n=ei(6,1);break;case"SS":n=ei(6,2);break;case"SSS":n=ei(6,3);break;case"Z":case"ZZ":case"ZZZ":n=x_(0);break;case"ZZZZZ":n=x_(3);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":n=x_(1);break;case"OOOO":case"ZZZZ":case"zzzz":n=x_(2);break;default:return null}return pw[t]=n,n}(f);c+=m?m(o,e,l):"''"===f?"'":f.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),c}function C_(t,n,e){const i=new Date(0);return i.setFullYear(t,n,e),i.setHours(0,0,0),i}function xs(t,n){const e=function Bte(t){return to(t)[hn.LocaleId]}(t);if(y_[e]??={},y_[e][n])return y_[e][n];let i="";switch(n){case"shortDate":i=__(t,To.Short);break;case"mediumDate":i=__(t,To.Medium);break;case"longDate":i=__(t,To.Long);break;case"fullDate":i=__(t,To.Full);break;case"shortTime":i=b_(t,To.Short);break;case"mediumTime":i=b_(t,To.Medium);break;case"longTime":i=b_(t,To.Long);break;case"fullTime":i=b_(t,To.Full);break;case"short":const o=xs(t,"shortTime"),r=xs(t,"shortDate");i=w_(v_(t,To.Short),[o,r]);break;case"medium":const s=xs(t,"mediumTime"),a=xs(t,"mediumDate");i=w_(v_(t,To.Medium),[s,a]);break;case"long":const l=xs(t,"longTime"),c=xs(t,"longDate");i=w_(v_(t,To.Long),[l,c]);break;case"full":const f=xs(t,"fullTime"),m=xs(t,"fullDate");i=w_(v_(t,To.Full),[f,m])}return i&&(y_[e][n]=i),i}function w_(t,n){return n&&(t=t.replace(/\{([^}]+)}/g,function(e,i){return null!=n&&i in n?n[i]:e})),t}function fr(t,n,e="-",i,o){let r="";(t<0||o&&t<=0)&&(o?t=1-t:(t=-t,r=e));let s=String(t);for(;s.length0||a>-e)&&(a+=e),3===t)0===a&&-12===e&&(a=12);else if(6===t)return function Qte(t,n){return fr(t,3).substring(0,n)}(a,n);const l=Vo(s,5);return fr(a,n,l,i,o)}}function rn(t,n,e=io.Format,i=!1){return function(o,r){return function ene(t,n,e,i,o,r){switch(e){case 2:return function jte(t,n,e){const i=to(t),r=Ho([i[hn.MonthsFormat],i[hn.MonthsStandalone]],n);return Ho(r,e)}(n,o,i)[t.getMonth()];case 1:return function Hte(t,n,e){const i=to(t),r=Ho([i[hn.DaysFormat],i[hn.DaysStandalone]],n);return Ho(r,e)}(n,o,i)[t.getDay()];case 0:const s=t.getHours(),a=t.getMinutes();if(r){const c=function Wte(t){const n=to(t);return TF(n),(n[hn.ExtraData][2]||[]).map(i=>"string"==typeof i?hw(i):[hw(i[0]),hw(i[1])])}(n),f=function Gte(t,n,e){const i=to(t);TF(i);const r=Ho([i[hn.ExtraData][0],i[hn.ExtraData][1]],n)||[];return Ho(r,e)||[]}(n,o,i),m=c.findIndex(g=>{if(Array.isArray(g)){const[_,w]=g,k=s>=_.hours&&a>=_.minutes,T=s0?Math.floor(o/60):Math.ceil(o/60);switch(t){case 0:return(o>=0?"+":"")+fr(s,2,r)+fr(Math.abs(o%60),2,r);case 1:return"GMT"+(o>=0?"+":"")+fr(s,1,r);case 2:return"GMT"+(o>=0?"+":"")+fr(s,2,r)+":"+fr(Math.abs(o%60),2,r);case 3:return 0===i?"Z":(o>=0?"+":"")+fr(s,2,r)+":"+fr(Math.abs(o%60),2,r);default:throw new X(2310,!1)}}}function PF(t){const n=t.getDay(),e=0===n?-3:4-n;return C_(t.getFullYear(),t.getMonth(),t.getDate()+e)}function fw(t,n=!1){return function(e,i){let o;if(n){const r=new Date(e.getFullYear(),e.getMonth(),1).getDay()-1,s=e.getDate();o=1+Math.floor((s+r)/7)}else{const r=PF(e),s=function nne(t){const n=C_(t,0,1).getDay();return C_(t,0,1+(n<=4?4:11)-n)}(r.getFullYear()),a=r.getTime()-s.getTime();o=1+Math.round(a/6048e5)}return fr(o,t,Vo(i,5))}}function k_(t,n=!1){return function(e,i){return fr(PF(e).getFullYear(),t,Vo(i,5),n)}}const pw={};function IF(t,n){t=t.replace(/:/g,"");const e=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(e)?n:e}function OF(t){return t instanceof Date&&!isNaN(t.valueOf())}const lne=/^(\d+)?\.((\d+)(-(\d+))?)?$/;function bw(t){const n=parseInt(t);if(isNaN(n))throw new X(2305,!1);return n}const yw=/\s+/,NF=[];let $t=(()=>{class t{_ngEl;_renderer;initialClasses=NF;rawClass;stateMap=new Map;constructor(e,i){this._ngEl=e,this._renderer=i}set klass(e){this.initialClasses=null!=e?e.trim().split(yw):NF}set ngClass(e){this.rawClass="string"==typeof e?e.trim().split(yw):e}ngDoCheck(){for(const i of this.initialClasses)this._updateState(i,!0);const e=this.rawClass;if(Array.isArray(e)||e instanceof Set)for(const i of e)this._updateState(i,!0);else if(null!=e)for(const i of Object.keys(e))this._updateState(i,!!e[i]);this._applyStateDiff()}_updateState(e,i){const o=this.stateMap.get(e);void 0!==o?(o.enabled!==i&&(o.changed=!0,o.enabled=i),o.touched=!0):this.stateMap.set(e,{enabled:i,changed:!0,touched:!0})}_applyStateDiff(){for(const e of this.stateMap){const i=e[0],o=e[1];o.changed?(this._toggleClass(i,o.enabled),o.changed=!1):o.touched||(o.enabled&&this._toggleClass(i,!1),this.stateMap.delete(i)),o.touched=!1}}_toggleClass(e,i){(e=e.trim()).length>0&&e.split(yw).forEach(o=>{i?this._renderer.addClass(this._ngEl.nativeElement,o):this._renderer.removeClass(this._ngEl.nativeElement,o)})}static \u0275fac=function(i){return new(i||t)(O(Re),O(Qn))};static \u0275dir=de({type:t,selectors:[["","ngClass",""]],inputs:{klass:[0,"class","klass"],ngClass:"ngClass"}})}return t})();class Cne{$implicit;ngForOf;index;count;constructor(n,e,i,o){this.$implicit=n,this.ngForOf=e,this.index=i,this.count=o}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 LF=(()=>{class t{_viewContainer;_template;_differs;set ngForOf(e){this._ngForOf=e,this._ngForOfDirty=!0}set ngForTrackBy(e){this._trackByFn=e}get ngForTrackBy(){return this._trackByFn}_ngForOf=null;_ngForOfDirty=!0;_differ=null;_trackByFn;constructor(e,i,o){this._viewContainer=e,this._template=i,this._differs=o}set ngForTemplate(e){e&&(this._template=e)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const e=this._ngForOf;!this._differ&&e&&(this._differ=this._differs.find(e).create(this.ngForTrackBy))}if(this._differ){const e=this._differ.diff(this._ngForOf);e&&this._applyChanges(e)}}_applyChanges(e){const i=this._viewContainer;e.forEachOperation((o,r,s)=>{if(null==o.previousIndex)i.createEmbeddedView(this._template,new Cne(o.item,this._ngForOf,-1,-1),null===s?void 0:s);else if(null==s)i.remove(null===r?void 0:r);else if(null!==r){const a=i.get(r);i.move(a,s),BF(a,o)}});for(let o=0,r=i.length;o{BF(i.get(o.currentIndex),o)})}static ngTemplateContextGuard(e,i){return!0}static \u0275fac=function(i){return new(i||t)(O(Ei),O(Ti),O(h_))};static \u0275dir=de({type:t,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"}})}return t})();function BF(t,n){t.context.$implicit=n.item}let tf=(()=>{class t{_viewContainer;_context=new wne;_thenTemplateRef=null;_elseTemplateRef=null;_thenViewRef=null;_elseViewRef=null;constructor(e,i){this._viewContainer=e,this._thenTemplateRef=i}set ngIf(e){this._context.$implicit=this._context.ngIf=e,this._updateView()}set ngIfThen(e){VF(e),this._thenTemplateRef=e,this._thenViewRef=null,this._updateView()}set ngIfElse(e){VF(e),this._elseTemplateRef=e,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 ngIfUseIfTypeGuard;static ngTemplateGuard_ngIf;static ngTemplateContextGuard(e,i){return!0}static \u0275fac=function(i){return new(i||t)(O(Ei),O(Ti))};static \u0275dir=de({type:t,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"}})}return t})();class wne{$implicit=null;ngIf=null}function VF(t,n){if(t&&!t.createEmbeddedView)throw new X(2020,!1)}let Ld=(()=>{class t{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;injector=D(He);constructor(e){this._viewContainerRef=e}ngOnChanges(e){if(this._shouldRecreateView(e)){const i=this._viewContainerRef;if(this._viewRef&&i.remove(i.indexOf(this._viewRef)),!this.ngTemplateOutlet)return void(this._viewRef=null);const o=this._createContextForwardProxy();this._viewRef=i.createEmbeddedView(this.ngTemplateOutlet,o,{injector:this._getInjector()})}}_getInjector(){return"outlet"===this.ngTemplateOutletInjector?this.injector:this.ngTemplateOutletInjector??void 0}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,i,o)=>!!this.ngTemplateOutletContext&&Reflect.set(this.ngTemplateOutletContext,i,o),get:(e,i,o)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,i,o)}})}static \u0275fac=function(i){return new(i||t)(O(Ei))};static \u0275dir=de({type:t,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},features:[_i]})}return t})();function Ss(t,n){return new X(2100,!1)}const Lne=new Z(""),Bne=new Z("");let fa=(()=>{class t{locale;defaultTimezone;defaultOptions;constructor(e,i,o){this.locale=e,this.defaultTimezone=i,this.defaultOptions=o}transform(e,i,o,r){if(null==e||""===e||e!=e)return null;try{return EF(e,i??this.defaultOptions?.dateFormat??"mediumDate",r||this.locale,o??this.defaultOptions?.timezone??this.defaultTimezone??void 0)}catch(s){throw Ss()}}static \u0275fac=function(i){return new(i||t)(O(ua,16),O(Lne,24),O(Bne,24))};static \u0275pipe=Hi({name:"date",type:t,pure:!0})}return t})(),Vl=(()=>{class t{_locale;constructor(e){this._locale=e}transform(e,i,o){if(!function Sw(t){return!(null==t||""===t||t!=t)}(e))return null;o||=this._locale;try{return function pne(t,n,e){return function gw(t,n,e,i,o,r,s=!1){let a="",l=!1;if(isFinite(t)){let c=function gne(t){let i,o,r,s,a,n=Math.abs(t)+"",e=0;for((o=n.indexOf("."))>-1&&(n=n.replace(".","")),(r=n.search(/e/i))>0?(o<0&&(o=r),o+=+n.slice(r+1),n=n.substring(0,r)):o<0&&(o=n.length),r=0;"0"===n.charAt(r);r++);if(r===(a=n.length))i=[0],o=1;else{for(a--;"0"===n.charAt(a);)a--;for(o-=r,i=[],s=0;r<=a;r++,s++)i[s]=Number(n.charAt(r))}return o>22&&(i=i.splice(0,21),e=o-1,o=1),{digits:i,exponent:e,integerLen:o}}(t);s&&(c=function mne(t){if(0===t.digits[0])return t;const n=t.digits.length-t.integerLen;return t.exponent?t.exponent+=2:(0===n?t.digits.push(0,0):1===n&&t.digits.push(0),t.integerLen+=2),t}(c));let f=n.minInt,m=n.minFrac,g=n.maxFrac;if(r){const R=r.match(lne);if(null===R)throw new X(2306,!1);const W=R[1],Y=R[3],K=R[5];null!=W&&(f=bw(W)),null!=Y&&(m=bw(Y)),null!=K?g=bw(K):null!=Y&&m>g&&(g=m)}!function _ne(t,n,e){if(n>e)throw new X(2307,!1);let i=t.digits,o=i.length-t.integerLen;const r=Math.min(Math.max(n,o),e);let s=r+t.integerLen,a=i[s];if(s>0){i.splice(Math.max(t.integerLen,s));for(let m=s;m=5)if(s-1<0){for(let m=0;m>s;m--)i.unshift(0),t.integerLen++;i.unshift(1),t.integerLen++}else i[s-1]++;for(;o=c?w.pop():l=!1),g>=10?1:0},0);f&&(i.unshift(f),t.integerLen++)}(c,m,g);let _=c.digits,w=c.integerLen;const k=c.exponent;let T=[];for(l=_.every(R=>!R);w0?T=_.splice(w,_.length):(T=_,_=[0]);const I=[];for(_.length>=n.lgSize&&I.unshift(_.splice(-n.lgSize,_.length).join(""));_.length>n.gSize;)I.unshift(_.splice(-n.gSize,_.length).join(""));_.length&&I.unshift(_.join("")),a=I.join(Vo(e,i)),T.length&&(a+=Vo(e,o)+T.join("")),k&&(a+=Vo(e,6)+"+"+k)}else a=Vo(e,9);return a=t<0&&!l?n.negPre+a+n.negSuf:n.posPre+a+n.posSuf,a}(t,function _w(t,n="-"){const e={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},i=t.split(";"),o=i[0],r=i[1],s=-1!==o.indexOf(".")?o.split("."):[o.substring(0,o.lastIndexOf("0")+1),o.substring(o.lastIndexOf("0")+1)],a=s[0],l=s[1]||"";e.posPre=a.substring(0,a.indexOf("#"));for(let f=0;f{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();class UF{_doc;constructor(n){this._doc=n}manager}let Dw=(()=>{class t extends UF{constructor(e){super(e)}supports(e){return!0}addEventListener(e,i,o,r){return e.addEventListener(i,o,r),()=>this.removeEventListener(e,i,o,r)}removeEventListener(e,i,o,r){return e.removeEventListener(i,o,r)}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const Mw=new Z("");let zF=(()=>{class t{_zone;_plugins;_eventNameToPlugin=new Map;constructor(e,i){this._zone=i,e.forEach(s=>{s.manager=this});const o=e.filter(s=>!(s instanceof Dw));this._plugins=o.slice().reverse();const r=e.find(s=>s instanceof Dw);r&&this._plugins.push(r)}addEventListener(e,i,o,r){return this._findPluginFor(i).addEventListener(e,i,o,r)}getZone(){return this._zone}_findPluginFor(e){let i=this._eventNameToPlugin.get(e);if(i)return i;if(i=this._plugins.find(r=>r.supports(e)),!i)throw new X(5101,!1);return this._eventNameToPlugin.set(e,i),i}static \u0275fac=function(i){return new(i||t)(ce(Mw),ce(_e))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const Tw="ng-app-id";function $F(t){for(const n of t)n.remove()}function WF(t,n){const e=n.createElement("style");return e.textContent=t,e}function Ew(t,n){const e=n.createElement("link");return e.setAttribute("rel","stylesheet"),e.setAttribute("href",t),e}let GF=(()=>{class t{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(e,i,o,r={}){this.doc=e,this.appId=i,this.nonce=o,function Kne(t,n,e,i){const o=t.head?.querySelectorAll(`style[${Tw}="${n}"],link[${Tw}="${n}"]`);if(o)for(const r of o)r.removeAttribute(Tw),r instanceof HTMLLinkElement?i.set(r.href.slice(r.href.lastIndexOf("/")+1),{usage:0,elements:[r]}):r.textContent&&e.set(r.textContent,{usage:0,elements:[r]})}(e,i,this.inline,this.external),this.hosts.add(e.head)}addStyles(e,i){for(const o of e)this.addUsage(o,this.inline,WF);i?.forEach(o=>this.addUsage(o,this.external,Ew))}removeStyles(e,i){for(const o of e)this.removeUsage(o,this.inline);i?.forEach(o=>this.removeUsage(o,this.external))}addUsage(e,i,o){const r=i.get(e);r?r.usage++:i.set(e,{usage:1,elements:[...this.hosts].map(s=>this.addElement(s,o(e,this.doc)))})}removeUsage(e,i){const o=i.get(e);o&&(o.usage--,o.usage<=0&&($F(o.elements),i.delete(e)))}ngOnDestroy(){for(const[,{elements:e}]of[...this.inline,...this.external])$F(e);this.hosts.clear()}addHost(e){this.hosts.add(e);for(const[i,{elements:o}]of this.inline)o.push(this.addElement(e,WF(i,this.doc)));for(const[i,{elements:o}]of this.external)o.push(this.addElement(e,Ew(i,this.doc)))}removeHost(e){this.hosts.delete(e)}addElement(e,i){return this.nonce&&i.setAttribute("nonce",this.nonce),e.appendChild(i)}static \u0275fac=function(i){return new(i||t)(ce(et),ce(Js),ce(xC,8),ce(wC))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const Pw={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/",math:"http://www.w3.org/1998/Math/MathML"},Iw=/%COMP%/g,eie=new Z("",{factory:()=>!0});function KF(t,n){return n.map(e=>e.replace(Iw,t))}let Ow=(()=>{class t{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;constructor(e,i,o,r,s,a,l=null,c=null){this.eventManager=e,this.sharedStylesHost=i,this.appId=o,this.removeStylesOnCompDestroy=r,this.doc=s,this.ngZone=a,this.nonce=l,this.tracingService=c,this.defaultRenderer=new Aw(e,s,a,this.tracingService)}createRenderer(e,i){if(!e||!i)return this.defaultRenderer;const o=this.getOrCreateRenderer(e,i);return o instanceof ZF?o.applyToHost(e):o instanceof Rw&&o.applyStyles(),o}getOrCreateRenderer(e,i){const o=this.rendererByCompId;let r=o.get(i.id);if(!r){const s=this.doc,a=this.ngZone,l=this.eventManager,c=this.sharedStylesHost,f=this.removeStylesOnCompDestroy,m=this.tracingService;switch(i.encapsulation){case No.Emulated:r=new ZF(l,c,i,this.appId,f,s,a,m);break;case No.ShadowDom:return new XF(l,e,i,s,a,this.nonce,m,c);case No.ExperimentalIsolatedShadowDom:return new XF(l,e,i,s,a,this.nonce,m);default:r=new Rw(l,c,i,f,s,a,m)}o.set(i.id,r)}return r}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(e){this.rendererByCompId.delete(e)}static \u0275fac=function(i){return new(i||t)(ce(zF),ce(GF),ce(Js),ce(eie),ce(et),ce(_e),ce(xC),ce(oa,8))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class Aw{eventManager;doc;ngZone;tracingService;data=Object.create(null);throwOnSyntheticProps=!0;constructor(n,e,i,o){this.eventManager=n,this.doc=e,this.ngZone=i,this.tracingService=o}destroy(){}destroyNode=null;createElement(n,e){return e?this.doc.createElementNS(Pw[e]||e,n):this.doc.createElement(n)}createComment(n){return this.doc.createComment(n)}createText(n){return this.doc.createTextNode(n)}appendChild(n,e){(YF(n)?n.content:n).appendChild(e)}insertBefore(n,e,i){n&&(YF(n)?n.content:n).insertBefore(e,i)}removeChild(n,e){e.remove()}selectRootElement(n,e){let i="string"==typeof n?this.doc.querySelector(n):n;if(!i)throw new X(-5104,!1);return e||(i.textContent=""),i}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,e,i,o){if(o){e=o+":"+e;const r=Pw[o];r?n.setAttributeNS(r,e,i):n.setAttribute(e,i)}else n.setAttribute(e,i)}removeAttribute(n,e,i){if(i){const o=Pw[i];o?n.removeAttributeNS(o,e):n.removeAttribute(`${i}:${e}`)}else n.removeAttribute(e)}addClass(n,e){n.classList.add(e)}removeClass(n,e){n.classList.remove(e)}setStyle(n,e,i,o){o&(ia.DashCase|ia.Important)?n.style.setProperty(e,i,o&ia.Important?"important":""):n.style[e]=i}removeStyle(n,e,i){i&ia.DashCase?n.style.removeProperty(e):n.style[e]=""}setProperty(n,e,i){null!=n&&(n[e]=i)}setValue(n,e){n.nodeValue=e}listen(n,e,i,o){if("string"==typeof n&&!(n=Xs().getGlobalEventTarget(this.doc,n)))throw new X(5102,!1);let r=this.decoratePreventDefault(i);return this.tracingService?.wrapEventListener&&(r=this.tracingService.wrapEventListener(n,e,r)),this.eventManager.addEventListener(n,e,r,o)}decoratePreventDefault(n){return e=>{if("__ngUnwrap__"===e)return n;!1===n(e)&&e.preventDefault()}}}function YF(t){return"TEMPLATE"===t.tagName&&void 0!==t.content}class XF extends Aw{hostEl;sharedStylesHost;shadowRoot;constructor(n,e,i,o,r,s,a,l){super(n,o,r,a),this.hostEl=e,this.sharedStylesHost=l,this.shadowRoot=e.attachShadow({mode:"open"}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let c=i.styles;c=KF(i.id,c);for(const m of c){const g=document.createElement("style");s&&g.setAttribute("nonce",s),g.textContent=m,this.shadowRoot.appendChild(g)}const f=i.getExternalStyles?.();if(f)for(const m of f){const g=Ew(m,o);s&&g.setAttribute("nonce",s),this.shadowRoot.appendChild(g)}}nodeOrShadowRoot(n){return n===this.hostEl?this.shadowRoot:n}appendChild(n,e){return super.appendChild(this.nodeOrShadowRoot(n),e)}insertBefore(n,e,i){return super.insertBefore(this.nodeOrShadowRoot(n),e,i)}removeChild(n,e){return super.removeChild(null,e)}parentNode(n){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(n)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}}class Rw extends Aw{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(n,e,i,o,r,s,a,l){super(n,r,s,a),this.sharedStylesHost=e,this.removeStylesOnCompDestroy=o;let c=i.styles;this.styles=l?KF(l,c):c,this.styleUrls=i.getExternalStyles?.(l)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&0===bl.size&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}}class ZF extends Rw{contentAttr;hostAttr;constructor(n,e,i,o,r,s,a,l){const c=o+"-"+i.id;super(n,e,i,r,s,a,l,c),this.contentAttr=function tie(t){return"_ngcontent-%COMP%".replace(Iw,t)}(c),this.hostAttr=function nie(t){return"_nghost-%COMP%".replace(Iw,t)}(c)}applyToHost(n){this.applyStyles(),this.setAttribute(n,this.hostAttr,"")}createElement(n,e){const i=super.createElement(n,e);return super.setAttribute(i,this.contentAttr,""),i}}class Nw extends gU{supportsDOMEvents=!0;static makeCurrent(){!function mU(t){qM??=t}(new Nw)}onAndCancel(n,e,i,o){return n.addEventListener(e,i,o),()=>{n.removeEventListener(e,i,o)}}dispatchEvent(n,e){n.dispatchEvent(e)}remove(n){n.remove()}createElement(n,e){return(e=e||this.getDefaultDocument()).createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,e){return"window"===e?window:"document"===e?n:"body"===e?n.body:null}getBaseHref(n){const e=function rie(){return nf=nf||document.head.querySelector("base"),nf?nf.getAttribute("href"):null}();return null==e?null:function sie(t){return new URL(t,document.baseURI).pathname}(e)}resetBaseElement(){nf=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return KM(document.cookie,n)}}let nf=null,lie=(()=>{class t{build(){return new XMLHttpRequest}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const JF=["alt","control","meta","shift"],cie={"\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"},die={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey};let uie=(()=>{class t extends UF{constructor(e){super(e)}supports(e){return null!=t.parseEventName(e)}addEventListener(e,i,o,r){const s=t.parseEventName(i),a=t.eventCallback(s.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Xs().onAndCancel(e,s.domEventName,a,r))}static parseEventName(e){const i=e.toLowerCase().split("."),o=i.shift();if(0===i.length||"keydown"!==o&&"keyup"!==o)return null;const r=t._normalizeKey(i.pop());let s="",a=i.indexOf("code");if(a>-1&&(i.splice(a,1),s="code."),JF.forEach(c=>{const f=i.indexOf(c);f>-1&&(i.splice(f,1),s+=c+".")}),s+=r,0!=i.length||0===r.length)return null;const l={};return l.domEventName=o,l.fullKey=s,l}static matchEventFullKeyCode(e,i){let o=cie[e.key]||e.key,r="";return i.indexOf("code.")>-1&&(o=e.code,r="code."),!(null==o||!o)&&(o=o.toLowerCase()," "===o?o="space":"."===o&&(o="dot"),JF.forEach(s=>{s!==o&&(0,die[s])(e)&&(r+=s+".")}),r+=o,r===i)}static eventCallback(e,i,o){return r=>{t.matchEventFullKeyCode(r,e)&&o.runGuarded(()=>i(r))}}static _normalizeKey(e){return"esc"===e?"escape":e}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const mie=WR(qee,"browser",[{provide:wC,useValue:XM},{provide:u2,useValue:function hie(){Nw.makeCurrent()},multi:!0},{provide:et,useFactory:function pie(){return function A7(t){CC=t}(document),document}}]),nN=[{provide:ZI,useClass:class aie{addToWindow(n){Fn.getAngularTestability=(i,o=!0)=>{const r=n.findTestabilityInTree(i,o);if(null==r)throw new X(5103,!1);return r},Fn.getAllAngularTestabilities=()=>n.getAllTestabilities(),Fn.getAllAngularRootElements=()=>n.getAllRootElements(),Fn.frameworkStabilizers||(Fn.frameworkStabilizers=[]),Fn.frameworkStabilizers.push(i=>{const o=Fn.getAllAngularTestabilities();let r=o.length;const s=function(){r--,0==r&&i()};o.forEach(a=>{a.whenStable(s)})})}findTestabilityInTree(n,e,i){return null==e?null:n.getTestability(e)??(i?Xs().isShadowRoot(e)?this.findTestabilityInTree(n,e.host,!0):this.findTestabilityInTree(n,e.parentElement,!0):null)}}},{provide:XI,useClass:f0},{provide:f0,useClass:f0}],iN=[{provide:My,useValue:"root"},{provide:sl,useFactory:function fie(){return new sl}},{provide:Mw,useClass:Dw,multi:!0},{provide:Mw,useClass:uie,multi:!0},Ow,GF,zF,{provide:Lo,useExisting:Ow},{provide:YM,useClass:lie},[]];let oN=(()=>{class t{constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[...iN,...nN],imports:[qne,Kee]})}return t})();var Le=function(t){return t[t.State=0]="State",t[t.Transition=1]="Transition",t[t.Sequence=2]="Sequence",t[t.Group=3]="Group",t[t.Animate=4]="Animate",t[t.Keyframes=5]="Keyframes",t[t.Style=6]="Style",t[t.Trigger=7]="Trigger",t[t.Reference=8]="Reference",t[t.AnimateChild=9]="AnimateChild",t[t.AnimateRef=10]="AnimateRef",t[t.Query=11]="Query",t[t.Stagger=12]="Stagger",t}(Le||{});const ks="*";function rN(t){return{type:Le.Style,styles:t,offset:null}}class of{_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_originalOnDoneFns=[];_originalOnStartFns=[];_started=!1;_destroyed=!1;_finished=!1;_position=0;parentPlayer=null;totalTime;constructor(n=0,e=0){this.totalTime=n+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(n=>n()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(n){this._position=this.totalTime?n*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(n){const e="start"==n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}class sN{_onDoneFns=[];_onStartFns=[];_finished=!1;_started=!1;_destroyed=!1;_onDestroyFns=[];parentPlayer=null;totalTime=0;players;constructor(n){this.players=n;let e=0,i=0,o=0;const r=this.players.length;0==r?queueMicrotask(()=>this._onFinish()):this.players.forEach(s=>{s.onDone(()=>{++e==r&&this._onFinish()}),s.onDestroy(()=>{++i==r&&this._onDestroy()}),s.onStart(()=>{++o==r&&this._onStart()})}),this.totalTime=this.players.reduce((s,a)=>Math.max(s,a.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this.players.forEach(n=>n.init())}onStart(n){this._onStartFns.push(n)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(n=>n()),this._onStartFns=[])}onDone(n){this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(n=>n.play())}pause(){this.players.forEach(n=>n.pause())}restart(){this.players.forEach(n=>n.restart())}finish(){this._onFinish(),this.players.forEach(n=>n.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(n=>n.destroy()),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this.players.forEach(n=>n.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(n){const e=n*this.totalTime;this.players.forEach(i=>{const o=i.totalTime?Math.min(1,e/i.totalTime):1;i.setPosition(o)})}getPosition(){const n=this.players.reduce((e,i)=>null===e||i.totalTime>e.totalTime?i:e,null);return null!=n?n.getPosition():0}beforeDestroy(){this.players.forEach(n=>{n.beforeDestroy&&n.beforeDestroy()})}triggerCallback(n){const e="start"==n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}function lN(t){return new X(3e3,!1)}function Die(t){return new X(3002,!1)}function pa(t){switch(t.length){case 0:return new of;case 1:return t[0];default:return new sN(t)}}function cN(t,n,e=new Map,i=new Map){const o=[],r=[];let s=-1,a=null;if(n.forEach(l=>{const c=l.get("offset"),f=c==s,m=f&&a||new Map;l.forEach((g,_)=>{let w=_,k=g;if("offset"!==_)switch(w=t.normalizePropertyName(w,o),k){case"!":k=e.get(_);break;case ks:k=i.get(_);break;default:k=t.normalizeStyleValue(_,w,k,o)}m.set(w,k)}),f||r.push(m),a=m,s=c}),o.length)throw function Lie(){return new X(3502,!1)}();return r}function jw(t,n,e,i){switch(n){case"start":t.onStart(()=>i(e&&Uw(e,"start",t)));break;case"done":t.onDone(()=>i(e&&Uw(e,"done",t)));break;case"destroy":t.onDestroy(()=>i(e&&Uw(e,"destroy",t)))}}function Uw(t,n,e){const r=zw(t.element,t.triggerName,t.fromState,t.toState,n||t.phaseName,e.totalTime??t.totalTime,!!e.disabled),s=t._data;return null!=s&&(r._data=s),r}function zw(t,n,e,i,o="",r=0,s){return{element:t,triggerName:n,fromState:e,toState:i,phaseName:o,totalTime:r,disabled:!!s}}function Eo(t,n,e){let i=t.get(n);return i||t.set(n,i=e),i}function dN(t){const n=t.indexOf(":");return[t.substring(1,n),t.slice(n+1)]}const Yie=typeof document>"u"?null:document.documentElement;function $w(t){const n=t.parentNode||t.host||null;return n===Yie?null:n}let Hl=null,uN=!1;function hN(t,n){for(;n;){if(n===t)return!0;n=$w(n)}return!1}function fN(t,n,e){if(e)return Array.from(t.querySelectorAll(n));const i=t.querySelector(n);return i?[i]:[]}const mN="ng-enter",Ww="ng-leave",M_="ng-trigger",T_=".ng-trigger",gN="ng-animating",Gw=".ng-animating";function Ds(t){if("number"==typeof t)return t;const n=t.match(/^(-?[\.\d]+)(m?s)/);return!n||n.length<2?0:qw(parseFloat(n[1]),n[2])}function qw(t,n){return"s"===n?1e3*t:t}function E_(t,n,e){return t.hasOwnProperty("duration")?t:function noe(t,n,e){let i,o=0,r="";if("string"==typeof t){const s=t.match(toe);if(null===s)return n.push(lN()),{duration:0,delay:0,easing:""};i=qw(parseFloat(s[1]),s[2]);const a=s[3];null!=a&&(o=qw(parseFloat(a),s[4]));const l=s[5];l&&(r=l)}else i=t;if(!e){let s=!1,a=n.length;i<0&&(n.push(function _ie(){return new X(3100,!1)}()),s=!0),o<0&&(n.push(function bie(){return new X(3101,!1)}()),s=!0),s&&n.splice(a,0,lN())}return{duration:i,delay:o,easing:r}}(t,n,e)}const toe=/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i;function Hr(t,n,e){n.forEach((i,o)=>{const r=Yw(o);e&&!e.has(o)&&e.set(o,t.style[r]),t.style[r]=i})}function jl(t,n){n.forEach((e,i)=>{const o=Yw(i);t.style[o]=""})}function rf(t){return Array.isArray(t)?1==t.length?t[0]:function gie(t,n=null){return{type:Le.Sequence,steps:t,options:n}}(t):t}const Kw=new RegExp("{{\\s*(.+?)\\s*}}","g");function _N(t){let n=[];if("string"==typeof t){let e;for(;e=Kw.exec(t);)n.push(e[1]);Kw.lastIndex=0}return n}function sf(t,n,e){const i=`${t}`,o=i.replace(Kw,(r,s)=>{let a=n[s];return null==a&&(e.push(function yie(){return new X(3003,!1)}()),a=""),a.toString()});return o==i?t:o}const roe=/-+([a-z0-9])/g;function Yw(t){return t.replace(roe,(...n)=>n[1].toUpperCase())}function Po(t,n,e){switch(n.type){case Le.Trigger:return t.visitTrigger(n,e);case Le.State:return t.visitState(n,e);case Le.Transition:return t.visitTransition(n,e);case Le.Sequence:return t.visitSequence(n,e);case Le.Group:return t.visitGroup(n,e);case Le.Animate:return t.visitAnimate(n,e);case Le.Keyframes:return t.visitKeyframes(n,e);case Le.Style:return t.visitStyle(n,e);case Le.Reference:return t.visitReference(n,e);case Le.AnimateChild:return t.visitAnimateChild(n,e);case Le.AnimateRef:return t.visitAnimateRef(n,e);case Le.Query:return t.visitQuery(n,e);case Le.Stagger:return t.visitStagger(n,e);default:throw function Cie(){return new X(3004,!1)}()}}function Xw(t,n){return window.getComputedStyle(t)[n]}let Zw=(()=>{class t{validateStyleProperty(e){return function Zie(t){Hl||(Hl=function Qie(){return typeof document<"u"?document.body:null}()||{},uN=!!Hl.style&&"WebkitAppearance"in Hl.style);let n=!0;return Hl.style&&!function Xie(t){return"ebkit"==t.substring(1,6)}(t)&&(n=t in Hl.style,!n&&uN&&(n="Webkit"+t.charAt(0).toUpperCase()+t.slice(1)in Hl.style)),n}(e)}containsElement(e,i){return hN(e,i)}getParentElement(e){return $w(e)}query(e,i,o){return fN(e,i,o)}computeStyle(e,i,o){return o||""}animate(e,i,o,r,s,a=[],l){return new of(o,r)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class Qw{static NOOP=new Zw}class Jw{}const foe=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]);class vN extends Jw{normalizePropertyName(n,e){return Yw(n)}normalizeStyleValue(n,e,i,o){let r="";const s=i.toString().trim();if(foe.has(e)&&0!==i&&"0"!==i)if("number"==typeof i)r="px";else{const a=i.match(/^[+-]?[\d\.]+([a-z]*)$/);a&&0==a[1].length&&o.push(function wie(){return new X(3005,!1)}())}return s+r}}const I_=new Set(["true","1"]),O_=new Set(["false","0"]);function yN(t,n){const e=I_.has(t)||O_.has(t),i=I_.has(n)||O_.has(n);return(o,r)=>{let s="*"==t||t==o,a="*"==n||n==r;return!s&&e&&"boolean"==typeof o&&(s=o?I_.has(t):O_.has(t)),!a&&i&&"boolean"==typeof r&&(a=r?I_.has(n):O_.has(n)),s&&a}}const _oe=new RegExp("s*:selfs*,?","g");function tx(t,n,e,i){return new boe(t).build(n,e,i)}class boe{_driver;constructor(n){this._driver=n}build(n,e,i){const o=new Coe(e);return this._resetContextStyleTimingState(o),Po(this,rf(n),o)}_resetContextStyleTimingState(n){n.currentQuerySelector="",n.collectedStyles=new Map,n.collectedStyles.set("",new Map),n.currentTime=0}visitTrigger(n,e){let i=e.queryCount=0,o=e.depCount=0;const r=[],s=[];return"@"==n.name.charAt(0)&&e.errors.push(function xie(){return new X(3006,!1)}()),n.definitions.forEach(a=>{if(this._resetContextStyleTimingState(e),a.type==Le.State){const l=a,c=l.name;c.toString().split(/\s*,\s*/).forEach(f=>{l.name=f,r.push(this.visitState(l,e))}),l.name=c}else if(a.type==Le.Transition){const l=this.visitTransition(a,e);i+=l.queryCount,o+=l.depCount,s.push(l)}else e.errors.push(function Sie(){return new X(3007,!1)}())}),{type:Le.Trigger,name:n.name,states:r,transitions:s,queryCount:i,depCount:o,options:null}}visitState(n,e){const i=this.visitStyle(n.styles,e),o=n.options&&n.options.params||null;if(i.containsDynamicStyles){const r=new Set,s=o||{};i.styles.forEach(a=>{a instanceof Map&&a.forEach(l=>{_N(l).forEach(c=>{s.hasOwnProperty(c)||r.add(c)})})}),r.size&&e.errors.push(function kie(){return new X(3008,!1)}(0,r.values()))}return{type:Le.State,name:n.name,style:i,options:o?{params:o}:null}}visitTransition(n,e){e.queryCount=0,e.depCount=0;const i=Po(this,rf(n.animation),e),o=function poe(t,n){const e=[];return"string"==typeof t?t.split(/\s*,\s*/).forEach(i=>function moe(t,n,e){if(":"==t[0]){const l=function goe(t,n){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(e,i)=>parseFloat(i)>parseFloat(e);case":decrement":return(e,i)=>parseFloat(i) *"}}(t,e);if("function"==typeof l)return void n.push(l);t=l}const i=t.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(null==i||i.length<4)return e.push(function Rie(){return new X(3015,!1)}()),n;const o=i[1],r=i[2],s=i[3];n.push(yN(o,s)),"<"==r[0]&&("*"!=o||"*"!=s)&&n.push(yN(s,o))}(i,e,n)):e.push(t),e}(n.expr,e.errors);return{type:Le.Transition,matchers:o,animation:i,queryCount:e.queryCount,depCount:e.depCount,options:Ul(n.options)}}visitSequence(n,e){return{type:Le.Sequence,steps:n.steps.map(i=>Po(this,i,e)),options:Ul(n.options)}}visitGroup(n,e){const i=e.currentTime;let o=0;const r=n.steps.map(s=>{e.currentTime=i;const a=Po(this,s,e);return o=Math.max(o,e.currentTime),a});return e.currentTime=o,{type:Le.Group,steps:r,options:Ul(n.options)}}visitAnimate(n,e){const i=function xoe(t,n){if(t.hasOwnProperty("duration"))return t;if("number"==typeof t)return nx(E_(t,n).duration,0,"");const e=t;if(e.split(/\s+/).some(r=>"{"==r.charAt(0)&&"{"==r.charAt(1))){const r=nx(0,0,"");return r.dynamic=!0,r.strValue=e,r}const o=E_(e,n);return nx(o.duration,o.delay,o.easing)}(n.timings,e.errors);e.currentAnimateTimings=i;let o,r=n.styles?n.styles:rN({});if(r.type==Le.Keyframes)o=this.visitKeyframes(r,e);else{let s=n.styles,a=!1;if(!s){a=!0;const c={};i.easing&&(c.easing=i.easing),s=rN(c)}e.currentTime+=i.duration+i.delay;const l=this.visitStyle(s,e);l.isEmptyStep=a,o=l}return e.currentAnimateTimings=null,{type:Le.Animate,timings:i,style:o,options:null}}visitStyle(n,e){const i=this._makeStyleAst(n,e);return this._validateStyleAst(i,e),i}_makeStyleAst(n,e){const i=[],o=Array.isArray(n.styles)?n.styles:[n.styles];for(let a of o)"string"==typeof a?a===ks?i.push(a):e.errors.push(Die()):i.push(new Map(Object.entries(a)));let r=!1,s=null;return i.forEach(a=>{if(a instanceof Map&&(a.has("easing")&&(s=a.get("easing"),a.delete("easing")),!r))for(let l of a.values())if(l.toString().indexOf("{{")>=0){r=!0;break}}),{type:Le.Style,styles:i,easing:s,offset:n.offset,containsDynamicStyles:r,options:null}}_validateStyleAst(n,e){const i=e.currentAnimateTimings;let o=e.currentTime,r=e.currentTime;i&&r>0&&(r-=i.duration+i.delay),n.styles.forEach(s=>{"string"!=typeof s&&s.forEach((a,l)=>{const c=e.collectedStyles.get(e.currentQuerySelector),f=c.get(l);let m=!0;f&&(r!=o&&r>=f.startTime&&o<=f.endTime&&(e.errors.push(function Mie(){return new X(3010,!1)}()),m=!1),r=f.startTime),m&&c.set(l,{startTime:r,endTime:o}),e.options&&function ooe(t,n,e){const i=n.params||{},o=_N(t);o.length&&o.forEach(r=>{i.hasOwnProperty(r)||e.push(function vie(){return new X(3001,!1)}())})}(a,e.options,e.errors)})})}visitKeyframes(n,e){const i={type:Le.Keyframes,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push(function Tie(){return new X(3011,!1)}()),i;let r=0;const s=[];let a=!1,l=!1,c=0;const f=n.steps.map(I=>{const R=this._makeStyleAst(I,e);let W=null!=R.offset?R.offset:function woe(t){if("string"==typeof t)return null;let n=null;if(Array.isArray(t))t.forEach(e=>{if(e instanceof Map&&e.has("offset")){const i=e;n=parseFloat(i.get("offset")),i.delete("offset")}});else if(t instanceof Map&&t.has("offset")){const e=t;n=parseFloat(e.get("offset")),e.delete("offset")}return n}(R.styles),Y=0;return null!=W&&(r++,Y=R.offset=W),l=l||Y<0||Y>1,a=a||Y0&&r{const W=g>0?R==_?1:g*R:s[R],Y=W*T;e.currentTime=w+k.delay+Y,k.duration=Y,this._validateStyleAst(I,e),I.offset=W,i.styles.push(I)}),i}visitReference(n,e){return{type:Le.Reference,animation:Po(this,rf(n.animation),e),options:Ul(n.options)}}visitAnimateChild(n,e){return e.depCount++,{type:Le.AnimateChild,options:Ul(n.options)}}visitAnimateRef(n,e){return{type:Le.AnimateRef,animation:this.visitReference(n.animation,e),options:Ul(n.options)}}visitQuery(n,e){const i=e.currentQuerySelector,o=n.options||{};e.queryCount++,e.currentQuery=n;const[r,s]=function voe(t){const n=!!t.split(/\s*,\s*/).find(e=>":self"==e);return n&&(t=t.replace(_oe,"")),t=t.replace(/@\*/g,T_).replace(/@\w+/g,e=>T_+"-"+e.slice(1)).replace(/:animating/g,Gw),[t,n]}(n.selector);e.currentQuerySelector=i.length?i+" "+r:r,Eo(e.collectedStyles,e.currentQuerySelector,new Map);const a=Po(this,rf(n.animation),e);return e.currentQuery=null,e.currentQuerySelector=i,{type:Le.Query,selector:r,limit:o.limit||0,optional:!!o.optional,includeSelf:s,animation:a,originalSelector:n.selector,options:Ul(n.options)}}visitStagger(n,e){e.currentQuery||e.errors.push(function Oie(){return new X(3013,!1)}());const i="full"===n.timings?{duration:0,delay:0,easing:"full"}:E_(n.timings,e.errors,!0);return{type:Le.Stagger,animation:Po(this,rf(n.animation),e),timings:i,options:null}}}class Coe{errors;queryCount=0;depCount=0;currentTransition=null;currentQuery=null;currentQuerySelector=null;currentAnimateTimings=null;currentTime=0;collectedStyles=new Map;options=null;unsupportedCSSPropertiesFound=new Set;constructor(n){this.errors=n}}function Ul(t){return t?(t={...t}).params&&(t.params=function yoe(t){return t?{...t}:null}(t.params)):t={},t}function nx(t,n,e){return{duration:t,delay:n,easing:e}}function ix(t,n,e,i,o,r,s=null,a=!1){return{type:1,element:t,keyframes:n,preStyleProps:e,postStyleProps:i,duration:o,delay:r,totalTime:o+r,easing:s,subTimeline:a}}class A_{_map=new Map;get(n){return this._map.get(n)||[]}append(n,e){let i=this._map.get(n);i||this._map.set(n,i=[]),i.push(...e)}has(n){return this._map.has(n)}clear(){this._map.clear()}}const Doe=new RegExp(":enter","g"),Toe=new RegExp(":leave","g");function ox(t,n,e,i,o,r=new Map,s=new Map,a,l,c=[]){return(new Eoe).buildKeyframes(t,n,e,i,o,r,s,a,l,c)}class Eoe{buildKeyframes(n,e,i,o,r,s,a,l,c,f=[]){c=c||new A_;const m=new rx(n,e,c,o,r,f,[]);m.options=l;const g=l.delay?Ds(l.delay):0;m.currentTimeline.delayNextStep(g),m.currentTimeline.setStyles([s],null,m.errors,l),Po(this,i,m);const _=m.timelines.filter(w=>w.containsAnimation());if(_.length&&a.size){let w;for(let k=_.length-1;k>=0;k--){const T=_[k];if(T.element===e){w=T;break}}w&&!w.allowOnlyTimelineStyles()&&w.setStyles([a],null,m.errors,l)}return _.length?_.map(w=>w.buildKeyframes()):[ix(e,[],[],[],0,g,"",!1)]}visitTrigger(n,e){}visitState(n,e){}visitTransition(n,e){}visitAnimateChild(n,e){const i=e.subInstructions.get(e.element);if(i){const o=e.createSubContext(n.options),r=e.currentTimeline.currentTime,s=this._visitSubInstructions(i,o,o.options);r!=s&&e.transformIntoNewTimeline(s)}e.previousNode=n}visitAnimateRef(n,e){const i=e.createSubContext(n.options);i.transformIntoNewTimeline(),this._applyAnimationRefDelays([n.options,n.animation.options],e,i),this.visitReference(n.animation,i),e.transformIntoNewTimeline(i.currentTimeline.currentTime),e.previousNode=n}_applyAnimationRefDelays(n,e,i){for(const o of n){const r=o?.delay;if(r){const s="number"==typeof r?r:Ds(sf(r,o?.params??{},e.errors));i.delayNextStep(s)}}}_visitSubInstructions(n,e,i){let r=e.currentTimeline.currentTime;const s=null!=i.duration?Ds(i.duration):null,a=null!=i.delay?Ds(i.delay):null;return 0!==s&&n.forEach(l=>{const c=e.appendInstructionToTimeline(l,s,a);r=Math.max(r,c.duration+c.delay)}),r}visitReference(n,e){e.updateOptions(n.options,!0),Po(this,n.animation,e),e.previousNode=n}visitSequence(n,e){const i=e.subContextCount;let o=e;const r=n.options;if(r&&(r.params||r.delay)&&(o=e.createSubContext(r),o.transformIntoNewTimeline(),null!=r.delay)){o.previousNode.type==Le.Style&&(o.currentTimeline.snapshotCurrentStyles(),o.previousNode=R_);const s=Ds(r.delay);o.delayNextStep(s)}n.steps.length&&(n.steps.forEach(s=>Po(this,s,o)),o.currentTimeline.applyStylesToKeyframe(),o.subContextCount>i&&o.transformIntoNewTimeline()),e.previousNode=n}visitGroup(n,e){const i=[];let o=e.currentTimeline.currentTime;const r=n.options&&n.options.delay?Ds(n.options.delay):0;n.steps.forEach(s=>{const a=e.createSubContext(n.options);r&&a.delayNextStep(r),Po(this,s,a),o=Math.max(o,a.currentTimeline.currentTime),i.push(a.currentTimeline)}),i.forEach(s=>e.currentTimeline.mergeTimelineCollectedStyles(s)),e.transformIntoNewTimeline(o),e.previousNode=n}_visitTiming(n,e){if(n.dynamic){const i=n.strValue;return E_(e.params?sf(i,e.params,e.errors):i,e.errors)}return{duration:n.duration,delay:n.delay,easing:n.easing}}visitAnimate(n,e){const i=e.currentAnimateTimings=this._visitTiming(n.timings,e),o=e.currentTimeline;i.delay&&(e.incrementTime(i.delay),o.snapshotCurrentStyles());const r=n.style;r.type==Le.Keyframes?this.visitKeyframes(r,e):(e.incrementTime(i.duration),this.visitStyle(r,e),o.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=n}visitStyle(n,e){const i=e.currentTimeline,o=e.currentAnimateTimings;!o&&i.hasCurrentStyleProperties()&&i.forwardFrame();const r=o&&o.easing||n.easing;n.isEmptyStep?i.applyEmptyStep(r):i.setStyles(n.styles,r,e.errors,e.options),e.previousNode=n}visitKeyframes(n,e){const i=e.currentAnimateTimings,o=e.currentTimeline.duration,r=i.duration,a=e.createSubContext().currentTimeline;a.easing=i.easing,n.styles.forEach(l=>{a.forwardTime((l.offset||0)*r),a.setStyles(l.styles,l.easing,e.errors,e.options),a.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(a),e.transformIntoNewTimeline(o+r),e.previousNode=n}visitQuery(n,e){const i=e.currentTimeline.currentTime,o=n.options||{},r=o.delay?Ds(o.delay):0;r&&(e.previousNode.type===Le.Style||0==i&&e.currentTimeline.hasCurrentStyleProperties())&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=R_);let s=i;const a=e.invokeQuery(n.selector,n.originalSelector,n.limit,n.includeSelf,!!o.optional,e.errors);e.currentQueryTotal=a.length;let l=null;a.forEach((c,f)=>{e.currentQueryIndex=f;const m=e.createSubContext(n.options,c);r&&m.delayNextStep(r),c===e.element&&(l=m.currentTimeline),Po(this,n.animation,m),m.currentTimeline.applyStylesToKeyframe(),s=Math.max(s,m.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(s),l&&(e.currentTimeline.mergeTimelineCollectedStyles(l),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=n}visitStagger(n,e){const i=e.parentContext,o=e.currentTimeline,r=n.timings,s=Math.abs(r.duration),a=s*(e.currentQueryTotal-1);let l=s*e.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":l=a-l;break;case"full":l=i.currentStaggerTime}const f=e.currentTimeline;l&&f.delayNextStep(l);const m=f.currentTime;Po(this,n.animation,e),e.previousNode=n,i.currentStaggerTime=o.currentTime-m+(o.startTime-i.currentTimeline.startTime)}}const R_={};class rx{_driver;element;subInstructions;_enterClassName;_leaveClassName;errors;timelines;parentContext=null;currentTimeline;currentAnimateTimings=null;previousNode=R_;subContextCount=0;options={};currentQueryIndex=0;currentQueryTotal=0;currentStaggerTime=0;constructor(n,e,i,o,r,s,a,l){this._driver=n,this.element=e,this.subInstructions=i,this._enterClassName=o,this._leaveClassName=r,this.errors=s,this.timelines=a,this.currentTimeline=l||new F_(this._driver,e,0),a.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(n,e){if(!n)return;const i=n;let o=this.options;null!=i.duration&&(o.duration=Ds(i.duration)),null!=i.delay&&(o.delay=Ds(i.delay));const r=i.params;if(r){let s=o.params;s||(s=this.options.params={}),Object.keys(r).forEach(a=>{(!e||!s.hasOwnProperty(a))&&(s[a]=sf(r[a],s,this.errors))})}}_copyOptions(){const n={};if(this.options){const e=this.options.params;if(e){const i=n.params={};Object.keys(e).forEach(o=>{i[o]=e[o]})}}return n}createSubContext(n=null,e,i){const o=e||this.element,r=new rx(this._driver,o,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(o,i||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(n),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(n){return this.previousNode=R_,this.currentTimeline=this.currentTimeline.fork(this.element,n),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(n,e,i){const o={duration:e??n.duration,delay:this.currentTimeline.currentTime+(i??0)+n.delay,easing:""},r=new Poe(this._driver,n.element,n.keyframes,n.preStyleProps,n.postStyleProps,o,n.stretchStartingKeyframe);return this.timelines.push(r),o}incrementTime(n){this.currentTimeline.forwardTime(this.currentTimeline.duration+n)}delayNextStep(n){n>0&&this.currentTimeline.delayNextStep(n)}invokeQuery(n,e,i,o,r,s){let a=[];if(o&&a.push(this.element),n.length>0){n=(n=n.replace(Doe,"."+this._enterClassName)).replace(Toe,"."+this._leaveClassName);let c=this._driver.query(this.element,n,1!=i);0!==i&&(c=i<0?c.slice(c.length+i,c.length):c.slice(0,i)),a.push(...c)}return!r&&0==a.length&&s.push(function Aie(){return new X(3014,!1)}()),a}}class F_{_driver;element;startTime;_elementTimelineStylesLookup;duration=0;easing=null;_previousKeyframe=new Map;_currentKeyframe=new Map;_keyframes=new Map;_styleSummary=new Map;_localTimelineStyles=new Map;_globalTimelineStyles;_pendingStyles=new Map;_backFill=new Map;_currentEmptyStepKeyframe=null;constructor(n,e,i,o){this._driver=n,this.element=e,this.startTime=i,this._elementTimelineStylesLookup=o,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(n){const e=1===this._keyframes.size&&this._pendingStyles.size;this.duration||e?(this.forwardTime(this.currentTime+n),e&&this.snapshotCurrentStyles()):this.startTime+=n}fork(n,e){return this.applyStylesToKeyframe(),new F_(this._driver,n,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(n){this.applyStylesToKeyframe(),this.duration=n,this._loadKeyframe()}_updateStyle(n,e){this._localTimelineStyles.set(n,e),this._globalTimelineStyles.set(n,e),this._styleSummary.set(n,{time:this.currentTime,value:e})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(n){n&&this._previousKeyframe.set("easing",n);for(let[e,i]of this._globalTimelineStyles)this._backFill.set(e,i||ks),this._currentKeyframe.set(e,ks);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(n,e,i,o){e&&this._previousKeyframe.set("easing",e);const r=o&&o.params||{},s=function Ioe(t,n){const e=new Map;let i;return t.forEach(o=>{if("*"===o){i??=n.keys();for(let r of i)e.set(r,ks)}else for(let[r,s]of o)e.set(r,s)}),e}(n,this._globalTimelineStyles);for(let[a,l]of s){const c=sf(l,r,i);this._pendingStyles.set(a,c),this._localTimelineStyles.has(a)||this._backFill.set(a,this._globalTimelineStyles.get(a)??ks),this._updateStyle(a,c)}}applyStylesToKeyframe(){0!=this._pendingStyles.size&&(this._pendingStyles.forEach((n,e)=>{this._currentKeyframe.set(e,n)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((n,e)=>{this._currentKeyframe.has(e)||this._currentKeyframe.set(e,n)}))}snapshotCurrentStyles(){for(let[n,e]of this._localTimelineStyles)this._pendingStyles.set(n,e),this._updateStyle(n,e)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const n=[];for(let e in this._currentKeyframe)n.push(e);return n}mergeTimelineCollectedStyles(n){n._styleSummary.forEach((e,i)=>{const o=this._styleSummary.get(i);(!o||e.time>o.time)&&this._updateStyle(i,e.value)})}buildKeyframes(){this.applyStylesToKeyframe();const n=new Set,e=new Set,i=1===this._keyframes.size&&0===this.duration;let o=[];this._keyframes.forEach((a,l)=>{const c=new Map([...this._backFill,...a]);c.forEach((f,m)=>{"!"===f?n.add(m):f===ks&&e.add(m)}),i||c.set("offset",l/this.duration),o.push(c)});const r=[...n.values()],s=[...e.values()];if(i){const a=o[0],l=new Map(a);a.set("offset",0),l.set("offset",1),o=[a,l]}return ix(this.element,o,r,s,this.duration,this.startTime,this.easing,!1)}}class Poe extends F_{keyframes;preStyleProps;postStyleProps;_stretchStartingKeyframe;timings;constructor(n,e,i,o,r,s,a=!1){super(n,e,s.delay),this.keyframes=i,this.preStyleProps=o,this.postStyleProps=r,this._stretchStartingKeyframe=a,this.timings={duration:s.duration,delay:s.delay,easing:s.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let n=this.keyframes,{delay:e,duration:i,easing:o}=this.timings;if(this._stretchStartingKeyframe&&e){const r=[],s=i+e,a=e/s,l=new Map(n[0]);l.set("offset",0),r.push(l);const c=new Map(n[0]);c.set("offset",xN(a)),r.push(c);const f=n.length-1;for(let m=1;m<=f;m++){let g=new Map(n[m]);const _=g.get("offset");g.set("offset",xN((e+_*i)/s)),r.push(g)}i=s,e=0,o="",n=r}return ix(this.element,n,this.preStyleProps,this.postStyleProps,i,e,o,!0)}}function xN(t,n=3){const e=Math.pow(10,n-1);return Math.round(t*e)/e}function SN(t,n,e,i,o,r,s,a,l,c,f,m,g){return{type:0,element:t,triggerName:n,isRemovalTransition:o,fromState:e,fromStyles:r,toState:i,toStyles:s,timelines:a,queriedElements:l,preStyleProps:c,postStyleProps:f,totalTime:m,errors:g}}const sx={};class kN{_triggerName;ast;_stateStyles;constructor(n,e,i){this._triggerName=n,this.ast=e,this._stateStyles=i}match(n,e,i,o){return function Ooe(t,n,e,i,o){return t.some(r=>r(n,e,i,o))}(this.ast.matchers,n,e,i,o)}buildStyles(n,e,i){let o=this._stateStyles.get("*");return void 0!==n&&(o=this._stateStyles.get(n?.toString())||o),o?o.buildStyles(e,i):new Map}build(n,e,i,o,r,s,a,l,c,f){const m=[],g=this.ast.options&&this.ast.options.params||sx,w=this.buildStyles(i,a&&a.params||sx,m),k=l&&l.params||sx,T=this.buildStyles(o,k,m),I=new Set,R=new Map,W=new Map,Y="void"===o,K={params:DN(k,g),delay:this.ast.options?.delay},ee=f?[]:ox(n,e,this.ast.animation,r,s,w,T,K,c,m);let ie=0;return ee.forEach(P=>{ie=Math.max(P.duration+P.delay,ie)}),m.length?SN(e,this._triggerName,i,o,Y,w,T,[],[],R,W,ie,m):(ee.forEach(P=>{const A=P.element,L=Eo(R,A,new Set);P.preStyleProps.forEach(H=>L.add(H));const $=Eo(W,A,new Set);P.postStyleProps.forEach(H=>$.add(H)),A!==e&&I.add(A)}),SN(e,this._triggerName,i,o,Y,w,T,ee,[...I.values()],R,W,ie))}}function DN(t,n){const e={...n};return Object.entries(t).forEach(([i,o])=>{null!=o&&(e[i]=o)}),e}class Aoe{styles;defaultParams;normalizer;constructor(n,e,i){this.styles=n,this.defaultParams=e,this.normalizer=i}buildStyles(n,e){const i=new Map,o=DN(n,this.defaultParams);return this.styles.styles.forEach(r=>{"string"!=typeof r&&r.forEach((s,a)=>{s&&(s=sf(s,o,e));const l=this.normalizer.normalizePropertyName(a,e);s=this.normalizer.normalizeStyleValue(a,l,s,e),i.set(a,s)})}),i}}class Foe{name;ast;_normalizer;transitionFactories=[];fallbackTransition;states=new Map;constructor(n,e,i){this.name=n,this.ast=e,this._normalizer=i,e.states.forEach(o=>{this.states.set(o.name,new Aoe(o.style,o.options&&o.options.params||{},i))}),MN(this.states,"true","1"),MN(this.states,"false","0"),e.transitions.forEach(o=>{this.transitionFactories.push(new kN(n,o,this.states))}),this.fallbackTransition=function Noe(t,n){return new kN(t,{type:Le.Transition,animation:{type:Le.Sequence,steps:[],options:null},matchers:[(s,a)=>!0],options:null,queryCount:0,depCount:0},n)}(n,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(n,e,i,o){return this.transitionFactories.find(s=>s.match(n,e,i,o))||null}matchStyles(n,e,i){return this.fallbackTransition.buildStyles(n,e,i)}}function MN(t,n,e){t.has(n)?t.has(e)||t.set(e,t.get(n)):t.has(e)&&t.set(n,t.get(e))}const Loe=new A_;class Boe{bodyNode;_driver;_normalizer;_animations=new Map;_playersById=new Map;players=[];constructor(n,e,i){this.bodyNode=n,this._driver=e,this._normalizer=i}register(n,e){const i=[],r=tx(this._driver,e,i,[]);if(i.length)throw function Bie(){return new X(3503,!1)}();this._animations.set(n,r)}_buildPlayer(n,e,i){const o=n.element,r=cN(this._normalizer,n.keyframes,e,i);return this._driver.animate(o,r,n.duration,n.delay,n.easing,[],!0)}create(n,e,i={}){const o=[],r=this._animations.get(n);let s;const a=new Map;if(r?(s=ox(this._driver,e,r,mN,Ww,new Map,new Map,i,Loe,o),s.forEach(f=>{const m=Eo(a,f.element,new Map);f.postStyleProps.forEach(g=>m.set(g,null))})):(o.push(function Vie(){return new X(3300,!1)}()),s=[]),o.length)throw function Hie(){return new X(3504,!1)}();a.forEach((f,m)=>{f.forEach((g,_)=>{f.set(_,this._driver.computeStyle(m,_,ks))})});const c=pa(s.map(f=>{const m=a.get(f.element);return this._buildPlayer(f,new Map,m)}));return this._playersById.set(n,c),c.onDestroy(()=>this.destroy(n)),this.players.push(c),c}destroy(n){const e=this._getPlayer(n);e.destroy(),this._playersById.delete(n);const i=this.players.indexOf(e);i>=0&&this.players.splice(i,1)}_getPlayer(n){const e=this._playersById.get(n);if(!e)throw function jie(){return new X(3301,!1)}();return e}listen(n,e,i,o){const r=zw(e,"","","");return jw(this._getPlayer(n),i,r,o),()=>{}}command(n,e,i,o){if("register"==i)return void this.register(n,o[0]);if("create"==i)return void this.create(n,e,o[0]||{});const r=this._getPlayer(n);switch(i){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(o[0]));break;case"destroy":this.destroy(n)}}}const TN="ng-animate-queued",ax="ng-animate-disabled",zoe=[],EN={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},$oe={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},pr="__ng_removed";class lx{namespaceId;value;options;get params(){return this.options.params}constructor(n,e=""){this.namespaceId=e;const i=n&&n.hasOwnProperty("value");if(this.value=function Koe(t){return t??null}(i?n.value:n),i){const{value:r,...s}=n;this.options=s}else this.options={};this.options.params||(this.options.params={})}absorbOptions(n){const e=n.params;if(e){const i=this.options.params;Object.keys(e).forEach(o=>{null==i[o]&&(i[o]=e[o])})}}}const af="void",cx=new lx(af);class Woe{id;hostElement;_engine;players=[];_triggers=new Map;_queue=[];_elementListeners=new Map;_hostClassName;constructor(n,e,i){this.id=n,this.hostElement=e,this._engine=i,this._hostClassName="ng-tns-"+n,jo(e,this._hostClassName)}listen(n,e,i,o){if(!this._triggers.has(e))throw function Uie(){return new X(3302,!1)}();if(null==i||0==i.length)throw function zie(){return new X(3303,!1)}();if(!function Yoe(t){return"start"==t||"done"==t}(i))throw function $ie(){return new X(3400,!1)}();const r=Eo(this._elementListeners,n,[]),s={name:e,phase:i,callback:o};r.push(s);const a=Eo(this._engine.statesByElement,n,new Map);return a.has(e)||(jo(n,M_),jo(n,M_+"-"+e),a.set(e,cx)),()=>{this._engine.afterFlush(()=>{const l=r.indexOf(s);l>=0&&r.splice(l,1),this._triggers.has(e)||a.delete(e)})}}register(n,e){return!this._triggers.has(n)&&(this._triggers.set(n,e),!0)}_getTrigger(n){const e=this._triggers.get(n);if(!e)throw function Wie(){return new X(3401,!1)}();return e}trigger(n,e,i,o=!0){const r=this._getTrigger(e),s=new dx(this.id,e,n);let a=this._engine.statesByElement.get(n);a||(jo(n,M_),jo(n,M_+"-"+e),this._engine.statesByElement.set(n,a=new Map));let l=a.get(e);const c=new lx(i,this.id);if(!(i&&i.hasOwnProperty("value"))&&l&&c.absorbOptions(l.options),a.set(e,c),l||(l=cx),c.value!==af&&l.value===c.value){if(!function Qoe(t,n){const e=Object.keys(t),i=Object.keys(n);if(e.length!=i.length)return!1;for(let o=0;o{jl(n,T),Hr(n,I)})}return}const g=Eo(this._engine.playersByElement,n,[]);g.forEach(k=>{k.namespaceId==this.id&&k.triggerName==e&&k.queued&&k.destroy()});let _=r.matchTransition(l.value,c.value,n,c.params),w=!1;if(!_){if(!o)return;_=r.fallbackTransition,w=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:e,transition:_,fromState:l,toState:c,player:s,isFallbackTransition:w}),w||(jo(n,TN),s.onStart(()=>{Bd(n,TN)})),s.onDone(()=>{let k=this.players.indexOf(s);k>=0&&this.players.splice(k,1);const T=this._engine.playersByElement.get(n);if(T){let I=T.indexOf(s);I>=0&&T.splice(I,1)}}),this.players.push(s),g.push(s),s}deregister(n){this._triggers.delete(n),this._engine.statesByElement.forEach(e=>e.delete(n)),this._elementListeners.forEach((e,i)=>{this._elementListeners.set(i,e.filter(o=>o.name!=n))})}clearElementCache(n){this._engine.statesByElement.delete(n),this._elementListeners.delete(n);const e=this._engine.playersByElement.get(n);e&&(e.forEach(i=>i.destroy()),this._engine.playersByElement.delete(n))}_signalRemovalForInnerTriggers(n,e){const i=this._engine.driver.query(n,T_,!0);i.forEach(o=>{if(o[pr])return;const r=this._engine.fetchNamespacesByElement(o);r.size?r.forEach(s=>s.triggerLeaveAnimation(o,e,!1,!0)):this.clearElementCache(o)}),this._engine.afterFlushAnimationsDone(()=>i.forEach(o=>this.clearElementCache(o)))}triggerLeaveAnimation(n,e,i,o){const r=this._engine.statesByElement.get(n),s=new Map;if(r){const a=[];if(r.forEach((l,c)=>{if(s.set(c,l.value),this._triggers.has(c)){const f=this.trigger(n,c,af,o);f&&a.push(f)}}),a.length)return this._engine.markElementAsRemoved(this.id,n,!0,e,s),i&&pa(a).onDone(()=>this._engine.processLeaveNode(n)),!0}return!1}prepareLeaveAnimationListeners(n){const e=this._elementListeners.get(n),i=this._engine.statesByElement.get(n);if(e&&i){const o=new Set;e.forEach(r=>{const s=r.name;if(o.has(s))return;o.add(s);const l=this._triggers.get(s).fallbackTransition,c=i.get(s)||cx,f=new lx(af),m=new dx(this.id,s,n);this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:s,transition:l,fromState:c,toState:f,player:m,isFallbackTransition:!0})})}}removeNode(n,e){const i=this._engine;if(n.childElementCount&&this._signalRemovalForInnerTriggers(n,e),this.triggerLeaveAnimation(n,e,!0))return;let o=!1;if(i.totalAnimations){const r=i.players.length?i.playersByQueriedElement.get(n):[];if(r&&r.length)o=!0;else{let s=n;for(;s=s.parentNode;)if(i.statesByElement.get(s)){o=!0;break}}}if(this.prepareLeaveAnimationListeners(n),o)i.markElementAsRemoved(this.id,n,!1,e);else{const r=n[pr];(!r||r===EN)&&(i.afterFlush(()=>this.clearElementCache(n)),i.destroyInnerAnimations(n),i._onRemovalComplete(n,e))}}insertNode(n,e){jo(n,this._hostClassName)}drainQueuedTransitions(n){const e=[];return this._queue.forEach(i=>{const o=i.player;if(o.destroyed)return;const r=i.element,s=this._elementListeners.get(r);s&&s.forEach(a=>{if(a.name==i.triggerName){const l=zw(r,i.triggerName,i.fromState.value,i.toState.value);l._data=n,jw(i.player,a.phase,l,a.callback)}}),o.markedForDestroy?this._engine.afterFlush(()=>{o.destroy()}):e.push(i)}),this._queue=[],e.sort((i,o)=>{const r=i.transition.ast.depCount,s=o.transition.ast.depCount;return 0==r||0==s?r-s:this._engine.driver.containsElement(i.element,o.element)?1:-1})}destroy(n){this.players.forEach(e=>e.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,n)}}class Goe{bodyNode;driver;_normalizer;players=[];newHostElements=new Map;playersByElement=new Map;playersByQueriedElement=new Map;statesByElement=new Map;disabledNodes=new Set;totalAnimations=0;totalQueuedPlayers=0;_namespaceLookup={};_namespaceList=[];_flushFns=[];_whenQuietFns=[];namespacesByHostElement=new Map;collectedEnterElements=[];collectedLeaveElements=[];onRemovalComplete=(n,e)=>{};_onRemovalComplete(n,e){this.onRemovalComplete(n,e)}constructor(n,e,i){this.bodyNode=n,this.driver=e,this._normalizer=i}get queuedPlayers(){const n=[];return this._namespaceList.forEach(e=>{e.players.forEach(i=>{i.queued&&n.push(i)})}),n}createNamespace(n,e){const i=new Woe(n,e,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,e)?this._balanceNamespaceList(i,e):(this.newHostElements.set(e,i),this.collectEnterElement(e)),this._namespaceLookup[n]=i}_balanceNamespaceList(n,e){const i=this._namespaceList,o=this.namespacesByHostElement;if(i.length-1>=0){let s=!1,a=this.driver.getParentElement(e);for(;a;){const l=o.get(a);if(l){const c=i.indexOf(l);i.splice(c+1,0,n),s=!0;break}a=this.driver.getParentElement(a)}s||i.unshift(n)}else i.push(n);return o.set(e,n),n}register(n,e){let i=this._namespaceLookup[n];return i||(i=this.createNamespace(n,e)),i}registerTrigger(n,e,i){let o=this._namespaceLookup[n];o&&o.register(e,i)&&this.totalAnimations++}destroy(n,e){n&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{const i=this._fetchNamespace(n);this.namespacesByHostElement.delete(i.hostElement);const o=this._namespaceList.indexOf(i);o>=0&&this._namespaceList.splice(o,1),i.destroy(e),delete this._namespaceLookup[n]}))}_fetchNamespace(n){return this._namespaceLookup[n]}fetchNamespacesByElement(n){const e=new Set,i=this.statesByElement.get(n);if(i)for(let o of i.values())if(o.namespaceId){const r=this._fetchNamespace(o.namespaceId);r&&e.add(r)}return e}trigger(n,e,i,o){if(N_(e)){const r=this._fetchNamespace(n);if(r)return r.trigger(e,i,o),!0}return!1}insertNode(n,e,i,o){if(!N_(e))return;const r=e[pr];if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;const s=this.collectedLeaveElements.indexOf(e);s>=0&&this.collectedLeaveElements.splice(s,1)}if(n){const s=this._fetchNamespace(n);s&&s.insertNode(e,i)}o&&this.collectEnterElement(e)}collectEnterElement(n){this.collectedEnterElements.push(n)}markElementAsDisabled(n,e){e?this.disabledNodes.has(n)||(this.disabledNodes.add(n),jo(n,ax)):this.disabledNodes.has(n)&&(this.disabledNodes.delete(n),Bd(n,ax))}removeNode(n,e,i){if(N_(e)){const o=n?this._fetchNamespace(n):null;o?o.removeNode(e,i):this.markElementAsRemoved(n,e,!1,i);const r=this.namespacesByHostElement.get(e);r&&r.id!==n&&r.removeNode(e,i)}else this._onRemovalComplete(e,i)}markElementAsRemoved(n,e,i,o,r){this.collectedLeaveElements.push(e),e[pr]={namespaceId:n,setForRemoval:o,hasAnimation:i,removedBeforeQueried:!1,previousTriggersValues:r}}listen(n,e,i,o,r){return N_(e)?this._fetchNamespace(n).listen(e,i,o,r):()=>{}}_buildInstruction(n,e,i,o,r){return n.transition.build(this.driver,n.element,n.fromState.value,n.toState.value,i,o,n.fromState.options,n.toState.options,e,r)}destroyInnerAnimations(n){let e=this.driver.query(n,T_,!0);e.forEach(i=>this.destroyActiveAnimationsForElement(i)),0!=this.playersByQueriedElement.size&&(e=this.driver.query(n,Gw,!0),e.forEach(i=>this.finishActiveQueriedAnimationOnElement(i)))}destroyActiveAnimationsForElement(n){const e=this.playersByElement.get(n);e&&e.forEach(i=>{i.queued?i.markedForDestroy=!0:i.destroy()})}finishActiveQueriedAnimationOnElement(n){const e=this.playersByQueriedElement.get(n);e&&e.forEach(i=>i.finish())}whenRenderingDone(){return new Promise(n=>{if(this.players.length)return pa(this.players).onDone(()=>n());n()})}processLeaveNode(n){const e=n[pr];if(e&&e.setForRemoval){if(n[pr]=EN,e.namespaceId){this.destroyInnerAnimations(n);const i=this._fetchNamespace(e.namespaceId);i&&i.clearElementCache(n)}this._onRemovalComplete(n,e.setForRemoval)}n.classList?.contains(ax)&&this.markElementAsDisabled(n,!1),this.driver.query(n,".ng-animate-disabled",!0).forEach(i=>{this.markElementAsDisabled(i,!1)})}flush(n=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((i,o)=>this._balanceNamespaceList(i,o)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let i=0;ii()),this._flushFns=[],this._whenQuietFns.length){const i=this._whenQuietFns;this._whenQuietFns=[],e.length?pa(e).onDone(()=>{i.forEach(o=>o())}):i.forEach(o=>o())}}reportError(n){throw function Gie(){return new X(3402,!1)}()}_flushAnimations(n,e){const i=new A_,o=[],r=new Map,s=[],a=new Map,l=new Map,c=new Map,f=new Set;this.disabledNodes.forEach(N=>{f.add(N);const q=this.driver.query(N,".ng-animate-queued",!0);for(let z=0;z{const z=mN+k++;w.set(q,z),N.forEach(Q=>jo(Q,z))});const T=[],I=new Set,R=new Set;for(let N=0;NI.add(Q)):R.add(q))}const W=new Map,Y=ON(g,Array.from(I));Y.forEach((N,q)=>{const z=Ww+k++;W.set(q,z),N.forEach(Q=>jo(Q,z))}),n.push(()=>{_.forEach((N,q)=>{const z=w.get(q);N.forEach(Q=>Bd(Q,z))}),Y.forEach((N,q)=>{const z=W.get(q);N.forEach(Q=>Bd(Q,z))}),T.forEach(N=>{this.processLeaveNode(N)})});const K=[],ee=[];for(let N=this._namespaceList.length-1;N>=0;N--)this._namespaceList[N].drainQueuedTransitions(e).forEach(z=>{const Q=z.player,ue=z.element;if(K.push(Q),this.collectedEnterElements.length){const wt=ue[pr];if(wt&&wt.setForMove){if(wt.previousTriggersValues&&wt.previousTriggersValues.has(z.triggerName)){const Jo=wt.previousTriggersValues.get(z.triggerName),Xi=this.statesByElement.get(z.element);if(Xi&&Xi.has(z.triggerName)){const ja=Xi.get(z.triggerName);ja.value=Jo,Xi.set(z.triggerName,ja)}}return void Q.destroy()}}const Ce=!m||!this.driver.containsElement(m,ue),Ee=W.get(ue),ut=w.get(ue),Oe=this._buildInstruction(z,i,ut,Ee,Ce);if(Oe.errors&&Oe.errors.length)return void ee.push(Oe);if(Ce)return Q.onStart(()=>jl(ue,Oe.fromStyles)),Q.onDestroy(()=>Hr(ue,Oe.toStyles)),void o.push(Q);if(z.isFallbackTransition)return Q.onStart(()=>jl(ue,Oe.fromStyles)),Q.onDestroy(()=>Hr(ue,Oe.toStyles)),void o.push(Q);const Xe=[];Oe.timelines.forEach(wt=>{wt.stretchStartingKeyframe=!0,this.disabledNodes.has(wt.element)||Xe.push(wt)}),Oe.timelines=Xe,i.append(ue,Oe.timelines),s.push({instruction:Oe,player:Q,element:ue}),Oe.queriedElements.forEach(wt=>Eo(a,wt,[]).push(Q)),Oe.preStyleProps.forEach((wt,Jo)=>{if(wt.size){let Xi=l.get(Jo);Xi||l.set(Jo,Xi=new Set),wt.forEach((ja,xo)=>Xi.add(xo))}}),Oe.postStyleProps.forEach((wt,Jo)=>{let Xi=c.get(Jo);Xi||c.set(Jo,Xi=new Set),wt.forEach((ja,xo)=>Xi.add(xo))})});if(ee.length){const N=[];ee.forEach(q=>{N.push(function qie(){return new X(3505,!1)}())}),K.forEach(q=>q.destroy()),this.reportError(N)}const ie=new Map,P=new Map;s.forEach(N=>{const q=N.element;i.has(q)&&(P.set(q,q),this._beforeAnimationBuild(N.player.namespaceId,N.instruction,ie))}),o.forEach(N=>{const q=N.element;this._getPreviousPlayers(q,!1,N.namespaceId,N.triggerName,null).forEach(Q=>{Eo(ie,q,[]).push(Q),Q.destroy()})});const A=T.filter(N=>RN(N,l,c)),L=new Map;IN(L,this.driver,R,c,ks).forEach(N=>{RN(N,l,c)&&A.push(N)});const H=new Map;_.forEach((N,q)=>{IN(H,this.driver,new Set(N),l,"!")}),A.forEach(N=>{const q=L.get(N),z=H.get(N);L.set(N,new Map([...q?.entries()??[],...z?.entries()??[]]))});const G=[],J=[],V={};s.forEach(N=>{const{element:q,player:z,instruction:Q}=N;if(i.has(q)){if(f.has(q))return z.onDestroy(()=>Hr(q,Q.toStyles)),z.disabled=!0,z.overrideTotalTime(Q.totalTime),void o.push(z);let ue=V;if(P.size>1){let Ee=q;const ut=[];for(;Ee=Ee.parentNode;){const Oe=P.get(Ee);if(Oe){ue=Oe;break}ut.push(Ee)}ut.forEach(Oe=>P.set(Oe,ue))}const Ce=this._buildAnimation(z.namespaceId,Q,ie,r,H,L);if(z.setRealPlayer(Ce),ue===V)G.push(z);else{const Ee=this.playersByElement.get(ue);Ee&&Ee.length&&(z.parentPlayer=pa(Ee)),o.push(z)}}else jl(q,Q.fromStyles),z.onDestroy(()=>Hr(q,Q.toStyles)),J.push(z),f.has(q)&&o.push(z)}),J.forEach(N=>{const q=r.get(N.element);if(q&&q.length){const z=pa(q);N.setRealPlayer(z)}}),o.forEach(N=>{N.parentPlayer?N.syncPlayerEvents(N.parentPlayer):N.destroy()});for(let N=0;N!Ce.destroyed);ue.length?Xoe(this,q,ue):this.processLeaveNode(q)}return T.length=0,G.forEach(N=>{this.players.push(N),N.onDone(()=>{N.destroy();const q=this.players.indexOf(N);this.players.splice(q,1)}),N.play()}),G}afterFlush(n){this._flushFns.push(n)}afterFlushAnimationsDone(n){this._whenQuietFns.push(n)}_getPreviousPlayers(n,e,i,o,r){let s=[];if(e){const a=this.playersByQueriedElement.get(n);a&&(s=a)}else{const a=this.playersByElement.get(n);if(a){const l=!r||r==af;a.forEach(c=>{c.queued||!l&&c.triggerName!=o||s.push(c)})}}return(i||o)&&(s=s.filter(a=>!(i&&i!=a.namespaceId||o&&o!=a.triggerName))),s}_beforeAnimationBuild(n,e,i){const r=e.element,s=e.isRemovalTransition?void 0:n,a=e.isRemovalTransition?void 0:e.triggerName;for(const l of e.timelines){const c=l.element,f=c!==r,m=Eo(i,c,[]);this._getPreviousPlayers(c,f,s,a,e.toState).forEach(_=>{const w=_.getRealPlayer();w.beforeDestroy&&w.beforeDestroy(),_.destroy(),m.push(_)})}jl(r,e.fromStyles)}_buildAnimation(n,e,i,o,r,s){const a=e.triggerName,l=e.element,c=[],f=new Set,m=new Set,g=e.timelines.map(w=>{const k=w.element;f.add(k);const T=k[pr];if(T&&T.removedBeforeQueried)return new of(w.duration,w.delay);const I=k!==l,R=function Zoe(t){const n=[];return AN(t,n),n}((i.get(k)||zoe).map(ie=>ie.getRealPlayer())).filter(ie=>!!ie.element&&ie.element===k),W=r.get(k),Y=s.get(k),K=cN(this._normalizer,w.keyframes,W,Y),ee=this._buildPlayer(w,K,R);if(w.subTimeline&&o&&m.add(k),I){const ie=new dx(n,a,k);ie.setRealPlayer(ee),c.push(ie)}return ee});c.forEach(w=>{Eo(this.playersByQueriedElement,w.element,[]).push(w),w.onDone(()=>function qoe(t,n,e){let i=t.get(n);if(i){if(i.length){const o=i.indexOf(e);i.splice(o,1)}0==i.length&&t.delete(n)}return i}(this.playersByQueriedElement,w.element,w))}),f.forEach(w=>jo(w,gN));const _=pa(g);return _.onDestroy(()=>{f.forEach(w=>Bd(w,gN)),Hr(l,e.toStyles)}),m.forEach(w=>{Eo(o,w,[]).push(_)}),_}_buildPlayer(n,e,i){return e.length>0?this.driver.animate(n.element,e,n.duration,n.delay,n.easing,i):new of(n.duration,n.delay)}}class dx{namespaceId;triggerName;element;_player=new of;_containsRealPlayer=!1;_queuedCallbacks=new Map;destroyed=!1;parentPlayer=null;markedForDestroy=!1;disabled=!1;queued=!0;totalTime=0;constructor(n,e,i){this.namespaceId=n,this.triggerName=e,this.element=i}setRealPlayer(n){this._containsRealPlayer||(this._player=n,this._queuedCallbacks.forEach((e,i)=>{e.forEach(o=>jw(n,i,void 0,o))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(n.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(n){this.totalTime=n}syncPlayerEvents(n){const e=this._player;e.triggerCallback&&n.onStart(()=>e.triggerCallback("start")),n.onDone(()=>this.finish()),n.onDestroy(()=>this.destroy())}_queueEvent(n,e){Eo(this._queuedCallbacks,n,[]).push(e)}onDone(n){this.queued&&this._queueEvent("done",n),this._player.onDone(n)}onStart(n){this.queued&&this._queueEvent("start",n),this._player.onStart(n)}onDestroy(n){this.queued&&this._queueEvent("destroy",n),this._player.onDestroy(n)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(n){this.queued||this._player.setPosition(n)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(n){const e=this._player;e.triggerCallback&&e.triggerCallback(n)}}function N_(t){return t&&1===t.nodeType}function PN(t,n){const e=t.style.display;return t.style.display=n??"none",e}function IN(t,n,e,i,o){const r=[];e.forEach(l=>r.push(PN(l)));const s=[];i.forEach((l,c)=>{const f=new Map;l.forEach(m=>{const g=n.computeStyle(c,m,o);f.set(m,g),(!g||0==g.length)&&(c[pr]=$oe,s.push(c))}),t.set(c,f)});let a=0;return e.forEach(l=>PN(l,r[a++])),s}function ON(t,n){const e=new Map;if(t.forEach(a=>e.set(a,[])),0==n.length)return e;const o=new Set(n),r=new Map;function s(a){if(!a)return 1;let l=r.get(a);if(l)return l;const c=a.parentNode;return l=e.has(c)?c:o.has(c)?1:s(c),r.set(a,l),l}return n.forEach(a=>{const l=s(a);1!==l&&e.get(l).push(a)}),e}function jo(t,n){t.classList?.add(n)}function Bd(t,n){t.classList?.remove(n)}function Xoe(t,n,e){pa(e).onDone(()=>t.processLeaveNode(n))}function AN(t,n){for(let e=0;eo.add(r)):n.set(t,i),e.delete(t),!0}class lf{_driver;_normalizer;_transitionEngine;_timelineEngine;_triggerCache={};onRemovalComplete=(n,e)=>{};constructor(n,e,i){this._driver=e,this._normalizer=i,this._transitionEngine=new Goe(n.body,e,i),this._timelineEngine=new Boe(n.body,e,i),this._transitionEngine.onRemovalComplete=(o,r)=>this.onRemovalComplete(o,r)}registerTrigger(n,e,i,o,r){const s=n+"-"+o;let a=this._triggerCache[s];if(!a){const l=[],f=tx(this._driver,r,l,[]);if(l.length)throw function Nie(){return new X(3404,!1)}();a=function Roe(t,n,e){return new Foe(t,n,e)}(o,f,this._normalizer),this._triggerCache[s]=a}this._transitionEngine.registerTrigger(e,o,a)}register(n,e){this._transitionEngine.register(n,e)}destroy(n,e){this._transitionEngine.destroy(n,e)}onInsert(n,e,i,o){this._transitionEngine.insertNode(n,e,i,o)}onRemove(n,e,i){this._transitionEngine.removeNode(n,e,i)}disableAnimations(n,e){this._transitionEngine.markElementAsDisabled(n,e)}process(n,e,i,o){if("@"==i.charAt(0)){const[r,s]=dN(i);this._timelineEngine.command(r,e,s,o)}else this._transitionEngine.trigger(n,e,i,o)}listen(n,e,i,o,r){if("@"==i.charAt(0)){const[s,a]=dN(i);return this._timelineEngine.listen(s,e,a,r)}return this._transitionEngine.listen(n,e,i,o,r)}flush(n=-1){this._transitionEngine.flush(n)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(n){this._transitionEngine.afterFlushAnimationsDone(n)}}let ere=(()=>{class t{_element;_startStyles;_endStyles;static initialStylesByElement=new WeakMap;_state=0;_initialStyles;constructor(e,i,o){this._element=e,this._startStyles=i,this._endStyles=o;let r=t.initialStylesByElement.get(e);r||t.initialStylesByElement.set(e,r=new Map),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&Hr(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(Hr(this._element,this._initialStyles),this._endStyles&&(Hr(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(t.initialStylesByElement.delete(this._element),this._startStyles&&(jl(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(jl(this._element,this._endStyles),this._endStyles=null),Hr(this._element,this._initialStyles),this._state=3)}}return t})();function ux(t){let n=null;return t.forEach((e,i)=>{(function tre(t){return"display"===t||"position"===t})(i)&&(n=n||new Map,n.set(i,e))}),n}class FN{element;keyframes;options;_specialStyles;_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_duration;_delay;_initialized=!1;_finished=!1;_started=!1;_destroyed=!1;_finalKeyframe;_originalOnDoneFns=[];_originalOnStartFns=[];domPlayer=null;time=0;parentPlayer=null;currentSnapshot=new Map;constructor(n,e,i,o){this.element=n,this.keyframes=e,this.options=i,this._specialStyles=o,this._duration=i.duration,this._delay=i.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this._buildPlayer()&&this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return this.domPlayer;this._initialized=!0;const n=this.keyframes,e=this._triggerWebAnimation(this.element,n,this.options);if(!e)return this._onFinish(),null;this.domPlayer=e,this._finalKeyframe=n.length?n[n.length-1]:new Map;const i=()=>this._onFinish();return e.addEventListener("finish",i),this.onDestroy(()=>{e.removeEventListener("finish",i)}),e}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer?.pause()}_convertKeyframesToObject(n){const e=[];return n.forEach(i=>{e.push(Object.fromEntries(i))}),e}_triggerWebAnimation(n,e,i){const o=this._convertKeyframesToObject(e);try{return n.animate(o,i)}catch{return null}}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}play(){const n=this._buildPlayer();n&&(this.hasStarted()||(this._onStartFns.forEach(e=>e()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),n.play())}pause(){this.init(),this.domPlayer?.pause()}finish(){this.init(),this.domPlayer&&(this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish())}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer?.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}setPosition(n){this.domPlayer||this.init(),this.domPlayer&&(this.domPlayer.currentTime=n*this.time)}getPosition(){return this.domPlayer?+(this.domPlayer.currentTime??0)/this.time:this._initialized?1:0}get totalTime(){return this._delay+this._duration}beforeDestroy(){const n=new Map;this.hasStarted()&&this._finalKeyframe.forEach((i,o)=>{"offset"!==o&&n.set(o,this._finished?i:Xw(this.element,o))}),this.currentSnapshot=n}triggerCallback(n){const e="start"===n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}class NN{validateStyleProperty(n){return!0}validateAnimatableStyleProperty(n){return!0}containsElement(n,e){return hN(n,e)}getParentElement(n){return $w(n)}query(n,e,i){return fN(n,e,i)}computeStyle(n,e,i){return Xw(n,e)}animate(n,e,i,o,r,s=[]){const l={duration:i,delay:o,fill:0==o?"both":"forwards"};r&&(l.easing=r);const c=new Map,f=s.filter(_=>_ instanceof FN);(function soe(t,n){return 0===t||0===n})(i,o)&&f.forEach(_=>{_.currentSnapshot.forEach((w,k)=>c.set(k,w))});let m=function ioe(t){return t.length?t[0]instanceof Map?t:t.map(n=>new Map(Object.entries(n))):[]}(e).map(_=>new Map(_));m=function aoe(t,n,e){if(e.size&&n.length){let i=n[0],o=[];if(e.forEach((r,s)=>{i.has(s)||o.push(s),i.set(s,r)}),o.length)for(let r=1;rs.set(a,Xw(t,a)))}}return n}(n,m,c);const g=function Joe(t,n){let e=null,i=null;return Array.isArray(n)&&n.length?(e=ux(n[0]),n.length>1&&(i=ux(n[n.length-1]))):n instanceof Map&&(e=ux(n)),e||i?new ere(t,e,i):null}(n,m);return new FN(n,m,l,g)}}const LN="@.disabled";class BN{namespaceId;delegate;engine;_onDestroy;\u0275type=0;constructor(n,e,i,o){this.namespaceId=n,this.delegate=e,this.engine=i,this._onDestroy=o}get data(){return this.delegate.data}destroyNode(n){this.delegate.destroyNode?.(n)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(n,e){return this.delegate.createElement(n,e)}createComment(n){return this.delegate.createComment(n)}createText(n){return this.delegate.createText(n)}appendChild(n,e){this.delegate.appendChild(n,e),this.engine.onInsert(this.namespaceId,e,n,!1)}insertBefore(n,e,i,o=!0){this.delegate.insertBefore(n,e,i),this.engine.onInsert(this.namespaceId,e,n,o)}removeChild(n,e,i,o){o?this.delegate.removeChild(n,e,i,o):this.parentNode(e)&&this.engine.onRemove(this.namespaceId,e,this.delegate)}selectRootElement(n,e){return this.delegate.selectRootElement(n,e)}parentNode(n){return this.delegate.parentNode(n)}nextSibling(n){return this.delegate.nextSibling(n)}setAttribute(n,e,i,o){this.delegate.setAttribute(n,e,i,o)}removeAttribute(n,e,i){this.delegate.removeAttribute(n,e,i)}addClass(n,e){this.delegate.addClass(n,e)}removeClass(n,e){this.delegate.removeClass(n,e)}setStyle(n,e,i,o){this.delegate.setStyle(n,e,i,o)}removeStyle(n,e,i){this.delegate.removeStyle(n,e,i)}setProperty(n,e,i){"@"==e.charAt(0)&&e==LN?this.disableAnimations(n,!!i):this.delegate.setProperty(n,e,i)}setValue(n,e){this.delegate.setValue(n,e)}listen(n,e,i,o){return this.delegate.listen(n,e,i,o)}disableAnimations(n,e){this.engine.disableAnimations(n,e)}}class nre extends BN{factory;constructor(n,e,i,o,r){super(e,i,o,r),this.factory=n,this.namespaceId=e}setProperty(n,e,i){"@"==e.charAt(0)?"."==e.charAt(1)&&e==LN?this.disableAnimations(n,i=void 0===i||!!i):this.engine.process(this.namespaceId,n,e.slice(1),i):this.delegate.setProperty(n,e,i)}listen(n,e,i,o){if("@"==e.charAt(0)){const r=function ire(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}(n);let s=e.slice(1),a="";return"@"!=s.charAt(0)&&([s,a]=function ore(t){const n=t.indexOf(".");return[t.substring(0,n),t.slice(n+1)]}(s)),this.engine.listen(this.namespaceId,r,s,a,l=>{this.factory.scheduleListenerCallback(l._data||-1,i,l)})}return this.delegate.listen(n,e,i,o)}}class rre{delegate;engine;_zone;_currentId=0;_microtaskId=1;_animationCallbacksBuffer=[];_rendererCache=new Map;_cdRecurDepth=0;constructor(n,e,i){this.delegate=n,this.engine=e,this._zone=i,e.onRemovalComplete=(o,r)=>{r?.removeChild(null,o)}}createRenderer(n,e){const o=this.delegate.createRenderer(n,e);if(!n||!e?.data?.animation){const c=this._rendererCache;let f=c.get(o);return f||(f=new BN("",o,this.engine,()=>c.delete(o)),c.set(o,f)),f}const r=e.id,s=e.id+"-"+this._currentId;this._currentId++,this.engine.register(s,n);const a=c=>{Array.isArray(c)?c.forEach(a):this.engine.registerTrigger(r,s,n,c.name,c)};return e.data.animation.forEach(a),new nre(this,s,o,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(n,e,i){if(n>=0&&ne(i));const o=this._animationCallbacksBuffer;0==o.length&&queueMicrotask(()=>{this._zone.run(()=>{o.forEach(r=>{const[s,a]=r;s(a)}),this._animationCallbacksBuffer=[]})}),o.push([e,i])}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}componentReplaced(n){this.engine.flush(),this.delegate.componentReplaced?.(n)}}const VN=[{provide:Jw,useFactory:function lre(){return new vN}},{provide:lf,useClass:(()=>{class t extends lf{constructor(e,i,o){super(e,i,o)}ngOnDestroy(){this.flush()}static \u0275fac=function(i){return new(i||t)(ce(et),ce(Qw),ce(Jw))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})()},{provide:Lo,useFactory:function cre(){return new rre(D(Ow),D(lf),D(_e))}}],HN=[{provide:Qw,useClass:Zw},{provide:Rm,useValue:"NoopAnimations"},...VN],hx=[{provide:Qw,useFactory:()=>new NN},{provide:Rm,useFactory:()=>"BrowserAnimations"},...VN];let dre=(()=>{class t{static withConfig(e){return{ngModule:t,providers:e.disableAnimations?HN:hx}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:hx,imports:[oN]})}return t})();function ma(t){return this instanceof ma?(this.v=t,this):new ma(t)}function $N(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=function gx(t){var n="function"==typeof Symbol&&Symbol.iterator,e=n&&t[n],i=0;if(e)return e.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),e={},i("next"),i("throw"),i("return"),e[Symbol.asyncIterator]=function(){return this},e);function i(r){e[r]=t[r]&&function(s){return new Promise(function(a,l){!function o(r,s,a,l){Promise.resolve(l).then(function(c){r({value:c,done:a})},s)}(a,l,(s=t[r](s)).done,s.value)})}}}"function"==typeof SuppressedError&&SuppressedError;const WN=t=>t&&"number"==typeof t.length&&"function"!=typeof t;function GN(t){return cn(t?.then)}function qN(t){return cn(t[sy])}function KN(t){return Symbol.asyncIterator&&cn(t?.[Symbol.asyncIterator])}function YN(t){return new TypeError(`You provided ${null!==t&&"object"==typeof t?"an invalid object":`'${t}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const XN=function Lre(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function ZN(t){return cn(t?.[XN])}function QN(t){return function zN(t,n,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o,i=e.apply(t,n||[]),r=[];return o=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",function s(_){return function(w){return Promise.resolve(w).then(_,m)}}),o[Symbol.asyncIterator]=function(){return this},o;function a(_,w){i[_]&&(o[_]=function(k){return new Promise(function(T,I){r.push([_,k,T,I])>1||l(_,k)})},w&&(o[_]=w(o[_])))}function l(_,w){try{!function c(_){_.value instanceof ma?Promise.resolve(_.value.v).then(f,m):g(r[0][2],_)}(i[_](w))}catch(k){g(r[0][3],k)}}function f(_){l("next",_)}function m(_){l("throw",_)}function g(_,w){_(w),r.shift(),r.length&&l(r[0][0],r[0][1])}}(this,arguments,function*(){const e=t.getReader();try{for(;;){const{value:i,done:o}=yield ma(e.read());if(o)return yield ma(void 0);yield yield ma(i)}}finally{e.releaseLock()}})}function JN(t){return cn(t?.getReader)}function ji(t){if(t instanceof Ft)return t;if(null!=t){if(qN(t))return function Bre(t){return new Ft(n=>{const e=t[sy]();if(cn(e.subscribe))return e.subscribe(n);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(t);if(WN(t))return function Vre(t){return new Ft(n=>{for(let e=0;e{t.then(e=>{n.closed||(n.next(e),n.complete())},e=>n.error(e)).then(null,FD)})}(t);if(KN(t))return eL(t);if(ZN(t))return function jre(t){return new Ft(n=>{for(const e of t)if(n.next(e),n.closed)return;n.complete()})}(t);if(JN(t))return function Ure(t){return eL(QN(t))}(t)}throw YN(t)}function eL(t){return new Ft(n=>{(function zre(t,n){var e,i,o,r;return function jN(t,n,e,i){return new(e||(e=Promise))(function(r,s){function a(f){try{c(i.next(f))}catch(m){s(m)}}function l(f){try{c(i.throw(f))}catch(m){s(m)}}function c(f){f.done?r(f.value):function o(r){return r instanceof e?r:new e(function(s){s(r)})}(f.value).then(a,l)}c((i=i.apply(t,n||[])).next())})}(this,void 0,void 0,function*(){try{for(e=$N(t);!(i=yield e.next()).done;)if(n.next(i.value),n.closed)return}catch(s){o={error:s}}finally{try{i&&!i.done&&(r=e.return)&&(yield r.call(e))}finally{if(o)throw o.error}}n.complete()})})(t,n).catch(e=>n.error(e))})}function tn(t,n){return Mn((e,i)=>{let o=null,r=0,s=!1;const a=()=>s&&!o&&i.complete();e.subscribe(dn(i,l=>{o?.unsubscribe();let c=0;const f=r++;ji(t(l,f)).subscribe(o=dn(i,m=>i.next(n?n(l,m,f,c++):m),()=>{o=null,a()}))},()=>{s=!0,a()}))})}function B_(t){return Mn((n,e)=>{try{n.subscribe(e)}finally{e.add(t)}})}function Ms(t,n,e,i=0,o=!1){const r=n.schedule(function(){e(),o?t.add(this.schedule(null,i)):this.unsubscribe()},i);if(t.add(r),!o)return r}function It(t,n,e=1/0){return cn(n)?It((i,o)=>Se((r,s)=>n(i,r,o,s))(ji(t(i,o))),e):("number"==typeof n&&(e=n),Mn((i,o)=>function $re(t,n,e,i,o,r,s,a){const l=[];let c=0,f=0,m=!1;const g=()=>{m&&!l.length&&!c&&n.complete()},_=k=>c{r&&n.next(k),c++;let T=!1;ji(e(k,f++)).subscribe(dn(n,I=>{o?.(I),r?_(I):n.next(I)},()=>{T=!0},void 0,()=>{if(T)try{for(c--;l.length&&cw(I)):w(I)}g()}catch(I){n.error(I)}}))};return t.subscribe(dn(n,_,()=>{m=!0,g()})),()=>{a?.()}}(i,o,t,e)))}function cf(t,n){return cn(n)?It(t,n,1):It(t,1)}function Tn(t,n){return Mn((e,i)=>{let o=0;e.subscribe(dn(i,r=>t.call(n,r,o++)&&i.next(r)))})}function tL(t,n=0){return Mn((e,i)=>{e.subscribe(dn(i,o=>Ms(i,t,()=>i.next(o),n),()=>Ms(i,t,()=>i.complete(),n),o=>Ms(i,t,()=>i.error(o),n)))})}function nL(t,n=0){return Mn((e,i)=>{i.add(t.schedule(()=>e.subscribe(i),n))})}function iL(t,n){if(!t)throw new Error("Iterable cannot be null");return new Ft(e=>{Ms(e,n,()=>{const i=t[Symbol.asyncIterator]();Ms(e,n,()=>{i.next().then(o=>{o.done?e.complete():e.next(o.value)})},0,!0)})})}function Kn(t,n){return n?function Xre(t,n){if(null!=t){if(qN(t))return function Wre(t,n){return ji(t).pipe(nL(n),tL(n))}(t,n);if(WN(t))return function qre(t,n){return new Ft(e=>{let i=0;return n.schedule(function(){i===t.length?e.complete():(e.next(t[i++]),e.closed||this.schedule())})})}(t,n);if(GN(t))return function Gre(t,n){return ji(t).pipe(nL(n),tL(n))}(t,n);if(KN(t))return iL(t,n);if(ZN(t))return function Kre(t,n){return new Ft(e=>{let i;return Ms(e,n,()=>{i=t[XN](),Ms(e,n,()=>{let o,r;try{({value:o,done:r}=i.next())}catch(s){return void e.error(s)}r?e.complete():e.next(o)},0,!0)}),()=>cn(i?.return)&&i.return()})}(t,n);if(JN(t))return function Yre(t,n){return iL(QN(t),n)}(t,n)}throw YN(t)}(t,n):ji(t)}function oL(t){return t&&cn(t.schedule)}function bx(t){return t[t.length-1]}function rL(t){return cn(bx(t))?t.pop():void 0}function df(t){return oL(bx(t))?t.pop():void 0}function ae(...t){return Kn(t,df(t))}class Uo{headers;normalizedNames=new Map;lazyInit;lazyUpdate=null;constructor(n){n?"string"==typeof n?this.lazyInit=()=>{this.headers=new Map,n.split("\n").forEach(e=>{const i=e.indexOf(":");if(i>0){const o=e.slice(0,i),r=e.slice(i+1).trim();this.addHeaderEntry(o,r)}})}:typeof Headers<"u"&&n instanceof Headers?(this.headers=new Map,n.forEach((e,i)=>{this.addHeaderEntry(i,e)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(n).forEach(([e,i])=>{this.setHeaderEntries(e,i)})}:this.headers=new Map}has(n){return this.init(),this.headers.has(n.toLowerCase())}get(n){this.init();const e=this.headers.get(n.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(n){return this.init(),this.headers.get(n.toLowerCase())||null}append(n,e){return this.clone({name:n,value:e,op:"a"})}set(n,e){return this.clone({name:n,value:e,op:"s"})}delete(n,e){return this.clone({name:n,value:e,op:"d"})}maybeSetNormalizedName(n,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,n)}init(){this.lazyInit&&(this.lazyInit instanceof Uo?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(n=>this.applyUpdate(n)),this.lazyUpdate=null))}copyFrom(n){n.init(),Array.from(n.headers.keys()).forEach(e=>{this.headers.set(e,n.headers.get(e)),this.normalizedNames.set(e,n.normalizedNames.get(e))})}clone(n){const e=new Uo;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof Uo?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([n]),e}applyUpdate(n){const e=n.name.toLowerCase();switch(n.op){case"a":case"s":let i=n.value;if("string"==typeof i&&(i=[i]),0===i.length)return;this.maybeSetNormalizedName(n.name,e);const o=("a"===n.op?this.headers.get(e):void 0)||[];o.push(...i),this.headers.set(e,o);break;case"d":const r=n.value;if(r){let s=this.headers.get(e);if(!s)return;s=s.filter(a=>-1===r.indexOf(a)),0===s.length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,s)}else this.headers.delete(e),this.normalizedNames.delete(e)}}addHeaderEntry(n,e){const i=n.toLowerCase();this.maybeSetNormalizedName(n,i),this.headers.has(i)?this.headers.get(i).push(e):this.headers.set(i,[e])}setHeaderEntries(n,e){const i=(Array.isArray(e)?e:[e]).map(r=>r.toString()),o=n.toLowerCase();this.headers.set(o,i),this.maybeSetNormalizedName(n,o)}forEach(n){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>n(this.normalizedNames.get(e),this.headers.get(e)))}}class Qre{map=new Map;set(n,e){return this.map.set(n,e),this}get(n){return this.map.has(n)||this.map.set(n,n.defaultValue()),this.map.get(n)}delete(n){return this.map.delete(n),this}has(n){return this.map.has(n)}keys(){return this.map.keys()}}class Jre{encodeKey(n){return aL(n)}encodeValue(n){return aL(n)}decodeKey(n){return decodeURIComponent(n)}decodeValue(n){return decodeURIComponent(n)}}const tse=/%(\d[a-f0-9])/gi,nse={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function aL(t){return encodeURIComponent(t).replace(tse,(n,e)=>nse[e]??n)}function V_(t){return`${t}`}class ga{map;encoder;updates=null;cloneFrom=null;constructor(n={}){if(this.encoder=n.encoder||new Jre,n.fromString){if(n.fromObject)throw new X(2805,!1);this.map=function ese(t,n){const e=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(o=>{const r=o.indexOf("="),[s,a]=-1==r?[n.decodeKey(o),""]:[n.decodeKey(o.slice(0,r)),n.decodeValue(o.slice(r+1))],l=e.get(s)||[];l.push(a),e.set(s,l)}),e}(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach(e=>{const i=n.fromObject[e],o=Array.isArray(i)?i.map(V_):[V_(i)];this.map.set(e,o)})):this.map=null}has(n){return this.init(),this.map.has(n)}get(n){this.init();const e=this.map.get(n);return e?e[0]:null}getAll(n){return this.init(),this.map.get(n)||null}keys(){return this.init(),Array.from(this.map.keys())}append(n,e){return this.clone({param:n,value:e,op:"a"})}appendAll(n){const e=[];return Object.keys(n).forEach(i=>{const o=n[i];Array.isArray(o)?o.forEach(r=>{e.push({param:i,value:r,op:"a"})}):e.push({param:i,value:o,op:"a"})}),this.clone(e)}set(n,e){return this.clone({param:n,value:e,op:"s"})}delete(n,e){return this.clone({param:n,value:e,op:"d"})}toString(){return this.init(),this.keys().map(n=>{const e=this.encoder.encodeKey(n);return this.map.get(n).map(i=>e+"="+this.encoder.encodeValue(i)).join("&")}).filter(n=>""!==n).join("&")}clone(n){const e=new ga({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat(n),e}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(n=>this.map.set(n,this.cloneFrom.map.get(n))),this.updates.forEach(n=>{switch(n.op){case"a":case"s":const e=("a"===n.op?this.map.get(n.param):void 0)||[];e.push(V_(n.value)),this.map.set(n.param,e);break;case"d":if(void 0===n.value){this.map.delete(n.param);break}{let i=this.map.get(n.param)||[];const o=i.indexOf(V_(n.value));-1!==o&&i.splice(o,1),i.length>0?this.map.set(n.param,i):this.map.delete(n.param)}}}),this.cloneFrom=this.updates=null)}}function lL(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function cL(t){return typeof Blob<"u"&&t instanceof Blob}function dL(t){return typeof FormData<"u"&&t instanceof FormData}const uf="Content-Type",uL="text/plain",hL="application/json",fL=`${hL}, ${uL}, */*`;class hf{url;body=null;headers;context;reportProgress=!1;withCredentials=!1;credentials;keepalive=!1;cache;priority;mode;redirect;referrer;integrity;referrerPolicy;responseType="json";method;params;urlWithParams;transferCache;timeout;constructor(n,e,i,o){let r;if(this.url=e,this.method=n.toUpperCase(),function ise(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||o?(this.body=void 0!==i?i:null,r=o):r=i,r){if(this.reportProgress=!!r.reportProgress,this.withCredentials=!!r.withCredentials,this.keepalive=!!r.keepalive,r.responseType&&(this.responseType=r.responseType),r.headers&&(this.headers=r.headers),r.context&&(this.context=r.context),r.params&&(this.params=r.params),r.priority&&(this.priority=r.priority),r.cache&&(this.cache=r.cache),r.credentials&&(this.credentials=r.credentials),"number"==typeof r.timeout){if(r.timeout<1||!Number.isInteger(r.timeout))throw new X(2822,"");this.timeout=r.timeout}r.mode&&(this.mode=r.mode),r.redirect&&(this.redirect=r.redirect),r.integrity&&(this.integrity=r.integrity),r.referrer&&(this.referrer=r.referrer),r.referrerPolicy&&(this.referrerPolicy=r.referrerPolicy),this.transferCache=r.transferCache}if(this.headers??=new Uo,this.context??=new Qre,this.params){const s=this.params.toString();if(0===s.length)this.urlWithParams=e;else{const a=e.indexOf("?");this.urlWithParams=e+(-1===a?"?":aee.set(ie,n.setHeaders[ie]),W)),n.setParams&&(Y=Object.keys(n.setParams).reduce((ee,ie)=>ee.set(ie,n.setParams[ie]),Y)),new hf(e,i,T,{params:Y,headers:W,context:K,reportProgress:R,responseType:o,withCredentials:I,transferCache:w,keepalive:r,cache:a,priority:s,timeout:k,mode:l,redirect:c,credentials:f,referrer:m,integrity:g,referrerPolicy:_})}}var _a=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}(_a||{});class vx{headers;status;statusText;url;ok;type;redirected;responseType;constructor(n,e=200,i="OK"){this.headers=n.headers||new Uo,this.status=void 0!==n.status?n.status:e,this.statusText=n.statusText||i,this.url=n.url||null,this.redirected=n.redirected,this.responseType=n.responseType,this.ok=this.status>=200&&this.status<300}}class j_ extends vx{constructor(n={}){super(n)}type=_a.ResponseHeader;clone(n={}){return new j_({headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}class ff extends vx{body;constructor(n={}){super(n),this.body=void 0!==n.body?n.body:null}type=_a.Response;clone(n={}){return new ff({body:void 0!==n.body?n.body:this.body,headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0,redirected:n.redirected??this.redirected,responseType:n.responseType??this.responseType})}}class zl extends vx{name="HttpErrorResponse";message;error;ok=!1;constructor(n){super(n,0,"Unknown Error"),this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${n.url||"(unknown url)"}`:`Http failure response for ${n.url||"(unknown url)"}: ${n.status} ${n.statusText}`,this.error=n.error||null}}const mL=new Z(""),dse=/^\)\]\}',?\n/;let gL=(()=>{class t{xhrFactory;tracingService=D(oa,{optional:!0});constructor(e){this.xhrFactory=e}maybePropagateTrace(e){return this.tracingService?.propagate?this.tracingService.propagate(e):e}handle(e){if("JSONP"===e.method)throw new X(-2800,!1);const i=this.xhrFactory;return ae(null).pipe(tn(()=>new Ft(r=>{const s=i.build();if(s.open(e.method,e.urlWithParams),e.withCredentials&&(s.withCredentials=!0),e.headers.forEach((T,I)=>s.setRequestHeader(T,I.join(","))),e.headers.has("Accept")||s.setRequestHeader("Accept",fL),!e.headers.has(uf)){const T=e.detectContentTypeHeader();null!==T&&s.setRequestHeader(uf,T)}if(e.timeout&&(s.timeout=e.timeout),e.responseType){const T=e.responseType.toLowerCase();s.responseType="json"!==T?T:"text"}const a=e.serializeBody();let l=null;const c=()=>{if(null!==l)return l;const T=s.statusText||"OK",I=new Uo(s.getAllResponseHeaders());return l=new j_({headers:I,status:s.status,statusText:T,url:s.responseURL||e.url}),l},f=this.maybePropagateTrace(()=>{let{headers:T,status:I,statusText:R,url:W}=c(),Y=null;204!==I&&(Y=typeof s.response>"u"?s.responseText:s.response),0===I&&(I=Y?200:0);let K=I>=200&&I<300;if("json"===e.responseType&&"string"==typeof Y){const ee=Y;Y=Y.replace(dse,"");try{Y=""!==Y?JSON.parse(Y):null}catch(ie){Y=ee,K&&(K=!1,Y={error:ie,text:Y})}}K?(r.next(new ff({body:Y,headers:T,status:I,statusText:R,url:W||void 0})),r.complete()):r.error(new zl({error:Y,headers:T,status:I,statusText:R,url:W||void 0}))}),m=this.maybePropagateTrace(T=>{const{url:I}=c(),R=new zl({error:T,status:s.status||0,statusText:s.statusText||"Unknown Error",url:I||void 0});r.error(R)});let g=m;e.timeout&&(g=this.maybePropagateTrace(T=>{const{url:I}=c(),R=new zl({error:new DOMException("Request timed out","TimeoutError"),status:s.status||0,statusText:s.statusText||"Request timeout",url:I||void 0});r.error(R)}));let _=!1;const w=this.maybePropagateTrace(T=>{_||(r.next(c()),_=!0);let I={type:_a.DownloadProgress,loaded:T.loaded};T.lengthComputable&&(I.total=T.total),"text"===e.responseType&&s.responseText&&(I.partialText=s.responseText),r.next(I)}),k=this.maybePropagateTrace(T=>{let I={type:_a.UploadProgress,loaded:T.loaded};T.lengthComputable&&(I.total=T.total),r.next(I)});return s.addEventListener("load",f),s.addEventListener("error",m),s.addEventListener("timeout",g),s.addEventListener("abort",m),e.reportProgress&&(s.addEventListener("progress",w),null!==a&&s.upload&&s.upload.addEventListener("progress",k)),s.send(a),r.next({type:_a.Sent}),()=>{s.removeEventListener("error",m),s.removeEventListener("abort",m),s.removeEventListener("load",f),s.removeEventListener("timeout",g),e.reportProgress&&(s.removeEventListener("progress",w),null!==a&&s.upload&&s.upload.removeEventListener("progress",k)),s.readyState!==s.DONE&&s.abort()}})))}static \u0275fac=function(i){return new(i||t)(ce(YM))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function _L(t,n){return n(t)}function use(t,n){return(e,i)=>n.intercept(e,{handle:o=>t(o,i)})}const fse=new Z(""),pf=new Z("",{factory:()=>[]}),pse=new Z(""),bL=new Z("",{factory:()=>!0});function mse(){let t=null;return(n,e)=>{null===t&&(t=(D(fse,{optional:!0})??[]).reduceRight(use,_L));const i=D(hm);if(D(bL)){const r=i.add();return t(n,e).pipe(B_(r))}return t(n,e)}}let U_=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(gL),o},providedIn:"root"})}return t})(),wx=(()=>{class t{backend;injector;chain=null;pendingTasks=D(hm);contributeToStability=D(bL);constructor(e,i){this.backend=e,this.injector=i}handle(e){if(null===this.chain){const i=Array.from(new Set([...this.injector.get(pf),...this.injector.get(pse,[])]));this.chain=i.reduceRight((o,r)=>function hse(t,n,e){return(i,o)=>Qi(e,()=>n(i,r=>t(r,o)))}(o,r,this.injector),_L)}if(this.contributeToStability){const i=this.pendingTasks.add();return this.chain(e,o=>this.backend.handle(o)).pipe(B_(i))}return this.chain(e,i=>this.backend.handle(i))}static \u0275fac=function(i){return new(i||t)(ce(U_),ce(zn))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),xx=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(wx),o},providedIn:"root"})}return t})();function Sx(t,n){return{body:n,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials,credentials:t.credentials,transferCache:t.transferCache,timeout:t.timeout,keepalive:t.keepalive,priority:t.priority,cache:t.cache,mode:t.mode,redirect:t.redirect,integrity:t.integrity,referrer:t.referrer,referrerPolicy:t.referrerPolicy}}let ba=(()=>{class t{handler;constructor(e){this.handler=e}request(e,i,o={}){let r;if(e instanceof hf)r=e;else{let l,c;l=o.headers instanceof Uo?o.headers:new Uo(o.headers),o.params&&(c=o.params instanceof ga?o.params:new ga({fromObject:o.params})),r=new hf(e,i,void 0!==o.body?o.body:null,{headers:l,context:o.context,params:c,reportProgress:o.reportProgress,responseType:o.responseType||"json",withCredentials:o.withCredentials,transferCache:o.transferCache,keepalive:o.keepalive,priority:o.priority,cache:o.cache,mode:o.mode,redirect:o.redirect,credentials:o.credentials,referrer:o.referrer,referrerPolicy:o.referrerPolicy,integrity:o.integrity,timeout:o.timeout})}const s=ae(r).pipe(cf(l=>this.handler.handle(l)));if(e instanceof hf||"events"===o.observe)return s;const a=s.pipe(Tn(l=>l instanceof ff));switch(o.observe||"body"){case"body":switch(r.responseType){case"arraybuffer":return a.pipe(Se(l=>{if(null!==l.body&&!(l.body instanceof ArrayBuffer))throw new X(2806,!1);return l.body}));case"blob":return a.pipe(Se(l=>{if(null!==l.body&&!(l.body instanceof Blob))throw new X(2807,!1);return l.body}));case"text":return a.pipe(Se(l=>{if(null!==l.body&&"string"!=typeof l.body)throw new X(2808,!1);return l.body}));default:return a.pipe(Se(l=>l.body))}case"response":return a;default:throw new X(2809,!1)}}delete(e,i={}){return this.request("DELETE",e,i)}get(e,i={}){return this.request("GET",e,i)}head(e,i={}){return this.request("HEAD",e,i)}jsonp(e,i){return this.request("JSONP",e,{params:(new ga).append(i,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(e,i={}){return this.request("OPTIONS",e,i)}patch(e,i,o={}){return this.request("PATCH",e,Sx(o,i))}post(e,i,o={}){return this.request("POST",e,Sx(o,i))}put(e,i,o={}){return this.request("PUT",e,Sx(o,i))}static \u0275fac=function(i){return new(i||t)(ce(xx))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const yL=new Z("",{factory:()=>!0}),CL=new Z("",{factory:()=>"XSRF-TOKEN"}),wL=new Z("",{factory:()=>"X-XSRF-TOKEN"});let Cse=(()=>{class t{cookieName=D(CL);doc=D(et);lastCookieString="";lastToken=null;parseCount=0;getToken(){const e=this.doc.cookie||"";return e!==this.lastCookieString&&(this.parseCount++,this.lastToken=KM(e,this.cookieName),this.lastCookieString=e),this.lastToken}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),wse=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(Cse),o},providedIn:"root"})}return t})();function xse(t,n){if(!D(yL)||"GET"===t.method||"HEAD"===t.method)return n(t);try{const o=D(pm).href,{origin:r}=new URL(o),{origin:s}=new URL(t.url,r);if(r!==s)return n(t)}catch{return n(t)}const e=D(wse).getToken(),i=D(wL);return null!=e&&!t.headers.has(i)&&(t=t.clone({headers:t.headers.set(i,e)})),n(t)}var va=function(t){return t[t.Interceptors=0]="Interceptors",t[t.LegacyInterceptors=1]="LegacyInterceptors",t[t.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",t[t.NoXsrfProtection=3]="NoXsrfProtection",t[t.JsonpSupport=4]="JsonpSupport",t[t.RequestsMadeViaParent=5]="RequestsMadeViaParent",t[t.Fetch=6]="Fetch",t}(va||{});function $l(t,n){return{\u0275kind:t,\u0275providers:n}}function Sse(...t){const n=[ba,wx,{provide:xx,useExisting:wx},{provide:U_,useFactory:()=>D(mL,{optional:!0})??D(gL)},{provide:pf,useValue:xse,multi:!0}];for(const e of t)n.push(...e.\u0275providers);return Hu(n)}const xL=new Z("");function jr(t){return!!t&&(t instanceof Ft||cn(t.lift)&&cn(t.subscribe))}const{isArray:Dse}=Array,{getPrototypeOf:Mse,prototype:Tse,keys:Ese}=Object;function SL(t){if(1===t.length){const n=t[0];if(Dse(n))return{args:n,keys:null};if(function Pse(t){return t&&"object"==typeof t&&Mse(t)===Tse}(n)){const e=Ese(n);return{args:e.map(i=>n[i]),keys:e}}}return{args:t,keys:null}}const{isArray:Ise}=Array;function kL(t){return Se(n=>function Ose(t,n){return Ise(n)?t(...n):t(n)}(t,n))}function DL(t,n){return t.reduce((e,i,o)=>(e[i]=n[o],e),{})}function kx(...t){const n=df(t),e=rL(t),{args:i,keys:o}=SL(t);if(0===i.length)return Kn([],n);const r=new Ft(function Ase(t,n,e=Ga){return i=>{ML(n,()=>{const{length:o}=t,r=new Array(o);let s=o,a=o;for(let l=0;l{const c=Kn(t[l],n);let f=!1;c.subscribe(dn(i,m=>{r[l]=m,f||(f=!0,a--),a||i.next(e(r.slice()))},()=>{--s||i.complete()}))},i)},i)}}(i,n,o?s=>DL(o,s):Ga));return e?r.pipe(kL(e)):r}function ML(t,n,e){t?Ms(e,t,n):n()}const Dx=ty(t=>function(){t(this),this.name="EmptyError",this.message="no elements in sequence"});function Vd(t=1/0){return It(Ga,t)}function Ts(...t){return function Rse(){return Vd(1)}()(Kn(t,df(t)))}function ya(t){return new Ft(n=>{ji(t()).subscribe(n)})}const Oi=new Ft(t=>t.complete());function mr(t,n){const e=cn(t)?t:()=>t,i=o=>o.error(e());return new Ft(n?o=>n.schedule(i,0,o):i)}function Cn(t){return t<=0?()=>Oi:Mn((n,e)=>{let i=0;n.subscribe(dn(e,o=>{++i<=t&&(e.next(o),t<=i&&e.complete())}))})}function Bse(t=Vse){return Mn((n,e)=>{let i=!1;n.subscribe(dn(e,o=>{i=!0,e.next(o)},()=>i?e.complete():e.error(t())))})}function Vse(){return new Dx}function Ur(t,n){const e=arguments.length>=2;return i=>i.pipe(t?Tn((o,r)=>t(o,r,i)):Ga,Cn(1),e?function Lse(t){return Mn((n,e)=>{let i=!1;n.subscribe(dn(e,o=>{i=!0,e.next(o)},()=>{i||e.next(t),e.complete()}))})}(n):Bse(()=>new Dx))}function si(...t){const n=df(t);return Mn((e,i)=>{(n?Ts(t,e,n):Ts(t,e)).subscribe(i)})}function fn(t){return Mn((n,e)=>{ji(t).subscribe(dn(e,()=>e.complete(),Np)),!e.closed&&n.subscribe(e)})}function ai(t,n,e){const i=cn(t)||n||e?{next:t,error:n,complete:e}:t;return i?Mn((o,r)=>{var s;null===(s=i.subscribe)||void 0===s||s.call(i);let a=!0;o.subscribe(dn(r,l=>{var c;null===(c=i.next)||void 0===c||c.call(i,l),r.next(l)},()=>{var l;a=!1,null===(l=i.complete)||void 0===l||l.call(i),r.complete()},l=>{var c;a=!1,null===(c=i.error)||void 0===c||c.call(i,l),r.error(l)},()=>{var l,c;a&&(null===(l=i.unsubscribe)||void 0===l||l.call(i)),null===(c=i.finalize)||void 0===c||c.call(i)}))}):Ga}function TL(t){return t<=0?()=>Oi:Mn((n,e)=>{let i=[];n.subscribe(dn(e,o=>{i.push(o),t{for(const o of i)e.next(o);e.complete()},void 0,()=>{i=null}))})}function Ui(t){return Mn((n,e)=>{let r,i=null,o=!1;i=n.subscribe(dn(e,void 0,void 0,s=>{r=ji(t(s,Ui(t)(n))),i?(i.unsubscribe(),i=null,r.subscribe(e)):o=!0})),o&&(i.unsubscribe(),i=null,r.subscribe(e))})}let Zse=(()=>{class t{_doc;constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Mx=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(tae),o},providedIn:"root"})}return t})(),tae=(()=>{class t extends Mx{_doc;constructor(e){super(),this._doc=e}sanitize(e,i){if(null==i)return null;switch(e){case bi.NONE:return i;case bi.HTML:return Fr(i,"HTML")?Mo(i):eE(this._doc,String(i)).toString();case bi.STYLE:return Fr(i,"Style")?Mo(i):i;case bi.SCRIPT:if(Fr(i,"Script"))return Mo(i);throw new X(5200,!1);case bi.URL:return Fr(i,"URL")?Mo(i):ch(String(i));case bi.RESOURCE_URL:if(Fr(i,"ResourceURL"))return Mo(i);throw new X(5201,!1);default:throw new X(5202,!1)}}bypassSecurityTrustHtml(e){return function M9(t){return new C9(t)}(e)}bypassSecurityTrustStyle(e){return function T9(t){return new w9(t)}(e)}bypassSecurityTrustScript(e){return function E9(t){return new x9(t)}(e)}bypassSecurityTrustUrl(e){return function P9(t){return new S9(t)}(e)}bypassSecurityTrustResourceUrl(e){return function I9(t){return new k9(t)}(e)}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Ke="primary",gf=Symbol("RouteTitle");class nae{params;constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){const e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){const e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function Hd(t){return new nae(t)}function Tx(t,n,e){for(let i=0;it.length||"full"===e.pathMatch&&(n.hasChildren()||i.lengtht.length||"full"===e.pathMatch&&n.hasChildren()&&"**"!==e.path)return null;const a={};return Tx(r,t.slice(0,r.length),a)&&Tx(s,t.slice(t.length-s.length),a)?{consumed:t,posParams:a}:null}function z_(t){return new Promise((n,e)=>{t.pipe(Ur()).subscribe({next:i=>n(i),error:i=>e(i)})})}function zr(t,n){const e=t?Ex(t):void 0,i=n?Ex(n):void 0;if(!e||!i||e.length!=i.length)return!1;let o;for(let r=0;ri[r]===o)}return t===n}function Wl(t){return jr(t)?t:Rh(t)?Kn(Promise.resolve(t)):ae(t)}function FL(t){return jr(t)?z_(t):Promise.resolve(t)}const sae={exact:function BL(t,n,e){if(!Gl(t.segments,n.segments)||!W_(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(const i in n.children)if(!t.children[i]||!BL(t.children[i],n.children[i],e))return!1;return!0},subset:VL},NL={exact:function lae(t,n){return zr(t,n)},subset:function cae(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>RL(t[e],n[e]))},ignored:()=>!0},LL={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},$_={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};function Px(t,n,e){return sae[e.paths](t.root,n.root,e.matrixParams)&&NL[e.queryParams](t.queryParams,n.queryParams)&&!("exact"===e.fragment&&t.fragment!==n.fragment)}function VL(t,n,e){return HL(t,n,n.segments,e)}function HL(t,n,e,i){if(t.segments.length>e.length){const o=t.segments.slice(0,e.length);return!(!Gl(o,e)||n.hasChildren()||!W_(o,e,i))}if(t.segments.length===e.length){if(!Gl(t.segments,e)||!W_(t.segments,e,i))return!1;for(const o in n.children)if(!t.children[o]||!VL(t.children[o],n.children[o],i))return!1;return!0}{const o=e.slice(0,t.segments.length),r=e.slice(t.segments.length);return!!(Gl(t.segments,o)&&W_(t.segments,o,i)&&t.children[Ke])&&HL(t.children[Ke],n,r,i)}}function W_(t,n,e){return n.every((i,o)=>NL[e](t[o].parameters,i.parameters))}class gr{root;queryParams;fragment;_queryParamMap;constructor(n=new Wt([],{}),e={},i=null){this.root=n,this.queryParams=e,this.fragment=i}get queryParamMap(){return this._queryParamMap??=Hd(this.queryParams),this._queryParamMap}toString(){return hae.serialize(this)}}class Wt{segments;children;parent=null;constructor(n,e){this.segments=n,this.children=e,Object.values(e).forEach(i=>i.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return G_(this)}}class _f{path;parameters;_parameterMap;constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=Hd(this.parameters),this._parameterMap}toString(){return zL(this)}}function Gl(t,n){return t.length===n.length&&t.every((e,i)=>e.path===n[i].path)}let jd=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>new bf,providedIn:"root"})}return t})();class bf{parse(n){const e=new xae(n);return new gr(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){const e=`/${vf(n.root,!0)}`,i=function mae(t){const n=Object.entries(t).map(([e,i])=>Array.isArray(i)?i.map(o=>`${q_(e)}=${q_(o)}`).join("&"):`${q_(e)}=${q_(i)}`).filter(e=>e);return n.length?`?${n.join("&")}`:""}(n.queryParams);return`${e}${i}${"string"==typeof n.fragment?`#${function fae(t){return encodeURI(t)}(n.fragment)}`:""}`}}const hae=new bf;function G_(t){return t.segments.map(n=>zL(n)).join("/")}function vf(t,n){if(!t.hasChildren())return G_(t);if(n){const e=t.children[Ke]?vf(t.children[Ke],!1):"",i=[];return Object.entries(t.children).forEach(([o,r])=>{o!==Ke&&i.push(`${o}:${vf(r,!1)}`)}),i.length>0?`${e}(${i.join("//")})`:e}{const e=function uae(t,n){let e=[];return Object.entries(t.children).forEach(([i,o])=>{i===Ke&&(e=e.concat(n(o,i)))}),Object.entries(t.children).forEach(([i,o])=>{i!==Ke&&(e=e.concat(n(o,i)))}),e}(t,(i,o)=>o===Ke?[vf(t.children[Ke],!1)]:[`${o}:${vf(i,!1)}`]);return 1===Object.keys(t.children).length&&null!=t.children[Ke]?`${G_(t)}/${e[0]}`:`${G_(t)}/(${e.join("//")})`}}function jL(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function q_(t){return jL(t).replace(/%3B/gi,";")}function Ix(t){return jL(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function K_(t){return decodeURIComponent(t)}function UL(t){return K_(t.replace(/\+/g,"%20"))}function zL(t){return`${Ix(t.path)}${function pae(t){return Object.entries(t).map(([n,e])=>`;${Ix(n)}=${Ix(e)}`).join("")}(t.parameters)}`}const gae=/^[^\/()?;#]+/;function Ox(t){const n=t.match(gae);return n?n[0]:""}const _ae=/^[^\/()?;=#]+/,vae=/^[^=?&#]+/,Cae=/^[^&#]+/;class xae{url;remaining;constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new Wt([],{}):new Wt([],this.parseChildren())}parseQueryParams(){const n={};if(this.consumeOptional("?"))do{this.parseQueryParam(n)}while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(n=0){if(n>50)throw new X(4010,!1);if(""===this.remaining)return{};this.consumeOptional("/");const e=[];for(this.peekStartsWith("(")||e.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),e.push(this.parseSegment());let i={};this.peekStartsWith("/(")&&(this.capture("/"),i=this.parseParens(!0,n));let o={};return this.peekStartsWith("(")&&(o=this.parseParens(!1,n)),(e.length>0||Object.keys(i).length>0)&&(o[Ke]=new Wt(e,i)),o}parseSegment(){const n=Ox(this.remaining);if(""===n&&this.peekStartsWith(";"))throw new X(4009,!1);return this.capture(n),new _f(K_(n),this.parseMatrixParams())}parseMatrixParams(){const n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){const e=function bae(t){const n=t.match(_ae);return n?n[0]:""}(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){const o=Ox(this.remaining);o&&(i=o,this.capture(i))}n[K_(e)]=K_(i)}parseQueryParam(n){const e=function yae(t){const n=t.match(vae);return n?n[0]:""}(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){const s=function wae(t){const n=t.match(Cae);return n?n[0]:""}(this.remaining);s&&(i=s,this.capture(i))}const o=UL(e),r=UL(i);if(n.hasOwnProperty(o)){let s=n[o];Array.isArray(s)||(s=[s],n[o]=s),s.push(r)}else n[o]=r}parseParens(n,e){const i={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const o=Ox(this.remaining),r=this.remaining[o.length];if("/"!==r&&")"!==r&&";"!==r)throw new X(4010,!1);let s;o.indexOf(":")>-1?(s=o.slice(0,o.indexOf(":")),this.capture(s),this.capture(":")):n&&(s=Ke);const a=this.parseChildren(e+1);i[s??Ke]=1===Object.keys(a).length&&a[Ke]?a[Ke]:new Wt([],a),this.consumeOptional("//")}return i}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return!!this.peekStartsWith(n)&&(this.remaining=this.remaining.substring(n.length),!0)}capture(n){if(!this.consumeOptional(n))throw new X(4011,!1)}}function $L(t){return t.segments.length>0?new Wt([],{[Ke]:t}):t}function WL(t){const n={};for(const[i,o]of Object.entries(t.children)){const r=WL(o);if(i===Ke&&0===r.segments.length&&r.hasChildren())for(const[s,a]of Object.entries(r.children))n[s]=a;else(r.segments.length>0||r.hasChildren())&&(n[i]=r)}return function Sae(t){if(1===t.numberOfChildren&&t.children[Ke]){const n=t.children[Ke];return new Wt(t.segments.concat(n.segments),n.children)}return t}(new Wt(t.segments,n))}function ql(t){return t instanceof gr}function GL(t){let n;const o=$L(function e(r){const s={};for(const l of r.children){const c=e(l);s[l.outlet]=c}const a=new Wt(r.url,s);return r===t&&(n=a),a}(t.root));return n??o}function qL(t,n,e,i,o){let r=t;for(;r.parent;)r=r.parent;if(0===n.length)return Ax(r,r,r,e,i,o);const s=function Dae(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new XL(!0,0,t);let n=0,e=!1;const i=t.reduce((o,r,s)=>{if("object"==typeof r&&null!=r){if(r.outlets){const a={};return Object.entries(r.outlets).forEach(([l,c])=>{a[l]="string"==typeof c?c.split("/"):c}),[...o,{outlets:a}]}if(r.segmentPath)return[...o,r.segmentPath]}return"string"!=typeof r?[...o,r]:0===s?(r.split("/").forEach((a,l)=>{0==l&&"."===a||(0==l&&""===a?e=!0:".."===a?n++:""!=a&&o.push(a))}),o):[...o,r]},[]);return new XL(e,n,i)}(n);if(s.toRoot())return Ax(r,r,new Wt([],{}),e,i,o);const a=function Mae(t,n,e){if(t.isAbsolute)return new X_(n,!0,0);if(!e)return new X_(n,!1,NaN);if(null===e.parent)return new X_(e,!0,0);const i=Y_(t.commands[0])?0:1;return function Tae(t,n,e){let i=t,o=n,r=e;for(;r>o;){if(r-=o,i=i.parent,!i)throw new X(4005,!1);o=i.segments.length}return new X_(i,!1,o-r)}(e,e.segments.length-1+i,t.numberOfDoubleDots)}(s,r,t),l=a.processChildren?Cf(a.segmentGroup,a.index,s.commands):ZL(a.segmentGroup,a.index,s.commands);return Ax(r,a.segmentGroup,l,e,i,o)}function Y_(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function yf(t){return"object"==typeof t&&null!=t&&t.outlets}function KL(t,n,e){t||="\u0275";const i=new gr;return i.queryParams={[t]:n},e.parse(e.serialize(i)).queryParams[t]}function Ax(t,n,e,i,o,r){const s={};for(const[c,f]of Object.entries(i??{}))s[c]=Array.isArray(f)?f.map(m=>KL(c,m,r)):KL(c,f,r);let a;a=t===n?e:YL(t,n,e);const l=$L(WL(a));return new gr(l,s,o)}function YL(t,n,e){const i={};return Object.entries(t.children).forEach(([o,r])=>{i[o]=r===n?e:YL(r,n,e)}),new Wt(t.segments,i)}class XL{isAbsolute;numberOfDoubleDots;commands;constructor(n,e,i){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=i,n&&i.length>0&&Y_(i[0]))throw new X(4003,!1);const o=i.find(yf);if(o&&o!==function rae(t){return t.length>0?t[t.length-1]:null}(i))throw new X(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class X_{segmentGroup;processChildren;index;constructor(n,e,i){this.segmentGroup=n,this.processChildren=e,this.index=i}}function ZL(t,n,e){if(t??=new Wt([],{}),0===t.segments.length&&t.hasChildren())return Cf(t,n,e);const i=function Pae(t,n,e){let i=0,o=n;const r={match:!1,pathIndex:0,commandIndex:0};for(;o=e.length)return r;const s=t.segments[o],a=e[i];if(yf(a))break;const l=`${a}`,c=i0&&void 0===l)break;if(l&&c&&"object"==typeof c&&void 0===c.outlets){if(!JL(l,c,s))return r;i+=2}else{if(!JL(l,{},s))return r;i++}o++}return{match:!0,pathIndex:o,commandIndex:i}}(t,n,e),o=e.slice(i.commandIndex);if(i.match&&i.pathIndexr!==Ke)&&t.children[Ke]&&1===t.numberOfChildren&&0===t.children[Ke].segments.length){const r=Cf(t.children[Ke],n,e);return new Wt(t.segments,r.children)}return Object.entries(i).forEach(([r,s])=>{"string"==typeof s&&(s=[s]),null!==s&&(o[r]=ZL(t.children[r],n,s))}),Object.entries(t.children).forEach(([r,s])=>{void 0===i[r]&&(o[r]=s)}),new Wt(t.segments,o)}}function Rx(t,n,e){const i=t.segments.slice(0,n);let o=0;for(;o{"string"==typeof i&&(i=[i]),null!==i&&(n[e]=Rx(new Wt([],{}),0,i))}),n}function QL(t){const n={};return Object.entries(t).forEach(([e,i])=>n[e]=`${i}`),n}function JL(t,n,e){return t==e.path&&zr(n,e.parameters)}const wf="imperative";var bt=function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t}(bt||{});class $r{id;url;constructor(n,e){this.id=n,this.url=e}}class Z_ extends $r{type=bt.NavigationStart;navigationTrigger;restoredState;constructor(n,e,i="imperative",o=null){super(n,e),this.navigationTrigger=i,this.restoredState=o}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class Wr extends $r{urlAfterRedirects;type=bt.NavigationEnd;constructor(n,e,i){super(n,e),this.urlAfterRedirects=i}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}var vo=function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t[t.Aborted=4]="Aborted",t}(vo||{}),Q_=function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t}(Q_||{});class wa extends $r{reason;code;type=bt.NavigationCancel;constructor(n,e,i,o){super(n,e),this.reason=i,this.code=o}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class Ud extends $r{reason;code;type=bt.NavigationSkipped;constructor(n,e,i,o){super(n,e),this.reason=i,this.code=o}}class Fx extends $r{error;target;type=bt.NavigationError;constructor(n,e,i,o){super(n,e),this.error=i,this.target=o}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class e3 extends $r{urlAfterRedirects;state;type=bt.RoutesRecognized;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Aae extends $r{urlAfterRedirects;state;type=bt.GuardsCheckStart;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Rae extends $r{urlAfterRedirects;state;shouldActivate;type=bt.GuardsCheckEnd;constructor(n,e,i,o,r){super(n,e),this.urlAfterRedirects=i,this.state=o,this.shouldActivate=r}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class Fae extends $r{urlAfterRedirects;state;type=bt.ResolveStart;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Nae extends $r{urlAfterRedirects;state;type=bt.ResolveEnd;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Lae{route;type=bt.RouteConfigLoadStart;constructor(n){this.route=n}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class Bae{route;type=bt.RouteConfigLoadEnd;constructor(n){this.route=n}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class Vae{snapshot;type=bt.ChildActivationStart;constructor(n){this.snapshot=n}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Hae{snapshot;type=bt.ChildActivationEnd;constructor(n){this.snapshot=n}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class jae{snapshot;type=bt.ActivationStart;constructor(n){this.snapshot=n}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Uae{snapshot;type=bt.ActivationEnd;constructor(n){this.snapshot=n}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class t3{routerEvent;position;anchor;scrollBehavior;type=bt.Scroll;constructor(n,e,i,o){this.routerEvent=n,this.position=e,this.anchor=i,this.scrollBehavior=o}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}class Nx{}class n3{}class J_{url;navigationBehaviorOptions;constructor(n,e){this.url=n,this.navigationBehaviorOptions=e}}class $ae{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return this.route?.snapshot._environmentInjector??this.rootInjector}constructor(n){this.rootInjector=n,this.children=new xf(this.rootInjector)}}let xf=(()=>{class t{rootInjector;contexts=new Map;constructor(e){this.rootInjector=e}onChildOutletCreated(e,i){const o=this.getOrCreateContext(e);o.outlet=i,this.contexts.set(e,o)}onChildOutletDestroyed(e){const i=this.getContext(e);i&&(i.outlet=null,i.attachRef=null)}onOutletDeactivated(){const e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let i=this.getContext(e);return i||(i=new $ae(this.rootInjector),this.contexts.set(e,i)),i}getContext(e){return this.contexts.get(e)||null}static \u0275fac=function(i){return new(i||t)(ce(zn))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class i3{_root;constructor(n){this._root=n}get root(){return this._root.value}parent(n){const e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){const e=Lx(n,this._root);return e?e.children.map(i=>i.value):[]}firstChild(n){const e=Lx(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){const e=Bx(n,this._root);return e.length<2?[]:e[e.length-2].children.map(o=>o.value).filter(o=>o!==n)}pathFromRoot(n){return Bx(n,this._root).map(e=>e.value)}}function Lx(t,n){if(t===n.value)return n;for(const e of n.children){const i=Lx(t,e);if(i)return i}return null}function Bx(t,n){if(t===n.value)return[n];for(const e of n.children){const i=Bx(t,e);if(i.length)return i.unshift(n),i}return[]}class _r{value;children;constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}}function zd(t){const n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}class o3 extends i3{snapshot;constructor(n,e){super(n),this.snapshot=e,jx(this,n)}toString(){return this.snapshot.toString()}}function r3(t,n){const e=function Wae(t,n){const s=new Hx([],{},{},"",{},Ke,t,null,{},n);return new s3("",new _r(s,[]))}(t,n),i=new ki([new _f("",{})]),o=new ki({}),r=new ki({}),s=new ki({}),a=new ki(""),l=new Ai(i,o,s,a,r,Ke,t,e.root);return l.snapshot=e.root,new o3(new _r(l,[]),e)}class Ai{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(n,e,i,o,r,s,a,l){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=i,this.fragmentSubject=o,this.dataSubject=r,this.outlet=s,this.component=a,this._futureSnapshot=l,this.title=this.dataSubject?.pipe(Se(c=>c[gf]))??ae(void 0),this.url=n,this.params=e,this.queryParams=i,this.fragment=o,this.data=r}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.params.pipe(Se(n=>Hd(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(Se(n=>Hd(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Vx(t,n,e="emptyOnly"){let i;const{routeConfig:o}=t;return i=null===n||"always"!==e&&""!==o?.path&&(n.component||n.routeConfig?.loadComponent)?{params:{...t.params},data:{...t.data},resolve:{...t.data,...t._resolvedData??{}}}:{params:{...n.params,...t.params},data:{...n.data,...t.data},resolve:{...t.data,...n.data,...o?.data,...t._resolvedData}},o&&l3(o)&&(i.resolve[gf]=o.title),i}class Hx{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;_environmentInjector;get title(){return this.data?.[gf]}constructor(n,e,i,o,r,s,a,l,c,f){this.url=n,this.params=e,this.queryParams=i,this.fragment=o,this.data=r,this.outlet=s,this.component=a,this.routeConfig=l,this._resolve=c,this._environmentInjector=f}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??=Hd(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=Hd(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(i=>i.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class s3 extends i3{url;constructor(n,e){super(e),this.url=n,jx(this,e)}toString(){return a3(this._root)}}function jx(t,n){n.value._routerState=t,n.children.forEach(e=>jx(t,e))}function a3(t){const n=t.children.length>0?` { ${t.children.map(a3).join(", ")} } `:"";return`${t.value}${n}`}function Ux(t){if(t.snapshot){const n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,zr(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),zr(n.params,e.params)||t.paramsSubject.next(e.params),function oae(t,n){if(t.length!==n.length)return!1;for(let e=0;ezr(e.parameters,n[i].parameters))}(t.url,n.url);return e&&!(!t.parent!=!n.parent)&&(!t.parent||zx(t.parent,n.parent))}function l3(t){return"string"==typeof t.title||null===t.title}const Gae=new Z("");let eb=(()=>{class t{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=Ke;activateEvents=new we;deactivateEvents=new we;attachEvents=new we;detachEvents=new we;routerOutletData=ree();parentContexts=D(xf);location=D(Ei);changeDetector=D(Jt);inputBinder=D(tb,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(e){if(e.name){const{firstChange:i,previousValue:o}=e.name;if(i)return;this.isTrackedInParentContexts(o)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(o)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new X(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new X(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new X(4012,!1);this.location.detach();const e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,i){this.activated=e,this._activatedRoute=i,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){const e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,i){if(this.isActivated)throw new X(4013,!1);this._activatedRoute=e;const o=this.location,s=e.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,l=new qae(e,a,o.injector,this.routerOutletData);this.activated=o.createComponent(s,{index:o.length,injector:l,environmentInjector:i}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["router-outlet"]],inputs:{name:"name",routerOutletData:[1,"routerOutletData"]},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],features:[_i]})}return t})();class qae{route;childContexts;parent;outletData;constructor(n,e,i,o){this.route=n,this.childContexts=e,this.parent=i,this.outletData=o}get(n,e){return n===Ai?this.route:n===xf?this.childContexts:n===Gae?this.outletData:this.parent.get(n,e)}}const tb=new Z("");let c3=(()=>{class t{outletDataSubscriptions=new Map;bindActivatedRouteToOutletComponent(e){this.unsubscribeFromRouteData(e),this.subscribeToRouteData(e)}unsubscribeFromRouteData(e){this.outletDataSubscriptions.get(e)?.unsubscribe(),this.outletDataSubscriptions.delete(e)}subscribeToRouteData(e){const{activatedRoute:i}=e,o=kx([i.queryParams,i.params,i.data]).pipe(tn(([r,s,a],l)=>(a={...r,...s,...a},0===l?ae(a):Promise.resolve(a)))).subscribe(r=>{if(!e.isActivated||!e.activatedComponentRef||e.activatedRoute!==i||null===i.component)return void this.unsubscribeFromRouteData(e);const s=function hte(t){const n=xt(t);if(!n)return null;const e=new Th(n);return{get selector(){return e.selector},get type(){return e.componentType},get inputs(){return e.inputs},get outputs(){return e.outputs},get ngContentSelectors(){return e.ngContentSelectors},get isStandalone(){return n.standalone},get isSignal(){return n.signals}}}(i.component);if(s)for(const{templateName:a}of s.inputs)e.activatedComponentRef.setInput(a,r[a]);else this.unsubscribeFromRouteData(e)});this.outletDataSubscriptions.set(e,o)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),d3=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["ng-component"]],exportAs:["emptyRouterOutlet"],decls:1,vars:0,template:function(i,o){1&i&&B(0,"router-outlet")},dependencies:[eb],encapsulation:2})}return t})();function $x(t){const n=t.children&&t.children.map($x),e=n?{...t,children:n}:{...t};return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==Ke&&(e.component=d3),e}function Sf(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){const i=e.value;i._futureSnapshot=n.value;const o=function Yae(t,n,e){return n.children.map(i=>{for(const o of e.children)if(t.shouldReuseRoute(i.value,o.value.snapshot))return Sf(t,i,o);return Sf(t,i)})}(t,n,e);return new _r(i,o)}{if(t.shouldAttach(n.value)){const r=t.retrieve(n.value);if(null!==r){const s=r.route;return s.value._futureSnapshot=n.value,s.children=n.children.map(a=>Sf(t,a)),s}}const i=function Xae(t){return new Ai(new ki(t.url),new ki(t.params),new ki(t.queryParams),new ki(t.fragment),new ki(t.data),t.outlet,t.component,t)}(n.value),o=n.children.map(r=>Sf(t,r));return new _r(i,o)}}class Wx{redirectTo;navigationBehaviorOptions;constructor(n,e){this.redirectTo=n,this.navigationBehaviorOptions=e}}const u3="ngNavigationCancelingError";function nb(t,n){const{redirectTo:e,navigationBehaviorOptions:i}=ql(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,o=h3(!1,vo.Redirect);return o.url=e,o.navigationBehaviorOptions=i,o}function h3(t,n){const e=new Error(`NavigationCancelingError: ${t||""}`);return e[u3]=!0,e.cancellationCode=n,e}function f3(t){return!!t&&t[u3]}class Qae{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(n,e,i,o,r){this.routeReuseStrategy=n,this.futureState=e,this.currState=i,this.forwardEvent=o,this.inputBindingEnabled=r}activate(n){const e=this.futureState._root,i=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,i,n),Ux(this.futureState.root),this.activateChildRoutes(e,i,n)}deactivateChildRoutes(n,e,i){const o=zd(e);n.children.forEach(r=>{const s=r.value.outlet;this.deactivateRoutes(r,o[s],i),delete o[s]}),Object.values(o).forEach(r=>{this.deactivateRouteAndItsChildren(r,i)})}deactivateRoutes(n,e,i){const o=n.value,r=e?e.value:null;if(o===r)if(o.component){const s=i.getContext(o.outlet);s&&this.deactivateChildRoutes(n,e,s.children)}else this.deactivateChildRoutes(n,e,i);else r&&this.deactivateRouteAndItsChildren(e,i)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){const i=e.getContext(n.value.outlet),o=i&&n.value.component?i.children:e,r=zd(n);for(const s of Object.values(r))this.deactivateRouteAndItsChildren(s,o);if(i&&i.outlet){const s=i.outlet.detach(),a=i.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:a})}}deactivateRouteAndOutlet(n,e){const i=e.getContext(n.value.outlet),o=i&&n.value.component?i.children:e,r=zd(n);for(const s of Object.values(r))this.deactivateRouteAndItsChildren(s,o);i&&(i.outlet&&(i.outlet.deactivate(),i.children.onOutletDeactivated()),i.attachRef=null,i.route=null)}activateChildRoutes(n,e,i){const o=zd(e);n.children.forEach(r=>{this.activateRoutes(r,o[r.value.outlet],i),this.forwardEvent(new Uae(r.value.snapshot))}),n.children.length&&this.forwardEvent(new Hae(n.value.snapshot))}activateRoutes(n,e,i){const o=n.value,r=e?e.value:null;if(Ux(o),o===r)if(o.component){const s=i.getOrCreateContext(o.outlet);this.activateChildRoutes(n,e,s.children)}else this.activateChildRoutes(n,e,i);else if(o.component){const s=i.getOrCreateContext(o.outlet);if(this.routeReuseStrategy.shouldAttach(o.snapshot)){const a=this.routeReuseStrategy.retrieve(o.snapshot);this.routeReuseStrategy.store(o.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),Ux(a.route.value),this.activateChildRoutes(n,null,s.children)}else s.attachRef=null,s.route=o,s.outlet&&s.outlet.activateWith(o,s.injector),this.activateChildRoutes(n,null,s.children)}else this.activateChildRoutes(n,null,i)}}class p3{path;route;constructor(n){this.path=n,this.route=this.path[this.path.length-1]}}class ib{component;route;constructor(n,e){this.component=n,this.route=e}}function Jae(t,n,e){const i=t._root;return kf(i,n?n._root:null,e,[i.value])}function $d(t,n){const e=Symbol(),i=n.get(t,e);return i===e?"function"!=typeof t||function ij(t){return null!==Up(t)}(t)?n.get(t):t:i}function kf(t,n,e,i,o={canDeactivateChecks:[],canActivateChecks:[]}){const r=zd(n);return t.children.forEach(s=>{(function tle(t,n,e,i,o={canDeactivateChecks:[],canActivateChecks:[]}){const r=t.value,s=n?n.value:null,a=e?e.getContext(t.value.outlet):null;if(s&&r.routeConfig===s.routeConfig){const l=function nle(t,n,e){if("function"==typeof e)return Qi(n._environmentInjector,()=>e(t,n));switch(e){case"pathParamsChange":return!Gl(t.url,n.url);case"pathParamsOrQueryParamsChange":return!Gl(t.url,n.url)||!zr(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!zx(t,n)||!zr(t.queryParams,n.queryParams);default:return!zx(t,n)}}(s,r,r.routeConfig.runGuardsAndResolvers);l?o.canActivateChecks.push(new p3(i)):(r.data=s.data,r._resolvedData=s._resolvedData),kf(t,n,r.component?a?a.children:null:e,i,o),l&&a&&a.outlet&&a.outlet.isActivated&&o.canDeactivateChecks.push(new ib(a.outlet.component,s))}else s&&Df(n,a,o),o.canActivateChecks.push(new p3(i)),kf(t,null,r.component?a?a.children:null:e,i,o)})(s,r[s.value.outlet],e,i.concat([s.value]),o),delete r[s.value.outlet]}),Object.entries(r).forEach(([s,a])=>Df(a,e.getContext(s),o)),o}function Df(t,n,e){const i=zd(t),o=t.value;Object.entries(i).forEach(([r,s])=>{Df(s,o.component?n?n.children.getContext(r):null:n,e)}),e.canDeactivateChecks.push(new ib(o.component&&n&&n.outlet&&n.outlet.isActivated?n.outlet.component:null,o))}function Mf(t){return"function"==typeof t}function m3(t){return t instanceof Dx||"EmptyError"===t?.name}const ob=Symbol("INITIAL_VALUE");function Wd(){return tn(t=>kx(t.map(n=>n.pipe(Cn(1),si(ob)))).pipe(Se(n=>{for(const e of n)if(!0!==e){if(e===ob)return ob;if(!1===e||cle(e))return e}return!0}),Tn(n=>n!==ob),Cn(1)))}function cle(t){return ql(t)||t instanceof Wx}function g3(t){return t.aborted?ae(void 0).pipe(Cn(1)):new Ft(n=>{const e=()=>{n.next(),n.complete()};return t.addEventListener("abort",e),()=>t.removeEventListener("abort",e)})}function _3(t){return fn(g3(t))}function b3(t){return function z6(...t){return ND(t)}(ai(n=>{if("boolean"!=typeof n)throw nb(0,n)}),Se(n=>!0===n))}class Es extends Error{segmentGroup;constructor(n){super(),this.segmentGroup=n||null,Object.setPrototypeOf(this,Es.prototype)}}class Tf extends Error{urlTree;constructor(n){super(),this.urlTree=n,Object.setPrototypeOf(this,Tf.prototype)}}function yle(t){throw new X(4e3,!1)}class wle{urlSerializer;urlTree;constructor(n,e){this.urlSerializer=n,this.urlTree=e}lineralizeSegments(n,e){return Et(function*(){let i=[],o=e.root;for(;;){if(i=i.concat(o.segments),0===o.numberOfChildren)return i;if(o.numberOfChildren>1||!o.children[Ke])throw yle();o=o.children[Ke]}})()}applyRedirectCommands(n,e,i,o,r){var s=this;return Et(function*(){const a=yield function xle(t,n,e){if("string"==typeof t)return Promise.resolve(t);const i=t;return z_(Wl(Qi(e,()=>i(n))))}(e,o,r);if(a instanceof gr)throw new Tf(a);const l=s.applyRedirectCreateUrlTree(a,s.urlSerializer.parse(a),n,i);if("/"===a[0])throw new Tf(l);return l})()}applyRedirectCreateUrlTree(n,e,i,o){const r=this.createSegmentGroup(n,e.root,i,o);return new gr(r,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){const i={};return Object.entries(n).forEach(([o,r])=>{if("string"==typeof r&&":"===r[0]){const a=r.substring(1);i[o]=e[a]}else i[o]=r}),i}createSegmentGroup(n,e,i,o){const r=this.createSegments(n,e.segments,i,o);let s={};return Object.entries(e.children).forEach(([a,l])=>{s[a]=this.createSegmentGroup(n,l,i,o)}),new Wt(r,s)}createSegments(n,e,i,o){return e.map(r=>":"===r.path[0]?this.findPosParam(n,r,o):this.findOrReturn(r,i))}findPosParam(n,e,i){const o=i[e.path.substring(1)];if(!o)throw new X(4001,!1);return o}findOrReturn(n,e){let i=0;for(const o of e){if(o.path===n.path)return e.splice(i),o;i++}return n}}function Gr(t){return t.outlet||Ke}function Tle(t,n){const e=t.filter(i=>Gr(i)===n);return e.push(...t.filter(i=>Gr(i)!==n)),e}const Gx={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function v3(t){return{routeConfig:t.routeConfig,url:t.url,params:t.params,queryParams:t.queryParams,fragment:t.fragment,data:t.data,outlet:t.outlet,title:t.title,paramMap:t.paramMap,queryParamMap:t.queryParamMap}}function Ele(t,n,e,i,o,r,s){const a=y3(t,n,e);if(!a.matched)return ae(a);const l=v3(r(a));return i=function Sle(t,n){return t.providers&&!t._injector&&(t._injector=Mg(t.providers,n,`Route: ${t.path}`)),t._injector??n}(n,i),function vle(t,n,e,i,o,r){const s=n.canMatch;return s&&0!==s.length?ae(s.map(l=>{const c=$d(l,t);return Wl(function lle(t){return t&&Mf(t.canMatch)}(c)?c.canMatch(n,e,o):Qi(t,()=>c(n,e,o))).pipe(_3(r))})).pipe(Wd(),b3()):ae(!0)}(i,n,e,0,l,s).pipe(Se(c=>!0===c?a:{...Gx}))}function y3(t,n,e){if(""===n.path)return"full"===n.pathMatch&&(t.hasChildren()||e.length>0)?{...Gx}:{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};const o=(n.matcher||iae)(e,t,n);if(!o)return{...Gx};const r={};Object.entries(o.posParams??{}).forEach(([a,l])=>{r[a]=l.path});const s=o.consumed.length>0?{...r,...o.consumed[o.consumed.length-1].parameters}:r;return{matched:!0,consumedSegments:o.consumed,remainingSegments:e.slice(o.consumed.length),parameters:s,positionalParamSegments:o.posParams??{}}}function C3(t,n,e,i){return e.length>0&&function Ole(t,n,e){return e.some(i=>rb(t,n,i)&&Gr(i)!==Ke)}(t,e,i)?{segmentGroup:new Wt(n,Ile(i,new Wt(e,t.children))),slicedSegments:[]}:0===e.length&&function Ale(t,n,e){return e.some(i=>rb(t,n,i))}(t,e,i)?{segmentGroup:new Wt(t.segments,Ple(t,e,i,t.children)),slicedSegments:e}:{segmentGroup:new Wt(t.segments,t.children),slicedSegments:e}}function Ple(t,n,e,i){const o={};for(const r of e)if(rb(t,n,r)&&!i[Gr(r)]){const s=new Wt([],{});o[Gr(r)]=s}return{...i,...o}}function Ile(t,n){const e={};e[Ke]=n;for(const i of t)if(""===i.path&&Gr(i)!==Ke){const o=new Wt([],{});e[Gr(i)]=o}return e}function rb(t,n,e){return(!(t.hasChildren()||n.length>0)||"full"!==e.pathMatch)&&""===e.path}class Fle{}function qx(){return(qx=Et(function*(t,n,e,i,o,r,s="emptyOnly",a){return new Ble(t,n,e,i,o,s,r,a).recognize()})).apply(this,arguments)}class Ble{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(n,e,i,o,r,s,a,l){this.injector=n,this.configLoader=e,this.rootComponentType=i,this.config=o,this.urlTree=r,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.abortSignal=l,this.applyRedirects=new wle(this.urlSerializer,this.urlTree)}noMatchError(n){return new X(4002,`'${n.segmentGroup}'`)}recognize(){var n=this;return Et(function*(){const e=C3(n.urlTree.root,[],[],n.config).segmentGroup,{children:i,rootSnapshot:o}=yield n.match(e),r=new _r(o,i),s=new s3("",r),a=function kae(t,n,e=null,i=null,o=new bf){return qL(GL(t),n,e,i,o)}(o,[],n.urlTree.queryParams,n.urlTree.fragment);return a.queryParams=n.urlTree.queryParams,s.url=n.urlSerializer.serialize(a),{state:s,tree:a}})()}match(n){var e=this;return Et(function*(){const i=new Hx([],Object.freeze({}),Object.freeze({...e.urlTree.queryParams}),e.urlTree.fragment,Object.freeze({}),Ke,e.rootComponentType,null,{},e.injector);try{return{children:yield e.processSegmentGroup(e.injector,e.config,n,Ke,i),rootSnapshot:i}}catch(o){if(o instanceof Tf)return e.urlTree=o.urlTree,e.match(o.urlTree.root);throw o instanceof Es?e.noMatchError(o):o}})()}processSegmentGroup(n,e,i,o,r){var s=this;return Et(function*(){if(0===i.segments.length&&i.hasChildren())return s.processChildren(n,e,i,r);const a=yield s.processSegment(n,e,i,i.segments,o,!0,r);return a instanceof _r?[a]:[]})()}processChildren(n,e,i,o){var r=this;return Et(function*(){const s=[];for(const c of Object.keys(i.children))"primary"===c?s.unshift(c):s.push(c);let a=[];for(const c of s){const f=i.children[c],m=Tle(e,c),g=yield r.processSegmentGroup(n,m,f,c,o);a.push(...g)}const l=w3(a);return function Vle(t){t.sort((n,e)=>n.value.outlet===Ke?-1:e.value.outlet===Ke?1:n.value.outlet.localeCompare(e.value.outlet))}(l),l})()}processSegment(n,e,i,o,r,s,a){var l=this;return Et(function*(){for(const c of e)try{return yield l.processSegmentAgainstRoute(c._injector??n,e,c,i,o,r,s,a)}catch(f){if(f instanceof Es||m3(f))continue;throw f}if(function Rle(t,n,e){return 0===n.length&&!t.children[e]}(i,o,r))return new Fle;throw new Es(i)})()}processSegmentAgainstRoute(n,e,i,o,r,s,a,l){var c=this;return Et(function*(){if(Gr(i)!==s&&(s===Ke||!rb(o,r,i)))throw new Es(o);if(void 0===i.redirectTo)return c.matchSegmentAgainstRoute(n,o,i,r,s,l);if(c.allowRedirects&&a)return c.expandSegmentAgainstRouteUsingRedirect(n,o,e,i,r,s,l);throw new Es(o)})()}expandSegmentAgainstRouteUsingRedirect(n,e,i,o,r,s,a){var l=this;return Et(function*(){const{matched:c,parameters:f,consumedSegments:m,positionalParamSegments:g,remainingSegments:_}=y3(e,o,r);if(!c)throw new Es(e);"string"==typeof o.redirectTo&&"/"===o.redirectTo[0]&&(l.absoluteRedirectCount++,l.absoluteRedirectCount>31&&(l.allowRedirects=!1));const w=l.createSnapshot(n,o,r,f,a);if(l.abortSignal.aborted)throw new Error(l.abortSignal.reason);const k=yield l.applyRedirects.applyRedirectCommands(m,o.redirectTo,g,v3(w),n),T=yield l.applyRedirects.lineralizeSegments(o,k);return l.processSegment(n,i,e,T.concat(_),s,!1,a)})()}createSnapshot(n,e,i,o,r){const s=new Hx(i,o,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,function jle(t){return t.data||{}}(e),Gr(e),e.component??e._loadedComponent??null,e,function Ule(t){return t.resolve||{}}(e),n),a=Vx(s,r,this.paramsInheritanceStrategy);return s.params=Object.freeze(a.params),s.data=Object.freeze(a.data),s}matchSegmentAgainstRoute(n,e,i,o,r,s){var a=this;return Et(function*(){if(a.abortSignal.aborted)throw new Error(a.abortSignal.reason);const c=yield z_(Ele(e,i,o,n,0,Y=>a.createSnapshot(n,i,Y.consumedSegments,Y.parameters,s),a.abortSignal));if("**"===i.path&&(e.children={}),!c?.matched)throw new Es(e);n=i._injector??n;const{routes:f}=yield a.getChildConfig(n,i,o),m=i._loadedInjector??n,{parameters:g,consumedSegments:_,remainingSegments:w}=c,k=a.createSnapshot(n,i,_,g,s),{segmentGroup:T,slicedSegments:I}=C3(e,_,w,f);if(0===I.length&&T.hasChildren()){const Y=yield a.processChildren(m,f,T,k);return new _r(k,Y)}if(0===f.length&&0===I.length)return new _r(k,[]);const R=Gr(i)===r,W=yield a.processSegment(m,f,T,I,R?Ke:r,!0,k);return new _r(k,W instanceof _r?[W]:[])})()}getChildConfig(n,e,i){var o=this;return Et(function*(){if(e.children)return{routes:e.children,injector:n};if(e.loadChildren){if(void 0!==e._loadedRoutes){const s=e._loadedNgModuleFactory;return s&&!e._loadedInjector&&(e._loadedInjector=s.create(n).injector),{routes:e._loadedRoutes,injector:e._loadedInjector}}if(o.abortSignal.aborted)throw new Error(o.abortSignal.reason);if(yield z_(function ble(t,n,e,i,o){const r=n.canLoad;return void 0===r||0===r.length?ae(!0):ae(r.map(a=>{const l=$d(a,t),f=Wl(function ole(t){return t&&Mf(t.canLoad)}(l)?l.canLoad(n,e):Qi(t,()=>l(n,e)));return o?f.pipe(_3(o)):f})).pipe(Wd(),b3())}(n,e,i,0,o.abortSignal))){const s=yield o.configLoader.loadChildren(n,e);return e._loadedRoutes=s.routes,e._loadedInjector=s.injector,e._loadedNgModuleFactory=s.factory,s}throw function Cle(){throw h3(!1,vo.GuardRejected)}()}return{routes:[],injector:n}})()}}function Hle(t){const n=t.value.routeConfig;return n&&""===n.path}function w3(t){const n=[],e=new Set;for(const i of t){if(!Hle(i)){n.push(i);continue}const o=n.find(r=>i.value.routeConfig===r.value.routeConfig);void 0!==o?(o.children.push(...i.children),e.add(o)):n.push(i)}for(const i of e){const o=w3(i.children);n.push(new _r(i.value,o))}return n.filter(i=>!e.has(i))}function x3(t){const n=t.children.map(e=>x3(e)).flat();return[t,...n]}function S3(t){return tn(n=>{const e=t(n);return e?Kn(e).pipe(Se(()=>n)):ae(n)})}let k3=(()=>{class t{buildTitle(e){let i,o=e.root;for(;void 0!==o;)i=this.getResolvedTitleForRoute(o)??i,o=o.children.find(r=>r.outlet===Ke);return i}getResolvedTitleForRoute(e){return e.data[gf]}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>D(Kle),providedIn:"root"})}return t})(),Kle=(()=>{class t extends k3{title;constructor(e){super(),this.title=e}updateTitle(e){const i=this.buildTitle(e);void 0!==i&&this.title.setTitle(i)}static \u0275fac=function(i){return new(i||t)(ce(Zse))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Gd=new Z("",{factory:()=>({})}),sb=new Z("");let Kx=(()=>{class t{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=D(aQ);loadComponent(e,i){var o=this;return Et(function*(){if(o.componentLoaders.get(i))return o.componentLoaders.get(i);if(i._loadedComponent)return Promise.resolve(i._loadedComponent);o.onLoadStartListener&&o.onLoadStartListener(i);const r=Et(function*(){try{const s=yield FL(Qi(e,()=>i.loadComponent())),a=yield M3(D3(s));return o.onLoadEndListener&&o.onLoadEndListener(i),i._loadedComponent=a,a}finally{o.componentLoaders.delete(i)}})();return o.componentLoaders.set(i,r),r})()}loadChildren(e,i){var o=this;if(this.childrenLoaders.get(i))return this.childrenLoaders.get(i);if(i._loadedRoutes)return Promise.resolve({routes:i._loadedRoutes,injector:i._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(i);const r=Et(function*(){try{const s=yield function Yle(t,n,e,i){return Yx.apply(this,arguments)}(i,o.compiler,e,o.onLoadEndListener);return i._loadedRoutes=s.routes,i._loadedInjector=s.injector,i._loadedNgModuleFactory=s.factory,s}finally{o.childrenLoaders.delete(i)}})();return this.childrenLoaders.set(i,r),r}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Yx(){return(Yx=Et(function*(t,n,e,i){const o=yield FL(Qi(e,()=>t.loadChildren())),r=yield M3(D3(o));let s;s=r instanceof lI||Array.isArray(r)?r:yield n.compileModuleAsync(r),i&&i(t);let a,l,f;return Array.isArray(s)?l=s:(a=s.create(e).injector,f=s,l=a.get(sb,[],{optional:!0,self:!0}).flat()),{routes:l.map($x),injector:a,factory:f}})).apply(this,arguments)}function D3(t){return function Xle(t){return t&&"object"==typeof t&&"default"in t}(t)?t.default:t}function M3(t){return Xx.apply(this,arguments)}function Xx(){return(Xx=Et(function*(t){return t})).apply(this,arguments)}let Zx=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>D(Zle),providedIn:"root"})}return t})(),Zle=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,i){return e}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const T3=new Z(""),E3=new Z("");function Qle(t,n,e){const i=t.get(E3),o=t.get(et);if(!o.startViewTransition||i.skipNextTransition)return i.skipNextTransition=!1,new Promise(c=>setTimeout(c));let r;const s=new Promise(c=>{r=c}),a=o.startViewTransition(()=>(r(),function Jle(t){return new Promise(n=>{Vi({read:()=>setTimeout(n)},{injector:t})})}(t)));a.updateCallbackDone.catch(c=>{}),a.ready.catch(c=>{}),a.finished.catch(c=>{});const{onViewTransitionCreated:l}=i;return l&&Qi(t,()=>l({transition:a,from:n,to:e})),s}const ece=()=>{},P3=new Z("");let Qx=(()=>{class t{currentNavigation=yt(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=yt(null);events=new me;transitionAbortWithErrorSubject=new me;configLoader=D(Kx);environmentInjector=D(zn);destroyRef=D(rr);urlSerializer=D(jd);rootContexts=D(xf);location=D(Fd);inputBindingEnabled=null!==D(tb,{optional:!0});titleStrategy=D(k3);options=D(Gd,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly";urlHandlingStrategy=D(Zx);createViewTransition=D(T3,{optional:!0});navigationErrorHandler=D(P3,{optional:!0});navigationId=0;get hasRequestedNavigation(){return 0!==this.navigationId}transitions;afterPreactivation=()=>ae(void 0);rootComponentType=null;destroyed=!1;constructor(){this.configLoader.onLoadEndListener=o=>this.events.next(new Bae(o)),this.configLoader.onLoadStartListener=o=>this.events.next(new Lae(o)),this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(e){const i=++this.navigationId;nt(()=>{this.transitions?.next({...e,extractedUrl:this.urlHandlingStrategy.extract(e.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:i,routesRecognizeHandler:{},beforeActivateHandler:{}})})}setupNavigations(e){return this.transitions=new ki(null),this.transitions.pipe(Tn(i=>null!==i),tn(i=>{let o=!1;const r=new AbortController,s=()=>!o&&this.currentTransition?.id===i.id;return ae(i).pipe(tn(a=>{if(this.navigationId>i.id)return this.cancelNavigationTransition(i,"",vo.SupersededByNewNavigation),Oi;this.currentTransition=i;const l=this.lastSuccessfulNavigation();this.currentNavigation.set({id:a.id,initialUrl:a.rawUrl,extractedUrl:a.extractedUrl,targetBrowserUrl:"string"==typeof a.extras.browserUrl?this.urlSerializer.parse(a.extras.browserUrl):a.extras.browserUrl,trigger:a.source,extras:a.extras,previousNavigation:l?{...l,previousNavigation:null}:null,abort:()=>r.abort(),routesRecognizeHandler:a.routesRecognizeHandler,beforeActivateHandler:a.beforeActivateHandler});const c=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl();if(!c&&"reload"!==(a.extras.onSameUrlNavigation??e.onSameUrlNavigation))return this.events.next(new Ud(a.id,this.urlSerializer.serialize(a.rawUrl),"",Q_.IgnoredSameUrlNavigation)),a.resolve(!1),Oi;if(this.urlHandlingStrategy.shouldProcessUrl(a.rawUrl))return ae(a).pipe(tn(m=>(this.events.next(new Z_(m.id,this.urlSerializer.serialize(m.extractedUrl),m.source,m.restoredState)),m.id!==this.navigationId?Oi:Promise.resolve(m))),function zle(t,n,e,i,o,r,s){return It(function(){var a=Et(function*(l){const{state:c,tree:f}=yield function Nle(t,n,e,i,o,r){return qx.apply(this,arguments)}(t,n,e,i,l.extractedUrl,o,r,s);return{...l,targetSnapshot:c,urlAfterRedirects:f}});return function(l){return a.apply(this,arguments)}}())}(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy,r.signal),ai(m=>{i.targetSnapshot=m.targetSnapshot,i.urlAfterRedirects=m.urlAfterRedirects,this.currentNavigation.update(g=>(g.finalUrl=m.urlAfterRedirects,g)),this.events.next(new n3)}),tn(m=>Kn(i.routesRecognizeHandler.deferredHandle??ae(void 0)).pipe(Se(()=>m))),ai(()=>{const m=new e3(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(m)}));if(c&&this.urlHandlingStrategy.shouldProcessUrl(a.currentRawUrl)){const{id:m,extractedUrl:g,source:_,restoredState:w,extras:k}=a,T=new Z_(m,this.urlSerializer.serialize(g),_,w);this.events.next(T);const I=r3(this.rootComponentType,this.environmentInjector).snapshot;return this.currentTransition=i={...a,targetSnapshot:I,urlAfterRedirects:g,extras:{...k,skipLocationChange:!1,replaceUrl:!1}},this.currentNavigation.update(R=>(R.finalUrl=g,R)),ae(i)}return this.events.next(new Ud(a.id,this.urlSerializer.serialize(a.extractedUrl),"",Q_.IgnoredByUrlHandlingStrategy)),a.resolve(!1),Oi}),Se(a=>{const l=new Aae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);return this.events.next(l),this.currentTransition=i={...a,guards:Jae(a.targetSnapshot,a.currentSnapshot,this.rootContexts)},i}),function dle(t){return It(n=>{const{targetSnapshot:e,currentSnapshot:i,guards:{canActivateChecks:o,canDeactivateChecks:r}}=n;return 0===r.length&&0===o.length?ae({...n,guardsResult:!0}):function ule(t,n,e){return Kn(t).pipe(It(i=>function _le(t,n,e,i){const o=n&&n.routeConfig?n.routeConfig.canDeactivate:null;return o&&0!==o.length?ae(o.map(s=>{const a=n._environmentInjector,l=$d(s,a);return Wl(function ale(t){return t&&Mf(t.canDeactivate)}(l)?l.canDeactivate(t,n,e,i):Qi(a,()=>l(t,n,e,i))).pipe(Ur())})).pipe(Wd()):ae(!0)}(i.component,i.route,e,n)),Ur(i=>!0!==i,!0))}(r,e,i).pipe(It(s=>s&&function ile(t){return"boolean"==typeof t}(s)?function hle(t,n,e){return Kn(n).pipe(cf(i=>Ts(function ple(t,n){return null!==t&&n&&n(new Vae(t)),ae(!0)}(i.route.parent,e),function fle(t,n){return null!==t&&n&&n(new jae(t)),ae(!0)}(i.route,e),function gle(t,n){const e=n[n.length-1],o=n.slice(0,n.length-1).reverse().map(r=>function ele(t){const n=t.routeConfig?t.routeConfig.canActivateChild:null;return n&&0!==n.length?{node:t,guards:n}:null}(r)).filter(r=>null!==r).map(r=>ya(()=>ae(r.guards.map(a=>{const l=r.node._environmentInjector,c=$d(a,l);return Wl(function sle(t){return t&&Mf(t.canActivateChild)}(c)?c.canActivateChild(e,t):Qi(l,()=>c(e,t))).pipe(Ur())})).pipe(Wd())));return ae(o).pipe(Wd())}(t,i.path),function mle(t,n){const e=n.routeConfig?n.routeConfig.canActivate:null;if(!e||0===e.length)return ae(!0);const i=e.map(o=>ya(()=>{const r=n._environmentInjector,s=$d(o,r);return Wl(function rle(t){return t&&Mf(t.canActivate)}(s)?s.canActivate(n,t):Qi(r,()=>s(n,t))).pipe(Ur())}));return ae(i).pipe(Wd())}(t,i.route))),Ur(i=>!0!==i,!0))}(e,o,t):ae(s)),Se(s=>({...n,guardsResult:s})))})}(a=>this.events.next(a)),tn(a=>{if(i.guardsResult=a.guardsResult,a.guardsResult&&"boolean"!=typeof a.guardsResult)throw nb(0,a.guardsResult);const l=new Rae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot,!!a.guardsResult);if(this.events.next(l),!s())return Oi;if(!a.guardsResult)return this.cancelNavigationTransition(a,"",vo.GuardRejected),Oi;if(0===a.guards.canActivateChecks.length)return ae(a);const c=new Fae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);if(this.events.next(c),!s())return Oi;let f=!1;return ae(a).pipe(function $le(t){return It(n=>{const{targetSnapshot:e,guards:{canActivateChecks:i}}=n;if(!i.length)return ae(n);const o=new Set(i.map(a=>a.route)),r=new Set;for(const a of o)if(!r.has(a))for(const l of x3(a))r.add(l);let s=0;return Kn(r).pipe(cf(a=>o.has(a)?function Wle(t,n,e){const i=t.routeConfig,o=t._resolve;return void 0!==i?.title&&!l3(i)&&(o[gf]=i.title),ya(()=>(t.data=Vx(t,t.parent,e).resolve,function Gle(t,n,e){const i=Ex(t);if(0===i.length)return ae({});const o={};return Kn(i).pipe(It(r=>function qle(t,n,e){const i=n._environmentInjector,o=$d(t,i);return Wl(o.resolve?o.resolve(n,e):Qi(i,()=>o(n,e)))}(t[r],n,e).pipe(Ur(),ai(s=>{if(s instanceof Wx)throw nb(new bf,s);o[r]=s}))),TL(1),Se(()=>o),Ui(r=>m3(r)?Oi:mr(r)))}(o,t,n).pipe(Se(r=>(t._resolvedData=r,t.data={...t.data,...r},null)))))}(a,e,t):(a.data=Vx(a,a.parent,t).resolve,ae(void 0))),ai(()=>s++),TL(1),It(a=>s===r.size?ae(n):Oi))})}(this.paramsInheritanceStrategy),ai({next:()=>{f=!0;const m=new Nae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(m)},complete:()=>{f||this.cancelNavigationTransition(a,"",vo.NoDataFromResolver)}}))}),S3(a=>{const l=f=>{const m=[];f.routeConfig?._loadedComponent?f.component=f.routeConfig?._loadedComponent:f.routeConfig?.loadComponent&&m.push(this.configLoader.loadComponent(f._environmentInjector,f.routeConfig).then(_=>{f.component=_}));for(const g of f.children)m.push(...l(g));return m},c=l(a.targetSnapshot.root);return 0===c.length?ae(a):Kn(Promise.all(c).then(()=>a))}),S3(()=>this.afterPreactivation()),tn(()=>{const{currentSnapshot:a,targetSnapshot:l}=i,c=this.createViewTransition?.(this.environmentInjector,a.root,l.root);return c?Kn(c).pipe(Se(()=>i)):ae(i)}),Cn(1),tn(a=>{const l=function Kae(t,n,e){const i=Sf(t,n._root,e?e._root:void 0);return new o3(i,n)}(e.routeReuseStrategy,a.targetSnapshot,a.currentRouterState);this.currentTransition=i=a={...a,targetRouterState:l},this.currentNavigation.update(f=>(f.targetRouterState=l,f)),this.events.next(new Nx);const c=i.beforeActivateHandler.deferredHandle;return c?Kn(c.then(()=>a)):ae(a)}),ai(a=>{new Qae(e.routeReuseStrategy,i.targetRouterState,i.currentRouterState,l=>this.events.next(l),this.inputBindingEnabled).activate(this.rootContexts),s()&&(o=!0,this.currentNavigation.update(l=>(l.abort=ece,l)),this.lastSuccessfulNavigation.set(nt(this.currentNavigation)),this.events.next(new Wr(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects))),this.titleStrategy?.updateTitle(a.targetRouterState.snapshot),a.resolve(!0))}),fn(g3(r.signal).pipe(Tn(()=>!o&&!i.targetRouterState),ai(()=>{this.cancelNavigationTransition(i,r.signal.reason+"",vo.Aborted)}))),ai({complete:()=>{o=!0}}),fn(this.transitionAbortWithErrorSubject.pipe(ai(a=>{throw a}))),B_(()=>{r.abort(),o||this.cancelNavigationTransition(i,"",vo.SupersededByNewNavigation),this.currentTransition?.id===i.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),Ui(a=>{if(o=!0,this.destroyed)return i.resolve(!1),Oi;if(f3(a))this.events.next(new wa(i.id,this.urlSerializer.serialize(i.extractedUrl),a.message,a.cancellationCode)),function Zae(t){return f3(t)&&ql(t.url)}(a)?this.events.next(new J_(a.url,a.navigationBehaviorOptions)):i.resolve(!1);else{const l=new Fx(i.id,this.urlSerializer.serialize(i.extractedUrl),a,i.targetSnapshot??void 0);try{const c=Qi(this.environmentInjector,()=>this.navigationErrorHandler?.(l));if(!(c instanceof Wx))throw this.events.next(l),a;{const{message:f,cancellationCode:m}=nb(0,c);this.events.next(new wa(i.id,this.urlSerializer.serialize(i.extractedUrl),f,m)),this.events.next(new J_(c.redirectTo,c.navigationBehaviorOptions))}}catch(c){this.options.resolveNavigationPromiseOnError?i.resolve(!1):i.reject(c)}}return Oi}))}))}cancelNavigationTransition(e,i,o){const r=new wa(e.id,this.urlSerializer.serialize(e.extractedUrl),i,o);this.events.next(r),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){const e=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),i=nt(this.currentNavigation),o=i?.targetBrowserUrl??i?.extractedUrl;return e.toString()!==o?.toString()&&!i?.extras.skipLocationChange}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function tce(t){return t!==wf}const nce=new Z("");let O3=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>D(oce),providedIn:"root"})}return t})();class ice{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}shouldDestroyInjector(n){return!0}}let oce=(()=>{class t extends ice{static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),eS=(()=>{class t{urlSerializer=D(jd);options=D(Gd,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||"replace";location=D(Fd);urlHandlingStrategy=D(Zx);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";currentUrlTree=new gr;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:e,initialUrl:i,targetBrowserUrl:o}){const r=void 0!==e?this.urlHandlingStrategy.merge(e,i):i,s=o??r;return s instanceof gr?this.urlSerializer.serialize(s):s}commitTransition({targetRouterState:e,finalUrl:i,initialUrl:o}){i&&e?(this.currentUrlTree=i,this.rawUrlTree=this.urlHandlingStrategy.merge(i,o),this.routerState=e):this.rawUrlTree=o}routerState=r3(null,D(zn));getRouterState(){return this.routerState}_stateMemento=this.createStateMemento();get stateMemento(){return this._stateMemento}updateStateMemento(){this._stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}restoredState(){return this.location.getState()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>D(rce),providedIn:"root"})}return t})(),rce=(()=>{class t extends eS{currentPageId=0;lastSuccessfulId=-1;get browserPageId(){return"computed"!==this.canceledNavigationResolution?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(i=>{"popstate"===i.type&&setTimeout(()=>{e(i.url,i.state,"popstate",{replaceUrl:!0})})})}handleRouterEvent(e,i){e instanceof Z_?this.updateStateMemento():e instanceof Ud?this.commitTransition(i):e instanceof e3?"eager"===this.urlUpdateStrategy&&(i.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(i),i)):e instanceof Nx?(this.commitTransition(i),"deferred"===this.urlUpdateStrategy&&!i.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(i),i)):e instanceof wa&&!function Oae(t){return t instanceof wa&&(t.code===vo.Redirect||t.code===vo.SupersededByNewNavigation)}(e)?this.restoreHistory(i):e instanceof Fx?this.restoreHistory(i,!0):e instanceof Wr&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,{extras:i,id:o}){const{replaceUrl:r,state:s}=i;if(this.location.isCurrentPathEqualTo(e)||r){const a=this.browserPageId,l={...s,...this.generateNgRouterState(o,a)};this.location.replaceState(e,"",l)}else{const a={...s,...this.generateNgRouterState(o,this.browserPageId+1)};this.location.go(e,"",a)}}restoreHistory(e,i=!1){if("computed"===this.canceledNavigationResolution){const r=this.currentPageId-this.browserPageId;0!==r?this.location.historyGo(r):this.getCurrentUrlTree()===e.finalUrl&&0===r&&(this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}else"replace"===this.canceledNavigationResolution&&(i&&this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}resetInternalState({finalUrl:e}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,i){return"computed"===this.canceledNavigationResolution?{navigationId:e,\u0275routerPageId:i}:{navigationId:e}}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function A3(t,n){t.events.pipe(Tn(e=>e instanceof Wr||e instanceof wa||e instanceof Fx||e instanceof Ud),Se(e=>e instanceof Wr||e instanceof Ud?0:e instanceof wa&&(e.code===vo.Redirect||e.code===vo.SupersededByNewNavigation)?2:1),Tn(e=>2!==e),Cn(1)).subscribe(()=>{n()})}let vt=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=D(AI);stateManager=D(eS);options=D(Gd,{optional:!0})||{};pendingTasks=D(Ys);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";navigationTransitions=D(Qx);urlSerializer=D(jd);location=D(Fd);urlHandlingStrategy=D(Zx);injector=D(zn);_events=new me;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=D(O3);injectorCleanup=D(nce,{optional:!0});onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore";config=D(sb,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!D(tb,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:e=>{}}),this.subscribeToNavigationEvents()}eventsSubscription=new pt;subscribeToNavigationEvents(){const e=this.navigationTransitions.events.subscribe(i=>{try{const o=this.navigationTransitions.currentTransition,r=nt(this.navigationTransitions.currentNavigation);if(null!==o&&null!==r)if(this.stateManager.handleRouterEvent(i,r),i instanceof wa&&i.code!==vo.Redirect&&i.code!==vo.SupersededByNewNavigation)this.navigated=!0;else if(i instanceof Wr)this.navigated=!0,this.injectorCleanup?.(this.routeReuseStrategy,this.routerState,this.config);else if(i instanceof J_){const s=i.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(i.url,o.currentRawUrl),l={scroll:o.extras.scroll,browserUrl:o.extras.browserUrl,info:o.extras.info,skipLocationChange:o.extras.skipLocationChange,replaceUrl:o.extras.replaceUrl||"eager"===this.urlUpdateStrategy||tce(o.source),...s};this.scheduleNavigation(a,wf,null,l,{resolve:o.resolve,reject:o.reject,promise:o.promise})}(function zae(t){return!(t instanceof Nx||t instanceof J_||t instanceof n3)})(i)&&this._events.next(i)}catch(o){this.navigationTransitions.transitionAbortWithErrorSubject.next(o)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),wf,this.stateManager.restoredState(),{replaceUrl:!0})}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,i,o,r)=>{this.navigateToSyncWithBrowser(e,o,i,r)})}navigateToSyncWithBrowser(e,i,o,r){const s=o?.navigationId?o:null;if(o){const l={...o};delete l.navigationId,delete l.\u0275routerPageId,0!==Object.keys(l).length&&(r.state=l)}const a=this.parseUrl(e);this.scheduleNavigation(a,i,s,r).catch(l=>{this.disposed||this.injector.get(Or)(l)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return nt(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map($x),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription?.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0,this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,i={}){const{relativeTo:o,queryParams:r,fragment:s,queryParamsHandling:a,preserveFragment:l}=i,c=l?this.currentUrlTree.fragment:s;let m,f=null;switch(a??this.options.defaultQueryParamsHandling){case"merge":f={...this.currentUrlTree.queryParams,...r};break;case"preserve":f=this.currentUrlTree.queryParams;break;default:f=r||null}null!==f&&(f=this.removeEmptyProps(f));try{m=GL(o?o.snapshot:this.routerState.snapshot.root)}catch{("string"!=typeof e[0]||"/"!==e[0][0])&&(e=[]),m=this.currentUrlTree.root}return qL(m,e,f,c??null,this.urlSerializer)}navigateByUrl(e,i={skipLocationChange:!1}){const o=ql(e)?e:this.parseUrl(e),r=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(r,wf,null,i)}navigate(e,i={skipLocationChange:!1}){return function sce(t){for(let n=0;n(null!=r&&(i[o]=r),i),{})}scheduleNavigation(e,i,o,r,s){if(this.disposed)return Promise.resolve(!1);let a,l,c;s?(a=s.resolve,l=s.reject,c=s.promise):c=new Promise((m,g)=>{a=m,l=g});const f=this.pendingTasks.add();return A3(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(f))}),this.navigationTransitions.handleNavigationRequest({source:i,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:r,resolve:a,reject:l,promise:c,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),c.catch(Promise.reject.bind(Promise))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class ace extends pt{constructor(n,e){super()}schedule(n,e=0){return this}}const ab={setInterval(t,n,...e){const{delegate:i}=ab;return i?.setInterval?i.setInterval(t,n,...e):setInterval(t,n,...e)},clearInterval(t){const{delegate:n}=ab;return(n?.clearInterval||clearInterval)(t)},delegate:void 0};class tS extends ace{constructor(n,e){super(n,e),this.scheduler=n,this.work=e,this.pending=!1}schedule(n,e=0){var i;if(this.closed)return this;this.state=n;const o=this.id,r=this.scheduler;return null!=o&&(this.id=this.recycleAsyncId(r,o,e)),this.pending=!0,this.delay=e,this.id=null!==(i=this.id)&&void 0!==i?i:this.requestAsyncId(r,this.id,e),this}requestAsyncId(n,e,i=0){return ab.setInterval(n.flush.bind(n,this),i)}recycleAsyncId(n,e,i=0){if(null!=i&&this.delay===i&&!1===this.pending)return e;null!=e&&ab.clearInterval(e)}execute(n,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const i=this._execute(n,e);if(i)return i;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(n,e){let o,i=!1;try{this.work(n)}catch(r){i=!0,o=r||new Error("Scheduled action threw falsy error")}if(i)return this.unsubscribe(),o}unsubscribe(){if(!this.closed){const{id:n,scheduler:e}=this,{actions:i}=e;this.work=this.state=this.scheduler=null,this.pending=!1,Rp(i,this),null!=n&&(this.id=this.recycleAsyncId(e,n,null)),this.delay=null,super.unsubscribe()}}}const nS={now:()=>(nS.delegate||Date).now(),delegate:void 0};class Ef{constructor(n,e=Ef.now){this.schedulerActionCtor=n,this.now=e}schedule(n,e=0,i){return new this.schedulerActionCtor(this,n).schedule(i,e)}}Ef.now=nS.now;class iS extends Ef{constructor(n,e=Ef.now){super(n,e),this.actions=[],this._active=!1}flush(n){const{actions:e}=this;if(this._active)return void e.push(n);let i;this._active=!0;do{if(i=n.execute(n.state,n.delay))break}while(n=e.shift());if(this._active=!1,i){for(;n=e.shift();)n.unsubscribe();throw i}}}const Pf=new iS(tS),lce=Pf;function R3(t,n){return n?e=>Ts(n.pipe(Cn(1),function cce(){return Mn((t,n)=>{t.subscribe(dn(n,Np))})}()),e.pipe(R3(t))):It((e,i)=>ji(t(e,i)).pipe(Cn(1),function dce(t){return Se(()=>t)}(e)))}function xa(t=0,n,e=lce){let i=-1;return null!=n&&(oL(n)?e=n:i=n),new Ft(o=>{let r=function uce(t){return t instanceof Date&&!isNaN(t)}(t)?+t-e.now():t;r<0&&(r=0);let s=0;return e.schedule(function(){o.closed||(o.next(s++),0<=i?this.schedule(void 0,i):o.complete())},r)})}function li(t,n=Pf){const e=xa(t,n);return R3(()=>e)}var lb=function(t){return t.NoConnection="NoConnection",t.Unknown="Unknown",t}(lb||{});class hce{}const F3="common.operation-error";function Qe(t){if(t&&t.type&&!t.srcElement)return t;const n=new hce;if(n.originalError=t,!t||"string"==typeof t)return n.originalServerErrorMsg=t||"",n.translatableErrorMsg=t||F3,n.type=lb.Unknown,n;n.originalServerErrorMsg=function pce(t){if(t){if("string"==typeof t._body)return t._body;if(t.originalServerErrorMsg&&"string"==typeof t.originalServerErrorMsg)return t.originalServerErrorMsg;if(t.error&&"string"==typeof t.error)return t.error;if(t.error&&t.error.error&&t.error.error.message)return t.error.error.message;if(t.error&&t.error.error&&"string"==typeof t.error.error)return t.error.error;if(t.message)return t.message;if(t._body&&t._body.error)return t._body.error;try{return JSON.parse(t._body).error}catch{}}return null}(t);return null!=t.status&&(0===t.status||504===t.status)&&(n.type=lb.NoConnection,n.translatableErrorMsg="common.no-connection-error"),n.type||(n.type=lb.Unknown,n.translatableErrorMsg=n.originalServerErrorMsg?function fce(t){if(!t||0===t.length)return t;if(-1!==t.indexOf('"error":'))try{t=JSON.parse(t).error}catch{}if(t.startsWith("400")||t.startsWith("403")){const e=t.split(" - ",2);t=2===e.length?e[1]:t}const n=(t=t.trim()).substr(0,1);return n.toUpperCase()!==n&&(t=n.toUpperCase()+t.substr(1,t.length-1)),!t.endsWith(".")&&!t.endsWith(",")&&!t.endsWith(":")&&!t.endsWith(";")&&!t.endsWith("?")&&!t.endsWith("!")&&(t+="."),t}(n.originalServerErrorMsg):F3),n}class oo extends me{constructor(n=1/0,e=1/0,i=nS){super(),this._bufferSize=n,this._windowTime=e,this._timestampProvider=i,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=e===1/0,this._bufferSize=Math.max(1,n),this._windowTime=Math.max(1,e)}next(n){const{isStopped:e,_buffer:i,_infiniteTimeWindow:o,_timestampProvider:r,_windowTime:s}=this;e||(i.push(n),!o&&i.push(r.now()+s)),this._trimBuffer(),super.next(n)}_subscribe(n){this._throwIfClosed(),this._trimBuffer();const e=this._innerSubscribe(n),{_infiniteTimeWindow:i,_buffer:o}=this,r=o.slice();for(let s=0;s{class t{constructor(){this.currentRefreshTimeSubject=new oo(1),this.savedLocalNodes=new Map,this.savedLabels=new Map,this.savedVisibleLocalNodes=new Set}initialize(e){this.storage=localStorage,this.hypervisorPk=e,this.migrateDataToHvStorage(),this.currentRefreshTime=parseInt(this.getDataForHv(cb),10)||10,this.currentRefreshTimeSubject.next(this.currentRefreshTime),this.getSavedLocalNodes().forEach(r=>{this.savedLocalNodes.set(r.publicKey,r),r.hidden||this.savedVisibleLocalNodes.add(r.publicKey)}),this.getSavedLabels().forEach(r=>this.savedLabels.set(r.id,r)),this.loadLegacyNodeData();const i=[];this.savedLocalNodes.forEach(r=>i.push(r));const o=[];this.savedLabels.forEach(r=>o.push(r)),this.saveLocalNodes(i),this.saveLabels(o)}getDataForHv(e){return this.storage.getItem(this.hypervisorPk+e)}setDataForHv(e,i){return this.storage.setItem(this.hypervisorPk+e,i)}migrateDataToHvStorage(){const e=this.storage.getItem(cb);if(e){const r=parseInt(e,10)||10;this.setRefreshTime(r),this.storage.removeItem(cb)}const i=this.storage.getItem(ub);if(i){const r=JSON.parse(i)||[];this.saveLocalNodes(r),this.storage.removeItem(ub)}const o=this.storage.getItem(db);if(o){const r=JSON.parse(o)||[];this.saveLabels(r),this.storage.removeItem(db)}}loadLegacyNodeData(){const e=JSON.parse(this.storage.getItem(N3))||[];if(e.length>0){const i=this.getSavedLocalNodes(),o=this.getSavedLabels();e.forEach(r=>{i.push({publicKey:r.publicKey,hidden:r.deleted,ip:null}),this.savedLocalNodes.set(r.publicKey,i[i.length-1]),r.deleted||this.savedVisibleLocalNodes.add(r.publicKey),o.push({id:r.publicKey,identifiedElementType:ro.Node,label:r.label}),this.savedLabels.set(r.publicKey,o[o.length-1])}),this.saveLocalNodes(i),this.saveLabels(o),this.storage.removeItem(N3)}}setRefreshTime(e){this.setDataForHv(cb,e.toString()),this.currentRefreshTime=e,this.currentRefreshTimeSubject.next(this.currentRefreshTime)}getRefreshTimeObservable(){return this.currentRefreshTimeSubject.asObservable()}getRefreshTime(){return this.currentRefreshTime}includeVisibleLocalNodes(e,i){this.changeLocalNodesHiddenProperty(e,i,!1)}setLocalNodesAsHidden(e,i){this.changeLocalNodesHiddenProperty(e,i,!0)}changeLocalNodesHiddenProperty(e,i,o){if(e.length!==i.length)throw new Error("Invalid params");const r=new Map,s=new Map;e.forEach((c,f)=>{r.set(c,i[f]),s.set(c,i[f])});let a=!1;const l=this.getSavedLocalNodes();l.forEach(c=>{r.has(c.publicKey)&&(s.has(c.publicKey)&&s.delete(c.publicKey),c.ip!==r.get(c.publicKey)&&(c.ip=r.get(c.publicKey),a=!0,this.savedLocalNodes.set(c.publicKey,c)),c.hidden!==o&&(c.hidden=o,a=!0,this.savedLocalNodes.set(c.publicKey,c),o?this.savedVisibleLocalNodes.delete(c.publicKey):this.savedVisibleLocalNodes.add(c.publicKey)))}),s.forEach((c,f)=>{a=!0;const m={publicKey:f,hidden:o,ip:c};l.push(m),this.savedLocalNodes.set(f,m),o?this.savedVisibleLocalNodes.delete(f):this.savedVisibleLocalNodes.add(f)}),a&&this.saveLocalNodes(l)}getSavedLocalNodes(){return JSON.parse(this.getDataForHv(ub))||[]}getSavedVisibleLocalNodes(){return this.savedVisibleLocalNodes}saveLocalNodes(e){this.setDataForHv(ub,JSON.stringify(e))}getSavedLabels(){return JSON.parse(this.getDataForHv(db))||[]}saveLabels(e){this.setDataForHv(db,JSON.stringify(e))}saveLabel(e,i,o){if(i){let r=!1;const s=this.getSavedLabels().map(a=>(a.id===e&&a.identifiedElementType===o&&(r=!0,a.label=i,this.savedLabels.set(a.id,{label:a.label,id:a.id,identifiedElementType:a.identifiedElementType})),a));if(r)this.saveLabels(s);else{const a={label:i,id:e,identifiedElementType:o};s.push(a),this.savedLabels.set(e,a),this.saveLabels(s)}}else{this.savedLabels.has(e)&&this.savedLabels.delete(e);let r=!1;const s=this.getSavedLabels().filter(a=>a.id!==e||(r=!0,!1));r&&this.saveLabels(s)}}getDefaultLabel(e){return e?e.ip?e.ip:e.localPk:""}getLabelInfo(e){return this.savedLabels.has(e)?this.savedLabels.get(e):null}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const oS={};class ni{_appId=D(Js);static _infix=`a${Math.floor(1e5*Math.random()).toString()}`;getId(n,e=!1){return"ng"!==this._appId&&(n+=this._appId),oS.hasOwnProperty(n)||(oS[n]=0),`${n}${e?ni._infix+"-":""}${oS[n]++}`}static \u0275fac=function(e){return new(e||ni)};static \u0275prov=te({token:ni,factory:ni.\u0275fac,providedIn:"root"})}const If={schedule(t){let n=requestAnimationFrame,e=cancelAnimationFrame;const{delegate:i}=If;i&&(n=i.requestAnimationFrame,e=i.cancelAnimationFrame);const o=n(r=>{e=void 0,t(r)});return new pt(()=>e?.(o))},requestAnimationFrame(...t){const{delegate:n}=If;return(n?.requestAnimationFrame||requestAnimationFrame)(...t)},cancelAnimationFrame(...t){const{delegate:n}=If;return(n?.cancelAnimationFrame||cancelAnimationFrame)(...t)},delegate:void 0};new class gce extends iS{flush(n){let e;this._active=!0,n?e=n.id:(e=this._scheduled,this._scheduled=void 0);const{actions:i}=this;let o;n=n||i.shift();do{if(o=n.execute(n.state,n.delay))break}while((n=i[0])&&n.id===e&&i.shift());if(this._active=!1,o){for(;(n=i[0])&&n.id===e&&i.shift();)n.unsubscribe();throw o}}}(class mce extends tS{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}requestAsyncId(n,e,i=0){return null!==i&&i>0?super.requestAsyncId(n,e,i):(n.actions.push(this),n._scheduled||(n._scheduled=If.requestAnimationFrame(()=>n.flush(void 0))))}recycleAsyncId(n,e,i=0){var o;if(null!=i?i>0:this.delay>0)return super.recycleAsyncId(n,e,i);const{actions:r}=n;null!=e&&e===n._scheduled&&(null===(o=r[r.length-1])||void 0===o?void 0:o.id)!==e&&(If.cancelAnimationFrame(e),n._scheduled=void 0)}});let rS,bce=1;const hb={};function L3(t){return t in hb&&(delete hb[t],!0)}const vce={setImmediate(t){const n=bce++;return hb[n]=!0,rS||(rS=Promise.resolve()),rS.then(()=>L3(n)&&t()),n},clearImmediate(t){L3(t)}},{setImmediate:yce,clearImmediate:Cce}=vce,fb={setImmediate(...t){const{delegate:n}=fb;return(n?.setImmediate||yce)(...t)},clearImmediate(t){const{delegate:n}=fb;return(n?.clearImmediate||Cce)(t)},delegate:void 0};new class xce extends iS{flush(n){this._active=!0;const e=this._scheduled;this._scheduled=void 0;const{actions:i}=this;let o;n=n||i.shift();do{if(o=n.execute(n.state,n.delay))break}while((n=i[0])&&n.id===e&&i.shift());if(this._active=!1,o){for(;(n=i[0])&&n.id===e&&i.shift();)n.unsubscribe();throw o}}}(class wce extends tS{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}requestAsyncId(n,e,i=0){return null!==i&&i>0?super.requestAsyncId(n,e,i):(n.actions.push(this),n._scheduled||(n._scheduled=fb.setImmediate(n.flush.bind(n,void 0))))}recycleAsyncId(n,e,i=0){var o;if(null!=i?i>0:this.delay>0)return super.recycleAsyncId(n,e,i);const{actions:r}=n;null!=e&&(null===(o=r[r.length-1])||void 0===o?void 0:o.id)!==e&&(fb.clearImmediate(e),n._scheduled===e&&(n._scheduled=void 0))}});function B3(t,n=Pf){return function kce(t){return Mn((n,e)=>{let i=!1,o=null,r=null,s=!1;const a=()=>{if(r?.unsubscribe(),r=null,i){i=!1;const c=o;o=null,e.next(c)}s&&e.complete()},l=()=>{r=null,s&&e.complete()};n.subscribe(dn(e,c=>{i=!0,o=c,r||ji(t(c)).subscribe(r=dn(e,a,l))},()=>{s=!0,(!i||!r||r.closed)&&e.complete()}))})}(()=>xa(t,n))}function Of(t,n=0){return function Dce(t){return!isNaN(parseFloat(t))&&!isNaN(Number(t))}(t)?Number(t):2===arguments.length?n:0}function Ps(t){return t instanceof Re?t.nativeElement:t}let sS;try{sS=typeof Intl<"u"&&Intl.v8BreakIterator}catch{sS=!1}let Yn=(()=>{class t{_platformId=D(wC);isBrowser=this._platformId?function kU(t){return t===XM}(this._platformId):"object"==typeof document&&!!document;EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent);TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent);BLINK=this.isBrowser&&!(!window.chrome&&!sS)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT;WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT;IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window);FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent);ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT;SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT;constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Mce=new Z("cdk-dir-doc",{providedIn:"root",factory:()=>D(et)}),Tce=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let br=(()=>{class t{get value(){return this.valueSignal()}valueSignal=yt("ltr");change=new we;constructor(){const e=D(Mce,{optional:!0});e&&this.valueSignal.set(function Ece(t){const n=t?.toLowerCase()||"";return"auto"===n&&typeof navigator<"u"&&navigator?.language?Tce.test(navigator.language)?"rtl":"ltr":"rtl"===n?"rtl":"ltr"}((e.body?e.body.dir:null)||(e.documentElement?e.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var qr=function(t){return t[t.NORMAL=0]="NORMAL",t[t.NEGATED=1]="NEGATED",t[t.INVERTED=2]="INVERTED",t}(qr||{});let pb,Kl;function V3(){if(null==Kl){if("object"!=typeof document||!document||"function"!=typeof Element||!Element)return Kl=!1,Kl;if(document.documentElement?.style&&"scrollBehavior"in document.documentElement.style)Kl=!0;else{const t=Element.prototype.scrollTo;Kl=!!t&&!/\{\s*\[native code\]\s*\}/.test(t.toString())}}return Kl}function Af(){if("object"!=typeof document||!document)return qr.NORMAL;if(null==pb){const t=document.createElement("div"),n=t.style;t.dir="rtl",n.width="1px",n.overflow="auto",n.visibility="hidden",n.pointerEvents="none",n.position="absolute";const e=document.createElement("div"),i=e.style;i.width="2px",i.height="1px",t.appendChild(e),document.body.appendChild(t),pb=qr.NORMAL,0===t.scrollLeft&&(t.scrollLeft=1,pb=0===t.scrollLeft?qr.NEGATED:qr.INVERTED),t.remove()}return pb}let aS,ii=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})(),mb=(()=>{class t{_ngZone=D(_e);_platform=D(Yn);_renderer=D(Lo).createRenderer(null,null);_cleanupGlobalListener;constructor(){}_scrolled=new me;_scrolledCount=0;scrollContainers=new Map;register(e){this.scrollContainers.has(e)||this.scrollContainers.set(e,e.elementScrolled().subscribe(()=>this._scrolled.next(e)))}deregister(e){const i=this.scrollContainers.get(e);i&&(i.unsubscribe(),this.scrollContainers.delete(e))}scrolled(e=20){return this._platform.isBrowser?new Ft(i=>{this._cleanupGlobalListener||(this._cleanupGlobalListener=this._ngZone.runOutsideAngular(()=>this._renderer.listen("document","scroll",()=>this._scrolled.next())));const o=e>0?this._scrolled.pipe(B3(e)).subscribe(i):this._scrolled.subscribe(i);return this._scrolledCount++,()=>{o.unsubscribe(),this._scrolledCount--,this._scrolledCount||(this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0)}}):ae()}ngOnDestroy(){this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0,this.scrollContainers.forEach((e,i)=>this.deregister(i)),this._scrolled.complete()}ancestorScrolled(e,i){const o=this.getAncestorScrollContainers(e);return this.scrolled(i).pipe(Tn(r=>!r||o.indexOf(r)>-1))}getAncestorScrollContainers(e){const i=[];return this.scrollContainers.forEach((o,r)=>{this._scrollableContainsElement(r,e)&&i.push(r)}),i}_scrollableContainsElement(e,i){let o=Ps(i),r=e.getElementRef().nativeElement;do{if(o==r)return!0}while(o=o.parentElement);return!1}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),H3=(()=>{class t{elementRef=D(Re);scrollDispatcher=D(mb);ngZone=D(_e);dir=D(br,{optional:!0});_scrollElement=this.elementRef.nativeElement;_destroyed=new me;_renderer=D(Qn);_cleanupScroll;_elementScrolled=new me;constructor(){}ngOnInit(){this._cleanupScroll=this.ngZone.runOutsideAngular(()=>this._renderer.listen(this._scrollElement,"scroll",e=>this._elementScrolled.next(e))),this.scrollDispatcher.register(this)}ngOnDestroy(){this._cleanupScroll?.(),this._elementScrolled.complete(),this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(e){const i=this.elementRef.nativeElement,o=this.dir&&"rtl"==this.dir.value;null==e.left&&(e.left=o?e.end:e.start),null==e.right&&(e.right=o?e.start:e.end),null!=e.bottom&&(e.top=i.scrollHeight-i.clientHeight-e.bottom),o&&Af()!=qr.NORMAL?(null!=e.left&&(e.right=i.scrollWidth-i.clientWidth-e.left),Af()==qr.INVERTED?e.left=e.right:Af()==qr.NEGATED&&(e.left=e.right?-e.right:e.right)):null!=e.right&&(e.left=i.scrollWidth-i.clientWidth-e.right),this._applyScrollToOptions(e)}_applyScrollToOptions(e){const i=this.elementRef.nativeElement;V3()?i.scrollTo(e):(null!=e.top&&(i.scrollTop=e.top),null!=e.left&&(i.scrollLeft=e.left))}measureScrollOffset(e){const i="left",o="right",r=this.elementRef.nativeElement;if("top"==e)return r.scrollTop;if("bottom"==e)return r.scrollHeight-r.clientHeight-r.scrollTop;const s=this.dir&&"rtl"==this.dir.value;return"start"==e?e=s?o:i:"end"==e&&(e=s?i:o),s&&Af()==qr.INVERTED?e==i?r.scrollWidth-r.clientWidth-r.scrollLeft:r.scrollLeft:s&&Af()==qr.NEGATED?e==i?r.scrollLeft+r.scrollWidth-r.clientWidth:-r.scrollLeft:e==i?r.scrollLeft:r.scrollWidth-r.clientWidth-r.scrollLeft}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]]})}return t})(),qd=(()=>{class t{_platform=D(Yn);_listeners;_viewportSize=null;_change=new me;_document=D(et);constructor(){const e=D(_e),i=D(Lo).createRenderer(null,null);e.runOutsideAngular(()=>{if(this._platform.isBrowser){const o=r=>this._change.next(r);this._listeners=[i.listen("window","resize",o),i.listen("window","orientationchange",o)]}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){this._listeners?.forEach(e=>e()),this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const e={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),e}getViewportRect(){const e=this.getViewportScrollPosition(),{width:i,height:o}=this.getViewportSize();return{top:e.top,left:e.left,bottom:e.top+o,right:e.left+i,height:o,width:i}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const e=this._document,i=this._getWindow(),o=e.documentElement,r=o.getBoundingClientRect();return{top:-r.top||e.body?.scrollTop||i.scrollY||o.scrollTop||0,left:-r.left||e.body?.scrollLeft||i.scrollX||o.scrollLeft||0}}change(e=20){return e>0?this._change.pipe(B3(e)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const e=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:e.innerWidth,height:e.innerHeight}:{width:0,height:0}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Rf=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})(),j3=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ii,Rf,ii,Rf]})}return t})();function lS(){let t=typeof document<"u"&&document?document.activeElement:null;for(;t&&t.shadowRoot;){const n=t.shadowRoot.activeElement;if(n===t)break;t=n}return t}function vr(t){return t.composedPath?t.composedPath()[0]:t.target}function U3(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}const gb=new WeakMap;let zo=(()=>{class t{_appRef;_injector=D(He);_environmentInjector=D(zn);load(e){const i=this._appRef=this._appRef||this._injector.get(lr);let o=gb.get(i);o||(o={loaders:new Set,refs:[]},gb.set(i,o),i.onDestroy(()=>{gb.get(i)?.refs.forEach(r=>r.destroy()),gb.delete(i)})),o.loaders.has(e)||(o.loaders.add(e),o.refs.push(gF(e,{environmentInjector:this._environmentInjector})))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function oi(t){return null==t?"":"string"==typeof t?t:`${t}px`}function _b(t){return Array.isArray(t)?t:[t]}class cS{_attachedHost=null;attach(n){return this._attachedHost=n,n.attach(this)}detach(){let n=this._attachedHost;null!=n&&(this._attachedHost=null,n.detach())}get isAttached(){return null!=this._attachedHost}setAttachedHost(n){this._attachedHost=n}}class Kd extends cS{component;viewContainerRef;injector;projectableNodes;bindings;constructor(n,e,i,o,r){super(),this.component=n,this.viewContainerRef=e,this.injector=i,this.projectableNodes=o,this.bindings=r||null}}class Yl extends cS{templateRef;viewContainerRef;context;injector;constructor(n,e,i,o){super(),this.templateRef=n,this.viewContainerRef=e,this.context=i,this.injector=o}get origin(){return this.templateRef.elementRef}attach(n,e=this.context){return this.context=e,super.attach(n)}detach(){return this.context=void 0,super.detach()}}class Nce extends cS{element;constructor(n){super(),this.element=n instanceof Re?n.nativeElement:n}}class bb{_attachedPortal=null;_disposeFn=null;_isDisposed=!1;hasAttached(){return!!this._attachedPortal}attach(n){return n instanceof Kd?(this._attachedPortal=n,this.attachComponentPortal(n)):n instanceof Yl?(this._attachedPortal=n,this.attachTemplatePortal(n)):this.attachDomPortal&&n instanceof Nce?(this._attachedPortal=n,this.attachDomPortal(n)):void 0}attachDomPortal=null;detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(n){this._disposeFn=n}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}class Lce extends bb{outletElement;_appRef;_defaultInjector;constructor(n,e,i){super(),this.outletElement=n,this._appRef=e,this._defaultInjector=i}attachComponentPortal(n){let e;if(n.viewContainerRef){const i=n.injector||n.viewContainerRef.injector,o=i.get(bs,null,{optional:!0})||void 0;e=n.viewContainerRef.createComponent(n.component,{index:n.viewContainerRef.length,injector:i,ngModuleRef:o,projectableNodes:n.projectableNodes||void 0,bindings:n.bindings||void 0}),this.setDisposeFn(()=>e.destroy())}else{const i=this._appRef,o=n.injector||this._defaultInjector||He.NULL,r=o.get(zn,i.injector);e=gF(n.component,{elementInjector:o,environmentInjector:r,projectableNodes:n.projectableNodes||void 0,bindings:n.bindings||void 0}),i.attachView(e.hostView),this.setDisposeFn(()=>{i.viewCount>0&&i.detachView(e.hostView),e.destroy()})}return this.outletElement.appendChild(this._getComponentRootNode(e)),this._attachedPortal=n,e}attachTemplatePortal(n){let e=n.viewContainerRef,i=e.createEmbeddedView(n.templateRef,n.context,{injector:n.injector});return i.rootNodes.forEach(o=>this.outletElement.appendChild(o)),i.detectChanges(),this.setDisposeFn(()=>{let o=e.indexOf(i);-1!==o&&e.remove(o)}),this._attachedPortal=n,i}attachDomPortal=n=>{const e=n.element,i=this.outletElement.ownerDocument.createComment("dom-portal");e.parentNode.insertBefore(i,e),this.outletElement.appendChild(e),this._attachedPortal=n,super.setDisposeFn(()=>{i.parentNode&&i.parentNode.replaceChild(e,i)})};dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(n){return n.hostView.rootNodes[0]}}let Bce=(()=>{class t extends Yl{constructor(){super(D(Ti),D(Ei))}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkPortal",""]],exportAs:["cdkPortal"],features:[be]})}return t})(),Xl=(()=>{class t extends bb{_moduleRef=D(bs,{optional:!0});_document=D(et);_viewContainerRef=D(Ei);_isInitialized=!1;_attachedRef=null;constructor(){super()}get portal(){return this._attachedPortal}set portal(e){this.hasAttached()&&!e&&!this._isInitialized||(this.hasAttached()&&super.detach(),e&&super.attach(e),this._attachedPortal=e||null)}attached=new we;get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(e){e.setAttachedHost(this);const i=null!=e.viewContainerRef?e.viewContainerRef:this._viewContainerRef,o=i.createComponent(e.component,{index:i.length,injector:e.injector||i.injector,projectableNodes:e.projectableNodes||void 0,ngModuleRef:this._moduleRef||void 0,bindings:e.bindings||void 0});return i!==this._viewContainerRef&&this._getRootNode().appendChild(o.hostView.rootNodes[0]),super.setDisposeFn(()=>o.destroy()),this._attachedPortal=e,this._attachedRef=o,this.attached.emit(o),o}attachTemplatePortal(e){e.setAttachedHost(this);const i=this._viewContainerRef.createEmbeddedView(e.templateRef,e.context,{injector:e.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=e,this._attachedRef=i,this.attached.emit(i),i}attachDomPortal=e=>{const i=e.element,o=this._document.createComment("dom-portal");e.setAttachedHost(this),i.parentNode.insertBefore(o,i),this._getRootNode().appendChild(i),this._attachedPortal=e,super.setDisposeFn(()=>{o.parentNode&&o.parentNode.replaceChild(i,o)})};_getRootNode(){const e=this._viewContainerRef.element.nativeElement;return e.nodeType===e.ELEMENT_NODE?e:e.parentNode}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:[0,"cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],features:[be]})}return t})(),Ff=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function yr(t,...n){return n.length?n.some(e=>t[e]):t.altKey||t.shiftKey||t.ctrlKey||t.metaKey}const $3=V3();function dS(t){return new Jce(t.get(qd),t.get(et))}class Jce{_viewportRuler;_previousHTMLStyles={top:"",left:""};_previousScrollPosition;_isEnabled=!1;_document;constructor(n,e){this._viewportRuler=n,this._document=e}attach(){}enable(){if(this._canBeEnabled()){const n=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=n.style.left||"",this._previousHTMLStyles.top=n.style.top||"",n.style.left=oi(-this._previousScrollPosition.left),n.style.top=oi(-this._previousScrollPosition.top),n.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){const n=this._document.documentElement,i=n.style,o=this._document.body.style,r=i.scrollBehavior||"",s=o.scrollBehavior||"";this._isEnabled=!1,i.left=this._previousHTMLStyles.left,i.top=this._previousHTMLStyles.top,n.classList.remove("cdk-global-scrollblock"),$3&&(i.scrollBehavior=o.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),$3&&(i.scrollBehavior=r,o.scrollBehavior=s)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;const e=this._document.documentElement,i=this._viewportRuler.getViewportSize();return e.scrollHeight>i.height||e.scrollWidth>i.width}}class tde{_scrollDispatcher;_ngZone;_viewportRuler;_config;_scrollSubscription=null;_overlayRef;_initialScrollPosition;constructor(n,e,i,o){this._scrollDispatcher=n,this._ngZone=e,this._viewportRuler=i,this._config=o}attach(n){this._overlayRef=n}enable(){if(this._scrollSubscription)return;const n=this._scrollDispatcher.scrolled(0).pipe(Tn(e=>!e||!this._overlayRef.overlayElement.contains(e.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=n.subscribe(()=>{const e=this._viewportRuler.getViewportScrollPosition().top;Math.abs(e-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=n.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}_detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}class uS{enable(){}disable(){}attach(){}}function hS(t,n){return n.some(e=>t.bottome.bottom||t.righte.right)}function W3(t,n){return n.some(e=>t.tope.bottom||t.lefte.right)}function Bf(t,n){return new nde(t.get(mb),t.get(qd),t.get(_e),n)}class nde{_scrollDispatcher;_viewportRuler;_ngZone;_config;_scrollSubscription=null;_overlayRef;constructor(n,e,i,o){this._scrollDispatcher=n,this._viewportRuler=e,this._ngZone=i,this._config=o}attach(n){this._overlayRef=n}enable(){this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){const e=this._overlayRef.overlayElement.getBoundingClientRect(),{width:i,height:o}=this._viewportRuler.getViewportSize();hS(e,[{width:i,height:o,bottom:o,right:i,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}}))}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}let ide=(()=>{class t{_injector=D(He);constructor(){}noop=()=>new uS;close=e=>function ede(t,n){return new tde(t.get(mb),t.get(_e),t.get(qd),n)}(this._injector,e);block=()=>dS(this._injector);reposition=e=>Bf(this._injector,e);static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class Vf{positionStrategy;scrollStrategy=new uS;panelClass="";hasBackdrop=!1;backdropClass="cdk-overlay-dark-backdrop";disableAnimations;width;height;minWidth;minHeight;maxWidth;maxHeight;direction;disposeOnNavigation=!1;usePopover;eventPredicate;constructor(n){if(n){const e=Object.keys(n);for(const i of e)void 0!==n[i]&&(this[i]=n[i])}}}class ode{connectionPair;scrollableViewProperties;constructor(n,e){this.connectionPair=n,this.scrollableViewProperties=e}}let G3=(()=>{class t{_attachedOverlays=[];_document=D(et);_isAttached=!1;constructor(){}ngOnDestroy(){this.detach()}add(e){this.remove(e),this._attachedOverlays.push(e)}remove(e){const i=this._attachedOverlays.indexOf(e);i>-1&&this._attachedOverlays.splice(i,1),0===this._attachedOverlays.length&&this.detach()}canReceiveEvent(e,i,o){return!(o.observers.length<1)&&(!e.eventPredicate||e.eventPredicate(i))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),rde=(()=>{class t extends G3{_ngZone=D(_e);_renderer=D(Lo).createRenderer(null,null);_cleanupKeydown;add(e){super.add(e),this._isAttached||(this._ngZone.runOutsideAngular(()=>{this._cleanupKeydown=this._renderer.listen("body","keydown",this._keydownListener)}),this._isAttached=!0)}detach(){this._isAttached&&(this._cleanupKeydown?.(),this._isAttached=!1)}_keydownListener=e=>{const i=this._attachedOverlays;for(let o=i.length-1;o>-1;o--){const r=i[o];if(this.canReceiveEvent(r,e,r._keydownEvents)){this._ngZone.run(()=>r._keydownEvents.next(e));break}}};static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),sde=(()=>{class t extends G3{_platform=D(Yn);_ngZone=D(_e);_renderer=D(Lo).createRenderer(null,null);_cursorOriginalValue;_cursorStyleIsSet=!1;_pointerDownEventTarget=null;_cleanups;add(e){if(super.add(e),!this._isAttached){const i=this._document.body,o={capture:!0},r=this._renderer;this._cleanups=this._ngZone.runOutsideAngular(()=>[r.listen(i,"pointerdown",this._pointerDownListener,o),r.listen(i,"click",this._clickListener,o),r.listen(i,"auxclick",this._clickListener,o),r.listen(i,"contextmenu",this._clickListener,o)]),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=i.style.cursor,i.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){this._isAttached&&(this._cleanups?.forEach(e=>e()),this._cleanups=void 0,this._platform.IOS&&this._cursorStyleIsSet&&(this._document.body.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1)}_pointerDownListener=e=>{this._pointerDownEventTarget=vr(e)};_clickListener=e=>{const i=vr(e),o="click"===e.type&&this._pointerDownEventTarget?this._pointerDownEventTarget:i;this._pointerDownEventTarget=null;const r=this._attachedOverlays.slice();for(let s=r.length-1;s>-1;s--){const a=r[s],l=a._outsidePointerEvents;if(a.hasAttached()&&this.canReceiveEvent(a,e,l)){if(q3(a.overlayElement,i)||q3(a.overlayElement,o))break;this._ngZone?this._ngZone.run(()=>l.next(e)):l.next(e)}}};static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function q3(t,n){const e=typeof ShadowRoot<"u"&&ShadowRoot;let i=n;for(;i;){if(i===t)return!0;i=e&&i instanceof ShadowRoot?i.host:i.parentNode}return!1}let K3=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["ng-component"]],hostAttrs:["cdk-overlay-style-loader",""],decls:0,vars:0,template:function(i,o){},styles:[".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed}@layer cdk-overlay{.cdk-overlay-container{z-index:1000}}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute}@layer cdk-overlay{.cdk-global-overlay-wrapper{z-index:1000}}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%}@layer cdk-overlay{.cdk-overlay-pane{z-index:1000}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);opacity:0;touch-action:manipulation}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}@layer cdk-overlay{.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px}@layer cdk-overlay{.cdk-overlay-connected-position-bounding-box{z-index:1000}}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.cdk-overlay-popover{background:none;border:none;padding:0;outline:0;overflow:visible;position:fixed;pointer-events:none;white-space:normal;color:inherit;text-decoration:none;width:100%;height:100%;inset:auto;top:0;left:0}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{position:fixed;z-index:auto}\n"],encapsulation:2,changeDetection:0})}return t})(),fS=(()=>{class t{_platform=D(Yn);_containerElement;_document=D(et);_styleLoader=D(zo);constructor(){}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._loadStyles(),this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const e="cdk-overlay-container";if(this._platform.isBrowser||U3()){const o=this._document.querySelectorAll(`.${e}[platform="server"], .${e}[platform="test"]`);for(let r=0;r{const n=this.element;clearTimeout(this._fallbackTimeout),this._cleanupTransitionEnd?.(),this._cleanupTransitionEnd=this._renderer.listen(n,"transitionend",this.dispose),this._fallbackTimeout=setTimeout(this.dispose,500),n.style.pointerEvents="none",n.classList.remove("cdk-overlay-backdrop-showing")})}dispose=()=>{clearTimeout(this._fallbackTimeout),this._cleanupClick?.(),this._cleanupTransitionEnd?.(),this._cleanupClick=this._cleanupTransitionEnd=this._fallbackTimeout=void 0,this.element.remove()}}function pS(t){return t&&1===t.nodeType}class Y3{_portalOutlet;_host;_pane;_config;_ngZone;_keyboardDispatcher;_document;_location;_outsideClickDispatcher;_animationsDisabled;_injector;_renderer;_backdropClick=new me;_attachments=new me;_detachments=new me;_positionStrategy;_scrollStrategy;_locationChanges=pt.EMPTY;_backdropRef=null;_detachContentMutationObserver;_detachContentAfterRenderRef;_disposed=!1;_previousHostParent;_keydownEvents=new me;_outsidePointerEvents=new me;_afterNextRenderRef;constructor(n,e,i,o,r,s,a,l,c,f=!1,m,g){this._portalOutlet=n,this._host=e,this._pane=i,this._config=o,this._ngZone=r,this._keyboardDispatcher=s,this._document=a,this._location=l,this._outsideClickDispatcher=c,this._animationsDisabled=f,this._injector=m,this._renderer=g,o.scrollStrategy&&(this._scrollStrategy=o.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=o.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropRef?.element||null}get hostElement(){return this._host}get eventPredicate(){return this._config?.eventPredicate||null}attach(n){if(this._disposed)return null;this._attachHost();const e=this._portalOutlet.attach(n);return this._positionStrategy?.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._afterNextRenderRef?.destroy(),this._afterNextRenderRef=Vi(()=>{this.hasAttached()&&this.updatePosition()},{injector:this._injector}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._completeDetachContent(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),"function"==typeof e?.onDestroy&&e.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),e}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();const n=this._portalOutlet.detach();return this._detachments.next(),this._completeDetachContent(),this._keyboardDispatcher.remove(this),this._detachContentWhenEmpty(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),n}dispose(){if(this._disposed)return;const n=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._backdropRef?.dispose(),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._afterNextRenderRef?.destroy(),this._previousHostParent=this._pane=this._host=this._backdropRef=null,n&&this._detachments.next(),this._detachments.complete(),this._completeDetachContent(),this._disposed=!0}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(n){n!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=n,this.hasAttached()&&(n.attach(this),this.updatePosition()))}updateSize(n){this._config={...this._config,...n},this._updateElementSize()}setDirection(n){this._config={...this._config,direction:n},this._updateElementDirection()}addPanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!0)}removePanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!1)}getDirection(){const n=this._config.direction;return n?"string"==typeof n?n:n.value:"ltr"}updateScrollStrategy(n){n!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=n,this.hasAttached()&&(n.attach(this),n.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;const n=this._pane.style;n.width=oi(this._config.width),n.height=oi(this._config.height),n.minWidth=oi(this._config.minWidth),n.minHeight=oi(this._config.minHeight),n.maxWidth=oi(this._config.maxWidth),n.maxHeight=oi(this._config.maxHeight)}_togglePointerEvents(n){this._pane.style.pointerEvents=n?"":"none"}_attachHost(){if(!this._host.parentElement){const n=this._config.usePopover?this._positionStrategy?.getPopoverInsertionPoint?.():null;pS(n)?n.after(this._host):"parent"===n?.type?n.element.appendChild(this._host):this._previousHostParent?.appendChild(this._host)}if(this._config.usePopover)try{this._host.showPopover()}catch{}}_attachBackdrop(){const n="cdk-overlay-backdrop-showing";this._backdropRef?.dispose(),this._backdropRef=new ade(this._document,this._renderer,this._ngZone,e=>{this._backdropClick.next(e)}),this._animationsDisabled&&this._backdropRef.element.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropRef.element,this._config.backdropClass,!0),this._config.usePopover?this._host.prepend(this._backdropRef.element):this._host.parentElement.insertBefore(this._backdropRef.element,this._host),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>this._backdropRef?.element.classList.add(n))}):this._backdropRef.element.classList.add(n)}_updateStackingOrder(){!this._config.usePopover&&this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){this._animationsDisabled?(this._backdropRef?.dispose(),this._backdropRef=null):this._backdropRef?.detach()}_toggleClasses(n,e,i){const o=_b(e||[]).filter(r=>!!r);o.length&&(i?n.classList.add(...o):n.classList.remove(...o))}_detachContentWhenEmpty(){let n=!1;try{this._detachContentAfterRenderRef=Vi(()=>{n=!0,this._detachContent()},{injector:this._injector})}catch(e){if(n)throw e;this._detachContent()}globalThis.MutationObserver&&this._pane&&(this._detachContentMutationObserver||=new globalThis.MutationObserver(()=>{this._detachContent()}),this._detachContentMutationObserver.observe(this._pane,{childList:!0}))}_detachContent(){(!this._pane||!this._host||0===this._pane.children.length)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),this._completeDetachContent())}_completeDetachContent(){this._detachContentAfterRenderRef?.destroy(),this._detachContentAfterRenderRef=void 0,this._detachContentMutationObserver?.disconnect()}_disposeScrollStrategy(){const n=this._scrollStrategy;n?.disable(),n?.detach?.()}}const X3="cdk-overlay-connected-position-bounding-box",lde=/([A-Za-z%]+)$/;function xb(t,n){return new cde(n,t.get(qd),t.get(et),t.get(Yn),t.get(fS))}class cde{_viewportRuler;_document;_platform;_overlayContainer;_overlayRef;_isInitialRender=!1;_lastBoundingBoxSize={width:0,height:0};_isPushed=!1;_canPush=!0;_growAfterOpen=!1;_hasFlexibleDimensions=!0;_positionLocked=!1;_originRect;_overlayRect;_viewportRect;_containerRect;_viewportMargin=0;_scrollables=[];_preferredPositions=[];_origin;_pane;_isDisposed=!1;_boundingBox=null;_lastPosition=null;_lastScrollVisibility=null;_positionChanges=new me;_resizeSubscription=pt.EMPTY;_offsetX=0;_offsetY=0;_transformOriginSelector;_appliedPanelClasses=[];_previousPushAmount=null;_popoverLocation="global";positionChanges=this._positionChanges;get positions(){return this._preferredPositions}constructor(n,e,i,o,r){this._viewportRuler=e,this._document=i,this._platform=o,this._overlayContainer=r,this.setOrigin(n)}attach(n){this._validatePositions(),n.hostElement.classList.add(X3),this._overlayRef=n,this._boundingBox=n.hostElement,this._pane=n.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition)return void this.reapplyLastPosition();this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._getContainerRect();const n=this._originRect,e=this._overlayRect,i=this._viewportRect,o=this._containerRect,r=[];let s;for(let a of this._preferredPositions){let l=this._getOriginPoint(n,o,a),c=this._getOverlayPoint(l,e,a),f=this._getOverlayFit(c,e,i,a);if(f.isCompletelyWithinViewport)return this._isPushed=!1,void this._applyPosition(a,l);this._canFitWithFlexibleDimensions(f,c,i)?r.push({position:a,origin:l,overlayRect:e,boundingBoxRect:this._calculateBoundingBoxRect(l,a)}):(!s||s.overlayFit.visibleAreal&&(l=f,a=c)}return this._isPushed=!1,void this._applyPosition(a.position,a.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(s.position,s.originPoint);this._applyPosition(s.position,s.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&Zl(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(X3),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;const n=this._lastPosition;n?(this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._getContainerRect(),this._applyPosition(n,this._getOriginPoint(this._originRect,this._containerRect,n))):this.apply()}withScrollableContainers(n){return this._scrollables=n,this}withPositions(n){return this._preferredPositions=n,-1===n.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(n){return this._viewportMargin=n,this}withFlexibleDimensions(n=!0){return this._hasFlexibleDimensions=n,this}withGrowAfterOpen(n=!0){return this._growAfterOpen=n,this}withPush(n=!0){return this._canPush=n,this}withLockedPosition(n=!0){return this._positionLocked=n,this}setOrigin(n){return this._origin=n,this}withDefaultOffsetX(n){return this._offsetX=n,this}withDefaultOffsetY(n){return this._offsetY=n,this}withTransformOriginOn(n){return this._transformOriginSelector=n,this}withPopoverLocation(n){return this._popoverLocation=n,this}getPopoverInsertionPoint(){return"global"===this._popoverLocation?null:"inline"!==this._popoverLocation?this._popoverLocation:this._origin instanceof Re?this._origin.nativeElement:pS(this._origin)?this._origin:null}_getOriginPoint(n,e,i){let o,r;if("center"==i.originX)o=n.left+n.width/2;else{const s=this._isRtl()?n.right:n.left,a=this._isRtl()?n.left:n.right;o="start"==i.originX?s:a}return e.left<0&&(o-=e.left),r="center"==i.originY?n.top+n.height/2:"top"==i.originY?n.top:n.bottom,e.top<0&&(r-=e.top),{x:o,y:r}}_getOverlayPoint(n,e,i){let o,r;return o="center"==i.overlayX?-e.width/2:"start"===i.overlayX?this._isRtl()?-e.width:0:this._isRtl()?0:-e.width,r="center"==i.overlayY?-e.height/2:"top"==i.overlayY?0:-e.height,{x:n.x+o,y:n.y+r}}_getOverlayFit(n,e,i,o){const r=Q3(e);let{x:s,y:a}=n,l=this._getOffset(o,"x"),c=this._getOffset(o,"y");l&&(s+=l),c&&(a+=c);let g=0-a,_=a+r.height-i.height,w=this._subtractOverflows(r.width,0-s,s+r.width-i.width),k=this._subtractOverflows(r.height,g,_),T=w*k;return{visibleArea:T,isCompletelyWithinViewport:r.width*r.height===T,fitsInViewportVertically:k===r.height,fitsInViewportHorizontally:w==r.width}}_canFitWithFlexibleDimensions(n,e,i){if(this._hasFlexibleDimensions){const o=i.bottom-e.y,r=i.right-e.x,s=Z3(this._overlayRef.getConfig().minHeight),a=Z3(this._overlayRef.getConfig().minWidth);return(n.fitsInViewportVertically||null!=s&&s<=o)&&(n.fitsInViewportHorizontally||null!=a&&a<=r)}return!1}_pushOverlayOnScreen(n,e,i){if(this._previousPushAmount&&this._positionLocked)return{x:n.x+this._previousPushAmount.x,y:n.y+this._previousPushAmount.y};const o=Q3(e),r=this._viewportRect,s=Math.max(n.x+o.width-r.width,0),a=Math.max(n.y+o.height-r.height,0),l=Math.max(r.top-i.top-n.y,0),c=Math.max(r.left-i.left-n.x,0);let f=0,m=0;return f=o.width<=r.width?c||-s:n.xw&&!this._isInitialRender&&!this._growAfterOpen&&(s=n.y-w/2)}const l="start"===e.overlayX&&!o||"end"===e.overlayX&&o;let f,m,g;if("end"===e.overlayX&&!o||"start"===e.overlayX&&o)g=i.width-n.x+this._getViewportMarginStart()+this._getViewportMarginEnd(),f=n.x-this._getViewportMarginStart();else if(l)m=n.x,f=i.right-n.x-this._getViewportMarginEnd();else{const _=Math.min(i.right-n.x+i.left,n.x),w=this._lastBoundingBoxSize.width;f=2*_,m=n.x-_,f>w&&!this._isInitialRender&&!this._growAfterOpen&&(m=n.x-w/2)}return{top:s,left:m,bottom:a,right:g,width:f,height:r}}_setBoundingBoxStyles(n,e){const i=this._calculateBoundingBoxRect(n,e);!this._isInitialRender&&!this._growAfterOpen&&(i.height=Math.min(i.height,this._lastBoundingBoxSize.height),i.width=Math.min(i.width,this._lastBoundingBoxSize.width));const o={};if(this._hasExactPosition())o.top=o.left="0",o.bottom=o.right="auto",o.maxHeight=o.maxWidth="",o.width=o.height="100%";else{const r=this._overlayRef.getConfig().maxHeight,s=this._overlayRef.getConfig().maxWidth;o.width=oi(i.width),o.height=oi(i.height),o.top=oi(i.top)||"auto",o.bottom=oi(i.bottom)||"auto",o.left=oi(i.left)||"auto",o.right=oi(i.right)||"auto",o.alignItems="center"===e.overlayX?"center":"end"===e.overlayX?"flex-end":"flex-start",o.justifyContent="center"===e.overlayY?"center":"bottom"===e.overlayY?"flex-end":"flex-start",r&&(o.maxHeight=oi(r)),s&&(o.maxWidth=oi(s))}this._lastBoundingBoxSize=i,Zl(this._boundingBox.style,o)}_resetBoundingBoxStyles(){Zl(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){Zl(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(n,e){const i={},o=this._hasExactPosition(),r=this._hasFlexibleDimensions,s=this._overlayRef.getConfig();if(o){const f=this._viewportRuler.getViewportScrollPosition();Zl(i,this._getExactOverlayY(e,n,f)),Zl(i,this._getExactOverlayX(e,n,f))}else i.position="static";let a="",l=this._getOffset(e,"x"),c=this._getOffset(e,"y");l&&(a+=`translateX(${l}px) `),c&&(a+=`translateY(${c}px)`),i.transform=a.trim(),s.maxHeight&&(o?i.maxHeight=oi(s.maxHeight):r&&(i.maxHeight="")),s.maxWidth&&(o?i.maxWidth=oi(s.maxWidth):r&&(i.maxWidth="")),Zl(this._pane.style,i)}_getExactOverlayY(n,e,i){let o={top:"",bottom:""},r=this._getOverlayPoint(e,this._overlayRect,n);return this._isPushed&&(r=this._pushOverlayOnScreen(r,this._overlayRect,i)),"bottom"===n.overlayY?o.bottom=this._document.documentElement.clientHeight-(r.y+this._overlayRect.height)+"px":o.top=oi(r.y),o}_getExactOverlayX(n,e,i){let s,o={left:"",right:""},r=this._getOverlayPoint(e,this._overlayRect,n);return this._isPushed&&(r=this._pushOverlayOnScreen(r,this._overlayRect,i)),s=this._isRtl()?"end"===n.overlayX?"left":"right":"end"===n.overlayX?"right":"left","right"===s?o.right=this._document.documentElement.clientWidth-(r.x+this._overlayRect.width)+"px":o.left=oi(r.x),o}_getScrollVisibility(){const n=this._getOriginRect(),e=this._pane.getBoundingClientRect(),i=this._scrollables.map(o=>o.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:W3(n,i),isOriginOutsideView:hS(n,i),isOverlayClipped:W3(e,i),isOverlayOutsideView:hS(e,i)}}_subtractOverflows(n,...e){return e.reduce((i,o)=>i-Math.max(o,0),n)}_getNarrowedViewportRect(){const n=this._document.documentElement.clientWidth,e=this._document.documentElement.clientHeight,i=this._viewportRuler.getViewportScrollPosition();return{top:i.top+this._getViewportMarginTop(),left:i.left+this._getViewportMarginStart(),right:i.left+n-this._getViewportMarginEnd(),bottom:i.top+e-this._getViewportMarginBottom(),width:n-this._getViewportMarginStart()-this._getViewportMarginEnd(),height:e-this._getViewportMarginTop()-this._getViewportMarginBottom()}}_isRtl(){return"rtl"===this._overlayRef.getDirection()}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(n,e){return"x"===e?null==n.offsetX?this._offsetX:n.offsetX:null==n.offsetY?this._offsetY:n.offsetY}_validatePositions(){}_addPanelClasses(n){this._pane&&_b(n).forEach(e=>{""!==e&&-1===this._appliedPanelClasses.indexOf(e)&&(this._appliedPanelClasses.push(e),this._pane.classList.add(e))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(n=>{this._pane.classList.remove(n)}),this._appliedPanelClasses=[])}_getViewportMarginStart(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.start??0}_getViewportMarginEnd(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.end??0}_getViewportMarginTop(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.top??0}_getViewportMarginBottom(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.bottom??0}_getOriginRect(){const n=this._origin;if(n instanceof Re)return n.nativeElement.getBoundingClientRect();if(n instanceof Element)return n.getBoundingClientRect();const e=n.width||0,i=n.height||0;return{top:n.y,bottom:n.y+i,left:n.x,right:n.x+e,height:i,width:e}}_getContainerRect(){const n=this._overlayRef.getConfig().usePopover&&"global"!==this._popoverLocation,e=this._overlayContainer.getContainerElement();n&&(e.style.display="block");const i=e.getBoundingClientRect();return n&&(e.style.display=""),i}}function Zl(t,n){for(let e in n)n.hasOwnProperty(e)&&(t[e]=n[e]);return t}function Z3(t){if("number"!=typeof t&&null!=t){const[n,e]=t.split(lde);return e&&"px"!==e?null:parseFloat(n)}return t||null}function Q3(t){return{top:Math.floor(t.top),right:Math.floor(t.right),bottom:Math.floor(t.bottom),left:Math.floor(t.left),width:Math.floor(t.width),height:Math.floor(t.height)}}const J3="cdk-global-overlay-wrapper";function Sb(t){return new ude}class ude{_overlayRef;_cssPosition="static";_topOffset="";_bottomOffset="";_alignItems="";_xPosition="";_xOffset="";_width="";_height="";_isDisposed=!1;attach(n){const e=n.getConfig();this._overlayRef=n,this._width&&!e.width&&n.updateSize({width:this._width}),this._height&&!e.height&&n.updateSize({height:this._height}),n.hostElement.classList.add(J3),this._isDisposed=!1}top(n=""){return this._bottomOffset="",this._topOffset=n,this._alignItems="flex-start",this}left(n=""){return this._xOffset=n,this._xPosition="left",this}bottom(n=""){return this._topOffset="",this._bottomOffset=n,this._alignItems="flex-end",this}right(n=""){return this._xOffset=n,this._xPosition="right",this}start(n=""){return this._xOffset=n,this._xPosition="start",this}end(n=""){return this._xOffset=n,this._xPosition="end",this}width(n=""){return this._overlayRef?this._overlayRef.updateSize({width:n}):this._width=n,this}height(n=""){return this._overlayRef?this._overlayRef.updateSize({height:n}):this._height=n,this}centerHorizontally(n=""){return this.left(n),this._xPosition="center",this}centerVertically(n=""){return this.top(n),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;const n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement.style,i=this._overlayRef.getConfig(),{width:o,height:r,maxWidth:s,maxHeight:a}=i,l=!("100%"!==o&&"100vw"!==o||s&&"100%"!==s&&"100vw"!==s),c=!("100%"!==r&&"100vh"!==r||a&&"100%"!==a&&"100vh"!==a),f=this._xPosition,m=this._xOffset,g="rtl"===this._overlayRef.getConfig().direction;let _="",w="",k="";l?k="flex-start":"center"===f?(k="center",g?w=m:_=m):g?"left"===f||"end"===f?(k="flex-end",_=m):("right"===f||"start"===f)&&(k="flex-start",w=m):"left"===f||"start"===f?(k="flex-start",_=m):("right"===f||"end"===f)&&(k="flex-end",w=m),n.position=this._cssPosition,n.marginLeft=l?"0":_,n.marginTop=c?"0":this._topOffset,n.marginBottom=this._bottomOffset,n.marginRight=l?"0":w,e.justifyContent=k,e.alignItems=c?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;const n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement,i=e.style;e.classList.remove(J3),i.justifyContent=i.alignItems=n.marginTop=n.marginBottom=n.marginLeft=n.marginRight=n.position="",this._overlayRef=null,this._isDisposed=!0}}let hde=(()=>{class t{_injector=D(He);constructor(){}global(){return Sb()}flexibleConnectedTo(e){return xb(this._injector,e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const mS=new Z("OVERLAY_DEFAULT_CONFIG");function Xd(t,n){t.get(zo).load(K3);const e=t.get(fS),i=t.get(et),o=t.get(ni),r=t.get(lr),s=t.get(br),a=t.get(Qn,null,{optional:!0})||t.get(Lo).createRenderer(null,null),l=new Vf(n),c=t.get(mS,null,{optional:!0})?.usePopover??!0;l.direction=l.direction||s.value,l.usePopover="showPopover"in i.body&&(n?.usePopover??c);const f=i.createElement("div"),m=i.createElement("div");f.id=o.getId("cdk-overlay-"),f.classList.add("cdk-overlay-pane"),m.appendChild(f),l.usePopover&&(m.setAttribute("popover","manual"),m.classList.add("cdk-overlay-popover"));const g=l.usePopover?l.positionStrategy?.getPopoverInsertionPoint?.():null;return pS(g)?g.after(m):"parent"===g?.type?g.element.appendChild(m):e.getContainerElement().appendChild(m),new Y3(new Lce(f,r,t),m,f,l,t.get(_e),t.get(rde),i,t.get(Fd),t.get(sde),n?.disableAnimations??"NoopAnimations"===t.get(Rm,null,{optional:!0}),t.get(zn),a)}let fde=(()=>{class t{scrollStrategies=D(ide);_positionBuilder=D(hde);_injector=D(He);constructor(){}create(e){return Xd(this._injector,e)}position(){return this._positionBuilder}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const pde=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],mde=new Z("cdk-connected-overlay-scroll-strategy",{providedIn:"root",factory:()=>{const t=D(He);return()=>Bf(t)}});let kb=(()=>{class t{elementRef=D(Re);constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"]})}return t})();const gde=new Z("cdk-connected-overlay-default-config");let Db,e4=(()=>{class t{_dir=D(br,{optional:!0});_injector=D(He);_overlayRef;_templatePortal;_backdropSubscription=pt.EMPTY;_attachSubscription=pt.EMPTY;_detachSubscription=pt.EMPTY;_positionSubscription=pt.EMPTY;_offsetX;_offsetY;_position;_scrollStrategyFactory=D(mde);_ngZone=D(_e);origin;positions;positionStrategy;get offsetX(){return this._offsetX}set offsetX(e){this._offsetX=e,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(e){this._offsetY=e,this._position&&this._updatePositionStrategy(this._position)}width;height;minWidth;minHeight;backdropClass;panelClass;viewportMargin=0;scrollStrategy;open=!1;disableClose=!1;transformOriginSelector;hasBackdrop=!1;lockPosition=!1;flexibleDimensions=!1;growAfterOpen=!1;push=!1;disposeOnNavigation=!1;usePopover;matchWidth=!1;set _config(e){"string"!=typeof e&&this._assignConfig(e)}backdropClick=new we;positionChange=new we;attach=new we;detach=new we;overlayKeydown=new we;overlayOutsideClick=new we;constructor(){const e=D(Ti),i=D(Ei),o=D(gde,{optional:!0}),r=D(mS,{optional:!0});this.usePopover=!1===r?.usePopover?null:"global",this._templatePortal=new Yl(e,i),this.scrollStrategy=this._scrollStrategyFactory(),o&&this._assignConfig(o)}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef?.dispose()}ngOnChanges(e){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef?.updateSize({width:this._getWidth(),minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),e.origin&&this.open&&this._position.apply()),e.open&&(this.open?this.attachOverlay():this.detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=pde);const e=this._overlayRef=Xd(this._injector,this._buildConfig());this._attachSubscription=e.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=e.detachments().subscribe(()=>this.detach.emit()),e.keydownEvents().subscribe(i=>{this.overlayKeydown.next(i),27===i.keyCode&&!this.disableClose&&!yr(i)&&(i.preventDefault(),this.detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(i=>{const o=this._getOriginElement(),r=vr(i);(!o||o!==r&&!o.contains(r))&&this.overlayOutsideClick.next(i)})}_buildConfig(){const e=this._position=this.positionStrategy||this._createPositionStrategy(),i=new Vf({direction:this._dir||"ltr",positionStrategy:e,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop,disposeOnNavigation:this.disposeOnNavigation,usePopover:!!this.usePopover});return(this.height||0===this.height)&&(i.height=this.height),(this.minWidth||0===this.minWidth)&&(i.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(i.minHeight=this.minHeight),this.backdropClass&&(i.backdropClass=this.backdropClass),this.panelClass&&(i.panelClass=this.panelClass),i}_updatePositionStrategy(e){const i=this.positions.map(o=>({originX:o.originX,originY:o.originY,overlayX:o.overlayX,overlayY:o.overlayY,offsetX:o.offsetX||this.offsetX,offsetY:o.offsetY||this.offsetY,panelClass:o.panelClass||void 0}));return e.setOrigin(this._getOrigin()).withPositions(i).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector).withPopoverLocation(null===this.usePopover?"global":this.usePopover)}_createPositionStrategy(){const e=xb(this._injector,this._getOrigin());return this._updatePositionStrategy(e),e}_getOrigin(){return this.origin instanceof kb?this.origin.elementRef:this.origin}_getOriginElement(){return this.origin instanceof kb?this.origin.elementRef.nativeElement:this.origin instanceof Re?this.origin.nativeElement:typeof Element<"u"&&this.origin instanceof Element?this.origin:null}_getWidth(){return this.width?this.width:this.matchWidth?this._getOriginElement()?.getBoundingClientRect?.().width:void 0}attachOverlay(){this._overlayRef||this._createOverlay();const e=this._overlayRef;e.getConfig().hasBackdrop=this.hasBackdrop,e.updateSize({width:this._getWidth()}),e.hasAttached()||e.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=e.backdropClick().subscribe(i=>this.backdropClick.emit(i)):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(function Vce(t,n=!1){return Mn((e,i)=>{let o=0;e.subscribe(dn(i,r=>{const s=t(r,o++);(s||n)&&i.next(r),!s&&i.complete()}))})}(()=>this.positionChange.observers.length>0)).subscribe(i=>{this._ngZone.run(()=>this.positionChange.emit(i)),0===this.positionChange.observers.length&&this._positionSubscription.unsubscribe()})),this.open=!0}detachOverlay(){this._overlayRef?.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.open=!1}_assignConfig(e){this.origin=e.origin??this.origin,this.positions=e.positions??this.positions,this.positionStrategy=e.positionStrategy??this.positionStrategy,this.offsetX=e.offsetX??this.offsetX,this.offsetY=e.offsetY??this.offsetY,this.width=e.width??this.width,this.height=e.height??this.height,this.minWidth=e.minWidth??this.minWidth,this.minHeight=e.minHeight??this.minHeight,this.backdropClass=e.backdropClass??this.backdropClass,this.panelClass=e.panelClass??this.panelClass,this.viewportMargin=e.viewportMargin??this.viewportMargin,this.scrollStrategy=e.scrollStrategy??this.scrollStrategy,this.disableClose=e.disableClose??this.disableClose,this.transformOriginSelector=e.transformOriginSelector??this.transformOriginSelector,this.hasBackdrop=e.hasBackdrop??this.hasBackdrop,this.lockPosition=e.lockPosition??this.lockPosition,this.flexibleDimensions=e.flexibleDimensions??this.flexibleDimensions,this.growAfterOpen=e.growAfterOpen??this.growAfterOpen,this.push=e.push??this.push,this.disposeOnNavigation=e.disposeOnNavigation??this.disposeOnNavigation,this.usePopover=e.usePopover??this.usePopover,this.matchWidth=e.matchWidth??this.matchWidth}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:[0,"cdkConnectedOverlayOrigin","origin"],positions:[0,"cdkConnectedOverlayPositions","positions"],positionStrategy:[0,"cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:[0,"cdkConnectedOverlayOffsetX","offsetX"],offsetY:[0,"cdkConnectedOverlayOffsetY","offsetY"],width:[0,"cdkConnectedOverlayWidth","width"],height:[0,"cdkConnectedOverlayHeight","height"],minWidth:[0,"cdkConnectedOverlayMinWidth","minWidth"],minHeight:[0,"cdkConnectedOverlayMinHeight","minHeight"],backdropClass:[0,"cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:[0,"cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:[0,"cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:[0,"cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:[0,"cdkConnectedOverlayOpen","open"],disableClose:[0,"cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:[0,"cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:[2,"cdkConnectedOverlayHasBackdrop","hasBackdrop",De],lockPosition:[2,"cdkConnectedOverlayLockPosition","lockPosition",De],flexibleDimensions:[2,"cdkConnectedOverlayFlexibleDimensions","flexibleDimensions",De],growAfterOpen:[2,"cdkConnectedOverlayGrowAfterOpen","growAfterOpen",De],push:[2,"cdkConnectedOverlayPush","push",De],disposeOnNavigation:[2,"cdkConnectedOverlayDisposeOnNavigation","disposeOnNavigation",De],usePopover:[0,"cdkConnectedOverlayUsePopover","usePopover"],matchWidth:[2,"cdkConnectedOverlayMatchWidth","matchWidth",De],_config:[0,"cdkConnectedOverlay","_config"]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],features:[_i]})}return t})(),Zd=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[fde],imports:[ii,Ff,j3,j3]})}return t})(),gS=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["ng-component"]],exportAs:["cdkVisuallyHidden"],decls:0,vars:0,template:function(i,o){},styles:[".cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}\n"],encapsulation:2,changeDetection:0})}return t})();function Qd(t){return function _de(){if(void 0===Db&&(Db=null,typeof window<"u")){const t=window;void 0!==t.trustedTypes&&(Db=t.trustedTypes.createPolicy("angular#components",{createHTML:n=>n}))}return Db}()?.createHTML(t)||t}function _S(t){return Tn((n,e)=>t<=e)}function Mb(t,n=Pf){return Mn((e,i)=>{let o=null,r=null,s=null;const a=()=>{if(o){o.unsubscribe(),o=null;const c=r;r=null,i.next(c)}};function l(){const c=s+t,f=n.now();if(f{r=c,s=n.now(),o||(o=n.schedule(l,t),i.add(o))},()=>{a(),i.complete()},void 0,()=>{r=o=null}))})}const t4=new Set;let Ql,bS=(()=>{class t{_platform=D(Yn);_nonce=D(xC,{optional:!0});_matchMedia;constructor(){this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):yde}matchMedia(e){return(this._platform.WEBKIT||this._platform.BLINK)&&function vde(t,n){if(!t4.has(t))try{Ql||(Ql=document.createElement("style"),n&&Ql.setAttribute("nonce",n),Ql.setAttribute("type","text/css"),document.head.appendChild(Ql)),Ql.sheet&&(Ql.sheet.insertRule(`@media ${t} {body{ }}`,0),t4.add(t))}catch(e){console.error(e)}}(e,this._nonce),this._matchMedia(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function yde(t){return{matches:"all"===t||""===t,media:t,addListener:()=>{},removeListener:()=>{}}}let n4=(()=>{class t{_mediaMatcher=D(bS);_zone=D(_e);_queries=new Map;_destroySubject=new me;constructor(){}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(e){return i4(_b(e)).some(o=>this._registerQuery(o).mql.matches)}observe(e){let r=kx(i4(_b(e)).map(s=>this._registerQuery(s).observable));return r=Ts(r.pipe(Cn(1)),r.pipe(_S(1),Mb(0))),r.pipe(Se(s=>{const a={matches:!1,breakpoints:{}};return s.forEach(({matches:l,query:c})=>{a.matches=a.matches||l,a.breakpoints[c]=l}),a}))}_registerQuery(e){if(this._queries.has(e))return this._queries.get(e);const i=this._mediaMatcher.matchMedia(e),r={observable:new Ft(s=>{const a=l=>this._zone.run(()=>s.next(l));return i.addListener(a),()=>{i.removeListener(a)}}).pipe(si(i),Se(({matches:s})=>({query:e,matches:s})),fn(this._destroySubject)),mql:i};return this._queries.set(e,r),r}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function i4(t){return t.map(n=>n.split(",")).reduce((n,e)=>n.concat(e)).map(n=>n.trim())}let o4=(()=>{class t{create(e){return typeof MutationObserver>"u"?null:new MutationObserver(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),wde=(()=>{class t{_mutationObserverFactory=D(o4);_observedElements=new Map;_ngZone=D(_e);constructor(){}ngOnDestroy(){this._observedElements.forEach((e,i)=>this._cleanupObserver(i))}observe(e){const i=Ps(e);return new Ft(o=>{const s=this._observeElement(i).pipe(Se(a=>a.filter(l=>!function Cde(t){if("characterData"===t.type&&t.target instanceof Comment)return!0;if("childList"===t.type){for(let n=0;n!!a.length)).subscribe(a=>{this._ngZone.run(()=>{o.next(a)})});return()=>{s.unsubscribe(),this._unobserveElement(i)}})}_observeElement(e){return this._ngZone.runOutsideAngular(()=>{if(this._observedElements.has(e))this._observedElements.get(e).count++;else{const i=new me,o=this._mutationObserverFactory.create(r=>i.next(r));o&&o.observe(e,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(e,{observer:o,stream:i,count:1})}return this._observedElements.get(e).stream})}_unobserveElement(e){this._observedElements.has(e)&&(this._observedElements.get(e).count--,this._observedElements.get(e).count||this._cleanupObserver(e))}_cleanupObserver(e){if(this._observedElements.has(e)){const{observer:i,stream:o}=this._observedElements.get(e);i&&i.disconnect(),o.complete(),this._observedElements.delete(e)}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),xde=(()=>{class t{_contentObserver=D(wde);_elementRef=D(Re);event=new we;get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._disabled?this._unsubscribe():this._subscribe()}_disabled=!1;get debounce(){return this._debounce}set debounce(e){this._debounce=Of(e),this._subscribe()}_debounce;_currentSubscription=null;constructor(){}ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();const e=this._contentObserver.observe(this._elementRef);this._currentSubscription=(this.debounce?e.pipe(Mb(this.debounce)):e).subscribe(this.event)}_unsubscribe(){this._currentSubscription?.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkObserveContent",""]],inputs:{disabled:[2,"cdkObserveContentDisabled","disabled",De],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"]})}return t})(),r4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[o4]})}return t})(),s4=(()=>{class t{_platform=D(Yn);constructor(){}isDisabled(e){return e.hasAttribute("disabled")}isVisible(e){return function kde(t){return!!(t.offsetWidth||t.offsetHeight||"function"==typeof t.getClientRects&&t.getClientRects().length)}(e)&&"visible"===getComputedStyle(e).visibility}isTabbable(e){if(!this._platform.isBrowser)return!1;const i=function Sde(t){try{return t.frameElement}catch{return null}}(function Ade(t){return t.ownerDocument&&t.ownerDocument.defaultView||window}(e));if(i&&(-1===l4(i)||!this.isVisible(i)))return!1;let o=e.nodeName.toLowerCase(),r=l4(e);return e.hasAttribute("contenteditable")?-1!==r:!("iframe"===o||"object"===o||this._platform.WEBKIT&&this._platform.IOS&&!function Ide(t){let n=t.nodeName.toLowerCase(),e="input"===n&&t.type;return"text"===e||"password"===e||"select"===n||"textarea"===n}(e))&&("audio"===o?!!e.hasAttribute("controls")&&-1!==r:"video"===o?-1!==r&&(null!==r||this._platform.FIREFOX||e.hasAttribute("controls")):e.tabIndex>=0)}isFocusable(e,i){return function Ode(t){return!function Mde(t){return function Ede(t){return"input"==t.nodeName.toLowerCase()}(t)&&"hidden"==t.type}(t)&&(function Dde(t){let n=t.nodeName.toLowerCase();return"input"===n||"select"===n||"button"===n||"textarea"===n}(t)||function Tde(t){return function Pde(t){return"a"==t.nodeName.toLowerCase()}(t)&&t.hasAttribute("href")}(t)||t.hasAttribute("contenteditable")||a4(t))}(e)&&!this.isDisabled(e)&&(i?.ignoreVisibility||this.isVisible(e))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function a4(t){if(!t.hasAttribute("tabindex")||void 0===t.tabIndex)return!1;let n=t.getAttribute("tabindex");return!(!n||isNaN(parseInt(n,10)))}function l4(t){if(!a4(t))return null;const n=parseInt(t.getAttribute("tabindex")||"",10);return isNaN(n)?-1:n}class c4{_element;_checker;_ngZone;_document;_injector;_startAnchor=null;_endAnchor=null;_hasAttached=!1;startAnchorListener=()=>this.focusLastTabbableElement();endAnchorListener=()=>this.focusFirstTabbableElement();get enabled(){return this._enabled}set enabled(n){this._enabled=n,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}_enabled=!0;constructor(n,e,i,o,r=!1,s){this._element=n,this._checker=e,this._ngZone=i,this._document=o,this._injector=s,r||this.attachAnchors()}destroy(){const n=this._startAnchor,e=this._endAnchor;n&&(n.removeEventListener("focus",this.startAnchorListener),n.remove()),e&&(e.removeEventListener("focus",this.endAnchorListener),e.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return!!this._hasAttached||(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusInitialElement(n)))})}focusFirstTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusFirstTabbableElement(n)))})}focusLastTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusLastTabbableElement(n)))})}_getRegionBoundary(n){const e=this._element.querySelectorAll(`[cdk-focus-region-${n}], [cdkFocusRegion${n}], [cdk-focus-${n}]`);return"start"==n?e.length?e[0]:this._getFirstTabbableElement(this._element):e.length?e[e.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(n){const e=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(e){if(!this._checker.isFocusable(e)){const i=this._getFirstTabbableElement(e);return i?.focus(n),!!i}return e.focus(n),!0}return this.focusFirstTabbableElement(n)}focusFirstTabbableElement(n){const e=this._getRegionBoundary("start");return e&&e.focus(n),!!e}focusLastTabbableElement(n){const e=this._getRegionBoundary("end");return e&&e.focus(n),!!e}hasAttached(){return this._hasAttached}_getFirstTabbableElement(n){if(this._checker.isFocusable(n)&&this._checker.isTabbable(n))return n;const e=n.children;for(let i=0;i=0;i--){const o=e[i].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(e[i]):null;if(o)return o}return null}_createAnchor(){const n=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,n),n.classList.add("cdk-visually-hidden"),n.classList.add("cdk-focus-trap-anchor"),n.setAttribute("aria-hidden","true"),n}_toggleAnchorTabIndex(n,e){n?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}toggleAnchors(n){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}_executeOnStable(n){this._injector?Vi(n,{injector:this._injector}):setTimeout(n)}}let Rde=(()=>{class t{_checker=D(s4);_ngZone=D(_e);_document=D(et);_injector=D(He);constructor(){D(zo).load(gS)}create(e,i=!1){return new c4(e,this._checker,this._ngZone,this._document,i,this._injector)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Fde=new Z("liveAnnouncerElement",{providedIn:"root",factory:()=>null}),Nde=new Z("LIVE_ANNOUNCER_DEFAULT_OPTIONS");let Lde=0,d4=(()=>{class t{_ngZone=D(_e);_defaultOptions=D(Nde,{optional:!0});_liveElement;_document=D(et);_sanitizer=D(Mx);_previousTimeout;_currentPromise;_currentResolve;constructor(){const e=D(Fde,{optional:!0});this._liveElement=e||this._createLiveElement()}announce(e,...i){const o=this._defaultOptions;let r,s;return 1===i.length&&"number"==typeof i[0]?s=i[0]:[r,s]=i,this.clear(),clearTimeout(this._previousTimeout),r||(r=o&&o.politeness?o.politeness:"polite"),null==s&&o&&(s=o.duration),this._liveElement.setAttribute("aria-live",r),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular(()=>(this._currentPromise||(this._currentPromise=new Promise(a=>this._currentResolve=a)),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout(()=>{e&&"string"!=typeof e?function bde(t,n,e){const i=e.sanitize(bi.HTML,n);t.innerHTML=Qd(i||"")}(this._liveElement,e,this._sanitizer):this._liveElement.textContent=e,"number"==typeof s&&(this._previousTimeout=setTimeout(()=>this.clear(),s)),this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0},100),this._currentPromise))}clear(){this._liveElement&&(this._liveElement.textContent="")}ngOnDestroy(){clearTimeout(this._previousTimeout),this._liveElement?.remove(),this._liveElement=null,this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){const e="cdk-live-announcer-element",i=this._document.getElementsByClassName(e),o=this._document.createElement("div");for(let r=0;r .cdk-overlay-container [aria-modal="true"]');for(let o=0;o{class t{_platform=D(Yn);_hasCheckedHighContrastMode=!1;_document=D(et);_breakpointSubscription;constructor(){this._breakpointSubscription=D(n4).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return Jl.NONE;const e=this._document.createElement("div");e.style.backgroundColor="rgb(1,2,3)",e.style.position="absolute",this._document.body.appendChild(e);const i=this._document.defaultView||window,o=i&&i.getComputedStyle?i.getComputedStyle(e):null,r=(o&&o.backgroundColor||"").replace(/ /g,"");switch(e.remove(),r){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return Jl.WHITE_ON_BLACK;case"rgb(255,255,255)":case"rgb(255,250,239)":return Jl.BLACK_ON_WHITE}return Jl.NONE}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){const e=this._document.body.classList;e.remove(vS,u4,h4),this._hasCheckedHighContrastMode=!0;const i=this.getHighContrastMode();i===Jl.BLACK_ON_WHITE?e.add(vS,u4):i===Jl.WHITE_ON_BLACK&&e.add(vS,h4)}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),f4=(()=>{class t{constructor(){D(Bde)._applyBodyHighContrastModeCssClasses()}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[r4]})}return t})();function Hde(t,n){return t===n}function yS(t){return 0===t.buttons||0===t.detail}function CS(t){const n=t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0];return!(!n||-1!==n.identifier||null!=n.radiusX&&1!==n.radiusX||null!=n.radiusY&&1!==n.radiusY)}function wS(t){return function jde(){if(null==Hf&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>Hf=!0}))}finally{Hf=Hf||!1}return Hf}()?t:!!t.capture}const Ude=new Z("cdk-input-modality-detector-options"),zde={ignoreKeys:[18,17,224,91,16]},xS={passive:!0,capture:!0};let $de=(()=>{class t{_platform=D(Yn);_listenerCleanups;modalityDetected;modalityChanged;get mostRecentModality(){return this._modality.value}_mostRecentTarget=null;_modality=new ki(null);_options;_lastTouchMs=0;_onKeydown=e=>{this._options?.ignoreKeys?.some(i=>i===e.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=vr(e))};_onMousedown=e=>{Date.now()-this._lastTouchMs<650||(this._modality.next(yS(e)?"keyboard":"mouse"),this._mostRecentTarget=vr(e))};_onTouchstart=e=>{CS(e)?this._modality.next("keyboard"):(this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=vr(e))};constructor(){const e=D(_e),i=D(et),o=D(Ude,{optional:!0});if(this._options={...zde,...o},this.modalityDetected=this._modality.pipe(_S(1)),this.modalityChanged=this.modalityDetected.pipe(function Vde(t,n=Ga){return t=t??Hde,Mn((e,i)=>{let o,r=!0;e.subscribe(dn(i,s=>{const a=n(s);(r||!t(o,a))&&(r=!1,o=a,i.next(s))}))})}()),this._platform.isBrowser){const r=D(Lo).createRenderer(null,null);this._listenerCleanups=e.runOutsideAngular(()=>[r.listen(i,"keydown",this._onKeydown,xS),r.listen(i,"mousedown",this._onMousedown,xS),r.listen(i,"touchstart",this._onTouchstart,xS)])}}ngOnDestroy(){this._modality.complete(),this._listenerCleanups?.forEach(e=>e())}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Tb=function(t){return t[t.IMMEDIATE=0]="IMMEDIATE",t[t.EVENTUAL=1]="EVENTUAL",t}(Tb||{});const Wde=new Z("cdk-focus-monitor-default-options"),Eb=wS({passive:!0,capture:!0});let ec=(()=>{class t{_ngZone=D(_e);_platform=D(Yn);_inputModalityDetector=D($de);_origin=null;_lastFocusOrigin=null;_windowFocused=!1;_windowFocusTimeoutId;_originTimeoutId;_originFromTouchInteraction=!1;_elementInfo=new Map;_monitoredElementCount=0;_rootNodeFocusListenerCount=new Map;_detectionMode;_windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=setTimeout(()=>this._windowFocused=!1)};_document=D(et);_stopInputModalityDetector=new me;constructor(){const e=D(Wde,{optional:!0});this._detectionMode=e?.detectionMode||Tb.IMMEDIATE}_rootNodeFocusAndBlurListener=e=>{for(let o=vr(e);o;o=o.parentElement)"focus"===e.type?this._onFocus(e,o):this._onBlur(e,o)};monitor(e,i=!1){const o=Ps(e);if(!this._platform.isBrowser||1!==o.nodeType)return ae();const r=function Fce(t){if(function Rce(){if(null==aS){const t=typeof document<"u"?document.head:null;aS=!(!t||!t.createShadowRoot&&!t.attachShadow)}return aS}()){const n=t.getRootNode?t.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&n instanceof ShadowRoot)return n}return null}(o)||this._document,s=this._elementInfo.get(o);if(s)return i&&(s.checkChildren=!0),s.subject;const a={checkChildren:i,subject:new me,rootNode:r};return this._elementInfo.set(o,a),this._registerGlobalListeners(a),a.subject}stopMonitoring(e){const i=Ps(e),o=this._elementInfo.get(i);o&&(o.subject.complete(),this._setClasses(i),this._elementInfo.delete(i),this._removeGlobalListeners(o))}focusVia(e,i,o){const r=Ps(e);r===this._document.activeElement?this._getClosestElementsInfo(r).forEach(([a,l])=>this._originChanged(a,i,l)):(this._setOrigin(i),"function"==typeof r.focus&&r.focus(o))}ngOnDestroy(){this._elementInfo.forEach((e,i)=>this.stopMonitoring(i))}_getWindow(){return this._document.defaultView||window}_getFocusOrigin(e){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(e)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:e&&this._isLastInteractionFromInputLabel(e)?"mouse":"program"}_shouldBeAttributedToTouch(e){return this._detectionMode===Tb.EVENTUAL||!!e?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(e,i){e.classList.toggle("cdk-focused",!!i),e.classList.toggle("cdk-touch-focused","touch"===i),e.classList.toggle("cdk-keyboard-focused","keyboard"===i),e.classList.toggle("cdk-mouse-focused","mouse"===i),e.classList.toggle("cdk-program-focused","program"===i)}_setOrigin(e,i=!1){this._ngZone.runOutsideAngular(()=>{this._origin=e,this._originFromTouchInteraction="touch"===e&&i,this._detectionMode===Tb.IMMEDIATE&&(clearTimeout(this._originTimeoutId),this._originTimeoutId=setTimeout(()=>this._origin=null,this._originFromTouchInteraction?650:1))})}_onFocus(e,i){const o=this._elementInfo.get(i),r=vr(e);!o||!o.checkChildren&&i!==r||this._originChanged(i,this._getFocusOrigin(r),o)}_onBlur(e,i){const o=this._elementInfo.get(i);!o||o.checkChildren&&e.relatedTarget instanceof Node&&i.contains(e.relatedTarget)||(this._setClasses(i),this._emitOrigin(o,null))}_emitOrigin(e,i){e.subject.observers.length&&this._ngZone.run(()=>e.subject.next(i))}_registerGlobalListeners(e){if(!this._platform.isBrowser)return;const i=e.rootNode,o=this._rootNodeFocusListenerCount.get(i)||0;o||this._ngZone.runOutsideAngular(()=>{i.addEventListener("focus",this._rootNodeFocusAndBlurListener,Eb),i.addEventListener("blur",this._rootNodeFocusAndBlurListener,Eb)}),this._rootNodeFocusListenerCount.set(i,o+1),1===++this._monitoredElementCount&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(fn(this._stopInputModalityDetector)).subscribe(r=>{this._setOrigin(r,!0)}))}_removeGlobalListeners(e){const i=e.rootNode;if(this._rootNodeFocusListenerCount.has(i)){const o=this._rootNodeFocusListenerCount.get(i);o>1?this._rootNodeFocusListenerCount.set(i,o-1):(i.removeEventListener("focus",this._rootNodeFocusAndBlurListener,Eb),i.removeEventListener("blur",this._rootNodeFocusAndBlurListener,Eb),this._rootNodeFocusListenerCount.delete(i))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(e,i,o){this._setClasses(e,i),this._emitOrigin(o,i),this._lastFocusOrigin=i}_getClosestElementsInfo(e){const i=[];return this._elementInfo.forEach((o,r)=>{(r===e||o.checkChildren&&r.contains(e))&&i.push([r,o])}),i}_isLastInteractionFromInputLabel(e){const{_mostRecentTarget:i,mostRecentModality:o}=this._inputModalityDetector;if("mouse"!==o||!i||i===e||"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.disabled)return!1;const r=e.labels;if(r)for(let s=0;s{class t{_elementRef=D(Re);_focusMonitor=D(ec);_monitorSubscription;_focusOrigin=null;cdkFocusChange=new we;constructor(){}get focusOrigin(){return this._focusOrigin}ngAfterViewInit(){const e=this._elementRef.nativeElement;this._monitorSubscription=this._focusMonitor.monitor(e,1===e.nodeType&&e.hasAttribute("cdkMonitorSubtreeFocus")).subscribe(i=>{this._focusOrigin=i,this.cdkFocusChange.emit(i)})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._monitorSubscription?.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkMonitorElementFocus",""],["","cdkMonitorSubtreeFocus",""]],outputs:{cdkFocusChange:"cdkFocusChange"},exportAs:["cdkMonitorFocus"]})}return t})();function qde(t,n){}class jf{viewContainerRef;injector;id;role="dialog";panelClass="";hasBackdrop=!0;backdropClass="";disableClose=!1;closePredicate;width="";height="";minWidth;minHeight;maxWidth;maxHeight;positionStrategy;data=null;direction;ariaDescribedBy=null;ariaLabelledBy=null;ariaLabel=null;ariaModal=!1;autoFocus="first-tabbable";restoreFocus=!0;scrollStrategy;closeOnNavigation=!0;closeOnDestroy=!0;closeOnOverlayDetachments=!0;disableAnimations=!1;providers;container;templateContext}let m4=(()=>{class t extends bb{_elementRef=D(Re);_focusTrapFactory=D(Rde);_config;_interactivityChecker=D(s4);_ngZone=D(_e);_focusMonitor=D(ec);_renderer=D(Qn);_changeDetectorRef=D(Jt);_injector=D(He);_platform=D(Yn);_document=D(et);_portalOutlet;_focusTrapped=new me;_focusTrap=null;_elementFocusedBeforeDialogWasOpened=null;_closeInteractionType=null;_ariaLabelledByQueue=[];_isDestroyed=!1;constructor(){super(),this._config=D(jf,{optional:!0})||new jf,this._config.ariaLabelledBy&&this._ariaLabelledByQueue.push(this._config.ariaLabelledBy)}_addAriaLabelledBy(e){this._ariaLabelledByQueue.push(e),this._changeDetectorRef.markForCheck()}_removeAriaLabelledBy(e){const i=this._ariaLabelledByQueue.indexOf(e);i>-1&&(this._ariaLabelledByQueue.splice(i,1),this._changeDetectorRef.markForCheck())}_contentAttached(){this._initializeFocusTrap(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._focusTrapped.complete(),this._isDestroyed=!0,this._restoreFocus()}attachComponentPortal(e){this._portalOutlet.hasAttached();const i=this._portalOutlet.attachComponentPortal(e);return this._contentAttached(),i}attachTemplatePortal(e){this._portalOutlet.hasAttached();const i=this._portalOutlet.attachTemplatePortal(e);return this._contentAttached(),i}attachDomPortal=e=>{this._portalOutlet.hasAttached();const i=this._portalOutlet.attachDomPortal(e);return this._contentAttached(),i};_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(e,i){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{const o=()=>{r(),s(),e.removeAttribute("tabindex")},r=this._renderer.listen(e,"blur",o),s=this._renderer.listen(e,"mousedown",o)})),e.focus(i)}_focusByCssSelector(e,i){let o=this._elementRef.nativeElement.querySelector(e);o&&this._forceFocus(o,i)}_trapFocus(e){this._isDestroyed||Vi(()=>{const i=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||i.focus(e);break;case!0:case"first-tabbable":this._focusTrap?.focusInitialElement(e)||this._focusDialogContainer(e);break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]',e);break;default:this._focusByCssSelector(this._config.autoFocus,e)}this._focusTrapped.next()},{injector:this._injector})}_restoreFocus(){const e=this._config.restoreFocus;let i=null;if("string"==typeof e?i=this._document.querySelector(e):"boolean"==typeof e?i=e?this._elementFocusedBeforeDialogWasOpened:null:e&&(i=e),this._config.restoreFocus&&i&&"function"==typeof i.focus){const o=lS(),r=this._elementRef.nativeElement;(!o||o===this._document.body||o===r||r.contains(o))&&(this._focusMonitor?(this._focusMonitor.focusVia(i,this._closeInteractionType),this._closeInteractionType=null):i.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(e){this._elementRef.nativeElement.focus?.(e)}_containsFocus(){const e=this._elementRef.nativeElement,i=lS();return e===i||e.contains(i)}_initializeFocusTrap(){this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=lS()))}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["cdk-dialog-container"]],viewQuery:function(i,o){if(1&i&&ot(Xl,7),2&i){let r;he(r=fe())&&(o._portalOutlet=r.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(i,o){2&i&&$e("id",o._config.id||null)("role",o._config.role)("aria-modal",o._config.ariaModal)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledByQueue[0])("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null)},features:[be],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(i,o){1&i&&it(0,qde,0,0,"ng-template",0)},dependencies:[Xl],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}\n"],encapsulation:2})}return t})();class SS{overlayRef;config;componentInstance=null;componentRef=null;containerInstance;disableClose;closed=new me;backdropClick;keydownEvents;outsidePointerEvents;id;_detachSubscription;constructor(n,e){this.overlayRef=n,this.config=e,this.disableClose=e.disableClose,this.backdropClick=n.backdropClick(),this.keydownEvents=n.keydownEvents(),this.outsidePointerEvents=n.outsidePointerEvents(),this.id=e.id,this.keydownEvents.subscribe(i=>{27===i.keyCode&&!this.disableClose&&!yr(i)&&(i.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{!this.disableClose&&this._canClose()?this.close(void 0,{focusOrigin:"mouse"}):this.containerInstance._recaptureFocus?.()}),this._detachSubscription=n.detachments().subscribe(()=>{!1!==e.closeOnOverlayDetachments&&this.close()})}close(n,e){if(this._canClose(n)){const i=this.closed;this.containerInstance._closeInteractionType=e?.focusOrigin||"program",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),i.next(n),i.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(n="",e=""){return this.overlayRef.updateSize({width:n,height:e}),this}addPanelClass(n){return this.overlayRef.addPanelClass(n),this}removePanelClass(n){return this.overlayRef.removePanelClass(n),this}_canClose(n){const e=this.config;return!!this.containerInstance&&(!e.closePredicate||e.closePredicate(n,e,this.componentInstance))}}const Kde=new Z("DialogScrollStrategy",{providedIn:"root",factory:()=>{const t=D(He);return()=>dS(t)}}),Yde=new Z("DialogData"),Xde=new Z("DefaultDialogConfig");function Zde(t){const n=yt(t),e=new we;return{valueSignal:n,get value(){return n()},change:e,ngOnDestroy(){e.complete()}}}let g4=(()=>{class t{_injector=D(He);_defaultOptions=D(Xde,{optional:!0});_parentDialog=D(t,{optional:!0,skipSelf:!0});_overlayContainer=D(fS);_idGenerator=D(ni);_openDialogsAtThisLevel=[];_afterAllClosedAtThisLevel=new me;_afterOpenedAtThisLevel=new me;_ariaHiddenElements=new Map;_scrollStrategy=D(Kde);get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}afterAllClosed=ya(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(si(void 0)));constructor(){}open(e,i){(i={...this._defaultOptions||new jf,...i}).id=i.id||this._idGenerator.getId("cdk-dialog-"),i.id&&this.getDialogById(i.id);const r=this._getOverlayConfig(i),s=Xd(this._injector,r),a=new SS(s,i),l=this._attachContainer(s,a,i);if(a.containerInstance=l,!this.openDialogs.length){const c=this._overlayContainer.getContainerElement();l._focusTrapped?l._focusTrapped.pipe(Cn(1)).subscribe(()=>{this._hideNonDialogContentFromAssistiveTechnology(c)}):this._hideNonDialogContentFromAssistiveTechnology(c)}return this._attachDialogContent(e,a,l,i),this.openDialogs.push(a),a.closed.subscribe(()=>this._removeOpenDialog(a,!0)),this.afterOpened.next(a),a}closeAll(){kS(this.openDialogs,e=>e.close())}getDialogById(e){return this.openDialogs.find(i=>i.id===e)}ngOnDestroy(){kS(this._openDialogsAtThisLevel,e=>{!1===e.config.closeOnDestroy&&this._removeOpenDialog(e,!1)}),kS(this._openDialogsAtThisLevel,e=>e.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(e){const i=new Vf({positionStrategy:e.positionStrategy||Sb().centerHorizontally().centerVertically(),scrollStrategy:e.scrollStrategy||this._scrollStrategy(),panelClass:e.panelClass,hasBackdrop:e.hasBackdrop,direction:e.direction,minWidth:e.minWidth,minHeight:e.minHeight,maxWidth:e.maxWidth,maxHeight:e.maxHeight,width:e.width,height:e.height,disposeOnNavigation:e.closeOnNavigation,disableAnimations:e.disableAnimations});return e.backdropClass&&(i.backdropClass=e.backdropClass),i}_attachContainer(e,i,o){const r=o.injector||o.viewContainerRef?.injector,s=[{provide:jf,useValue:o},{provide:SS,useValue:i},{provide:Y3,useValue:e}];let a;o.container?"function"==typeof o.container?a=o.container:(a=o.container.type,s.push(...o.container.providers(o))):a=m4;const l=new Kd(a,o.viewContainerRef,He.create({parent:r||this._injector,providers:s}));return e.attach(l).instance}_attachDialogContent(e,i,o,r){if(e instanceof Ti){const s=this._createInjector(r,i,o,void 0);let a={$implicit:r.data,dialogRef:i};r.templateContext&&(a={...a,..."function"==typeof r.templateContext?r.templateContext():r.templateContext}),o.attachTemplatePortal(new Yl(e,null,a,s))}else{const s=this._createInjector(r,i,o,this._injector),a=o.attachComponentPortal(new Kd(e,r.viewContainerRef,s));i.componentRef=a,i.componentInstance=a.instance}}_createInjector(e,i,o,r){const s=e.injector||e.viewContainerRef?.injector,a=[{provide:Yde,useValue:e.data},{provide:SS,useValue:i}];return e.providers&&("function"==typeof e.providers?a.push(...e.providers(i,e,o)):a.push(...e.providers)),e.direction&&(!s||!s.get(br,null,{optional:!0}))&&a.push({provide:br,useValue:Zde(e.direction)}),He.create({parent:s||r,providers:a})}_removeOpenDialog(e,i){const o=this.openDialogs.indexOf(e);o>-1&&(this.openDialogs.splice(o,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((r,s)=>{r?s.setAttribute("aria-hidden",r):s.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),i&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(e){if(e.parentElement){const i=e.parentElement.children;for(let o=i.length-1;o>-1;o--){const r=i[o];r!==e&&"SCRIPT"!==r.nodeName&&"STYLE"!==r.nodeName&&!r.hasAttribute("aria-live")&&!r.hasAttribute("popover")&&(this._ariaHiddenElements.set(r,r.getAttribute("aria-hidden")),r.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function kS(t,n){let e=t.length;for(;e--;)n(t[e])}let Qde=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[g4],imports:[Zd,Ff,f4,Ff]})}return t})();const Jde=new Z("MATERIAL_ANIMATIONS");let _4=null;function b4(){return D(Jde,{optional:!0})?.animationsDisabled||"NoopAnimations"===D(Rm,{optional:!0})?"di-disabled":(_4??=D(bS).matchMedia("(prefers-reduced-motion)").matches,_4?"reduced-motion":"enabled")}function ci(){return"enabled"!==b4()}function Cr(...t){const n=df(t),e=function Zre(t,n){return"number"==typeof bx(t)?t.pop():n}(t,1/0),i=t;return i.length?1===i.length?ji(i[0]):Vd(e)(Kn(i,n)):Oi}function eue(t,n){}class nn{viewContainerRef;injector;id;role="dialog";panelClass="";hasBackdrop=!0;backdropClass="";disableClose=!1;closePredicate;width="";height="";minWidth;minHeight;maxWidth;maxHeight;position;data=null;direction;ariaDescribedBy=null;ariaLabelledBy=null;ariaLabel=null;ariaModal=!1;autoFocus="first-tabbable";restoreFocus=!0;delayFocusTrap=!0;scrollStrategy;closeOnNavigation=!0;enterAnimationDuration;exitAnimationDuration}const DS="mdc-dialog--open",v4="mdc-dialog--opening",y4="mdc-dialog--closing";let C4=(()=>{class t extends m4{_animationStateChanged=new we;_animationsEnabled=!ci();_actionSectionCount=0;_hostElement=this._elementRef.nativeElement;_enterAnimationDuration=this._animationsEnabled?x4(this._config.enterAnimationDuration)??150:0;_exitAnimationDuration=this._animationsEnabled?x4(this._config.exitAnimationDuration)??75:0;_animationTimer=null;_contentAttached(){super._contentAttached(),this._startOpenAnimation()}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._enterAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(w4,`${this._enterAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(v4,DS)),this._waitForAnimationToComplete(this._enterAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(DS),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._exitAnimationDuration}),this._hostElement.classList.remove(DS),this._animationsEnabled?(this._hostElement.style.setProperty(w4,`${this._exitAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(y4)),this._waitForAnimationToComplete(this._exitAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_updateActionSectionCount(e){this._actionSectionCount+=e,this._changeDetectorRef.markForCheck()}_finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._enterAnimationDuration)};_finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._exitAnimationDuration})};_clearAnimationClasses(){this._hostElement.classList.remove(v4,y4)}_waitForAnimationToComplete(e,i){null!==this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(i,e)}_requestAnimationFrame(e){this._ngZone.runOutsideAngular(()=>{"function"==typeof requestAnimationFrame?requestAnimationFrame(e):e()})}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(e){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:e})}ngOnDestroy(){super.ngOnDestroy(),null!==this._animationTimer&&clearTimeout(this._animationTimer)}attachComponentPortal(e){const i=super.attachComponentPortal(e);return i.location.nativeElement.classList.add("mat-mdc-dialog-component-host"),i}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275cmp=re({type:t,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:10,hostBindings:function(i,o){2&i&&(ur("id",o._config.id),$e("aria-modal",o._config.ariaModal)("role",o._config.role)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledByQueue[0])("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null),Ie("_mat-animation-noopable",!o._animationsEnabled)("mat-mdc-dialog-container-with-actions",o._actionSectionCount>0))},features:[be],decls:3,vars:0,consts:[[1,"mat-mdc-dialog-inner-container","mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1),it(2,eue,0,0,"ng-template",2),u()())},dependencies:[Xl],styles:['.mat-mdc-dialog-container{width:100%;height:100%;display:block;box-sizing:border-box;max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;outline:0}.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-max-width, 560px);min-width:var(--mat-dialog-container-min-width, 280px)}@media(max-width: 599px){.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-small-max-width, calc(100vw - 32px))}}.mat-mdc-dialog-inner-container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;opacity:0;transition:opacity linear var(--mat-dialog-transition-duration, 0ms);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mdc-dialog--closing .mat-mdc-dialog-inner-container{transition:opacity 75ms linear;transform:none}.mdc-dialog--open .mat-mdc-dialog-inner-container{opacity:1}._mat-animation-noopable .mat-mdc-dialog-inner-container{transition:none}.mat-mdc-dialog-surface{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;width:100%;height:100%;position:relative;overflow-y:auto;outline:0;transform:scale(0.8);transition:transform var(--mat-dialog-transition-duration, 0ms) cubic-bezier(0, 0, 0.2, 1);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;box-shadow:var(--mat-dialog-container-elevation-shadow, none);border-radius:var(--mat-dialog-container-shape, var(--mat-sys-corner-extra-large, 4px));background-color:var(--mat-dialog-container-color, var(--mat-sys-surface, white))}[dir=rtl] .mat-mdc-dialog-surface{text-align:right}.mdc-dialog--open .mat-mdc-dialog-surface,.mdc-dialog--closing .mat-mdc-dialog-surface{transform:none}._mat-animation-noopable .mat-mdc-dialog-surface{transition:none}.mat-mdc-dialog-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mat-mdc-dialog-title{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:var(--mat-dialog-headline-padding, 6px 24px 13px)}.mat-mdc-dialog-title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mat-mdc-dialog-title{text-align:right}.mat-mdc-dialog-container .mat-mdc-dialog-title{color:var(--mat-dialog-subhead-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-dialog-subhead-font, var(--mat-sys-headline-small-font, inherit));line-height:var(--mat-dialog-subhead-line-height, var(--mat-sys-headline-small-line-height, 1.5rem));font-size:var(--mat-dialog-subhead-size, var(--mat-sys-headline-small-size, 1rem));font-weight:var(--mat-dialog-subhead-weight, var(--mat-sys-headline-small-weight, 400));letter-spacing:var(--mat-dialog-subhead-tracking, var(--mat-sys-headline-small-tracking, 0.03125em))}.mat-mdc-dialog-content{display:block;flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;max-height:65vh}.mat-mdc-dialog-content>:first-child{margin-top:0}.mat-mdc-dialog-content>:last-child{margin-bottom:0}.mat-mdc-dialog-container .mat-mdc-dialog-content{color:var(--mat-dialog-supporting-text-color, var(--mat-sys-on-surface-variant, rgba(0, 0, 0, 0.6)));font-family:var(--mat-dialog-supporting-text-font, var(--mat-sys-body-medium-font, inherit));line-height:var(--mat-dialog-supporting-text-line-height, var(--mat-sys-body-medium-line-height, 1.5rem));font-size:var(--mat-dialog-supporting-text-size, var(--mat-sys-body-medium-size, 1rem));font-weight:var(--mat-dialog-supporting-text-weight, var(--mat-sys-body-medium-weight, 400));letter-spacing:var(--mat-dialog-supporting-text-tracking, var(--mat-sys-body-medium-tracking, 0.03125em))}.mat-mdc-dialog-container .mat-mdc-dialog-content{padding:var(--mat-dialog-content-padding, 20px 24px)}.mat-mdc-dialog-container-with-actions .mat-mdc-dialog-content{padding:var(--mat-dialog-with-actions-content-padding, 20px 24px 0)}.mat-mdc-dialog-container .mat-mdc-dialog-title+.mat-mdc-dialog-content{padding-top:0}.mat-mdc-dialog-actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;box-sizing:border-box;min-height:52px;margin:0;border-top:1px solid rgba(0,0,0,0);padding:var(--mat-dialog-actions-padding, 16px 24px);justify-content:var(--mat-dialog-actions-alignment, flex-end)}@media(forced-colors: active){.mat-mdc-dialog-actions{border-top-color:CanvasText}}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-start,.mat-mdc-dialog-actions[align=start]{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}.mat-mdc-dialog-component-host{display:contents}\n'],encapsulation:2})}return t})();const w4="--mat-dialog-transition-duration";function x4(t){return null==t?null:"number"==typeof t?t:t.endsWith("ms")?Of(t.substring(0,t.length-2)):t.endsWith("s")?1e3*Of(t.substring(0,t.length-1)):"0"===t?0:null}var Pb=function(t){return t[t.OPEN=0]="OPEN",t[t.CLOSING=1]="CLOSING",t[t.CLOSED=2]="CLOSED",t}(Pb||{});class Bt{_ref;_config;_containerInstance;componentInstance;componentRef=null;disableClose;id;_afterOpened=new oo(1);_beforeClosed=new oo(1);_result;_closeFallbackTimeout;_state=Pb.OPEN;_closeInteractionType;constructor(n,e,i){this._ref=n,this._config=e,this._containerInstance=i,this.disableClose=e.disableClose,this.id=n.id,n.addPanelClass("mat-mdc-dialog-panel"),i._animationStateChanged.pipe(Tn(o=>"opened"===o.state),Cn(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),i._animationStateChanged.pipe(Tn(o=>"closed"===o.state),Cn(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),n.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),Cr(this.backdropClick(),this.keydownEvents().pipe(Tn(o=>27===o.keyCode&&!this.disableClose&&!yr(o)))).subscribe(o=>{this.disableClose||(o.preventDefault(),S4(this,"keydown"===o.type?"keyboard":"mouse"))})}close(n){const e=this._config.closePredicate;e&&!e(n,this._config,this.componentInstance)||(this._result=n,this._containerInstance._animationStateChanged.pipe(Tn(i=>"closing"===i.state),Cn(1)).subscribe(i=>{this._beforeClosed.next(n),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),i.totalTime+100)}),this._state=Pb.CLOSING,this._containerInstance._startExitAnimation())}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(n){let e=this._ref.config.positionStrategy;return n&&(n.left||n.right)?n.left?e.left(n.left):e.right(n.right):e.centerHorizontally(),n&&(n.top||n.bottom)?n.top?e.top(n.top):e.bottom(n.bottom):e.centerVertically(),this._ref.updatePosition(),this}updateSize(n="",e=""){return this._ref.updateSize(n,e),this}addPanelClass(n){return this._ref.addPanelClass(n),this}removePanelClass(n){return this._ref.removePanelClass(n),this}getState(){return this._state}_finishDialogClose(){this._state=Pb.CLOSED,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}}function S4(t,n,e){return t._closeInteractionType=n,t.close(e)}const En=new Z("MatMdcDialogData"),k4=new Z("mat-mdc-dialog-default-options"),iue=new Z("mat-mdc-dialog-scroll-strategy",{providedIn:"root",factory:()=>{const t=D(He);return()=>dS(t)}});let Ot=(()=>{class t{_defaultOptions=D(k4,{optional:!0});_scrollStrategy=D(iue);_parentDialog=D(t,{optional:!0,skipSelf:!0});_idGenerator=D(ni);_injector=D(He);_dialog=D(g4);_animationsDisabled=ci();_openDialogsAtThisLevel=[];_afterAllClosedAtThisLevel=new me;_afterOpenedAtThisLevel=new me;dialogConfigClass=nn;_dialogRefConstructor;_dialogContainerType;_dialogDataToken;get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}afterAllClosed=ya(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(si(void 0)));constructor(){this._dialogRefConstructor=Bt,this._dialogContainerType=C4,this._dialogDataToken=En}open(e,i){let o;(i={...this._defaultOptions||new nn,...i}).id=i.id||this._idGenerator.getId("mat-mdc-dialog-"),i.scrollStrategy=i.scrollStrategy||this._scrollStrategy();const r=this._dialog.open(e,{...i,positionStrategy:Sb().centerHorizontally().centerVertically(),disableClose:!0,closePredicate:void 0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,disableAnimations:this._animationsDisabled||"0"===i.enterAnimationDuration?.toLocaleString()||"0"===i.exitAnimationDuration?.toString(),container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:i},{provide:jf,useValue:i}]},templateContext:()=>({dialogRef:o}),providers:(s,a,l)=>(o=new this._dialogRefConstructor(s,i,l),o.updatePosition(i?.position),[{provide:this._dialogContainerType,useValue:l},{provide:this._dialogDataToken,useValue:a.data},{provide:this._dialogRefConstructor,useValue:o}])});return o.componentRef=r.componentRef,o.componentInstance=r.componentInstance,this.openDialogs.push(o),this.afterOpened.next(o),o.afterClosed().subscribe(()=>{const s=this.openDialogs.indexOf(o);s>-1&&(this.openDialogs.splice(s,1),this.openDialogs.length||this._getAfterAllClosed().next())}),o}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(e){return this.openDialogs.find(i=>i.id===e)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(e){let i=e.length;for(;i--;)e[i].close()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),D4=(()=>{class t{dialogRef=D(Bt,{optional:!0});_elementRef=D(Re);_dialog=D(Ot);ariaLabel;type="button";dialogResult;_matDialogClose;constructor(){}ngOnInit(){this.dialogRef||(this.dialogRef=E4(this._elementRef,this._dialog.openDialogs))}ngOnChanges(e){const i=e._matDialogClose||e._matDialogCloseResult;i&&(this.dialogResult=i.currentValue)}_onButtonClick(e){S4(this.dialogRef,0===e.screenX&&0===e.screenY?"keyboard":"mouse",this.dialogResult)}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(i,o){1&i&&F("click",function(s){return o._onButtonClick(s)}),2&i&&$e("aria-label",o.ariaLabel||null)("type",o.type)},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],type:"type",dialogResult:[0,"mat-dialog-close","dialogResult"],_matDialogClose:[0,"matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],features:[_i]})}return t})(),M4=(()=>{class t{_dialogRef=D(Bt,{optional:!0});_elementRef=D(Re);_dialog=D(Ot);constructor(){}ngOnInit(){this._dialogRef||(this._dialogRef=E4(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then(()=>{this._onAdd()})}ngOnDestroy(){this._dialogRef?._containerInstance&&Promise.resolve().then(()=>{this._onRemove()})}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t})}return t})(),MS=(()=>{class t extends M4{id=D(ni).getId("mat-mdc-dialog-title-");_onAdd(){this._dialogRef._containerInstance?._addAriaLabelledBy?.(this.id)}_onRemove(){this._dialogRef?._containerInstance?._removeAriaLabelledBy?.(this.id)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","mat-dialog-title",""],["","matDialogTitle",""]],hostAttrs:[1,"mat-mdc-dialog-title","mdc-dialog__title"],hostVars:1,hostBindings:function(i,o){2&i&&ur("id",o.id)},inputs:{id:"id"},exportAs:["matDialogTitle"],features:[be]})}return t})(),Jd=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-mdc-dialog-content","mdc-dialog__content"],features:[fI([H3])]})}return t})(),T4=(()=>{class t extends M4{align;_onAdd(){this._dialogRef._containerInstance?._updateActionSectionCount?.(1)}_onRemove(){this._dialogRef._containerInstance?._updateActionSectionCount?.(-1)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-mdc-dialog-actions","mdc-dialog__actions"],hostVars:6,hostBindings:function(i,o){2&i&&Ie("mat-mdc-dialog-actions-align-start","start"===o.align)("mat-mdc-dialog-actions-align-center","center"===o.align)("mat-mdc-dialog-actions-align-end","end"===o.align)},inputs:{align:"align"},features:[be]})}return t})();function E4(t,n){let e=t.nativeElement.parentElement;for(;e&&!e.classList.contains("mat-mdc-dialog-container");)e=e.parentElement;return e?n.find(i=>i.id===e.id):null}let oue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[Ot],imports:[Qde,Zd,Ff,ii]})}return t})();var $o=function(t){return t[t.FADING_IN=0]="FADING_IN",t[t.VISIBLE=1]="VISIBLE",t[t.FADING_OUT=2]="FADING_OUT",t[t.HIDDEN=3]="HIDDEN",t}($o||{});class rue{_renderer;element;config;_animationForciblyDisabledThroughCss;state=$o.HIDDEN;constructor(n,e,i,o=!1){this._renderer=n,this.element=e,this.config=i,this._animationForciblyDisabledThroughCss=o}fadeOut(){this._renderer.fadeOutRipple(this)}}const P4=wS({passive:!0,capture:!0});class sue{_events=new Map;addHandler(n,e,i,o){const r=this._events.get(e);if(r){const s=r.get(i);s?s.add(o):r.set(i,new Set([o]))}else this._events.set(e,new Map([[i,new Set([o])]])),n.runOutsideAngular(()=>{document.addEventListener(e,this._delegateEventHandler,P4)})}removeHandler(n,e,i){const o=this._events.get(n);if(!o)return;const r=o.get(e);r&&(r.delete(i),0===r.size&&o.delete(e),0===o.size&&(this._events.delete(n),document.removeEventListener(n,this._delegateEventHandler,P4)))}_delegateEventHandler=n=>{const e=vr(n);e&&this._events.get(n.type)?.forEach((i,o)=>{(o===e||o.contains(e))&&i.forEach(r=>r.handleEvent(n))})}}const Ib={enterDuration:225,exitDuration:150},I4=wS({passive:!0,capture:!0}),O4=["mousedown","touchstart"],A4=["mouseup","mouseleave","touchend","touchcancel"];let lue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["ng-component"]],hostAttrs:["mat-ripple-style-loader",""],decls:0,vars:0,template:function(i,o){},styles:[".mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0, 0, 0.2, 1);transform:scale3d(0, 0, 0);background-color:var(--mat-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface) 10%, transparent))}@media(forced-colors: active){.mat-ripple-element{display:none}}.cdk-drag-preview .mat-ripple-element,.cdk-drag-placeholder .mat-ripple-element{display:none}\n"],encapsulation:2,changeDetection:0})}return t})();class Uf{_target;_ngZone;_platform;_containerElement;_triggerElement=null;_isPointerDown=!1;_activeRipples=new Map;_mostRecentTransientRipple=null;_lastTouchStartEvent;_pointerUpEventsRegistered=!1;_containerRect=null;static _eventManager=new sue;constructor(n,e,i,o,r){this._target=n,this._ngZone=e,this._platform=o,o.isBrowser&&(this._containerElement=Ps(i)),r&&r.get(zo).load(lue)}fadeInRipple(n,e,i={}){const o=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),r={...Ib,...i.animation};i.centered&&(n=o.left+o.width/2,e=o.top+o.height/2);const s=i.radius||function cue(t,n,e){const i=Math.max(Math.abs(t-e.left),Math.abs(t-e.right)),o=Math.max(Math.abs(n-e.top),Math.abs(n-e.bottom));return Math.sqrt(i*i+o*o)}(n,e,o),a=n-o.left,l=e-o.top,c=r.enterDuration,f=document.createElement("div");f.classList.add("mat-ripple-element"),f.style.left=a-s+"px",f.style.top=l-s+"px",f.style.height=2*s+"px",f.style.width=2*s+"px",null!=i.color&&(f.style.backgroundColor=i.color),f.style.transitionDuration=`${c}ms`,this._containerElement.appendChild(f);const m=window.getComputedStyle(f),_=m.transitionDuration,w="none"===m.transitionProperty||"0s"===_||"0s, 0s"===_||0===o.width&&0===o.height,k=new rue(this,f,i,w);f.style.transform="scale3d(1, 1, 1)",k.state=$o.FADING_IN,i.persistent||(this._mostRecentTransientRipple=k);let T=null;return!w&&(c||r.exitDuration)&&this._ngZone.runOutsideAngular(()=>{const I=()=>{T&&(T.fallbackTimer=null),clearTimeout(W),this._finishRippleTransition(k)},R=()=>this._destroyRipple(k),W=setTimeout(R,c+100);f.addEventListener("transitionend",I),f.addEventListener("transitioncancel",R),T={onTransitionEnd:I,onTransitionCancel:R,fallbackTimer:W}}),this._activeRipples.set(k,T),(w||!c)&&this._finishRippleTransition(k),k}fadeOutRipple(n){if(n.state===$o.FADING_OUT||n.state===$o.HIDDEN)return;const e=n.element,i={...Ib,...n.config.animation};e.style.transitionDuration=`${i.exitDuration}ms`,e.style.opacity="0",n.state=$o.FADING_OUT,(n._animationForciblyDisabledThroughCss||!i.exitDuration)&&this._finishRippleTransition(n)}fadeOutAll(){this._getActiveRipples().forEach(n=>n.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(n=>{n.config.persistent||n.fadeOut()})}setupTriggerEvents(n){const e=Ps(n);!this._platform.isBrowser||!e||e===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=e,O4.forEach(i=>{Uf._eventManager.addHandler(this._ngZone,i,e,this)}))}handleEvent(n){"mousedown"===n.type?this._onMousedown(n):"touchstart"===n.type?this._onTouchStart(n):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{A4.forEach(e=>{this._triggerElement.addEventListener(e,this,I4)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(n){n.state===$o.FADING_IN?this._startFadeOutTransition(n):n.state===$o.FADING_OUT&&this._destroyRipple(n)}_startFadeOutTransition(n){const e=n===this._mostRecentTransientRipple,{persistent:i}=n.config;n.state=$o.VISIBLE,!i&&(!e||!this._isPointerDown)&&n.fadeOut()}_destroyRipple(n){const e=this._activeRipples.get(n)??null;this._activeRipples.delete(n),this._activeRipples.size||(this._containerRect=null),n===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),n.state=$o.HIDDEN,null!==e&&(n.element.removeEventListener("transitionend",e.onTransitionEnd),n.element.removeEventListener("transitioncancel",e.onTransitionCancel),null!==e.fallbackTimer&&clearTimeout(e.fallbackTimer)),n.element.remove()}_onMousedown(n){const e=yS(n),i=this._lastTouchStartEvent&&Date.now(){!n.config.persistent&&(n.state===$o.VISIBLE||n.config.terminateOnPointerUp&&n.state===$o.FADING_IN)&&n.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){const n=this._triggerElement;n&&(O4.forEach(e=>Uf._eventManager.removeHandler(e,n,this)),this._pointerUpEventsRegistered&&(A4.forEach(e=>n.removeEventListener(e,this,I4)),this._pointerUpEventsRegistered=!1))}}const TS=new Z("mat-ripple-global-options");let eu=(()=>{class t{_elementRef=D(Re);_animationsDisabled=ci();color;unbounded=!1;centered=!1;radius=0;animation;get disabled(){return this._disabled}set disabled(e){e&&this.fadeOutAllNonPersistent(),this._disabled=e,this._setupTriggerEventsIfEnabled()}_disabled=!1;get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(e){this._trigger=e,this._setupTriggerEventsIfEnabled()}_trigger;_rippleRenderer;_globalOptions;_isInitialized=!1;constructor(){const e=D(_e),i=D(Yn),o=D(TS,{optional:!0}),r=D(He);this._globalOptions=o||{},this._rippleRenderer=new Uf(this,e,this._elementRef,i,r)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:{...this._globalOptions.animation,...this._animationsDisabled?{enterDuration:0,exitDuration:0}:{},...this.animation},terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(e,i=0,o){return"number"==typeof e?this._rippleRenderer.fadeInRipple(e,i,{...this.rippleConfig,...o}):this._rippleRenderer.fadeInRipple(0,0,{...this.rippleConfig,...e})}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(i,o){2&i&&Ie("mat-ripple-unbounded",o.unbounded)},inputs:{color:[0,"matRippleColor","color"],unbounded:[0,"matRippleUnbounded","unbounded"],centered:[0,"matRippleCentered","centered"],radius:[0,"matRippleRadius","radius"],animation:[0,"matRippleAnimation","animation"],disabled:[0,"matRippleDisabled","disabled"],trigger:[0,"matRippleTrigger","trigger"]},exportAs:["matRipple"]})}return t})();const due={capture:!0},uue=["focus","mousedown","mouseenter","touchstart"],ES="mat-ripple-loader-uninitialized",PS="mat-ripple-loader-class-name",R4="mat-ripple-loader-centered",Ob="mat-ripple-loader-disabled";let hue=(()=>{class t{_document=D(et);_animationsDisabled=ci();_globalRippleOptions=D(TS,{optional:!0});_platform=D(Yn);_ngZone=D(_e);_injector=D(He);_eventCleanups;_hosts=new Map;constructor(){const e=D(Lo).createRenderer(null,null);this._eventCleanups=this._ngZone.runOutsideAngular(()=>uue.map(i=>e.listen(this._document,i,this._onInteraction,due)))}ngOnDestroy(){const e=this._hosts.keys();for(const i of e)this.destroyRipple(i);this._eventCleanups.forEach(i=>i())}configureRipple(e,i){e.setAttribute(ES,this._globalRippleOptions?.namespace??""),(i.className||!e.hasAttribute(PS))&&e.setAttribute(PS,i.className||""),i.centered&&e.setAttribute(R4,""),i.disabled&&e.setAttribute(Ob,"")}setDisabled(e,i){const o=this._hosts.get(e);o?(o.target.rippleDisabled=i,!i&&!o.hasSetUpEvents&&(o.hasSetUpEvents=!0,o.renderer.setupTriggerEvents(e))):i?e.setAttribute(Ob,""):e.removeAttribute(Ob)}_onInteraction=e=>{const i=vr(e);if(i instanceof HTMLElement){const o=i.closest(`[${ES}="${this._globalRippleOptions?.namespace??""}"]`);o&&this._createRipple(o)}};_createRipple(e){if(!this._document||this._hosts.has(e))return;e.querySelector(".mat-ripple")?.remove();const i=this._document.createElement("span");i.classList.add("mat-ripple",e.getAttribute(PS)),e.append(i);const o=this._globalRippleOptions,r=this._animationsDisabled?0:o?.animation?.enterDuration??Ib.enterDuration,s=this._animationsDisabled?0:o?.animation?.exitDuration??Ib.exitDuration,a={rippleDisabled:this._animationsDisabled||o?.disabled||e.hasAttribute(Ob),rippleConfig:{centered:e.hasAttribute(R4),terminateOnPointerUp:o?.terminateOnPointerUp,animation:{enterDuration:r,exitDuration:s}}},l=new Uf(a,this._ngZone,i,this._platform,this._injector),c=!a.rippleDisabled;c&&l.setupTriggerEvents(e),this._hosts.set(e,{target:a,renderer:l,hasSetUpEvents:c}),e.removeAttribute(ES)}destroyRipple(e){const i=this._hosts.get(e);i&&(i.renderer._removeTriggerEvents(),this._hosts.delete(e))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),tu=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["structural-styles"]],decls:0,vars:0,template:function(i,o){},styles:['.mat-focus-indicator{position:relative}.mat-focus-indicator::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border-width:var(--mat-focus-indicator-border-width, 3px);border-style:var(--mat-focus-indicator-border-style, solid);border-color:var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus-visible::before{content:""}@media(forced-colors: active){html{--mat-focus-indicator-display: block}}\n'],encapsulation:2,changeDetection:0})}return t})();const fue=["mat-icon-button",""],pue=["*"],mue=new Z("MAT_BUTTON_CONFIG");function F4(t){return null==t?void 0:hr(t)}let N4=(()=>{class t{_elementRef=D(Re);_ngZone=D(_e);_animationsDisabled=ci();_config=D(mue,{optional:!0});_focusMonitor=D(ec);_cleanupClick;_renderer=D(Qn);_rippleLoader=D(hue);_isAnchor;_isFab=!1;color;get disableRipple(){return this._disableRipple}set disableRipple(e){this._disableRipple=e,this._updateRippleDisabled()}_disableRipple=!1;get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._updateRippleDisabled()}_disabled=!1;ariaDisabled;disabledInteractive;tabIndex;set _tabindex(e){this.tabIndex=e}constructor(){D(zo).load(tu);const e=this._elementRef.nativeElement;this._isAnchor="A"===e.tagName,this.disabledInteractive=this._config?.disabledInteractive??!1,this.color=this._config?.color??null,this._rippleLoader?.configureRipple(e,{className:"mat-mdc-button-ripple"})}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0),this._isAnchor&&this._setupAsAnchor()}ngOnDestroy(){this._cleanupClick?.(),this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement)}focus(e="program",i){e?this._focusMonitor.focusVia(this._elementRef.nativeElement,e,i):this._elementRef.nativeElement.focus(i)}_getAriaDisabled(){return null!=this.ariaDisabled?this.ariaDisabled:this._isAnchor?this.disabled||null:!(!this.disabled||!this.disabledInteractive)||null}_getDisabledAttribute(){return!(this.disabledInteractive||!this.disabled)||null}_updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementRef.nativeElement,this.disableRipple||this.disabled)}_getTabIndex(){return this._isAnchor&&this.disabled&&!this.disabledInteractive?-1:this.tabIndex}_setupAsAnchor(){this._cleanupClick=this._ngZone.runOutsideAngular(()=>this._renderer.listen(this._elementRef.nativeElement,"click",e=>{this.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}))}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,hostAttrs:[1,"mat-mdc-button-base"],hostVars:13,hostBindings:function(i,o){2&i&&($e("disabled",o._getDisabledAttribute())("aria-disabled",o._getAriaDisabled())("tabindex",o._getTabIndex()),Ze(o.color?"mat-"+o.color:""),Ie("mat-mdc-button-disabled",o.disabled)("mat-mdc-button-disabled-interactive",o.disabledInteractive)("mat-unthemed",!o.color)("_mat-animation-noopable",o._animationsDisabled))},inputs:{color:"color",disableRipple:[2,"disableRipple","disableRipple",De],disabled:[2,"disabled","disabled",De],ariaDisabled:[2,"aria-disabled","ariaDisabled",De],disabledInteractive:[2,"disabledInteractive","disabledInteractive",De],tabIndex:[2,"tabIndex","tabIndex",F4],_tabindex:[2,"tabindex","_tabindex",F4]}})}return t})(),Wo=(()=>{class t extends N4{constructor(){super(),this._rippleLoader.configureRipple(this._elementRef.nativeElement,{centered:!0})}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["button","mat-icon-button",""],["a","mat-icon-button",""],["button","matIconButton",""],["a","matIconButton",""]],hostAttrs:[1,"mdc-icon-button","mat-mdc-icon-button"],exportAs:["matButton","matAnchor"],features:[be],attrs:fue,ngContentSelectors:pue,decls:4,vars:0,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(i,o){1&i&&(yi(),ca(0,"span",0),Pt(1),ca(2,"span",1)(3,"span",2))},styles:['.mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%));flex-shrink:0;text-align:center;width:var(--mat-icon-button-state-layer-size, 40px);height:var(--mat-icon-button-state-layer-size, 40px);padding:calc(calc(var(--mat-icon-button-state-layer-size, 40px) - var(--mat-icon-button-icon-size, 24px)) / 2);font-size:var(--mat-icon-button-icon-size, 24px);color:var(--mat-icon-button-icon-color, var(--mat-sys-on-surface-variant));-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-icon-button:focus-visible>.mat-focus-indicator::before{content:"";border-radius:inherit}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface-variant) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-icon-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-icon-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-icon-button-touch-target-size, 48px);display:var(--mat-icon-button-touch-target-display, block);left:50%;width:var(--mat-icon-button-touch-target-size, 48px);transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-icon-button-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mat-icon-button-icon-size, 24px);height:var(--mat-icon-button-icon-size, 24px);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%))}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}\n',"@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}\n"],encapsulation:2,changeDetection:0})}return t})(),IS=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ii]})}return t})();const gue=["matButton",""],_ue=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],bue=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"],L4=new Map([["text",["mat-mdc-button"]],["filled",["mdc-button--unelevated","mat-mdc-unelevated-button"]],["elevated",["mdc-button--raised","mat-mdc-raised-button"]],["outlined",["mdc-button--outlined","mat-mdc-outlined-button"]],["tonal",["mat-tonal-button"]]]);let Pn=(()=>{class t extends N4{get appearance(){return this._appearance}set appearance(e){this.setAppearance(e||this._config?.defaultAppearance||"text")}_appearance=null;constructor(){super();const e=function vue(t){return t.hasAttribute("mat-raised-button")?"elevated":t.hasAttribute("mat-stroked-button")?"outlined":t.hasAttribute("mat-flat-button")?"filled":t.hasAttribute("mat-button")?"text":null}(this._elementRef.nativeElement);e&&this.setAppearance(e)}setAppearance(e){if(e===this._appearance)return;const i=this._elementRef.nativeElement.classList,o=this._appearance?L4.get(this._appearance):null,r=L4.get(e);o&&i.remove(...o),i.add(...r),this._appearance=e}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["button","matButton",""],["a","matButton",""],["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""],["a","mat-button",""],["a","mat-raised-button",""],["a","mat-flat-button",""],["a","mat-stroked-button",""]],hostAttrs:[1,"mdc-button"],inputs:{appearance:[0,"matButton","appearance"]},exportAs:["matButton","matAnchor"],features:[be],attrs:gue,ngContentSelectors:bue,decls:7,vars:4,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(i,o){1&i&&(yi(_ue),ca(0,"span",0),Pt(1),vs(2,"span",1),Pt(3,1),Ol(),Pt(4,2),ca(5,"span",2)(6,"span",3)),2&i&&Ie("mdc-button__ripple",!o._isFab)("mdc-fab__ripple",o._isFab)},styles:['.mat-mdc-button-base{text-decoration:none}.mat-mdc-button-base .mat-icon{min-height:fit-content;flex-shrink:0}@media(hover: none){.mat-mdc-button-base:hover>span.mat-mdc-button-persistent-ripple::before{opacity:0}}.mdc-button{-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0);padding:0 8px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__label{position:relative}.mat-mdc-button{padding:0 var(--mat-button-text-horizontal-padding, 12px);height:var(--mat-button-text-container-height, 40px);font-family:var(--mat-button-text-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-text-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-text-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-text-label-text-transform);font-weight:var(--mat-button-text-label-text-weight, var(--mat-sys-label-large-weight))}.mat-mdc-button,.mat-mdc-button .mdc-button__ripple{border-radius:var(--mat-button-text-container-shape, var(--mat-sys-corner-full))}.mat-mdc-button:not(:disabled){color:var(--mat-button-text-label-text-color, var(--mat-sys-primary))}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-text-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-button-text-with-icon-horizontal-padding, 16px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-button-text-icon-spacing, 8px);margin-left:var(--mat-button-text-icon-offset, -4px)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-button-text-icon-offset, -4px);margin-left:var(--mat-button-text-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-text-icon-offset, -4px);margin-left:var(--mat-button-text-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-text-icon-spacing, 8px);margin-left:var(--mat-button-text-icon-offset, -4px)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-button-text-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-text-state-layer-color, var(--mat-sys-primary))}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-text-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-text-touch-target-size, 48px);display:var(--mat-button-text-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-unelevated-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-filled-container-height, 40px);font-family:var(--mat-button-filled-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-filled-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-filled-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-filled-label-text-transform);font-weight:var(--mat-button-filled-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-filled-horizontal-padding, 24px)}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-button-filled-icon-spacing, 8px);margin-left:var(--mat-button-filled-icon-offset, -8px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-button-filled-icon-offset, -8px);margin-left:var(--mat-button-filled-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-filled-icon-offset, -8px);margin-left:var(--mat-button-filled-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-filled-icon-spacing, 8px);margin-left:var(--mat-button-filled-icon-offset, -8px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-button-filled-ripple-color, color-mix(in srgb, var(--mat-sys-on-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-filled-state-layer-color, var(--mat-sys-on-primary))}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-filled-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-unelevated-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-unelevated-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-unelevated-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-filled-touch-target-size, 48px);display:var(--mat-button-filled-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mat-button-filled-label-text-color, var(--mat-sys-on-primary));background-color:var(--mat-button-filled-container-color, var(--mat-sys-primary))}.mat-mdc-unelevated-button,.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mat-button-filled-container-shape, var(--mat-sys-corner-full))}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-filled-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-filled-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);box-shadow:var(--mat-button-protected-container-elevation-shadow, var(--mat-sys-level1));height:var(--mat-button-protected-container-height, 40px);font-family:var(--mat-button-protected-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-protected-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-protected-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-protected-label-text-transform);font-weight:var(--mat-button-protected-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-protected-horizontal-padding, 24px)}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-button-protected-icon-spacing, 8px);margin-left:var(--mat-button-protected-icon-offset, -8px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-button-protected-icon-offset, -8px);margin-left:var(--mat-button-protected-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-protected-icon-offset, -8px);margin-left:var(--mat-button-protected-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-protected-icon-spacing, 8px);margin-left:var(--mat-button-protected-icon-offset, -8px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-button-protected-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-protected-state-layer-color, var(--mat-sys-primary))}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-protected-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-raised-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-raised-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-raised-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-protected-touch-target-size, 48px);display:var(--mat-button-protected-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-raised-button:not(:disabled){color:var(--mat-button-protected-label-text-color, var(--mat-sys-primary));background-color:var(--mat-button-protected-container-color, var(--mat-sys-surface))}.mat-mdc-raised-button,.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mat-button-protected-container-shape, var(--mat-sys-corner-full))}@media(hover: hover){.mat-mdc-raised-button:hover{box-shadow:var(--mat-button-protected-hover-container-elevation-shadow, var(--mat-sys-level2))}}.mat-mdc-raised-button:focus{box-shadow:var(--mat-button-protected-focus-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mat-button-protected-pressed-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-protected-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-protected-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mat-button-protected-disabled-container-elevation-shadow, var(--mat-sys-level0))}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-outlined-container-height, 40px);font-family:var(--mat-button-outlined-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-outlined-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-outlined-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-outlined-label-text-transform);font-weight:var(--mat-button-outlined-label-text-weight, var(--mat-sys-label-large-weight));border-radius:var(--mat-button-outlined-container-shape, var(--mat-sys-corner-full));border-width:var(--mat-button-outlined-outline-width, 1px);padding:0 var(--mat-button-outlined-horizontal-padding, 24px)}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-button-outlined-icon-spacing, 8px);margin-left:var(--mat-button-outlined-icon-offset, -8px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-button-outlined-icon-offset, -8px);margin-left:var(--mat-button-outlined-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-outlined-icon-offset, -8px);margin-left:var(--mat-button-outlined-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-outlined-icon-spacing, 8px);margin-left:var(--mat-button-outlined-icon-offset, -8px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-button-outlined-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-outlined-state-layer-color, var(--mat-sys-primary))}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-outlined-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-outlined-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-outlined-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-outlined-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-outlined-touch-target-size, 48px);display:var(--mat-button-outlined-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-outlined-button:not(:disabled){color:var(--mat-button-outlined-label-text-color, var(--mat-sys-primary));border-color:var(--mat-button-outlined-outline-color, var(--mat-sys-outline))}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-outlined-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:var(--mat-button-outlined-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-tonal-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-tonal-container-height, 40px);font-family:var(--mat-button-tonal-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-tonal-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-tonal-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-tonal-label-text-transform);font-weight:var(--mat-button-tonal-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-tonal-horizontal-padding, 24px)}.mat-tonal-button:not(:disabled){color:var(--mat-button-tonal-label-text-color, var(--mat-sys-on-secondary-container));background-color:var(--mat-button-tonal-container-color, var(--mat-sys-secondary-container))}.mat-tonal-button,.mat-tonal-button .mdc-button__ripple{border-radius:var(--mat-button-tonal-container-shape, var(--mat-sys-corner-full))}.mat-tonal-button[disabled],.mat-tonal-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-tonal-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-tonal-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-tonal-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-tonal-button>.mat-icon{margin-right:var(--mat-button-tonal-icon-spacing, 8px);margin-left:var(--mat-button-tonal-icon-offset, -8px)}[dir=rtl] .mat-tonal-button>.mat-icon{margin-right:var(--mat-button-tonal-icon-offset, -8px);margin-left:var(--mat-button-tonal-icon-spacing, 8px)}.mat-tonal-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-tonal-icon-offset, -8px);margin-left:var(--mat-button-tonal-icon-spacing, 8px)}[dir=rtl] .mat-tonal-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-tonal-icon-spacing, 8px);margin-left:var(--mat-button-tonal-icon-offset, -8px)}.mat-tonal-button .mat-ripple-element{background-color:var(--mat-button-tonal-ripple-color, color-mix(in srgb, var(--mat-sys-on-secondary-container) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-tonal-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-tonal-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-tonal-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-tonal-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-tonal-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-tonal-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-tonal-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-tonal-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-tonal-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-tonal-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-tonal-touch-target-size, 48px);display:var(--mat-button-tonal-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button,.mat-tonal-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before,.mat-tonal-button .mat-mdc-button-ripple,.mat-tonal-button .mat-mdc-button-persistent-ripple,.mat-tonal-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-tonal-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before,.mat-tonal-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-button .mat-icon,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-unelevated-button .mat-icon,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-raised-button .mat-icon,.mat-mdc-outlined-button .mdc-button__label,.mat-mdc-outlined-button .mat-icon,.mat-tonal-button .mdc-button__label,.mat-tonal-button .mat-icon{z-index:1;position:relative}.mat-mdc-button .mat-focus-indicator,.mat-mdc-unelevated-button .mat-focus-indicator,.mat-mdc-raised-button .mat-focus-indicator,.mat-mdc-outlined-button .mat-focus-indicator,.mat-tonal-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-unelevated-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-raised-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-outlined-button:focus-visible>.mat-focus-indicator::before,.mat-tonal-button:focus-visible>.mat-focus-indicator::before{content:"";border-radius:inherit}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable,.mat-tonal-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon,.mat-tonal-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px}.mat-mdc-unelevated-button .mat-focus-indicator::before,.mat-tonal-button .mat-focus-indicator::before,.mat-mdc-raised-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px)*-1)}\n',"@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}\n"],encapsulation:2,changeDetection:0})}return t})(),B4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[IS,ii]})}return t})();function wue(t,n){if(1&t){const e=oe();h(0,"div",1)(1,"button",2),F("click",function(){return j(e),U(v().action())}),p(2),u()()}if(2&t){const e=v();d(2),E(" ",e.data.action," ")}}const xue=["label"];function Sue(t,n){}const kue=Math.pow(2,31)-1;class Ab{_overlayRef;instance;containerInstance;_afterDismissed=new me;_afterOpened=new me;_onAction=new me;_durationTimeoutId;_dismissedByAction=!1;constructor(n,e){this._overlayRef=e,this.containerInstance=n,n._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(n){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(n,kue))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}}const OS=new Z("MatSnackBarData");class Rb{politeness="polite";announcementMessage="";viewContainerRef;duration=0;panelClass;direction;data=null;horizontalPosition="center";verticalPosition="bottom"}let V4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"]})}return t})(),H4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"]})}return t})(),j4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"]})}return t})(),U4=(()=>{class t{snackBarRef=D(Ab);data=D(OS);constructor(){}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions",""],["matButton","","matSnackBarAction","",3,"click"]],template:function(i,o){1&i&&(h(0,"div",0),p(1),u(),x(2,wue,3,1,"div",1)),2&i&&(d(),E(" ",o.data.message,"\n"),d(),S(o.hasAction?2:-1))},dependencies:[Pn,V4,H4,j4],styles:[".mat-mdc-simple-snack-bar{display:flex}.mat-mdc-simple-snack-bar .mat-mdc-snack-bar-label{max-height:50vh;overflow:auto}\n"],encapsulation:2,changeDetection:0})}return t})();const AS="_mat-snack-bar-enter",RS="_mat-snack-bar-exit";let z4=(()=>{class t extends bb{_ngZone=D(_e);_elementRef=D(Re);_changeDetectorRef=D(Jt);_platform=D(Yn);_animationsDisabled=ci();snackBarConfig=D(Rb);_document=D(et);_trackedModals=new Set;_enterFallback;_exitFallback;_injector=D(He);_announceDelay=150;_announceTimeoutId;_destroyed=!1;_portalOutlet;_onAnnounce=new me;_onExit=new me;_onEnter=new me;_animationState="void";_live;_label;_role;_liveElementId=D(ni).getId("mat-snack-bar-container-live-");constructor(){super();const e=this.snackBarConfig;this._live="assertive"!==e.politeness||e.announcementMessage?"off"===e.politeness?"off":"polite":"assertive",this._platform.FIREFOX&&("polite"===this._live&&(this._role="status"),"assertive"===this._live&&(this._role="alert"))}attachComponentPortal(e){this._assertNotAttached();const i=this._portalOutlet.attachComponentPortal(e);return this._afterPortalAttached(),i}attachTemplatePortal(e){this._assertNotAttached();const i=this._portalOutlet.attachTemplatePortal(e);return this._afterPortalAttached(),i}attachDomPortal=e=>{this._assertNotAttached();const i=this._portalOutlet.attachDomPortal(e);return this._afterPortalAttached(),i};onAnimationEnd(e){e===RS?this._completeExit():e===AS&&(clearTimeout(this._enterFallback),this._ngZone.run(()=>{this._onEnter.next(),this._onEnter.complete()}))}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce(),this._animationsDisabled?Vi(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(AS)))},{injector:this._injector}):(clearTimeout(this._enterFallback),this._enterFallback=setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-snack-bar-fallback-visible"),this.onAnimationEnd(AS)},200)))}exit(){return this._destroyed?ae(void 0):(this._ngZone.run(()=>{this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._elementRef.nativeElement.setAttribute("mat-exit",""),clearTimeout(this._announceTimeoutId),this._animationsDisabled?Vi(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(RS)))},{injector:this._injector}):(clearTimeout(this._exitFallback),this._exitFallback=setTimeout(()=>this.onAnimationEnd(RS),200))}),this._onExit)}ngOnDestroy(){this._destroyed=!0,this._clearFromModals(),this._completeExit()}_completeExit(){clearTimeout(this._exitFallback),queueMicrotask(()=>{this._onExit.next(),this._onExit.complete()})}_afterPortalAttached(){const e=this._elementRef.nativeElement,i=this.snackBarConfig.panelClass;i&&(Array.isArray(i)?i.forEach(s=>e.classList.add(s)):e.classList.add(i)),this._exposeToModals();const o=this._label.nativeElement,r="mdc-snackbar__label";o.classList.toggle(r,!o.querySelector(`.${r}`))}_exposeToModals(){const e=this._liveElementId,i=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal="true"]');for(let o=0;o{const i=e.getAttribute("aria-owns");if(i){const o=i.replace(this._liveElementId,"").trim();o.length>0?e.setAttribute("aria-owns",o):e.removeAttribute("aria-owns")}}),this._trackedModals.clear()}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{if(this._destroyed)return;const e=this._elementRef.nativeElement,i=e.querySelector("[aria-hidden]"),o=e.querySelector("[aria-live]");if(i&&o){let r=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&i.contains(document.activeElement)&&(r=document.activeElement),i.removeAttribute("aria-hidden"),o.appendChild(i),r?.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-snack-bar-container"]],viewQuery:function(i,o){if(1&i&&ot(Xl,7)(xue,7),2&i){let r;he(r=fe())&&(o._portalOutlet=r.first),he(r=fe())&&(o._label=r.first)}},hostAttrs:[1,"mdc-snackbar","mat-mdc-snack-bar-container"],hostVars:6,hostBindings:function(i,o){1&i&&F("animationend",function(s){return o.onAnimationEnd(s.animationName)})("animationcancel",function(s){return o.onAnimationEnd(s.animationName)}),2&i&&Ie("mat-snack-bar-container-enter","visible"===o._animationState)("mat-snack-bar-container-exit","hidden"===o._animationState)("mat-snack-bar-container-animations-enabled",!o._animationsDisabled)},features:[be],decls:6,vars:3,consts:[["label",""],[1,"mdc-snackbar__surface","mat-mdc-snackbar-surface"],[1,"mat-mdc-snack-bar-label"],["aria-hidden","true"],["cdkPortalOutlet",""]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2,0)(3,"div",3),it(4,Sue,0,0,"ng-template",4),u(),B(5,"div"),u()()),2&i&&(d(5),$e("aria-live",o._live)("role",o._role)("id",o._liveElementId))},dependencies:[Xl],styles:["@keyframes _mat-snack-bar-enter{from{transform:scale(0.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes _mat-snack-bar-exit{from{opacity:1}to{opacity:0}}.mat-mdc-snack-bar-container{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:8px}.mat-mdc-snack-bar-handset .mat-mdc-snack-bar-container{width:100vw}.mat-snack-bar-container-animations-enabled{opacity:0}.mat-snack-bar-container-animations-enabled.mat-snack-bar-fallback-visible{opacity:1}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-enter{animation:_mat-snack-bar-enter 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-exit{animation:_mat-snack-bar-exit 75ms cubic-bezier(0.4, 0, 1, 1) forwards}.mat-mdc-snackbar-surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;padding-left:0;padding-right:8px}[dir=rtl] .mat-mdc-snackbar-surface{padding-right:0;padding-left:8px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{min-width:344px;max-width:672px}.mat-mdc-snack-bar-handset .mat-mdc-snackbar-surface{width:100%;min-width:0}@media(forced-colors: active){.mat-mdc-snackbar-surface{outline:solid 1px}}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{color:var(--mat-snack-bar-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-snack-bar-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-snack-bar-container-color, var(--mat-sys-inverse-surface))}.mdc-snackbar__label{width:100%;flex-grow:1;box-sizing:border-box;margin:0;padding:14px 8px 14px 16px}[dir=rtl] .mdc-snackbar__label{padding-left:8px;padding-right:16px}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-family:var(--mat-snack-bar-supporting-text-font, var(--mat-sys-body-medium-font));font-size:var(--mat-snack-bar-supporting-text-size, var(--mat-sys-body-medium-size));font-weight:var(--mat-snack-bar-supporting-text-weight, var(--mat-sys-body-medium-weight));line-height:var(--mat-snack-bar-supporting-text-line-height, var(--mat-sys-body-medium-line-height))}.mat-mdc-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled).mat-unthemed{color:var(--mat-snack-bar-button-color, var(--mat-sys-inverse-primary))}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){--mat-button-text-state-layer-color: currentColor;--mat-button-text-ripple-color: currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}\n"],encapsulation:2})}return t})();const $4=new Z("mat-snack-bar-default-options",{providedIn:"root",factory:()=>new Rb});let W4=(()=>{class t{_live=D(d4);_injector=D(He);_breakpointObserver=D(n4);_parentSnackBar=D(t,{optional:!0,skipSelf:!0});_defaultConfig=D($4);_animationsDisabled=ci();_snackBarRefAtThisLevel=null;simpleSnackBarComponent=U4;snackBarContainerComponent=z4;handsetCssClass="mat-mdc-snack-bar-handset";get _openedSnackBarRef(){const e=this._parentSnackBar;return e?e._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(e){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=e:this._snackBarRefAtThisLevel=e}constructor(){}openFromComponent(e,i){return this._attach(e,i)}openFromTemplate(e,i){return this._attach(e,i)}open(e,i="",o){const r={...this._defaultConfig,...o};return r.data={message:e,action:i},r.announcementMessage===e&&(r.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,r)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(e,i){const r=He.create({parent:i&&i.viewContainerRef&&i.viewContainerRef.injector||this._injector,providers:[{provide:Rb,useValue:i}]}),s=new Kd(this.snackBarContainerComponent,i.viewContainerRef,r),a=e.attach(s);return a.instance.snackBarConfig=i,a.instance}_attach(e,i){const o={...new Rb,...this._defaultConfig,...i},r=this._createOverlay(o),s=this._attachSnackBarContainer(r,o),a=new Ab(s,r);if(e instanceof Ti){const l=new Yl(e,null,{$implicit:o.data,snackBarRef:a});a.instance=s.attachTemplatePortal(l)}else{const l=this._createInjector(o,a),c=new Kd(e,void 0,l),f=s.attachComponentPortal(c);a.instance=f.instance}return this._breakpointObserver.observe("(max-width: 599.98px) and (orientation: portrait)").pipe(fn(r.detachments())).subscribe(l=>{r.overlayElement.classList.toggle(this.handsetCssClass,l.matches)}),o.announcementMessage&&s._onAnnounce.subscribe(()=>{this._live.announce(o.announcementMessage,o.politeness)}),this._animateSnackBar(a,o),this._openedSnackBarRef=a,this._openedSnackBarRef}_animateSnackBar(e,i){e.afterDismissed().subscribe(()=>{this._openedSnackBarRef==e&&(this._openedSnackBarRef=null),i.announcementMessage&&this._live.clear()}),i.duration&&i.duration>0&&e.afterOpened().subscribe(()=>e._dismissAfter(i.duration)),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{e.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):e.containerInstance.enter()}_createOverlay(e){const i=new Vf;i.direction=e.direction;const o=Sb(),r="rtl"===e.direction,s="left"===e.horizontalPosition||"start"===e.horizontalPosition&&!r||"end"===e.horizontalPosition&&r,a=!s&&"center"!==e.horizontalPosition;return s?o.left("0"):a?o.right("0"):o.centerHorizontally(),"top"===e.verticalPosition?o.top("0"):o.bottom("0"),i.positionStrategy=o,i.disableAnimations=this._animationsDisabled,Xd(this._injector,i)}_createInjector(e,i){return He.create({parent:e&&e.viewContainerRef&&e.viewContainerRef.injector||this._injector,providers:[{provide:Ab,useValue:i},{provide:OS,useValue:e.data}]})}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Due=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[W4],imports:[Zd,Ff,B4,U4,ii]})}return t})();function zf(...t){const n=rL(t),{args:e,keys:i}=SL(t),o=new Ft(r=>{const{length:s}=e;if(!s)return void r.complete();const a=new Array(s);let l=s,c=s;for(let f=0;f{m||(m=!0,c--),a[f]=g},()=>l--,void 0,()=>{(!l||!m)&&(c||r.next(i?DL(i,a):a),r.complete())}))}});return n?o.pipe(kL(n)):o}function G4(t={}){const{connector:n=()=>new me,resetOnError:e=!0,resetOnComplete:i=!0,resetOnRefCountZero:o=!0}=t;return r=>{let s,a,l,c=0,f=!1,m=!1;const g=()=>{a?.unsubscribe(),a=void 0},_=()=>{g(),s=l=void 0,f=m=!1},w=()=>{const k=s;_(),k?.unsubscribe()};return Mn((k,T)=>{c++,!m&&!f&&g();const I=l=l??n();T.add(()=>{c--,0===c&&!m&&!f&&(a=FS(w,o))}),I.subscribe(T),!s&&c>0&&(s=new Ru({next:R=>I.next(R),error:R=>{m=!0,g(),a=FS(_,e,R),I.error(R)},complete:()=>{f=!0,g(),a=FS(_,i),I.complete()}}),ji(k).subscribe(s))})(r)}}function FS(t,n,...e){if(!0===n)return void t();if(!1===n)return;const i=new Ru({next:()=>{i.unsubscribe(),t()}});return ji(n(...e)).subscribe(i)}function q4(t){return Error(`Unable to find icon with the name "${t}"`)}function K4(t){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${t}".`)}function Y4(t){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${t}".`)}class tc{url;svgText;options;svgElement=null;constructor(n,e,i){this.url=n,this.svgText=e,this.options=i}}let Tue=(()=>{class t{_httpClient;_sanitizer;_errorHandler;_document;_svgIconConfigs=new Map;_iconSetConfigs=new Map;_cachedIconsByUrl=new Map;_inProgressUrlFetches=new Map;_fontCssClassesByAlias=new Map;_resolvers=[];_defaultFontSetClass=["material-icons","mat-ligature-font"];constructor(e,i,o,r){this._httpClient=e,this._sanitizer=i,this._errorHandler=r,this._document=o}addSvgIcon(e,i,o){return this.addSvgIconInNamespace("",e,i,o)}addSvgIconLiteral(e,i,o){return this.addSvgIconLiteralInNamespace("",e,i,o)}addSvgIconInNamespace(e,i,o,r){return this._addSvgIconConfig(e,i,new tc(o,null,r))}addSvgIconResolver(e){return this._resolvers.push(e),this}addSvgIconLiteralInNamespace(e,i,o,r){const s=this._sanitizer.sanitize(bi.HTML,o);if(!s)throw Y4(o);const a=Qd(s);return this._addSvgIconConfig(e,i,new tc("",a,r))}addSvgIconSet(e,i){return this.addSvgIconSetInNamespace("",e,i)}addSvgIconSetLiteral(e,i){return this.addSvgIconSetLiteralInNamespace("",e,i)}addSvgIconSetInNamespace(e,i,o){return this._addSvgIconSetConfig(e,new tc(i,null,o))}addSvgIconSetLiteralInNamespace(e,i,o){const r=this._sanitizer.sanitize(bi.HTML,i);if(!r)throw Y4(i);const s=Qd(r);return this._addSvgIconSetConfig(e,new tc("",s,o))}registerFontClassAlias(e,i=e){return this._fontCssClassesByAlias.set(e,i),this}classNameForFontAlias(e){return this._fontCssClassesByAlias.get(e)||e}setDefaultFontSetClass(...e){return this._defaultFontSetClass=e,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(e){const i=this._sanitizer.sanitize(bi.RESOURCE_URL,e);if(!i)throw K4(e);const o=this._cachedIconsByUrl.get(i);return o?ae(Fb(o)):this._loadSvgIconFromConfig(new tc(e,null)).pipe(ai(r=>this._cachedIconsByUrl.set(i,r)),Se(r=>Fb(r)))}getNamedSvgIcon(e,i=""){const o=X4(i,e);let r=this._svgIconConfigs.get(o);if(r)return this._getSvgFromConfig(r);if(r=this._getIconConfigFromResolvers(i,e),r)return this._svgIconConfigs.set(o,r),this._getSvgFromConfig(r);const s=this._iconSetConfigs.get(i);return s?this._getSvgFromIconSetConfigs(e,s):mr(q4(o))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(e){return e.svgText?ae(Fb(this._svgElementFromConfig(e))):this._loadSvgIconFromConfig(e).pipe(Se(i=>Fb(i)))}_getSvgFromIconSetConfigs(e,i){const o=this._extractIconWithNameFromAnySet(e,i);return o?ae(o):zf(i.filter(s=>!s.svgText).map(s=>this._loadSvgIconSetFromConfig(s).pipe(Ui(a=>{const c=`Loading icon set URL: ${this._sanitizer.sanitize(bi.RESOURCE_URL,s.url)} failed: ${a.message}`;return this._errorHandler.handleError(new Error(c)),ae(null)})))).pipe(Se(()=>{const s=this._extractIconWithNameFromAnySet(e,i);if(!s)throw q4(e);return s}))}_extractIconWithNameFromAnySet(e,i){for(let o=i.length-1;o>=0;o--){const r=i[o];if(r.svgText&&r.svgText.toString().indexOf(e)>-1){const s=this._svgElementFromConfig(r),a=this._extractSvgIconFromSet(s,e,r.options);if(a)return a}}return null}_loadSvgIconFromConfig(e){return this._fetchIcon(e).pipe(ai(i=>e.svgText=i),Se(()=>this._svgElementFromConfig(e)))}_loadSvgIconSetFromConfig(e){return e.svgText?ae(null):this._fetchIcon(e).pipe(ai(i=>e.svgText=i))}_extractSvgIconFromSet(e,i,o){const r=e.querySelector(`[id="${i}"]`);if(!r)return null;const s=r.cloneNode(!0);if(s.removeAttribute("id"),"svg"===s.nodeName.toLowerCase())return this._setSvgAttributes(s,o);if("symbol"===s.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(s),o);const a=this._svgElementFromString(Qd(""));return a.appendChild(s),this._setSvgAttributes(a,o)}_svgElementFromString(e){const i=this._document.createElement("DIV");i.innerHTML=e;const o=i.querySelector("svg");if(!o)throw Error(" tag not found");return o}_toSvgElement(e){const i=this._svgElementFromString(Qd("")),o=e.attributes;for(let r=0;rQd(c)),B_(()=>this._inProgressUrlFetches.delete(s)),G4());return this._inProgressUrlFetches.set(s,l),l}_addSvgIconConfig(e,i,o){return this._svgIconConfigs.set(X4(e,i),o),this}_addSvgIconSetConfig(e,i){const o=this._iconSetConfigs.get(e);return o?o.push(i):this._iconSetConfigs.set(e,[i]),this}_svgElementFromConfig(e){if(!e.svgElement){const i=this._svgElementFromString(e.svgText);this._setSvgAttributes(i,e.options),e.svgElement=i}return e.svgElement}_getIconConfigFromResolvers(e,i){for(let o=0;o{const t=D(et),n=t?t.location:null;return{getPathname:()=>n?n.pathname+n.search:""}}}),Z4=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],Aue=Z4.map(t=>`[${t}]`).join(", "),Rue=/^url\(['"]?#(.*?)['"]?\)$/;let We=(()=>{class t{_elementRef=D(Re);_iconRegistry=D(Tue);_location=D(Oue);_errorHandler=D(sl);_defaultColor;get color(){return this._color||this._defaultColor}set color(e){this._color=e}_color;inline=!1;get svgIcon(){return this._svgIcon}set svgIcon(e){e!==this._svgIcon&&(e?this._updateSvgIcon(e):this._svgIcon&&this._clearSvgElement(),this._svgIcon=e)}_svgIcon;get fontSet(){return this._fontSet}set fontSet(e){const i=this._cleanupFontValue(e);i!==this._fontSet&&(this._fontSet=i,this._updateFontIconClasses())}_fontSet;get fontIcon(){return this._fontIcon}set fontIcon(e){const i=this._cleanupFontValue(e);i!==this._fontIcon&&(this._fontIcon=i,this._updateFontIconClasses())}_fontIcon;_previousFontSetClass=[];_previousFontIconClass;_svgName=null;_svgNamespace=null;_previousPath;_elementsWithExternalReferences;_currentIconFetch=pt.EMPTY;constructor(){const e=D(new Yh("aria-hidden"),{optional:!0}),i=D(Iue,{optional:!0});i&&(i.color&&(this.color=this._defaultColor=i.color),i.fontSet&&(this.fontSet=i.fontSet)),e||this._elementRef.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(e){if(!e)return["",""];const i=e.split(":");switch(i.length){case 1:return["",i[0]];case 2:return i;default:throw Error(`Invalid icon name: "${e}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const e=this._elementsWithExternalReferences;if(e&&e.size){const i=this._location.getPathname();i!==this._previousPath&&(this._previousPath=i,this._prependPathToReferences(i))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(e){this._clearSvgElement();const i=this._location.getPathname();this._previousPath=i,this._cacheChildrenWithExternalReferences(e),this._prependPathToReferences(i),this._elementRef.nativeElement.appendChild(e)}_clearSvgElement(){const e=this._elementRef.nativeElement;let i=e.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();i--;){const o=e.childNodes[i];(1!==o.nodeType||"svg"===o.nodeName.toLowerCase())&&o.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const e=this._elementRef.nativeElement,i=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(o=>o.length>0);this._previousFontSetClass.forEach(o=>e.classList.remove(o)),i.forEach(o=>e.classList.add(o)),this._previousFontSetClass=i,this.fontIcon!==this._previousFontIconClass&&!i.includes("mat-ligature-font")&&(this._previousFontIconClass&&e.classList.remove(this._previousFontIconClass),this.fontIcon&&e.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(e){return"string"==typeof e?e.trim().split(" ")[0]:e}_prependPathToReferences(e){const i=this._elementsWithExternalReferences;i&&i.forEach((o,r)=>{o.forEach(s=>{r.setAttribute(s.name,`url('${e}#${s.value}')`)})})}_cacheChildrenWithExternalReferences(e){const i=e.querySelectorAll(Aue),o=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let r=0;r{const a=i[r],l=a.getAttribute(s),c=l?l.match(Rue):null;if(c){let f=o.get(a);f||(f=[],o.set(a,f)),f.push({name:s,value:c[1]})}})}_updateSvgIcon(e){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),e){const[i,o]=this._splitIconName(e);i&&(this._svgNamespace=i),o&&(this._svgName=o),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(o,i).pipe(Cn(1)).subscribe(r=>this._setSvgElement(r),r=>{this._errorHandler.handleError(new Error(`Error retrieving icon ${i}:${o}! ${r.message}`))})}}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:10,hostBindings:function(i,o){2&i&&($e("data-mat-icon-type",o._usingFontIcon()?"font":"svg")("data-mat-icon-name",o._svgName||o.fontIcon)("data-mat-icon-namespace",o._svgNamespace||o.fontSet)("fontIcon",o._usingFontIcon()?o.fontIcon:null),Ze(o.color?"mat-"+o.color:""),Ie("mat-icon-inline",o.inline)("mat-icon-no-color","primary"!==o.color&&"accent"!==o.color&&"warn"!==o.color))},inputs:{color:"color",inline:[2,"inline","inline",De],svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],ngContentSelectors:Pue,decls:1,vars:0,template:function(i,o){1&i&&(yi(),Pt(0))},styles:["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color, inherit)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}\n"],encapsulation:2,changeDetection:0})}return t})(),Fue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ii]})}return t})();function NS(t,n,e){let i,o=!1;return t&&"object"==typeof t?({bufferSize:i=1/0,windowTime:n=1/0,refCount:o=!1,scheduler:e}=t):i=t??1/0,G4({connector:()=>new oo(i,n,e),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:o})}class LS{}let Q4=(()=>{class t{handle(e){return e.key}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class Nb{}let J4=(()=>{class t extends Nb{compile(e,i){return e}compileTranslations(e,i){return e}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class $f{}let e5=(()=>{class t extends $f{getTranslation(e){return ae({})}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();function Lb(t,n){if(t===n)return!0;if(null===t||null===n)return!1;if(t!=t&&n!=n)return!0;const e=typeof t;let o;if(e==typeof n&&"object"==e)if(Array.isArray(t)){if(!Array.isArray(n))return!1;if((o=t.length)==n.length){for(let r=0;rVb(n));if(Kr(t)){const n={};return Object.keys(t).forEach(e=>{n[e]=Vb(t[e])}),n}return t}function BS(t,n){if(!Wf(t))return Vb(n);const e=Vb(t);return Wf(e)&&Wf(n)&&Object.keys(n).forEach(i=>{Kr(n[i])?i in t?e[i]=BS(t[i],n[i]):Object.assign(e,{[i]:n[i]}):Object.assign(e,{[i]:n[i]})}),e}function n5(t,n){const e=n.split(".");n="";do{n+=e.shift();const i=!e.length;if(Sa(t)){if(Kr(t)&&t5(t[n])&&(Kr(t[n])||nc(t[n])||i)){t=t[n],n="";continue}if(nc(t)){const o=parseInt(n,10);if(t5(t[o])&&(Kr(t[o])||nc(t[o])||i)){t=t[o],n="";continue}}}i?t=void 0:n+="."}while(e.length);return t}class Hb{}let i5=(()=>{class t extends Hb{templateMatcher=/{{\s?([^{}\s]*)\s?}}/g;interpolate(e,i){return Bb(e)?this.interpolateString(e,i):function Nue(t){return"function"==typeof t}(e)?this.interpolateFunction(e,i):void 0}interpolateFunction(e,i){return e(i)}interpolateString(e,i){return i?e.replace(this.templateMatcher,(o,r)=>{const s=this.getInterpolationReplacement(i,r);return void 0!==s?s:o}):e}getInterpolationReplacement(e,i){return this.formatValue(n5(e,i))}formatValue(e){return Bb(e)?e:"number"==typeof e||"boolean"==typeof e?e.toString():null===e?"null":nc(e)?e.join(", "):Wf(e)?"function"==typeof e.toString&&e.toString!==Object.prototype.toString?e.toString():JSON.stringify(e):void 0}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),VS=(()=>{class t{_onTranslationChange=new me;_onLangChange=new me;_onFallbackLangChange=new me;fallbackLang=null;currentLang;translations={};languages=[];getTranslations(e){return this.translations[e]}setTranslations(e,i,o){this.translations[e]=o&&this.hasTranslationFor(e)?BS(this.translations[e],i):i,this.addLanguages([e]),this._onTranslationChange.next({lang:e,translations:this.getTranslations(e)})}getLanguages(){return this.languages}getCurrentLang(){return this.currentLang}getFallbackLang(){return this.fallbackLang}setFallbackLang(e,i=!0){this.fallbackLang=e,i&&this._onFallbackLangChange.next({lang:e,translations:this.translations[e]})}setCurrentLang(e,i=!0){this.currentLang=e,i&&this._onLangChange.next({lang:e,translations:this.translations[e]})}get onTranslationChange(){return this._onTranslationChange.asObservable()}get onLangChange(){return this._onLangChange.asObservable()}get onFallbackLangChange(){return this._onFallbackLangChange.asObservable()}addLanguages(e){this.languages=Array.from(new Set([...this.languages,...e]))}hasTranslationFor(e){return typeof this.translations[e]<"u"}deleteTranslations(e){delete this.translations[e]}getTranslation(e){let i=this.getValue(this.currentLang,e);return void 0===i&&null!=this.fallbackLang&&this.fallbackLang!==this.currentLang&&(i=this.getValue(this.fallbackLang,e)),i}getValue(e,i){return n5(this.getTranslations(e),i)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const HS=new Z("TRANSLATE_CONFIG"),Gf=t=>jr(t)?t:ae(t);let Go=(()=>{class t{loadingTranslations;pending=!1;_translationRequests={};lastUseLanguage=null;currentLoader=D($f);compiler=D(Nb);parser=D(Hb);missingTranslationHandler=D(LS);store=D(VS);extend=!1;get onTranslationChange(){return this.store.onTranslationChange}get onLangChange(){return this.store.onLangChange}get onFallbackLangChange(){return this.store.onFallbackLangChange}get onDefaultLangChange(){return this.store.onFallbackLangChange}constructor(){const e={extend:!1,fallbackLang:null,...D(HS,{optional:!0})};e.lang&&this.use(e.lang),e.fallbackLang&&this.setFallbackLang(e.fallbackLang),e.extend&&(this.extend=!0)}setFallbackLang(e){this.getFallbackLang()||this.store.setFallbackLang(e,!1);const i=this.loadOrExtendLanguage(e);return jr(i)?(i.pipe(Cn(1)).subscribe({next:()=>{this.store.setFallbackLang(e)},error:()=>{}}),i):(this.store.setFallbackLang(e),ae(this.store.getTranslations(e)))}use(e){this.lastUseLanguage=e,this.getCurrentLang()||this.store.setCurrentLang(e,!1);const i=this.loadOrExtendLanguage(e);return jr(i)?(i.pipe(Cn(1)).subscribe({next:()=>{this.changeLang(e)},error:()=>{}}),i):(this.changeLang(e),ae(this.store.getTranslations(e)))}loadOrExtendLanguage(e){if(!this.store.hasTranslationFor(e)||this.extend)return this._translationRequests[e]=this._translationRequests[e]||this.loadAndCompileTranslations(e),this._translationRequests[e]}changeLang(e){e===this.lastUseLanguage&&this.store.setCurrentLang(e)}getCurrentLang(){return this.store.getCurrentLang()}loadAndCompileTranslations(e){this.pending=!0;const i=this.currentLoader.getTranslation(e).pipe(NS(1),Cn(1));return this.loadingTranslations=i.pipe(Se(o=>this.compiler.compileTranslations(o,e)),NS(1),Cn(1)),this.loadingTranslations.subscribe({next:o=>{this.store.setTranslations(e,o,this.extend),this.pending=!1},error:o=>{this.pending=!1}}),i}setTranslation(e,i,o=!1){const r=this.compiler.compileTranslations(i,e);this.store.setTranslations(e,r,o||this.extend)}getLangs(){return this.store.getLanguages()}addLangs(e){this.store.addLanguages(e)}getParsedResultForKey(e,i){const o=this.getTextToInterpolate(e);if(Sa(o))return this.runInterpolation(o,i);const r=this.missingTranslationHandler.handle({key:e,translateService:this,...void 0!==i&&{interpolateParams:i}});return void 0!==r?r:e}getFallbackLang(){return this.store.getFallbackLang()}getTextToInterpolate(e){return this.store.getTranslation(e)}runInterpolation(e,i){if(Sa(e))return nc(e)?this.runInterpolationOnArray(e,i):Kr(e)?this.runInterpolationOnDict(e,i):this.parser.interpolate(e,i)}runInterpolationOnArray(e,i){return e.map(o=>this.runInterpolation(o,i))}runInterpolationOnDict(e,i){const o={};for(const r in e){const s=this.runInterpolation(e[r],i);void 0!==s&&(o[r]=s)}return o}getParsedResult(e,i){return e instanceof Array?this.getParsedResultForArray(e,i):this.getParsedResultForKey(e,i)}getParsedResultForArray(e,i){const o={};let r=!1;for(const a of e)o[a]=this.getParsedResultForKey(a,i),r=r||jr(o[a]);return r?zf(e.map(a=>Gf(o[a]))).pipe(Se(a=>{const l={};return a.forEach((c,f)=>{l[e[f]]=c}),l})):o}get(e,i){if(!Sa(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return this.pending?this.loadingTranslations.pipe(cf(()=>Gf(this.getParsedResult(e,i)))):Gf(this.getParsedResult(e,i))}getStreamOnTranslationChange(e,i){if(!Sa(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return Ts(ya(()=>this.get(e,i)),this.onTranslationChange.pipe(tn(()=>{const o=this.getParsedResult(e,i);return Gf(o)})))}stream(e,i){if(!Sa(e)||!e.length)throw new Error('Parameter "key" required');return Ts(ya(()=>this.get(e,i)),this.onLangChange.pipe(tn(()=>{const o=this.getParsedResult(e,i);return Gf(o)})))}instant(e,i){if(!Sa(e)||0===e.length)throw new Error('Parameter "key" is required and cannot be empty');const o=this.getParsedResult(e,i);return jr(o)?Array.isArray(e)?e.reduce((r,s)=>(r[s]=s,r),{}):e:o}set(e,i,o=this.getCurrentLang()){this.store.setTranslations(o,function Lue(t,n,e){return BS(t,function Bue(t,n){return t.split(".").reduceRight((e,i)=>({[i]:e}),n)}(n,e))}(this.store.getTranslations(o),e,Bb(i)?this.compiler.compile(i,o):this.compiler.compileTranslations(i,o)),!1)}reloadLang(e){return this.resetLang(e),this.loadAndCompileTranslations(e)}resetLang(e){delete this._translationRequests[e],this.store.deleteTranslations(e)}static getBrowserLang(){if(typeof window>"u"||!window.navigator)return;const e=this.getBrowserCultureLang();return e?e.split(/[-_]/)[0]:void 0}static getBrowserCultureLang(){if(!(typeof window>"u"||typeof window.navigator>"u"))return window.navigator.languages?window.navigator.languages[0]:window.navigator.language||window.navigator.browserLanguage||window.navigator.userLanguage}getBrowserLang(){return t.getBrowserLang()}getBrowserCultureLang(){return t.getBrowserCultureLang()}get defaultLang(){return this.getFallbackLang()}get currentLang(){return this.store.getCurrentLang()}get langs(){return this.store.getLanguages()}setDefaultLang(e){return this.setFallbackLang(e)}getDefaultLang(){return this.getFallbackLang()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),xe=(()=>{class t{translate=D(Go);_ref=D(Jt);value="";lastKey=null;lastParams=[];onTranslationChange;onLangChange;onFallbackLangChange;updateValue(e,i,o){const r=s=>{this.value=void 0!==s?s:e,this.lastKey=e,this._ref.markForCheck()};if(o){const s=this.translate.getParsedResult(e,i);jr(s)?s.subscribe(r):r(s)}this.translate.get(e,i).subscribe(r)}transform(e,...i){if(!e||!e.length)return e;if(Lb(e,this.lastKey)&&Lb(i,this.lastParams))return this.value;let o;if(Sa(i[0])&&i.length)if(Bb(i[0])&&i[0].length){const r=i[0].replace(/(')?([a-zA-Z0-9_]+)(')?(\s)?:/g,'"$2":').replace(/:(\s)?(')(.*?)(')/g,':"$3"');try{o=JSON.parse(r)}catch(s){throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${i[0]}`)}}else Kr(i[0])&&(o=i[0]);return this.lastKey=e,this.lastParams=i,this.updateValue(e,o),this._dispose(),this.onTranslationChange||(this.onTranslationChange=this.translate.onTranslationChange.subscribe(r=>{(this.lastKey&&r.lang===this.translate.getCurrentLang()||r.lang===this.translate.getFallbackLang())&&(this.lastKey=null,this.updateValue(e,o,r.translations))})),this.onLangChange||(this.onLangChange=this.translate.onLangChange.subscribe(r=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,o,r.translations))})),this.onFallbackLangChange||(this.onFallbackLangChange=this.translate.onFallbackLangChange.subscribe(()=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,o))})),this.value}_dispose(){typeof this.onTranslationChange<"u"&&(this.onTranslationChange.unsubscribe(),this.onTranslationChange=void 0),typeof this.onLangChange<"u"&&(this.onLangChange.unsubscribe(),this.onLangChange=void 0),typeof this.onFallbackLangChange<"u"&&(this.onFallbackLangChange.unsubscribe(),this.onFallbackLangChange=void 0)}ngOnDestroy(){this._dispose()}static \u0275fac=function(i){return new(i||t)};static \u0275pipe=Hi({name:"translate",type:t,pure:!1});static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();function o5(t){return{provide:$f,useClass:t}}function r5(t){return{provide:Nb,useClass:t}}function s5(t){return{provide:Hb,useClass:t}}function a5(t){return{provide:LS,useClass:t}}function jb(t={},n){const e=[];return t.loader&&e.push(t.loader),t.compiler&&e.push(t.compiler),t.parser&&e.push(t.parser),t.missingTranslationHandler&&e.push(t.missingTranslationHandler),n&&e.push(VS),(t.useDefaultLang||t.defaultLanguage)&&(console.warn("The `useDefaultLang` and `defaultLanguage` options are deprecated. Please use `fallbackLang` instead."),!0===t.useDefaultLang&&t.defaultLanguage&&(t.fallbackLang=t.defaultLanguage)),e.push({provide:HS,useValue:{fallbackLang:t.fallbackLang??null,lang:t.lang,extend:t.extend??!1}}),e.push({provide:Go,useClass:Go,deps:[VS,$f,Nb,Hb,LS,HS]}),e}let l5=(()=>{class t{static forRoot(e={}){return{ngModule:t,providers:[...jb({compiler:r5(J4),parser:s5(i5),loader:o5(e5),missingTranslationHandler:a5(Q4),...e},!0)]}}static forChild(e={}){return{ngModule:t,providers:[...jb(e,e.isolate??!1)]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function Vue(t,n){if(1&t&&(h(0,"div",0)(1,"mat-icon",5),p(2),u()()),2&t){const e=v();d(),C("inline",!0),d(),M(e.config.icon)}}function Hue(t,n){if(1&t&&(h(0,"div",2),p(1),b(2,"translate"),b(3,"translate"),u()),2&t){const e=v();d(),gt(" ",y(2,2,"common.error")," ",pe(3,4,e.config.smallText,e.config.smallTextTranslationParams)," ")}}var Ub=function(t){return t.Error="error",t.Done="done",t.Warning="warning",t}(Ub||{}),zb=function(t){return t.Red="red-background",t.Green="green-background",t.Yellow="yellow-background",t}(zb||{});let jue=(()=>{class t{constructor(e,i){this.snackbarRef=i,this.config=e}close(){this.snackbarRef.dismiss()}static{this.\u0275fac=function(i){return new(i||t)(O(OS),O(Ab))}}static{this.\u0275cmp=re({type:t,selectors:[["app-snack-bar"]],standalone:!1,decls:9,vars:8,consts:[[1,"icon-container"],[1,"text-container"],[1,"second-line"],[1,"close-button-separator"],[1,"close-button",3,"click"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"div"),x(1,Vue,3,2,"div",0),h(2,"div",1),p(3),b(4,"translate"),x(5,Hue,4,7,"div",2),u(),B(6,"div",3),h(7,"mat-icon",4),F("click",function(){return o.close()}),p(8,"close"),u()()),2&i&&(Ze("main-container "+o.config.color),d(),S(o.config.icon?1:-1),d(2),E(" ",pe(4,5,o.config.text,o.config.textTranslationParams)," "),d(2),S(o.config.smallText?5:-1))},dependencies:[We,xe],styles:['.cursor-pointer[_ngcontent-%COMP%], .close-button[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.main-container[_ngcontent-%COMP%]{width:100%;display:flex;color:#fff;padding:15px;border-radius:5px}.red-background[_ngcontent-%COMP%]{background-color:#ea0606}.green-background[_ngcontent-%COMP%]{background-color:#1fb11f}.yellow-background[_ngcontent-%COMP%]{background-color:#f90}.icon-container[_ngcontent-%COMP%]{margin-right:10px;position:relative;top:1px}.text-container[_ngcontent-%COMP%]{flex-grow:1;margin-right:10px;font-size:1rem;word-break:break-word}.text-container[_ngcontent-%COMP%] .second-line[_ngcontent-%COMP%]{font-size:.8rem;opacity:.9}.close-button-separator[_ngcontent-%COMP%]{width:1px;margin-right:10px;background-color:#0000004d}.close-button[_ngcontent-%COMP%]{opacity:.7}.close-button[_ngcontent-%COMP%]:hover{opacity:1}mat-icon[_ngcontent-%COMP%]{position:relative;top:1px;-webkit-user-select:none;user-select:none}']})}}return t})(),ct=(()=>{class t{constructor(e){this.snackBar=e,this.lastWasTemporaryError=!1}showError(e,i=null,o=!1,r=null,s=null){e=Qe(e),r=r?Qe(r):null,this.lastWasTemporaryError=o,this.show(e.translatableErrorMsg,i,r?r.translatableErrorMsg:null,s,Ub.Error,zb.Red,15e3)}showWarning(e,i=null){this.lastWasTemporaryError=!1,this.show(e,i,null,null,Ub.Warning,zb.Yellow,15e3)}showDone(e,i=null){this.lastWasTemporaryError=!1,this.show(e,i,null,null,Ub.Done,zb.Green,5e3)}closeCurrent(){this.snackBar.dismiss()}closeCurrentIfTemporaryError(){this.lastWasTemporaryError&&this.snackBar.dismiss()}show(e,i,o,r,s,a,l){this.snackBar.openFromComponent(jue,{duration:l,panelClass:"snackbar-container",data:{text:e,textTranslationParams:i,smallText:o,smallTextTranslationParams:r,icon:s,color:a}})}static{this.\u0275fac=function(i){return new(i||t)(ce(W4))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const rt={maxShortListElements:5,maxFullListElements:40,connectionRetryDelay:5e3,languages:[{code:"en",name:"English",iconName:"en.png"},{code:"es",name:"Espa\xf1ol",iconName:"es.png"},{code:"de",name:"Deutsch",iconName:"de.png"},{code:"pt",name:"Portugu\xeas (Brazil)",iconName:"pt.png"}],defaultLanguage:"en",smallModalWidth:"480px",mediumModalWidth:"640px",largeModalWidth:"900px",vpn:{hardcodedIpWhileDeveloping:!1}};class Uue{constructor(n){Object.assign(this,n)}}let $b=(()=>{class t{constructor(e){this.translate=e,this.currentLanguage=new oo(1),this.languages=new oo(1),this.storageKey="lang",this.languagesInternal=[],this.settingsLoaded=!1}loadLanguageSettings(){if(this.settingsLoaded)return;this.settingsLoaded=!0;const e=[];rt.languages.forEach(i=>{const o=new Uue(i);this.languagesInternal.push(o),e.push(o.code)}),this.languages.next(this.languagesInternal),this.translate.addLangs(e),this.translate.setDefaultLang(rt.defaultLanguage),this.translate.onLangChange.subscribe(i=>this.onLanguageChanged(i)),this.loadCurrentLanguage()}changeLanguage(e){this.translate.use(e)}onLanguageChanged(e){this.currentLanguage.next(this.languagesInternal.find(i=>i.code===e.lang)),localStorage.setItem(this.storageKey,e.lang)}loadCurrentLanguage(){let e=localStorage.getItem(this.storageKey);e=e||rt.defaultLanguage,setTimeout(()=>this.translate.use(e),16)}static{this.\u0275fac=function(i){return new(i||t)(ce(Go))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const zue={url:"",deserializer:t=>JSON.parse(t.data),serializer:t=>JSON.stringify(t)};class jS extends ay{constructor(n,e){if(super(),this._socket=null,n instanceof Ft)this.destination=e,this.source=n;else{const i=this._config=Object.assign({},zue);if(this._output=new me,"string"==typeof n)i.url=n;else for(const o in n)n.hasOwnProperty(o)&&(i[o]=n[o]);if(!i.WebSocketCtor&&WebSocket)i.WebSocketCtor=WebSocket;else if(!i.WebSocketCtor)throw new Error("no WebSocket constructor can be found");this.destination=new oo}}lift(n){const e=new jS(this._config,this.destination);return e.operator=n,e.source=this,e}_resetState(){this._socket=null,this.source||(this.destination=new oo),this._output=new me}multiplex(n,e,i){const o=this;return new Ft(r=>{try{o.next(n())}catch(a){r.error(a)}const s=o.subscribe({next:a=>{try{i(a)&&r.next(a)}catch(l){r.error(l)}},error:a=>r.error(a),complete:()=>r.complete()});return()=>{try{o.next(e())}catch(a){r.error(a)}s.unsubscribe()}})}_connectSocket(){const{WebSocketCtor:n,protocol:e,url:i,binaryType:o}=this._config,r=this._output;let s=null;try{s=e?new n(i,e):new n(i),this._socket=s,o&&(this._socket.binaryType=o)}catch(l){return void r.error(l)}const a=new pt(()=>{this._socket=null,s&&1===s.readyState&&s.close()});s.onopen=l=>{const{_socket:c}=this;if(!c)return s.close(),void this._resetState();const{openObserver:f}=this._config;f&&f.next(l);const m=this.destination;this.destination=Bp.create(g=>{if(1===s.readyState)try{const{serializer:_}=this._config;s.send(_(g))}catch(_){this.destination.error(_)}},g=>{const{closingObserver:_}=this._config;_&&_.next(void 0),g&&g.code?s.close(g.code,g.reason):r.error(new TypeError("WebSocketSubject.error must be called with an object with an error code, and an optional reason: { code: number, reason: string }")),this._resetState()},()=>{const{closingObserver:g}=this._config;g&&g.next(void 0),s.close(),this._resetState()}),m&&m instanceof oo&&a.add(m.subscribe(this.destination))},s.onerror=l=>{this._resetState(),r.error(l)},s.onclose=l=>{s===this._socket&&this._resetState();const{closeObserver:c}=this._config;c&&c.next(l),l.wasClean?r.complete():r.error(l)},s.onmessage=l=>{try{const{deserializer:c}=this._config;r.next(c(l))}catch(c){r.error(c)}}}_subscribe(n){const{source:e}=this;return e?e.subscribe(n):(this._socket||this._connectSocket(),this._output.subscribe(n),n.add(()=>{const{_socket:i}=this;0===this._output.observers.length&&(i&&(1===i.readyState||0===i.readyState)&&i.close(),this._resetState())}),n)}unsubscribe(){const{_socket:n}=this;n&&(1===n.readyState||0===n.readyState)&&n.close(),this._resetState(),super.unsubscribe()}}var qf=function(t){return t.Json="json",t.Text="text",t}(qf||{}),Wb=function(t){return t.Json="json",t}(Wb||{});class qo{constructor(n){this.responseType=qf.Json,this.requestType=Wb.Json,this.ignoreAuth=!1,Object.assign(this,n)}}let zi=(()=>{class t{constructor(e,i,o){this.http=e,this.router=i,this.ngZone=o,this.apiPrefix="api/",this.wsApiPrefix="api/"}get(e,i=null){return this.request("GET",e,{},i)}post(e,i={},o=null){return this.getCsrf().pipe(Ur(),It(r=>((o=o||new qo).csrfToken=r,this.request("POST",e,i,o))))}put(e,i={},o=null){return this.getCsrf().pipe(Ur(),It(r=>((o=o||new qo).csrfToken=r,this.request("PUT",e,i,o))))}delete(e,i=null){return this.getCsrf().pipe(Ur(),It(o=>((i=i||new qo).csrfToken=o,this.request("DELETE",e,{},i))))}getCsrf(){return this.get("csrf").pipe(Se(e=>e.csrf_token))}ws(e,i={}){const s=function Wue(t){return new jS(t)}((location.protocol.startsWith("https")?"wss://":"ws://")+location.host+"/"+this.wsApiPrefix+e);return s.next(i),s}request(e,i,o,r){return o=o||{},r=r||new qo,i.startsWith("/")&&(i=i.substr(1,i.length-1)),this.http.request(e,this.apiPrefix+i,{...this.getRequestOptions(r),responseType:r.responseType,withCredentials:!0,body:this.getPostBody(o,r)}).pipe(Se(s=>this.successHandler(s)),Ui(s=>this.errorHandler(s,r)))}getRequestOptions(e){const i={};return i.headers=new Uo,e.requestType===Wb.Json&&(i.headers=i.headers.append("Content-Type","application/json")),e.csrfToken&&(i.headers=i.headers.append("X-CSRF-Token",e.csrfToken)),i}getPostBody(e,i){if(i.requestType===Wb.Json)return JSON.stringify(e);const o=new FormData;return Object.keys(e).forEach(r=>o.append(r,e[r])),o}successHandler(e){if("string"==typeof e&&"manager token is null"===e)throw new Error(e);return e}errorHandler(e,i){if(!i.ignoreAuth){if(401===e.status){const o=i.vpnKeyForAuth?["vpnlogin",i.vpnKeyForAuth]:["login"];this.ngZone.run(()=>this.router.navigate(o,{replaceUrl:!0}))}if(e.error&&"string"==typeof e.error&&e.error.includes("change password")){const o=i.vpnKeyForAuth?["vpnlogin",i.vpnKeyForAuth]:["login"];this.ngZone.run(()=>this.router.navigate(o,{replaceUrl:!0}))}}return mr(Qe(e))}static{this.\u0275fac=function(i){return new(i||t)(ce(ba),ce(vt),ce(_e))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const Gue=["determinateSpinner"];function que(t,n){if(1&t&&(rl(),h(0,"svg",11),B(1,"circle",12),u()),2&t){const e=v();$e("viewBox",e._viewBox()),d(),Md("stroke-dasharray",e._strokeCircumference(),"px")("stroke-dashoffset",e._strokeCircumference()/2,"px")("stroke-width",e._circleStrokeWidth(),"%"),$e("r",e._circleRadius())}}const Kue=new Z("mat-progress-spinner-default-options",{providedIn:"root",factory:()=>({diameter:c5})}),c5=100;let so=(()=>{class t{_elementRef=D(Re);_noopAnimations;get color(){return this._color||this._defaultColor}set color(e){this._color=e}_color;_defaultColor="primary";_determinateCircle;constructor(){const e=D(Kue),i=b4(),o=this._elementRef.nativeElement;this._noopAnimations="di-disabled"===i&&!!e&&!e._forceAnimations,this.mode="mat-spinner"===o.nodeName.toLowerCase()?"indeterminate":"determinate",!this._noopAnimations&&"reduced-motion"===i&&o.classList.add("mat-progress-spinner-reduced-motion"),e&&(e.color&&(this.color=this._defaultColor=e.color),e.diameter&&(this.diameter=e.diameter),e.strokeWidth&&(this.strokeWidth=e.strokeWidth))}mode;get value(){return"determinate"===this.mode?this._value:0}set value(e){this._value=Math.max(0,Math.min(100,e||0))}_value=0;get diameter(){return this._diameter}set diameter(e){this._diameter=e||0}_diameter=c5;get strokeWidth(){return this._strokeWidth??this.diameter/10}set strokeWidth(e){this._strokeWidth=e||0}_strokeWidth;_circleRadius(){return(this.diameter-10)/2}_viewBox(){const e=2*this._circleRadius()+this.strokeWidth;return`0 0 ${e} ${e}`}_strokeCircumference(){return 2*Math.PI*this._circleRadius()}_strokeDashOffset(){return"determinate"===this.mode?this._strokeCircumference()*(100-this._value)/100:null}_circleStrokeWidth(){return this.strokeWidth/this.diameter*100}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-progress-spinner"],["mat-spinner"]],viewQuery:function(i,o){if(1&i&&ot(Gue,5),2&i){let r;he(r=fe())&&(o._determinateCircle=r.first)}},hostAttrs:["role","progressbar","tabindex","-1",1,"mat-mdc-progress-spinner","mdc-circular-progress"],hostVars:18,hostBindings:function(i,o){2&i&&($e("aria-valuemin",0)("aria-valuemax",100)("aria-valuenow","determinate"===o.mode?o.value:null)("mode",o.mode),Ze("mat-"+o.color),Md("width",o.diameter,"px")("height",o.diameter,"px")("--mat-progress-spinner-size",o.diameter+"px")("--mat-progress-spinner-active-indicator-width",o.diameter+"px"),Ie("_mat-animation-noopable",o._noopAnimations)("mdc-circular-progress--indeterminate","indeterminate"===o.mode))},inputs:{color:"color",mode:"mode",value:[2,"value","value",hr],diameter:[2,"diameter","diameter",hr],strokeWidth:[2,"strokeWidth","strokeWidth",hr]},exportAs:["matProgressSpinner"],decls:14,vars:11,consts:[["circle",""],["determinateSpinner",""],["aria-hidden","true",1,"mdc-circular-progress__determinate-container"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__determinate-circle-graphic"],["cx","50%","cy","50%",1,"mdc-circular-progress__determinate-circle"],["aria-hidden","true",1,"mdc-circular-progress__indeterminate-container"],[1,"mdc-circular-progress__spinner-layer"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-left"],[3,"ngTemplateOutlet"],[1,"mdc-circular-progress__gap-patch"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-right"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__indeterminate-circle-graphic"],["cx","50%","cy","50%"]],template:function(i,o){if(1&i&&(it(0,que,2,8,"ng-template",null,0,Rl),h(2,"div",2,1),rl(),h(4,"svg",3),B(5,"circle",4),u()(),Gy(),h(6,"div",5)(7,"div",6)(8,"div",7),dr(9,8),u(),h(10,"div",9),dr(11,8),u(),h(12,"div",10),dr(13,8),u()()()),2&i){const r=Hn(1);d(4),$e("viewBox",o._viewBox()),d(),Md("stroke-dasharray",o._strokeCircumference(),"px")("stroke-dashoffset",o._strokeDashOffset(),"px")("stroke-width",o._circleStrokeWidth(),"%"),$e("r",o._circleRadius()),d(4),C("ngTemplateOutlet",r),d(2),C("ngTemplateOutlet",r),d(2),C("ngTemplateOutlet",r)}},dependencies:[Ld],styles:[".mat-mdc-progress-spinner{--mat-progress-spinner-animation-multiplier: 1;display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity 250ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-progress-spinner circle{stroke-width:var(--mat-progress-spinner-active-indicator-width, 4px)}.mat-mdc-progress-spinner._mat-animation-noopable,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__determinate-circle{transition:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__spinner-layer,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container{animation:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container circle{stroke-dasharray:0 !important}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle{stroke:currentColor;stroke:CanvasText}}.mat-progress-spinner-reduced-motion{--mat-progress-spinner-animation-multiplier: 1.25}.mdc-circular-progress__determinate-container,.mdc-circular-progress__indeterminate-circle-graphic,.mdc-circular-progress__indeterminate-container,.mdc-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}.mdc-circular-progress__determinate-container{transform:rotate(-90deg)}.mdc-circular-progress--indeterminate .mdc-circular-progress__determinate-container{opacity:0}.mdc-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{opacity:1;animation:mdc-circular-progress-container-rotate calc(1568.2352941176ms*var(--mat-progress-spinner-animation-multiplier)) linear infinite}.mdc-circular-progress__determinate-circle-graphic,.mdc-circular-progress__indeterminate-circle-graphic{fill:rgba(0,0,0,0)}.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--mat-progress-spinner-active-indicator-color, var(--mat-sys-primary))}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}.mdc-circular-progress__determinate-circle{transition:stroke-dashoffset 500ms cubic-bezier(0, 0, 0.2, 1)}.mdc-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}.mdc-circular-progress__gap-patch .mdc-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.mdc-circular-progress__circle-clipper .mdc-circular-progress__indeterminate-circle-graphic{width:200%}.mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{left:-100%}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-left .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-left-spin calc(1333ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-right-spin calc(1333ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.mdc-circular-progress--indeterminate .mdc-circular-progress__spinner-layer{animation:mdc-circular-progress-spinner-layer-rotate calc(5332ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}@keyframes mdc-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes mdc-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}@keyframes mdc-circular-progress-left-spin{from{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes mdc-circular-progress-right-spin{from{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}\n"],encapsulation:2,changeDetection:0})}return t})(),Xue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ii]})}return t})();const Zue=t=>({"white-theme":t});let Yr=(()=>{class t{constructor(){this.showWhite=!0}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=re({type:t,selectors:[["app-loading-indicator"]],inputs:{showWhite:"showWhite"},standalone:!1,decls:2,vars:4,consts:[[1,"container",3,"ngClass"],[3,"diameter"]],template:function(i,o){1&i&&(h(0,"div",0),B(1,"mat-spinner",1),u()),2&i&&(C("ngClass",se(2,Zue,o.showWhite)),d(),C("diameter",50))},dependencies:[$t,so],styles:["[_nghost-%COMP%]{width:100%;height:100%;display:flex}.container[_ngcontent-%COMP%]{width:100%;align-self:center;display:flex;flex-direction:column;align-items:center}.container[_ngcontent-%COMP%] > mat-spinner[_ngcontent-%COMP%]{opacity:.5}"]})}}return t})();const Que=t=>({background:t});function Jue(t,n){1&t&&(h(0,"div",0)(1,"div"),B(2,"img",5),h(3,"div"),p(4),b(5,"translate"),u()()()),2&t&&(d(4),M(y(5,1,"common.window-size-error")))}function ehe(t,n){1&t&&B(0,"router-outlet")}function the(t,n){1&t&&B(0,"app-loading-indicator",3)}function nhe(t,n){1&t&&(h(0,"div",4)(1,"span",6)(2,"mat-icon",7),p(3,"error_outline"),u(),p(4),b(5,"translate"),u()()),2&t&&(d(2),C("inline",!0),d(2),E(" ",y(5,2,"common.data-update-problems")," "))}let Xr=(()=>{class t{constructor(e,i,o,r,s,a){this.storage=e,this.snackbarService=r,this.languageService=s,this.apiService=a,this.inVpnClient=!1,this.inLoginPage=!1,this.hypervisorPkObtained=!1,this.pkErrorShown=!1,this.pkErrorsFound=0,this.showingDataProblemMsg=!1,t.currentInstance=this,o.afterOpened.subscribe(()=>r.closeCurrent()),history.scrollRestoration&&(history.scrollRestoration="manual"),i.events.subscribe(l=>{l instanceof Wr&&(r.closeCurrent(),o.closeAll())}),o.afterAllClosed.subscribe(()=>r.closeCurrentIfTemporaryError()),i.events.subscribe(l=>{if(this.inVpnClient=i.url.includes("/vpn/")||i.url.includes("vpnlogin"),l.url){const c=this.inLoginPage;this.inLoginPage=l.url.includes("login"),c&&!this.inLoginPage&&!this.hypervisorPkObtained&&this.checkHypervisorPk(0)}i.url.length>2&&(document.title=this.inVpnClient?"Skywire VPN":"Skywire Hypervisor")}),this.languageService.loadLanguageSettings(),this.checkHypervisorPk(0)}processLoginDone(){this.inLoginPage=!1,this.hypervisorPkObtained||this.checkHypervisorPk(0)}showDataProblemMsg(){this.showingDataProblemMsg=!0}hideDataProblemMsg(){this.showingDataProblemMsg=!1}checkHypervisorPk(e){this.obtainPkSubscription&&this.obtainPkSubscription.unsubscribe(),this.obtainPkSubscription=ae(1).pipe(li(e),It(()=>this.apiService.get("about"))).subscribe(i=>{i.public_key?(this.finishStartup(i.public_key),this.hypervisorPkObtained=!0):(this.pkErrorShown||(this.snackbarService.showError("start.loading-error",null,!0),this.pkErrorShown=!0),this.checkHypervisorPk(1e3))},i=>{if(this.pkErrorsFound+=1,this.pkErrorsFound>4&&!this.pkErrorShown){const o=Qe(i);this.snackbarService.showError("start.loading-error",null,!0,o),this.pkErrorShown=!0}!this.inLoginPage&&this.pkErrorsFound<30&&this.checkHypervisorPk(Math.min(1e3*this.pkErrorsFound,1e4))})}finishStartup(e){this.storage.initialize(e)}static{this.\u0275fac=function(i){return new(i||t)(O(ti),O(vt),O(Ot),O(ct),O($b),O(zi))}}static{this.\u0275cmp=re({type:t,selectors:[["app-root"]],standalone:!1,decls:6,vars:7,consts:[[1,"size-alert","d-md-none"],[1,"flex-1","content","container-fluid"],[3,"ngClass"],[1,"h-100"],[1,"connection-problem-container"],["src","assets/img/size-alert.png"],[1,"blinking"],[3,"inline"]],template:function(i,o){1&i&&(x(0,Jue,6,3,"div",0),h(1,"div",1),B(2,"div",2),x(3,ehe,1,0,"router-outlet"),x(4,the,1,0,"app-loading-indicator",3),u(),x(5,nhe,6,4,"div",4)),2&i&&(S(o.inVpnClient?0:-1),d(2),C("ngClass",se(5,Que,o.inVpnClient)),d(),S(o.hypervisorPkObtained||o.inLoginPage?3:-1),d(),S(o.hypervisorPkObtained||o.inLoginPage?-1:4),d(),S(o.showingDataProblemMsg?5:-1))},dependencies:[$t,eb,We,Yr,xe],styles:[".size-alert[_ngcontent-%COMP%]{background-color:#000000d9;position:fixed;top:0;left:0;width:100%;height:100%;z-index:10000;display:inline-flex;align-items:center;justify-content:center;text-align:center;color:#fff}.size-alert[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{margin:0 40px;max-width:400px}[_nghost-%COMP%]{display:flex;flex-direction:column;justify-content:space-between;min-height:100%;height:100%}.content[_ngcontent-%COMP%]{padding:20px!important}.background[_ngcontent-%COMP%]{background-image:url(/assets/img/map.png);background-size:cover;background-position:center;opacity:.1;width:100%;height:100%;top:0;left:0;position:fixed}.connection-problem-container[_ngcontent-%COMP%]{position:fixed;bottom:0;right:0;background-color:red;padding:0 10px 5px;font-size:10px;opacity:.75}.connection-problem-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:4px}"]})}}return t})(),mhe=(()=>{class t{router=D(vt);stateManager=D(eS);fragment=yt("");queryParams=yt({});path=yt("");serializer=D(jd);constructor(){this.updateState(),this.router.events?.subscribe(e=>{e instanceof Wr&&this.updateState()})}updateState(){const{fragment:e,root:i,queryParams:o}=this.stateManager.getCurrentUrlTree();this.fragment.set(e),this.queryParams.set(o),this.path.set(this.serializer.serialize(new gr(i)))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Is=(()=>{class t{router;route;tabIndexAttribute;renderer;el;locationStrategy;hrefAttributeValue=D(new Yh("href"),{optional:!0});reactiveHref=function lw(t,n){return yF("function"==typeof t?_F(t,xte,n?.equal):_F(t.source,t.computation,t.equal))}(()=>this.isAnchorElement?this.computeHref(this._urlTree()):this.hrefAttributeValue);get href(){return nt(this.reactiveHref)}set href(e){this.reactiveHref.set(e)}set target(e){this._target.set(e)}get target(){return nt(this._target)}_target=yt(void 0);set queryParams(e){this._queryParams.set(e)}get queryParams(){return nt(this._queryParams)}_queryParams=yt(void 0,{equal:()=>!1});set fragment(e){this._fragment.set(e)}get fragment(){return nt(this._fragment)}_fragment=yt(void 0);set queryParamsHandling(e){this._queryParamsHandling.set(e)}get queryParamsHandling(){return nt(this._queryParamsHandling)}_queryParamsHandling=yt(void 0);set state(e){this._state.set(e)}get state(){return nt(this._state)}_state=yt(void 0,{equal:()=>!1});set info(e){this._info.set(e)}get info(){return nt(this._info)}_info=yt(void 0,{equal:()=>!1});set relativeTo(e){this._relativeTo.set(e)}get relativeTo(){return nt(this._relativeTo)}_relativeTo=yt(void 0);set preserveFragment(e){this._preserveFragment.set(e)}get preserveFragment(){return nt(this._preserveFragment)}_preserveFragment=yt(!1);set skipLocationChange(e){this._skipLocationChange.set(e)}get skipLocationChange(){return nt(this._skipLocationChange)}_skipLocationChange=yt(!1);set replaceUrl(e){this._replaceUrl.set(e)}get replaceUrl(){return nt(this._replaceUrl)}_replaceUrl=yt(!1);isAnchorElement;onChanges=new me;applicationErrorHandler=D(Or);options=D(Gd,{optional:!0});reactiveRouterState=D(mhe);constructor(e,i,o,r,s,a){this.router=e,this.route=i,this.tabIndexAttribute=o,this.renderer=r,this.el=s,this.locationStrategy=a;const l=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement="a"===l||"area"===l||!("object"!=typeof customElements||!customElements.get(l)?.observedAttributes?.includes?.("href"))}setTabIndexIfNotOnNativeEl(e){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.onChanges.next(this)}routerLinkInput=yt(null);set routerLink(e){null==e?(this.routerLinkInput.set(null),this.setTabIndexIfNotOnNativeEl(null)):(ql(e)?this.routerLinkInput.set(e):this.routerLinkInput.set(Array.isArray(e)?e:[e]),this.setTabIndexIfNotOnNativeEl("0"))}onClick(e,i,o,r,s){const a=this._urlTree();if(null===a||this.isAnchorElement&&(0!==e||i||o||r||s||"string"==typeof this.target&&"_self"!=this.target))return!0;const l={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(a,l)?.catch(c=>{this.applicationErrorHandler(c)}),!this.isAnchorElement}ngOnDestroy(){}applyAttributeValue(e,i){const o=this.renderer,r=this.el.nativeElement;null!==i?o.setAttribute(r,e,i):o.removeAttribute(r,e)}_urlTree=Ii(()=>{this.reactiveRouterState.path(),this._preserveFragment()&&this.reactiveRouterState.fragment();const e=o=>"preserve"===o||"merge"===o;(e(this._queryParamsHandling())||e(this.options?.defaultQueryParamsHandling))&&this.reactiveRouterState.queryParams();const i=this.routerLinkInput();return null!==i&&this.router.createUrlTree?ql(i)?i:this.router.createUrlTree(i,{relativeTo:void 0!==this._relativeTo()?this._relativeTo():this.route,queryParams:this._queryParams(),fragment:this._fragment(),queryParamsHandling:this._queryParamsHandling(),preserveFragment:this._preserveFragment()}):null},{equal:(e,i)=>this.computeHref(e)===this.computeHref(i)});get urlTree(){return nt(this._urlTree)}computeHref(e){return null!==e&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e))??"":null}static \u0275fac=function(i){return new(i||t)(O(vt),O(Ai),nh("tabindex"),O(Qn),O(Re),O(Bl))};static \u0275dir=de({type:t,selectors:[["","routerLink",""]],hostVars:2,hostBindings:function(i,o){1&i&&F("click",function(s){return o.onClick(s.button,s.ctrlKey,s.shiftKey,s.altKey,s.metaKey)}),2&i&&$e("href",o.reactiveHref(),lE)("target",o._target())},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",De],skipLocationChange:[2,"skipLocationChange","skipLocationChange",De],replaceUrl:[2,"replaceUrl","replaceUrl",De],routerLink:"routerLink"},features:[_i]})}return t})();class h5{}let bhe=(()=>{class t{router;injector;preloadingStrategy;loader;subscription;constructor(e,i,o,r){this.router=e,this.injector=i,this.preloadingStrategy=o,this.loader=r}setUpPreloading(){this.subscription=this.router.events.pipe(Tn(e=>e instanceof Wr),cf(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription?.unsubscribe()}processRoutes(e,i){const o=[];for(const r of i){r.providers&&!r._injector&&(r._injector=Mg(r.providers,e,""));const s=r._injector??e;r._loadedNgModuleFactory&&!r._loadedInjector&&(r._loadedInjector=r._loadedNgModuleFactory.create(s).injector);const a=r._loadedInjector??s;(r.loadChildren&&!r._loadedRoutes&&void 0===r.canLoad||r.loadComponent&&!r._loadedComponent)&&o.push(this.preloadConfig(s,r)),(r.children||r._loadedRoutes)&&o.push(this.processRoutes(a,r.children??r._loadedRoutes))}return Kn(o).pipe(Vd())}preloadConfig(e,i){return this.preloadingStrategy.preload(i,()=>{if(e.destroyed)return ae(null);let o;o=i.loadChildren&&void 0===i.canLoad?Kn(this.loader.loadChildren(e,i)):ae(null);const r=o.pipe(It(s=>null===s?ae(void 0):(i._loadedRoutes=s.routes,i._loadedInjector=s.injector,i._loadedNgModuleFactory=s.factory,this.processRoutes(s.injector??e,s.routes))));return i.loadComponent&&!i._loadedComponent?Kn([r,this.loader.loadComponent(e,i)]).pipe(Vd()):r})}static \u0275fac=function(i){return new(i||t)(ce(vt),ce(zn),ce(h5),ce(Kx))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const US=new Z("");let f5=(()=>{class t{options;routerEventsSubscription;scrollEventsSubscription;lastId=0;lastSource=wf;restoredId=0;store={};urlSerializer=D(jd);zone=D(_e);viewportScroller=D(ZM);transitions=D(Qx);constructor(e){this.options=e,this.options.scrollPositionRestoration||="disabled",this.options.anchorScrolling||="disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof Z_?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof Wr?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof Ud&&e.code===Q_.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{if(!(e instanceof t3)||"manual"===e.scrollBehavior)return;const i={behavior:"instant"};e.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0],i):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(e.position,i):e.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0])})}scheduleScrollEvent(e,i){var o=this;const r=nt(this.transitions.currentNavigation)?.extras.scroll;this.zone.runOutsideAngular(Et(function*(){yield new Promise(s=>{setTimeout(s),typeof requestAnimationFrame<"u"&&requestAnimationFrame(s)}),o.zone.run(()=>{o.transitions.events.next(new t3(e,"popstate"===o.lastSource?o.store[o.restoredId]:null,i,r))})}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static \u0275fac=function(i){B1()};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();function Ko(t,n){return{\u0275kind:t,\u0275providers:n}}function m5(){const t=D(He);return n=>{const e=t.get(lr);if(n!==e.components[0])return;const i=t.get(vt),o=t.get(g5);1===t.get(zS)&&i.initialNavigation(),t.get(_5,null,{optional:!0})?.setUpPreloading(),t.get(US,null,{optional:!0})?.init(),i.resetRootComponentType(e.componentTypes[0]),o.closed||(o.next(),o.complete(),o.unsubscribe())}}const g5=new Z("",{factory:()=>new me}),zS=new Z("",{factory:()=>1}),_5=new Z("");function xhe(t){return Ko(0,[{provide:_5,useExisting:bhe},{provide:h5,useExisting:t}])}function khe(t){return vi("NgRouterViewTransitions"),Ko(9,[{provide:T3,useValue:Qle},{provide:E3,useValue:{skipNextTransition:!!t?.skipInitialTransition,...t}}])}const Dhe=[Fd,{provide:jd,useClass:bf},vt,xf,{provide:Ai,useFactory:function p5(){return D(vt).routerState.root}},Kx,[]];let b5=(()=>{class t{constructor(){}static forRoot(e,i){return{ngModule:t,providers:[Dhe,[],{provide:sb,multi:!0,useValue:e},[],i?.errorHandler?{provide:P3,useValue:i.errorHandler}:[],{provide:Gd,useValue:i||{}},i?.useHash?{provide:Bl,useClass:Nte}:{provide:Bl,useClass:kF},{provide:US,useFactory:()=>{const t=D(ZM),n=D(Gd);return n.scrollOffset&&t.setOffset(n.scrollOffset),new f5(n)}},i?.preloadingStrategy?xhe(i.preloadingStrategy).\u0275providers:[],i?.initialNavigation?Phe(i):[],i?.bindToComponentInputs?Ko(8,[c3,{provide:tb,useExisting:c3}]).\u0275providers:[],i?.enableViewTransitions?khe().\u0275providers:[],[{provide:v5,useFactory:m5},{provide:nO,multi:!0,useExisting:v5}]]}}static forChild(e){return{ngModule:t,providers:[{provide:sb,multi:!0,useValue:e}]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function Phe(t){return["disabled"===t.initialNavigation?Ko(3,[eO(()=>{D(vt).setUpLocationChangeListener()}),{provide:zS,useValue:2}]).\u0275providers:[],"enabledBlocking"===t.initialNavigation?Ko(2,[{provide:W7,useValue:!0},{provide:zS,useValue:0},eO(()=>{const n=D(He);return n.get(_U,Promise.resolve()).then(()=>new Promise(i=>{const o=n.get(vt),r=n.get(g5);A3(o,()=>{i(!0)}),n.get(Qx).afterPreactivation=()=>(i(!0),r.closed?ae(void 0):r),o.initialNavigation()}))})]).\u0275providers:[]]}const v5=new Z("");let Kf=(()=>{class t{set forceFail(e){this.forceFailInternal=e}constructor(e){this.router=e,this.forceFailInternal=!1}canActivate(e,i){return this.checkIfCanActivate()}canActivateChild(e,i){return this.checkIfCanActivate()}checkIfCanActivate(){return this.forceFailInternal?(this.router.navigate(["login"],{replaceUrl:!0}),ae(!1)):ae(!0)}static{this.\u0275fac=function(i){return new(i||t)(ce(vt))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var ka=function(t){return t[t.AuthDisabled=0]="AuthDisabled",t[t.Logged=1]="Logged",t[t.NotLogged=2]="NotLogged",t}(ka||{});let Yf=(()=>{class t{constructor(e,i,o){this.apiService=e,this.translateService=i,this.authGuardService=o}login(e){return this.apiService.post("login",{username:"admin",password:e},new qo({ignoreAuth:!0})).pipe(ai(i=>{if(!0!==i)throw new Error;this.authGuardService.forceFail=!1}))}checkLogin(){return this.apiService.get("user",new qo({ignoreAuth:!0})).pipe(Se(e=>e.username?ka.Logged:ka.AuthDisabled),Ui(e=>(e=Qe(e)).originalError&&401===e.originalError.status?(this.authGuardService.forceFail=!0,ae(ka.NotLogged)):mr(e)))}logout(){return this.apiService.post("logout",{}).pipe(ai(e=>{if(!0!==e)throw new Error;this.authGuardService.forceFail=!0}))}changePassword(e,i){return this.apiService.post("change-password",{old_password:e,new_password:i},new qo({responseType:qf.Text,ignoreAuth:!0})).pipe(Se(o=>{if("string"==typeof o&&"true"===o.trim())return!0;throw"Please do not change the default password."===o?new Error(this.translateService.instant("settings.password.errors.default-password")):new Error(this.translateService.instant("common.operation-error"))}),Ui(o=>((o=Qe(o)).originalError&&401===o.originalError.status&&(o.translatableErrorMsg="settings.password.errors.bad-old-password"),mr(o))))}initialConfig(e){return this.apiService.post("create-account",{username:"admin",password:e},new qo({responseType:qf.Text,ignoreAuth:!0})).pipe(Se(i=>{if("string"==typeof i&&"true"===i.trim())return!0;throw new Error(i)}),Ui(i=>((i=Qe(i)).originalError&&500===i.originalError.status&&(i.translatableErrorMsg="settings.password.initial-config.error"),mr(i))))}userExists(){return this.apiService.get("user-exists",new qo({ignoreAuth:!0})).pipe(Se(e=>!0===e.exists),Ui(()=>ae(!0)))}static{this.\u0275fac=function(i){return new(i||t)(ce(zi),ce(Go),ce(Kf))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();class Ohe{}class pn{constructor(){this.persistentScrollPosKey="scroll-pos"}static{this.mustCallNgOnInitSuper=Symbol("You must call super.ngOnInit.")}ngOnInit(){let n=this.getLocalValue(this.persistentScrollPosKey);n=n?n.value:"0",window.scrollTo(0,Number(n)),setTimeout(()=>window.scrollTo(0,Number(n)),1)}saveScrollPosition(n){this.saveLocalValue(this.persistentScrollPosKey,window.scrollY+"")}saveLocalValue(n,e){const i=window.history.state;i[n]=e,i[n+"_time"]=(new Date).getTime(),window.history.replaceState(i,"",window.location.pathname+window.location.hash)}getLocalValue(n){if(!window.history.state||void 0===window.history.state[n])return null;const e=new Ohe;return e.value=window.history.state[n],e.date=window.history.state[n+"_time"],e}static{this.\u0275fac=function(e){return new(e||pn)}}static{this.\u0275cmp=re({type:pn,selectors:[["app-page-base"]],hostBindings:function(e,i){1&e&&F("scroll",function(r){return i.saveScrollPosition(r)},XC)},standalone:!1,decls:0,vars:0,template:function(e,i){},encapsulation:2})}}let Ahe=(()=>{class t extends pn{constructor(e,i){super(),this.authService=e,this.router=i}ngOnInit(){return this.verificationSubscription=this.authService.checkLogin().subscribe(e=>{this.router.navigate(e!==ka.NotLogged?["nodes"]:["login"],{replaceUrl:!0})},()=>{this.router.navigate(["nodes"],{replaceUrl:!0})}),super.ngOnInit()}ngOnDestroy(){this.verificationSubscription.unsubscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(Yf),O(vt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-start"]],standalone:!1,features:[be],decls:2,vars:0,consts:[[1,"h-100","w-100"]],template:function(i,o){1&i&&(h(0,"div",0),B(1,"app-loading-indicator"),u())},dependencies:[Yr],encapsulation:2})}}return t})(),y5=(()=>{class t{_renderer;_elementRef;onChange=e=>{};onTouched=()=>{};constructor(e,i){this._renderer=e,this._elementRef=i}setProperty(e,i){this._renderer.setProperty(this._elementRef.nativeElement,e,i)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}static \u0275fac=function(i){return new(i||t)(O(Qn),O(Re))};static \u0275dir=de({type:t})}return t})(),ic=(()=>{class t extends y5{static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,features:[be]})}return t})();const Yo=new Z(""),Fhe={provide:Yo,useExisting:Nt(()=>Gt),multi:!0},Lhe=new Z("");let Gt=(()=>{class t extends y5{_compositionMode;_composing=!1;constructor(e,i,o){super(e,i),this._compositionMode=o,null==this._compositionMode&&(this._compositionMode=!function Nhe(){const t=Xs()?Xs().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}())}writeValue(e){this.setProperty("value",e??"")}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}static \u0275fac=function(i){return new(i||t)(O(Qn),O(Re),O(Lhe,8))};static \u0275dir=de({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(i,o){1&i&&F("input",function(s){return o._handleInput(s.target.value)})("blur",function(){return o.onTouched()})("compositionstart",function(){return o._compositionStart()})("compositionend",function(s){return o._compositionEnd(s.target.value)})},standalone:!1,features:[lt([Fhe]),be]})}return t})();function $S(t){return null==t||0===WS(t)}function WS(t){return null==t?null:Array.isArray(t)||"string"==typeof t?t.length:t instanceof Set?t.size:null}const Ci=new Z(""),Da=new Z(""),Bhe=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class Ne{static min(n){return w5(n)}static max(n){return x5(n)}static required(n){return function S5(t){return $S(t.value)?{required:!0}:null}(n)}static requiredTrue(n){return function k5(t){return!0===t.value?null:{required:!0}}(n)}static email(n){return function D5(t){return $S(t.value)||Bhe.test(t.value)?null:{email:!0}}(n)}static minLength(n){return function M5(t){return n=>{const e=n.value?.length??WS(n.value);return null===e||0===e?null:e{if($S(i.value))return null;const o=i.value;return n.test(o)?null:{pattern:{requiredPattern:e,actualValue:o}}}}(n)}static nullValidator(n){return null}static compose(n){return F5(n)}static composeAsync(n){return N5(n)}}function w5(t){return n=>{if(null==n.value||null==t)return null;const e=parseFloat(n.value);return!isNaN(e)&&e{if(null==n.value||null==t)return null;const e=parseFloat(n.value);return!isNaN(e)&&e>t?{max:{max:t,actual:n.value}}:null}}function T5(t){return n=>{const e=n.value?.length??WS(n.value);return null!==e&&e>t?{maxlength:{requiredLength:t,actualLength:e}}:null}}function Gb(t){return null}function P5(t){return null!=t}function I5(t){return Rh(t)?Kn(t):t}function O5(t){let n={};return t.forEach(e=>{n=null!=e?{...n,...e}:n}),0===Object.keys(n).length?null:n}function A5(t,n){return n.map(e=>e(t))}function R5(t){return t.map(n=>function Vhe(t){return!t.validate}(n)?n:e=>n.validate(e))}function F5(t){if(!t)return null;const n=t.filter(P5);return 0==n.length?null:function(e){return O5(A5(e,n))}}function GS(t){return null!=t?F5(R5(t)):null}function N5(t){if(!t)return null;const n=t.filter(P5);return 0==n.length?null:function(e){return zf(A5(e,n).map(I5)).pipe(Se(O5))}}function qS(t){return null!=t?N5(R5(t)):null}function L5(t,n){return null===t?[n]:Array.isArray(t)?[...t,n]:[t,n]}function B5(t){return t._rawValidators}function V5(t){return t._rawAsyncValidators}function KS(t){return t?Array.isArray(t)?t:[t]:[]}function qb(t,n){return Array.isArray(t)?t.includes(n):t===n}function H5(t,n){const e=KS(n);return KS(t).forEach(o=>{qb(e,o)||e.push(o)}),e}function j5(t,n){return KS(n).filter(e=>!qb(t,e))}class U5{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}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=GS(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=qS(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n=void 0){this.control?.reset(n)}hasError(n,e){return!!this.control&&this.control.hasError(n,e)}getError(n,e){return this.control?this.control.getError(n,e):null}}class $i extends U5{name;get formDirective(){return null}get path(){return null}}class Zr extends U5{_parent=null;name=null;valueAccessor=null}class z5{_cd;constructor(n){this._cd=n}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}}let qt=(()=>{class t extends z5{constructor(e){super(e)}static \u0275fac=function(i){return new(i||t)(O(Zr,2))};static \u0275dir=de({type:t,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(i,o){2&i&&Ie("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)},standalone:!1,features:[be]})}return t})(),wn=(()=>{class t extends z5{constructor(e){super(e)}static \u0275fac=function(i){return new(i||t)(O($i,10))};static \u0275dir=de({type:t,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["","formArray",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(i,o){2&i&&Ie("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)("ng-submitted",o.isSubmitted)},standalone:!1,features:[be]})}return t})();const Xf="VALID",Yb="INVALID",iu="PENDING",Zf="DISABLED";class ou{}class G5 extends ou{value;source;constructor(n,e){super(),this.value=n,this.source=e}}class ZS extends ou{pristine;source;constructor(n,e){super(),this.pristine=n,this.source=e}}class QS extends ou{touched;source;constructor(n,e){super(),this.touched=n,this.source=e}}class Xb extends ou{status;source;constructor(n,e){super(),this.status=n,this.source=e}}class q5 extends ou{source;constructor(n){super(),this.source=n}}class JS extends ou{source;constructor(n){super(),this.source=n}}function ek(t){return(Zb(t)?t.validators:t)||null}function tk(t,n){return(Zb(n)?n.asyncValidators:t)||null}function Zb(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}function K5(t,n,e){const i=t.controls;if(!(n?Object.keys(i):i).length)throw new X(1e3,"");if(!i[e])throw new X(1001,"")}function Y5(t,n,e){t._forEachChild((i,o)=>{if(void 0===e[o])throw new X(1002,"")})}class Qb{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(n,e){this._assignValidators(n),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(n){this._rawValidators=this._composedValidatorFn=n}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(n){this._rawAsyncValidators=this._composedAsyncValidatorFn=n}get parent(){return this._parent}get status(){return nt(this.statusReactive)}set status(n){nt(()=>this.statusReactive.set(n))}_status=Ii(()=>this.statusReactive());statusReactive=yt(void 0);get valid(){return this.status===Xf}get invalid(){return this.status===Yb}get pending(){return this.status==iu}get disabled(){return this.status===Zf}get enabled(){return this.status!==Zf}errors;get pristine(){return nt(this.pristineReactive)}set pristine(n){nt(()=>this.pristineReactive.set(n))}_pristine=Ii(()=>this.pristineReactive());pristineReactive=yt(!0);get dirty(){return!this.pristine}get touched(){return nt(this.touchedReactive)}set touched(n){nt(()=>this.touchedReactive.set(n))}_touched=Ii(()=>this.touchedReactive());touchedReactive=yt(!1);get untouched(){return!this.touched}_events=new me;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(n){this._assignValidators(n)}setAsyncValidators(n){this._assignAsyncValidators(n)}addValidators(n){this.setValidators(H5(n,this._rawValidators))}addAsyncValidators(n){this.setAsyncValidators(H5(n,this._rawAsyncValidators))}removeValidators(n){this.setValidators(j5(n,this._rawValidators))}removeAsyncValidators(n){this.setAsyncValidators(j5(n,this._rawAsyncValidators))}hasValidator(n){return qb(this._rawValidators,n)}hasAsyncValidator(n){return qb(this._rawAsyncValidators,n)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(n={}){const e=!1===this.touched;this.touched=!0;const i=n.sourceControl??this;n.onlySelf||this._parent?.markAsTouched({...n,sourceControl:i}),e&&!1!==n.emitEvent&&this._events.next(new QS(!0,i))}markAllAsDirty(n={}){this.markAsDirty({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsDirty(n))}markAllAsTouched(n={}){this.markAsTouched({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsTouched(n))}markAsUntouched(n={}){const e=!0===this.touched;this.touched=!1,this._pendingTouched=!1;const i=n.sourceControl??this;this._forEachChild(o=>{o.markAsUntouched({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:i})}),n.onlySelf||this._parent?._updateTouched(n,i),e&&!1!==n.emitEvent&&this._events.next(new QS(!1,i))}markAsDirty(n={}){const e=!0===this.pristine;this.pristine=!1;const i=n.sourceControl??this;n.onlySelf||this._parent?.markAsDirty({...n,sourceControl:i}),e&&!1!==n.emitEvent&&this._events.next(new ZS(!1,i))}markAsPristine(n={}){const e=!1===this.pristine;this.pristine=!0,this._pendingDirty=!1;const i=n.sourceControl??this;this._forEachChild(o=>{o.markAsPristine({onlySelf:!0,emitEvent:n.emitEvent})}),n.onlySelf||this._parent?._updatePristine(n,i),e&&!1!==n.emitEvent&&this._events.next(new ZS(!0,i))}markAsPending(n={}){this.status=iu;const e=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new Xb(this.status,e)),this.statusChanges.emit(this.status)),n.onlySelf||this._parent?.markAsPending({...n,sourceControl:e})}disable(n={}){const e=this._parentMarkedDirty(n.onlySelf);this.status=Zf,this.errors=null,this._forEachChild(o=>{o.disable({...n,onlySelf:!0})}),this._updateValue();const i=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new G5(this.value,i)),this._events.next(new Xb(this.status,i)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...n,skipPristineCheck:e},this),this._onDisabledChange.forEach(o=>o(!0))}enable(n={}){const e=this._parentMarkedDirty(n.onlySelf);this.status=Xf,this._forEachChild(i=>{i.enable({...n,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent}),this._updateAncestors({...n,skipPristineCheck:e},this),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(n,e){n.onlySelf||(this._parent?.updateValueAndValidity(n),n.skipPristineCheck||this._parent?._updatePristine({},e),this._parent?._updateTouched({},e))}setParent(n){this._parent=n}getRawValue(){return this.value}updateValueAndValidity(n={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){const i=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===Xf||this.status===iu)&&this._runAsyncValidator(i,n.emitEvent)}const e=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new G5(this.value,e)),this._events.next(new Xb(this.status,e)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),n.onlySelf||this._parent?.updateValueAndValidity({...n,sourceControl:e})}_updateTreeValidity(n={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(n)),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Zf:Xf}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(n,e){if(this.asyncValidator){this.status=iu,this._hasOwnPendingAsyncValidator={emitEvent:!1!==e,shouldHaveEmitted:!1!==n};const i=I5(this.asyncValidator(this));this._asyncValidationSubscription=i.subscribe(o=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(o,{emitEvent:e,shouldHaveEmitted:n})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();const n=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,n}return!1}setErrors(n,e={}){this.errors=n,this._updateControlsErrors(!1!==e.emitEvent,this,e.shouldHaveEmitted)}get(n){let e=n;return null==e||(Array.isArray(e)||(e=e.split(".")),0===e.length)?null:e.reduce((i,o)=>i&&i._find(o),this)}getError(n,e){const i=e?this.get(e):this;return i?.errors?i.errors[n]:null}hasError(n,e){return!!this.getError(n,e)}get root(){let n=this;for(;n._parent;)n=n._parent;return n}_updateControlsErrors(n,e,i){this.status=this._calculateStatus(),n&&this.statusChanges.emit(this.status),(n||i)&&this._events.next(new Xb(this.status,e)),this._parent&&this._parent._updateControlsErrors(n,e,i)}_initObservables(){this.valueChanges=new we,this.statusChanges=new we}_calculateStatus(){return this._allControlsDisabled()?Zf:this.errors?Yb:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(iu)?iu:this._anyControlsHaveStatus(Yb)?Yb:Xf}_anyControlsHaveStatus(n){return this._anyControls(e=>e.status===n)}_anyControlsDirty(){return this._anyControls(n=>n.dirty)}_anyControlsTouched(){return this._anyControls(n=>n.touched)}_updatePristine(n,e){const i=!this._anyControlsDirty(),o=this.pristine!==i;this.pristine=i,n.onlySelf||this._parent?._updatePristine(n,e),o&&this._events.next(new ZS(this.pristine,e))}_updateTouched(n={},e){this.touched=this._anyControlsTouched(),this._events.next(new QS(this.touched,e)),n.onlySelf||this._parent?._updateTouched(n,e)}_onDisabledChange=[];_registerOnCollectionChange(n){this._onCollectionChange=n}_setUpdateStrategy(n){Zb(n)&&null!=n.updateOn&&(this._updateOn=n.updateOn)}_parentMarkedDirty(n){return!n&&!!this._parent?.dirty&&!this._parent._anyControlsDirty()}_find(n){return null}_assignValidators(n){this._rawValidators=Array.isArray(n)?n.slice():n,this._composedValidatorFn=function Ghe(t){return Array.isArray(t)?GS(t):t||null}(this._rawValidators)}_assignAsyncValidators(n){this._rawAsyncValidators=Array.isArray(n)?n.slice():n,this._composedAsyncValidatorFn=function qhe(t){return Array.isArray(t)?qS(t):t||null}(this._rawAsyncValidators)}}class ru extends Qb{constructor(n,e,i){super(ek(e),tk(i,e)),this.controls=n,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;registerControl(n,e){return this.controls[n]?this.controls[n]:(this.controls[n]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(n,e,i={}){this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}removeControl(n,e={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(n,e,i={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],e&&this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}contains(n){return this.controls.hasOwnProperty(n)&&this.controls[n].enabled}setValue(n,e={}){Y5(this,0,n),Object.keys(n).forEach(i=>{K5(this,!0,i),this.controls[i].setValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(n,e={}){null!=n&&(Object.keys(n).forEach(i=>{const o=this.controls[i];o&&o.patchValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(n={},e={}){this._forEachChild((i,o)=>{i.reset(n?n[o]:null,{...e,onlySelf:!0})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e),!1!==e?.emitEvent&&this._events.next(new JS(this))}getRawValue(){return this._reduceChildren({},(n,e,i)=>(n[i]=e.getRawValue(),n))}_syncPendingControls(){let n=this._reduceChildren(!1,(e,i)=>!!i._syncPendingControls()||e);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){Object.keys(this.controls).forEach(e=>{const i=this.controls[e];i&&n(i,e)})}_setUpControls(){this._forEachChild(n=>{n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(n){for(const[e,i]of Object.entries(this.controls))if(this.contains(e)&&n(i))return!0;return!1}_reduceValue(){return this._reduceChildren({},(e,i,o)=>((i.enabled||this.disabled)&&(e[o]=i.value),e))}_reduceChildren(n,e){let i=n;return this._forEachChild((o,r)=>{i=e(i,o,r)}),i}_allControlsDisabled(){for(const n of Object.keys(this.controls))if(this.controls[n].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(n){return this.controls.hasOwnProperty(n)?this.controls[n]:null}}const nk=ru;class X5 extends ru{}const oc=new Z("",{factory:()=>Qf}),Qf="always";function Jb(t,n){return[...n.path,t]}function Jf(t,n,e=Qf){ik(t,n),n.valueAccessor.writeValue(t.value),(t.disabled||"always"===e)&&n.valueAccessor.setDisabledState?.(t.disabled),function Yhe(t,n){n.valueAccessor.registerOnChange(e=>{t._pendingValue=e,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&Z5(t,n)})}(t,n),function Zhe(t,n){const e=(i,o)=>{n.valueAccessor.writeValue(i),o&&n.viewToModelUpdate(i)};t.registerOnChange(e),n._registerOnDestroy(()=>{t._unregisterOnChange(e)})}(t,n),function Xhe(t,n){n.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&Z5(t,n),"submit"!==t.updateOn&&t.markAsTouched()})}(t,n),function Khe(t,n){if(n.valueAccessor.setDisabledState){const e=i=>{n.valueAccessor.setDisabledState(i)};t.registerOnDisabledChange(e),n._registerOnDestroy(()=>{t._unregisterOnDisabledChange(e)})}}(t,n)}function ev(t,n,e=!0){const i=()=>{};n?.valueAccessor?.registerOnChange(i),n?.valueAccessor?.registerOnTouched(i),nv(t,n),t&&(n._invokeOnDestroyCallbacks(),t._registerOnCollectionChange(()=>{}))}function tv(t,n){t.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(n)})}function ik(t,n){const e=B5(t);null!==n.validator?t.setValidators(L5(e,n.validator)):"function"==typeof e&&t.setValidators([e]);const i=V5(t);null!==n.asyncValidator?t.setAsyncValidators(L5(i,n.asyncValidator)):"function"==typeof i&&t.setAsyncValidators([i]);const o=()=>t.updateValueAndValidity();tv(n._rawValidators,o),tv(n._rawAsyncValidators,o)}function nv(t,n){let e=!1;if(null!==t){if(null!==n.validator){const o=B5(t);if(Array.isArray(o)&&o.length>0){const r=o.filter(s=>s!==n.validator);r.length!==o.length&&(e=!0,t.setValidators(r))}}if(null!==n.asyncValidator){const o=V5(t);if(Array.isArray(o)&&o.length>0){const r=o.filter(s=>s!==n.asyncValidator);r.length!==o.length&&(e=!0,t.setAsyncValidators(r))}}}const i=()=>{};return tv(n._rawValidators,i),tv(n._rawAsyncValidators,i),e}function Z5(t,n){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),n.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function Q5(t,n){ik(t,n)}function rk(t,n){if(!t.hasOwnProperty("model"))return!1;const e=t.model;return!!e.isFirstChange()||!Object.is(n,e.currentValue)}function J5(t,n){t._syncPendingControls(),n.forEach(e=>{const i=e.control;"submit"===i.updateOn&&i._pendingChange&&(e.viewToModelUpdate(i._pendingValue),i._pendingChange=!1)})}function sk(t,n){if(!n)return null;let e,i,o;return Array.isArray(n),n.forEach(r=>{r.constructor===Gt?e=r:function efe(t){return Object.getPrototypeOf(t.constructor)===ic}(r)?i=r:o=r}),o||i||e||null}const nfe={provide:$i,useExisting:Nt(()=>su)},ep=Promise.resolve();let su=(()=>{class t extends $i{callSetDisabledState;get submitted(){return nt(this.submittedReactive)}_submitted=Ii(()=>this.submittedReactive());submittedReactive=yt(!1);_directives=new Set;form;ngSubmit=new we;options;constructor(e,i,o){super(),this.callSetDisabledState=o,this.form=new ru({},GS(e),qS(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){ep.then(()=>{const i=this._findContainer(e.path);e.control=i.registerControl(e.name,e.control),Jf(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){ep.then(()=>{this._findContainer(e.path)?.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){ep.then(()=>{const i=this._findContainer(e.path),o=new ru({});Q5(o,e),i.registerControl(e.name,o),o.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){ep.then(()=>{this._findContainer(e.path)?.removeControl?.(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,i){ep.then(()=>{this.form.get(e.path).setValue(i)})}setValue(e){this.control.setValue(e)}onSubmit(e){return this.submittedReactive.set(!0),J5(this.form,this._directives),this.ngSubmit.emit(e),this.form._events.next(new q5(this.control)),"dialog"===e?.target?.method}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submittedReactive.set(!1)}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}static \u0275fac=function(i){return new(i||t)(O(Ci,10),O(Da,10),O(oc,8))};static \u0275dir=de({type:t,selectors:[["form",3,"ngNoForm","",3,"formGroup","",3,"formArray",""],["ng-form"],["","ngForm",""]],hostBindings:function(i,o){1&i&&F("submit",function(s){return o.onSubmit(s)})("reset",function(){return o.onReset()})},inputs:{options:[0,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[lt([nfe]),be]})}return t})();function eB(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}function tB(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}const au=class extends Qb{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(n=null,e,i){super(ek(e),tk(i,e)),this._applyFormState(n),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),Zb(e)&&(e.nonNullable||e.initialValueIsDefault)&&(this.defaultValue=tB(n)?n.value:n)}setValue(n,e={}){this.value=this._pendingValue=n,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(i=>i(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(n,e={}){this.setValue(n,e)}reset(n=this.defaultValue,e={}){this._applyFormState(n),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),e.overwriteDefaultValue&&(this.defaultValue=this.value),this._pendingChange=!1,!1!==e?.emitEvent&&this._events.next(new JS(this))}_updateValue(){}_anyControls(n){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(n){this._onChange.push(n)}_unregisterOnChange(n){eB(this._onChange,n)}registerOnDisabledChange(n){this._onDisabledChange.push(n)}_unregisterOnDisabledChange(n){eB(this._onDisabledChange,n)}_forEachChild(n){}_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(n){tB(n)?(this.value=this._pendingValue=n.value,n.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=n}},lu=au;let iv=(()=>{class t extends $i{_parent;ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective?.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return Jb(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,standalone:!1,features:[be]})}return t})();const afe={provide:Zr,useExisting:Nt(()=>cu)},nB=Promise.resolve();let cu=(()=>{class t extends Zr{_changeDetectorRef;callSetDisabledState;control=new au;static ngAcceptInputType_isDisabled;_registered=!1;viewModel;name="";isDisabled;model;options;update=new we;constructor(e,i,o,r,s,a){super(),this._changeDetectorRef=s,this.callSetDisabledState=a,this._parent=e,this._setValidators(i),this._setAsyncValidators(o),this.valueAccessor=sk(0,r)}ngOnChanges(e){if(this._checkForErrors(),!this._registered||"name"in e){if(this._registered&&(this._checkName(),this.formDirective)){const i=e.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in e&&this._updateDisabled(e),rk(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective?.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_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(){Jf(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(e){nB.then(()=>{this.control.setValue(e,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(e){const i=e.isDisabled.currentValue,o=0!==i&&De(i);nB.then(()=>{o&&!this.control.disabled?this.control.disable():!o&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(e){return this._parent?Jb(e,this._parent):[e]}static \u0275fac=function(i){return new(i||t)(O($i,9),O(Ci,10),O(Da,10),O(Yo,10),O(Jt,8),O(oc,8))};static \u0275dir=de({type:t,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],standalone:!1,features:[lt([afe]),be,_i]})}return t})(),xn=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""],standalone:!1})}return t})();const lfe={provide:Yo,useExisting:Nt(()=>rc),multi:!0};let rc=(()=>{class t extends ic{writeValue(e){this.setProperty("value",e??"")}registerOnChange(e){this.onChange=i=>{e(""==i?null:parseFloat(i))}}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(i,o){1&i&&F("input",function(s){return o.onChange(s.target.value)})("blur",function(){return o.onTouched()})},standalone:!1,features:[lt([lfe]),be]})}return t})();class rB extends Qb{constructor(n,e,i){super(ek(e),tk(i,e)),this.controls=n,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;at(n){return this.controls[this._adjustIndex(n)]}push(n,e={}){Array.isArray(n)?n.forEach(i=>{this.controls.push(i),this._registerControl(i)}):(this.controls.push(n),this._registerControl(n)),this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}insert(n,e,i={}){this.controls.splice(n,0,e),this._registerControl(e),this.updateValueAndValidity({emitEvent:i.emitEvent})}removeAt(n,e={}){let i=this._adjustIndex(n);i<0&&(i=0),this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),this.controls.splice(i,1),this.updateValueAndValidity({emitEvent:e.emitEvent})}setControl(n,e,i={}){let o=this._adjustIndex(n);o<0&&(o=0),this.controls[o]&&this.controls[o]._registerOnCollectionChange(()=>{}),this.controls.splice(o,1),e&&(this.controls.splice(o,0,e),this._registerControl(e)),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(n,e={}){Y5(this,0,n),n.forEach((i,o)=>{K5(this,!1,o),this.at(o).setValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(n,e={}){null!=n&&(n.forEach((i,o)=>{this.at(o)&&this.at(o).patchValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(n=[],e={}){this._forEachChild((i,o)=>{i.reset(n[o],{...e,onlySelf:!0})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e),!1!==e?.emitEvent&&this._events.next(new JS(this))}getRawValue(){return this.controls.map(n=>n.getRawValue())}clear(n={}){this.controls.length<1||(this._forEachChild(e=>e._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:n.emitEvent}))}_adjustIndex(n){return n<0?n+this.length:n}_syncPendingControls(){let n=this.controls.reduce((e,i)=>!!i._syncPendingControls()||e,!1);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){this.controls.forEach((e,i)=>{n(e,i)})}_updateValue(){this.value=this.controls.filter(n=>n.enabled||this.disabled).map(n=>n.value)}_anyControls(n){return this.controls.some(e=>e.enabled&&n(e))}_setUpControls(){this._forEachChild(n=>this._registerControl(n))}_allControlsDisabled(){for(const n of this.controls)if(n.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(n){n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)}_find(n){return this.at(n)??null}}let rv=(()=>{class t extends $i{callSetDisabledState;get submitted(){return nt(this._submittedReactive)}set submitted(e){this._submittedReactive.set(e)}_submitted=Ii(()=>this._submittedReactive());_submittedReactive=yt(!1);_oldForm;_onCollectionChange=()=>this._updateDomValue();directives=[];constructor(e,i,o){super(),this.callSetDisabledState=o,this._setValidators(e),this._setAsyncValidators(i)}ngOnChanges(e){this.onChanges(e)}ngOnDestroy(){this.onDestroy()}onChanges(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}onDestroy(){this.form&&(nv(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get path(){return[]}addControl(e){const i=this.form.get(e.path);return Jf(i,e,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),i}getControl(e){return this.form.get(e.path)}removeControl(e){ev(e.control||null,e,!1),function tfe(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}getFormArray(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}updateModel(e,i){this.form.get(e.path).setValue(i)}onReset(){this.resetForm()}resetForm(e=void 0,i={}){this.form.reset(e,i),this._submittedReactive.set(!1)}onSubmit(e){return this.submitted=!0,J5(this.form,this.directives),this.ngSubmit.emit(e),this.form._events.next(new q5(this.control)),"dialog"===e?.target?.method}_updateDomValue(){this.directives.forEach(e=>{const i=e.control,o=this.form.get(e.path);i!==o&&(ev(i||null,e),(t=>t instanceof au)(o)&&(Jf(o,e,this.callSetDisabledState),e.control=o))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){const i=this.form.get(e.path);Q5(i,e),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){const i=this.form?.get(e.path);i&&function Qhe(t,n){return nv(t,n)}(i,e)&&i.updateValueAndValidity({emitEvent:!1})}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm?._registerOnCollectionChange(()=>{})}_updateValidators(){ik(this.form,this),this._oldForm&&nv(this._oldForm,this)}_checkFormPresent(){}static \u0275fac=function(i){return new(i||t)(O(Ci,10),O(Da,10),O(oc,8))};static \u0275dir=de({type:t,features:[be,_i]})}return t})();const ak=new Z(""),pfe={provide:$i,useExisting:Nt(()=>sc)};let sc=(()=>{class t extends iv{name=null;constructor(e,i,o){super(),this._parent=e,this._setValidators(i),this._setAsyncValidators(o)}_checkParentType(){lB(this._parent)}static \u0275fac=function(i){return new(i||t)(O($i,13),O(Ci,10),O(Da,10))};static \u0275dir=de({type:t,selectors:[["","formGroupName",""]],inputs:{name:[0,"formGroupName","name"]},standalone:!1,features:[lt([pfe]),be]})}return t})();const mfe={provide:$i,useExisting:Nt(()=>du)};let du=(()=>{class t extends $i{_parent;name=null;constructor(e,i,o){super(),this._parent=e,this._setValidators(i),this._setAsyncValidators(o)}ngOnInit(){lB(this._parent),this.formDirective.addFormArray(this)}ngOnDestroy(){this.formDirective?.removeFormArray(this)}get control(){return this.formDirective.getFormArray(this)}get formDirective(){return this._parent?this._parent.formDirective:null}get path(){return Jb(null==this.name?this.name:this.name.toString(),this._parent)}static \u0275fac=function(i){return new(i||t)(O($i,13),O(Ci,10),O(Da,10))};static \u0275dir=de({type:t,selectors:[["","formArrayName",""]],inputs:{name:[0,"formArrayName","name"]},standalone:!1,features:[lt([mfe]),be]})}return t})();function lB(t){return!(t instanceof sc||t instanceof rv||t instanceof du)}const gfe={provide:Zr,useExisting:Nt(()=>mn)};let mn=(()=>{class t extends Zr{_ngModelWarningConfig;_added=!1;viewModel;control;name=null;set isDisabled(e){}model;update=new we;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(e,i,o,r,s){super(),this._ngModelWarningConfig=s,this._parent=e,this._setValidators(i),this._setAsyncValidators(o),this.valueAccessor=sk(0,r)}ngOnChanges(e){this._added||this._setUpControl(),rk(e,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective?.removeControl(this)}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}get path(){return Jb(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_setUpControl(){this.control=this.formDirective.addControl(this),this._added=!0}static \u0275fac=function(i){return new(i||t)(O($i,13),O(Ci,10),O(Da,10),O(Yo,10),O(ak,8))};static \u0275dir=de({type:t,selectors:[["","formControlName",""]],inputs:{name:[0,"formControlName","name"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},standalone:!1,features:[lt([gfe]),be,_i]})}return t})();const _fe={provide:$i,useExisting:Nt(()=>on)};let on=(()=>{class t extends rv{form=null;ngSubmit=new we;get control(){return this.form}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","formGroup",""]],hostBindings:function(i,o){1&i&&F("submit",function(s){return o.onSubmit(s)})("reset",function(){return o.onReset()})},inputs:{form:[0,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[lt([_fe]),be]})}return t})();function hB(t){return"number"==typeof t?t:parseFloat(t)}let ac=(()=>{class t{_validator=Gb;_onChange;_enabled;ngOnChanges(e){if(this.inputName in e){const i=this.normalizeInput(e[this.inputName].currentValue);this._enabled=this.enabled(i),this._validator=this._enabled?this.createValidator(i):Gb,this._onChange?.()}}validate(e){return this._validator(e)}registerOnValidatorChange(e){this._onChange=e}enabled(e){return null!=e}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,features:[_i]})}return t})();const Sfe={provide:Ci,useExisting:Nt(()=>sv),multi:!0};let sv=(()=>{class t extends ac{max;inputName="max";normalizeInput=e=>hB(e);createValidator=e=>x5(e);static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["input","type","number","max","","formControlName",""],["input","type","number","max","","formControl",""],["input","type","number","max","","ngModel",""]],hostVars:1,hostBindings:function(i,o){2&i&&$e("max",o._enabled?o.max:null)},inputs:{max:"max"},standalone:!1,features:[lt([Sfe]),be]})}return t})();const kfe={provide:Ci,useExisting:Nt(()=>tp),multi:!0};let tp=(()=>{class t extends ac{min;inputName="min";normalizeInput=e=>hB(e);createValidator=e=>w5(e);static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["input","type","number","min","","formControlName",""],["input","type","number","min","","formControl",""],["input","type","number","min","","ngModel",""]],hostVars:1,hostBindings:function(i,o){2&i&&$e("min",o._enabled?o.min:null)},inputs:{min:"min"},standalone:!1,features:[lt([kfe]),be]})}return t})();const Pfe={provide:Ci,useExisting:Nt(()=>wi),multi:!0};let wi=(()=>{class t extends ac{maxlength;inputName="maxlength";normalizeInput=e=>function uB(t){return"number"==typeof t?t:parseInt(t,10)}(e);createValidator=e=>T5(e);static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(i,o){2&i&&$e("maxlength",o._enabled?o.maxlength:null)},inputs:{maxlength:"maxlength"},standalone:!1,features:[lt([Pfe]),be]})}return t})(),_B=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function bB(t){return!!t&&(void 0!==t.asyncValidators||void 0!==t.validators||void 0!==t.updateOn)}let vB=(()=>{class t{useNonNullable=!1;get nonNullable(){const e=new t;return e.useNonNullable=!0,e}group(e,i=null){const o=this._reduceControls(e);let r={};return bB(i)?r=i:null!==i&&(r.validators=i.validator,r.asyncValidators=i.asyncValidator),new ru(o,r)}record(e,i=null){const o=this._reduceControls(e);return new X5(o,i)}control(e,i,o){let r={};return this.useNonNullable?(bB(i)?r=i:(r.validators=i,r.asyncValidators=o),new au(e,{...r,nonNullable:!0})):new au(e,i,o)}array(e,i,o){const r=e.map(s=>this._createControl(s));return new rB(r,i,o)}_reduceControls(e){const i={};return Object.keys(e).forEach(o=>{i[o]=this._createControl(e[o])}),i}_createControl(e){return e instanceof au||e instanceof Qb?e:Array.isArray(e)?this.control(e[0],e.length>1?e[1]:null,e.length>2?e[2]:null):this.control(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),di=(()=>{class t extends vB{group(e,i=null){return super.group(e,i)}control(e,i,o){return super.control(e,i,o)}array(e,i,o){return super.array(e,i,o)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Ofe=(()=>{class t{static withConfig(e){return{ngModule:t,providers:[{provide:oc,useValue:e.callSetDisabledState??Qf}]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[_B]})}return t})(),Afe=(()=>{class t{static withConfig(e){return{ngModule:t,providers:[{provide:ak,useValue:e.warnOnNgModelWithFormControl??"always"},{provide:oc,useValue:e.callSetDisabledState??Qf}]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[_B]})}return t})();function uu(t){return null!=t&&"false"!=`${t}`}class Ffe{_box;_destroyed=new me;_resizeSubject=new me;_resizeObserver;_elementObservables=new Map;constructor(n){this._box=n,typeof ResizeObserver<"u"&&(this._resizeObserver=new ResizeObserver(e=>this._resizeSubject.next(e)))}observe(n){return this._elementObservables.has(n)||this._elementObservables.set(n,new Ft(e=>{const i=this._resizeSubject.subscribe(e);return this._resizeObserver?.observe(n,{box:this._box}),()=>{this._resizeObserver?.unobserve(n),i.unsubscribe(),this._elementObservables.delete(n)}}).pipe(Tn(e=>e.some(i=>i.target===n)),NS({bufferSize:1,refCount:!0}),fn(this._destroyed))),this._elementObservables.get(n)}destroy(){this._destroyed.next(),this._destroyed.complete(),this._resizeSubject.complete(),this._elementObservables.clear()}}let yB=(()=>{class t{_cleanupErrorListener;_observers=new Map;_ngZone=D(_e);constructor(){}ngOnDestroy(){for(const[,e]of this._observers)e.destroy();this._observers.clear(),this._cleanupErrorListener?.()}observe(e,i){const o=i?.box||"content-box";return this._observers.has(o)||this._observers.set(o,new Ffe(o)),this._observers.get(o).observe(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Nfe=["notch"],Lfe=["matFormFieldNotchedOutline",""],Bfe=["*"],CB=["iconPrefixContainer"],wB=["textPrefixContainer"],xB=["iconSuffixContainer"],SB=["textSuffixContainer"],Vfe=["textField"],Hfe=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],jfe=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];function Ufe(t,n){1&t&&B(0,"span",21)}function zfe(t,n){if(1&t&&(h(0,"label",20),Pt(1,1),x(2,Ufe,1,0,"span",21),u()),2&t){const e=v(2);C("floating",e._shouldLabelFloat())("monitorResize",e._hasOutline())("id",e._labelId),$e("for",e._control.disableAutomaticLabeling?null:e._control.id),d(2),S(!e.hideRequiredMarker&&e._control.required?2:-1)}}function $fe(t,n){1&t&&x(0,zfe,3,5,"label",20),2&t&&S(v()._hasFloatingLabel()?0:-1)}function Wfe(t,n){1&t&&B(0,"div",7)}function Gfe(t,n){}function qfe(t,n){1&t&&it(0,Gfe,0,0,"ng-template",13),2&t&&(v(2),C("ngTemplateOutlet",Hn(1)))}function Kfe(t,n){if(1&t&&(h(0,"div",9),x(1,qfe,1,1,null,13),u()),2&t){const e=v();C("matFormFieldNotchedOutlineOpen",e._shouldLabelFloat()),d(),S(e._forceDisplayInfixLabel()?-1:1)}}function Yfe(t,n){1&t&&(h(0,"div",10,2),Pt(2,2),u())}function Xfe(t,n){1&t&&(h(0,"div",11,3),Pt(2,3),u())}function Zfe(t,n){}function Qfe(t,n){1&t&&it(0,Zfe,0,0,"ng-template",13),2&t&&(v(),C("ngTemplateOutlet",Hn(1)))}function Jfe(t,n){1&t&&(h(0,"div",14,4),Pt(2,4),u())}function epe(t,n){1&t&&(h(0,"div",15,5),Pt(2,5),u())}function tpe(t,n){1&t&&B(0,"div",16)}function npe(t,n){1&t&&(h(0,"div",18),Pt(1,6),u())}function ipe(t,n){if(1&t&&(h(0,"mat-hint",22),p(1),u()),2&t){const e=v(2);C("id",e._hintLabelId),d(),M(e.hintLabel)}}function ope(t,n){if(1&t&&(h(0,"div",19),x(1,ipe,2,2,"mat-hint",22),Pt(2,7),B(3,"div",23),Pt(4,8),u()),2&t){const e=v();d(),S(e.hintLabel?1:-1)}}let Os=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-label"]]})}return t})();const kB=new Z("MatError");let Ma=(()=>{class t{id=D(ni).getId("mat-mdc-error-");constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-error"],["","matError",""]],hostAttrs:[1,"mat-mdc-form-field-error","mat-mdc-form-field-bottom-align"],hostVars:1,hostBindings:function(i,o){2&i&&ur("id",o.id)},inputs:{id:"id"},features:[lt([{provide:kB,useExisting:t}])]})}return t})(),uk=(()=>{class t{align="start";id=D(ni).getId("mat-mdc-hint-");static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(i,o){2&i&&(ur("id",o.id),$e("align",null),Ie("mat-mdc-form-field-hint-end","end"===o.align))},inputs:{align:"align",id:"id"}})}return t})();const rpe=new Z("MatPrefix"),spe=new Z("MatSuffix"),DB=new Z("FloatingLabelParent");let MB=(()=>{class t{_elementRef=D(Re);get floating(){return this._floating}set floating(e){this._floating=e,this.monitorResize&&this._handleResize()}_floating=!1;get monitorResize(){return this._monitorResize}set monitorResize(e){this._monitorResize=e,this._monitorResize?this._subscribeToResize():this._resizeSubscription.unsubscribe()}_monitorResize=!1;_resizeObserver=D(yB);_ngZone=D(_e);_parent=D(DB);_resizeSubscription=new pt;constructor(){}ngOnDestroy(){this._resizeSubscription.unsubscribe()}getWidth(){return function ape(t){if(null!==t.offsetParent)return t.scrollWidth;const e=t.cloneNode(!0);e.style.setProperty("position","absolute"),e.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(e);const i=e.scrollWidth;return e.remove(),i}(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}_handleResize(){setTimeout(()=>this._parent._handleLabelResized())}_subscribeToResize(){this._resizeSubscription.unsubscribe(),this._ngZone.runOutsideAngular(()=>{this._resizeSubscription=this._resizeObserver.observe(this._elementRef.nativeElement,{box:"border-box"}).subscribe(()=>this._handleResize())})}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(i,o){2&i&&Ie("mdc-floating-label--float-above",o.floating)},inputs:{floating:"floating",monitorResize:"monitorResize"}})}return t})();const TB="mdc-line-ripple--active",av="mdc-line-ripple--deactivating";let EB=(()=>{class t{_elementRef=D(Re);_cleanupTransitionEnd;constructor(){const e=D(_e),i=D(Qn);e.runOutsideAngular(()=>{this._cleanupTransitionEnd=i.listen(this._elementRef.nativeElement,"transitionend",this._handleTransitionEnd)})}activate(){const e=this._elementRef.nativeElement.classList;e.remove(av),e.add(TB)}deactivate(){this._elementRef.nativeElement.classList.add(av)}_handleTransitionEnd=e=>{const i=this._elementRef.nativeElement.classList,o=i.contains(av);"opacity"===e.propertyName&&o&&i.remove(TB,av)};ngOnDestroy(){this._cleanupTransitionEnd()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"]})}return t})(),PB=(()=>{class t{_elementRef=D(Re);_ngZone=D(_e);open=!1;_notch;ngAfterViewInit(){const e=this._elementRef.nativeElement,i=e.querySelector(".mdc-floating-label");i?(e.classList.add("mdc-notched-outline--upgraded"),"function"==typeof requestAnimationFrame&&(i.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>i.style.transitionDuration="")}))):e.classList.add("mdc-notched-outline--no-label")}_setNotchWidth(e){this._notch.nativeElement.style.width=this.open&&e?`calc(${e}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`:""}_setMaxWidth(e){this._notch.nativeElement.style.setProperty("--mat-form-field-notch-max-width",`calc(100% - ${e}px)`)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["div","matFormFieldNotchedOutline",""]],viewQuery:function(i,o){if(1&i&&ot(Nfe,5),2&i){let r;he(r=fe())&&(o._notch=r.first)}},hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(i,o){2&i&&Ie("mdc-notched-outline--notched",o.open)},inputs:{open:[0,"matFormFieldNotchedOutlineOpen","open"]},attrs:Lfe,ngContentSelectors:Bfe,decls:5,vars:0,consts:[["notch",""],[1,"mat-mdc-notch-piece","mdc-notched-outline__leading"],[1,"mat-mdc-notch-piece","mdc-notched-outline__notch"],[1,"mat-mdc-notch-piece","mdc-notched-outline__trailing"]],template:function(i,o){1&i&&(yi(),ca(0,"div",1),vs(1,"div",2,0),Pt(3),Ol(),ca(4,"div",3))},encapsulation:2,changeDetection:0})}return t})(),hk=(()=>{class t{value=null;stateChanges;id;placeholder;ngControl=null;focused=!1;empty=!1;shouldLabelFloat=!1;required=!1;disabled=!1;errorState=!1;controlType;autofilled;userAriaDescribedBy;disableAutomaticLabeling;describedByIds;static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t})}return t})();const fk=new Z("MatFormField"),lpe=new Z("MAT_FORM_FIELD_DEFAULT_OPTIONS");let hu,sn=(()=>{class t{_elementRef=D(Re);_changeDetectorRef=D(Jt);_platform=D(Yn);_idGenerator=D(ni);_ngZone=D(_e);_defaults=D(lpe,{optional:!0});_currentDirection;_textField;_iconPrefixContainer;_textPrefixContainer;_iconSuffixContainer;_textSuffixContainer;_floatingLabel;_notchedOutline;_lineRipple;_iconPrefixContainerSignal=l_("iconPrefixContainer");_textPrefixContainerSignal=l_("textPrefixContainer");_iconSuffixContainerSignal=l_("iconSuffixContainer");_textSuffixContainerSignal=l_("textSuffixContainer");_prefixSuffixContainers=Ii(()=>[this._iconPrefixContainerSignal(),this._textPrefixContainerSignal(),this._iconSuffixContainerSignal(),this._textSuffixContainerSignal()].map(e=>e?.nativeElement).filter(e=>void 0!==e));_formFieldControl;_prefixChildren;_suffixChildren;_errorChildren;_hintChildren;_labelChild=lee(Os);get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(e){this._hideRequiredMarker=uu(e)}_hideRequiredMarker=!1;color="primary";get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||"auto"}set floatLabel(e){e!==this._floatLabel&&(this._floatLabel=e,this._changeDetectorRef.markForCheck())}_floatLabel;get appearance(){return this._appearanceSignal()}set appearance(e){this._appearanceSignal.set(e||this._defaults?.appearance||"fill")}_appearanceSignal=yt("fill");get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||"fixed"}set subscriptSizing(e){this._subscriptSizing=e||this._defaults?.subscriptSizing||"fixed"}_subscriptSizing=null;get hintLabel(){return this._hintLabel}set hintLabel(e){this._hintLabel=e,this._processHints()}_hintLabel="";_hasIconPrefix=!1;_hasTextPrefix=!1;_hasIconSuffix=!1;_hasTextSuffix=!1;_labelId=this._idGenerator.getId("mat-mdc-form-field-label-");_hintLabelId=this._idGenerator.getId("mat-mdc-hint-");_describedByIds;get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(e){this._explicitFormFieldControl=e}_destroyed=new me;_isFocused=null;_explicitFormFieldControl;_previousControl=null;_previousControlValidatorFn=null;_stateChanges;_valueChanges;_describedByChanges;_outlineLabelOffsetResizeObserver=null;_animationsDisabled=ci();constructor(){const e=this._defaults,i=D(br);e&&(e.appearance&&(this.appearance=e.appearance),this._hideRequiredMarker=!!e?.hideRequiredMarker,e.color&&(this.color=e.color)),fm(()=>this._currentDirection=i.valueSignal()),this._syncOutlineLabelOffset()}ngAfterViewInit(){this._updateFocusState(),this._animationsDisabled||this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-form-field-animations-enabled")},300)}),this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeSubscript(),this._initializePrefixAndSuffix()}ngAfterContentChecked(){this._assertFormFieldControl(),this._control!==this._previousControl&&(this._initializeControl(this._previousControl),this._control.ngControl&&this._control.ngControl.control&&(this._previousControlValidatorFn=this._control.ngControl.control.validator),this._previousControl=this._control),this._control.ngControl&&this._control.ngControl.control&&this._control.ngControl.control.validator!==this._previousControlValidatorFn&&this._changeDetectorRef.markForCheck()}ngOnDestroy(){this._outlineLabelOffsetResizeObserver?.disconnect(),this._stateChanges?.unsubscribe(),this._valueChanges?.unsubscribe(),this._describedByChanges?.unsubscribe(),this._destroyed.next(),this._destroyed.complete()}getLabelId=Ii(()=>this._hasFloatingLabel()?this._labelId:null);getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(e){const i=this._control,o="mat-mdc-form-field-type-";e&&this._elementRef.nativeElement.classList.remove(o+e.controlType),i.controlType&&this._elementRef.nativeElement.classList.add(o+i.controlType),this._stateChanges?.unsubscribe(),this._stateChanges=i.stateChanges.subscribe(()=>{this._updateFocusState(),this._changeDetectorRef.markForCheck()}),this._describedByChanges?.unsubscribe(),this._describedByChanges=i.stateChanges.pipe(si([void 0,void 0]),Se(()=>[i.errorState,i.userAriaDescribedBy]),function Rfe(){return Mn((t,n)=>{let e,i=!1;t.subscribe(dn(n,o=>{const r=e;e=o,i&&n.next([r,o]),i=!0}))})}(),Tn(([[r,s],[a,l]])=>r!==a||s!==l)).subscribe(()=>this._syncDescribedByIds()),this._valueChanges?.unsubscribe(),i.ngControl&&i.ngControl.valueChanges&&(this._valueChanges=i.ngControl.valueChanges.pipe(fn(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck()))}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(e=>!e._isText),this._hasTextPrefix=!!this._prefixChildren.find(e=>e._isText),this._hasIconSuffix=!!this._suffixChildren.find(e=>!e._isText),this._hasTextSuffix=!!this._suffixChildren.find(e=>e._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),Cr(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){}_updateFocusState(){const e=this._control.focused;e&&!this._isFocused?(this._isFocused=!0,this._lineRipple?.activate()):!e&&(this._isFocused||null===this._isFocused)&&(this._isFocused=!1,this._lineRipple?.deactivate()),this._elementRef.nativeElement.classList.toggle("mat-focused",e),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",e)}_syncOutlineLabelOffset(){!function cte(t,n){const e=n?.injector??D(He),i=e.get(al),o=e.get(u1),r=e.get(oa,null,{optional:!0});o.impl??=e.get(SE);let s=t;"function"==typeof s&&(s={mixedReadWrite:t});const a=e.get(dm,null,{optional:!0}),l=new lte(o.impl,[s.earlyRead,s.write,s.mixedReadWrite,s.read],a?.view,i,e,r?.snapshot(null));o.impl.register(l)}({earlyRead:()=>{if("outline"!==this._appearanceSignal())return this._outlineLabelOffsetResizeObserver?.disconnect(),null;if(globalThis.ResizeObserver){this._outlineLabelOffsetResizeObserver||=new globalThis.ResizeObserver(()=>{this._writeOutlinedLabelStyles(this._getOutlinedLabelOffset())});for(const e of this._prefixSuffixContainers())this._outlineLabelOffsetResizeObserver.observe(e,{box:"border-box"})}return this._getOutlinedLabelOffset()},write:e=>this._writeOutlinedLabelStyles(e())})}_shouldAlwaysFloat(){return"always"===this.floatLabel}_hasOutline(){return"outline"===this.appearance}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel=Ii(()=>!!this._labelChild());_shouldLabelFloat(){return!!this._hasFloatingLabel()&&(this._control.shouldLabelFloat||this._shouldAlwaysFloat())}_shouldForward(e){const i=this._control?this._control.ngControl:null;return i&&i[e]}_getSubscriptMessageType(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_handleLabelResized(){this._refreshOutlineNotchWidth()}_refreshOutlineNotchWidth(){this._hasOutline()&&this._floatingLabel&&this._shouldLabelFloat()?this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth()):this._notchedOutline?._setNotchWidth(0)}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){}_syncDescribedByIds(){if(this._control){let e=[];if(this._control.userAriaDescribedBy&&"string"==typeof this._control.userAriaDescribedBy&&e.push(...this._control.userAriaDescribedBy.split(" ")),"hint"===this._getSubscriptMessageType()){const r=this._hintChildren?this._hintChildren.find(a=>"start"===a.align):null,s=this._hintChildren?this._hintChildren.find(a=>"end"===a.align):null;r?e.push(r.id):this._hintLabel&&e.push(this._hintLabelId),s&&e.push(s.id)}else this._errorChildren&&e.push(...this._errorChildren.map(r=>r.id));const i=this._control.describedByIds;let o;if(i){const r=this._describedByIds||e;o=e.concat(i.filter(s=>s&&!r.includes(s)))}else o=e;this._control.setDescribedByIds(o),this._describedByIds=e}}_getOutlinedLabelOffset(){if(!this._hasOutline()||!this._floatingLabel)return null;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return["",null];if(!this._isAttachedToDom())return null;const e=this._iconPrefixContainer?.nativeElement,i=this._textPrefixContainer?.nativeElement,o=this._iconSuffixContainer?.nativeElement,r=this._textSuffixContainer?.nativeElement,s=e?.getBoundingClientRect().width??0,a=i?.getBoundingClientRect().width??0,l=o?.getBoundingClientRect().width??0,c=r?.getBoundingClientRect().width??0;return[`var(--mat-mdc-form-field-label-transform, translateY(-50%) translateX(calc(${"rtl"===this._currentDirection?"-1":"1"} * (${s+a}px + var(--mat-mdc-form-field-label-offset-x, 0px)))))`,s+a+l+c]}_writeOutlinedLabelStyles(e){if(null!==e){const[i,o]=e;this._floatingLabel&&(this._floatingLabel.element.style.transform=i),null!==o&&this._notchedOutline?._setMaxWidth(o)}}_isAttachedToDom(){const e=this._elementRef.nativeElement;if(e.getRootNode){const i=e.getRootNode();return i&&i!==e}return document.documentElement.contains(e)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-form-field"]],contentQueries:function(i,o,r){if(1&i&&(A0(r,o._labelChild,Os,5),ys(r,hk,5)(r,rpe,5)(r,spe,5)(r,kB,5)(r,uk,5)),2&i){let s;F0(),he(s=fe())&&(o._formFieldControl=s.first),he(s=fe())&&(o._prefixChildren=s),he(s=fe())&&(o._suffixChildren=s),he(s=fe())&&(o._errorChildren=s),he(s=fe())&&(o._hintChildren=s)}},viewQuery:function(i,o){if(1&i&&(R0(o._iconPrefixContainerSignal,CB,5)(o._textPrefixContainerSignal,wB,5)(o._iconSuffixContainerSignal,xB,5)(o._textSuffixContainerSignal,SB,5),ot(Vfe,5)(CB,5)(wB,5)(xB,5)(SB,5)(MB,5)(PB,5)(EB,5)),2&i){let r;F0(4),he(r=fe())&&(o._textField=r.first),he(r=fe())&&(o._iconPrefixContainer=r.first),he(r=fe())&&(o._textPrefixContainer=r.first),he(r=fe())&&(o._iconSuffixContainer=r.first),he(r=fe())&&(o._textSuffixContainer=r.first),he(r=fe())&&(o._floatingLabel=r.first),he(r=fe())&&(o._notchedOutline=r.first),he(r=fe())&&(o._lineRipple=r.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:38,hostBindings:function(i,o){2&i&&Ie("mat-mdc-form-field-label-always-float",o._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",o._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",o._hasIconSuffix)("mat-form-field-invalid",o._control.errorState)("mat-form-field-disabled",o._control.disabled)("mat-form-field-autofilled",o._control.autofilled)("mat-form-field-appearance-fill","fill"==o.appearance)("mat-form-field-appearance-outline","outline"==o.appearance)("mat-form-field-hide-placeholder",o._hasFloatingLabel()&&!o._shouldLabelFloat())("mat-primary","accent"!==o.color&&"warn"!==o.color)("mat-accent","accent"===o.color)("mat-warn","warn"===o.color)("ng-untouched",o._shouldForward("untouched"))("ng-touched",o._shouldForward("touched"))("ng-pristine",o._shouldForward("pristine"))("ng-dirty",o._shouldForward("dirty"))("ng-valid",o._shouldForward("valid"))("ng-invalid",o._shouldForward("invalid"))("ng-pending",o._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],features:[lt([{provide:fk,useExisting:t},{provide:DB,useExisting:t}])],ngContentSelectors:jfe,decls:18,vars:21,consts:[["labelTemplate",""],["textField",""],["iconPrefixContainer",""],["textPrefixContainer",""],["textSuffixContainer",""],["iconSuffixContainer",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],[1,"mat-mdc-form-field-focus-overlay"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen"],[1,"mat-mdc-form-field-icon-prefix"],[1,"mat-mdc-form-field-text-prefix"],[1,"mat-mdc-form-field-infix"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],["aria-atomic","true","aria-live","polite",1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align"],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],["matFormFieldFloatingLabel","",3,"floating","monitorResize","id"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[3,"id"],[1,"mat-mdc-form-field-hint-spacer"]],template:function(i,o){if(1&i&&(yi(Hfe),it(0,$fe,1,1,"ng-template",null,0,Rl),h(2,"div",6,1),F("click",function(s){return o._control.onContainerClick(s)}),x(4,Wfe,1,0,"div",7),h(5,"div",8),x(6,Kfe,2,2,"div",9),x(7,Yfe,3,0,"div",10),x(8,Xfe,3,0,"div",11),h(9,"div",12),x(10,Qfe,1,1,null,13),Pt(11),u(),x(12,Jfe,3,0,"div",14),x(13,epe,3,0,"div",15),u(),x(14,tpe,1,0,"div",16),u(),h(15,"div",17),x(16,npe,2,0,"div",18)(17,ope,5,1,"div",19),u()),2&i){let r;d(2),Ie("mdc-text-field--filled",!o._hasOutline())("mdc-text-field--outlined",o._hasOutline())("mdc-text-field--no-label",!o._hasFloatingLabel())("mdc-text-field--disabled",o._control.disabled)("mdc-text-field--invalid",o._control.errorState),d(2),S(o._hasOutline()||o._control.disabled?-1:4),d(2),S(o._hasOutline()?6:-1),d(),S(o._hasIconPrefix?7:-1),d(),S(o._hasTextPrefix?8:-1),d(2),S(!o._hasOutline()||o._forceDisplayInfixLabel()?10:-1),d(2),S(o._hasTextSuffix?12:-1),d(),S(o._hasIconSuffix?13:-1),d(),S(o._hasOutline()?-1:14),d(),Ie("mat-mdc-form-field-subscript-dynamic-size","dynamic"===o.subscriptSizing);const s=o._getSubscriptMessageType();d(),S("error"===(r=s)?16:"hint"===r?17:-1)}},dependencies:[MB,PB,Ld,EB,uk],styles:['.mdc-text-field{display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field__input{width:100%;min-width:0;border:none;border-radius:0;background:none;padding:0;-moz-appearance:none;-webkit-appearance:none;height:28px}.mdc-text-field__input::-webkit-calendar-picker-indicator,.mdc-text-field__input::-webkit-search-cancel-button{display:none}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}.mdc-text-field__input::placeholder{opacity:0}.mdc-text-field__input::-moz-placeholder{opacity:0}.mdc-text-field__input::-webkit-input-placeholder{opacity:0}.mdc-text-field__input:-ms-input-placeholder{opacity:0}.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-moz-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-webkit-input-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive:-ms-input-placeholder{opacity:0}.mdc-text-field--outlined .mdc-text-field__input,.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mat-form-field-filled-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mat-form-field-filled-caret-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mat-form-field-outlined-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mat-form-field-outlined-caret-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mat-form-field-filled-error-caret-color, var(--mat-sys-error))}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mat-form-field-outlined-error-caret-color, var(--mat-sys-error))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mat-form-field-filled-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mat-form-field-outlined-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}}.mdc-text-field--filled{height:56px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));border-top-right-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mat-form-field-filled-container-color, var(--mat-sys-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mat-form-field-filled-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 4%, transparent))}.mdc-text-field--outlined{height:56px;overflow:visible;padding-right:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)));padding-left:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)) + 4px)}[dir=rtl] .mdc-text-field--outlined{padding-right:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)) + 4px);padding-left:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)))}.mdc-floating-label{position:absolute;left:0;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label{right:0;left:auto;transform-origin:right top;text-align:right}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:auto}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label{left:auto;right:4px}.mdc-text-field--filled .mdc-floating-label{left:16px;right:auto}[dir=rtl] .mdc-text-field--filled .mdc-floating-label{left:auto;right:16px}.mdc-text-field--disabled .mdc-floating-label{cursor:default}@media(forced-colors: active){.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mat-form-field-filled-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-filled-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mat-form-field-filled-hover-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label{color:var(--mat-form-field-filled-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mat-form-field-filled-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-filled-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mat-form-field-filled-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mat-form-field-filled-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-form-field-filled-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-form-field-filled-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-form-field-filled-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mat-form-field-outlined-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-outlined-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mat-form-field-outlined-hover-label-text-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label{color:var(--mat-form-field-outlined-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mat-form-field-outlined-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-outlined-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mat-form-field-outlined-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mat-form-field-outlined-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-form-field-outlined-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-form-field-outlined-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-form-field-outlined-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-floating-label--float-above{cursor:auto;transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1);font-size:.75rem}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0;content:"*"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline{text-align:right}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mat-mdc-notch-piece{box-sizing:border-box;height:100%;pointer-events:none;border:none;border-top:1px solid;border-bottom:1px solid}.mdc-text-field--focused .mat-mdc-notch-piece{border-width:2px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-outline-color, var(--mat-sys-outline));border-width:var(--mat-form-field-outlined-outline-width, 1px)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-hover-outline-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-focus-outline-color, var(--mat-sys-primary))}.mdc-text-field--outlined.mdc-text-field--disabled .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-notched-outline .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-hover-outline-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-focus-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mat-mdc-notch-piece{border-width:var(--mat-form-field-outlined-focus-outline-width, 2px)}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)))}[dir=rtl] .mdc-notched-outline__leading{border-left:none;border-right:1px solid;border-bottom-left-radius:0;border-top-left-radius:0;border-top-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__trailing{flex-grow:1;border-left:none;border-right:1px solid;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}[dir=rtl] .mdc-notched-outline__trailing{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:min(var(--mat-form-field-notch-max-width, 100%),calc(100% - max(12px, var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))) * 2))}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{max-width:min(100%,calc(100% - max(12px, var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))) * 2))}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{z-index:1;border-bottom-width:var(--mat-form-field-filled-active-indicator-height, 1px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-active-indicator-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-hover-active-indicator-color, var(--mat-sys-on-surface))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-disabled-active-indicator-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-error-active-indicator-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-error-hover-active-indicator-color, var(--mat-sys-on-error-container))}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mat-form-field-filled-focus-active-indicator-height, 2px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mat-form-field-filled-focus-active-indicator-color, var(--mat-sys-primary))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mat-form-field-filled-error-focus-active-indicator-color, var(--mat-sys-error))}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-text-field--disabled{pointer-events:none}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all;will-change:auto}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto;will-change:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:var(--mat-form-field-container-height, 56px);padding-top:var(--mat-form-field-filled-with-label-container-padding-top, 24px);padding-bottom:var(--mat-form-field-filled-with-label-container-padding-bottom, 8px)}.mdc-text-field--outlined .mat-mdc-form-field-infix,.mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:var(--mat-form-field-container-vertical-padding, 16px);padding-bottom:var(--mat-form-field-container-vertical-padding, 16px)}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:calc(var(--mat-form-field-container-height, 56px)/2)}.mdc-text-field--filled .mat-mdc-floating-label{display:var(--mat-form-field-filled-label-display, block)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(calc(calc(6.75px + var(--mat-form-field-container-height, 56px) / 2) * -1)) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}@keyframes _mat-form-field-subscript-animation{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px;opacity:1;transform:translateY(0);animation:_mat-form-field-subscript-animation 0ms cubic-bezier(0.55, 0, 0.55, 0.2)}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block;color:var(--mat-form-field-error-text-color, var(--mat-sys-error))}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font, var(--mat-sys-body-small-font));line-height:var(--mat-form-field-subscript-text-line-height, var(--mat-sys-body-small-line-height));font-size:var(--mat-form-field-subscript-text-size, var(--mat-sys-body-small-size));letter-spacing:var(--mat-form-field-subscript-text-tracking, var(--mat-sys-body-small-tracking));font-weight:var(--mat-form-field-subscript-text-weight, var(--mat-sys-body-small-weight))}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none;background-color:var(--mat-form-field-state-layer-color, var(--mat-sys-on-surface))}.mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-focus-state-layer-opacity, 0)}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:var(--mat-form-field-select-option-text-color, var(--mat-sys-neutral10))}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:var(--mat-form-field-select-disabled-option-text-color, color-mix(in srgb, var(--mat-sys-neutral10) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none;color:var(--mat-form-field-enabled-select-arrow-color, var(--mat-sys-on-surface-variant))}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select.mat-focused .mat-mdc-form-field-infix::after{color:var(--mat-form-field-focus-select-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:var(--mat-form-field-disabled-select-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}@media(forced-colors: active){.mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}}@media(forced-colors: active){.mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-form-field-container-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-form-field-container-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-form-field-container-text-tracking, var(--mat-sys-body-large-tracking));font-weight:var(--mat-form-field-container-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size)*var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%;z-index:0}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px;box-sizing:content-box}.mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-leading-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-disabled-leading-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-trailing-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-disabled-trailing-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-invalid .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-trailing-icon-color, var(--mat-sys-error))}.mat-form-field-invalid:not(.mat-focused):not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-hover-trailing-icon-color, var(--mat-sys-on-error-container))}.mat-form-field-invalid.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-focus-trailing-icon-color, var(--mat-sys-error))}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field-infix:has(textarea[cols]){width:auto}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::-moz-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::-webkit-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field.mat-form-field-animations-enabled .mat-mdc-form-field-error-wrapper{animation-duration:300ms}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}\n'],encapsulation:2,changeDetection:0})}return t})();const AB=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function RB(){if(hu)return hu;if("object"!=typeof document||!document)return hu=new Set(AB),hu;let t=document.createElement("input");return hu=new Set(AB.filter(n=>(t.setAttribute("type",n),t.type===n))),hu}let upe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["ng-component"]],hostAttrs:["cdk-text-field-style-loader",""],decls:0,vars:0,template:function(i,o){},styles:["textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0 !important;box-sizing:content-box !important;height:auto !important;overflow:hidden !important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0 !important;box-sizing:content-box !important;height:0 !important}@keyframes cdk-text-field-autofill-start{/*!*/}@keyframes cdk-text-field-autofill-end{/*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}\n"],encapsulation:2,changeDetection:0})}return t})();const hpe={passive:!0};let fpe=(()=>{class t{_platform=D(Yn);_ngZone=D(_e);_renderer=D(Lo).createRenderer(null,null);_styleLoader=D(zo);_monitoredElements=new Map;constructor(){}monitor(e){if(!this._platform.isBrowser)return Oi;this._styleLoader.load(upe);const i=Ps(e),o=this._monitoredElements.get(i);if(o)return o.subject;const r=new me,s="cdk-text-field-autofilled",a=c=>{"cdk-text-field-autofill-start"!==c.animationName||i.classList.contains(s)?"cdk-text-field-autofill-end"===c.animationName&&i.classList.contains(s)&&(i.classList.remove(s),this._ngZone.run(()=>r.next({target:c.target,isAutofilled:!1}))):(i.classList.add(s),this._ngZone.run(()=>r.next({target:c.target,isAutofilled:!0})))},l=this._ngZone.runOutsideAngular(()=>(i.classList.add("cdk-text-field-autofill-monitored"),this._renderer.listen(i,"animationstart",a,hpe)));return this._monitoredElements.set(i,{subject:r,unlisten:l}),r}stopMonitoring(e){const i=Ps(e),o=this._monitoredElements.get(i);o&&(o.unlisten(),o.subject.complete(),i.classList.remove("cdk-text-field-autofill-monitored"),i.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(i))}ngOnDestroy(){this._monitoredElements.forEach((e,i)=>this.stopMonitoring(i))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),ppe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();const mpe=new Z("MAT_INPUT_VALUE_ACCESSOR");let gpe=(()=>{class t{isErrorState(e,i){return!!(e&&e.invalid&&(e.dirty||i&&i.submitted))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),pk=(()=>{class t{isErrorState(e,i){return!!(e&&e.invalid&&(e.touched||i&&i.submitted))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class FB{_defaultMatcher;ngControl;_parentFormGroup;_parentForm;_stateChanges;errorState=!1;matcher;constructor(n,e,i,o,r){this._defaultMatcher=n,this.ngControl=e,this._parentFormGroup=i,this._parentForm=o,this._stateChanges=r}updateErrorState(){const n=this.errorState,e=this._parentFormGroup||this._parentForm,i=this.matcher||this._defaultMatcher,o=this.ngControl?this.ngControl.control:null,r=i?.isErrorState(o,e)??!1;r!==n&&(this.errorState=r,this._stateChanges.next())}}let lv=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[r4,sn,ii]})}return t})();const _pe=["button","checkbox","file","hidden","image","radio","range","reset","submit"],bpe=new Z("MAT_INPUT_CONFIG");let In=(()=>{class t{_elementRef=D(Re);_platform=D(Yn);ngControl=D(Zr,{optional:!0,self:!0});_autofillMonitor=D(fpe);_ngZone=D(_e);_formField=D(fk,{optional:!0});_renderer=D(Qn);_uid=D(ni).getId("mat-input-");_previousNativeValue;_inputValueAccessor;_signalBasedValueAccessor;_previousPlaceholder=null;_errorStateTracker;_config=D(bpe,{optional:!0});_cleanupIosKeyup;_cleanupWebkitWheel;_isServer=!1;_isNativeSelect=!1;_isTextarea=!1;_isInFormField=!1;focused=!1;stateChanges=new me;controlType="mat-input";autofilled=!1;get disabled(){return this._disabled}set disabled(e){this._disabled=uu(e),this.focused&&(this.focused=!1,this.stateChanges.next())}_disabled=!1;get id(){return this._id}set id(e){this._id=e||this._uid}_id;placeholder;name;get required(){return this._required??this.ngControl?.control?.hasValidator(Ne.required)??!1}set required(e){this._required=uu(e)}_required;get type(){return this._type}set type(e){this._type=e||"text",this._validateType(),!this._isTextarea&&RB().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}_type="text";get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}userAriaDescribedBy;get value(){return this._signalBasedValueAccessor?this._signalBasedValueAccessor.value():this._inputValueAccessor.value}set value(e){e!==this.value&&(this._signalBasedValueAccessor?this._signalBasedValueAccessor.value.set(e):this._inputValueAccessor.value=e,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(e){this._readonly=uu(e)}_readonly=!1;disabledInteractive;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}_neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(e=>RB().has(e));constructor(){const e=D(su,{optional:!0}),i=D(on,{optional:!0}),o=D(pk),r=D(mpe,{optional:!0,self:!0}),s=this._elementRef.nativeElement,a=s.nodeName.toLowerCase();r?El(r.value)?this._signalBasedValueAccessor=r:this._inputValueAccessor=r:this._inputValueAccessor=s,this._previousNativeValue=this.value,this.id=this.id,this._platform.IOS&&this._ngZone.runOutsideAngular(()=>{this._cleanupIosKeyup=this._renderer.listen(s,"keyup",this._iOSKeyupListener)}),this._errorStateTracker=new FB(o,this.ngControl,i,e,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect="select"===a,this._isTextarea="textarea"===a,this._isInFormField=!!this._formField,this.disabledInteractive=this._config?.disabledInteractive||!1,this._isNativeSelect&&(this.controlType=s.multiple?"mat-native-select-multiple":"mat-native-select"),this._signalBasedValueAccessor&&fm(()=>{this._signalBasedValueAccessor.value(),this.stateChanges.next()})}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._cleanupIosKeyup?.(),this._cleanupWebkitWheel?.()}ngDoCheck(){this.ngControl&&(this.updateErrorState(),null!==this.ngControl.disabled&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(e){this._elementRef.nativeElement.focus(e)}updateErrorState(){this._errorStateTracker.updateErrorState()}_focusChanged(e){if(e!==this.focused){if(!this._isNativeSelect&&e&&this.disabled&&this.disabledInteractive){const i=this._elementRef.nativeElement;"number"===i.type?(i.type="text",i.setSelectionRange(0,0),i.type="number"):i.setSelectionRange(0,0)}this.focused=e,this.stateChanges.next()}}_onInput(){}_dirtyCheckNativeValue(){const e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next())}_dirtyCheckPlaceholder(){const e=this._getPlaceholder();if(e!==this._previousPlaceholder){const i=this._elementRef.nativeElement;this._previousPlaceholder=e,e?i.setAttribute("placeholder",e):i.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){_pe.indexOf(this._type)}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return!(this._isNeverEmpty()||this._elementRef.nativeElement.value||this._isBadInput()||this.autofilled)}get shouldLabelFloat(){if(this._isNativeSelect){const e=this._elementRef.nativeElement,i=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&i&&i.label)}return this.focused&&!this.disabled||!this.empty}get describedByIds(){return this._elementRef.nativeElement.getAttribute("aria-describedby")?.split(" ")||[]}setDescribedByIds(e){const i=this._elementRef.nativeElement;e.length?i.setAttribute("aria-describedby",e.join(" ")):i.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){const e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}_iOSKeyupListener=e=>{const i=e.target;!i.value&&0===i.selectionStart&&0===i.selectionEnd&&(i.setSelectionRange(1,1),i.setSelectionRange(0,0))};_getReadonlyAttribute(){return this._isNativeSelect?null:this.readonly||this.disabled&&this.disabledInteractive?"true":null}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:21,hostBindings:function(i,o){1&i&&F("focus",function(){return o._focusChanged(!0)})("blur",function(){return o._focusChanged(!1)})("input",function(){return o._onInput()}),2&i&&(ur("id",o.id)("disabled",o.disabled&&!o.disabledInteractive)("required",o.required),$e("name",o.name||null)("readonly",o._getReadonlyAttribute())("aria-disabled",o.disabled&&o.disabledInteractive?"true":null)("aria-invalid",o.empty&&o.required?null:o.errorState)("aria-required",o.required)("id",o.id),Ie("mat-input-server",o._isServer)("mat-mdc-form-field-textarea-control",o._isInFormField&&o._isTextarea)("mat-mdc-form-field-input-control",o._isInFormField)("mat-mdc-input-disabled-interactive",o.disabledInteractive)("mdc-text-field__input",o._isInFormField)("mat-mdc-native-select-inline",o._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly",disabledInteractive:[2,"disabledInteractive","disabledInteractive",De]},exportAs:["matInput"],features:[lt([{provide:hk,useExisting:t}]),_i]})}return t})(),vpe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[lv,lv,ppe,ii]})}return t})();class NB{_letterKeyStream=new me;_items=[];_selectedItemIndex=-1;_pressedLetters=[];_skipPredicateFn;_selectedItem=new me;selectedItem=this._selectedItem;constructor(n,e){const i="number"==typeof e?.debounceInterval?e.debounceInterval:200;e?.skipPredicate&&(this._skipPredicateFn=e.skipPredicate),this.setItems(n),this._setupKeyHandler(i)}destroy(){this._pressedLetters=[],this._letterKeyStream.complete(),this._selectedItem.complete()}setCurrentSelectedItemIndex(n){this._selectedItemIndex=n}setItems(n){this._items=n}handleKey(n){const e=n.keyCode;n.key&&1===n.key.length?this._letterKeyStream.next(n.key.toLocaleUpperCase()):(e>=65&&e<=90||e>=48&&e<=57)&&this._letterKeyStream.next(String.fromCharCode(e))}isTyping(){return this._pressedLetters.length>0}reset(){this._pressedLetters=[]}_setupKeyHandler(n){this._letterKeyStream.pipe(ai(e=>this._pressedLetters.push(e)),Mb(n),Tn(()=>this._pressedLetters.length>0),Se(()=>this._pressedLetters.join("").toLocaleUpperCase())).subscribe(e=>{for(let i=1;io.trim()===e)&&(i.push(e),t.setAttribute(n,i.join(" ")))}function mk(t,n,e){const i=cv(t,n);e=e.trim();const o=i.filter(r=>r!==e);o.length?t.setAttribute(n,o.join(" ")):t.removeAttribute(n)}function cv(t,n){return t.getAttribute(n)?.match(/\S+/g)??[]}const HB="cdk-describedby-message",dv="cdk-describedby-host";let gk=0,xpe=(()=>{class t{_platform=D(Yn);_document=D(et);_messageRegistry=new Map;_messagesContainer=null;_id=""+gk++;constructor(){D(zo).load(gS),this._id=D(Js)+"-"+gk++}describe(e,i,o){if(!this._canBeDescribed(e,i))return;const r=_k(i,o);"string"!=typeof i?(jB(i,this._id),this._messageRegistry.set(r,{messageElement:i,referenceCount:0})):this._messageRegistry.has(r)||this._createMessageElement(i,o),this._isElementDescribedByMessage(e,r)||this._addMessageReference(e,r)}removeDescription(e,i,o){if(!i||!this._isElementNode(e))return;const r=_k(i,o);if(this._isElementDescribedByMessage(e,r)&&this._removeMessageReference(e,r),"string"==typeof i){const s=this._messageRegistry.get(r);s&&0===s.referenceCount&&this._deleteMessageElement(r)}0===this._messagesContainer?.childNodes.length&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){const e=this._document.querySelectorAll(`[${dv}="${this._id}"]`);for(let i=0;i0!=o.indexOf(HB));e.setAttribute("aria-describedby",i.join(" "))}_addMessageReference(e,i){const o=this._messageRegistry.get(i);VB(e,"aria-describedby",o.messageElement.id),e.setAttribute(dv,this._id),o.referenceCount++}_removeMessageReference(e,i){const o=this._messageRegistry.get(i);o.referenceCount--,mk(e,"aria-describedby",o.messageElement.id),e.removeAttribute(dv)}_isElementDescribedByMessage(e,i){const o=cv(e,"aria-describedby"),r=this._messageRegistry.get(i),s=r&&r.messageElement.id;return!!s&&-1!=o.indexOf(s)}_canBeDescribed(e,i){if(!this._isElementNode(e))return!1;if(i&&"object"==typeof i)return!0;const o=null==i?"":`${i}`.trim(),r=e.getAttribute("aria-label");return!(!o||r&&r.trim()===o)}_isElementNode(e){return e.nodeType===this._document.ELEMENT_NODE}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function _k(t,n){return"string"==typeof t?`${n||""}/${t}`:t}function jB(t,n){t.id||(t.id=`${HB}-${n}-${gk++}`)}const kpe=["tooltip"],Mpe=new Z("mat-tooltip-scroll-strategy",{providedIn:"root",factory:()=>{const t=D(He);return()=>Bf(t,{scrollThrottle:20})}}),Tpe=new Z("mat-tooltip-default-options",{providedIn:"root",factory:()=>({showDelay:0,hideDelay:0,touchendHideDelay:1500})}),UB="tooltip-panel",Epe={passive:!0};let Kt=(()=>{class t{_elementRef=D(Re);_ngZone=D(_e);_platform=D(Yn);_ariaDescriber=D(xpe);_focusMonitor=D(ec);_dir=D(br);_injector=D(He);_viewContainerRef=D(Ei);_mediaMatcher=D(bS);_document=D(et);_renderer=D(Qn);_animationsDisabled=ci();_defaultOptions=D(Tpe,{optional:!0});_overlayRef=null;_tooltipInstance=null;_overlayPanelClass;_portal;_position="below";_positionAtOrigin=!1;_disabled=!1;_tooltipClass;_viewInitialized=!1;_pointerExitEventsInitialized=!1;_tooltipComponent=Rpe;_viewportMargin=8;_currentPosition;_cssClassPrefix="mat-mdc";_ariaDescriptionPending=!1;_dirSubscribed=!1;get position(){return this._position}set position(e){e!==this._position&&(this._position=e,this._overlayRef&&(this._updatePosition(this._overlayRef),this._tooltipInstance?.show(0),this._overlayRef.updatePosition()))}get positionAtOrigin(){return this._positionAtOrigin}set positionAtOrigin(e){this._positionAtOrigin=uu(e),this._detach(),this._overlayRef=null}get disabled(){return this._disabled}set disabled(e){const i=uu(e);this._disabled!==i&&(this._disabled=i,i?this.hide(0):this._setupPointerEnterEventsIfNeeded(),this._syncAriaDescription(this.message))}get showDelay(){return this._showDelay}set showDelay(e){this._showDelay=Of(e)}_showDelay;get hideDelay(){return this._hideDelay}set hideDelay(e){this._hideDelay=Of(e),this._tooltipInstance&&(this._tooltipInstance._mouseLeaveHideDelay=this._hideDelay)}_hideDelay;touchGestures="auto";get message(){return this._message}set message(e){const i=this._message;this._message=null!=e?String(e).trim():"",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEnterEventsIfNeeded(),this._updateTooltipMessage()),this._syncAriaDescription(i)}_message="";get tooltipClass(){return this._tooltipClass}set tooltipClass(e){this._tooltipClass=e,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}_eventCleanups=[];_touchstartTimeout=null;_destroyed=new me;_isDestroyed=!1;constructor(){const e=this._defaultOptions;e&&(this._showDelay=e.showDelay,this._hideDelay=e.hideDelay,e.position&&(this.position=e.position),e.positionAtOrigin&&(this.positionAtOrigin=e.positionAtOrigin),e.touchGestures&&(this.touchGestures=e.touchGestures),e.tooltipClass&&(this.tooltipClass=e.tooltipClass)),this._viewportMargin=8}ngAfterViewInit(){this._viewInitialized=!0,this._setupPointerEnterEventsIfNeeded(),this._focusMonitor.monitor(this._elementRef).pipe(fn(this._destroyed)).subscribe(e=>{e?"keyboard"===e&&this._ngZone.run(()=>this.show()):this._ngZone.run(()=>this.hide(0))})}ngOnDestroy(){const e=this._elementRef.nativeElement;this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),this._eventCleanups.forEach(i=>i()),this._eventCleanups.length=0,this._destroyed.next(),this._destroyed.complete(),this._isDestroyed=!0,this._ariaDescriber.removeDescription(e,this.message,"tooltip"),this._focusMonitor.stopMonitoring(e)}show(e=this.showDelay,i){if(this.disabled||!this.message||this._isTooltipVisible())return void this._tooltipInstance?._cancelPendingAnimations();const o=this._createOverlay(i);this._detach(),this._portal=this._portal||new Kd(this._tooltipComponent,this._viewContainerRef);const r=this._tooltipInstance=o.attach(this._portal).instance;r._triggerElement=this._elementRef.nativeElement,r._mouseLeaveHideDelay=this._hideDelay,r.afterHidden().pipe(fn(this._destroyed)).subscribe(()=>this._detach()),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),r.show(e)}hide(e=this.hideDelay){const i=this._tooltipInstance;i&&(i.isVisible()?i.hide(e):(i._cancelPendingAnimations(),this._detach()))}toggle(e){this._isTooltipVisible()?this.hide():this.show(void 0,e)}_isTooltipVisible(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}_createOverlay(e){if(this._overlayRef){const s=this._overlayRef.getConfig().positionStrategy;if((!this.positionAtOrigin||!e)&&s._origin instanceof Re)return this._overlayRef;this._detach()}const i=this._injector.get(mb).getAncestorScrollContainers(this._elementRef),o=`${this._cssClassPrefix}-${UB}`,r=xb(this._injector,this.positionAtOrigin&&e||this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(!1).withViewportMargin(this._viewportMargin).withScrollableContainers(i).withPopoverLocation("global");return r.positionChanges.pipe(fn(this._destroyed)).subscribe(s=>{this._updateCurrentPositionClass(s.connectionPair),this._tooltipInstance&&s.scrollableViewProperties.isOverlayClipped&&this._tooltipInstance.isVisible()&&this._ngZone.run(()=>this.hide(0))}),this._overlayRef=Xd(this._injector,{direction:this._dir,positionStrategy:r,panelClass:this._overlayPanelClass?[...this._overlayPanelClass,o]:o,scrollStrategy:this._injector.get(Mpe)(),disableAnimations:this._animationsDisabled,eventPredicate:this._overlayEventPredicate}),this._updatePosition(this._overlayRef),this._overlayRef.detachments().pipe(fn(this._destroyed)).subscribe(()=>this._detach()),this._overlayRef.outsidePointerEvents().pipe(fn(this._destroyed)).subscribe(()=>this._tooltipInstance?._handleBodyInteraction()),this._overlayRef.keydownEvents().pipe(fn(this._destroyed)).subscribe(s=>{s.preventDefault(),s.stopPropagation(),this._ngZone.run(()=>this.hide(0))}),this._defaultOptions?.disableTooltipInteractivity&&this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`),this._dirSubscribed||(this._dirSubscribed=!0,this._dir.change.pipe(fn(this._destroyed)).subscribe(()=>{this._overlayRef&&this._updatePosition(this._overlayRef)})),this._overlayRef}_detach(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}_updatePosition(e){const i=e.getConfig().positionStrategy,o=this._getOrigin(),r=this._getOverlayPosition();i.withPositions([this._addOffset({...o.main,...r.main}),this._addOffset({...o.fallback,...r.fallback})])}_addOffset(e){const o=!this._dir||"ltr"==this._dir.value;return"top"===e.originY?e.offsetY=-8:"bottom"===e.originY?e.offsetY=8:"start"===e.originX?e.offsetX=o?-8:8:"end"===e.originX&&(e.offsetX=o?8:-8),e}_getOrigin(){const e=!this._dir||"ltr"==this._dir.value,i=this.position;let o;"above"==i||"below"==i?o={originX:"center",originY:"above"==i?"top":"bottom"}:"before"==i||"left"==i&&e||"right"==i&&!e?o={originX:"start",originY:"center"}:("after"==i||"right"==i&&e||"left"==i&&!e)&&(o={originX:"end",originY:"center"});const{x:r,y:s}=this._invertPosition(o.originX,o.originY);return{main:o,fallback:{originX:r,originY:s}}}_getOverlayPosition(){const e=!this._dir||"ltr"==this._dir.value,i=this.position;let o;"above"==i?o={overlayX:"center",overlayY:"bottom"}:"below"==i?o={overlayX:"center",overlayY:"top"}:"before"==i||"left"==i&&e||"right"==i&&!e?o={overlayX:"end",overlayY:"center"}:("after"==i||"right"==i&&e||"left"==i&&!e)&&(o={overlayX:"start",overlayY:"center"});const{x:r,y:s}=this._invertPosition(o.overlayX,o.overlayY);return{main:o,fallback:{overlayX:r,overlayY:s}}}_updateTooltipMessage(){this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),Vi(()=>{this._tooltipInstance&&this._overlayRef.updatePosition()},{injector:this._injector}))}_setTooltipClass(e){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=e instanceof Set?Array.from(e):e,this._tooltipInstance._markForCheck())}_invertPosition(e,i){return"above"===this.position||"below"===this.position?"top"===i?i="bottom":"bottom"===i&&(i="top"):"end"===e?e="start":"start"===e&&(e="end"),{x:e,y:i}}_updateCurrentPositionClass(e){const{overlayY:i,originX:o,originY:r}=e;let s;if(s="center"===i?this._dir&&"rtl"===this._dir.value?"end"===o?"left":"right":"start"===o?"left":"right":"bottom"===i&&"top"===r?"above":"below",s!==this._currentPosition){const a=this._overlayRef;if(a){const l=`${this._cssClassPrefix}-${UB}-`;a.removePanelClass(l+this._currentPosition),a.addPanelClass(l+s)}this._currentPosition=s}}_setupPointerEnterEventsIfNeeded(){this._disabled||!this.message||!this._viewInitialized||this._eventCleanups.length||(this._isTouchPlatform()?"off"!==this.touchGestures&&(this._disableNativeGesturesIfNecessary(),this._addListener("touchstart",e=>{const i=e.targetTouches?.[0],o=i?{x:i.clientX,y:i.clientY}:void 0;this._setupPointerExitEventsIfNeeded(),this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this._touchstartTimeout=setTimeout(()=>{this._touchstartTimeout=null,this.show(void 0,o)},this._defaultOptions?.touchLongPressShowDelay??500)})):this._addListener("mouseenter",e=>{let i;this._setupPointerExitEventsIfNeeded(),void 0!==e.x&&void 0!==e.y&&(i=e),this.show(void 0,i)}))}_setupPointerExitEventsIfNeeded(){if(!this._pointerExitEventsInitialized)if(this._pointerExitEventsInitialized=!0,this._isTouchPlatform()){if("off"!==this.touchGestures){this._disableNativeGesturesIfNecessary();const e=()=>{this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this.hide(this._defaultOptions?.touchendHideDelay)};this._addListener("touchend",e),this._addListener("touchcancel",e)}}else this._addListener("mouseleave",e=>{const i=e.relatedTarget;(!i||!this._overlayRef?.overlayElement.contains(i))&&this.hide()}),this._addListener("wheel",e=>{if(this._isTooltipVisible()){const i=this._document.elementFromPoint(e.clientX,e.clientY),o=this._elementRef.nativeElement;i!==o&&!o.contains(i)&&this.hide()}})}_addListener(e,i){this._eventCleanups.push(this._renderer.listen(this._elementRef.nativeElement,e,i,Epe))}_isTouchPlatform(){return!(!this._platform.IOS&&!this._platform.ANDROID)||!!this._platform.isBrowser&&!!this._defaultOptions?.detectHoverCapability&&this._mediaMatcher.matchMedia("(any-hover: none)").matches}_disableNativeGesturesIfNecessary(){const e=this.touchGestures;if("off"!==e){const i=this._elementRef.nativeElement,o=i.style;("on"===e||"INPUT"!==i.nodeName&&"TEXTAREA"!==i.nodeName)&&(o.userSelect=o.msUserSelect=o.webkitUserSelect=o.MozUserSelect="none"),("on"===e||!i.draggable)&&(o.webkitUserDrag="none"),o.touchAction="none",o.webkitTapHighlightColor="transparent"}}_syncAriaDescription(e){this._ariaDescriptionPending||(this._ariaDescriptionPending=!0,this._ariaDescriber.removeDescription(this._elementRef.nativeElement,e,"tooltip"),this._isDestroyed||Vi({write:()=>{this._ariaDescriptionPending=!1,this.message&&!this.disabled&&this._ariaDescriber.describe(this._elementRef.nativeElement,this.message,"tooltip")}},{injector:this._injector}))}_overlayEventPredicate=e=>"keydown"!==e.type||this._isTooltipVisible()&&27===e.keyCode&&!yr(e);static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matTooltip",""]],hostAttrs:[1,"mat-mdc-tooltip-trigger"],hostVars:2,hostBindings:function(i,o){2&i&&Ie("mat-mdc-tooltip-disabled",o.disabled)},inputs:{position:[0,"matTooltipPosition","position"],positionAtOrigin:[0,"matTooltipPositionAtOrigin","positionAtOrigin"],disabled:[0,"matTooltipDisabled","disabled"],showDelay:[0,"matTooltipShowDelay","showDelay"],hideDelay:[0,"matTooltipHideDelay","hideDelay"],touchGestures:[0,"matTooltipTouchGestures","touchGestures"],message:[0,"matTooltip","message"],tooltipClass:[0,"matTooltipClass","tooltipClass"]},exportAs:["matTooltip"]})}return t})(),Rpe=(()=>{class t{_changeDetectorRef=D(Jt);_elementRef=D(Re);_isMultiline=!1;message;tooltipClass;_showTimeoutId;_hideTimeoutId;_triggerElement;_mouseLeaveHideDelay;_animationsDisabled=ci();_tooltip;_closeOnInteraction=!1;_isVisible=!1;_onHide=new me;_showAnimation="mat-mdc-tooltip-show";_hideAnimation="mat-mdc-tooltip-hide";constructor(){}show(e){null!=this._hideTimeoutId&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=setTimeout(()=>{this._toggleVisibility(!0),this._showTimeoutId=void 0},e)}hide(e){null!=this._showTimeoutId&&clearTimeout(this._showTimeoutId),this._hideTimeoutId=setTimeout(()=>{this._toggleVisibility(!1),this._hideTimeoutId=void 0},e)}afterHidden(){return this._onHide}isVisible(){return this._isVisible}ngOnDestroy(){this._cancelPendingAnimations(),this._onHide.complete(),this._triggerElement=null}_handleBodyInteraction(){this._closeOnInteraction&&this.hide(0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_handleMouseLeave({relatedTarget:e}){(!e||!this._triggerElement.contains(e))&&(this.isVisible()?this.hide(this._mouseLeaveHideDelay):this._finalizeAnimation(!1))}_onShow(){this._isMultiline=this._isTooltipMultiline(),this._markForCheck()}_isTooltipMultiline(){const e=this._elementRef.nativeElement.getBoundingClientRect();return e.height>24&&e.width>=200}_handleAnimationEnd({animationName:e}){(e===this._showAnimation||e===this._hideAnimation)&&this._finalizeAnimation(e===this._showAnimation)}_cancelPendingAnimations(){null!=this._showTimeoutId&&clearTimeout(this._showTimeoutId),null!=this._hideTimeoutId&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=this._hideTimeoutId=void 0}_finalizeAnimation(e){e?this._closeOnInteraction=!0:this.isVisible()||this._onHide.next()}_toggleVisibility(e){const i=this._tooltip.nativeElement,o=this._showAnimation,r=this._hideAnimation;if(i.classList.remove(e?r:o),i.classList.add(e?o:r),this._isVisible!==e&&(this._isVisible=e,this._changeDetectorRef.markForCheck()),e&&!this._animationsDisabled&&"function"==typeof getComputedStyle){const s=getComputedStyle(i);("0s"===s.getPropertyValue("animation-duration")||"none"===s.getPropertyValue("animation-name"))&&(this._animationsDisabled=!0)}e&&this._onShow(),this._animationsDisabled&&(i.classList.add("_mat-animation-noopable"),this._finalizeAnimation(e))}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-tooltip-component"]],viewQuery:function(i,o){if(1&i&&ot(kpe,7),2&i){let r;he(r=fe())&&(o._tooltip=r.first)}},hostAttrs:["aria-hidden","true"],hostBindings:function(i,o){1&i&&F("mouseleave",function(s){return o._handleMouseLeave(s)})},decls:4,vars:5,consts:[["tooltip",""],[1,"mdc-tooltip","mat-mdc-tooltip",3,"animationend"],[1,"mat-mdc-tooltip-surface","mdc-tooltip__surface"]],template:function(i,o){1&i&&(vs(0,"div",1,0),qg("animationend",function(s){return o._handleAnimationEnd(s)}),vs(2,"div",2),p(3),Ol()()),2&i&&(Ze(o.tooltipClass),Ie("mdc-tooltip--multiline",o._isMultiline),d(3),M(o.message))},styles:['.mat-mdc-tooltip{position:relative;transform:scale(0);display:inline-flex}.mat-mdc-tooltip::before{content:"";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-surface{word-break:normal;overflow-wrap:anywhere;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center;will-change:transform,opacity;background-color:var(--mat-tooltip-container-color, var(--mat-sys-inverse-surface));color:var(--mat-tooltip-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-tooltip-container-shape, var(--mat-sys-corner-extra-small));font-family:var(--mat-tooltip-supporting-text-font, var(--mat-sys-body-small-font));font-size:var(--mat-tooltip-supporting-text-size, var(--mat-sys-body-small-size));font-weight:var(--mat-tooltip-supporting-text-weight, var(--mat-sys-body-small-weight));line-height:var(--mat-tooltip-supporting-text-line-height, var(--mat-sys-body-small-line-height));letter-spacing:var(--mat-tooltip-supporting-text-tracking, var(--mat-sys-body-small-tracking))}.mat-mdc-tooltip-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:right}.mat-mdc-tooltip-panel{line-height:normal}.mat-mdc-tooltip-panel.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}\n'],encapsulation:2,changeDetection:0})}return t})();const Fpe=["button1"],Npe=["button2"],Lpe=["*"],Bpe=t=>({"for-dark-background":t});function Vpe(t,n){1&t&&B(0,"mat-spinner",3),2&t&&C("diameter",v().loadingSize)}function Hpe(t,n){1&t&&(h(0,"mat-icon"),p(1,"error_outline"),u())}var lc=function(t){return t[t.Normal=0]="Normal",t[t.Error=1]="Error",t[t.Loading=2]="Loading",t}(lc||{});let ui=(()=>{class t{constructor(){this.forDarkBackground=!1,this.disabled=!1,this.color="",this.loadingSize=20,this.action=new we,this.state=lc.Normal,this.buttonStates=lc}ngOnDestroy(){this.action.complete()}click(){this.disabled||(this.reset(),this.action.emit())}reset(e=!0){this.state=lc.Normal,e&&(this.disabled=!1)}focus(){this.button1&&this.button1.focus(),this.button2&&this.button2.focus()}showEnabled(){this.disabled=!1}showDisabled(){this.disabled=!0}showLoading(e=!0){this.state=lc.Loading,e&&(this.disabled=!0)}showError(e=!0){this.state=lc.Error,e&&(this.disabled=!1)}get isLoading(){return this.state===lc.Loading}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=re({type:t,selectors:[["app-button"]],viewQuery:function(i,o){if(1&i&&ot(Fpe,5)(Npe,5),2&i){let r;he(r=fe())&&(o.button1=r.first),he(r=fe())&&(o.button2=r.first)}},inputs:{forDarkBackground:"forDarkBackground",disabled:"disabled",color:"color",loadingSize:"loadingSize"},outputs:{action:"action"},standalone:!1,ngContentSelectors:Lpe,decls:6,vars:7,consts:[["button2",""],["mat-raised-button","",3,"click","disabled","color","ngClass"],[1,"d-flex"],[3,"diameter"]],template:function(i,o){1&i&&(yi(),h(0,"button",1,0),F("click",function(){return o.click()}),h(2,"div",2),x(3,Vpe,1,1,"mat-spinner",3),x(4,Hpe,2,0,"mat-icon"),Pt(5),u()()),2&i&&(C("disabled",o.disabled)("color",o.color)("ngClass",se(5,Bpe,o.forDarkBackground)),d(3),S(o.state===o.buttonStates.Loading?3:-1),d(),S(o.state===o.buttonStates.Error?4:-1))},dependencies:[$t,Pn,We,so],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], button[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px}button[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}mat-icon[_ngcontent-%COMP%], mat-spinner[_ngcontent-%COMP%]{display:inline-block;margin-right:15px}.for-dark-background[_ngcontent-%COMP%]:disabled{background-color:#000!important;color:#fff!important;opacity:.3}"]})}}return t})();const jpe=["button"],Upe=["firstInput"],zpe=t=>({"rounded-elevated-box":t}),zB=(t,n)=>({"white-form-field":t,"element-disabled":n}),$pe=(t,n)=>({"mt-2 app-button":t,"float-right":n}),Wpe=t=>({"element-disabled":t});function Gpe(t,n){if(1&t&&(h(0,"mat-form-field",6)(1,"div",7)(2,"label",8),p(3),b(4,"translate"),u(),B(5,"input",12),u(),h(6,"mat-error")(7,"span"),p(8),b(9,"translate"),u()()()),2&t){const e=v();C("ngClass",se(7,Wpe,e.working)),d(3),M(y(4,3,"settings.password.old-password")),d(5),M(y(9,5,"settings.password.errors.old-password-required"))}}let $B=(()=>{class t{constructor(e,i,o,r){this.authService=e,this.router=i,this.snackbarService=o,this.dialog=r,this.workingState=new we,this.forInitialConfig=!1}ngOnInit(){this.form=new nk({oldPassword:new lu("",this.forInitialConfig?null:Ne.required),newPassword:new lu("",Ne.compose([Ne.required,Ne.minLength(6),Ne.maxLength(64)])),newPasswordConfirmation:new lu("",[Ne.required,this.validatePasswords.bind(this)])}),this.formSubscription=this.form.controls.newPassword.valueChanges.subscribe(()=>this.form.controls.newPasswordConfirmation.updateValueAndValidity())}ngAfterViewInit(){this.forInitialConfig&&setTimeout(()=>this.firstInput.nativeElement.focus())}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe(),this.formSubscription.unsubscribe()}get working(){return!!this.button&&this.button.isLoading}changePassword(){this.form.valid&&!this.button.disabled&&(this.button.showLoading(),this.workingState.next(!0),this.subscription=this.forInitialConfig?this.authService.initialConfig(this.form.get("newPassword").value).subscribe(()=>{this.dialog.closeAll(),this.snackbarService.showDone("settings.password.initial-config.done"),this.workingState.next(!1)},e=>{this.button.showError(),e=Qe(e),this.snackbarService.showError(e,null,!0),this.workingState.next(!1)}):this.authService.changePassword(this.form.get("oldPassword").value,this.form.get("newPassword").value).subscribe(()=>{this.router.navigate(["nodes"]),this.snackbarService.showDone("settings.password.password-changed"),this.workingState.next(!1)},e=>{this.button.showError(),e=Qe(e),this.snackbarService.showError(e),this.workingState.next(!1)}))}validatePasswords(){return this.form&&this.form.get("newPassword").value!==this.form.get("newPasswordConfirmation").value?{invalid:!0}:null}static{this.\u0275fac=function(i){return new(i||t)(O(Yf),O(vt),O(ct),O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-password"]],viewQuery:function(i,o){if(1&i&&ot(jpe,5)(Upe,5),2&i){let r;he(r=fe())&&(o.button=r.first),he(r=fe())&&(o.firstInput=r.first)}},inputs:{forInitialConfig:"forInitialConfig"},outputs:{workingState:"workingState"},standalone:!1,decls:33,vars:40,consts:[["firstInput",""],["button",""],[3,"ngClass"],[1,"box-internal-container","overflow"],[1,"help-icon",3,"inline","matTooltip"],[3,"formGroup"],[1,"white-form-field",3,"ngClass"],[1,"field-container"],["for","remoteKey",1,"field-label"],["type","password","formControlName","newPassword","maxlength","64","matInput",""],["type","password","formControlName","newPasswordConfirmation","maxlength","64","matInput",""],["color","primary",3,"action","ngClass","disabled","forDarkBackground"],["type","password","formControlName","oldPassword","maxlength","64","matInput",""]],template:function(i,o){1&i&&(h(0,"div",2)(1,"div",3)(2,"div")(3,"mat-icon",4),b(4,"translate"),p(5," help "),u()(),h(6,"form",5),x(7,Gpe,10,9,"mat-form-field",6),h(8,"mat-form-field",2)(9,"div",7)(10,"label",8),p(11),b(12,"translate"),u(),B(13,"input",9,0),u(),h(15,"mat-error")(16,"span"),p(17),b(18,"translate"),u()()(),h(19,"mat-form-field",2)(20,"div",7)(21,"label",8),p(22),b(23,"translate"),u(),B(24,"input",10),u(),h(25,"mat-error")(26,"span"),p(27),b(28,"translate"),u()()(),h(29,"app-button",11,1),F("action",function(){return o.changePassword()}),p(31),b(32,"translate"),u()()()()),2&i&&(C("ngClass",se(29,zpe,!o.forInitialConfig)),d(2),Ze((o.forInitialConfig?"":"white-")+"form-help-icon-container"),d(),C("inline",!0)("matTooltip",y(4,17,o.forInitialConfig?"settings.password.initial-config-help":"settings.password.help")),d(3),C("formGroup",o.form),d(),S(o.forInitialConfig?-1:7),d(),C("ngClass",_t(31,zB,!o.forInitialConfig,o.working)),d(3),M(y(12,19,o.forInitialConfig?"settings.password.initial-config.password":"settings.password.new-password")),d(6),M(y(18,21,"settings.password.errors.new-password-error")),d(2),C("ngClass",_t(34,zB,!o.forInitialConfig,o.working)),d(3),M(y(23,23,o.forInitialConfig?"settings.password.initial-config.repeat-password":"settings.password.repeat-password")),d(5),M(y(28,25,"settings.password.errors.passwords-not-match")),d(2),C("ngClass",_t(37,$pe,!o.forInitialConfig,o.forInitialConfig))("disabled",!o.form.valid)("forDarkBackground",!o.forInitialConfig),d(2),E(" ",y(32,27,o.forInitialConfig?"settings.password.initial-config.set-password":"settings.change-password")," "))},dependencies:[$t,xn,Gt,qt,wn,wi,on,mn,sn,Ma,In,We,Kt,ui,xe],styles:[".help-icon[_ngcontent-%COMP%]{display:inline}mat-form-field[_ngcontent-%COMP%]{margin-right:32px}app-button[_ngcontent-%COMP%]{float:right;margin-right:32px}"]})}}return t})();const qpe=["*"],WB=t=>({"content-margin":t});function Kpe(t,n){1&t&&(h(0,"button",2)(1,"mat-icon"),p(2,"close"),u()())}function Ype(t,n){1&t&&dr(0)}function Xpe(t,n){if(1&t&&(h(0,"mat-dialog-content",4),it(1,Ype,1,0,"ng-container",5),u()),2&t){const e=v(),i=Hn(8);C("ngClass",se(2,WB,e.includeVerticalMargins)),d(),C("ngTemplateOutlet",i)}}function Zpe(t,n){1&t&&dr(0)}function Qpe(t,n){if(1&t&&(h(0,"div",4),it(1,Zpe,1,0,"ng-container",5),u()),2&t){const e=v(),i=Hn(8);C("ngClass",se(2,WB,e.includeVerticalMargins)),d(),C("ngTemplateOutlet",i)}}function Jpe(t,n){1&t&&Pt(0)}let gn=(()=>{class t{set dialog(e){e.disableClose=!0,this.dialogInternal=e}constructor(e){this.matDialog=e,this.includeScrollableArea=!0,this.includeVerticalMargins=!0}onKeyUp(){this.closePopup()}closePopup(){this.disableDismiss||this.matDialog.openDialogs[this.matDialog.openDialogs.length-1].id===this.dialogInternal.id&&this.dialogInternal.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-dialog"]],hostBindings:function(i,o){1&i&&F("keyup.esc",function(){return o.onKeyUp()},XC)},inputs:{headline:"headline",disableDismiss:"disableDismiss",includeScrollableArea:"includeScrollableArea",includeVerticalMargins:"includeVerticalMargins",dialog:"dialog"},standalone:!1,ngContentSelectors:qpe,decls:9,vars:4,consts:[["contentTemplate",""],["mat-dialog-title","",1,"header"],["mat-dialog-close","","mat-icon-button","",1,"grey-button-background"],[1,"header-separator"],[3,"ngClass"],[4,"ngTemplateOutlet"]],template:function(i,o){1&i&&(yi(),h(0,"div",1)(1,"span"),p(2),u(),x(3,Kpe,3,0,"button",2),u(),B(4,"div",3),x(5,Xpe,2,4,"mat-dialog-content",4),x(6,Qpe,2,4,"div",4),it(7,Jpe,1,0,"ng-template",null,0,Rl)),2&i&&(d(2),M(o.headline),d(),S(o.disableDismiss?-1:3),d(2),S(o.includeScrollableArea?5:-1),d(),S(o.includeScrollableArea?-1:6))},dependencies:[$t,Ld,D4,MS,Jd,Wo,We],styles:['.cursor-pointer[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}[_nghost-%COMP%]{color:#202226}.header[_ngcontent-%COMP%]{margin:-24px -24px 0;color:#215f9e;padding:0 14px 0 24px;font-size:1rem;text-transform:uppercase;font-weight:700;display:flex;align-items:center}.header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex-grow:1}@media(max-width:767px){.header[_ngcontent-%COMP%]{padding:0 2px 0 24px}}.header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{line-height:1rem;margin:18px 0}.header[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%]{color:#a6b2b2;width:32px;height:32px;line-height:20px;margin-left:10px;padding:0}@media(max-width:767px){.header[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%]{width:46px;height:46px}}.header-separator[_ngcontent-%COMP%]{height:1px;background-color:#215f9e33;margin-left:-12px;margin-right:-12px}.content-margin[_ngcontent-%COMP%]{padding-top:18px;padding-bottom:24px!important}']})}}return t})(),eme=(()=>{class t{static openDialog(e){const i=new nn;return i.autoFocus=!1,i.width=rt.smallModalWidth,e.open(t,i)}constructor(e){this.dialogRef=e,this.disableDismiss=!1}static{this.\u0275fac=function(i){return new(i||t)(O(Bt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-initial-setup"]],standalone:!1,decls:3,vars:6,consts:[[3,"headline","dialog","disableDismiss"],[3,"workingState","forInitialConfig"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),b(1,"translate"),h(2,"app-password",1),F("workingState",function(s){return o.disableDismiss=s}),u()()),2&i&&(C("headline",y(1,4,"settings.password.initial-config.title"))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),d(2),C("forInitialConfig",!0))},dependencies:[$B,gn,xe],encapsulation:2})}}return t})();var bk=function qB(t){var n,e,i,P,A,o=I.prototype={constructor:I,toString:null,valueOf:null},r=new I(1),s=20,a=4,l=-7,c=21,f=-1e7,m=1e7,g=!1,_=1,w=0,k={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xa0",suffix:""},T="0123456789abcdefghijklmnopqrstuvwxyz";function I(P,A){var L,$,H,G,J,V,N,q,z=this;if(!(z instanceof I))return new I(P,A);if(q=typeof P,null==A){if(W(P))return z.s=P.s,void(!P.c||P.e>m?z.c=z.e=null:P.e=10;J/=10,G++);return void(G>m?z.c=z.e=null:(z.e=G,z.c=[P]))}N=String(P)}else{if("string"==q){if(!tme.test(N=P))return i(z,N)}else{if("bigint"!=q)throw Error(yo+"Invalid argument: "+P);N=String(P)}z.s=45==N.charCodeAt(0)?(N=N.slice(1),-1):1}(G=N.indexOf("."))>-1&&(N=N.replace(".","")),(J=N.search(/e/i))>0?(G<0&&(G=J),G+=+N.slice(J+1),N=N.substring(0,J)):G<0&&(G=N.length)}else{if("string"!=q)throw Error(yo+"String expected: "+P);for(On(A,2,T.length,"Base"),z.s=45===(N=P).charCodeAt(0)?(N=N.slice(1),-1):1,L=T.slice(0,A),G=J=0,V=N.length;JG){G=V;continue}}else if(!H&&(N==N.toUpperCase()&&(N=N.toLowerCase())||N==N.toLowerCase()&&(N=N.toUpperCase()))){H=!0,J=-1,G=0;continue}return i(z,P,A)}(G=(N=e(N,A,10,z.s)).indexOf("."))>-1?N=N.replace(".",""):G=N.length}for(J=0;48===N.charCodeAt(J);J++);for(V=N.length;48===N.charCodeAt(--V););if(N=N.slice(J,++V))if(V-=J,(G=G-J-1)>m)z.c=z.e=null;else if(G=c)?hv(N,J):Ea(N,J,"0");else if(G=(P=ee(new I(P),A,L)).e,V=(N=Sr(P.c)).length,1==$||2==$&&(A<=G||G<=l)){for(;VJ),N=Ea(N,G,"0"),G+1>V){if(--A>0)for(N+=".";A--;N+="0");}else if((A+=G-V)>0)for(G+1==V&&(N+=".");A--;N+="0");return P.s<0&&H?"-"+N:N}function W(P){return P instanceof I||!!P&&!0===P._isBigNumber}function Y(P,A){for(var L,$,H=1,G=new I(P[0]);H=10;H/=10,$++);return(L=$+14*L-1)>m?P.c=P.e=null:L=10;V/=10,H++);if((G=A-H)<0)G+=14,N=Q[q=0],z=wr(N/ue[H-(J=A)-1]%10);else if((q=vk((G+1)/14))>=Q.length){if(!$)break e;for(;Q.length<=q;Q.push(0));N=z=0,H=1,J=(G%=14)-14+1}else{for(N=V=Q[q],H=1;V>=10;V/=10,H++);z=(J=(G%=14)-14+H)<0?0:wr(N/ue[H-J-1]%10)}if($=$||A<0||null!=Q[q+1]||(J<0?N:N%ue[H-J-1]),$=L<4?(z||$)&&(0==L||L==(P.s<0?3:2)):z>5||5==z&&(4==L||$||6==L&&(G>0?J>0?N/ue[H-J]:0:Q[q-1])%10&1||L==(P.s<0?8:7)),A<1||!Q[0])return Q.length=0,$?(Q[0]=ue[(14-(A-=P.e+1)%14)%14],P.e=-A||0):Q[0]=P.e=0,P;if(0==G?(Q.length=q,V=1,q--):(Q.length=q+1,V=ue[14-G],Q[q]=J>0?wr(N/ue[H-J]%ue[J])*V:0),$)for(;;){if(0==q){for(G=1,J=Q[0];J>=10;J/=10,G++);for(J=Q[0]+=V,V=1;J>=10;J/=10,V++);G!=V&&(P.e++,Q[0]==xr&&(Q[0]=1));break}if(Q[q]+=V,Q[q]!=xr)break;Q[q--]=0,V=1}for(G=Q.length;0===Q[--G];Q.pop());}P.e>m?P.c=P.e=null:P.e=c?hv(A,L):Ea(A,L,"0"),P.s<0?"-"+A:A)}return I.clone=qB,I.ROUND_UP=0,I.ROUND_DOWN=1,I.ROUND_CEIL=2,I.ROUND_FLOOR=3,I.ROUND_HALF_UP=4,I.ROUND_HALF_DOWN=5,I.ROUND_HALF_EVEN=6,I.ROUND_HALF_CEIL=7,I.ROUND_HALF_FLOOR=8,I.EUCLID=9,I.config=I.set=function(P){var A,L;if(null!=P){if("object"!=typeof P)throw Error(yo+"Object expected: "+P);if(P.hasOwnProperty(A="DECIMAL_PLACES")&&(On(L=P[A],0,xi,A),s=L),P.hasOwnProperty(A="ROUNDING_MODE")&&(On(L=P[A],0,8,A),a=L),P.hasOwnProperty(A="EXPONENTIAL_AT")&&((L=P[A])&&L.pop?(On(L[0],-xi,0,A),On(L[1],0,xi,A),l=L[0],c=L[1]):(On(L,-xi,xi,A),l=-(c=L<0?-L:L))),P.hasOwnProperty(A="RANGE"))if((L=P[A])&&L.pop)On(L[0],-xi,-1,A),On(L[1],1,xi,A),f=L[0],m=L[1];else{if(On(L,-xi,xi,A),!L)throw Error(yo+A+" cannot be zero: "+L);f=-(m=L<0?-L:L)}if(P.hasOwnProperty(A="CRYPTO")){if((L=P[A])!==!!L)throw Error(yo+A+" not true or false: "+L);if(L){if(!(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes)))throw g=!L,Error(yo+"crypto unavailable");g=L}else g=L}if(P.hasOwnProperty(A="MODULO_MODE")&&(On(L=P[A],0,9,A),_=L),P.hasOwnProperty(A="POW_PRECISION")&&(On(L=P[A],0,xi,A),w=L),P.hasOwnProperty(A="FORMAT")){if("object"!=typeof(L=P[A]))throw Error(yo+A+" not an object: "+L);k=L}if(P.hasOwnProperty(A="ALPHABET")){if("string"!=typeof(L=P[A])||/^.?$|[+\-.\s]|(.).*\1/.test(L))throw Error(yo+A+" invalid: "+L);T=L}}return{DECIMAL_PLACES:s,ROUNDING_MODE:a,EXPONENTIAL_AT:[l,c],RANGE:[f,m],CRYPTO:g,MODULO_MODE:_,POW_PRECISION:w,FORMAT:k,ALPHABET:T}},I.isBigNumber=function(P){if(!W(P))return!1;var A,L,$=P.c,H=P.e,G=P.s;if("[object Array]"!={}.toString.call($))return null===$&&null===H&&(null===G||1===G||-1===G);if(1!==G&&-1!==G||H<-xi||H>xi||H!==wr(H))return!1;if(0===$[0])return 0===H&&1===$.length;if((A=(H+1)%14)<1&&(A+=14),String($[0]).length!==A)return!1;for(A=0;A<$.length;A++)if((L=$[A])<0||L>=xr||L!==wr(L))return!1;return 0!==L},I.maximum=I.max=function(){return Y(arguments,-1)},I.minimum=I.min=function(){return Y(arguments,1)},I.random=(P=9007199254740992,A=Math.random()*P&2097151?function(){return wr(Math.random()*P)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(L){var $,H,G,J,V,N=0,q=[],z=new I(r);if(null==L?L=s:On(L,0,xi),J=vk(L/14),g)if(crypto.getRandomValues){for($=crypto.getRandomValues(new Uint32Array(J*=2));N>>11))>=9e15?(H=crypto.getRandomValues(new Uint32Array(2)),$[N]=H[0],$[N+1]=H[1]):(q.push(V%1e14),N+=2);N=J/2}else{if(!crypto.randomBytes)throw g=!1,Error(yo+"crypto unavailable");for($=crypto.randomBytes(J*=7);N=9e15?crypto.randomBytes(7).copy($,N):(q.push(V%1e14),N+=7);N=J/7}if(!g)for(;N=10;V/=10,N++);N<14&&(G-=14-N)}return z.e=G,z.c=q,z}),I.sum=function(){for(var P=1,A=arguments,L=new I(A[0]);PH-1&&(null==V[J+1]&&(V[J+1]=0),V[J+1]+=V[J]/H|0,V[J]%=H)}return V.reverse()}return function(L,$,H,G,J){var V,N,q,z,Q,ue,Ce,Ee,ut=L.indexOf("."),Oe=s,Xe=a;for(ut>=0&&(z=w,w=0,L=L.replace(".",""),ue=(Ee=new I($)).pow(L.length-ut),w=z,Ee.c=A(Ea(Sr(ue.c),ue.e,"0"),10,H,P),Ee.e=Ee.c.length),q=z=(Ce=A(L,$,H,J?(V=T,P):(V=P,T))).length;0==Ce[--z];Ce.pop());if(!Ce[0])return V.charAt(0);if(ut<0?--q:(ue.c=Ce,ue.e=q,ue.s=G,Ce=(ue=n(ue,Ee,Oe,Xe,H)).c,Q=ue.r,q=ue.e),ut=Ce[N=q+Oe+1],z=H/2,Q=Q||N<0||null!=Ce[N+1],Q=Xe<4?(null!=ut||Q)&&(0==Xe||Xe==(ue.s<0?3:2)):ut>z||ut==z&&(4==Xe||Q||6==Xe&&1&Ce[N-1]||Xe==(ue.s<0?8:7)),N<1||!Ce[0])L=Q?Ea(V.charAt(1),-Oe,V.charAt(0)):V.charAt(0);else{if(Ce.length=N,Q)for(--H;++Ce[--N]>H;)Ce[N]=0,N||(++q,Ce=[1].concat(Ce));for(z=Ce.length;!Ce[--z];);for(ut=0,L="";ut<=z;L+=V.charAt(Ce[ut++]));L=Ea(L,q,V.charAt(0))}return L}}(),n=function(){function P($,H,G){var J,V,N,q,z=0,Q=$.length,ue=H%Ta,Ce=H/Ta|0;for($=$.slice();Q--;)z=((V=ue*(N=$[Q]%Ta)+(J=Ce*N+(q=$[Q]/Ta|0)*ue)%Ta*Ta+z)/G|0)+(J/Ta|0)+Ce*q,$[Q]=V%G;return z&&($=[z].concat($)),$}function A($,H,G,J){var V,N;if(G!=J)N=G>J?1:-1;else for(V=N=0;VH[V]?1:-1;break}return N}function L($,H,G,J){for(var V=0;G--;)$[G]-=V,$[G]=(V=$[G]1;$.splice(0,1));}return function($,H,G,J,V){var N,q,z,Q,ue,Ce,Ee,ut,Oe,Xe,at,wt,Jo,Xi,ja,xo,Ep,er=$.s==H.s?1:-1,lo=$.c,Un=H.c;if(!(lo&&lo[0]&&Un&&Un[0]))return new I($.s&&H.s&&(lo?!Un||lo[0]!=Un[0]:Un)?lo&&0==lo[0]||!Un?0*er:er/0:NaN);for(Oe=(ut=new I(er)).c=[],er=G+(q=$.e-H.e)+1,V||(V=xr,q=Xo($.e/14)-Xo(H.e/14),er=er/14|0),z=0;Un[z]==(lo[z]||0);z++);if(Un[z]>(lo[z]||0)&&q--,er<0)Oe.push(1),Q=!0;else{for(Xi=lo.length,xo=Un.length,z=0,er+=2,(ue=wr(V/(Un[0]+1)))>1&&(Un=P(Un,ue,V),lo=P(lo,ue,V),xo=Un.length,Xi=lo.length),Jo=xo,at=(Xe=lo.slice(0,xo)).length;at=V/2&&ja++;do{if(ue=0,(N=A(Un,Xe,xo,at))<0){if(wt=Xe[0],xo!=at&&(wt=wt*V+(Xe[1]||0)),(ue=wr(wt/ja))>1)for(ue>=V&&(ue=V-1),Ee=(Ce=P(Un,ue,V)).length,at=Xe.length;1==A(Ce,Xe,Ee,at);)ue--,L(Ce,xo=10;er/=10,z++);ee(ut,G+(ut.e=z+14*q-1)+1,J,Q)}else ut.e=q,ut.r=+Q;return ut}}(),i=function(){var P=/^(-?)0([xbo])(?=\w[\w.]*$)/i,A=/^([^.]+)\.$/,L=/^\.([^.]+)$/,$=/^-?(Infinity|NaN)$/,H=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(G,J,V){var N,q=J.replace(H,"");if($.test(q))return G.s=isNaN(q)?null:q<0?-1:1,void(G.c=G.e=null);if(q=q.replace(P,function(z,Q,ue){return N="x"==(ue=ue.toLowerCase())?16:"b"==ue?2:8,V&&V!=N?z:Q}),V&&(N=V,q=q.replace(A,"$1").replace(L,"0.$1")),J!=q)return new I(q,N);throw Error(yo+"Not a"+(V?" base "+V:"")+" number: "+J)}}(),o.absoluteValue=o.abs=function(){var P=new I(this);return P.s<0&&(P.s=1),P},o.comparedTo=function(P,A){return cc(this,new I(P,A))},o.decimalPlaces=o.dp=function(P,A){var L,$,H,G=this;if(null!=P)return On(P,0,xi),null==A?A=a:On(A,0,8),ee(new I(G),P+G.e+1,A);if(!(L=G.c))return null;if($=14*((H=L.length-1)-Xo(this.e/14)),H=L[H])for(;H%10==0;H/=10,$--);return $<0&&($=0),$},o.dividedBy=o.div=function(P,A){return n(this,new I(P,A),s,a)},o.dividedToIntegerBy=o.idiv=function(P,A){return n(this,new I(P,A),0,1)},o.exponentiatedBy=o.pow=function(P,A){var L,$,H,G,V,N,q,z,Q=this;if((P=new I(P)).c&&!P.isInteger())throw Error(yo+"Exponent not an integer: "+ie(P));if(null!=A&&(A=new I(A)),V=P.e>14,!Q.c||!Q.c[0]||1==Q.c[0]&&!Q.e&&1==Q.c.length||!P.c||!P.c[0])return z=new I(Math.pow(+ie(Q),V?P.s*(2-uv(P)):+ie(P))),A?z.mod(A):z;if(N=P.s<0,A){if(A.c?!A.c[0]:!A.s)return new I(NaN);($=!N&&Q.isInteger()&&A.isInteger())&&(Q=Q.mod(A))}else{if(P.e>9&&(Q.e>0||Q.e<-1||(0==Q.e?Q.c[0]>1||V&&Q.c[1]>=24e7:Q.c[0]<8e13||V&&Q.c[0]<=9999975e7)))return G=Q.s<0&&uv(P)?-0:0,Q.e>-1&&(G=1/G),new I(N?1/G:G);w&&(G=vk(w/14+2))}for(V?(L=new I(.5),N&&(P.s=1),q=uv(P)):q=(H=Math.abs(+ie(P)))%2,z=new I(r);;){if(q){if(!(z=z.times(Q)).c)break;G?z.c.length>G&&(z.c.length=G):$&&(z=z.mod(A))}if(H){if(0===(H=wr(H/2)))break;q=H%2}else if(ee(P=P.times(L),P.e+1,1),P.e>14)q=uv(P);else{if(0===(H=+ie(P)))break;q=H%2}Q=Q.times(Q),G?Q.c&&Q.c.length>G&&(Q.c.length=G):$&&(Q=Q.mod(A))}return $?z:(N&&(z=r.div(z)),A?z.mod(A):G?ee(z,w,a,void 0):z)},o.integerValue=function(P){var A=new I(this);return null==P?P=a:On(P,0,8),ee(A,A.e+1,P)},o.isEqualTo=o.eq=function(P,A){return 0===cc(this,new I(P,A))},o.isFinite=function(){return!!this.c},o.isGreaterThan=o.gt=function(P,A){return cc(this,new I(P,A))>0},o.isGreaterThanOrEqualTo=o.gte=function(P,A){return 1===(A=cc(this,new I(P,A)))||0===A},o.isInteger=function(){return!!this.c&&Xo(this.e/14)>this.c.length-2},o.isLessThan=o.lt=function(P,A){return cc(this,new I(P,A))<0},o.isLessThanOrEqualTo=o.lte=function(P,A){return-1===(A=cc(this,new I(P,A)))||0===A},o.isNaN=function(){return!this.s},o.isNegative=function(){return this.s<0},o.isPositive=function(){return this.s>0},o.isZero=function(){return!!this.c&&0==this.c[0]},o.minus=function(P,A){var L,$,H,G,J=this,V=J.s;if(A=(P=new I(P,A)).s,!V||!A)return new I(NaN);if(V!=A)return P.s=-A,J.plus(P);var N=J.e/14,q=P.e/14,z=J.c,Q=P.c;if(!N||!q){if(!z||!Q)return z?(P.s=-A,P):new I(Q?J:NaN);if(!z[0]||!Q[0])return Q[0]?(P.s=-A,P):new I(z[0]?J:3==a?-0:0)}if(N=Xo(N),q=Xo(q),z=z.slice(),V=N-q){for((G=V<0)?(V=-V,H=z):(q=N,H=Q),H.reverse(),A=V;A--;H.push(0));H.reverse()}else for($=(G=(V=z.length)<(A=Q.length))?V:A,V=A=0;A<$;A++)if(z[A]!=Q[A]){G=z[A]0)for(;A--;z[L++]=0);for(A=xr-1;$>V;){if(z[--$]=0;){for(L=0,ue=wt[H]%Oe,Ce=wt[H]/Oe|0,G=H+(J=N);G>H;)L=((q=ue*(q=at[--J]%Oe)+(V=Ce*q+(z=at[J]/Oe|0)*ue)%Oe*Oe+Ee[G]+L)/ut|0)+(V/Oe|0)+Ce*z,Ee[G--]=q%ut;Ee[G]=L}return L?++$:Ee.splice(0,1),K(P,Ee,$)},o.negated=function(){var P=new I(this);return P.s=-P.s||null,P},o.plus=function(P,A){var L,$=this,H=$.s;if(A=(P=new I(P,A)).s,!H||!A)return new I(NaN);if(H!=A)return P.s=-A,$.minus(P);var G=$.e/14,J=P.e/14,V=$.c,N=P.c;if(!G||!J){if(!V||!N)return new I(H/0);if(!V[0]||!N[0])return N[0]?P:new I(V[0]?$:0*H)}if(G=Xo(G),J=Xo(J),V=V.slice(),H=G-J){for(H>0?(J=G,L=N):(H=-H,L=V),L.reverse();H--;L.push(0));L.reverse()}for((H=V.length)-(A=N.length)<0&&(L=N,N=V,V=L,A=H),H=0;A;)H=(V[--A]=V[A]+N[A]+H)/xr|0,V[A]=xr===V[A]?0:V[A]%xr;return H&&(V=[H].concat(V),++J),K(P,V,J)},o.precision=o.sd=function(P,A){var L,$,H,G=this;if(null!=P&&P!==!!P)return On(P,1,xi),null==A?A=a:On(A,0,8),ee(new I(G),P,A);if(!(L=G.c))return null;if($=14*(H=L.length-1)+1,H=L[H]){for(;H%10==0;H/=10,$--);for(H=L[0];H>=10;H/=10,$++);}return P&&G.e+1>$&&($=G.e+1),$},o.shiftedBy=function(P){return On(P,-GB,GB),this.times("1e"+P)},o.squareRoot=o.sqrt=function(){var P,A,L,$,H,G=this,J=G.c,V=G.s,N=G.e,q=s+4,z=new I("0.5");if(1!==V||!J||!J[0])return new I(!V||V<0&&(!J||J[0])?NaN:J?G:1/0);if(0==(V=Math.sqrt(+ie(G)))||V==1/0?(((A=Sr(J)).length+N)%2==0&&(A+="0"),V=Math.sqrt(+A),N=Xo((N+1)/2)-(N<0||N%2),L=new I(A=V==1/0?"5e"+N:(A=V.toExponential()).slice(0,A.indexOf("e")+1)+N)):L=new I(V+""),L.c[0])for((V=(N=L.e)+q)<3&&(V=0);;)if(L=z.times((H=L).plus(n(G,H,q,1))),Sr(H.c).slice(0,V)===(A=Sr(L.c)).slice(0,V)){if(L.e0&&Ee>0){for(z=Ce.substr(0,G=Ee%V||V);G0&&(z+=q+Ce.slice(G)),ue&&(z="-"+z)}$=Q?z+(L.decimalSeparator||"")+((N=+L.fractionGroupSize)?Q.replace(new RegExp("\\d{"+N+"}\\B","g"),"$&"+(L.fractionGroupSeparator||"")):Q):z}return(L.prefix||"")+$+(L.suffix||"")},o.toFraction=function(P){var A,L,$,H,G,J,V,N,q,z,Q,ue,Ce=this,Ee=Ce.c;if(null!=P&&(!(V=new I(P)).isInteger()&&(V.c||1!==V.s)||V.lt(r)))throw Error(yo+"Argument "+(V.isInteger()?"out of range: ":"not an integer: ")+ie(V));if(!Ee)return new I(Ce);for(A=new I(r),q=L=new I(r),$=N=new I(r),ue=Sr(Ee),G=A.e=ue.length-Ce.e-1,A.c[0]=yk[(J=G%14)<0?14+J:J],P=!P||V.comparedTo(A)>0?G>0?A:q:V,J=m,m=1/0,V=new I(ue),N.c[0]=0;z=n(V,A,0,1),1!=(H=L.plus(z.times($))).comparedTo(P);)L=$,$=H,q=N.plus(z.times(H=q)),N=H,A=V.minus(z.times(H=A)),V=H;return H=n(P.minus(L),$,0,1),N=N.plus(H.times(q)),L=L.plus(H.times($)),N.s=q.s=Ce.s,Q=n(q,$,G*=2,a).minus(Ce).abs().comparedTo(n(N,L,G,a).minus(Ce).abs())<1?[q,$]:[N,L],m=J,Q},o.toNumber=function(){return+ie(this)},o.toObject=function(){var P=this;return{c:P.c?P.c.slice():null,e:P.e,s:P.s}},o.toPrecision=function(P,A){return null!=P&&On(P,1,xi),R(this,P,A,2)},o.toString=function(P){var A,L=this,$=L.s,H=L.e;return null===H?$?(A="Infinity",$<0&&(A="-"+A)):A="NaN":(null==P?A=H<=l||H>=c?hv(Sr(L.c),H):Ea(Sr(L.c),H,"0"):(On(P,2,T.length,"Base"),A=e(Ea(Sr(L.c),H,"0"),10,P,$,!0)),$<0&&L.c[0]&&(A="-"+A)),A},o.valueOf=o.toJSON=function(){return ie(this)},o._isBigNumber=!0,null!=t&&I.set(t),I}(),tme=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,vk=Math.ceil,wr=Math.floor,yo="[BigNumber Error] ",xr=1e14,GB=9007199254740991,yk=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Ta=1e7,xi=1e9;function Xo(t){var n=0|t;return t>0||t===n?n:n-1}function Sr(t){for(var n,e,i=1,o=t.length,r=t[0]+"";ic^e?1:-1;for(a=(l=o.length)<(c=r.length)?l:c,s=0;sr[s]^e?1:-1;return l==c?0:l>c^e?1:-1}function On(t,n,e,i){if(te||t!==wr(t))throw Error(yo+(i||"Argument")+("number"==typeof t?te?" out of range: ":" not an integer: ":" not a primitive number: ")+String(t))}function uv(t){var n=t.c.length-1;return Xo(t.e/14)==n&&t.c[n]%2!=0}function hv(t,n){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(n<0?"e":"e+")+n}function Ea(t,n,e){var i,o;if(n<0){for(o=e+".";++n;o+=e);t=o+t}else if(++n>(i=t.length)){for(o=e,n-=i;--n;o+=e);t+=o}else n{class t{constructor(e,i){this.apiService=e,this.storageService=i}getNodes(){let e=[];return this.apiService.get("visors-summary").pipe(Se(i=>{i&&i.forEach(l=>{const c=new Ck;c.online=l.online,c.localPk=l.overview.local_pk,c.version=l.overview.build_info.version,c.configVersion=l.config_version,c.os=l.overview.build_info.os,c.arch=l.overview.build_info.arch,c.autoconnectTransports=l.public_autoconnect,c.isPublic=l.is_public,c.buildTag=l.build_tag?l.build_tag:"",c.rewardsAddress=l.reward_address,c.ip=l.overview&&l.overview.local_ip&&l.overview.local_ip.trim()?l.overview.local_ip:null,c.publicIp=l.overview&&l.overview.public_ip&&l.overview.public_ip.trim()?l.overview.public_ip:null,c.isSymmeticNat=l.overview.is_symmetic_nat,l.overview.country_code&&(c.countryCode=l.overview.country_code),l.overview.region_name&&(c.regionName=l.overview.region_name),l.overview.city_name&&(c.cityName=l.overview.city_name),l.overview.latitude&&(c.latitude=l.overview.latitude),l.overview.longitude&&(c.longitude=l.overview.longitude);const f=this.storageService.getLabelInfo(c.localPk);if(c.label=f&&f.label?f.label:this.storageService.getDefaultLabel(c),!c.online)return c.dmsgServerPk="",c.roundTripPing="",void e.push(c);c.health={servicesHealth:l.health.services_health,uptimeTrackerHealth:l.health.uptime_tracker_health,autoconnectHealth:l.health.autoconnect_health,transportabilityHealth:l.health.transportability_health},c.dmsgServerPk=l.dmsg_stats.server_public_key,c.connectedDmsgServers=l.connected_dmsg_servers||[],c.roundTripPing=this.nsToMs(l.dmsg_stats.round_trip),l.dmsg_servers&&Array.isArray(l.dmsg_servers)&&(c.dmsgServers=l.dmsg_servers.map(m=>({pk:m.pk,latency:m.latency||0}))),c.transports=[],l.overview.transports&&l.overview.transports.forEach(m=>{c.transports.push({id:m.id,localPk:m.local_pk,remotePk:m.remote_pk,type:m.type,recv:m.log?m.log.recv:0,sent:m.log?m.log.sent:0,latencyMs:m.latency_ms||0})}),c.apps=[],l.overview.apps&&l.overview.apps.forEach(m=>{c.apps.push({name:m.name,autostart:m.auto_start,port:m.port,status:m.status,detailedStatus:m.detailed_status,args:m.args})}),c.isHypervisor=l.is_hypervisor,e.push(c)});const o=new Map,r=[],s=[];e.forEach(l=>{o.set(l.localPk,l),l.online&&(r.push(l.localPk),s.push(l.ip))}),this.storageService.includeVisibleLocalNodes(r,s);const a=[];return this.storageService.getSavedLocalNodes().forEach(l=>{if(!o.has(l.publicKey)&&!l.hidden){const c=new Ck;c.localPk=l.publicKey;const f=this.storageService.getLabelInfo(l.publicKey);c.label=f&&f.label?f.label:this.storageService.getDefaultLabel(c),c.online=!1,c.dmsgServerPk="",c.roundTripPing="",a.push(c)}o.has(l.publicKey)&&!o.get(l.publicKey).online&&l.hidden&&o.delete(l.publicKey)}),e=[],o.forEach(l=>e.push(l)),e=e.concat(a),e}))}nsToMs(e){let i=new fv(e).dividedBy(1e6);return i=i.isLessThan(10)?i.decimalPlaces(2):i.decimalPlaces(0),i.toString(10)}getNode(e){return this.apiService.get(`visors/${e}/summary`).pipe(Se(i=>{const o=new Ck;o.localPk=i.overview.local_pk,o.version=i.overview.build_info.version,o.configVersion=i.config_version,o.os=i.overview.build_info.os,o.arch=i.overview.build_info.arch,o.secondsOnline=Math.floor(Number.parseFloat(i.uptime)),o.minHops=i.min_hops,o.buildTag=i.build_tag,o.skybianBuildVersion=i.skybian_build_version,o.connectedDmsgServers=i.connected_dmsg_servers||[],o.isSymmeticNat=i.overview.is_symmetic_nat,o.publicIp=i.overview.public_ip,o.autoconnectTransports=i.public_autoconnect,o.isPublic=i.is_public,o.rewardsAddress=i.reward_address,i.overview.country_code&&(o.countryCode=i.overview.country_code),i.overview.region_name&&(o.regionName=i.overview.region_name),i.overview.city_name&&(o.cityName=i.overview.city_name),i.overview.latitude&&(o.latitude=i.overview.latitude),i.overview.longitude&&(o.longitude=i.overview.longitude),o.ip=i.overview.local_ip&&i.overview.local_ip.trim()?i.overview.local_ip:null;const r=this.storageService.getLabelInfo(o.localPk);o.label=r&&r.label?r.label:this.storageService.getDefaultLabel(o),o.health={servicesHealth:i.health.services_health,uptimeTrackerHealth:i.health.uptime_tracker_health,autoconnectHealth:i.health.autoconnect_health,transportabilityHealth:i.health.transportability_health},o.transports=[],i.overview.transports&&i.overview.transports.forEach(a=>{o.transports.push({id:a.id,localPk:a.local_pk,remotePk:a.remote_pk,type:a.type,recv:a.log.recv,sent:a.log.sent,latencyMs:a.latency_ms||0})}),o.persistentTransports=[],i.persistent_transports&&i.persistent_transports.forEach(a=>{o.persistentTransports.push({pk:a.pk,type:a.type})}),o.routes=[],i.routes&&i.routes.forEach(a=>{o.routes.push({key:a.key,rule:a.rule}),a.rule_summary&&(o.routes[o.routes.length-1].ruleSummary={keepAlive:a.rule_summary.keep_alive,ruleType:a.rule_summary.rule_type,keyRouteId:a.rule_summary.key_route_id},a.rule_summary.app_fields&&a.rule_summary.app_fields.route_descriptor&&(o.routes[o.routes.length-1].appFields={routeDescriptor:{dstPk:a.rule_summary.app_fields.route_descriptor.dst_pk,dstPort:a.rule_summary.app_fields.route_descriptor.dst_port,srcPk:a.rule_summary.app_fields.route_descriptor.src_pk,srcPort:a.rule_summary.app_fields.route_descriptor.src_port}}),a.rule_summary.forward_fields&&(o.routes[o.routes.length-1].forwardFields={nextRid:a.rule_summary.forward_fields.next_rid,nextTid:a.rule_summary.forward_fields.next_tid},a.rule_summary.forward_fields.route_descriptor&&(o.routes[o.routes.length-1].forwardFields.routeDescriptor={dstPk:a.rule_summary.forward_fields.route_descriptor.dst_pk,dstPort:a.rule_summary.forward_fields.route_descriptor.dst_port,srcPk:a.rule_summary.forward_fields.route_descriptor.src_pk,srcPort:a.rule_summary.forward_fields.route_descriptor.src_port})),a.rule_summary.intermediary_forward_fields&&(o.routes[o.routes.length-1].intermediaryForwardFields={nextRid:a.rule_summary.intermediary_forward_fields.next_rid,nextTid:a.rule_summary.intermediary_forward_fields.next_tid}))}),o.apps=[],i.overview.apps&&i.overview.apps.forEach(a=>{o.apps.push({name:a.name,status:a.status,port:a.port,autostart:a.auto_start,detailedStatus:a.detailed_status,args:a.args})});let s=!1;return i.dmsg_stats&&(o.dmsgServerPk=i.dmsg_stats.server_public_key,o.roundTripPing=this.nsToMs(i.dmsg_stats.round_trip),s=!0),s||(o.dmsgServerPk="-",o.roundTripPing="-1"),i.dmsg_servers&&Array.isArray(i.dmsg_servers)&&(o.dmsgServers=i.dmsg_servers.map(a=>({pk:a.pk,latency:a.latency||0}))),o.isHypervisor=i.is_hypervisor,o}))}setRewardsAddress(e,i){return this.apiService.put(`visors/${e}/reward`,{reward_address:i})}getRewardsAddress(e){return this.apiService.get(`visors/${e}/reward`)}getRuntimeLogs(e){return this.apiService.get(`visors/${e}/runtime-logs`)}getRuntimeLogsSince(e,i){return this.apiService.get(`visors/${e}/runtime-logs?since=${i}`)}getRuntimeStats(e){return this.apiService.get(`visors/${e}/runtime-stats`)}getHostStats(e){return this.apiService.get(`visors/${e}/host-stats`)}getNetworkView(e=!1){return this.apiService.get("network-view"+(e?"?refresh=true":""))}getRewardRules(){return this.apiService.get("reward-rules",new qo({responseType:qf.Text}))}deleteRewardsAddress(e){return this.apiService.delete(`visors/${e}/reward`)}getProxies(e){return this.apiService.get(`visors/${e}/proxies`)}setProxyEnabled(e,i,o){return this.apiService.post(`visors/${e}/proxies/set`,{kind:i,enable:o})}setProxyUpstream(e,i,o){return this.apiService.post(`visors/${e}/proxies/upstream`,{kind:i,addr:o})}getSkynetPorts(e){return this.apiService.get(`visors/${e}/skynet-ports`)}registerSkynetPort(e,i){return this.apiService.post(`visors/${e}/skynet-ports/register`,{port:i})}deregisterSkynetPort(e,i){return this.apiService.post(`visors/${e}/skynet-ports/deregister`,{port:i})}getForwardedPorts(e){return this.apiService.get(`visors/${e}/forwarded-ports`)}registerForwardedPort(e,i){return this.apiService.post(`visors/${e}/forwarded-ports/register`,i)}updateForwardedPort(e,i){return this.apiService.post(`visors/${e}/forwarded-ports/update`,i)}getSkynetForwards(e){return this.apiService.get(`visors/${e}/skynet-forwards`)}skynetConnect(e,i,o,r,s){return this.apiService.post(`visors/${e}/skynet-forwards/connect`,{network:i,remote_pk:o,remote_port:r,local_port:s})}skynetDisconnect(e,i){return this.apiService.post(`visors/${e}/skynet-forwards/disconnect`,{id:i})}shutdown(e){return this.apiService.post(`visors/${e}/shutdown`)}checkIfUpdating(e){return this.apiService.get(`visors/${e}/update/ws/running`)}checkUpdate(e){let i="stable";return i=localStorage.getItem(dc.Channel)||i,this.apiService.get(`visors/${e}/update/available/${i}`)}update(e){const i={channel:"stable"};if(localStorage.getItem(dc.UseCustomSettings)){const r=localStorage.getItem(dc.Channel);r&&(i.channel=r);const s=localStorage.getItem(dc.Version);s&&(i.version=s);const a=localStorage.getItem(dc.ArchiveURL);a&&(i.archive_url=a);const l=localStorage.getItem(dc.ChecksumsURL);l&&(i.checksums_url=l)}return this.apiService.ws(`visors/${e}/update/ws`,i)}static{this.\u0275fac=function(i){return new(i||t)(ce(zi),ce(ti))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();class ime{}let KB=(()=>{class t{constructor(e,i){this.storageService=e,this.nodeService=i,this.dataSubject=new ki(null),this.lastEmitedData=new ime,this.firstCallToGetDataMade=!1,this.storageService.getRefreshTimeObservable().subscribe(o=>{this.dataRefreshDelay=1e3*o,this.forceRefresh()})}startRequestingData(){return this.firstCallToGetDataMade||this.getData(0),this.dataSubject.asObservable()}stopRequestingData(){this.updateSubscription&&(this.updateSubscription.unsubscribe(),this.firstCallToGetDataMade=!1)}getData(e){this.firstCallToGetDataMade=!0,this.updateSubscription&&this.updateSubscription.unsubscribe(),this.updateSubscription=ae(1).pipe(li(e),ai(()=>{this.lastEmitedData.updating=!0,this.dataSubject.next(this.lastEmitedData)}),li(120),It(()=>this.nodeService.getNodes())).subscribe(i=>{this.lastEmitedData={data:i,error:null,momentOfLastCorrectUpdate:Date.now(),updating:!1},this.dataSubject.next(this.lastEmitedData),this.getData(this.dataRefreshDelay)},i=>{i=Qe(i),this.lastEmitedData={data:this.lastEmitedData.data,error:i,momentOfLastCorrectUpdate:this.lastEmitedData.momentOfLastCorrectUpdate,updating:!1},this.dataSubject.next(this.lastEmitedData),this.getData(rt.connectionRetryDelay)})}forceRefresh(){this.getData(0)}static{this.\u0275fac=function(i){return new(i||t)(ce(ti),ce(Io))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function ome(t,n){if(1&t){const e=oe();h(0,"button",3),F("click",function(){const o=j(e).$implicit;return U(v().closePopup(o))}),B(1,"img",4),h(2,"div",5),p(3),u()()}if(2&t){const e=n.$implicit;d(),C("src","assets/img/lang/"+e.iconName,mo),d(2),M(e.name)}}let YB=(()=>{class t{static openDialog(e){const i=new nn;return i.autoFocus=!1,i.width=rt.mediumModalWidth,e.open(t,i)}constructor(e,i){this.dialogRef=e,this.languageService=i,this.languages=[]}ngOnInit(){this.subscription=this.languageService.languages.subscribe(e=>{this.languages=e})}ngOnDestroy(){this.subscription.unsubscribe()}closePopup(e=null){e&&this.languageService.changeLanguage(e.code),this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O($b))}}static{this.\u0275cmp=re({type:t,selectors:[["app-select-language"]],standalone:!1,decls:5,vars:4,consts:[[3,"headline","dialog"],[1,"options-container"],["mat-button","","color","accent",1,"grey-button-background"],["mat-button","","color","accent",1,"grey-button-background",3,"click"],[3,"src"],[1,"label"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),b(1,"translate"),h(2,"div",1),ve(3,ome,4,2,"button",2,Fe),u()()),2&i&&(C("headline",y(1,2,"language.title"))("dialog",o.dialogRef),d(3),ye(o.languages))},dependencies:[Pn,gn,xe],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}.options-container[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:118px;height:auto!important;margin:20px;font-size:.7rem;line-height:unset;padding:0!important;color:unset}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .mdc-button__label{width:100%}@media(max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:90px;font-size:.6rem;margin:6px}}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:64px;height:64px;margin:10px 0}@media(max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:48px;height:48px;margin:7px 0}}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{color:#202226!important;background-color:#ffffff40;padding:4px 10px}@media(max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{padding:4px 5px}}"]})}}return t})();function rme(t,n){1&t&&B(0,"img",1),2&t&&C("src","assets/img/lang/"+v().language.iconName,mo)}let sme=(()=>{class t{constructor(e,i){this.languageService=e,this.dialog=i}ngOnInit(){this.subscription=this.languageService.currentLanguage.subscribe(e=>{this.language=e})}ngOnDestroy(){this.subscription.unsubscribe()}openLanguageWindow(){YB.openDialog(this.dialog)}static{this.\u0275fac=function(i){return new(i||t)(O($b),O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-lang-button"]],standalone:!1,decls:3,vars:4,consts:[["mat-button","",1,"lang-button","subtle-transparent-button",3,"click","matTooltip"],[1,"flag",3,"src"]],template:function(i,o){1&i&&(h(0,"button",0),b(1,"translate"),F("click",function(){return o.openLanguageWindow()}),x(2,rme,1,1,"img",1),u()),2&i&&(C("matTooltip",y(1,2,"language.title")),d(2),S(o.language?2:-1))},dependencies:[Pn,Kt,xe],styles:[".lang-button[_ngcontent-%COMP%]{height:40px;background-color:#f8f9f9;border-radius:100%;padding:0;line-height:1;padding:0!important}.lang-button[_ngcontent-%COMP%] .flag[_ngcontent-%COMP%]{width:20px;height:20px}"]})}}return t})();const ame=t=>({"element-disabled":t});function lme(t,n){if(1&t){const e=oe();h(0,"div",8),F("click",function(){return j(e),U(v().configure())}),p(1),b(2,"translate"),u()}2&t&&(d(),M(y(2,1,"login.initial-config")))}let XB=(()=>{class t extends pn{constructor(e,i,o,r,s,a){super(),this.authService=e,this.router=i,this.snackbarService=o,this.dialog=r,this.route=s,this.multipleNodeDataService=a,this.loading=!1,this.isForVpn=!1,this.vpnKey="",this.userExists=!0}ngOnInit(){return this.multipleNodeDataService.stopRequestingData(),this.routeSubscription=this.route.paramMap.subscribe(e=>{this.vpnKey=e.get("key"),this.isForVpn=-1!==window.location.href.indexOf("vpnlogin"),this.verificationSubscription=this.authService.checkLogin().subscribe(i=>{i!==ka.NotLogged&&(Xr.currentInstance.processLoginDone(),setTimeout(()=>{this.router.navigate(this.isForVpn?["vpn",this.vpnKey,"status"]:["nodes"],{replaceUrl:!0})},5))})}),this.form=new nk({password:new lu("",Ne.required)}),this.authService.userExists().subscribe(e=>this.userExists=e,()=>this.userExists=!0),super.ngOnInit()}ngOnDestroy(){this.loginSubscription&&this.loginSubscription.unsubscribe(),this.verificationSubscription.unsubscribe(),this.routeSubscription.unsubscribe()}login(){!this.form.valid||this.loading||(this.loading=!0,this.loginSubscription=this.authService.login(this.form.get("password").value).subscribe(()=>this.onLoginSuccess(),e=>this.onLoginError(e)))}configure(){eme.openDialog(this.dialog)}onLoginSuccess(){Xr.currentInstance.processLoginDone(),setTimeout(()=>{this.router.navigate(this.isForVpn?["vpn",this.vpnKey,"status"]:["nodes"],{replaceUrl:!0})})}onLoginError(e){e=Qe(e),this.loading=!1,this.snackbarService.showError(e.originalError&&401===e.originalError.status?"login.incorrect-password":e.translatableErrorMsg)}static{this.\u0275fac=function(i){return new(i||t)(O(Yf),O(vt),O(ct),O(Ot),O(Ai),O(KB))}}static{this.\u0275cmp=re({type:t,selectors:[["app-login"]],standalone:!1,features:[be],decls:12,vars:9,consts:[[1,"w-100","h-100","d-flex","justify-content-center"],[1,"row","main-container"],["src","/assets/img/logo-v.png",1,"logo"],[1,"mt-5",3,"formGroup"],[1,"login-input",3,"ngClass"],["type","password","formControlName","password","autocomplete","off",3,"keydown.enter","placeholder"],[3,"click","disabled"],["class","config-link",3,"click",4,"ngIf"],[1,"config-link",3,"click"]],template:function(i,o){1&i&&(h(0,"div",0),B(1,"app-lang-button"),h(2,"div",1),B(3,"img",2),h(4,"form",3)(5,"div",4)(6,"input",5),b(7,"translate"),F("keydown.enter",function(){return o.login()}),u(),h(8,"button",6),F("click",function(){return o.login()}),h(9,"mat-icon"),p(10,"chevron_right"),u()()()(),it(11,lme,3,3,"div",7),u()()),2&i&&(d(4),C("formGroup",o.form),d(),C("ngClass",se(7,ame,o.loading)),d(),C("placeholder",y(7,5,"login.password")),d(2),C("disabled",!o.form.valid||o.loading),d(3),C("ngIf",!o.userExists))},dependencies:[$t,tf,xn,Gt,qt,wn,on,mn,We,sme,xe],styles:['.cursor-pointer[_ngcontent-%COMP%], .config-link[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}app-lang-button[_ngcontent-%COMP%]{position:fixed;right:10px;top:10px;z-index:10}.main-container[_ngcontent-%COMP%]{z-index:1;height:100%;flex-direction:column;align-items:center;justify-content:center}.logo[_ngcontent-%COMP%]{width:170px}.login-input[_ngcontent-%COMP%]{height:35px;width:300px;overflow:hidden;border-radius:10px;box-shadow:0 3px 8px #0000001a,0 6px 20px #0000001a;display:flex}.login-input[_ngcontent-%COMP%] input[type=password][_ngcontent-%COMP%]{background:#fff;width:calc(100% - 35px);height:100%;font-size:.875rem;border:none;padding-left:10px;padding-right:10px}.login-input[_ngcontent-%COMP%] input[type=password][_ngcontent-%COMP%]:focus{outline:none}.login-input[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{background:#fff;color:#202226;width:35px;height:35px;line-height:35px;border:none;display:flex;cursor:pointer;align-items:center}.login-input[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{color:#777}.config-link[_ngcontent-%COMP%]{color:#f8f9f9;font-size:.7rem;margin-top:20px}']})}}return t})();const cme=["firstInput"];let wk=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.formBuilder=o,this.storageService=r,this.snackbarService=s}ngOnInit(){this.form=this.formBuilder.group({label:[this.data.label]})}ngAfterViewInit(){setTimeout(()=>this.firstInput.nativeElement.focus())}save(){const e=this.form.get("label").value.trim();e!==this.data.label?(this.storageService.saveLabel(this.data.id,e,this.data.identifiedElementType),e?this.snackbarService.showDone("edit-label.done"):this.snackbarService.showWarning("edit-label.label-removed-warning"),this.dialogRef.close(!0)):this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(di),O(ti),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-edit-label"]],viewQuery:function(i,o){if(1&i&&ot(cme,5),2&i){let r;he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:11,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","label","maxlength","66","matInput",""],["color","primary",1,"float-right",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),b(7,"translate"),u(),B(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.save()}),p(11),b(12,"translate"),u()()),2&i&&(C("headline",y(1,5,"labeled-element.edit-label"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(4),M(y(7,7,"edit-label.label")),d(5),M(y(12,9,"common.save")))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,In,ui,gn,xe],encapsulation:2})}}return t})();const dme=["cancelButton"],ume=["confirmButton"];function hme(t,n){if(1&t&&(h(0,"div"),p(1),b(2,"translate"),u()),2&t){const e=n.$implicit;d(),E(" - ",y(2,1,e)," ")}}function fme(t,n){if(1&t&&(h(0,"div",4),ve(1,hme,3,3,"div",null,Fe),u()),2&t){const e=v();d(),ye(e.state!==e.confirmationStates.Done?e.data.list:e.doneList)}}function pme(t,n){if(1&t&&(h(0,"div",3),p(1),b(2,"translate"),u()),2&t){const e=v();d(),E(" ",y(2,1,e.data.lowerText)," ")}}function mme(t,n){if(1&t){const e=oe();h(0,"app-button",8,1),F("action",function(){return j(e),U(v().closeModal())}),p(2),b(3,"translate"),u()}if(2&t){const e=v();d(2),E(" ",y(3,1,e.data.cancelButtonText)," ")}}var mu=function(t){return t.Asking="Asking",t.Processing="Processing",t.Done="Done",t}(mu||{});let gme=(()=>{class t{constructor(e,i){this.dialogRef=e,this.data=i,this.disableDismiss=!1,this.state=mu.Asking,this.confirmationStates=mu,this.operationAccepted=new we,this.disableDismiss=!!i.disableDismiss,this.dialogRef.disableClose=this.disableDismiss}ngAfterViewInit(){this.data.cancelButtonText?setTimeout(()=>this.cancelButton.focus()):setTimeout(()=>this.confirmButton.focus())}ngOnDestroy(){this.operationAccepted.complete()}closeModal(){this.dialogRef.close()}sendOperationAcceptedEvent(){this.operationAccepted.emit()}showAsking(e){e&&(this.data=e),this.state=mu.Asking,this.confirmButton.reset(),this.disableDismiss=!1,this.dialogRef.disableClose=this.disableDismiss,this.cancelButton&&this.cancelButton.showEnabled()}showProcessing(){this.state=mu.Processing,this.disableDismiss=!0,this.confirmButton.showLoading(),this.cancelButton&&this.cancelButton.showDisabled()}showDone(e,i,o=null){this.doneTitle=e||this.data.headerText,this.doneText=i,this.doneList=o,this.confirmButton.reset(),setTimeout(()=>this.confirmButton.focus()),this.state=mu.Done,this.dialogRef.disableClose=!1,this.disableDismiss=!1}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En))}}static{this.\u0275cmp=re({type:t,selectors:[["app-confirmation"]],viewQuery:function(i,o){if(1&i&&ot(dme,5)(ume,5),2&i){let r;he(r=fe())&&(o.cancelButton=r.first),he(r=fe())&&(o.confirmButton=r.first)}},outputs:{operationAccepted:"operationAccepted"},standalone:!1,decls:13,vars:14,consts:[["confirmButton",""],["cancelButton",""],[3,"headline","dialog","disableDismiss"],[1,"text-container"],[1,"list-container"],[1,"buttons"],["color","accent"],["color","primary",3,"action"],["color","accent",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),b(1,"translate"),h(2,"div",3),p(3),b(4,"translate"),u(),x(5,fme,3,0,"div",4),x(6,pme,3,3,"div",3),h(7,"div",5),x(8,mme,4,3,"app-button",6),h(9,"app-button",7,0),F("action",function(){return o.state===o.confirmationStates.Asking?o.sendOperationAcceptedEvent():o.closeModal()}),p(11),b(12,"translate"),u()()()),2&i&&(C("headline",y(1,8,o.state!==o.confirmationStates.Done?o.data.headerText:o.doneTitle))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),d(3),E(" ",y(4,10,o.state!==o.confirmationStates.Done?o.data.text:o.doneText)," "),d(2),S(o.data.list&&o.state!==o.confirmationStates.Done||o.doneList&&o.state===o.confirmationStates.Done?5:-1),d(),S(o.data.lowerText&&o.state!==o.confirmationStates.Done?6:-1),d(2),S(o.data.cancelButtonText&&o.state!==o.confirmationStates.Done?8:-1),d(3),E(" ",y(12,12,o.state!==o.confirmationStates.Done?o.data.confirmButtonText:"confirmation.close")," "))},dependencies:[ui,gn,xe],styles:[".text-container[_ngcontent-%COMP%]{word-break:break-word}.list-container[_ngcontent-%COMP%]{font-size:14px;margin:10px;color:#215f9e;word-break:break-word}.buttons[_ngcontent-%COMP%]{margin-top:15px;text-align:right}.buttons[_ngcontent-%COMP%] app-button[_ngcontent-%COMP%]{margin-left:5px}"]})}}return t})();class Rt{static createConfirmationDialog(n,e){const i={text:e,headerText:"confirmation.header-text",confirmButtonText:"confirmation.confirm-button",cancelButtonText:"confirmation.cancel-button",disableDismiss:!1},o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,n.open(gme,o)}static checkIfTagIsUpdatable(n){return!(null==n||n.toUpperCase()==="Windows".toUpperCase()||n.toUpperCase()==="Win".toUpperCase()||n.toUpperCase()==="Mac".toUpperCase()||n.toUpperCase()==="Macos".toUpperCase()||n.toUpperCase()==="Mac OS".toUpperCase()||n.toUpperCase()==="Darwin".toUpperCase())}static checkIfTagCanOpenterminal(n){return!(null==n||n.toUpperCase()==="Windows".toUpperCase()||n.toUpperCase()==="Win".toUpperCase())}static checkIfIpValidOrEmpty(n){if(!n)return!0;const e=n.split(".");if(4!==e.length)return!1;for(const i of e){const o=Number.parseInt(i,10);if(isNaN(o)||o+""!==i||o<0||o>255)return!1}return!0}}function _me(t,n){if(1&t&&(h(0,"mat-icon",4),p(1),u()),2&t){const e=v().$implicit;C("inline",!0),d(),M(e.icon)}}function bme(t,n){if(1&t){const e=oe();h(0,"div",1)(1,"button",2),F("click",function(){const o=j(e).$index;return U(v().closePopup(o+1))}),h(2,"div",3),x(3,_me,2,2,"mat-icon",4),h(4,"span"),p(5),b(6,"translate"),u()()()()}if(2&t){const e=n.$implicit;d(3),S(e.icon?3:-1),d(2),M(y(6,2,e.label))}}let ao=(()=>{class t{static openDialog(e,i,o){const r=new nn;return r.data={options:i,title:o},r.autoFocus=!1,r.width=rt.smallModalWidth,e.open(t,r)}constructor(e,i){this.data=e,this.dialogRef=i}closePopup(e){this.dialogRef.close(e)}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-select-option"]],standalone:!1,decls:4,vars:5,consts:[[3,"headline","dialog","includeVerticalMargins"],[1,"options-list-button-container"],["mat-button","",1,"grey-button-background",3,"click"],[1,"internal-container"],[1,"icon",3,"inline"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),b(1,"translate"),ve(2,bme,7,4,"div",1,Fe),u()),2&i&&(C("headline",y(1,3,o.data.title))("dialog",o.dialogRef)("includeVerticalMargins",!1),d(2),ye(o.data.options))},dependencies:[Pn,We,gn,xe],styles:[".icon[_ngcontent-%COMP%]{font-size:14px;width:14px;line-height:1}.grey-button-background[_ngcontent-%COMP%]{justify-content:left!important;min-height:45px}"]})}}return t})();var Sn=function(t){return t.TextInput="TextInput",t.Select="Select",t}(Sn||{});class Dt{constructor(n,e,i,o){this.properties=n,this.label=e,this.sortingMode=i,this.labelProperties=o}get id(){return this.properties.join("")}}var st=function(t){return t.Text="Text",t.Number="Number",t.NumberReversed="NumberReversed",t.Boolean="Boolean",t}(st||{});class gu{get sortingArrow(){return this.sortReverse?"keyboard_arrow_up":"keyboard_arrow_down"}get currentSortingColumn(){return this.sortBy}get sortingInReverseOrder(){return this.sortReverse}get dataSorted(){return this.dataUpdatedSubject.asObservable()}get currentlySortingByLabel(){return this.sortByLabel}constructor(n,e,i,o,r,s){this.dialog=n,this.translateService=e,this.storageService=i,this.sortReverse=!1,this.sortByLabel=!1,this.tieBreakerColumnIndex=null,this.columnStorageKeyPrefix="col_",this.orderStorageKeyPrefix="order_",this.labelStorageKeyPrefix="label_",this.dataUpdatedSubject=new me,this.sortableColumns=o,this.id=s,this.defaultColumnIndex=r,this.sortBy=o[r];const a=this.storageService.getDataForHv(this.columnStorageKeyPrefix+s);if(a){const l=o.find(c=>c.id===a);l&&(this.sortBy=l)}this.sortReverse="true"===this.storageService.getDataForHv(this.orderStorageKeyPrefix+s),this.sortByLabel="true"===this.storageService.getDataForHv(this.labelStorageKeyPrefix+s)}dispose(){this.dataUpdatedSubject.complete()}setTieBreakerColumnIndex(n){this.tieBreakerColumnIndex=n}setData(n){this.data=n,this.sortData()}changeSortingOrder(n){if(this.sortBy===n||n.labelProperties)if(n.labelProperties){const e=[{label:this.translateService.instant("tables.sort-by-value")},{label:this.translateService.instant("tables.sort-by-value")+" "+this.translateService.instant("tables.inverted-order")},{label:this.translateService.instant("tables.sort-by-label")},{label:this.translateService.instant("tables.sort-by-label")+" "+this.translateService.instant("tables.inverted-order")}];ao.openDialog(this.dialog,e,"tables.title").afterClosed().subscribe(i=>{i&&this.changeSortingParams(n,i>2,i%2==0)})}else this.sortReverse=!this.sortReverse,this.storageService.setDataForHv(this.orderStorageKeyPrefix+this.id,String(this.sortReverse)),this.sortData();else this.changeSortingParams(n,!1,!1)}changeSortingParams(n,e,i){this.sortBy=n,this.sortByLabel=e,this.sortReverse=i,this.storageService.setDataForHv(this.columnStorageKeyPrefix+this.id,n.id),this.storageService.setDataForHv(this.orderStorageKeyPrefix+this.id,String(this.sortReverse)),this.storageService.setDataForHv(this.labelStorageKeyPrefix+this.id,String(this.sortByLabel)),this.sortData()}openSortingOrderModal(){const n=[],e=[];this.sortableColumns.forEach(i=>{const o=this.translateService.instant(i.label);n.push({label:o}),e.push({sortBy:i,sortReverse:!1,sortByLabel:!1}),n.push({label:o+" "+this.translateService.instant("tables.inverted-order")}),e.push({sortBy:i,sortReverse:!0,sortByLabel:!1}),i.labelProperties&&(n.push({label:o+" "+this.translateService.instant("tables.label")}),e.push({sortBy:i,sortReverse:!1,sortByLabel:!0}),n.push({label:o+" "+this.translateService.instant("tables.label")+" "+this.translateService.instant("tables.inverted-order")}),e.push({sortBy:i,sortReverse:!0,sortByLabel:!0}))}),ao.openDialog(this.dialog,n,"tables.title").afterClosed().subscribe(i=>{i&&this.changeSortingParams(e[i-1].sortBy,e[i-1].sortByLabel,e[i-1].sortReverse)})}sortData(){this.data&&(this.data.sort((n,e)=>{let i=this.getSortResponse(this.sortBy,n,e,!0);return 0===i&&null!==this.tieBreakerColumnIndex&&this.sortableColumns[this.tieBreakerColumnIndex]!==this.sortBy&&(i=this.getSortResponse(this.sortableColumns[this.tieBreakerColumnIndex],n,e,!1)),0===i&&this.sortableColumns[this.defaultColumnIndex]!==this.sortBy&&(i=this.getSortResponse(this.sortableColumns[this.defaultColumnIndex],n,e,!1)),i}),this.dataUpdatedSubject.next())}getSortResponse(n,e,i,o){let s=e,a=i;(this.sortByLabel&&o&&n.labelProperties?n.labelProperties:n.properties).forEach(f=>{s=s[f],a=a[f]});const l=this.sortByLabel&&o?st.Text:n.sortingMode;let c=0;return l===st.Text?c=this.sortReverse?a.localeCompare(s):s.localeCompare(a):l===st.NumberReversed?c=this.sortReverse?s-a:a-s:l===st.Number?c=this.sortReverse?a-s:s-a:l===st.Boolean&&(s&&!a?c=-1:!s&&a&&(c=1),c*=this.sortReverse?-1:1),c}}let Cme=(()=>{class t{_animationsDisabled=ci();state="unchecked";disabled=!1;appearance="full";constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:12,hostBindings:function(i,o){2&i&&Ie("mat-pseudo-checkbox-indeterminate","indeterminate"===o.state)("mat-pseudo-checkbox-checked","checked"===o.state)("mat-pseudo-checkbox-disabled",o.disabled)("mat-pseudo-checkbox-minimal","minimal"===o.appearance)("mat-pseudo-checkbox-full","full"===o.appearance)("_mat-animation-noopable",o._animationsDisabled)},inputs:{state:"state",disabled:"disabled",appearance:"appearance"},decls:0,vars:0,template:function(i,o){},styles:['.mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-minimal-selected-checkmark-color, var(--mat-sys-primary))}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full{border-color:var(--mat-pseudo-checkbox-full-unselected-icon-color, var(--mat-sys-on-surface-variant));border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-pseudo-checkbox-full-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-pseudo-checkbox-full-selected-icon-color, var(--mat-sys-primary));border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-full-selected-checkmark-color, var(--mat-sys-on-primary))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-pseudo-checkbox-full-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-full-disabled-selected-checkmark-color, var(--mat-sys-surface))}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}\n'],encapsulation:2,changeDetection:0})}return t})();const wme=["text"],xme=[[["mat-icon"]],"*"],Sme=["mat-icon","*"];function kme(t,n){if(1&t&&B(0,"mat-pseudo-checkbox",1),2&t){const e=v();C("disabled",e.disabled)("state",e.selected?"checked":"unchecked")}}function Dme(t,n){1&t&&B(0,"mat-pseudo-checkbox",3),2&t&&C("disabled",v().disabled)}function Mme(t,n){if(1&t&&(h(0,"span",4),p(1),u()),2&t){const e=v();d(),E("(",e.group.label,")")}}const ZB=new Z("MAT_OPTION_PARENT_COMPONENT"),QB=new Z("MatOptgroup");class Tme{source;isUserInput;constructor(n,e=!1){this.source=n,this.isUserInput=e}}let Qr=(()=>{class t{_element=D(Re);_changeDetectorRef=D(Jt);_parent=D(ZB,{optional:!0});group=D(QB,{optional:!0});_signalDisableRipple=!1;_selected=!1;_active=!1;_mostRecentViewValue="";get multiple(){return this._parent&&this._parent.multiple}get selected(){return this._selected}value;id=D(ni).getId("mat-option-");get disabled(){return this.group&&this.group.disabled||this._disabled()}set disabled(e){this._disabled.set(e)}_disabled=yt(!1);get disableRipple(){return this._signalDisableRipple?this._parent.disableRipple():!!this._parent?.disableRipple}get hideSingleSelectionIndicator(){return!(!this._parent||!this._parent.hideSingleSelectionIndicator)}onSelectionChange=new we;_text;_stateChanges=new me;constructor(){const e=D(zo);e.load(tu),e.load(gS),this._signalDisableRipple=!!this._parent&&El(this._parent.disableRipple)}get active(){return this._active}get viewValue(){return(this._text?.nativeElement.textContent||"").trim()}select(e=!0){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),e&&this._emitSelectionChangeEvent())}deselect(e=!0){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),e&&this._emitSelectionChangeEvent())}focus(e,i){const o=this._getHostElement();"function"==typeof o.focus&&o.focus(i)}setActiveStyles(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}setInactiveStyles(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}getLabel(){return this.viewValue}_handleKeydown(e){(13===e.keyCode||32===e.keyCode)&&!yr(e)&&(this._selectViaInteraction(),e.preventDefault())}_selectViaInteraction(){this.disabled||(this._selected=!this.multiple||!this._selected,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._element.nativeElement}ngAfterViewChecked(){if(this._selected){const e=this.viewValue;e!==this._mostRecentViewValue&&(this._mostRecentViewValue&&this._stateChanges.next(),this._mostRecentViewValue=e)}}ngOnDestroy(){this._stateChanges.complete()}_emitSelectionChangeEvent(e=!1){this.onSelectionChange.emit(new Tme(this,e))}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-option"]],viewQuery:function(i,o){if(1&i&&ot(wme,7),2&i){let r;he(r=fe())&&(o._text=r.first)}},hostAttrs:["role","option",1,"mat-mdc-option","mdc-list-item"],hostVars:11,hostBindings:function(i,o){1&i&&F("click",function(){return o._selectViaInteraction()})("keydown",function(s){return o._handleKeydown(s)}),2&i&&(ur("id",o.id),$e("aria-selected",o.selected)("aria-disabled",o.disabled.toString()),Ie("mdc-list-item--selected",o.selected)("mat-mdc-option-multiple",o.multiple)("mat-mdc-option-active",o.active)("mdc-list-item--disabled",o.disabled))},inputs:{value:"value",id:"id",disabled:[2,"disabled","disabled",De]},outputs:{onSelectionChange:"onSelectionChange"},exportAs:["matOption"],ngContentSelectors:Sme,decls:8,vars:5,consts:[["text",""],["aria-hidden","true",1,"mat-mdc-option-pseudo-checkbox",3,"disabled","state"],[1,"mdc-list-item__primary-text"],["state","checked","aria-hidden","true","appearance","minimal",1,"mat-mdc-option-pseudo-checkbox",3,"disabled"],[1,"cdk-visually-hidden"],["aria-hidden","true","mat-ripple","",1,"mat-mdc-option-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled"]],template:function(i,o){1&i&&(yi(xme),x(0,kme,1,2,"mat-pseudo-checkbox",1),Pt(1),h(2,"span",2,0),Pt(4,1),u(),x(5,Dme,1,1,"mat-pseudo-checkbox",3),x(6,Mme,2,1,"span",4),B(7,"div",5)),2&i&&(S(o.multiple?0:-1),d(5),S(o.multiple||!o.selected||o.hideSingleSelectionIndicator?-1:5),d(),S(o.group&&o.group._inert?6:-1),d(),C("matRippleTrigger",o._getHostElement())("matRippleDisabled",o.disabled||o.disableRipple))},dependencies:[Cme,eu],styles:['.mat-mdc-option{-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-option-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-option-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-option-label-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-option-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-option-label-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent));outline:0}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-active,.mat-mdc-option-multiple,:focus,:hover){background-color:var(--mat-option-selected-state-layer-color, var(--mat-sys-secondary-container))}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-active,.mat-mdc-option-multiple,:focus,:hover) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option.mdc-list-item{align-items:center;background:rgba(0,0,0,0)}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}@media(forced-colors: active){.mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{right:auto;left:16px}}.mat-mdc-option-multiple{--mat-list-list-item-selected-container-color: var(--mat-list-list-item-container-color, transparent)}.mat-mdc-option-active .mat-focus-indicator::before{content:""}\n'],encapsulation:2,changeDetection:0})}return t})();class JB{_items;_activeItemIndex=yt(-1);_activeItem=yt(null);_wrap=!1;_typeaheadSubscription=pt.EMPTY;_itemChangesSubscription;_vertical=!0;_horizontal=null;_allowedModifierKeys=[];_homeAndEnd=!1;_pageUpAndDown={enabled:!1,delta:10};_effectRef;_typeahead;_skipPredicateFn=n=>n.disabled;constructor(n,e){this._items=n,n instanceof id?this._itemChangesSubscription=n.changes.subscribe(i=>this._itemsChanged(i.toArray())):El(n)&&(this._effectRef=fm(()=>this._itemsChanged(n()),{injector:e}))}tabOut=new me;change=new me;skipPredicate(n){return this._skipPredicateFn=n,this}withWrap(n=!0){return this._wrap=n,this}withVerticalOrientation(n=!0){return this._vertical=n,this}withHorizontalOrientation(n){return this._horizontal=n,this}withAllowedModifierKeys(n){return this._allowedModifierKeys=n,this}withTypeAhead(n=200){this._typeaheadSubscription.unsubscribe();const e=this._getItemsArray();return this._typeahead=new NB(e,{debounceInterval:"number"==typeof n?n:void 0,skipPredicate:i=>this._skipPredicateFn(i)}),this._typeaheadSubscription=this._typeahead.selectedItem.subscribe(i=>{this.setActiveItem(i)}),this}cancelTypeahead(){return this._typeahead?.reset(),this}withHomeAndEnd(n=!0){return this._homeAndEnd=n,this}withPageUpDown(n=!0,e=10){return this._pageUpAndDown={enabled:n,delta:e},this}setActiveItem(n){const e=this._activeItem();this.updateActiveItem(n),this._activeItem()!==e&&this.change.next(this._activeItemIndex())}onKeydown(n){const e=n.keyCode,o=["altKey","ctrlKey","metaKey","shiftKey"].every(r=>!n[r]||this._allowedModifierKeys.indexOf(r)>-1);switch(e){case 9:return void this.tabOut.next();case 40:if(this._vertical&&o){this.setNextItemActive();break}return;case 38:if(this._vertical&&o){this.setPreviousItemActive();break}return;case 39:if(this._horizontal&&o){"rtl"===this._horizontal?this.setPreviousItemActive():this.setNextItemActive();break}return;case 37:if(this._horizontal&&o){"rtl"===this._horizontal?this.setNextItemActive():this.setPreviousItemActive();break}return;case 36:if(this._homeAndEnd&&o){this.setFirstItemActive();break}return;case 35:if(this._homeAndEnd&&o){this.setLastItemActive();break}return;case 33:if(this._pageUpAndDown.enabled&&o){const r=this._activeItemIndex()-this._pageUpAndDown.delta;this._setActiveItemByIndex(r>0?r:0,1);break}return;case 34:if(this._pageUpAndDown.enabled&&o){const r=this._activeItemIndex()+this._pageUpAndDown.delta,s=this._getItemsArray().length;this._setActiveItemByIndex(r-1&&i!==this._activeItemIndex()&&(this._activeItemIndex.set(i),this._typeahead?.setCurrentSelectedItemIndex(i))}}}class Ime extends JB{setActiveItem(n){this.activeItem&&this.activeItem.setInactiveStyles(),super.setActiveItem(n),this.activeItem&&this.activeItem.setActiveStyles()}}class Ome{_multiple;_emitChanges;compareWith;_selection=new Set;_deselectedToEmit=[];_selectedToEmit=[];_selected=null;get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}changed=new me;constructor(n=!1,e,i=!0,o){this._multiple=n,this._emitChanges=i,this.compareWith=o,e&&e.length&&(n?e.forEach(r=>this._markSelected(r)):this._markSelected(e[0]),this._selectedToEmit.length=0)}select(...n){this._verifyValueAssignment(n),n.forEach(i=>this._markSelected(i));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}deselect(...n){this._verifyValueAssignment(n),n.forEach(i=>this._unmarkSelected(i));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}setSelection(...n){this._verifyValueAssignment(n);const e=this.selected,i=new Set(n.map(r=>this._getConcreteValue(r)));n.forEach(r=>this._markSelected(r)),e.filter(r=>!i.has(this._getConcreteValue(r,i))).forEach(r=>this._unmarkSelected(r));const o=this._hasQueuedChanges();return this._emitChangeEvent(),o}toggle(n){return this.isSelected(n)?this.deselect(n):this.select(n)}clear(n=!0){this._unmarkAll();const e=this._hasQueuedChanges();return n&&this._emitChangeEvent(),e}isSelected(n){return this._selection.has(this._getConcreteValue(n))}isEmpty(){return 0===this._selection.size}hasValue(){return!this.isEmpty()}sort(n){this._multiple&&this.selected&&this._selected.sort(n)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(n){n=this._getConcreteValue(n),this.isSelected(n)||(this._multiple||this._unmarkAll(),this.isSelected(n)||this._selection.add(n),this._emitChanges&&this._selectedToEmit.push(n))}_unmarkSelected(n){n=this._getConcreteValue(n),this.isSelected(n)&&(this._selection.delete(n),this._emitChanges&&this._deselectedToEmit.push(n))}_unmarkAll(){this.isEmpty()||this._selection.forEach(n=>this._unmarkSelected(n))}_verifyValueAssignment(n){}_hasQueuedChanges(){return!(!this._deselectedToEmit.length&&!this._selectedToEmit.length)}_getConcreteValue(n,e){if(this.compareWith){e=e??this._selection;for(let i of e)if(this.compareWith(n,i))return i;return n}return n}}let Ame=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ii]})}return t})(),eV=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[IS,Ame,Qr,ii]})}return t})();const Rme=["trigger"],Fme=["panel"],Nme=[[["mat-select-trigger"]],"*"],Lme=["mat-select-trigger","*"];function Bme(t,n){if(1&t&&(h(0,"span",4),p(1),u()),2&t){const e=v();d(),M(e.placeholder)}}function Vme(t,n){1&t&&Pt(0)}function Hme(t,n){if(1&t&&(h(0,"span",11),p(1),u()),2&t){const e=v(2);d(),M(e.triggerValue)}}function jme(t,n){if(1&t&&(h(0,"span",5),x(1,Vme,1,0)(2,Hme,2,1,"span",11),u()),2&t){const e=v();d(),S(e.customTrigger?1:2)}}function Ume(t,n){if(1&t){const e=oe();h(0,"div",12,1),F("keydown",function(o){return j(e),U(v()._handleKeydown(o))}),Pt(2,1),u()}if(2&t){const e=v();Ze(e.panelClass),Ie("mat-select-panel-animations-enabled",!e._animationsDisabled)("mat-primary","primary"===(null==e._parentFormField?null:e._parentFormField.color))("mat-accent","accent"===(null==e._parentFormField?null:e._parentFormField.color))("mat-warn","warn"===(null==e._parentFormField?null:e._parentFormField.color))("mat-undefined",!(null!=e._parentFormField&&e._parentFormField.color)),$e("id",e.id+"-panel")("aria-multiselectable",e.multiple)("aria-label",e.ariaLabel||null)("aria-labelledby",e._getPanelAriaLabelledby())}}const zme=new Z("mat-select-scroll-strategy",{providedIn:"root",factory:()=>{const t=D(He);return()=>Bf(t)}}),$me=new Z("MAT_SELECT_CONFIG"),tV=new Z("MatSelectTrigger");class Wme{source;value;constructor(n,e){this.source=n,this.value=e}}let Pa=(()=>{class t{_viewportRuler=D(qd);_changeDetectorRef=D(Jt);_elementRef=D(Re);_dir=D(br,{optional:!0});_idGenerator=D(ni);_renderer=D(Qn);_parentFormField=D(fk,{optional:!0});ngControl=D(Zr,{self:!0,optional:!0});_liveAnnouncer=D(d4);_defaultOptions=D($me,{optional:!0});_animationsDisabled=ci();_popoverLocation;_initialized=new me;_cleanupDetach;options;optionGroups;customTrigger;_positions=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"}];_scrollOptionIntoView(e){const i=this.options.toArray()[e];if(i){const o=this.panel.nativeElement,r=function Eme(t,n,e){if(e.length){let i=n.toArray(),o=e.toArray(),r=0;for(let s=0;se+i?Math.max(0,t-i+n):e}(s.offsetTop,s.offsetHeight,o.scrollTop,o.offsetHeight)}}_positioningSettled(){this._scrollOptionIntoView(this._keyManager.activeItemIndex||0)}_getChangeEvent(e){return new Wme(this,e)}_scrollStrategyFactory=D(zme);_panelOpen=!1;_compareWith=(e,i)=>e===i;_uid=this._idGenerator.getId("mat-select-");_triggerAriaLabelledBy=null;_previousControl;_destroy=new me;_errorStateTracker;stateChanges=new me;disableAutomaticLabeling=!0;userAriaDescribedBy;_selectionModel;_keyManager;_preferredOverlayOrigin;_overlayWidth;_onChange=()=>{};_onTouched=()=>{};_valueId=this._idGenerator.getId("mat-select-value-");_scrollStrategy;_overlayPanelClass=this._defaultOptions?.overlayPanelClass||"";get focused(){return this._focused||this._panelOpen}_focused=!1;controlType="mat-select";trigger;panel;_overlayDir;panelClass;disabled=!1;get disableRipple(){return this._disableRipple()}set disableRipple(e){this._disableRipple.set(e)}_disableRipple=yt(!1);tabIndex=0;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._syncParentProperties()}_hideSingleSelectionIndicator=this._defaultOptions?.hideSingleSelectionIndicator??!1;get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.stateChanges.next()}_placeholder;get required(){return this._required??this.ngControl?.control?.hasValidator(Ne.required)??!1}set required(e){this._required=e,this.stateChanges.next()}_required;get multiple(){return this._multiple}set multiple(e){this._multiple=e}_multiple=!1;disableOptionCentering=this._defaultOptions?.disableOptionCentering??!1;get compareWith(){return this._compareWith}set compareWith(e){this._compareWith=e,this._selectionModel&&this._initializeSelection()}get value(){return this._value}set value(e){this._assignValue(e)&&this._onChange(e)}_value;ariaLabel="";ariaLabelledby;get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}typeaheadDebounceInterval;sortComparator;get id(){return this._id}set id(e){this._id=e||this._uid,this.stateChanges.next()}_id;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}panelWidth=this._defaultOptions&&typeof this._defaultOptions.panelWidth<"u"?this._defaultOptions.panelWidth:"auto";canSelectNullableOptions=this._defaultOptions?.canSelectNullableOptions??!1;optionSelectionChanges=ya(()=>{const e=this.options;return e?e.changes.pipe(si(e),tn(()=>Cr(...e.map(i=>i.onSelectionChange)))):this._initialized.pipe(tn(()=>this.optionSelectionChanges))});openedChange=new we;_openedStream=this.openedChange.pipe(Tn(e=>e),Se(()=>{}));_closedStream=this.openedChange.pipe(Tn(e=>!e),Se(()=>{}));selectionChange=new we;valueChange=new we;constructor(){const e=D(pk),i=D(su,{optional:!0}),o=D(on,{optional:!0}),r=D(new Yh("tabindex"),{optional:!0}),s=D(mS,{optional:!0});this.ngControl&&(this.ngControl.valueAccessor=this),null!=this._defaultOptions?.typeaheadDebounceInterval&&(this.typeaheadDebounceInterval=this._defaultOptions.typeaheadDebounceInterval),this._errorStateTracker=new FB(e,this.ngControl,o,i,this.stateChanges),this._scrollStrategy=this._scrollStrategyFactory(),this.tabIndex=null==r?0:parseInt(r)||0,this._popoverLocation=!1===s?.usePopover?null:"inline",this.id=this.id}ngOnInit(){this._selectionModel=new Ome(this.multiple),this.stateChanges.next(),this._viewportRuler.change().pipe(fn(this._destroy)).subscribe(()=>{this.panelOpen&&(this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._changeDetectorRef.detectChanges())})}ngAfterContentInit(){this._initialized.next(),this._initialized.complete(),this._initKeyManager(),this._selectionModel.changed.pipe(fn(this._destroy)).subscribe(e=>{e.added.forEach(i=>i.select()),e.removed.forEach(i=>i.deselect())}),this.options.changes.pipe(si(null),fn(this._destroy)).subscribe(()=>{this._resetOptions(),this._initializeSelection()})}ngDoCheck(){const e=this._getTriggerAriaLabelledby(),i=this.ngControl;if(e!==this._triggerAriaLabelledBy){const o=this._elementRef.nativeElement;this._triggerAriaLabelledBy=e,e?o.setAttribute("aria-labelledby",e):o.removeAttribute("aria-labelledby")}i&&(this._previousControl!==i.control&&(void 0!==this._previousControl&&null!==i.disabled&&i.disabled!==this.disabled&&(this.disabled=i.disabled),this._previousControl=i.control),this.updateErrorState())}ngOnChanges(e){(e.disabled||e.userAriaDescribedBy)&&this.stateChanges.next(),e.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this.typeaheadDebounceInterval),e.panelClass&&this.panelClass instanceof Set&&(this.panelClass=Array.from(this.panelClass))}ngOnDestroy(){this._cleanupDetach?.(),this._keyManager?.destroy(),this._destroy.next(),this._destroy.complete(),this.stateChanges.complete(),this._clearFromModal()}toggle(){this.panelOpen?this.close():this.open()}open(){this._canOpen()&&(this._parentFormField&&(this._preferredOverlayOrigin=this._parentFormField.getConnectedOverlayOrigin()),this._cleanupDetach?.(),this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._applyModalPanelOwnership(),this._panelOpen=!0,this._overlayDir.positionChange.pipe(Cn(1)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this._positioningSettled()}),this._overlayDir.attachOverlay(),this._keyManager.withHorizontalOrientation(null),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck(),this.stateChanges.next(),Promise.resolve().then(()=>this.openedChange.emit(!0)))}_trackedModal=null;_applyModalPanelOwnership(){const e=this._elementRef.nativeElement.closest('body > .cdk-overlay-container [aria-modal="true"]');if(!e)return;const i=`${this.id}-panel`;this._trackedModal&&mk(this._trackedModal,"aria-owns",i),VB(e,"aria-owns",i),this._trackedModal=e}_clearFromModal(){this._trackedModal&&(mk(this._trackedModal,"aria-owns",`${this.id}-panel`),this._trackedModal=null)}close(){this._panelOpen&&(this._panelOpen=!1,this._exitAndDetach(),this._keyManager.withHorizontalOrientation(this._isRtl()?"rtl":"ltr"),this._changeDetectorRef.markForCheck(),this._onTouched(),this.stateChanges.next(),Promise.resolve().then(()=>this.openedChange.emit(!1)))}_exitAndDetach(){if(this._animationsDisabled||!this.panel)return void this._detachOverlay();this._cleanupDetach?.(),this._cleanupDetach=()=>{i(),clearTimeout(o),this._cleanupDetach=void 0};const e=this.panel.nativeElement,i=this._renderer.listen(e,"animationend",r=>{"_mat-select-exit"===r.animationName&&(this._cleanupDetach?.(),this._detachOverlay())}),o=setTimeout(()=>{this._cleanupDetach?.(),this._detachOverlay()},200);e.classList.add("mat-select-panel-exit")}_detachOverlay(){this._overlayDir.detachOverlay(),this._changeDetectorRef.markForCheck()}writeValue(e){this._assignValue(e)}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}get panelOpen(){return this._panelOpen}get selected(){return this.multiple?this._selectionModel?.selected||[]:this._selectionModel?.selected[0]}get triggerValue(){if(this.empty)return"";if(this._multiple){const e=this._selectionModel.selected.map(i=>i.viewValue);return this._isRtl()&&e.reverse(),e.join(", ")}return this._selectionModel.selected[0].viewValue}updateErrorState(){this._errorStateTracker.updateErrorState()}_isRtl(){return!!this._dir&&"rtl"===this._dir.value}_handleKeydown(e){this.disabled||(this.panelOpen?this._handleOpenKeydown(e):this._handleClosedKeydown(e))}_handleClosedKeydown(e){const i=e.keyCode,o=40===i||38===i||37===i||39===i,r=13===i||32===i,s=this._keyManager;if(!s.isTyping()&&r&&!yr(e)||(this.multiple||e.altKey)&&o)e.preventDefault(),this.open();else if(!this.multiple){const a=this.selected;s.onKeydown(e);const l=this.selected;l&&a!==l&&this._liveAnnouncer.announce(l.viewValue,1e4)}}_handleOpenKeydown(e){const i=this._keyManager,o=e.keyCode,r=40===o||38===o,s=i.isTyping();if(r&&e.altKey)e.preventDefault(),this.close();else if(s||13!==o&&32!==o||!i.activeItem||yr(e))if(!s&&this._multiple&&65===o&&e.ctrlKey){e.preventDefault();const a=this.options.some(l=>!l.disabled&&!l.selected);this.options.forEach(l=>{l.disabled||(a?l.select():l.deselect())})}else{const a=i.activeItemIndex;i.onKeydown(e),this._multiple&&r&&e.shiftKey&&i.activeItem&&i.activeItemIndex!==a&&i.activeItem._selectViaInteraction()}else e.preventDefault(),i.activeItem._selectViaInteraction()}_handleOverlayKeydown(e){27===e.keyCode&&!yr(e)&&(e.preventDefault(),this.close())}_onFocus(){this.disabled||(this._focused=!0,this.stateChanges.next())}_onBlur(){this._focused=!1,this._keyManager?.cancelTypeahead(),!this.disabled&&!this.panelOpen&&(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}get empty(){return!this._selectionModel||this._selectionModel.isEmpty()}_initializeSelection(){Promise.resolve().then(()=>{this.ngControl&&(this._value=this.ngControl.value),this._setSelectionByValue(this._value),this.stateChanges.next()})}_setSelectionByValue(e){if(this.options.forEach(i=>i.setInactiveStyles()),this._selectionModel.clear(),this.multiple&&e)Array.isArray(e),e.forEach(i=>this._selectOptionByValue(i)),this._sortValues();else{const i=this._selectOptionByValue(e);i?this._keyManager.updateActiveItem(i):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}_selectOptionByValue(e){const i=this.options.find(o=>{if(this._selectionModel.isSelected(o))return!1;try{return(null!=o.value||this.canSelectNullableOptions)&&this._compareWith(o.value,e)}catch{return!1}});return i&&this._selectionModel.select(i),i}_assignValue(e){return!!(e!==this._value||this._multiple&&Array.isArray(e))&&(this.options&&this._setSelectionByValue(e),this._value=e,!0)}_skipPredicate=e=>!this.panelOpen&&e.disabled;_getOverlayWidth(e){return"auto"===this.panelWidth?(e instanceof kb?e.elementRef:e||this._elementRef).nativeElement.getBoundingClientRect().width:null===this.panelWidth?"":this.panelWidth}_syncParentProperties(){if(this.options)for(const e of this.options)e._changeDetectorRef.markForCheck()}_initKeyManager(){this._keyManager=new Ime(this.options).withTypeAhead(this.typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?"rtl":"ltr").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(["shiftKey"]).skipPredicate(this._skipPredicate),this._keyManager.tabOut.subscribe(()=>{this.panelOpen&&(!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction(),this.focus(),this.close())}),this._keyManager.change.subscribe(()=>{this._panelOpen&&this.panel?this._scrollOptionIntoView(this._keyManager.activeItemIndex||0):!this._panelOpen&&!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction()})}_resetOptions(){const e=Cr(this.options.changes,this._destroy);this.optionSelectionChanges.pipe(fn(e)).subscribe(i=>{this._onSelect(i.source,i.isUserInput),i.isUserInput&&!this.multiple&&this._panelOpen&&(this.close(),this.focus())}),Cr(...this.options.map(i=>i._stateChanges)).pipe(fn(e)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this.stateChanges.next()})}_onSelect(e,i){const o=this._selectionModel.isSelected(e);this.canSelectNullableOptions||null!=e.value||this._multiple?(o!==e.selected&&(e.selected?this._selectionModel.select(e):this._selectionModel.deselect(e)),i&&this._keyManager.setActiveItem(e),this.multiple&&(this._sortValues(),i&&this.focus())):(e.deselect(),this._selectionModel.clear(),null!=this.value&&this._propagateChanges(e.value)),o!==this._selectionModel.isSelected(e)&&this._propagateChanges(),this.stateChanges.next()}_sortValues(){if(this.multiple){const e=this.options.toArray();this._selectionModel.sort((i,o)=>this.sortComparator?this.sortComparator(i,o,e):e.indexOf(i)-e.indexOf(o)),this.stateChanges.next()}}_propagateChanges(e){let i;i=this.multiple?this.selected.map(o=>o.value):this.selected?this.selected.value:e,this._value=i,this.valueChange.emit(i),this._onChange(i),this.selectionChange.emit(this._getChangeEvent(i)),this._changeDetectorRef.markForCheck()}_highlightCorrectOption(){if(this._keyManager)if(this.empty){let e=-1;for(let i=0;i0&&!!this._overlayDir}focus(e){this._elementRef.nativeElement.focus(e)}_getPanelAriaLabelledby(){if(this.ariaLabel)return null;const e=this._parentFormField?.getLabelId()||null;return this.ariaLabelledby?(e?e+" ":"")+this.ariaLabelledby:e}_getAriaActiveDescendant(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}_getTriggerAriaLabelledby(){if(this.ariaLabel)return null;let e=this._parentFormField?.getLabelId()||"";return this.ariaLabelledby&&(e+=" "+this.ariaLabelledby),e||(e=this._valueId),e}get describedByIds(){return this._elementRef.nativeElement.getAttribute("aria-describedby")?.split(" ")||[]}setDescribedByIds(e){const i=this._elementRef.nativeElement;e.length?i.setAttribute("aria-describedby",e.join(" ")):i.removeAttribute("aria-describedby")}onContainerClick(e){const i=vr(e);i&&("MAT-OPTION"===i.tagName||i.classList.contains("cdk-overlay-backdrop")||i.closest(".mat-mdc-select-panel"))||(this.focus(),this.open())}get shouldLabelFloat(){return this.panelOpen||!this.empty||this.focused&&!!this.placeholder}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-select"]],contentQueries:function(i,o,r){if(1&i&&ys(r,tV,5)(r,Qr,5)(r,QB,5),2&i){let s;he(s=fe())&&(o.customTrigger=s.first),he(s=fe())&&(o.options=s),he(s=fe())&&(o.optionGroups=s)}},viewQuery:function(i,o){if(1&i&&ot(Rme,5)(Fme,5)(e4,5),2&i){let r;he(r=fe())&&(o.trigger=r.first),he(r=fe())&&(o.panel=r.first),he(r=fe())&&(o._overlayDir=r.first)}},hostAttrs:["role","combobox","aria-haspopup","listbox",1,"mat-mdc-select"],hostVars:21,hostBindings:function(i,o){1&i&&F("keydown",function(s){return o._handleKeydown(s)})("focus",function(){return o._onFocus()})("blur",function(){return o._onBlur()}),2&i&&($e("id",o.id)("tabindex",o.disabled?-1:o.tabIndex)("aria-controls",o.panelOpen?o.id+"-panel":null)("aria-expanded",o.panelOpen)("aria-label",o.ariaLabel||null)("aria-required",o.required.toString())("aria-disabled",o.disabled.toString())("aria-invalid",o.errorState)("aria-activedescendant",o._getAriaActiveDescendant()),Ie("mat-mdc-select-disabled",o.disabled)("mat-mdc-select-invalid",o.errorState)("mat-mdc-select-required",o.required)("mat-mdc-select-empty",o.empty)("mat-mdc-select-multiple",o.multiple)("mat-select-open",o.panelOpen))},inputs:{userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],panelClass:"panelClass",disabled:[2,"disabled","disabled",De],disableRipple:[2,"disableRipple","disableRipple",De],tabIndex:[2,"tabIndex","tabIndex",e=>null==e?0:hr(e)],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",De],placeholder:"placeholder",required:[2,"required","required",De],multiple:[2,"multiple","multiple",De],disableOptionCentering:[2,"disableOptionCentering","disableOptionCentering",De],compareWith:"compareWith",value:"value",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],errorStateMatcher:"errorStateMatcher",typeaheadDebounceInterval:[2,"typeaheadDebounceInterval","typeaheadDebounceInterval",hr],sortComparator:"sortComparator",id:"id",panelWidth:"panelWidth",canSelectNullableOptions:[2,"canSelectNullableOptions","canSelectNullableOptions",De]},outputs:{openedChange:"openedChange",_openedStream:"opened",_closedStream:"closed",selectionChange:"selectionChange",valueChange:"valueChange"},exportAs:["matSelect"],features:[lt([{provide:hk,useExisting:t},{provide:ZB,useExisting:t}]),_i],ngContentSelectors:Lme,decls:11,vars:10,consts:[["fallbackOverlayOrigin","cdkOverlayOrigin","trigger",""],["panel",""],["cdk-overlay-origin","",1,"mat-mdc-select-trigger",3,"click"],[1,"mat-mdc-select-value"],[1,"mat-mdc-select-placeholder","mat-mdc-select-min-line"],[1,"mat-mdc-select-value-text"],[1,"mat-mdc-select-arrow-wrapper"],[1,"mat-mdc-select-arrow"],["viewBox","0 0 24 24","width","24px","height","24px","focusable","false","aria-hidden","true"],["d","M7 10l5 5 5-5z"],["cdk-connected-overlay","","cdkConnectedOverlayHasBackdrop","","cdkConnectedOverlayBackdropClass","cdk-overlay-transparent-backdrop",3,"detach","backdropClick","overlayKeydown","cdkConnectedOverlayDisableClose","cdkConnectedOverlayPanelClass","cdkConnectedOverlayScrollStrategy","cdkConnectedOverlayOrigin","cdkConnectedOverlayPositions","cdkConnectedOverlayWidth","cdkConnectedOverlayFlexibleDimensions","cdkConnectedOverlayUsePopover"],[1,"mat-mdc-select-min-line"],["role","listbox","tabindex","-1",1,"mat-mdc-select-panel","mdc-menu-surface","mdc-menu-surface--open",3,"keydown"]],template:function(i,o){if(1&i&&(yi(Nme),h(0,"div",2,0),F("click",function(){return o.open()}),h(3,"div",3),x(4,Bme,2,1,"span",4)(5,jme,3,1,"span",5),u(),h(6,"div",6)(7,"div",7),rl(),h(8,"svg",8),B(9,"path",9),u()()()(),it(10,Ume,3,16,"ng-template",10),F("detach",function(){return o.close()})("backdropClick",function(){return o.close()})("overlayKeydown",function(s){return o._handleOverlayKeydown(s)})),2&i){const r=Hn(1);d(3),$e("id",o._valueId),d(),S(o.empty?4:5),d(6),C("cdkConnectedOverlayDisableClose",!0)("cdkConnectedOverlayPanelClass",o._overlayPanelClass)("cdkConnectedOverlayScrollStrategy",o._scrollStrategy)("cdkConnectedOverlayOrigin",o._preferredOverlayOrigin||r)("cdkConnectedOverlayPositions",o._positions)("cdkConnectedOverlayWidth",o._overlayWidth)("cdkConnectedOverlayFlexibleDimensions",!0)("cdkConnectedOverlayUsePopover",o._popoverLocation)}},dependencies:[kb,e4],styles:['@keyframes _mat-select-enter{from{opacity:0;transform:scaleY(0.8)}to{opacity:1;transform:none}}@keyframes _mat-select-exit{from{opacity:1}to{opacity:0}}.mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-sys-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-sys-body-large-tracking))}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-disabled .mat-mdc-select-placeholder{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color, var(--mat-sys-error))}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-select-open .mat-mdc-select-arrow{transform:rotate(180deg)}.mat-form-field-animations-enabled .mat-mdc-select-arrow{transition:transform 80ms linear}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}@media(forced-colors: active){.mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .mat-mdc-select-arrow svg{fill:GrayText}}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:relative;background-color:var(--mat-select-panel-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-select-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}.mat-select-panel-animations-enabled{animation:_mat-select-enter 120ms cubic-bezier(0, 0, 0.2, 1)}.mat-select-panel-animations-enabled.mat-select-panel-exit{animation:_mat-select-exit 100ms linear}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field:not(.mat-form-field-animations-enabled) .mat-mdc-select-placeholder,._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform, translateY(-8px))}\n'],encapsulation:2,changeDetection:0})}return t})(),Gme=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-select-trigger"]],features:[lt([{provide:tV,useExisting:t}])]})}return t})(),qme=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[Zd,eV,ii,Rf,lv,eV]})}return t})();function Kme(t,n){if(1&t&&B(0,"input",6),2&t){const e=v().$implicit;C("formControlName",e.keyNameInFiltersObject)("maxlength",e.maxlength)}}function Yme(t,n){if(1&t&&(h(0,"div",10),B(1,"div",11),u()),2&t){const e=v().$implicit,i=v(2).$implicit;no("background-image: url('"+i.printableLabelGeneralSettings.defaultImage+"'); width: "+i.printableLabelGeneralSettings.imageWidth+"px; height: "+i.printableLabelGeneralSettings.imageHeight+"px;"),d(),no("background-image: url('"+e.image+"');")}}function Xme(t,n){if(1&t&&(h(0,"mat-option",8),x(1,Yme,2,4,"div",9),p(2),b(3,"translate"),u()),2&t){const e=n.$implicit,i=v(2).$implicit;C("value",e.value),d(),S(i.printableLabelGeneralSettings&&e.image?1:-1),d(),E(" ",y(3,3,e.label)," ")}}function Zme(t,n){if(1&t&&(h(0,"mat-select",7),ve(1,Xme,4,5,"mat-option",8,Fe),u()),2&t){const e=v().$implicit;C("formControlName",e.keyNameInFiltersObject),d(),ye(e.printableLabelsForValues)}}function Qme(t,n){if(1&t&&(h(0,"mat-form-field")(1,"div",4)(2,"label",5),p(3),b(4,"translate"),u(),x(5,Kme,1,2,"input",6),x(6,Zme,3,1,"mat-select",7),u()()),2&t){const e=n.$implicit,i=v();d(3),M(y(4,3,e.filterName)),d(2),S(e.type===i.filterFieldTypes.TextInput?5:-1),d(),S(e.type===i.filterFieldTypes.Select?6:-1)}}let Jme=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.data=e,this.dialogRef=i,this.formBuilder=o,this.filterFieldTypes=Sn}ngOnInit(){const e={};this.data.filterPropertiesList.forEach(i=>{e[i.keyNameInFiltersObject]=[this.data.currentFilters[i.keyNameInFiltersObject]]}),this.form=this.formBuilder.group(e)}apply(){const e={};this.data.filterPropertiesList.forEach(i=>{e[i.keyNameInFiltersObject]=this.form.get(i.keyNameInFiltersObject).value.trim()}),this.dialogRef.close(e)}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-filters-selection"]],standalone:!1,decls:9,vars:8,consts:[["button",""],[3,"headline","dialog"],[3,"formGroup"],["color","primary",1,"float-right",3,"action"],[1,"field-container"],["for","remoteKey",1,"field-label"],["matInput","",3,"formControlName","maxlength"],[3,"formControlName"],[3,"value"],[1,"image-container",3,"style"],[1,"image-container"],[1,"image"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2),ve(3,Qme,7,5,"mat-form-field",null,Fe),u(),h(5,"app-button",3,0),F("action",function(){return o.apply()}),p(7),b(8,"translate"),u()()),2&i&&(C("headline",y(1,4,"filters.filter-action"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(),ye(o.data.filterPropertiesList),d(4),E(" ",y(8,6,"common.ok")," "))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,In,Pa,Qr,ui,gn,xe],styles:[".image-container[_ngcontent-%COMP%]{display:inline-block;background-size:contain;margin-right:5px}.image-container[_ngcontent-%COMP%] .image[_ngcontent-%COMP%]{background-size:contain;width:100%;height:100%}"]})}}return t})();class _u{get currentFiltersTexts(){return this.currentFiltersTextsInternal}get currentUrlQueryParams(){return this.currentUrlQueryParamsInternal}get dataFiltered(){return this.dataUpdatedSubject.asObservable()}constructor(n,e,i,o,r){this.dialog=n,this.route=e,this.router=i,this.currentFiltersTextsInternal=[],this.dataUpdatedSubject=new me,this.filterPropertiesList=o,this.currentFilters={},this.filterPropertiesList.forEach(s=>{s.keyNameInFiltersObject=r+"_"+s.keyNameInElementsArray,this.currentFilters[s.keyNameInFiltersObject]=""}),this.navigationsSubscription=this.route.queryParamMap.subscribe(s=>{Object.keys(this.currentFilters).forEach(a=>{s.has(a)&&(this.currentFilters[a]=s.get(a))}),this.currentUrlQueryParamsInternal={},s.keys.forEach(a=>{this.currentUrlQueryParamsInternal[a]=s.get(a)}),this.filter()})}dispose(){this.dataUpdatedSubject.complete(),this.navigationsSubscription.unsubscribe()}setData(n){this.data=n,this.filter()}removeFilters(){const n=Rt.createConfirmationDialog(this.dialog,"filters.remove-confirmation");n.componentInstance.operationAccepted.subscribe(()=>{n.componentInstance.closeModal(),this.router.navigate([],{queryParams:{}})})}changeFilters(){Jme.openDialog(this.dialog,{filterPropertiesList:this.filterPropertiesList,currentFilters:this.currentFilters}).afterClosed().subscribe(e=>{e&&this.router.navigate([],{queryParams:e})})}filter(){if(this.data){let n,e=!1;Object.keys(this.currentFilters).forEach(i=>{this.currentFilters[i]&&(e=!0)}),e?(n=function vme(t,n,e){if(t){const i=[];return Object.keys(n).forEach(r=>{if(n[r])for(const s of e)if(s.keyNameInFiltersObject===r){i.push(s);break}}),t.filter(r=>{let s=!0;return i.forEach(a=>{const l=String(r[a.keyNameInElementsArray]).toLowerCase().includes(n[a.keyNameInFiltersObject].toLowerCase()),c=a.secondaryKeyNameInElementsArray&&String(r[a.secondaryKeyNameInElementsArray]).toLowerCase().includes(n[a.keyNameInFiltersObject].toLowerCase());!l&&!c&&(s=!1)}),s})}return null}(this.data,this.currentFilters,this.filterPropertiesList),this.updateCurrentFilters()):(n=this.data,this.updateCurrentFilters()),this.dataUpdatedSubject.next(n)}}updateCurrentFilters(){this.currentFiltersTextsInternal=function yme(t,n){const e=[];return n.forEach(i=>{if(t[i.keyNameInFiltersObject]){let o,r;i.printableLabelsForValues&&i.printableLabelsForValues.forEach(s=>{s.value===t[i.keyNameInFiltersObject]&&(r=s.label)}),r||(o=t[i.keyNameInFiltersObject]),e.push({filterName:i.filterName,translatableValue:r,value:o})}}),e}(this.currentFilters,this.filterPropertiesList)}}function ege(t,n){if(1&t){const e=oe();h(0,"div",3)(1,"div",4)(2,"div",5),p(3),u(),h(4,"div",6),p(5),u()(),h(6,"div",7)(7,"app-button",8),F("click",function(){const o=j(e).$implicit;return U(v(2).openTerminal(o.key))}),p(8),b(9,"translate"),u()()()}if(2&t){const e=n.$implicit;d(3),M(e.label),d(2),M(e.version),d(3),E(" ",y(9,3,"update-all.update-button")," ")}}function tge(t,n){if(1&t&&(h(0,"div",1),p(1),b(2,"translate"),u(),h(3,"div",2),ve(4,ege,10,5,"div",3,Fe),u()),2&t){const e=v();d(),E(" ",y(2,1,"update-all.updatable-list-text")," "),d(3),ye(e.updatableNodes)}}function nge(t,n){if(1&t&&(h(0,"div",6),p(1),u()),2&t){const e=v().$implicit;d(),M(e.tag)}}function ige(t,n){if(1&t&&(h(0,"div",3)(1,"div",4)(2,"div",5),p(3),u(),h(4,"div",6),p(5),u(),x(6,nge,2,1,"div",6),u()()),2&t){const e=n.$implicit;d(3),M(e.label),d(2),M(e.version),d(),S(e.tag?6:-1)}}function oge(t,n){if(1&t&&(h(0,"div",1),p(1),b(2,"translate"),u(),h(3,"div",2),ve(4,ige,7,3,"div",3,Fe),u()),2&t){const e=v();d(),E(" ",y(2,1,"update-all.non-updatable-list-text")," "),d(3),ye(e.nonUpdatableNodes)}}let rge=(()=>{class t{static openDialog(e,i,o){const r=new nn;return r.data=[i,o],r.autoFocus=!1,r.width=rt.smallModalWidth,e.open(t,r)}constructor(e,i){this.dialogRef=e,this.updatableNodes=i[0],this.nonUpdatableNodes=i[1]}openTerminal(e){const i=window.location.protocol,o=window.location.host.replace("localhost:4200","127.0.0.1:8000");window.open(i+"//"+o+"/pty/"+e+"?commands=update","_blank","noopener noreferrer")}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En))}}static{this.\u0275cmp=re({type:t,selectors:[["app-update-all"]],standalone:!1,decls:4,vars:6,consts:[[3,"headline","dialog"],[1,"text-container"],[1,"list-container"],[1,"list-element"],[1,"left-part"],[1,"name"],[1,"version"],[1,"right-part"],["color","primary",3,"click"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),b(1,"translate"),x(2,tge,6,3),x(3,oge,6,3),u()),2&i&&(C("headline",y(1,4,"update-all.title"))("dialog",o.dialogRef),d(2),S(o.updatableNodes&&o.updatableNodes.length>0?2:-1),d(),S(o.nonUpdatableNodes&&o.nonUpdatableNodes.length>0?3:-1))},dependencies:[ui,gn,xe],styles:[".text-container[_ngcontent-%COMP%]{word-break:break-word}.list-container[_ngcontent-%COMP%]{font-size:14px;margin:10px;color:#215f9e;word-break:break-word;line-height:1.2}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%]{display:flex;margin-bottom:10px}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%]{flex-grow:1;flex-shrink:1;align-self:center;margin-right:10px;min-width:0}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:575px){.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-size:.7rem}}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%] .version[_ngcontent-%COMP%]{font-size:.7rem;color:#777;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .right-part[_ngcontent-%COMP%]{flex-basis:0;flex-shrink:0}.list-container[_ngcontent-%COMP%] .details[_ngcontent-%COMP%]{color:#777}"]})}}return t})();const sge=["mat-internal-form-field",""],age=["*"];let nV=(()=>{class t{labelPosition="after";static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["div","mat-internal-form-field",""]],hostAttrs:[1,"mdc-form-field","mat-internal-form-field"],hostVars:2,hostBindings:function(i,o){2&i&&Ie("mdc-form-field--align-end","before"===o.labelPosition)},inputs:{labelPosition:"labelPosition"},attrs:sge,ngContentSelectors:age,decls:1,vars:0,template:function(i,o){1&i&&(yi(),Pt(0))},styles:[".mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-flex;align-items:center;vertical-align:middle}.mat-internal-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mat-internal-form-field>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end .mdc-form-field--align-end label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0}\n"],encapsulation:2,changeDetection:0})}return t})();const lge=["input"],cge=["label"],dge=["*"],xk={color:"accent",clickAction:"check-indeterminate",disabledInteractive:!1},uge=new Z("mat-checkbox-default-options",{providedIn:"root",factory:()=>xk});var Wi=function(t){return t[t.Init=0]="Init",t[t.Checked=1]="Checked",t[t.Unchecked=2]="Unchecked",t[t.Indeterminate=3]="Indeterminate",t}(Wi||{});class hge{source;checked}let kr=(()=>{class t{_elementRef=D(Re);_changeDetectorRef=D(Jt);_ngZone=D(_e);_animationsDisabled=ci();_options=D(uge,{optional:!0});focus(){this._inputElement.nativeElement.focus()}_createChangeEvent(e){const i=new hge;return i.source=this,i.checked=e,i}_getAnimationTargetElement(){return this._inputElement?.nativeElement}_animationClasses={uncheckedToChecked:"mdc-checkbox--anim-unchecked-checked",uncheckedToIndeterminate:"mdc-checkbox--anim-unchecked-indeterminate",checkedToUnchecked:"mdc-checkbox--anim-checked-unchecked",checkedToIndeterminate:"mdc-checkbox--anim-checked-indeterminate",indeterminateToChecked:"mdc-checkbox--anim-indeterminate-checked",indeterminateToUnchecked:"mdc-checkbox--anim-indeterminate-unchecked"};ariaLabel="";ariaLabelledby=null;ariaDescribedby;ariaExpanded;ariaControls;ariaOwns;_uniqueId;id;get inputId(){return`${this.id||this._uniqueId}-input`}required=!1;labelPosition="after";name=null;change=new we;indeterminateChange=new we;value;disableRipple=!1;_inputElement;_labelElement;tabIndex;color;disabledInteractive;_onTouched=()=>{};_currentAnimationClass="";_currentCheckState=Wi.Init;_controlValueAccessorChangeFn=()=>{};_validatorChangeFn=()=>{};constructor(){D(zo).load(tu);const e=D(new Yh("tabindex"),{optional:!0});this._options=this._options||xk,this.color=this._options.color||xk.color,this.tabIndex=null==e?0:parseInt(e)||0,this.id=this._uniqueId=D(ni).getId("mat-mdc-checkbox-"),this.disabledInteractive=this._options?.disabledInteractive??!1}ngOnChanges(e){e.required&&this._validatorChangeFn()}ngAfterViewInit(){this._syncIndeterminate(this.indeterminate)}get checked(){return this._checked}set checked(e){e!=this.checked&&(this._checked=e,this._changeDetectorRef.markForCheck())}_checked=!1;get disabled(){return this._disabled}set disabled(e){e!==this.disabled&&(this._disabled=e,this._changeDetectorRef.markForCheck())}_disabled=!1;get indeterminate(){return this._indeterminate()}set indeterminate(e){const i=e!=this._indeterminate();this._indeterminate.set(e),i&&(this._transitionCheckState(e?Wi.Indeterminate:this.checked?Wi.Checked:Wi.Unchecked),this.indeterminateChange.emit(e)),this._syncIndeterminate(e)}_indeterminate=yt(!1);_isRippleDisabled(){return this.disableRipple||this.disabled}_onLabelTextChange(){this._changeDetectorRef.detectChanges()}writeValue(e){this.checked=!!e}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}validate(e){return this.required&&!0!==e.value?{required:!0}:null}registerOnValidatorChange(e){this._validatorChangeFn=e}_transitionCheckState(e){let i=this._currentCheckState,o=this._getAnimationTargetElement();if(i!==e&&o&&(this._currentAnimationClass&&o.classList.remove(this._currentAnimationClass),this._currentAnimationClass=this._getAnimationClassForCheckStateTransition(i,e),this._currentCheckState=e,this._currentAnimationClass.length>0)){o.classList.add(this._currentAnimationClass);const r=this._currentAnimationClass;this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{o.classList.remove(r)},1e3)})}}_emitChangeEvent(){this._controlValueAccessorChangeFn(this.checked),this.change.emit(this._createChangeEvent(this.checked)),this._inputElement&&(this._inputElement.nativeElement.checked=this.checked)}toggle(){this.checked=!this.checked,this._controlValueAccessorChangeFn(this.checked)}_handleInputClick(){const e=this._options?.clickAction;this.disabled||"noop"===e?(this.disabled&&this.disabledInteractive||!this.disabled&&"noop"===e)&&(this._inputElement.nativeElement.checked=this.checked,this._inputElement.nativeElement.indeterminate=this.indeterminate):(this.indeterminate&&"check"!==e&&Promise.resolve().then(()=>{this._indeterminate.set(!1),this.indeterminateChange.emit(!1)}),this._checked=!this._checked,this._transitionCheckState(this._checked?Wi.Checked:Wi.Unchecked),this._emitChangeEvent())}_onInteractionEvent(e){e.stopPropagation()}_onBlur(){Promise.resolve().then(()=>{this._onTouched(),this._changeDetectorRef.markForCheck()})}_getAnimationClassForCheckStateTransition(e,i){if(this._animationsDisabled)return"";switch(e){case Wi.Init:if(i===Wi.Checked)return this._animationClasses.uncheckedToChecked;if(i==Wi.Indeterminate)return this._checked?this._animationClasses.checkedToIndeterminate:this._animationClasses.uncheckedToIndeterminate;break;case Wi.Unchecked:return i===Wi.Checked?this._animationClasses.uncheckedToChecked:this._animationClasses.uncheckedToIndeterminate;case Wi.Checked:return i===Wi.Unchecked?this._animationClasses.checkedToUnchecked:this._animationClasses.checkedToIndeterminate;case Wi.Indeterminate:return i===Wi.Checked?this._animationClasses.indeterminateToChecked:this._animationClasses.indeterminateToUnchecked}return""}_syncIndeterminate(e){const i=this._inputElement;i&&(i.nativeElement.indeterminate=e)}_onInputClick(){this._handleInputClick()}_onTouchTargetClick(){this._handleInputClick(),this.disabled||this._inputElement.nativeElement.focus()}_preventBubblingFromLabel(e){e.target&&this._labelElement.nativeElement.contains(e.target)&&e.stopPropagation()}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-checkbox"]],viewQuery:function(i,o){if(1&i&&ot(lge,5)(cge,5),2&i){let r;he(r=fe())&&(o._inputElement=r.first),he(r=fe())&&(o._labelElement=r.first)}},hostAttrs:[1,"mat-mdc-checkbox"],hostVars:16,hostBindings:function(i,o){2&i&&(ur("id",o.id),$e("tabindex",null)("aria-label",null)("aria-labelledby",null),Ze(o.color?"mat-"+o.color:"mat-accent"),Ie("_mat-animation-noopable",o._animationsDisabled)("mdc-checkbox--disabled",o.disabled)("mat-mdc-checkbox-disabled",o.disabled)("mat-mdc-checkbox-checked",o.checked)("mat-mdc-checkbox-disabled-interactive",o.disabledInteractive))},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],ariaExpanded:[2,"aria-expanded","ariaExpanded",De],ariaControls:[0,"aria-controls","ariaControls"],ariaOwns:[0,"aria-owns","ariaOwns"],id:"id",required:[2,"required","required",De],labelPosition:"labelPosition",name:"name",value:"value",disableRipple:[2,"disableRipple","disableRipple",De],tabIndex:[2,"tabIndex","tabIndex",e=>null==e?void 0:hr(e)],color:"color",disabledInteractive:[2,"disabledInteractive","disabledInteractive",De],checked:[2,"checked","checked",De],disabled:[2,"disabled","disabled",De],indeterminate:[2,"indeterminate","indeterminate",De]},outputs:{change:"change",indeterminateChange:"indeterminateChange"},exportAs:["matCheckbox"],features:[lt([{provide:Yo,useExisting:Nt(()=>t),multi:!0},{provide:Ci,useExisting:t,multi:!0}]),_i],ngContentSelectors:dge,decls:15,vars:23,consts:[["checkbox",""],["input",""],["label",""],["mat-internal-form-field","",3,"click","labelPosition"],[1,"mdc-checkbox"],["aria-hidden","true",1,"mat-mdc-checkbox-touch-target",3,"click"],["type","checkbox",1,"mdc-checkbox__native-control",3,"blur","click","change","checked","indeterminate","disabled","id","required","tabIndex"],["aria-hidden","true",1,"mdc-checkbox__ripple"],["aria-hidden","true",1,"mdc-checkbox__background"],["focusable","false","viewBox","0 0 24 24",1,"mdc-checkbox__checkmark"],["fill","none","d","M1.73,12.91 8.1,19.28 22.79,4.59",1,"mdc-checkbox__checkmark-path"],[1,"mdc-checkbox__mixedmark"],["mat-ripple","","aria-hidden","true",1,"mat-mdc-checkbox-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-label",3,"for"]],template:function(i,o){if(1&i&&(yi(),h(0,"div",3),F("click",function(s){return o._preventBubblingFromLabel(s)}),h(1,"div",4,0)(3,"div",5),F("click",function(){return o._onTouchTargetClick()}),u(),h(4,"input",6,1),F("blur",function(){return o._onBlur()})("click",function(){return o._onInputClick()})("change",function(s){return o._onInteractionEvent(s)}),u(),B(6,"div",7),h(7,"div",8),rl(),h(8,"svg",9),B(9,"path",10),u(),Gy(),B(10,"div",11),u(),B(11,"div",12),u(),h(12,"label",13,2),Pt(14),u()()),2&i){const r=Hn(2);C("labelPosition",o.labelPosition),d(4),Ie("mdc-checkbox--selected",o.checked),C("checked",o.checked)("indeterminate",o.indeterminate)("disabled",o.disabled&&!o.disabledInteractive)("id",o.inputId)("required",o.required)("tabIndex",o.disabled&&!o.disabledInteractive?-1:o.tabIndex),$e("aria-label",o.ariaLabel||null)("aria-labelledby",o.ariaLabelledby)("aria-describedby",o.ariaDescribedby)("aria-checked",o.indeterminate?"mixed":null)("aria-controls",o.ariaControls)("aria-disabled",!(!o.disabled||!o.disabledInteractive)||null)("aria-expanded",o.ariaExpanded)("aria-owns",o.ariaOwns)("name",o.name)("value",o.value),d(7),C("matRippleTrigger",r)("matRippleDisabled",o.disableRipple||o.disabled)("matRippleCentered",!0),d(),C("for",o.inputId)}},dependencies:[eu,nV],styles:['.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom;padding:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2);margin:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox:hover>.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity));background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:hover>.mat-mdc-checkbox-ripple>.mat-ripple-element{background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity));background-color:var(--mat-checkbox-unselected-focus-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-unselected-focus-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:active>.mdc-checkbox__native-control+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));background-color:var(--mat-checkbox-unselected-pressed-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:active>.mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-unselected-pressed-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity));background-color:var(--mat-checkbox-selected-hover-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-hover-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity));background-color:var(--mat-checkbox-selected-focus-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-focus-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:active>.mdc-checkbox__native-control:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));background-color:var(--mat-checkbox-selected-pressed-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:active>.mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-pressed-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control+.mdc-checkbox__ripple{background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1;width:var(--mat-checkbox-state-layer-size, 40px);height:var(--mat-checkbox-state-layer-size, 40px);top:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2);right:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2);left:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms cubic-bezier(0.4, 0, 0.6, 1);-webkit-print-color-adjust:exact;color-adjust:exact;border-color:var(--mat-checkbox-unselected-icon-color, var(--mat-sys-on-surface-variant));top:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2);left:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2)}.mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-icon-color, var(--mat-sys-primary))}.mdc-checkbox--disabled .mdc-checkbox__background{border-color:var(--mat-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox__native-control:disabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:disabled:indeterminate~.mdc-checkbox__background{background-color:var(--mat-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:rgba(0,0,0,0)}@media(forced-colors: active){.mdc-checkbox__native-control:disabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:disabled:indeterminate~.mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox:hover>.mdc-checkbox__native-control:not(:checked)~.mdc-checkbox__background,.mdc-checkbox:hover>.mdc-checkbox__native-control:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mat-checkbox-unselected-hover-icon-color, var(--mat-sys-on-surface));background-color:rgba(0,0,0,0)}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox:hover>.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-hover-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-hover-icon-color, var(--mat-sys-primary))}.mdc-checkbox__native-control:focus:focus:not(:checked)~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mat-checkbox-unselected-focus-icon-color, var(--mat-sys-on-surface))}.mdc-checkbox__native-control:focus:focus:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-focus-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-focus-icon-color, var(--mat-sys-primary))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox:hover>.mdc-checkbox__native-control~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__background{border-color:var(--mat-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox:hover>.mdc-checkbox__native-control~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{background-color:var(--mat-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:rgba(0,0,0,0)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms cubic-bezier(0.4, 0, 0.6, 1);color:var(--mat-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}@media(forced-colors: active){.mdc-checkbox__checkmark{color:CanvasText}}.mdc-checkbox--disabled .mdc-checkbox__checkmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:var(--mat-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__checkmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:GrayText}}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);border-color:var(--mat-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}@media(forced-colors: active){.mdc-checkbox__mixedmark{margin:0 1px}}.mdc-checkbox--disabled .mdc-checkbox__mixedmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__mixedmark{border-color:var(--mat-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__mixedmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__mixedmark{border-color:GrayText}}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__checkmark{transition:opacity 180ms cubic-bezier(0, 0, 0.2, 1),transform 180ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mat-mdc-checkbox{display:inline-block;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mat-mdc-checkbox-touch-target,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__native-control,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__ripple,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mat-mdc-checkbox-ripple::before,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__mixedmark{transition:none !important;animation:none !important}.mat-mdc-checkbox label{cursor:pointer}.mat-mdc-checkbox .mat-internal-form-field{color:var(--mat-checkbox-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-checkbox-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-checkbox-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-checkbox-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-checkbox-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-checkbox-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive{pointer-events:auto}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive input{cursor:default}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{cursor:default;color:var(--mat-checkbox-disabled-label-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:GrayText}}.mat-mdc-checkbox label:empty{display:none}.mat-mdc-checkbox .mdc-checkbox__ripple{opacity:0}.mat-mdc-checkbox .mat-mdc-checkbox-ripple,.mdc-checkbox__ripple{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-checkbox .mat-mdc-checkbox-ripple:not(:empty),.mdc-checkbox__ripple:not(:empty){transform:translateZ(0)}.mat-mdc-checkbox-ripple .mat-ripple-element{opacity:.1}.mat-mdc-checkbox-touch-target{position:absolute;top:50%;left:50%;height:var(--mat-checkbox-touch-target-size, 48px);width:var(--mat-checkbox-touch-target-size, 48px);transform:translate(-50%, -50%);display:var(--mat-checkbox-touch-target-display, block)}.mat-mdc-checkbox .mat-mdc-checkbox-ripple::before{border-radius:50%}.mdc-checkbox__native-control:focus-visible~.mat-focus-indicator::before{content:""}\n'],encapsulation:2,changeDetection:0})}return t})(),fge=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[kr,ii]})}return t})();const pge=["button"],mge=t=>({"element-disabled":t}),gge=t=>({"element-margin":t});function _ge(t,n){1&t&&(h(0,"span",17),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"bulk-rewards.checking")))}function bge(t,n){if(1&t&&(h(0,"span",18)(1,"span"),p(2),b(3,"translate"),u(),h(4,"span"),p(5),b(6,"translate"),u()()),2&t){const e=v(2).$implicit;d(2),E(" ",y(3,2,"bulk-rewards.error-checking")),d(3),E(" ",y(6,4,e.operationError))}}function vge(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v(2).$implicit;d(),E(" ",e.currentAddress)}}function yge(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"bulk-rewards.not-registered")))}function Cge(t,n){if(1&t&&(Vr(0,12),h(1,"mat-checkbox",13)(2,"div")(3,"div",14),p(4),u(),h(5,"div",15)(6,"span",16),p(7),b(8,"translate"),u(),x(9,_ge,3,3,"span",17),x(10,bge,7,6,"span",18),x(11,vge,2,1,"span"),x(12,yge,3,3,"span"),u()()(),cr()),2&t){const e=v(),i=e.$implicit;C("formGroupName",e.$index),d(4),E(" ",i.label," "),d(3),M(y(8,7,"bulk-rewards.current-address")),d(2),S(null!==i.currentAddress||i.operationError?-1:9),d(),S(i.operationError?10:-1),d(),S(i.currentAddress&&!i.operationError?11:-1),d(),S(""!==i.currentAddress||i.operationError?-1:12)}}function wge(t,n){1&t&&(h(0,"span",17),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"bulk-rewards.processing")))}function xge(t,n){if(1&t&&(h(0,"span",18)(1,"span"),p(2),b(3,"translate"),u(),h(4,"span"),p(5),b(6,"translate"),u()()),2&t){const e=v(2).$implicit;d(2),E(" ",y(3,2,"bulk-rewards.error-processing")),d(3),E(" ",y(6,4,e.operationError))}}function Sge(t,n){1&t&&(h(0,"span",22),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"bulk-rewards.done")))}function kge(t,n){if(1&t&&(h(0,"div",19),p(1,"-"),u(),h(2,"div",20),p(3),h(4,"div",21),x(5,wge,3,3,"span",17),x(6,xge,7,6,"span",18),x(7,Sge,3,3,"span",22),u()()),2&t){const e=v().$implicit;d(3),E(" ",e.label," "),d(2),S(e.processing&&!e.operationError?5:-1),d(),S(e.operationError?6:-1),d(),S(e.processing||e.operationError?-1:7)}}function Dge(t,n){if(1&t&&(h(0,"div",9),x(1,Cge,13,9,"ng-container",12),x(2,kge,8,4),u()),2&t){const e=v();C("ngClass",se(3,gge,e.processingStarted)),d(),S(e.processingStarted?-1:1),d(),S(e.processingStarted?2:-1)}}function Mge(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"bulk-rewards.perform-changes")," ")}function Tge(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"common.close")," ")}let Ege=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.nodeService=o,this.formBuilder=r,this.dialog=s,this.processingStarted=!1,this.processingFinished=!1,this.currentlyProcessed=0,this.form=r.group({address:["",Ne.compose([Ne.minLength(20),Ne.maxLength(112)])],nodes:r.array([])}),i.nodes.forEach(a=>{const l=this.formBuilder.group({selected:[!0]});this.form.get("nodes").push(l)}),this.startChecking()}formValid(){if(!this.processingStarted){if(!this.form.valid)return!1;let e=0;return this.form.get("nodes").controls.forEach((i,o)=>{i.get("selected")?.value&&(e+=1)}),e>0}return!0}get disableDismiss(){return this.processingStarted&&!this.processingFinished}startChecking(){this.nodesToEdit=[],this.data.nodes.forEach(e=>{this.nodesToEdit.push({key:e.key,label:e.label,currentAddress:null,operationError:"",processing:!1})}),this.operationSubscriptions=[],this.nodesToEdit.forEach((e,i)=>{this.operationSubscriptions.push(this.nodeService.getRewardsAddress(e.key).subscribe(o=>{this.nodesToEdit[i].currentAddress=o},o=>{this.nodesToEdit[i].operationError=o.translatableErrorMsg?o.translatableErrorMsg:o.originalServerErrorMsg}))})}checkBeforeProcessing(){if(this.form.valid)if(this.form.get("address").value)this.startProcessing();else{const i=Rt.createConfirmationDialog(this.dialog,"bulk-rewards.empty-warning");i.componentInstance.operationAccepted.subscribe(()=>{i.componentInstance.closeModal(),this.startProcessing()})}}startProcessing(){this.processingStarted=!0,this.button.showLoading(),this.closeoperationSubscriptions();const e=[];this.form.get("nodes").controls.forEach((o,r)=>{o.get("selected")?.value&&(this.nodesToEdit[r].operationError="",this.nodesToEdit[r].processing=!0,e.push(this.nodesToEdit[r]))}),this.nodesToEdit=e;const i=this.form.get("address").value;this.form.get("address").disable(),this.currentlyProcessed=0,this.operationSubscriptions=[],this.nodesToEdit.forEach((o,r)=>{let s=this.nodeService.setRewardsAddress(o.key,i);i||(s=this.nodeService.deleteRewardsAddress(o.key)),this.operationSubscriptions.push(ae(0).pipe(li(100),It(()=>s)).subscribe(a=>{this.nodesToEdit[r].processing=!1,this.currentlyProcessed+=1,this.currentlyProcessed===this.nodesToEdit.length&&(this.processingFinished=!0,this.button.reset())},a=>{this.nodesToEdit[r].processing=!1,this.nodesToEdit[r].operationError=a.translatableErrorMsg?a.translatableErrorMsg:a.originalServerErrorMsg,this.currentlyProcessed+=1,this.currentlyProcessed===this.nodesToEdit.length&&(this.processingFinished=!0,this.button.reset())}))})}ngOnDestroy(){this.closeoperationSubscriptions()}closeoperationSubscriptions(){this.operationSubscriptions&&this.operationSubscriptions.forEach(e=>e.unsubscribe())}closeModal(){this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(Io),O(di),O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-bulk-reward-address-changer"]],viewQuery:function(i,o){if(1&i&&ot(pge,5),2&i){let r;he(r=fe())&&(o.button=r.first)}},standalone:!1,decls:31,vars:27,consts:[["button",""],[3,"headline","dialog","disableDismiss"],[3,"formGroup"],[1,"text-container"],["href","https://github.com/skycoin/skywire/blob/develop/rewards/mainnet_rules.md","target","_blank","rel","noreferrer nofollow noopener"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","address","maxlength","112","matInput","",3,"ngClass"],["formArrayName","nodes",1,"list-container"],[1,"list-element",3,"ngClass"],[1,"buttons"],["type","mat-raised-button","color","primary",3,"action","disabled"],[3,"formGroupName"],["color","primary","formControlName","selected"],[1,"contents"],[1,"address","contents"],[1,"address-label"],[1,"blinking"],[1,"red-text"],[1,"left-area"],[1,"right-area","contents"],[1,"address"],[1,"green-text"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2)(3,"div",3)(4,"span"),p(5),b(6,"translate"),u(),h(7,"a",4),p(8),b(9,"translate"),u()(),h(10,"mat-form-field")(11,"div",5)(12,"label",6),p(13),b(14,"translate"),u(),B(15,"input",7),u(),h(16,"mat-error")(17,"span"),p(18),b(19,"translate"),u()()(),h(20,"div",3),p(21),b(22,"translate"),u(),h(23,"div",8),ve(24,Dge,3,5,"div",9,Fe),u()(),h(26,"div",10)(27,"app-button",11,0),F("action",function(){return o.processingStarted?o.closeModal():o.checkBeforeProcessing()}),x(29,Mge,2,3),x(30,Tge,2,3),u()()()),2&i&&(C("headline",y(1,13,"bulk-rewards.title"))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),d(2),C("formGroup",o.form),d(3),E("",y(6,15,"bulk-rewards.info")," "),d(3),E(" ",y(9,17,"bulk-rewards.more-info-link")," "),d(5),M(y(14,19,"rewards-address-config.address")),d(2),C("ngClass",se(25,mge,o.processingStarted)),d(3),M(y(19,21,"rewards-address-config.address-error")),d(3),E(" ",y(22,23,"bulk-rewards.select-visors")," "),d(3),ye(o.nodesToEdit),d(3),C("disabled",!o.formValid()),d(2),S(o.processingStarted?-1:29),d(),S(o.processingStarted?30:-1))},dependencies:[$t,xn,Gt,qt,wn,wi,on,mn,sc,du,sn,Ma,In,kr,ui,gn,xe],styles:[".text-container[_ngcontent-%COMP%]{word-break:break-word}mat-form-field[_ngcontent-%COMP%]{margin-top:10px}.list-container[_ngcontent-%COMP%]{font-size:14px;margin:10px;color:#215f9e;word-break:break-word}.list-container[_ngcontent-%COMP%] .element-margin[_ngcontent-%COMP%]{margin:15px 0}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%]{display:flex}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-area[_ngcontent-%COMP%]{width:12px;flex-grow:0;flex-shrink:0}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .right-area[_ngcontent-%COMP%]{flex-grow:1}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .contents[_ngcontent-%COMP%]{white-space:normal;line-height:1.2}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .address[_ngcontent-%COMP%]{font-size:.7rem;color:#777}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .address[_ngcontent-%COMP%] .address-label[_ngcontent-%COMP%]{opacity:.7}.buttons[_ngcontent-%COMP%]{margin-top:15px;text-align:right}.buttons[_ngcontent-%COMP%] app-button[_ngcontent-%COMP%]{margin-left:5px}"]})}}return t})(),np=(()=>{class t{constructor(e){this.dom=e}copy(e){let i=null;try{return i=this.dom.createElement("textarea"),i.style.height="0px",i.style.left="-100px",i.style.opacity="0",i.style.position="fixed",i.style.top="-100px",i.style.width="0px",this.dom.body.appendChild(i),i.value=e,i.select(),this.dom.execCommand("copy"),!0}catch{return!1}finally{i&&i.parentNode&&i.parentNode.removeChild(i)}}static{this.\u0275fac=function(i){return new(i||t)(ce(et))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac})}}return t})(),Pge=(()=>{class t{constructor(e){this.http=e,this.rewardSystemUrl="/api/rewards",this.rewardDataCache=new Map,this.cachedDates=[],this.fetching=!1}getLastNDays(e){const i=[];for(let o=0;o0}fetchRewardData(e){return this.hasCache()?ae(this.rewardDataCache):(this.fetching=!0,zf(e.map(o=>this.http.get(`${this.rewardSystemUrl}/skycoin-rewards/visor/${o}?days=7`).pipe(Se(r=>({pk:o,history:r&&r.history?r.history:[]})),Ui(()=>ae({pk:o,history:[]}))))).pipe(Se(o=>{const r=new Map;for(const{pk:s,history:a}of o){const l={pk:s,rewardAddress:"",dailyAmounts:{},dailySent:{},weekTotal:0};for(const c of a)c.date&&(l.dailyAmounts[c.date]=c.amount||0,l.dailySent[c.date]=c.sent||!1,l.weekTotal+=c.amount||0);r.set(s,l)}return this.rewardDataCache=r,this.cachedDates=this.getLastNDays(7),this.fetching=!1,r}),Ui(o=>(this.fetching=!1,ae(new Map)))))}clearCache(){this.rewardDataCache=new Map,this.cachedDates=[]}static{this.\u0275fac=function(i){return new(i||t)(ce(ba))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();class iV extends JB{_origin="program";setFocusOrigin(n){return this._origin=n,this}setActiveItem(n){super.setActiveItem(n),this.activeItem&&this.activeItem.focus(this._origin)}}const Ige=["mat-menu-item",""],Oge=[[["mat-icon"],["","matMenuItemIcon",""]],"*"],Age=["mat-icon, [matMenuItemIcon]","*"];function Rge(t,n){1&t&&(rl(),h(0,"svg",2),B(1,"polygon",3),u())}const Fge=["*"];function Nge(t,n){if(1&t){const e=oe();vs(0,"div",0),qg("click",function(){return j(e),U(v().closed.emit("click"))})("animationstart",function(o){return j(e),U(v()._onAnimationStart(o.animationName))})("animationend",function(o){return j(e),U(v()._onAnimationDone(o.animationName))})("animationcancel",function(o){return j(e),U(v()._onAnimationDone(o.animationName))}),vs(1,"div",1),Pt(2),Ol()()}if(2&t){const e=v();Ze(e._classList),Ie("mat-menu-panel-animations-disabled",e._animationsDisabled)("mat-menu-panel-exit-animation","void"===e._panelAnimationState)("mat-menu-panel-animating",e._isAnimating()),ur("id",e.panelId),$e("aria-label",e.ariaLabel||null)("aria-labelledby",e.ariaLabelledby||null)("aria-describedby",e.ariaDescribedby||null)}}const Sk=new Z("MAT_MENU_PANEL");let As=(()=>{class t{_elementRef=D(Re);_document=D(et);_focusMonitor=D(ec);_parentMenu=D(Sk,{optional:!0});_changeDetectorRef=D(Jt);role="menuitem";disabled=!1;disableRipple=!1;_hovered=new me;_focused=new me;_highlighted=!1;_triggersSubmenu=!1;constructor(){D(zo).load(tu),this._parentMenu?.addItem?.(this)}focus(e,i){this._focusMonitor&&e?this._focusMonitor.focusVia(this._getHostElement(),e,i):this._getHostElement().focus(i),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(e){this.disabled&&(e.preventDefault(),e.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){const e=this._elementRef.nativeElement.cloneNode(!0),i=e.querySelectorAll("mat-icon, .material-icons");for(let o=0;o({overlapTrigger:!1,xPosition:"after",yPosition:"below",backdropClass:"cdk-overlay-transparent-backdrop"})}),kk="_mat-menu-enter",pv="_mat-menu-exit";let Jr=(()=>{class t{_elementRef=D(Re);_changeDetectorRef=D(Jt);_injector=D(He);_keyManager;_xPosition;_yPosition;_firstItemFocusRef;_exitFallbackTimeout;_animationsDisabled=ci();_allItems;_directDescendantItems=new id;_classList={};_panelAnimationState="void";_animationDone=new me;_isAnimating=yt(!1);parentMenu;direction;overlayPanelClass;backdropClass;ariaLabel;ariaLabelledby;ariaDescribedby;get xPosition(){return this._xPosition}set xPosition(e){this._xPosition=e,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(e){this._yPosition=e,this.setPositionClasses()}templateRef;items;lazyContent;overlapTrigger=!1;hasBackdrop;set panelClass(e){const i=this._previousPanelClass,o={...this._classList};i&&i.length&&i.split(" ").forEach(r=>{o[r]=!1}),this._previousPanelClass=e,e&&e.length&&(e.split(" ").forEach(r=>{o[r]=!0}),this._elementRef.nativeElement.className=""),this._classList=o}_previousPanelClass;get classList(){return this.panelClass}set classList(e){this.panelClass=e}closed=new we;close=this.closed;panelId=D(ni).getId("mat-menu-panel-");constructor(){const e=D(Bge);this.overlayPanelClass=e.overlayPanelClass||"",this._xPosition=e.xPosition,this._yPosition=e.yPosition,this.backdropClass=e.backdropClass,this.overlapTrigger=e.overlapTrigger,this.hasBackdrop=e.hasBackdrop}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new iV(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit("tab")),this._directDescendantItems.changes.pipe(si(this._directDescendantItems),tn(e=>Cr(...e.map(i=>i._focused)))).subscribe(e=>this._keyManager.updateActiveItem(e)),this._directDescendantItems.changes.subscribe(e=>{const i=this._keyManager;if("enter"===this._panelAnimationState&&i.activeItem?._hasFocus()){const o=e.toArray(),r=Math.max(0,Math.min(o.length-1,i.activeItemIndex||0));o[r]&&!o[r].disabled?i.setActiveItem(r):i.setNextItemActive()}})}ngOnDestroy(){this._keyManager?.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),this._firstItemFocusRef?.destroy(),clearTimeout(this._exitFallbackTimeout)}_hovered(){return this._directDescendantItems.changes.pipe(si(this._directDescendantItems),tn(i=>Cr(...i.map(o=>o._hovered))))}addItem(e){}removeItem(e){}_handleKeydown(e){const i=e.keyCode,o=this._keyManager;switch(i){case 27:yr(e)||(e.preventDefault(),this.closed.emit("keydown"));break;case 37:this.parentMenu&&"ltr"===this.direction&&this.closed.emit("keydown");break;case 39:this.parentMenu&&"rtl"===this.direction&&this.closed.emit("keydown");break;default:return(38===i||40===i)&&o.setFocusOrigin("keyboard"),void o.onKeydown(e)}}focusFirstItem(e="program"){this._firstItemFocusRef?.destroy(),this._firstItemFocusRef=Vi(()=>{const i=this._resolvePanel();if(!i||!i.contains(document.activeElement)){const o=this._keyManager;o.setFocusOrigin(e).setFirstItemActive(),!o.activeItem&&i&&i.focus()}},{injector:this._injector})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(e){}setPositionClasses(e=this.xPosition,i=this.yPosition){this._classList={...this._classList,"mat-menu-before":"before"===e,"mat-menu-after":"after"===e,"mat-menu-above":"above"===i,"mat-menu-below":"below"===i},this._changeDetectorRef.markForCheck()}_onAnimationDone(e){const i=e===pv;(i||e===kk)&&(i&&(clearTimeout(this._exitFallbackTimeout),this._exitFallbackTimeout=void 0),this._animationDone.next(i?"void":"enter"),this._isAnimating.set(!1))}_onAnimationStart(e){(e===kk||e===pv)&&this._isAnimating.set(!0)}_setIsOpen(e){if(this._panelAnimationState=e?"enter":"void",e){if(0===this._keyManager.activeItemIndex){const i=this._resolvePanel();i&&(i.scrollTop=0)}}else this._animationsDisabled||(this._exitFallbackTimeout=setTimeout(()=>this._onAnimationDone(pv),200));this._animationsDisabled&&setTimeout(()=>{this._onAnimationDone(e?kk:pv)}),this._changeDetectorRef.markForCheck()}_updateDirectDescendants(){this._allItems.changes.pipe(si(this._allItems)).subscribe(e=>{this._directDescendantItems.reset(e.filter(i=>i._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}_resolvePanel(){let e=null;return this._directDescendantItems.length&&(e=this._directDescendantItems.first._getHostElement().closest('[role="menu"]')),e}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-menu"]],contentQueries:function(i,o,r){if(1&i&&ys(r,Lge,5)(r,As,5)(r,As,4),2&i){let s;he(s=fe())&&(o.lazyContent=s.first),he(s=fe())&&(o._allItems=s),he(s=fe())&&(o.items=s)}},viewQuery:function(i,o){if(1&i&&ot(Ti,5),2&i){let r;he(r=fe())&&(o.templateRef=r.first)}},hostVars:3,hostBindings:function(i,o){2&i&&$e("aria-label",null)("aria-labelledby",null)("aria-describedby",null)},inputs:{backdropClass:"backdropClass",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:[2,"overlapTrigger","overlapTrigger",De],hasBackdrop:[2,"hasBackdrop","hasBackdrop",e=>null==e?null:De(e)],panelClass:[0,"class","panelClass"],classList:"classList"},outputs:{closed:"closed",close:"close"},exportAs:["matMenu"],features:[lt([{provide:Sk,useExisting:t}])],ngContentSelectors:Fge,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-mdc-menu-panel",3,"click","animationstart","animationend","animationcancel","id"],[1,"mat-mdc-menu-content"]],template:function(i,o){1&i&&(yi(),Eg(0,Nge,3,12,"ng-template"))},styles:['mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-sys-label-large-weight))}@keyframes _mat-menu-enter{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:none}}@keyframes _mat-menu-exit{from{opacity:1}to{opacity:0}}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;box-sizing:border-box;outline:0;animation:_mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1);border-radius:var(--mat-menu-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-sys-surface-container));box-shadow:var(--mat-menu-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));will-change:transform,opacity}.mat-mdc-menu-panel.mat-menu-panel-exit-animation{animation:_mat-menu-exit 100ms 25ms linear forwards}.mat-mdc-menu-panel.mat-menu-panel-animations-disabled{animation:none}.mat-mdc-menu-panel.mat-menu-panel-animating{pointer-events:none}.mat-mdc-menu-panel.mat-menu-panel-animating:has(.mat-mdc-menu-content:empty){display:none}@media(forced-colors: active){.mat-mdc-menu-panel{outline:solid 1px}}.mat-mdc-menu-panel .mat-divider{border-top-color:var(--mat-menu-divider-color, var(--mat-sys-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing, 8px);margin-top:var(--mat-menu-divider-top-spacing, 8px)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px;padding-left:var(--mat-menu-item-leading-spacing, 12px);padding-right:var(--mat-menu-item-trailing-spacing, 12px);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-menu-item::-moz-focus-inner{border:0}[dir=rtl] .mat-mdc-menu-item{padding-left:var(--mat-menu-item-trailing-spacing, 12px);padding-right:var(--mat-menu-item-leading-spacing, 12px)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-trailing-spacing, 12px)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-trailing-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-leading-spacing, 12px)}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing, 12px);height:var(--mat-menu-item-icon-size, 24px);width:var(--mat-menu-item-icon-size, 24px)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing, 12px)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}@media(forced-colors: active){.mat-mdc-menu-item{margin-top:1px}}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size, 24px);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing, 12px)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing, 12px);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1);transform-origin:center}@media(forced-colors: active){.mat-mdc-menu-submenu-icon{fill:CanvasText}}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n'],encapsulation:2,changeDetection:0})}return t})();const Vge=new Z("mat-menu-scroll-strategy",{providedIn:"root",factory:()=>{const t=D(He);return()=>Bf(t)}}),bu=new WeakMap;let Hge=(()=>{class t{_canHaveBackdrop;_element=D(Re);_viewContainerRef=D(Ei);_menuItemInstance=D(As,{optional:!0,self:!0});_dir=D(br,{optional:!0});_focusMonitor=D(ec);_ngZone=D(_e);_injector=D(He);_scrollStrategy=D(Vge);_changeDetectorRef=D(Jt);_animationsDisabled=ci();_portal;_overlayRef=null;_menuOpen=!1;_closingActionsSubscription=pt.EMPTY;_menuCloseSubscription=pt.EMPTY;_pendingRemoval;_parentMaterialMenu;_parentInnerPadding;_openedBy=void 0;get _menu(){return this._menuInternal}set _menu(e){e!==this._menuInternal&&(this._menuInternal=e,this._menuCloseSubscription.unsubscribe(),e&&(this._menuCloseSubscription=e.close.subscribe(i=>{this._destroyMenu(i),("click"===i||"tab"===i)&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(i)})),this._menuItemInstance?._setTriggersSubmenu(this._triggersSubmenu()))}_menuInternal=null;constructor(e){this._canHaveBackdrop=e;const i=D(Sk,{optional:!0});this._parentMaterialMenu=i instanceof Jr?i:void 0}ngOnDestroy(){this._menu&&this._ownsMenu(this._menu)&&bu.delete(this._menu),this._pendingRemoval?.unsubscribe(),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null)}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this._menu)}_closeMenu(){this._menu?.close.emit()}_openMenu(e){if(this._triggerIsAriaDisabled())return;const i=this._menu;if(this._menuOpen||!i)return;this._pendingRemoval?.unsubscribe();const o=bu.get(i);bu.set(i,this),o&&o!==this&&o._closeMenu();const r=this._createOverlay(i),s=r.getConfig(),a=s.positionStrategy;this._setPosition(i,a),s.hasBackdrop=this._canHaveBackdrop?null==i.hasBackdrop?!this._triggersSubmenu():i.hasBackdrop:i.hasBackdrop??!1,r.hasAttached()||(r.attach(this._getPortal(i)),i.lazyContent?.attach(this.menuData)),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this._closeMenu()),i.parentMenu=this._triggersSubmenu()?this._parentMaterialMenu:void 0,i.direction=this.dir,e&&i.focusFirstItem(this._openedBy||"program"),this._setIsMenuOpen(!0),i instanceof Jr&&(i._setIsOpen(!0),i._directDescendantItems.changes.pipe(fn(i.close)).subscribe(()=>{a.withLockedPosition(!1).reapplyLastPosition(),a.withLockedPosition(!0)}))}focus(e,i){this._focusMonitor&&e?this._focusMonitor.focusVia(this._element,e,i):this._element.nativeElement.focus(i)}_destroyMenu(e){const i=this._overlayRef,o=this._menu;!i||!this.menuOpen||(this._closingActionsSubscription.unsubscribe(),this._pendingRemoval?.unsubscribe(),o instanceof Jr&&this._ownsMenu(o)?(this._pendingRemoval=o._animationDone.pipe(Cn(1)).subscribe(()=>{i.detach(),bu.has(o)||o.lazyContent?.detach()}),o._setIsOpen(!1)):(i.detach(),o?.lazyContent?.detach()),o&&this._ownsMenu(o)&&bu.delete(o),this.restoreFocus&&("keydown"===e||!this._openedBy||!this._triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,this._setIsMenuOpen(!1))}_setIsMenuOpen(e){e!==this._menuOpen&&(this._menuOpen=e,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this._triggersSubmenu()&&this._menuItemInstance._setHighlighted(e),this._changeDetectorRef.markForCheck())}_createOverlay(e){if(!this._overlayRef){const i=this._getOverlayConfig(e);this._subscribeToPositions(e,i.positionStrategy),this._overlayRef=Xd(this._injector,i),this._overlayRef.keydownEvents().subscribe(o=>{this._menu instanceof Jr&&this._menu._handleKeydown(o)})}return this._overlayRef}_getOverlayConfig(e){return new Vf({positionStrategy:xb(this._injector,this._getOverlayOrigin()).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:e.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:e.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir||"ltr",disableAnimations:this._animationsDisabled})}_subscribeToPositions(e,i){e.setPositionClasses&&i.positionChanges.subscribe(o=>{this._ngZone.run(()=>{e.setPositionClasses("start"===o.connectionPair.overlayX?"after":"before","top"===o.connectionPair.overlayY?"below":"above")})})}_setPosition(e,i){let[o,r]="before"===e.xPosition?["end","start"]:["start","end"],[s,a]="above"===e.yPosition?["bottom","top"]:["top","bottom"],[l,c]=[s,a],[f,m]=[o,r],g=0;if(this._triggersSubmenu()){if(m=o="before"===e.xPosition?"start":"end",r=f="end"===o?"start":"end",this._parentMaterialMenu){if(null==this._parentInnerPadding){const _=this._parentMaterialMenu.items.first;this._parentInnerPadding=_?_._getHostElement().offsetTop:0}g="bottom"===s?this._parentInnerPadding:-this._parentInnerPadding}}else e.overlapTrigger||(l="top"===s?"bottom":"top",c="top"===a?"bottom":"top");i.withPositions([{originX:o,originY:l,overlayX:f,overlayY:s,offsetY:g},{originX:r,originY:l,overlayX:m,overlayY:s,offsetY:g},{originX:o,originY:c,overlayX:f,overlayY:a,offsetY:-g},{originX:r,originY:c,overlayX:m,overlayY:a,offsetY:-g}])}_menuClosingActions(){const e=this._getOutsideClickStream(this._overlayRef),i=this._overlayRef.detachments();return Cr(e,this._parentMaterialMenu?this._parentMaterialMenu.closed:ae(),this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe(Tn(s=>this._menuOpen&&s!==this._menuItemInstance)):ae(),i)}_getPortal(e){return(!this._portal||this._portal.templateRef!==e.templateRef)&&(this._portal=new Yl(e.templateRef,this._viewContainerRef)),this._portal}_ownsMenu(e){return bu.get(e)===this}_triggerIsAriaDisabled(){return De(this._element.nativeElement.getAttribute("aria-disabled"))}static \u0275fac=function(i){B1()};static \u0275dir=de({type:t})}return t})(),vu=(()=>{class t extends Hge{_cleanupTouchstart;_hoverSubscription=pt.EMPTY;get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(e){this.menu=e}get menu(){return this._menu}set menu(e){this._menu=e}menuData;restoreFocus=!0;menuOpened=new we;onMenuOpen=this.menuOpened;menuClosed=new we;onMenuClose=this.menuClosed;constructor(){super(!0);const e=D(Qn);this._cleanupTouchstart=e.listen(this._element.nativeElement,"touchstart",i=>{CS(i)||(this._openedBy="touch")},{passive:!0})}triggersSubmenu(){return super._triggersSubmenu()}toggleMenu(){return this.menuOpen?this.closeMenu():this.openMenu()}openMenu(){this._openMenu(!0)}closeMenu(){this._closeMenu()}updatePosition(){this._overlayRef?.updatePosition()}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){super.ngOnDestroy(),this._cleanupTouchstart(),this._hoverSubscription.unsubscribe()}_getOverlayOrigin(){return this._element}_getOutsideClickStream(e){return e.backdropClick()}_handleMousedown(e){yS(e)||(this._openedBy=0===e.button?"mouse":void 0,this.triggersSubmenu()&&e.preventDefault())}_handleKeydown(e){const i=e.keyCode;(13===i||32===i)&&(this._openedBy="keyboard"),this.triggersSubmenu()&&(39===i&&"ltr"===this.dir||37===i&&"rtl"===this.dir)&&(this._openedBy="keyboard",this.openMenu())}_handleClick(e){this.triggersSubmenu()?(e.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){this.triggersSubmenu()&&this._parentMaterialMenu&&(this._hoverSubscription=this._parentMaterialMenu._hovered().subscribe(e=>{e===this._menuItemInstance&&!e.disabled&&"void"!==this._parentMaterialMenu?._panelAnimationState&&(this._openedBy="mouse",this._openMenu(!1))}))}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:[1,"mat-mdc-menu-trigger"],hostVars:3,hostBindings:function(i,o){1&i&&F("click",function(s){return o._handleClick(s)})("mousedown",function(s){return o._handleMousedown(s)})("keydown",function(s){return o._handleKeydown(s)}),2&i&&$e("aria-haspopup",o.menu?"menu":null)("aria-expanded",o.menuOpen)("aria-controls",o.menuOpen?null==o.menu?null:o.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:[0,"mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:[0,"matMenuTriggerFor","menu"],menuData:[0,"matMenuTriggerData","menuData"],restoreFocus:[0,"matMenuTriggerRestoreFocus","restoreFocus"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"},exportAs:["matMenuTrigger"],features:[be]})}return t})(),jge=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[IS,Zd,ii,Rf]})}return t})();const oV=()=>["1"],Ia=t=>[t],rV=t=>({number:t});function Uge(t,n){if(1&t&&(h(0,"a",4)(1,"mat-icon",10),p(2,"chevron_left"),u(),p(3),b(4,"translate"),u()),2&t){const e=v();C("routerLink",e.linkParts.concat(Ct(6,oV)))("queryParams",e.queryParams),d(),C("inline",!0),d(2),E(" ",y(4,4,"paginator.first")," ")}}function zge(t,n){if(1&t&&(h(0,"a",5)(1,"mat-icon",10),p(2,"chevron_left"),u(),h(3,"span",11),p(4),b(5,"translate"),u()()),2&t){const e=v();C("routerLink",e.linkParts.concat(Ct(6,oV)))("queryParams",e.queryParams),d(),C("inline",!0),d(3),M(y(5,4,"paginator.first"))}}function $ge(t,n){if(1&t&&(h(0,"a",4)(1,"div")(2,"mat-icon",10),p(3,"chevron_left"),u()()()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(3,Ia,(e.currentPage-1).toString())))("queryParams",e.queryParams),d(2),C("inline",!0)}}function Wge(t,n){if(1&t&&(h(0,"a",4),p(1),u()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(3,Ia,(e.currentPage-2).toString())))("queryParams",e.queryParams),d(),M(e.currentPage-2)}}function Gge(t,n){if(1&t&&(h(0,"a",6),p(1),u()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(3,Ia,(e.currentPage-1).toString())))("queryParams",e.queryParams),d(),M(e.currentPage-1)}}function qge(t,n){if(1&t&&(h(0,"a",6),p(1),u()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(3,Ia,(e.currentPage+1).toString())))("queryParams",e.queryParams),d(),M(e.currentPage+1)}}function Kge(t,n){if(1&t&&(h(0,"a",4),p(1),u()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(3,Ia,(e.currentPage+2).toString())))("queryParams",e.queryParams),d(),M(e.currentPage+2)}}function Yge(t,n){if(1&t&&(h(0,"a",4)(1,"div")(2,"mat-icon",10),p(3,"chevron_right"),u()()()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(3,Ia,(e.currentPage+1).toString())))("queryParams",e.queryParams),d(2),C("inline",!0)}}function Xge(t,n){if(1&t&&(h(0,"a",4),p(1),b(2,"translate"),h(3,"mat-icon",10),p(4,"chevron_right"),u()()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(6,Ia,e.numberOfPages.toString())))("queryParams",e.queryParams),d(),E(" ",y(2,4,"paginator.last")," "),d(2),C("inline",!0)}}function Zge(t,n){if(1&t&&(h(0,"a",5)(1,"mat-icon",10),p(2,"chevron_right"),u(),h(3,"span",11),p(4),b(5,"translate"),u()()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(6,Ia,e.numberOfPages.toString())))("queryParams",e.queryParams),d(),C("inline",!0),d(3),M(y(5,4,"paginator.last"))}}function Qge(t,n){if(1&t&&(h(0,"div",8),p(1),b(2,"translate"),u()),2&t){const e=v();d(),M(pe(2,1,"paginator.total",se(4,rV,e.numberOfPages)))}}function Jge(t,n){if(1&t&&(h(0,"div",9),p(1),b(2,"translate"),u()),2&t){const e=v();d(),M(pe(2,1,"paginator.total",se(4,rV,e.numberOfPages)))}}let mv=(()=>{class t{constructor(e,i){this.dialog=e,this.router=i,this.linkParts=[""],this.queryParams={}}openSelectionDialog(){const e=[];for(let i=1;i<=this.numberOfPages;i++)e.push({label:i.toString()});ao.openDialog(this.dialog,e,"paginator.select-page-title").afterClosed().subscribe(i=>{i&&this.router.navigate(this.linkParts.concat([i.toString()]),{queryParams:this.queryParams})})}static{this.\u0275fac=function(i){return new(i||t)(O(Ot),O(vt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-paginator"]],inputs:{currentPage:"currentPage",numberOfPages:"numberOfPages",linkParts:"linkParts",queryParams:"queryParams"},standalone:!1,decls:21,vars:13,consts:[[1,"main-container"],[1,"d-inline-block","small-rounded-elevated-box","mt-3"],[1,"d-flex"],[1,"responsive-height","d-md-none"],[1,"d-none","d-md-flex",3,"routerLink","queryParams"],[1,"d-flex","d-md-none","flex-column",3,"routerLink","queryParams"],[3,"routerLink","queryParams"],[1,"selected",3,"click"],[1,"d-none","d-md-block","total-pages"],[1,"d-block","d-md-none","total-pages"],[3,"inline"],[1,"label"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3),p(4,"\xa0"),B(5,"br"),p(6,"\xa0"),u(),x(7,Uge,5,7,"a",4),x(8,zge,6,7,"a",5),x(9,$ge,4,5,"a",4),x(10,Wge,2,5,"a",4),x(11,Gge,2,5,"a",6),h(12,"a",7),F("click",function(){return o.openSelectionDialog()}),p(13),u(),x(14,qge,2,5,"a",6),x(15,Kge,2,5,"a",4),x(16,Yge,4,5,"a",4),x(17,Xge,5,8,"a",4),x(18,Zge,6,8,"a",5),u()(),x(19,Qge,3,6,"div",8),x(20,Jge,3,6,"div",9),u()),2&i&&(d(7),S(o.currentPage>3?7:-1),d(),S(o.currentPage>2?8:-1),d(),S(o.currentPage>1?9:-1),d(),S(o.currentPage>2?10:-1),d(),S(o.currentPage>1?11:-1),d(2),M(o.currentPage),d(),S(o.currentPage3?19:-1),d(),S(o.numberOfPages>2?20:-1))},dependencies:[Is,We,xe],styles:[".main-container[_ngcontent-%COMP%]{text-align:right}.main-container[_ngcontent-%COMP%] .responsive-height[_ngcontent-%COMP%]{padding:10px 0;width:0px}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:10px;border-right:rgba(255,255,255,.15) solid 1px;border-left:rgba(255,255,255,.15) solid 1px;min-width:40px;text-align:center;color:#f8f9f980;text-decoration:none;display:flex;align-items:center;justify-content:center}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:#0003}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:.7rem}.main-container[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{color:#f8f9f9;background:#0000005c;padding:10px 20px;cursor:pointer}.main-container[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]:hover{background:#0009}.main-container[_ngcontent-%COMP%] .total-pages[_ngcontent-%COMP%]{font-size:.6rem;margin-top:-3px;margin-right:4px}"]})}}return t})();function ip(t){return Mn((n,e)=>{let i,r,o=!1;const s=()=>{i=n.subscribe(dn(e,void 0,void 0,a=>{r||(r=new me,ji(t(r)).subscribe(dn(e,()=>i?s():o=!0))),r&&r.next(a)})),o&&(i.unsubscribe(),i=null,o=!1,s())};s()})}const es={AF:"Afghanistan",AX:"Aland Islands",AL:"Albania",DZ:"Algeria",AS:"American Samoa",AD:"Andorra",AO:"Angola",AI:"Anguilla",AQ:"Antarctica",AG:"Antigua and Barbuda",AR:"Argentina",AM:"Armenia",AW:"Aruba",AU:"Australia",AT:"Austria",AZ:"Azerbaijan",BS:"Bahamas",BH:"Bahrain",BD:"Bangladesh",BB:"Barbados",BY:"Belarus",BE:"Belgium",BZ:"Belize",BJ:"Benin",BM:"Bermuda",BT:"Bhutan",BO:"Bolivia",BA:"Bosnia and Herzegovina",BW:"Botswana",BV:"Bouvet Island",BR:"Brazil",IO:"British Indian Ocean Territory",BN:"Brunei Darussalam",BG:"Bulgaria",BF:"Burkina Faso",BI:"Burundi",KH:"Cambodia",CM:"Cameroon",CA:"Canada",CV:"Cape Verde",KY:"Cayman Islands",CF:"Central African Republic",TD:"Chad",CL:"Chile",CN:"China",CX:"Christmas Island",CC:"Cocos (Keeling) Islands",CO:"Colombia",KM:"Comoros",CG:"Congo",CD:"Congo, Democratic Republic",CK:"Cook Islands",CR:"Costa Rica",CI:"Cote D'Ivoire",HR:"Croatia",CU:"Cuba",CY:"Cyprus",CZ:"Czech Republic",DK:"Denmark",DJ:"Djibouti",DM:"Dominica",DO:"Dominican Republic",EC:"Ecuador",EG:"Egypt",SV:"El Salvador",GQ:"Equatorial Guinea",ER:"Eritrea",EE:"Estonia",ET:"Ethiopia",FK:"Falkland Islands (Malvinas)",FO:"Faroe Islands",FJ:"Fiji",FI:"Finland",FR:"France",GF:"French Guiana",PF:"French Polynesia",TF:"French Southern Territories",GA:"Gabon",GM:"Gambia",GE:"Georgia",DE:"Germany",GH:"Ghana",GI:"Gibraltar",GR:"Greece",GL:"Greenland",GD:"Grenada",GP:"Guadeloupe",GU:"Guam",GT:"Guatemala",GG:"Guernsey",GN:"Guinea",GW:"Guinea-Bissau",GY:"Guyana",HT:"Haiti",HM:"Heard Island and Mcdonald Islands",VA:"Holy See (Vatican City State)",HN:"Honduras",HK:"Hong Kong",HU:"Hungary",IS:"Iceland",IN:"India",ID:"Indonesia",IR:"Iran",IQ:"Iraq",IE:"Ireland",IM:"Isle of Man",IL:"Israel",IT:"Italy",JM:"Jamaica",JP:"Japan",JE:"Jersey",JO:"Jordan",KZ:"Kazakhstan",KE:"Kenya",KI:"Kiribati",KP:"Korea (North)",KR:"Korea (South)",XK:"Kosovo",KW:"Kuwait",KG:"Kyrgyzstan",LA:"Laos",LV:"Latvia",LB:"Lebanon",LS:"Lesotho",LR:"Liberia",LY:"Libyan Arab Jamahiriya",LI:"Liechtenstein",LT:"Lithuania",LU:"Luxembourg",MO:"Macao",MK:"Macedonia",MG:"Madagascar",MW:"Malawi",MY:"Malaysia",MV:"Maldives",ML:"Mali",MT:"Malta",MH:"Marshall Islands",MQ:"Martinique",MR:"Mauritania",MU:"Mauritius",YT:"Mayotte",MX:"Mexico",FM:"Micronesia",MD:"Moldova",MC:"Monaco",MN:"Mongolia",MS:"Montserrat",MA:"Morocco",MZ:"Mozambique",MM:"Myanmar",NA:"Namibia",NR:"Nauru",NP:"Nepal",NL:"Netherlands",AN:"Netherlands Antilles",NC:"New Caledonia",NZ:"New Zealand",NI:"Nicaragua",NE:"Niger",NG:"Nigeria",NU:"Niue",NF:"Norfolk Island",MP:"Northern Mariana Islands",NO:"Norway",OM:"Oman",PK:"Pakistan",PW:"Palau",PS:"Palestinian Territory, Occupied",PA:"Panama",PG:"Papua New Guinea",PY:"Paraguay",PE:"Peru",PH:"Philippines",PN:"Pitcairn",PL:"Poland",PT:"Portugal",PR:"Puerto Rico",QA:"Qatar",RE:"Reunion",RO:"Romania",RU:"Russian Federation",RW:"Rwanda",SH:"Saint Helena",KN:"Saint Kitts and Nevis",LC:"Saint Lucia",PM:"Saint Pierre and Miquelon",VC:"Saint Vincent and the Grenadines",WS:"Samoa",SM:"San Marino",ST:"Sao Tome and Principe",SA:"Saudi Arabia",SN:"Senegal",RS:"Serbia",ME:"Montenegro",SC:"Seychelles",SL:"Sierra Leone",SG:"Singapore",SK:"Slovakia",SI:"Slovenia",SB:"Solomon Islands",SO:"Somalia",ZA:"South Africa",GS:"South Georgia and the South Sandwich Islands",ES:"Spain",LK:"Sri Lanka",SD:"Sudan",SR:"Suriname",SJ:"Svalbard and Jan Mayen",SZ:"Swaziland",SE:"Sweden",CH:"Switzerland",SY:"Syrian Arab Republic",TW:"Taiwan, Province of China",TJ:"Tajikistan",TZ:"Tanzania",TH:"Thailand",TL:"Timor-Leste",TG:"Togo",TK:"Tokelau",TO:"Tonga",TT:"Trinidad and Tobago",TN:"Tunisia",TR:"Turkey",TM:"Turkmenistan",TC:"Turks and Caicos Islands",TV:"Tuvalu",UG:"Uganda",UA:"Ukraine",AE:"United Arab Emirates",GB:"United Kingdom",US:"United States",UM:"United States Minor Outlying Islands",UY:"Uruguay",UZ:"Uzbekistan",VU:"Vanuatu",VE:"Venezuela",VN:"Viet Nam",VG:"Virgin Islands, British",VI:"Virgin Islands, U.S.",WF:"Wallis and Futuna",EH:"Western Sahara",YE:"Yemen",ZM:"Zambia",ZW:"Zimbabwe",ZZ:"Unknown"};let Rs=(()=>{class t{constructor(e){this.apiService=e}changeAppState(e,i,o){return this.apiService.put(`visors/${e}/apps/${encodeURIComponent(i)}`,{status:o?1:0})}changeAppAutostart(e,i,o){return this.changeAppSettings(e,i,{autostart:o})}changeAppSettings(e,i,o){return this.apiService.put(`visors/${e}/apps/${encodeURIComponent(i)}`,o)}getLogMessages(e,i,o){const s=EF(-1!==o?Date.now()-864e5*o:0,"yyyy-MM-ddTHH:mm:ssZZZZZ","en-US");return this.apiService.get(this.getLogMessagesUrl(e,i)+`?since=${s}`).pipe(Se(a=>a.logs))}getLogMessagesUrl(e,i){return`visors/${e}/apps/${encodeURIComponent(i)}/logs`}static{this.\u0275fac=function(i){return new(i||t)(ce(zi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var _n=function(t){return t.None="None",t.Favorite="Favorite",t.Blocked="Blocked",t}(_n||{}),Zo=function(t){return t.BitsSpeedAndBytesVolume="BitsSpeedAndBytesVolume",t.OnlyBytes="OnlyBytes",t.OnlyBits="OnlyBits",t}(Zo||{});let uc=(()=>{class t{constructor(e,i){this.router=e,this.storageService=i,this.maxHistoryElements=30,this.savedServersStorageKey="VpnServers",this.checkIpSettingStorageKey="VpnGetIp",this.dataUnitsSettingStorageKey="VpnDataUnits",this.serversMap=new Map,this.savedDataVersion=0,this.currentServerSubject=new oo(1),this.historySubject=new oo(1),this.favoritesSubject=new oo(1),this.blockedSubject=new oo(1)}initialize(){this.migrateDataToHvStorage(),this.serversMap=new Map;const e=this.storageService.getDataForHv(this.savedServersStorageKey);if(e){const i=JSON.parse(e);i.serverList.forEach(o=>{this.serversMap.set(o.pk,o)}),this.savedDataVersion=i.version,i.selectedServerPk&&this.updateCurrentServerPk(i.selectedServerPk)}this.launchListEvents()}migrateDataToHvStorage(){const e=localStorage.getItem(this.savedServersStorageKey);e&&(this.storageService.setDataForHv(this.savedServersStorageKey,e),localStorage.removeItem(this.savedServersStorageKey));const i=localStorage.getItem(this.checkIpSettingStorageKey);i&&(this.storageService.setDataForHv(this.checkIpSettingStorageKey,i),localStorage.removeItem(this.checkIpSettingStorageKey));const o=localStorage.getItem(this.dataUnitsSettingStorageKey);o&&(this.storageService.setDataForHv(this.dataUnitsSettingStorageKey,o),localStorage.removeItem(this.dataUnitsSettingStorageKey))}get currentServer(){return this.serversMap.get(this.currentServerPk)}get currentServerObservable(){return this.currentServerSubject.asObservable()}get history(){return this.historySubject.asObservable()}get favorites(){return this.favoritesSubject.asObservable()}get blocked(){return this.blockedSubject.asObservable()}getSavedVersion(e,i){return i&&this.checkIfDataWasChanged(),this.serversMap.get(e)}getCheckIpSetting(){const e=this.storageService.getDataForHv(this.checkIpSettingStorageKey);return null==e||"false"!==e}setCheckIpSetting(e){this.storageService.setDataForHv(this.checkIpSettingStorageKey,e?"true":"false")}getDataUnitsSetting(){return this.storageService.getDataForHv(this.dataUnitsSettingStorageKey)??Zo.BitsSpeedAndBytesVolume}setDataUnitsSetting(e){this.storageService.setDataForHv(this.dataUnitsSettingStorageKey,e)}updateFromDiscovery(e){this.checkIfDataWasChanged(),e.forEach(i=>{if(this.serversMap.has(i.pk)){const o=this.serversMap.get(i.pk);o.countryCode=i.countryCode,o.name=i.name,o.location=i.location,o.note=i.note}}),this.saveData()}updateServer(e){this.serversMap.set(e.pk,e),this.cleanServers(),this.saveData()}processFromDiscovery(e){this.checkIfDataWasChanged();const i=this.serversMap.get(e.pk);return i?(i.countryCode=e.countryCode,i.name=e.name,i.location=e.location,i.note=e.note,this.saveData(),i):{countryCode:e.countryCode,name:e.name,customName:null,pk:e.pk,lastUsed:0,inHistory:!1,flag:_n.None,location:e.location,personalNote:null,note:e.note,enteredManually:!1,usedWithPassword:!1}}processFromManual(e){this.checkIfDataWasChanged();const i=this.serversMap.get(e.pk);return i?(i.customName=e.name,i.personalNote=e.note,i.enteredManually=!0,this.saveData(),i):{countryCode:"zz",name:"",customName:e.name,pk:e.pk,lastUsed:0,inHistory:!1,flag:_n.None,location:"",personalNote:e.note,note:"",enteredManually:!0,usedWithPassword:!1}}changeFlag(e,i){this.checkIfDataWasChanged();const o=this.serversMap.get(e.pk);o&&(e=o),e.flag!==i&&(e.flag=i,this.serversMap.has(e.pk)||this.serversMap.set(e.pk,e),this.cleanServers(),this.saveData())}removeFromHistory(e){this.checkIfDataWasChanged();const i=this.serversMap.get(e);!i||!i.inHistory||(i.inHistory=!1,this.cleanServers(),this.saveData())}modifyCurrentServer(e){this.checkIfDataWasChanged(),e.pk!==this.currentServerPk&&(this.serversMap.has(e.pk)||this.serversMap.set(e.pk,e),this.updateCurrentServerPk(e.pk),this.cleanServers(),this.saveData())}compareCurrentServer(e){if(this.checkIfDataWasChanged(),e){if(!this.currentServerPk||this.currentServerPk!==e){if(this.currentServerPk=e,!this.serversMap.get(e)){const o=this.processFromManual({pk:e});this.serversMap.set(o.pk,o),this.cleanServers()}this.saveData(),this.currentServerSubject.next(this.currentServer)}}else this.currentServerPk&&(this.currentServerPk=null,this.saveData(),this.currentServerSubject.next(this.currentServer))}updateHistory(){this.checkIfDataWasChanged(),this.currentServer.lastUsed=Date.now(),this.currentServer.inHistory=!0;let e=[];this.serversMap.forEach(o=>{o.inHistory&&e.push(o)}),e=e.sort((o,r)=>r.lastUsed-o.lastUsed);let i=0;e.forEach(o=>{i{!i.inHistory&&i.flag===_n.None&&i.pk!==this.currentServerPk&&!i.customName&&!i.personalNote&&e.push(i.pk)}),e.forEach(i=>{this.serversMap.delete(i)})}saveData(){let e=0;const i=this.storageService.getDataForHv(this.savedServersStorageKey);if(i&&(e=JSON.parse(i).version),e!==this.savedDataVersion)return void this.router.navigate(["vpn","unavailable"],{queryParams:{problem:"storage"}});this.savedDataVersion+=1;const o={version:this.savedDataVersion,serverList:Array.from(this.serversMap.values()),selectedServerPk:this.currentServerPk},r=JSON.stringify(o);this.storageService.setDataForHv(this.savedServersStorageKey,r),this.launchListEvents()}checkIfDataWasChanged(){let e=0;const i=this.storageService.getDataForHv(this.savedServersStorageKey);i&&(e=JSON.parse(i).version),e!==this.savedDataVersion&&this.initialize()}launchListEvents(){const e=[],i=[],o=[];this.serversMap.forEach(r=>{r.inHistory&&e.push(r),r.flag===_n.Favorite&&i.push(r),r.flag===_n.Blocked&&o.push(r)}),this.historySubject.next(e),this.favoritesSubject.next(i),this.blockedSubject.next(o)}updateCurrentServerPk(e){this.currentServerPk=e,this.currentServerSubject.next(this.currentServer)}static{this.\u0275fac=function(i){return new(i||t)(ce(vt),ce(ti))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var an=function(t){return t.Stopped="stopped",t.Connecting="Connecting",t.Running="Running",t.ShuttingDown="Shutting down",t.Reconnecting="Connection failed, reconnecting",t}(an||{});class e_e{constructor(){this.updateDate=Date.now()}}class t_e{}class n_e{constructor(){this.latency=0,this.uploadSpeed=0,this.downloadSpeed=0,this.totalUploaded=0,this.totalDownloaded=0,this.connectionDuration=0,this.error=""}}var Ri=function(t){return t[t.PerformingInitialCheck=1]="PerformingInitialCheck",t[t.Off=10]="Off",t[t.Starting=20]="Starting",t[t.Running=100]="Running",t[t.Disconnecting=200]="Disconnecting",t}(Ri||{}),Dr=function(t){return t[t.Busy=1]="Busy",t[t.Ok=2]="Ok",t[t.MustStop=3]="MustStop",t[t.SamePkRunning=4]="SamePkRunning",t[t.SamePkStopped=5]="SamePkStopped",t}(Dr||{});let hc=(()=>{class t{constructor(e,i,o,r,s,a,l){this.apiService=e,this.appsService=i,this.router=o,this.vpnSavedDataService=r,this.http=s,this.snackbarService=a,this.translateService=l,this.vpnClientAppName="vpn-client",this.standardWaitTime=2e3,this.stateSubject=new ki(null),this.errorSubject=new ki(!1),this.working=!0,this.requestedServer=null,this.requestedPassword=null,this.updatesStopped=!1,this.currentEventData=new e_e,this.currentEventData.busy=!0,this.lastServiceState=Ri.PerformingInitialCheck}initialize(e){e&&(this.nodeKey?e!==this.nodeKey?this.router.navigate(["vpn","unavailable"],{queryParams:{problem:"pkChange"}}):this.updatesStopped&&(this.updatesStopped=!1,this.updateData()):(this.nodeKey=e,this.vpnSavedDataService.initialize(),this.updateData()))}get backendState(){return this.stateSubject.asObservable()}get errorsConnecting(){return this.errorSubject.asObservable()}updateData(){this.continuallyUpdateData(0)}start(){return!this.working&&this.lastServiceState<20&&(this.changeAppState(!0),!0)}stop(){return!this.working&&this.lastServiceState>=20&&this.lastServiceState<200&&(this.changeAppState(!1),!0)}getIpData(){return this.http.request("GET",window.location.protocol+"//ip.skycoin.com/").pipe(ip(e=>Ts(e.pipe(li(this.standardWaitTime),Cn(4)),mr(""))),Se(e=>[e&&e.ip_address?e.ip_address:this.translateService.instant("common.unknown"),e&&e.country_name?e.country_name:this.translateService.instant("common.unknown")]))}changeServerUsingHistory(e,i){return this.requestedServer=e,this.requestedPassword=i,this.updateRequestedServerPasswordSetting(),this.changeServer()}changeServerUsingDiscovery(e,i){return this.requestedServer=this.vpnSavedDataService.processFromDiscovery(e),this.requestedPassword=i,this.updateRequestedServerPasswordSetting(),this.changeServer()}changeServerManually(e,i){return this.requestedServer=this.vpnSavedDataService.processFromManual(e),this.requestedPassword=i,this.updateRequestedServerPasswordSetting(),this.changeServer()}updateRequestedServerPasswordSetting(){this.requestedServer.usedWithPassword=!!this.requestedPassword&&""!==this.requestedPassword;const e=this.vpnSavedDataService.getSavedVersion(this.requestedServer.pk,!0);e&&(e.usedWithPassword=this.requestedServer.usedWithPassword,this.vpnSavedDataService.updateServer(e))}changeServer(){return!this.working&&(this.stop()||this.processServerChange(),!0)}checkNewPk(e){return this.working?Dr.Busy:this.lastServiceState!==Ri.Off?e===this.vpnSavedDataService.currentServer.pk?Dr.SamePkRunning:Dr.MustStop:this.vpnSavedDataService.currentServer&&e===this.vpnSavedDataService.currentServer.pk?Dr.SamePkStopped:Dr.Ok}processServerChange(){this.dataSubscription&&this.dataSubscription.unsubscribe();const e={pk:this.requestedServer.pk};e.passcode=this.requestedPassword?this.requestedPassword:"",this.stopContinuallyUpdatingData(),this.working=!0,this.sendUpdate(),this.dataSubscription=this.appsService.changeAppSettings(this.nodeKey,this.vpnClientAppName,e).subscribe(()=>{this.vpnSavedDataService.modifyCurrentServer(this.requestedServer),this.requestedServer=null,this.requestedPassword=null,this.working=!1,this.start()},i=>{i=Qe(i),this.snackbarService.showError("vpn.server-change.backend-error",null,!1,i.originalServerErrorMsg),this.working=!1,this.requestedServer=null,this.requestedPassword=null,this.sendUpdate(),this.updateData()})}changeAppState(e){if(this.working)return;this.stopContinuallyUpdatingData(),this.working=!0,this.sendUpdate();const i={status:1};e?(this.lastServiceState=Ri.Starting,this.connectionHistoryPk=null):(this.lastServiceState=Ri.Disconnecting,i.status=0),this.dataSubscription&&this.dataSubscription.unsubscribe(),this.dataSubscription=this.appsService.changeAppSettings(this.nodeKey,this.vpnClientAppName,i).pipe(Ui(o=>this.getVpnClientState().pipe(It(r=>{if(r){if(e&&r.running)return ae(!0);if(!e&&!r.running)return ae(!0)}return mr(o)}))),ip(o=>Ts(o.pipe(li(this.standardWaitTime),Cn(3)),o.pipe(It(r=>mr(r)))))).subscribe(o=>{this.working=!1;const r=this.processAppData(o);this.lastServiceState=r.running?Ri.Running:Ri.Off,this.currentEventData.vpnClientAppData=r,this.currentEventData.updateDate=Date.now(),this.sendUpdate(),this.updateData(),!e&&this.requestedServer&&this.processServerChange()},o=>{o=Qe(o),this.snackbarService.showError(this.lastServiceState===Ri.Starting?"vpn.status-page.problem-starting-error":this.lastServiceState===Ri.Disconnecting?"vpn.status-page.problem-stopping-error":"vpn.status-page.generic-problem-error",null,!1,o.originalServerErrorMsg),this.working=!1,this.sendUpdate(),this.updateData()})}continuallyUpdateData(e){if(this.working&&this.lastServiceState!==Ri.PerformingInitialCheck)return;this.continuousUpdateSubscription&&this.continuousUpdateSubscription.unsubscribe();let i=0;this.continuousUpdateSubscription=ae(0).pipe(li(e),It(()=>this.getVpnClientState()),ip(o=>o.pipe(It(r=>(this.errorSubject.next(!0),Xr.currentInstance.showDataProblemMsg(),(r=Qe(r)).originalError&&r.originalError.status&&401===r.originalError.status?mr(r):this.lastServiceState!==Ri.PerformingInitialCheck||i<4?(i+=1,ae(r).pipe(li(this.standardWaitTime))):mr(r)))))).subscribe(o=>{o?(this.errorSubject.next(!1),Xr.currentInstance.hideDataProblemMsg(),this.lastServiceState===Ri.PerformingInitialCheck&&(this.working=!1),this.vpnSavedDataService.compareCurrentServer(o.serverPk),this.lastServiceState=o.running?Ri.Running:Ri.Off,this.currentEventData.vpnClientAppData=o,this.currentEventData.updateDate=Date.now(),this.sendUpdate()):this.lastServiceState===Ri.PerformingInitialCheck&&(this.router.navigate(["vpn","unavailable"]),this.nodeKey=null,this.updatesStopped=!0),this.continuallyUpdateData(this.standardWaitTime)},o=>{(o=Qe(o)).originalError&&o.originalError.status&&401===o.originalError.status||(this.router.navigate(["vpn","unavailable"]),this.nodeKey=null),this.updatesStopped=!0})}stopContinuallyUpdatingData(){this.continuousUpdateSubscription&&this.continuousUpdateSubscription.unsubscribe()}getVpnClientState(){let e;const i=new qo;return i.vpnKeyForAuth=this.nodeKey,this.apiService.get(`visors/${this.nodeKey}/summary`,i).pipe(It(o=>{let r;if(o&&o.overview)if(this.visorPublicIp=o.overview.public_ip&&o.overview.public_ip.trim()?o.overview.public_ip:null,o.overview.country_code){this.visorCountryCode=o.overview.country_code;const s=es[o.overview.country_code.toUpperCase()];this.visorCountryName=s||o.overview.country_code}else this.visorCountryCode=null,this.visorCountryName=null;if(o&&o.overview&&o.overview.apps&&o.overview.apps.length>0&&o.overview.apps.forEach(s=>{s.name===this.vpnClientAppName&&(r=s)}),r&&(e=this.processAppData(r)),e.minHops=o.min_hops?o.min_hops:0,e&&e.running){const s=new qo;return s.vpnKeyForAuth=this.nodeKey,this.apiService.get(`visors/${this.nodeKey}/apps/${this.vpnClientAppName}/connections`,s)}return ae(null)}),Se(o=>{if(o&&o.length>0){const r=new n_e;o.forEach(s=>{r.latency+=s.latency/o.length,r.uploadSpeed+=s.upload_speed/o.length,r.downloadSpeed+=s.download_speed/o.length,r.totalUploaded+=s.bandwidth_sent,r.totalDownloaded+=s.bandwidth_received,s.error&&(r.error=s.error),s.connection_duration>r.connectionDuration&&(r.connectionDuration=s.connection_duration)}),(!this.connectionHistoryPk||this.connectionHistoryPk!==e.serverPk)&&(this.connectionHistoryPk=e.serverPk,this.uploadSpeedHistory=[0,0,0,0,0,0,0,0,0,0],this.downloadSpeedHistory=[0,0,0,0,0,0,0,0,0,0],this.latencyHistory=[0,0,0,0,0,0,0,0,0,0]),r.latency=Math.round(r.latency),r.uploadSpeed=Math.round(r.uploadSpeed),r.downloadSpeed=Math.round(r.downloadSpeed),r.totalUploaded=Math.round(r.totalUploaded),r.totalDownloaded=Math.round(r.totalDownloaded),this.uploadSpeedHistory.splice(0,1),this.uploadSpeedHistory.push(r.uploadSpeed),r.uploadSpeedHistory=this.uploadSpeedHistory,this.downloadSpeedHistory.splice(0,1),this.downloadSpeedHistory.push(r.downloadSpeed),r.downloadSpeedHistory=this.downloadSpeedHistory,this.latencyHistory.splice(0,1),this.latencyHistory.push(r.latency),r.latencyHistory=this.latencyHistory,e.connectionData=r}return e}))}processAppData(e){const i=new t_e;if(i.running=0!==e.status&&2!==e.status,i.connectionDuration=e.connection_duration,i.appState=an.Stopped,i.running?e.detailed_status===an.Connecting||3===e.status?i.appState=an.Connecting:e.detailed_status===an.Running?i.appState=an.Running:e.detailed_status===an.ShuttingDown?i.appState=an.ShuttingDown:e.detailed_status===an.Reconnecting&&(i.appState=an.Reconnecting):2===e.status&&(i.lastErrorMsg=e.detailed_status,i.lastErrorMsg||(i.lastErrorMsg=this.translateService.instant("vpn.status-page.unknown-error"))),i.killswitch=!1,e.args&&e.args.length>0)for(let o=0;o{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.formBuilder=o,this.snackbarService=r,this.vpnSavedDataService=s}ngOnInit(){this.form=this.formBuilder.group({value:[(this.data.editName?this.data.server.customName:this.data.server.personalNote)||""]}),setTimeout(()=>this.firstInput.nativeElement.focus())}process(){let e=this.vpnSavedDataService.getSavedVersion(this.data.server.pk,!0);e=e||this.data.server;const i=this.form.get("value").value;i!==(this.data.editName?this.data.server.customName:this.data.server.personalNote)?(this.data.editName?e.customName=i:e.personalNote=i,this.vpnSavedDataService.updateServer(e),this.snackbarService.showDone("vpn.server-options.edit-value.changes-made-confirmation"),this.dialogRef.close(!0)):this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(di),O(ct),O(uc))}}static{this.\u0275cmp=re({type:t,selectors:[["app-edit-vpn-server-value"]],viewQuery:function(i,o){if(1&i&&ot(i_e,5),2&i){let r;he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:11,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","value","maxlength","100","matInput",""],["color","primary",1,"float-right",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),b(7,"translate"),u(),B(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.process()}),p(11),b(12,"translate"),u()()),2&i&&(C("headline",y(1,5,"vpn.server-options.edit-value."+(o.data.editName?"name":"note")+"-title"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(4),M(y(7,7,"vpn.server-options.edit-value."+(o.data.editName?"name":"note")+"-label")),d(5),E(" ",y(12,9,"vpn.server-options.edit-value.apply-button")," "))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,In,ui,gn,xe],encapsulation:2})}}return t})();const r_e=["firstInput"];let sV=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.mediumModalWidth,e.open(t,o)}constructor(e,i,o){this.dialogRef=e,this.data=i,this.formBuilder=o}ngOnInit(){this.form=this.formBuilder.group({password:["",this.data?void 0:Ne.required]}),setTimeout(()=>this.firstInput.nativeElement.focus())}process(){this.dialogRef.close("-"+this.form.get("password").value)}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-enter-vpn-server-password"]],viewQuery:function(i,o){if(1&i&&ot(r_e,5),2&i){let r;he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:12,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","password","type","password","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),b(7,"translate"),u(),B(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.process()}),p(11),b(12,"translate"),u()()),2&i&&(C("headline",y(1,6,"vpn.server-list.password-dialog.title"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(4),M(y(7,8,"vpn.server-list.password-dialog.password"+(o.data?"-if-any":"")+"-label")),d(4),C("disabled",!o.form.valid),d(),E(" ",y(12,10,"vpn.server-list.password-dialog.continue-button")," "))},dependencies:[xn,Gt,qt,wn,on,mn,sn,In,ui,gn,xe],encapsulation:2})}}return t})(),hi=(()=>{class t{static{this.serverListTabStorageKey="ServerListTab"}static{this.currentPk=""}static changeCurrentPk(e){this.currentPk=e}static setDefaultTabForServerList(e){sessionStorage.setItem(t.serverListTabStorageKey,e)}static get vpnTabsData(){const e=sessionStorage.getItem(t.serverListTabStorageKey);return[{icon:"power_settings_new",label:"vpn.start",linkParts:["/vpn",this.currentPk,"status"]},{icon:"list",label:"vpn.servers",linkParts:e?["/vpn",this.currentPk,"servers",e,"1"]:["/vpn",this.currentPk,"servers"]},{icon:"settings",label:"vpn.settings",linkParts:["/vpn",this.currentPk,"settings"]}]}static getLatencyValueString(e){return e<1e3?"time-in-ms":"time-in-segs"}static getPrintableLatency(e){return e<1e3?e+"":(e/1e3).toFixed(1)}static processServerChange(e,i,o,r,s,a,l,c,f,m,g){let _;if(c&&(f||m)||f&&(c||m)||m&&(c||f))throw new Error("Invalid call");if(c)_=c.pk;else if(f)_=f.pk;else{if(!m)throw new Error("Invalid call");_=m.pk}const w=o.getSavedVersion(_,!0),k=w&&(g||w.usedWithPassword),T=i.checkNewPk(_);if(T!==Dr.Busy)if(T!==Dr.SamePkRunning||k){if(T===Dr.MustStop||T===Dr.SamePkRunning&&k){const I=Rt.createConfirmationDialog(s,"vpn.server-change.change-server-while-connected-confirmation");return void I.componentInstance.operationAccepted.subscribe(()=>{I.componentInstance.closeModal(),c?i.changeServerUsingHistory(c,g):f?i.changeServerUsingDiscovery(f,g):m&&i.changeServerManually(m,g),t.redirectAfterServerChange(e,a,l)})}if(T===Dr.SamePkStopped&&!k){const I=Rt.createConfirmationDialog(s,"vpn.server-change.start-same-server-confirmation");return void I.componentInstance.operationAccepted.subscribe(()=>{I.componentInstance.closeModal(),m&&w&&o.processFromManual(m),i.start(),t.redirectAfterServerChange(e,a,l)})}c?i.changeServerUsingHistory(c,g):f?i.changeServerUsingDiscovery(f,g):m&&i.changeServerManually(m,g),t.redirectAfterServerChange(e,a,l)}else r.showWarning("vpn.server-change.already-selected-warning");else r.showError("vpn.server-change.busy-error")}static redirectAfterServerChange(e,i,o){i&&i.close(),e.navigate(["vpn",o,"status"])}static openServerOptions(e,i,o,r,s,a){const l=[],c=[];return e.usedWithPassword?(l.push({icon:"lock_open",label:"vpn.server-options.connect-without-password"}),c.push(201),l.push({icon:"lock_outlined",label:"vpn.server-options.connect-using-another-password"}),c.push(202)):e.enteredManually&&(l.push({icon:"lock_outlined",label:"vpn.server-options.connect-using-password"}),c.push(202)),l.push({icon:"edit",label:"vpn.server-options.edit-name"}),c.push(101),l.push({icon:"subject",label:"vpn.server-options.edit-label"}),c.push(102),(!e||e.flag!==_n.Favorite)&&(l.push({icon:"star",label:"vpn.server-options.make-favorite"}),c.push(1)),e&&e.flag===_n.Favorite&&(l.push({icon:"star_outline",label:"vpn.server-options.remove-from-favorites"}),c.push(-1)),(!e||e.flag!==_n.Blocked)&&(l.push({icon:"pan_tool",label:"vpn.server-options.block"}),c.push(2)),e&&e.flag===_n.Blocked&&(l.push({icon:"thumb_up",label:"vpn.server-options.unblock"}),c.push(-2)),e&&e.inHistory&&(l.push({icon:"delete",label:"vpn.server-options.remove-from-history"}),c.push(-3)),ao.openDialog(a,l,"common.options").afterClosed().pipe(It(f=>{if(f){const m=o.getSavedVersion(e.pk,!0);if(e=m||e,c[f-=1]>200){if(201===c[f]){let g=!1;const _=Rt.createConfirmationDialog(a,"vpn.server-options.connect-without-password-confirmation");return _.componentInstance.operationAccepted.subscribe(()=>{g=!0,t.processServerChange(i,r,o,s,a,null,t.currentPk,e,null,null,null),_.componentInstance.closeModal()}),_.afterClosed().pipe(Se(()=>g))}return sV.openDialog(a,!1).afterClosed().pipe(Se(g=>!(!g||"-"===g||(t.processServerChange(i,r,o,s,a,null,t.currentPk,e,null,null,g.substr(1)),0))))}if(c[f]>100)return o_e.openDialog(a,{editName:101===c[f],server:e}).afterClosed();if(1===c[f])return t.makeFavorite(e,o,s,a);if(-1===c[f])return o.changeFlag(e,_n.None),s.showDone("vpn.server-options.remove-from-favorites-done"),ae(!0);if(2===c[f])return t.blockServer(e,o,r,s,a);if(-2===c[f])return o.changeFlag(e,_n.None),s.showDone("vpn.server-options.unblock-done"),ae(!0);if(-3===c[f])return t.removeFromHistory(e,o,s,a)}return ae(!1)}))}static removeFromHistory(e,i,o,r){let s=!1;const a=Rt.createConfirmationDialog(r,"vpn.server-options.remove-from-history-confirmation");return a.componentInstance.operationAccepted.subscribe(()=>{s=!0,i.removeFromHistory(e.pk),o.showDone("vpn.server-options.remove-from-history-done"),a.componentInstance.closeModal()}),a.afterClosed().pipe(Se(()=>s))}static makeFavorite(e,i,o,r){if(e.flag!==_n.Blocked)return i.changeFlag(e,_n.Favorite),o.showDone("vpn.server-options.make-favorite-done"),ae(!0);let s=!1;const a=Rt.createConfirmationDialog(r,"vpn.server-options.make-favorite-confirmation");return a.componentInstance.operationAccepted.subscribe(()=>{s=!0,i.changeFlag(e,_n.Favorite),o.showDone("vpn.server-options.make-favorite-done"),a.componentInstance.closeModal()}),a.afterClosed().pipe(Se(()=>s))}static blockServer(e,i,o,r,s){if(e.flag!==_n.Favorite&&(!i.currentServer||i.currentServer.pk!==e.pk))return i.changeFlag(e,_n.Blocked),r.showDone("vpn.server-options.block-done"),ae(!0);let a=!1;const l=i.currentServer&&i.currentServer.pk===e.pk;let c;c=e.flag!==_n.Favorite?"vpn.server-options.block-selected-confirmation":l?"vpn.server-options.block-selected-favorite-confirmation":"vpn.server-options.block-confirmation";const f=Rt.createConfirmationDialog(s,c);return f.componentInstance.operationAccepted.subscribe(()=>{a=!0,i.changeFlag(e,_n.Blocked),r.showDone("vpn.server-options.block-done"),l&&o.stop(),f.componentInstance.closeModal()}),f.afterClosed().pipe(Se(()=>a))}}return t})(),s_e=(()=>{class t{constructor(e){this.clipboardService=e,this.copyEvent=new we,this.errorEvent=new we,this.value=""}ngOnDestroy(){this.copyEvent.complete(),this.errorEvent.complete()}copyToClipboard(){this.clipboardService.copy(this.value)?this.copyEvent.emit(this.value):this.errorEvent.emit()}static{this.\u0275fac=function(i){return new(i||t)(O(np))}}static{this.\u0275dir=de({type:t,selectors:[["","clipboard",""]],hostBindings:function(i,o){1&i&&F("click",function(){return o.copyToClipboard()})},inputs:{value:[0,"clipboard","value"]},outputs:{copyEvent:"copyEvent",errorEvent:"errorEvent"},standalone:!1})}}return t})();const a_e=()=>({"tooltip-word-break":!0});function l_e(t,n){if(1&t&&(h(0,"span",1),p(1),u()),2&t){const e=v();d(),M(e.shortText)}}function c_e(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v();d(),M(e.text)}}let aV=(()=>{class t{constructor(){this.short=!1,this.showTooltip=!0,this.shortTextLength=5}get shortText(){if(this.text.length>2*this.shortTextLength){const e=this.text.length;return`${this.text.slice(0,this.shortTextLength)}...${this.text.slice(e-this.shortTextLength,e)}`}return this.text}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=re({type:t,selectors:[["app-truncated-text"]],inputs:{short:"short",showTooltip:"showTooltip",text:"text",shortTextLength:"shortTextLength"},standalone:!1,decls:3,vars:5,consts:[[1,"wrapper",3,"matTooltip","matTooltipClass"],[1,"nowrap"]],template:function(i,o){1&i&&(h(0,"div",0),x(1,l_e,2,1,"span",1),x(2,c_e,2,1,"span"),u()),2&i&&(C("matTooltip",o.short&&o.showTooltip?o.text:"")("matTooltipClass",Ct(4,a_e)),d(),S(o.short?1:-1),d(),S(o.short?-1:2))},dependencies:[Kt],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.nowrap[_ngcontent-%COMP%]{white-space:nowrap}.wrapper[_ngcontent-%COMP%]{display:inline}']})}}return t})();const d_e=t=>({text:t}),u_e=()=>({"tooltip-word-break":!0});function h_e(t,n){if(1&t&&(B(0,"app-truncated-text",2),h(1,"mat-icon",3),p(2,"filter_none"),u()),2&t){const e=v();C("short",e.short)("showTooltip",!1)("shortTextLength",e.shortTextLength)("text",e.text),d(),C("inline",!0)}}function f_e(t,n){if(1&t&&(h(0,"div",1)(1,"div",4),p(2),u(),h(3,"mat-icon",3),p(4,"filter_none"),u()()),2&t){const e=v();d(2),M(e.text),d(),C("inline",!0)}}let op=(()=>{class t{constructor(e){this.snackbarService=e,this.short=!1,this.shortSimple=!1,this.shortTextLength=5}onCopyToClipboardClicked(){this.snackbarService.showDone("copy.copied")}static{this.\u0275fac=function(i){return new(i||t)(O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-copy-to-clipboard-text"]],inputs:{text:"text",short:"short",shortSimple:"shortSimple",shortTextLength:"shortTextLength"},standalone:!1,decls:4,vars:11,consts:[[1,"wrapper","highlight-internal-icon",3,"copyEvent","clipboard","matTooltip","matTooltipClass"],[1,"d-flex"],[1,"text-margin",3,"short","showTooltip","shortTextLength","text"],[3,"inline"],[1,"single-line","text-margin"]],template:function(i,o){1&i&&(h(0,"div",0),b(1,"translate"),F("copyEvent",function(){return o.onCopyToClipboardClicked()}),x(2,h_e,3,5),x(3,f_e,5,2,"div",1),u()),2&i&&(C("clipboard",o.text)("matTooltip",pe(1,5,o.short||o.shortSimple?"copy.tooltip-with-text":"copy.tooltip",se(8,d_e,o.text)))("matTooltipClass",Ct(10,u_e)),d(2),S(o.shortSimple?-1:2),d(),S(o.shortSimple?3:-1))},dependencies:[We,Kt,s_e,aV,xe],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.wrapper[_ngcontent-%COMP%]{display:inline}.wrapper[_ngcontent-%COMP%] .text-margin[_ngcontent-%COMP%]{margin-right:5px}.wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:.6rem;-webkit-user-select:none;user-select:none;flex-shrink:0;display:inline!important}']})}}return t})();var fc=function(t){return t[t.Seconds=0]="Seconds",t[t.Minutes=1]="Minutes",t[t.Hours=2]="Hours",t[t.Days=3]="Days",t[t.Weeks=4]="Weeks",t}(fc||{});class p_e{}class gv{static getElapsedTime(n){const e=new p_e;e.timeRepresentation=fc.Seconds,e.totalMinutes=Math.floor(n/60).toString(),e.translationVarName="second";let i=1;n>=60&&n<3600?(e.timeRepresentation=fc.Minutes,i=60,e.translationVarName="minute"):n>=3600&&n<86400?(e.timeRepresentation=fc.Hours,i=3600,e.translationVarName="hour"):n>=86400&&n<604800?(e.timeRepresentation=fc.Days,i=86400,e.translationVarName="day"):n>=604800&&(e.timeRepresentation=fc.Weeks,i=604800,e.translationVarName="week");const o=Math.floor(n/i);return e.elapsedTime=o.toString(),(e.timeRepresentation===fc.Seconds||o>1)&&(e.translationVarName=e.translationVarName+"s"),e}}const m_e=t=>({"grey-button-background":t}),lV=t=>({time:t});function g_e(t,n){1&t&&B(0,"mat-spinner",2),2&t&&C("diameter",14)}function __e(t,n){1&t&&B(0,"mat-spinner",3),2&t&&C("diameter",18)}function b_e(t,n){1&t&&(h(0,"mat-icon",5),p(1,"refresh"),u()),2&t&&C("inline",!0)}function v_e(t,n){1&t&&(h(0,"mat-icon",6),p(1,"warning"),u()),2&t&&C("inline",!0)}function y_e(t,n){if(1&t&&(x(0,b_e,2,1,"mat-icon",5),x(1,v_e,2,1,"mat-icon",6)),2&t){const e=v();S(e.showAlert?-1:0),d(),S(e.showAlert?1:-1)}}function C_e(t,n){if(1&t&&(h(0,"span",4),p(1),b(2,"translate"),u()),2&t){const e=v();d(),M(pe(2,1,"refresh-button."+e.elapsedTime.translationVarName,se(4,lV,e.elapsedTime.elapsedTime)))}}let w_e=(()=>{class t{constructor(){this.refeshRate=-1}set secondsSinceLastUpdate(e){this.elapsedTime=gv.getElapsedTime(e)}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=re({type:t,selectors:[["app-refresh-button"]],inputs:{secondsSinceLastUpdate:"secondsSinceLastUpdate",showLoading:"showLoading",showAlert:"showAlert",refeshRate:"refeshRate"},standalone:!1,decls:7,vars:14,consts:[["mat-button","",1,"time-button","subtle-transparent-button","white-theme",3,"disabled","ngClass","matTooltip"],[1,"internal-container"],[1,"icon","d-none","d-md-inline-block",3,"diameter"],[1,"icon","d-md-none",3,"diameter"],[1,"d-none","d-md-inline"],[1,"icon",3,"inline"],[1,"icon","alert",3,"inline"]],template:function(i,o){1&i&&(h(0,"button",0),b(1,"translate"),h(2,"div",1),x(3,g_e,1,1,"mat-spinner",2),x(4,__e,1,1,"mat-spinner",3),x(5,y_e,2,2),x(6,C_e,3,6,"span",4),u()()),2&i&&(C("disabled",o.showLoading)("ngClass",se(10,m_e,!o.showLoading))("matTooltip",o.showAlert?pe(1,7,"refresh-button.error-tooltip",se(12,lV,o.refeshRate)):""),d(3),S(o.showLoading?3:-1),d(),S(o.showLoading?4:-1),d(),S(o.showLoading?-1:5),d(),S(o.elapsedTime?6:-1))},dependencies:[$t,Pn,We,Kt,so,xe],styles:[".time-button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px;height:40px}.time-button[disabled][_ngcontent-%COMP%]{opacity:.7!important;color:#f8f9f9}.time-button[disabled][_ngcontent-%COMP%] span[_ngcontent-%COMP%]{opacity:.7}.time-button[_ngcontent-%COMP%] .internal-container[_ngcontent-%COMP%]{display:flex;align-items:center}.time-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:16px;margin-right:5px;opacity:.5;display:inline-block}@media(max-width:767px){.time-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:22px;margin-right:0;opacity:.75}}.time-button[_ngcontent-%COMP%] .alert[_ngcontent-%COMP%]{color:orange;opacity:1}.time-button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:.6rem}"]})}}return t})(),rp=(()=>{class t{static{this.accumulatedMeasurements=["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}static{this.measurementsPerSec=["B/s","KB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"]}static{this.accumulatedMeasurementsInBits=["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"]}static{this.measurementsPerSecInBits=["b/s","Kb/s","Mb/s","Gb/s","Tb/s","Pb/s","Eb/s","Zb/s","Yb/s"]}transform(e,i){let r,o=!0;i?i.showPerSecond?i.useBits?(r=t.measurementsPerSecInBits,o=!1):r=t.measurementsPerSec:i.useBits?(r=t.accumulatedMeasurementsInBits,o=!1):r=t.accumulatedMeasurements:r=t.accumulatedMeasurements;let s=new bk(e);o||(s=s.multipliedBy(8));let a=r[0],l=0;for(;s.dividedBy(1024).isGreaterThan(1);)s=s.dividedBy(1024),l+=1,a=r[l];let c="";return(!i||i.showValue)&&(c=i&&i.limitDecimals?new bk(s).decimalPlaces(1).toString():s.toFixed(2)),(!i||i.showValue&&i.showUnit)&&(c+=" "),(!i||i.showUnit)&&(c+=a),c}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275pipe=Hi({name:"autoScale",type:t,pure:!0,standalone:!1})}}return t})();const cV=(t,n)=>({"d-lg-none":t,"d-none":n}),x_e=t=>({"normal-height":t}),S_e=(t,n)=>({"d-none d-lg-flex":t,"d-flex":n}),k_e=t=>({transparent:t}),D_e=(t,n)=>({"d-lg-none":t,"d-none d-md-inline-block":n}),Dk=(t,n)=>({"mouse-disabled":t,"grey-button-background":n}),M_e=t=>({"d-none":t}),T_e=(t,n)=>({"animation-container":t,"d-none":n}),E_e=t=>({time:t}),dV=t=>({showValue:!0,showUnit:!0,showPerSecond:!0,useBits:t});function P_e(t,n){if(1&t){const e=oe();h(0,"button",21),F("click",function(){return j(e),U(v().requestAction(null))}),h(1,"mat-icon"),p(2,"chevron_left"),u()()}}function I_e(t,n){if(1&t&&(h(0,"span",5),p(1),u()),2&t){const e=v();d(),M(e.pageHeaderLabel)}}function O_e(t,n){if(1&t&&(p(0),b(1,"translate")),2&t){const e=v();E(" ",y(1,1,e.titleParts[e.titleParts.length-1])," ")}}function A_e(t,n){1&t&&B(0,"img",6)}function R_e(t,n){if(1&t){const e=oe();h(0,"div",23),F("click",function(){const o=j(e).$implicit;return U(v(2).requestAction(o.actionName))}),h(1,"mat-icon",24),p(2),u(),p(3),b(4,"translate"),u()}if(2&t){const e=n.$implicit;C("disabled",e.disabled),d(),C("ngClass",se(6,k_e,e.disabled)),d(),M(e.icon),d(),E(" ",y(4,4,e.name)," ")}}function F_e(t,n){1&t&&B(0,"div",10)}function N_e(t,n){if(1&t&&(ve(0,R_e,5,8,"div",22,Fe),x(2,F_e,1,0,"div",10)),2&t){const e=v();ye(e.optionsData),d(2),S(e.returnText?2:-1)}}function L_e(t,n){1&t&&B(0,"div",10)}function B_e(t,n){1&t&&B(0,"img",26),2&t&&C("src","assets/img/lang/"+v(2).language.iconName,mo)}function V_e(t,n){if(1&t){const e=oe();h(0,"div",25),F("click",function(){return j(e),U(v().openLanguageWindow())}),x(1,B_e,1,1,"img",26),p(2),b(3,"translate"),u()}if(2&t){const e=v();d(),S(e.language?1:-1),d(),E(" ",y(3,2,e.language?e.language.name:"")," ")}}function H_e(t,n){if(1&t){const e=oe();h(0,"div",15)(1,"a",27),b(2,"translate"),F("click",function(){return j(e),U(v().requestAction(null))}),h(3,"mat-icon",28),p(4,"chevron_left"),u()()()}if(2&t){const e=v();d(),C("matTooltip",y(2,2,e.returnText)),d(2),C("inline",!0)}}function j_e(t,n){if(1&t&&(h(0,"span",31),p(1),u()),2&t){const e=v(3);d(),M(e.pageHeaderLabel)}}function U_e(t,n){1&t&&B(0,"app-copy-to-clipboard-text",32),2&t&&C("text",Qt(v(3).pageHeaderIdentifier))("short",!1)}function z_e(t,n){if(1&t&&(h(0,"span",29),x(1,j_e,2,1,"span",31),x(2,U_e,1,3,"app-copy-to-clipboard-text",32),u()),2&t){const e=v(2);d(),S(e.pageHeaderLabel?1:-1),d(),S(e.pageHeaderIdentifier?2:-1)}}function $_e(t,n){if(1&t&&(h(0,"span",30),p(1),b(2,"translate"),u()),2&t){const e=v(2);d(),E(" ",y(2,1,e.titleParts[e.titleParts.length-1])," ")}}function W_e(t,n){if(1&t&&x(0,z_e,3,2,"span",29)(1,$_e,3,3,"span",30),2&t){const e=v();S(e.pageHeaderLabel||e.pageHeaderIdentifier?0:1)}}function G_e(t,n){1&t&&B(0,"img",16)}function q_e(t,n){1&t&&B(0,"span",33)}function K_e(t,n){if(1&t&&(h(0,"a",34)(1,"mat-icon",28),p(2),u(),h(3,"span"),p(4),b(5,"translate"),u()()),2&t){const e=v().$implicit,i=v();C("href",e.externalUrl,mo)("ngClass",_t(7,Dk,i.disableMouse,!i.disableMouse)),d(),C("inline",!0),d(),M(e.icon),d(2),M(y(5,5,e.label))}}function Y_e(t,n){if(1&t&&(h(0,"a",35)(1,"mat-icon",28),p(2),u(),h(3,"span"),p(4),b(5,"translate"),u()()),2&t){const e=v(),i=e.$implicit,o=e.$index,r=v();C("disabled",o===r.selectedTabIndex)("routerLink",i.linkParts)("ngClass",_t(8,Dk,r.disableMouse,!r.disableMouse&&o!==r.selectedTabIndex)),d(),C("inline",!0),d(),M(i.icon),d(2),M(y(5,6,i.label))}}function X_e(t,n){if(1&t&&(x(0,q_e,1,0,"span",33),h(1,"div",24),x(2,K_e,6,10,"a",34),x(3,Y_e,6,11,"a",35),u()),2&t){const e=n.$implicit,i=n.$index,o=v();S(i>0&&o.tabsData[i-1].group!==e.group?0:-1),d(),C("ngClass",_t(4,D_e,e.onlyIfLessThanLg,1!==o.tabsData.length)),d(),S(e.externalUrl?2:-1),d(),S(e.externalUrl?-1:3)}}function Z_e(t,n){if(1&t){const e=oe();h(0,"div",18)(1,"button",36),F("click",function(){return j(e),U(v().openTabSelector())}),h(2,"div",37)(3,"mat-icon",28),p(4),u(),h(5,"span"),p(6),b(7,"translate"),u(),h(8,"mat-icon",28),p(9,"keyboard_arrow_down"),u()()()()}if(2&t){const e=v();C("ngClass",se(8,M_e,1===e.tabsData.length)),d(),C("ngClass",_t(10,Dk,e.disableMouse,!e.disableMouse)),d(2),C("inline",!0),d(),M(e.tabsData[e.selectedTabIndex].icon),d(2),M(y(7,6,e.tabsData[e.selectedTabIndex].label)),d(2),C("inline",!0)}}function Q_e(t,n){if(1&t){const e=oe();h(0,"app-refresh-button",41),F("click",function(){return j(e),U(v(2).sendRefreshEvent())}),u()}if(2&t){const e=v(2);C("secondsSinceLastUpdate",e.secondsSinceLastUpdate)("showLoading",e.showLoading)("showAlert",e.showAlert)("refeshRate",e.refeshRate)}}function J_e(t,n){if(1&t&&(h(0,"div",19),x(1,Q_e,1,4,"app-refresh-button",38),h(2,"button",39)(3,"div",40)(4,"mat-icon",28),p(5,"menu"),u()()()()),2&t){const e=v(),i=Hn(13);d(),S(e.showUpdateButton?1:-1),d(),C("matMenuTriggerFor",i),d(2),C("inline",!0)}}function ebe(t,n){if(1&t){const e=oe();h(0,"div",43)(1,"div",49),F("click",function(){return j(e),U(v(2).openLanguageWindow())}),B(2,"img",50),p(3),b(4,"translate"),u()()}if(2&t){const e=v(2);d(2),C("src","assets/img/lang/"+e.language.iconName,mo),d(),E(" ",y(4,2,e.language?e.language.name:"")," ")}}function tbe(t,n){1&t&&(h(0,"div",45),b(1,"translate"),h(2,"mat-icon",28),p(3,"warning"),u(),p(4),b(5,"translate"),u()),2&t&&(C("matTooltip",y(1,3,"vpn.connection-error.info")),d(2),C("inline",!0),d(2),E(" ",y(5,5,"vpn.connection-error.text")," "))}function nbe(t,n){1&t&&(h(0,"div",55)(1,"mat-icon",54),p(2,"brightness_1"),u()()),2&t&&(d(),C("inline",!0))}function ibe(t,n){if(1&t&&(h(0,"table",47)(1,"tr")(2,"td",51),b(3,"translate"),h(4,"div",24)(5,"div",52)(6,"div",53)(7,"mat-icon",54),p(8,"brightness_1"),u(),p(9),b(10,"translate"),u()()(),x(11,nbe,3,1,"div",55),h(12,"mat-icon",54),p(13,"brightness_1"),u(),p(14),b(15,"translate"),u(),h(16,"td",51),b(17,"translate"),h(18,"mat-icon",28),p(19,"swap_horiz"),u(),p(20),b(21,"translate"),u()(),h(22,"tr")(23,"td",51),b(24,"translate"),h(25,"mat-icon",28),p(26,"arrow_upward"),u(),p(27),b(28,"autoScale"),u(),h(29,"td",51),b(30,"translate"),h(31,"mat-icon",28),p(32,"arrow_downward"),u(),p(33),b(34,"autoScale"),u()()()),2&t){const e=v(2);d(2),Ze(e.vpnData.stateClass+" state-td"),C("matTooltip",y(3,18,e.vpnData.state+"-info")),d(2),C("ngClass",_t(39,T_e,e.showVpnStateAnimation,!e.showVpnStateAnimation)),d(3),C("inline",!0),d(2),E(" ",y(10,20,e.vpnData.state)," "),d(2),S(e.showVpnStateAnimatedDot?11:-1),d(),C("inline",!0),d(2),E(" ",y(15,22,e.vpnData.state)," "),d(2),C("matTooltip",y(17,24,"vpn.connection-info.latency-info")),d(2),C("inline",!0),d(2),E(" ",pe(21,26,"common."+e.getLatencyValueString(e.vpnData.latency),se(42,E_e,e.getPrintableLatency(e.vpnData.latency)))," "),d(3),C("matTooltip",y(24,29,"vpn.connection-info.upload-info")),d(2),C("inline",!0),d(2),E(" ",pe(28,31,e.vpnData.uploadSpeed,se(44,dV,e.showVpnDataStatsInBits))," "),d(2),C("matTooltip",y(30,34,"vpn.connection-info.download-info")),d(2),C("inline",!0),d(2),E(" ",pe(34,36,e.vpnData.downloadSpeed,se(46,dV,e.showVpnDataStatsInBits))," ")}}function obe(t,n){1&t&&B(0,"mat-spinner",48),2&t&&C("diameter",20)}function rbe(t,n){if(1&t&&(h(0,"div")(1,"div",42),x(2,ebe,5,4,"div",43),B(3,"div",44),x(4,tbe,6,7,"div",45),u(),h(5,"div",46),x(6,ibe,35,48,"table",47),x(7,obe,1,1,"mat-spinner",48),u()()),2&t){const e=v();d(2),S(!e.hideLanguageButton&&e.language?2:-1),d(2),S(e.errorsConnectingToVpn?4:-1),d(2),S(e.vpnData?6:-1),d(),S(e.vpnData?-1:7)}}function sbe(t,n){1&t&&(h(0,"div",20)(1,"div",56)(2,"mat-icon",28),p(3,"error_outline"),u(),p(4),b(5,"translate"),u(),h(6,"div",57),p(7),b(8,"translate"),u()()),2&t&&(d(2),C("inline",!0),d(2),E(" ",y(5,3,"vpn.remote-access-title")," "),d(3),E(" ",y(8,5,"vpn.remote-access-text")," "))}let Mr=(()=>{class t{set localVpnKey(e){this.localVpnKeyInternal=e,e?this.startGettingVpnInfo():this.stopGettingVpnInfo()}constructor(e,i,o,r,s){this.languageService=e,this.dialog=i,this.router=o,this.vpnClientService=r,this.vpnSavedDataService=s,this.disableMouse=!1,this.selectedTabIndex=0,this.refeshRate=-1,this.showUpdateButton=!0,this.localVpnKeyInternal="",this.refreshRequested=new we,this.optionSelected=new we,this.hideLanguageButton=!0,this.showVpnInfo=!1,this.initialVpnStateObtained=!1,this.lastVpnState="",this.showVpnStateAnimation=!1,this.showVpnStateAnimatedDot=!0,this.showVpnDataStatsInBits=!0,this.remoteAccess=!1,this.errorsConnectingToVpn=!1,this.langSubscriptionsGroup=[]}ngOnInit(){this.langSubscriptionsGroup.push(this.languageService.currentLanguage.subscribe(i=>{this.language=i})),this.langSubscriptionsGroup.push(this.languageService.languages.subscribe(i=>{this.hideLanguageButton=!(i.length>1)}));const e=window.location.hostname;!e.toLowerCase().includes("localhost")&&!e.toLowerCase().includes("127.0.0.1")&&(this.remoteAccess=!0)}ngOnDestroy(){this.langSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.refreshRequested.complete(),this.optionSelected.complete(),this.stopGettingVpnInfo()}startGettingVpnInfo(){this.showVpnInfo=!0,this.vpnClientService.initialize(this.localVpnKeyInternal),this.updateVpnDataStatsUnit(),this.vpnDataSubscription=this.vpnClientService.backendState.subscribe(e=>{e&&(this.vpnData={state:"",stateClass:"",latency:e.vpnClientAppData.connectionData?e.vpnClientAppData.connectionData.latency:0,downloadSpeed:e.vpnClientAppData.connectionData?e.vpnClientAppData.connectionData.downloadSpeed:0,uploadSpeed:e.vpnClientAppData.connectionData?e.vpnClientAppData.connectionData.uploadSpeed:0},e.vpnClientAppData.appState===an.Stopped?(this.vpnData.state="vpn.connection-info.state-disconnected",this.vpnData.stateClass="red-clear-text"):e.vpnClientAppData.appState===an.Connecting?(this.vpnData.state="vpn.connection-info.state-connecting",this.vpnData.stateClass="yellow-clear-text"):e.vpnClientAppData.appState===an.Running?(this.vpnData.state="vpn.connection-info.state-connected",this.vpnData.stateClass="green-clear-text"):e.vpnClientAppData.appState===an.ShuttingDown?(this.vpnData.state="vpn.connection-info.state-disconnecting",this.vpnData.stateClass="yellow-clear-text"):e.vpnClientAppData.appState===an.Reconnecting&&(this.vpnData.state="vpn.connection-info.state-reconnecting",this.vpnData.stateClass="yellow-clear-text"),this.initialVpnStateObtained?this.lastVpnState!==this.vpnData.state&&(this.lastVpnState=this.vpnData.state,this.showVpnStateAnimation=!1,this.showVpnStateChangeAnimationSubscription&&this.showVpnStateChangeAnimationSubscription.unsubscribe(),this.showVpnStateChangeAnimationSubscription=ae(0).pipe(li(1)).subscribe(()=>this.showVpnStateAnimation=!0)):(this.initialVpnStateObtained=!0,this.lastVpnState=this.vpnData.state),this.showVpnStateAnimatedDot=!1,this.showVpnStateAnimatedDotSubscription&&this.showVpnStateAnimatedDotSubscription.unsubscribe(),this.showVpnStateAnimatedDotSubscription=ae(0).pipe(li(1)).subscribe(()=>this.showVpnStateAnimatedDot=!0))}),this.errorsConnectingToVpnSubscription=this.vpnClientService.errorsConnecting.subscribe(e=>{this.errorsConnectingToVpn=e})}stopGettingVpnInfo(){this.showVpnInfo=!1,this.vpnDataSubscription&&this.vpnDataSubscription.unsubscribe(),this.errorsConnectingToVpnSubscription&&this.errorsConnectingToVpnSubscription.unsubscribe()}getLatencyValueString(e){return hi.getLatencyValueString(e)}getPrintableLatency(e){return hi.getPrintableLatency(e)}requestAction(e){this.optionSelected.emit(e)}openLanguageWindow(){YB.openDialog(this.dialog)}sendRefreshEvent(){this.refreshRequested.emit()}openTabSelector(){const e=[];this.tabsData.forEach(i=>{e.push({label:i.label,icon:i.icon})}),ao.openDialog(this.dialog,e,"tabs-window.title").afterClosed().subscribe(i=>{i&&(i-=1)!==this.selectedTabIndex&&this.router.navigate(this.tabsData[i].linkParts)})}updateVpnDataStatsUnit(){const e=this.vpnSavedDataService.getDataUnitsSetting();this.showVpnDataStatsInBits=e===Zo.BitsSpeedAndBytesVolume||e===Zo.OnlyBits}static{this.\u0275fac=function(i){return new(i||t)(O($b),O(Ot),O(vt),O(hc),O(uc))}}static{this.\u0275cmp=re({type:t,selectors:[["app-top-bar"]],inputs:{disableMouse:"disableMouse",titleParts:"titleParts",pageHeaderLabel:"pageHeaderLabel",pageHeaderIdentifier:"pageHeaderIdentifier",tabsData:"tabsData",selectedTabIndex:"selectedTabIndex",optionsData:"optionsData",returnText:"returnText",secondsSinceLastUpdate:"secondsSinceLastUpdate",showLoading:"showLoading",showAlert:"showAlert",refeshRate:"refeshRate",showUpdateButton:"showUpdateButton",localVpnKey:"localVpnKey"},outputs:{refreshRequested:"refreshRequested",optionSelected:"optionSelected"},standalone:!1,decls:30,vars:29,consts:[["menu","matMenu"],[1,"top-bar",3,"ngClass"],[1,"button-container"],["mat-icon-button","",1,"transparent-button"],[1,"logo-container"],[1,"page-header-label-mobile"],["src","/assets/img/logo-s.png"],["mat-icon-button","",1,"transparent-button",3,"matMenuTriggerFor"],[1,"top-bar-margin",3,"ngClass"],[3,"overlapTrigger"],[1,"menu-separator"],["mat-menu-item",""],[1,"main-container",3,"ngClass"],[1,"main-area"],[1,"title",3,"ngClass"],[1,"return-container"],["src","./assets/img/logo-vpn.png",1,"title-image"],[1,"lower-container"],[1,"d-md-none",3,"ngClass"],[1,"right-container"],[1,"remote-vpn-alert-container"],["mat-icon-button","",1,"transparent-button",3,"click"],["mat-menu-item","",3,"disabled"],["mat-menu-item","",3,"click","disabled"],[3,"ngClass"],["mat-menu-item","",3,"click"],[1,"flag",3,"src"],[1,"return-button","transparent-button",3,"click","matTooltip"],[3,"inline"],[1,"page-header"],[1,"title-text"],[1,"page-header-label"],[1,"page-header-id",3,"text","short"],["aria-hidden","true",1,"tab-group-separator","d-none","d-md-inline-block"],["mat-button","","target","_blank","rel","noreferrer nofollow noopener",1,"tab-button","white-theme",3,"href","ngClass"],["mat-button","",1,"tab-button","white-theme",3,"disabled","routerLink","ngClass"],["mat-button","",1,"tab-button","select-tab-button","white-theme",3,"click","ngClass"],[1,"d-flex"],[3,"secondsSinceLastUpdate","showLoading","showAlert","refeshRate"],["mat-button","",1,"menu-button","subtle-transparent-button","d-none","d-lg-block",3,"matMenuTriggerFor"],[1,"icon-container"],[3,"click","secondsSinceLastUpdate","showLoading","showAlert","refeshRate"],[1,"top-text-vpn-container"],[1,"languaje-button-vpn"],[1,"elements-separator"],[1,"connection-error-msg-vpn","blinking",3,"matTooltip"],[1,"vpn-info","vpn-dark-box-radius"],["cellspacing","0","cellpadding","0"],[3,"diameter"],[1,"text-container",3,"click"],[1,"language-flag",3,"src"],[3,"matTooltip"],[1,"internal-animation-container"],[1,"animation-area"],[1,"state-icon",3,"inline"],[1,"aminated-state-icon-container"],[1,"top-line"],[1,"bottom-line"]],template:function(i,o){if(1&i&&(h(0,"div",1)(1,"div",2),x(2,P_e,3,0,"button",3),u(),h(3,"div",4),x(4,I_e,2,1,"span",5)(5,O_e,2,3)(6,A_e,1,0,"img",6),u(),h(7,"div",2)(8,"button",7)(9,"mat-icon"),p(10,"menu"),u()()()(),B(11,"div",8),h(12,"mat-menu",9,0),x(14,N_e,3,1),x(15,L_e,1,0,"div",10),x(16,V_e,4,4,"div",11),u(),h(17,"div",12)(18,"div",13)(19,"div",14),x(20,H_e,5,4,"div",15),x(21,W_e,2,1),x(22,G_e,1,0,"img",16),u(),h(23,"div",17),ve(24,X_e,4,7,null,null,Fe),x(26,Z_e,10,13,"div",18),x(27,J_e,6,3,"div",19),u()(),x(28,rbe,8,4,"div"),u(),x(29,sbe,9,7,"div",20)),2&i){const r=Hn(13);C("ngClass",_t(18,cV,!o.showVpnInfo,o.showVpnInfo)),d(2),S(o.returnText?2:-1),d(2),S(o.pageHeaderLabel?4:o.titleParts&&o.titleParts.length>=2?5:6),d(4),C("matMenuTriggerFor",r),d(3),C("ngClass",_t(21,cV,!o.showVpnInfo,o.showVpnInfo)),d(),C("overlapTrigger",!1),d(2),S(o.optionsData&&o.optionsData.length>=1?14:-1),d(),S(!o.hideLanguageButton&&o.optionsData&&o.optionsData.length>=1?15:-1),d(),S(o.hideLanguageButton?-1:16),d(),C("ngClass",se(24,x_e,!o.showVpnInfo)),d(2),C("ngClass",_t(26,S_e,!o.showVpnInfo,o.showVpnInfo)),d(),S(o.returnText?20:-1),d(),S(o.showVpnInfo?-1:21),d(),S(o.showVpnInfo?22:-1),d(2),ye(o.tabsData),d(2),S(o.tabsData&&o.tabsData[o.selectedTabIndex]?26:-1),d(),S(o.showVpnInfo?-1:27),d(),S(o.showVpnInfo?28:-1),d(),S(o.showVpnInfo&&o.remoteAccess?29:-1)}},dependencies:[$t,Is,Pn,Wo,We,Kt,Jr,As,vu,so,op,w_e,xe,rp],styles:["@media(max-width:991px){.normal-height[_ngcontent-%COMP%]{height:55px!important}}.main-container[_ngcontent-%COMP%]{border-bottom:1px solid rgba(255,255,255,.15);padding-bottom:10px;margin-bottom:-5px;height:100px;display:flex}.main-container[_ngcontent-%COMP%] .main-area[_ngcontent-%COMP%]{flex-grow:1}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:.875rem;margin-bottom:15px;margin-left:5px;flex-direction:row;align-items:center}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .title-text[_ngcontent-%COMP%]{z-index:1}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .title-image[_ngcontent-%COMP%]{width:124px;height:21px}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .return-container[_ngcontent-%COMP%]{width:30px;position:relative;top:2px}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .return-container[_ngcontent-%COMP%] .return-button[_ngcontent-%COMP%]{line-height:1;font-size:25px;position:relative;top:2px;width:100%;margin-right:4px;cursor:pointer}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;align-items:center;gap:2px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-group-separator[_ngcontent-%COMP%]{width:1px;height:20px;background:#fff3;margin:0 8px;align-self:center}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{flex:0 0 auto;min-width:0}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px;opacity:.5;margin-right:0;text-decoration:none;height:40px;display:flex;align-items:center}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%]:hover{opacity:.75}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[disabled][_ngcontent-%COMP%]{opacity:1!important;color:#f8f9f9;background:#000000b3!important}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{margin-right:2px;opacity:.75;font-size:18px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:1rem;margin:0 4px;position:relative;top:-1px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .select-tab-button[_ngcontent-%COMP%]{opacity:.75!important}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .select-tab-button[_ngcontent-%COMP%]:hover{opacity:1!important}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%]{display:flex;align-items:center;margin-left:auto}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] app-refresh-button[_ngcontent-%COMP%]{align-self:flex-end}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%]{height:32px;width:32px;min-width:0px!important;background-color:#f8f9f9;border-radius:100%;padding:0!important;line-height:normal;color:#929292;font-size:20px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%] .icon-container[_ngcontent-%COMP%]{display:flex;place-content:center}.menu-separator[_ngcontent-%COMP%]{width:100%;height:1px;background-color:#0000001f}.flag[_ngcontent-%COMP%]{width:24px;margin-right:16px}.transparent[_ngcontent-%COMP%]{opacity:.5}.top-bar[_ngcontent-%COMP%]{position:fixed;z-index:10;width:100%;height:56px;background-color:#f8f9f9;top:0;left:0;right:0;color:#202226;display:flex}.top-bar[_ngcontent-%COMP%] .logo-container[_ngcontent-%COMP%]{flex-grow:1;display:flex;justify-content:center;align-items:center}.top-bar[_ngcontent-%COMP%] .logo-container[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{height:28px}.top-bar[_ngcontent-%COMP%] .button-container[_ngcontent-%COMP%]{flex-shrink:0;width:56px}.top-bar[_ngcontent-%COMP%] .button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:56px;height:56px}.top-bar-margin[_ngcontent-%COMP%]{margin-top:56px;flex-shrink:0}.vpn-info[_ngcontent-%COMP%]{font-size:.7rem;background:#000000b3;padding:15px 20px;align-self:center}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] .state-td[_ngcontent-%COMP%]{font-weight:700}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:2px 0;min-width:90px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:3px;font-size:12px;position:relative;top:1px;-webkit-user-select:none;user-select:none;width:auto;line-height:1}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .state-icon[_ngcontent-%COMP%]{transform:scale(.75)}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .aminated-state-icon-container[_ngcontent-%COMP%]{width:0px;height:0px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .aminated-state-icon-container[_ngcontent-%COMP%] .state-icon[_ngcontent-%COMP%]{height:auto;animation:_ngcontent-%COMP%_state-icon-animation 1s linear 1}@keyframes _ngcontent-%COMP%_state-icon-animation{0%{transform:perspective(1px) scale(1);opacity:.8}to{transform:scale(2);opacity:0}}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .animation-container[_ngcontent-%COMP%]{width:0px;height:0px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .animation-container[_ngcontent-%COMP%] .internal-animation-container[_ngcontent-%COMP%]{width:200px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .animation-container[_ngcontent-%COMP%] .internal-animation-container[_ngcontent-%COMP%] .animation-area[_ngcontent-%COMP%]{display:inline-block;animation:_ngcontent-%COMP%_state-animation 1s linear 1;opacity:0}@keyframes _ngcontent-%COMP%_state-animation{0%{transform:scale(1);opacity:1}to{transform:scale(2.5);opacity:0}}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-of-type{padding-right:30px}.vpn-info[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.top-text-vpn-container[_ngcontent-%COMP%]{display:flex;flex-direction:row-reverse;font-size:.6rem}.top-text-vpn-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:3px}.top-text-vpn-container[_ngcontent-%COMP%] .connection-error-msg-vpn[_ngcontent-%COMP%]{margin:-5px 5px 5px 10px;color:orange}.top-text-vpn-container[_ngcontent-%COMP%] .elements-separator[_ngcontent-%COMP%]{flex-grow:1}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%]{margin:-5px 10px 5px 0}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{cursor:pointer;display:inline;opacity:.8}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]:hover{opacity:1}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .language-flag[_ngcontent-%COMP%]{width:11px;height:11px;margin-right:2px}.remote-vpn-alert-container[_ngcontent-%COMP%]{background-color:#da3439;margin:0 -21px;padding:10px 20px 15px;text-align:center}.remote-vpn-alert-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:14px}.remote-vpn-alert-container[_ngcontent-%COMP%] .top-line[_ngcontent-%COMP%]{font-size:1.25rem}.remote-vpn-alert-container[_ngcontent-%COMP%] .bottom-line[_ngcontent-%COMP%]{font-size:.8rem}.page-header[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;line-height:1.1;gap:2px;min-width:0}.page-header-label[_ngcontent-%COMP%]{font-size:18px;font-weight:500;letter-spacing:.2px}.page-header-id[_ngcontent-%COMP%]{display:inline-block;font-size:12px;opacity:.65;font-family:monospace;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-header-label-mobile[_ngcontent-%COMP%]{font-weight:500;font-size:14px}"]})}}return t})();const uV=()=>["start.title"],abe=t=>({"paginator-icons-fixer":t}),hV=()=>["/nodes","rewards"],fV=()=>["/nodes","list"],lbe=()=>({"click-effect":!0}),cbe=t=>["/nodes",t,"rewards"],dbe=(t,n)=>({"click-effect":t,"non-selectable":n}),pV=t=>["/nodes",t],ube=t=>({"selectable click-effect":t}),hbe=(t,n)=>n.type;function fbe(t,n){if(1&t&&(h(0,"div",1)(1,"div"),B(2,"app-top-bar",3),u(),B(3,"app-loading-indicator",4),u()),2&t){const e=v();d(2),C("titleParts",Ct(4,uV))("tabsData",e.tabsData)("selectedTabIndex",e.showRewardsInfo?1:0)("showUpdateButton",!1)}}function pbe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().$implicit.translatableValue)," ")}function mbe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.value," ")}function gbe(t,n){if(1&t&&(h(0,"div",19)(1,"span"),p(2),b(3,"translate"),u(),x(4,pbe,2,3),x(5,mbe,1,1),u()),2&t){const e=n.$implicit;d(2),E("",y(3,3,e.filterName),": "),d(2),S(e.translatableValue?4:-1),d(),S(e.value?5:-1)}}function _be(t,n){if(1&t){const e=oe();h(0,"div",18),F("click",function(){return j(e),U(v(2).dataFilterer.removeFilters())}),ve(1,gbe,6,5,"div",19,Fe),h(3,"div",20),p(4),b(5,"translate"),u()()}if(2&t){const e=v(2);d(),ye(e.dataFilterer.currentFiltersTexts),d(3),M(y(5,1,"filters.press-to-remove"))}}function bbe(t,n){if(1&t){const e=oe();h(0,"mat-icon",21),b(1,"translate"),F("click",function(){return j(e),U(v(2).dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",y(1,2,"filters.filter-action"))}function vbe(t,n){1&t&&(h(0,"mat-icon",13),p(1,"more_horiz"),u()),2&t&&(v(),C("matMenuTriggerFor",Hn(12)))}function ybe(t,n){if(1&t&&B(0,"app-paginator",16),2&t){const e=v(2);C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",e.showRewardsInfo?Ct(4,hV):Ct(5,fV))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function Cbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function wbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function xbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Sbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function kbe(t,n){if(1&t&&(h(0,"th",33),p(1),u()),2&t){const e=n.$implicit;d(),E(" ",e," ")}}function Dbe(t,n){1&t&&(ve(0,kbe,2,1,"th",33,Fe),h(2,"th",34),p(3),b(4,"translate"),u()),2&t&&(ye(v(4).rewardDateHeaders),d(3),E(" ",y(4,1,"nodes.reward-total")," "))}function Mbe(t,n){1&t&&(h(0,"th"),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"nodes.rewards-loading")," "))}function Tbe(t,n){1&t&&(h(0,"mat-icon",35),b(1,"translate"),p(2,"star"),u()),2&t&&C("inline",!0)("matTooltip",y(1,2,"nodes.hypervisor-info"))}function Ebe(t,n){if(1&t&&(h(0,"td",33)(1,"span",37),p(2),u()()),2&t){const e=n.$implicit,i=v(2).$implicit,o=v(4);d(),Ze(o.getRewardClass(i.localPk,e)),d(),M(o.getRewardAmount(i.localPk,e))}}function Pbe(t,n){if(1&t&&(ve(0,Ebe,3,3,"td",33,Fe),h(2,"td",34)(3,"span",40),p(4),u()()),2&t){const e=v().$implicit,i=v(4);ye(i.rewardDates),d(4),M(i.getWeekTotal(e.localPk))}}function Ibe(t,n){1&t&&(h(0,"td")(1,"span",37),p(2,"..."),u()())}function Obe(t,n){1&t&&(h(0,"button",39),b(1,"translate"),h(2,"mat-icon",27),p(3,"chevron_right"),u()()),2&t&&(C("matTooltip",y(1,2,"nodes.view-node")),d(2),C("inline",!0))}function Abe(t,n){if(1&t){const e=oe();h(0,"button",38),b(1,"translate"),F("click",function(o){j(e);const r=v().$implicit,s=v(4);return o.stopPropagation(),o.preventDefault(),U(s.deleteNode(r))}),h(2,"mat-icon"),p(3,"close"),u()()}2&t&&C("matTooltip",y(1,1,"nodes.delete-node"))}function Rbe(t,n){if(1&t){const e=oe();h(0,"a",32)(1,"td"),x(2,Tbe,3,4,"mat-icon",35),u(),h(3,"td"),B(4,"span",36),b(5,"translate"),u(),h(6,"td"),p(7),u(),h(8,"td"),p(9),u(),h(10,"td")(11,"span",37),p(12),u()(),x(13,Pbe,5,1),x(14,Ibe,3,0,"td"),h(15,"td",31)(16,"button",38),b(17,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(4);return o.stopPropagation(),o.preventDefault(),U(s.copyToClipboard(r))}),h(18,"mat-icon",27),p(19,"filter_none"),u()(),h(20,"button",38),b(21,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(4);return o.stopPropagation(),o.preventDefault(),U(s.showEditLabelDialog(r))}),h(22,"mat-icon",27),p(23,"short_text"),u()(),x(24,Obe,4,4,"button",39),x(25,Abe,4,3,"button",39),u()()}if(2&t){const e=n.$implicit,i=v(4);C("ngClass",Ct(23,lbe))("routerLink",se(24,cbe,e.localPk)),d(2),S(e.isHypervisor?2:-1),d(2),Ze(i.nodeStatusClass(e,!0)),C("matTooltip",y(5,17,i.nodeStatusText(e,!0))),d(3),E(" ",e.label," "),d(2),E(" ",e.localPk," "),d(3),M(i.getRewardAddress(e.localPk)),d(),S(i.rewardDataLoaded?13:-1),d(),S(i.rewardDataLoading?14:-1),d(2),C("matTooltip",y(17,19,"nodes.copy-key")),d(2),C("inline",!0),d(2),C("matTooltip",y(21,21,"labeled-element.edit-label")),d(2),C("inline",!0),d(2),S(e.online?24:-1),d(),S(e.online?-1:25)}}function Fbe(t,n){if(1&t){const e=oe();h(0,"table",23)(1,"tr")(2,"th",25),b(3,"translate"),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.hypervisorSortData))}),h(4,"mat-icon",26),p(5,"star_outline"),u(),x(6,Cbe,2,2,"mat-icon",27),u(),h(7,"th",25),b(8,"translate"),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.stateSortData))}),B(9,"span",28),x(10,wbe,2,2,"mat-icon",27),u(),h(11,"th",29),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.labelSortData))}),p(12),b(13,"translate"),x(14,xbe,2,2,"mat-icon",27),u(),h(15,"th",30),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.keySortData))}),p(16),b(17,"translate"),x(18,Sbe,2,2,"mat-icon",27),u(),h(19,"th"),p(20),b(21,"translate"),u(),x(22,Dbe,5,3),x(23,Mbe,3,3,"th"),B(24,"th",31),u(),ve(25,Rbe,26,26,"a",32,Fe),u()}if(2&t){const e=v(3);d(2),C("matTooltip",y(3,11,"nodes.hypervisor")),d(4),S(e.dataSorter.currentSortingColumn===e.hypervisorSortData?6:-1),d(),C("matTooltip",y(8,13,"nodes.state-tooltip")),d(3),S(e.dataSorter.currentSortingColumn===e.stateSortData?10:-1),d(2),E(" ",y(13,15,"nodes.label")," "),d(2),S(e.dataSorter.currentSortingColumn===e.labelSortData?14:-1),d(2),E(" ",y(17,17,"nodes.key")," "),d(2),S(e.dataSorter.currentSortingColumn===e.keySortData?18:-1),d(2),E(" ",y(21,19,"nodes.reward-address")," "),d(2),S(e.rewardDataLoaded?22:-1),d(),S(e.rewardDataLoading?23:-1),d(2),ye(e.dataSource)}}function Nbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Lbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Bbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Vbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Hbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function jbe(t,n){1&t&&(h(0,"mat-icon",35),b(1,"translate"),p(2,"star"),u()),2&t&&C("inline",!0)("matTooltip",y(1,2,"nodes.hypervisor-info"))}function Ube(t,n){if(1&t&&(h(0,"div",37),p(1),u(),h(2,"div",37),p(3),u()),2&t){const e=v(2).$implicit;d(),M(e.ip),d(2),M(e.publicIp)}}function zbe(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=v(2).$implicit;d(),M(e.publicIp)}}function $be(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=v(2).$implicit;d(),M(e.ip)}}function Wbe(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=v(2).$implicit;d(),Uh("",e.cityName?e.cityName+", ":"","",e.regionName?e.regionName+", ":"","",e.countryCode)}}function Gbe(t,n){if(1&t&&(x(0,Ube,4,2)(1,zbe,2,1,"div",37)(2,$be,2,1,"div",37),x(3,Wbe,2,3,"div",37)),2&t){const e=v().$implicit;S(e.ip&&e.publicIp&&e.ip!==e.publicIp?0:e.publicIp?1:e.ip?2:-1),d(3),S(e.countryCode?3:-1)}}function qbe(t,n){1&t&&(h(0,"span"),p(1,"-"),u())}function Kbe(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=n.$implicit;d(),gt("",e.type,": ",e.count)}}function Ybe(t,n){if(1&t&&(ve(0,Kbe,2,2,"div",37,hbe),h(2,"div",37),p(3),u()),2&t){const e=v().$implicit;ye(v(4).getTransportCounts(e)),d(3),E("Total: ",e.transports.length)}}function Xbe(t,n){1&t&&(h(0,"span",37),p(1,"Total: 0"),u())}function Zbe(t,n){1&t&&(h(0,"span"),p(1,"-"),u())}function Qbe(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=v().$implicit;d(),M(e.version)}}function Jbe(t,n){if(1&t&&(h(0,"div",37),p(1),b(2,"translate"),u(),h(3,"div",37),p(4),b(5,"translate"),u()),2&t){const e=v().$implicit;d(),gt("",y(2,4,"nodes.visor-version"),": ",e.version||"-"),d(3),gt("",y(5,6,"nodes.config-label"),": ",e.configVersion||"-")}}function eve(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=n.$implicit;d(),M(e)}}function tve(t,n){if(1&t&&ve(0,eve,2,1,"div",37,Fe),2&t){const e=v().$implicit;ye(v(4).getNodeServices(e))}}function nve(t,n){1&t&&(h(0,"span"),p(1,"-"),u())}function ive(t,n){1&t&&(h(0,"mat-icon",41),p(1,"check_circle"),u()),2&t&&C("matTooltip",v().$implicit.rewardsAddress)}function ove(t,n){1&t&&(h(0,"mat-icon",42),b(1,"translate"),p(2,"cancel"),u()),2&t&&C("matTooltip",y(1,1,"nodes.reward-not-set"))}function rve(t,n){1&t&&(h(0,"button",39),b(1,"translate"),h(2,"mat-icon",27),p(3,"chevron_right"),u()()),2&t&&(C("matTooltip",y(1,2,"nodes.view-node")),d(2),C("inline",!0))}function sve(t,n){if(1&t){const e=oe();h(0,"button",38),b(1,"translate"),F("click",function(o){j(e);const r=v().$implicit,s=v(4);return o.stopPropagation(),o.preventDefault(),U(s.deleteNode(r))}),h(2,"mat-icon"),p(3,"close"),u()()}2&t&&C("matTooltip",y(1,1,"nodes.delete-node"))}function ave(t,n){if(1&t){const e=oe();h(0,"a",32)(1,"td"),x(2,jbe,3,4,"mat-icon",35),u(),h(3,"td"),B(4,"span",36),b(5,"translate"),u(),h(6,"td"),p(7),u(),h(8,"td"),x(9,Gbe,4,2),x(10,qbe,2,0,"span"),u(),h(11,"td"),x(12,Ybe,4,1),x(13,Xbe,2,0,"span",37),x(14,Zbe,2,0,"span"),u(),h(15,"td"),p(16),u(),h(17,"td"),x(18,Qbe,2,1,"div",37)(19,Jbe,6,8),u(),h(20,"td"),x(21,tve,2,0),x(22,nve,2,0,"span"),u(),h(23,"td"),x(24,ive,2,1,"mat-icon",41),x(25,ove,3,3,"mat-icon",42),u(),h(26,"td",31)(27,"button",38),b(28,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(4);return o.stopPropagation(),o.preventDefault(),U(s.copyToClipboard(r))}),h(29,"mat-icon",27),p(30,"filter_none"),u()(),h(31,"button",38),b(32,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(4);return o.stopPropagation(),o.preventDefault(),U(s.showEditLabelDialog(r))}),h(33,"mat-icon",27),p(34,"short_text"),u()(),x(35,rve,4,4,"button",39),x(36,sve,4,3,"button",39),u()()}if(2&t){const e=n.$implicit,i=v(4);C("ngClass",_t(30,dbe,e.online,!e.online))("routerLink",e.online?se(33,pV,e.localPk):null),d(2),S(e.isHypervisor?2:-1),d(2),Ze(i.nodeStatusClass(e,!0)),C("matTooltip",y(5,24,i.nodeStatusText(e,!0))),d(3),E(" ",e.label," "),d(2),S(e.ip||e.publicIp||e.countryCode?9:-1),d(),S(e.ip||e.publicIp||e.countryCode?-1:10),d(2),S(e.transports&&e.transports.length>0?12:-1),d(),S(e.transports&&0===e.transports.length?13:-1),d(),S(e.transports?-1:14),d(2),E(" ",e.localPk," "),d(2),S(e.version&&e.configVersion&&e.version===e.configVersion?18:19),d(3),S(i.getNodeServices(e).length>0?21:-1),d(),S(0===i.getNodeServices(e).length?22:-1),d(2),S(e.rewardsAddress?24:-1),d(),S(e.rewardsAddress?-1:25),d(2),C("matTooltip",y(28,26,"nodes.copy-key")),d(2),C("inline",!0),d(2),C("matTooltip",y(32,28,"labeled-element.edit-label")),d(2),C("inline",!0),d(2),S(e.online?35:-1),d(),S(e.online?-1:36)}}function lve(t,n){if(1&t){const e=oe();h(0,"table",23)(1,"tr")(2,"th",25),b(3,"translate"),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.hypervisorSortData))}),h(4,"mat-icon",26),p(5,"star_outline"),u(),x(6,Nbe,2,2,"mat-icon",27),u(),h(7,"th",25),b(8,"translate"),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.stateSortData))}),B(9,"span",28),x(10,Lbe,2,2,"mat-icon",27),u(),h(11,"th",29),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.labelSortData))}),p(12),b(13,"translate"),x(14,Bbe,2,2,"mat-icon",27),u(),h(15,"th"),p(16),b(17,"translate"),u(),h(18,"th"),p(19),b(20,"translate"),u(),h(21,"th",30),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.keySortData))}),p(22),b(23,"translate"),x(24,Vbe,2,2,"mat-icon",27),u(),h(25,"th",30),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.versionSortData))}),p(26),b(27,"translate"),x(28,Hbe,2,2,"mat-icon",27),u(),h(29,"th"),p(30),b(31,"translate"),u(),h(32,"th"),p(33),b(34,"translate"),u(),B(35,"th",31),u(),ve(36,ave,37,35,"a",32,Fe),u()}if(2&t){const e=v(3);d(2),C("matTooltip",y(3,14,"nodes.hypervisor")),d(4),S(e.dataSorter.currentSortingColumn===e.hypervisorSortData?6:-1),d(),C("matTooltip",y(8,16,"nodes.state-tooltip")),d(3),S(e.dataSorter.currentSortingColumn===e.stateSortData?10:-1),d(2),E(" ",y(13,18,"nodes.label")," "),d(2),S(e.dataSorter.currentSortingColumn===e.labelSortData?14:-1),d(2),E(" ",y(17,20,"nodes.ip-location")," "),d(3),E(" ",y(20,22,"nodes.transports")," "),d(3),E(" ",y(23,24,"nodes.key")," "),d(2),S(e.dataSorter.currentSortingColumn===e.keySortData?24:-1),d(2),E(" ",y(27,26,"nodes.version")," "),d(2),S(e.dataSorter.currentSortingColumn===e.versionSortData?28:-1),d(2),E(" ",y(31,28,"nodes.services")," "),d(3),E(" ",y(34,30,"nodes.reward")," "),d(3),ye(e.dataSource)}}function cve(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.label")," ")}function dve(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.inverted-order")," ")}function uve(t,n){1&t&&(h(0,"div",49)(1,"mat-icon",53),p(2,"star"),u(),p(3,"\xa0 "),h(4,"span",54),p(5),b(6,"translate"),u()()),2&t&&(d(),C("inline",!0),d(4),M(y(6,2,"nodes.hypervisor")))}function hve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v(2).$implicit;d(),M(e.ip)}}function fve(t,n){1&t&&(h(0,"span"),p(1," / "),u())}function pve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v(2).$implicit;d(),M(e.publicIp)}}function mve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),b(3,"translate"),u(),p(4,": "),x(5,hve,2,1,"span"),x(6,fve,2,0,"span"),x(7,pve,2,1,"span"),u()),2&t){const e=v().$implicit;d(2),M(y(3,4,"nodes.ip")),d(3),S(e.ip?5:-1),d(),S(e.ip&&e.publicIp?6:-1),d(),S(e.publicIp?7:-1)}}function gve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v(2).$implicit;d(),E("",e.cityName,", ")}}function _ve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v(2).$implicit;d(),E("",e.regionName,", ")}}function bve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),b(3,"translate"),u(),p(4,": "),x(5,gve,2,1,"span"),x(6,_ve,2,1,"span"),p(7),u()),2&t){const e=v().$implicit;d(2),M(y(3,4,"nodes.location")),d(3),S(e.cityName?5:-1),d(),S(e.regionName?6:-1),d(),E("",e.countryCode," ")}}function vve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),b(3,"translate"),u(),p(4),u()),2&t){const e=v().$implicit;d(2),M(y(3,2,"nodes.version")),d(2),E(": ",e.version," ")}}function yve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),b(3,"translate"),u(),p(4),u()),2&t){const e=v().$implicit;d(2),M(y(3,2,"nodes.config-version")),d(2),E(": ",e.configVersion," ")}}function Cve(t,n){if(1&t){const e=oe();h(0,"a",47)(1,"tr",48)(2,"td",48)(3,"div",44)(4,"div",45),x(5,uve,7,4,"div",49),h(6,"div",49)(7,"span",8),p(8),b(9,"translate"),u(),p(10,": "),h(11,"span"),p(12),b(13,"translate"),u()(),h(14,"div",49)(15,"span",8),p(16),b(17,"translate"),u(),p(18),u(),x(19,mve,8,6,"div",49),x(20,bve,8,6,"div",49),h(21,"div",50)(22,"span",8),p(23),b(24,"translate"),u(),p(25),u(),x(26,vve,5,4,"div",49),x(27,yve,5,4,"div",49),u(),B(28,"div",51),h(29,"div",46)(30,"button",52),b(31,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(4);return o.stopPropagation(),o.preventDefault(),U(s.showOptionsDialog(r))}),h(32,"mat-icon"),p(33),u()()()()()()()}if(2&t){const e=n.$implicit,i=v(4);C("ngClass",se(27,ube,e.online))("routerLink",e.online?se(29,pV,e.localPk):null),d(5),S(e.isHypervisor?5:-1),d(3),M(y(9,17,"nodes.state")),d(3),Ze(i.nodeStatusClass(e,!1)+" title"),d(),M(y(13,19,i.nodeStatusText(e,!1))),d(4),M(y(17,21,"nodes.label")),d(2),E(": ",e.label," "),d(),S(e.ip||e.publicIp?19:-1),d(),S(e.countryCode?20:-1),d(3),M(y(24,23,"nodes.key")),d(2),E(": ",e.localPk," "),d(),S(e.version?26:-1),d(),S(e.configVersion?27:-1),d(3),C("matTooltip",y(31,25,"common.options")),d(3),M("add")}}function wve(t,n){if(1&t){const e=oe();h(0,"table",24)(1,"tr",43),F("click",function(){return j(e),U(v(3).dataSorter.openSortingOrderModal())}),h(2,"td")(3,"div",44)(4,"div",45)(5,"div",8),p(6),b(7,"translate"),u(),h(8,"div"),p(9),b(10,"translate"),x(11,cve,2,3),x(12,dve,2,3),u()(),h(13,"div",46)(14,"mat-icon",27),p(15,"keyboard_arrow_down"),u()()()()(),ve(16,Cve,34,31,"a",47,Fe),u()}if(2&t){const e=v(3);d(6),M(y(7,5,"tables.sorting-title")),d(3),E("",y(10,7,e.dataSorter.currentSortingColumn.label)," "),d(2),S(e.dataSorter.currentlySortingByLabel?11:-1),d(),S(e.dataSorter.sortingInReverseOrder?12:-1),d(2),C("inline",!0),d(2),ye(e.dataSource)}}function xve(t,n){if(1&t&&(h(0,"div",17)(1,"div",22),x(2,Fbe,27,21,"table",23),x(3,lve,38,32,"table",23),x(4,wve,18,9,"table",24),u()()),2&t){const e=v(2);d(2),S(e.showRewardsInfo&&e.dataSource.length>0?2:-1),d(),S(!e.showRewardsInfo&&e.dataSource.length>0?3:-1),d(),S(e.dataSource.length>0?4:-1)}}function Sve(t,n){if(1&t&&B(0,"app-paginator",16),2&t){const e=v(2);C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",e.showRewardsInfo?Ct(4,hV):Ct(5,fV))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function kve(t,n){1&t&&(h(0,"span",57),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"nodes.empty")))}function Dve(t,n){1&t&&(h(0,"span",57),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"nodes.empty-with-filter")))}function Mve(t,n){if(1&t&&(h(0,"div",17)(1,"div",55)(2,"mat-icon",56),p(3,"warning"),u(),x(4,kve,3,3,"span",57),x(5,Dve,3,3,"span",57),u()()),2&t){const e=v(2);d(2),C("inline",!0),d(2),S(0===e.allNodes.length?4:-1),d(),S(0!==e.allNodes.length?5:-1)}}function Tve(t,n){if(1&t){const e=oe();h(0,"div",2)(1,"div",5)(2,"app-top-bar",6),F("refreshRequested",function(){return j(e),U(v().forceDataRefresh(!0))})("optionSelected",function(o){return j(e),U(v().performAction(o))}),u()(),h(3,"div",5)(4,"div",7)(5,"div",8),x(6,_be,6,3,"div",9),u(),h(7,"div",10)(8,"div",11),x(9,bbe,3,4,"mat-icon",12),x(10,vbe,2,1,"mat-icon",13),h(11,"mat-menu",14,0)(13,"div",15),F("click",function(){return j(e),U(v().removeOffline())}),p(14),b(15,"translate"),u()()(),x(16,ybe,1,6,"app-paginator",16),u()(),x(17,xve,5,3,"div",17),x(18,Sve,1,6,"app-paginator",16),x(19,Mve,6,3,"div",17),u()()}if(2&t){const e=v();d(2),C("titleParts",Ct(22,uV))("tabsData",e.tabsData)("selectedTabIndex",e.showRewardsInfo?1:0)("secondsSinceLastUpdate",e.secondsSinceLastUpdate)("showLoading",e.updating)("showAlert",e.errorsUpdating)("refeshRate",e.storageService.getRefreshTime())("optionsData",e.options),d(2),C("ngClass",se(23,abe,e.numberOfPages>1)),d(2),S(e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0?6:-1),d(3),S(e.allNodes&&e.allNodes.length>0?9:-1),d(),S(e.dataSource.length>0?10:-1),d(),C("overlapTrigger",!1),d(2),C("disabled",Qt(!e.hasOfflineNodes)),d(),E(" ",y(15,20,"nodes.delete-all-offline")," "),d(2),S(e.numberOfPages>1?16:-1),d(),S(0!==e.dataSource.length?17:-1),d(),S(e.numberOfPages>1?18:-1),d(),S(0===e.dataSource.length?19:-1)}}let mV=(()=>{class t extends pn{constructor(e,i,o,r,s,a,l,c,f,m,g,_){super(),this.nodeService=e,this.multipleNodeDataService=i,this.router=o,this.dialog=r,this.authService=s,this.storageService=a,this.ngZone=l,this.snackbarService=c,this.clipboardService=f,this.translateService=m,this.rewardService=g,this.persistentServerDataResponseKey="serv-dat-response",this.nodesListId="nl",this.dmsgListId="dl",this.hypervisorSortData=new Dt(["isHypervisor"],"nodes.hypervisor",st.Boolean),this.stateSortData=new Dt(["online"],"nodes.state",st.Boolean),this.labelSortData=new Dt(["label"],"nodes.label",st.Text),this.keySortData=new Dt(["localPk"],"nodes.key",st.Text),this.versionSortData=new Dt(["version"],"nodes.version",st.Text),this.configVersionSortData=new Dt(["configVersion"],"nodes.config-version",st.Text),this.dmsgServerSortData=new Dt(["dmsgServerPk"],"nodes.dmsg-server",st.Text,["dmsgServerPk_label"]),this.pingSortData=new Dt(["roundTripPing"],"nodes.ping",st.Number),this.loading=!0,this.dataSource=[],this.tabsData=[],this.options=[],this.showDmsgInfo=!1,this.showRewardsInfo=!1,this.canLogOut=!0,this.rewardDataMap=new Map,this.rewardDates=[],this.rewardDateHeaders=[],this.rewardDataLoading=!1,this.rewardDataLoaded=!1,this.hasOfflineNodes=!1,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"nodes.filter-dialog.online",keyNameInElementsArray:"online",type:Sn.Select,printableLabelsForValues:[{value:"",label:"nodes.filter-dialog.online-options.any"},{value:"true",label:"nodes.filter-dialog.online-options.online"},{value:"false",label:"nodes.filter-dialog.online-options.offline"}]},{filterName:"nodes.filter-dialog.label",keyNameInElementsArray:"label",type:Sn.TextInput,maxlength:100},{filterName:"nodes.filter-dialog.key",keyNameInElementsArray:"localPk",type:Sn.TextInput,maxlength:66},{filterName:"nodes.filter-dialog.dmsg",keyNameInElementsArray:"dmsgServerPk",secondaryKeyNameInElementsArray:"dmsgServerPk_label",type:Sn.TextInput,maxlength:66}],this.secondsSinceLastUpdate=0,this.lastUpdate=Date.now(),this.updating=!1,this.errorsUpdating=!1,this.lastUpdateRequestedManually=!1,this.labeledElementTypes=ro,this.updateOptionsMenu(),this.authVerificationSubscription=this.authService.checkLogin().subscribe(T=>{this.canLogOut=T!==ka.AuthDisabled,this.updateOptionsMenu()}),this.showRewardsInfo=-1!==this.router.url.indexOf("rewards"),this.showDmsgInfo=!1,this.filterProperties.splice(this.filterProperties.length-1);const k=this.showRewardsInfo?"rl":this.nodesListId;this.dataSorter=new gu(this.dialog,this.translateService,this.storageService,[this.hypervisorSortData,this.stateSortData,this.labelSortData,this.keySortData,this.versionSortData,this.configVersionSortData],3,k),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new _u(this.dialog,_,this.router,this.filterProperties,k),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(T=>{this.filteredNodes=T,this.hasOfflineNodes=!1,this.filteredNodes.forEach(I=>{I.online||(this.hasOfflineNodes=!0)}),this.dataSorter.setData(this.filteredNodes)}),this.navigationsSubscription=_.paramMap.subscribe(T=>{if(T.has("page")){let I=Number.parseInt(T.get("page"),10);(isNaN(I)||I<1)&&(I=1),this.currentPageInUrl=I,this.recalculateElementsToShow()}}),this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}],this.languageSubscription=this.translateService.onLangChange.subscribe(()=>{this.multipleNodeDataService.forceRefresh()})}updateOptionsMenu(){this.options=[],this.options.push({name:"nodes.modify-rewards-all",actionName:"modifyRewardsAll",icon:"edit"}),this.canLogOut&&this.options.push({name:"common.logout",actionName:"logout",icon:"power_settings_new"})}ngOnInit(){return this.startGettingData(!0),this.ngZone.runOutsideAngular(()=>{this.updateTimeSubscription=xa(5e3,5e3).subscribe(()=>this.ngZone.run(()=>{this.secondsSinceLastUpdate=Math.floor((Date.now()-this.lastUpdate)/1e3)}))}),super.ngOnInit()}ngOnDestroy(){this.authVerificationSubscription.unsubscribe(),this.dataSubscription.unsubscribe(),this.updateTimeSubscription.unsubscribe(),this.navigationsSubscription.unsubscribe(),this.languageSubscription.unsubscribe(),this.updateSubscription&&this.updateSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose()}performAction(e){"logout"===e?this.logout():"updateAll"===e?this.updateAll():"modifyRewardsAll"===e&&this.changeRewardsToAll()}nodeStatusClass(e,i){return e.online?e.health&&e.health.servicesHealth===fu.Unhealthy?i?"dot-yellow blinking":"yellow-text":e.health&&e.health.servicesHealth===fu.Healthy?i?"dot-green":"green-text":i?"dot-outline-gray":"":i?"dot-red":"red-text"}nodeStatusText(e,i){return e.online?e.health&&e.health.servicesHealth===fu.Healthy?"node.statuses.online"+(i?"-tooltip":""):e.health&&e.health.servicesHealth===fu.Unhealthy?"node.statuses.partially-online"+(i?"-tooltip":""):e.health&&e.health.servicesHealth===fu.Connecting?"node.statuses.connecting"+(i?"-tooltip":""):"node.statuses.unknown"+(i?"-tooltip":""):"node.statuses.offline"+(i?"-tooltip":"")}forceDataRefresh(e=!1){e&&(this.lastUpdateRequestedManually=!0),this.multipleNodeDataService.forceRefresh()}startGettingData(e){const i=e?this.getLocalValue(this.persistentServerDataResponseKey):null;let o=this.multipleNodeDataService.startRequestingData();i&&(o=ae(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{i||this.saveLocalValue(this.persistentServerDataResponseKey,JSON.stringify(r)),this.updating=!r||r.updating,r&&!r.updating&&(r.data&&!r.error?(this.allNodes=r.data,this.dataFilterer.setData(this.allNodes),this.showRewardsInfo&&!this.rewardDataLoaded&&!this.rewardDataLoading&&this.loadRewardData(),this.loading=!1,this.snackbarService.closeCurrentIfTemporaryError(),this.lastUpdate=r.momentOfLastCorrectUpdate,this.secondsSinceLastUpdate=Math.floor((Date.now()-r.momentOfLastCorrectUpdate)/1e3),this.errorsUpdating=!1,Xr.currentInstance.hideDataProblemMsg(),this.lastUpdateRequestedManually&&(this.snackbarService.showDone("common.refreshed",null),this.lastUpdateRequestedManually=!1)):r.error&&(this.errorsUpdating||this.snackbarService.showError(this.loading?"common.loading-error":"nodes.error-load",null,!0,r.error),this.loading=!1,this.errorsUpdating=!0,Xr.currentInstance.showDataProblemMsg())),i&&this.startGettingData(!1)})}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredNodes){const e=rt.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredNodes.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.nodesToShow=this.filteredNodes.slice(i,i+e)}else this.nodesToShow=null;this.nodesToShow&&(this.dataSource=this.nodesToShow)}logout(){const e=Rt.createConfirmationDialog(this.dialog,"common.logout-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.authService.logout().subscribe(()=>this.router.navigate(["login"]),()=>this.snackbarService.showError("common.logout-error"))})}updateAll(){if(!this.dataSource||0===this.dataSource.length)return void this.snackbarService.showError("nodes.no-visors-to-update");const e=[],i=[];this.dataSource.forEach(o=>{if(o.online){const r={key:o.localPk,label:o.label,version:o.version,tag:o.buildTag};Rt.checkIfTagIsUpdatable(o.buildTag)?e.push(r):i.push(r)}}),rge.openDialog(this.dialog,e,i)}changeRewardsToAll(){if(!this.dataSource||0===this.dataSource.length)return void this.snackbarService.showError("nodes.no-visors-to-modify");const e=[];this.dataSource.forEach(o=>{o.online&&e.push({key:o.localPk,label:o.label})}),Ege.openDialog(this.dialog,{nodes:e})}recursivelyUpdateWallets(e,i,o=0){return this.nodeService.update(e[e.length-1]).pipe(Ui(()=>ae(null)),It(r=>(r&&r.updated&&!r.error?this.snackbarService.showDone(this.translateService.instant("nodes.update.done",{name:i[i.length-1]})):(this.snackbarService.showError(this.translateService.instant("nodes.update.update-error",{name:i[i.length-1]})),o+=1),e.pop(),i.pop(),e.length>=1?this.recursivelyUpdateWallets(e,i,o):ae(o))))}showOptionsDialog(e){const i=[{icon:"filter_none",label:"nodes.copy-key"}];i.push({icon:"short_text",label:"labeled-element.edit-label"}),e.online||i.push({icon:"close",label:"nodes.delete-node"}),ao.openDialog(this.dialog,i,"common.options").afterClosed().subscribe(o=>{1===o?this.copySpecificTextToClipboard(e.localPk):2===o?this.showEditLabelDialog(e):3===o&&this.deleteNode(e)})}copyToClipboard(e){this.copySpecificTextToClipboard(e.localPk)}copySpecificTextToClipboard(e){this.clipboardService.copy(e)&&this.snackbarService.showDone("copy.copied")}showEditLabelDialog(e){let i=this.storageService.getLabelInfo(e.localPk);i||(i={id:e.localPk,label:"",identifiedElementType:ro.Node}),wk.openDialog(this.dialog,i).afterClosed().subscribe(o=>{o&&this.forceDataRefresh()})}deleteNode(e){const i=Rt.createConfirmationDialog(this.dialog,"nodes.delete-node-confirmation");i.componentInstance.operationAccepted.subscribe(()=>{i.close(),this.storageService.setLocalNodesAsHidden([e.localPk],[e.ip]),this.forceDataRefresh(),this.snackbarService.showDone("nodes.deleted")})}getTransportCounts(e){if(!e.transports||0===e.transports.length)return[];const i={};return e.transports.forEach(o=>{const r=(o.type||"unknown").toUpperCase();i[r]=(i[r]||0)+1}),Object.keys(i).sort().map(o=>({type:o,count:i[o]}))}getNodeServices(e){const i=[];return e.apps&&e.apps.forEach(o=>{1===o.status&&("skysocks"===o.name?i.push("Proxy Server"):"vpn-server"===o.name&&i.push("VPN Server"))}),e.isPublic&&i.push("Public Visor"),e.autoconnectTransports&&i.push("Autoconnect"),i}loadRewardData(){if(!this.allNodes||0===this.allNodes.length)return;this.rewardDataLoading=!0;const e=this.allNodes.map(i=>i.localPk);this.rewardService.fetchRewardData(e).subscribe(i=>{this.rewardDataMap=i,this.rewardDates=this.rewardService.getCachedDates(),this.rewardDateHeaders=this.rewardDates.map(o=>this.rewardService.formatDateShort(o)),this.rewardDataLoading=!1,this.rewardDataLoaded=!0})}getRewardData(e){return this.rewardDataMap.get(e)||null}getRewardAmount(e,i){const o=this.rewardDataMap.get(e);return o&&o.dailyAmounts[i]&&0!==o.dailyAmounts[i]?o.dailyAmounts[i].toFixed(2):"-"}getRewardClass(e,i){const o=this.rewardDataMap.get(e);return o&&o.dailyAmounts[i]&&0!==o.dailyAmounts[i]?o.dailySent[i]?"reward-sent":"reward-pending":""}getWeekTotal(e){const i=this.rewardDataMap.get(e);return i&&0!==i.weekTotal?i.weekTotal.toFixed(2):"-"}getRewardAddress(e){const i=this.allNodes?.find(r=>r.localPk===e);if(i?.rewardsAddress)return i.rewardsAddress;const o=this.rewardDataMap.get(e);return o?.rewardAddress?o.rewardAddress:"-"}removeOffline(){let e="nodes.delete-all-offline-confirmation";this.dataFilterer.currentFiltersTexts&&this.dataFilterer.currentFiltersTexts.length>0&&(e="nodes.delete-all-filtered-offline-confirmation");const i=Rt.createConfirmationDialog(this.dialog,e);i.componentInstance.operationAccepted.subscribe(()=>{i.close();const o=[],r=[];this.filteredNodes.forEach(s=>{s.online||(o.push(s.localPk),r.push(s.ip))}),o.length>0&&(this.storageService.setLocalNodesAsHidden(o,r),this.forceDataRefresh(),1===o.length?this.snackbarService.showDone("nodes.deleted-singular"):this.snackbarService.showDone("nodes.deleted-plural",{number:o.length}))})}static{this.\u0275fac=function(i){return new(i||t)(O(Io),O(KB),O(vt),O(Ot),O(Yf),O(ti),O(_e),O(ct),O(np),O(Go),O(Pge),O(Ai))}}static{this.\u0275cmp=re({type:t,selectors:[["app-node-list"]],standalone:!1,features:[be],decls:2,vars:2,consts:[["selectionMenu","matMenu"],[1,"d-flex","flex-column","h-100","w-100"],[1,"row"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton"],[1,"h-100"],[1,"col-12"],[3,"refreshRequested","optionSelected","titleParts","tabsData","selectedTabIndex","secondsSinceLastUpdate","showLoading","showAlert","refeshRate","optionsData"],[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click","disabled"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow","full-node-list-margins"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none","nowrap"],[1,"sortable-column","small-column",3,"click","matTooltip"],[1,"hypervisor-icon","grey-text"],[3,"inline"],[1,"dot-outline-gray"],[1,"sortable-column","labels",3,"click"],[1,"sortable-column",3,"click"],[1,"actions"],[1,"selectable","link-row",3,"ngClass","routerLink"],[1,"reward-day-column"],[1,"reward-total-column"],[1,"hypervisor-icon",3,"inline","matTooltip"],[3,"matTooltip"],[2,"font-size","0.85em"],["mat-button","",1,"big-action-button","transparent-button",3,"click","matTooltip"],["mat-button","",1,"big-action-button","transparent-button",3,"matTooltip"],[2,"font-size","0.85em","font-weight","bold"],[2,"color","#4caf50","font-size","20px",3,"matTooltip"],[2,"color","#f44336","font-size","20px",3,"matTooltip"],[1,"selectable","click-effect",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[1,"link-row",3,"ngClass","routerLink"],[1,"d-block"],[1,"list-row"],[1,"list-row","long-content"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"hypervisor-icon",3,"inline"],[1,"yellow-clear-text","title"],[1,"box-internal-container","font-sm"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(x(0,fbe,4,5,"div",1),x(1,Tve,20,25,"div",2)),2&i&&(S(o.loading?0:-1),d(),S(o.loading?-1:1))},dependencies:[$t,Is,Pn,Wo,We,Kt,Jr,As,vu,Yr,mv,Mr,xe],styles:[".labels[_ngcontent-%COMP%]{width:15%}.actions[_ngcontent-%COMP%]{text-align:right;width:120px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}.hypervisor-icon[_ngcontent-%COMP%]{font-size:14px!important;line-height:14px!important;position:relative;top:2px;margin-left:2px;color:#d48b05}.small-column[_ngcontent-%COMP%]{width:1px}.non-selectable[_ngcontent-%COMP%]{cursor:not-allowed}.reward-day-column[_ngcontent-%COMP%]{text-align:center;white-space:nowrap;min-width:60px}.reward-total-column[_ngcontent-%COMP%]{text-align:center;white-space:nowrap;min-width:70px}.reward-sent[_ngcontent-%COMP%]{color:#4caf50}.reward-pending[_ngcontent-%COMP%]{color:#ff9800}"]})}}return t})();function Eve(t,n){1&t&&(h(0,"div",6),B(1,"mat-spinner",7),u())}function Pve(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2,".dmsg"),u(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),u()()),2&t){const e=v(4);d(3),Ze(e.proxyStatus.dmsg_web.running?"status-ok":"status-off"),d(),E(" ",e.proxyStatus.dmsg_web.running?"Yes":"No"," "),d(2),M(e.proxyStatus.dmsg_web.socks_addr||"-"),d(2),M(e.proxyStatus.dmsg_web.upstream_socks||"direct")}}function Ive(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2,".skynet"),u(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),u()()),2&t){const e=v(4);d(3),Ze(e.proxyStatus.skynet_web.running?"status-ok":"status-off"),d(),E(" ",e.proxyStatus.skynet_web.running?"Yes":"No"," "),d(2),M(e.proxyStatus.skynet_web.socks_addr||"-"),d(2),M(e.proxyStatus.skynet_web.upstream_socks||"direct")}}function Ove(t,n){if(1&t&&(h(0,"table",21)(1,"tr")(2,"th"),p(3,"Resolver"),u(),h(4,"th"),p(5,"Running"),u(),h(6,"th"),p(7,"SOCKS"),u(),h(8,"th"),p(9,"Upstream"),u()(),it(10,Pve,9,5,"tr",3)(11,Ive,9,5,"tr",3),u()),2&t){const e=v(3);d(10),C("ngIf",e.proxyStatus.dmsg_web),d(),C("ngIf",e.proxyStatus.skynet_web)}}function Ave(t,n){if(1&t&&(h(0,"div",19),it(1,Ove,12,2,"table",20),u()),2&t){const e=v(2);d(),C("ngIf",e.proxyStatus.dmsg_web||e.proxyStatus.skynet_web)}}function Rve(t,n){if(1&t){const e=oe();h(0,"div")(1,"h3",8),p(2,"Resolving Proxy"),u(),h(3,"p",9),p(4," Browse "),h(5,"strong"),p(6,".skynet"),u(),p(7," and "),h(8,"strong"),p(9,".dmsg"),u(),p(10," domains. Set an upstream SOCKS5 proxy to route all other traffic through skysocks. "),u(),it(11,Ave,2,1,"div",10),h(12,"div",11)(13,"div",12)(14,"mat-checkbox",13),F("change",function(o){j(e);const r=v();return r.form.get("skynetEnabled").setValue(o.checked),U(r.toggleProxy())}),p(15," Enable resolving proxy (.skynet + .dmsg) "),u()(),h(16,"form",14)(17,"div",15)(18,"mat-form-field",16)(19,"mat-label"),p(20,"Upstream SOCKS5 (e.g. 127.0.0.1:1080)"),u(),B(21,"input",17),u(),h(22,"button",18),F("click",function(){return j(e),U(v().setUpstream())}),p(23," Set "),u()()()()()}if(2&t){const e=v();d(11),C("ngIf",e.proxyStatus),d(3),C("checked",e.form.get("skynetEnabled").value)("disabled",e.loading),d(2),C("formGroup",e.form),d(6),C("disabled",e.loading)}}let Fve=(()=>{class t{constructor(e,i,o,r){this.dialogRef=e,this.data=i,this.nodeService=o,this.snackbarService=r,this.loading=!1,this.proxyStatus=null,this.skynetPorts=[],this.newPort="",this.form=new nk({skynetEnabled:new lu(!1),upstream:new lu("")}),this.loadStatus(),this.loadPorts()}loadStatus(){this.loading=!0,this.nodeService.getProxies(this.data.nodeKey).subscribe(e=>{this.proxyStatus=e,this.loading=!1;const i=e?.skynet_web?.running||!1,o=e?.skynet_web?.upstream_socks||"";this.form.get("skynetEnabled").setValue(i),this.form.get("upstream").setValue(o)},()=>{this.loading=!1})}loadPorts(){this.nodeService.getSkynetPorts(this.data.nodeKey).subscribe(e=>{this.skynetPorts=(e||[]).sort((i,o)=>i-o)},()=>{})}toggleProxy(){const e=this.form.get("skynetEnabled").value;this.loading=!0,this.nodeService.setProxyEnabled(this.data.nodeKey,"skynet",e).subscribe(()=>{this.nodeService.setProxyEnabled(this.data.nodeKey,"dmsg",e).subscribe(()=>{this.loading=!1,this.snackbarService.showDone(e?"Resolving proxy enabled":"Resolving proxy disabled"),this.loadStatus()},()=>{this.loading=!1})},()=>{this.loading=!1,this.snackbarService.showError("Failed to toggle proxy")})}setUpstream(){const e=this.form.get("upstream").value.trim();this.loading=!0,this.nodeService.setProxyUpstream(this.data.nodeKey,"skynet",e).subscribe(()=>{this.loading=!1,this.snackbarService.showDone(e?`Upstream set to ${e}`:"Upstream cleared"),this.loadStatus()},()=>{this.loading=!1,this.snackbarService.showError("Failed to set upstream")})}addPort(){const e=parseInt(this.newPort,10);isNaN(e)||e<1||e>65535?this.snackbarService.showError("Invalid port number"):this.nodeService.registerSkynetPort(this.data.nodeKey,e).subscribe(()=>{this.newPort="",this.snackbarService.showDone(`Port ${e} forwarded`),this.loadPorts()},i=>{this.snackbarService.showError(i?.error?.error||"Failed to register port")})}removePort(e){this.nodeService.deregisterSkynetPort(this.data.nodeKey,e).subscribe(()=>{this.snackbarService.showDone(`Port ${e} removed`),this.loadPorts()},()=>{this.snackbarService.showError("Failed to deregister port")})}close(){this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(Io),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-proxy-settings"]],standalone:!1,decls:9,vars:2,consts:[[1,"generic-dialog-container"],["mat-dialog-title",""],["class","text-center py-3",4,"ngIf"],[4,"ngIf"],["align","end"],["mat-button","",3,"click"],[1,"text-center","py-3"],["diameter","30",1,"mx-auto"],[1,"section-title"],[1,"help-text"],["class","proxy-status",4,"ngIf"],[1,"proxy-form"],[1,"form-row","toggle-row"],[3,"change","checked","disabled"],[3,"formGroup"],[1,"form-row","upstream-row"],["appearance","outline",1,"upstream-field"],["matInput","","formControlName","upstream","placeholder","127.0.0.1:1080"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"proxy-status"],["class","status-table",4,"ngIf"],[1,"status-table"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"h2",1),p(2,"Skynet Settings"),u(),h(3,"mat-dialog-content"),it(4,Eve,2,0,"div",2)(5,Rve,24,5,"div",3),u(),h(6,"mat-dialog-actions",4)(7,"button",5),F("click",function(){return o.close()}),p(8,"Close"),u()()()),2&i&&(d(4),C("ngIf",o.loading),d(),C("ngIf",!o.loading))},dependencies:[tf,xn,Gt,qt,wn,on,mn,MS,T4,Jd,sn,Os,In,Pn,so,kr],styles:[".section-title[_ngcontent-%COMP%]{font-size:15px;font-weight:500;margin:16px 0 4px;color:#000000de}.section-title[_ngcontent-%COMP%]:first-of-type{margin-top:0}.help-text[_ngcontent-%COMP%]{color:#0009;font-size:13px;margin-bottom:12px}.help-text[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:#0000000f;padding:1px 4px;border-radius:3px;font-size:12px}.status-table[_ngcontent-%COMP%]{width:100%;margin-bottom:12px;border-collapse:collapse}.status-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .status-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:5px 8px;text-align:left;border-bottom:1px solid rgba(0,0,0,.08);font-size:13px}.status-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{color:#00000080;font-weight:500}.status-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{color:#000000de}.status-table[_ngcontent-%COMP%] .status-ok[_ngcontent-%COMP%]{color:#4caf50;font-weight:500}.status-table[_ngcontent-%COMP%] .status-off[_ngcontent-%COMP%]{color:#00000061}.proxy-form[_ngcontent-%COMP%]{margin-top:8px;margin-bottom:8px}.form-row[_ngcontent-%COMP%]{margin-bottom:12px}.upstream-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.upstream-row[_ngcontent-%COMP%] .upstream-field[_ngcontent-%COMP%]{flex:1}.no-ports[_ngcontent-%COMP%]{color:#00000061;font-style:italic;font-size:13px}.port-list[_ngcontent-%COMP%]{margin-bottom:8px}.port-item[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border-bottom:1px solid rgba(0,0,0,.06)}.port-item[_ngcontent-%COMP%] .port-number[_ngcontent-%COMP%]{font-family:monospace;font-size:14px;font-weight:500}.add-port-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.add-port-row[_ngcontent-%COMP%] .port-field[_ngcontent-%COMP%]{width:120px}"]})}}return t})();const Nve=["content"],Mk=t=>({number:t}),Lve=t=>({count:t}),Bve=t=>({time:t});function Vve(t,n){if(1&t&&(h(0,"div",15),p(1),b(2,"translate"),u()),2&t){const e=v(2);d(),E(" ",pe(2,1,"node.logs.filter-ignored",se(4,Mk,e.logEntries.length-e.filteredLogEntries.length))," ")}}function Hve(t,n){if(1&t){const e=oe();h(0,"div",12),F("click",function(){return j(e),U(v().showFilters())}),h(1,"div",13)(2,"div")(3,"span"),p(4),b(5,"translate"),u(),h(6,"span",14),p(7),b(8,"translate"),u()(),x(9,Vve,3,6,"div",15),u(),B(10,"div",16),u()}if(2&t){const e=v();d(4),E("",y(5,3,"node.logs.selected-filter")," "),d(3),M(y(8,5,"node.logs."+e.levelDetails.get(e.currentMinimumLevel).levelFilterName)),d(2),S(e.logEntries.length>e.filteredLogEntries.length?9:-1)}}function jve(t,n){if(1&t&&(h(0,"div",3)(1,"mat-icon",17),p(2,"history"),u(),p(3),b(4,"translate"),u()),2&t){const e=v();d(),C("inline",!0),d(2),E(" ",pe(4,2,"node.logs.dropped",se(5,Lve,e.totalDropped))," ")}}function Uve(t,n){if(1&t&&(h(0,"div",4)(1,"a",18),p(2),b(3,"translate"),u()()),2&t){const e=v();d(),C("href",e.getFullLogsUrl(),mo),d(),E(" ",pe(3,2,"node.logs.view-rest",se(5,Mk,e.totalLogs))," ")}}function zve(t,n){1&t&&p(0," : ")}function $ve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v().$implicit;d(),E(" ",e.msg," ")}}function Wve(t,n){if(1&t&&(h(0,"span",21),p(1),u(),h(2,"span"),p(3),u()),2&t){const e=n.$implicit;d(),E(" ",e.name," "),d(2),E(' ="',e.value,'" ')}}function Gve(t,n){if(1&t&&(h(0,"div",4)(1,"span",19),p(2),u(),h(3,"span"),p(4),u(),p(5," [ "),h(6,"span",19),p(7),u(),h(8,"span",20),p(9),u(),p(10," ]"),x(11,zve,1,0),x(12,$ve,2,1,"span"),ve(13,Wve,4,2,null,null,Fe),u()),2&t){const e=n.$implicit,i=v(2);d(2),E(" ",e.time," "),d(),Ze(i.levelDetails.get(e.level).colorClass),d(),E(" ",i.levelDetails.get(e.level).name," "),d(3),E(" ",e.func," "),d(2),E(" ",e._module," "),d(2),S(e.msg?11:-1),d(),S(e.msg?12:-1),d(),ye(e.extra)}}function qve(t,n){1&t&&ve(0,Gve,15,8,"div",4,Fe),2&t&&ye(v().filteredLogEntries)}function Kve(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"node.logs.view-all")," ")}function Yve(t,n){if(1&t&&(p(0),b(1,"translate")),2&t){const e=v(2);E(" ",pe(1,1,"node.logs.view-rest",se(4,Mk,e.totalLogs))," ")}}function Xve(t,n){if(1&t&&(h(0,"div",4)(1,"a",18),x(2,Kve,2,3),x(3,Yve,2,6),u()()),2&t){const e=v();d(),C("href",e.getFullLogsUrl(),mo),d(),S(e.hasMoreLogMessages?-1:2),d(),S(e.hasMoreLogMessages?3:-1)}}function Zve(t,n){1&t&&(h(0,"div",5),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"node.logs.no-logs")," "))}function Qve(t,n){1&t&&(h(0,"div",5),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"node.logs.no-logs-for-filter")," "))}function Jve(t,n){1&t&&B(0,"app-loading-indicator",6),2&t&&C("showWhite",!1)}function eye(t,n){if(1&t&&(h(0,"div",11)(1,"mat-icon",9),p(2,"refresh"),u(),h(3,"span"),p(4),b(5,"translate"),u()()),2&t){const e=v();d(),C("inline",!0),d(3),M(pe(5,2,"refresh-button."+e.elapsedTime.translationVarName,se(5,Bve,e.elapsedTime.elapsedTime)))}}var bn=function(t){return t[t.PanicLevel=0]="PanicLevel",t[t.FatalLevel=1]="FatalLevel",t[t.ErrorLevel=2]="ErrorLevel",t[t.WarnLevel=3]="WarnLevel",t[t.InfoLevel=4]="InfoLevel",t[t.DebugLevel=5]="DebugLevel",t[t.TraceLevel=6]="TraceLevel",t[t.Unknown=7]="Unknown",t}(bn||{});class tye{constructor(){this.extra=[]}}let nye=(()=>{class t{static openDialog(e){const i=new nn;return i.autoFocus=!1,i.width=rt.largeModalWidth,e.open(t,i)}constructor(e,i,o,r,s){this.dialogRef=e,this.nodeService=i,this.snackbarService=o,this.ngZone=r,this.dialog=s,this.levelDetails=new Map([[bn.PanicLevel,{name:"PANIC",colorClass:"panic-level-color",levelFilterName:"filter-panic",importance:8}],[bn.FatalLevel,{name:"FATAL",colorClass:"fatal-level-color",levelFilterName:"filter-faltal",importance:7}],[bn.ErrorLevel,{name:"ERROR",colorClass:"error-level-color",levelFilterName:"filter-error",importance:6}],[bn.WarnLevel,{name:"WARNING",colorClass:"warning-level-color",levelFilterName:"filter-warning",importance:5}],[bn.InfoLevel,{name:"INFO",colorClass:"info-level-color",levelFilterName:"filter-info",importance:4}],[bn.DebugLevel,{name:"DEBUG",colorClass:"debug-level-color",levelFilterName:"filter-debug",importance:3}],[bn.TraceLevel,{name:"TRACE",colorClass:"trace-level-color",levelFilterName:"filter-all",importance:2}],[bn.Unknown,{name:"UNKNOWN LOG",colorClass:"unknown-level-color",levelFilterName:"filter-all",importance:1}]]),this.currentMinimumLevel=bn.Unknown,this.loading=!0,this.LoadingMoment=0,this.liveTail=!0,this.livePollMs=2e3,this.logCursor=0,this.totalDropped=0,this.wasAtBottom=!0,this.maxElementsPerPage=1e3,this.logEntries=[],this.filteredLogEntries=[],this.hasMoreLogMessages=!1,this.totalLogs=0,this.shouldShowError=!0}ngOnInit(){this.loadData(0)}ngOnDestroy(){this.removeSubscription(),this.removeTimeSubscription()}showFilters(){const e=[{icon:"",label:"node.logs.filter-all"},{icon:"",label:"node.logs.filter-debug"},{icon:"",label:"node.logs.filter-info"},{icon:"",label:"node.logs.filter-warning"},{icon:"",label:"node.logs.filter-error"},{icon:"",label:"node.logs.filter-faltal"},{icon:"",label:"node.logs.filter-panic"}],i=[bn.Unknown,bn.DebugLevel,bn.InfoLevel,bn.WarnLevel,bn.ErrorLevel,bn.FatalLevel,bn.PanicLevel];for(let o=0;o<=i.length;o++)this.currentMinimumLevel===i[o]&&(e[o].icon="check");ao.openDialog(this.dialog,e,"node.logs.filter-title").afterClosed().subscribe(o=>{this.currentMinimumLevel=i[o-1],this.filter()})}loadData(e){this.removeSubscription(),this.captureScrollTailState(),this.loading=0===this.logEntries.length;const i=this.logCursor;this.subscription=ae(1).pipe(li(e),It(()=>this.nodeService.getRuntimeLogsSince(ke.getCurrentNodeKey(),i))).subscribe(o=>this.onLogsDeltaReceived(o),o=>this.onLogsError(o))}toggleLiveTail(){this.liveTail=!this.liveTail,this.liveTail?this.loadData(0):this.removeSubscription()}captureScrollTailState(){if(!this.content)return void(this.wasAtBottom=!0);const e=this.content.nativeElement;this.wasAtBottom=e.scrollHeight-e.scrollTop-e.clientHeight<40}removeSubscription(){this.subscription&&this.subscription.unsubscribe()}removeTimeSubscription(){this.timeUpdateSubscription&&this.timeUpdateSubscription.unsubscribe()}onLogsDeltaReceived(e){if(!e)return this.loading=!1,void this.scheduleNextPoll();const i=0===this.logCursor;this.logCursor="number"==typeof e.latest?e.latest:this.logCursor,"number"==typeof e.dropped&&e.dropped>0&&(this.totalDropped+=e.dropped);const o=Array.isArray(e.entries)?e.entries:[];if(0===o.length)return this.loading=!1,this.LoadingMoment=Date.now(),this.shouldShowError=!0,this.startUpdatingTime(),void this.scheduleNextPoll();const r=[];for(const s of o)try{r.push(JSON.parse(s))}catch{}i&&(this.logEntries=[]),this.appendParsedEntries(r),this.logEntries.length>this.maxElementsPerPage&&(this.logEntries=this.logEntries.slice(this.logEntries.length-this.maxElementsPerPage),this.hasMoreLogMessages=!0),this.totalLogs=this.logCursor,this.loading=!1,this.LoadingMoment=Date.now(),this.shouldShowError=!0,this.startUpdatingTime(),this.filter(),this.scheduleNextPoll()}scheduleNextPoll(){this.liveTail&&this.loadData(this.livePollMs)}appendParsedEntries(e){e.forEach(i=>{const o=new tye;o.time=i.time,o._module=i._module,o.msg=i.msg,o.func=i.func;const r=i.level?i.level.toLowerCase():"";if(o.level=r.includes("panic")?bn.PanicLevel:r.includes("fatal")?bn.FatalLevel:r.includes("error")?bn.ErrorLevel:r.includes("warn")?bn.WarnLevel:r.includes("info")?bn.InfoLevel:r.includes("debug")?bn.DebugLevel:r.includes("trace")?bn.TraceLevel:bn.Unknown,i.current_backoff){const a=Math.floor(i.current_backoff/1e9),l=Math.floor(a/60),c=Math.floor(a%60);o.extra.push(l?{name:"current_backoff",value:l+"m"+c+"s"}:{name:"current_backoff",value:c+"s"})}i.error&&o.extra.push({name:"error",value:i.error});const s=new Set;s.add("time"),s.add("_module"),s.add("msg"),s.add("func"),s.add("level"),s.add("current_backoff"),s.add("error"),s.add("log_line");for(const a in i)s.has(a)||o.extra.push({name:a,value:i[a]});this.logEntries.push(o)})}filter(){this.filteredLogEntries=[];const e=this.levelDetails.get(this.currentMinimumLevel).importance;this.logEntries.forEach(i=>{const o=this.levelDetails.get(i.level).importance;e<=o&&this.filteredLogEntries.push(i)}),this.wasAtBottom&&setTimeout(()=>{this.content&&(this.content.nativeElement.scrollTop=this.content.nativeElement.scrollHeight)})}startUpdatingTime(){this.elapsedTime=gv.getElapsedTime(Math.floor((Date.now()-this.LoadingMoment)/1e3)),this.removeTimeSubscription(),this.timeUpdateSubscription=xa(5e3,5e3).subscribe(()=>this.ngZone.run(()=>{this.elapsedTime=gv.getElapsedTime(Math.floor((Date.now()-this.LoadingMoment)/1e3))}))}getFullLogsUrl(){return window.location.origin+"/api/visors/"+ke.getCurrentNodeKey()+"/runtime-logs"}onLogsError(e){e=Qe(e),this.shouldShowError&&(this.snackbarService.showError("common.loading-error",null,!0,e),this.shouldShowError=!1),this.loadData(rt.connectionRetryDelay)}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(Io),O(ct),O(_e),O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-node-logs"]],viewQuery:function(i,o){if(1&i&&ot(Nve,5),2&i){let r;he(r=fe())&&(o.content=r.first)}},standalone:!1,decls:21,vars:20,consts:[["content",""],[3,"headline","includeVerticalMargins","includeScrollableArea","dialog"],[1,"top-dialog-button"],[1,"logs-dropped-banner"],[1,"log-entry"],[1,"log-empty-msg"],[3,"showWhite"],[1,"logs-footer"],[1,"live-tail-toggle","subtle-transparent-button",3,"click"],[1,"icon",3,"inline"],[1,"update-button","subtle-transparent-button",3,"click"],[1,"update-time"],[1,"top-dialog-button",3,"click"],[1,"top-dialog-button-content"],[1,"actual-value"],[1,"small"],[1,"top-dialog-button-margin"],[3,"inline"],["target","_blank",1,"view-raw-link",3,"href"],[1,"transparent"],[1,"module-color"],[1,"extra-data-color"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),x(2,Hve,11,7,"div",2),x(3,jve,5,7,"div",3),h(4,"mat-dialog-content",null,0),x(6,Uve,4,7,"div",4),x(7,qve,2,0),x(8,Xve,4,3,"div",4),x(9,Zve,3,3,"div",5),x(10,Qve,3,3,"div",5),x(11,Jve,1,1,"app-loading-indicator",6),h(12,"div",7)(13,"div",8),F("click",function(){return o.toggleLiveTail()}),h(14,"mat-icon",9),p(15),u(),h(16,"span"),p(17),b(18,"translate"),u()(),h(19,"div",10),F("click",function(){return o.loadData(0)}),x(20,eye,6,7,"div",11),u()()()()),2&i&&(C("headline",y(1,16,"node.logs.title"))("includeVerticalMargins",!1)("includeScrollableArea",!1)("dialog",o.dialogRef),d(2),S(!o.loading&&o.logEntries&&o.logEntries.length>0?2:-1),d(),S(o.totalDropped>0?3:-1),d(3),S(!o.loading&&o.hasMoreLogMessages?6:-1),d(),S(o.loading?-1:7),d(),S(!o.loading&&o.logEntries&&o.logEntries.length>0?8:-1),d(),S(o.loading||o.logEntries&&0!==o.logEntries.length?-1:9),d(),S(!o.loading&&o.logEntries&&o.logEntries.length>0&&o.filteredLogEntries.length<1?10:-1),d(),S(o.loading?11:-1),d(3),C("inline",!0),d(),M(o.liveTail?"pause":"play_arrow"),d(2),M(y(18,18,o.liveTail?"node.logs.live-on":"node.logs.live-off")),d(3),S(o.loading?-1:20))},dependencies:[Jd,We,gn,Yr,xe],styles:[".top-dialog-button[_ngcontent-%COMP%]{color:#777!important}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%]{text-align:center}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .actual-value[_ngcontent-%COMP%]{color:#202226}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .small[_ngcontent-%COMP%]{font-size:.6rem}.log-entry[_ngcontent-%COMP%]{margin-top:15px;word-break:break-word}.log-entry[_ngcontent-%COMP%] .transparent[_ngcontent-%COMP%]{color:#999}.log-entry[_ngcontent-%COMP%]:first-of-type{margin-top:0}.log-entry[_ngcontent-%COMP%]:last-of-type{margin-bottom:24px}.log-empty-msg[_ngcontent-%COMP%]{text-align:center}.view-raw-link[_ngcontent-%COMP%]{color:#215f9e}.update-button[_ngcontent-%COMP%]{display:flex;justify-content:center;cursor:pointer}.update-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:5px;margin-right:5px}.update-button[_ngcontent-%COMP%] .update-time[_ngcontent-%COMP%]{text-align:center;font-size:.7rem;color:#202226;margin:0 5px}.panic-level-color[_ngcontent-%COMP%], .fatal-level-color[_ngcontent-%COMP%]{color:red}.error-level-color[_ngcontent-%COMP%]{color:#d10000}.warning-level-color[_ngcontent-%COMP%]{color:#e27505}.info-level-color[_ngcontent-%COMP%]{color:#0d9519}.debug-level-color[_ngcontent-%COMP%]{color:#0065ff}.trace-level-color[_ngcontent-%COMP%]{color:#468cf5}.unknown-level-color[_ngcontent-%COMP%]{color:#e27505}.module-color[_ngcontent-%COMP%]{color:#a119fc}.extra-data-color[_ngcontent-%COMP%]{color:#ad8021}.logs-footer[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;border-top:1px solid rgba(255,255,255,.08)}.live-tail-toggle[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:13px}.live-tail-toggle[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:18px}.logs-dropped-banner[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding:6px 10px;background:#ffc80014;border-bottom:1px solid rgba(255,200,0,.2);font-size:12px;opacity:.9}.logs-dropped-banner[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px}"]})}}return t})();class gV{constructor(n,e){this.canBeUpdated=!1,this.canOpenTerminal=!1,this.options=[],this.dialog=n.get(Ot),this.router=n.get(vt),this.snackbarService=n.get(ct),this.nodeService=n.get(Io),this.storageService=n.get(ti),this.showingFullList=e,this.returnButtonText=e?"node.title":"nodes.title",this.updateOptions()}updateOptions(){this.options=[],this.canOpenTerminal&&this.options.push({name:"actions.menu.terminal",actionName:"terminal",icon:"laptop"}),this.options.push({name:"actions.menu.logs",actionName:"logs",icon:"subject"}),this.options.push({name:"actions.menu.proxy",actionName:"proxy",icon:"vpn_lock"}),this.options.push({name:"actions.menu.turn-off",actionName:"shutdown",icon:"power_settings_new"})}setCurrentNode(n){this.currentNode=n,this.canBeUpdated=!!Rt.checkIfTagIsUpdatable(n.buildTag),this.canOpenTerminal=Rt.checkIfTagCanOpenterminal(n.buildTag),this.updateOptions()}setCurrentNodeKey(n){this.currentNodeKey=n}performAction(n,e){"terminal"===n?this.terminal():"update"===n?this.update():"logs"===n?this.runtimeLogs():"proxy"===n?this.openProxySettings():"shutdown"===n?this.shutdown():null===n&&this.back()}dispose(){this.updateSubscription&&this.updateSubscription.unsubscribe(),this.shutdownSubscription&&this.shutdownSubscription.unsubscribe()}shutdown(){const n=Rt.createConfirmationDialog(this.dialog,"actions.turn-off.confirmation");n.componentInstance.operationAccepted.subscribe(()=>{n.componentInstance.showProcessing(),this.shutdownSubscription=this.nodeService.shutdown(this.currentNodeKey).subscribe(()=>{this.snackbarService.showDone("actions.turn-off.done"),n.close(),this.router.navigate(["nodes"])},e=>{e=Qe(e),n.componentInstance.showDone("confirmation.error-header-text",e.translatableErrorMsg)})})}update(){const n=Rt.createConfirmationDialog(this.dialog,"actions.update.confirmation");n.componentInstance.operationAccepted.subscribe(()=>{const e=window.location.protocol,i=window.location.host.replace("localhost:4200","127.0.0.1:8000");window.open(e+"//"+i+"/pty/"+this.currentNodeKey+"?commands=update","_blank","noopener noreferrer"),n.close()})}terminal(){const n=window.location.protocol,e=window.location.host.replace("localhost:4200","127.0.0.1:8000");window.open(n+"//"+e+"/pty/"+this.currentNodeKey,"_blank","noopener noreferrer")}runtimeLogs(){nye.openDialog(this.dialog)}openProxySettings(){this.dialog.open(Fve,{width:"550px",data:{nodeKey:this.currentNodeKey}})}back(){this.router.navigate(this.showingFullList?["nodes",this.currentNodeKey]:["nodes"])}}class iye{constructor(){this.trafficData=new oye}}class oye{constructor(){this.totalSent=0,this.totalReceived=0,this.sentHistory=[],this.receivedHistory=[]}}class rye{constructor(){this.lastEmitedData=new iye,this.dataSubject=new ki(null),this.whenUpdateWasScheduled=0,this.stopRequestedDate=-1,this.consecutiveErrors=0}}let sye=(()=>{class t{constructor(e,i){this.storageService=e,this.nodeService=i,this.maxTrafficHistorySlots=10,this.expirationTime=6e4,this.nodesMap=new Map,this.storageService.getRefreshTimeObservable().subscribe(o=>{this.dataRefreshDelay=1e3*o,this.nodesMap.forEach(r=>{this.forceSpecificNodeRefresh(r.pk)})}),this.checkForExpired()}checkForExpired(){setInterval(()=>{try{this.nodesMap.forEach(e=>{this.finishIfExpired(e)})}catch{}},5e3)}startRequestingData(e){let i=this.nodesMap.get(e);return i?i.stopRequestedDate=-1:(i=new rye,i.pk=e,this.nodesMap.set(e,i),this.startDataSubscription(0,i)),i.dataSubject.asObservable()}stopRequestingSpecificNode(e){const i=this.nodesMap.get(e);i&&(i.stopRequestedDate=Date.now())}startDataSubscription(e,i){i.updateSubscription&&i.updateSubscription.unsubscribe();let o=0;i.updateSubscription=ae(1).pipe(li(e),ai(()=>{i.lastEmitedData.updating=!0,i.dataSubject.next(i.lastEmitedData)}),li(120),ai(()=>{o=performance.now(),console.log("[HV-DIAG] fetching node data for",i.pk.substring(0,8)+"...")}),It(()=>this.nodeService.getNode(i.pk))).subscribe(r=>{console.log("[HV-DIAG] fetch completed in",(performance.now()-o).toFixed(0),"ms for",i.pk.substring(0,8)+"..."),i.consecutiveErrors=0,this.updateTrafficData(r.transports,i.lastEmitedData.trafficData,i.whenUpdateWasScheduled);let s=this.calculateRemainingTime(i.whenUpdateWasScheduled);s<1e3&&(i.whenUpdateWasScheduled=Date.now(),s=this.dataRefreshDelay),i.lastEmitedData={data:r,error:null,momentOfLastCorrectUpdate:Date.now(),updating:!1,trafficData:i.lastEmitedData.trafficData},i.dataSubject.next(i.lastEmitedData),this.startDataSubscription(s,i)},r=>{if(r=Qe(r),i.consecutiveErrors=(i.consecutiveErrors||0)+1,i.lastEmitedData={data:i.lastEmitedData.data,error:r,momentOfLastCorrectUpdate:i.lastEmitedData.momentOfLastCorrectUpdate,updating:!1,trafficData:i.lastEmitedData.trafficData},i.dataSubject.next(i.lastEmitedData),r.originalError&&400===r.originalError.status)i.dataSubject.complete(),i.updateSubscription.unsubscribe(),this.nodesMap.delete(i.pk);else{const a=Math.min(rt.connectionRetryDelay*Math.pow(2,i.consecutiveErrors-1),3e4);this.startDataSubscription(a,i)}})}calculateRemainingTime(e){if(e<1)return 0;let i=this.dataRefreshDelay-(Date.now()-e);return i<0&&(i=0),i}updateTrafficData(e,i,o){if(i.totalSent=0,i.totalReceived=0,e&&e.length>0&&(i.totalSent=e.reduce((r,s)=>r+s.sent,0),i.totalReceived=e.reduce((r,s)=>r+s.recv,0)),0===i.sentHistory.length)for(let r=0;rthis.maxTrafficHistorySlots&&(s=this.maxTrafficHistorySlots),0===s)i.sentHistory[i.sentHistory.length-1]=i.totalSent,i.receivedHistory[i.receivedHistory.length-1]=i.totalReceived;else for(let a=0;athis.maxTrafficHistorySlots&&(i.sentHistory.splice(0,i.sentHistory.length-this.maxTrafficHistorySlots),i.receivedHistory.splice(0,i.receivedHistory.length-this.maxTrafficHistorySlots))}}forceSpecificNodeRefresh(e){const i=this.nodesMap.get(e);i&&this.startDataSubscription(0,i)}finishIfExpired(e){e.stopRequestedDate>0&&Date.now()-e.stopRequestedDate>this.expirationTime&&(e.dataSubject.complete(),e.updateSubscription.unsubscribe(),this.nodesMap.delete(e.pk))}static{this.\u0275fac=function(i){return new(i||t)(ce(ti),ce(Io))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function aye(t,n){if(1&t){const e=oe();Vr(0),h(1,"div",2)(2,"div",3)(3,"app-top-bar",4),F("optionSelected",function(o){return j(e),U(v().performAction(o))})("refreshRequested",function(){return j(e),U(v().forceDataRefresh(!0))}),u()(),h(4,"div",3)(5,"div",5)(6,"div",6),B(7,"router-outlet"),u()()()(),cr()}if(2&t){const e=v();d(3),C("titleParts",e.titleParts)("pageHeaderLabel",e.headerLabel)("pageHeaderIdentifier",e.headerIdentifier)("tabsData",e.tabsData)("selectedTabIndex",e.selectedTabIndex)("secondsSinceLastUpdate",e.secondsSinceLastUpdate)("showLoading",e.updating)("showAlert",e.errorsUpdating)("refeshRate",e.storageService.getRefreshTime())("optionsData",e.nodeActionsHelper?e.nodeActionsHelper.options:null)("returnText",e.nodeActionsHelper?e.nodeActionsHelper.returnButtonText:"")}}function lye(t,n){1&t&&(Vr(0),B(1,"app-loading-indicator"),cr())}function cye(t,n){1&t&&(Vr(0),h(1,"div",10)(2,"div")(3,"mat-icon",11),p(4,"error"),u(),p(5),b(6,"translate"),u()(),cr()),2&t&&(d(3),C("inline",!0),d(2),E(" ",y(6,2,"node.not-found")," "))}function dye(t,n){if(1&t){const e=oe();Vr(0),h(1,"div",10)(2,"div")(3,"mat-icon",11),p(4,"error"),u(),p(5),b(6,"translate"),B(7,"br"),h(8,"button",12),F("click",function(){return j(e),U(v(2).retryLoading())}),p(9),b(10,"translate"),u()()(),cr()}2&t&&(d(3),C("inline",!0),d(2),E(" ",y(6,3,"node.error-load")," "),d(4),E(" ",y(10,5,"common.refresh")," "))}function uye(t,n){if(1&t){const e=oe();h(0,"div",7)(1,"div")(2,"app-top-bar",8),F("optionSelected",function(o){return j(e),U(v().performAction(o))}),u()(),it(3,lye,2,0,"ng-container",9)(4,cye,7,4,"ng-container",9)(5,dye,11,7,"ng-container",9),u()}if(2&t){const e=v();d(2),C("titleParts",e.titleParts)("pageHeaderLabel",e.headerLabel)("pageHeaderIdentifier",e.headerIdentifier)("tabsData",e.tabsData)("selectedTabIndex",e.selectedTabIndex)("showUpdateButton",!1)("optionsData",e.nodeActionsHelper?e.nodeActionsHelper.options:null)("returnText",e.nodeActionsHelper?e.nodeActionsHelper.returnButtonText:""),d(),C("ngIf",!e.notFound&&!e.loadFailed),d(),C("ngIf",e.notFound),d(),C("ngIf",e.loadFailed)}}let ke=(()=>{class t extends pn{static refreshCurrentDisplayedData(){t.currentInstanceInternal&&t.currentInstanceInternal.forceDataRefresh(!1)}static getCurrentNodeKey(){return t.currentNodeKey}static get currentNode(){return t.nodeSubject.asObservable()}static get currentTrafficData(){return t.trafficDataSubject.asObservable()}constructor(e,i,o,r,s,a,l,c){super(),this.storageService=e,this.singleNodeDataService=i,this.route=o,this.ngZone=r,this.snackbarService=s,this.injector=a,this.cdr=l,this.persistentDataResponseKey="serv-dat-response",this.nodeLoaded=!1,this.notFound=!1,this.titleParts=[],this.tabsData=[],this.selectedTabIndex=-1,this.headerLabel="",this.headerIdentifier="",this.showingFullList=!1,this.initialRouteEventFired=!1,this.secondsSinceLastUpdate=0,this.lastUpdate=Date.now(),this.updating=!1,this.errorsUpdating=!1,this.lastUpdateRequestedManually=!1,this.loadFailed=!1,this.consecutiveLoadErrors=0,this.instanceId="",t.nodeSubject=new oo(1),t.trafficDataSubject=new oo(1),t.currentInstanceInternal=this,this.instanceId=Math.random().toString(36).substring(7),console.log("[HV-DIAG] NodeComponent constructor, instance:",this.instanceId),this.navigationsSubscription=c.events.subscribe(f=>{f.urlAfterRedirects&&(this.lastUrl=f.urlAfterRedirects,this.processRouteUpdate(),this.initialRouteEventFired=!0)})}ngOnInit(){return this.ngZone.runOutsideAngular(()=>{this.updateTimeSubscription=xa(5e3,5e3).subscribe(()=>this.ngZone.run(()=>{this.secondsSinceLastUpdate=Math.floor((Date.now()-this.lastUpdate)/1e3)}))}),this.initSubscription=ae(0).pipe(li(500)).subscribe(()=>{this.initialRouteEventFired||(this.lastUrl=window.location.href,this.processRouteUpdate())}),super.ngOnInit()}processRouteUpdate(){console.log("[HV-DIAG] processRouteUpdate called, instance id:",this.instanceId),t.currentNodeKey=this.route.snapshot.params.key,this.nodeActionsHelper&&this.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),this.updateTabBar(),this.navigationsSubscription.unsubscribe(),this.startGettingData(!0)}refreshHeader(){if(!this.node)return this.headerLabel="",void(this.headerIdentifier="");const e=this.storageService.getLabelInfo(this.node.localPk);this.headerLabel=e&&e.label?e.label:this.node.label||(this.node.localPk?this.node.localPk.slice(0,8)+"\u2026":""),this.headerIdentifier=this.node.localPk||""}updateTabBar(){if(this.lastUrl&&(this.lastUrl.includes("/info")||this.lastUrl.includes("/routing")||this.lastUrl.includes("/transports")||this.lastUrl.includes("/rewards")||this.lastUrl.includes("/skynet")||this.lastUrl.includes("/resources")||this.lastUrl.includes("/chat")||this.lastUrl.includes("/dmsg")||this.lastUrl.includes("/apps")&&!this.lastUrl.includes("/apps-list")))this.titleParts=["nodes.title","node.title"],this.tabsData=[{icon:"info",label:"node.tabs.info",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"info"]:null},{icon:"shuffle",label:"node.tabs.routing",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"routing"]:null},{icon:"swap_horiz",label:"node.tabs.transports",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"transports"]:null},{icon:"apps",label:"node.tabs.apps",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"apps"]:null},{icon:"monetization_on",label:"node.tabs.rewards",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"rewards"]:null},{icon:"public",label:"node.tabs.skynet",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"skynet"]:null},{icon:"memory",label:"node.tabs.resources",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"resources"]:null},{icon:"forum",label:"node.tabs.chat",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"chat"]:null},{icon:"device_hub",label:"node.tabs.dmsg",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"dmsg"]:null}],this.selectedTabIndex=0,this.lastUrl.includes("/routing")&&(this.selectedTabIndex=1),this.lastUrl.includes("/transports")&&(this.selectedTabIndex=2),this.lastUrl.includes("/apps")&&!this.lastUrl.includes("/apps-list")&&(this.selectedTabIndex=3),this.lastUrl.includes("/rewards")&&(this.selectedTabIndex=4),this.lastUrl.includes("/skynet")&&(this.selectedTabIndex=5),this.lastUrl.includes("/resources")&&(this.selectedTabIndex=6),this.lastUrl.includes("/chat")&&(this.selectedTabIndex=7),this.lastUrl.includes("/dmsg")&&(this.selectedTabIndex=8),this.showingFullList=!1,this.nodeActionsHelper=new gV(this.injector,this.showingFullList),this.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),this.node&&this.nodeActionsHelper.setCurrentNode(this.node);else if(this.lastUrl&&this.lastUrl.includes("/apps-list")){this.showingFullList=!0,this.nodeActionsHelper=new gV(this.injector,this.showingFullList),this.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),this.node&&this.nodeActionsHelper.setCurrentNode(this.node);const e="apps.apps-list";this.titleParts=["nodes.title","node.title",e+".title"],this.tabsData=[{icon:"view_headline",label:e+".list-title",linkParts:[]}],this.selectedTabIndex=0}else this.titleParts=[],this.tabsData=[]}performAction(e){this.nodeActionsHelper.performAction(e,t.currentNodeKey)}forceDataRefresh(e=!1){e&&(this.lastUpdateRequestedManually=!0),this.singleNodeDataService.forceSpecificNodeRefresh(t.currentNodeKey)}retryLoading(){this.loadFailed=!1,this.consecutiveLoadErrors=0,this.startGettingData(!1)}startGettingData(e){const i=e?this.getLocalValue(this.persistentDataResponseKey):null;let o=this.singleNodeDataService.startRequestingData(t.currentNodeKey);i&&(o=ae(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{if(performance.now(),console.log("[HV-DIAG] data event received",{updating:r?.updating,hasData:!!r?.data,hasError:!!r?.error,transports:r?.data?.transports?.length??"n/a",routes:r?.data?.routes?.length??"n/a",apps:r?.data?.apps?.length??"n/a"}),!i){const a=performance.now();this.saveLocalValue(this.persistentDataResponseKey,JSON.stringify(r)),console.log("[HV-DIAG] saveLocalValue took",(performance.now()-a).toFixed(1),"ms")}if(this.updating=!r||r.updating,console.log("[HV-DIAG] updating:",this.updating,"node set:",!!this.node,"notFound:",this.notFound,"loadFailed:",this.loadFailed),r&&!r.updating)if(r.data&&!r.error){const a=performance.now();this.ngZone.run(()=>{this.node=r.data,this.trafficData=r.trafficData,this.nodeLoaded=!0,this.refreshHeader()}),console.log("[HV-DIAG] node assigned, instance:",this.instanceId,"nodeLoaded:",this.nodeLoaded,"node.localPk:",this.node?.localPk?.substring(0,8),"transports:",this.node?.transports?.length,"routes:",this.node?.routes?.length);try{t.nodeSubject.next(this.node)}catch(l){console.error("[HV-DIAG] ERROR in nodeSubject.next:",l)}t.trafficDataSubject.next(this.trafficData),this.nodeActionsHelper&&this.nodeActionsHelper.setCurrentNode(this.node),this.snackbarService.closeCurrentIfTemporaryError(),this.lastUpdate=r.momentOfLastCorrectUpdate,this.secondsSinceLastUpdate=Math.floor((Date.now()-r.momentOfLastCorrectUpdate)/1e3),this.errorsUpdating=!1,this.consecutiveLoadErrors=0,this.loadFailed=!1,Xr.currentInstance.hideDataProblemMsg(),console.log("[HV-DIAG] data processing took",(performance.now()-a).toFixed(1),"ms"),console.log("[HV-DIAG] AFTER ASSIGNMENT: this.node is",this.node?"SET":"NULL","this.notFound:",this.notFound,"this.loadFailed:",this.loadFailed),this.cdr.detectChanges(),this.lastUpdateRequestedManually&&(this.snackbarService.showDone("common.refreshed",null),this.lastUpdateRequestedManually=!1)}else if(r.error){if(r.error.originalError&&400===r.error.originalError.status)return void(this.notFound=!0);if(this.consecutiveLoadErrors++,!this.node&&this.consecutiveLoadErrors>=3)return this.loadFailed=!0,this.singleNodeDataService.stopRequestingSpecificNode(t.currentNodeKey),this.snackbarService.showError("common.loading-error",null,!0,r.error),void Xr.currentInstance.showDataProblemMsg();this.errorsUpdating||this.snackbarService.showError(this.node?"node.error-load":"common.loading-error",null,!0,r.error),this.errorsUpdating=!0,Xr.currentInstance.showDataProblemMsg()}i&&this.startGettingData(!1)})}ngOnDestroy(){console.log("[HV-DIAG] ngOnDestroy, instance:",this.instanceId),this.singleNodeDataService.stopRequestingSpecificNode(t.currentNodeKey),this.dataSubscription.unsubscribe(),this.updateTimeSubscription.unsubscribe(),this.navigationsSubscription.unsubscribe(),this.initSubscription.unsubscribe(),t.currentInstanceInternal=void 0,t.currentNodeKey=void 0,t.nodeSubject.complete(),t.nodeSubject=void 0,t.trafficDataSubject.complete(),t.trafficDataSubject=void 0,this.nodeActionsHelper.dispose()}static{this.\u0275fac=function(i){return new(i||t)(O(ti),O(sye),O(Ai),O(_e),O(ct),O(He),O(Jt),O(vt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-node"]],standalone:!1,features:[be],decls:3,vars:2,consts:[["loadingBlock",""],[4,"ngIf","ngIfElse"],[1,"row"],[1,"col-12"],[3,"optionSelected","refreshRequested","titleParts","pageHeaderLabel","pageHeaderIdentifier","tabsData","selectedTabIndex","secondsSinceLastUpdate","showLoading","showAlert","refeshRate","optionsData","returnText"],[1,"full-size-main-area"],[1,"d-flex","flex-column","h-100"],[1,"d-flex","flex-column","h-100","w-100"],[3,"optionSelected","titleParts","pageHeaderLabel","pageHeaderIdentifier","tabsData","selectedTabIndex","showUpdateButton","optionsData","returnText"],[4,"ngIf"],[1,"w-100","h-100","d-flex","not-found-label"],[3,"inline"],["mat-raised-button","","color","primary",2,"margin-top","16px",3,"click"]],template:function(i,o){if(1&i&&it(0,aye,8,11,"ng-container",1)(1,uye,6,11,"ng-template",null,0,Rl),2&i){const r=Hn(2);C("ngIf",o.nodeLoaded)("ngIfElse",r)}},dependencies:[tf,eb,Pn,We,Yr,Mr,xe],styles:[".not-found-label[_ngcontent-%COMP%]{align-items:center;justify-content:center;font-size:1rem;position:relative}.not-found-label[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:5px;font-size:22px;opacity:.5;margin-right:3px}.full-size-main-area[_ngcontent-%COMP%], .main-area[_ngcontent-%COMP%]{width:100%}@media(min-width:992px){.main-area[_ngcontent-%COMP%]{width:73%;padding-right:20px;float:left}}.right-bar[_ngcontent-%COMP%]{width:27%;float:right;display:none}@media(min-width:992px){.right-bar[_ngcontent-%COMP%]{display:block;width:27%;float:right}}"]})}}return t})();function hye(t,n){if(1&t&&(h(0,"mat-option",9),p(1),b(2,"translate"),u()),2&t){const e=n.$implicit;C("value",Qt(e)),d(),gt(" ",e," ",y(2,4,"settings.seconds")," ")}}let fye=(()=>{class t{constructor(e,i,o){this.formBuilder=e,this.storageService=i,this.snackbarService=o,this.timesList=["3","5","10","15","30","60","90","150","300"]}ngOnInit(){this.form=this.formBuilder.group({refreshRate:[this.storageService.getRefreshTime().toString()]}),this.subscription=this.form.get("refreshRate").valueChanges.subscribe(e=>{this.storageService.setRefreshTime(e),this.snackbarService.showDone("settings.refresh-rate-confirmation")})}ngOnDestroy(){this.subscription.unsubscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(di),O(ti),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-refresh-rate"]],standalone:!1,decls:15,vars:8,consts:[[1,"rounded-elevated-box"],[1,"box-internal-container","overflow"],[1,"white-form-help-icon-container"],[1,"help-icon",3,"inline","matTooltip"],[3,"formGroup"],[1,"white-form-field"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","refreshRate"],[3,"value"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"div",2)(3,"mat-icon",3),b(4,"translate"),p(5," help "),u()(),h(6,"form",4)(7,"mat-form-field",5)(8,"div",6)(9,"label",7),p(10),b(11,"translate"),u(),h(12,"mat-select",8),ve(13,hye,3,6,"mat-option",9,Fe),u()()()()()()),2&i&&(d(3),C("inline",!0)("matTooltip",y(4,4,"settings.refresh-rate-help")),d(3),C("formGroup",o.form),d(4),M(y(11,6,"settings.refresh-rate")),d(3),ye(o.timesList))},dependencies:[xn,qt,wn,on,mn,sn,We,Kt,Pa,Qr,xe],styles:[".help-icon[_ngcontent-%COMP%]{display:inline}mat-form-field[_ngcontent-%COMP%]{margin-right:32px}mat-form-field[_ngcontent-%COMP%] .mat-mdc-form-field-bottom-align{margin-bottom:0!important}"]})}}return t})();const pye=t=>({number:t});let _V=(()=>{class t{constructor(){this.numberOfElements=0,this.linkParts=[""],this.queryParams={}}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=re({type:t,selectors:[["app-view-all-link"]],inputs:{numberOfElements:"numberOfElements",linkParts:"linkParts",queryParams:"queryParams"},standalone:!1,decls:6,vars:9,consts:[[1,"main-container"],[3,"routerLink","queryParams"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"a",1),p(2),b(3,"translate"),h(4,"mat-icon",2),p(5,"chevron_right"),u()()()),2&i&&(d(),C("routerLink",o.linkParts)("queryParams",o.queryParams),d(),E(" ",pe(3,4,"view-all-link.label",se(7,pye,o.numberOfElements))," "),d(2),C("inline",!0))},dependencies:[Is,We,xe],styles:[".main-container[_ngcontent-%COMP%]{padding-top:20px;margin-bottom:4px;text-align:right;font-size:.875rem}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.main-container[_ngcontent-%COMP%]{margin:0;padding:16px}}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#f8f9f9;text-decoration:none}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}"]})}}return t})();const mye=t=>({"paginator-icons-fixer":t}),Tk=()=>["/settings","labels"],gye=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),_ye=t=>({"d-lg-none d-xl-table":t}),bye=t=>({"d-lg-table d-xl-none":t});function vye(t,n){1&t&&(h(0,"span",3),p(1),b(2,"translate"),h(3,"mat-icon",14),b(4,"translate"),p(5,"help"),u()()),2&t&&(d(),E(" ",y(2,3,"labels.title")," "),d(2),C("inline",!0)("matTooltip",y(4,5,"labels.info")))}function yye(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().$implicit.translatableValue)," ")}function Cye(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.value," ")}function wye(t,n){if(1&t&&(h(0,"div",16)(1,"span"),p(2),b(3,"translate"),u(),x(4,yye,2,3),x(5,Cye,1,1),u()),2&t){const e=n.$implicit;d(2),E("",y(3,3,e.filterName),": "),d(2),S(e.translatableValue?4:-1),d(),S(e.value?5:-1)}}function xye(t,n){if(1&t){const e=oe();h(0,"div",15),F("click",function(){return j(e),U(v().dataFilterer.removeFilters())}),ve(1,wye,6,5,"div",16,Fe),h(3,"div",17),p(4),b(5,"translate"),u()()}if(2&t){const e=v();d(),ye(e.dataFilterer.currentFiltersTexts),d(3),M(y(5,1,"filters.press-to-remove"))}}function Sye(t,n){if(1&t){const e=oe();h(0,"mat-icon",18),b(1,"translate"),F("click",function(){return j(e),U(v().dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",y(1,2,"filters.filter-action"))}function kye(t,n){if(1&t&&(h(0,"mat-icon",8),p(1,"more_horiz"),u()),2&t){v();const e=Hn(9);C("inline",!0)("matMenuTriggerFor",e)}}function Dye(t,n){if(1&t&&B(0,"app-paginator",12),2&t){const e=v();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",Ct(4,Tk))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function Mye(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Tye(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Eye(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Pye(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td",30)(2,"mat-checkbox",31),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),b(9,"translate"),u(),h(10,"td",23)(11,"button",32),b(12,"translate"),F("click",function(){const o=j(e).$implicit;return U(v(2).delete(o.id))}),h(13,"mat-icon",22),p(14,"close"),u()()()()}if(2&t){const e=n.$implicit,i=v(2);d(2),C("checked",i.selections.get(e.id)),d(2),E(" ",e.label," "),d(2),E(" ",e.id," "),d(2),gt(" ",i.getLabelTypeIdentification(e)[0]," - ",y(9,7,i.getLabelTypeIdentification(e)[1])," "),d(3),C("matTooltip",y(12,9,"labels.delete")),d(2),C("inline",!0)}}function Iye(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.label")," ")}function Oye(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.inverted-order")," ")}function Aye(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td")(2,"div",26)(3,"div",33)(4,"mat-checkbox",31),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(5,"div",27)(6,"div",34)(7,"span",2),p(8),b(9,"translate"),u(),p(10),u(),h(11,"div",35)(12,"span",2),p(13),b(14,"translate"),u(),p(15),u(),h(16,"div",34)(17,"span",2),p(18),b(19,"translate"),u(),p(20),b(21,"translate"),u()(),B(22,"div",36),h(23,"div",28)(24,"button",37),b(25,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(2);return o.stopPropagation(),U(s.showOptionsDialog(r))}),h(26,"mat-icon"),p(27),u()()()()()()}if(2&t){const e=n.$implicit,i=v(2);d(4),C("checked",i.selections.get(e.id)),d(4),M(y(9,10,"labels.label")),d(2),E(": ",e.label," "),d(3),M(y(14,12,"labels.id")),d(2),E(": ",e.id," "),d(3),M(y(19,14,"labels.type")),d(2),gt(": ",i.getLabelTypeIdentification(e)[0]," - ",y(21,16,i.getLabelTypeIdentification(e)[1])," "),d(4),C("matTooltip",y(25,18,"common.options")),d(3),M("add")}}function Rye(t,n){if(1&t&&B(0,"app-view-all-link",29),2&t){const e=v(2);C("numberOfElements",e.filteredLabels.length)("linkParts",Ct(3,Tk))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function Fye(t,n){if(1&t){const e=oe();h(0,"div",13)(1,"div",19)(2,"table",20)(3,"tr"),B(4,"th"),h(5,"th",21),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.labelSortData))}),p(6),b(7,"translate"),x(8,Mye,2,2,"mat-icon",22),u(),h(9,"th",21),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.idSortData))}),p(10),b(11,"translate"),x(12,Tye,2,2,"mat-icon",22),u(),h(13,"th",21),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.typeSortData))}),p(14),b(15,"translate"),x(16,Eye,2,2,"mat-icon",22),u(),B(17,"th",23),u(),ve(18,Pye,15,11,"tr",null,Fe),u(),h(20,"table",24)(21,"tr",25),F("click",function(){return j(e),U(v().dataSorter.openSortingOrderModal())}),h(22,"td")(23,"div",26)(24,"div",27)(25,"div",2),p(26),b(27,"translate"),u(),h(28,"div"),p(29),b(30,"translate"),x(31,Iye,2,3),x(32,Oye,2,3),u()(),h(33,"div",28)(34,"mat-icon",22),p(35,"keyboard_arrow_down"),u()()()()(),ve(36,Aye,28,20,"tr",null,Fe),u(),x(38,Rye,1,4,"app-view-all-link",29),u()()}if(2&t){const e=v();d(),C("ngClass",_t(25,gye,e.showShortList_,!e.showShortList_)),d(),C("ngClass",se(28,_ye,e.showShortList_)),d(4),E(" ",y(7,15,"labels.label")," "),d(2),S(e.dataSorter.currentSortingColumn===e.labelSortData?8:-1),d(2),E(" ",y(11,17,"labels.id")," "),d(2),S(e.dataSorter.currentSortingColumn===e.idSortData?12:-1),d(2),E(" ",y(15,19,"labels.type")," "),d(2),S(e.dataSorter.currentSortingColumn===e.typeSortData?16:-1),d(2),ye(e.dataSource),d(2),C("ngClass",se(30,bye,e.showShortList_)),d(6),M(y(27,21,"tables.sorting-title")),d(3),E("",y(30,23,e.dataSorter.currentSortingColumn.label)," "),d(2),S(e.dataSorter.currentlySortingByLabel?31:-1),d(),S(e.dataSorter.sortingInReverseOrder?32:-1),d(2),C("inline",!0),d(2),ye(e.dataSource),d(2),S(e.showShortList_&&e.numberOfPages>1?38:-1)}}function Nye(t,n){1&t&&(h(0,"span",40),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"labels.empty")))}function Lye(t,n){1&t&&(h(0,"span",40),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"labels.empty-with-filter")))}function Bye(t,n){if(1&t&&(h(0,"div",13)(1,"div",38)(2,"mat-icon",39),p(3,"warning"),u(),x(4,Nye,3,3,"span",40),x(5,Lye,3,3,"span",40),u()()),2&t){const e=v();d(2),C("inline",!0),d(2),S(0===e.allLabels.length?4:-1),d(),S(0!==e.allLabels.length?5:-1)}}function Vye(t,n){if(1&t&&B(0,"app-paginator",12),2&t){const e=v();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",Ct(4,Tk))("queryParams",e.dataFilterer.currentUrlQueryParams)}}let bV=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter.setData(this.filteredLabels)}constructor(e,i,o,r,s,a){this.dialog=e,this.route=i,this.router=o,this.snackbarService=r,this.translateService=s,this.storageService=a,this.listId="ll",this.labelSortData=new Dt(["label"],"labels.label",st.Text),this.idSortData=new Dt(["id"],"labels.id",st.Text),this.typeSortData=new Dt(["identifiedElementType_sort"],"labels.type",st.Text),this.selections=new Map,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"labels.filter-dialog.label",keyNameInElementsArray:"label",type:Sn.TextInput,maxlength:100},{filterName:"labels.filter-dialog.id",keyNameInElementsArray:"id",type:Sn.TextInput,maxlength:66},{filterName:"labels.filter-dialog.type",keyNameInElementsArray:"identifiedElementType",type:Sn.Select,printableLabelsForValues:[{value:"",label:"labels.filter-dialog.type-options.any"},{value:ro.Node,label:"labels.filter-dialog.type-options.visor"},{value:ro.DmsgServer,label:"labels.filter-dialog.type-options.dmsg-server"},{value:ro.Transport,label:"labels.filter-dialog.type-options.transport"}]}],this.dataSorter=new gu(this.dialog,this.translateService,this.storageService,[this.labelSortData,this.idSortData,this.typeSortData],0,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new _u(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(c=>{this.filteredLabels=c,this.dataSorter.setData(this.filteredLabels)}),this.loadData(),this.navigationsSubscription=this.route.paramMap.subscribe(c=>{if(c.has("page")){let f=Number.parseInt(c.get("page"),10);(isNaN(f)||f<1)&&(f=1),this.currentPageInUrl=f,this.recalculateElementsToShow()}})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose()}loadData(){this.allLabels=this.storageService.getSavedLabels(),this.allLabels.forEach(e=>{e.identifiedElementType_sort=this.getLabelTypeIdentification(e)[0]}),this.dataFilterer.setData(this.allLabels)}getLabelTypeIdentification(e){return e.identifiedElementType===ro.Node?["1","labels.filter-dialog.type-options.visor"]:e.identifiedElementType===ro.DmsgServer?["2","labels.filter-dialog.type-options.dmsg-server"]:e.identifiedElementType===ro.Transport?["3","labels.filter-dialog.type-options.transport"]:void 0}changeSelection(e){this.selections.get(e.id)?this.selections.set(e.id,!1):this.selections.set(e.id,!0)}hasSelectedElements(){if(!this.selections)return!1;let e=!1;return this.selections.forEach(i=>{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}deleteSelected(){const e=Rt.createConfirmationDialog(this.dialog,"labels.delete-selected-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.close(),this.selections.forEach((i,o)=>{i&&this.storageService.saveLabel(o,"",null)}),this.snackbarService.showDone("labels.deleted"),this.loadData()})}showOptionsDialog(e){ao.openDialog(this.dialog,[{icon:"close",label:"labels.delete"}],"common.options").afterClosed().subscribe(o=>{1===o&&this.delete(e.id)})}delete(e){const i=Rt.createConfirmationDialog(this.dialog,"labels.delete-confirmation");i.componentInstance.operationAccepted.subscribe(()=>{i.close(),this.storageService.saveLabel(e,"",null),this.snackbarService.showDone("labels.deleted"),this.loadData()})}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredLabels){const e=this.showShortList_?rt.maxShortListElements:rt.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredLabels.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.labelsToShow=this.filteredLabels.slice(i,i+e);const r=new Map;this.labelsToShow.forEach(a=>{r.set(a.id,!0),this.selections.has(a.id)||this.selections.set(a.id,!1)});const s=[];this.selections.forEach((a,l)=>{r.has(l)||s.push(l)}),s.forEach(a=>{this.selections.delete(a)})}else this.labelsToShow=null,this.selections=new Map;this.dataSource=this.labelsToShow}static{this.\u0275fac=function(i){return new(i||t)(O(Ot),O(Ai),O(vt),O(ct),O(Go),O(ti))}}static{this.\u0275cmp=re({type:t,selectors:[["app-label-list"]],inputs:{showShortList:"showShortList"},standalone:!1,decls:23,vars:23,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"inline","matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"click"],[3,"inline"],[1,"actions"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[3,"numberOfElements","linkParts","queryParams"],[1,"selection-col"],[3,"change","checked"],["mat-button","",1,"action-button","transparent-button",3,"click","matTooltip"],[1,"check-part"],[1,"list-row"],[1,"list-row","long-content"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,vye,6,7,"span",3),x(3,xye,6,3,"div",4),u(),h(4,"div",5)(5,"div",6),x(6,Sye,3,4,"mat-icon",7),x(7,kye,2,2,"mat-icon",8),h(8,"mat-menu",9,0)(10,"div",10),F("click",function(){return o.changeAllSelections(!0)}),p(11),b(12,"translate"),u(),h(13,"div",10),F("click",function(){return o.changeAllSelections(!1)}),p(14),b(15,"translate"),u(),h(16,"div",11),F("click",function(){return o.deleteSelected()}),p(17),b(18,"translate"),u()()(),x(19,Dye,1,5,"app-paginator",12),u()(),x(20,Fye,39,32,"div",13),x(21,Bye,6,3,"div",13),x(22,Vye,1,5,"app-paginator",12)),2&i&&(C("ngClass",se(21,mye,!o.showShortList_&&o.numberOfPages>1&&o.dataSource)),d(2),S(o.showShortList_?2:-1),d(),S(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?3:-1),d(3),S(o.allLabels&&o.allLabels.length>0?6:-1),d(),S(o.dataSource&&o.dataSource.length>0?7:-1),d(),C("overlapTrigger",!1),d(3),E(" ",y(12,15,"selection.select-all")," "),d(3),E(" ",y(15,17,"selection.unselect-all")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(18,19,"selection.delete-all")," "),d(2),S(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?19:-1),d(),S(o.dataSource&&o.dataSource.length>0?20:-1),d(),S(o.dataSource&&0!==o.dataSource.length?-1:21),d(),S(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?22:-1))},dependencies:[$t,Pn,Wo,We,Kt,Jr,As,vu,kr,_V,mv,xe],styles:[".overflow[_ngcontent-%COMP%]{display:block;width:100%;overflow-x:auto}.overflow[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{width:100%}.actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"]})}}return t})();const Hye=()=>["start.title"];function jye(t,n){1&t&&B(0,"app-password")}function Uye(t,n){1&t&&(h(0,"div",5),B(1,"mat-spinner",7),p(2),b(3,"translate"),u()),2&t&&(d(),C("diameter",11),d(),E(" ",y(3,2,"settings.checking-auth")," "))}let zye=(()=>{class t extends pn{constructor(e,i,o,r){super(),this.authService=e,this.router=i,this.snackbarService=o,this.dialog=r,this.persistentAuthDataResponseKey="serv-aut-response",this.tabsData=[],this.options=[],this.waitBeforeShowingLoading=!0,this.authChecked=!1,this.authActive=!1,this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}],this.updateOptionsMenu()}ngOnInit(){return setTimeout(()=>{this.waitBeforeShowingLoading=!1},500),this.checkAuth(0,!0),super.ngOnInit()}checkAuth(e,i){const o=i?this.getLocalValue(this.persistentAuthDataResponseKey):null;let r=this.authService.checkLogin();o&&(r=ae(JSON.parse(o.value))),this.authSubscription=ae(1).pipe(li(e),It(()=>r)).subscribe(s=>{o||this.saveLocalValue(this.persistentAuthDataResponseKey,JSON.stringify(s)),this.authChecked=!0,this.authActive=s===ka.Logged,this.updateOptionsMenu(),o&&this.checkAuth(0,!1)},()=>{this.checkAuth(15e3,!1)})}ngOnDestroy(){this.authSubscription.unsubscribe()}updateOptionsMenu(){this.options=[],this.authActive&&(this.options=[{name:"common.logout",actionName:"logout",icon:"power_settings_new"}])}performAction(e){"logout"===e&&this.logout()}logout(){const e=Rt.createConfirmationDialog(this.dialog,"common.logout-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.authService.logout().subscribe(()=>this.router.navigate(["login"]),()=>this.snackbarService.showError("common.logout-error"))})}static{this.\u0275fac=function(i){return new(i||t)(O(Yf),O(vt),O(ct),O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-settings"]],standalone:!1,features:[be],decls:8,vars:9,consts:[[1,"row"],[1,"col-12"],[3,"optionSelected","titleParts","tabsData","selectedTabIndex","showUpdateButton","optionsData"],[1,"content","col-12","mt-4.5"],[1,"d-block","mb-4"],[1,"white-theme","checking-container"],[3,"showShortList"],[3,"diameter"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"app-top-bar",2),F("optionSelected",function(s){return o.performAction(s)}),u()(),h(3,"div",3),B(4,"app-refresh-rate",4),x(5,jye,1,0,"app-password"),x(6,Uye,4,4,"div",5),B(7,"app-label-list",6),u()()),2&i&&(d(2),C("titleParts",Ct(8,Hye))("tabsData",o.tabsData)("selectedTabIndex",7)("showUpdateButton",!1)("optionsData",o.options),d(3),S(o.authChecked&&o.authActive?5:-1),d(),S(o.authChecked||o.waitBeforeShowingLoading?-1:6),d(),C("showShortList",!0))},dependencies:[so,$B,fye,Mr,bV,xe],styles:[".checking-container[_ngcontent-%COMP%]{font-size:10px;opacity:.5}.checking-container[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%]{display:inline-block}.show-link[_ngcontent-%COMP%]{cursor:pointer;font-size:.8rem}"]})}}return t})(),Ek=(()=>{class t{constructor(e){this.apiService=e}get(e,i){return this.apiService.get(`visors/${e}/routes/${i}`)}delete(e,i){return this.apiService.delete(`visors/${e}/routes/${i}`)}setMinHops(e,i){return this.apiService.post(`visors/${e}/min-hops`,{min_hops:i})}static{this.\u0275fac=function(i){return new(i||t)(ce(zi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function yu(t){return t+.5|0}const Fs=(t,n,e)=>Math.max(Math.min(t,e),n);function sp(t){return Fs(yu(2.55*t),0,255)}function Oa(t){return Fs(yu(255*t),0,255)}function Ns(t){return Fs(yu(t/2.55)/100,0,1)}function vV(t){return Fs(yu(100*t),0,100)}const Qo={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pk=[..."0123456789ABCDEF"],$ye=t=>Pk[15&t],Wye=t=>Pk[(240&t)>>4]+Pk[15&t],_v=t=>(240&t)>>4==(15&t);const Xye=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function yV(t,n,e){const i=n*Math.min(e,1-e),o=(r,s=(r+t/30)%12)=>e-i*Math.max(Math.min(s-3,9-s,1),-1);return[o(0),o(8),o(4)]}function Zye(t,n,e){const i=(o,r=(o+t/60)%6)=>e-e*n*Math.max(Math.min(r,4-r,1),0);return[i(5),i(3),i(1)]}function Qye(t,n,e){const i=yV(t,1,.5);let o;for(n+e>1&&(o=1/(n+e),n*=o,e*=o),o=0;o<3;o++)i[o]*=1-n-e,i[o]+=n;return i}function Ik(t){const e=t.r/255,i=t.g/255,o=t.b/255,r=Math.max(e,i,o),s=Math.min(e,i,o),a=(r+s)/2;let l,c,f;return r!==s&&(f=r-s,c=a>.5?f/(2-r-s):f/(r+s),l=function Jye(t,n,e,i,o){return t===o?(n-e)/i+(nt<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Cu=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function vv(t,n,e){if(t){let i=Ik(t);i[n]=Math.max(0,Math.min(i[n]+i[n]*e,0===n?360:1)),i=Ak(i),t.r=i[0],t.g=i[1],t.b=i[2]}}function SV(t,n){return t&&Object.assign(n||{},t)}function kV(t){var n={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(n={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(n.a=Oa(t[3]))):(n=SV(t,{r:0,g:0,b:0,a:1})).a=Oa(n.a),n}function uCe(t){return"r"===t.charAt(0)?function lCe(t){const n=aCe.exec(t);let i,o,r,e=255;if(n){if(n[7]!==i){const s=+n[7];e=n[8]?sp(s):Fs(255*s,0,255)}return i=+n[1],o=+n[3],r=+n[5],i=255&(n[2]?sp(i):Fs(i,0,255)),o=255&(n[4]?sp(o):Fs(o,0,255)),r=255&(n[6]?sp(r):Fs(r,0,255)),{r:i,g:o,b:r,a:e}}}(t):function nCe(t){const n=Xye.exec(t);let i,e=255;if(!n)return;n[5]!==i&&(e=n[6]?sp(+n[5]):Oa(+n[5]));const o=CV(+n[2]),r=+n[3]/100,s=+n[4]/100;return i="hwb"===n[1]?function eCe(t,n,e){return Ok(Qye,t,n,e)}(o,r,s):"hsv"===n[1]?function tCe(t,n,e){return Ok(Zye,t,n,e)}(o,r,s):Ak(o,r,s),{r:i[0],g:i[1],b:i[2],a:e}}(t)}class wu{constructor(n){if(n instanceof wu)return n;const e=typeof n;let i;"object"===e?i=kV(n):"string"===e&&(i=function qye(t){var e,n=t.length;return"#"===t[0]&&(4===n||5===n?e={r:255&17*Qo[t[1]],g:255&17*Qo[t[2]],b:255&17*Qo[t[3]],a:5===n?17*Qo[t[4]]:255}:(7===n||9===n)&&(e={r:Qo[t[1]]<<4|Qo[t[2]],g:Qo[t[3]]<<4|Qo[t[4]],b:Qo[t[5]]<<4|Qo[t[6]],a:9===n?Qo[t[7]]<<4|Qo[t[8]]:255})),e}(n)||function sCe(t){bv||(bv=function rCe(){const t={},n=Object.keys(xV),e=Object.keys(wV);let i,o,r,s,a;for(i=0;i>16&255,r>>8&255,255&r]}return t}(),bv.transparent=[0,0,0,0]);const n=bv[t.toLowerCase()];return n&&{r:n[0],g:n[1],b:n[2],a:4===n.length?n[3]:255}}(n)||uCe(n)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var n=SV(this._rgb);return n&&(n.a=Ns(n.a)),n}set rgb(n){this._rgb=kV(n)}rgbString(){return this._valid?function cCe(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${Ns(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}(this._rgb):void 0}hexString(){return this._valid?function Yye(t){var n=(t=>_v(t.r)&&_v(t.g)&&_v(t.b)&&_v(t.a))(t)?$ye:Wye;return t?"#"+n(t.r)+n(t.g)+n(t.b)+((t,n)=>t<255?n(t):"")(t.a,n):void 0}(this._rgb):void 0}hslString(){return this._valid?function oCe(t){if(!t)return;const n=Ik(t),e=n[0],i=vV(n[1]),o=vV(n[2]);return t.a<255?`hsla(${e}, ${i}%, ${o}%, ${Ns(t.a)})`:`hsl(${e}, ${i}%, ${o}%)`}(this._rgb):void 0}mix(n,e){if(n){const i=this.rgb,o=n.rgb;let r;const s=e===r?.5:e,a=2*s-1,l=i.a-o.a,c=((a*l===-1?a:(a+l)/(1+a*l))+1)/2;r=1-c,i.r=255&c*i.r+r*o.r+.5,i.g=255&c*i.g+r*o.g+.5,i.b=255&c*i.b+r*o.b+.5,i.a=s*i.a+(1-s)*o.a,this.rgb=i}return this}interpolate(n,e){return n&&(this._rgb=function dCe(t,n,e){const i=Cu(Ns(t.r)),o=Cu(Ns(t.g)),r=Cu(Ns(t.b));return{r:Oa(Rk(i+e*(Cu(Ns(n.r))-i))),g:Oa(Rk(o+e*(Cu(Ns(n.g))-o))),b:Oa(Rk(r+e*(Cu(Ns(n.b))-r))),a:t.a+e*(n.a-t.a)}}(this._rgb,n._rgb,e)),this}clone(){return new wu(this.rgb)}alpha(n){return this._rgb.a=Oa(n),this}clearer(n){return this._rgb.a*=1-n,this}greyscale(){const n=this._rgb,e=yu(.3*n.r+.59*n.g+.11*n.b);return n.r=n.g=n.b=e,this}opaquer(n){return this._rgb.a*=1+n,this}negate(){const n=this._rgb;return n.r=255-n.r,n.g=255-n.g,n.b=255-n.b,this}lighten(n){return vv(this._rgb,2,n),this}darken(n){return vv(this._rgb,2,-n),this}saturate(n){return vv(this._rgb,1,n),this}desaturate(n){return vv(this._rgb,1,-n),this}rotate(n){return function iCe(t,n){var e=Ik(t);e[0]=CV(e[0]+n),e=Ak(e),t.r=e[0],t.g=e[1],t.b=e[2]}(this._rgb,n),this}}const hCe=(()=>{let t=0;return()=>t++})();function dt(t){return null==t}function vn(t){if(Array.isArray&&Array.isArray(t))return!0;const n=Object.prototype.toString.call(t);return"[object"===n.slice(0,7)&&"Array]"===n.slice(-6)}function ft(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function jn(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function Oo(t,n){return jn(t)?t:n}function Ge(t,n){return typeof t>"u"?n:t}function ln(t,n,e){if(t&&"function"==typeof t.call)return t.apply(e,n)}function Vt(t,n,e,i){let o,r,s;if(vn(t))if(r=t.length,i)for(o=r-1;o>=0;o--)n.call(e,t[o],o);else for(o=0;ot,x:t=>t.x,y:t=>t.y};function Aa(t,n){return(TV[n]||(TV[n]=function _Ce(t){const n=function gCe(t){const n=t.split("."),e=[];let i="";for(const o of n)i+=o,i.endsWith("\\")?i=i.slice(0,-1)+".":(e.push(i),i="");return e}(t);return e=>{for(const i of n){if(""===i)break;e=e&&e[i]}return e}}(n)))(t)}function Fk(t){return t.charAt(0).toUpperCase()+t.slice(1)}const cp=t=>typeof t<"u",Ra=t=>"function"==typeof t,EV=(t,n)=>{if(t.size!==n.size)return!1;for(const e of t)if(!n.has(e))return!1;return!0},Mt=Math.PI,yn=2*Mt,vCe=yn+Mt,wv=Number.POSITIVE_INFINITY,yCe=Mt/180,Xn=Mt/2,pc=Mt/4,PV=2*Mt/3,Fa=Math.log10,ts=Math.sign;function dp(t,n,e){return Math.abs(t-n)l&&c=Math.min(n,e)-i&&t<=Math.max(n,e)+i}function Bk(t,n,e){e=e||(s=>t[s]1;)r=o+i>>1,e(r)?o=r:i=r;return{lo:o,hi:i}}const Vs=(t,n,e,i)=>Bk(t,e,i?o=>{const r=t[o][n];return rt[o][n]Bk(t,e,i=>t[i][n]>=e),FV=["push","pop","shift","splice","unshift"];function NV(t,n){const e=t._chartjs;if(!e)return;const i=e.listeners,o=i.indexOf(n);-1!==o&&i.splice(o,1),!(i.length>0)&&(FV.forEach(r=>{delete t[r]}),delete t._chartjs)}const BV=typeof window>"u"?function(t){return t()}:window.requestAnimationFrame;function VV(t,n){let e=[],i=!1;return function(...o){e=o,i||(i=!0,BV.call(window,()=>{i=!1,t.apply(n,e)}))}}const qi=(t,n,e)=>"start"===t?n:"end"===t?e:(n+e)/2;const xv=t=>0===t||1===t,UV=(t,n,e)=>-Math.pow(2,10*(t-=1))*Math.sin((t-n)*yn/e),zV=(t,n,e)=>Math.pow(2,-10*t)*Math.sin((t-n)*yn/e)+1,hp={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*Xn),easeOutSine:t=>Math.sin(t*Xn),easeInOutSine:t=>-.5*(Math.cos(Mt*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>xv(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>xv(t)?t:UV(t,.075,.3),easeOutElastic:t=>xv(t)?t:zV(t,.075,.3),easeInOutElastic:t=>xv(t)?t:t<.5?.5*UV(2*t,.1125,.45):.5+.5*zV(2*t-1,.1125,.45),easeInBack:t=>t*t*(2.70158*t-1.70158),easeOutBack:t=>(t-=1)*t*(2.70158*t+1.70158)+1,easeInOutBack(t){let n=1.70158;return(t/=.5)<1?t*t*((1+(n*=1.525))*t-n)*.5:.5*((t-=2)*t*((1+(n*=1.525))*t+n)+2)},easeInBounce:t=>1-hp.easeOutBounce(1-t),easeOutBounce:t=>t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,easeInOutBounce:t=>t<.5?.5*hp.easeInBounce(2*t):.5*hp.easeOutBounce(2*t-1)+.5};function Hk(t){if(t&&"object"==typeof t){const n=t.toString();return"[object CanvasPattern]"===n||"[object CanvasGradient]"===n}return!1}function $V(t){return Hk(t)?t:new wu(t)}function jk(t){return Hk(t)?t:new wu(t).saturate(.5).darken(.1).hexString()}const ICe=["x","y","borderWidth","radius","tension"],OCe=["color","borderColor","backgroundColor"],WV=new Map;function fp(t,n,e){return function FCe(t,n){n=n||{};const e=t+JSON.stringify(n);let i=WV.get(e);return i||(i=new Intl.NumberFormat(t,n),WV.set(e,i)),i}(n,e).format(t)}const GV={values:t=>vn(t)?t:""+t,numeric(t,n,e){if(0===t)return"0";const i=this.chart.options.locale;let o,r=t;if(e.length>1){const c=Math.max(Math.abs(e[0].value),Math.abs(e[e.length-1].value));(c<1e-4||c>1e15)&&(o="scientific"),r=function NCe(t,n){let e=n.length>3?n[2].value-n[1].value:n[1].value-n[0].value;return Math.abs(e)>=1&&t!==Math.floor(t)&&(e=t-Math.floor(t)),e}(t,e)}const s=Fa(Math.abs(r)),a=isNaN(s)?1:Math.max(Math.min(-1*Math.floor(s),20),0),l={notation:o,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),fp(t,i,l)},logarithmic(t,n,e){if(0===t)return"0";const i=e[n].significand||t/Math.pow(10,Math.floor(Fa(t)));return[1,2,3,5,10,15].includes(i)||n>.8*e.length?GV.numeric.call(this,t,n,e):""}};var Sv={formatters:GV};const mc=Object.create(null),Uk=Object.create(null);function pp(t,n){if(!n)return t;const e=n.split(".");for(let i=0,o=e.length;ii.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(i,o)=>jk(o.backgroundColor),this.hoverBorderColor=(i,o)=>jk(o.borderColor),this.hoverColor=(i,o)=>jk(o.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(n),this.apply(e)}set(n,e){return zk(this,n,e)}get(n){return pp(this,n)}describe(n,e){return zk(Uk,n,e)}override(n,e){return zk(mc,n,e)}route(n,e,i,o){const r=pp(this,n),s=pp(this,i),a="_"+e;Object.defineProperties(r,{[a]:{value:r[e],writable:!0},[e]:{enumerable:!0,get(){const l=this[a],c=s[o];return ft(l)?Object.assign({},c,l):Ge(l,c)},set(l){this[a]=l}}})}apply(n){n.forEach(e=>e(this))}}var kn=new BCe({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function ACe(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:n=>"onProgress"!==n&&"onComplete"!==n&&"fn"!==n}),t.set("animations",{colors:{type:"color",properties:OCe},numbers:{type:"number",properties:ICe}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:n=>0|n}}}})},function RCe(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function LCe(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(n,e)=>e.lineWidth,tickColor:(n,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Sv.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:n=>!n.startsWith("before")&&!n.startsWith("after")&&"callback"!==n&&"parser"!==n,_indexable:n=>"borderDash"!==n&&"tickBorderDash"!==n&&"dash"!==n}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:n=>"backdropPadding"!==n&&"callback"!==n,_indexable:n=>"backdropPadding"!==n})}]);function kv(t,n,e,i,o){let r=n[o];return r||(r=n[o]=t.measureText(o).width,e.push(o)),r>i&&(i=r),i}function gc(t,n,e){const i=t.currentDevicePixelRatio,o=0!==e?Math.max(e/2,.5):0;return Math.round((n-o)*i)/i+o}function qV(t,n){!n&&!t||((n=n||t.getContext("2d")).save(),n.resetTransform(),n.clearRect(0,0,t.width,t.height),n.restore())}function $k(t,n,e,i){!function KV(t,n,e,i,o){let r,s,a,l,c,f,m,g;const _=n.pointStyle,w=n.rotation,k=n.radius;let T=(w||0)*yCe;if(_&&"object"==typeof _&&(r=_.toString(),"[object HTMLImageElement]"===r||"[object HTMLCanvasElement]"===r))return t.save(),t.translate(e,i),t.rotate(T),t.drawImage(_,-_.width/2,-_.height/2,_.width,_.height),void t.restore();if(!(isNaN(k)||k<=0)){switch(t.beginPath(),_){default:o?t.ellipse(e,i,o/2,k,0,0,yn):t.arc(e,i,k,0,yn),t.closePath();break;case"triangle":f=o?o/2:k,t.moveTo(e+Math.sin(T)*f,i-Math.cos(T)*k),T+=PV,t.lineTo(e+Math.sin(T)*f,i-Math.cos(T)*k),T+=PV,t.lineTo(e+Math.sin(T)*f,i-Math.cos(T)*k),t.closePath();break;case"rectRounded":c=.516*k,l=k-c,s=Math.cos(T+pc)*l,m=Math.cos(T+pc)*(o?o/2-c:l),a=Math.sin(T+pc)*l,g=Math.sin(T+pc)*(o?o/2-c:l),t.arc(e-m,i-a,c,T-Mt,T-Xn),t.arc(e+g,i-s,c,T-Xn,T),t.arc(e+m,i+a,c,T,T+Xn),t.arc(e-g,i+s,c,T+Xn,T+Mt),t.closePath();break;case"rect":if(!w){l=Math.SQRT1_2*k,f=o?o/2:l,t.rect(e-f,i-l,2*f,2*l);break}T+=pc;case"rectRot":m=Math.cos(T)*(o?o/2:k),s=Math.cos(T)*k,a=Math.sin(T)*k,g=Math.sin(T)*(o?o/2:k),t.moveTo(e-m,i-a),t.lineTo(e+g,i-s),t.lineTo(e+m,i+a),t.lineTo(e-g,i+s),t.closePath();break;case"crossRot":T+=pc;case"cross":m=Math.cos(T)*(o?o/2:k),s=Math.cos(T)*k,a=Math.sin(T)*k,g=Math.sin(T)*(o?o/2:k),t.moveTo(e-m,i-a),t.lineTo(e+m,i+a),t.moveTo(e+g,i-s),t.lineTo(e-g,i+s);break;case"star":m=Math.cos(T)*(o?o/2:k),s=Math.cos(T)*k,a=Math.sin(T)*k,g=Math.sin(T)*(o?o/2:k),t.moveTo(e-m,i-a),t.lineTo(e+m,i+a),t.moveTo(e+g,i-s),t.lineTo(e-g,i+s),T+=pc,m=Math.cos(T)*(o?o/2:k),s=Math.cos(T)*k,a=Math.sin(T)*k,g=Math.sin(T)*(o?o/2:k),t.moveTo(e-m,i-a),t.lineTo(e+m,i+a),t.moveTo(e+g,i-s),t.lineTo(e-g,i+s);break;case"line":s=o?o/2:Math.cos(T)*k,a=Math.sin(T)*k,t.moveTo(e-s,i-a),t.lineTo(e+s,i+a);break;case"dash":t.moveTo(e,i),t.lineTo(e+Math.cos(T)*(o?o/2:k),i+Math.sin(T)*k);break;case!1:t.closePath()}t.fill(),n.borderWidth>0&&t.stroke()}}(t,n,e,i,null)}function Hs(t,n,e){return e=e||.5,!n||t&&t.x>n.left-e&&t.xn.top-e&&t.y0&&""!==r.strokeColor;let l,c;for(t.save(),t.font=o.string,function zCe(t,n){n.translation&&t.translate(n.translation[0],n.translation[1]),dt(n.rotation)||t.rotate(n.rotation),n.color&&(t.fillStyle=n.color),n.textAlign&&(t.textAlign=n.textAlign),n.textBaseline&&(t.textBaseline=n.textBaseline)}(t,r),l=0;l+t||0;function YV(t){return function Wk(t,n){const e={},i=ft(n),o=i?Object.keys(n):n,r=ft(t)?i?s=>Ge(t[s],t[n[s]]):s=>t[s]:()=>t;for(const s of o)e[s]=YCe(r(s));return e}(t,{top:"y",right:"x",bottom:"y",left:"x"})}function Ki(t){const n=YV(t);return n.width=n.left+n.right,n.height=n.top+n.bottom,n}function fi(t,n){let e=Ge((t=t||{}).size,(n=n||kn.font).size);"string"==typeof e&&(e=parseInt(e,10));let i=Ge(t.style,n.style);i&&!(""+i).match(qCe)&&(console.warn('Invalid font style specified: "'+i+'"'),i=void 0);const o={family:Ge(t.family,n.family),lineHeight:KCe(Ge(t.lineHeight,n.lineHeight),e),size:e,style:i,weight:Ge(t.weight,n.weight),string:""};return o.string=function VCe(t){return!t||dt(t.size)||dt(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(o),o}function gp(t,n,e,i){let r,s,a,o=!0;for(r=0,s=t.length;rt[0]){const r=e||t;typeof i>"u"&&(i=e8("_fallback",t));const s={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:r,_fallback:i,_getTarget:o,override:a=>Gk([a,...t],n,r,i)};return new Proxy(s,{deleteProperty:(a,l)=>(delete a[l],delete a._keys,delete t[0][l],!0),get:(a,l)=>ZV(a,l,()=>function o1e(t,n,e,i){let o;for(const r of n)if(o=e8(ZCe(r,t),e),typeof o<"u")return qk(t,o)?Kk(e,i,t,o):o}(l,n,t,a)),getOwnPropertyDescriptor:(a,l)=>Reflect.getOwnPropertyDescriptor(a._scopes[0],l),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(a,l)=>t8(a).includes(l),ownKeys:a=>t8(a),set(a,l,c){const f=a._storage||(a._storage=o());return a[l]=f[l]=c,delete a._keys,!0}})}function Su(t,n,e,i){const o={_cacheable:!1,_proxy:t,_context:n,_subProxy:e,_stack:new Set,_descriptors:XV(t,i),setContext:r=>Su(t,r,e,i),override:r=>Su(t.override(r),n,e,i)};return new Proxy(o,{deleteProperty:(r,s)=>(delete r[s],delete t[s],!0),get:(r,s,a)=>ZV(r,s,()=>function QCe(t,n,e){const{_proxy:i,_context:o,_subProxy:r,_descriptors:s}=t;let a=i[n];return Ra(a)&&s.isScriptable(n)&&(a=function JCe(t,n,e,i){const{_proxy:o,_context:r,_subProxy:s,_stack:a}=e;if(a.has(t))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+t);a.add(t);let l=n(r,s||i);return a.delete(t),qk(t,l)&&(l=Kk(o._scopes,o,t,l)),l}(n,a,t,e)),vn(a)&&a.length&&(a=function e1e(t,n,e,i){const{_proxy:o,_context:r,_subProxy:s,_descriptors:a}=e;if(typeof r.index<"u"&&i(t))return n[r.index%n.length];if(ft(n[0])){const l=n,c=o._scopes.filter(f=>f!==l);n=[];for(const f of l){const m=Kk(c,o,t,f);n.push(Su(m,r,s&&s[t],a))}}return n}(n,a,t,s.isIndexable)),qk(n,a)&&(a=Su(a,o,r&&r[n],s)),a}(r,s,a)),getOwnPropertyDescriptor:(r,s)=>r._descriptors.allKeys?Reflect.has(t,s)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,s),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(r,s)=>Reflect.has(t,s),ownKeys:()=>Reflect.ownKeys(t),set:(r,s,a)=>(t[s]=a,delete r[s],!0)})}function XV(t,n={scriptable:!0,indexable:!0}){const{_scriptable:e=n.scriptable,_indexable:i=n.indexable,_allKeys:o=n.allKeys}=t;return{allKeys:o,scriptable:e,indexable:i,isScriptable:Ra(e)?e:()=>e,isIndexable:Ra(i)?i:()=>i}}const ZCe=(t,n)=>t?t+Fk(n):n,qk=(t,n)=>ft(n)&&"adapters"!==t&&(null===Object.getPrototypeOf(n)||n.constructor===Object);function ZV(t,n,e){if(Object.prototype.hasOwnProperty.call(t,n)||"constructor"===n)return t[n];const i=e();return t[n]=i,i}function QV(t,n,e){return Ra(t)?t(n,e):t}const t1e=(t,n)=>!0===t?n:"string"==typeof t?Aa(n,t):void 0;function n1e(t,n,e,i,o){for(const r of n){const s=t1e(e,r);if(s){t.add(s);const a=QV(s._fallback,e,o);if(typeof a<"u"&&a!==e&&a!==i)return a}else if(!1===s&&typeof i<"u"&&e!==i)return null}return!1}function Kk(t,n,e,i){const o=n._rootScopes,r=QV(n._fallback,e,i),s=[...t,...o],a=new Set;a.add(i);let l=JV(a,s,e,r||e,i);return!(null===l||typeof r<"u"&&r!==e&&(l=JV(a,s,r,l,i),null===l))&&Gk(Array.from(a),[""],o,r,()=>function i1e(t,n,e){const i=t._getTarget();n in i||(i[n]={});const o=i[n];return vn(o)&&ft(e)?e:o||{}}(n,e,i))}function JV(t,n,e,i,o){for(;e;)e=n1e(t,n,e,i,o);return e}function e8(t,n){for(const e of n){if(!e)continue;const i=e[t];if(typeof i<"u")return i}}function t8(t){let n=t._keys;return n||(n=t._keys=function r1e(t){const n=new Set;for(const e of t)for(const i of Object.keys(e).filter(o=>!o.startsWith("_")))n.add(i);return Array.from(n)}(t._scopes)),n}const s1e=Number.EPSILON||1e-14,ku=(t,n)=>n"x"===t?"y":"x";function a1e(t,n,e,i){const o=t.skip?n:t,r=n,s=e.skip?n:e,a=Lk(r,o),l=Lk(s,r);let c=a/(a+l),f=l/(a+l);c=isNaN(c)?0:c,f=isNaN(f)?0:f;const m=i*c,g=i*f;return{previous:{x:r.x-m*(s.x-o.x),y:r.y-m*(s.y-o.y)},next:{x:r.x+g*(s.x-o.x),y:r.y+g*(s.y-o.y)}}}function Tv(t,n,e){return Math.max(Math.min(t,e),n)}function h1e(t,n,e,i,o){let r,s,a,l;if(n.spanGaps&&(t=t.filter(c=>!c.skip)),"monotone"===n.cubicInterpolationMode)!function d1e(t,n="x"){const e=i8(n),i=t.length,o=Array(i).fill(0),r=Array(i);let s,a,l,c=ku(t,0);for(s=0;st.ownerDocument.defaultView.getComputedStyle(t,null),p1e=["top","right","bottom","left"];function vc(t,n,e){const i={};e=e?"-"+e:"";for(let o=0;o<4;o++){const r=p1e[o];i[r]=parseFloat(t[n+"-"+r+e])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}function yc(t,n){if("native"in t)return t;const{canvas:e,currentDevicePixelRatio:i}=n,o=Pv(e),r="border-box"===o.boxSizing,s=vc(o,"padding"),a=vc(o,"border","width"),{x:l,y:c,box:f}=function g1e(t,n){const e=t.touches,i=e&&e.length?e[0]:t,{offsetX:o,offsetY:r}=i;let a,l,s=!1;if(((t,n,e)=>(t>0||n>0)&&(!e||!e.shadowRoot))(o,r,t.target))a=o,l=r;else{const c=n.getBoundingClientRect();a=i.clientX-c.left,l=i.clientY-c.top,s=!0}return{x:a,y:l,box:s}}(t,e),m=s.left+(f&&a.left),g=s.top+(f&&a.top);let{width:_,height:w}=n;return r&&(_-=s.width+a.width,w-=s.height+a.height),{x:Math.round((l-m)/_*e.width/i),y:Math.round((c-g)/w*e.height/i)}}const La=t=>Math.round(10*t)/10;function o8(t,n,e){const i=n||1,o=La(t.height*i),r=La(t.width*i);t.height=La(t.height),t.width=La(t.width);const s=t.canvas;return s.style&&(e||!s.style.height&&!s.style.width)&&(s.style.height=`${t.height}px`,s.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==i||s.height!==o||s.width!==r)&&(t.currentDevicePixelRatio=i,s.height=o,s.width=r,t.ctx.setTransform(i,0,0,i,0,0),!0)}const v1e=function(){let t=!1;try{const n={get passive(){return t=!0,!1}};Yk()&&(window.addEventListener("test",null,n),window.removeEventListener("test",null,n))}catch{}return t}();function r8(t,n){const e=function f1e(t,n){return Pv(t).getPropertyValue(n)}(t,n),i=e&&e.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}function Cc(t,n,e,i){return{x:t.x+e*(n.x-t.x),y:t.y+e*(n.y-t.y)}}function y1e(t,n,e,i){return{x:t.x+e*(n.x-t.x),y:"middle"===i?e<.5?t.y:n.y:"after"===i?e<1?t.y:n.y:e>0?n.y:t.y}}function C1e(t,n,e,i){const o={x:t.cp2x,y:t.cp2y},r={x:n.cp1x,y:n.cp1y},s=Cc(t,o,e),a=Cc(o,r,e),l=Cc(r,n,e),c=Cc(s,a,e),f=Cc(a,l,e);return Cc(c,f,e)}function l8(t){return"angle"===t?{between:up,compare:SCe,normalize:Gi}:{between:Bs,compare:(n,e)=>n-e,normalize:n=>n}}function c8({start:t,end:n,count:e,loop:i,style:o}){return{start:t%e,end:n%e,loop:i&&(n-t+1)%e==0,style:o}}function d8(t,n,e){if(!e)return[t];const{property:i,start:o,end:r}=e,s=n.length,{compare:a,between:l,normalize:c}=l8(i),{start:f,end:m,loop:g,style:_}=function S1e(t,n,e){const{property:i,start:o,end:r}=e,{between:s,normalize:a}=l8(i),l=n.length;let g,_,{start:c,end:f,loop:m}=t;if(m){for(c+=l,f+=l,g=0,_=l;g<_&&s(a(n[c%l][i]),o,r);++g)c--,f--;c%=l,f%=l}return fk||l(o,W,I)&&0!==a(o,W),ie=()=>!k||0===a(r,I)||l(r,W,I);for(let P=f,A=f;P<=m;++P)R=n[P%s],!R.skip&&(I=c(R[i]),I!==W&&(k=l(I,o,r),null===T&&ee()&&(T=0===a(I,o)?P:A),null!==T&&ie()&&(w.push(c8({start:T,end:P,loop:g,count:s,style:_})),T=null),A=P,W=I));return null!==T&&w.push(c8({start:T,end:m,loop:g,count:s,style:_})),w}function u8(t,n){const e=[],i=t.segments;for(let o=0;oa({chart:n,initial:e.initial,numSteps:s,currentStep:Math.min(i-e.start,s)}))}_refresh(){this._request||(this._running=!0,this._request=BV.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(n=Date.now()){let e=0;this._charts.forEach((i,o)=>{if(!i.running||!i.items.length)return;const r=i.items;let l,s=r.length-1,a=!1;for(;s>=0;--s)l=r[s],l._active?(l._total>i.duration&&(i.duration=l._total),l.tick(n),a=!0):(r[s]=r[r.length-1],r.pop());a&&(o.draw(),this._notify(o,i,n,"progress")),r.length||(i.running=!1,this._notify(o,i,n,"complete"),i.initial=!1),e+=r.length}),this._lastDate=n,0===e&&(this._running=!1)}_getAnims(n){const e=this._charts;let i=e.get(n);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(n,i)),i}listen(n,e,i){this._getAnims(n).listeners[e].push(i)}add(n,e){!e||!e.length||this._getAnims(n).items.push(...e)}has(n){return this._getAnims(n).items.length>0}start(n){const e=this._charts.get(n);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((i,o)=>Math.max(i,o._duration),0),this._refresh())}running(n){if(!this._running)return!1;const e=this._charts.get(n);return!(!e||!e.running||!e.items.length)}stop(n){const e=this._charts.get(n);if(!e||!e.items.length)return;const i=e.items;let o=i.length-1;for(;o>=0;--o)i[o].cancel();e.items=[],this._notify(n,e,Date.now(),"complete")}remove(n){return this._charts.delete(n)}}var js=new I1e;const m8="transparent",O1e={boolean:(t,n,e)=>e>.5?n:t,color(t,n,e){const i=$V(t||m8),o=i.valid&&$V(n||m8);return o&&o.valid?o.mix(i,e).hexString():n},number:(t,n,e)=>t+(n-t)*e};class A1e{constructor(n,e,i,o){const r=e[i];o=gp([n.to,o,r,n.from]);const s=gp([n.from,r,o]);this._active=!0,this._fn=n.fn||O1e[n.type||typeof s],this._easing=hp[n.easing]||hp.linear,this._start=Math.floor(Date.now()+(n.delay||0)),this._duration=this._total=Math.floor(n.duration),this._loop=!!n.loop,this._target=e,this._prop=i,this._from=s,this._to=o,this._promises=void 0}active(){return this._active}update(n,e,i){if(this._active){this._notify(!1);const o=this._target[this._prop],r=i-this._start,s=this._duration-r;this._start=i,this._duration=Math.floor(Math.max(s,n.duration)),this._total+=r,this._loop=!!n.loop,this._to=gp([n.to,e,o,n.from]),this._from=gp([n.from,o,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(n){const e=n-this._start,i=this._duration,o=this._prop,r=this._from,s=this._loop,a=this._to;let l;if(this._active=r!==a&&(s||e1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[o]=this._fn(r,a,l))}wait(){const n=this._promises||(this._promises=[]);return new Promise((e,i)=>{n.push({res:e,rej:i})})}_notify(n){const e=n?"res":"rej",i=this._promises||[];for(let o=0;o{const r=n[o];if(!ft(r))return;const s={};for(const a of e)s[a]=r[a];(vn(r.properties)&&r.properties||[o]).forEach(a=>{(a===o||!i.has(a))&&i.set(a,s)})})}_animateOptions(n,e){const i=e.options,o=function F1e(t,n){if(!n)return;let e=t.options;if(e)return e.$shared&&(t.options=e=Object.assign({},e,{$shared:!1,$animations:{}})),e;t.options=n}(n,i);if(!o)return[];const r=this._createAnimations(o,i);return i.$shared&&function R1e(t,n){const e=[],i=Object.keys(n);for(let o=0;o{n.options=i},()=>{}),r}_createAnimations(n,e){const i=this._properties,o=[],r=n.$animations||(n.$animations={}),s=Object.keys(e),a=Date.now();let l;for(l=s.length-1;l>=0;--l){const c=s[l];if("$"===c.charAt(0))continue;if("options"===c){o.push(...this._animateOptions(n,e));continue}const f=e[c];let m=r[c];const g=i.get(c);if(m){if(g&&m.active()){m.update(g,f,a);continue}m.cancel()}g&&g.duration?(r[c]=m=new A1e(g,n,c,f),o.push(m)):n[c]=f}return o}update(n,e){if(0===this._properties.size)return void Object.assign(n,e);const i=this._createAnimations(n,e);return i.length?(js.add(this._chart,i),!0):void 0}}function _8(t,n){const e=t&&t.options||{},i=e.reverse,o=void 0===e.min?n:0,r=void 0===e.max?n:0;return{start:i?r:o,end:i?o:r}}function b8(t,n){const e=[],i=t._getSortedDatasetMetas(n);let o,r;for(o=0,r=i.length;o0||!e&&r<0)return o.index}return null}function C8(t,n){const{chart:e,_cachedMeta:i}=t,o=e._stacks||(e._stacks={}),{iScale:r,vScale:s,index:a}=i,l=r.axis,c=s.axis,f=function V1e(t,n,e){return`${t.id}.${n.id}.${e.stack||e.type}`}(r,s,i),m=n.length;let g;for(let _=0;_e[i].axis===n).shift()}function _p(t,n){const e=t.controller.index,i=t.vScale&&t.vScale.axis;if(i){n=n||t._parsed;for(const o of n){const r=o._stacks;if(!r||void 0===r[i]||void 0===r[i][e])return;delete r[i][e],void 0!==r[i]._visualValues&&void 0!==r[i]._visualValues[e]&&delete r[i]._visualValues[e]}}}const Jk=t=>"reset"===t||"none"===t,w8=(t,n)=>n?t:Object.assign({},t);let Ba=(()=>class t{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,i){this.chart=e,this._ctx=e.ctx,this.index=i,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=Zk(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(e){this.index!==e&&_p(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,i=this._cachedMeta,o=this.getDataset(),r=(g,_,w,k)=>"x"===g?_:"r"===g?k:w,s=i.xAxisID=Ge(o.xAxisID,Qk(e,"x")),a=i.yAxisID=Ge(o.yAxisID,Qk(e,"y")),l=i.rAxisID=Ge(o.rAxisID,Qk(e,"r")),c=i.indexAxis,f=i.iAxisID=r(c,s,a,l),m=i.vAxisID=r(c,a,s,l);i.xScale=this.getScaleForId(s),i.yScale=this.getScaleForId(a),i.rScale=this.getScaleForId(l),i.iScale=this.getScaleForId(f),i.vScale=this.getScaleForId(m)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const i=this._cachedMeta;return e===i.iScale?i.vScale:i.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&NV(this._data,this),e._stacked&&_p(e)}_dataCheck(){const e=this.getDataset(),i=e.data||(e.data=[]),o=this._data;if(ft(i))this._data=function B1e(t,n){const{iScale:e,vScale:i}=n,o="x"===e.axis?"x":"y",r="x"===i.axis?"x":"y",s=Object.keys(t),a=new Array(s.length);let l,c,f;for(l=0,c=s.length;l{const i="_onData"+Fk(e),o=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...r){const s=o.apply(this,r);return t._chartjs.listeners.forEach(a=>{"function"==typeof a[i]&&a[i](...r)}),s}})}))}(i,this),this._syncList=[],this._data=i}}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const i=this._cachedMeta,o=this.getDataset();let r=!1;this._dataCheck();const s=i._stacked;i._stacked=Zk(i.vScale,i),i.stack!==o.stack&&(r=!0,_p(i),i.stack=o.stack),this._resyncElements(e),(r||s!==i._stacked)&&(C8(this,i._parsed),i._stacked=Zk(i.vScale,i))}configure(){const e=this.chart.config,i=e.datasetScopeKeys(this._type),o=e.getOptionScopes(this.getDataset(),i,!0);this.options=e.createResolver(o,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,i){const{_cachedMeta:o,_data:r}=this,{iScale:s,_stacked:a}=o,l=s.axis;let m,g,_,c=0===e&&i===r.length||o._sorted,f=e>0&&o._parsed[e-1];if(!1===this._parsing)o._parsed=r,o._sorted=!0,_=r;else{_=vn(r[e])?this.parseArrayData(o,r,e,i):ft(r[e])?this.parseObjectData(o,r,e,i):this.parsePrimitiveData(o,r,e,i);const w=()=>null===g[l]||f&&g[l]t&&!n.hidden&&n._stacked&&{keys:b8(this.chart,!0),values:null})(i,o),f={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:m,max:g}=function H1e(t){const{min:n,max:e,minDefined:i,maxDefined:o}=t.getUserBounds();return{min:i?n:Number.NEGATIVE_INFINITY,max:o?e:Number.POSITIVE_INFINITY}}(l);let _,w;function k(){w=r[_];const T=w[l.axis];return!jn(w[e.axis])||m>T||g=0;--_)if(!k()){this.updateRangeFromParsed(f,e,w,c);break}return f}getAllParsedValues(e){const i=this._cachedMeta._parsed,o=[];let r,s,a;for(r=0,s=i.length;r=0&&ethis.getContext(o,r,i),g);return T.$shared&&(T.$shared=c,s[a]=Object.freeze(w8(T,c))),T}_resolveAnimations(e,i,o){const r=this.chart,s=this._cachedDataOpts,a=`animation-${i}`,l=s[a];if(l)return l;let c;if(!1!==r.options.animation){const m=this.chart.config,g=m.datasetAnimationScopeKeys(this._type,i),_=m.getOptionScopes(this.getDataset(),g);c=m.createResolver(_,this.getContext(e,o,i))}const f=new g8(r,c&&c.animations);return c&&c._cacheable&&(s[a]=Object.freeze(f)),f}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,i){return!i||Jk(e)||this.chart._animationsDisabled}_getSharedOptions(e,i){const o=this.resolveDataElementOptions(e,i),r=this._sharedOptions,s=this.getSharedOptions(o),a=this.includeOptions(i,s)||s!==r;return this.updateSharedOptions(s,i,o),{sharedOptions:s,includeOptions:a}}updateElement(e,i,o,r){Jk(r)?Object.assign(e,o):this._resolveAnimations(i,r).update(e,o)}updateSharedOptions(e,i,o){e&&!Jk(i)&&this._resolveAnimations(void 0,i).update(e,o)}_setStyle(e,i,o,r){e.active=r;const s=this.getStyle(i,r);this._resolveAnimations(i,o,r).update(e,{options:!r&&this.getSharedOptions(s)||s})}removeHoverStyle(e,i,o){this._setStyle(e,o,"active",!1)}setHoverStyle(e,i,o){this._setStyle(e,o,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const i=this._data,o=this._cachedMeta.data;for(const[l,c,f]of this._syncList)this[l](c,f);this._syncList=[];const r=o.length,s=i.length,a=Math.min(s,r);a&&this.parse(0,a),s>r?this._insertElements(r,s-r,e):s{for(f.length+=i,l=f.length-1;l>=a;l--)f[l]=f[l-i]};for(c(s),l=e;lclass t extends Ba{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(e){const i=this._cachedMeta,{dataset:o,data:r=[],_dataset:s}=i,a=this.chart._animationsDisabled;let{start:l,count:c}=function HV(t,n,e){const i=n.length;let o=0,r=i;if(t._sorted){const{iScale:s,vScale:a,_parsed:l}=t,c=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,f=s.axis,{min:m,max:g,minDefined:_,maxDefined:w}=s.getUserBounds();if(_){if(o=Math.min(Vs(l,f,m).lo,e?i:Vs(n,f,s.getPixelForValue(m)).lo),c){const k=l.slice(0,o+1).reverse().findIndex(T=>!dt(T[a.axis]));o-=Math.max(0,k)}o=Si(o,0,i-1)}if(w){let k=Math.max(Vs(l,s.axis,g,!0).hi+1,e?0:Vs(n,f,s.getPixelForValue(g),!0).hi+1);if(c){const T=l.slice(k-1).findIndex(I=>!dt(I[a.axis]));k+=Math.max(0,T)}r=Si(k,o,i)-o}else r=i-o}return{start:o,count:r}}(i,r,a);this._drawStart=l,this._drawCount=c,function jV(t){const{xScale:n,yScale:e,_scaleRanges:i}=t,o={xmin:n.min,xmax:n.max,ymin:e.min,ymax:e.max};if(!i)return t._scaleRanges=o,!0;const r=i.xmin!==n.min||i.xmax!==n.max||i.ymin!==e.min||i.ymax!==e.max;return Object.assign(i,o),r}(i)&&(l=0,c=r.length),o._chart=this.chart,o._datasetIndex=this.index,o._decimated=!!s._decimated,o.points=r;const f=this.resolveDatasetElementOptions(e);this.options.showLine||(f.borderWidth=0),f.segment=this.options.segment,this.updateElement(o,void 0,{animated:!a,options:f},e),this.updateElements(r,l,c,e)}updateElements(e,i,o,r){const s="reset"===r,{iScale:a,vScale:l,_stacked:c,_dataset:f}=this._cachedMeta,{sharedOptions:m,includeOptions:g}=this._getSharedOptions(i,r),_=a.axis,w=l.axis,{spanGaps:k,segment:T}=this.options,I=xu(k)?k:Number.POSITIVE_INFINITY,R=this.chart._animationsDisabled||s||"none"===r,W=i+o,Y=e.length;let K=i>0&&this.getParsed(i-1);for(let ee=0;ee=W){P.skip=!0;continue}const A=this.getParsed(ee),L=dt(A[w]),$=P[_]=a.getPixelForValue(A[_],ee),H=P[w]=s||L?l.getBasePixel():l.getPixelForValue(c?this.applyStack(l,A,c):A[w],ee);P.skip=isNaN($)||isNaN(H)||L,P.stop=ee>0&&Math.abs(A[_]-K[_])>I,T&&(P.parsed=A,P.raw=f.data[ee]),g&&(P.options=m||this.resolveDataElementOptions(ee,ie.active?"active":r)),R||this.updateElement(ie,ee,P,r),K=A}}getMaxOverflow(){const e=this._cachedMeta,i=e.dataset,o=i.options&&i.options.borderWidth||0,r=e.data||[];if(!r.length)return o;const s=r[0].size(this.resolveDataElementOptions(0)),a=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(o,s,a)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}})();function s0e(t,n,e,i){const{controller:o,data:r,_sorted:s}=t,a=o._cachedMeta.iScale,l=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null;if(a&&n===a.axis&&"r"!==n&&s&&r.length){const c=a._reversePixels?DCe:Vs;if(!i){const f=c(r,n,e);if(l){const{vScale:m}=o._cachedMeta,{_parsed:g}=t,_=g.slice(0,f.lo+1).reverse().findIndex(k=>!dt(k[m.axis]));f.lo-=Math.max(0,_);const w=g.slice(f.hi).findIndex(k=>!dt(k[m.axis]));f.hi+=Math.max(0,w)}return f}if(o._sharedOptions){const f=r[0],m="function"==typeof f.getRange&&f.getRange(n);if(m){const g=c(r,n,e-m),_=c(r,n,e+m);return{lo:g.lo,hi:_.hi}}}}return{lo:0,hi:r.length-1}}function bp(t,n,e,i,o){const r=t.getSortedVisibleDatasetMetas(),s=e[n];for(let a=0,l=r.length;a{l[s]&&l[s](n[e],o)&&(r.push({element:l,datasetIndex:c,index:f}),a=a||l.inRange(n.x,n.y,o))}),i&&!a?[]:r}var d0e={evaluateInteractionItems:bp,modes:{index(t,n,e,i){const o=yc(n,t),r=e.axis||"x",s=e.includeInvisible||!1,a=e.intersect?iD(t,o,r,i,s):oD(t,o,r,!1,i,s),l=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach(c=>{const f=a[0].index,m=c.data[f];m&&!m.skip&&l.push({element:m,datasetIndex:c.index,index:f})}),l):[]},dataset(t,n,e,i){const o=yc(n,t),r=e.axis||"xy",s=e.includeInvisible||!1;let a=e.intersect?iD(t,o,r,i,s):oD(t,o,r,!1,i,s);if(a.length>0){const l=a[0].datasetIndex,c=t.getDatasetMeta(l).data;a=[];for(let f=0;fiD(t,yc(n,t),e.axis||"xy",i,e.includeInvisible||!1),nearest:(t,n,e,i)=>oD(t,yc(n,t),e.axis||"xy",e.intersect,i,e.includeInvisible||!1),x:(t,n,e,i)=>E8(t,yc(n,t),"x",e.intersect,i),y:(t,n,e,i)=>E8(t,yc(n,t),"y",e.intersect,i)}};const P8=["left","top","right","bottom"];function vp(t,n){return t.filter(e=>e.pos===n)}function I8(t,n){return t.filter(e=>-1===P8.indexOf(e.pos)&&e.box.axis===n)}function yp(t,n){return t.sort((e,i)=>{const o=n?i:e,r=n?e:i;return o.weight===r.weight?o.index-r.index:o.weight-r.weight})}function O8(t,n,e,i){return Math.max(t[e],n[e])+Math.max(t[i],n[i])}function A8(t,n){t.top=Math.max(t.top,n.top),t.left=Math.max(t.left,n.left),t.bottom=Math.max(t.bottom,n.bottom),t.right=Math.max(t.right,n.right)}function m0e(t,n,e,i){const{pos:o,box:r}=e,s=t.maxPadding;if(!ft(o)){e.size&&(t[o]-=e.size);const m=i[e.stack]||{size:0,count:1};m.size=Math.max(m.size,e.horizontal?r.height:r.width),e.size=m.size/m.count,t[o]+=e.size}r.getPadding&&A8(s,r.getPadding());const a=Math.max(0,n.outerWidth-O8(s,t,"left","right")),l=Math.max(0,n.outerHeight-O8(s,t,"top","bottom")),c=a!==t.w,f=l!==t.h;return t.w=a,t.h=l,e.horizontal?{same:c,other:f}:{same:f,other:c}}function _0e(t,n){const e=n.maxPadding;return function i(o){const r={left:0,top:0,right:0,bottom:0};return o.forEach(s=>{r[s]=Math.max(n[s],e[s])}),r}(t?["left","right"]:["top","bottom"])}function Cp(t,n,e,i){const o=[];let r,s,a,l,c,f;for(r=0,s=t.length,c=0;rc.box.fullSize),!0),i=yp(vp(n,"left"),!0),o=yp(vp(n,"right")),r=yp(vp(n,"top"),!0),s=yp(vp(n,"bottom")),a=I8(n,"x"),l=I8(n,"y");return{fullSize:e,leftAndTop:i.concat(r),rightAndBottom:o.concat(l).concat(s).concat(a),chartArea:vp(n,"chartArea"),vertical:i.concat(o).concat(l),horizontal:r.concat(s).concat(a)}}(t.boxes),l=a.vertical,c=a.horizontal;Vt(t.boxes,k=>{"function"==typeof k.beforeLayout&&k.beforeLayout()});const f=l.reduce((k,T)=>T.box.options&&!1===T.box.options.display?k:k+1,0)||1,m=Object.freeze({outerWidth:n,outerHeight:e,padding:o,availableWidth:r,availableHeight:s,vBoxMaxWidth:r/2/f,hBoxMaxHeight:s/2}),g=Object.assign({},o);A8(g,Ki(i));const _=Object.assign({maxPadding:g,w:r,h:s,x:o.left,y:o.top},o),w=function f0e(t,n){const e=function h0e(t){const n={};for(const e of t){const{stack:i,pos:o,stackWeight:r}=e;if(!i||!P8.includes(o))continue;const s=n[i]||(n[i]={count:0,placed:0,weight:0,size:0});s.count++,s.weight+=r}return n}(t),{vBoxMaxWidth:i,hBoxMaxHeight:o}=n;let r,s,a;for(r=0,s=t.length;r{const T=k.box;Object.assign(T,t.chartArea),T.update(_.w,_.h,{left:0,top:0,right:0,bottom:0})})}};class F8{acquireContext(n,e){}releaseContext(n){return!1}addEventListener(n,e,i){}removeEventListener(n,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(n,e,i,o){return e=Math.max(0,e||n.width),i=i||n.height,{width:e,height:Math.max(0,o?Math.floor(e/o):i)}}isAttached(n){return!0}updateConfig(n){}}class b0e extends F8{acquireContext(n){return n&&n.getContext&&n.getContext("2d")||null}updateConfig(n){n.options.animation=!1}}const Av="$chartjs",v0e={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},N8=t=>null===t||""===t,L8=!!v1e&&{passive:!0};function w0e(t,n,e){t&&t.canvas&&t.canvas.removeEventListener(n,e,L8)}function Rv(t,n){for(const e of t)if(e===n||e.contains(n))return!0}function S0e(t,n,e){const i=t.canvas,o=new MutationObserver(r=>{let s=!1;for(const a of r)s=s||Rv(a.addedNodes,i),s=s&&!Rv(a.removedNodes,i);s&&e()});return o.observe(document,{childList:!0,subtree:!0}),o}function k0e(t,n,e){const i=t.canvas,o=new MutationObserver(r=>{let s=!1;for(const a of r)s=s||Rv(a.removedNodes,i),s=s&&!Rv(a.addedNodes,i);s&&e()});return o.observe(document,{childList:!0,subtree:!0}),o}const wp=new Map;let B8=0;function V8(){const t=window.devicePixelRatio;t!==B8&&(B8=t,wp.forEach((n,e)=>{e.currentDevicePixelRatio!==t&&n()}))}function T0e(t,n,e){const i=t.canvas,o=i&&Xk(i);if(!o)return;const r=VV((a,l)=>{const c=o.clientWidth;e(a,l),c{const l=a[0],c=l.contentRect.width,f=l.contentRect.height;0===c&&0===f||r(c,f)});return s.observe(o),function D0e(t,n){wp.size||window.addEventListener("resize",V8),wp.set(t,n)}(t,r),s}function rD(t,n,e){e&&e.disconnect(),"resize"===n&&function M0e(t){wp.delete(t),wp.size||window.removeEventListener("resize",V8)}(t)}function E0e(t,n,e){const i=t.canvas,o=VV(r=>{null!==t.ctx&&e(function x0e(t,n){const e=v0e[t.type]||t.type,{x:i,y:o}=yc(t,n);return{type:e,chart:n,native:t,x:void 0!==i?i:null,y:void 0!==o?o:null}}(r,t))},t);return function C0e(t,n,e){t&&t.addEventListener(n,e,L8)}(i,n,o),o}class P0e extends F8{acquireContext(n,e){const i=n&&n.getContext&&n.getContext("2d");return i&&i.canvas===n?(function y0e(t,n){const e=t.style,i=t.getAttribute("height"),o=t.getAttribute("width");if(t[Av]={initial:{height:i,width:o,style:{display:e.display,height:e.height,width:e.width}}},e.display=e.display||"block",e.boxSizing=e.boxSizing||"border-box",N8(o)){const r=r8(t,"width");void 0!==r&&(t.width=r)}if(N8(i))if(""===t.style.height)t.height=t.width/(n||2);else{const r=r8(t,"height");void 0!==r&&(t.height=r)}}(n,e),i):null}releaseContext(n){const e=n.canvas;if(!e[Av])return!1;const i=e[Av].initial;["height","width"].forEach(r=>{const s=i[r];dt(s)?e.removeAttribute(r):e.setAttribute(r,s)});const o=i.style||{};return Object.keys(o).forEach(r=>{e.style[r]=o[r]}),e.width=e.width,delete e[Av],!0}addEventListener(n,e,i){this.removeEventListener(n,e),(n.$proxies||(n.$proxies={}))[e]=({attach:S0e,detach:k0e,resize:T0e}[e]||E0e)(n,e,i)}removeEventListener(n,e){const i=n.$proxies||(n.$proxies={}),o=i[e];o&&(({attach:rD,detach:rD,resize:rD}[e]||w0e)(n,e,o),i[e]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(n,e,i,o){return function b1e(t,n,e,i){const o=Pv(t),r=vc(o,"margin"),s=Ev(o.maxWidth,t,"clientWidth")||wv,a=Ev(o.maxHeight,t,"clientHeight")||wv,l=function _1e(t,n,e){let i,o;if(void 0===n||void 0===e){const r=t&&Xk(t);if(r){const s=r.getBoundingClientRect(),a=Pv(r),l=vc(a,"border","width"),c=vc(a,"padding");n=s.width-c.width-l.width,e=s.height-c.height-l.height,i=Ev(a.maxWidth,r,"clientWidth"),o=Ev(a.maxHeight,r,"clientHeight")}else n=t.clientWidth,e=t.clientHeight}return{width:n,height:e,maxWidth:i||wv,maxHeight:o||wv}}(t,n,e);let{width:c,height:f}=l;if("content-box"===o.boxSizing){const g=vc(o,"border","width"),_=vc(o,"padding");c-=_.width+g.width,f-=_.height+g.height}return c=Math.max(0,c-r.width),f=Math.max(0,i?c/i:f-r.height),c=La(Math.min(c,s,l.maxWidth)),f=La(Math.min(f,a,l.maxHeight)),c&&!f&&(f=La(c/2)),(void 0!==n||void 0!==e)&&i&&l.height&&f>l.height&&(f=l.height,c=La(Math.floor(f*i))),{width:c,height:f}}(n,e,i,o)}isAttached(n){const e=n&&Xk(n);return!(!e||!e.isConnected)}}class Us{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(n){const{x:e,y:i}=this.getProps(["x","y"],n);return{x:e,y:i}}hasValue(){return xu(this.x)&&xu(this.y)}getProps(n,e){const i=this.$animations;if(!e||!i)return this;const o={};return n.forEach(r=>{o[r]=i[r]&&i[r].active()?i[r]._to:this[r]}),o}}function Fv(t,n,e,i,o){const r=Ge(i,0),s=Math.min(Ge(o,t.length),t.length);let l,c,f,a=0;for(e=Math.ceil(e),o&&(l=o-i,e=l/Math.floor(l/e)),f=r;f<0;)a++,f=Math.round(r+a*e);for(c=Math.max(r,0);c"top"===n||"left"===n?t[n]+e:t[n]-e,j8=(t,n)=>Math.min(n||t,t);function U8(t,n){const e=[],i=t.length/n,o=t.length;let r=0;for(;rs+a)))return l}function xp(t){return t.drawTicks?t.tickLength:0}function z8(t,n){if(!t.display)return 0;const e=fi(t.font,n),i=Ki(t.padding);return(vn(t.text)?t.text.length:1)*e.lineHeight+i.height}function z0e(t,n,e){let i=(t=>"start"===t?"left":"end"===t?"right":"center")(t);return(e&&"right"!==n||!e&&"right"===n)&&(i=(t=>"left"===t?"right":"right"===t?"left":t)(i)),i}class xc extends Us{constructor(n){super(),this.id=n.id,this.type=n.type,this.options=void 0,this.ctx=n.ctx,this.chart=n.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(n){this.options=n.setContext(this.getContext()),this.axis=n.axis,this._userMin=this.parse(n.min),this._userMax=this.parse(n.max),this._suggestedMin=this.parse(n.suggestedMin),this._suggestedMax=this.parse(n.suggestedMax)}parse(n,e){return n}getUserBounds(){let{_userMin:n,_userMax:e,_suggestedMin:i,_suggestedMax:o}=this;return n=Oo(n,Number.POSITIVE_INFINITY),e=Oo(e,Number.NEGATIVE_INFINITY),i=Oo(i,Number.POSITIVE_INFINITY),o=Oo(o,Number.NEGATIVE_INFINITY),{min:Oo(n,i),max:Oo(e,o),minDefined:jn(n),maxDefined:jn(e)}}getMinMax(n){let s,{min:e,max:i,minDefined:o,maxDefined:r}=this.getUserBounds();if(o&&r)return{min:e,max:i};const a=this.getMatchingVisibleMetas();for(let l=0,c=a.length;li?i:e,i=o&&e>i?e:i,{min:Oo(e,Oo(i,e)),max:Oo(i,Oo(e,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const n=this.chart.data;return this.options.labels||(this.isHorizontal()?n.xLabels:n.yLabels)||n.labels||[]}getLabelItems(n=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(n))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){ln(this.options.beforeUpdate,[this])}update(n,e,i){const{beginAtZero:o,grace:r,ticks:s}=this.options,a=s.sampleSize;this.beforeUpdate(),this.maxWidth=n,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=function XCe(t,n,e){const{min:i,max:o}=t,r=((t,n)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*n:+t)(n,(o-i)/2),s=(a,l)=>e&&0===a?0:a+l;return{min:s(i,-Math.abs(r)),max:s(o,r)}}(this,r,o),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=ao)return function N0e(t,n,e,i){let s,o=0,r=e[0];for(i=Math.ceil(i),s=0;so-r).pop(),n}(i);for(let s=0,a=r.length-1;so)return l}return Math.max(o,1)}(r,n,o);if(s>0){let m,g;const _=s>1?Math.round((l-a)/(s-1)):null;for(Fv(n,c,f,dt(_)?0:a-_,a),m=0,g=s-1;m=r||i<=1||!this.isHorizontal())return void(this.labelRotation=o);const f=this._getLabelSizes(),m=f.widest.width,g=f.highest.height,_=Si(this.chart.width-m,0,this.maxWidth);a=n.offset?this.maxWidth/i:_/(i-1),m+6>a&&(a=_/(i-(n.offset?.5:1)),l=this.maxHeight-xp(n.grid)-e.padding-z8(n.title,this.chart.options.font),c=Math.sqrt(m*m+g*g),s=function Nk(t){return t*(180/Mt)}(Math.min(Math.asin(Si((f.highest.height+6)/a,-1,1)),Math.asin(Si(l/c,-1,1))-Math.asin(Si(g/c,-1,1)))),s=Math.max(o,Math.min(r,s))),this.labelRotation=s}afterCalculateLabelRotation(){ln(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){ln(this.options.beforeFit,[this])}fit(){const n={width:0,height:0},{chart:e,options:{ticks:i,title:o,grid:r}}=this,s=this._isVisible(),a=this.isHorizontal();if(s){const l=z8(o,e.options.font);if(a?(n.width=this.maxWidth,n.height=xp(r)+l):(n.height=this.maxHeight,n.width=xp(r)+l),i.display&&this.ticks.length){const{first:c,last:f,widest:m,highest:g}=this._getLabelSizes(),_=2*i.padding,w=Tr(this.labelRotation),k=Math.cos(w),T=Math.sin(w);a?n.height=Math.min(this.maxHeight,n.height+(i.mirror?0:T*m.width+k*g.height)+_):n.width=Math.min(this.maxWidth,n.width+(i.mirror?0:k*m.width+T*g.height)+_),this._calculatePadding(c,f,T,k)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=n.height):(this.width=n.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(n,e,i,o){const{ticks:{align:r,padding:s},position:a}=this.options,l=0!==this.labelRotation,c="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const f=this.getPixelForTick(0)-this.left,m=this.right-this.getPixelForTick(this.ticks.length-1);let g=0,_=0;l?c?(g=o*n.width,_=i*e.height):(g=i*n.height,_=o*e.width):"start"===r?_=e.width:"end"===r?g=n.width:"inner"!==r&&(g=n.width/2,_=e.width/2),this.paddingLeft=Math.max((g-f+s)*this.width/(this.width-f),0),this.paddingRight=Math.max((_-m+s)*this.width/(this.width-m),0)}else{let f=e.height/2,m=n.height/2;"start"===r?(f=0,m=n.height):"end"===r&&(f=e.height,m=0),this.paddingTop=f+s,this.paddingBottom=m+s}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){ln(this.options.afterFit,[this])}isHorizontal(){const{axis:n,position:e}=this.options;return"top"===e||"bottom"===e||"x"===n}isFullSize(){return this.options.fullSize}_convertTicksToLabels(n){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(n),e=0,i=n.length;e{const i=e.gc,o=i.length/2;let r;if(o>n){for(r=0;r({width:s[A]||0,height:a[A]||0});return{first:P(0),last:P(e-1),widest:P(ee),highest:P(ie),widths:s,heights:a}}getLabelForValue(n){return n}getPixelForValue(n,e){return NaN}getValueForPixel(n){}getPixelForTick(n){const e=this.ticks;return n<0||n>e.length-1?null:this.getPixelForValue(e[n].value)}getPixelForDecimal(n){this._reversePixels&&(n=1-n);const e=this._startPixel+n*this._length;return function kCe(t){return Si(t,-32768,32767)}(this._alignToPixels?gc(this.chart,e,0):e)}getDecimalForPixel(n){const e=(n-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:n,max:e}=this;return n<0&&e<0?e:n>0&&e>0?n:0}getContext(n){const e=this.ticks||[];if(n>=0&&na*o?a/i:l/o:l*o0}_computeGridLineItems(n){const e=this.axis,i=this.chart,o=this.options,{grid:r,position:s,border:a}=o,l=r.offset,c=this.isHorizontal(),m=this.ticks.length+(l?1:0),g=xp(r),_=[],w=a.setContext(this.getContext()),k=w.display?w.width:0,T=k/2,I=function(N){return gc(i,N,k)};let R,W,Y,K,ee,ie,P,A,L,$,H,G;if("top"===s)R=I(this.bottom),ie=this.bottom-g,A=R-T,$=I(n.top)+T,G=n.bottom;else if("bottom"===s)R=I(this.top),$=n.top,G=I(n.bottom)-T,ie=R+T,A=this.top+g;else if("left"===s)R=I(this.right),ee=this.right-g,P=R-T,L=I(n.left)+T,H=n.right;else if("right"===s)R=I(this.left),L=n.left,H=I(n.right)-T,ee=R+T,P=this.left+g;else if("x"===e){if("center"===s)R=I((n.top+n.bottom)/2+.5);else if(ft(s)){const N=Object.keys(s)[0];R=I(this.chart.scales[N].getPixelForValue(s[N]))}$=n.top,G=n.bottom,ie=R+T,A=ie+g}else if("y"===e){if("center"===s)R=I((n.left+n.right)/2);else if(ft(s)){const N=Object.keys(s)[0];R=I(this.chart.scales[N].getPixelForValue(s[N]))}ee=R-T,P=ee-g,L=n.left,H=n.right}const J=Ge(o.ticks.maxTicksLimit,m),V=Math.max(1,Math.ceil(m/J));for(W=0;W0&&(at-=Oe/2)}Ce={left:at,top:Xe,width:Oe+Ee.width,height:ut+Ee.height,color:V.backdropColor}}T.push({label:Y,font:A,textOffset:H,options:{rotation:k,color:q,strokeColor:z,strokeWidth:Q,textAlign:ue,textBaseline:G,translation:[K,ee],backdrop:Ce}})}return T}_getXAxisLabelAlignment(){const{position:n,ticks:e}=this.options;if(-Tr(this.labelRotation))return"top"===n?"left":"right";let o="center";return"start"===e.align?o="left":"end"===e.align?o="right":"inner"===e.align&&(o="inner"),o}_getYAxisLabelAlignment(n){const{position:e,ticks:{crossAlign:i,mirror:o,padding:r}}=this.options,a=n+r,l=this._getLabelSizes().widest.width;let c,f;return"left"===e?o?(f=this.right+r,"near"===i?c="left":"center"===i?(c="center",f+=l/2):(c="right",f+=l)):(f=this.right-a,"near"===i?c="right":"center"===i?(c="center",f-=l/2):(c="left",f=this.left)):"right"===e?o?(f=this.left+r,"near"===i?c="right":"center"===i?(c="center",f-=l/2):(c="left",f-=l)):(f=this.left+a,"near"===i?c="left":"center"===i?(c="center",f+=l/2):(c="right",f=this.right)):c="right",{textAlign:c,x:f}}_computeLabelArea(){if(this.options.ticks.mirror)return;const n=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:n.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:n.width}:void 0}drawBackground(){const{ctx:n,options:{backgroundColor:e},left:i,top:o,width:r,height:s}=this;e&&(n.save(),n.fillStyle=e,n.fillRect(i,o,r,s),n.restore())}getLineWidthForValue(n){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const o=this.ticks.findIndex(r=>r.value===n);return o>=0?e.setContext(this.getContext(o)).lineWidth:0}drawGrid(n){const e=this.options.grid,i=this.ctx,o=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(n));let r,s;const a=(l,c,f)=>{!f.width||!f.color||(i.save(),i.lineWidth=f.width,i.strokeStyle=f.color,i.setLineDash(f.borderDash||[]),i.lineDashOffset=f.borderDashOffset,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(c.x,c.y),i.stroke(),i.restore())};if(e.display)for(r=0,s=o.length;r{this.drawBackground(),this.drawGrid(r),this.drawTitle()}},{z:o,draw:()=>{this.drawBorder()}},{z:e,draw:r=>{this.drawLabels(r)}}]:[{z:e,draw:r=>{this.draw(r)}}]}getMatchingVisibleMetas(n){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",o=[];let r,s;for(r=0,s=e.length;r{const i=e.split("."),o=i.pop(),r=[t].concat(i).join("."),s=n[e].split("."),a=s.pop(),l=s.join(".");kn.route(r,o,l,a)})}(n,t.defaultRoutes),t.descriptors&&kn.describe(n,t.descriptors)}(n,s,i),this.override&&kn.override(n.id,n.overrides)),s}get(n){return this.items[n]}unregister(n){const e=this.items,i=n.id,o=this.scope;i in e&&delete e[i],o&&i in kn[o]&&(delete kn[o][i],this.override&&delete mc[i])}}class K0e{constructor(){this.controllers=new Nv(Ba,"datasets",!0),this.elements=new Nv(Us,"elements"),this.plugins=new Nv(Object,"plugins"),this.scales=new Nv(xc,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...n){this._each("register",n)}remove(...n){this._each("unregister",n)}addControllers(...n){this._each("register",n,this.controllers)}addElements(...n){this._each("register",n,this.elements)}addPlugins(...n){this._each("register",n,this.plugins)}addScales(...n){this._each("register",n,this.scales)}getController(n){return this._get(n,this.controllers,"controller")}getElement(n){return this._get(n,this.elements,"element")}getPlugin(n){return this._get(n,this.plugins,"plugin")}getScale(n){return this._get(n,this.scales,"scale")}removeControllers(...n){this._each("unregister",n,this.controllers)}removeElements(...n){this._each("unregister",n,this.elements)}removePlugins(...n){this._each("unregister",n,this.plugins)}removeScales(...n){this._each("unregister",n,this.scales)}_each(n,e,i){[...e].forEach(o=>{const r=i||this._getRegistryForType(o);i||r.isForType(o)||r===this.plugins&&o.id?this._exec(n,r,o):Vt(o,s=>{const a=i||this._getRegistryForType(s);this._exec(n,a,s)})})}_exec(n,e,i){const o=Fk(n);ln(i["before"+o],[],i),e[n](i),ln(i["after"+o],[],i)}_getRegistryForType(n){for(let e=0;er.filter(a=>!s.some(l=>a.plugin.id===l.plugin.id));this._notify(o(e,i),n,"stop"),this._notify(o(i,e),n,"start")}}function Z0e(t,n){return n||!1!==t?!0===t?{}:t:null}function J0e(t,{plugin:n,local:e},i,o){const r=t.pluginScopeKeys(n),s=t.getOptionScopes(i,r);return e&&n.defaults&&s.push(n.defaults),t.createResolver(s,o,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function sD(t,n){return((n.datasets||{})[t]||{}).indexAxis||n.indexAxis||(kn.datasets[t]||{}).indexAxis||"x"}function $8(t){if("x"===t||"y"===t||"r"===t)return t}function nwe(t){return"top"===t||"bottom"===t?"x":"left"===t||"right"===t?"y":void 0}function aD(t,...n){if($8(t))return t;for(const e of n){const i=e.axis||nwe(e.position)||t.length>1&&$8(t[0].toLowerCase());if(i)return i}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function W8(t,n,e){if(e[n+"AxisID"]===t)return{axis:n}}function G8(t){const n=t.options||(t.options={});n.plugins=Ge(n.plugins,{}),n.scales=function owe(t,n){const e=mc[t.type]||{scales:{}},i=n.scales||{},o=sD(t.type,n),r=Object.create(null);return Object.keys(i).forEach(s=>{const a=i[s];if(!ft(a))return console.error(`Invalid scale configuration for scale: ${s}`);if(a._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${s}`);const l=aD(s,a,function iwe(t,n){if(n.data&&n.data.datasets){const e=n.data.datasets.filter(i=>i.xAxisID===t||i.yAxisID===t);if(e.length)return W8(t,"x",e[0])||W8(t,"y",e[0])}return{}}(s,t),kn.scales[a.type]),c=function twe(t,n){return t===n?"_index_":"_value_"}(l,o),f=e.scales||{};r[s]=lp(Object.create(null),[{axis:l},a,f[l],f[c]])}),t.data.datasets.forEach(s=>{const a=s.type||t.type,l=s.indexAxis||sD(a,n),f=(mc[a]||{}).scales||{};Object.keys(f).forEach(m=>{const g=function ewe(t,n){let e=t;return"_index_"===t?e=n:"_value_"===t&&(e="x"===n?"y":"x"),e}(m,l),_=s[g+"AxisID"]||g;r[_]=r[_]||Object.create(null),lp(r[_],[{axis:g},i[_],f[m]])})}),Object.keys(r).forEach(s=>{const a=r[s];lp(a,[kn.scales[a.type],kn.scale])}),r}(t,n)}function q8(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const K8=new Map,Y8=new Set;function Lv(t,n){let e=K8.get(t);return e||(e=n(),K8.set(t,e),Y8.add(e)),e}const Sp=(t,n,e)=>{const i=Aa(n,e);void 0!==i&&t.add(i)};class swe{constructor(n){this._config=function rwe(t){return(t=t||{}).data=q8(t.data),G8(t),t}(n),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(n){this._config.type=n}get data(){return this._config.data}set data(n){this._config.data=q8(n)}get options(){return this._config.options}set options(n){this._config.options=n}get plugins(){return this._config.plugins}update(){const n=this._config;this.clearCache(),G8(n)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(n){return Lv(n,()=>[[`datasets.${n}`,""]])}datasetAnimationScopeKeys(n,e){return Lv(`${n}.transition.${e}`,()=>[[`datasets.${n}.transitions.${e}`,`transitions.${e}`],[`datasets.${n}`,""]])}datasetElementScopeKeys(n,e){return Lv(`${n}-${e}`,()=>[[`datasets.${n}.elements.${e}`,`datasets.${n}`,`elements.${e}`,""]])}pluginScopeKeys(n){const e=n.id;return Lv(`${this.type}-plugin-${e}`,()=>[[`plugins.${e}`,...n.additionalOptionScopes||[]]])}_cachedScopes(n,e){const i=this._scopeCache;let o=i.get(n);return(!o||e)&&(o=new Map,i.set(n,o)),o}getOptionScopes(n,e,i){const{options:o,type:r}=this,s=this._cachedScopes(n,i),a=s.get(e);if(a)return a;const l=new Set;e.forEach(f=>{n&&(l.add(n),f.forEach(m=>Sp(l,n,m))),f.forEach(m=>Sp(l,o,m)),f.forEach(m=>Sp(l,mc[r]||{},m)),f.forEach(m=>Sp(l,kn,m)),f.forEach(m=>Sp(l,Uk,m))});const c=Array.from(l);return 0===c.length&&c.push(Object.create(null)),Y8.has(e)&&s.set(e,c),c}chartOptionScopes(){const{options:n,type:e}=this;return[n,mc[e]||{},kn.datasets[e]||{},{type:e},kn,Uk]}resolveNamedOptions(n,e,i,o=[""]){const r={$shared:!0},{resolver:s,subPrefixes:a}=X8(this._resolverCache,n,o);let l=s;(function lwe(t,n){const{isScriptable:e,isIndexable:i}=XV(t);for(const o of n){const r=e(o),s=i(o),a=(s||r)&&t[o];if(r&&(Ra(a)||awe(a))||s&&vn(a))return!0}return!1})(s,e)&&(r.$shared=!1,l=Su(s,i=Ra(i)?i():i,this.createResolver(n,i,a)));for(const c of e)r[c]=l[c];return r}createResolver(n,e,i=[""],o){const{resolver:r}=X8(this._resolverCache,n,i);return ft(e)?Su(r,e,void 0,o):r}}function X8(t,n,e){let i=t.get(n);i||(i=new Map,t.set(n,i));const o=e.join();let r=i.get(o);return r||(r={resolver:Gk(n,e),subPrefixes:e.filter(a=>!a.toLowerCase().includes("hover"))},i.set(o,r)),r}const awe=t=>ft(t)&&Object.getOwnPropertyNames(t).some(n=>Ra(t[n])),dwe=["top","bottom","left","right","chartArea"];function Z8(t,n){return"top"===t||"bottom"===t||-1===dwe.indexOf(t)&&"x"===n}function Q8(t,n){return function(e,i){return e[t]===i[t]?e[n]-i[n]:e[t]-i[t]}}function J8(t){const n=t.chart,e=n.options.animation;n.notifyPlugins("afterRender"),ln(e&&e.onComplete,[t],n)}function uwe(t){const n=t.chart,e=n.options.animation;ln(e&&e.onProgress,[t],n)}function eH(t){return Yk()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Bv={},tH=t=>{const n=eH(t);return Object.values(Bv).filter(e=>e.canvas===n).pop()};function hwe(t,n,e){const i=Object.keys(t);for(const o of i){const r=+o;if(r>=n){const s=t[o];delete t[o],(e>0||r>n)&&(t[r+e]=s)}}}let lD=(()=>class t{static defaults=kn;static instances=Bv;static overrides=mc;static registry=ns;static version="4.5.1";static getChart=tH;static register(...e){ns.add(...e),nH()}static unregister(...e){ns.remove(...e),nH()}constructor(e,i){const o=this.config=new swe(i),r=eH(e),s=tH(r);if(s)throw new Error("Canvas is already in use. Chart with ID '"+s.id+"' must be destroyed before the canvas with ID '"+s.canvas.id+"' can be reused.");const a=o.createResolver(o.chartOptionScopes(),this.getContext());this.platform=new(o.platform||function I0e(t){return!Yk()||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas?b0e:P0e}(r)),this.platform.updateConfig(o);const l=this.platform.acquireContext(r,a.aspectRatio),c=l&&l.canvas,f=c&&c.height,m=c&&c.width;this.id=hCe(),this.ctx=l,this.canvas=c,this.width=m,this.height=f,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Y0e,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=function ECe(t,n){let e;return function(...i){return n?(clearTimeout(e),e=setTimeout(t,n,i)):t.apply(this,i),n}}(g=>this.update(g),a.resizeDelay||0),this._dataChanges=[],Bv[this.id]=this,l&&c?(js.listen(this,"complete",J8),js.listen(this,"progress",uwe),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:i},width:o,height:r,_aspectRatio:s}=this;return dt(e)?i&&s?s:r?o/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return ns}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():o8(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return qV(this.canvas,this.ctx),this}stop(){return js.stop(this),this}resize(e,i){js.running(this)?this._resizeBeforeDraw={width:e,height:i}:this._resize(e,i)}_resize(e,i){const o=this.options,a=this.platform.getMaximumSize(this.canvas,e,i,o.maintainAspectRatio&&this.aspectRatio),l=o.devicePixelRatio||this.platform.getDevicePixelRatio(),c=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,o8(this,l,!0)&&(this.notifyPlugins("resize",{size:a}),ln(o.onResize,[this,a],this),this.attached&&this._doResize(c)&&this.render())}ensureScalesHaveIDs(){Vt(this.options.scales||{},(o,r)=>{o.id=r})}buildOrUpdateScales(){const e=this.options,i=e.scales,o=this.scales,r=Object.keys(o).reduce((a,l)=>(a[l]=!1,a),{});let s=[];i&&(s=s.concat(Object.keys(i).map(a=>{const l=i[a],c=aD(a,l),f="r"===c,m="x"===c;return{options:l,dposition:f?"chartArea":m?"bottom":"left",dtype:f?"radialLinear":m?"category":"linear"}}))),Vt(s,a=>{const l=a.options,c=l.id,f=aD(c,l),m=Ge(l.type,a.dtype);(void 0===l.position||Z8(l.position,f)!==Z8(a.dposition))&&(l.position=a.dposition),r[c]=!0;let g=null;c in o&&o[c].type===m?g=o[c]:(g=new(ns.getScale(m))({id:c,type:m,ctx:this.ctx,chart:this}),o[g.id]=g),g.init(l,e)}),Vt(r,(a,l)=>{a||delete o[l]}),Vt(o,a=>{Yi.configure(this,a,a.options),Yi.addBox(this,a)})}_updateMetasets(){const e=this._metasets,i=this.data.datasets.length,o=e.length;if(e.sort((r,s)=>r.index-s.index),o>i){for(let r=i;ri.length&&delete this._stacks,e.forEach((o,r)=>{0===i.filter(s=>s===o._dataset).length&&this._destroyDatasetMeta(r)})}buildOrUpdateControllers(){const e=[],i=this.data.datasets;let o,r;for(this._removeUnreferencedMetasets(),o=0,r=i.length;o{this.getDatasetMeta(i).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const i=this.config;i.update();const o=this._options=i.createResolver(i.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!o.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0}))return;const s=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let a=0;for(let f=0,m=this.data.datasets.length;f{f.reset()}),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(Q8("z","_idx"));const{_active:l,_lastEvent:c}=this;c?this._eventHandler(c,!0):l.length&&this._updateHoverStyles(l,l,!0),this.render()}_updateScales(){Vt(this.scales,e=>{Yi.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,i=new Set(Object.keys(this._listeners)),o=new Set(e.events);(!EV(i,o)||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,i=this._getUniformDataChanges()||[];for(const{method:o,start:r,count:s}of i)hwe(e,r,"_removeElements"===o?-s:s)}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const i=this.data.datasets.length,o=s=>new Set(e.filter(a=>a[0]===s).map((a,l)=>l+","+a.splice(1).join(","))),r=o(0);for(let s=1;ss.split(",")).map(s=>({method:s[1],start:+s[2],count:+s[3]}))}_updateLayout(e){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;Yi.update(this,this.width,this.height,e);const i=this.chartArea,o=i.width<=0||i.height<=0;this._layers=[],Vt(this.boxes,r=>{o&&"chartArea"===r.position||(r.configure&&r.configure(),this._layers.push(...r._layers()))},this),this._layers.forEach((r,s)=>{r._idx=s}),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})){for(let i=0,o=this.data.datasets.length;i=0;--i)this._drawDataset(e[i]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const i=this.ctx,o={meta:e,index:e.index,cancelable:!0},r=p8(this,e);!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(r&&Dv(i,r),e.controller.draw(),r&&Mv(i),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(e){return Hs(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,i,o,r){const s=d0e.modes[i];return"function"==typeof s?s(this,e,o,r):[]}getDatasetMeta(e){const i=this.data.datasets[e],o=this._metasets;let r=o.filter(s=>s&&s._dataset===i).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:i&&i.order||0,index:e,_dataset:i,_parsed:[],_sorted:!1},o.push(r)),r}getContext(){return this.$context||(this.$context=Na(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const i=this.data.datasets[e];if(!i)return!1;const o=this.getDatasetMeta(e);return"boolean"==typeof o.hidden?!o.hidden:!i.hidden}setDatasetVisibility(e,i){this.getDatasetMeta(e).hidden=!i}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,i,o){const r=o?"show":"hide",s=this.getDatasetMeta(e),a=s.controller._resolveAnimations(void 0,r);cp(i)?(s.data[i].hidden=!o,this.update()):(this.setDatasetVisibility(e,o),a.update(s,{visible:o}),this.update(l=>l.datasetIndex===e?r:void 0))}hide(e,i){this._updateVisibility(e,i,!1)}show(e,i){this._updateVisibility(e,i,!0)}_destroyDatasetMeta(e){const i=this._metasets[e];i&&i.controller&&i.controller._destroy(),delete this._metasets[e]}_stop(){let e,i;for(this.stop(),js.remove(this),e=0,i=this.data.datasets.length;e{i.addEventListener(this,s,a),e[s]=a},r=(s,a,l)=>{s.offsetX=a,s.offsetY=l,this._eventHandler(s)};Vt(this.options.events,s=>o(s,r))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,i=this.platform,o=(c,f)=>{i.addEventListener(this,c,f),e[c]=f},r=(c,f)=>{e[c]&&(i.removeEventListener(this,c,f),delete e[c])},s=(c,f)=>{this.canvas&&this.resize(c,f)};let a;const l=()=>{r("attach",l),this.attached=!0,this.resize(),o("resize",s),o("detach",a)};a=()=>{this.attached=!1,r("resize",s),this._stop(),this._resize(0,0),o("attach",l)},i.isAttached(this.canvas)?l():a()}unbindEvents(){Vt(this._listeners,(e,i)=>{this.platform.removeEventListener(this,i,e)}),this._listeners={},Vt(this._responsiveListeners,(e,i)=>{this.platform.removeEventListener(this,i,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,i,o){const r=o?"set":"remove";let s,a,l,c;for("dataset"===i&&(s=this.getDatasetMeta(e[0].datasetIndex),s.controller["_"+r+"DatasetHoverStyle"]()),l=0,c=e.length;l{const l=this.getDatasetMeta(s);if(!l)throw new Error("No dataset found at index "+s);return{datasetIndex:s,element:l.data[a],index:a}});!yv(o,i)&&(this._active=o,this._lastEvent=null,this._updateHoverStyles(o,i))}notifyPlugins(e,i,o){return this._plugins.notify(this,e,i,o)}isPluginEnabled(e){return 1===this._plugins._cache.filter(i=>i.plugin.id===e).length}_updateHoverStyles(e,i,o){const r=this.options.hover,s=(c,f)=>c.filter(m=>!f.some(g=>m.datasetIndex===g.datasetIndex&&m.index===g.index)),a=s(i,e),l=o?e:s(e,i);a.length&&this.updateHoverStyle(a,r.mode,!1),l.length&&r.mode&&this.updateHoverStyle(l,r.mode,!0)}_eventHandler(e,i){const o={event:e,replay:i,cancelable:!0,inChartArea:this.isPointInArea(e)},r=a=>(a.options.events||this.options.events).includes(e.native.type);if(!1===this.notifyPlugins("beforeEvent",o,r))return;const s=this._handleEvent(e,i,o.inChartArea);return o.cancelable=!1,this.notifyPlugins("afterEvent",o,r),(s||o.changed)&&this.render(),this}_handleEvent(e,i,o){const{_active:r=[],options:s}=this,l=this._getActiveElements(e,r,o,i),c=function bCe(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}(e),f=function fwe(t,n,e,i){return e&&"mouseout"!==t.type?i?n:t:null}(e,this._lastEvent,o,c);o&&(this._lastEvent=null,ln(s.onHover,[e,l,this],this),c&&ln(s.onClick,[e,l,this],this));const m=!yv(l,r);return(m||i)&&(this._active=l,this._updateHoverStyles(l,r,i)),this._lastEvent=f,m}_getActiveElements(e,i,o,r){if("mouseout"===e.type)return[];if(!o)return i;const s=this.options.hover;return this.getElementsAtEventForMode(e,s.mode,s,r)}})();function nH(){return Vt(lD.instances,t=>t._plugins.invalidate())}function iH(t,n,e=n){t.lineCap=Ge(e.borderCapStyle,n.borderCapStyle),t.setLineDash(Ge(e.borderDash,n.borderDash)),t.lineDashOffset=Ge(e.borderDashOffset,n.borderDashOffset),t.lineJoin=Ge(e.borderJoinStyle,n.borderJoinStyle),t.lineWidth=Ge(e.borderWidth,n.borderWidth),t.strokeStyle=Ge(e.borderColor,n.borderColor)}function Cwe(t,n,e){t.lineTo(e.x,e.y)}function oH(t,n,e={}){const i=t.length,{start:o=0,end:r=i-1}=e,{start:s,end:a}=n,l=Math.max(o,s),c=Math.min(r,a);return{count:i,start:l,loop:n.loop,ilen:ca&&r>a)?i+c-l:c-l}}function xwe(t,n,e,i){const{points:o,options:r}=n,{count:s,start:a,loop:l,ilen:c}=oH(o,e,i),f=function wwe(t){return t.stepped?jCe:t.tension||"monotone"===t.cubicInterpolationMode?UCe:Cwe}(r);let _,w,k,{move:m=!0,reverse:g}=i||{};for(_=0;_<=c;++_)w=o[(a+(g?c-_:_))%s],!w.skip&&(m?(t.moveTo(w.x,w.y),m=!1):f(t,k,w,g,r.stepped),k=w);return l&&(w=o[(a+(g?c:0))%s],f(t,k,w,g,r.stepped)),!!l}function Swe(t,n,e,i){const o=n.points,{count:r,start:s,ilen:a}=oH(o,e,i),{move:l=!0,reverse:c}=i||{};let g,_,w,k,T,I,f=0,m=0;const R=Y=>(s+(c?a-Y:Y))%r,W=()=>{k!==T&&(t.lineTo(f,T),t.lineTo(f,k),t.lineTo(f,I))};for(l&&(_=o[R(0)],t.moveTo(_.x,_.y)),g=0;g<=a;++g){if(_=o[R(g)],_.skip)continue;const Y=_.x,K=_.y,ee=0|Y;ee===w?(KT&&(T=K),f=(m*f+Y)/++m):(W(),t.lineTo(Y,K),w=ee,m=0,k=T=K),I=K}W()}function cD(t){const n=t.options;return t._decimated||t._loop||n.tension||"monotone"===n.cubicInterpolationMode||n.stepped||n.borderDash&&n.borderDash.length?xwe:Swe}const Twe="function"==typeof Path2D;let kp=(()=>class t extends Us{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:e=>"borderDash"!==e&&"fill"!==e};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,i){const o=this.options;!o.tension&&"monotone"!==o.cubicInterpolationMode||o.stepped||this._pointsUpdated||(h1e(this._points,o,e,o.spanGaps?this._loop:this._fullLoop,i),this._pointsUpdated=!0)}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=function M1e(t,n){const e=t.points,i=t.options.spanGaps,o=e.length;if(!o)return[];const r=!!t._loop,{start:s,end:a}=function k1e(t,n,e,i){let o=0,r=n-1;if(e&&!i)for(;oo&&t[r%n].skip;)r--;return r%=n,{start:o,end:r}}(e,o,r,i);return function h8(t,n,e,i){return i&&i.setContext&&e?function T1e(t,n,e,i){const o=t._chart.getContext(),r=f8(t.options),{_datasetIndex:s,options:{spanGaps:a}}=t,l=e.length,c=[];let f=r,m=n[0].start,g=m;function _(w,k,T,I){const R=a?-1:1;if(w!==k){for(w+=l;e[w%l].skip;)w-=R;for(;e[k%l].skip;)k+=R;w%l!==k%l&&(c.push({start:w%l,end:k%l,loop:T,style:I}),f=I,m=k%l)}}for(const w of n){m=a?m:w.start;let T,k=e[m%l];for(g=m+1;g<=w.end;g++){const I=e[g%l];T=f8(i.setContext(Na(o,{type:"segment",p0:k,p1:I,p0DataIndex:(g-1)%l,p1DataIndex:g%l,datasetIndex:s}))),E1e(T,f)&&_(m,g-1,w.loop,f),k=I,f=T}mclass t extends Us{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(e){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,e&&Object.assign(this,e)}inRange(e,i,o){const r=this.options,{x:s,y:a}=this.getProps(["x","y"],o);return Math.pow(e-s,2)+Math.pow(i-a,2)t;n--){const i=e[n];if(!isNaN(i.x)&&!isNaN(i.y))break}return n}function pH(t,n,e,i){return t&&n?i(t[e],n[e]):t?t[e]:n?n[e]:0}function mH(t,n){let e=[],i=!1;return vn(t)?(i=!0,e=t):e=function Ywe(t,n){const{x:e=null,y:i=null}=t||{},o=n.points,r=[];return n.segments.forEach(({start:s,end:a})=>{a=Hv(s,a,o);const l=o[s],c=o[a];null!==i?(r.push({x:l.x,y:i}),r.push({x:c.x,y:i})):null!==e&&(r.push({x:e,y:l.y}),r.push({x:e,y:c.y}))}),r}(t,n),e.length?new kp({points:e,options:{tension:0},_loop:i,_fullLoop:i}):null}function gH(t){return t&&!1!==t.fill}function Xwe(t,n,e){let o=t[n].fill;const r=[n];let s;if(!e)return o;for(;!1!==o&&-1===r.indexOf(o);){if(!jn(o))return o;if(s=t[o],!s)return!1;if(s.visible)return o;r.push(o),o=s.fill}return!1}function Zwe(t,n,e){const i=function txe(t){const n=t.options,e=n.fill;let i=Ge(e&&e.target,e);return void 0===i&&(i=!!n.backgroundColor),!1!==i&&null!==i&&(!0===i?"origin":i)}(t);if(ft(i))return!isNaN(i.value)&&i;let o=parseFloat(i);return jn(o)&&Math.floor(o)===o?function Qwe(t,n,e,i){return("-"===t||"+"===t)&&(e=n+e),!(e===n||e<0||e>=i)&&e}(i[0],n,o,e):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function oxe(t,n,e){const i=[];for(let o=0;o=0;--s){const a=o[s].$filler;a&&(a.line.updateControlPoints(r,a.axis),i&&a.fill&&pD(t.ctx,a,r))}},beforeDatasetsDraw(t,n,e){if("beforeDatasetsDraw"!==e.drawTime)return;const i=t.getSortedVisibleDatasetMetas();for(let o=i.length-1;o>=0;--o){const r=i[o].$filler;gH(r)&&pD(t.ctx,r,t.chartArea)}},beforeDatasetDraw(t,n,e){const i=n.meta.$filler;!gH(i)||"beforeDatasetDraw"!==e.drawTime||pD(t.ctx,i,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};function OH(t){const n=this.getLabels();return t>=0&&tclass t extends xc{static id="category";static defaults={ticks:{callback:OH}};constructor(e){super(e),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(e){const i=this._addedLabels;if(i.length){const o=this.getLabels();for(const{index:r,label:s}of i)o[r]===s&&o.splice(r,1);this._addedLabels=[]}super.init(e)}parse(e,i){if(dt(e))return null;const o=this.getLabels();return((t,n)=>null===t?null:Si(Math.round(t),0,n))(i=isFinite(i)&&o[i]===e?i:function Oxe(t,n,e,i){const o=t.indexOf(n);return-1===o?((t,n,e,i)=>("string"==typeof n?(e=t.push(n)-1,i.unshift({index:e,label:n})):isNaN(n)&&(e=null),e))(t,n,e,i):o!==t.lastIndexOf(n)?e:o}(o,e,Ge(i,e),this._addedLabels),o.length-1)}determineDataLimits(){const{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:o,max:r}=this.getMinMax(!0);"ticks"===this.options.bounds&&(e||(o=0),i||(r=this.getLabels().length-1)),this.min=o,this.max=r}buildTicks(){const e=this.min,i=this.max,o=this.options.offset,r=[];let s=this.getLabels();s=0===e&&i===s.length-1?s:s.slice(e,i+1),this._valueRange=Math.max(s.length-(o?0:1),1),this._startValue=this.min-(o?.5:0);for(let a=e;a<=i;a++)r.push({value:a});return r}getLabelForValue(e){return OH.call(this,e)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(e){return"number"!=typeof e&&(e=this.parse(e)),null===e?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getPixelForTick(e){const i=this.ticks;return e<0||e>i.length-1?null:this.getPixelForValue(i[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}})();function RH(t,n,{horizontal:e,minRotation:i}){const o=Tr(i),r=(e?Math.sin(o):Math.cos(o))||.001;return Math.min(n/r,.75*n*(""+t).length)}class zv extends xc{constructor(n){super(n),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(n,e){return dt(n)||("number"==typeof n||n instanceof Number)&&!isFinite(+n)?null:+n}handleTickRangeOptions(){const{beginAtZero:n}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:o,max:r}=this;const s=l=>o=e?o:l,a=l=>r=i?r:l;if(n){const l=ts(o),c=ts(r);l<0&&c<0?a(0):l>0&&c>0&&s(0)}if(o===r){let l=0===r?1:Math.abs(.05*r);a(r+l),n||s(o-l)}this.min=o,this.max=r}getTickLimit(){const n=this.options.ticks;let o,{maxTicksLimit:e,stepSize:i}=n;return i?(o=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,o>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${o} ticks. Limiting to 1000.`),o=1e3)):(o=this.computeTickLimit(),e=e||11),e&&(o=Math.min(e,o)),o}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const n=this.options,e=n.ticks;let i=this.getTickLimit();i=Math.max(2,i);const s=function Rxe(t,n){const e=[],{bounds:o,step:r,min:s,max:a,precision:l,count:c,maxTicks:f,maxDigits:m,includeBounds:g}=t,_=r||1,w=f-1,{min:k,max:T}=n,I=!dt(s),R=!dt(a),W=!dt(c),Y=(T-k)/(m+1);let ee,ie,P,A,K=IV((T-k)/w/_)*_;if(K<1e-14&&!I&&!R)return[{value:k},{value:T}];A=Math.ceil(T/K)-Math.floor(k/K),A>w&&(K=IV(A*K/w/_)*_),dt(l)||(ee=Math.pow(10,l),K=Math.ceil(K*ee)/ee),"ticks"===o?(ie=Math.floor(k/K)*K,P=Math.ceil(T/K)*K):(ie=k,P=T),I&&R&&r&&function xCe(t,n){const e=Math.round(t);return e-n<=t&&e+n>=t}((a-s)/r,K/1e3)?(A=Math.round(Math.min((a-s)/K,f)),K=(a-s)/A,ie=s,P=a):W?(ie=I?s:ie,P=R?a:P,A=c-1,K=(P-ie)/A):(A=(P-ie)/K,A=dp(A,Math.round(A),K/1e3)?Math.round(A):Math.ceil(A));const L=Math.max(AV(K),AV(ie));ee=Math.pow(10,dt(l)?L:l),ie=Math.round(ie*ee)/ee,P=Math.round(P*ee)/ee;let $=0;for(I&&(g&&ie!==s?(e.push({value:s}),iea)break;e.push({value:H})}return R&&g&&P!==a?e.length&&dp(e[e.length-1].value,a,RH(a,Y,t))?e[e.length-1].value=a:e.push({value:a}):(!R||P===a)&&e.push({value:P}),e}({maxTicks:i,bounds:n.bounds,min:n.min,max:n.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===n.bounds&&function OV(t,n,e){let i,o,r;for(i=0,o=t.length;i{class t{static{this.topInternalMargin=5}constructor(e){this.height=100,this.animated=!1,this.min=void 0,this.max=void 0,this.differ=e.find([]).create(null)}ngAfterViewInit(){this.chart=new lD(this.chartElement.nativeElement,{type:"line",data:{labels:Array.from(Array(this.data.length).keys()),datasets:[{data:this.data,backgroundColor:"rgba(10, 15, 22, 0.4)",borderColor:"rgba(10, 15, 22, 0.4)",borderWidth:1}]},options:{maintainAspectRatio:!1,events:[],plugins:{legend:{display:!1},tooltip:{enabled:!1}},scales:{y:{display:!1,suggestedMin:0},x:{display:!1}},elements:{point:{radius:0}},layout:{padding:{left:0,right:0,top:t.topInternalMargin,bottom:0}},animation:!!this.animated&&void 0}}),void 0!==this.min&&void 0!==this.max&&(this.updateMinAndMax(),this.chart.update())}ngDoCheck(){this.differ.diff(this.data)&&this.chart&&(void 0!==this.min&&void 0!==this.max&&this.updateMinAndMax(),this.animated?this.chart.update():this.chart.update("none"))}ngOnDestroy(){this.chart&&this.chart.destroy()}updateMinAndMax(){this.chart.options.scales.y.min=this.min,this.chart.options.scales.y.max=this.max}static{this.\u0275fac=function(i){return new(i||t)(O(h_))}}static{this.\u0275cmp=re({type:t,selectors:[["app-line-chart"]],viewQuery:function(i,o){if(1&i&&ot(iSe,5),2&i){let r;he(r=fe())&&(o.chartElement=r.first)}},inputs:{data:"data",height:"height",animated:"animated",min:"min",max:"max"},standalone:!1,decls:3,vars:2,consts:[["chart",""],[1,"chart-container"]],template:function(i,o){1&i&&(h(0,"div",1),B(1,"canvas",null,0),u()),2&i&&no("height: "+o.height+"px;")},styles:[".chart-container[_ngcontent-%COMP%]{position:relative;width:100%;overflow:hidden;border-radius:10px}"]})}}return t})();const WH=()=>({showValue:!0}),GH=()=>({showUnit:!0});function oSe(t,n){if(1&t&&(h(0,"div",0),B(1,"app-line-chart",1),h(2,"div",2)(3,"span",3),p(4),b(5,"translate"),u(),h(6,"span",4)(7,"span",5),p(8),b(9,"autoScale"),u(),h(10,"span",6),p(11),b(12,"autoScale"),u()()()()),2&t){const e=v();d(),C("data",e.trafficData.sentHistory),d(3),M(y(5,4,"common.uploaded")),d(4),M(pe(9,6,e.trafficData.totalSent,Ct(12,WH))),d(3),M(pe(12,9,e.trafficData.totalSent,Ct(13,GH)))}}function rSe(t,n){if(1&t&&(h(0,"div",0),B(1,"app-line-chart",1),h(2,"div",2)(3,"span",3),p(4),b(5,"translate"),u(),h(6,"span",4)(7,"span",5),p(8),b(9,"autoScale"),u(),h(10,"span",6),p(11),b(12,"autoScale"),u()()()()),2&t){const e=v();d(),C("data",e.trafficData.receivedHistory),d(3),M(y(5,4,"common.downloaded")),d(4),M(pe(9,6,e.trafficData.totalReceived,Ct(12,WH))),d(3),M(pe(12,9,e.trafficData.totalReceived,Ct(13,GH)))}}let sSe=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=re({type:t,selectors:[["app-charts"]],inputs:{trafficData:"trafficData"},standalone:!1,decls:2,vars:2,consts:[[1,"small-rounded-elevated-box","chart"],[3,"data"],[1,"info"],[1,"text"],[1,"rate"],[1,"value"],[1,"unit"]],template:function(i,o){1&i&&(x(0,oSe,13,14,"div",0),x(1,rSe,13,14,"div",0)),2&i&&(S(o.trafficData?0:-1),d(),S(o.trafficData?1:-1))},dependencies:[Gv,xe,rp],styles:[".chart[_ngcontent-%COMP%]{position:relative;margin-bottom:20px}.chart[_ngcontent-%COMP%]:last-child{margin-bottom:10px}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%]{position:absolute;bottom:0;left:0;display:flex;justify-content:space-between;align-items:flex-end;padding:10px;width:100%}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#f8f9f9}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.text[_ngcontent-%COMP%]{font-size:.8rem;text-transform:uppercase;font-weight:700}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.rate[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:700}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.rate[_ngcontent-%COMP%] .unit[_ngcontent-%COMP%]{font-size:.8rem;padding-left:5px}"]})}}return t})();function aSe(t,n){1&t&&(h(0,"div",4)(1,"mat-icon",2),p(2,"settings"),u(),p(3),b(4,"translate"),u()),2&t&&(d(),C("inline",!0),d(2),E("",y(4,2,"routes.details.specific-fields-titles.app")," "))}function lSe(t,n){1&t&&(h(0,"div",4)(1,"mat-icon",2),p(2,"swap_horiz"),u(),p(3),b(4,"translate"),u()),2&t&&(d(),C("inline",!0),d(2),E("",y(4,2,"routes.details.specific-fields-titles.forward")," "))}function cSe(t,n){1&t&&(h(0,"div",4)(1,"mat-icon",2),p(2,"arrow_forward"),u(),p(3),b(4,"translate"),u()),2&t&&(d(),C("inline",!0),d(2),E("",y(4,2,"routes.details.specific-fields-titles.intermediary-forward")," "))}function dSe(t,n){if(1&t&&(h(0,"div")(1,"div",3)(2,"span"),p(3),b(4,"translate"),u(),p(5),u(),h(6,"div",3)(7,"span"),p(8),b(9,"translate"),u(),p(10),u()()),2&t){const e=v(2);d(3),M(y(4,5,"routes.details.specific-fields.route-id")),d(2),E(" ",e.routeRule.forwardFields?e.routeRule.forwardFields.nextRid:e.routeRule.intermediaryForwardFields.nextRid," "),d(3),M(y(9,7,"routes.details.specific-fields.transport-id")),d(2),gt(" ",e.routeRule.forwardFields?e.routeRule.forwardFields.nextTid:e.routeRule.intermediaryForwardFields.nextTid," ",e.getLabel(e.routeRule.forwardFields?e.routeRule.forwardFields.nextTid:e.routeRule.intermediaryForwardFields.nextTid)," ")}}function uSe(t,n){if(1&t&&(h(0,"div")(1,"div",3)(2,"span"),p(3),b(4,"translate"),u(),p(5),u(),h(6,"div",3)(7,"span"),p(8),b(9,"translate"),u(),p(10),u(),h(11,"div",3)(12,"span"),p(13),b(14,"translate"),u(),p(15),u(),h(16,"div",3)(17,"span"),p(18),b(19,"translate"),u(),p(20),u()()),2&t){const e=v(2);d(3),M(y(4,10,"routes.details.specific-fields.destination-pk")),d(2),gt(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.dstPk:e.routeRule.forwardFields.routeDescriptor.dstPk," ",e.getLabel(e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.dstPk:e.routeRule.forwardFields.routeDescriptor.dstPk)," "),d(3),M(y(9,12,"routes.details.specific-fields.source-pk")),d(2),gt(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.srcPk:e.routeRule.forwardFields.routeDescriptor.srcPk," ",e.getLabel(e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.srcPk:e.routeRule.forwardFields.routeDescriptor.srcPk)," "),d(3),M(y(14,14,"routes.details.specific-fields.destination-port")),d(2),E(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.dstPort:e.routeRule.forwardFields.routeDescriptor.dstPort," "),d(3),M(y(19,16,"routes.details.specific-fields.source-port")),d(2),E(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.srcPort:e.routeRule.forwardFields.routeDescriptor.srcPort," ")}}function hSe(t,n){if(1&t&&(h(0,"div")(1,"div",4)(2,"mat-icon",2),p(3,"list"),u(),p(4),b(5,"translate"),u(),h(6,"div",3)(7,"span"),p(8),b(9,"translate"),u(),p(10),u(),h(11,"div",3)(12,"span"),p(13),b(14,"translate"),u(),p(15),u(),h(16,"div",3)(17,"span"),p(18),b(19,"translate"),u(),p(20),u(),x(21,aSe,5,4,"div",4),x(22,lSe,5,4,"div",4),x(23,cSe,5,4,"div",4),x(24,dSe,11,9,"div"),x(25,uSe,21,18,"div"),u()),2&t){const e=v();d(2),C("inline",!0),d(2),E("",y(5,13,"routes.details.summary.title")," "),d(4),M(y(9,15,"routes.details.summary.keep-alive")),d(2),E(" ",e.routeRule.ruleSummary.keepAlive," "),d(3),M(y(14,17,"routes.details.summary.type")),d(2),E(" ",e.getRuleTypeName(e.routeRule.ruleSummary.ruleType)," "),d(3),M(y(19,19,"routes.details.summary.key-route-id")),d(2),E(" ",e.routeRule.ruleSummary.keyRouteId," "),d(),S(e.routeRule.appFields?21:-1),d(),S(e.routeRule.forwardFields?22:-1),d(),S(e.routeRule.intermediaryForwardFields?23:-1),d(),S(e.routeRule.forwardFields||e.routeRule.intermediaryForwardFields?24:-1),d(),S(e.routeRule.appFields&&e.routeRule.appFields.routeDescriptor||e.routeRule.forwardFields&&e.routeRule.forwardFields.routeDescriptor?25:-1)}}let fSe=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.largeModalWidth,e.open(t,o)}constructor(e,i,o){this.dialogRef=i,this.storageService=o,this.ruleTypes=new Map([[0,"App"],[1,"Forward"],[2,"Intermediary forward"]]),this.routeRule=e}getRuleTypeName(e){return this.ruleTypes.has(e)?this.ruleTypes.get(e):e.toString()}closePopup(){this.dialogRef.close()}getLabel(e){const i=this.storageService.getLabelInfo(e);return i?" ("+i.label+")":""}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt),O(ti))}}static{this.\u0275cmp=re({type:t,selectors:[["app-route-details"]],standalone:!1,decls:19,vars:17,consts:[[1,"info-dialog",3,"headline","dialog"],[1,"title","mt-0"],[3,"inline"],[1,"item"],[1,"title"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),b(1,"translate"),h(2,"div")(3,"div",1)(4,"mat-icon",2),p(5,"list"),u(),p(6),b(7,"translate"),u(),h(8,"div",3)(9,"span"),p(10),b(11,"translate"),u(),p(12),u(),h(13,"div",3)(14,"span"),p(15),b(16,"translate"),u(),p(17),u(),x(18,hSe,26,21,"div"),u()()),2&i&&(C("headline",y(1,9,"routes.details.title"))("dialog",o.dialogRef),d(4),C("inline",!0),d(2),E("",y(7,11,"routes.details.basic.title")," "),d(4),M(y(11,13,"routes.details.basic.key")),d(2),E(" ",o.routeRule.key," "),d(3),M(y(16,15,"routes.details.basic.rule")),d(2),E(" ",o.routeRule.rule," "),d(),S(o.routeRule.ruleSummary?18:-1))},dependencies:[We,gn,xe],encapsulation:2})}}return t})();const pSe=t=>({text:t}),mSe=()=>({"tooltip-word-break":!0});function gSe(t,n){if(1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t){const e=v();d(),E(" ",y(2,1,e.labelComponents.prefix)," ")}}function _Se(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v();d(),E(" ",e.labelComponents.prefixSeparator," ")}}function bSe(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v();d(),E(" ",e.labelComponents.label," ")}}function vSe(t,n){if(1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t){const e=v();d(),E(" ",y(2,1,e.labelComponents.translatableLabel)," ")}}class ySe{constructor(){this.prefix="",this.prefixSeparator="",this.label="",this.translatableLabel=""}}let kc=(()=>{class t{set id(e){this.idInternal=e,this.labelComponents=t.getLabelComponents(this.storageService,this.id)}get id(){return this.idInternal?this.idInternal:""}static getLabelComponents(e,i){let o;o=!!e.getSavedVisibleLocalNodes().has(i);const r=new ySe;return r.labelInfo=e.getLabelInfo(i),r.labelInfo&&r.labelInfo.label?(o&&(r.prefix="labeled-element.local-element",r.prefixSeparator=" - "),r.label=r.labelInfo.label):e.getSavedVisibleLocalNodes().has(i)?r.prefix="labeled-element.unnamed-local-visor":r.translatableLabel="labeled-element.unnamed-element",r}static getCompleteLabel(e,i,o){const r=t.getLabelComponents(e,o);return(r.prefix?i.instant(r.prefix):"")+r.prefixSeparator+r.label+(r.translatableLabel?i.instant(r.translatableLabel):"")}constructor(e,i,o,r,s){this.dialog=e,this.storageService=i,this.clipboardService=o,this.snackbarService=r,this.router=s,this.short=!1,this.shortTextLength=5,this.elementType=ro.Node,this.labelEdited=new we}ngOnDestroy(){this.labelEdited.complete()}processClick(){const e=[{icon:"filter_none",label:"labeled-element.copy"},{icon:"edit",label:"labeled-element.edit-label"}];this.labelComponents.labelInfo&&e.push({icon:"close",label:"labeled-element.remove-label"}),e.push({icon:"list",label:"labeled-element.view-all-labels"}),ao.openDialog(this.dialog,e,"common.options").afterClosed().subscribe(i=>{if(1===i)this.clipboardService.copy(this.id)&&this.snackbarService.showDone("copy.copied");else if(i>2)if(3===i&&this.labelComponents.labelInfo){const o=Rt.createConfirmationDialog(this.dialog,"labeled-element.remove-label-confirmation");o.componentInstance.operationAccepted.subscribe(()=>{o.componentInstance.closeModal(),this.storageService.saveLabel(this.id,null,this.elementType),this.snackbarService.showDone("edit-label.label-removed-warning"),this.labelEdited.emit()})}else this.router.navigate(["/settings","labels"]);else if(2===i){let o=this.labelComponents.labelInfo;o||(o={id:this.id,label:"",identifiedElementType:this.elementType}),wk.openDialog(this.dialog,o).afterClosed().subscribe(r=>{r&&this.labelEdited.emit()})}})}static{this.\u0275fac=function(i){return new(i||t)(O(Ot),O(ti),O(np),O(ct),O(vt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-labeled-element-text"]],inputs:{id:"id",short:"short",shortTextLength:"shortTextLength",elementType:"elementType"},outputs:{labelEdited:"labelEdited"},standalone:!1,decls:12,vars:17,consts:[[1,"wrapper","highlight-internal-icon",3,"click","matTooltip","matTooltipClass"],[1,"label"],[3,"short","showTooltip","shortTextLength","text"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"div",0),b(1,"translate"),F("click",function(s){return s.stopPropagation(),s.preventDefault(),o.processClick()}),h(2,"span",1),x(3,gSe,3,3,"span"),x(4,_Se,2,1,"span"),x(5,bSe,2,1,"span"),x(6,vSe,3,3,"span"),u(),B(7,"br")(8,"app-truncated-text",2),p(9," \xa0"),h(10,"mat-icon",3),p(11,"settings"),u()()),2&i&&(C("matTooltip",pe(1,11,o.short?"labeled-element.tooltip-with-text":"labeled-element.tooltip",se(14,pSe,o.id)))("matTooltipClass",Ct(16,mSe)),d(3),S(o.labelComponents&&o.labelComponents.prefix?3:-1),d(),S(o.labelComponents&&o.labelComponents.prefixSeparator?4:-1),d(),S(o.labelComponents&&o.labelComponents.label?5:-1),d(),S(o.labelComponents&&o.labelComponents.translatableLabel?6:-1),d(2),C("short",o.short)("showTooltip",!1)("shortTextLength",o.shortTextLength)("text",o.id),d(2),C("inline",!0))},dependencies:[We,Kt,aV,xe],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.wrapper[_ngcontent-%COMP%]{display:inline}.wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:.8rem;-webkit-user-select:none;user-select:none}.label[_ngcontent-%COMP%]{opacity:.7;font-size:.8rem}']})}}return t})();const CSe=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),wSe=t=>({"d-lg-none d-xl-table":t}),xSe=t=>({"d-lg-table d-xl-none":t});function SSe(t,n){1&t&&(h(0,"span",3),p(1),b(2,"translate"),h(3,"mat-icon",13),b(4,"translate"),p(5,"help"),u()()),2&t&&(d(),E(" ",y(2,3,"routes.title")," "),d(2),C("inline",!0)("matTooltip",y(4,5,"routes.info")))}function kSe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().$implicit.translatableValue)," ")}function DSe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.value," ")}function MSe(t,n){if(1&t&&(h(0,"div",15)(1,"span"),p(2),b(3,"translate"),u(),x(4,kSe,2,3),x(5,DSe,1,1),u()),2&t){const e=n.$implicit;d(2),E("",y(3,3,e.filterName),": "),d(2),S(e.translatableValue?4:-1),d(),S(e.value?5:-1)}}function TSe(t,n){if(1&t){const e=oe();h(0,"div",14),F("click",function(){return j(e),U(v().dataFilterer.removeFilters())}),ve(1,MSe,6,5,"div",15,Fe),h(3,"div",16),p(4),b(5,"translate"),u()()}if(2&t){const e=v();d(),ye(e.dataFilterer.currentFiltersTexts),d(3),M(y(5,1,"filters.press-to-remove"))}}function ESe(t,n){if(1&t){const e=oe();h(0,"mat-icon",17),b(1,"translate"),F("click",function(){return j(e),U(v().dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",y(1,2,"filters.filter-action"))}function PSe(t,n){1&t&&(h(0,"mat-icon",8),p(1,"more_horiz"),u()),2&t&&(v(),C("matMenuTriggerFor",Hn(9)))}function ISe(t,n){if(1&t&&(h(0,"mat-icon",21),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function OSe(t,n){if(1&t&&(h(0,"mat-icon",21),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function ASe(t,n){if(1&t&&(h(0,"mat-icon",21),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function RSe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.appFields.routeDescriptor.srcPort," ")}function FSe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.forwardFields.routeDescriptor.srcPort," ")}function NSe(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function LSe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.appFields.routeDescriptor.dstPort," ")}function BSe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.forwardFields.routeDescriptor.dstPort," ")}function VSe(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function HSe(t,n){if(1&t){const e=oe();h(0,"app-labeled-element-text",33),F("labelEdited",function(){return j(e),U(v(3).refreshData())}),u()}if(2&t){const e=v().$implicit,i=v(2);C("id",Qt(e.dst))("elementType",i.labeledElementTypes.Node)}}function jSe(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function USe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.forwardFields.nextRid," ")}function zSe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.intermediaryForwardFields.nextRid," ")}function $Se(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function WSe(t,n){if(1&t){const e=oe();h(0,"app-labeled-element-text",33),F("labelEdited",function(){return j(e),U(v(3).refreshData())}),u()}if(2&t){const e=v().$implicit,i=v(2);C("id",Qt(e.forwardFields.nextTid))("elementType",i.labeledElementTypes.Transport)}}function GSe(t,n){if(1&t){const e=oe();h(0,"app-labeled-element-text",33),F("labelEdited",function(){return j(e),U(v(3).refreshData())}),u()}if(2&t){const e=v().$implicit,i=v(2);C("id",Qt(e.intermediaryForwardFields.nextTid))("elementType",i.labeledElementTypes.Transport)}}function qSe(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function KSe(t,n){1&t&&(p(0),b(1,"number")),2&t&&E(" ",pe(1,1,v().$implicit.ruleSummary.keepAlive/1e9,"1.0-1"),"s ")}function YSe(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function XSe(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td",28)(2,"mat-checkbox",29),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(3,"td",30),p(4),u(),h(5,"td"),p(6),u(),h(7,"td",30),x(8,RSe,1,1)(9,FSe,1,1)(10,NSe,2,0,"span",16),u(),h(11,"td",30),x(12,LSe,1,1)(13,BSe,1,1)(14,VSe,2,0,"span",16),u(),h(15,"td"),x(16,HSe,1,3,"app-labeled-element-text",31)(17,jSe,2,0,"span",16),u(),h(18,"td",30),x(19,USe,1,1)(20,zSe,1,1)(21,$Se,2,0,"span",16),u(),h(22,"td"),x(23,WSe,1,3,"app-labeled-element-text",31)(24,GSe,1,3,"app-labeled-element-text",31)(25,qSe,2,0,"span",16),u(),h(26,"td",30),x(27,KSe,2,4)(28,YSe,2,0,"span",16),u(),h(29,"td",22)(30,"button",32),b(31,"translate"),F("click",function(){const o=j(e).$implicit;return U(v(2).details(o))}),h(32,"mat-icon",21),p(33,"visibility"),u()(),h(34,"button",32),b(35,"translate"),F("click",function(){const o=j(e).$implicit;return U(v(2).delete(o.key))}),h(36,"mat-icon",21),p(37,"close"),u()()()()}if(2&t){const e=n.$implicit,i=v(2);d(2),C("checked",i.selections.get(e.key)),d(2),M(e.key),d(2),M(i.getTypeName(e.type)),d(2),S(null!=e.appFields&&e.appFields.routeDescriptor?8:null!=e.forwardFields&&e.forwardFields.routeDescriptor?9:10),d(4),S(null!=e.appFields&&e.appFields.routeDescriptor?12:null!=e.forwardFields&&e.forwardFields.routeDescriptor?13:14),d(4),S(e.appFields||e.forwardFields?16:17),d(3),S(null!=e.forwardFields&&e.forwardFields.nextRid||0===(null==e.forwardFields?null:e.forwardFields.nextRid)?19:null!=e.intermediaryForwardFields&&e.intermediaryForwardFields.nextRid||0===(null==e.intermediaryForwardFields?null:e.intermediaryForwardFields.nextRid)?20:21),d(4),S(null!=e.forwardFields&&e.forwardFields.nextTid?23:null!=e.intermediaryForwardFields&&e.intermediaryForwardFields.nextTid?24:25),d(4),S(null!=e.ruleSummary&&e.ruleSummary.keepAlive?27:28),d(3),C("matTooltip",y(31,13,"routes.details.title")),d(2),C("inline",!0),d(2),C("matTooltip",y(35,15,"routes.delete")),d(2),C("inline",!0)}}function ZSe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.label")," ")}function QSe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.inverted-order")," ")}function JSe(t,n){if(1&t){const e=oe();h(0,"div",35)(1,"span",2),p(2),b(3,"translate"),u(),p(4),u(),h(5,"div",35)(6,"span",2),p(7),b(8,"translate"),u(),p(9),u(),h(10,"div",35)(11,"span",2),p(12),b(13,"translate"),u(),p(14,": "),h(15,"app-labeled-element-text",33),F("labelEdited",function(){return j(e),U(v(3).refreshData())}),u()()}if(2&t){const e=v().$implicit,i=v(2);d(2),M(y(3,8,"routes.local-port")),d(2),E(": ",null==((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor))?null:((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor)).srcPort," "),d(3),M(y(8,10,"routes.remote-port")),d(2),E(": ",null==((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor))?null:((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor)).dstPort," "),d(3),M(y(13,12,"routes.remote-pk")),d(3),C("id",Qt(e.dst))("elementType",i.labeledElementTypes.Node)}}function eke(t,n){if(1&t){const e=oe();h(0,"div",35)(1,"span",2),p(2),b(3,"translate"),u(),p(4),u(),h(5,"div",35)(6,"span",2),p(7),b(8,"translate"),u(),p(9,": "),h(10,"app-labeled-element-text",33),F("labelEdited",function(){return j(e),U(v(3).refreshData())}),u()()}if(2&t){const e=v().$implicit,i=v(2);d(2),M(y(3,6,"routes.next-rid")),d(2),E(": ",(null==e.forwardFields?null:e.forwardFields.nextRid)??(null==e.intermediaryForwardFields?null:e.intermediaryForwardFields.nextRid)," "),d(3),M(y(8,8,"routes.next-tp")),d(3),C("id",Qt((null==e.forwardFields?null:e.forwardFields.nextTid)||(null==e.intermediaryForwardFields?null:e.intermediaryForwardFields.nextTid)))("elementType",i.labeledElementTypes.Transport)}}function tke(t,n){if(1&t&&(h(0,"div",35)(1,"span",2),p(2),b(3,"translate"),u(),p(4),b(5,"number"),u()),2&t){const e=v().$implicit;d(2),M(y(3,2,"routes.keep-alive")),d(2),E(": ",pe(5,4,e.ruleSummary.keepAlive/1e9,"1.0-1"),"s ")}}function nke(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td")(2,"div",25)(3,"div",34)(4,"mat-checkbox",29),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(5,"div",26)(6,"div",35)(7,"span",2),p(8),b(9,"translate"),u(),p(10),u(),h(11,"div",35)(12,"span",2),p(13),b(14,"translate"),u(),p(15),u(),x(16,JSe,16,14),x(17,eke,11,10),x(18,tke,6,7,"div",35),u(),B(19,"div",36),h(20,"div",27)(21,"button",37),b(22,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(2);return o.stopPropagation(),U(s.showOptionsDialog(r))}),h(23,"mat-icon"),p(24),u()()()()()()}if(2&t){const e=n.$implicit,i=v(2);d(4),C("checked",i.selections.get(e.key)),d(4),M(y(9,10,"routes.key")),d(2),E(": ",e.key," "),d(3),M(y(14,12,"routes.type")),d(2),E(": ",i.getTypeName(e.type)," "),d(),S(null!=e.appFields&&e.appFields.routeDescriptor||null!=e.forwardFields&&e.forwardFields.routeDescriptor?16:-1),d(),S(null!=e.forwardFields&&e.forwardFields.nextTid||null!=e.intermediaryForwardFields&&e.intermediaryForwardFields.nextTid?17:-1),d(),S(null!=e.ruleSummary&&e.ruleSummary.keepAlive?18:-1),d(3),C("matTooltip",y(22,14,"common.options")),d(3),M("add")}}function ike(t,n){if(1&t){const e=oe();h(0,"div",12)(1,"div",18)(2,"table",19)(3,"tr"),B(4,"th"),h(5,"th",20),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.keySortData))}),p(6),b(7,"translate"),x(8,ISe,2,2,"mat-icon",21),u(),h(9,"th",20),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.typeSortData))}),p(10),b(11,"translate"),x(12,OSe,2,2,"mat-icon",21),u(),h(13,"th"),p(14),b(15,"translate"),u(),h(16,"th"),p(17),b(18,"translate"),u(),h(19,"th",20),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.destinationSortData))}),p(20),b(21,"translate"),x(22,ASe,2,2,"mat-icon",21),u(),h(23,"th"),p(24),b(25,"translate"),u(),h(26,"th"),p(27),b(28,"translate"),u(),h(29,"th"),p(30),b(31,"translate"),u(),B(32,"th",22),u(),ve(33,XSe,38,17,"tr",null,Fe),u(),h(35,"table",23)(36,"tr",24),F("click",function(){return j(e),U(v().dataSorter.openSortingOrderModal())}),h(37,"td")(38,"div",25)(39,"div",26)(40,"div",2),p(41),b(42,"translate"),u(),h(43,"div"),p(44),b(45,"translate"),x(46,ZSe,2,3),x(47,QSe,2,3),u()(),h(48,"div",27)(49,"mat-icon",21),p(50,"keyboard_arrow_down"),u()()()()(),ve(51,nke,25,16,"tr",null,Fe),u()()()}if(2&t){const e=v();d(),C("ngClass",_t(39,CSe,e.showShortList_,!e.showShortList_)),d(),C("ngClass",se(42,wSe,e.showShortList_)),d(4),E(" ",y(7,19,"routes.key")," "),d(2),S(e.dataSorter.currentSortingColumn===e.keySortData?8:-1),d(2),E(" ",y(11,21,"routes.type")," "),d(2),S(e.dataSorter.currentSortingColumn===e.typeSortData?12:-1),d(2),M(y(15,23,"routes.local-port")),d(3),M(y(18,25,"routes.remote-port")),d(3),E(" ",y(21,27,"routes.remote-pk")," "),d(2),S(e.dataSorter.currentSortingColumn===e.destinationSortData?22:-1),d(2),M(y(25,29,"routes.next-rid")),d(3),M(y(28,31,"routes.next-tp")),d(3),M(y(31,33,"routes.keep-alive")),d(3),ye(e.dataSource),d(2),C("ngClass",se(44,xSe,e.showShortList_)),d(6),M(y(42,35,"tables.sorting-title")),d(3),E("",y(45,37,e.dataSorter.currentSortingColumn.label)," "),d(2),S(e.dataSorter.currentlySortingByLabel?46:-1),d(),S(e.dataSorter.sortingInReverseOrder?47:-1),d(2),C("inline",!0),d(2),ye(e.dataSource)}}function oke(t,n){1&t&&(h(0,"span",40),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"routes.empty")))}function rke(t,n){1&t&&(h(0,"span",40),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"routes.empty-with-filter")))}function ske(t,n){if(1&t&&(h(0,"div",12)(1,"div",38)(2,"mat-icon",39),p(3,"warning"),u(),x(4,oke,3,3,"span",40),x(5,rke,3,3,"span",40),u()()),2&t){const e=v();d(2),C("inline",!0),d(2),S(0===e.allRoutes.length?4:-1),d(),S(0!==e.allRoutes.length?5:-1)}}let ake=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter.setData(this.filteredRoutes)}set routes(e){if(!e)return;const i=performance.now();console.log("[HV-DIAG] route-list setter called, routes:",e.length);const o=e.map(r=>r.key).sort().join(",");if(o===this.lastRouteKeys&&e.length===this.lastRouteCount)return this.cdr.markForCheck(),void console.log("[HV-DIAG] route-list skip (unchanged) took",(performance.now()-i).toFixed(1),"ms");console.log("[HV-DIAG] route-list FULL reprocessing",e.length,"routes"),this.lastRouteCount=e.length,this.lastRouteKeys=o,this.allRoutes=e,this.allRoutes.forEach(r=>{if(r.type=r.ruleSummary.ruleType||0===r.ruleSummary.ruleType?r.ruleSummary.ruleType:"",r.appFields||r.forwardFields){const s=r.appFields?r.appFields.routeDescriptor:r.forwardFields.routeDescriptor;r.src=s.srcPk,r.src_label=kc.getCompleteLabel(this.storageService,this.translateService,r.src),r.dst=s.dstPk,r.dst_label=kc.getCompleteLabel(this.storageService,this.translateService,r.dst)}else r.intermediaryForwardFields?(r.src="",r.src_label="",r.dst=r.intermediaryForwardFields.nextTid,r.dst_label=kc.getCompleteLabel(this.storageService,this.translateService,r.dst)):(r.src="",r.src_label="",r.dst="",r.dst_label="")}),this.dataFilterer.setData(this.allRoutes)}constructor(e,i,o,r,s,a,l,c){this.routeService=e,this.dialog=i,this.route=o,this.router=r,this.snackbarService=s,this.translateService=a,this.storageService=l,this.cdr=c,this.listId="rl",this.keySortData=new Dt(["key"],"routes.key",st.Number),this.typeSortData=new Dt(["type"],"routes.type",st.Number),this.sourceSortData=new Dt(["src"],"routes.source",st.Text,["src_label"]),this.destinationSortData=new Dt(["dst"],"routes.destination",st.Text,["dst_label"]),this.labeledElementTypes=ro,this.selections=new Map,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.lastRouteCount=-1,this.lastRouteKeys="",this.filterProperties=[{filterName:"routes.filter-dialog.key",keyNameInElementsArray:"key",type:Sn.TextInput,maxlength:8},{filterName:"routes.filter-dialog.source",keyNameInElementsArray:"src",secondaryKeyNameInElementsArray:"src_label",type:Sn.TextInput,maxlength:66},{filterName:"routes.filter-dialog.destination",keyNameInElementsArray:"dst",secondaryKeyNameInElementsArray:"dst_label",type:Sn.TextInput,maxlength:66}],this.ruleTypes=new Map([[0,"App"],[1,"Forward"],[2,"Int. forward"]]),this.operationSubscriptionsGroup=[],this.dataSorter=new gu(this.dialog,this.translateService,this.storageService,[this.keySortData,this.typeSortData,this.sourceSortData,this.destinationSortData],0,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()});const m={filterName:"routes.filter-dialog.type",keyNameInElementsArray:"type",type:Sn.Select,printableLabelsForValues:[{value:"",label:"routes.filter-dialog.any-type-option"}]};this.ruleTypes.forEach((g,_)=>{m.printableLabelsForValues.push({value:_+"",label:g})}),this.filterProperties=[m].concat(this.filterProperties),this.dataFilterer=new _u(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(g=>{this.filteredRoutes=g,this.dataSorter.setData(this.filteredRoutes)}),this.navigationsSubscription=this.route.paramMap.subscribe(g=>{if(g.has("page")){let _=Number.parseInt(g.get("page"),10);(isNaN(_)||_<1)&&(_=1),this.currentPageInUrl=_,this.recalculateElementsToShow()}})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.dataSortedSubscription.unsubscribe(),this.dataFiltererSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFilterer.dispose()}refreshData(){ke.refreshCurrentDisplayedData()}getTypeName(e){return this.ruleTypes.has(e)?this.ruleTypes.get(e):"Unknown"}changeSelection(e){this.selections.get(e.key)?this.selections.set(e.key,!1):this.selections.set(e.key,!0)}hasSelectedElements(){if(!this.selections)return!1;let e=!1;return this.selections.forEach(i=>{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}deleteSelected(){const e=[];this.selections.forEach((i,o)=>{i&&e.push(o)}),0!==e.length&&this.deleteRecursively(e,null)}showOptionsDialog(e){ao.openDialog(this.dialog,[{icon:"visibility",label:"routes.details.title"},{icon:"close",label:"routes.delete"}],"common.options").afterClosed().subscribe(o=>{1===o?this.details(e):2===o&&this.delete(e.key)})}details(e){fSe.openDialog(this.dialog,e)}delete(e){this.operationSubscriptionsGroup.push(this.startDeleting(e).subscribe(()=>{ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("routes.deleted")},i=>{i=Qe(i),this.snackbarService.showError(i)}))}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredRoutes){this.numberOfPages=1,this.currentPage=1,this.routesToShow=this.filteredRoutes.slice();const e=new Map;this.routesToShow.forEach(o=>{e.set(o.key,!0),this.selections.has(o.key)||this.selections.set(o.key,!1)});const i=[];this.selections.forEach((o,r)=>{e.has(r)||i.push(r)}),i.forEach(o=>{this.selections.delete(o)})}else this.routesToShow=null,this.selections=new Map;this.dataSource=this.routesToShow,this.cdr.markForCheck()}startDeleting(e){return this.routeService.delete(ke.getCurrentNodeKey(),e.toString())}deleteRecursively(e,i){this.operationSubscriptionsGroup.push(this.startDeleting(e[e.length-1]).subscribe(()=>{e.pop(),0===e.length?(i&&i.close(),ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("routes.deleted")):this.deleteRecursively(e,i)},o=>{ke.refreshCurrentDisplayedData(),o=Qe(o),i?i.componentInstance.showDone("confirmation.error-header-text",o.translatableErrorMsg):this.snackbarService.showError(o)}))}static{this.\u0275fac=function(i){return new(i||t)(O(Ek),O(Ot),O(Ai),O(vt),O(ct),O(Go),O(ti),O(Jt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-route-list"]],inputs:{nodePK:"nodePK",showShortList:"showShortList",routes:"routes"},standalone:!1,decls:21,vars:18,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[1,"rounded-elevated-box","mt-3"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"click"],[3,"inline"],[1,"actions"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[1,"selection-col"],[3,"change","checked"],[1,"mono"],[3,"id","elementType"],["mat-button","",1,"action-button","transparent-button",3,"click","matTooltip"],[3,"labelEdited","id","elementType"],[1,"check-part"],[1,"list-row","long-content"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,SSe,6,7,"span",3),x(3,TSe,6,3,"div",4),u(),h(4,"div",5)(5,"div",6),x(6,ESe,3,4,"mat-icon",7),x(7,PSe,2,1,"mat-icon",8),h(8,"mat-menu",9,0)(10,"div",10),F("click",function(){return o.changeAllSelections(!0)}),p(11),b(12,"translate"),u(),h(13,"div",10),F("click",function(){return o.changeAllSelections(!1)}),p(14),b(15,"translate"),u(),h(16,"div",11),F("click",function(){return o.deleteSelected()}),p(17),b(18,"translate"),u()()()()(),x(19,ike,53,46,"div",12),x(20,ske,6,3,"div",12)),2&i&&(d(2),S(o.showShortList_?2:-1),d(),S(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?3:-1),d(3),S(o.allRoutes&&o.allRoutes.length>0?6:-1),d(),S(o.dataSource&&o.dataSource.length>0?7:-1),d(),C("overlapTrigger",!1),d(3),E(" ",y(12,12,"selection.select-all")," "),d(3),E(" ",y(15,14,"selection.unselect-all")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(18,16,"selection.delete-all")," "),d(2),S(o.dataSource&&o.dataSource.length>0?19:-1),d(),S(o.dataSource&&0!==o.dataSource.length?-1:20))},dependencies:[$t,Pn,Wo,We,Kt,Jr,As,vu,kr,kc,Vl,xe],styles:[".actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"],changeDetection:0})}}return t})();function lke(t,n){if(1&t){const e=oe();h(0,"form",12),F("ngSubmit",function(){return j(e),U(v(2).submitRouterConfig())}),h(1,"mat-form-field",13)(2,"mat-label"),p(3),b(4,"translate"),u(),B(5,"input",14),u(),h(6,"div",15)(7,"button",16),p(8),b(9,"translate"),u(),h(10,"button",17),F("click",function(){return j(e),U(v(2).toggleRouterForm())}),p(11),b(12,"translate"),u()()()}if(2&t){const e=v(2);C("formGroup",e.routerForm),d(3),M(y(4,5,"node.details.router-info.min-hops")),d(4),C("disabled",!e.routerForm.valid),d(),E(" ",y(9,7,"common.save")," "),d(3),E(" ",y(12,9,"common.cancel")," ")}}function cke(t,n){if(1&t){const e=oe();h(0,"div",0)(1,"div",6)(2,"span",4),p(3),b(4,"translate"),u(),h(5,"span",7)(6,"span",8),p(7),b(8,"translate"),u(),p(9),h(10,"button",9),F("click",function(){return j(e),U(v().toggleRouterForm())}),h(11,"mat-icon",10),p(12),u()()(),x(13,lke,13,11,"form",11),u()()}if(2&t){const e=v();d(3),M(y(4,6,"node.details.router-info.title")),d(4),E("",y(8,8,"node.details.router-info.min-hops")," "),d(2),E(" ",e.node.minHops," "),d(2),C("inline",!0),d(),M(e.showRouterForm?"close":"edit"),d(),S(e.showRouterForm?13:-1)}}let dke=(()=>{class t extends pn{constructor(e,i,o){super(),this.formBuilder=e,this.routeService=i,this.snackbarService=o,this.showRouterForm=!1,this.routerForm=this.formBuilder.group({min:[1,Ne.compose([Ne.required,Ne.maxLength(3),Ne.pattern("^[0-9]+$")])]})}ngOnInit(){return this.dataSubscription=ke.currentNode.subscribe(e=>{this.nodePK=e.localPk,this.node=e,this.routes=e.routes}),this.trafficSubscription=ke.currentTrafficData.subscribe(e=>{this.trafficData=e}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription.unsubscribe(),this.trafficSubscription?.unsubscribe(),this.saveRouterSubscription?.unsubscribe()}toggleRouterForm(){this.showRouterForm=!this.showRouterForm,this.showRouterForm&&this.node&&this.routerForm.get("min").setValue(this.node.minHops)}submitRouterConfig(){if(!this.routerForm.valid||!this.node)return;const e=parseInt(this.routerForm.get("min").value,10);this.saveRouterSubscription=this.routeService.setMinHops(this.node.localPk,e).subscribe({next:()=>{this.snackbarService.showDone("router-config.done"),this.showRouterForm=!1,ke.refreshCurrentDisplayedData()},error:i=>{i=Qe(i),this.snackbarService.showError(i)}})}static{this.\u0275fac=function(i){return new(i||t)(O(di),O(Ek),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-routing"]],standalone:!1,features:[be],decls:8,vars:8,consts:[[1,"rounded-elevated-box","mt-3"],[3,"routes","showShortList","nodePK"],[1,"rounded-elevated-box","mt-3","traffic-box"],[1,"box-internal-container"],[1,"section-title"],[1,"d-flex","flex-column","justify-content-end","mt-3",3,"trafficData"],[1,"box-internal-container","overflow","font-smaller"],[1,"info-line"],[1,"title"],["mat-icon-button","",1,"inline-edit-btn",3,"click"],[3,"inline"],[1,"inline-form",3,"formGroup"],[1,"inline-form",3,"ngSubmit","formGroup"],["appearance","outline",1,"inline-form-field-sm"],["matInput","","type","number","formControlName","min","min","0","max","999"],[1,"inline-form-actions"],["mat-raised-button","","color","primary","type","submit",3,"disabled"],["mat-button","","type","button",3,"click"]],template:function(i,o){1&i&&(x(0,cke,14,10,"div",0),B(1,"app-route-list",1),h(2,"div",2)(3,"div",3)(4,"span",4),p(5),b(6,"translate"),u(),B(7,"app-charts",5),u()()),2&i&&(S(o.node?0:-1),d(),C("routes",o.routes)("showShortList",!0)("nodePK",o.nodePK),d(4),M(y(6,6,"node.details.node-traffic-data")),d(2),C("trafficData",o.trafficData))},dependencies:[xn,Gt,rc,qt,wn,tp,sv,on,mn,sn,Os,In,Pn,Wo,We,sSe,ake,xe],encapsulation:2})}}return t})();function uke(t,n){if(1&t&&(h(0,"mat-option",5),p(1),b(2,"translate"),u()),2&t){const e=n.$implicit;C("value",e.days),d(),M(y(2,2,e.text))}}let hke=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.data=e,this.dialogRef=i,this.formBuilder=o}ngOnInit(){this.filters=[{text:"apps.log.filter.7-days",days:7},{text:"apps.log.filter.1-month",days:30},{text:"apps.log.filter.3-months",days:90},{text:"apps.log.filter.6-months",days:180},{text:"apps.log.filter.1-year",days:365},{text:"apps.log.filter.all",days:-1}],this.form=this.formBuilder.group({filter:[this.data.days]}),this.formSubscription=this.form.get("filter").valueChanges.subscribe(e=>{this.dialogRef.close(this.filters.find(i=>i.days===e))})}ngOnDestroy(){this.formSubscription.unsubscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-log-filter"]],standalone:!1,decls:11,vars:8,consts:[[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","filter"],[3,"value"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),b(1,"translate"),h(2,"form",1)(3,"mat-form-field")(4,"div",2)(5,"label",3),p(6),b(7,"translate"),u(),h(8,"mat-select",4),ve(9,uke,3,4,"mat-option",5,Fe),u()()()()()),2&i&&(C("headline",y(1,4,"apps.log.filter.title"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(4),M(y(7,6,"apps.log.filter.filter")),d(3),ye(o.filters))},dependencies:[xn,qt,wn,on,mn,sn,Pa,Qr,gn,xe],styles:["mat-form-field[_ngcontent-%COMP%]{margin-bottom:-24px}"]})}}return t})();const fke=["content"],pke=t=>({totalLogs:t});function mke(t,n){if(1&t&&(h(0,"app-button",7)(1,"div",11),p(2),b(3,"translate"),u()()),2&t){const e=v();d(2),E(" ",pe(3,1,"apps.log.view-all",se(4,pke,e.totalLogs))," ")}}function gke(t,n){if(1&t&&(h(0,"div",8)(1,"span",12),p(2),u(),p(3),u()),2&t){const e=n.$implicit;d(2),E(" ",e.time," "),d(),E(" ",e.msg," ")}}function _ke(t,n){1&t&&(h(0,"div",9),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"apps.log.empty")," "))}function bke(t,n){1&t&&B(0,"app-loading-indicator",10),2&t&&C("showWhite",!1)}let vke=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.largeModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.dialogRef=i,this.appsService=o,this.dialog=r,this.snackbarService=s,this.apiService=a,this.logMessages=[],this.hasMoreLogMessages=!1,this.totalLogs=0,this.loading=!1,this.currentFilter={text:"apps.log.filter.7-days",days:7},this.shouldShowError=!0}ngOnInit(){this.loadData(0)}ngOnDestroy(){this.removeSubscription()}filter(){hke.openDialog(this.dialog,this.currentFilter).afterClosed().subscribe(e=>{e&&(this.currentFilter=e,this.logMessages=[],this.loadData(0))})}getLogsUrl(){return"/"+this.apiService.apiPrefix+this.appsService.getLogMessagesUrl(ke.getCurrentNodeKey(),this.data.name)}loadData(e){this.removeSubscription(),this.loading=!0,this.subscription=ae(1).pipe(li(e),It(()=>this.appsService.getLogMessages(ke.getCurrentNodeKey(),this.data.name,this.currentFilter.days))).subscribe(i=>this.onLogsReceived(i),i=>this.onLogsError(i))}removeSubscription(){this.subscription&&this.subscription.unsubscribe()}onLogsReceived(e=[]){this.loading=!1,this.shouldShowError=!0,this.snackbarService.closeCurrentIfTemporaryError();let i=0;this.hasMoreLogMessages=!1,this.totalLogs=e.length,e.forEach(o=>{if(i<5e3){const r=o.startsWith("[")?0:-1,s=-1!==r?o.indexOf("]"):-1;this.logMessages.push(-1!==r&&-1!==s?{time:o.substr(r,s+1),msg:o.substr(s+1)}:{time:"",msg:o})}else this.hasMoreLogMessages=!0;i+=1}),setTimeout(()=>{this.content.nativeElement.scrollTop=this.content.nativeElement.scrollHeight})}onLogsError(e){e=Qe(e),this.shouldShowError&&(this.snackbarService.showError("common.loading-error",null,!0,e),this.shouldShowError=!1),this.loadData(rt.connectionRetryDelay)}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt),O(Rs),O(Ot),O(ct),O(zi))}}static{this.\u0275cmp=re({type:t,selectors:[["app-log"]],viewQuery:function(i,o){if(1&i&&ot(fke,5),2&i){let r;he(r=fe())&&(o.content=r.first)}},standalone:!1,decls:20,vars:16,consts:[["content",""],[3,"headline","includeVerticalMargins","includeScrollableArea","dialog"],[1,"top-dialog-button",3,"click"],[1,"top-dialog-button-content"],[1,"actual-value"],[1,"top-dialog-button-margin"],["target","_blank",3,"href"],["color","primary",1,"full-logs-button"],[1,"app-log-message"],[1,"app-log-empty","mt-3"],[3,"showWhite"],[1,"text-container"],[1,"transparent"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"div",2),F("click",function(){return o.filter()}),h(3,"div",3)(4,"div")(5,"span"),p(6),b(7,"translate"),u(),h(8,"span",4),p(9),b(10,"translate"),u()()(),B(11,"div",5),u(),h(12,"mat-dialog-content",null,0)(14,"a",6),x(15,mke,4,6,"app-button",7),u(),ve(16,gke,4,2,"div",8,Fe),x(18,_ke,3,3,"div",9),x(19,bke,1,1,"app-loading-indicator",10),u()()),2&i&&(C("headline",y(1,10,"apps.log.title"))("includeVerticalMargins",!1)("includeScrollableArea",!1)("dialog",o.dialogRef),d(6),E("",y(7,12,"apps.log.filter-button")," "),d(3),M(y(10,14,o.currentFilter.text)),d(5),C("href",o.getLogsUrl(),mo),d(),S(o.hasMoreLogMessages?15:-1),d(),ye(o.logMessages),d(2),S(o.loading||o.logMessages&&0!==o.logMessages.length?-1:18),d(),S(o.loading?19:-1))},dependencies:[Jd,ui,gn,Yr,xe],styles:[".mat-mdc-dialog-content[_ngcontent-%COMP%]{font-size:.875rem}.app-log-message[_ngcontent-%COMP%]{margin-top:15px;word-break:break-word}.app-log-message[_ngcontent-%COMP%] .transparent[_ngcontent-%COMP%]{color:#999}.app-log-message[_ngcontent-%COMP%]:first-of-type{margin-top:0}.app-log-message[_ngcontent-%COMP%]:last-of-type{margin-bottom:24px}.top-dialog-button[_ngcontent-%COMP%]{color:#777!important}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%]{text-align:center}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .actual-value[_ngcontent-%COMP%]{color:#202226}.full-logs-button[_ngcontent-%COMP%] button{width:100%!important;display:block;text-align:center;margin-bottom:15px}.full-logs-button[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{width:100%}"]})}}return t})();const yke=["button"],Cke=["firstInput"],vD=t=>({"element-disabled":t});function wke(t,n){if(1&t&&(h(0,"mat-form-field",4)(1,"div",5)(2,"label",10),p(3),b(4,"translate"),u(),B(5,"input",11),u()()),2&t){const e=v();C("ngClass",se(4,vD,e.disableDismiss)),d(3),M(y(4,2,"apps.vpn-socks-server-settings.netifc"))}}function xke(t,n){if(1&t){const e=oe();h(0,"div",8)(1,"mat-checkbox",12),F("change",function(o){return j(e),U(v().setSecureMode(o))}),p(2),b(3,"translate"),h(4,"mat-icon",13),b(5,"translate"),p(6,"help"),u()()()}if(2&t){const e=v();d(),C("checked",e.secureMode)("ngClass",se(9,vD,e.disableDismiss)),d(),E(" ",y(3,5,"apps.vpn-socks-server-settings.secure-mode-check")," "),d(2),C("inline",!0)("matTooltip",y(5,7,"apps.vpn-socks-server-settings.secure-mode-info"))}}let Ske=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.appsService=i,this.formBuilder=o,this.dialogRef=r,this.snackbarService=s,this.dialog=a,this.configuringVpn=!1,this.secureMode=!1,-1!==e.name.toLocaleLowerCase().indexOf("vpn")&&(this.configuringVpn=!0)}ngOnInit(){if(this.form=this.formBuilder.group({whitelist:["",this.validateWhitelist.bind(this)],netifc:[""]}),this.data.args&&this.data.args.length>0)for(let e=0;ethis.firstInput.nativeElement.focus())}ngOnDestroy(){this.formSubscription&&this.formSubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()}get disableDismiss(){return!!this.button&&this.button.isLoading}setSecureMode(e){this.button.disabled||(this.secureMode=!!e.checked)}saveChanges(){if(!this.form.valid||this.button.disabled)return;const i=this.normalizedWhitelist()?"apps.vpn-socks-server-settings.set-whitelist-confirmation":"apps.vpn-socks-server-settings.clear-whitelist-confirmation",o=Rt.createConfirmationDialog(this.dialog,i);o.componentInstance.operationAccepted.subscribe(()=>{o.close(),this.continueSavingChanges()})}continueSavingChanges(){this.button.showLoading();const e={whitelist:this.normalizedWhitelist()};this.configuringVpn&&(e.secure=this.secureMode,e.netifc=this.form.get("netifc").value),this.operationSubscription=this.appsService.changeAppSettings(ke.getCurrentNodeKey(),this.data.name,e).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)})}normalizedWhitelist(){const e=(this.form.get("whitelist").value||"").trim();return""===e?"":e.split(/[\s,]+/).filter(i=>i.length>0).join(",")}onSuccess(){ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.vpn-socks-server-settings.changes-made"),this.dialogRef.close()}onError(e){this.button.showError(),e=Qe(e),this.snackbarService.showError(e)}validateWhitelist(e){const i=(e&&(e.value||"")).trim();if(""===i)return null;for(const o of i.split(/[\s,]+/))if(""!==o&&(66!==o.length||!/^[0-9a-fA-F]+$/.test(o)))return{invalid:!0};return null}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Rs),O(di),O(Bt),O(ct),O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-skysocks-settings"]],viewQuery:function(i,o){if(1&i&&ot(yke,5)(Cke,5),2&i){let r;he(r=fe())&&(o.button=r.first),he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:23,vars:24,consts:[["firstInput",""],["button",""],[3,"headline","dialog","disableDismiss"],[3,"formGroup"],[3,"ngClass"],[1,"field-container"],["for","whitelist",1,"field-label"],["id","whitelist","formControlName","whitelist","rows","3","matInput","","placeholder","02abc..., 03def..."],[1,"main-theme","settings-option"],["color","primary",1,"float-right",3,"action","disabled"],["for","remoteKey",1,"field-label"],["id","netifc","type","text","formControlName","netifc","matInput",""],["color","primary",3,"change","checked","ngClass"],[1,"help-icon",3,"inline","matTooltip"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),b(1,"translate"),h(2,"form",3)(3,"mat-form-field",4)(4,"div",5)(5,"label",6),p(6),b(7,"translate"),u(),B(8,"textarea",7,0),u(),h(10,"mat-hint"),p(11),b(12,"translate"),u(),h(13,"mat-error")(14,"span"),p(15),b(16,"translate"),u()()(),x(17,wke,6,6,"mat-form-field",4),x(18,xke,7,11,"div",8),u(),h(19,"app-button",9,1),F("action",function(){return o.saveChanges()}),p(21),b(22,"translate"),u()()),2&i&&(C("headline",y(1,12,"apps.vpn-socks-server-settings."+(o.configuringVpn?"vpn-title":"socks-title")))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),d(2),C("formGroup",o.form),d(),C("ngClass",se(22,vD,o.disableDismiss)),d(3),M(y(7,14,"apps.vpn-socks-server-settings.whitelist")),d(5),M(y(12,16,"apps.vpn-socks-server-settings.whitelist-help")),d(4),M(y(16,18,"apps.vpn-socks-server-settings.whitelist-invalid-pk")),d(2),S(o.configuringVpn?17:-1),d(),S(o.configuringVpn?18:-1),d(),C("disabled",!o.form.valid),d(2),E(" ",y(22,20,"apps.vpn-socks-server-settings.save")," "))},dependencies:[$t,xn,Gt,qt,wn,on,mn,sn,uk,Ma,In,We,Kt,kr,ui,gn,xe],styles:["mat-checkbox[_ngcontent-%COMP%]{margin-bottom:15px}"]})}}return t})();const kke=["firstInput"];let Dke=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i||"",o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.dialogRef=e,this.data=i,this.formBuilder=o}ngOnInit(){this.form=this.formBuilder.group({note:[this.data]}),setTimeout(()=>this.firstInput.nativeElement.focus())}finish(){const e=this.form.get("note").value.trim();this.dialogRef.close("-"+e)}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-edit-skysocks-client-note"]],viewQuery:function(i,o){if(1&i&&ot(kke,5),2&i){let r;he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:11,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","note","maxlength","100","matInput",""],["color","primary","type","mat-raised-button",1,"float-right",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),b(7,"translate"),u(),B(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.finish()}),p(11),b(12,"translate"),u()()),2&i&&(C("headline",y(1,5,"apps.vpn-socks-client-settings.change-note-dialog.title"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(4),M(y(7,7,"apps.vpn-socks-client-settings.change-note-dialog.note")),d(5),M(y(12,9,"common.save")))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,In,ui,gn,xe],encapsulation:2})}}return t})();function Mke(t,n){if(1&t&&p(0),2&t){const e=v().$implicit;E(" ",v(2).completeCountriesList[e.toUpperCase()]," ")}}function Tke(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.toUpperCase()," ")}function Eke(t,n){if(1&t&&(h(0,"mat-option",9)(1,"div",10),B(2,"div"),u(),x(3,Mke,1,1),x(4,Tke,1,1),u()),2&t){const e=n.$implicit,i=v(2);C("value",e.toUpperCase()),d(2),no("background-image: url('assets/img/flags/"+e.toLocaleLowerCase()+".png');"),d(),S(i.completeCountriesList[e.toUpperCase()]?3:-1),d(),S(i.completeCountriesList[e.toUpperCase()]?-1:4)}}function Pke(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"apps.vpn-socks-client-settings.filter-dialog.any-country")," ")}function Ike(t,n){if(1&t&&p(0),2&t){const e=v(3);E(" ",e.completeCountriesList[e.form.get("country").value]," ")}}function Oke(t,n){1&t&&p(0),2&t&&E(" ",v(3).form.get("country").value," ")}function Ake(t,n){if(1&t&&(h(0,"div",10),B(1,"div"),u(),x(2,Ike,1,1),x(3,Oke,1,1)),2&t){const e=v(2);d(),no("background-image: url('assets/img/flags/"+e.form.get("country").value.toLocaleLowerCase()+".png');"),d(),S(e.completeCountriesList[e.form.get("country").value]?2:-1),d(),S(e.completeCountriesList[e.form.get("country").value]?-1:3)}}function Rke(t,n){if(1&t&&(h(0,"mat-form-field")(1,"div",3)(2,"label",4),p(3),b(4,"translate"),u(),h(5,"mat-select",8)(6,"mat-option",9),p(7),b(8,"translate"),u(),ve(9,Eke,5,5,"mat-option",9,Fe),h(11,"mat-select-trigger"),x(12,Pke,2,3),x(13,Ake,4,4),u()()()()),2&t){const e=v();d(3),M(y(4,5,"apps.vpn-socks-client-settings.filter-dialog.country")),d(3),C("value","-"),d(),M(y(8,7,"apps.vpn-socks-client-settings.filter-dialog.any-country")),d(2),ye(e.data.availableCountries),d(3),S("-"===e.form.get("country").value?12:-1),d(),S("-"!==e.form.get("country").value?13:-1)}}class qH{constructor(){this.country="",this.location="",this.key=""}}let Fke=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.data=e,this.dialogRef=i,this.formBuilder=o,this.completeCountriesList=es}ngOnInit(){this.form=this.formBuilder.group({country:[this.data.currentFilters.country?this.data.currentFilters.country:"-"],"location-text":[this.data.currentFilters.location],"key-text":[this.data.currentFilters.key]})}apply(){const e=new qH;let i=this.form.get("country").value.trim();"-"===i&&(i=""),e.country=i,e.location=this.form.get("location-text").value.trim(),e.key=this.form.get("key-text").value.trim(),this.dialogRef.close(e)}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-skysocks-client-filter"]],standalone:!1,decls:20,vars:15,consts:[["button",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","location-text","maxlength","100","matInput",""],["formControlName","key-text","maxlength","66","matInput",""],["type","mat-raised-button","color","primary",1,"float-right",3,"action"],["formControlName","country","id","country"],[3,"value"],[1,"flag-container"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2),x(3,Rke,14,9,"mat-form-field"),h(4,"mat-form-field")(5,"div",3)(6,"label",4),p(7),b(8,"translate"),u(),B(9,"input",5),u()(),h(10,"mat-form-field")(11,"div",3)(12,"label",4),p(13),b(14,"translate"),u(),B(15,"input",6),u()()(),h(16,"app-button",7,0),F("action",function(){return o.apply()}),p(18),b(19,"translate"),u()()),2&i&&(C("headline",y(1,7,"apps.vpn-socks-client-settings.filter-dialog.title"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(),S(o.data.availableCountries.length>0?3:-1),d(4),M(y(8,9,"apps.vpn-socks-client-settings.filter-dialog.location")),d(6),M(y(14,11,"apps.vpn-socks-client-settings.filter-dialog.pub-key")),d(5),E(" ",y(19,13,"apps.vpn-socks-client-settings.filter-dialog.apply")," "))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,In,Pa,Gme,Qr,ui,gn,xe],encapsulation:2})}}return t})();const Nke=["firstInput"];let Lke=(()=>{class t{static openDialog(e){const i=new nn;return i.autoFocus=!1,i.width=rt.smallModalWidth,e.open(t,i)}constructor(e,i){this.dialogRef=e,this.formBuilder=i}ngOnInit(){this.form=this.formBuilder.group({password:[""]}),setTimeout(()=>this.firstInput.nativeElement.focus())}finish(){const e=this.form.get("password").value;this.dialogRef.close("-"+e)}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-skysocks-client-password"]],viewQuery:function(i,o){if(1&i&&ot(Nke,5),2&i){let r;he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:16,vars:14,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"info"],[1,"field-container"],["for","remoteKey",1,"field-label"],["type","password","id","password","formControlName","password","maxlength","100","matInput",""],["color","primary","type","mat-raised-button",1,"float-right",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2)(3,"div",3),p(4),b(5,"translate"),u(),h(6,"mat-form-field")(7,"div",4)(8,"label",5),p(9),b(10,"translate"),u(),B(11,"input",6,0),u()()(),h(13,"app-button",7),F("action",function(){return o.finish()}),p(14),b(15,"translate"),u()()),2&i&&(C("headline",y(1,6,"apps.vpn-socks-client-settings.password-dialog.title"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(2),M(y(5,8,"apps.vpn-socks-client-settings.password-dialog.info")),d(5),M(y(10,10,"apps.vpn-socks-client-settings.password-dialog.password")),d(5),E(" ",y(15,12,"apps.vpn-socks-client-settings.password-dialog.continue-button")," "))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,In,ui,gn,xe],styles:[".info[_ngcontent-%COMP%]{font-size:.7rem;margin-bottom:15px}"]})}}return t})(),Bke=(()=>{class t{constructor(e){this.http=e,this.discoveryServiceUrl="https://sd.skycoin.com/api/services?type="}getServices(e){const i=[];return this.http.get(this.discoveryServiceUrl+(e?"proxy":"vpn")).pipe(ip(o=>o.pipe(li(4e3))),Se(o=>(o||(o=[]),o.forEach(r=>{const s=new nme,a=r.address.split(":");2===a.length&&(s.address=r.address,s.pk=a[0],s.port=a[1],s.location="",r.geo&&(r.geo.country&&(s.country=r.geo.country,s.location+=es[r.geo.country.toUpperCase()]?es[r.geo.country.toUpperCase()]:r.geo.country),r.geo.region&&r.geo.country&&(s.location+=", "),r.geo.region&&(s.region=r.geo.region,s.location+=s.region)),i.push(s))}),i)))}static{this.\u0275fac=function(i){return new(i||t)(ce(ba))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const yD=["*"];function Vke(t,n){1&t&&Pt(0)}const Hke=["tabListContainer"],jke=["tabList"],Uke=["tabListInner"],zke=["nextPaginator"],$ke=["previousPaginator"],Wke=["content"];function Gke(t,n){}const qke=["tabBodyWrapper"],Kke=["tabHeader"];function Yke(t,n){}function Xke(t,n){1&t&&it(0,Yke,0,0,"ng-template",12),2&t&&C("cdkPortalOutlet",v().$implicit.templateLabel)}function Zke(t,n){1&t&&p(0),2&t&&M(v().$implicit.textLabel)}function Qke(t,n){if(1&t){const e=oe();h(0,"div",7,2),F("click",function(){const o=j(e),r=o.$implicit,s=o.$index,a=v(),l=Hn(1);return U(a._handleClick(r,l,s))})("cdkFocusChange",function(o){const r=j(e).$index;return U(v()._tabFocusChanged(o,r))}),B(2,"span",8)(3,"div",9),h(4,"span",10)(5,"span",11),x(6,Xke,1,1,null,12)(7,Zke,1,1),u()()()}if(2&t){const e=n.$implicit,i=n.$index,o=Hn(1),r=v();Ze(e.labelClass),Ie("mdc-tab--active",r.selectedIndex===i),C("id",r._getTabLabelId(e,i))("disabled",e.disabled)("fitInkBarToContent",r.fitInkBarToContent),$e("tabIndex",r._getTabIndex(i))("aria-posinset",i+1)("aria-setsize",r._tabs.length)("aria-controls",r._getTabContentId(i))("aria-selected",r.selectedIndex===i)("aria-label",e.ariaLabel||null)("aria-labelledby",!e.ariaLabel&&e.ariaLabelledby?e.ariaLabelledby:null),d(3),C("matRippleTrigger",o)("matRippleDisabled",e.disabled||r.disableRipple),d(3),S(e.templateLabel?6:7)}}function Jke(t,n){1&t&&Pt(0)}function eDe(t,n){if(1&t){const e=oe();h(0,"mat-tab-body",13),F("_onCentered",function(){return j(e),U(v()._removeTabBodyWrapperHeight())})("_onCentering",function(o){return j(e),U(v()._setTabBodyWrapperHeight(o))})("_beforeCentering",function(o){return j(e),U(v()._bodyCentered(o))}),u()}if(2&t){const e=n.$implicit,i=n.$index,o=v();Ze(e.bodyClass),C("id",o._getTabContentId(i))("content",e.content)("position",e.position)("animationDuration",o.animationDuration)("preserveContent",o.preserveContent),$e("tabindex",null!=o.contentTabIndex&&o.selectedIndex===i?o.contentTabIndex:null)("aria-labelledby",o._getTabLabelId(e,i))("aria-hidden",o.selectedIndex!==i)}}const tDe=new Z("MatTabContent");let nDe=(()=>{class t{template=D(Ti);constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matTabContent",""]],features:[lt([{provide:tDe,useExisting:t}])]})}return t})();const iDe=new Z("MatTabLabel"),KH=new Z("MAT_TAB");let oDe=(()=>{class t extends Bce{_closestTab=D(KH,{optional:!0});static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","mat-tab-label",""],["","matTabLabel",""]],features:[lt([{provide:iDe,useExisting:t}]),be]})}return t})();const YH=new Z("MAT_TAB_GROUP");let XH=(()=>{class t{_viewContainerRef=D(Ei);_closestTabGroup=D(YH,{optional:!0});disabled=!1;get templateLabel(){return this._templateLabel}set templateLabel(e){this._setTemplateLabelInput(e)}_templateLabel;_explicitContent=void 0;_implicitContent;textLabel="";ariaLabel;ariaLabelledby;labelClass;bodyClass;id=null;_contentPortal=null;get content(){return this._contentPortal}_stateChanges=new me;position=null;origin=null;isActive=!1;constructor(){D(zo).load(tu)}ngOnChanges(e){(e.hasOwnProperty("textLabel")||e.hasOwnProperty("disabled"))&&this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}ngOnInit(){this._contentPortal=new Yl(this._explicitContent||this._implicitContent,this._viewContainerRef)}_setTemplateLabelInput(e){e&&e._closestTab===this&&(this._templateLabel=e)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-tab"]],contentQueries:function(i,o,r){if(1&i&&ys(r,oDe,5)(r,nDe,7,Ti),2&i){let s;he(s=fe())&&(o.templateLabel=s.first),he(s=fe())&&(o._explicitContent=s.first)}},viewQuery:function(i,o){if(1&i&&ot(Ti,7),2&i){let r;he(r=fe())&&(o._implicitContent=r.first)}},hostAttrs:["hidden",""],hostVars:1,hostBindings:function(i,o){2&i&&$e("id",null)},inputs:{disabled:[2,"disabled","disabled",De],textLabel:[0,"label","textLabel"],ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],labelClass:"labelClass",bodyClass:"bodyClass",id:"id"},exportAs:["matTab"],features:[lt([{provide:KH,useExisting:t}]),_i],ngContentSelectors:yD,decls:1,vars:0,template:function(i,o){1&i&&(yi(),Eg(0,Vke,1,0,"ng-template"))},encapsulation:2})}return t})();const CD="mdc-tab-indicator--active",ZH="mdc-tab-indicator--no-transition";class rDe{_items;_currentItem;constructor(n){this._items=n}hide(){this._items.forEach(n=>n.deactivateInkBar()),this._currentItem=void 0}alignToElement(n){const e=this._items.find(o=>o.elementRef.nativeElement===n),i=this._currentItem;if(e!==i&&(i?.deactivateInkBar(),e)){const o=i?.elementRef.nativeElement.getBoundingClientRect?.();e.activateInkBar(o),this._currentItem=e}}}let sDe=(()=>{class t{_elementRef=D(Re);_inkBarElement=null;_inkBarContentElement=null;_fitToContent=!1;get fitInkBarToContent(){return this._fitToContent}set fitInkBarToContent(e){this._fitToContent!==e&&(this._fitToContent=e,this._inkBarElement&&this._appendInkBarElement())}activateInkBar(e){const i=this._elementRef.nativeElement;if(!e||!i.getBoundingClientRect||!this._inkBarContentElement)return void i.classList.add(CD);const o=i.getBoundingClientRect(),r=e.width/o.width,s=e.left-o.left;i.classList.add(ZH),this._inkBarContentElement.style.setProperty("transform",`translateX(${s}px) scaleX(${r})`),i.getBoundingClientRect(),i.classList.remove(ZH),i.classList.add(CD),this._inkBarContentElement.style.setProperty("transform","")}deactivateInkBar(){this._elementRef.nativeElement.classList.remove(CD)}ngOnInit(){this._createInkBarElement()}ngOnDestroy(){this._inkBarElement?.remove(),this._inkBarElement=this._inkBarContentElement=null}_createInkBarElement(){const e=this._elementRef.nativeElement.ownerDocument||document,i=this._inkBarElement=e.createElement("span"),o=this._inkBarContentElement=e.createElement("span");i.className="mdc-tab-indicator",o.className="mdc-tab-indicator__content mdc-tab-indicator__content--underline",i.appendChild(this._inkBarContentElement),this._appendInkBarElement()}_appendInkBarElement(){(this._fitToContent?this._elementRef.nativeElement.querySelector(".mdc-tab__content"):this._elementRef.nativeElement).appendChild(this._inkBarElement)}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,inputs:{fitInkBarToContent:[2,"fitInkBarToContent","fitInkBarToContent",De]}})}return t})(),QH=(()=>{class t extends sDe{elementRef=D(Re);disabled=!1;focus(){this.elementRef.nativeElement.focus()}getOffsetLeft(){return this.elementRef.nativeElement.offsetLeft}getOffsetWidth(){return this.elementRef.nativeElement.offsetWidth}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","matTabLabelWrapper",""]],hostVars:3,hostBindings:function(i,o){2&i&&($e("aria-disabled",!!o.disabled),Ie("mat-mdc-tab-disabled",o.disabled))},inputs:{disabled:[2,"disabled","disabled",De]},features:[be]})}return t})();const JH={passive:!0};let cDe=(()=>{class t{_elementRef=D(Re);_changeDetectorRef=D(Jt);_viewportRuler=D(qd);_dir=D(br,{optional:!0});_ngZone=D(_e);_platform=D(Yn);_sharedResizeObserver=D(yB);_injector=D(He);_renderer=D(Qn);_animationsDisabled=ci();_eventCleanups;_scrollDistance=0;_selectedIndexChanged=!1;_destroyed=new me;_showPaginationControls=!1;_disableScrollAfter=!0;_disableScrollBefore=!0;_tabLabelCount;_scrollDistanceChanged=!1;_keyManager;_currentTextContent;_stopScrolling=new me;disablePagination=!1;get selectedIndex(){return this._selectedIndex}set selectedIndex(e){const i=isNaN(e)?0:e;this._selectedIndex!=i&&(this._selectedIndexChanged=!0,this._selectedIndex=i,this._keyManager&&this._keyManager.updateActiveItem(i))}_selectedIndex=0;selectFocusedIndex=new we;indexFocused=new we;constructor(){this._eventCleanups=this._ngZone.runOutsideAngular(()=>[this._renderer.listen(this._elementRef.nativeElement,"mouseleave",()=>this._stopInterval())])}ngAfterViewInit(){this._eventCleanups.push(this._renderer.listen(this._previousPaginator.nativeElement,"touchstart",()=>this._handlePaginatorPress("before"),JH),this._renderer.listen(this._nextPaginator.nativeElement,"touchstart",()=>this._handlePaginatorPress("after"),JH))}ngAfterContentInit(){const e=this._dir?this._dir.change:ae("ltr"),i=this._sharedResizeObserver.observe(this._elementRef.nativeElement).pipe(Mb(32),fn(this._destroyed)),o=this._viewportRuler.change(150).pipe(fn(this._destroyed)),r=()=>{this.updatePagination(),this._alignInkBarToSelectedTab()};this._keyManager=new iV(this._items).withHorizontalOrientation(this._getLayoutDirection()).withHomeAndEnd().withWrap().skipPredicate(()=>!1),this._keyManager.updateActiveItem(Math.max(this._selectedIndex,0)),Vi(r,{injector:this._injector}),Cr(e,o,i,this._items.changes,this._itemsResized()).pipe(fn(this._destroyed)).subscribe(()=>{this._ngZone.run(()=>{Promise.resolve().then(()=>{this._scrollDistance=Math.max(0,Math.min(this._getMaxScrollDistance(),this._scrollDistance)),r()})}),this._keyManager?.withHorizontalOrientation(this._getLayoutDirection())}),this._keyManager.change.subscribe(s=>{this.indexFocused.emit(s),this._setTabFocus(s)})}_itemsResized(){return"function"!=typeof ResizeObserver?Oi:this._items.changes.pipe(si(this._items),tn(e=>new Ft(i=>this._ngZone.runOutsideAngular(()=>{const o=new ResizeObserver(r=>i.next(r));return e.forEach(r=>o.observe(r.elementRef.nativeElement)),()=>{o.disconnect()}}))),_S(1),Tn(e=>e.some(i=>i.contentRect.width>0&&i.contentRect.height>0)))}ngAfterContentChecked(){this._tabLabelCount!=this._items.length&&(this.updatePagination(),this._tabLabelCount=this._items.length,this._changeDetectorRef.markForCheck()),this._selectedIndexChanged&&(this._scrollToLabel(this._selectedIndex),this._checkScrollingControls(),this._alignInkBarToSelectedTab(),this._selectedIndexChanged=!1,this._changeDetectorRef.markForCheck()),this._scrollDistanceChanged&&(this._updateTabScrollPosition(),this._scrollDistanceChanged=!1,this._changeDetectorRef.markForCheck())}ngOnDestroy(){this._eventCleanups.forEach(e=>e()),this._keyManager?.destroy(),this._destroyed.next(),this._destroyed.complete(),this._stopScrolling.complete()}_handleKeydown(e){if(!yr(e))switch(e.keyCode){case 13:case 32:if(this.focusIndex!==this.selectedIndex){const i=this._items.get(this.focusIndex);i&&!i.disabled&&(this.selectFocusedIndex.emit(this.focusIndex),this._itemSelected(e))}break;default:this._keyManager?.onKeydown(e)}}_onContentChanges(){const e=this._elementRef.nativeElement.textContent;e!==this._currentTextContent&&(this._currentTextContent=e||"",this._ngZone.run(()=>{this.updatePagination(),this._alignInkBarToSelectedTab(),this._changeDetectorRef.markForCheck()}))}updatePagination(){this._checkPaginationEnabled(),this._checkScrollingControls(),this._updateTabScrollPosition()}get focusIndex(){return this._keyManager?this._keyManager.activeItemIndex:0}set focusIndex(e){!this._isValidIndex(e)||this.focusIndex===e||!this._keyManager||this._keyManager.setActiveItem(e)}_isValidIndex(e){return!this._items||!!this._items.toArray()[e]}_setTabFocus(e){if(this._showPaginationControls&&this._scrollToLabel(e),this._items&&this._items.length){this._items.toArray()[e].focus();const i=this._tabListContainer.nativeElement;i.scrollLeft="ltr"==this._getLayoutDirection()?0:i.scrollWidth-i.offsetWidth}}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_updateTabScrollPosition(){if(this.disablePagination)return;const e=this.scrollDistance,i="ltr"===this._getLayoutDirection()?-e:e;this._tabList.nativeElement.style.transform=`translateX(${Math.round(i)}px)`,(this._platform.TRIDENT||this._platform.EDGE)&&(this._tabListContainer.nativeElement.scrollLeft=0)}get scrollDistance(){return this._scrollDistance}set scrollDistance(e){this._scrollTo(e)}_scrollHeader(e){return this._scrollTo(this._scrollDistance+("before"==e?-1:1)*this._tabListContainer.nativeElement.offsetWidth/3)}_handlePaginatorClick(e){this._stopInterval(),this._scrollHeader(e)}_scrollToLabel(e){if(this.disablePagination)return;const i=this._items?this._items.toArray()[e]:null;if(!i)return;const o=this._tabListContainer.nativeElement.offsetWidth,{offsetLeft:r,offsetWidth:s}=i.elementRef.nativeElement;let a,l;"ltr"==this._getLayoutDirection()?(a=r,l=a+s):(l=this._tabListInner.nativeElement.offsetWidth-r,a=l-s);const c=this.scrollDistance,f=this.scrollDistance+o;af&&(this.scrollDistance+=Math.min(l-f,a-c))}_checkPaginationEnabled(){if(this.disablePagination)this._showPaginationControls=!1;else{const o=this._tabListInner.nativeElement.scrollWidth-this._elementRef.nativeElement.offsetWidth>=5;o||(this.scrollDistance=0),o!==this._showPaginationControls&&(this._showPaginationControls=o,this._changeDetectorRef.markForCheck())}}_checkScrollingControls(){this.disablePagination?this._disableScrollAfter=this._disableScrollBefore=!0:(this._disableScrollBefore=0==this.scrollDistance,this._disableScrollAfter=this.scrollDistance==this._getMaxScrollDistance(),this._changeDetectorRef.markForCheck())}_getMaxScrollDistance(){return this._tabListInner.nativeElement.scrollWidth-this._tabListContainer.nativeElement.offsetWidth||0}_alignInkBarToSelectedTab(){const e=this._items&&this._items.length?this._items.toArray()[this.selectedIndex]:null,i=e?e.elementRef.nativeElement:null;i?this._inkBar.alignToElement(i):this._inkBar.hide()}_stopInterval(){this._stopScrolling.next()}_handlePaginatorPress(e,i){i&&null!=i.button&&0!==i.button||(this._stopInterval(),xa(650,100).pipe(fn(Cr(this._stopScrolling,this._destroyed))).subscribe(()=>{const{maxScrollDistance:o,distance:r}=this._scrollHeader(e);(0===r||r>=o)&&this._stopInterval()}))}_scrollTo(e){if(this.disablePagination)return{maxScrollDistance:0,distance:0};const i=this._getMaxScrollDistance();return this._scrollDistance=Math.max(0,Math.min(i,e)),this._scrollDistanceChanged=!0,this._checkScrollingControls(),{maxScrollDistance:i,distance:this._scrollDistance}}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,inputs:{disablePagination:[2,"disablePagination","disablePagination",De],selectedIndex:[2,"selectedIndex","selectedIndex",hr]},outputs:{selectFocusedIndex:"selectFocusedIndex",indexFocused:"indexFocused"}})}return t})(),dDe=(()=>{class t extends cDe{_items;_tabListContainer;_tabList;_tabListInner;_nextPaginator;_previousPaginator;_inkBar;ariaLabel;ariaLabelledby;disableRipple=!1;ngAfterContentInit(){this._inkBar=new rDe(this._items),super.ngAfterContentInit()}_itemSelected(e){e.preventDefault()}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275cmp=re({type:t,selectors:[["mat-tab-header"]],contentQueries:function(i,o,r){if(1&i&&ys(r,QH,4),2&i){let s;he(s=fe())&&(o._items=s)}},viewQuery:function(i,o){if(1&i&&ot(Hke,7)(jke,7)(Uke,7)(zke,5)($ke,5),2&i){let r;he(r=fe())&&(o._tabListContainer=r.first),he(r=fe())&&(o._tabList=r.first),he(r=fe())&&(o._tabListInner=r.first),he(r=fe())&&(o._nextPaginator=r.first),he(r=fe())&&(o._previousPaginator=r.first)}},hostAttrs:[1,"mat-mdc-tab-header"],hostVars:4,hostBindings:function(i,o){2&i&&Ie("mat-mdc-tab-header-pagination-controls-enabled",o._showPaginationControls)("mat-mdc-tab-header-rtl","rtl"==o._getLayoutDirection())},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],disableRipple:[2,"disableRipple","disableRipple",De]},features:[be],ngContentSelectors:yD,decls:13,vars:10,consts:[["previousPaginator",""],["tabListContainer",""],["tabList",""],["tabListInner",""],["nextPaginator",""],["mat-ripple","",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-before",3,"click","mousedown","touchend","matRippleDisabled"],[1,"mat-mdc-tab-header-pagination-chevron"],[1,"mat-mdc-tab-label-container",3,"keydown"],["role","tablist",1,"mat-mdc-tab-list",3,"cdkObserveContent"],[1,"mat-mdc-tab-labels"],["mat-ripple","",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-after",3,"mousedown","click","touchend","matRippleDisabled"]],template:function(i,o){1&i&&(yi(),h(0,"div",5,0),F("click",function(){return o._handlePaginatorClick("before")})("mousedown",function(s){return o._handlePaginatorPress("before",s)})("touchend",function(){return o._stopInterval()}),B(2,"div",6),u(),h(3,"div",7,1),F("keydown",function(s){return o._handleKeydown(s)}),h(5,"div",8,2),F("cdkObserveContent",function(){return o._onContentChanges()}),h(7,"div",9,3),Pt(9),u()()(),h(10,"div",10,4),F("mousedown",function(s){return o._handlePaginatorPress("after",s)})("click",function(){return o._handlePaginatorClick("after")})("touchend",function(){return o._stopInterval()}),B(12,"div",6),u()),2&i&&(Ie("mat-mdc-tab-header-pagination-disabled",o._disableScrollBefore),C("matRippleDisabled",o._disableScrollBefore||o.disableRipple),d(3),Ie("_mat-animation-noopable",o._animationsDisabled),d(2),$e("aria-label",o.ariaLabel||null)("aria-labelledby",o.ariaLabelledby||null),d(5),Ie("mat-mdc-tab-header-pagination-disabled",o._disableScrollAfter),C("matRippleDisabled",o._disableScrollAfter||o.disableRipple))},dependencies:[eu,xde],styles:[".mat-mdc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mdc-tab-indicator .mdc-tab-indicator__content{transition-duration:var(--mat-tab-animation-duration, 250ms)}.mat-mdc-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;outline:0}.mat-mdc-tab-header-pagination::-moz-focus-inner{border:0}.mat-mdc-tab-header-pagination .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab-header-pagination-controls-enabled .mat-mdc-tab-header-pagination{display:flex}.mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after{padding-left:4px}.mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-pagination-after{padding-right:4px}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-mdc-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px;border-color:var(--mat-tab-pagination-icon-color, var(--mat-sys-on-surface))}.mat-mdc-tab-header-pagination-disabled{box-shadow:none;cursor:default;pointer-events:none}.mat-mdc-tab-header-pagination-disabled .mat-mdc-tab-header-pagination-chevron{opacity:.4}.mat-mdc-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-mdc-tab-list{transition:none}.mat-mdc-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1;border-bottom-style:solid;border-bottom-width:var(--mat-tab-divider-height, 1px);border-bottom-color:var(--mat-tab-divider-color, var(--mat-sys-surface-variant))}.mat-mdc-tab-group-inverted-header .mat-mdc-tab-label-container{border-bottom:none;border-top-style:solid;border-top-width:var(--mat-tab-divider-height, 1px);border-top-color:var(--mat-tab-divider-color, var(--mat-sys-surface-variant))}.mat-mdc-tab-labels{display:flex;flex:1 0 auto}[mat-align-tabs=center]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:flex-end}.cdk-drop-list .mat-mdc-tab-labels,.mat-mdc-tab-labels.cdk-drop-list{min-height:var(--mat-tab-container-height, 48px)}.mat-mdc-tab::before{margin:5px}@media(forced-colors: active){.mat-mdc-tab[aria-disabled=true]{color:GrayText}}\n"],encapsulation:2})}return t})();const uDe=new Z("MAT_TABS_CONFIG");let e6=(()=>{class t extends Xl{_host=D(wD);_ngZone=D(_e);_centeringSub=pt.EMPTY;_leavingSub=pt.EMPTY;constructor(){super()}ngOnInit(){super.ngOnInit(),this._centeringSub=this._host._beforeCentering.pipe(si(this._host._isCenterPosition())).subscribe(e=>{this._host._content&&e&&!this.hasAttached()&&this._ngZone.run(()=>{Promise.resolve().then(),this.attach(this._host._content)})}),this._leavingSub=this._host._afterLeavingCenter.subscribe(()=>{this._host.preserveContent||this._ngZone.run(()=>this.detach())})}ngOnDestroy(){super.ngOnDestroy(),this._centeringSub.unsubscribe(),this._leavingSub.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matTabBodyHost",""]],features:[be]})}return t})(),wD=(()=>{class t{_elementRef=D(Re);_dir=D(br,{optional:!0});_ngZone=D(_e);_injector=D(He);_renderer=D(Qn);_diAnimationsDisabled=ci();_eventCleanups;_initialized=!1;_fallbackTimer;_positionIndex;_dirChangeSubscription=pt.EMPTY;_position;_previousPosition;_onCentering=new we;_beforeCentering=new we;_afterLeavingCenter=new we;_onCentered=new we(!0);_portalHost;_contentElement;_content;animationDuration="500ms";preserveContent=!1;set position(e){this._positionIndex=e,this._computePositionAnimationState()}constructor(){if(this._dir){const e=D(Jt);this._dirChangeSubscription=this._dir.change.subscribe(i=>{this._computePositionAnimationState(i),e.markForCheck()})}}ngOnInit(){this._bindTransitionEvents(),"center"===this._position&&(this._setActiveClass(!0),Vi(()=>this._onCentering.emit(this._elementRef.nativeElement.clientHeight),{injector:this._injector})),this._initialized=!0}ngOnDestroy(){clearTimeout(this._fallbackTimer),this._eventCleanups?.forEach(e=>e()),this._dirChangeSubscription.unsubscribe()}_bindTransitionEvents(){this._ngZone.runOutsideAngular(()=>{const e=this._elementRef.nativeElement,i=o=>{o.target===this._contentElement?.nativeElement&&(this._elementRef.nativeElement.classList.remove("mat-tab-body-animating"),"transitionend"===o.type&&this._transitionDone())};this._eventCleanups=[this._renderer.listen(e,"transitionstart",o=>{o.target===this._contentElement?.nativeElement&&(this._elementRef.nativeElement.classList.add("mat-tab-body-animating"),this._transitionStarted())}),this._renderer.listen(e,"transitionend",i),this._renderer.listen(e,"transitioncancel",i)]})}_transitionStarted(){clearTimeout(this._fallbackTimer);const e="center"===this._position;this._beforeCentering.emit(e),e&&this._onCentering.emit(this._elementRef.nativeElement.clientHeight)}_transitionDone(){"center"===this._position?this._onCentered.emit():"center"===this._previousPosition&&this._afterLeavingCenter.emit()}_setActiveClass(e){this._elementRef.nativeElement.classList.toggle("mat-mdc-tab-body-active",e)}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_isCenterPosition(){return 0===this._positionIndex}_computePositionAnimationState(e=this._getLayoutDirection()){this._previousPosition=this._position,this._position=this._positionIndex<0?"ltr"==e?"left":"right":this._positionIndex>0?"ltr"==e?"right":"left":"center",this._animationsDisabled()?this._simulateTransitionEvents():this._initialized&&("center"===this._position||"center"===this._previousPosition)&&(clearTimeout(this._fallbackTimer),this._fallbackTimer=this._ngZone.runOutsideAngular(()=>setTimeout(()=>this._simulateTransitionEvents(),100)))}_simulateTransitionEvents(){this._transitionStarted(),Vi(()=>this._transitionDone(),{injector:this._injector})}_animationsDisabled(){return this._diAnimationsDisabled||"0ms"===this.animationDuration||"0s"===this.animationDuration}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-tab-body"]],viewQuery:function(i,o){if(1&i&&ot(e6,5)(Wke,5),2&i){let r;he(r=fe())&&(o._portalHost=r.first),he(r=fe())&&(o._contentElement=r.first)}},hostAttrs:[1,"mat-mdc-tab-body"],hostVars:1,hostBindings:function(i,o){2&i&&$e("inert","center"===o._position?null:"")},inputs:{_content:[0,"content","_content"],animationDuration:"animationDuration",preserveContent:"preserveContent",position:"position"},outputs:{_onCentering:"_onCentering",_beforeCentering:"_beforeCentering",_onCentered:"_onCentered"},decls:3,vars:6,consts:[["content",""],["cdkScrollable","",1,"mat-mdc-tab-body-content"],["matTabBodyHost",""]],template:function(i,o){1&i&&(h(0,"div",1,0),it(2,Gke,0,0,"ng-template",2),u()),2&i&&Ie("mat-tab-body-content-left","left"===o._position)("mat-tab-body-content-right","right"===o._position)("mat-tab-body-content-can-animate","center"===o._position||"center"===o._previousPosition)},dependencies:[e6,H3],styles:[".mat-mdc-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-mdc-tab-body.mat-mdc-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-mdc-tab-group.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body.mat-mdc-tab-body-active{overflow-y:hidden}.mat-mdc-tab-body-content{height:100%;overflow:auto;transform:none;visibility:hidden}.mat-tab-body-animating>.mat-mdc-tab-body-content,.mat-mdc-tab-body-active>.mat-mdc-tab-body-content{visibility:visible}.mat-tab-body-animating>.mat-mdc-tab-body-content{min-height:1px}.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body-content{overflow:hidden}.mat-tab-body-content-can-animate{transition:transform var(--mat-tab-animation-duration) 1ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable .mat-tab-body-content-can-animate{transition:none}.mat-tab-body-content-left{transform:translate3d(-100%, 0, 0)}.mat-tab-body-content-right{transform:translate3d(100%, 0, 0)}\n"],encapsulation:2})}return t})(),hDe=(()=>{class t{_elementRef=D(Re);_changeDetectorRef=D(Jt);_ngZone=D(_e);_tabsSubscription=pt.EMPTY;_tabLabelSubscription=pt.EMPTY;_tabBodySubscription=pt.EMPTY;_diAnimationsDisabled=ci();_allTabs;_tabBodies;_tabBodyWrapper;_tabHeader;_tabs=new id;_indexToSelect=0;_lastFocusedTabIndex=null;_tabBodyWrapperHeight=0;color;get fitInkBarToContent(){return this._fitInkBarToContent}set fitInkBarToContent(e){this._fitInkBarToContent=e,this._changeDetectorRef.markForCheck()}_fitInkBarToContent=!1;stretchTabs=!0;alignTabs=null;dynamicHeight=!1;get selectedIndex(){return this._selectedIndex}set selectedIndex(e){this._indexToSelect=isNaN(e)?null:e}_selectedIndex=null;headerPosition="above";get animationDuration(){return this._animationDuration}set animationDuration(e){const i=e+"";this._animationDuration=/^\d+$/.test(i)?e+"ms":i}_animationDuration;get contentTabIndex(){return this._contentTabIndex}set contentTabIndex(e){this._contentTabIndex=isNaN(e)?null:e}_contentTabIndex=null;disablePagination=!1;disableRipple=!1;preserveContent=!1;get backgroundColor(){return this._backgroundColor}set backgroundColor(e){const i=this._elementRef.nativeElement.classList;i.remove("mat-tabs-with-background",`mat-background-${this.backgroundColor}`),e&&i.add("mat-tabs-with-background",`mat-background-${e}`),this._backgroundColor=e}_backgroundColor;ariaLabel;ariaLabelledby;selectedIndexChange=new we;focusChange=new we;animationDone=new we;selectedTabChange=new we(!0);_groupId;_isServer=!D(Yn).isBrowser;constructor(){const e=D(uDe,{optional:!0});this._groupId=D(ni).getId("mat-tab-group-"),this.animationDuration=e&&e.animationDuration?e.animationDuration:"500ms",this.disablePagination=!(!e||null==e.disablePagination)&&e.disablePagination,this.dynamicHeight=!(!e||null==e.dynamicHeight)&&e.dynamicHeight,null!=e?.contentTabIndex&&(this.contentTabIndex=e.contentTabIndex),this.preserveContent=!!e?.preserveContent,this.fitInkBarToContent=!(!e||null==e.fitInkBarToContent)&&e.fitInkBarToContent,this.stretchTabs=!e||null==e.stretchTabs||e.stretchTabs,this.alignTabs=e&&null!=e.alignTabs?e.alignTabs:null}ngAfterContentChecked(){const e=this._indexToSelect=this._clampTabIndex(this._indexToSelect);if(this._selectedIndex!=e){const i=null==this._selectedIndex;if(!i){this.selectedTabChange.emit(this._createChangeEvent(e));const o=this._tabBodyWrapper.nativeElement;o.style.minHeight=o.clientHeight+"px"}Promise.resolve().then(()=>{this._tabs.forEach((o,r)=>o.isActive=r===e),i||(this.selectedIndexChange.emit(e),this._tabBodyWrapper.nativeElement.style.minHeight="")})}this._tabs.forEach((i,o)=>{i.position=o-e,null!=this._selectedIndex&&0==i.position&&!i.origin&&(i.origin=e-this._selectedIndex)}),this._selectedIndex!==e&&(this._selectedIndex=e,this._lastFocusedTabIndex=null,this._changeDetectorRef.markForCheck())}ngAfterContentInit(){this._subscribeToAllTabChanges(),this._subscribeToTabLabels(),this._tabsSubscription=this._tabs.changes.subscribe(()=>{const e=this._clampTabIndex(this._indexToSelect);if(e===this._selectedIndex){const i=this._tabs.toArray();let o;for(let r=0;r{i[e].isActive=!0,this.selectedTabChange.emit(this._createChangeEvent(e))})}this._changeDetectorRef.markForCheck()})}ngAfterViewInit(){this._tabBodySubscription=this._tabBodies.changes.subscribe(()=>this._bodyCentered(!0))}_subscribeToAllTabChanges(){this._allTabs.changes.pipe(si(this._allTabs)).subscribe(e=>{this._tabs.reset(e.filter(i=>i._closestTabGroup===this||!i._closestTabGroup)),this._tabs.notifyOnChanges()})}ngOnDestroy(){this._tabs.destroy(),this._tabsSubscription.unsubscribe(),this._tabLabelSubscription.unsubscribe(),this._tabBodySubscription.unsubscribe()}realignInkBar(){this._tabHeader&&this._tabHeader._alignInkBarToSelectedTab()}updatePagination(){this._tabHeader&&this._tabHeader.updatePagination()}focusTab(e){const i=this._tabHeader;i&&(i.focusIndex=e)}_focusChanged(e){this._lastFocusedTabIndex=e,this.focusChange.emit(this._createChangeEvent(e))}_createChangeEvent(e){const i=new fDe;return i.index=e,this._tabs&&this._tabs.length&&(i.tab=this._tabs.toArray()[e]),i}_subscribeToTabLabels(){this._tabLabelSubscription&&this._tabLabelSubscription.unsubscribe(),this._tabLabelSubscription=Cr(...this._tabs.map(e=>e._stateChanges)).subscribe(()=>this._changeDetectorRef.markForCheck())}_clampTabIndex(e){return Math.min(this._tabs.length-1,Math.max(e||0,0))}_getTabLabelId(e,i){return e.id||`${this._groupId}-label-${i}`}_getTabContentId(e){return`${this._groupId}-content-${e}`}_setTabBodyWrapperHeight(e){if(!this.dynamicHeight||!this._tabBodyWrapperHeight)return void(this._tabBodyWrapperHeight=e);const i=this._tabBodyWrapper.nativeElement;i.style.height=this._tabBodyWrapperHeight+"px",this._tabBodyWrapper.nativeElement.offsetHeight&&(i.style.height=e+"px")}_removeTabBodyWrapperHeight(){const e=this._tabBodyWrapper.nativeElement;this._tabBodyWrapperHeight=e.clientHeight,e.style.height="",this._ngZone.run(()=>this.animationDone.emit())}_handleClick(e,i,o){i.focusIndex=o,e.disabled||(this.selectedIndex=o)}_getTabIndex(e){return e===(this._lastFocusedTabIndex??this.selectedIndex)?0:-1}_tabFocusChanged(e,i){e&&"mouse"!==e&&"touch"!==e&&(this._tabHeader.focusIndex=i)}_bodyCentered(e){e&&this._tabBodies?.forEach((i,o)=>i._setActiveClass(o===this._selectedIndex))}_animationsDisabled(){return this._diAnimationsDisabled||"0"===this.animationDuration||"0ms"===this.animationDuration}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-tab-group"]],contentQueries:function(i,o,r){if(1&i&&ys(r,XH,5),2&i){let s;he(s=fe())&&(o._allTabs=s)}},viewQuery:function(i,o){if(1&i&&ot(qke,5)(Kke,5)(wD,5),2&i){let r;he(r=fe())&&(o._tabBodyWrapper=r.first),he(r=fe())&&(o._tabHeader=r.first),he(r=fe())&&(o._tabBodies=r)}},hostAttrs:[1,"mat-mdc-tab-group"],hostVars:11,hostBindings:function(i,o){2&i&&($e("mat-align-tabs",o.alignTabs),Ze("mat-"+(o.color||"primary")),Md("--mat-tab-animation-duration",o.animationDuration),Ie("mat-mdc-tab-group-dynamic-height",o.dynamicHeight)("mat-mdc-tab-group-inverted-header","below"===o.headerPosition)("mat-mdc-tab-group-stretch-tabs",o.stretchTabs))},inputs:{color:"color",fitInkBarToContent:[2,"fitInkBarToContent","fitInkBarToContent",De],stretchTabs:[2,"mat-stretch-tabs","stretchTabs",De],alignTabs:[0,"mat-align-tabs","alignTabs"],dynamicHeight:[2,"dynamicHeight","dynamicHeight",De],selectedIndex:[2,"selectedIndex","selectedIndex",hr],headerPosition:"headerPosition",animationDuration:"animationDuration",contentTabIndex:[2,"contentTabIndex","contentTabIndex",hr],disablePagination:[2,"disablePagination","disablePagination",De],disableRipple:[2,"disableRipple","disableRipple",De],preserveContent:[2,"preserveContent","preserveContent",De],backgroundColor:"backgroundColor",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"]},outputs:{selectedIndexChange:"selectedIndexChange",focusChange:"focusChange",animationDone:"animationDone",selectedTabChange:"selectedTabChange"},exportAs:["matTabGroup"],features:[lt([{provide:YH,useExisting:t}])],ngContentSelectors:yD,decls:9,vars:8,consts:[["tabHeader",""],["tabBodyWrapper",""],["tabNode",""],[3,"indexFocused","selectFocusedIndex","selectedIndex","disableRipple","disablePagination","aria-label","aria-labelledby"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-focus-indicator",3,"id","mdc-tab--active","class","disabled","fitInkBarToContent"],[1,"mat-mdc-tab-body-wrapper"],["role","tabpanel",3,"id","class","content","position","animationDuration","preserveContent"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-focus-indicator",3,"click","cdkFocusChange","id","disabled","fitInkBarToContent"],[1,"mdc-tab__ripple"],["mat-ripple","",1,"mat-mdc-tab-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mdc-tab__content"],[1,"mdc-tab__text-label"],[3,"cdkPortalOutlet"],["role","tabpanel",3,"_onCentered","_onCentering","_beforeCentering","id","content","position","animationDuration","preserveContent"]],template:function(i,o){1&i&&(yi(),h(0,"mat-tab-header",3,0),F("indexFocused",function(s){return o._focusChanged(s)})("selectFocusedIndex",function(s){return o.selectedIndex=s}),ve(2,Qke,8,17,"div",4,Fe),u(),x(4,Jke,1,0),h(5,"div",5,1),ve(7,eDe,1,10,"mat-tab-body",6,Fe),u()),2&i&&(C("selectedIndex",o.selectedIndex||0)("disableRipple",o.disableRipple)("disablePagination",o.disablePagination),y0("aria-label",o.ariaLabel)("aria-labelledby",o.ariaLabelledby),d(2),ye(o._tabs),d(2),S(o._isServer?4:-1),d(),Ie("_mat-animation-noopable",o._animationsDisabled()),d(2),ye(o._tabs))},dependencies:[dDe,QH,Gde,eu,Xl,wD],styles:['.mdc-tab{min-width:90px;padding:0 24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;z-index:1;touch-action:manipulation}.mdc-tab__content{display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__text-label{transition:150ms color linear;display:inline-block;line-height:1;z-index:2}.mdc-tab--active .mdc-tab__text-label{transition-delay:100ms}._mat-animation-noopable .mdc-tab__text-label{transition:none}.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator__content{transition:var(--mat-tab-animation-duration, 250ms) transform cubic-bezier(0.4, 0, 0.2, 1);transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:1}._mat-animation-noopable .mdc-tab-indicator__content,.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mat-mdc-tab-ripple.mat-mdc-tab-ripple{position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none}.mat-mdc-tab{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none;background:none;height:var(--mat-tab-container-height, 48px);font-family:var(--mat-tab-label-text-font, var(--mat-sys-title-small-font));font-size:var(--mat-tab-label-text-size, var(--mat-sys-title-small-size));letter-spacing:var(--mat-tab-label-text-tracking, var(--mat-sys-title-small-tracking));line-height:var(--mat-tab-label-text-line-height, var(--mat-sys-title-small-line-height));font-weight:var(--mat-tab-label-text-weight, var(--mat-sys-title-small-weight))}.mat-mdc-tab.mdc-tab{flex-grow:0}.mat-mdc-tab .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-indicator-color, var(--mat-sys-primary));border-top-width:var(--mat-tab-active-indicator-height, 2px);border-radius:var(--mat-tab-active-indicator-shape, 0)}.mat-mdc-tab:hover .mdc-tab__text-label{color:var(--mat-tab-inactive-hover-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab:focus .mdc-tab__text-label{color:var(--mat-tab-inactive-focus-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-active-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__ripple::before,.mat-mdc-tab.mdc-tab--active .mat-ripple-element{background-color:var(--mat-tab-active-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab__text-label{color:var(--mat-tab-active-hover-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-hover-indicator-color, var(--mat-sys-primary))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-active-focus-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-focus-indicator-color, var(--mat-sys-primary))}.mat-mdc-tab.mat-mdc-tab-disabled{opacity:.4;pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__content{pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple::before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element{background-color:var(--mat-tab-disabled-ripple-color, var(--mat-sys-on-surface-variant))}.mat-mdc-tab .mdc-tab__ripple::before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-inactive-label-text-color, var(--mat-sys-on-surface));display:inline-flex;align-items:center}.mat-mdc-tab .mdc-tab__content{position:relative;pointer-events:auto}.mat-mdc-tab:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab-group.mat-mdc-tab-group-stretch-tabs>.mat-mdc-tab-header .mat-mdc-tab{flex-grow:1}.mat-mdc-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-tab-background-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab__text-label{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-focus-indicator::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-focus-indicator::before{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab__ripple::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header{flex-direction:column-reverse}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header .mdc-tab-indicator__content--underline{align-self:flex-start}.mat-mdc-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable{transition:none !important;animation:none !important}\n'],encapsulation:2})}return t})();class fDe{index;tab}let pDe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ii]})}return t})(),mDe=(()=>{class t{constructor(e){this.dialog=e,this.tabNames=[""],this.selectedTab=0,this.tabChanged=new we}ngOnDestroy(){this.tabChanged.complete()}showTabSelector(){const e=[];this.tabNames.forEach((i,o)=>{e.push({icon:o===this.selectedTab?"check":"",label:i})}),ao.openDialog(this.dialog,e,"node.logs.filter-title").afterClosed().subscribe(i=>{this.tabChanged.emit(i-1)})}static{this.\u0275fac=function(i){return new(i||t)(O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-tab-selector"]],inputs:{tabNames:"tabNames",selectedTab:"selectedTab"},outputs:{tabChanged:"tabChanged"},standalone:!1,decls:9,vars:4,consts:[[1,"top-dialog-button",3,"click"],[1,"top-dialog-button-content"],[1,"tab-name"],[1,"icon",3,"inline"],[1,"top-dialog-button-margin"]],template:function(i,o){1&i&&(h(0,"div",0),F("click",function(){return o.showTabSelector()}),h(1,"div",1)(2,"div",2)(3,"span"),p(4),b(5,"translate"),u()(),h(6,"mat-icon",3),p(7,"expand_more"),u()(),B(8,"div",4),u()),2&i&&(d(4),M(y(5,2,o.tabNames[o.selectedTab])),d(2),C("inline",!0))},dependencies:[We,xe],styles:[".top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%]{display:flex}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .tab-name[_ngcontent-%COMP%]{flex-grow:1;margin-right:10px;align-self:center}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:20px;flex-shrink:0;align-self:center}"]})}}return t})();const gDe=["button"],_De=["settingsButton"],bDe=["firstInput"],vDe=["tabGroup"],Dc=t=>({"element-disabled":t}),t6=t=>({highlighted:t}),yDe=(t,n)=>({currentElementsRange:t,totalElements:n}),CDe=t=>({number:t});function wDe(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.vpn-socks-client-settings.remote-key-length-error")))}function xDe(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.vpn-socks-client-settings.remote-key-chars-error")))}function SDe(t,n){if(1&t&&(h(0,"mat-form-field",10)(1,"div",11)(2,"label",12),p(3),b(4,"translate"),u(),B(5,"input",20),u()()),2&t){const e=v();C("ngClass",se(4,Dc,e.disableDismiss)),d(3),M(y(4,2,"apps.vpn-socks-client-settings.password"))}}function kDe(t,n){1&t&&(h(0,"div",14)(1,"mat-icon",21),p(2,"warning"),u(),p(3),b(4,"translate"),u()),2&t&&(d(),C("inline",!0),d(2),E(" ",y(4,2,"apps.vpn-socks-client-settings.password-history-warning")," "))}function DDe(t,n){1&t&&B(0,"app-loading-indicator",16),2&t&&C("showWhite",!1)}function MDe(t,n){1&t&&(h(0,"div",17)(1,"mat-icon",21),p(2,"error"),u(),p(3),b(4,"translate"),u()),2&t&&(d(),C("inline",!0),d(2),E(" ",y(4,2,"apps.vpn-socks-client-settings.no-elements")," "))}function TDe(t,n){1&t&&(h(0,"div",25),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"apps.vpn-socks-client-settings.no-filter")," "))}function EDe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().$implicit[1])," ")}function PDe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit[2]," ")}function IDe(t,n){if(1&t&&(h(0,"div",25)(1,"span"),p(2),b(3,"translate"),u(),x(4,EDe,2,3),x(5,PDe,1,1),u()),2&t){const e=n.$implicit;d(2),E("",y(3,3,e[0])," "),d(2),S(e[1]?4:-1),d(),S(e[2]?5:-1)}}function ODe(t,n){1&t&&(h(0,"div",17)(1,"mat-icon",21),p(2,"error"),u(),p(3),b(4,"translate"),u()),2&t&&(d(),C("inline",!0),d(2),E(" ",y(4,2,"apps.vpn-socks-client-settings.no-elements-for-filters")," "))}function ADe(t,n){if(1&t&&(h(0,"span",10),p(1),u()),2&t){const e=n.$implicit;C("ngClass",se(2,t6,n.$index%2!=0)),d(),M(e)}}function RDe(t,n){if(1&t&&(h(0,"div",31),B(1,"div"),u()),2&t){const e=v(2).$implicit;d(),no("background-image: url('assets/img/flags/"+e.country.toLocaleLowerCase()+".png');")}}function FDe(t,n){if(1&t&&(h(0,"span",10),p(1),u()),2&t){const e=n.$implicit;C("ngClass",se(2,t6,n.$index%2!=0)),d(),M(e)}}function NDe(t,n){if(1&t&&(h(0,"div",25)(1,"span"),p(2),b(3,"translate"),u(),h(4,"span"),p(5,"\xa0 "),x(6,RDe,2,2,"div",31),ve(7,FDe,2,4,"span",10,Fe),u()()),2&t){const e=v().$implicit,i=v(2);d(2),M(y(3,2,"apps.vpn-socks-client-settings.location")),d(4),S(e.country?6:-1),d(),ye(i.getHighlightedTextParts(e.location,i.currentFilters.location))}}function LDe(t,n){if(1&t){const e=oe();h(0,"div",19)(1,"button",27),F("click",function(){const o=j(e).$implicit;return U(v(2).saveChanges(o.pk,null,!1,o.location))}),h(2,"div",28)(3,"div",25)(4,"span"),p(5),b(6,"translate"),u(),h(7,"span"),p(8,"\xa0"),ve(9,ADe,2,4,"span",10,Fe),u()(),x(11,NDe,9,4,"div",25),u()(),h(12,"button",29),b(13,"translate"),F("click",function(){const o=j(e).$implicit;return U(v(2).copyPk(o.pk))}),h(14,"mat-icon",30),p(15,"filter_none"),u()()()}if(2&t){const e=n.$implicit,i=v(2);d(),C("ngClass",se(9,Dc,i.disableDismiss)),d(4),M(y(6,5,"apps.vpn-socks-client-settings.key")),d(4),ye(i.getHighlightedTextParts(e.pk,i.currentFilters.key)),d(2),S(e.location?11:-1),d(),C("matTooltip",y(13,7,"apps.vpn-socks-client-settings.copy-pk-info")),d(2),C("inline",!0)}}function BDe(t,n){if(1&t){const e=oe();h(0,"button",22),F("click",function(){return j(e),U(v().changeFilters())}),h(1,"div",23)(2,"div",24)(3,"mat-icon",21),p(4,"filter_list"),u()(),h(5,"div"),x(6,TDe,3,3,"div",25),ve(7,IDe,6,5,"div",25,Fe),h(9,"div",26),p(10),b(11,"translate"),u()()()(),x(12,ODe,5,4,"div",17),ve(13,LDe,16,11,"div",19,Fe)}if(2&t){const e=v();d(3),C("inline",!0),d(3),S(0===e.currentFiltersTexts.length?6:-1),d(),ye(e.currentFiltersTexts),d(3),M(y(11,4,"apps.vpn-socks-client-settings.click-to-change")),d(2),S(0===e.filteredProxiesFromDiscovery.length?12:-1),d(),ye(e.proxiesFromDiscoveryToShow)}}function VDe(t,n){if(1&t){const e=oe();h(0,"div",18)(1,"span"),p(2),b(3,"translate"),u(),h(4,"button",32),F("click",function(){return j(e),U(v().goToPreviousPage())}),h(5,"mat-icon"),p(6,"chevron_left"),u()(),h(7,"button",32),F("click",function(){return j(e),U(v().goToNextPage())}),h(8,"mat-icon"),p(9,"chevron_right"),u()()()}if(2&t){const e=v();d(2),M(pe(3,1,"apps.vpn-socks-client-settings.pagination-info",_t(4,yDe,e.currentRange,e.filteredProxiesFromDiscovery.length)))}}function HDe(t,n){if(1&t&&(h(0,"div")(1,"div",17)(2,"mat-icon",21),p(3,"error"),u(),p(4),b(5,"translate"),u()()),2&t){const e=v();d(2),C("inline",!0),d(2),E(" ",pe(5,2,"apps.vpn-socks-client-settings.no-history",se(5,CDe,e.maxHistoryElements))," ")}}function jDe(t,n){1&t&&dr(0)}function UDe(t,n){1&t&&dr(0)}function zDe(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v(2).$implicit;d(),E(" ",e.note)}}function $De(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"apps.vpn-socks-client-settings.note-entered-manually")))}function WDe(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v(4).$implicit;d(),E(" (",e.location,")")}}function GDe(t,n){if(1&t&&(h(0,"span"),p(1),b(2,"translate"),u(),x(3,WDe,2,1,"span")),2&t){const e=v(3).$implicit;d(),E(" ",y(2,2,"apps.vpn-socks-client-settings.note-obtained")),d(2),S(e.location?3:-1)}}function qDe(t,n){if(1&t&&(x(0,$De,3,3,"span"),x(1,GDe,4,4)),2&t){const e=v(2).$implicit;S(e.enteredManually?0:-1),d(),S(e.enteredManually?-1:1)}}function KDe(t,n){if(1&t&&(h(0,"div",37)(1,"div",38)(2,"div",25)(3,"span"),p(4),b(5,"translate"),u(),h(6,"span"),p(7),u()(),h(8,"div",25)(9,"span"),p(10),b(11,"translate"),u(),x(12,zDe,2,1,"span"),x(13,qDe,2,2),u()(),h(14,"div",39)(15,"div",40)(16,"mat-icon",21),p(17,"add"),u()()()()),2&t){const e=v().$implicit;d(4),M(y(5,6,"apps.vpn-socks-client-settings.key")),d(3),E(" ",e.key),d(3),M(y(11,8,"apps.vpn-socks-client-settings.note")),d(2),S(e.note?12:-1),d(),S(e.note?-1:13),d(3),C("inline",!0)}}function YDe(t,n){if(1&t){const e=oe();h(0,"div",19)(1,"button",33),F("click",function(){const o=j(e).$implicit;return U(v().useFromHistory(o))}),it(2,jDe,1,0,"ng-container",34),u(),h(3,"button",35),b(4,"translate"),F("click",function(){const o=j(e).$implicit;return U(v().changeNote(o))}),h(5,"mat-icon",30),p(6,"edit"),u()(),h(7,"button",35),b(8,"translate"),F("click",function(){const o=j(e).$implicit;return U(v().removeFromHistory(o.key))}),h(9,"mat-icon",30),p(10,"close"),u()(),h(11,"button",36),F("click",function(){const o=j(e).$implicit;return U(v().openHistoryOptions(o))}),it(12,UDe,1,0,"ng-container",34),u(),it(13,KDe,18,10,"ng-template",null,0,Rl),u()}if(2&t){const e=Hn(14),i=v();d(),C("ngClass",se(12,Dc,i.disableDismiss)),d(),C("ngTemplateOutlet",e),d(),C("matTooltip",y(4,8,"apps.vpn-socks-client-settings.change-note")),d(2),C("inline",!0),d(2),C("matTooltip",y(8,10,"apps.vpn-socks-client-settings.remove-entry")),d(2),C("inline",!0),d(2),C("ngClass",se(14,Dc,i.disableDismiss)),d(),C("ngTemplateOutlet",e)}}function XDe(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.vpn-socks-client-settings.dns-error")))}function ZDe(t,n){1&t&&(h(0,"div",45)(1,"mat-icon",21),p(2,"warning"),u(),p(3),b(4,"translate"),u()),2&t&&(d(),C("inline",!0),d(2),E(" ",y(4,2,"apps.vpn-socks-client-settings.settings-changed-alert")," "))}function QDe(t,n){if(1&t){const e=oe();h(0,"mat-tab",8),b(1,"translate"),h(2,"form",9)(3,"mat-form-field",10)(4,"div",11)(5,"label",12),p(6),b(7,"translate"),u(),B(8,"input",41),u(),h(9,"mat-error"),x(10,XDe,3,3,"span"),u()(),h(11,"div",42)(12,"mat-checkbox",43),p(13),b(14,"translate"),h(15,"mat-icon",44),b(16,"translate"),p(17,"help"),u()()(),x(18,ZDe,5,4,"div",45),h(19,"app-button",15,4),F("action",function(){return j(e),U(v().saveSettings())}),p(21),b(22,"translate"),u()()()}if(2&t){const e=v();C("label",y(1,12,e.tabLabels[3])),d(2),C("formGroup",e.settingsForm),d(),C("ngClass",se(22,Dc,e.disableDismiss)),d(3),M(y(7,14,"apps.vpn-socks-client-settings.dns")),d(4),S(e.settingsForm.get("dns").valid?-1:10),d(2),C("ngClass",se(24,Dc,e.disableDismiss)),d(),E(" ",y(14,16,"apps.vpn-socks-client-settings.killswitch-check")," "),d(2),C("inline",!0)("matTooltip",y(16,18,"apps.vpn-socks-client-settings.killswitch-info")),d(3),S(e.settingsChanged?18:-1),d(),C("disabled",!e.settingsForm.valid||!e.settingsChanged||e.working),d(2),E(" ",y(22,20,"apps.vpn-socks-client-settings.save-settings")," ")}}let JDe=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.largeModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a,l,c,f){this.data=e,this.dialogRef=i,this.appsService=o,this.formBuilder=r,this.snackbarService=s,this.dialog=a,this.proxyDiscoveryService=l,this.clipboardService=c,this.storageService=f,this.socksHistoryStorageKey="SkysocksClientHistory_",this.vpnHistoryStorageKey="VpnClientHistory_",this.maxHistoryElements=10,this.maxElementsPerPage=10,this.tabLabels=[],this.currentTab=0,this.countriesFromDiscovery=new Set,this.loadingFromDiscovery=!0,this.numberOfPages=1,this.currentPage=1,this.currentRange="1 - 1",this.currentFilters=new qH,this.currentFiltersTexts=[],this.configuringVpn=!1,this.initialKillswitchSetting=!1,this.initialDnsSetting="",this.working=!1,-1!==e.name.toLocaleLowerCase().indexOf("vpn")?(this.configuringVpn=!0,this.tabLabels=["apps.vpn-socks-client-settings.remote-visor-tab","apps.vpn-socks-client-settings.discovery-tab","apps.vpn-socks-client-settings.history-tab","apps.vpn-socks-client-settings.settings-tab"]):this.tabLabels=["apps.vpn-socks-client-settings.remote-visor-tab","apps.vpn-socks-client-settings.discovery-tab","apps.vpn-socks-client-settings.history-tab"]}ngOnInit(){this.migrateDataToHvStorage(),this.discoverySubscription=this.proxyDiscoveryService.getServices(!this.configuringVpn).subscribe(o=>{this.proxiesFromDiscovery=o,this.proxiesFromDiscovery.forEach(r=>{r.country&&this.countriesFromDiscovery.add(r.country.toUpperCase())}),this.filterProxies(),this.loadingFromDiscovery=!1});const e=this.storageService.getDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey);this.history=e?JSON.parse(e):[];let i="";if(this.data.args&&this.data.args.length>0)for(let o=0;othis.firstInput.nativeElement.focus())}ngOnDestroy(){this.discoverySubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()}migrateDataToHvStorage(){const e=localStorage.getItem(this.socksHistoryStorageKey);e&&(this.storageService.setDataForHv(this.socksHistoryStorageKey,e),localStorage.removeItem(this.socksHistoryStorageKey));const i=localStorage.getItem(this.vpnHistoryStorageKey);i&&(this.storageService.setDataForHv(this.vpnHistoryStorageKey,i),localStorage.removeItem(this.vpnHistoryStorageKey))}get disableDismiss(){return this.button&&this.button.isLoading||this.settingsButton&&this.settingsButton.isLoading}tabChangeRequested(e){this.tabGroup.selectedIndex=e}tabIdexChanged(){this.currentTab=this.tabGroup.selectedIndex}validateIp(){if(this.settingsForm){const e=this.settingsForm.get("dns").value;return Rt.checkIfIpValidOrEmpty(e)?null:{invalid:!0}}return null}get settingsChanged(){return this.initialKillswitchSetting!==this.settingsForm.get("killswitch").value||this.initialDnsSetting!==this.settingsForm.get("dns").value}changeFilters(){const e=[];this.countriesFromDiscovery.forEach(o=>e.push(o)),Fke.openDialog(this.dialog,{currentFilters:this.currentFilters,availableCountries:e}).afterClosed().subscribe(o=>{o&&(this.currentFilters=o,this.filterProxies())})}getHighlightedTextParts(e,i){if(!i)return[e];const o=e.toLowerCase(),r=i.toLowerCase();let s=!0,a=0;const l=[];for(;s;){const c=o.indexOf(r,a);-1===c?s=!1:(l.push(e.substring(a,c)),l.push(e.substring(c,c+i.length)),a=c+i.length)}return l.push(e.substring(a)),l}filterProxies(){this.filteredProxiesFromDiscovery=this.currentFilters.country||this.currentFilters.location||this.currentFilters.key?this.proxiesFromDiscovery.filter(e=>!(this.currentFilters.country&&(!e.country||!e.country.toUpperCase().includes(this.currentFilters.country.toUpperCase()))||this.currentFilters.location&&!e.location.toLowerCase().includes(this.currentFilters.location.toLowerCase())||this.currentFilters.key&&!e.address.toLowerCase().includes(this.currentFilters.key.toLowerCase()))):this.proxiesFromDiscovery,this.updateCurrentFilters(),this.updatePagination()}updateCurrentFilters(){if(this.currentFiltersTexts=[],this.currentFilters.country){const e=es[this.currentFilters.country.toUpperCase()]?es[this.currentFilters.country.toUpperCase()]:this.currentFilters.country.toUpperCase();this.currentFiltersTexts.push(["apps.vpn-socks-client-settings.filter-dialog.country","",e])}this.currentFilters.location&&this.currentFiltersTexts.push(["apps.vpn-socks-client-settings.filter-dialog.location","",this.currentFilters.location]),this.currentFilters.key&&this.currentFiltersTexts.push(["apps.vpn-socks-client-settings.filter-dialog.pub-key","",this.currentFilters.key])}updatePagination(){this.currentPage=1,this.numberOfPages=Math.ceil(this.filteredProxiesFromDiscovery.length/this.maxElementsPerPage),this.showCurrentPage()}goToNextPage(){this.currentPage>=this.numberOfPages||(this.currentPage+=1,this.showCurrentPage())}goToPreviousPage(){this.currentPage<=1||(this.currentPage-=1,this.showCurrentPage())}showCurrentPage(){this.proxiesFromDiscoveryToShow=this.filteredProxiesFromDiscovery.slice((this.currentPage-1)*this.maxElementsPerPage,this.currentPage*this.maxElementsPerPage),this.currentRange=(this.currentPage-1)*this.maxElementsPerPage+1+" - ",this.currentRange+=this.currentPage{1===o?this.useFromHistory(e):2===o?this.changeNote(e):3===o&&this.removeFromHistory(e.key)})}removeFromHistory(e){const o=Rt.createConfirmationDialog(this.dialog,"apps.vpn-socks-client-settings.remove-from-history-confirmation");o.componentInstance.operationAccepted.subscribe(()=>{this.history=this.history.filter(s=>s.key!==e);const r=JSON.stringify(this.history);this.storageService.setDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey,r),o.close()})}changeNote(e){Dke.openDialog(this.dialog,e.note).afterClosed().subscribe(i=>{if(i){i=i.substr(1,i.length-1),this.history.forEach(r=>{r.key===e.key&&(r.note=i)});const o=JSON.stringify(this.history);this.storageService.setDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey,o),i?this.snackbarService.showDone("apps.vpn-socks-client-settings.changes-made"):this.snackbarService.showWarning("apps.vpn-socks-client-settings.default-note-warning")}})}useFromHistory(e){e.hasPassword?Lke.openDialog(this.dialog).afterClosed().subscribe(i=>{i&&(i=i.substr(1,i.length-1),this.saveChanges(e.key,i,e.enteredManually,e.location,e.note))}):this.saveChanges(e.key,null,e.enteredManually,e.location,e.note)}saveChanges(e=null,i=null,o=null,r=null,s=null){if(!this.form.valid&&!e||this.working)return;o=!e||o,i=e?i:this.form.get("password").value,e=e||this.form.get("pk").value;const l=Rt.createConfirmationDialog(this.dialog,"apps.vpn-socks-client-settings.change-key-confirmation");l.componentInstance.operationAccepted.subscribe(()=>{l.close(),this.continueSavingChanges(e,i,o,r,s)})}saveSettings(){if(this.working)return;const e={killswitch:this.settingsForm.get("killswitch").value,dns:this.settingsForm.get("dns").value};this.settingsButton.showLoading(!1),this.button.showLoading(!1),this.working=!0,this.operationSubscription=this.appsService.changeAppSettings(ke.getCurrentNodeKey(),this.data.name,e).subscribe(()=>{this.initialKillswitchSetting=e.killswitch,this.initialDnsSetting=e.dns,this.snackbarService.showDone("apps.vpn-socks-client-settings.changes-made"),this.working=!1,this.settingsButton.reset(!1),this.button.reset(!1),ke.refreshCurrentDisplayedData()},i=>{this.working=!1,this.settingsButton.showError(!1),this.button.reset(!1),i=Qe(i),this.snackbarService.showError(i)})}copyPk(e){this.clipboardService.copy(e)?this.snackbarService.showDone("apps.vpn-socks-client-settings.copied-pk-info"):this.snackbarService.showError("apps.vpn-socks-client-settings.copy-pk-error")}continueSavingChanges(e,i,o,r,s){if(this.working)return;this.button.showLoading(!1),this.settingsButton&&this.settingsButton.showLoading(!1),this.working=!0;const a={pk:e};this.configuringVpn&&(a.passcode=i||""),this.operationSubscription=this.appsService.changeAppSettings(ke.getCurrentNodeKey(),this.data.name,a).subscribe(()=>this.onServerDataChangeSuccess(e,!!i,o,r,s),l=>this.onServerDataChangeError(l))}onServerDataChangeSuccess(e,i,o,r,s){this.history=this.history.filter(c=>c.key!==e);const a={key:e,enteredManually:o};if(i&&(a.hasPassword=i),r&&(a.location=r),s&&(a.note=s),this.history=[a].concat(this.history),this.history.length>this.maxHistoryElements){const c=this.history.length-this.maxHistoryElements;this.history.splice(this.history.length-c,c)}this.form.get("pk").setValue(e);const l=JSON.stringify(this.history);this.storageService.setDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey,l),ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.vpn-socks-client-settings.changes-made"),this.working=!1,this.button.reset(!1),this.settingsButton&&this.settingsButton.reset(!1)}onServerDataChangeError(e){this.working=!1,this.button.showError(!1),this.settingsButton&&this.settingsButton.reset(!1),e=Qe(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt),O(Rs),O(di),O(ct),O(Ot),O(Bke),O(np),O(ti))}}static{this.\u0275cmp=re({type:t,selectors:[["app-skysocks-client-settings"]],viewQuery:function(i,o){if(1&i&&ot(gDe,5)(_De,5)(bDe,5)(vDe,5),2&i){let r;he(r=fe())&&(o.button=r.first),he(r=fe())&&(o.settingsButton=r.first),he(r=fe())&&(o.firstInput=r.first),he(r=fe())&&(o.tabGroup=r.first)}},standalone:!1,decls:38,vars:38,consts:[["content",""],["tabGroup",""],["firstInput",""],["button",""],["settingsButton",""],[3,"headline","dialog","disableDismiss","includeVerticalMargins","includeScrollableArea"],[3,"tabChanged","tabNames","selectedTab"],[3,"selectedIndexChange"],[3,"label"],[3,"formGroup"],[3,"ngClass"],[1,"field-container"],["for","remoteKey",1,"field-label"],["id","pk","formControlName","pk","maxlength","66","matInput",""],[1,"password-history-warning"],["color","primary",1,"float-right",3,"action","disabled"],[1,"loading-indicator",3,"showWhite"],[1,"info-text"],[1,"paginator"],[1,"d-flex"],["id","password","type","password","formControlName","password","maxlength","100","matInput",""],[3,"inline"],["mat-button","",1,"list-button","grey-button-background","w-100",3,"click"],[1,"filter-button-content"],[1,"icon-area"],[1,"item"],[1,"blue-part"],["mat-button","",1,"list-button","grey-button-background","w-100",3,"click","ngClass"],[1,"button-content"],["mat-button","",1,"list-button","grey-button-background",3,"click","matTooltip"],[1,"option-button-icon",3,"inline"],[1,"flag-container"],["mat-icon-button","",1,"hard-grey-button-background",3,"click"],["mat-button","",1,"list-button","grey-button-background","w-100","d-none","d-md-inline",3,"click","ngClass"],[4,"ngTemplateOutlet"],["mat-button","",1,"list-button","grey-button-background","d-none","d-md-inline",3,"click","matTooltip"],["mat-button","",1,"list-button","grey-button-background","w-100","d-md-none",3,"click","ngClass"],[1,"button-content","d-flex"],[1,"full-size-area"],[1,"options-container"],[1,"small-button","d-md-none"],["formControlName","dns","maxlength","15","matInput",""],[1,"main-theme","settings-option"],["color","primary","formControlName","killswitch",3,"ngClass"],[1,"help-icon",3,"inline","matTooltip"],[1,"settings-changed-warning"]],template:function(i,o){1&i&&(h(0,"app-dialog",5),b(1,"translate"),h(2,"app-tab-selector",6),F("tabChanged",function(s){return o.tabChangeRequested(s)}),u(),h(3,"mat-dialog-content",null,0)(5,"mat-tab-group",7,1),F("selectedIndexChange",function(){return o.tabIdexChanged()}),h(7,"mat-tab",8),b(8,"translate"),h(9,"form",9)(10,"mat-form-field",10)(11,"div",11)(12,"label",12),p(13),b(14,"translate"),u(),B(15,"input",13,2),u(),h(17,"mat-error"),x(18,wDe,3,3,"span")(19,xDe,3,3,"span"),u()(),x(20,SDe,6,6,"mat-form-field",10),x(21,kDe,5,4,"div",14),h(22,"app-button",15,3),F("action",function(){return o.saveChanges()}),p(24),b(25,"translate"),u()()(),h(26,"mat-tab",8),b(27,"translate"),x(28,DDe,1,1,"app-loading-indicator",16),x(29,MDe,5,4,"div",17),x(30,BDe,15,6),x(31,VDe,10,7,"div",18),u(),h(32,"mat-tab",8),b(33,"translate"),x(34,HDe,6,7,"div"),ve(35,YDe,15,16,"div",19,Fe),u(),x(37,QDe,23,26,"mat-tab",8),u()()()),2&i&&(C("headline",y(1,24,"apps.vpn-socks-client-settings."+(o.configuringVpn?"vpn-title":"socks-title")))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss)("includeVerticalMargins",!1)("includeScrollableArea",!1),d(2),C("tabNames",o.tabLabels)("selectedTab",o.currentTab),d(5),C("label",y(8,26,o.tabLabels[0])),d(2),C("formGroup",o.form),d(),C("ngClass",se(36,Dc,o.disableDismiss)),d(3),M(y(14,28,"apps.vpn-socks-client-settings.public-key")),d(5),S(o.form.get("pk").hasError("pattern")?19:18),d(2),S(o.configuringVpn?20:-1),d(),S(o.form&&o.form.get("password").value?21:-1),d(),C("disabled",!o.form.valid||o.working),d(2),E(" ",y(25,30,"apps.vpn-socks-client-settings.save")," "),d(2),C("label",y(27,32,o.tabLabels[1])),d(2),S(o.loadingFromDiscovery?28:-1),d(),S(o.loadingFromDiscovery||0!==o.proxiesFromDiscovery.length?-1:29),d(),S(!o.loadingFromDiscovery&&o.proxiesFromDiscovery.length>0?30:-1),d(),S(o.numberOfPages>1?31:-1),d(),C("label",y(33,34,o.tabLabels[2])),d(2),S(0===o.history.length?34:-1),d(),ye(o.history),d(2),S(o.configuringVpn?37:-1))},dependencies:[$t,Ld,xn,Gt,qt,wn,wi,on,mn,Jd,sn,Ma,In,XH,hDe,Pn,Wo,We,Kt,kr,ui,gn,Yr,mDe,xe],styles:["mat-tab-header{border-bottom:solid 1px rgba(0,0,0,.12)}@media(max-width:767px){ mat-tab-header{display:none!important}}app-tab-selector[_ngcontent-%COMP%]{display:none}@media(max-width:767px){app-tab-selector[_ngcontent-%COMP%]{display:block!important}}form[_ngcontent-%COMP%]{margin-top:15px}.info-text[_ngcontent-%COMP%]{margin-top:20px;margin-bottom:2px;text-align:center;color:#202226}.info-text[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:5px}.loading-indicator[_ngcontent-%COMP%]{height:100px}.password-history-warning[_ngcontent-%COMP%]{font-size:.7rem;opacity:.7;position:relative;top:-5px}.list-button[_ngcontent-%COMP%]{border-bottom:solid 1px rgba(0,0,0,.12);height:auto;justify-content:left}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%]{padding:15px 0;white-space:normal;line-height:1.3;color:#202226;text-align:left;display:flex;font-size:.8rem;word-break:break-word}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .icon-area[_ngcontent-%COMP%]{font-size:20px;margin-right:15px;color:#999;opacity:.4;align-self:center}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{margin:4px 0}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type{color:#999}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .blue-part[_ngcontent-%COMP%]{color:#215f9e}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%]{text-align:left;padding:15px 0;white-space:normal}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .full-size-area[_ngcontent-%COMP%]{flex-grow:1}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{line-height:1.3;margin:4px 0;font-size:.8rem;color:#202226;word-break:break-all}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]:first-of-type{color:#999}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .highlighted[_ngcontent-%COMP%]{background-color:#ff0}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .options-container[_ngcontent-%COMP%]{flex-shrink:0;margin-left:5px;text-align:right;line-height:1}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .options-container[_ngcontent-%COMP%] .small-button[_ngcontent-%COMP%]{width:24px;height:24px;line-height:14px;font-size:14px;margin-left:5px}.list-button[_ngcontent-%COMP%] .option-button-icon[_ngcontent-%COMP%]{font-size:14px;margin:0!important;overflow:visible!important}.paginator[_ngcontent-%COMP%]{float:right;margin-top:15px;display:flex;align-items:center}@media(max-width:767px){.paginator[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{font-size:.7rem}}.paginator[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-left:5px;display:flex}.settings-option[_ngcontent-%COMP%]{margin-top:20px}.settings-option[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{margin-bottom:15px}.settings-changed-warning[_ngcontent-%COMP%]{font-size:.7rem;opacity:.7;position:relative}"]})}}return t})();const eMe=["button"],tMe=t=>({name:t}),n6=t=>({"element-disabled":t}),i6=t=>({number:t});function nMe(t,n){if(1&t){const e=oe();Vr(0,4),h(1,"div",7)(2,"mat-form-field",8)(3,"div",9)(4,"label",10),p(5),b(6,"translate"),u(),B(7,"input",11),u()(),h(8,"mat-form-field",8)(9,"div",9)(10,"label",12),p(11),b(12,"translate"),u(),B(13,"input",13),u()(),h(14,"button",14),b(15,"translate"),F("click",function(){const o=j(e).$index;return U(v().removeSetting(o))}),h(16,"mat-icon",15),p(17,"close"),u()()(),cr()}if(2&t){const e=n.$index,i=v();d(),C("formGroupName",e),d(),C("ngClass",se(15,n6,i.disableDismiss)),d(3),M(pe(6,7,"apps.user-app-settings.name",se(17,i6,e+1))),d(3),C("ngClass",se(19,n6,i.disableDismiss)),d(3),M(pe(12,10,"apps.user-app-settings.value",se(21,i6,e+1))),d(3),C("matTooltip",y(15,13,"apps.user-app-settings.remove")),d(2),C("inline",!0)}}let iMe=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.appsService=i,this.formBuilder=o,this.dialogRef=r,this.snackbarService=s,this.dialog=a,this.appName="",this.appName=e.name}ngOnInit(){if(this.form=this.formBuilder.group({settings:this.formBuilder.array([])}),this.data.args&&this.data.args.length>0)for(let e=0;e{let s=r.get("name").value,a=r.get("value").value;s=s&&s.trim(),a=a&&a.trim(),s?(o[s]=a,i+=1):e=!0}),e||0===i){const s=Rt.createConfirmationDialog(this.dialog,"apps.user-app-settings."+(0===i?"empty-confirmation":"invalid-confirmation"));s.componentInstance.operationAccepted.subscribe(()=>{s.close(),this.continueSavingChanges(o)})}else this.continueSavingChanges(o)}continueSavingChanges(e){this.button.showLoading();const i={custom_setting:e};this.operationSubscription=this.appsService.changeAppSettings(ke.getCurrentNodeKey(),this.data.name,i).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)})}onSuccess(){ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.user-app-settings.changes-made"),this.dialogRef.close()}onError(e){this.button.showError(),e=Qe(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Rs),O(di),O(Bt),O(ct),O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-user-app-settings"]],viewQuery:function(i,o){if(1&i&&ot(eMe,5),2&i){let r;he(r=fe())&&(o.button=r.first)}},standalone:!1,decls:16,vars:19,consts:[["button",""],[3,"headline","dialog","disableDismiss"],[1,"info-container"],[3,"formGroup"],["formArrayName","settings"],[1,"add-setting",3,"click"],["color","primary",1,"float-right",3,"action","disabled"],[1,"settings-row",3,"formGroupName"],[3,"ngClass"],[1,"field-container"],["for","name",1,"field-label"],["id","name","formControlName","name","matInput",""],["for","value",1,"field-label"],["id","value","formControlName","value","matInput",""],["mat-button","",1,"transparent-button",3,"click","matTooltip"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"div",2),p(3),b(4,"translate"),u(),h(5,"form",3),ve(6,nMe,18,23,"ng-container",4,Fe),u(),h(8,"div")(9,"a",5),F("click",function(){return o.addSetting()}),p(10),b(11,"translate"),u()(),h(12,"app-button",6,0),F("action",function(){return o.saveChanges()}),p(14),b(15,"translate"),u()()),2&i&&(C("headline",pe(1,8,"apps.user-app-settings.title",se(17,tMe,o.appName)))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),d(3),M(y(4,11,"apps.user-app-settings.info")),d(2),C("formGroup",o.form),d(),ye(o.settingsControls),d(4),E("+ ",y(11,13,"apps.user-app-settings.add")),d(2),C("disabled",!o.form.valid),d(2),E(" ",y(15,15,"apps.user-app-settings.save")," "))},dependencies:[$t,xn,Gt,qt,wn,on,mn,sc,du,sn,In,Pn,We,Kt,ui,gn,xe],styles:[".info-container[_ngcontent-%COMP%]{margin-bottom:10px}.settings-row[_ngcontent-%COMP%]{display:flex}mat-form-field[_ngcontent-%COMP%]{flex-grow:1;margin-right:10px}button[_ngcontent-%COMP%]{flex-shrink:0;width:50px;padding:0!important;align-self:center;border-radius:10px}button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin:0!important}.add-setting[_ngcontent-%COMP%]{color:#215f9e!important;cursor:pointer}"]})}}return t})();const oMe=["button"],o6=t=>({"element-disabled":t});let rMe=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.appsService=i,this.formBuilder=o,this.dialogRef=r,this.snackbarService=s,this.dialog=a}ngOnInit(){if(this.form=this.formBuilder.group({localhostOnly:[!0],port:["",Ne.compose([Ne.required,Ne.min(1025),Ne.max(65536)])]}),this.formSubscription=this.form.get("localhostOnly").valueChanges.subscribe(e=>{if(!e){this.form.get("localhostOnly").setValue(!0);const i=Rt.createConfirmationDialog(this.dialog,"apps.skychat-settings.non-localhost-confirmation");i.componentInstance.operationAccepted.subscribe(()=>{i.componentInstance.closeModal(),this.form.get("localhostOnly").setValue(!1,{emitEvent:!1})})}}),this.data.args&&this.data.args.length>0)for(let e=0;e({"paginator-icons-fixer":t}),r6=(t,n)=>["/nodes",t,"apps-list",n],aMe=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),lMe=t=>({"d-lg-none d-xl-table":t}),cMe=t=>({"d-lg-table d-xl-none":t}),s6=t=>({error:t}),dMe=(t,n)=>["/nodes",t,"apps-list",n,"1"];function uMe(t,n){1&t&&(h(0,"span",3),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.apps-list.title-official")))}function hMe(t,n){1&t&&(h(0,"span",3),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.apps-list.title-user")))}function fMe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().$implicit.translatableValue)," ")}function pMe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.value," ")}function mMe(t,n){if(1&t&&(h(0,"div",15)(1,"span"),p(2),b(3,"translate"),u(),x(4,fMe,2,3),x(5,pMe,1,1),u()),2&t){const e=n.$implicit;d(2),E("",y(3,3,e.filterName),": "),d(2),S(e.translatableValue?4:-1),d(),S(e.value?5:-1)}}function gMe(t,n){if(1&t){const e=oe();h(0,"div",14),F("click",function(){return j(e),U(v().dataFilterer.removeFilters())}),ve(1,mMe,6,5,"div",15,Fe),h(3,"div",16),p(4),b(5,"translate"),u()()}if(2&t){const e=v();d(),ye(e.dataFilterer.currentFiltersTexts),d(3),M(y(5,1,"filters.press-to-remove"))}}function _Me(t,n){if(1&t){const e=oe();h(0,"mat-icon",17),b(1,"translate"),F("click",function(){return j(e),U(v().dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",y(1,2,"filters.filter-action"))}function bMe(t,n){1&t&&(h(0,"mat-icon",8),p(1,"more_horiz"),u()),2&t&&(v(),C("matMenuTriggerFor",Hn(10)))}function vMe(t,n){if(1&t&&B(0,"app-paginator",12),2&t){const e=v();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",_t(4,r6,e.nodePK,e.showOfficialApps))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function yMe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function CMe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function wMe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function xMe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function SMe(t,n){if(1&t&&(B(0,"i",38),b(1,"translate")),2&t){const e=v().$implicit,i=v(2);Ze(i.getStateClass(e)),C("matTooltip",y(1,3,i.getStateTooltip(e)))}}function kMe(t,n){if(1&t&&(h(0,"mat-icon",34),b(1,"translate"),p(2,"warning"),u()),2&t){const e=v().$implicit;C("inline",!0)("matTooltip",pe(1,2,"apps.status-failed-tooltip",se(5,s6,e.detailedStatus?e.detailedStatus:"")))}}function DMe(t,n){if(1&t&&(h(0,"a",36)(1,"button",37),b(2,"translate"),h(3,"mat-icon",22),p(4,"open_in_browser"),u()()()),2&t){const e=v().$implicit;C("href",v(2).getLink(e),mo),d(),C("matTooltip",y(2,3,"apps.open")),d(2),C("inline",!0)}}function MMe(t,n){if(1&t){const e=oe();h(0,"button",35),b(1,"translate"),F("click",function(){j(e);const o=v().$implicit;return U(v(2).config(o))}),h(2,"mat-icon",22),p(3,"settings"),u()()}2&t&&(C("matTooltip",y(1,2,"apps.settings")),d(2),C("inline",!0))}function TMe(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td",31)(2,"mat-checkbox",32),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(3,"td"),x(4,SMe,2,5,"i",33),x(5,kMe,3,7,"mat-icon",34),u(),h(6,"td"),p(7),u(),h(8,"td"),p(9),u(),h(10,"td")(11,"button",35),b(12,"translate"),F("click",function(){const o=j(e).$implicit;return U(v(2).changeAppAutostart(o))}),h(13,"mat-icon",22),p(14),u()()(),h(15,"td",24),x(16,DMe,5,5,"a",36),x(17,MMe,4,4,"button",37),h(18,"button",35),b(19,"translate"),F("click",function(){const o=j(e).$implicit;return U(v(2).viewLogs(o))}),h(20,"mat-icon",22),p(21,"list"),u()(),h(22,"button",35),b(23,"translate"),F("click",function(){const o=j(e).$implicit;return U(v(2).changeAppState(o))}),h(24,"mat-icon",22),p(25),u()()()()}if(2&t){const e=n.$implicit,i=v(2);d(2),C("checked",i.selections.get(e.name)),d(2),S(2!==e.status?4:-1),d(),S(2===e.status?5:-1),d(2),E(" ",e.name," "),d(2),E(" ",e.port," "),d(2),C("matTooltip",y(12,15,e.autostart?"apps.apps-list.disable-autostart":"apps.apps-list.enable-autostart")),d(2),C("inline",!0),d(),M(e.autostart?"done":"close"),d(2),S(i.getLink(e)?16:-1),d(),S(i.appsWithoutConfig.has(e.name)?-1:17),d(),C("matTooltip",y(19,17,"apps.view-logs")),d(2),C("inline",!0),d(2),C("matTooltip",y(23,19,"apps."+(0===e.status||2===e.status?"start-app":"stop-app"))),d(2),C("inline",!0),d(),M(0===e.status||2===e.status?"play_arrow":"stop")}}function EMe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.label")," ")}function PMe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.inverted-order")," ")}function IMe(t,n){if(1&t&&(h(0,"a",43),F("click",function(i){return i.stopPropagation()}),h(1,"button",44),b(2,"translate"),h(3,"mat-icon"),p(4,"open_in_browser"),u()()()),2&t){const e=v().$implicit;C("href",v(2).getLink(e),mo),d(),C("matTooltip",y(2,2,"apps.open"))}}function OMe(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td")(2,"div",27)(3,"div",39)(4,"mat-checkbox",32),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(5,"div",28)(6,"div",40)(7,"span",2),p(8),b(9,"translate"),u(),p(10),u(),h(11,"div",40)(12,"span",2),p(13),b(14,"translate"),u(),p(15),u(),h(16,"div",40)(17,"span",2),p(18),b(19,"translate"),u(),p(20,": "),h(21,"span"),p(22),b(23,"translate"),u()(),h(24,"div",40)(25,"span",2),p(26),b(27,"translate"),u(),p(28,": "),h(29,"span"),p(30),b(31,"translate"),u()()(),B(32,"div",41),h(33,"div",29),x(34,IMe,5,4,"a",36),h(35,"button",42),b(36,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(2);return o.stopPropagation(),U(s.showOptionsDialog(r))}),h(37,"mat-icon"),p(38),u()()()()()()}if(2&t){const e=n.$implicit,i=v(2);d(4),C("checked",i.selections.get(e.name)),d(4),M(y(9,16,"apps.apps-list.app-name")),d(2),E(": ",e.name," "),d(3),M(y(14,18,"apps.apps-list.port")),d(2),E(": ",e.port," "),d(3),M(y(19,20,"apps.apps-list.state")),d(3),Ze(i.getSmallScreenStateClass(e)+" title"),d(),E(" ",pe(23,22,i.getSmallScreenStateTextVar(e),se(31,s6,e.detailedStatus?e.detailedStatus:""))," "),d(4),M(y(27,25,"apps.apps-list.auto-start")),d(3),Ze((e.autostart?"green-clear-text":"red-clear-text")+" title"),d(),E(" ",y(31,27,e.autostart?"apps.apps-list.autostart-enabled":"apps.apps-list.autostart-disabled")," "),d(4),S(i.getLink(e)?34:-1),d(),C("matTooltip",y(36,29,"common.options")),d(3),M("add")}}function AMe(t,n){if(1&t&&B(0,"app-view-all-link",30),2&t){const e=v(2);C("numberOfElements",e.filteredApps.length)("linkParts",_t(3,dMe,e.nodePK,e.showOfficialApps))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function RMe(t,n){if(1&t){const e=oe();h(0,"div",13)(1,"div",18)(2,"table",19)(3,"tr"),B(4,"th"),h(5,"th",20),b(6,"translate"),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.stateSortData))}),B(7,"span",21),x(8,yMe,2,2,"mat-icon",22),u(),h(9,"th",23),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.nameSortData))}),p(10),b(11,"translate"),x(12,CMe,2,2,"mat-icon",22),u(),h(13,"th",23),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.portSortData))}),p(14),b(15,"translate"),x(16,wMe,2,2,"mat-icon",22),u(),h(17,"th",23),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.autoStartSortData))}),p(18),b(19,"translate"),x(20,xMe,2,2,"mat-icon",22),u(),B(21,"th",24),u(),ve(22,TMe,26,21,"tr",null,Fe),u(),h(24,"table",25)(25,"tr",26),F("click",function(){return j(e),U(v().dataSorter.openSortingOrderModal())}),h(26,"td")(27,"div",27)(28,"div",28)(29,"div",2),p(30),b(31,"translate"),u(),h(32,"div"),p(33),b(34,"translate"),x(35,EMe,2,3),x(36,PMe,2,3),u()(),h(37,"div",29)(38,"mat-icon",22),p(39,"keyboard_arrow_down"),u()()()()(),ve(40,OMe,39,33,"tr",null,Fe),u(),x(42,AMe,1,6,"app-view-all-link",30),u()()}if(2&t){const e=v();d(),C("ngClass",_t(29,aMe,e.showShortList_,!e.showShortList_)),d(),C("ngClass",se(32,lMe,e.showShortList_)),d(3),C("matTooltip",y(6,17,"apps.apps-list.state-tooltip")),d(3),S(e.dataSorter.currentSortingColumn===e.stateSortData?8:-1),d(2),E(" ",y(11,19,"apps.apps-list.app-name")," "),d(2),S(e.dataSorter.currentSortingColumn===e.nameSortData?12:-1),d(2),E(" ",y(15,21,"apps.apps-list.port")," "),d(2),S(e.dataSorter.currentSortingColumn===e.portSortData?16:-1),d(2),E(" ",y(19,23,"apps.apps-list.auto-start")," "),d(2),S(e.dataSorter.currentSortingColumn===e.autoStartSortData?20:-1),d(2),ye(e.dataSource),d(2),C("ngClass",se(34,cMe,e.showShortList_)),d(6),M(y(31,25,"tables.sorting-title")),d(3),E("",y(34,27,e.dataSorter.currentSortingColumn.label)," "),d(2),S(e.dataSorter.currentlySortingByLabel?35:-1),d(),S(e.dataSorter.sortingInReverseOrder?36:-1),d(2),C("inline",!0),d(2),ye(e.dataSource),d(2),S(e.showShortList_&&e.numberOfPages>1?42:-1)}}function FMe(t,n){1&t&&(h(0,"span",47),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.apps-list.empty-official")))}function NMe(t,n){1&t&&(h(0,"span",47),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.apps-list.empty-user")))}function LMe(t,n){1&t&&(h(0,"span",47),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.apps-list.empty-with-filter")))}function BMe(t,n){if(1&t&&(h(0,"div",13)(1,"div",45)(2,"mat-icon",46),p(3,"warning"),u(),x(4,FMe,3,3,"span",47),x(5,NMe,3,3,"span",47),x(6,LMe,3,3,"span",47),u()()),2&t){const e=v();d(2),C("inline",!0),d(2),S(0===e.allAppsForType.length&&e.showOfficialApps?4:-1),d(),S(0!==e.allAppsForType.length||e.showOfficialApps?-1:5),d(),S(0!==e.allAppsForType.length?6:-1)}}function VMe(t,n){if(1&t&&B(0,"app-paginator",12),2&t){const e=v();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",_t(4,r6,e.nodePK,e.showOfficialApps))("queryParams",e.dataFilterer.currentUrlQueryParams)}}let a6=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter&&this.dataSorter.setData(this.filteredApps)}set apps(e){this.allApps=e||[],this.allApps&&(this.allAppsForType=[],this.allApps.forEach(i=>{(this.showOfficialApps&&this.officialAppsList.has(i.name)||!this.showOfficialApps&&!this.officialAppsList.has(i.name))&&this.allAppsForType.push(i)}),this.dataFilterer&&this.dataFilterer.setData(this.allAppsForType))}constructor(e,i,o,r,s,a,l){this.appsService=e,this.dialog=i,this.route=o,this.router=r,this.snackbarService=s,this.translateService=a,this.storageService=l,this.listIdForOfficialApps="op",this.listIdForUserApps="up",this.officialAppsList=new Set(["skychat","skysocks","skysocks-client","vpn-client","vpn-server"]),this.showOfficialApps=!0,this.stateSortData=new Dt(["status"],"apps.apps-list.state",st.NumberReversed),this.nameSortData=new Dt(["name"],"apps.apps-list.app-name",st.Text),this.portSortData=new Dt(["port"],"apps.apps-list.port",st.Number),this.autoStartSortData=new Dt(["autostart"],"apps.apps-list.auto-start",st.Boolean),this.selections=new Map,this.appsWithoutConfig=new Set,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"apps.apps-list.filter-dialog.state",keyNameInElementsArray:"status",type:Sn.Select,printableLabelsForValues:[{value:"",label:"apps.apps-list.filter-dialog.state-options.any"},{value:"1",label:"apps.apps-list.filter-dialog.state-options.running"},{value:"0",label:"apps.apps-list.filter-dialog.state-options.stopped"}]},{filterName:"apps.apps-list.filter-dialog.name",keyNameInElementsArray:"name",type:Sn.TextInput,maxlength:50},{filterName:"apps.apps-list.filter-dialog.port",keyNameInElementsArray:"port",type:Sn.TextInput,maxlength:8},{filterName:"apps.apps-list.filter-dialog.autostart",keyNameInElementsArray:"autostart",type:Sn.Select,printableLabelsForValues:[{value:"",label:"apps.apps-list.filter-dialog.autostart-options.any"},{value:"true",label:"apps.apps-list.filter-dialog.autostart-options.enabled"},{value:"false",label:"apps.apps-list.filter-dialog.autostart-options.disabled"}]}],this.refreshAgain=!1,this.operationSubscriptionsGroup=[],this.navigationsSubscription=this.route.paramMap.subscribe(c=>{if(c.has("showOfficialApps")&&(this.showOfficialApps=c.get("showOfficialApps").toUpperCase()==="true".toUpperCase()),c.has("page")){let f=Number.parseInt(c.get("page"),10);(isNaN(f)||f<1)&&(f=1),this.currentPageInUrl=f,this.recalculateElementsToShow()}})}ngOnInit(){const e=this.showOfficialApps?this.listIdForOfficialApps:this.listIdForUserApps;this.dataSorter=new gu(this.dialog,this.translateService,this.storageService,[this.stateSortData,this.nameSortData,this.portSortData,this.autoStartSortData],1,e),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataSorter&&this.dataSorter.setData(this.filteredApps),this.dataFilterer=new _u(this.dialog,this.route,this.router,this.filterProperties,e),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(o=>{this.filteredApps=o,this.dataSorter.setData(this.filteredApps)}),this.allAppsForType&&this.dataFilterer.setData(this.allAppsForType)}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.dataSortedSubscription.unsubscribe(),this.dataFiltererSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFilterer.dispose()}getLink(e){if("skychat"===e.name.toLocaleLowerCase()&&this.nodeIp&&0!==e.status&&2!==e.status){let i="8001",o="127.0.0.1";if(e.args)for(let r=0;r{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}changeStateOfSelected(e){const i=[];this.selections.forEach((o,r)=>{o&&(e&&(0===this.appsMap.get(r).status||2===this.appsMap.get(r).status)||!e&&0!==this.appsMap.get(r).status&&2!==this.appsMap.get(r).status)&&i.push(r)}),this.changeAppsValRecursively(i,!1,e)}changeAutostartOfSelected(e){const i=[];this.selections.forEach((o,r)=>{o&&(e&&!this.appsMap.get(r).autostart||!e&&this.appsMap.get(r).autostart)&&i.push(r)}),0!==i.length&&this.changeAppsValRecursively(i,!0,e,null)}showOptionsDialog(e){const i=[{icon:"list",label:"apps.view-logs"},{icon:0===e.status||2===e.status?"play_arrow":"stop",label:"apps."+(0===e.status||2===e.status?"start-app":"stop-app")},{icon:e.autostart?"close":"done",label:e.autostart?"apps.apps-list.disable-autostart":"apps.apps-list.enable-autostart"}];this.appsWithoutConfig.has(e.name)||i.push({icon:"settings",label:"apps.settings"}),ao.openDialog(this.dialog,i,"common.options").afterClosed().subscribe(o=>{1===o?this.viewLogs(e):2===o?this.changeAppState(e):3===o?this.changeAppAutostart(e):4===o&&this.config(e)})}changeAppState(e){this.changeSingleAppVal(this.startChangingAppState(e.name,0===e.status||2===e.status))}changeAppAutostart(e){this.changeSingleAppVal(this.startChangingAppAutostart(e.name,!e.autostart))}changeSingleAppVal(e,i=null){this.operationSubscriptionsGroup.push(e.subscribe(()=>{i&&i.close(),setTimeout(()=>{this.refreshAgain=!0,ke.refreshCurrentDisplayedData()},50),this.snackbarService.showDone("apps.operation-completed")},o=>{o=Qe(o),setTimeout(()=>{this.refreshAgain=!0,ke.refreshCurrentDisplayedData()},50),i?i.componentInstance.showDone("confirmation.error-header-text",o.translatableErrorMsg):this.snackbarService.showError(o)}))}viewLogs(e){0!==e.status&&2!==e.status?vke.openDialog(this.dialog,e):this.snackbarService.showError("apps.apps-list.unavailable-logs-error")}config(e){"skychat"===e.name?rMe.openDialog(this.dialog,e):"skysocks"===e.name||"vpn-server"===e.name?Ske.openDialog(this.dialog,e):"skysocks-client"===e.name||"vpn-client"===e.name?JDe.openDialog(this.dialog,e):iMe.openDialog(this.dialog,e)}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredApps){const e=this.showShortList_?rt.maxShortListElements:rt.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredApps.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.appsToShow=this.filteredApps.slice(i,i+e),this.appsMap=new Map,this.appsToShow.forEach(s=>{this.appsMap.set(s.name,s),this.selections.has(s.name)||this.selections.set(s.name,!1)});const r=[];this.selections.forEach((s,a)=>{this.appsMap.has(a)||r.push(a)}),r.forEach(s=>{this.selections.delete(s)})}else this.appsToShow=null,this.selections=new Map;this.dataSource=this.appsToShow,this.refreshAgain&&(this.refreshAgain=!1,setTimeout(()=>ke.refreshCurrentDisplayedData(),2e3))}startChangingAppState(e,i){return this.appsService.changeAppState(ke.getCurrentNodeKey(),e,i).pipe(Se(o=>(null!=o.status&&this.dataSource.forEach(r=>{r.name===e&&(r.status=o.status,r.detailedStatus=o.detailed_status)}),o)))}startChangingAppAutostart(e,i){return this.appsService.changeAppAutostart(ke.getCurrentNodeKey(),e,i)}changeAppsValRecursively(e,i,o,r=null){if(!e||0===e.length)return setTimeout(()=>ke.refreshCurrentDisplayedData(),50),this.snackbarService.showWarning("apps.operation-unnecessary"),void(r&&r.close());let s;s=i?this.startChangingAppAutostart(e[e.length-1],o):this.startChangingAppState(e[e.length-1],o),this.operationSubscriptionsGroup.push(s.subscribe(()=>{e.pop(),0===e.length?(r&&r.close(),setTimeout(()=>{this.refreshAgain=!0,ke.refreshCurrentDisplayedData()},50),this.snackbarService.showDone("apps.operation-completed")):this.changeAppsValRecursively(e,i,o,r)},a=>{a=Qe(a),setTimeout(()=>{this.refreshAgain=!0,ke.refreshCurrentDisplayedData()},50),r?r.componentInstance.showDone("confirmation.error-header-text",a.translatableErrorMsg):this.snackbarService.showError(a)}))}static{this.\u0275fac=function(i){return new(i||t)(O(Rs),O(Ot),O(Ai),O(vt),O(ct),O(Go),O(ti))}}static{this.\u0275cmp=re({type:t,selectors:[["app-node-app-list"]],inputs:{nodePK:"nodePK",nodeIp:"nodeIp",showOfficialApps:"showOfficialApps",showShortList:"showShortList",apps:"apps"},standalone:!1,decls:33,vars:39,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"click","matTooltip"],[1,"dot-outline-white"],[3,"inline"],[1,"sortable-column",3,"click"],[1,"actions"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[3,"numberOfElements","linkParts","queryParams"],[1,"selection-col"],[3,"change","checked"],[3,"class","matTooltip"],[1,"red-text",3,"inline","matTooltip"],["mat-button","",1,"big-action-button","transparent-button",3,"click","matTooltip"],["target","_blank","rel","noreferrer nofollow noopener",1,"skychat-link",3,"href"],["mat-button","",1,"big-action-button","transparent-button",3,"matTooltip"],[3,"matTooltip"],[1,"check-part"],[1,"list-row"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],["target","_blank","rel","noreferrer nofollow noopener",1,"skychat-link",3,"click","href"],["mat-icon-button","",1,"transparent-button",3,"matTooltip"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,uMe,3,3,"span",3),x(3,hMe,3,3,"span",3),x(4,gMe,6,3,"div",4),u(),h(5,"div",5)(6,"div",6),x(7,_Me,3,4,"mat-icon",7),x(8,bMe,2,1,"mat-icon",8),h(9,"mat-menu",9,0)(11,"div",10),F("click",function(){return o.changeAllSelections(!0)}),p(12),b(13,"translate"),u(),h(14,"div",10),F("click",function(){return o.changeAllSelections(!1)}),p(15),b(16,"translate"),u(),h(17,"div",11),F("click",function(){return o.changeStateOfSelected(!0)}),p(18),b(19,"translate"),u(),h(20,"div",11),F("click",function(){return o.changeStateOfSelected(!1)}),p(21),b(22,"translate"),u(),h(23,"div",11),F("click",function(){return o.changeAutostartOfSelected(!0)}),p(24),b(25,"translate"),u(),h(26,"div",11),F("click",function(){return o.changeAutostartOfSelected(!1)}),p(27),b(28,"translate"),u()()(),x(29,vMe,1,7,"app-paginator",12),u()(),x(30,RMe,43,36,"div",13),x(31,BMe,7,4,"div",13),x(32,VMe,1,7,"app-paginator",12)),2&i&&(C("ngClass",se(37,sMe,!o.showShortList_&&o.numberOfPages>1&&o.dataSource)),d(2),S(o.showShortList_&&o.showOfficialApps?2:-1),d(),S(o.showShortList_&&!o.showOfficialApps?3:-1),d(),S(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?4:-1),d(3),S(o.allAppsForType&&o.allAppsForType.length>0?7:-1),d(),S(o.dataSource&&o.dataSource.length>0?8:-1),d(),C("overlapTrigger",!1),d(3),E(" ",y(13,25,"selection.select-all")," "),d(3),E(" ",y(16,27,"selection.unselect-all")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(19,29,"selection.start-all")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(22,31,"selection.stop-all")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(25,33,"selection.enable-autostart-all")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(28,35,"selection.disable-autostart-all")," "),d(2),S(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?29:-1),d(),S(o.dataSource&&o.dataSource.length>0?30:-1),d(),S(o.dataSource&&0!==o.dataSource.length?-1:31),d(),S(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?32:-1))},dependencies:[$t,Pn,Wo,We,Kt,Jr,As,vu,kr,_V,mv,xe],styles:[".actions[_ngcontent-%COMP%]{text-align:right;width:150px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}.skychat-link[_ngcontent-%COMP%]{color:#f8f9f9;text-decoration:none}.skychat-link[_ngcontent-%COMP%] .big-action-button[_ngcontent-%COMP%]{margin-right:5px}"]})}}return t})(),HMe=(()=>{class t extends pn{ngOnInit(){return this.dataSubscription=ke.currentNode.subscribe(e=>{this.nodePK=e.localPk,this.apps=e.apps,this.nodeIp=e.ip}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})()}static{this.\u0275cmp=re({type:t,selectors:[["app-apps"]],standalone:!1,features:[be],decls:2,vars:10,consts:[[3,"showOfficialApps","apps","showShortList","nodePK","nodeIp"]],template:function(i,o){1&i&&B(0,"app-node-app-list",0)(1,"app-node-app-list",0),2&i&&(C("showOfficialApps",!0)("apps",o.apps)("showShortList",!0)("nodePK",o.nodePK)("nodeIp",o.nodeIp),d(),C("showOfficialApps",!1)("apps",o.apps)("showShortList",!0)("nodePK",o.nodePK)("nodeIp",o.nodeIp))},dependencies:[a6],encapsulation:2})}}return t})();function jMe(t,n){if(1&t&&(h(0,"span",4),p(1),u()),2&t){const e=v();d(),Xg(" ",e.host.hostname," \xb7 ",e.host.platform||e.host.os," ",e.host.arch," \xb7 uptime ",e.fmtUptime(e.host.uptime_seconds)," ")}}function UMe(t,n){if(1&t&&(h(0,"div",13),p(1),b(2,"number"),u()),2&t){const e=v(3);d(),gt("",e.host.cpu_logical_count," cores \xb7 visor ",pe(2,2,e.procCPUPercent,"1.0-1"),"%")}}function zMe(t,n){if(1&t&&(h(0,"div",13),p(1),b(2,"number"),u()),2&t){const e=v(3);d(),Uh(" ",e.fmtBytes(e.host.mem_used)," / ",e.fmtBytes(e.host.mem_total)," \xb7 visor RSS ",pe(2,3,e.procMemRssMB,"1.0-0"),"M ")}}function $Me(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=v(3);d(),gt("",e.fmtBytes(e.host.disk_used)," / ",e.fmtBytes(e.host.disk_total)," on /")}}function WMe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=v(3);d(),gt(" fds ",e.host.process.num_fds||"-"," \xb7 conns ",e.host.process.open_conns||0," ")}}function GMe(t,n){if(1&t&&(h(0,"div",7)(1,"div",8)(2,"div",9)(3,"span",10),p(4),b(5,"translate"),u(),h(6,"span",11),p(7),b(8,"number"),u()(),B(9,"app-line-chart",12),x(10,UMe,3,5,"div",13),u(),h(11,"div",8)(12,"div",9)(13,"span",10),p(14),b(15,"translate"),u(),h(16,"span",11),p(17),b(18,"number"),u()(),B(19,"app-line-chart",12),x(20,zMe,3,6,"div",13),u(),h(21,"div",8)(22,"div",9)(23,"span",10),p(24),b(25,"translate"),u(),h(26,"span",11),p(27),b(28,"number"),u()(),B(29,"app-line-chart",12),x(30,$Me,2,2,"div",13),u(),h(31,"div",8)(32,"div",9)(33,"span",10),p(34),b(35,"translate"),u(),h(36,"span",11),p(37),u()(),B(38,"app-line-chart",14),h(39,"div",13),p(40),u()(),h(41,"div",8)(42,"div",9)(43,"span",10),p(44),b(45,"translate"),u(),h(46,"span",11),p(47),u()(),B(48,"app-line-chart",14),h(49,"div",13),p(50),u()(),h(51,"div",8)(52,"div",9)(53,"span",10),p(54),b(55,"translate"),u(),h(56,"span",11),p(57),u()(),B(58,"app-line-chart",14),x(59,WMe,2,2,"div",13),u()()),2&t){const e=v(2);d(4),M(y(5,36,"node.resource-monitor.cpu")),d(3),E("",e.host?pe(8,38,e.host.cpu_percent,"1.0-1"):"-","%"),d(2),C("data",e.cpuPctSeries)("min",0)("max",100)("height",60),d(),S(e.host?10:-1),d(4),M(y(15,41,"node.resource-monitor.memory")),d(3),E("",e.host?pe(18,43,e.host.mem_percent,"1.0-1"):"-","%"),d(2),C("data",e.memPctSeries)("min",0)("max",100)("height",60),d(),S(e.host?20:-1),d(4),M(y(25,46,"node.resource-monitor.disk")),d(3),E("",e.host&&e.host.disk_percent?pe(28,48,e.host.disk_percent,"1.0-1"):"-","%"),d(2),C("data",e.diskPctSeries)("min",0)("max",100)("height",60),d(),S(e.host&&e.host.disk_total?30:-1),d(4),M(y(35,51,"node.resource-monitor.net-rx")),d(3),M(e.fmtBps(e.netRxBpsSeries[e.netRxBpsSeries.length-1])),d(),C("data",e.netRxBpsSeries)("height",60),d(2),E("",e.host?e.fmtBytes(e.host.net_bytes_recv):"-"," total"),d(4),M(y(45,53,"node.resource-monitor.net-tx")),d(3),M(e.fmtBps(e.netTxBpsSeries[e.netTxBpsSeries.length-1])),d(),C("data",e.netTxBpsSeries)("height",60),d(2),E("",e.host?e.fmtBytes(e.host.net_bytes_sent):"-"," total"),d(4),M(y(55,55,"node.resource-monitor.threads")),d(3),M(e.host&&e.host.process?e.host.process.num_threads:"-"),d(),C("data",e.threadsSeries)("height",60),d(),S(e.host&&e.host.process?59:-1)}}function qMe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=v(3);d(),gt("heap_sys ",e.fmtBytes(e.proc.mem_heap_sys)," \xb7 sys ",e.fmtBytes(e.proc.mem_sys))}}function KMe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=v(3);d(),gt("GOMAXPROCS ",e.proc.gomaxprocs," \xb7 ",e.proc.go_version)}}function YMe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=v(3);d(),gt("total ",e.proc.num_gc," GCs \xb7 alloc ",e.fmtBytes(e.proc.mem_total_alloc)," since start")}}function XMe(t,n){if(1&t&&(h(0,"div",7)(1,"div",8)(2,"div",9)(3,"span",10),p(4),b(5,"translate"),u(),h(6,"span",11),p(7),b(8,"number"),u()(),B(9,"app-line-chart",14),x(10,qMe,2,2,"div",13),u(),h(11,"div",8)(12,"div",9)(13,"span",10),p(14),b(15,"translate"),u(),h(16,"span",11),p(17),u()(),B(18,"app-line-chart",14),x(19,KMe,2,2,"div",13),u(),h(20,"div",8)(21,"div",9)(22,"span",10),p(23),b(24,"translate"),u(),h(25,"span",11),p(26),u()(),B(27,"app-line-chart",14),x(28,YMe,2,2,"div",13),u()()),2&t){const e=v(2);d(4),M(y(5,15,"node.resource-monitor.heap")),d(3),E("",e.proc?pe(8,17,e.proc.mem_heap_alloc/1024/1024,"1.0-1"):"-","M"),d(2),C("data",e.heapMbSeries)("height",60),d(),S(e.proc?10:-1),d(4),M(y(15,20,"node.resource-monitor.goroutines")),d(3),M(e.proc?e.proc.num_goroutine:"-"),d(),C("data",e.goroutinesSeries)("height",60),d(),S(e.proc?19:-1),d(4),M(y(24,22,"node.resource-monitor.gc")),d(3),E("",e.gcSeries[e.gcSeries.length-1]||0,"/s"),d(),C("data",e.gcSeries)("height",60),d(),S(e.proc?28:-1)}}function ZMe(t,n){if(1&t){const e=oe();h(0,"div",5)(1,"span",6),F("click",function(){return j(e),U(v().setTab("host"))}),p(2),b(3,"translate"),u(),h(4,"span",6),F("click",function(){return j(e),U(v().setTab("process"))}),p(5),b(6,"translate"),u()(),x(7,GMe,60,57,"div",7),x(8,XMe,29,24,"div",7)}if(2&t){const e=v();d(),Ie("active","host"===e.activeTab),d(),E(" ",y(3,8,"node.resource-monitor.tab-host")," "),d(2),Ie("active","process"===e.activeTab),d(),E(" ",y(6,10,"node.resource-monitor.tab-process")," "),d(2),S("host"===e.activeTab?7:-1),d(),S("process"===e.activeTab?8:-1)}}let JMe=(()=>{class t{constructor(e,i){this.nodeService=e,this.cdr=i,this.openByDefault=!1,this.expanded=!1,this.activeTab="host",this.host=null,this.proc=null,this.procCPUPercent=0,this.procMemRssMB=0,this.cpuPctSeries=[],this.memPctSeries=[],this.diskPctSeries=[],this.netRxBpsSeries=[],this.netTxBpsSeries=[],this.goroutinesSeries=[],this.heapMbSeries=[],this.gcSeries=[],this.threadsSeries=[],this.prevNetRx=0,this.prevNetTx=0,this.prevGc=0,this.prevSampleAtMs=0,this.firstHostSample=!0,this.firstProcSample=!0}ngOnInit(){this.openByDefault&&(this.expanded=!0,this.startPolling())}ngOnDestroy(){this.stopPolling()}toggleExpanded(){this.expanded=!this.expanded,this.expanded?this.startPolling():this.stopPolling()}setTab(e){this.activeTab=e}fmtBytes(e){return null==e||isNaN(e)?"-":e>=1e9?(e/1e9).toFixed(1)+"G":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toFixed(0)+"B"}fmtBps(e){return null==e||isNaN(e)||e<0?"0B/s":this.fmtBytes(e)+"/s"}fmtUptime(e){if(!e)return"-";const i=Math.floor(e/86400),o=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return i>0?`${i}d ${o}h`:o>0?`${o}h ${r}m`:`${r}m`}startPolling(){this.stopPolling(),this.firstHostSample=!0,this.firstProcSample=!0,this.prevSampleAtMs=0,this.pollSub=xa(0,1e3).subscribe(()=>{this.pollHost(),this.pollProc()})}stopPolling(){this.pollSub&&(this.pollSub.unsubscribe(),this.pollSub=null),this.hostSub&&(this.hostSub.unsubscribe(),this.hostSub=null),this.procSub&&(this.procSub.unsubscribe(),this.procSub=null)}pollHost(){this.nodeKey&&(this.hostSub&&this.hostSub.unsubscribe(),this.hostSub=this.nodeService.getHostStats(this.nodeKey).subscribe(e=>this.onHostStats(e),()=>{}))}pollProc(){this.nodeKey&&(this.procSub&&this.procSub.unsubscribe(),this.procSub=this.nodeService.getRuntimeStats(this.nodeKey).subscribe(e=>this.onRuntimeStats(e),()=>{}))}onHostStats(e){this.host=e,this.procCPUPercent=e.process?e.process.cpu_percent:0,this.procMemRssMB=e.process?e.process.mem_rss/1024/1024:0;const i=Date.now();let o=(i-this.prevSampleAtMs)/1e3;if((o<=0||o>5)&&(o=1),this.prevSampleAtMs=i,this.push(this.cpuPctSeries,e.cpu_percent),this.push(this.memPctSeries,e.mem_percent),this.push(this.diskPctSeries,e.disk_percent||0),this.push(this.threadsSeries,e.process&&e.process.num_threads||0),this.firstHostSample)this.firstHostSample=!1;else{const r=Math.max(0,e.net_bytes_recv-this.prevNetRx)/o,s=Math.max(0,e.net_bytes_sent-this.prevNetTx)/o;this.push(this.netRxBpsSeries,r),this.push(this.netTxBpsSeries,s)}this.prevNetRx=e.net_bytes_recv,this.prevNetTx=e.net_bytes_sent,this.cdr.markForCheck()}onRuntimeStats(e){this.proc=e,this.push(this.goroutinesSeries,e.num_goroutine),this.push(this.heapMbSeries,e.mem_heap_alloc/1024/1024),this.firstProcSample?this.firstProcSample=!1:this.push(this.gcSeries,Math.max(0,e.num_gc-this.prevGc)),this.prevGc=e.num_gc,this.cdr.markForCheck()}push(e,i){e.push(i),e.length>60&&e.shift()}static{this.\u0275fac=function(i){return new(i||t)(O(Io),O(Jt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-resource-monitor"]],inputs:{nodeKey:"nodeKey",openByDefault:"openByDefault"},standalone:!1,decls:9,vars:7,consts:[[1,"resource-monitor","mt-3"],[1,"rm-header",3,"click"],[1,"rm-toggle-icon",3,"inline"],[1,"section-title"],[1,"rm-host-summary"],[1,"rm-tabs"],[1,"rm-tab",3,"click"],[1,"rm-grid"],[1,"rm-cell"],[1,"rm-cell-header"],[1,"rm-cell-label"],[1,"rm-cell-value"],[3,"data","min","max","height"],[1,"rm-cell-foot"],[3,"data","height"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1),F("click",function(){return o.toggleExpanded()}),h(2,"mat-icon",2),p(3),u(),h(4,"span",3),p(5),b(6,"translate"),u(),x(7,jMe,2,4,"span",4),u(),x(8,ZMe,9,12),u()),2&i&&(d(2),C("inline",!0),d(),M(o.expanded?"expand_less":"expand_more"),d(2),M(y(6,5,"node.resource-monitor.title")),d(2),S(o.host?7:-1),d(),S(o.expanded?8:-1))},dependencies:[We,Gv,Vl,xe],styles:[".resource-monitor[_ngcontent-%COMP%]{border-top:1px solid rgba(255,255,255,.08);padding-top:12px}.rm-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none;padding:4px 0}.rm-toggle-icon[_ngcontent-%COMP%]{font-size:22px}.rm-host-summary[_ngcontent-%COMP%]{margin-left:auto;opacity:.6;font-size:12px}.rm-tabs[_ngcontent-%COMP%]{display:flex;gap:16px;margin:8px 0 12px;font-size:13px}.rm-tab[_ngcontent-%COMP%]{cursor:pointer;padding:4px 8px;border-radius:4px;opacity:.6}.rm-tab.active[_ngcontent-%COMP%]{opacity:1;background:#ffffff0f}.rm-tab[_ngcontent-%COMP%]:hover{opacity:.9}.rm-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.rm-cell[_ngcontent-%COMP%]{background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:6px;padding:8px 10px;min-height:110px;display:flex;flex-direction:column}.rm-cell-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:2px}.rm-cell-label[_ngcontent-%COMP%]{font-size:11px;text-transform:uppercase;opacity:.7;letter-spacing:.5px}.rm-cell-value[_ngcontent-%COMP%]{font-size:14px;font-weight:500;font-variant-numeric:tabular-nums}.rm-cell-foot[_ngcontent-%COMP%]{margin-top:2px;font-size:11px;opacity:.5;font-variant-numeric:tabular-nums}"]})}}return t})();function eTe(t,n){1&t&&B(0,"app-resource-monitor",0),2&t&&C("nodeKey",v().node.localPk)("openByDefault",!0)}let tTe=(()=>{class t extends pn{ngOnInit(){return this.dataSubscription=ke.currentNode.subscribe(e=>{this.node=e}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription&&this.dataSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})()}static{this.\u0275cmp=re({type:t,selectors:[["app-node-resources"]],standalone:!1,features:[be],decls:1,vars:1,consts:[[3,"nodeKey","openByDefault"]],template:function(i,o){1&i&&x(0,eTe,1,2,"app-resource-monitor",0),2&i&&S(o.node?0:-1)},dependencies:[JMe],encapsulation:2})}}return t})();const nTe=["logEl"],iTe=t=>({active:t});function oTe(t,n){if(1&t&&(h(0,"span",8),p(1),u()),2&t){const e=v(2);d(),E("\xb7 ",e.errorText)}}function rTe(t,n){1&t&&(h(0,"span",9),p(1),b(2,"translate"),u()),2&t&&(d(),E("\xb7 ",y(2,1,"skychat.no-history")))}function sTe(t,n){if(1&t){const e=oe();h(0,"mat-form-field",34)(1,"mat-label"),p(2),b(3,"translate"),u(),h(4,"input",35),zt("ngModelChange",function(o){j(e);const r=v(3);return Zt(r.pwOld,o)||(r.pwOld=o),U(o)}),u()()}if(2&t){const e=v(3);d(2),M(y(3,2,"skychat.password.old")),d(2),Ut("ngModel",e.pwOld)}}function aTe(t,n){if(1&t){const e=oe();h(0,"button",39),F("click",function(){return j(e),U(v(3).clearPassword())}),p(1),b(2,"translate"),u()}if(2&t){const e=v(3);C("disabled",e.pwBusy||!e.pwOld),d(),E(" ",y(2,2,"skychat.password.clear")," ")}}function lTe(t,n){if(1&t){const e=oe();h(0,"div",13)(1,"div",33),p(2),b(3,"translate"),u(),x(4,sTe,5,4,"mat-form-field",34),h(5,"mat-form-field",34)(6,"mat-label"),p(7),b(8,"translate"),u(),h(9,"input",35),zt("ngModelChange",function(o){j(e);const r=v(2);return Zt(r.pwNew,o)||(r.pwNew=o),U(o)}),u()(),h(10,"mat-form-field",34)(11,"mat-label"),p(12),b(13,"translate"),u(),h(14,"input",35),zt("ngModelChange",function(o){j(e);const r=v(2);return Zt(r.pwConfirm,o)||(r.pwConfirm=o),U(o)}),u()(),h(15,"div",36)(16,"button",37),F("click",function(){return j(e),U(v(2).applyPassword())}),p(17),b(18,"translate"),u(),x(19,aTe,3,4,"button",38),u()()}if(2&t){const e=v(2);d(2),E(" ",y(3,9,e.pwIsSet?"skychat.password.help-set":"skychat.password.help-unset")," "),d(2),S(e.pwIsSet?4:-1),d(3),M(y(8,11,"skychat.password.new")),d(2),Ut("ngModel",e.pwNew),d(3),M(y(13,13,"skychat.password.confirm")),d(2),Ut("ngModel",e.pwConfirm),d(2),C("disabled",e.pwBusy||!e.pwNew),d(),E(" ",y(18,15,e.pwIsSet?"skychat.password.change":"skychat.password.set")," "),d(2),S(e.pwIsSet?19:-1)}}function cTe(t,n){1&t&&(h(0,"div",17),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"skychat.peers-empty")))}function dTe(t,n){if(1&t){const e=oe();h(0,"div",40),F("click",function(){const o=j(e).$implicit;return U(v(2).pickRecipient(o))}),h(1,"span",41),p(2),u()()}if(2&t){const e=n.$implicit,i=v(2);C("ngClass",se(3,iTe,i.toPK===e))("matTooltip",e),d(2),M(e)}}function uTe(t,n){1&t&&(h(0,"div",21),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"skychat.empty")))}function hTe(t,n){if(1&t){const e=oe();h(0,"div",22)(1,"div",42)(2,"span",43),F("click",function(){const o=j(e).$implicit;return U(v(2).pickRecipient(o.peer))}),p(3),u(),h(4,"span",44),p(5),b(6,"date"),u()(),h(7,"div",45),p(8),u()()}if(2&t){const e=n.$implicit;C("ngClass",e.direction),d(2),C("matTooltip",e.peer),d(),gt(" ","out"===e.direction?"\u2192":"\u2190"," ",e.peer," "),d(2),M(pe(6,6,e.ts,"mediumTime")),d(3),M(e.text)}}function fTe(t,n){if(1&t){const e=oe();h(0,"div",1)(1,"div",2)(2,"div",3),B(3,"span",4),h(4,"span",5),p(5),b(6,"translate"),u(),h(7,"span",6),p(8,"\xb7"),u(),h(9,"span",7),p(10),b(11,"translate"),b(12,"translate"),u(),x(13,oTe,2,1,"span",8),x(14,rTe,3,3,"span",9),B(15,"span",10),h(16,"button",11),F("click",function(){return j(e),U(v().togglePassword())}),h(17,"mat-icon",12),p(18),u(),p(19),b(20,"translate"),u()(),x(21,lTe,20,17,"div",13),h(22,"div",14)(23,"aside",15)(24,"div",16),p(25),b(26,"translate"),u(),x(27,cTe,3,3,"div",17),ve(28,dTe,3,5,"div",18,Fe),u(),h(30,"section",19)(31,"div",20,0),x(33,uTe,3,3,"div",21),ve(34,hTe,9,9,"div",22,mO),u(),h(36,"div",23)(37,"mat-form-field",24)(38,"mat-label"),p(39),b(40,"translate"),u(),h(41,"input",25),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.toPK,o)||(r.toPK=o),U(o)}),u()(),h(42,"mat-form-field",26)(43,"mat-label"),p(44),b(45,"translate"),u(),h(46,"mat-select",27),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.network,o)||(r.network=o),U(o)}),h(47,"mat-option",28),p(48,"skynet"),u(),h(49,"mat-option",29),p(50,"dmsg"),u()()()(),h(51,"div",23)(52,"mat-form-field",30)(53,"mat-label"),p(54),b(55,"translate"),u(),h(56,"textarea",31),b(57,"translate"),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.message,o)||(r.message=o),U(o)}),F("keydown.enter",function(o){j(e);const r=v();return U(o.ctrlKey&&r.send())}),u()(),h(58,"button",32),F("click",function(){return j(e),U(v().send())}),h(59,"mat-icon"),p(60,"send"),u(),p(61),b(62,"translate"),u()()()()()()}if(2&t){const e=v();d(3),C("ngClass",e.connected?"dot-green":"dot-outline-gray"),d(2),M(y(6,21,"skychat.title")),d(5),M(e.connected?y(11,23,"skychat.connected"):y(12,25,"skychat.disconnected")),d(3),S(e.errorText?13:-1),d(),S(e.historyAvailable?-1:14),d(3),C("inline",!0),d(),M(e.pwIsSet?"lock":"lock_open"),d(),E(" ",y(20,27,e.pwOpen?"skychat.password.hide":e.pwIsSet?"skychat.password.change":"skychat.password.set")," "),d(2),S(e.pwOpen?21:-1),d(4),M(y(26,29,"skychat.peers")),d(2),S(0===e.peers.length?27:-1),d(),ye(e.peers),d(5),S(0===e.messages.length?33:-1),d(),ye(e.messages),d(5),M(y(40,31,"skychat.to")),d(2),Ut("ngModel",e.toPK),d(3),M(y(45,33,"skychat.network")),d(2),Ut("ngModel",e.network),d(8),M(y(55,35,"skychat.message")),d(2),Ut("ngModel",e.message),C("placeholder",y(57,37,"skychat.placeholder")),d(2),C("disabled",e.sending||!e.message.trim()||!e.toPK.trim()),d(3),E(" ",y(62,39,"skychat.send")," ")}}let pTe=(()=>{class t extends pn{get peers(){const e=[],i=new Set;for(let o=this.messages.length-1;o>=0;o--){const r=this.messages[o].peer;!r||i.has(r)||(i.add(r),e.push(r))}return e}constructor(e,i,o){super(),this.api=e,this.snackbar=i,this.cdr=o,this.toPK="",this.message="",this.network="skynet",this.sending=!1,this.messages=[],this.connected=!1,this.errorText="",this.historyAvailable=!0,this.wasAtBottom=!0,this.es=null,this.pwOpen=!1,this.pwIsSet=!1,this.pwOld="",this.pwNew="",this.pwConfirm="",this.pwBusy=!1}ngOnInit(){return this.nodeSub=ke.currentNode.subscribe(e=>{const i=!this.node;this.node=e,i&&(this.connectSSE(),this.tryLoadPeers(),this.refreshPasswordState())}),super.ngOnInit()}ngOnDestroy(){this.nodeSub&&this.nodeSub.unsubscribe(),this.disconnectSSE()}ngAfterViewChecked(){if(this.wasAtBottom&&this.logEl){const e=this.logEl.nativeElement;e.scrollTop=e.scrollHeight}}proxyUrl(e){return`/api/visors/${this.node.localPk}/skychat/proxy/${e.replace(/^\/+/,"")}`}connectSSE(){if(this.node&&!this.es)try{this.es=new EventSource(this.proxyUrl("sse")),this.es.onopen=()=>{this.connected=!0,this.errorText="",this.cdr.markForCheck()},this.es.onerror=()=>{this.connected=!1,this.errorText="Disconnected \u2014 retrying\u2026",this.cdr.markForCheck()},this.es.onmessage=e=>this.handleSSE(e.data)}catch(e){this.errorText=`SSE setup failed: ${e?.message||e}`}}disconnectSSE(){this.es&&(this.es.close(),this.es=null)}handleSSE(e){let i=null;try{i=JSON.parse(e)}catch{}if(!i||"object"!=typeof i)return;const o={peer:i.sender||i.from||"",direction:"in",text:"string"==typeof i.message?i.message:i.text||"",ts:Date.now()};!o.peer||!o.text||(this.captureScroll(),this.messages.push(o),this.messages.length>500&&this.messages.shift(),this.cdr.markForCheck())}send(){var e=this;if(this.sending)return;const i=this.toPK.trim(),o=this.message.trim();if(i&&o){if(66!==i.length||!/^[0-9a-fA-F]+$/.test(i))return void this.snackbar.showError("Recipient must be a 66-char hex public key");this.sending=!0,fetch(this.proxyUrl("message"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({recipient:i,message:o,network:this.network})}).then(function(){var r=Et(function*(s){if(!s.ok){const a=yield s.text();throw new Error(a||`HTTP ${s.status}`)}e.captureScroll(),e.messages.push({peer:i,direction:"out",text:o,ts:Date.now()}),e.messages.length>500&&e.messages.shift(),e.message="",e.cdr.markForCheck()});return function(s){return r.apply(this,arguments)}}()).catch(r=>{this.snackbar.showError(r?.message||String(r))}).finally(()=>{this.sending=!1,this.cdr.markForCheck()})}}tryLoadPeers(){var e=this;!this.node||!this.historyAvailable||fetch(this.proxyUrl("history?limit=100")).then(function(){var i=Et(function*(o){if(503===o.status)return e.historyAvailable=!1,null;if(!o.ok)throw new Error(`HTTP ${o.status}`);return o.json()});return function(o){return i.apply(this,arguments)}}()).then(i=>{if(!Array.isArray(i))return;const o=i.map(r=>({peer:r.peer||r.sender||"",direction:"out"===r.direction?"out":"in",text:r.message||r.text||"",ts:r.timestamp||r.ts||Date.now()})).filter(r=>r.peer&&r.text);this.messages=o.concat(this.messages),this.cdr.markForCheck()}).catch(()=>{})}pickRecipient(e){this.toPK=e}captureScroll(){if(!this.logEl)return void(this.wasAtBottom=!0);const e=this.logEl.nativeElement;this.wasAtBottom=e.scrollHeight-e.scrollTop-e.clientHeight<40}togglePassword(){this.pwOpen=!this.pwOpen,this.pwOpen?this.refreshPasswordState():this.resetPasswordForm()}refreshPasswordState(){this.node&&this.api.get(`visors/${this.node.localPk}/skychat/password`).subscribe(e=>{this.pwIsSet=!(!e||!e.set),this.cdr.markForCheck()},()=>{})}resetPasswordForm(){this.pwOld="",this.pwNew="",this.pwConfirm=""}validateNewPassword(){return this.pwNew.length<6||this.pwNew.length>64?"skychat.password.errors.length":this.pwNew!==this.pwConfirm?"skychat.password.errors.mismatch":null}applyPassword(){if(!this.node||this.pwBusy)return;const e=this.validateNewPassword();e?this.snackbar.showError(e):(this.pwBusy=!0,this.api.put(`visors/${this.node.localPk}/skychat/password`,{old_password:this.pwIsSet?this.pwOld:"",new_password:this.pwNew}).subscribe(()=>{this.pwBusy=!1,this.pwIsSet=!0,this.resetPasswordForm(),this.snackbar.showDone("skychat.password.saved"),this.cdr.markForCheck()},i=>{this.pwBusy=!1,this.snackbar.showError(i?.originalError?.error?.error||i?.message||String(i)),this.cdr.markForCheck()}))}clearPassword(){if(this.node&&!this.pwBusy&&this.pwIsSet){if(!this.pwOld)return void this.snackbar.showError("skychat.password.errors.old-required");this.pwBusy=!0,this.api.delete(`visors/${this.node.localPk}/skychat/password?old_password=${encodeURIComponent(this.pwOld)}`).subscribe(()=>{this.pwBusy=!1,this.pwIsSet=!1,this.resetPasswordForm(),this.snackbar.showDone("skychat.password.cleared"),this.cdr.markForCheck()},e=>{this.pwBusy=!1,this.snackbar.showError(e?.originalError?.error?.error||e?.message||String(e)),this.cdr.markForCheck()})}}static{this.\u0275fac=function(i){return new(i||t)(O(zi),O(ct),O(Jt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-skychat"]],viewQuery:function(i,o){if(1&i&&ot(nTe,5),2&i){let r;he(r=fe())&&(o.logEl=r.first)}},standalone:!1,features:[be],decls:1,vars:1,consts:[["logEl",""],[1,"rounded-elevated-box","mt-3","skychat-box"],[1,"box-internal-container","sc-shell"],[1,"sc-status"],[1,"dot",3,"ngClass"],[1,"status-text"],[1,"status-sep"],[1,"status-conn"],[1,"error"],[1,"hint"],[1,"sc-status-spacer"],["mat-button","","type","button",1,"sc-password-toggle",3,"click"],[1,"lock-icon",3,"inline"],[1,"sc-password"],[1,"sc-body"],[1,"sc-sidebar"],[1,"sc-sidebar-title"],[1,"sc-sidebar-empty"],[1,"sc-peer",3,"ngClass","matTooltip"],[1,"sc-chat"],[1,"sc-log"],[1,"sc-empty"],[1,"sc-msg",3,"ngClass"],[1,"sc-composer"],["appearance","outline",1,"field-pk"],["matInput","","placeholder","02abc\u2026",3,"ngModelChange","ngModel"],["appearance","outline",1,"field-sm"],["panelClass","skynet-select-panel",3,"ngModelChange","ngModel"],["value","skynet"],["value","dmsg"],["appearance","outline",1,"field-msg"],["matInput","","rows","2",3,"ngModelChange","keydown.enter","ngModel","placeholder"],["mat-raised-button","","color","primary",1,"send-btn",3,"click","disabled"],[1,"sc-password-help"],["appearance","outline",1,"field-pw"],["matInput","","type","password","maxlength","64",3,"ngModelChange","ngModel"],[1,"sc-password-actions"],["mat-raised-button","","color","primary",3,"click","disabled"],["mat-stroked-button","","color","warn",3,"disabled"],["mat-stroked-button","","color","warn",3,"click","disabled"],[1,"sc-peer",3,"click","ngClass","matTooltip"],[1,"peer-pk","mono","small"],[1,"sc-msg-meta"],[1,"peer","mono","small",3,"click","matTooltip"],[1,"ts"],[1,"sc-msg-text"]],template:function(i,o){1&i&&x(0,fTe,63,41,"div",1),2&i&&S(o.node?0:-1)},dependencies:[$t,Gt,qt,wi,sn,Os,In,Pn,We,Kt,cu,Pa,Qr,fa,xe],styles:[".skychat-box[_ngcontent-%COMP%]{display:flex;flex-direction:column}.sc-shell[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.sc-status[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:13px;padding:6px 4px}.sc-status[_ngcontent-%COMP%] .status-text[_ngcontent-%COMP%]{font-weight:600;font-size:14px}.sc-status[_ngcontent-%COMP%] .status-sep[_ngcontent-%COMP%]{opacity:.5}.sc-status[_ngcontent-%COMP%] .status-conn[_ngcontent-%COMP%]{font-weight:500}.sc-status[_ngcontent-%COMP%] .error[_ngcontent-%COMP%]{opacity:.85;color:#e53935e6}.sc-status[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{opacity:.6}.sc-status[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{display:inline-block;width:8px;height:8px;border-radius:50%}.sc-status[_ngcontent-%COMP%] .dot-green[_ngcontent-%COMP%]{background:#4caf50}.sc-status[_ngcontent-%COMP%] .dot-outline-gray[_ngcontent-%COMP%]{border:1px solid rgba(255,255,255,.4)}.sc-status[_ngcontent-%COMP%] .sc-status-spacer[_ngcontent-%COMP%]{flex:1 1 auto}.sc-status[_ngcontent-%COMP%] .sc-password-toggle[_ngcontent-%COMP%]{font-size:12px;line-height:1.2}.sc-status[_ngcontent-%COMP%] .sc-password-toggle[_ngcontent-%COMP%] .lock-icon[_ngcontent-%COMP%]{font-size:16px;vertical-align:middle;margin-right:4px}.sc-password[_ngcontent-%COMP%]{margin:8px 0 4px;padding:12px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:6px;display:flex;flex-wrap:wrap;gap:12px 16px;align-items:flex-end}.sc-password[_ngcontent-%COMP%] .sc-password-help[_ngcontent-%COMP%]{flex:1 1 100%;font-size:12px;opacity:.75;margin-bottom:4px}.sc-password[_ngcontent-%COMP%] .field-pw[_ngcontent-%COMP%]{flex:1 1 200px;min-width:180px}.sc-password[_ngcontent-%COMP%] .sc-password-actions[_ngcontent-%COMP%]{flex:1 1 100%;display:flex;gap:8px;justify-content:flex-end}.sc-body[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:stretch}.sc-sidebar[_ngcontent-%COMP%]{flex:0 0 220px;max-width:240px;display:flex;flex-direction:column;gap:4px;padding:8px;background:#0000002e;border:1px solid rgba(255,255,255,.06);border-radius:6px;overflow-y:auto;max-height:60vh}.sc-sidebar[_ngcontent-%COMP%] .sc-sidebar-title[_ngcontent-%COMP%]{font-size:11px;text-transform:uppercase;letter-spacing:.5px;opacity:.6;padding:2px 4px 6px}.sc-sidebar[_ngcontent-%COMP%] .sc-sidebar-empty[_ngcontent-%COMP%]{padding:8px 4px;font-size:12px;opacity:.5}.sc-sidebar[_ngcontent-%COMP%] .sc-peer[_ngcontent-%COMP%]{cursor:pointer;padding:6px 8px;border-radius:4px;border:1px solid transparent;background:#ffffff08}.sc-sidebar[_ngcontent-%COMP%] .sc-peer[_ngcontent-%COMP%]:hover{background:#ffffff0f}.sc-sidebar[_ngcontent-%COMP%] .sc-peer.active[_ngcontent-%COMP%]{background:#2196f32e;border-color:#2196f373}.sc-sidebar[_ngcontent-%COMP%] .sc-peer[_ngcontent-%COMP%] .peer-pk[_ngcontent-%COMP%]{display:block;word-break:break-all;line-height:1.25;font-size:10px}@media(max-width:720px){.sc-body[_ngcontent-%COMP%]{flex-direction:column}.sc-sidebar[_ngcontent-%COMP%]{flex:0 0 auto;max-width:none;max-height:140px}}.sc-chat[_ngcontent-%COMP%]{flex:1 1 auto;display:flex;flex-direction:column;min-width:0}.sc-log[_ngcontent-%COMP%]{background:#0000002e;border:1px solid rgba(255,255,255,.06);border-radius:6px;padding:8px;height:50vh;min-height:320px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.sc-empty[_ngcontent-%COMP%]{margin:auto;opacity:.5;font-size:13px}.sc-msg[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border-radius:6px;background:#ffffff08;max-width:80%}.sc-msg.in[_ngcontent-%COMP%]{align-self:flex-start}.sc-msg.out[_ngcontent-%COMP%]{align-self:flex-end;background:#2196f32e}.sc-msg-meta[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center;font-size:11px;opacity:.7;flex-wrap:wrap}.sc-msg-meta[_ngcontent-%COMP%] .peer[_ngcontent-%COMP%]{cursor:pointer;-webkit-text-decoration:underline dotted transparent;text-decoration:underline dotted transparent;word-break:break-all}.sc-msg-meta[_ngcontent-%COMP%] .peer[_ngcontent-%COMP%]:hover{text-decoration-color:currentColor}.sc-msg-text[_ngcontent-%COMP%]{white-space:pre-wrap;word-break:break-word;font-size:13px}.sc-composer[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:flex-start;margin-top:8px}.sc-composer[_ngcontent-%COMP%] .field-pk[_ngcontent-%COMP%]{flex:1 1 360px}.sc-composer[_ngcontent-%COMP%] .field-sm[_ngcontent-%COMP%]{flex:0 1 130px}.sc-composer[_ngcontent-%COMP%] .field-msg[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0}.sc-composer[_ngcontent-%COMP%] .send-btn[_ngcontent-%COMP%]{flex:0 0 auto;align-self:center;height:56px;white-space:nowrap}"]})}}return t})(),l6=(()=>{class t{constructor(e){this.apiService=e}create(e,i,o){const r={remote_pk:i};return o&&(r.transport_type=o),this.apiService.post(`visors/${e}/transports`,r)}delete(e,i){return this.apiService.delete(`visors/${e}/transports/${i}`)}savePersistentTransportsData(e,i){return this.apiService.put(`visors/${e}/persistent-transports`,i)}getPersistentTransports(e){return this.apiService.get(`visors/${e}/persistent-transports`)}types(e){return this.apiService.get(`visors/${e}/transport-types`)}changeAutoconnectSetting(e,i){const o={};return o.public_autoconnect=i,this.apiService.put(`visors/${e}/public-autoconnect`,o)}static{this.\u0275fac=function(i){return new(i||t)(ce(zi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const mTe=["switch"],gTe=["*"];function _Te(t,n){1&t&&(h(0,"span",11),rl(),h(1,"svg",13),B(2,"path",14),u(),h(3,"svg",15),B(4,"path",16),u()())}const bTe=new Z("mat-slide-toggle-default-options",{providedIn:"root",factory:()=>({disableToggleValue:!1,hideIcon:!1,disabledInteractive:!1})});class c6{source;checked;constructor(n,e){this.source=n,this.checked=e}}let d6=(()=>{class t{_elementRef=D(Re);_focusMonitor=D(ec);_changeDetectorRef=D(Jt);defaults=D(bTe);_onChange=e=>{};_onTouched=()=>{};_validatorOnChange=()=>{};_uniqueId;_checked=!1;_createChangeEvent(e){return new c6(this,e)}_labelId;get buttonId(){return`${this.id||this._uniqueId}-button`}_switchElement;focus(){this._switchElement.nativeElement.focus()}_noopAnimations=ci();_focused=!1;name=null;id;labelPosition="after";ariaLabel=null;ariaLabelledby=null;ariaDescribedby;required=!1;color;disabled=!1;disableRipple=!1;tabIndex=0;get checked(){return this._checked}set checked(e){this._checked=e,this._changeDetectorRef.markForCheck()}hideIcon;disabledInteractive;change=new we;toggleChange=new we;get inputId(){return`${this.id||this._uniqueId}-input`}constructor(){D(zo).load(tu);const e=D(new Yh("tabindex"),{optional:!0}),i=this.defaults;this.tabIndex=null==e?0:parseInt(e)||0,this.color=i.color||"accent",this.id=this._uniqueId=D(ni).getId("mat-mdc-slide-toggle-"),this.hideIcon=i.hideIcon??!1,this.disabledInteractive=i.disabledInteractive??!1,this._labelId=this._uniqueId+"-label"}ngAfterContentInit(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{"keyboard"===e||"program"===e?(this._focused=!0,this._changeDetectorRef.markForCheck()):e||Promise.resolve().then(()=>{this._focused=!1,this._onTouched(),this._changeDetectorRef.markForCheck()})})}ngOnChanges(e){e.required&&this._validatorOnChange()}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}writeValue(e){this.checked=!!e}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}validate(e){return this.required&&!0!==e.value?{required:!0}:null}registerOnValidatorChange(e){this._validatorOnChange=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck()}toggle(){this.checked=!this.checked,this._onChange(this.checked)}_emitChangeEvent(){this._onChange(this.checked),this.change.emit(this._createChangeEvent(this.checked))}_handleClick(){this.disabled||(this.toggleChange.emit(),this.defaults.disableToggleValue||(this.checked=!this.checked,this._onChange(this.checked),this.change.emit(new c6(this,this.checked))))}_getAriaLabelledBy(){return this.ariaLabelledby?this.ariaLabelledby:this.ariaLabel?null:this._labelId}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-slide-toggle"]],viewQuery:function(i,o){if(1&i&&ot(mTe,5),2&i){let r;he(r=fe())&&(o._switchElement=r.first)}},hostAttrs:[1,"mat-mdc-slide-toggle"],hostVars:13,hostBindings:function(i,o){2&i&&(ur("id",o.id),$e("tabindex",null)("aria-label",null)("name",null)("aria-labelledby",null),Ze(o.color?"mat-"+o.color:""),Ie("mat-mdc-slide-toggle-focused",o._focused)("mat-mdc-slide-toggle-checked",o.checked)("_mat-animation-noopable",o._noopAnimations))},inputs:{name:"name",id:"id",labelPosition:"labelPosition",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],required:[2,"required","required",De],color:"color",disabled:[2,"disabled","disabled",De],disableRipple:[2,"disableRipple","disableRipple",De],tabIndex:[2,"tabIndex","tabIndex",e=>null==e?0:hr(e)],checked:[2,"checked","checked",De],hideIcon:[2,"hideIcon","hideIcon",De],disabledInteractive:[2,"disabledInteractive","disabledInteractive",De]},outputs:{change:"change",toggleChange:"toggleChange"},exportAs:["matSlideToggle"],features:[lt([{provide:Yo,useExisting:Nt(()=>t),multi:!0},{provide:Ci,useExisting:t,multi:!0}]),_i],ngContentSelectors:gTe,decls:14,vars:27,consts:[["switch",""],["mat-internal-form-field","",3,"labelPosition"],["role","switch","type","button",1,"mdc-switch",3,"click","tabIndex","disabled"],[1,"mat-mdc-slide-toggle-touch-target"],[1,"mdc-switch__track"],[1,"mdc-switch__handle-track"],[1,"mdc-switch__handle"],[1,"mdc-switch__shadow"],[1,"mdc-elevation-overlay"],[1,"mdc-switch__ripple"],["mat-ripple","",1,"mat-mdc-slide-toggle-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-switch__icons"],[1,"mdc-label",3,"click","for"],["viewBox","0 0 24 24","aria-hidden","true",1,"mdc-switch__icon","mdc-switch__icon--on"],["d","M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z"],["viewBox","0 0 24 24","aria-hidden","true",1,"mdc-switch__icon","mdc-switch__icon--off"],["d","M20 13H4v-2h16v2z"]],template:function(i,o){if(1&i&&(yi(),h(0,"div",1)(1,"button",2,0),F("click",function(){return o._handleClick()}),B(3,"div",3)(4,"span",4),h(5,"span",5)(6,"span",6)(7,"span",7),B(8,"span",8),u(),h(9,"span",9),B(10,"span",10),u(),x(11,_Te,5,0,"span",11),u()()(),h(12,"label",12),F("click",function(s){return s.stopPropagation()}),Pt(13),u()()),2&i){const r=Hn(2);C("labelPosition",o.labelPosition),d(),Ie("mdc-switch--selected",o.checked)("mdc-switch--unselected",!o.checked)("mdc-switch--checked",o.checked)("mdc-switch--disabled",o.disabled)("mat-mdc-slide-toggle-disabled-interactive",o.disabledInteractive),C("tabIndex",o.disabled&&!o.disabledInteractive?-1:o.tabIndex)("disabled",o.disabled&&!o.disabledInteractive),$e("id",o.buttonId)("name",o.name)("aria-label",o.ariaLabel)("aria-labelledby",o._getAriaLabelledBy())("aria-describedby",o.ariaDescribedby)("aria-required",o.required||null)("aria-checked",o.checked)("aria-disabled",o.disabled&&o.disabledInteractive?"true":null),d(9),C("matRippleTrigger",r)("matRippleDisabled",o.disableRipple||o.disabled)("matRippleCentered",!0),d(),S(o.hideIcon?-1:11),d(),C("for",o.buttonId),$e("id",o._labelId)}},dependencies:[eu,nV],styles:['.mdc-switch{align-items:center;background:none;border:none;cursor:pointer;display:inline-flex;flex-shrink:0;margin:0;outline:none;overflow:visible;padding:0;position:relative;width:var(--mat-slide-toggle-track-width, 52px)}.mdc-switch.mdc-switch--disabled{cursor:default;pointer-events:none}.mdc-switch.mat-mdc-slide-toggle-disabled-interactive{pointer-events:auto}.mdc-switch__track{overflow:hidden;position:relative;width:100%;height:var(--mat-slide-toggle-track-height, 32px);border-radius:var(--mat-slide-toggle-track-shape, var(--mat-sys-corner-full))}.mdc-switch--disabled.mdc-switch .mdc-switch__track{opacity:var(--mat-slide-toggle-disabled-track-opacity, 0.12)}.mdc-switch__track::before,.mdc-switch__track::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";height:100%;left:0;position:absolute;width:100%;border-width:var(--mat-slide-toggle-track-outline-width, 2px);border-color:var(--mat-slide-toggle-track-outline-color, var(--mat-sys-outline))}.mdc-switch--selected .mdc-switch__track::before,.mdc-switch--selected .mdc-switch__track::after{border-width:var(--mat-slide-toggle-selected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-selected-track-outline-color, transparent)}.mdc-switch--disabled .mdc-switch__track::before,.mdc-switch--disabled .mdc-switch__track::after{border-width:var(--mat-slide-toggle-disabled-unselected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-disabled-unselected-track-outline-color, var(--mat-sys-on-surface))}@media(forced-colors: active){.mdc-switch__track{border-color:currentColor}}.mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0);background:var(--mat-slide-toggle-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch--selected .mdc-switch__track::before{transform:translateX(-100%)}.mdc-switch--selected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-hover-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-focus-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:active .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-pressed-track-color, var(--mat-sys-surface-variant))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::before,.mdc-switch.mdc-switch--disabled .mdc-switch__track::before{background:var(--mat-slide-toggle-disabled-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch__track::after{transform:translateX(-100%);background:var(--mat-slide-toggle-selected-track-color, var(--mat-sys-primary))}[dir=rtl] .mdc-switch__track::after{transform:translateX(100%)}.mdc-switch--selected .mdc-switch__track::after{transform:translateX(0)}.mdc-switch--selected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-hover-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-focus-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:active .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-pressed-track-color, var(--mat-sys-primary))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::after,.mdc-switch.mdc-switch--disabled .mdc-switch__track::after{background:var(--mat-slide-toggle-disabled-selected-track-color, var(--mat-sys-on-surface))}.mdc-switch__handle-track{height:100%;pointer-events:none;position:absolute;top:0;transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);left:0;right:auto;transform:translateX(0);width:calc(100% - var(--mat-slide-toggle-handle-width))}[dir=rtl] .mdc-switch__handle-track{left:auto;right:0}.mdc-switch--selected .mdc-switch__handle-track{transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__handle-track{transform:translateX(-100%)}.mdc-switch__handle{display:flex;pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);left:0;right:auto;transition:width 75ms cubic-bezier(0.4, 0, 0.2, 1),height 75ms cubic-bezier(0.4, 0, 0.2, 1),margin 75ms cubic-bezier(0.4, 0, 0.2, 1);width:var(--mat-slide-toggle-handle-width);height:var(--mat-slide-toggle-handle-height);border-radius:var(--mat-slide-toggle-handle-shape, var(--mat-sys-corner-full))}[dir=rtl] .mdc-switch__handle{left:auto;right:0}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle{width:var(--mat-slide-toggle-unselected-handle-size, 16px);height:var(--mat-slide-toggle-unselected-handle-size, 16px);margin:var(--mat-slide-toggle-unselected-handle-horizontal-margin, 0 8px)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-unselected-with-icon-handle-horizontal-margin, 0 4px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle{width:var(--mat-slide-toggle-selected-handle-size, 24px);height:var(--mat-slide-toggle-selected-handle-size, 24px);margin:var(--mat-slide-toggle-selected-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-selected-with-icon-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch__handle:has(.mdc-switch__icons){width:var(--mat-slide-toggle-with-icon-handle-size, 24px);height:var(--mat-slide-toggle-with-icon-handle-size, 24px)}.mat-mdc-slide-toggle .mdc-switch:active:not(.mdc-switch--disabled) .mdc-switch__handle{width:var(--mat-slide-toggle-pressed-handle-size, 28px);height:var(--mat-slide-toggle-pressed-handle-size, 28px)}.mat-mdc-slide-toggle .mdc-switch--selected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-selected-pressed-handle-horizontal-margin, 0 22px)}.mat-mdc-slide-toggle .mdc-switch--unselected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-unselected-pressed-handle-horizontal-margin, 0 2px)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-selected-handle-opacity, 1)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-unselected-handle-opacity, 0.38)}.mdc-switch__handle::before,.mdc-switch__handle::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";width:100%;height:100%;left:0;position:absolute;top:0;transition:background-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1),border-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);z-index:-1}@media(forced-colors: active){.mdc-switch__handle::before,.mdc-switch__handle::after{border-color:currentColor}}.mdc-switch--selected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-handle-color, var(--mat-sys-on-primary))}.mdc-switch--selected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-hover-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-focus-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-pressed-handle-color, var(--mat-sys-primary-container))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:hover:not(:focus):not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:focus:not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:active .mdc-switch__handle::after,.mdc-switch--selected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-selected-handle-color, var(--mat-sys-surface))}.mdc-switch--unselected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-handle-color, var(--mat-sys-outline))}.mdc-switch--unselected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-hover-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-focus-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-pressed-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-unselected-handle-color, var(--mat-sys-on-surface))}.mdc-switch__handle::before{background:var(--mat-slide-toggle-handle-surface-color)}.mdc-switch__shadow{border-radius:inherit;bottom:0;left:0;position:absolute;right:0;top:0}.mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-handle-elevation-shadow)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__shadow,.mdc-switch.mdc-switch--disabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-disabled-handle-elevation-shadow)}.mdc-switch__ripple{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);z-index:-1;width:var(--mat-slide-toggle-state-layer-size, 40px);height:var(--mat-slide-toggle-state-layer-size, 40px)}.mdc-switch__ripple::after{content:"";opacity:0}.mdc-switch--disabled .mdc-switch__ripple::after{display:none}.mat-mdc-slide-toggle-disabled-interactive .mdc-switch__ripple::after{display:block}.mdc-switch:hover .mdc-switch__ripple::after{transition:75ms opacity cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:focus .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:active .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:hover:not(:focus) .mdc-switch__ripple::after,.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-hover-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-focus-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--unselected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-pressed-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-hover-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--selected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-focus-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--selected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-pressed-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch__icons{position:relative;height:100%;width:100%;z-index:1;transform:translateZ(0)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-unselected-icon-opacity, 0.38)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-selected-icon-opacity, 0.38)}.mdc-switch__icon{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;opacity:0;transition:opacity 30ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-switch--unselected .mdc-switch__icon{width:var(--mat-slide-toggle-unselected-icon-size, 16px);height:var(--mat-slide-toggle-unselected-icon-size, 16px);fill:var(--mat-slide-toggle-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__icon{width:var(--mat-slide-toggle-selected-icon-size, 16px);height:var(--mat-slide-toggle-selected-icon-size, 16px);fill:var(--mat-slide-toggle-selected-icon-color, var(--mat-sys-on-primary-container))}.mdc-switch--selected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-selected-icon-color, var(--mat-sys-on-surface))}.mdc-switch--selected .mdc-switch__icon--on,.mdc-switch--unselected .mdc-switch__icon--off{opacity:1;transition:opacity 45ms 30ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle{-webkit-user-select:none;user-select:none;display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple,.mat-mdc-slide-toggle .mdc-switch__ripple::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple:not(:empty),.mat-mdc-slide-toggle .mdc-switch__ripple::after:not(:empty){transform:translateZ(0)}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mat-focus-indicator::before{content:""}.mat-mdc-slide-toggle .mat-internal-form-field{color:var(--mat-slide-toggle-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-slide-toggle-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-slide-toggle-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-slide-toggle-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-slide-toggle-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-slide-toggle-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-slide-toggle .mat-ripple-element{opacity:.12}.mat-mdc-slide-toggle .mat-focus-indicator::before{border-radius:50%}.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle-track,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__icon,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::after,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::after{transition:none}.mat-mdc-slide-toggle .mdc-switch:enabled+.mdc-label{cursor:pointer}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:var(--mat-slide-toggle-disabled-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-slide-toggle label:empty{display:none}.mat-mdc-slide-toggle-touch-target{position:absolute;top:50%;left:50%;height:var(--mat-slide-toggle-touch-target-size, 48px);width:100%;transform:translate(-50%, -50%);display:var(--mat-slide-toggle-touch-target-display, block)}[dir=rtl] .mat-mdc-slide-toggle-touch-target{left:auto;right:50%;transform:translate(50%, -50%)}\n'],encapsulation:2,changeDetection:0})}return t})(),vTe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[d6,ii]})}return t})();function yTe(t,n){1&t&&(p(0),b(1,"translate"),h(2,"mat-icon",5),b(3,"translate"),p(4,"help"),u()),2&t&&(E(" ",y(1,3,"common.yes")," "),d(2),C("inline",!0)("matTooltip",y(3,5,"transports.persistent-transport-tooltip")))}function CTe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"common.no")," ")}function wTe(t,n){1&t&&(p(0),b(1,"number")),2&t&&E(" ",pe(1,1,v().data.latencyMs,"1.0-0")," ms ")}function xTe(t,n){1&t&&p(0," - ")}let STe=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.largeModalWidth,e.open(t,o)}constructor(e,i){this.data=e,this.dialogRef=i}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-transport-details"]],standalone:!1,decls:57,vars:50,consts:[[1,"info-dialog",3,"headline","dialog"],[1,"title","mt-0"],[3,"inline"],[1,"item"],[1,"title"],[1,"help-icon","d-none","d-md-inline",3,"inline","matTooltip"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),b(1,"translate"),h(2,"div")(3,"div",1)(4,"mat-icon",2),p(5,"list"),u(),p(6),b(7,"translate"),u(),h(8,"div",3)(9,"span"),p(10),b(11,"translate"),u(),x(12,yTe,5,7),x(13,CTe,2,3),u(),h(14,"div",3)(15,"span"),p(16),b(17,"translate"),u(),p(18),u(),h(19,"div",3)(20,"span"),p(21),b(22,"translate"),u(),p(23),u(),h(24,"div",3)(25,"span"),p(26),b(27,"translate"),u(),p(28),u(),h(29,"div",3)(30,"span"),p(31),b(32,"translate"),u(),p(33),u(),h(34,"div",4)(35,"mat-icon",2),p(36,"import_export"),u(),p(37),b(38,"translate"),u(),h(39,"div",3)(40,"span"),p(41),b(42,"translate"),u(),p(43),b(44,"autoScale"),u(),h(45,"div",3)(46,"span"),p(47),b(48,"translate"),u(),p(49),b(50,"autoScale"),u(),h(51,"div",3)(52,"span"),p(53),b(54,"translate"),u(),x(55,wTe,2,4),x(56,xTe,1,0),u()()()),2&i&&(C("headline",y(1,24,"transports.details.title"))("dialog",o.dialogRef),d(4),C("inline",!0),d(2),E("",y(7,26,"transports.details.basic.title")," "),d(4),M(y(11,28,"transports.details.basic.persistent")),d(2),S(o.data.isPersistent?12:-1),d(),S(o.data.isPersistent?-1:13),d(3),M(y(17,30,"transports.details.basic.id")),d(2),E(" ",o.data.id," "),d(3),M(y(22,32,"transports.details.basic.local-pk")),d(2),E(" ",o.data.localPk," "),d(3),M(y(27,34,"transports.details.basic.remote-pk")),d(2),E(" ",o.data.remotePk," "),d(3),M(y(32,36,"transports.details.basic.type")),d(2),E(" ",o.data.type," "),d(2),C("inline",!0),d(2),E("",y(38,38,"transports.details.data.title")," "),d(4),M(y(42,40,"transports.details.data.uploaded")),d(2),E(" ",y(44,42,o.data.sent)," "),d(4),M(y(48,44,"transports.details.data.downloaded")),d(2),E(" ",y(50,46,o.data.recv)," "),d(4),M(y(54,48,"transports.latency")),d(2),S(o.data.latencyMs&&o.data.latencyMs>0?55:-1),d(),S(o.data.latencyMs&&0!==o.data.latencyMs?-1:56))},dependencies:[We,Kt,gn,Vl,xe,rp],styles:[".help-icon[_ngcontent-%COMP%]{opacity:.5;font-size:14px;cursor:default}"]})}}return t})();const kTe=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),DTe=t=>({"d-lg-none d-xl-table":t}),MTe=t=>({"d-lg-table d-xl-none":t}),u6=t=>({offline:t});function TTe(t,n){1&t&&(h(0,"span",3),p(1),b(2,"translate"),h(3,"mat-icon",14),b(4,"translate"),p(5,"help"),u()()),2&t&&(d(),E(" ",y(2,3,"transports.title")," "),d(2),C("inline",!0)("matTooltip",y(4,5,"transports.info")))}function ETe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().$implicit.translatableValue)," ")}function PTe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.value," ")}function ITe(t,n){if(1&t&&(h(0,"div",16)(1,"span"),p(2),b(3,"translate"),u(),x(4,ETe,2,3),x(5,PTe,1,1),u()),2&t){const e=n.$implicit;d(2),E("",y(3,3,e.filterName),": "),d(2),S(e.translatableValue?4:-1),d(),S(e.value?5:-1)}}function OTe(t,n){if(1&t){const e=oe();h(0,"div",15),F("click",function(){return j(e),U(v().dataFilterer.removeFilters())}),ve(1,ITe,6,5,"div",16,Fe),h(3,"div",17),p(4),b(5,"translate"),u()()}if(2&t){const e=v();d(),ye(e.dataFilterer.currentFiltersTexts),d(3),M(y(5,1,"filters.press-to-remove"))}}function ATe(t,n){if(1&t){const e=oe();h(0,"mat-icon",18),F("click",function(){return j(e),U(v().dataFilterer.changeFilters())}),p(1,"filter_list"),u()}2&t&&C("inline",!0)}function RTe(t,n){if(1&t&&(h(0,"mat-icon",9),p(1,"more_horiz"),u()),2&t){v();const e=Hn(12);C("inline",!0)("matMenuTriggerFor",e)}}function FTe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"transports.dialog.errors.remote-key-length-error")," ")}function NTe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"transports.dialog.errors.remote-key-chars-error")," ")}function LTe(t,n){if(1&t&&(h(0,"mat-option",32),p(1),u()),2&t){const e=n.$implicit;C("value",e),d(),M(e)}}function BTe(t,n){1&t&&ve(0,LTe,2,2,"mat-option",32,Fe),2&t&&ye(v(2).addAvailableTypes)}function VTe(t,n){if(1&t){const e=oe();h(0,"div",13)(1,"div",19)(2,"form",20),F("ngSubmit",function(){return j(e),U(v().submitAddForm())}),h(3,"div",21)(4,"mat-form-field",22)(5,"mat-label"),p(6),b(7,"translate"),u(),B(8,"input",23),h(9,"mat-error"),x(10,FTe,2,3)(11,NTe,2,3),u()(),h(12,"mat-form-field",24)(13,"mat-label"),p(14),b(15,"translate"),u(),B(16,"input",25),u(),h(17,"mat-form-field",26)(18,"mat-label"),p(19),b(20,"translate"),u(),h(21,"mat-select",27),x(22,BTe,2,0),u()()(),h(23,"div",21)(24,"mat-checkbox",28),F("change",function(o){return j(e),U(v().setAddPersistent(o))}),p(25),b(26,"translate"),h(27,"mat-icon",29),b(28,"translate"),p(29,"help"),u()(),h(30,"button",30)(31,"mat-icon"),p(32,"add"),u(),p(33),b(34,"translate"),u(),h(35,"button",31),F("click",function(){return j(e),U(v().cancelAddForm())}),p(36),b(37,"translate"),u()()()()()}if(2&t){const e=v();d(2),C("formGroup",e.addForm),d(4),M(y(7,14,"transports.dialog.remote-key")),d(4),S(e.addForm.get("remoteKey").hasError("pattern")?11:10),d(4),M(y(15,16,"transports.dialog.label")),d(5),M(y(20,18,"transports.dialog.transport-type")),d(3),S(e.addAvailableTypes?22:-1),d(2),C("checked",e.addingPersistent),d(),E(" ",y(26,20,"transports.dialog.make-persistent")," "),d(2),C("inline",!0)("matTooltip",y(28,22,"transports.dialog.persistent-tooltip")),d(3),C("disabled",!e.addForm.valid||e.addBusy),d(3),E(" ",y(34,24,"transports.create")," "),d(2),C("disabled",e.addBusy),d(),E(" ",y(37,26,"common.cancel")," ")}}function HTe(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function jTe(t,n){1&t&&p(0," * ")}function UTe(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u(),x(2,jTe,1,0)),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow),d(),S(e.dataSorter.currentlySortingByLabel?2:-1)}}function zTe(t,n){1&t&&p(0," * ")}function $Te(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u(),x(2,zTe,1,0)),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow),d(),S(e.dataSorter.currentlySortingByLabel?2:-1)}}function WTe(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function GTe(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function qTe(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function KTe(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function YTe(t,n){if(1&t){const e=oe();h(0,"button",51),b(1,"translate"),F("click",function(){j(e);const o=v().$implicit;return U(v(2).changeIfPersistent([o],!1))}),h(2,"mat-icon",52),p(3,"star"),u()()}2&t&&(C("matTooltip",y(1,2,"transports.persistent-transport-button-tooltip")),d(2),C("inline",!0))}function XTe(t,n){if(1&t){const e=oe();h(0,"button",51),b(1,"translate"),F("click",function(){j(e);const o=v().$implicit;return U(v(2).changeIfPersistent([o],!0))}),h(2,"mat-icon",53),p(3,"star_outline"),u()()}2&t&&(C("matTooltip",y(1,2,"transports.non-persistent-transport-button-tooltip")),d(2),C("inline",!0))}function ZTe(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"transports.offline")))}function QTe(t,n){if(1&t){const e=oe();h(0,"td")(1,"app-labeled-element-text",54),F("labelEdited",function(){return j(e),U(v(3).refreshData())}),u(),x(2,ZTe,3,3,"span"),u()}if(2&t){const e=v().$implicit,i=v(2);d(),C("id",Qt(e.id))("elementType",i.labeledElementTypes.Transport),d(),S(e.notFound?2:-1)}}function JTe(t,n){1&t&&(h(0,"td"),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"transports.offline")," "))}function e2e(t,n){if(1&t&&(h(0,"td"),p(1),b(2,"autoScale"),u()),2&t){const e=v().$implicit;d(),E(" ",y(2,1,e.sent)," ")}}function t2e(t,n){if(1&t&&(h(0,"td"),p(1),b(2,"autoScale"),u()),2&t){const e=v().$implicit;d(),E(" ",y(2,1,e.recv)," ")}}function n2e(t,n){1&t&&(h(0,"td"),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"transports.offline")," "))}function i2e(t,n){1&t&&(h(0,"td"),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"transports.offline")," "))}function o2e(t,n){1&t&&(p(0),b(1,"number")),2&t&&E(" ",pe(1,1,v(2).$implicit.latencyMs,"1.0-0")," ms ")}function r2e(t,n){1&t&&(h(0,"span",17),p(1,"-"),u())}function s2e(t,n){if(1&t&&(h(0,"td"),x(1,o2e,2,4),x(2,r2e,2,0,"span",17),u()),2&t){const e=v().$implicit;d(),S(e.latencyMs&&e.latencyMs>0?1:-1),d(),S(e.latencyMs&&0!==e.latencyMs?-1:2)}}function a2e(t,n){1&t&&(h(0,"td"),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"transports.offline")," "))}function l2e(t,n){if(1&t){const e=oe();h(0,"button",55),b(1,"translate"),F("click",function(){j(e);const o=v().$implicit;return U(v(2).details(o))}),h(2,"mat-icon",37),p(3,"visibility"),u()()}2&t&&(C("matTooltip",y(1,2,"transports.details.title")),d(2),C("inline",!0))}function c2e(t,n){if(1&t){const e=oe();h(0,"button",55),b(1,"translate"),F("click",function(){j(e);const o=v().$implicit;return U(v(2).delete(o))}),h(2,"mat-icon",37),p(3,"close"),u()()}2&t&&(C("matTooltip",y(1,2,"transports.delete")),d(2),C("inline",!0))}function d2e(t,n){if(1&t){const e=oe();h(0,"tr",40)(1,"td",46)(2,"mat-checkbox",47),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(3,"td"),x(4,YTe,4,4,"button",48),x(5,XTe,4,4,"button",48),u(),x(6,QTe,3,4,"td"),x(7,JTe,3,3,"td"),h(8,"td")(9,"app-labeled-element-text",49),F("labelEdited",function(){return j(e),U(v(2).refreshData())}),u()(),h(10,"td"),p(11),u(),x(12,e2e,3,3,"td"),x(13,t2e,3,3,"td"),x(14,n2e,3,3,"td"),x(15,i2e,3,3,"td"),x(16,s2e,3,2,"td"),x(17,a2e,3,3,"td"),h(18,"td",39),x(19,l2e,4,4,"button",50),x(20,c2e,4,4,"button",50),u()()}if(2&t){const e=n.$implicit,i=v(2);C("ngClass",se(17,u6,e.notFound)),d(2),C("checked",i.selections.get(e.id)),d(2),S(e.isPersistent?4:-1),d(),S(e.isPersistent?-1:5),d(),S(e.notFound?-1:6),d(),S(e.notFound?7:-1),d(2),C("id",Qt(e.remotePk)),d(2),E(" ",e.type," "),d(),S(e.notFound?-1:12),d(),S(e.notFound?-1:13),d(),S(e.notFound?14:-1),d(),S(e.notFound?15:-1),d(),S(e.notFound?-1:16),d(),S(e.notFound?17:-1),d(2),S(e.notFound?-1:19),d(),S(e.notFound?-1:20)}}function u2e(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.label")," ")}function h2e(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.inverted-order")," ")}function f2e(t,n){1&t&&(h(0,"div",58)(1,"div",58)(2,"mat-icon",63),p(3,"star"),u(),p(4,"\xa0 "),h(5,"span",64),p(6),b(7,"translate"),u()()()),2&t&&(d(2),C("inline",!0),d(4),M(y(7,2,"transports.persistent")))}function p2e(t,n){if(1&t){const e=oe();h(0,"app-labeled-element-text",54),F("labelEdited",function(){return j(e),U(v(3).refreshData())}),u()}if(2&t){const e=v().$implicit,i=v(2);C("id",Qt(e.id))("elementType",i.labeledElementTypes.Transport)}}function m2e(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"transports.offline")," ")}function g2e(t,n){1&t&&(p(0),b(1,"autoScale")),2&t&&E(" ",y(1,1,v().$implicit.sent)," ")}function _2e(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"transports.offline")," ")}function b2e(t,n){1&t&&(p(0),b(1,"autoScale")),2&t&&E(" ",y(1,1,v().$implicit.recv)," ")}function v2e(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"transports.offline")," ")}function y2e(t,n){1&t&&(p(0),b(1,"number")),2&t&&E(" ",pe(1,1,v(2).$implicit.latencyMs,"1.0-0")," ms ")}function C2e(t,n){1&t&&p(0," - ")}function w2e(t,n){if(1&t&&(x(0,y2e,2,4),x(1,C2e,1,0)),2&t){const e=v().$implicit;S(e.latencyMs&&e.latencyMs>0?0:-1),d(),S(e.latencyMs&&0!==e.latencyMs?-1:1)}}function x2e(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"transports.offline")," ")}function S2e(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td")(2,"div",56)(3,"div",57)(4,"mat-checkbox",47),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(5,"div",44),x(6,f2e,8,4,"div",58),h(7,"div",59)(8,"span",2),p(9),b(10,"translate"),u(),p(11,": "),x(12,p2e,1,3,"app-labeled-element-text",60),x(13,m2e,2,3),u(),h(14,"div",59)(15,"span",2),p(16),b(17,"translate"),u(),p(18,": "),h(19,"app-labeled-element-text",49),F("labelEdited",function(){return j(e),U(v(2).refreshData())}),u()(),h(20,"div",58)(21,"span",2),p(22),b(23,"translate"),u(),p(24),u(),h(25,"div",58)(26,"span",2),p(27),b(28,"translate"),u(),p(29,": "),x(30,g2e,2,3),x(31,_2e,2,3),u(),h(32,"div",58)(33,"span",2),p(34),b(35,"translate"),u(),p(36,": "),x(37,b2e,2,3),x(38,v2e,2,3),u(),h(39,"div",58)(40,"span",2),p(41),b(42,"translate"),u(),p(43,": "),x(44,w2e,2,2),x(45,x2e,2,3),u()(),B(46,"div",61),h(47,"div",45)(48,"button",62),b(49,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(2);return o.stopPropagation(),U(s.showOptionsDialog(r))}),h(50,"mat-icon"),p(51),u()()()()()()}if(2&t){const e=n.$implicit,i=v(2);d(2),C("ngClass",se(36,u6,e.notFound)),d(2),C("checked",i.selections.get(e.id)),d(2),S(e.isPersistent?6:-1),d(3),M(y(10,22,"transports.id")),d(3),S(e.notFound?-1:12),d(),S(e.notFound?13:-1),d(3),M(y(17,24,"transports.remote-node")),d(3),C("id",Qt(e.remotePk)),d(3),M(y(23,26,"transports.type")),d(2),E(": ",e.type," "),d(3),M(y(28,28,"common.uploaded")),d(3),S(e.notFound?-1:30),d(),S(e.notFound?31:-1),d(3),M(y(35,30,"common.downloaded")),d(3),S(e.notFound?-1:37),d(),S(e.notFound?38:-1),d(3),M(y(42,32,"transports.latency")),d(3),S(e.notFound?-1:44),d(),S(e.notFound?45:-1),d(3),C("matTooltip",y(49,34,"common.options")),d(3),M("add")}}function k2e(t,n){if(1&t){const e=oe();h(0,"div",13)(1,"div",33)(2,"table",34)(3,"tr"),B(4,"th"),h(5,"th",35),b(6,"translate"),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.persistentSortData))}),h(7,"mat-icon",36),p(8,"star_outline"),u(),x(9,HTe,2,2,"mat-icon",37),u(),h(10,"th",38),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.idSortData))}),p(11),b(12,"translate"),x(13,UTe,3,3),u(),h(14,"th",38),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.remotePkSortData))}),p(15),b(16,"translate"),x(17,$Te,3,3),u(),h(18,"th",38),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.typeSortData))}),p(19),b(20,"translate"),x(21,WTe,2,2,"mat-icon",37),u(),h(22,"th",38),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.uploadedSortData))}),p(23),b(24,"translate"),x(25,GTe,2,2,"mat-icon",37),u(),h(26,"th",38),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.downloadedSortData))}),p(27),b(28,"translate"),x(29,qTe,2,2,"mat-icon",37),u(),h(30,"th",38),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.latencySortData))}),p(31),b(32,"translate"),x(33,KTe,2,2,"mat-icon",37),u(),B(34,"th",39),u(),ve(35,d2e,21,19,"tr",40,Fe),u(),h(37,"table",41)(38,"tr",42),F("click",function(){return j(e),U(v().dataSorter.openSortingOrderModal())}),h(39,"td")(40,"div",43)(41,"div",44)(42,"div",2),p(43),b(44,"translate"),u(),h(45,"div"),p(46),b(47,"translate"),x(48,u2e,2,3),x(49,h2e,2,3),u()(),h(50,"div",45)(51,"mat-icon",37),p(52,"keyboard_arrow_down"),u()()()()(),ve(53,S2e,52,38,"tr",null,Fe),u()()()}if(2&t){const e=v();d(),C("ngClass",_t(40,kTe,e.showShortList_,!e.showShortList_)),d(),C("ngClass",se(43,DTe,e.showShortList_)),d(3),C("matTooltip",y(6,22,"transports.persistent-tooltip")),d(4),S(e.dataSorter.currentSortingColumn===e.persistentSortData?9:-1),d(2),E(" ",y(12,24,"transports.id")," "),d(2),S(e.dataSorter.currentSortingColumn===e.idSortData?13:-1),d(2),E(" ",y(16,26,"transports.remote-node")," "),d(2),S(e.dataSorter.currentSortingColumn===e.remotePkSortData?17:-1),d(2),E(" ",y(20,28,"transports.type")," "),d(2),S(e.dataSorter.currentSortingColumn===e.typeSortData?21:-1),d(2),E(" ",y(24,30,"common.uploaded")," "),d(2),S(e.dataSorter.currentSortingColumn===e.uploadedSortData?25:-1),d(2),E(" ",y(28,32,"common.downloaded")," "),d(2),S(e.dataSorter.currentSortingColumn===e.downloadedSortData?29:-1),d(2),E(" ",y(32,34,"transports.latency")," "),d(2),S(e.dataSorter.currentSortingColumn===e.latencySortData?33:-1),d(2),ye(e.dataSource),d(2),C("ngClass",se(45,MTe,e.showShortList_)),d(6),M(y(44,36,"tables.sorting-title")),d(3),E("",y(47,38,e.dataSorter.currentSortingColumn.label)," "),d(2),S(e.dataSorter.currentlySortingByLabel?48:-1),d(),S(e.dataSorter.sortingInReverseOrder?49:-1),d(2),C("inline",!0),d(2),ye(e.dataSource)}}function D2e(t,n){1&t&&(h(0,"span",67),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"transports.empty")))}function M2e(t,n){1&t&&(h(0,"span",67),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"transports.empty-with-filter")))}function T2e(t,n){if(1&t&&(h(0,"div",13)(1,"div",65)(2,"mat-icon",66),p(3,"warning"),u(),x(4,D2e,3,3,"span",67),x(5,M2e,3,3,"span",67),u()()),2&t){const e=v();d(2),C("inline",!0),d(2),S(0===e.allTransports.length?4:-1),d(),S(0!==e.allTransports.length?5:-1)}}let E2e=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter.setData(this.filteredTransports)}set node(e){const i=performance.now();console.log("[HV-DIAG] transport-list setter called, transports:",e.transports?.length,"persistentTransports:",e.persistentTransports?.length);const o=e.transports.map(s=>s.id).sort().join(",");if(o===this.lastTransportIds&&e.transports.length===this.lastTransportCount)return this.allTransports&&(e.transports.forEach(s=>{const a=this.allTransports.find(l=>l.id===s.id);a&&(a.sent=s.sent,a.recv=s.recv)}),this.cdr.markForCheck()),void console.log("[HV-DIAG] transport-list stats-only update took",(performance.now()-i).toFixed(1),"ms");console.log("[HV-DIAG] transport-list FULL reprocessing",e.transports.length,"transports"),this.lastTransportCount=e.transports.length,this.lastTransportIds=o,this.currentNode=e,this.allTransports=e.transports,this.nodePK=e.localPk;const r=new Map;e.persistentTransports.forEach(s=>r.set(this.getPersistentTransportID(s.pk,s.type),s)),this.allTransports.forEach(s=>{r.has(this.getPersistentTransportID(s.remotePk,s.type))?(s.isPersistent=!0,r.delete(this.getPersistentTransportID(s.remotePk,s.type))):s.isPersistent=!1}),r.forEach((s,a)=>{this.allTransports.push({id:this.getPersistentTransportID(s.pk,s.type),localPk:e.localPk,remotePk:s.pk,type:s.type,recv:0,sent:0,isPersistent:!0,notFound:!0})}),this.allTransports.forEach(s=>{s.id_label=kc.getCompleteLabel(this.storageService,this.translateService,s.id),s.remote_pk_label=kc.getCompleteLabel(this.storageService,this.translateService,s.remotePk)}),this.dataFilterer.setData(this.allTransports),this.cdr.markForCheck()}constructor(e,i,o,r,s,a,l,c,f,m){this.dialog=e,this.transportService=i,this.route=o,this.router=r,this.snackbarService=s,this.translateService=a,this.storageService=l,this.nodeService=c,this.cdr=f,this.formBuilder=m,this.listId="tr",this.persistentSortData=new Dt(["isPersistent"],"transports.persistent",st.Boolean),this.idSortData=new Dt(["id"],"transports.id",st.Text,["id_label"]),this.remotePkSortData=new Dt(["remotePk"],"transports.remote-node",st.Text,["remote_pk_label"]),this.typeSortData=new Dt(["type"],"transports.type",st.Text),this.uploadedSortData=new Dt(["sent"],"common.uploaded",st.NumberReversed),this.downloadedSortData=new Dt(["recv"],"common.downloaded",st.NumberReversed),this.latencySortData=new Dt(["latencyMs"],"transports.latency",st.Number),this.selections=new Map,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.lastTransportCount=-1,this.lastTransportIds="",this.filterProperties=[{filterName:"transports.filter-dialog.persistent",keyNameInElementsArray:"isPersistent",type:Sn.Select,printableLabelsForValues:[{value:"",label:"transports.filter-dialog.persistent-options.any"},{value:"true",label:"transports.filter-dialog.persistent-options.persistent"},{value:"false",label:"transports.filter-dialog.persistent-options.non-persistent"}]},{filterName:"transports.filter-dialog.id",keyNameInElementsArray:"id",secondaryKeyNameInElementsArray:"id_label",type:Sn.TextInput,maxlength:36},{filterName:"transports.filter-dialog.remote-node",keyNameInElementsArray:"remotePk",secondaryKeyNameInElementsArray:"remote_pk_label",type:Sn.TextInput,maxlength:66}],this.labeledElementTypes=ro,this.showAddForm=!1,this.addingPersistent=!1,this.addAvailableTypes=null,this.addBusy=!1,this.operationSubscriptionsGroup=[],this.addForm=this.formBuilder.group({remoteKey:["",Ne.compose([Ne.required,Ne.minLength(66),Ne.maxLength(66),Ne.pattern("^[0-9a-fA-F]+$")])],label:[""],type:["",Ne.required]}),this.dataSorter=new gu(this.dialog,this.translateService,this.storageService,[this.persistentSortData,this.idSortData,this.remotePkSortData,this.typeSortData,this.uploadedSortData,this.downloadedSortData,this.latencySortData],1,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new _u(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(_=>{this.filteredTransports=_,this.dataSorter.setData(this.filteredTransports)}),this.navigationsSubscription=this.route.paramMap.subscribe(_=>{if(_.has("page")){let w=Number.parseInt(_.get("page"),10);(isNaN(w)||w<1)&&(w=1),this.currentPageInUrl=w,this.recalculateElementsToShow()}}),this.languageSubscription=this.translateService.onLangChange.subscribe(()=>{this.node=this.currentNode})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.languageSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose(),this.persistentTransportSubscription&&this.persistentTransportSubscription.unsubscribe(),this.addOperationSubscription&&this.addOperationSubscription.unsubscribe(),this.addTypesSubscription&&this.addTypesSubscription.unsubscribe()}changeSelection(e){this.selections.get(e.id)?this.selections.set(e.id,!1):this.selections.set(e.id,!0)}hasSelectedElements(){if(!this.selections)return!1;let e=!1;return this.selections.forEach(i=>{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}deleteSelected(){const e=[];this.selections.forEach((i,o)=>{i&&e.push(o)}),0!==e.length&&this.deleteRecursively(e,null)}toggleAddForm(){this.showAddForm=!this.showAddForm,this.showAddForm&&null===this.addAvailableTypes&&this.loadAddTypes(),this.showAddForm||this.resetAddForm()}cancelAddForm(){this.showAddForm=!1,this.resetAddForm()}setAddPersistent(e){this.addingPersistent=!!e.checked}submitAddForm(){if(!this.addForm.valid||this.addBusy)return;const e=this.addForm.get("remoteKey").value,i=this.addForm.get("type").value,o=this.addForm.get("label").value;this.addBusy=!0,this.addingPersistent?this.addOperationSubscription=this.transportService.getPersistentTransports(ke.getCurrentNodeKey()).subscribe(r=>{const s=r||[];s.some(l=>l.pk.toUpperCase()===e.toUpperCase()&&l.type.toUpperCase()===i.toUpperCase())?this.doCreateTransport(e,i,o,!0):(s.push({pk:e,type:i}),this.addOperationSubscription=this.transportService.savePersistentTransportsData(ke.getCurrentNodeKey(),s).subscribe(()=>{this.doCreateTransport(e,i,o,!0)},l=>this.onAddError(l)))},r=>this.onAddError(r)):this.doCreateTransport(e,i,o,!1)}doCreateTransport(e,i,o,r){this.addOperationSubscription=this.transportService.create(ke.getCurrentNodeKey(),e,i).subscribe(s=>{let a=!1;o&&(s&&s.id?this.storageService.saveLabel(s.id,o,ro.Transport):a=!0),this.addBusy=!1,this.cancelAddForm(),ke.refreshCurrentDisplayedData(),a?this.snackbarService.showWarning("transports.dialog.success-without-label"):this.snackbarService.showDone("transports.dialog.success")},s=>{r?(this.addBusy=!1,this.cancelAddForm(),ke.refreshCurrentDisplayedData(),this.snackbarService.showWarning("transports.dialog.only-persistent-created")):this.onAddError(s)})}onAddError(e){this.addBusy=!1,e=Qe(e),this.snackbarService.showError(e)}resetAddForm(){this.addForm.reset({remoteKey:"",label:"",type:this.addAvailableTypes&&this.addAvailableTypes[0]||""}),this.addingPersistent=!1,this.addBusy=!1}loadAddTypes(){this.addTypesSubscription=ae(1).pipe(li(0),It(()=>this.transportService.types(ke.getCurrentNodeKey()))).subscribe(e=>{e.sort((o,r)=>"stcp"===o.toLowerCase()?1:"stcp"===r.toLowerCase()?-1:o.localeCompare(r));let i=e.findIndex(o=>"dmsg"===o.toLowerCase());i=-1!==i?i:0,this.addAvailableTypes=e,this.addForm.get("type").setValue(e[i]||""),this.cdr.markForCheck()},e=>{e=Qe(e),this.snackbarService.showError(e),this.addAvailableTypes=[],this.cdr.markForCheck()})}showOptionsDialog(e){const i=[];i.push(e.isPersistent?{icon:"star_outline",label:"transports.make-non-persistent"}:{icon:"star",label:"transports.make-persistent"}),e.notFound||(i.push({icon:"visibility",label:"transports.details.title"}),i.push({icon:"close",label:"transports.delete"})),ao.openDialog(this.dialog,i,"common.options").afterClosed().subscribe(o=>{1===o?this.changeIfPersistent([e],!e.isPersistent):2===o?this.details(e):3===o&&this.delete(e)})}changeIfPersistentOfSelected(e){const i=[];this.allTransports.forEach(o=>{this.selections.has(o.id)&&this.selections.get(o.id)&&i.push(o)}),this.changeIfPersistent(i,e)}changeIfPersistent(e,i){e.length<1||(this.persistentTransportSubscription=this.transportService.getPersistentTransports(this.nodePK).subscribe(o=>{const r=o||[];let s;const a=new Map;if(e.forEach(l=>a.set(this.getPersistentTransportID(l.remotePk,l.type),l)),i)r.forEach(l=>{a.has(this.getPersistentTransportID(l.pk,l.type))&&a.delete(this.getPersistentTransportID(l.pk,l.type))}),s=0===a.size,s||a.forEach(l=>r.push({pk:l.remotePk,type:l.type}));else{s=!0;for(let l=0;l{ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("transports.changes-made")},l=>{l=Qe(l),this.snackbarService.showError(l)})},o=>{o=Qe(o),this.snackbarService.showError(o)}))}details(e){STe.openDialog(this.dialog,e)}delete(e){this.operationSubscriptionsGroup.push(this.startDeleting(e.id).subscribe(()=>{ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("transports.deleted")},i=>{i=Qe(i),this.snackbarService.showError(i)}))}refreshData(){ke.refreshCurrentDisplayedData()}getPersistentTransportID(e,i){return e.toUpperCase()+i.toUpperCase()}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredTransports){this.numberOfPages=1,this.currentPage=1,this.transportsToShow=this.filteredTransports.slice();const e=new Map;this.transportsToShow.forEach(o=>{e.set(o.id,!0),this.selections.has(o.id)||this.selections.set(o.id,!1)});const i=[];this.selections.forEach((o,r)=>{e.has(r)||i.push(r)}),i.forEach(o=>{this.selections.delete(o)})}else this.transportsToShow=null,this.selections=new Map;this.dataSource=this.transportsToShow,this.cdr.markForCheck()}startDeleting(e){return this.transportService.delete(ke.getCurrentNodeKey(),e)}deleteRecursively(e,i){this.operationSubscriptionsGroup.push(this.startDeleting(e[e.length-1]).subscribe(()=>{e.pop(),0===e.length?(i&&i.close(),ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("transports.deleted")):this.deleteRecursively(e,i)},o=>{ke.refreshCurrentDisplayedData(),o=Qe(o),i?i.componentInstance.showDone("confirmation.error-header-text",o.translatableErrorMsg):this.snackbarService.showError(o)}))}static{this.\u0275fac=function(i){return new(i||t)(O(Ot),O(l6),O(Ai),O(vt),O(ct),O(Go),O(ti),O(Io),O(Jt),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-transport-list"]],inputs:{showShortList:"showShortList",node:"node"},standalone:!1,decls:31,vars:34,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[3,"click","inline","matTooltip"],[1,"small-icon",3,"inline"],[3,"inline","matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[1,"rounded-elevated-box","mt-3"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline"],[1,"box-internal-container","small-node-list-margins"],[1,"inline-add-transport",3,"ngSubmit","formGroup"],[1,"add-row"],["appearance","outline",1,"field-pk"],["matInput","","formControlName","remoteKey","maxlength","66","placeholder","02abc..."],["appearance","outline",1,"field-md"],["matInput","","formControlName","label","maxlength","66"],["appearance","outline",1,"field-sm"],["formControlName","type","panelClass","skynet-select-panel"],["color","primary",3,"change","checked"],[1,"help-icon",3,"inline","matTooltip"],["mat-raised-button","","color","primary","type","submit",3,"disabled"],["mat-button","","type","button",3,"click","disabled"],[3,"value"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column","small-column",3,"click","matTooltip"],[1,"persistent-icon","grey-text"],[3,"inline"],[1,"sortable-column",3,"click"],[1,"actions"],[3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[1,"selection-col"],[3,"change","checked"],["mat-button","",1,"action-button","subtle-transparent-button",3,"matTooltip"],[3,"labelEdited","id"],["mat-button","",1,"action-button","transparent-button",3,"matTooltip"],["mat-button","",1,"action-button","subtle-transparent-button",3,"click","matTooltip"],[1,"persistent-icon","default-cursor",3,"inline"],[1,"persistent-icon","grey-text",3,"inline"],[3,"labelEdited","id","elementType"],["mat-button","",1,"action-button","transparent-button",3,"click","matTooltip"],[1,"list-item-container",3,"ngClass"],[1,"check-part"],[1,"list-row"],[1,"list-row","long-content"],[3,"id","elementType"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"persistent-icon",3,"inline"],[1,"yellow-clear-text","title"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,TTe,6,7,"span",3),x(3,OTe,6,3,"div",4),u(),h(4,"div",5)(5,"div",6)(6,"mat-icon",7),b(7,"translate"),F("click",function(){return o.toggleAddForm()}),p(8),u(),x(9,ATe,2,1,"mat-icon",8),x(10,RTe,2,2,"mat-icon",9),h(11,"mat-menu",10,0)(13,"div",11),F("click",function(){return o.changeAllSelections(!0)}),p(14),b(15,"translate"),u(),h(16,"div",11),F("click",function(){return o.changeAllSelections(!1)}),p(17),b(18,"translate"),u(),h(19,"div",12),F("click",function(){return o.changeIfPersistentOfSelected(!0)}),p(20),b(21,"translate"),u(),h(22,"div",12),F("click",function(){return o.changeIfPersistentOfSelected(!1)}),p(23),b(24,"translate"),u(),h(25,"div",12),F("click",function(){return o.deleteSelected()}),p(26),b(27,"translate"),u()()()()(),x(28,VTe,38,28,"div",13),x(29,k2e,55,47,"div",13),x(30,T2e,6,3,"div",13)),2&i&&(d(2),S(o.showShortList_?2:-1),d(),S(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?3:-1),d(3),C("inline",!0)("matTooltip",y(7,22,o.showAddForm?"common.cancel":"transports.create")),d(2),M(o.showAddForm?"remove":"add"),d(),S(o.allTransports&&o.allTransports.length>0?9:-1),d(),S(o.dataSource&&o.dataSource.length>0?10:-1),d(),C("overlapTrigger",!1),d(3),E(" ",y(15,24,"selection.select-all")," "),d(3),E(" ",y(18,26,"selection.unselect-all")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(21,28,"transports.make-selected-persistent")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(24,30,"transports.make-selected-non-persistent")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(27,32,"selection.delete-all")," "),d(2),S(o.showAddForm?28:-1),d(),S(o.dataSource&&o.dataSource.length>0?29:-1),d(),S(o.dataSource&&0!==o.dataSource.length?-1:30))},dependencies:[$t,xn,Gt,qt,wn,wi,on,mn,sn,Os,Ma,In,Pn,Wo,We,Kt,Jr,As,vu,Pa,Qr,kr,kc,Vl,xe,rp],styles:[".overflow[_ngcontent-%COMP%]{display:block;width:100%;overflow-x:auto}.overflow[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{width:100%}.actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}.small-column[_ngcontent-%COMP%]{width:1px;text-align:center}.persistent-icon[_ngcontent-%COMP%]{font-size:14px!important;color:#d48b05}.offline[_ngcontent-%COMP%]{opacity:.35}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:8px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{flex:1 1 220px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] .field-pk[_ngcontent-%COMP%]{flex:2 1 360px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] .field-md[_ngcontent-%COMP%]{flex:1 1 180px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] .field-sm[_ngcontent-%COMP%]{flex:0 1 140px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-left:auto}.inline-add-transport[_ngcontent-%COMP%] .help-icon[_ngcontent-%COMP%]{margin-left:4px;opacity:.6;cursor:help}"],changeDetection:0})}}return t})();function P2e(t,n){1&t&&(h(0,"span"),p(1,", "),u())}function I2e(t,n){if(1&t&&(h(0,"span")(1,"span",11),p(2),u(),p(3,": "),h(4,"span",6),p(5),u(),x(6,P2e,2,0,"span"),u()),2&t){const e=n.$implicit,i=n.$index,o=n.$count;d(2),M(e.type),d(3),M(e.count),d(),S(i!==o-1?6:-1)}}function O2e(t,n){if(1&t&&(p(0," ("),ve(1,I2e,7,3,"span",null,Fe),p(3,") ")),2&t){const e=v(2);d(),ye(e.transportStats.byType)}}function A2e(t,n){if(1&t){const e=oe();h(0,"div",0)(1,"div",1)(2,"span",2),p(3),b(4,"translate"),u(),h(5,"span",3)(6,"span",4),p(7),b(8,"translate"),u(),h(9,"span",5)(10,"span",6),p(11),u(),x(12,O2e,4,0),u()(),h(13,"span",7)(14,"span",4),p(15),b(16,"translate"),u(),h(17,"mat-slide-toggle",8),F("change",function(){return j(e),U(v().changeTransportsConfig())}),u(),h(18,"mat-icon",9),b(19,"translate"),p(20,"info"),u()(),h(21,"span",7)(22,"span",4),p(23),b(24,"translate"),u(),h(25,"mat-slide-toggle",8),F("change",function(){return j(e),U(v().changePublicConfig())}),u(),h(26,"mat-icon",9),b(27,"translate"),p(28,"info"),u()()()(),B(29,"app-transport-list",10)}if(2&t){const e=v();d(3),M(y(4,14,"node.details.transports-info.title")),d(4),E("",y(8,16,"node.details.transports-info.total")," "),d(4),M(e.transportStats.total),d(),S(e.transportStats.byType.length>0?12:-1),d(3),M(y(16,18,"node.details.transports-info.autoconnect")),d(2),C("checked",!!e.node.autoconnectTransports),d(),C("inline",!0)("matTooltip",y(19,20,"node.details.transports-info.autoconnect-info")),d(5),M(y(24,22,"node.details.transports-info.is-public")),d(2),C("checked",!!e.isPublic),d(),C("inline",!0)("matTooltip",y(27,24,"node.details.transports-info.is-public-info")),d(3),C("node",e.node)("showShortList",!1)}}let R2e=(()=>{class t extends pn{constructor(e,i,o){super(),this.apiService=e,this.transportService=i,this.snackbarService=o,this.transportStats={total:0,byType:[]},this.isPublic=!1}ngOnInit(){return this.dataSubscription=ke.currentNode.subscribe(e=>{this.node=e,this.transportStats=this.computeTransportStats(e),e&&this.fetchPublicStatus(e.localPk)}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription?.unsubscribe(),this.autoconnectSubscription?.unsubscribe(),this.publicToggleSubscription?.unsubscribe()}computeTransportStats(e){if(!e||!e.transports)return{total:0,byType:[]};const i={};for(const r of e.transports)i[r.type]=(i[r.type]||0)+1;const o=Object.entries(i).map(([r,s])=>({type:r,count:s})).sort((r,s)=>s.count-r.count);return{total:e.transports.length,byType:o}}fetchPublicStatus(e){this.apiService.get(`visors/${e}/public`).subscribe(i=>{this.isPublic=!(!i||!0!==i.is_public)},()=>{this.isPublic=!1})}changeTransportsConfig(){if(!this.node)return;const e=!this.node.autoconnectTransports;this.autoconnectSubscription=this.transportService.changeAutoconnectSetting(this.node.localPk,e).subscribe(()=>{this.snackbarService.showDone(e?"node.details.transports-info.enable-done":"node.details.transports-info.disable-done"),ke.refreshCurrentDisplayedData()},i=>{i=Qe(i),this.snackbarService.showError(i)})}changePublicConfig(){if(!this.node)return;const e=!this.isPublic;this.publicToggleSubscription=this.apiService.put(`visors/${this.node.localPk}/public`,{is_public:e}).subscribe(()=>{this.isPublic=e,this.snackbarService.showDone(e?"node.details.transports-info.public-enable-done":"node.details.transports-info.public-disable-done")},i=>{i=Qe(i),this.snackbarService.showError(i)})}static{this.\u0275fac=function(i){return new(i||t)(O(zi),O(l6),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-all-transports"]],standalone:!1,features:[be],decls:1,vars:1,consts:[[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow","font-smaller"],[1,"section-title"],[1,"info-line"],[1,"title"],[1,"transport-stats"],[1,"transport-count"],[1,"info-line","toggle-line"],["color","primary",3,"change","checked"],[1,"info-tip",3,"inline","matTooltip"],[3,"node","showShortList"],[1,"transport-type"]],template:function(i,o){1&i&&x(0,A2e,30,26),2&i&&S(o.node?0:-1)},dependencies:[We,Kt,d6,E2e,xe],encapsulation:2})}}return t})();const F2e=(t,n)=>n.date;function N2e(t,n){1&t&&(h(0,"a",23)(1,"mat-icon",24),b(2,"translate"),p(3," open_in_browser "),u()()),2&t&&(C("href","https://explorer.skycoin.com/app/address/"+v(2).rewardsAddress,mo),d(),C("inline",!0)("matTooltip",y(2,3,"node.details.rewards-info.open-in-explorer")))}function L2e(t,n){if(1&t&&(B(0,"app-copy-to-clipboard-text",22),x(1,N2e,4,5,"a",23)),2&t){const e=v();C("text",Qt(e.rewardsAddress)),d(),S(e.rewardsAddressIsXpub?-1:1)}}function B2e(t,n){1&t&&(p(0),b(1,"translate"),h(2,"mat-icon",25),b(3,"translate"),p(4,"info"),u()),2&t&&(E(" ",y(1,3,"node.details.rewards-info.not-registered")," "),d(2),C("inline",!0)("matTooltip",y(3,5,"node.details.rewards-info.not-registered-info")))}function V2e(t,n){if(1&t){const e=oe();h(0,"form",26),F("ngSubmit",function(){return j(e),U(v().submitRewardAddress())}),h(1,"mat-form-field",27)(2,"mat-label"),p(3),b(4,"translate"),u(),B(5,"input",28),u(),h(6,"div",29)(7,"button",30),p(8),b(9,"translate"),u(),h(10,"button",31),F("click",function(){return j(e),U(v().toggleRewardForm())}),p(11),b(12,"translate"),u()()()}if(2&t){const e=v();C("formGroup",e.rewardForm),d(3),M(y(4,5,"node.details.rewards-info.rewards-address")),d(4),C("disabled",!e.rewardForm.valid),d(),E(" ",y(9,7,"common.save")," "),d(3),E(" ",y(12,9,"common.cancel")," ")}}function H2e(t,n){if(1&t&&(h(0,"pre",9),p(1),b(2,"translate"),u()),2&t){const e=v();d(),M(e.rewardRules||y(2,1,"common.loading"))}}function j2e(t,n){if(1&t&&(h(0,"span",11),p(1),u()),2&t){const e=v();d(),E("(",e.label,")")}}function U2e(t,n){if(1&t&&(h(0,"div",17)(1,"span",32),p(2),u(),h(3,"span",33),p(4),u()()),2&t){const e=v();d(2),E(" Total: ",e.total.toFixed(2)," SKY "),d(2),E(" (",e.days," days) ")}}function z2e(t,n){1&t&&(h(0,"div",18),B(1,"mat-spinner",34),u())}function $2e(t,n){if(1&t&&(h(0,"div",19),p(1),u()),2&t){const e=v();d(),M(e.errorMsg)}}function W2e(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.amount.toFixed(6)," ")}function G2e(t,n){1&t&&(h(0,"span",36),p(1,"-"),u())}function q2e(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.share.toFixed(4),"% ")}function K2e(t,n){1&t&&(h(0,"span",36),p(1,"-"),u())}function Y2e(t,n){if(1&t&&(h(0,"a",37),p(1),u()),2&t){const e=v().$implicit;C("href","https://explorer.skycoin.com/app/transaction/"+e.txid,mo),d(),E(" ",e.txid.substring(0,12),"... ")}}function X2e(t,n){1&t&&(h(0,"span",36),p(1,"-"),u())}function Z2e(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2),u(),h(3,"td"),x(4,W2e,1,1)(5,G2e,2,0,"span",36),u(),h(6,"td"),x(7,q2e,1,1)(8,K2e,2,0,"span",36),u(),h(9,"td")(10,"span"),p(11),u()(),h(12,"td"),x(13,Y2e,2,2,"a",37)(14,X2e,2,0,"span",36),u()()),2&t){const e=n.$implicit,i=v(2);Ze(i.statusClass(e)),d(2),M(i.formatDate(e.date)),d(2),S(e.amount>0?4:5),d(3),S(e.share>0?7:8),d(3),Ze("status-badge "+i.statusClass(e)),d(),M(i.statusText(e)),d(2),S(e.txid?13:14)}}function Q2e(t,n){if(1&t&&(h(0,"table",20)(1,"tr")(2,"th"),p(3,"Date"),u(),h(4,"th"),p(5,"Amount (SKY)"),u(),h(6,"th"),p(7,"Share (%)"),u(),h(8,"th"),p(9,"Status"),u(),h(10,"th"),p(11,"Transaction"),u()(),ve(12,Z2e,15,9,"tr",35,F2e),u()),2&t){const e=v();d(12),ye(e.history)}}function J2e(t,n){1&t&&(h(0,"div",21),p(1," No reward data available for this visor. "),u())}let eEe=(()=>{class t{constructor(e,i,o,r,s,a,l){this.http=e,this.route=i,this.nodeComponent=o,this.storageService=r,this.nodeService=s,this.snackbarService=a,this.formBuilder=l,this.pk="",this.label="",this.rewardsAddress="",this.history=[],this.loading=!1,this.days=30,this.total=0,this.errorMsg="",this.showRewardForm=!1,this.showRewardRules=!1,this.rewardRules=null,this.rewardForm=this.formBuilder.group({address:["",Ne.compose([Ne.minLength(20),Ne.maxLength(112)])]})}ngOnInit(){this.pk=this.nodeComponent.node?.localPk||this.route.snapshot.parent?.paramMap.get("key")||"";const e=this.storageService.getLabelInfo(this.pk);this.label=e?.label||"",this.nodeSub=ke.currentNode.subscribe(i=>{this.rewardsAddress=i?.rewardsAddress||""}),this.loadHistory()}ngOnDestroy(){this.nodeSub?.unsubscribe(),this.dataSub?.unsubscribe(),this.saveRewardsSubscription?.unsubscribe(),this.rewardRulesSubscription?.unsubscribe()}loadHistory(){this.pk&&(this.loading=!0,this.errorMsg="",this.dataSub=this.http.get(`/api/rewards/skycoin-rewards/visor/${this.pk}?days=${this.days}`).pipe(Ui(e=>(this.errorMsg="Failed to load reward data",ae({history:[]})))).subscribe(e=>{this.history=e?.history||[],this.total=this.history.reduce((i,o)=>i+(o.amount||0),0),this.loading=!1}))}changeDays(e){this.days=e,this.loadHistory()}formatDate(e){return new Date(e+"T00:00:00").toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}statusClass(e){return e.amount&&0!==e.amount?e.sent?"sent":"pending":"no-reward"}statusText(e){return e.amount&&0!==e.amount?e.sent?"Sent":"Pending":"No reward"}get rewardsAddressIsXpub(){return!!this.rewardsAddress&&this.rewardsAddress.startsWith("xpub")}toggleRewardForm(){this.showRewardForm=!this.showRewardForm,this.showRewardForm&&this.rewardForm.get("address").setValue(this.rewardsAddress||"")}submitRewardAddress(){if(!this.rewardForm.valid)return;const e=(this.rewardForm.get("address").value||"").trim(),i=e?this.nodeService.setRewardsAddress(this.pk,e):this.nodeService.deleteRewardsAddress(this.pk);this.saveRewardsSubscription=i.subscribe({next:()=>{this.snackbarService.showDone("rewards-address-config.done"),this.showRewardForm=!1,ke.refreshCurrentDisplayedData()},error:o=>{o=Qe(o),this.snackbarService.showError(o)}})}toggleRewardRules(){this.showRewardRules=!this.showRewardRules,this.showRewardRules&&null===this.rewardRules&&(this.rewardRulesSubscription=this.nodeService.getRewardRules().subscribe(e=>{this.rewardRules=e||""},()=>{this.rewardRules="",this.snackbarService.showError("common.loading-error")}))}static{this.\u0275fac=function(i){return new(i||t)(O(ba),O(Ai),O(ke),O(ti),O(Io),O(ct),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-node-rewards"]],standalone:!1,decls:46,vars:33,consts:[[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow"],[1,"section-title"],[1,"info-line"],[1,"title"],["mat-icon-button","",1,"inline-edit-btn",3,"click","matTooltip"],[3,"inline"],[1,"inline-form",3,"formGroup"],[1,"info-line","collapsible-link",3,"click"],[1,"reward-rules"],[1,"d-flex","justify-content-between","align-items-center","mb-3"],[1,"label-text","ml-2"],[1,"d-flex","align-items-center"],[1,"mr-2",2,"font-size","0.85em","color","#ccc"],["mat-button","",3,"click"],[1,"pk-row","mb-3"],[2,"font-size","0.75em","color","#999"],[1,"total-row","mb-3"],[1,"d-flex","justify-content-center","py-4"],[1,"error-msg","py-2"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid"],[1,"py-4","text-center",2,"color","#999"],[1,"text-with-right-margin",3,"text"],["target","_blank","rel","noreferrer nofollow noopener",3,"href"],[1,"link-icon","transparent-button",3,"inline","matTooltip"],[3,"inline","matTooltip"],[1,"inline-form",3,"ngSubmit","formGroup"],["appearance","outline",1,"inline-form-field"],["matInput","","formControlName","address","maxlength","112","placeholder","2\u2026"],[1,"inline-form-actions"],["mat-raised-button","","color","primary","type","submit",3,"disabled"],["mat-button","","type","button",3,"click"],[2,"font-size","1.1em","font-weight","bold","color","#4caf50"],[2,"font-size","0.85em","color","#999","margin-left","12px"],["diameter","30"],[3,"class"],[2,"color","#666"],["target","_blank","rel","noopener",2,"font-size","0.8em","color","#3399ff",3,"href"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"span",2),p(3),b(4,"translate"),u(),h(5,"span",3)(6,"span",4),p(7),b(8,"translate"),u(),x(9,L2e,2,3),x(10,B2e,5,7),h(11,"button",5),b(12,"translate"),F("click",function(){return o.toggleRewardForm()}),h(13,"mat-icon",6),p(14),u()()(),x(15,V2e,13,11,"form",7),h(16,"span",8),F("click",function(){return o.toggleRewardRules()}),h(17,"mat-icon",6),p(18),u(),p(19),b(20,"translate"),u(),x(21,H2e,3,3,"pre",9),u()(),h(22,"div",0)(23,"div",1)(24,"div",10)(25,"div")(26,"span",4),p(27,"Reward History"),u(),x(28,j2e,2,1,"span",11),u(),h(29,"div",12)(30,"span",13),p(31,"Show:"),u(),h(32,"button",14),F("click",function(){return o.changeDays(7)}),p(33,"7d"),u(),h(34,"button",14),F("click",function(){return o.changeDays(30)}),p(35,"30d"),u(),h(36,"button",14),F("click",function(){return o.changeDays(90)}),p(37,"90d"),u()()(),h(38,"div",15)(39,"span",16),p(40),u()(),x(41,U2e,5,2,"div",17),x(42,z2e,2,0,"div",18),x(43,$2e,2,1,"div",19),x(44,Q2e,14,0,"table",20),x(45,J2e,2,0,"div",21),u()()),2&i&&(d(3),M(y(4,25,"node.details.rewards-info.title")),d(4),E("",y(8,27,"node.details.rewards-info.rewards-address")," "),d(2),S(o.rewardsAddress?9:-1),d(),S(o.rewardsAddress?-1:10),d(),C("matTooltip",y(12,29,o.rewardsAddress?"node.details.rewards-info.change-address-button":"node.details.rewards-info.set-address-button")),d(2),C("inline",!0),d(),M(o.showRewardForm?"close":"edit"),d(),S(o.showRewardForm?15:-1),d(2),C("inline",!0),d(),M(o.showRewardRules?"expand_more":"chevron_right"),d(),E(" ",y(20,31,"node.details.rewards-info.show-rules")," "),d(2),S(o.showRewardRules?21:-1),d(7),S(o.label?28:-1),d(4),Ie("active-days",7===o.days),d(2),Ie("active-days",30===o.days),d(2),Ie("active-days",90===o.days),d(4),M(o.pk),d(),S(!o.loading&&o.history.length>0?41:-1),d(),S(o.loading?42:-1),d(),S(o.errorMsg?43:-1),d(),S(!o.loading&&o.history.length>0?44:-1),d(),S(o.loading||0!==o.history.length||o.errorMsg?-1:45))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,Os,In,Pn,Wo,We,Kt,so,op,xe],styles:[".title[_ngcontent-%COMP%]{font-size:1.1em;font-weight:700;color:#f8f9f9}.label-text[_ngcontent-%COMP%]{font-size:.9em;color:#aaa}.active-days[_ngcontent-%COMP%]{color:#4caf50!important;font-weight:700}.total-row[_ngcontent-%COMP%]{padding:8px 0;border-bottom:1px solid rgba(255,255,255,.1)}.error-msg[_ngcontent-%COMP%]{color:#f44336;text-align:center}.status-badge[_ngcontent-%COMP%]{padding:2px 8px;border-radius:4px;font-size:.8em}.status-badge.sent[_ngcontent-%COMP%]{background:#4caf5033;color:#4caf50}.status-badge.pending[_ngcontent-%COMP%]{background:#ffc10733;color:#ffc107}.status-badge.no-reward[_ngcontent-%COMP%]{color:#666}tr.sent[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-left:2px solid rgba(76,175,80,.3)}tr.pending[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-left:2px solid rgba(255,193,7,.3)}"]})}}return t})();function Mc(t=0,n=Pf){return t<0&&(t=0),xa(t,t,n)}let tEe=(()=>{class t{constructor(e){this.apiService=e}get(){return this.apiService.get("service-health")}static{this.\u0275fac=function(i){return new(i||t)(ce(zi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const nEe=()=>["nodes.services-health-title"],iEe=(t,n)=>n.reason;function oEe(t,n){1&t&&(h(0,"div",4),B(1,"mat-spinner",10),h(2,"span",11),p(3),b(4,"translate"),u()()),2&t&&(d(),C("diameter",16),d(2),M(y(4,2,"services-health.loading")))}function rEe(t,n){if(1&t&&(h(0,"div",5)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",11),p(4),u()()),2&t){const e=v();d(4),M(e.error)}}function sEe(t,n){1&t&&(h(0,"mat-icon",18),p(1,"warning"),u(),h(2,"span"),p(3),b(4,"translate"),u()),2&t&&(d(3),M(y(4,1,"services-health.degraded")))}function aEe(t,n){1&t&&(h(0,"mat-icon",19),p(1,"check_circle"),u(),h(2,"span"),p(3),b(4,"translate"),u()),2&t&&(d(3),M(y(4,1,"services-health.all-ok")))}function lEe(t,n){if(1&t&&(h(0,"span",13),p(1),b(2,"translate"),b(3,"date"),u()),2&t){const e=v(2);d(),gt(" \u2014 ",y(2,2,"services-health.last-updated"),": ",pe(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function cEe(t,n){if(1&t&&(h(0,"code"),p(1),u()),2&t){const e=v().$implicit;d(),M(e.version)}}function dEe(t,n){1&t&&(h(0,"span",8),p(1,"\u2014"),u())}function uEe(t,n){if(1&t&&(h(0,"tr")(1,"td"),B(2,"span"),u(),h(3,"td")(4,"strong"),p(5),u()(),h(6,"td"),p(7),u(),h(8,"td"),p(9),u(),h(10,"td"),x(11,cEe,2,1,"code")(12,dEe,2,0,"span",8),u(),h(13,"td")(14,"code",8),p(15),u()()()),2&t){const e=n.$implicit,i=v(2);d(2),Ze(i.statusClass(e)),d(3),M(e.name),d(2),E(" ",e.status," "),d(),Ze(i.latencyClass(e)),d(),E(" ",e.latency_ms,"\xa0ms "),d(2),S(e.version?11:12),d(4),M(i.shortUrl(e.url))}}function hEe(t,n){if(1&t&&(h(0,"div",22)(1,"span",8),p(2),b(3,"translate"),u(),h(4,"code"),p(5),u()()),2&t){const e=v().$implicit;d(2),E("",y(3,2,"services-health.version"),":"),d(3),M(e.version)}}function fEe(t,n){if(1&t&&(h(0,"div",23),p(1),u()),2&t){const e=v().$implicit;d(),M(e.error)}}function pEe(t,n){if(1&t&&(h(0,"div",17)(1,"div",20),B(2,"span"),h(3,"strong",11),p(4),u(),h(5,"span",21),p(6),u()(),h(7,"div",22)(8,"span",8),p(9),b(10,"translate"),u(),p(11),u(),x(12,hEe,6,4,"div",22),h(13,"div",22)(14,"span",8),p(15),b(16,"translate"),u(),h(17,"code",8),p(18),u()(),x(19,fEe,2,1,"div",23),u()),2&t){const e=n.$implicit,i=v(2);d(2),Ze(i.statusClass(e)),d(2),M(e.name),d(),Ze(i.latencyClass(e)),d(),E("",e.latency_ms,"\xa0ms"),d(3),E("",y(10,12,"services-health.status"),":"),d(2),E(" ",e.status," "),d(),S(e.version?12:-1),d(3),E("",y(16,14,"services-health.endpoint"),":"),d(3),M(i.shortUrl(e.url)),d(),S(e.error?19:-1)}}function mEe(t,n){if(1&t&&(h(0,"div",12),x(1,sEe,5,3)(2,aEe,5,3),x(3,lEe,4,7,"span",13),u(),h(4,"table",14)(5,"tr"),B(6,"th",15),h(7,"th"),p(8),b(9,"translate"),u(),h(10,"th"),p(11),b(12,"translate"),u(),h(13,"th"),p(14),b(15,"translate"),u(),h(16,"th"),p(17),b(18,"translate"),u(),h(19,"th"),p(20),b(21,"translate"),u()(),ve(22,uEe,16,9,"tr",null,Br().trackByName,!0),u(),h(24,"div",16),ve(25,pEe,20,16,"div",17,Br().trackByName,!0),u()),2&t){const e=v();d(),S(e.anyDown()?1:2),d(2),S(e.lastUpdated?3:-1),d(5),M(y(9,7,"services-health.service")),d(3),M(y(12,9,"services-health.status")),d(3),M(y(15,11,"services-health.latency")),d(3),M(y(18,13,"services-health.version")),d(3),M(y(21,15,"services-health.endpoint")),d(2),ye(e.entries),d(3),ye(e.entries)}}function gEe(t,n){1&t&&(h(0,"div",4),B(1,"mat-spinner",10),h(2,"span",11),p(3,"\u2026"),u()()),2&t&&(d(),C("diameter",14))}function _Ee(t,n){1&t&&(h(0,"div",8),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"services-health.rsn-empty")))}function bEe(t,n){if(1&t&&(h(0,"span",28),p(1),b(2,"number"),u()),2&t){const e=v().$implicit;Ze(v().successClass(e.snapshot)),d(),E(" ",pe(2,3,e.snapshot.success_rate_pct,"1.0-1"),"% ")}}function vEe(t,n){if(1&t&&(h(0,"div",23),p(1),b(2,"translate"),u()),2&t){const e=v().$implicit;d(),gt("",y(2,2,"services-health.rsn-error"),": ",e.error)}}function yEe(t,n){if(1&t&&(h(0,"div")(1,"span",8),p(2),b(3,"translate"),u(),h(4,"span"),p(5),b(6,"date"),u()()),2&t){const e=v(2).$implicit;d(2),E("",y(3,2,"services-health.rsn-last-success"),":"),d(3),M(pe(6,4,e.snapshot.last_success_at,"HH:mm:ss"))}}function CEe(t,n){if(1&t&&(h(0,"div")(1,"span",8),p(2),b(3,"translate"),u(),h(4,"span"),p(5),b(6,"date"),u()()),2&t){const e=v(2).$implicit;d(2),E("",y(3,2,"services-health.rsn-last-failure"),":"),d(3),M(pe(6,4,e.snapshot.last_failure_at,"HH:mm:ss"))}}function wEe(t,n){if(1&t&&(h(0,"span",31),p(1),u()),2&t){const e=n.$implicit;d(),gt("",e.reason," (",e.count,")")}}function xEe(t,n){if(1&t&&(h(0,"div",30)(1,"span",8),p(2),b(3,"translate"),u(),ve(4,wEe,2,2,"span",31,iEe),u()),2&t){const e=v(2).$implicit,i=v();d(2),E("",y(3,1,"services-health.rsn-failure-reasons"),":"),d(2),ye(i.topFailureReasons(e.snapshot))}}function SEe(t,n){if(1&t&&(h(0,"div",29)(1,"div")(2,"span",8),p(3),b(4,"translate"),u(),h(5,"strong"),p(6),u()(),h(7,"div")(8,"span",8),p(9),b(10,"translate"),u(),h(11,"strong"),p(12),u()(),h(13,"div")(14,"span",8),p(15),b(16,"translate"),u(),h(17,"strong"),p(18),u()(),h(19,"div")(20,"span",8),p(21),b(22,"translate"),u(),h(23,"strong"),p(24),u()(),h(25,"div")(26,"span",8),p(27),b(28,"translate"),u(),h(29,"strong"),p(30),u()(),h(31,"div")(32,"span",8),p(33),b(34,"translate"),u(),h(35,"strong"),p(36),u()(),x(37,yEe,7,7,"div"),x(38,CEe,7,7,"div"),u(),x(39,xEe,6,3,"div",30)),2&t){const e=v().$implicit,i=v();d(3),E("",y(4,15,"services-health.rsn-success"),":"),d(3),M(e.snapshot.successful||0),d(3),E("",y(10,17,"services-health.rsn-failed"),":"),d(3),M(e.snapshot.failed||0),d(3),E("",y(16,19,"services-health.rsn-active"),":"),d(3),M(e.snapshot.active_requests||0),d(3),E("",y(22,21,"services-health.rsn-latency-p50"),":"),d(3),E("",(null==e.snapshot.latency_ms?null:e.snapshot.latency_ms.p50_ms)||0," ms"),d(3),E("",y(28,23,"services-health.rsn-latency-p95"),":"),d(3),E("",(null==e.snapshot.latency_ms?null:e.snapshot.latency_ms.p95_ms)||0," ms"),d(3),E("",y(34,25,"services-health.rsn-latency-p99"),":"),d(3),E("",(null==e.snapshot.latency_ms?null:e.snapshot.latency_ms.p99_ms)||0," ms"),d(),S(e.snapshot.last_success_at?37:-1),d(),S(e.snapshot.last_failure_at?38:-1),d(),S(i.topFailureReasons(e.snapshot).length>0?39:-1)}}function kEe(t,n){if(1&t&&(h(0,"div",9)(1,"div",24),B(2,"span",25),h(3,"code",26),p(4),u(),x(5,bEe,3,6,"span",27),u(),x(6,vEe,3,4,"div",23),x(7,SEe,40,27),u()),2&t){const e=n.$implicit;d(2),C("ngClass",e.snapshot?"dot-green":"dot-red"),d(2),M(e.pk),d(),S(e.snapshot?5:-1),d(),S(e.error?6:-1),d(),S(e.snapshot?7:-1)}}let DEe=(()=>{class t extends pn{constructor(e,i){super(),this.healthSvc=e,this.api=i,this.tabsData=[],this.entries=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.rsnStats=[],this.rsnLoading=!0,this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=Mc(15e3).pipe(si(0),tn(()=>this.healthSvc.get())).subscribe({next:e=>{this.entries=e||[],this.loading=!1,this.error=null,this.lastUpdated=new Date},error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch services health"}}),this.rsnSub=Mc(3e4).pipe(si(0),tn(()=>this.api.get("route-setup-nodes/stats"))).subscribe({next:e=>{this.rsnStats=Array.isArray(e)?e:[],this.rsnLoading=!1},error:()=>{this.rsnLoading=!1}}),super.ngOnInit()}ngOnDestroy(){this.sub?.unsubscribe(),this.rsnSub?.unsubscribe()}topFailureReasons(e){return e?.failures_by_reason?Object.entries(e.failures_by_reason).map(([i,o])=>({reason:i,count:o})).filter(i=>i.count>0).sort((i,o)=>o.count-i.count).slice(0,3):[]}successClass(e){const i=e?.success_rate_pct??0;return i>=90?"latency-fast":i>=70?"latency-medium":"latency-slow"}trackRSN(e,i){return i.pk}statusClass(e){const i=(e?.status||"").toUpperCase();return"OK"===i?"dot-green":"DOWN"===i?"dot-red":"dot-outline-gray"}anyDown(){return this.entries.some(e=>"OK"!==(e?.status||"").toUpperCase())}latencyClass(e){const i=e?.latency_ms??0;return i<500?"latency-fast":i<2e3?"latency-medium":"latency-slow"}shortUrl(e){if(!e)return"";try{return new URL(e).host}catch{return e}}trackByName(e,i){return i.name}static{this.\u0275fac=function(i){return new(i||t)(O(tEe),O(zi))}}static{this.\u0275cmp=re({type:t,selectors:[["app-services-health"]],standalone:!1,features:[be],decls:15,vars:13,consts:[[1,"row"],[1,"col-12"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton"],[1,"content","col-12","mt-4.5"],[1,"loading-row"],[1,"error-row"],[1,"rsn-section","mt-4"],[1,"rsn-title"],[1,"dim"],[1,"rsn-card"],[3,"diameter"],[1,"ml-2"],[1,"summary-line"],[1,"last-updated"],[1,"responsive-table-translucid","d-none","d-md-table","mt-3"],[1,"small-column"],[1,"d-md-none","mt-3"],[1,"mobile-card"],[1,"warn"],[1,"ok"],[1,"mobile-header"],[1,"ml-auto"],[1,"mobile-row"],[1,"error-detail"],[1,"rsn-card-header"],[1,"dot",3,"ngClass"],[1,"rsn-pk","mono","small"],[1,"rsn-rate",3,"class"],[1,"rsn-rate"],[1,"rsn-grid"],[1,"rsn-failures"],[1,"rsn-fail-pill"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1),B(2,"app-top-bar",2),u(),h(3,"div",3),x(4,oEe,5,4,"div",4),x(5,rEe,5,1,"div",5),x(6,mEe,27,17),h(7,"div",6)(8,"h3",7),p(9),b(10,"translate"),u(),x(11,gEe,4,1,"div",4),x(12,_Ee,3,3,"div",8),ve(13,kEe,8,5,"div",9,o.trackRSN,!0),u()()()),2&i&&(d(2),C("titleParts",Ct(12,nEe))("tabsData",o.tabsData)("selectedTabIndex",6)("showUpdateButton",!1),d(2),S(o.loading&&0===o.entries.length?4:-1),d(),S(o.error&&0===o.entries.length?5:-1),d(),S(o.entries.length>0?6:-1),d(3),M(y(10,10,"services-health.rsn-section")),d(2),S(o.rsnLoading&&0===o.rsnStats.length?11:-1),d(),S(o.rsnLoading||0!==o.rsnStats.length?-1:12),d(),ye(o.rsnStats))},dependencies:[$t,We,so,Mr,Vl,fa,xe],styles:[".loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffbf;padding:24px 0}.error-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#f87171;padding:24px 0}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;margin-right:6px}.summary-line[_ngcontent-%COMP%] mat-icon.ok[_ngcontent-%COMP%]{color:#4ade80}.summary-line[_ngcontent-%COMP%] mat-icon.warn[_ngcontent-%COMP%]{color:#fbbf24}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.small-column[_ngcontent-%COMP%]{width:24px}.dim[_ngcontent-%COMP%]{color:#ffffff8c}.latency-fast[_ngcontent-%COMP%]{color:#4ade80}.latency-medium[_ngcontent-%COMP%]{color:#fbbf24}.latency-slow[_ngcontent-%COMP%]{color:#f87171}.error-detail[_ngcontent-%COMP%]{color:#f87171;font-size:.8em;margin-top:4px}.mobile-card[_ngcontent-%COMP%]{background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:12px;margin-bottom:10px}.mobile-card[_ngcontent-%COMP%] .mobile-header[_ngcontent-%COMP%]{display:flex;align-items:center;margin-bottom:8px;font-size:1em}.mobile-card[_ngcontent-%COMP%] .mobile-row[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffd9;padding:2px 0}.mobile-card[_ngcontent-%COMP%] .mobile-row[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:#ffffffd9}code[_ngcontent-%COMP%]{font-family:monospace;font-size:.9em}.rsn-section[_ngcontent-%COMP%] .rsn-title[_ngcontent-%COMP%]{font-size:1em;font-weight:600;color:#fffffff2;margin:0 0 10px}.rsn-section[_ngcontent-%COMP%] .rsn-card[_ngcontent-%COMP%]{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:10px 14px;margin-bottom:10px}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:50%;display:inline-block}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .dot-green[_ngcontent-%COMP%]{background:#4caf50}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .dot-red[_ngcontent-%COMP%]{background:#f44336}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .rsn-pk[_ngcontent-%COMP%]{font-family:monospace;font-size:11px;color:#ffffffb3;word-break:break-all;flex:1 1 auto;min-width:0}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .rsn-rate[_ngcontent-%COMP%]{font-weight:600;font-size:13px}.rsn-section[_ngcontent-%COMP%] .rsn-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px 16px;font-size:12px}.rsn-section[_ngcontent-%COMP%] .rsn-grid[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{margin-left:6px;color:#fffffff2}.rsn-section[_ngcontent-%COMP%] .rsn-failures[_ngcontent-%COMP%]{margin-top:8px;font-size:11px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.rsn-section[_ngcontent-%COMP%] .rsn-failures[_ngcontent-%COMP%] .rsn-fail-pill[_ngcontent-%COMP%]{background:#e5393526;border:1px solid rgba(229,57,53,.35);color:#ffc8c8f2;padding:1px 6px;border-radius:3px}"]})}}return t})();const MEe=()=>["nodes.network-title"],h6=(t,n)=>n.pk;function TEe(t,n){1&t&&(h(0,"div",4),B(1,"mat-spinner",7),h(2,"span",8),p(3),b(4,"translate"),u()()),2&t&&(d(),C("diameter",16),d(2),M(y(4,2,"network-view.loading")))}function EEe(t,n){if(1&t&&(h(0,"div",5)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",8),p(4),u()()),2&t){const e=v();d(4),M(e.error)}}function PEe(t,n){if(1&t&&(h(0,"div",15),p(1),b(2,"translate"),b(3,"date"),u()),2&t){const e=v(2);d(),gt(" ",y(2,2,"network-view.last-updated"),": ",pe(3,4,e.lastUpdated,"mediumTime")," ")}}function IEe(t,n){if(1&t&&(h(0,"tr",32)(1,"td",36),p(2),u(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),u(),h(9,"td",31),p(10),u(),h(11,"td",31),p(12),u(),h(13,"td",31),p(14),u(),h(15,"td",31),p(16),u(),h(17,"td",31)(18,"strong"),p(19),u()(),h(20,"td"),p(21),u()()),2&t){const e=n.$implicit;C("ngClass",v(2).rowClass(e)),d(),C("matTooltip",e.pk),d(),M(e.pk),d(2),M(e.country||"-"),d(2),M(e.version||"-"),d(2),M(e.services||"-"),d(2),M(e.stcpr),d(2),M(e.sudph),d(2),M(e.dmsg),d(2),M(e.stcp),d(3),M(e.total),d(2),M(e.ut_status||"-")}}function OEe(t,n){if(1&t&&(h(0,"div",34)(1,"div",37),p(2),u(),h(3,"div",38),p(4),u(),h(5,"div",39),p(6),h(7,"strong"),p(8),u(),p(9),u()()),2&t){const e=n.$implicit;C("ngClass",v(2).rowClass(e)),d(),C("matTooltip",e.pk),d(),M(e.pk),d(2),Uh(" ",e.country||"-"," \xb7 ",e.version||"-"," \xb7 ",e.services||"-"," "),d(2),Xg(" stcpr ",e.stcpr," \xb7 sudph ",e.sudph," \xb7 dmsg ",e.dmsg," \xb7 stcp ",e.stcp," \xb7 "),d(2),E("total ",e.total),d(),E(" \xb7 ",e.ut_status||"-"," ")}}function AEe(t,n){1&t&&(h(0,"p",35),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"network-view.empty")))}function REe(t,n){if(1&t){const e=oe();h(0,"div",6)(1,"div",9)(2,"div",10)(3,"div",11)(4,"span")(5,"strong"),p(6),u(),p(7," visors"),u(),B(8,"span",12),h(9,"span"),p(10),u(),B(11,"span",13),h(12,"span"),p(13),u(),B(14,"span",14),h(15,"span"),p(16),u()(),x(17,PEe,4,7,"div",15),h(18,"button",16),b(19,"translate"),F("click",function(){return j(e),U(v().refreshNow())}),h(20,"mat-icon",17),p(21,"refresh"),u()()(),h(22,"div",18)(23,"mat-form-field",19)(24,"mat-label"),p(25),b(26,"translate"),u(),h(27,"input",20),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.searchTerm,o)||(r.searchTerm=o),U(o)}),F("ngModelChange",function(){return j(e),U(v().applyFilters())}),u()(),h(28,"mat-form-field",21)(29,"mat-label"),p(30),b(31,"translate"),u(),h(32,"input",22),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.filterCountry,o)||(r.filterCountry=o),U(o)}),F("ngModelChange",function(){return j(e),U(v().applyFilters())}),u()(),h(33,"mat-form-field",21)(34,"mat-label"),p(35),b(36,"translate"),u(),h(37,"input",23),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.filterVersion,o)||(r.filterVersion=o),U(o)}),F("ngModelChange",function(){return j(e),U(v().applyFilters())}),u()(),h(38,"mat-form-field",21)(39,"mat-label"),p(40),b(41,"translate"),u(),h(42,"input",24),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.filterMinTransports,o)||(r.filterMinTransports=o),U(o)}),F("ngModelChange",function(){return j(e),U(v().applyFilters())}),u()(),h(43,"mat-checkbox",25),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.showOnlineOnly,o)||(r.showOnlineOnly=o),U(o)}),F("ngModelChange",function(){return j(e),U(v().applyFilters())}),p(44),b(45,"translate"),u()(),h(46,"div",26),B(47,"span",27),h(48,"span"),p(49),b(50,"translate"),u(),B(51,"span",28),h(52,"span"),p(53),b(54,"translate"),u(),B(55,"span",29),h(56,"span"),p(57),b(58,"translate"),u()(),h(59,"table",30)(60,"tr")(61,"th"),p(62),b(63,"translate"),u(),h(64,"th"),p(65),b(66,"translate"),u(),h(67,"th"),p(68),b(69,"translate"),u(),h(70,"th"),p(71),b(72,"translate"),u(),h(73,"th",31),p(74,"stcpr"),u(),h(75,"th",31),p(76,"sudph"),u(),h(77,"th",31),p(78,"dmsg"),u(),h(79,"th",31),p(80,"stcp"),u(),h(81,"th",31),p(82),b(83,"translate"),u(),h(84,"th"),p(85),b(86,"translate"),u()(),ve(87,IEe,22,12,"tr",32,h6),u(),h(89,"div",33),ve(90,OEe,10,12,"div",34,h6),u(),x(92,AEe,3,3,"p",35),u()()}if(2&t){const e=v();d(6),M(e.totals.all),d(4),E("",e.totals.online," online"),d(3),E("",e.totals.offline," offline"),d(3),E("",e.totals.notInUT," not in UT"),d(),S(e.lastUpdated?17:-1),d(),C("matTooltip",y(19,27,"network-view.refresh")),d(2),C("inline",!0),d(5),M(y(26,29,"network-view.search")),d(2),Ut("ngModel",e.searchTerm),d(3),M(y(31,31,"network-view.country")),d(2),Ut("ngModel",e.filterCountry),d(3),M(y(36,33,"network-view.version")),d(2),Ut("ngModel",e.filterVersion),d(3),M(y(41,35,"network-view.min-transports")),d(2),Ut("ngModel",e.filterMinTransports),d(),Ut("ngModel",e.showOnlineOnly),d(),E(" ",y(45,37,"network-view.online-only")," "),d(5),M(y(50,39,"network-view.legend.offline")),d(4),M(y(54,41,"network-view.legend.not-in-ut")),d(4),M(y(58,43,"network-view.legend.low-transports")),d(5),M(y(63,45,"network-view.col.pk")),d(3),M(y(66,47,"network-view.col.country")),d(3),M(y(69,49,"network-view.col.version")),d(3),M(y(72,51,"network-view.col.services")),d(11),M(y(83,53,"network-view.col.total")),d(3),M(y(86,55,"network-view.col.status")),d(2),ye(e.filteredEntries),d(3),ye(e.filteredEntries),d(2),S(0===e.filteredEntries.length?92:-1)}}let FEe=(()=>{class t extends pn{constructor(e){super(),this.nodeService=e,this.tabsData=[],this.entries=[],this.filteredEntries=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.filterCountry="",this.filterVersion="",this.filterMinTransports=null,this.showOnlineOnly=!0,this.searchTerm="",this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=Mc(3e5).pipe(si(0),tn(()=>this.nodeService.getNetworkView())).subscribe({next:e=>this.onResponse(e),error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch network view"}}),super.ngOnInit()}refreshNow(){this.loading=0===this.entries.length,this.nodeService.getNetworkView(!0).subscribe({next:e=>this.onResponse(e),error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch network view"}})}onResponse(e){this.entries=e?.entries||[],this.loading=!1,this.error=null,this.lastUpdated=new Date,this.applyFilters()}ngOnDestroy(){this.sub&&this.sub.unsubscribe()}applyFilters(){const e=(this.searchTerm||"").trim().toLowerCase(),i=(this.filterCountry||"").trim().toUpperCase(),o=(this.filterVersion||"").trim(),r=this.filterMinTransports||0;this.filteredEntries=this.entries.filter(s=>!(this.showOnlineOnly&&"online"!==(s.ut_status||"")||i&&(s.country||"").toUpperCase()!==i||o&&(s.version||"")!==o||r>0&&(s.total||0)0?6:-1))},dependencies:[$t,Gt,rc,qt,wi,tp,sn,Os,In,Wo,We,Kt,cu,so,kr,Mr,fa,xe],styles:[".nv-header[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:16px;padding:8px 4px 4px}.nv-header[_ngcontent-%COMP%] .nv-totals[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:13px}.nv-header[_ngcontent-%COMP%] .nv-fetched[_ngcontent-%COMP%]{margin-left:auto;font-size:12px;opacity:.6}.nv-header[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:8px}.nv-header[_ngcontent-%COMP%] .dot-green[_ngcontent-%COMP%]{background:#4caf50}.nv-header[_ngcontent-%COMP%] .dot-red[_ngcontent-%COMP%]{background:#e53935}.nv-header[_ngcontent-%COMP%] .dot-outline-gray[_ngcontent-%COMP%]{border:1px solid rgba(255,255,255,.4)}.nv-filters[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:8px 4px;border-bottom:1px solid rgba(255,255,255,.06)}.nv-filters[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{flex:0 1 200px}.nv-filters[_ngcontent-%COMP%] .field-sm[_ngcontent-%COMP%]{flex:0 1 130px}.nv-filters[_ngcontent-%COMP%] .field-md[_ngcontent-%COMP%]{flex:1 1 280px}.nv-legend[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12px;padding:8px 4px;opacity:.8}.nv-legend[_ngcontent-%COMP%] .row-marker[_ngcontent-%COMP%]{display:inline-block;width:16px;height:12px;border-radius:2px;margin-left:6px}.responsive-table-translucid[_ngcontent-%COMP%] th.num[_ngcontent-%COMP%], .responsive-table-translucid[_ngcontent-%COMP%] td.num[_ngcontent-%COMP%]{text-align:right;font-variant-numeric:tabular-nums}.row-offline[_ngcontent-%COMP%]{color:#e53935d9!important}.row-not-in-ut[_ngcontent-%COMP%]{background:#e539351f!important;color:#ffffffe6!important}.row-low-transports[_ngcontent-%COMP%]{background:#ffa7261f!important;color:#ffdc96f2!important}.row-marker.row-offline[_ngcontent-%COMP%]{background:#e5393580}.row-marker.row-not-in-ut[_ngcontent-%COMP%]{background:#e5393540}.row-marker.row-low-transports[_ngcontent-%COMP%]{background:#ffa7264d}.nv-cards[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;padding:8px 0}.nv-card[_ngcontent-%COMP%]{border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:8px 10px}.nv-card[_ngcontent-%COMP%] .nv-card-pk[_ngcontent-%COMP%]{font-weight:600}.nv-card[_ngcontent-%COMP%] .nv-card-meta[_ngcontent-%COMP%]{opacity:.7;font-size:12px}.nv-card[_ngcontent-%COMP%] .nv-card-tps[_ngcontent-%COMP%]{font-size:12px;margin-top:2px;font-variant-numeric:tabular-nums}.nv-empty[_ngcontent-%COMP%]{text-align:center;opacity:.6;padding:24px}"]})}}return t})();const NEe=()=>["nodes.resources-title"],LEe=t=>({count:t}),f6=t=>["/nodes",t,"resources"];function BEe(t,n){1&t&&(h(0,"div",4),B(1,"mat-spinner",6),h(2,"span",7),p(3),b(4,"translate"),u()()),2&t&&(d(),C("diameter",16),d(2),M(y(4,2,"multi-resources.loading")))}function VEe(t,n){if(1&t&&(h(0,"div",5)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",7),p(4),u()()),2&t){const e=v();d(4),M(e.error)}}function HEe(t,n){if(1&t&&(h(0,"span",10),p(1),b(2,"translate"),b(3,"date"),u()),2&t){const e=v(2);d(),gt(" \u2014 ",y(2,2,"multi-resources.last-updated"),": ",pe(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function jEe(t,n){if(1&t&&(h(0,"div",17),p(1),u()),2&t){const e=v().$implicit;d(),M(e.error)}}function UEe(t,n){1&t&&(p(0),b(1,"number")),2&t&&E(" ",pe(1,1,v().$implicit.stats.cpu_percent,"1.0-1"),"% ")}function zEe(t,n){1&t&&(h(0,"span",18),p(1,"-"),u())}function $Ee(t,n){if(1&t&&(p(0),b(1,"number"),h(2,"span",19),p(3),u()),2&t){const e=v().$implicit,i=v(2);E(" ",pe(1,3,e.stats.mem_percent,"1.0-1"),"% "),d(3),gt("(",i.formatBytes(e.stats.mem_used)," / ",i.formatBytes(e.stats.mem_total),")")}}function WEe(t,n){1&t&&(h(0,"span",18),p(1,"-"),u())}function GEe(t,n){1&t&&(p(0),b(1,"number")),2&t&&E(" ",pe(1,1,v().$implicit.stats.disk_percent,"1.0-1"),"% ")}function qEe(t,n){1&t&&(h(0,"span",18),p(1,"-"),u())}function KEe(t,n){if(1&t&&(h(0,"tr")(1,"td"),B(2,"span",14),u(),h(3,"td")(4,"a",15)(5,"strong"),p(6),u()(),h(7,"div",16),p(8),u(),x(9,jEe,2,1,"div",17),u(),h(10,"td"),x(11,UEe,2,4)(12,zEe,2,0,"span",18),u(),h(13,"td"),x(14,$Ee,4,6)(15,WEe,2,0,"span",18),u(),h(16,"td"),x(17,GEe,2,4)(18,qEe,2,0,"span",18),u(),h(19,"td"),p(20),u(),h(21,"td"),p(22),u(),h(23,"td"),p(24),u()()),2&t){const e=n.$implicit,i=v(2);d(2),C("ngClass",e.node.online?"dot-green":"dot-red"),d(2),C("routerLink",se(17,f6,e.node.localPk)),d(2),M(e.node.label||e.node.localPk),d(2),M(e.node.localPk),d(),S(e.error?9:-1),d(),Ze(i.pctClass(null==e.stats?null:e.stats.cpu_percent)),d(),S(void 0!==(null==e.stats?null:e.stats.cpu_percent)?11:12),d(2),Ze(i.pctClass(null==e.stats?null:e.stats.mem_percent)),d(),S(void 0!==(null==e.stats?null:e.stats.mem_percent)?14:15),d(2),Ze(i.pctClass(null==e.stats?null:e.stats.disk_percent)),d(),S(void 0!==(null==e.stats?null:e.stats.disk_percent)?17:18),d(3),M(i.formatRate(e.txRate)),d(2),M(i.formatRate(e.rxRate)),d(2),M(i.formatBytes(null==e.stats||null==e.stats.process?null:e.stats.process.mem_rss))}}function YEe(t,n){if(1&t&&(h(0,"div",17),p(1),u()),2&t){const e=v().$implicit;d(),M(e.error)}}function XEe(t,n){if(1&t&&(h(0,"div",23)(1,"div")(2,"span",18),p(3),b(4,"translate"),u(),h(5,"strong"),p(6),b(7,"number"),u()(),h(8,"div")(9,"span",18),p(10),b(11,"translate"),u(),h(12,"strong"),p(13),b(14,"number"),u()(),h(15,"div")(16,"span",18),p(17),b(18,"translate"),u(),h(19,"strong"),p(20),b(21,"number"),u()(),h(22,"div")(23,"span",18),p(24),b(25,"translate"),u(),h(26,"strong"),p(27),u()(),h(28,"div")(29,"span",18),p(30),b(31,"translate"),u(),h(32,"strong"),p(33),u()(),h(34,"div")(35,"span",18),p(36),b(37,"translate"),u(),h(38,"strong"),p(39),u()()()),2&t){const e=v().$implicit,i=v(2);d(3),E("",y(4,18,"multi-resources.cpu"),":"),d(2),Ze(i.pctClass(e.stats.cpu_percent)),d(),E("",pe(7,20,e.stats.cpu_percent,"1.0-1"),"%"),d(4),E("",y(11,23,"multi-resources.mem"),":"),d(2),Ze(i.pctClass(e.stats.mem_percent)),d(),E("",pe(14,25,e.stats.mem_percent,"1.0-1"),"%"),d(4),E("",y(18,28,"multi-resources.disk"),":"),d(2),Ze(i.pctClass(e.stats.disk_percent)),d(),E("",pe(21,30,e.stats.disk_percent,"1.0-1"),"%"),d(4),E("",y(25,33,"multi-resources.tx"),":"),d(3),M(i.formatRate(e.txRate)),d(3),E("",y(31,35,"multi-resources.rx"),":"),d(3),M(i.formatRate(e.rxRate)),d(3),E("",y(37,37,"multi-resources.proc-rss"),":"),d(3),M(i.formatBytes(null==e.stats.process?null:e.stats.process.mem_rss))}}function ZEe(t,n){if(1&t&&(h(0,"div",13)(1,"div",20),B(2,"span",14),h(3,"a",21)(4,"strong"),p(5),u()()(),h(6,"div",22),p(7),u(),x(8,YEe,2,1,"div",17),x(9,XEe,40,39,"div",23),u()),2&t){const e=n.$implicit;d(2),C("ngClass",e.node.online?"dot-green":"dot-red"),d(),C("routerLink",se(6,f6,e.node.localPk)),d(2),M(e.node.label||e.node.localPk),d(2),M(e.node.localPk),d(),S(e.error?8:-1),d(),S(e.stats?9:-1)}}function QEe(t,n){if(1&t&&(h(0,"div",8)(1,"mat-icon"),p(2,"memory"),u(),h(3,"span",9),p(4),b(5,"translate"),u(),x(6,HEe,4,7,"span",10),u(),h(7,"table",11)(8,"tr"),B(9,"th"),h(10,"th"),p(11),b(12,"translate"),u(),h(13,"th"),p(14),b(15,"translate"),u(),h(16,"th"),p(17),b(18,"translate"),u(),h(19,"th"),p(20),b(21,"translate"),u(),h(22,"th"),p(23),b(24,"translate"),u(),h(25,"th"),p(26),b(27,"translate"),u(),h(28,"th"),p(29),b(30,"translate"),u()(),ve(31,KEe,25,19,"tr",null,Br().trackRow,!0),u(),h(33,"div",12),ve(34,ZEe,10,8,"div",13,Br().trackRow,!0),u()),2&t){const e=v();d(4),M(pe(5,9,"multi-resources.summary",se(26,LEe,e.rows.length))),d(2),S(e.lastUpdated?6:-1),d(5),M(y(12,12,"multi-resources.visor")),d(3),M(y(15,14,"multi-resources.cpu")),d(3),M(y(18,16,"multi-resources.mem")),d(3),M(y(21,18,"multi-resources.disk")),d(3),M(y(24,20,"multi-resources.tx")),d(3),M(y(27,22,"multi-resources.rx")),d(3),M(y(30,24,"multi-resources.proc-rss")),d(2),ye(e.rows),d(3),ye(e.rows)}}let JEe=(()=>{class t extends pn{constructor(e,i,o){super(),this.nodeService=e,this.api=i,this.cdr=o,this.tabsData=[],this.rows=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=Mc(5e3).pipe(si(0),tn(()=>this.nodeService.getNodes()),tn(e=>{const i=(e||[]).filter(r=>r.online);return 0===i.length?ae({nodes:e||[],stats:[]}):zf(i.map(r=>this.api.get(`visors/${r.localPk}/host-stats`).pipe(Ui(s=>ae({__error:s?.message||"failed"}))))).pipe(tn(r=>ae({nodes:e||[],stats:r.map((s,a)=>({pk:i[a].localPk,stats:s&&!s.__error?s:void 0,error:s&&s.__error?s.__error:void 0}))})))})).subscribe({next:({nodes:e,stats:i})=>{this.mergeStats(e,i),this.loading=!1,this.error=null,this.lastUpdated=new Date,this.cdr.markForCheck()},error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch resources"}}),super.ngOnInit()}ngOnDestroy(){this.sub?.unsubscribe()}mergeStats(e,i){const o=new Map;i.forEach(a=>o.set(a.pk,{stats:a.stats,error:a.error}));const r=new Map;this.rows.forEach(a=>r.set(a.node.localPk,a));const s=Date.now();this.rows=e.map(a=>{const l=o.get(a.localPk),c=r.get(a.localPk),f={node:a,...l};if(l?.stats){const m=l.stats.net_bytes_sent||0,g=l.stats.net_bytes_recv||0;if(c?.lastSampleAt&&void 0!==c.prevSent&&void 0!==c.prevRecv){const _=(s-c.lastSampleAt)/1e3;if(_>0){const w=Math.max(0,(m-c.prevSent)/_),k=Math.max(0,(g-c.prevRecv)/_);f.txRate=w,f.rxRate=k}}f.prevSent=m,f.prevRecv=g,f.lastSampleAt=s}return f})}pctClass(e){return null==e?"pct-na":e>=90?"pct-bad":e>=70?"pct-warn":"pct-ok"}formatRate(e){if(null==e||e<0)return"-";const i=["B/s","KB/s","MB/s","GB/s"];let o=0,r=e;for(;r>=1024&&o=1024&&o0?6:-1))},dependencies:[$t,Is,We,so,Mr,Vl,fa,xe],styles:[".loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffbf;padding:24px 0}.error-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#f87171;padding:24px 0}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-green[_ngcontent-%COMP%]{background:#4caf50}.dot-red[_ngcontent-%COMP%]{background:#f44336}.visor-link[_ngcontent-%COMP%]{color:#fffffff2;text-decoration:none}.visor-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.visor-pk[_ngcontent-%COMP%]{color:#ffffff8c;font-size:11px;word-break:break-all;font-family:monospace}.visor-err[_ngcontent-%COMP%]{color:#f87171;font-size:12px;margin-top:2px}.dim[_ngcontent-%COMP%]{color:#fff9}.small[_ngcontent-%COMP%]{font-size:.85em}.pct-ok[_ngcontent-%COMP%]{color:#4caf50;font-weight:500}.pct-warn[_ngcontent-%COMP%]{color:#ff9800;font-weight:500}.pct-bad[_ngcontent-%COMP%]{color:#f44336;font-weight:600}.pct-na[_ngcontent-%COMP%]{color:#ffffff80}.mobile-card[_ngcontent-%COMP%]{background:#ffffff0a;border-radius:4px;padding:12px;margin-bottom:10px}.mobile-card[_ngcontent-%COMP%] .mobile-header[_ngcontent-%COMP%]{display:flex;align-items:center}.mobile-card[_ngcontent-%COMP%] .mobile-pk[_ngcontent-%COMP%]{color:#ffffff8c;font-size:11px;word-break:break-all;font-family:monospace;margin:4px 0 6px}.mobile-card[_ngcontent-%COMP%] .mobile-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;font-size:12px}"]})}}return t})();const ePe=()=>["nodes.transports-title"],tPe=(t,n,e)=>({transports:t,bandwidth:n,days:e});function nPe(t,n){1&t&&(h(0,"div",10),B(1,"mat-spinner",12),h(2,"span",13),p(3),b(4,"translate"),u()()),2&t&&(d(),C("diameter",16),d(2),M(y(4,2,"network-transports.loading")))}function iPe(t,n){if(1&t&&(h(0,"div",11)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",13),p(4),u()()),2&t){const e=v();d(4),M(e.error)}}function oPe(t,n){if(1&t&&(h(0,"span",16),p(1),b(2,"translate"),b(3,"date"),u()),2&t){const e=v(2);d(),gt(" \u2014 ",y(2,2,"network-transports.last-updated"),": ",pe(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function rPe(t,n){if(1&t&&(h(0,"tr")(1,"td",20),p(2),u(),h(3,"td"),p(4),u(),h(5,"td",20),p(6),u(),h(7,"td",20),p(8),u(),h(9,"td",19),p(10),u(),h(11,"td",19),p(12),u(),h(13,"td",19)(14,"strong"),p(15),u()(),h(16,"td",21),p(17),u()()),2&t){const e=n.$implicit,i=v(3);d(2),M(e.id),d(2),M(e.type),d(2),M(e.edge_a),d(2),M(e.edge_b),d(2),M(i.fmtBytes(e.sent)),d(2),M(i.fmtBytes(e.recv)),d(3),M(i.fmtBytes(e.bandwidth)),d(),C("matTooltip",i.fmtLatencyFull(e.latency)),d(),M(i.fmtLatency(e.latency))}}function sPe(t,n){if(1&t&&(h(0,"table",17)(1,"tr")(2,"th"),p(3),b(4,"translate"),u(),h(5,"th"),p(6),b(7,"translate"),u(),h(8,"th"),p(9),b(10,"translate"),u(),h(11,"th"),p(12),b(13,"translate"),u(),h(14,"th",19),p(15),b(16,"translate"),u(),h(17,"th",19),p(18),b(19,"translate"),u(),h(20,"th",19),p(21),b(22,"translate"),u(),h(23,"th",19),p(24),b(25,"translate"),u()(),ve(26,rPe,18,9,"tr",null,Br().trackTpId,!0),u()),2&t){const e=v(2);d(3),M(y(4,8,"network-transports.tp-id")),d(3),M(y(7,10,"network-transports.type")),d(3),M(y(10,12,"network-transports.edge-a")),d(3),M(y(13,14,"network-transports.edge-b")),d(3),M(y(16,16,"network-transports.sent")),d(3),M(y(19,18,"network-transports.recv")),d(3),M(y(22,20,"network-transports.total")),d(3),M(y(25,22,"network-transports.latency")),d(2),ye(e.byTransport)}}function aPe(t,n){if(1&t&&(h(0,"span",35),p(1),u()),2&t){const e=v().$implicit,i=v(5);C("matTooltip",i.fmtLatencyFull(e.latency)),d(),M(i.fmtLatency(e.latency))}}function lPe(t,n){if(1&t&&(h(0,"div",29)(1,"span",30),p(2),u(),h(3,"span",31),p(4),u(),h(5,"span",32),p(6),u(),h(7,"span",33),p(8,"\u2192"),u(),h(9,"span",34),p(10),u(),h(11,"span",27),p(12),u(),h(13,"span",27),p(14),u(),h(15,"span")(16,"strong"),p(17),u()(),x(18,aPe,2,2,"span",35),u()),2&t){const e=n.$implicit,i=n.$index,o=n.$count,r=v(5);d(2),M(i===o-1?"\u2514\u2500\u2500":"\u251c\u2500\u2500"),d(2),M(e.id),d(2),M(e.type),d(4),M(e.remote),d(2),E("\u2191 ",r.fmtBytes(e.sent)),d(2),E("\u2193 ",r.fmtBytes(e.recv)),d(3),M(r.fmtBytes(e.bandwidth)),d(),S(e.latency&&e.latency.avg?18:-1)}}function cPe(t,n){if(1&t&&(h(0,"div",28),ve(1,lPe,19,8,"div",29,Br().trackChildId,!0),u()),2&t){const e=v().$implicit;d(),ye(e.transports)}}function dPe(t,n){if(1&t){const e=oe();h(0,"div",22)(1,"div",23),F("click",function(){const o=j(e).$implicit;return U(v(3).toggleVisor(o))}),h(2,"mat-icon",24),p(3),u(),h(4,"span",25),p(5),u(),h(6,"span",26)(7,"strong"),p(8),u()(),h(9,"span",27),p(10),u(),h(11,"span",27),p(12),u()(),x(13,cPe,3,0,"div",28),u()}if(2&t){const e=n.$implicit,i=v(3);d(2),C("inline",!0),d(),M(e.expanded?"expand_more":"chevron_right"),d(2),M(e.pk),d(3),M(i.fmtBytes(e.bandwidth)),d(2),gt("\u2191 ",i.fmtBytes(e.sent)," \u2193 ",i.fmtBytes(e.recv)),d(2),E("\xb7 ",e.transports.length," tp"),d(),S(e.expanded?13:-1)}}function uPe(t,n){if(1&t&&(h(0,"div",18),ve(1,dPe,14,8,"div",22,Br().trackVisorPk,!0),u()),2&t){const e=v(2);d(),ye(e.byVisor)}}function hPe(t,n){if(1&t&&(h(0,"div",14)(1,"mat-icon"),p(2,"swap_horiz"),u(),h(3,"span",15),p(4),b(5,"translate"),u(),x(6,oPe,4,7,"span",16),u(),x(7,sPe,28,24,"table",17),x(8,uPe,3,0,"div",18)),2&t){const e=v();d(4),E(" ",pe(5,4,"network-transports.summary",SA(7,tPe,e.rawCount,e.fmtBytes(e.networkBandwidth),e.days))," "),d(2),S(e.lastUpdated?6:-1),d(),S("compact"===e.viewMode?7:-1),d(),S("tree"===e.viewMode?8:-1)}}let fPe=(()=>{class t extends pn{constructor(e,i){super(),this.api=e,this.cdr=i,this.tabsData=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.days=1,this.viewMode="compact",this.rawCount=0,this.networkBandwidth=0,this.byTransport=[],this.byVisor=[],this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=Mc(3e5).pipe(si(0),tn(()=>this.fetch())).subscribe(),super.ngOnInit()}ngOnDestroy(){this.sub?.unsubscribe()}refreshNow(){this.fetch().subscribe()}setDays(e){e!==this.days&&(this.days=e,this.fetch().subscribe())}setViewMode(e){this.viewMode=e}toggleVisor(e){e.expanded=!e.expanded}fetch(){return this.loading=0===this.byTransport.length&&0===this.byVisor.length,this.api.get(`network/transports?days=${this.days}`).pipe(Ui(e=>(this.error=e?.message||"Failed to fetch transports",this.loading=!1,this.cdr.markForCheck(),ae(null))),tn(e=>null===e?ae(null):(this.consume(Array.isArray(e)?e:[]),ae(e))))}consume(e){this.rawCount=e.length;let i=0;const o=[],r=new Map;for(const a of e){if(!a.edges||a.edges.length<2)continue;const[l,c]=this.verifiedBandwidth(a),f=l+c;if(i+=f,0===f&&!a.latency)continue;o.push({id:a.id,type:a.type,edge_a:a.edges[0],edge_b:a.edges[1],sent:l,recv:c,bandwidth:f,latency:a.latency});const m=r.get(a.edges[0])||this.newVisorNode(a.edges[0]);m.sent+=l,m.recv+=c,m.bandwidth+=f,m.transports.push({id:a.id,type:a.type,remote:a.edges[1],sent:l,recv:c,bandwidth:f,latency:a.latency}),r.set(a.edges[0],m);const g=r.get(a.edges[1])||this.newVisorNode(a.edges[1]);g.sent+=c,g.recv+=l,g.bandwidth+=f,g.transports.push({id:a.id,type:a.type,remote:a.edges[0],sent:c,recv:l,bandwidth:f,latency:a.latency}),r.set(a.edges[1],g)}o.sort((a,l)=>l.bandwidth-a.bandwidth);const s=Array.from(r.values()).sort((a,l)=>l.bandwidth-a.bandwidth);s.forEach(a=>a.transports.sort((l,c)=>c.bandwidth-l.bandwidth)),this.byTransport=o,this.byVisor=s,this.networkBandwidth=i,this.loading=!1,this.error=null,this.lastUpdated=new Date,this.cdr.markForCheck()}newVisorNode(e){return{pk:e,sent:0,recv:0,bandwidth:0,transports:[],expanded:!1}}verifiedBandwidth(e){let i=0,o=0;for(const r of e.daily||[]){const s=!!r.a&&((r.a.sent||0)>0||(r.a.recv||0)>0),a=!!r.b&&((r.b.sent||0)>0||(r.b.recv||0)>0);s&&a?(i+=Math.min(r.a.sent||0,r.b.recv||0),o+=Math.min(r.a.recv||0,r.b.sent||0)):s?(i+=r.a.sent||0,o+=r.a.recv||0):a&&(i+=r.b.recv||0,o+=r.b.sent||0)}return[i,o]}fmtBytes(e){if(!e||e<0)return"-";const i=["B","KB","MB","GB","TB"];let o=0,r=e;for(;r>=1024&&o0||o.byVisor.length>0?36:-1))},dependencies:[Pn,We,Kt,so,Mr,fa,xe],styles:[".controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:12px;padding:10px 14px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:6px}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] .control-label[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffa6;margin-right:4px}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{min-width:0;padding:0 12px!important;opacity:.6}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{opacity:1;background:#2196f32e!important;color:#fff}.controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%]{margin-left:auto}.loading-row[_ngcontent-%COMP%], .error-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:24px 0}.error-row[_ngcontent-%COMP%]{color:#f87171}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.dim[_ngcontent-%COMP%]{color:#fff9}.small[_ngcontent-%COMP%]{font-size:.85em}.mono[_ngcontent-%COMP%]{font-family:monospace;word-break:break-all}.num[_ngcontent-%COMP%]{text-align:right}.nt-compact[_ngcontent-%COMP%]{table-layout:auto}.nt-compact[_ngcontent-%COMP%] td.mono[_ngcontent-%COMP%]{font-size:11px}.nt-compact[_ngcontent-%COMP%] th.num[_ngcontent-%COMP%], .nt-compact[_ngcontent-%COMP%] td.num[_ngcontent-%COMP%]{white-space:nowrap}.nt-tree[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px}.nt-visor[_ngcontent-%COMP%]{background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:4px}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:6px 10px;cursor:pointer;flex-wrap:wrap}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%]:hover{background:#ffffff0a}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .exp[_ngcontent-%COMP%]{color:#fff9}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .nt-pk[_ngcontent-%COMP%]{flex:1 1 320px;min-width:0;font-size:11px;color:#ffffffd9}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .nt-bw[_ngcontent-%COMP%]{font-size:13px}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .dim[_ngcontent-%COMP%]{font-size:12px}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%]{padding:4px 12px 8px 36px;display:flex;flex-direction:column;gap:4px}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;padding:2px 0}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-prefix[_ngcontent-%COMP%]{font-family:monospace;color:#ffffff73}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-tp-id[_ngcontent-%COMP%]{font-size:11px;color:#ffffffd9}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-tp-type[_ngcontent-%COMP%]{background:#2196f32e;border:1px solid rgba(33,150,243,.35);padding:0 6px;border-radius:3px;font-size:10px;text-transform:lowercase}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-arrow[_ngcontent-%COMP%]{color:#ffffff73}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-tp-remote[_ngcontent-%COMP%]{font-size:11px;color:#ffffffb3}"]})}}return t})(),pPe=(()=>{class t{constructor(e){this.apiService=e}getSessions(e){return this.apiService.get(`visors/${e}/dmsg/sessions`)}connectAll(e){return this.apiService.post(`visors/${e}/dmsg/connect-all`)}setSessionsCount(e,i){return this.apiService.put(`visors/${e}/dmsg/sessions-count`,{count:i})}static{this.\u0275fac=function(i){return new(i||t)(ce(zi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function mPe(t,n){1&t&&(h(0,"div",1),B(1,"mat-spinner",3),h(2,"span",4),p(3),b(4,"translate"),u()()),2&t&&(d(),C("diameter",16),d(2),M(y(4,2,"dmsg-settings.loading")))}function gPe(t,n){if(1&t&&(h(0,"div",2)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",4),p(4),u()()),2&t){const e=v();d(4),M(e.error)}}function _Pe(t,n){if(1&t&&(h(0,"span",7),p(1),b(2,"translate"),b(3,"date"),u()),2&t){const e=v(2);d(),gt(" \u2014 ",y(2,2,"dmsg-settings.last-updated"),": ",pe(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function bPe(t,n){1&t&&B(0,"mat-spinner",11),2&t&&C("diameter",14)}function vPe(t,n){1&t&&B(0,"mat-spinner",11),2&t&&C("diameter",14)}function yPe(t,n){if(1&t&&(h(0,"div",19),p(1),b(2,"translate"),u()),2&t){const e=v(3);d(),gt(" ",y(2,2,"dmsg-settings.result-failed"),": ",e.objectKeys(e.lastActionResult.failed).length," ")}}function CPe(t,n){if(1&t&&(h(0,"div",15)(1,"span",18),p(2),u(),p(3),b(4,"translate"),b(5,"translate"),b(6,"translate"),x(7,yPe,3,4,"div",19),u()),2&t){const e=v(2);d(2),E("",e.lastActionLabel,":"),d(),H0(" ",y(4,8,"dmsg-settings.result-total")," ",e.lastActionResult.total,", ",y(5,10,"dmsg-settings.result-already")," ",e.lastActionResult.already_connected,", ",y(6,12,"dmsg-settings.result-new")," ",e.lastActionResult.newly_connected," "),d(4),S(e.lastActionResult.failed&&e.objectKeys(e.lastActionResult.failed).length>0?7:-1)}}function wPe(t,n){if(1&t&&(h(0,"div",26),p(1),u()),2&t){const e=n.$implicit;d(),M(e)}}function xPe(t,n){if(1&t&&(h(0,"div",24),ve(1,wPe,2,1,"div",26,Br().trackByPk,!0),u()),2&t){const e=v().$implicit;d(),ye(e.servers)}}function SPe(t,n){1&t&&(h(0,"div",25),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"dmsg-settings.no-sessions")))}function kPe(t,n){if(1&t&&(h(0,"div",16)(1,"div",20)(2,"span",21),p(3),u(),h(4,"span",22),p(5),b(6,"translate"),u()(),h(7,"div",23),p(8),u(),x(9,xPe,3,0,"div",24)(10,SPe,3,3,"div",25),u()),2&t){const e=n.$implicit,i=v(2);d(3),M(i.roleLabel(e.role)),d(2),gt("",e.count," ",y(6,5,"dmsg-settings.sessions")),d(3),M(e.pk),d(),S(e.servers&&e.servers.length>0?9:10)}}function DPe(t,n){1&t&&(h(0,"div",17)(1,"div",25),p(2),b(3,"translate"),u()()),2&t&&(d(2),M(y(3,1,"dmsg-settings.no-clients")))}function MPe(t,n){if(1&t){const e=oe();h(0,"div",5)(1,"mat-icon"),p(2,"hub"),u(),h(3,"span",6),p(4),b(5,"translate"),u(),x(6,_Pe,4,7,"span",7),u(),h(7,"div",8)(8,"div",9)(9,"button",10),F("click",function(){return j(e),U(v().connectAll())}),x(10,bPe,1,1,"mat-spinner",11),p(11),b(12,"translate"),u()(),h(13,"span",12),p(14,"|"),u(),h(15,"div",9)(16,"label",13),p(17),b(18,"translate"),u(),h(19,"input",14),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.sessionsCountInput,o)||(r.sessionsCountInput=o),U(o)}),u(),h(20,"button",10),F("click",function(){return j(e),U(v().applySessionsCount())}),x(21,vPe,1,1,"mat-spinner",11),p(22),b(23,"translate"),u()()(),x(24,CPe,8,14,"div",15),ve(25,kPe,11,7,"div",16,Br().trackByRole,!0),x(27,DPe,4,3,"div",17)}if(2&t){const e=v();d(4),M(y(5,13,"dmsg-settings.summary")),d(2),S(e.lastUpdated?6:-1),d(3),C("disabled",e.connectAllInFlight||e.setCountInFlight),d(),S(e.connectAllInFlight?10:-1),d(),E(" ",y(12,15,"dmsg-settings.connect-all")," "),d(6),E("",y(18,17,"dmsg-settings.sessions-count-label"),":"),d(2),Ut("ngModel",e.sessionsCountInput),C("disabled",e.setCountInFlight||e.connectAllInFlight),d(),C("disabled",e.setCountInFlight||e.connectAllInFlight),d(),S(e.setCountInFlight?21:-1),d(),E(" ",y(23,19,"dmsg-settings.apply-count")," "),d(2),S(e.lastActionResult?24:-1),d(),ye(e.clientList()),d(2),S(0===e.clientList().length?27:-1)}}let TPe=(()=>{class t extends pn{constructor(e,i){super(),this.dmsgSvc=e,this.snackbar=i,this.pk="",this.sessions=null,this.loading=!0,this.error=null,this.lastUpdated=null,this.sessionsCountInput=0,this.connectAllInFlight=!1,this.setCountInFlight=!1,this.lastActionResult=null,this.lastActionLabel=""}ngOnInit(){return this.nodeSub=ke.currentNode.subscribe(e=>{const i=!this.pk;this.pk=e?.localPk||"",i&&this.pk&&this.startPolling()}),super.ngOnInit()}ngOnDestroy(){this.nodeSub?.unsubscribe(),this.pollSub?.unsubscribe()}startPolling(){this.pollSub=Mc(2e4).pipe(si(0),tn(()=>this.dmsgSvc.getSessions(this.pk))).subscribe({next:e=>{this.sessions=e||{},this.loading=!1,this.error=null,this.lastUpdated=new Date},error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch dmsg sessions"}})}refresh(){this.pk&&this.dmsgSvc.getSessions(this.pk).subscribe({next:e=>{this.sessions=e||{},this.lastUpdated=new Date},error:()=>{}})}connectAll(){this.connectAllInFlight||!this.pk||(this.connectAllInFlight=!0,this.lastActionResult=null,this.dmsgSvc.connectAll(this.pk).subscribe({next:e=>{this.connectAllInFlight=!1,this.lastActionResult=e,this.lastActionLabel="Connect to all",this.snackbar.showDone(`Opened ${e.newly_connected} new session(s); already had ${e.already_connected}.`),this.refresh()},error:e=>{this.connectAllInFlight=!1,this.snackbar.showError(`connect-all failed: ${e?.message||"unknown error"}`)}}))}applySessionsCount(){if(!this.setCountInFlight&&this.pk){if(this.sessionsCountInput<0)return void this.snackbar.showError("Sessions count must be >= 0");this.setCountInFlight=!0,this.lastActionResult=null,this.dmsgSvc.setSessionsCount(this.pk,this.sessionsCountInput).subscribe({next:e=>{this.setCountInFlight=!1,this.lastActionResult=e,this.lastActionLabel=`Set sessions_count = ${this.sessionsCountInput}`,this.snackbar.showDone(`Persisted sessions_count=${this.sessionsCountInput}; opened ${e.newly_connected} new session(s).`),this.refresh()},error:e=>{this.setCountInFlight=!1,this.snackbar.showError(`set-sessions failed: ${e?.message||"unknown error"}`)}})}}clientList(){const e=[];return this.sessions&&(this.sessions.main&&e.push(this.sessions.main),this.sessions.route_setup&&e.push(this.sessions.route_setup),this.sessions.transport_setup&&e.push(this.sessions.transport_setup)),e}roleLabel(e){switch(e){case"main":return"Main visor";case"route_setup":return"Route Setup Node";case"transport_setup":return"Transport Setup Node";default:return e}}trackByRole(e,i){return i.role}trackByPk(e,i){return i}objectKeys(e){return e?Object.keys(e):[]}static{this.\u0275fac=function(i){return new(i||t)(O(pPe),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-dmsg-settings"]],standalone:!1,features:[be],decls:4,vars:3,consts:[[1,"dmsg-tab-body"],[1,"loading-row"],[1,"error-row"],[3,"diameter"],[1,"ml-2"],[1,"summary-line"],[1,"ml-1"],[1,"last-updated"],[1,"actions","mt-3"],[1,"action-group"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"d-inline-block","mr-2",3,"diameter"],[1,"divider"],["for","sessions-count"],["id","sessions-count","type","number","min","0","max","99",3,"ngModelChange","ngModel","disabled"],[1,"action-result"],[1,"client-card"],[1,"client-card","missing"],[1,"result-label"],[1,"result-failed"],[1,"client-header"],[1,"role"],[1,"count"],[1,"client-pk"],[1,"server-list"],[1,"empty"],[1,"server"]],template:function(i,o){1&i&&(h(0,"div",0),x(1,mPe,5,4,"div",1),x(2,gPe,5,1,"div",2),x(3,MPe,28,21),u()),2&i&&(d(),S(o.loading&&!o.sessions?1:-1),d(),S(o.error&&!o.sessions?2:-1),d(),S(o.sessions?3:-1))},dependencies:[Gt,rc,qt,tp,sv,Pn,We,cu,so,fa,xe],styles:['@charset "UTF-8";.dmsg-tab-body[_ngcontent-%COMP%]{margin-top:1.5rem}.loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffbf;padding:24px 0}.error-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#f87171;padding:24px 0}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:16px 0 24px;padding:14px 16px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:6px}.actions[_ngcontent-%COMP%] .action-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.actions[_ngcontent-%COMP%] .action-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{color:#ffffffbf;font-size:.9em}.actions[_ngcontent-%COMP%] .action-group[_ngcontent-%COMP%] input[type=number][_ngcontent-%COMP%]{width:72px;background:#ffffff14;border:1px solid rgba(255,255,255,.15);color:#fff;padding:4px 8px;border-radius:4px;font-size:.95em}.actions[_ngcontent-%COMP%] .divider[_ngcontent-%COMP%]{color:#ffffff40;padding:0 6px}.action-result[_ngcontent-%COMP%]{margin:8px 0 20px;padding:10px 14px;background:#4ade8014;border-left:3px solid #4ade80;border-radius:4px;font-size:.9em;color:#ffffffe6}.action-result[_ngcontent-%COMP%] .result-label[_ngcontent-%COMP%]{font-weight:600;margin-right:8px}.action-result[_ngcontent-%COMP%] .result-failed[_ngcontent-%COMP%]{color:#f87171;margin-top:4px;font-size:.85em}.client-card[_ngcontent-%COMP%]{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:14px 16px;margin-bottom:14px}.client-card[_ngcontent-%COMP%] .client-header[_ngcontent-%COMP%]{display:flex;align-items:baseline;margin-bottom:10px;gap:10px}.client-card[_ngcontent-%COMP%] .client-header[_ngcontent-%COMP%] .role[_ngcontent-%COMP%]{font-size:1.1em;font-weight:600;color:#fff}.client-card[_ngcontent-%COMP%] .client-header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%]{color:#ffffffa6;font-size:.85em}.client-card[_ngcontent-%COMP%] .client-pk[_ngcontent-%COMP%]{font-family:monospace;font-size:.8em;color:#ffffff8c;margin-bottom:10px;word-break:break-all}.client-card[_ngcontent-%COMP%] .server-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:3px}.client-card[_ngcontent-%COMP%] .server-list[_ngcontent-%COMP%] .server[_ngcontent-%COMP%]{font-family:monospace;font-size:.82em;color:#ffffffd9;padding:2px 0}.client-card[_ngcontent-%COMP%] .server-list[_ngcontent-%COMP%] .server[_ngcontent-%COMP%]:before{content:"\\2022";margin-right:8px;color:#4ade80}.client-card[_ngcontent-%COMP%] .empty[_ngcontent-%COMP%]{color:#ffffff80;font-size:.9em;font-style:italic}.client-card.missing[_ngcontent-%COMP%]{opacity:.55}']})}}return t})();function EPe(t,n){if(1&t&&B(0,"app-node-app-list",0),2&t){const e=v();C("apps",e.apps)("showShortList",!1)("nodePK",e.nodePK)}}let PPe=(()=>{class t extends pn{ngOnInit(){return this.dataSubscription=ke.currentNode.subscribe(e=>{this.nodePK=e.localPk,this.apps=e.apps}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})()}static{this.\u0275cmp=re({type:t,selectors:[["app-all-apps"]],standalone:!1,features:[be],decls:1,vars:1,consts:[[3,"apps","showShortList","nodePK"]],template:function(i,o){1&i&&x(0,EPe,1,3,"app-node-app-list",0),2&i&&S(o.apps?0:-1)},dependencies:[a6],encapsulation:2})}}return t})();const xD=t=>({time:t}),IPe=(t,n)=>({"latency-high":t,"latency-very-high":n}),OPe=(t,n)=>n.name;function APe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),b(3,"translate"),u(),B(4,"app-copy-to-clipboard-text",8),u()),2&t){const e=v(2);d(2),E("",y(3,3,"node.details.node-info.public-ip")," "),d(2),C("text",Qt(e.node.publicIp))}}function RPe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),b(3,"translate"),u(),B(4,"app-copy-to-clipboard-text",8),u()),2&t){const e=v(2);d(2),E("",y(3,3,"node.details.node-info.ip")," "),d(2),C("text",Qt(e.node.ip))}}function FPe(t,n){1&t&&(p(0),b(1,"translate")),2&t&>(" ",v(2).node.dmsgServers.length," ",y(1,2,"node.details.node-info.connected")," ")}function NPe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"node.details.node-info.no-dmsg-server")," ")}function LPe(t,n){if(1&t&&(h(0,"span",16),p(1),u()),2&t){const e=v().$implicit,i=v(3);C("ngClass",_t(2,IPe,e.latency>3e8,e.latency>8e8)),d(),E(" ",i.formatLatency(e.latency)," ")}}function BPe(t,n){if(1&t&&(h(0,"div",15),B(1,"app-copy-to-clipboard-text",8),x(2,LPe,2,5,"span",16),u()),2&t){const e=n.$implicit;d(),C("text",Qt(e.pk)),d(),S(e.latency>0?2:-1)}}function VPe(t,n){if(1&t&&(h(0,"div",9),ve(1,BPe,3,3,"div",15,Fe),u()),2&t){const e=v(2);d(),ye(e.node.dmsgServers)}}function HPe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),b(3,"translate"),u(),p(4),u()),2&t){const e=v(2);d(2),E("",y(3,2,"node.details.node-info.skybian-version")," "),d(2),E(" ",e.node.skybianBuildVersion," ")}}function jPe(t,n){if(1&t&&(h(0,"mat-icon",10),b(1,"translate"),p(2," info "),u()),2&t){const e=v(2);C("inline",!0)("matTooltip",pe(1,2,"node.details.node-info.time.minutes",se(5,xD,e.timeOnline.totalMinutes)))}}function UPe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),u(),p(3),u()),2&t){const e=n.$implicit;d(2),E("",e.name,": "),d(),E(" ",e.value," ")}}function zPe(t,n){1&t&&ve(0,UPe,4,2,"span",3,OPe),2&t&&ye(v(3).ports)}function $Pe(t,n){if(1&t){const e=oe();B(0,"div",11),h(1,"div",1)(2,"span",12),F("click",function(){j(e);const o=v(2);return U(o.showPorts=!o.showPorts)}),h(3,"mat-icon",13),p(4),u(),p(5),b(6,"translate"),h(7,"span",17),p(8),u()(),x(9,zPe,2,0),u()}if(2&t){const e=v(2);d(3),C("inline",!0),d(),M(e.showPorts?"expand_more":"chevron_right"),d(),E(" ",y(6,5,"node.details.ports.title")," "),d(3),E("(",e.ports.length,")"),d(),S(e.showPorts?9:-1)}}function WPe(t,n){if(1&t&&(h(0,"pre",14),p(1),u()),2&t){const e=v(2);d(),M(e.rawConfig)}}function GPe(t,n){if(1&t){const e=oe();h(0,"div",0)(1,"div",1)(2,"span",2),p(3),b(4,"translate"),u(),h(5,"span",3)(6,"span",4),p(7),b(8,"translate"),u(),h(9,"span",5),F("click",function(){return j(e),U(v().showEditLabelDialog())}),h(10,"span",6),p(11),u(),h(12,"mat-icon",7),p(13,"edit"),u()()(),h(14,"span",3)(15,"span",4),p(16),b(17,"translate"),u(),B(18,"app-copy-to-clipboard-text",8),u(),h(19,"span",3)(20,"span",4),p(21),b(22,"translate"),u(),p(23),b(24,"translate"),u(),x(25,APe,5,5,"span",3),x(26,RPe,5,5,"span",3),h(27,"span",3)(28,"span",4),p(29),b(30,"translate"),u(),x(31,FPe,2,4),x(32,NPe,2,3),u(),x(33,VPe,3,0,"div",9),h(34,"span",3)(35,"span",4),p(36),b(37,"translate"),u(),p(38),b(39,"translate"),u(),h(40,"span",3)(41,"span",4),p(42),b(43,"translate"),u(),p(44),b(45,"translate"),u(),h(46,"span",3)(47,"span",4),p(48),b(49,"translate"),u(),p(50),b(51,"translate"),u(),h(52,"span",3)(53,"span",4),p(54),b(55,"translate"),u(),p(56),b(57,"translate"),u(),h(58,"span",3)(59,"span",4),p(60),b(61,"translate"),u(),p(62),b(63,"translate"),u(),x(64,HPe,5,4,"span",3),h(65,"span",3)(66,"span",4),p(67),b(68,"translate"),u(),p(69),b(70,"translate"),x(71,jPe,3,7,"mat-icon",10),u()(),x(72,$Pe,10,7),B(73,"div",11),h(74,"div",1)(75,"span",12),F("click",function(){return j(e),U(v().onConfigToggle())}),h(76,"mat-icon",13),p(77),u(),p(78),b(79,"translate"),u(),x(80,WPe,2,1,"pre",14),u()()}if(2&t){const e=v();d(3),M(y(4,34,e.node.isHypervisor?"node.details.node-info.title-local":"node.details.node-info.title")),d(4),E("",y(8,36,"node.details.node-info.label")," "),d(4),M(e.node.label),d(),C("inline",!0),d(4),E("",y(17,38,"node.details.node-info.public-key")," "),d(2),C("text",Qt(e.node.localPk)),d(3),E("",y(22,40,"node.details.node-info.symmetic-nat")," "),d(2),E(" ",y(24,42,e.node.isSymmeticNat?"common.yes":"common.no")," "),d(2),S(e.node.isSymmeticNat?-1:25),d(),S(e.node.ip?26:-1),d(3),E("",y(30,44,"node.details.node-info.dmsg-servers")," "),d(2),S(e.node.dmsgServers&&e.node.dmsgServers.length>0?31:-1),d(),S(e.node.dmsgServers&&0!==e.node.dmsgServers.length?-1:32),d(),S(e.node.dmsgServers&&e.node.dmsgServers.length>0?33:-1),d(3),E("",y(37,46,"node.details.node-info.ping")," "),d(2),E(" ",pe(39,48,"common.time-in-ms",se(74,xD,e.node.roundTripPing))," "),d(4),E("",y(43,51,"node.details.node-info.node-version")," "),d(2),E(" ",e.node.version?e.node.version:y(45,53,"common.unknown")," "),d(4),E("",y(49,55,"node.details.node-info.config-version")," "),d(2),E(" ",e.node.configVersion?e.node.configVersion:y(51,57,"common.unknown")," "),d(4),E("",y(55,59,"node.details.node-info.os")," "),d(2),E(" ",e.node.os?e.node.os:y(57,61,"common.unknown")," "),d(4),E("",y(61,63,"node.details.node-info.arch")," "),d(2),E(" ",e.node.arch?e.node.arch:y(63,65,"common.unknown")," "),d(2),S(e.node.skybianBuildVersion?64:-1),d(3),E("",y(68,67,"node.details.node-info.time.title")," "),d(2),E(" ",pe(70,69,"node.details.node-info.time."+e.timeOnline.translationVarName,se(76,xD,e.timeOnline.elapsedTime))," "),d(2),S(e.timeOnline.totalMinutes>60?71:-1),d(),S(e.ports.length>0?72:-1),d(4),C("inline",!0),d(),M(e.showConfigSection?"expand_more":"chevron_right"),d(),E(" ",y(79,72,"node.details.config.title")," "),d(2),S(e.showConfigSection&&e.rawConfig?80:-1)}}let qPe=(()=>{class t{set nodeInfo(e){this.node=e,this.timeOnline=gv.getElapsedTime(e.secondsOnline),this.fetchPorts(e.localPk)}constructor(e,i,o,r){this.dialog=e,this.storageService=i,this.snackbarService=o,this.apiService=r,this.ports=[],this.showPorts=!1,this.rawConfig="",this.showConfigSection=!1}ngOnDestroy(){}showEditLabelDialog(){let e=this.storageService.getLabelInfo(this.node.localPk);e||(e={id:this.node.localPk,label:"",identifiedElementType:ro.Node}),wk.openDialog(this.dialog,e).afterClosed().subscribe(i=>{i&&ke.refreshCurrentDisplayedData()})}hasDmsgServer(){return!(!this.node||0===this.node.dmsgServerPk.replace(/0/g,"").length)}formatLatency(e){const i=e/1e6;return i<10?i.toFixed(2)+"ms":Math.round(i)+"ms"}fetchPorts(e){this.apiService.get(`visors/${e}/ports`).subscribe(i=>{this.ports=i&&"object"==typeof i?Object.entries(i).map(([o,r])=>({name:o,value:JSON.stringify(r)})):[]},()=>{this.ports=[]})}onConfigToggle(){this.showConfigSection=!this.showConfigSection,this.showConfigSection&&!this.rawConfig&&this.apiService.get(`visors/${this.node.localPk}/runtime-config`).subscribe(e=>{this.rawConfig=JSON.stringify(e,null,2)},()=>{this.snackbarService.showError("common.loading-error")})}static{this.\u0275fac=function(i){return new(i||t)(O(Ot),O(ti),O(ct),O(zi))}}static{this.\u0275cmp=re({type:t,selectors:[["app-node-info-content"]],inputs:{nodeInfo:"nodeInfo"},standalone:!1,decls:1,vars:1,consts:[[1,"font-smaller","d-flex","flex-column","mt-4.5"],[1,"d-flex","flex-column"],[1,"section-title"],[1,"info-line"],[1,"title"],[1,"highlight-internal-icon",3,"click"],[1,"text-with-small-right-margin"],[1,"edit-icon",3,"inline"],[3,"text"],[1,"dmsg-servers-list"],[3,"inline","matTooltip"],[1,"separator"],[1,"section-title","collapsible-header",2,"cursor","pointer",3,"click"],[3,"inline"],[1,"raw-config"],[1,"dmsg-server-item"],[1,"dmsg-latency",3,"ngClass"],[1,"count-badge"]],template:function(i,o){1&i&&x(0,GPe,81,78,"div",0),2&i&&S(o.node?0:-1)},dependencies:[$t,We,Kt,op,xe],styles:[".section-title[_ngcontent-%COMP%]{font-size:1rem;font-weight:700;text-transform:uppercase;color:#00d4ff;text-shadow:0 0 10px rgba(0,212,255,.5),0 0 20px rgba(0,212,255,.3);letter-spacing:1px;margin-bottom:8px}.info-table[_ngcontent-%COMP%]{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;align-items:baseline;margin-top:8px}.info-table[_ngcontent-%COMP%] .info-label[_ngcontent-%COMP%]{opacity:.7;white-space:nowrap;font-size:.9em}.info-table[_ngcontent-%COMP%] .info-value[_ngcontent-%COMP%]{word-break:break-word}.info-line[_ngcontent-%COMP%]{word-break:break-word;margin-top:7px;display:flex;align-items:baseline;gap:6px}.info-line[_ngcontent-%COMP%] .text-with-right-margin[_ngcontent-%COMP%]{margin-right:5px}.info-line[_ngcontent-%COMP%] .text-with-small-right-margin[_ngcontent-%COMP%]{margin-right:3px}.info-line[_ngcontent-%COMP%] .link-icon[_ngcontent-%COMP%]{font-size:20px;line-height:1;color:#fff!important;cursor:pointer}.info-line[_ngcontent-%COMP%] .edit-icon[_ngcontent-%COMP%]{display:inline!important}.info-line[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:3px;-webkit-user-select:none;user-select:none}.info-line[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{margin-left:7px}.info-line[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{opacity:.7;white-space:nowrap;min-width:120px;font-size:.9em}.separator[_ngcontent-%COMP%]{width:100%;height:0px;margin:1rem 0;border-top:1px solid rgba(255,255,255,.15);opacity:.5}.config-button-container[_ngcontent-%COMP%]{margin-top:10px;margin-left:-4px}.dmsg-servers-list[_ngcontent-%COMP%]{margin-left:0;margin-top:8px;display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:#00d4ff0d;border-radius:6px;border-left:2px solid rgba(0,212,255,.3)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%]{font-family:Consolas,Monaco,Courier New,monospace;font-size:.82em;display:flex;align-items:center;gap:10px;padding:4px 0;color:#fffffff2;transition:all .2s ease}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%]:hover{color:#00d4ff;text-shadow:0 0 8px rgba(0,212,255,.4)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%] .dmsg-latency[_ngcontent-%COMP%]{color:#4ade80;font-weight:500;font-size:.95em;text-shadow:0 0 6px rgba(74,222,128,.3)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%] .dmsg-latency.latency-high[_ngcontent-%COMP%]{color:#fbbf24;text-shadow:0 0 6px rgba(251,191,36,.3)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%] .dmsg-latency.latency-very-high[_ngcontent-%COMP%]{color:#f87171;text-shadow:0 0 6px rgba(248,113,113,.3)}.glow-value[_ngcontent-%COMP%]{color:#e0f2fe;text-shadow:0 0 4px rgba(224,242,254,.2)}.status-online[_ngcontent-%COMP%]{color:#4ade80;text-shadow:0 0 8px rgba(74,222,128,.5)}.status-offline[_ngcontent-%COMP%]{color:#f87171;text-shadow:0 0 8px rgba(248,113,113,.5)}.raw-config[_ngcontent-%COMP%]{margin-top:10px;padding:12px;background:#0000004d;border:1px solid rgba(0,212,255,.2);border-radius:6px;font-family:Consolas,Monaco,Courier New,monospace;font-size:.8em;color:#ffffffe6;overflow-x:auto;max-height:400px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.sub-health[_ngcontent-%COMP%]{padding-left:12px;font-size:.9em;color:#ffffffd9}.collapsible-header[_ngcontent-%COMP%]{display:flex;align-items:center;-webkit-user-select:none;user-select:none}.collapsible-header[_ngcontent-%COMP%]:hover{color:#a5b4fc}.collapsible-header[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:4px;font-size:18px;width:18px;height:18px}.collapsible-header[_ngcontent-%COMP%] .count-badge[_ngcontent-%COMP%]{margin-left:6px;color:#ffffff8c;font-weight:400;font-size:.85em}.transport-stats[_ngcontent-%COMP%]{color:#ffffffd9}.transport-stats[_ngcontent-%COMP%] .transport-type[_ngcontent-%COMP%]{color:#a5b4fc;font-weight:500}.transport-stats[_ngcontent-%COMP%] .transport-count[_ngcontent-%COMP%]{color:#4ade80;font-weight:600}.inline-edit-btn[_ngcontent-%COMP%]{margin-left:4px;height:24px;width:24px;line-height:24px;opacity:.7}.inline-edit-btn[_ngcontent-%COMP%]:hover{opacity:1}.toggle-line[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.toggle-line[_ngcontent-%COMP%] .info-tip[_ngcontent-%COMP%]{opacity:.5;font-size:16px;cursor:help}.inline-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;margin-top:6px;margin-bottom:6px}.inline-form[_ngcontent-%COMP%] .inline-form-field[_ngcontent-%COMP%]{width:100%}.inline-form[_ngcontent-%COMP%] .inline-form-field-sm[_ngcontent-%COMP%]{width:120px}.inline-form[_ngcontent-%COMP%] .inline-form-actions[_ngcontent-%COMP%]{display:flex;gap:8px}.collapsible-link[_ngcontent-%COMP%]{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:4px;margin-top:6px;opacity:.8}.collapsible-link[_ngcontent-%COMP%]:hover{opacity:1}.reward-rules[_ngcontent-%COMP%]{background:#00000040;padding:8px 10px;margin:6px 0;font-size:12px;max-height:360px;overflow:auto;white-space:pre-wrap;word-break:break-word}"]})}}return t})(),KPe=(()=>{class t extends pn{ngOnInit(){return this.nodeSubscription=ke.currentNode.subscribe(e=>{this.node=e}),super.ngOnInit()}ngOnDestroy(){this.nodeSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})()}static{this.\u0275cmp=re({type:t,selectors:[["app-node-info"]],standalone:!1,features:[be],decls:1,vars:1,consts:[[3,"nodeInfo"]],template:function(i,o){1&i&&B(0,"app-node-info-content",0),2&i&&C("nodeInfo",o.node)},dependencies:[qPe],encapsulation:2})}}return t})();const YPe=()=>[];function XPe(t,n){1&t&&(h(0,"div",6),B(1,"mat-spinner",7),u())}function ZPe(t,n){1&t&&(h(0,"span"),p(1,"open"),u())}function QPe(t,n){1&t&&(h(0,"span"),p(1,"s"),u())}function JPe(t,n){if(1&t&&(h(0,"span"),p(1),it(2,QPe,2,0,"span",5),u()),2&t){const e=v().$implicit;d(),E(" ",e.whitelist.length," PK"),d(),C("ngIf",1!==e.whitelist.length)}}function eIe(t,n){if(1&t){const e=oe();h(0,"button",41),F("click",function(){j(e);const o=v(2).$implicit;return U(v(3).clearWhitelist(o))}),p(1," Clear "),u()}}function tIe(t,n){if(1&t){const e=oe();h(0,"tr",32)(1,"td",33)(2,"div",34)(3,"p",35),p(4," Comma- or whitespace-separated public keys. Empty = accessible to all authenticated peers. "),u(),h(5,"mat-form-field",36)(6,"mat-label"),p(7),u(),h(8,"textarea",37),zt("ngModelChange",function(o){j(e);const r=v(4);return Zt(r.whitelistInput,o)||(r.whitelistInput=o),U(o)}),u()(),h(9,"div",38)(10,"button",22),F("click",function(){j(e);const o=v().$implicit;return U(v(3).saveWhitelist(o))}),h(11,"mat-icon"),p(12,"save"),u(),p(13," Save "),u(),it(14,eIe,2,0,"button",39),h(15,"button",40),F("click",function(){return j(e),U(v(4).cancelEditWhitelist())}),p(16,"Cancel"),u()()()()()}if(2&t){const e=v().$implicit,i=v(3);d(7),E("Allowed PKs for port ",e.port),d(),Ut("ngModel",i.whitelistInput),d(6),C("ngIf",e.whitelist&&e.whitelist.length>0)}}function nIe(t,n){if(1&t){const e=oe();Vr(0),h(1,"tr")(2,"td",25),p(3),u(),h(4,"td",25),p(5),u(),h(6,"td"),p(7),u(),h(8,"td")(9,"mat-checkbox",26),F("change",function(){const o=j(e).$implicit;return U(v(3).toggleSkynet(o))}),u()(),h(10,"td")(11,"mat-checkbox",26),F("change",function(){const o=j(e).$implicit;return U(v(3).toggleDmsg(o))}),u()(),h(12,"td")(13,"mat-checkbox",26),F("change",function(){const o=j(e).$implicit;return U(v(3).toggleLanding(o))}),u()(),h(14,"td")(15,"button",27),F("click",function(){const o=j(e).$implicit;return U(v(3).startEditWhitelist(o))}),it(16,ZPe,2,0,"span",5)(17,JPe,3,2,"span",5),h(18,"mat-icon",28),p(19,"edit"),u()()(),h(20,"td",29)(21,"button",30),F("click",function(){const o=j(e).$implicit;return U(v(3).removePort(o.port))}),h(22,"mat-icon"),p(23,"close"),u()()()(),it(24,tIe,17,3,"tr",31),cr()}if(2&t){const e=n.$implicit,i=v(3);d(3),M(e.port),d(2),M(e.proxy_addr||"localhost:"+(e.local_port||e.port)),d(2),M(e.label||"-"),d(2),C("checked",e.skynet),d(2),C("checked",e.dmsg),d(2),C("checked",e.show_on_landing),d(2),C("matTooltip",(e.whitelist||Ct(10,YPe)).join(", ")||"Open to all peers"),d(),C("ngIf",!e.whitelist||0===e.whitelist.length),d(),C("ngIf",e.whitelist&&e.whitelist.length>0),d(7),C("ngIf",i.editingWhitelistPort===e.port)}}function iIe(t,n){if(1&t&&(h(0,"table",23)(1,"tr")(2,"th"),p(3,"Port"),u(),h(4,"th"),p(5,"Target"),u(),h(6,"th"),p(7,"Label"),u(),h(8,"th"),p(9,"Skynet"),u(),h(10,"th"),p(11,"DMSG"),u(),h(12,"th"),p(13,"Landing"),u(),h(14,"th"),p(15,"Whitelist"),u(),B(16,"th"),u(),it(17,nIe,25,11,"ng-container",24),u()),2&t){const e=v(2);d(17),C("ngForOf",e.ports)}}function oIe(t,n){1&t&&(h(0,"p",42),p(1,"No ports forwarded."),u())}function rIe(t,n){if(1&t){const e=oe();h(0,"div"),it(1,iIe,18,1,"table",8)(2,oIe,2,0,"p",9),h(3,"div",10)(4,"div",11)(5,"mat-form-field",12)(6,"mat-label"),p(7,"Skynet Port"),u(),h(8,"input",13),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newPort,o)||(r.newPort=o),U(o)}),u()(),h(9,"mat-form-field",12)(10,"mat-label"),p(11,"Local Port"),u(),h(12,"input",14),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newLocalPort,o)||(r.newLocalPort=o),U(o)}),u()(),h(13,"mat-form-field",15)(14,"mat-label"),p(15,"Target Address"),u(),h(16,"input",16),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newProxyAddr,o)||(r.newProxyAddr=o),U(o)}),u()(),h(17,"mat-form-field",15)(18,"mat-label"),p(19,"Label"),u(),h(20,"input",17),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newLabel,o)||(r.newLabel=o),U(o)}),u()()(),h(21,"div",11)(22,"mat-form-field",18)(23,"mat-label"),p(24,"Description"),u(),h(25,"input",19),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newDesc,o)||(r.newDesc=o),U(o)}),u()(),h(26,"mat-form-field",18)(27,"mat-label"),p(28,"Whitelist (optional)"),u(),h(29,"textarea",20),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newWhitelist,o)||(r.newWhitelist=o),U(o)}),u()()(),h(30,"div",11)(31,"mat-checkbox",21),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newSkynet,o)||(r.newSkynet=o),U(o)}),p(32,"Skynet"),u(),h(33,"mat-checkbox",21),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newDmsg,o)||(r.newDmsg=o),U(o)}),p(34,"DMSG"),u(),h(35,"mat-checkbox",21),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newShowLanding,o)||(r.newShowLanding=o),U(o)}),p(36,"Show on landing page"),u(),h(37,"button",22),F("click",function(){return j(e),U(v().addPort())}),h(38,"mat-icon"),p(39,"add"),u(),p(40," Forward "),u()(),h(41,"p",3),p(42," Target Address overrides Local Port \u2014 set it to forward to a host:port elsewhere on the LAN (e.g. "),h(43,"code"),p(44,"192.168.1.20:5432"),u(),p(45,") instead of localhost. Whitelist accepts comma- or whitespace-separated 66-char hex public keys; leave empty to allow all authenticated peers (you can edit the whitelist per-row later, on the table above). "),u()()()}if(2&t){const e=v();d(),C("ngIf",e.ports.length>0),d(),C("ngIf",0===e.ports.length),d(6),Ut("ngModel",e.newPort),d(4),Ut("ngModel",e.newLocalPort),d(4),Ut("ngModel",e.newProxyAddr),d(4),Ut("ngModel",e.newLabel),d(5),Ut("ngModel",e.newDesc),d(4),Ut("ngModel",e.newWhitelist),d(2),Ut("ngModel",e.newSkynet),d(2),Ut("ngModel",e.newDmsg),d(2),Ut("ngModel",e.newShowLanding)}}function sIe(t,n){1&t&&(h(0,"div",6),B(1,"mat-spinner",7),u())}function aIe(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td",25),p(2),u(),h(3,"td",49),p(4),u(),h(5,"td",25),p(6),u(),h(7,"td",25),p(8),u(),h(9,"td",29)(10,"button",50),F("click",function(){const o=j(e).$implicit;return U(v(3).disconnect(o.id))}),h(11,"mat-icon"),p(12,"close"),u()()()()}if(2&t){const e=n.$implicit;d(2),M(e.network||"skynet"),d(2),M(e.remotePK),d(2),M(e.remotePort),d(2),M(e.localPort)}}function lIe(t,n){if(1&t&&(h(0,"table",23)(1,"tr")(2,"th"),p(3,"Network"),u(),h(4,"th"),p(5,"Remote PK"),u(),h(6,"th"),p(7,"Remote Port"),u(),h(8,"th"),p(9,"Local Port"),u(),B(10,"th"),u(),it(11,aIe,13,4,"tr",24),u()),2&t){const e=v(2);d(11),C("ngForOf",e.forwards)}}function cIe(t,n){1&t&&(h(0,"p",42),p(1,"No active reverse proxies."),u())}function dIe(t,n){if(1&t){const e=oe();h(0,"div"),it(1,lIe,12,1,"table",8)(2,cIe,2,0,"p",9),h(3,"div",11)(4,"mat-form-field",12)(5,"mat-label"),p(6,"Network"),u(),h(7,"mat-select",43),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.connectNetwork,o)||(r.connectNetwork=o),U(o)}),h(8,"mat-option",44),p(9,"skynet"),u(),h(10,"mat-option",45),p(11,"dmsg"),u()()(),h(12,"mat-form-field",46)(13,"mat-label"),p(14,"Remote Public Key"),u(),h(15,"input",47),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.connectPK,o)||(r.connectPK=o),U(o)}),u()()(),h(16,"div",11)(17,"mat-form-field",12)(18,"mat-label"),p(19,"Remote Port"),u(),h(20,"input",13),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.connectRemotePort,o)||(r.connectRemotePort=o),U(o)}),u()(),h(21,"mat-form-field",12)(22,"mat-label"),p(23,"Local Port"),u(),h(24,"input",48),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.connectLocalPort,o)||(r.connectLocalPort=o),U(o)}),u()(),h(25,"button",22),F("click",function(){return j(e),U(v().connect())}),h(26,"mat-icon"),p(27,"link"),u(),p(28," Connect "),u()()()}if(2&t){const e=v();d(),C("ngIf",e.forwards.length>0),d(),C("ngIf",0===e.forwards.length),d(5),Ut("ngModel",e.connectNetwork),d(8),Ut("ngModel",e.connectPK),d(5),Ut("ngModel",e.connectRemotePort),d(4),Ut("ngModel",e.connectLocalPort)}}let uIe=(()=>{class t extends pn{constructor(e,i){super(),this.nodeService=e,this.snackbarService=i,this.ports=[],this.portsLoading=!0,this.newPort="",this.newLocalPort="",this.newProxyAddr="",this.newLabel="",this.newDesc="",this.newWhitelist="",this.newSkynet=!0,this.newDmsg=!0,this.newShowLanding=!0,this.editingWhitelistPort=null,this.whitelistInput="",this.forwards=[],this.forwardsLoading=!0,this.connectNetwork="skynet",this.connectPK="",this.connectRemotePort="",this.connectLocalPort="",this.nodeKey=""}ngOnInit(){return this.nodeKey=ke.getCurrentNodeKey(),this.loadPorts(),this.loadForwards(),super.ngOnInit()}ngOnDestroy(){this.portsSub&&this.portsSub.unsubscribe(),this.fwdsSub&&this.fwdsSub.unsubscribe()}loadPorts(){this.portsLoading=!0,this.portsSub=this.nodeService.getForwardedPorts(this.nodeKey).subscribe(e=>{this.ports=(e||[]).sort((i,o)=>i.port-o.port),this.portsLoading=!1},()=>{this.ports=[],this.portsLoading=!1})}addPort(){const e=parseInt(this.newPort,10);if(isNaN(e)||e<1||e>65535)return void this.snackbarService.showError("Enter a valid port (1-65535)");const i=this.newLocalPort?parseInt(this.newLocalPort,10):0,o=(this.newProxyAddr||"").trim();let r=[];const s=(this.newWhitelist||"").trim();if(""!==s){r=s.split(/[\s,]+/).map(l=>l.trim()).filter(l=>l.length>0);for(const l of r)if(66!==l.length||!/^[0-9a-fA-F]+$/.test(l))return void this.snackbarService.showError(`Invalid public key in whitelist: ${l}`)}this.nodeService.registerForwardedPort(this.nodeKey,{port:e,local_port:i||void 0,proxy_addr:o||void 0,label:this.newLabel,description:this.newDesc,show_on_landing:this.newShowLanding,skynet:this.newSkynet,dmsg:this.newDmsg,whitelist:r.length>0?r:void 0}).subscribe(()=>{this.newPort="",this.newLocalPort="",this.newProxyAddr="",this.newLabel="",this.newDesc="",this.newWhitelist="",this.snackbarService.showDone(`Port ${e} forwarded`),this.loadPorts()},l=>{this.snackbarService.showError(l?.error?.error||"Failed")})}removePort(e){this.nodeService.deregisterSkynetPort(this.nodeKey,e).subscribe(()=>{this.snackbarService.showDone(`Port ${e} removed`),this.loadPorts()},()=>{this.snackbarService.showError("Failed to remove port")})}toggleLanding(e){e.show_on_landing=!e.show_on_landing,this.nodeService.updateForwardedPort(this.nodeKey,e).subscribe(()=>{},()=>{this.snackbarService.showError("Failed to update"),this.loadPorts()})}toggleSkynet(e){e.skynet=!e.skynet,this.nodeService.updateForwardedPort(this.nodeKey,e).subscribe(()=>{},()=>{this.snackbarService.showError("Failed to update"),this.loadPorts()})}toggleDmsg(e){e.dmsg=!e.dmsg,this.nodeService.updateForwardedPort(this.nodeKey,e).subscribe(()=>{},()=>{this.snackbarService.showError("Failed to update"),this.loadPorts()})}startEditWhitelist(e){this.editingWhitelistPort=e.port,this.whitelistInput=(e.whitelist||[]).join(", ")}cancelEditWhitelist(){this.editingWhitelistPort=null,this.whitelistInput=""}saveWhitelist(e){const i=(this.whitelistInput||"").trim();let o=[];if(""!==i){o=i.split(/[\s,]+/).map(s=>s.trim()).filter(s=>s.length>0);for(const s of o)if(66!==s.length||!/^[0-9a-fA-F]+$/.test(s))return void this.snackbarService.showError(`Invalid public key: ${s}`)}const r={...e,whitelist:o};this.nodeService.updateForwardedPort(this.nodeKey,r).subscribe(()=>{this.snackbarService.showDone(0===o.length?`Whitelist cleared on port ${e.port}`:`Whitelist set on port ${e.port} (${o.length} PK${1===o.length?"":"s"})`),this.cancelEditWhitelist(),this.loadPorts()},s=>{this.snackbarService.showError(s?.error?.error||"Failed to update whitelist")})}clearWhitelist(e){const i={...e,whitelist:[]};this.nodeService.updateForwardedPort(this.nodeKey,i).subscribe(()=>{this.snackbarService.showDone(`Whitelist cleared on port ${e.port}`),this.cancelEditWhitelist(),this.loadPorts()},o=>{this.snackbarService.showError(o?.error?.error||"Failed to clear whitelist")})}loadForwards(){this.forwardsLoading=!0,this.fwdsSub=this.nodeService.getSkynetForwards(this.nodeKey).subscribe(e=>{if(this.forwards=[],e)for(const[i,o]of Object.entries(e))this.forwards.push({id:i,network:o.network||"skynet",remotePK:o.remote_pk||"",remotePort:o.remote_port||0,localPort:o.local_port||0});this.forwardsLoading=!1},()=>{this.forwards=[],this.forwardsLoading=!1})}connect(){const e=parseInt(this.connectRemotePort,10),i=parseInt(this.connectLocalPort,10);this.connectPK&&66===this.connectPK.length?isNaN(e)||e<1?this.snackbarService.showError("Enter a valid remote port"):isNaN(i)||i<1?this.snackbarService.showError("Enter a valid local port"):"skynet"===this.connectNetwork||"dmsg"===this.connectNetwork?this.nodeService.skynetConnect(this.nodeKey,this.connectNetwork,this.connectPK,e,i).subscribe(()=>{this.connectPK="",this.connectRemotePort="",this.connectLocalPort="",this.snackbarService.showDone(`Connected via ${this.connectNetwork}: remote ${e} \u2192 localhost:${i}`),this.loadForwards()},o=>{this.snackbarService.showError(o?.error?.error||"Failed")}):this.snackbarService.showError("Network must be skynet or dmsg"):this.snackbarService.showError("Enter a valid public key")}disconnect(e){this.nodeService.skynetDisconnect(this.nodeKey,e).subscribe(()=>{this.snackbarService.showDone("Disconnected"),this.loadForwards()},()=>{this.snackbarService.showError("Failed")})}static{this.\u0275fac=function(i){return new(i||t)(O(Io),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-skynet"]],standalone:!1,features:[be],decls:21,vars:4,consts:[[1,"container-elevated-translucid","mt-4.5","skynet-container"],[1,"section"],[1,"section-title"],[1,"section-desc"],["class","text-center py-2",4,"ngIf"],[4,"ngIf"],[1,"text-center","py-2"],["diameter","24",1,"mx-auto"],["class","data-table",4,"ngIf"],["class","empty-msg",4,"ngIf"],[1,"add-form"],[1,"add-row"],["appearance","outline",1,"field-sm"],["matInput","","placeholder","80","type","number",3,"ngModelChange","ngModel"],["matInput","","placeholder","3000","type","number",3,"ngModelChange","ngModel"],["appearance","outline",1,"field-md"],["matInput","","placeholder","192.168.1.20:5432",3,"ngModelChange","ngModel"],["matInput","","placeholder","My Service",3,"ngModelChange","ngModel"],["appearance","outline",1,"field-lg"],["matInput","","placeholder","Optional description",3,"ngModelChange","ngModel"],["matInput","","rows","2","placeholder","02abc..., 03def... (empty = open to all)",3,"ngModelChange","ngModel"],["color","primary",3,"ngModelChange","ngModel"],["mat-raised-button","","color","primary",3,"click"],[1,"data-table"],[4,"ngFor","ngForOf"],[1,"mono"],["color","primary",3,"change","checked"],["mat-button","",3,"click","matTooltip"],[1,"edit-icon"],[1,"action-col"],["mat-icon-button","","color","warn","matTooltip","Remove",3,"click"],["class","whitelist-edit-row",4,"ngIf"],[1,"whitelist-edit-row"],["colspan","8"],[1,"whitelist-edit"],[1,"whitelist-help"],["appearance","outline",1,"whitelist-input"],["matInput","","rows","3","placeholder","02abc..., 03def...",3,"ngModelChange","ngModel"],[1,"whitelist-actions"],["mat-stroked-button","",3,"click",4,"ngIf"],["mat-button","",3,"click"],["mat-stroked-button","",3,"click"],[1,"empty-msg"],["panelClass","skynet-select-panel",3,"ngModelChange","ngModel"],["value","skynet"],["value","dmsg"],["appearance","outline",1,"field-pk"],["matInput","","placeholder","02abc...",3,"ngModelChange","ngModel"],["matInput","","placeholder","9090","type","number",3,"ngModelChange","ngModel"],[1,"mono","small"],["mat-icon-button","","color","warn","matTooltip","Disconnect",3,"click"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"h4",2),p(3,"Forwarded Ports"),u(),h(4,"p",3),p(5," Expose local TCP ports over skynet and/or DMSG. "),u(),it(6,XPe,2,0,"div",4)(7,rIe,46,11,"div",5),u(),h(8,"div",1)(9,"h4",2),p(10,"Reverse Proxy"),u(),h(11,"p",3),p(12," Map a remote visor's port to a local port. The Network selector picks the transport: "),h(13,"code"),p(14,"skynet"),u(),p(15," goes through the routing layer; "),h(16,"code"),p(17,"dmsg"),u(),p(18," opens a direct DMSG stream. A single forward uses one network at a time. "),u(),it(19,sIe,2,0,"div",4)(20,dIe,29,6,"div",5),u()()),2&i&&(d(6),C("ngIf",o.portsLoading),d(),C("ngIf",!o.portsLoading),d(12),C("ngIf",o.forwardsLoading),d(),C("ngIf",!o.forwardsLoading))},dependencies:[LF,tf,Gt,rc,qt,sn,Os,In,Pn,Wo,We,Kt,cu,Pa,Qr,so,kr],styles:[".skynet-container[_ngcontent-%COMP%]{padding:20px;max-width:900px}.section[_ngcontent-%COMP%]{margin-bottom:28px}.section-title[_ngcontent-%COMP%]{font-size:16px;font-weight:500;margin-bottom:4px}.section-desc[_ngcontent-%COMP%]{color:#fff9;font-size:13px;margin-bottom:16px}.section-desc[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:#ffffff1a;padding:1px 4px;border-radius:3px;font-size:12px}.data-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;margin-bottom:16px}.data-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .data-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:8px 12px;text-align:left;border-bottom:1px solid rgba(255,255,255,.08)}.data-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{color:#ffffff80;font-weight:500;font-size:13px}.data-table[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%]{font-family:monospace}.data-table[_ngcontent-%COMP%] .small[_ngcontent-%COMP%]{font-size:12px;color:#ffffffb3;word-break:break-all}.data-table[_ngcontent-%COMP%] .action-col[_ngcontent-%COMP%]{width:48px;text-align:right}.empty-msg[_ngcontent-%COMP%]{color:#ffffff61;font-style:italic;margin-bottom:16px}.add-form[_ngcontent-%COMP%]{margin-top:8px}.add-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.field-sm[_ngcontent-%COMP%]{width:120px}.field-md[_ngcontent-%COMP%]{width:200px}.field-lg[_ngcontent-%COMP%]{width:300px}.field-pk[_ngcontent-%COMP%]{width:100%;max-width:580px}.edit-icon[_ngcontent-%COMP%]{font-size:14px;width:14px;height:14px;vertical-align:middle;margin-left:4px;opacity:.6}.whitelist-edit-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{background:#ffffff08;padding:12px 16px!important}.whitelist-edit[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.whitelist-help[_ngcontent-%COMP%]{margin:0;color:#fff9;font-size:12px}.whitelist-input[_ngcontent-%COMP%]{width:100%;max-width:720px}.whitelist-actions[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center}[_nghost-%COMP%] .mat-mdc-text-field-wrapper{background:#ffffff14!important}[_nghost-%COMP%] .mdc-text-field--outlined .mdc-notched-outline__leading, [_nghost-%COMP%] .mdc-text-field--outlined .mdc-notched-outline__notch, [_nghost-%COMP%] .mdc-text-field--outlined .mdc-notched-outline__trailing{border-color:#ffffff4d!important}[_nghost-%COMP%] .mat-mdc-input-element, [_nghost-%COMP%] .mdc-text-field__input{color:#fff!important;caret-color:#fff!important}[_nghost-%COMP%] .mdc-floating-label{color:#fff9!important}[_nghost-%COMP%] .mdc-label, [_nghost-%COMP%] .mdc-form-field>label, [_nghost-%COMP%] .mat-mdc-checkbox label{color:#ffffffde!important}"]})}}return t})();const hIe=()=>["settings.title","labels.title"];let fIe=(()=>{class t{constructor(e){this.router=e,this.tabsData=[],this.returnButtonText="settings.title",this.tabsData=[{icon:"view_headline",label:"labels.list-title",linkParts:[]}]}performAction(e){null===e&&this.router.navigate(["settings"])}static{this.\u0275fac=function(i){return new(i||t)(O(vt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-all-labels"]],standalone:!1,decls:5,vars:6,consts:[[1,"row"],[1,"col-12"],[3,"optionSelected","titleParts","tabsData","showUpdateButton","returnText"],[1,"content","col-12"],[3,"showShortList"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"app-top-bar",2),F("optionSelected",function(s){return o.performAction(s)}),u()(),h(3,"div",3),B(4,"app-label-list",4),u()()),2&i&&(d(2),C("titleParts",Ct(5,hIe))("tabsData",o.tabsData)("showUpdateButton",!1)("returnText",o.returnButtonText),d(2),C("showShortList",!1))},dependencies:[Mr,bV],encapsulation:2})}}return t})();const pIe=["firstInput"];function mIe(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.server-list.add-server-dialog.pk-length-error")))}function gIe(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.server-list.add-server-dialog.pk-chars-error")))}let _Ie=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a,l,c){this.dialogRef=e,this.data=i,this.formBuilder=o,this.dialog=r,this.router=s,this.vpnClientService=a,this.vpnSavedDataService=l,this.snackbarService=c}ngOnInit(){this.form=this.formBuilder.group({pk:["",Ne.compose([Ne.required,Ne.minLength(66),Ne.maxLength(66),Ne.pattern("^[0-9a-fA-F]+$")])],password:[""],name:[""],note:[""]}),setTimeout(()=>this.firstInput.nativeElement.focus())}process(){if(!this.form.valid)return;const e={pk:this.form.get("pk").value,name:this.form.get("name").value,note:this.form.get("note").value};hi.processServerChange(this.router,this.vpnClientService,this.vpnSavedDataService,this.snackbarService,this.dialog,this.dialogRef,this.data,null,null,e,this.form.get("password").value)}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(di),O(Ot),O(vt),O(hc),O(uc),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-add-vpn-server"]],viewQuery:function(i,o){if(1&i&&ot(pIe,5),2&i){let r;he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:34,vars:22,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","pk","maxlength","66","matInput",""],["formControlName","password","type","password","matInput",""],["formControlName","name","maxlength","100","matInput",""],["formControlName","note","maxlength","100","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),b(7,"translate"),u(),B(8,"input",5,0),u(),h(10,"mat-error"),x(11,mIe,3,3,"span")(12,gIe,3,3,"span"),u()(),h(13,"mat-form-field")(14,"div",3)(15,"label",4),p(16),b(17,"translate"),u(),B(18,"input",6),u()(),h(19,"mat-form-field")(20,"div",3)(21,"label",4),p(22),b(23,"translate"),u(),B(24,"input",7),u()(),h(25,"mat-form-field")(26,"div",3)(27,"label",4),p(28),b(29,"translate"),u(),B(30,"input",8),u()()(),h(31,"app-button",9),F("action",function(){return o.process()}),p(32),b(33,"translate"),u()()),2&i&&(C("headline",y(1,10,"vpn.server-list.add-server-dialog.title"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(4),M(y(7,12,"vpn.server-list.add-server-dialog.pk-label")),d(5),S(o.form.get("pk").hasError("pattern")?12:11),d(5),M(y(17,14,"vpn.server-list.add-server-dialog.password-label")),d(6),M(y(23,16,"vpn.server-list.add-server-dialog.name-label")),d(6),M(y(29,18,"vpn.server-list.add-server-dialog.note-label")),d(3),C("disabled",!o.form.valid),d(),E(" ",y(33,20,"vpn.server-list.add-server-dialog.use-server-button")," "))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,Ma,In,ui,gn,xe],encapsulation:2})}}return t})();class bIe{constructor(){this.countryCode="ZZ"}}let vIe=(()=>{class t{constructor(e){this.http=e,this.discoveryServiceUrl="https://sd.skycoin.com/api/services?type=vpn"}getServers(){return this.servers?ae(this.servers):this.http.get(this.discoveryServiceUrl).pipe(ip(e=>e.pipe(li(4e3))),Se(e=>{const i=[];return e&&e.forEach(o=>{const r=new bIe,s=o.address.split(":");2===s.length&&(r.pk=s[0],r.location="",o.geo&&(o.geo.country&&(r.countryCode=o.geo.country),o.geo.region&&(r.location=o.geo.region)),r.name=s[0],r.note="",i.push(r))}),this.servers=i,i}))}static{this.\u0275fac=function(i){return new(i||t)(ce(ba))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const p6=()=>["vpn.title"],yIe=t=>({deactivated:t}),qv=(t,n)=>["/vpn",t,"servers",n,1],CIe=t=>({"mb-3":t}),wIe=(t,n)=>({"public-pk-column":t,"history-pk-column":n}),xIe=t=>({"selectable click-effect":t}),SIe=(t,n)=>({custom:t,original:n}),kIe=(t,n)=>["/vpn",t,"servers",n];function DIe(t,n){1&t&&dr(0)}function MIe(t,n){if(1&t&&(h(0,"div",1)(1,"div",3),B(2,"app-top-bar",4),h(3,"div",5)(4,"div",6)(5,"div",7),it(6,DIe,1,0,"ng-container",8),u()()()(),B(7,"app-loading-indicator",9),u()),2&t){const e=v(),i=Hn(2);d(2),C("titleParts",Ct(6,p6))("tabsData",e.tabsData)("selectedTabIndex",1)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),d(4),C("ngTemplateOutlet",i)}}function TIe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),b(3,"translate"),u()()),2&t&&(d(2),M(y(3,1,"vpn.server-list.tabs.public")))}function EIe(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),b(3,"translate"),u()()),2&t){const e=v(2);C("routerLink",_t(4,qv,e.currentLocalPk,e.lists.Public)),d(2),M(y(3,2,"vpn.server-list.tabs.public"))}}function PIe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),b(3,"translate"),u()()),2&t&&(d(2),M(y(3,1,"vpn.server-list.tabs.history")))}function IIe(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),b(3,"translate"),u()()),2&t){const e=v(2);C("routerLink",_t(4,qv,e.currentLocalPk,e.lists.History)),d(2),M(y(3,2,"vpn.server-list.tabs.history"))}}function OIe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),b(3,"translate"),u()()),2&t&&(d(2),M(y(3,1,"vpn.server-list.tabs.favorites")))}function AIe(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),b(3,"translate"),u()()),2&t){const e=v(2);C("routerLink",_t(4,qv,e.currentLocalPk,e.lists.Favorites)),d(2),M(y(3,2,"vpn.server-list.tabs.favorites"))}}function RIe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),b(3,"translate"),u()()),2&t&&(d(2),M(y(3,1,"vpn.server-list.tabs.blocked")))}function FIe(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),b(3,"translate"),u()()),2&t){const e=v(2);C("routerLink",_t(4,qv,e.currentLocalPk,e.lists.Blocked)),d(2),M(y(3,2,"vpn.server-list.tabs.blocked"))}}function NIe(t,n){1&t&&B(0,"br")}function LIe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().$implicit.translatableValue)," ")}function BIe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.value," ")}function VIe(t,n){if(1&t&&(h(0,"div",23)(1,"span"),p(2),b(3,"translate"),u(),x(4,LIe,2,3),x(5,BIe,1,1),u()),2&t){const e=n.$implicit;d(2),E("",y(3,3,e.filterName),": "),d(2),S(e.translatableValue?4:-1),d(),S(e.value?5:-1)}}function HIe(t,n){if(1&t){const e=oe();h(0,"div",21),F("click",function(){return j(e),U(v(3).dataFilterer.removeFilters())}),h(1,"div",22)(2,"mat-icon",18),p(3,"search"),u(),p(4),b(5,"translate"),u(),ve(6,VIe,6,5,"div",23,Fe),u()}if(2&t){const e=v(3);d(2),C("inline",!0),d(2),E(" ",y(5,2,"vpn.server-list.current-filters")),d(2),ye(e.dataFilterer.currentFiltersTexts)}}function jIe(t,n){if(1&t&&(x(0,NIe,1,0,"br"),x(1,HIe,8,4,"div",20)),2&t){const e=v(2);S(e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0?0:-1),d(),S(e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0?1:-1)}}function UIe(t,n){if(1&t){const e=oe();h(0,"div",10)(1,"div",11)(2,"div",12)(3,"div",13),x(4,TIe,4,3,"div",14),x(5,EIe,4,7,"a",15),x(6,PIe,4,3,"div",14),x(7,IIe,4,7,"a",15),x(8,OIe,4,3,"div",14),x(9,AIe,4,7,"a",15),x(10,RIe,4,3,"div",14),x(11,FIe,4,7,"a",15),u()()()(),h(12,"div",16)(13,"div",11)(14,"div",12)(15,"div",13)(16,"div",17),b(17,"translate"),F("click",function(){j(e);const o=v();return U(o.dataFilterer?o.dataFilterer.changeFilters():null)}),h(18,"span")(19,"mat-icon",18),p(20,"search"),u()()()()()()(),h(21,"div",19)(22,"div",11)(23,"div",12)(24,"div",13)(25,"div",17),b(26,"translate"),F("click",function(){return j(e),U(v().enterManually())}),h(27,"span")(28,"mat-icon",18),p(29,"add"),u()()()()()()(),x(30,jIe,2,2)}if(2&t){const e=v();d(4),S(e.currentList===e.lists.Public?4:-1),d(),S(e.currentList!==e.lists.Public?5:-1),d(),S(e.currentList===e.lists.History?6:-1),d(),S(e.currentList!==e.lists.History?7:-1),d(),S(e.currentList===e.lists.Favorites?8:-1),d(),S(e.currentList!==e.lists.Favorites?9:-1),d(),S(e.currentList===e.lists.Blocked?10:-1),d(),S(e.currentList!==e.lists.Blocked?11:-1),d(),C("ngClass",se(18,yIe,e.loading)),d(4),C("matTooltip",y(17,14,"filters.filter-info")),d(3),C("inline",!0),d(6),C("matTooltip",y(26,16,"vpn.server-list.add-manually-info")),d(3),C("inline",!0),d(2),S(e.dataFilterer?30:-1)}}function zIe(t,n){1&t&&dr(0)}function $Ie(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=v(5);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function WIe(t,n){if(1&t){const e=oe();h(0,"th",41),b(1,"translate"),F("click",function(){j(e);const o=v(4);return U(o.dataSorter.changeSortingOrder(o.dateSortData))}),h(2,"div",34)(3,"div",35),p(4),b(5,"translate"),u(),x(6,$Ie,2,2,"mat-icon",18),u()()}if(2&t){const e=v(4);C("matTooltip",y(1,3,"vpn.server-list.date-info")),d(4),E(" ",y(5,5,"vpn.server-list.date-small-table-label")," "),d(2),S(e.dataSorter.currentSortingColumn===e.dateSortData?6:-1)}}function GIe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function qIe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function KIe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function YIe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function XIe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function ZIe(t,n){if(1&t&&(h(0,"td",43),p(1),b(2,"date"),u()),2&t){const e=v().$implicit;d(),E(" ",pe(2,1,e.lastUsed,"yyyy/MM/dd, H:mm a")," ")}}function QIe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.location," ")}function JIe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"vpn.server-list.unknown")," ")}function eOe(t,n){if(1&t&&(h(0,"mat-icon",55),b(1,"translate"),F("click",function(i){return i.stopPropagation()}),p(2,"info_outline"),u()),2&t){const e=v().$implicit,i=v(4);C("inline",!0)("matTooltip",pe(1,2,i.getNoteVar(e),_t(5,SIe,e.personalNote,e.note)))}}function tOe(t,n){if(1&t){const e=oe();h(0,"tr",42),F("click",function(){const o=j(e).$implicit,r=v(4);return U(r.currentList!==r.lists.Blocked?r.selectServer(o):null)}),x(1,ZIe,3,4,"td",43),h(2,"td",44)(3,"div",45),B(4,"div",46),u()(),h(5,"td",47),B(6,"app-vpn-server-name",48),u(),h(7,"td",49),x(8,QIe,1,1),x(9,JIe,2,3),u(),h(10,"td",50)(11,"app-copy-to-clipboard-text",51),F("click",function(o){return o.stopPropagation()}),u()(),h(12,"td",52),x(13,eOe,3,8,"mat-icon",53),u(),h(14,"td",39)(15,"button",54),b(16,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(4);return o.stopPropagation(),U(s.openOptions(r))}),h(17,"mat-icon",18),p(18,"settings"),u()()()()}if(2&t){const e=n.$implicit,i=v(4);C("ngClass",se(23,xIe,i.currentList!==i.lists.Blocked)),d(),S(i.currentList===i.lists.History?1:-1),d(3),no("background-image: url('assets/img/big-flags/"+e.countryCode.toLocaleLowerCase()+".png');"),C("matTooltip",i.getCountryName(e.countryCode)),d(2),C("isCurrentServer",i.currentServer&&e.pk===i.currentServer.pk)("isFavorite",e.flag===i.serverFlags.Favorite&&i.currentList!==i.lists.Favorites)("isBlocked",e.flag===i.serverFlags.Blocked&&i.currentList!==i.lists.Blocked)("isInHistory",e.inHistory&&i.currentList!==i.lists.History)("hasPassword",e.usedWithPassword)("name",e.name)("pk",e.pk)("customName",e.customName)("defaultName","vpn.server-list.none"),d(2),S(e.location?8:-1),d(),S(e.location?-1:9),d(2),C("shortSimple",!0)("text",e.pk),d(2),S(e.note||e.personalNote?13:-1),d(2),C("matTooltip",y(16,21,"vpn.server-options.tooltip")),d(2),C("inline",!0)}}function nOe(t,n){if(1&t){const e=oe();h(0,"table",30)(1,"tr"),x(2,WIe,7,7,"th",31),h(3,"th",32),b(4,"translate"),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.countrySortData))}),h(5,"mat-icon",18),p(6,"flag"),u(),x(7,GIe,2,2,"mat-icon",18),u(),h(8,"th",33),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.nameSortData))}),h(9,"div",34)(10,"div",35),p(11),b(12,"translate"),u(),x(13,qIe,2,2,"mat-icon",18),u()(),h(14,"th",36),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.locationSortData))}),h(15,"div",34)(16,"div",35),p(17),b(18,"translate"),u(),x(19,KIe,2,2,"mat-icon",18),u()(),h(20,"th",37),b(21,"translate"),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.pkSortData))}),h(22,"div",34)(23,"div",35),p(24),b(25,"translate"),u(),x(26,YIe,2,2,"mat-icon",18),u()(),h(27,"th",38),b(28,"translate"),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.noteSortData))}),h(29,"div",34)(30,"mat-icon",18),p(31,"info_outline"),u(),x(32,XIe,2,2,"mat-icon",18),u()(),B(33,"th",39),u(),ve(34,tOe,19,25,"tr",40,Fe),u()}if(2&t){const e=v(3);d(2),S(e.currentList===e.lists.History?2:-1),d(),C("matTooltip",y(4,15,"vpn.server-list.country-info")),d(2),C("inline",!0),d(2),S(e.dataSorter.currentSortingColumn===e.countrySortData?7:-1),d(4),E(" ",y(12,17,"vpn.server-list.name-small-table-label")," "),d(2),S(e.dataSorter.currentSortingColumn===e.nameSortData?13:-1),d(4),E(" ",y(18,19,"vpn.server-list.location-small-table-label")," "),d(2),S(e.dataSorter.currentSortingColumn===e.locationSortData?19:-1),d(),C("ngClass",_t(27,wIe,e.currentList===e.lists.Public,e.currentList===e.lists.History))("matTooltip",y(21,21,"vpn.server-list.public-key-info")),d(4),E(" ",y(25,23,"vpn.server-list.public-key-small-table-label")," "),d(2),S(e.dataSorter.currentSortingColumn===e.pkSortData?26:-1),d(),C("matTooltip",y(28,25,"vpn.server-list.note-info")),d(3),C("inline",!0),d(2),S(e.dataSorter.currentSortingColumn===e.noteSortData?32:-1),d(2),ye(e.dataSource)}}function iOe(t,n){if(1&t&&(h(0,"div",27)(1,"div",29),x(2,nOe,36,30,"table",30),u()()),2&t){const e=v(2);d(2),S(e.dataSource.length>0?2:-1)}}function oOe(t,n){if(1&t&&B(0,"app-paginator",28),2&t){const e=v(2);C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",_t(4,kIe,e.currentLocalPk,e.currentList))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function rOe(t,n){1&t&&(h(0,"span",58),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.server-list.empty-discovery")))}function sOe(t,n){1&t&&(h(0,"span",58),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.server-list.empty-history")))}function aOe(t,n){1&t&&(h(0,"span",58),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.server-list.empty-favorites")))}function lOe(t,n){1&t&&(h(0,"span",58),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.server-list.empty-blocked")))}function cOe(t,n){1&t&&(h(0,"span",58),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.server-list.empty-with-filter")))}function dOe(t,n){if(1&t&&(h(0,"div",27)(1,"div",56)(2,"mat-icon",57),p(3,"warning"),u(),x(4,rOe,3,3,"span",58),x(5,sOe,3,3,"span",58),x(6,aOe,3,3,"span",58),x(7,lOe,3,3,"span",58),x(8,cOe,3,3,"span",58),u()()),2&t){const e=v(2);d(2),C("inline",!0),d(2),S(0===e.allServers.length&&e.currentList===e.lists.Public?4:-1),d(),S(0===e.allServers.length&&e.currentList===e.lists.History?5:-1),d(),S(0===e.allServers.length&&e.currentList===e.lists.Favorites?6:-1),d(),S(0===e.allServers.length&&e.currentList===e.lists.Blocked?7:-1),d(),S(0!==e.allServers.length?8:-1)}}function uOe(t,n){if(1&t&&(h(0,"div",2)(1,"div",24),B(2,"app-top-bar",4),u(),h(3,"div",25)(4,"div",6)(5,"div",26),it(6,zIe,1,0,"ng-container",8),u(),x(7,iOe,3,1,"div",27),x(8,oOe,1,7,"app-paginator",28),x(9,dOe,9,6,"div",27),u()()()),2&t){const e=v(),i=Hn(2);d(2),C("titleParts",Ct(10,p6))("tabsData",e.tabsData)("selectedTabIndex",1)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),d(3),C("ngClass",se(11,CIe,!e.dataFilterer.currentFiltersTexts||e.dataFilterer.currentFiltersTexts.length<1)),d(),C("ngTemplateOutlet",i),d(),S(0!==e.dataSource.length?7:-1),d(),S(e.numberOfPages>1?8:-1),d(),S(0===e.dataSource.length?9:-1)}}var pi=function(t){return t.Public="public",t.History="history",t.Favorites="favorites",t.Blocked="blocked",t}(pi||{});let m6=(()=>{class t extends pn{constructor(e,i,o,r,s,a,l,c,f){super(),this.dialog=e,this.router=i,this.translateService=o,this.route=r,this.vpnClientDiscoveryService=s,this.vpnClientService=a,this.vpnSavedDataService=l,this.snackbarService=c,this.storageService=f,this.persistentServerDataResponseKey="serv-dat-response",this.maxFullListElements=50,this.dateSortData=new Dt(["lastUsed"],"vpn.server-list.date-small-table-label",st.NumberReversed),this.countrySortData=new Dt(["countryName"],"vpn.server-list.country-small-table-label",st.Text),this.nameSortData=new Dt(["name"],"vpn.server-list.name-small-table-label",st.Text),this.locationSortData=new Dt(["location"],"vpn.server-list.location-small-table-label",st.Text),this.pkSortData=new Dt(["pk"],"vpn.server-list.public-key-small-table-label",st.Text),this.noteSortData=new Dt(["note"],"vpn.server-list.note-small-table-label",st.Text),this.loading=!0,this.loadingBackendData=!0,this.tabsData=hi.vpnTabsData,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.currentList=pi.Public,this.vpnRunning=!1,this.serverFlags=_n,this.lists=pi,this.initialLoadStarted=!1,this.navigationsSubscription=r.paramMap.subscribe(m=>{if(m.has("type")?m.get("type")===pi.Favorites?(this.currentList=pi.Favorites,this.listId="vfs"):m.get("type")===pi.Blocked?(this.currentList=pi.Blocked,this.listId="vbs"):m.get("type")===pi.History?(this.currentList=pi.History,this.listId="vhs"):(this.currentList=pi.Public,this.listId="vps"):(this.currentList=pi.Public,this.listId="vps"),hi.setDefaultTabForServerList(this.currentList),m.has("key")&&(this.currentLocalPk=m.get("key"),hi.changeCurrentPk(this.currentLocalPk),this.tabsData=hi.vpnTabsData),m.has("page")){let g=Number.parseInt(m.get("page"),10);(isNaN(g)||g<1)&&(g=1),this.currentPageInUrl=g,this.recalculateElementsToShow()}this.initialLoadStarted||(this.initialLoadStarted=!0,this.loadData(!0))}),this.currentServerSubscription=this.vpnSavedDataService.currentServerObservable.subscribe(m=>this.currentServer=m),this.backendDataSubscription=this.vpnClientService.backendState.subscribe(m=>{m&&(this.loadingBackendData=!1,this.vpnRunning=m.vpnClientAppData.running)})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.currentServerSubscription.unsubscribe(),this.backendDataSubscription.unsubscribe(),this.dataSortedSubscription&&this.dataSortedSubscription.unsubscribe(),this.dataFiltererSubscription&&this.dataFiltererSubscription.unsubscribe(),this.dataSubscription&&this.dataSubscription.unsubscribe(),this.dataFilterer&&this.dataFilterer.dispose(),this.dataSorter&&this.dataSorter.dispose()}enterManually(){_Ie.openDialog(this.dialog,this.currentLocalPk)}getNoteVar(e){return e.note&&e.personalNote?"vpn.server-list.notes-info":!e.note&&e.personalNote?e.personalNote:e.note}selectServer(e){const i=this.vpnSavedDataService.getSavedVersion(e.pk,!0);if(this.snackbarService.closeCurrentIfTemporaryError(),i&&i.flag===_n.Blocked)this.snackbarService.showError("vpn.starting-blocked-server-error",{},!0);else{if(this.currentServer&&this.currentServer.pk===e.pk){if(this.vpnRunning)this.snackbarService.showWarning("vpn.server-change.already-selected-warning");else{const o=Rt.createConfirmationDialog(this.dialog,"vpn.server-change.start-same-server-confirmation");o.componentInstance.operationAccepted.subscribe(()=>{o.componentInstance.closeModal(),this.vpnClientService.start(),hi.redirectAfterServerChange(this.router,null,this.currentLocalPk)})}return}if(i&&i.usedWithPassword)return void sV.openDialog(this.dialog,!0).afterClosed().subscribe(o=>{o&&this.makeServerChange(e,"-"===o?null:o.substr(1))});this.makeServerChange(e,null)}}makeServerChange(e,i){hi.processServerChange(this.router,this.vpnClientService,this.vpnSavedDataService,this.snackbarService,this.dialog,null,this.currentLocalPk,e.originalLocalData,e.originalDiscoveryData,null,i)}openOptions(e){let i=this.vpnSavedDataService.getSavedVersion(e.pk,!0);i||(i=this.vpnSavedDataService.processFromDiscovery(e.originalDiscoveryData)),i?hi.openServerOptions(i,this.router,this.vpnSavedDataService,this.vpnClientService,this.snackbarService,this.dialog).subscribe(o=>{o&&this.processAllServers()}):this.snackbarService.showError("vpn.unexpedted-error")}loadData(e){if(this.currentList===pi.Public){const i=e?this.getLocalValue(this.persistentServerDataResponseKey):null;let o=this.vpnClientDiscoveryService.getServers();i&&(o=ae(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{i||this.saveLocalValue(this.persistentServerDataResponseKey,JSON.stringify(r)),this.allServers=r.map(s=>({countryCode:s.countryCode,countryName:this.getCountryName(s.countryCode),name:s.name,customName:null,location:s.location,pk:s.pk,note:s.note,personalNote:null,originalDiscoveryData:s})),this.vpnSavedDataService.updateFromDiscovery(r),this.loading=!1,this.processAllServers(),i&&this.loadData(!1)})}else{let i;i=this.currentList===pi.History?this.vpnSavedDataService.history:this.currentList===pi.Favorites?this.vpnSavedDataService.favorites:this.vpnSavedDataService.blocked,this.dataSubscription=i.subscribe(o=>{const r=[];o.forEach(s=>{r.push({countryCode:s.countryCode,countryName:this.getCountryName(s.countryCode),name:s.name,customName:null,location:s.location,pk:s.pk,note:s.note,personalNote:null,lastUsed:s.lastUsed,inHistory:s.inHistory,flag:s.flag,originalLocalData:s})}),this.allServers=r,this.loading=!1,this.processAllServers()})}}processAllServers(){this.fillFilterPropertiesArray();const e=new Set;this.allServers.forEach((c,f)=>{e.add(c.countryCode);const m=this.vpnSavedDataService.getSavedVersion(c.pk,0===f);c.customName=m?m.customName:null,c.personalNote=m?m.personalNote:null,c.inHistory=!!m&&m.inHistory,c.flag=m?m.flag:_n.None,c.enteredManually=!!m&&m.enteredManually,c.usedWithPassword=!!m&&m.usedWithPassword});let i=[];e.forEach(c=>{i.push({label:this.getCountryName(c),value:c,image:"/assets/img/big-flags/"+c.toLowerCase()+".png"})}),i.sort((c,f)=>c.label.localeCompare(f.label)),i=[{label:"vpn.server-list.filter-dialog.country-options.any",value:""}].concat(i),this.filterProperties=[{filterName:"vpn.server-list.filter-dialog.country",keyNameInElementsArray:"countryCode",type:Sn.Select,printableLabelsForValues:i,printableLabelGeneralSettings:{defaultImage:"/assets/img/big-flags/unknown.png",imageWidth:20,imageHeight:15}}].concat(this.filterProperties);const r=[];let s,a,l;this.currentList===pi.Public?(r.push(this.countrySortData),r.push(this.nameSortData),r.push(this.locationSortData),r.push(this.pkSortData),r.push(this.noteSortData),s=0,a=1):(this.currentList===pi.History&&r.push(this.dateSortData),r.push(this.countrySortData),r.push(this.nameSortData),r.push(this.locationSortData),r.push(this.pkSortData),r.push(this.noteSortData),s=this.currentList===pi.History?0:1,a=this.currentList===pi.History?2:3),this.dataSorter=new gu(this.dialog,this.translateService,this.storageService,r,s,this.listId),this.dataSorter.setTieBreakerColumnIndex(a),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new _u(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(c=>{this.filteredServers=c,this.dataSorter.setData(this.filteredServers)}),l=this.currentList===pi.Public?this.allServers.filter(c=>c.flag!==_n.Blocked):this.allServers,this.dataFilterer.setData(l)}fillFilterPropertiesArray(){this.filterProperties=[{filterName:"vpn.server-list.filter-dialog.name",keyNameInElementsArray:"name",secondaryKeyNameInElementsArray:"customName",type:Sn.TextInput,maxlength:100},{filterName:"vpn.server-list.filter-dialog.location",keyNameInElementsArray:"location",type:Sn.TextInput,maxlength:100},{filterName:"vpn.server-list.filter-dialog.public-key",keyNameInElementsArray:"pk",type:Sn.TextInput,maxlength:100}]}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredServers){const e=this.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredServers.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.serversToShow=this.filteredServers.slice(i,i+e)}else this.serversToShow=null;this.dataSource=this.serversToShow}getCountryName(e){return es[e.toUpperCase()]?es[e.toUpperCase()]:e}static{this.\u0275fac=function(i){return new(i||t)(O(Ot),O(vt),O(Go),O(Ai),O(vIe),O(hc),O(uc),O(ct),O(ti))}}static{this.\u0275cmp=re({type:t,selectors:[["app-vpn-server-list"]],standalone:!1,features:[be],decls:4,vars:2,consts:[["topPart",""],[1,"d-flex","flex-column","h-100","w-100"],[1,"row"],[1,"loading-top-container"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton","localVpnKey"],[1,"main-container"],[1,"width-limiter"],[1,"center-container","mt-4.5"],[4,"ngTemplateOutlet"],[1,"h-100","loading-indicator"],[1,"option-bar-container"],[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","allow-overflow"],[1,"option-bar"],[1,"text-option","selected"],[1,"text-option",3,"routerLink"],[1,"option-bar-container","option-bar-margin",3,"ngClass"],[1,"icon-option",3,"click","matTooltip"],[3,"inline"],[1,"option-bar-container","option-bar-margin"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"transparent-50"],[1,"item"],[1,"col-12"],[1,"col-12","vpn-table-container"],[1,"center-container","mt-4.5",3,"ngClass"],[1,"rounded-elevated-box"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"box-internal-container"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table"],[1,"sortable-column","date-column","click-effect",3,"matTooltip"],[1,"sortable-column","flag-column","center","click-effect",3,"click","matTooltip"],[1,"sortable-column","name-column","click-effect",3,"click"],[1,"header-container"],[1,"header-text"],[1,"sortable-column","location-column","click-effect",3,"click"],[1,"sortable-column","pk-column","click-effect",3,"click","ngClass","matTooltip"],[1,"sortable-column","note-column","center","click-effect",3,"click","matTooltip"],[1,"actions"],[3,"ngClass"],[1,"sortable-column","date-column","click-effect",3,"click","matTooltip"],[3,"click","ngClass"],[1,"date-column"],[1,"flag-column","icon-fixer"],[1,"flag"],[3,"matTooltip"],[1,"name-column"],[3,"isCurrentServer","isFavorite","isBlocked","isInHistory","hasPassword","name","pk","customName","defaultName"],[1,"location-column"],[1,"pk-column","history-pk-column"],[1,"d-inline-block","w-100",3,"click","shortSimple","text"],[1,"center","note-column"],[1,"note-icon",3,"inline","matTooltip"],["mat-button","",1,"big-action-button","transparent-button","vpn-small-button",3,"click","matTooltip"],[1,"note-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","font-sm"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(x(0,MIe,8,7,"div",1),it(1,UIe,31,20,"ng-template",null,0,Rl),x(3,uOe,10,13,"div",2)),2&i&&(S(o.loading||o.loadingBackendData?0:-1),d(3),S(o.loading||o.loadingBackendData?-1:3))},styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%], .note-column[_ngcontent-%COMP%], .pk-column[_ngcontent-%COMP%], .location-column[_ngcontent-%COMP%], .name-column[_ngcontent-%COMP%], .date-column[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}.center-container[_ngcontent-%COMP%]{text-align:center}.center-container[_ngcontent-%COMP%] app-paginator[_ngcontent-%COMP%]{display:inline-block}.loading-top-container[_ngcontent-%COMP%]{z-index:1}.loading-indicator[_ngcontent-%COMP%]{padding-top:30px;padding-bottom:20px}.deactivated[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.option-bar-container[_ngcontent-%COMP%]{display:inline-block}.option-bar-container[_ngcontent-%COMP%] .allow-overflow[_ngcontent-%COMP%]{overflow:visible}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%]{display:flex;margin:-17px}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > div[_ngcontent-%COMP%], .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{height:55px;line-height:55px;cursor:pointer;color:#fff;text-decoration:none;-webkit-user-select:none;user-select:none}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:hover, .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:#0003}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > .icon-option[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:inline-block}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > .icon-option[_ngcontent-%COMP%]:active span[_ngcontent-%COMP%], .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:active span[_ngcontent-%COMP%]{transform:scale(.95)}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .text-option[_ngcontent-%COMP%]{padding:0 40px;font-size:1rem}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .icon-option[_ngcontent-%COMP%]{width:55px;font-size:24px}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{background:#0000005c;cursor:unset!important}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]:hover{background:#0009}.option-bar-margin[_ngcontent-%COMP%]{margin-left:10px}.filter-label[_ngcontent-%COMP%]{font-size:.7rem;display:inline-block;padding:5px 10px;margin-bottom:7px}.filter-label[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{vertical-align:middle}table[_ngcontent-%COMP%]{width:100%}tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:2px 5px!important;font-size:12px!important;font-weight:400!important}tr[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{padding-left:5px!important;padding-right:5px!important}.date-column[_ngcontent-%COMP%]{width:150px}.name-column[_ngcontent-%COMP%]{max-width:0;width:20%}.location-column[_ngcontent-%COMP%]{max-width:0;min-width:72px}.pk-column[_ngcontent-%COMP%]{max-width:0;width:25%}.history-pk-column[_ngcontent-%COMP%]{width:20%!important}.icon-fixer[_ngcontent-%COMP%]{line-height:0px}.note-column[_ngcontent-%COMP%]{max-width:0;width:3%;min-width:60px}.note-column[_ngcontent-%COMP%] .note-icon[_ngcontent-%COMP%]{opacity:.55;font-size:16px!important;display:inline}.flag-column[_ngcontent-%COMP%]{width:1px;line-height:0px}.actions[_ngcontent-%COMP%]{width:1px}.header-container[_ngcontent-%COMP%]{max-width:100%;display:inline-flex}.header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%]{flex-grow:1}.flag[_ngcontent-%COMP%]{width:20px;height:15px;display:inline-block;margin-right:5px;background-image:url(/assets/img/big-flags/unknown.png);background-size:contain}.flag[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{width:20px;height:15px;background-size:contain}.center[_ngcontent-%COMP%]{text-align:center}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"]})}}return t})();const Tp=(t,n)=>({"small-text-icon":t,"big-text-icon":n});function hOe(t,n){if(1&t&&(h(0,"mat-icon",0),b(1,"translate"),p(2,"done"),u()),2&t){const e=v();C("ngClass",_t(5,Tp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",y(1,3,"vpn.server-conditions.selected-info"))}}function fOe(t,n){if(1&t&&(h(0,"mat-icon",1),b(1,"translate"),p(2,"clear"),u()),2&t){const e=v();C("ngClass",_t(5,Tp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",y(1,3,"vpn.server-conditions.blocked-info"))}}function pOe(t,n){if(1&t&&(h(0,"mat-icon",2),b(1,"translate"),p(2,"star"),u()),2&t){const e=v();C("ngClass",_t(5,Tp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",y(1,3,"vpn.server-conditions.favorite-info"))}}function mOe(t,n){if(1&t&&(h(0,"mat-icon",0),b(1,"translate"),p(2,"history"),u()),2&t){const e=v();C("ngClass",_t(5,Tp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",y(1,3,"vpn.server-conditions.history-info"))}}function gOe(t,n){if(1&t&&(h(0,"mat-icon",0),b(1,"translate"),p(2,"lock_outlined"),u()),2&t){const e=v();C("ngClass",_t(5,Tp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",y(1,3,"vpn.server-conditions.has-password-info"))}}function _Oe(t,n){if(1&t&&(p(0),h(1,"mat-icon",3),p(2,"fiber_manual_record"),u(),p(3)),2&t){const e=v();E(" ",e.customName," "),d(),C("inline",!0),d(2),E(" ",e.name,"\n")}}function bOe(t,n){1&t&&p(0),2&t&&E(" ",v().customName,"\n")}function vOe(t,n){1&t&&p(0),2&t&&E(" ",v().name,"\n")}function yOe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().defaultName),"\n")}let g6=(()=>{class t{constructor(){this.isCurrentServer=!1,this.isFavorite=!1,this.isBlocked=!1,this.isInHistory=!1,this.hasPassword=!1,this.name="",this.customName="",this.pk="",this.defaultName="",this.adjustIconsForBigText=!1}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=re({type:t,selectors:[["app-vpn-server-name"]],inputs:{isCurrentServer:"isCurrentServer",isFavorite:"isFavorite",isBlocked:"isBlocked",isInHistory:"isInHistory",hasPassword:"hasPassword",name:"name",customName:"customName",pk:"pk",defaultName:"defaultName",adjustIconsForBigText:"adjustIconsForBigText"},standalone:!1,decls:9,vars:9,consts:[[1,"server-condition-icon",3,"ngClass","inline","matTooltip"],[1,"server-condition-icon","red-clear-text",3,"ngClass","inline","matTooltip"],[1,"server-condition-icon","yellow-clear-text",3,"ngClass","inline","matTooltip"],[1,"name-separator",3,"inline"]],template:function(i,o){1&i&&(x(0,hOe,3,8,"mat-icon",0),x(1,fOe,3,8,"mat-icon",1),x(2,pOe,3,8,"mat-icon",2),x(3,mOe,3,8,"mat-icon",0),x(4,gOe,3,8,"mat-icon",0),x(5,_Oe,4,3),x(6,bOe,1,1),x(7,vOe,1,1),x(8,yOe,2,3)),2&i&&(S(o.isCurrentServer?0:-1),d(),S(o.isBlocked?1:-1),d(),S(o.isFavorite?2:-1),d(),S(o.isInHistory?3:-1),d(),S(o.hasPassword?4:-1),d(),S(!o.customName||!o.name||o.pk&&o.name===o.pk?-1:5),d(),S((!o.name||o.pk&&o.name===o.pk)&&o.customName?6:-1),d(),S(!o.name||o.pk&&o.name===o.pk||o.customName?-1:7),d(),S(o.name&&(!o.pk||o.name!==o.pk)||o.customName?-1:8))},dependencies:[$t,We,Kt,xe],styles:[".server-condition-icon[_ngcontent-%COMP%]{font-size:14px!important;line-height:14px!important;margin-right:3px;position:relative;width:14px!important;-webkit-user-select:none;user-select:none;cursor:default}.small-text-icon[_ngcontent-%COMP%]{top:2px}.big-text-icon[_ngcontent-%COMP%]{top:0}.name-separator[_ngcontent-%COMP%]{display:inline!important;font-size:8px!important;opacity:.5!important}"]})}}return t})();const _6=()=>["vpn.title"],b6=t=>({"disabled-button":t}),COe=(t,n)=>({custom:t,original:n}),Tu=t=>({showValue:!0,showUnit:!0,showPerSecond:!0,limitDecimals:!0,useBits:t}),v6=t=>({showValue:!0,showUnit:!0,showPerSecond:!0,useBits:t}),y6=t=>({showValue:!0,showUnit:!0,useBits:t}),Kv=t=>({time:t});function wOe(t,n){if(1&t&&(h(0,"div",0)(1,"div"),B(2,"app-top-bar",2),u(),B(3,"app-loading-indicator"),u()),2&t){const e=v();d(2),C("titleParts",Ct(5,_6))("tabsData",e.tabsData)("selectedTabIndex",0)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk)}}function xOe(t,n){1&t&&B(0,"mat-spinner",22),2&t&&C("diameter",40)}function SOe(t,n){1&t&&(h(0,"mat-icon",23),p(1,"power_settings_new"),u()),2&t&&C("inline",!0)}function kOe(t,n){if(1&t){const e=oe();h(0,"div",28),B(1,"div",29),u(),h(2,"div",30)(3,"div",31),B(4,"app-vpn-server-name",32),u(),h(5,"div",33),B(6,"app-copy-to-clipboard-text",34),u()(),h(7,"div",35),B(8,"div"),u(),h(9,"div",36)(10,"mat-icon",37),b(11,"translate"),F("click",function(){return j(e),U(v(3).openServerOptions())}),p(12,"settings"),u()()}if(2&t){const e=v(3);d(),no("background-image: url('assets/img/big-flags/"+e.currentRemoteServer.countryCode.toLocaleLowerCase()+".png');"),C("matTooltip",e.getCountryName(e.currentRemoteServer.countryCode)),d(3),C("isFavorite",e.currentRemoteServer.flag===e.serverFlags.Favorite)("isBlocked",e.currentRemoteServer.flag===e.serverFlags.Blocked)("hasPassword",e.currentRemoteServer.usedWithPassword)("name",e.currentRemoteServer.name)("pk",e.currentRemoteServer.pk)("customName",e.currentRemoteServer.customName),d(2),C("shortSimple",!0)("text",e.currentRemoteServer.pk),d(4),C("inline",!0)("matTooltip",y(11,13,"vpn.server-options.tooltip"))}}function DOe(t,n){1&t&&(h(0,"div",25),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.status-page.no-server")))}function MOe(t,n){if(1&t&&(h(0,"div",26)(1,"mat-icon",23),p(2,"info_outline"),u(),p(3),b(4,"translate"),u()),2&t){const e=v(3);d(),C("inline",!0),d(2),E(" ",pe(4,2,e.getNoteVar(),_t(5,COe,e.currentRemoteServer.personalNote,e.currentRemoteServer.note))," ")}}function TOe(t,n){if(1&t&&(h(0,"div",27)(1,"mat-icon",23),p(2,"cancel"),u(),p(3),b(4,"translate"),u()),2&t){const e=v(3);d(),C("inline",!0),d(2),gt(" ",y(4,3,"vpn.status-page.last-error")," ",e.backendState.vpnClientAppData.lastErrorMsg," ")}}function EOe(t,n){if(1&t){const e=oe();h(0,"div",6)(1,"div",9)(2,"div",11),p(3),b(4,"translate"),u(),h(5,"div")(6,"div",18),F("click",function(){return j(e),U(v(2).start())}),h(7,"div",19),B(8,"div",20),u(),h(9,"div",19),B(10,"div",21),u(),x(11,xOe,1,1,"mat-spinner",22),x(12,SOe,2,1,"mat-icon",23),u()(),h(13,"div",24),x(14,kOe,13,15),x(15,DOe,3,3,"div",25),u(),h(16,"div"),x(17,MOe,5,8,"div",26),u(),h(18,"div"),x(19,TOe,5,5,"div",27),u()()()}if(2&t){const e=v(2);d(3),M(y(4,8,"vpn.status-page.start-title")),d(3),C("ngClass",se(10,b6,e.showBusy)),d(5),S(e.showBusy?11:-1),d(),S(e.showBusy?-1:12),d(2),S(e.currentRemoteServer?14:-1),d(),S(e.currentRemoteServer?-1:15),d(2),S(e.currentRemoteServer&&(e.currentRemoteServer.note||e.currentRemoteServer.personalNote)?17:-1),d(2),S(e.backendState&&e.backendState.vpnClientAppData&&e.backendState.vpnClientAppData.lastErrorMsg?19:-1)}}function POe(t,n){if(1&t&&(h(0,"div",44)(1,"mat-icon",23),p(2,"cancel"),u(),p(3),b(4,"translate"),u()),2&t){const e=v(3);d(),C("inline",!0),d(2),gt(" ",y(4,3,"vpn.status-page.last-error")," ",e.backendState.vpnClientAppData.connectionData.error," ")}}function IOe(t,n){1&t&&(h(0,"div"),B(1,"mat-spinner",22),u()),2&t&&(d(),C("diameter",24))}function OOe(t,n){1&t&&(h(0,"mat-icon",23),p(1,"power_settings_new"),u()),2&t&&C("inline",!0)}function AOe(t,n){if(1&t){const e=oe();h(0,"div",7)(1,"div",9)(2,"div",38)(3,"div",39)(4,"mat-icon",23),p(5,"timer"),u(),h(6,"span"),p(7),u()()(),h(8,"div",40),p(9),b(10,"translate"),u(),h(11,"div",41)(12,"div",42),p(13),b(14,"translate"),u(),B(15,"div"),u(),h(16,"div",43),p(17),b(18,"translate"),u(),x(19,POe,5,5,"div",44),h(20,"div",45)(21,"div",46),b(22,"translate"),h(23,"div",47),B(24,"app-line-chart",48),u(),h(25,"div",49)(26,"div",50)(27,"div",51),p(28),b(29,"autoScale"),u(),B(30,"div",52),u()(),h(31,"div",49)(32,"div",53)(33,"div",51),p(34),b(35,"autoScale"),u(),B(36,"div",52),u()(),h(37,"div",49)(38,"div",54)(39,"div",51),p(40),b(41,"autoScale"),u()()(),h(42,"div",55)(43,"mat-icon",56),p(44,"keyboard_backspace"),u(),h(45,"div",57),p(46),b(47,"autoScale"),u(),h(48,"div",58),p(49),b(50,"autoScale"),b(51,"translate"),u()()(),h(52,"div",46),b(53,"translate"),h(54,"div",47),B(55,"app-line-chart",48),u(),h(56,"div",59)(57,"div",50)(58,"div",51),p(59),b(60,"autoScale"),u(),B(61,"div",52),u()(),h(62,"div",49)(63,"div",53)(64,"div",51),p(65),b(66,"autoScale"),u(),B(67,"div",52),u()(),h(68,"div",49)(69,"div",54)(70,"div",51),p(71),b(72,"autoScale"),u()()(),h(73,"div",55)(74,"mat-icon",60),p(75,"keyboard_backspace"),u(),h(76,"div",57),p(77),b(78,"autoScale"),u(),h(79,"div",58),p(80),b(81,"autoScale"),b(82,"translate"),u()()()(),h(83,"div",61)(84,"div",62),b(85,"translate"),h(86,"div",47),B(87,"app-line-chart",63),u(),h(88,"div",59)(89,"div",50)(90,"div",51),p(91),b(92,"translate"),u(),B(93,"div",52),u()(),h(94,"div",49)(95,"div",53)(96,"div",51),p(97),b(98,"translate"),u(),B(99,"div",52),u()(),h(100,"div",49)(101,"div",54)(102,"div",51),p(103),b(104,"translate"),u()()(),h(105,"div",55)(106,"mat-icon",23),p(107,"swap_horiz"),u(),h(108,"div"),p(109),b(110,"translate"),u()()()(),h(111,"div",64),F("click",function(){return j(e),U(v(2).stop())}),h(112,"div",65)(113,"div",66),x(114,IOe,2,1,"div"),x(115,OOe,2,1,"mat-icon",23),h(116,"span"),p(117),b(118,"translate"),u()()()()()()}if(2&t){const e=v(2);d(4),C("inline",!0),d(3),M(e.connectionTimeString),d(2),M(y(10,58,"vpn.connection-info.state-title")),d(4),M(y(14,60,e.currentStateText)),d(2),Ze("state-line "+e.currentStateLineClass),d(2),M(y(18,62,e.currentStateText+"-info")),d(2),S(e.backendState&&e.backendState.vpnClientAppData&&e.backendState.vpnClientAppData.connectionData&&e.backendState.vpnClientAppData.connectionData.error?19:-1),d(2),C("matTooltip",y(22,64,"vpn.status-page.upload-info")),d(3),C("animated",!1)("data",e.sentHistory)("min",e.minUploadInGraph)("max",e.maxUploadInGraph),d(4),E(" ",pe(29,66,e.maxUploadInGraph,se(118,Tu,e.showSpeedsInBits))," "),d(2),no("margin-top: "+e.graphsTopInternalMargin+"px;"),d(4),E(" ",pe(35,69,e.midUploadInGraph,se(120,Tu,e.showSpeedsInBits))," "),d(2),no("margin-top: "+e.graphsTopInternalMargin/2+"px;"),d(4),E(" ",pe(41,72,e.minUploadInGraph,se(122,Tu,e.showSpeedsInBits))," "),d(3),C("inline",!0),d(3),M(pe(47,75,e.uploadSpeed,se(124,v6,e.showSpeedsInBits))),d(3),gt(" ",pe(50,78,e.totalUploaded,se(126,y6,e.showTotalsInBits))," ",y(51,81,"vpn.status-page.total-data-label")," "),d(3),C("matTooltip",y(53,83,"vpn.status-page.download-info")),d(3),C("animated",!1)("data",e.receivedHistory)("min",e.minDownloadInGraph)("max",e.maxDownloadInGraph),d(4),E(" ",pe(60,85,e.maxDownloadInGraph,se(128,Tu,e.showSpeedsInBits))," "),d(2),no("margin-top: "+e.graphsTopInternalMargin+"px;"),d(4),E(" ",pe(66,88,e.midDownloadInGraph,se(130,Tu,e.showSpeedsInBits))," "),d(2),no("margin-top: "+e.graphsTopInternalMargin/2+"px;"),d(4),E(" ",pe(72,91,e.minDownloadInGraph,se(132,Tu,e.showSpeedsInBits))," "),d(3),C("inline",!0),d(3),M(pe(78,94,e.downloadSpeed,se(134,v6,e.showSpeedsInBits))),d(3),gt(" ",pe(81,97,e.totalDownloaded,se(136,y6,e.showTotalsInBits))," ",y(82,100,"vpn.status-page.total-data-label")," "),d(4),C("matTooltip",y(85,102,"vpn.status-page.latency-info")),d(3),C("animated",!1)("data",e.latencyHistory)("min",e.minLatencyInGraph)("max",e.maxLatencyInGraph),d(4),E(" ",pe(92,104,"common."+e.getLatencyValueString(e.maxLatencyInGraph),se(138,Kv,e.getPrintableLatency(e.maxLatencyInGraph)))," "),d(2),no("margin-top: "+e.graphsTopInternalMargin+"px;"),d(4),E(" ",pe(98,107,"common."+e.getLatencyValueString(e.midLatencyInGraph),se(140,Kv,e.getPrintableLatency(e.midLatencyInGraph)))," "),d(2),no("margin-top: "+e.graphsTopInternalMargin/2+"px;"),d(4),E(" ",pe(104,110,"common."+e.getLatencyValueString(e.minLatencyInGraph),se(142,Kv,e.getPrintableLatency(e.minLatencyInGraph)))," "),d(3),C("inline",!0),d(3),M(pe(110,113,"common."+e.getLatencyValueString(e.latency),se(144,Kv,e.getPrintableLatency(e.latency)))),d(2),C("ngClass",se(146,b6,e.showBusy)),d(3),S(e.showBusy?114:-1),d(),S(e.showBusy?-1:115),d(2),M(y(118,116,"vpn.status-page.disconnect"))}}function ROe(t,n){1&t&&p(0),2&t&&E(" ",v(3).currentIp," ")}function FOe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"common.unknown")," ")}function NOe(t,n){1&t&&B(0,"mat-spinner",22),2&t&&C("diameter",20)}function LOe(t,n){1&t&&(h(0,"mat-icon",67),b(1,"translate"),p(2,"warning"),u()),2&t&&C("inline",!0)("matTooltip",y(1,2,"vpn.status-page.data.ip-problem-info"))}function BOe(t,n){if(1&t){const e=oe();h(0,"mat-icon",69),b(1,"translate"),F("click",function(){return j(e),U(v(3).getIp())}),p(2,"refresh"),u()}2&t&&C("inline",!0)("matTooltip",y(1,2,"vpn.status-page.data.ip-refresh-info"))}function VOe(t,n){if(1&t&&(h(0,"div",12),x(1,ROe,1,1),x(2,FOe,2,3),x(3,NOe,1,1,"mat-spinner",22),x(4,LOe,3,4,"mat-icon",67),x(5,BOe,3,4,"mat-icon",68),u()),2&t){const e=v(2);d(),S(e.currentIp?1:-1),d(),S(e.currentIp||e.loadingCurrentIp?-1:2),d(),S(e.loadingCurrentIp?3:-1),d(),S(e.problemGettingIp?4:-1),d(),S(e.loadingCurrentIp?-1:5)}}function HOe(t,n){1&t&&(h(0,"div",12),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"vpn.status-page.data.unavailable")," "))}function jOe(t,n){1&t&&p(0),2&t&&E(" ",v(3).ipCountry," ")}function UOe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"common.unknown")," ")}function zOe(t,n){1&t&&B(0,"mat-spinner",22),2&t&&C("diameter",20)}function $Oe(t,n){1&t&&(h(0,"mat-icon",67),b(1,"translate"),p(2,"warning"),u()),2&t&&C("inline",!0)("matTooltip",y(1,2,"vpn.status-page.data.ip-country-problem-info"))}function WOe(t,n){if(1&t&&(h(0,"div",12),x(1,jOe,1,1),x(2,UOe,2,3),x(3,zOe,1,1,"mat-spinner",22),x(4,$Oe,3,4,"mat-icon",67),u()),2&t){const e=v(2);d(),S(e.ipCountry?1:-1),d(),S(e.ipCountry||e.loadingCurrentIp?-1:2),d(),S(e.loadingCurrentIp?3:-1),d(),S(e.problemGettingIp?4:-1)}}function GOe(t,n){1&t&&(h(0,"div",12),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"vpn.status-page.data.unavailable")," "))}function qOe(t,n){if(1&t){const e=oe();h(0,"div")(1,"div",11),p(2),b(3,"translate"),u(),h(4,"div",12),B(5,"app-vpn-server-name",70),h(6,"mat-icon",69),b(7,"translate"),F("click",function(){return j(e),U(v(2).openServerOptions())}),p(8,"settings"),u()()()}if(2&t){const e=v(2);d(2),M(y(3,10,"vpn.status-page.data.server")),d(3),C("isFavorite",e.currentRemoteServer.flag===e.serverFlags.Favorite)("isBlocked",e.currentRemoteServer.flag===e.serverFlags.Blocked)("hasPassword",e.currentRemoteServer.usedWithPassword)("adjustIconsForBigText",!0)("name",e.currentRemoteServer.name)("pk",e.currentRemoteServer.pk)("customName",e.currentRemoteServer.customName),d(),C("inline",!0)("matTooltip",y(7,12,"vpn.server-options.tooltip"))}}function KOe(t,n){1&t&&B(0,"div",13)}function YOe(t,n){if(1&t&&(h(0,"div")(1,"div",11),p(2),b(3,"translate"),u(),h(4,"div",16),p(5),u()()),2&t){const e=v(2);d(2),M(y(3,2,"vpn.status-page.data.server-note")),d(3),E(" ",e.currentRemoteServer.personalNote," ")}}function XOe(t,n){1&t&&B(0,"div",13)}function ZOe(t,n){if(1&t&&(h(0,"div")(1,"div",11),p(2),b(3,"translate"),u(),h(4,"div",16),p(5),u()()),2&t){const e=v(2);d(2),M(y(3,2,"vpn.status-page.data."+(e.currentRemoteServer.personalNote?"original-":"")+"server-note")),d(3),E(" ",e.currentRemoteServer.note," ")}}function QOe(t,n){1&t&&B(0,"div",13)}function JOe(t,n){if(1&t&&(h(0,"div")(1,"div",11),p(2),b(3,"translate"),u(),h(4,"div",16),B(5,"app-copy-to-clipboard-text",17),u()()),2&t){const e=v(2);d(2),M(y(3,2,"vpn.status-page.data.remote-pk")),d(3),C("text",e.currentRemoteServer.pk)}}function eAe(t,n){1&t&&B(0,"div",13)}function tAe(t,n){if(1&t&&(h(0,"div",1)(1,"div",3)(2,"div",4),B(3,"app-top-bar",2),u()(),h(4,"div",5),x(5,EOe,20,12,"div",6),x(6,AOe,119,148,"div",7),h(7,"div",8)(8,"div",9)(9,"div",10)(10,"div")(11,"div",11),p(12),b(13,"translate"),u(),x(14,VOe,6,5,"div",12),x(15,HOe,3,3,"div",12),u(),B(16,"div",13),h(17,"div")(18,"div",11),p(19),b(20,"translate"),u(),x(21,WOe,5,4,"div",12),x(22,GOe,3,3,"div",12),u(),B(23,"div",14)(24,"div",15)(25,"div",14),x(26,qOe,9,14,"div"),x(27,KOe,1,0,"div",13),x(28,YOe,6,4,"div"),x(29,XOe,1,0,"div",13),x(30,ZOe,6,4,"div"),x(31,QOe,1,0,"div",13),x(32,JOe,6,4,"div"),x(33,eAe,1,0,"div",13),h(34,"div")(35,"div",11),p(36),b(37,"translate"),u(),h(38,"div",16),B(39,"app-copy-to-clipboard-text",17),u()()()()()()()),2&t){const e=v();d(3),C("titleParts",Ct(29,_6))("tabsData",e.tabsData)("selectedTabIndex",0)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),d(2),S(e.showStarted?-1:5),d(),S(e.showStarted?6:-1),d(6),M(y(13,23,"vpn.status-page.data.ip")),d(2),S(e.ipInfoAllowed?14:-1),d(),S(e.ipInfoAllowed?-1:15),d(4),M(y(20,25,"vpn.status-page.data.country")),d(2),S(e.ipInfoAllowed?21:-1),d(),S(e.ipInfoAllowed?-1:22),d(4),S(e.showStarted&&e.currentRemoteServer?26:-1),d(),S(e.showStarted&&e.currentRemoteServer?27:-1),d(),S(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.personalNote?28:-1),d(),S(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.personalNote?29:-1),d(),S(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.note?30:-1),d(),S(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.note?31:-1),d(),S(e.showStarted&&e.currentRemoteServer?32:-1),d(),S(e.showStarted&&e.currentRemoteServer?33:-1),d(3),M(y(37,27,"vpn.status-page.data.local-pk")),d(3),C("text",e.currentLocalPk)}}let nAe=(()=>{class t extends pn{constructor(e,i,o,r,s,a){super(),this.vpnClientService=e,this.vpnSavedDataService=i,this.snackbarService=o,this.route=r,this.dialog=s,this.router=a,this.persistentServerDataResponseKey="serv-dat-response",this.tabsData=hi.vpnTabsData,this.sentHistory=[0,0,0,0,0,0,0,0,0,0],this.receivedHistory=[0,0,0,0,0,0,0,0,0,0],this.latencyHistory=[0,0,0,0,0,0,0,0,0,0],this.minUploadInGraph=0,this.midUploadInGraph=0,this.maxUploadInGraph=0,this.minDownloadInGraph=0,this.midDownloadInGraph=0,this.maxDownloadInGraph=0,this.minLatencyInGraph=0,this.midLatencyInGraph=0,this.maxLatencyInGraph=0,this.graphsTopInternalMargin=Gv.topInternalMargin,this.connectionTimeString="00:00:00",this.calculatedSegs=-1,this.uploadSpeed=0,this.downloadSpeed=0,this.totalUploaded=0,this.totalDownloaded=0,this.latency=0,this.showSpeedsInBits=!0,this.showTotalsInBits=!1,this.loading=!0,this.showStartedLastValue=!1,this.showStarted=!1,this.lastAppState=null,this.showBusy=!1,this.stopRequested=!1,this.loadingCurrentIp=!0,this.problemGettingIp=!1,this.serverFlags=_n,this.ipInfoAllowed=this.vpnSavedDataService.getCheckIpSetting();const l=this.vpnSavedDataService.getDataUnitsSetting();l===Zo.OnlyBits?(this.showSpeedsInBits=!0,this.showTotalsInBits=!0):l===Zo.OnlyBytes?(this.showSpeedsInBits=!1,this.showTotalsInBits=!1):(this.showSpeedsInBits=!0,this.showTotalsInBits=!1)}ngOnInit(){return this.navigationsSubscription=this.route.paramMap.subscribe(e=>{e.has("key")&&(this.currentLocalPk=e.get("key"),hi.changeCurrentPk(this.currentLocalPk),this.tabsData=hi.vpnTabsData),setTimeout(()=>this.navigationsSubscription.unsubscribe()),this.startGettingData(!0),this.currentRemoteServerSubscription=this.vpnSavedDataService.currentServerObservable.subscribe(i=>{this.currentRemoteServer=i})}),super.ngOnInit()}startGettingData(e){const i=e?this.getLocalValue(this.persistentServerDataResponseKey):null;let o=this.vpnClientService.backendState;i&&(o=ae(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{if(i||this.saveLocalValue(this.persistentServerDataResponseKey,JSON.stringify(r)),r&&r.serviceState!==Ri.PerformingInitialCheck){if(this.backendState=r,r.publicIp?(this.currentIp=r.publicIp,this.problemGettingIp=!1):this.currentIp=null,this.ipCountry=r.countryName?r.countryName:null,this.loadingCurrentIp=!1,this.showStarted=r.vpnClientAppData.running||r.vpnClientAppData.appState!==an.Stopped,this.showStartedLastValue!==this.showStarted){for(let s=0;s<10;s++)this.receivedHistory[s]=0,this.sentHistory[s]=0,this.latencyHistory[s]=0;this.updateGraphLimits(),this.uploadSpeed=0,this.downloadSpeed=0,this.totalUploaded=0,this.totalDownloaded=0,this.latency=0}if(this.lastAppState=r.vpnClientAppData.appState,this.showStartedLastValue=this.showStarted,this.stopRequested?this.showStarted||(this.stopRequested=!1,this.showBusy=r.busy):this.showBusy=r.busy,r.vpnClientAppData.connectionData){for(let s=0;s<10;s++)this.receivedHistory[s]=r.vpnClientAppData.connectionData.downloadSpeedHistory[s],this.sentHistory[s]=r.vpnClientAppData.connectionData.uploadSpeedHistory[s],this.latencyHistory[s]=r.vpnClientAppData.connectionData.latencyHistory[s];this.updateGraphLimits(),this.uploadSpeed=r.vpnClientAppData.connectionData.uploadSpeed,this.downloadSpeed=r.vpnClientAppData.connectionData.downloadSpeed,this.totalUploaded=r.vpnClientAppData.connectionData.totalUploaded,this.totalDownloaded=r.vpnClientAppData.connectionData.totalDownloaded,this.latency=r.vpnClientAppData.connectionData.latency}r.vpnClientAppData.running&&r.vpnClientAppData.appState===an.Running&&r.vpnClientAppData.connectionData&&r.vpnClientAppData.connectionData.connectionDuration?(-1===this.calculatedSegs||r.vpnClientAppData.connectionData.connectionDuration>this.calculatedSegs+2||r.vpnClientAppData.connectionData.connectionDuration{this.calculatedSegs+=1,this.refreshConnectionTimeString()})):this.timeUpdateSubscription&&(this.timeUpdateSubscription.unsubscribe(),this.timeUpdateSubscription=null,this.calculatedSegs=-1,this.connectionTimeString="00:00:00"),this.loading=!1}i&&this.startGettingData(!1)})}refreshConnectionTimeString(){const e=this.calculatedSegs%60,i=Math.floor(this.calculatedSegs/60),o=i%60,r=Math.floor(i/60);this.connectionTimeString=String(r).padStart(2,"0")+":"+String(o).padStart(2,"0")+":"+String(e).padStart(2,"0")}ngOnDestroy(){this.dataSubscription.unsubscribe(),this.navigationsSubscription.unsubscribe(),this.currentRemoteServerSubscription.unsubscribe(),this.closeOperationSubscription(),this.timeUpdateSubscription&&this.timeUpdateSubscription.unsubscribe()}start(){if(!this.currentRemoteServer)return this.router.navigate(["vpn",this.currentLocalPk,"servers"]),void setTimeout(()=>this.snackbarService.showWarning("vpn.status-page.select-server-warning"),100);this.currentRemoteServer.flag!==_n.Blocked?(this.showBusy=!0,this.vpnClientService.start()):this.snackbarService.showError("vpn.starting-blocked-server-error")}stop(){if(!this.backendState.vpnClientAppData.killswitch)return void this.finishStoppingVpn();const e=Rt.createConfirmationDialog(this.dialog,"vpn.status-page.disconnect-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.finishStoppingVpn()})}finishStoppingVpn(){this.stopRequested=!0,this.showBusy=!0,this.vpnClientService.stop()}openServerOptions(){hi.openServerOptions(this.currentRemoteServer,this.router,this.vpnSavedDataService,this.vpnClientService,this.snackbarService,this.dialog).subscribe()}getCountryName(e){return es[e.toUpperCase()]?es[e.toUpperCase()]:e}getNoteVar(){return this.currentRemoteServer.note&&this.currentRemoteServer.personalNote?"vpn.server-list.notes-info":!this.currentRemoteServer.note&&this.currentRemoteServer.personalNote?this.currentRemoteServer.personalNote:this.currentRemoteServer.note}getLatencyValueString(e){return hi.getLatencyValueString(e)}getPrintableLatency(e){return hi.getPrintableLatency(e)}get currentStateText(){return this.backendState.vpnClientAppData.appState===an.Stopped?"vpn.connection-info.state-disconnected":this.backendState.vpnClientAppData.appState===an.Connecting?"vpn.connection-info.state-connecting":this.backendState.vpnClientAppData.appState===an.Running?"vpn.connection-info.state-connected":this.backendState.vpnClientAppData.appState===an.ShuttingDown?"vpn.connection-info.state-disconnecting":this.backendState.vpnClientAppData.appState===an.Reconnecting?"vpn.connection-info.state-reconnecting":void 0}get currentStateLineClass(){return this.backendState.vpnClientAppData.appState===an.Stopped?"red-line":this.backendState.vpnClientAppData.appState===an.Connecting?"yellow-line":this.backendState.vpnClientAppData.appState===an.Running?"green-line":"yellow-line"}closeOperationSubscription(){this.operationSubscription&&this.operationSubscription.unsubscribe()}updateGraphLimits(){const e=this.calculateGraphLimits(this.sentHistory);this.minUploadInGraph=e[0],this.midUploadInGraph=e[1],this.maxUploadInGraph=e[2];const i=this.calculateGraphLimits(this.receivedHistory);this.minDownloadInGraph=i[0],this.midDownloadInGraph=i[1],this.maxDownloadInGraph=i[2];const o=this.calculateGraphLimits(this.latencyHistory);this.minLatencyInGraph=o[0],this.midLatencyInGraph=o[1],this.maxLatencyInGraph=o[2]}calculateGraphLimits(e){let o=0;return e.forEach(s=>{s>o&&(o=s)}),0===o&&(o+=1),[0,new fv(o).minus(0).dividedBy(2).plus(0).decimalPlaces(1).toNumber(),o]}getIp(){this.ipInfoAllowed&&(this.vpnClientService.updateData(),this.snackbarService.showDone("common.refreshed"))}static{this.\u0275fac=function(i){return new(i||t)(O(hc),O(uc),O(ct),O(Ai),O(Ot),O(vt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-vpn-status"]],standalone:!1,features:[be],decls:2,vars:2,consts:[[1,"d-flex","flex-column","h-100","w-100"],[1,"general-container"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton","localVpnKey"],[1,"row"],[1,"col-12"],[1,"row","flex-1"],[1,"col-7","column","left-area"],[1,"col-7","column","left-area-connected"],[1,"col-5","column","right-area"],[1,"column-container"],[1,"content-area"],[1,"title"],[1,"big-text"],[1,"margin"],[1,"big-margin"],[1,"separator"],[1,"small-text"],[3,"text"],[1,"start-button",3,"click","ngClass"],[1,"start-button-img-container"],[1,"start-button-img"],[1,"start-button-img","animated-button"],[3,"diameter"],[3,"inline"],[1,"current-server"],[1,"none"],[1,"lower-text","current-server-note"],[1,"lower-text","last-error"],[1,"flag"],[3,"matTooltip"],[1,"text-container"],[1,"top-line"],["defaultName","vpn.unnamed",3,"isFavorite","isBlocked","hasPassword","name","pk","customName"],[1,"bottom-line"],[3,"shortSimple","text"],[1,"icon-button-separator"],[1,"icon-button"],[1,"transparent-button","vpn-small-button",3,"click","inline","matTooltip"],[1,"time-container"],[1,"time-content"],[1,"state-title"],[1,"d-inline-block"],[1,"state-text"],[1,"state-explanation"],[1,"last-connected-error"],[1,"data-container"],[1,"rounded-elevated-box","data-box","big-box",3,"matTooltip"],[1,"chart-container"],["height","140","color","#00000080",3,"animated","data","min","max"],[1,"chart-label"],[1,"label-container","label-top"],[1,"label"],[1,"line"],[1,"label-container","label-mid"],[1,"label-container","label-bottom"],[1,"content"],[1,"upload",3,"inline"],[1,"speed"],[1,"total"],[1,"chart-label","top-chart-label"],[1,"download",3,"inline"],[1,"latency-container"],[1,"rounded-elevated-box","data-box","small-box",3,"matTooltip"],["height","50","color","#00000080",3,"animated","data","min","max"],[1,"disconnect-button",3,"click","ngClass"],[1,"disconnect-button-container"],[1,"d-inline-flex"],[1,"small-icon","blinking",3,"inline","matTooltip"],[1,"big-icon","transparent-button","vpn-small-button",3,"inline","matTooltip"],[1,"big-icon","transparent-button","vpn-small-button",3,"click","inline","matTooltip"],["defaultName","vpn.unnamed",3,"isFavorite","isBlocked","hasPassword","adjustIconsForBigText","name","pk","customName"]],template:function(i,o){1&i&&(x(0,wOe,4,6,"div",0),x(1,tAe,40,30,"div",1)),2&i&&(S(o.loading?0:-1),d(),S(o.loading?-1:1))},dependencies:[$t,We,Kt,so,op,Gv,Yr,Mr,g6,xe,rp],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .bottom-line[_ngcontent-%COMP%], .left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .top-line[_ngcontent-%COMP%], .left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .none[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}.general-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%}.column[_ngcontent-%COMP%]{height:100%;display:flex;align-items:center;padding-top:40px;padding-bottom:20px}.column[_ngcontent-%COMP%] .column-container[_ngcontent-%COMP%]{width:100%;text-align:center}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%]{background:#000000b3;border-radius:100px;font-size:.8rem;padding:8px 15px;display:inline-block}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%] .time-content[_ngcontent-%COMP%]{color:#bbb}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%] .time-content[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:10px}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%] .time-content[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{vertical-align:top}.left-area-connected[_ngcontent-%COMP%] .state-title[_ngcontent-%COMP%]{font-size:1rem;color:#bbb}.left-area-connected[_ngcontent-%COMP%] .state-text[_ngcontent-%COMP%]{font-size:2rem;text-transform:uppercase}.left-area-connected[_ngcontent-%COMP%] .state-line[_ngcontent-%COMP%]{height:1px;width:100%;margin-bottom:5px}.left-area-connected[_ngcontent-%COMP%] .green-line[_ngcontent-%COMP%]{background-color:#2ecc54}.left-area-connected[_ngcontent-%COMP%] .yellow-line[_ngcontent-%COMP%]{background-color:#d48b05}.left-area-connected[_ngcontent-%COMP%] .red-line[_ngcontent-%COMP%]{background-color:#da3439}.left-area-connected[_ngcontent-%COMP%] .state-explanation[_ngcontent-%COMP%]{font-size:.7rem}.left-area-connected[_ngcontent-%COMP%] .last-connected-error[_ngcontent-%COMP%]{margin-top:15px;font-size:.8rem;color:#ff393f}.left-area-connected[_ngcontent-%COMP%] .last-connected-error[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px;display:inline;-webkit-user-select:none;user-select:none}.left-area-connected[_ngcontent-%COMP%] .data-container[_ngcontent-%COMP%]{margin-top:20px}.left-area-connected[_ngcontent-%COMP%] .latency-container[_ngcontent-%COMP%]{margin-bottom:20px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%]{cursor:default;display:inline-block}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-container[_ngcontent-%COMP%]{height:0px;position:relative;top:-3px;left:-3px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%]{height:0px;text-align:left}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%]{position:relative;top:-3px;left:-3px;display:flex;margin-right:-6px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:.6rem;margin-left:5px;opacity:.2}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%] .line[_ngcontent-%COMP%]{height:1px;width:10px;background-color:#fff;flex-grow:1;opacity:.1;margin-left:10px;margin-right:5px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-top[_ngcontent-%COMP%]{align-items:flex-start}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-mid[_ngcontent-%COMP%]{align-items:center}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-bottom[_ngcontent-%COMP%]{align-items:flex-end;position:relative;top:-6px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%]{width:170px;height:140px;margin:5px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .chart-container[_ngcontent-%COMP%]{width:170px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]{width:170px;height:140px;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;padding-bottom:20px;position:relative;top:-3px;left:-3px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:25px;transform:rotate(-90deg);width:40px;height:40px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .download[_ngcontent-%COMP%]{transform:rotate(-90deg)}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .upload[_ngcontent-%COMP%]{transform:rotate(90deg)}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .speed[_ngcontent-%COMP%]{font-size:.875rem}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .total[_ngcontent-%COMP%]{font-size:.8rem;color:#bbb}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%]{height:140px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%]{width:352px;height:50px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .chart-container[_ngcontent-%COMP%]{width:352px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]{display:inline-flex;align-items:center;height:100%;font-size:.875rem;position:relative}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;height:25px;margin-right:5px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%]{height:50px}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%]{background:linear-gradient(#940000,#7b0000) no-repeat!important;box-shadow:5px 5px 7px #00000080;width:352px;font-size:24px;display:inline-block;border-radius:10px;overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%]:hover{background:linear-gradient(#a10000,#900000) no-repeat!important}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%]:active{transform:scale(.98);box-shadow:0 0 7px #00000080}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%]{background-image:url(/assets/img/background-pattern.png);padding:12px}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:10px;align-self:center}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%]{display:inline-block;position:relative;top:4px;margin-right:10px;align-self:center}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{position:relative;top:-2px;line-height:1.7}.left-area[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:700;text-align:center;text-transform:uppercase}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]{text-align:center;margin:10px 0;cursor:pointer;display:inline-block;width:140px;height:140px}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]:active mat-icon[_ngcontent-%COMP%]{transform:scale(.9)}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]:hover .start-button-img-container[_ngcontent-%COMP%]{opacity:1}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{text-shadow:0px 0px 5px white}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .start-button-img-container[_ngcontent-%COMP%]{width:0px;height:0px;opacity:.7}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .start-button-img-container[_ngcontent-%COMP%] .start-button-img[_ngcontent-%COMP%]{display:inline-block;background-image:url(/assets/img/start-button.png);background-size:contain;width:140px;height:140px}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .start-button-img-container[_ngcontent-%COMP%] .animated-button[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_button-animation 4s linear infinite;pointer-events:none}@keyframes _ngcontent-%COMP%_button-animation{0%{transform:scale(1.5);opacity:0}25%{transform:scale(1);opacity:.8}50%{transform:scale(1.5);opacity:0}to{transform:scale(1.5);opacity:0}}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{line-height:140px;font-size:50px;-webkit-user-select:none;user-select:none;text-shadow:0px 0px 2px white}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%]{display:inline-block;margin-top:50px;opacity:.5}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%]{display:inline-flex;background:#000000b3;border-radius:10px;padding:10px 15px;max-width:280px;text-align:left}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .none[_ngcontent-%COMP%]{font-size:.875rem}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .flag[_ngcontent-%COMP%]{background-image:url(/assets/img/big-flags/unknown.png);width:20px;height:15px;background-size:contain;align-self:center;flex-shrink:0;margin-right:12px}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .flag[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{width:20px;height:15px;background-size:contain}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{overflow:hidden}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .top-line[_ngcontent-%COMP%]{font-size:.875rem}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .bottom-line[_ngcontent-%COMP%]{font-size:.7rem;color:#bbb}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button-separator[_ngcontent-%COMP%]{display:flex;align-items:center}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button-separator[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{width:1px;height:30px;background:#ffffff26;margin-left:12px}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button[_ngcontent-%COMP%]{font-size:22px;line-height:1;display:flex;align-items:center;padding-left:12px}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{cursor:pointer}.left-area[_ngcontent-%COMP%] .lower-text[_ngcontent-%COMP%]{display:inline-block;max-width:280px;margin-top:10px}.left-area[_ngcontent-%COMP%] .lower-text[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px;display:inline;-webkit-user-select:none;user-select:none}.left-area[_ngcontent-%COMP%] .current-server-note[_ngcontent-%COMP%]{font-size:.8rem;color:#bbb}.left-area[_ngcontent-%COMP%] .last-error[_ngcontent-%COMP%]{font-size:.8rem;color:#ff393f}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%]{background:#3d67a226;padding:30px;text-align:left;max-width:420px;opacity:.95}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:.8rem;color:#bbb}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%]{font-size:1.25rem;overflow-wrap:break-word}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%]{display:inline-block;opacity:.5;margin-left:5px;position:relative;top:2px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] .small-icon[_ngcontent-%COMP%]{color:#d48b05;opacity:.7;font-size:.875rem;cursor:default;margin-left:5px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] .big-icon[_ngcontent-%COMP%]{font-size:1.125rem;margin-left:5px;position:relative;top:2px;line-height:1}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .small-text[_ngcontent-%COMP%]{font-size:.7rem;margin-top:1px;overflow-wrap:break-word}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .margin[_ngcontent-%COMP%]{height:12px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-margin[_ngcontent-%COMP%]{height:15px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .separator[_ngcontent-%COMP%]{height:1px;width:100%;background:#ffffff26}.disabled-button[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}"]})}}return t})(),SD=(()=>{class t{set lastError(e){this.lastErrorInternal=e}constructor(e){this.router=e}canActivate(e,i){return this.checkIfCanActivate()}canActivateChild(e,i){return this.checkIfCanActivate()}checkIfCanActivate(){return this.lastErrorInternal?(this.router.navigate(["vpn","unavailable"],{queryParams:{problem:this.lastErrorInternal}}),ae(!1)):ae(!0)}static{this.\u0275fac=function(i){return new(i||t)(ce(vt))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Ha=function(t){return t.UnableToConnectWithTheVpnClientApp="unavailable",t.NoLocalVisorPkProvided="pk",t.InvalidStorageState="storage",t.LocalVisorPkChangedDuringUsage="pkChange",t}(Ha||{});let iAe=(()=>{class t extends pn{constructor(e,i,o){super(),this.route=e,this.vpnAuthGuardService=i,this.vpnClientService=o,this.problem=null,this.navigationsSubscription=this.route.queryParamMap.subscribe(r=>{this.problem=r.get("problem"),this.problem||(this.problem=Ha.UnableToConnectWithTheVpnClientApp),this.vpnAuthGuardService.lastError=this.problem,this.vpnClientService.stopContinuallyUpdatingData(),setTimeout(()=>this.navigationsSubscription.unsubscribe())})}getTitle(){return this.problem===Ha.NoLocalVisorPkProvided?"vpn.error-page.text-pk":this.problem===Ha.InvalidStorageState?"vpn.error-page.text-storage":this.problem===Ha.LocalVisorPkChangedDuringUsage?"vpn.error-page.text-pk-change":"vpn.error-page.text"}getInfo(){return this.problem===Ha.NoLocalVisorPkProvided?"vpn.error-page.more-info-pk":this.problem===Ha.InvalidStorageState?"vpn.error-page.more-info-storage":this.problem===Ha.LocalVisorPkChangedDuringUsage?"vpn.error-page.more-info-pk-change":"vpn.error-page.more-info"}static{this.\u0275fac=function(i){return new(i||t)(O(Ai),O(SD),O(hc))}}static{this.\u0275cmp=re({type:t,selectors:[["app-vpn-error"]],standalone:!1,features:[be],decls:12,vars:7,consts:[[1,"main-container"],[1,"text-container"],[1,"inner-container"],[1,"error-icon"],[3,"inline"],[1,"more-info"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3)(4,"mat-icon",4),p(5,"error_outline"),u()(),h(6,"div"),p(7),b(8,"translate"),u(),h(9,"div",5),p(10),b(11,"translate"),u()()()()),2&i&&(d(4),C("inline",!0),d(3),M(y(8,3,o.getTitle())),d(3),M(y(11,5,o.getInfo())))},dependencies:[We,xe],styles:[".main-container[_ngcontent-%COMP%]{height:100%;display:flex}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{width:100%;align-self:center;text-align:center}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .inner-container[_ngcontent-%COMP%]{max-width:550px;display:inline-block;font-size:1.25rem}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .inner-container[_ngcontent-%COMP%] .error-icon[_ngcontent-%COMP%]{font-size:80px}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .inner-container[_ngcontent-%COMP%] .more-info[_ngcontent-%COMP%]{font-size:.8rem;opacity:.75;margin-top:10px}"]})}}return t})();const oAe=["button"],rAe=["firstInput"],sAe=t=>({"element-disabled":t});let aAe=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.formBuilder=o,this.snackbarService=r,this.routeService=s}ngOnInit(){this.form=this.formBuilder.group({min:[this.data.minHops,Ne.compose([Ne.required,Ne.maxLength(3),Ne.pattern("^[0-9]+$")])]}),setTimeout(()=>this.firstInput.nativeElement.focus())}ngOnDestroy(){this.operationSubscription&&this.operationSubscription.unsubscribe()}get disableDismiss(){return!!this.button&&this.button.isLoading}save(){!this.form.valid||this.operationSubscription||(this.button.showLoading(),this.operationSubscription=this.routeService.setMinHops(this.data.nodePk,Number.parseInt(this.form.get("min").value,10)).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)}))}onSuccess(e){this.dialogRef.close(!0),this.snackbarService.showDone("router-config.done")}onError(e){this.button.showError(),this.operationSubscription=null,e=Qe(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(di),O(ct),O(Ek))}}static{this.\u0275cmp=re({type:t,selectors:[["app-router-config"]],viewQuery:function(i,o){if(1&i&&ot(oAe,5)(rAe,5),2&i){let r;he(r=fe())&&(o.button=r.first),he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:21,vars:22,consts:[["firstInput",""],["button",""],[3,"headline","dialog","disableDismiss"],[1,"info-container"],[3,"formGroup","ngClass"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","min","maxlength","3","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),b(1,"translate"),h(2,"div",3),p(3),b(4,"translate"),u(),h(5,"form",4)(6,"mat-form-field")(7,"div",5)(8,"label",6),p(9),b(10,"translate"),u(),B(11,"input",7,0),u(),h(13,"mat-error")(14,"span"),p(15),b(16,"translate"),u()()()(),h(17,"app-button",8,1),F("action",function(){return o.save()}),p(19),b(20,"translate"),u()()),2&i&&(C("headline",y(1,10,"router-config.title"))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),d(3),M(y(4,12,"router-config.info")),d(2),C("formGroup",o.form)("ngClass",se(20,sAe,o.disableDismiss)),d(4),M(y(10,14,"router-config.min-hops")),d(6),M(y(16,16,"router-config.min-hops-error")),d(2),C("disabled",!o.form.valid),d(2),E(" ",y(20,18,"router-config.save-config-button")," "))},dependencies:[$t,xn,Gt,qt,wn,wi,on,mn,sn,Ma,In,ui,gn,xe],styles:[".info-container[_ngcontent-%COMP%]{margin-bottom:10px}"]})}}return t})();const lAe=["button"],cAe=["firstInput"];let dAe=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.dialogRef=e,this.data=i,this.formBuilder=o,this.snackbarService=r,this.appsService=s,this.vpnClientService=a}ngOnInit(){this.form=this.formBuilder.group({ip:[this.data.ip,Ne.compose([Ne.maxLength(15),this.validateIp.bind(this)])]}),setTimeout(()=>this.firstInput.nativeElement.focus())}ngOnDestroy(){this.operationSubscription&&this.operationSubscription.unsubscribe()}validateIp(){if(this.form){const e=this.form.get("ip").value;return Rt.checkIfIpValidOrEmpty(e)?null:{invalid:!0}}return null}save(){!this.form.valid||this.operationSubscription||(this.button.showLoading(),this.operationSubscription=this.appsService.changeAppSettings(this.data.nodePk,this.vpnClientService.vpnClientAppName,{dns:this.form.get("ip").value}).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)}))}onSuccess(e){this.dialogRef.close(!0),this.snackbarService.showDone("vpn.dns-config.done")}onError(e){this.button.showError(),this.operationSubscription=null,e=Qe(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(vB),O(ct),O(Rs),O(hc))}}static{this.\u0275cmp=re({type:t,selectors:[["app-vpn-dns-config"]],viewQuery:function(i,o){if(1&i&&ot(lAe,5)(cAe,5),2&i){let r;he(r=fe())&&(o.button=r.first),he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:14,vars:11,consts:[["firstInput",""],["button",""],[3,"headline"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","ip","maxlength","15","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),b(1,"translate"),h(2,"form",3)(3,"mat-form-field")(4,"div",4)(5,"label",5),p(6),b(7,"translate"),u(),B(8,"input",6,0),u()()(),h(10,"app-button",7,1),F("action",function(){return o.save()}),p(12),b(13,"translate"),u()()),2&i&&(C("headline",y(1,5,"vpn.dns-config.title")),d(2),C("formGroup",o.form),d(4),M(y(7,7,"vpn.dns-config.ip")),d(4),C("disabled",!o.form.valid),d(2),E(" ",y(13,9,"vpn.dns-config.save-config-button")," "))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,In,ui,gn,xe],encapsulation:2})}}return t})();const uAe=["topBarLoading"],hAe=["topBarLoaded"],C6=()=>["vpn.title"];function fAe(t,n){if(1&t&&(h(0,"div",2)(1,"div"),B(2,"app-top-bar",4,0),u(),B(4,"app-loading-indicator",5),u()),2&t){const e=v();d(2),C("titleParts",Ct(5,C6))("tabsData",e.tabsData)("selectedTabIndex",2)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk)}}function pAe(t,n){1&t&&B(0,"mat-spinner",17),2&t&&C("diameter",12)}function mAe(t,n){if(1&t){const e=oe();h(0,"div",3)(1,"div",6),B(2,"app-top-bar",4,1),u(),h(4,"div",7)(5,"div",8)(6,"div",9)(7,"div",10)(8,"table",11)(9,"tr")(10,"th",12)(11,"div",13)(12,"div",14),p(13),b(14,"translate"),u()()(),h(15,"th",12),p(16),b(17,"translate"),u()(),h(18,"tr",15),F("click",function(){return j(e),U(v().changeKillswitchOption())}),h(19,"td",12)(20,"div"),p(21),b(22,"translate"),h(23,"mat-icon",16),b(24,"translate"),p(25,"help"),u()()(),h(26,"td",12),B(27,"span"),p(28),b(29,"translate"),x(30,pAe,1,1,"mat-spinner",17),u()(),h(31,"tr",15),F("click",function(){return j(e),U(v().changeGetIpOption())}),h(32,"td",12)(33,"div"),p(34),b(35,"translate"),h(36,"mat-icon",16),b(37,"translate"),p(38,"help"),u()()(),h(39,"td",12),B(40,"span"),p(41),b(42,"translate"),u()(),h(43,"tr",15),F("click",function(){return j(e),U(v().changeDataUnits())}),h(44,"td",12)(45,"div"),p(46),b(47,"translate"),h(48,"mat-icon",16),b(49,"translate"),p(50,"help"),u()()(),h(51,"td",12),p(52),b(53,"translate"),u()(),h(54,"tr",15),F("click",function(){return j(e),U(v().changeHops())}),h(55,"td",12)(56,"div"),p(57),b(58,"translate"),h(59,"mat-icon",16),b(60,"translate"),p(61,"help"),u()()(),h(62,"td",12),p(63),u()(),h(64,"tr",15),F("click",function(){return j(e),U(v().changeDns())}),h(65,"td",12)(66,"div"),p(67),b(68,"translate"),h(69,"mat-icon",16),b(70,"translate"),p(71,"help"),u()()(),h(72,"td",12),p(73),b(74,"translate"),u()()()()()()()()}if(2&t){const e=v();d(2),C("titleParts",Ct(64,C6))("tabsData",e.tabsData)("selectedTabIndex",2)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),d(11),E(" ",y(14,32,"vpn.settings-page.setting-small-table-label")," "),d(3),E(" ",y(17,34,"vpn.settings-page.value-small-table-label")," "),d(5),E(" ",y(22,36,"vpn.settings-page.killswitch")," "),d(2),C("inline",!0)("matTooltip",y(24,38,"vpn.settings-page.killswitch-info")),d(4),Ze(e.getStatusClass(e.backendData.vpnClientAppData.killswitch)),d(),E(" ",y(29,40,e.getStatusText(e.backendData.vpnClientAppData.killswitch))," "),d(2),S(e.working===e.workingOptions.Killswitch?30:-1),d(4),E(" ",y(35,42,"vpn.settings-page.get-ip")," "),d(2),C("inline",!0)("matTooltip",y(37,44,"vpn.settings-page.get-ip-info")),d(4),Ze(e.getStatusClass(e.getIpOption)),d(),E(" ",y(42,46,e.getStatusText(e.getIpOption))," "),d(5),E(" ",y(47,48,"vpn.settings-page.data-units")," "),d(2),C("inline",!0)("matTooltip",y(49,50,"vpn.settings-page.data-units-info")),d(4),E(" ",y(53,52,e.getUnitsOptionText(e.dataUnitsOption))," "),d(5),E(" ",y(58,54,"vpn.settings-page.minimum-hops")," "),d(2),C("inline",!0)("matTooltip",y(60,56,"vpn.settings-page.minimum-hops-info")),d(4),E(" ",e.backendData.vpnClientAppData.minHops," "),d(4),E(" ",y(68,58,"vpn.settings-page.dns")," "),d(2),C("inline",!0)("matTooltip",y(70,60,"vpn.settings-page.dns-info")),d(4),E(" ",e.backendData.vpnClientAppData.dns?e.backendData.vpnClientAppData.dns:y(74,62,"vpn.settings-page.setting-none")," ")}}var Tc=function(t){return t[t.None=0]="None",t[t.Killswitch=1]="Killswitch",t}(Tc||{});const gAe=[{path:"",component:Ahe},{path:"login",component:XB},{path:"nodes",canActivate:[Kf],canActivateChild:[Kf],children:[{path:"",redirectTo:"list/1",pathMatch:"full"},{path:"list",redirectTo:"list/1",pathMatch:"full"},{path:"list/:page",component:mV},{path:"dmsg",redirectTo:"rewards/1",pathMatch:"full"},{path:"dmsg/:page",redirectTo:"rewards/1"},{path:"rewards",redirectTo:"rewards/1",pathMatch:"full"},{path:"rewards/:page",component:mV},{path:"services-health",component:DEe},{path:"network",component:FEe},{path:"resources",component:JEe},{path:"transports",component:fPe},{path:"dmsg-settings",redirectTo:"list/1"},{path:":key",component:ke,children:[{path:"",redirectTo:"info",pathMatch:"full"},{path:"info",component:KPe},{path:"routing",component:dke},{path:"apps",component:HMe},{path:"resources",component:tTe},{path:"chat",component:pTe},{path:"dmsg",component:TPe},{path:"transports",component:R2e},{path:"transports/:page",redirectTo:"transports"},{path:"routes",redirectTo:"routing",pathMatch:"full"},{path:"routes/:page",redirectTo:"routing"},{path:"rewards",component:eEe},{path:"skynet",component:uIe},{path:"apps-list/:showOfficialApps/:page",component:PPe}]}]},{path:"settings",canActivate:[Kf],canActivateChild:[Kf],children:[{path:"",component:zye},{path:"labels",redirectTo:"labels/1",pathMatch:"full"},{path:"labels/:page",component:fIe}]},{path:"vpnlogin/:key",component:XB},{path:"vpn",canActivate:[SD],canActivateChild:[SD],children:[{path:"unavailable",component:iAe},{path:":key",children:[{path:"status",component:nAe},{path:"servers",redirectTo:"servers/public/1",pathMatch:"full"},{path:"servers/:type/:page",component:m6},{path:"settings",component:(()=>{class t extends pn{constructor(e,i,o,r,s,a){super(),this.vpnClientService=e,this.snackbarService=i,this.appsService=o,this.vpnSavedDataService=r,this.dialog=s,this.loading=!0,this.tabsData=hi.vpnTabsData,this.working=Tc.None,this.workingOptions=Tc,this.navigationsSubscription=a.paramMap.subscribe(l=>{l.has("key")&&(this.currentLocalPk=l.get("key"),hi.changeCurrentPk(this.currentLocalPk),this.tabsData=hi.vpnTabsData)}),this.dataSubscription=this.vpnClientService.backendState.subscribe(l=>{l&&l.serviceState!==Ri.PerformingInitialCheck&&(this.backendData=l,this.loading=!1)}),this.getIpOption=this.vpnSavedDataService.getCheckIpSetting(),this.dataUnitsOption=this.vpnSavedDataService.getDataUnitsSetting()}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.dataSubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()}getStatusClass(e){return!0===e?"dot-green":"dot-red"}getStatusText(e){return!0===e?"vpn.settings-page.setting-on":"vpn.settings-page.setting-off"}getUnitsOptionText(e){switch(e){case Zo.OnlyBits:return"vpn.settings-page.data-units-modal.only-bits";case Zo.OnlyBytes:return"vpn.settings-page.data-units-modal.only-bytes";default:return"vpn.settings-page.data-units-modal.bits-speed-and-bytes-volume"}}changeKillswitchOption(){if(this.working===Tc.None)if(this.backendData.vpnClientAppData.running){const e=Rt.createConfirmationDialog(this.dialog,"vpn.settings-page.change-while-connected-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.finishChangingKillswitchOption()})}else this.finishChangingKillswitchOption();else this.snackbarService.showWarning("vpn.settings-page.working-warning")}finishChangingKillswitchOption(){this.working=Tc.Killswitch,this.operationSubscription=this.appsService.changeAppSettings(this.currentLocalPk,this.vpnClientService.vpnClientAppName,{killswitch:!this.backendData.vpnClientAppData.killswitch}).subscribe(()=>{this.working=Tc.None,this.vpnClientService.updateData()},e=>{this.working=Tc.None,e=Qe(e),this.snackbarService.showError(e)})}changeGetIpOption(){this.getIpOption=!this.getIpOption,this.vpnSavedDataService.setCheckIpSetting(this.getIpOption)}changeDataUnits(){const e=[],i=[];Object.keys(Zo).forEach(o=>{const r={label:this.getUnitsOptionText(Zo[o])};this.dataUnitsOption===Zo[o]&&(r.icon="done"),e.push(r),i.push(Zo[o])}),ao.openDialog(this.dialog,e,"vpn.settings-page.data-units-modal.title").afterClosed().subscribe(o=>{o&&(this.dataUnitsOption=i[o-1],this.vpnSavedDataService.setDataUnitsSetting(this.dataUnitsOption),this.topBarLoading&&this.topBarLoading.updateVpnDataStatsUnit(),this.topBarLoaded&&this.topBarLoaded.updateVpnDataStatsUnit())})}changeHops(){aAe.openDialog(this.dialog,{nodePk:this.currentLocalPk,minHops:this.backendData.vpnClientAppData.minHops}).afterClosed().subscribe()}changeDns(){dAe.openDialog(this.dialog,{nodePk:this.currentLocalPk,ip:this.backendData.vpnClientAppData.dns}).afterClosed().subscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(hc),O(ct),O(Rs),O(uc),O(Ot),O(Ai))}}static{this.\u0275cmp=re({type:t,selectors:[["app-vpn-settings-list"]],viewQuery:function(i,o){if(1&i&&ot(uAe,5)(hAe,5),2&i){let r;he(r=fe())&&(o.topBarLoading=r.first),he(r=fe())&&(o.topBarLoaded=r.first)}},standalone:!1,features:[be],decls:2,vars:2,consts:[["topBarLoading",""],["topBarLoaded",""],[1,"d-flex","flex-column","h-100","w-100"],[1,"row"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton","localVpnKey"],[1,"h-100"],[1,"col-12"],[1,"col-12","mt-4.5","vpn-table-container"],[1,"width-limiter"],[1,"rounded-elevated-box"],[1,"box-internal-container"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table"],[1,"data-column"],[1,"header-container"],[1,"header-text"],[1,"selectable",3,"click"],[1,"help-icon",3,"inline","matTooltip"],[3,"diameter"]],template:function(i,o){1&i&&(x(0,fAe,5,6,"div",2),x(1,mAe,75,65,"div",3)),2&i&&(S(o.loading?0:-1),d(),S(o.loading?-1:1))},dependencies:[We,Kt,so,Yr,Mr,xe],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%], .data-column[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}table[_ngcontent-%COMP%]{width:100%}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-top:7px!important;padding-bottom:7px!important;font-size:12px!important;font-weight:400!important}.data-column[_ngcontent-%COMP%]{max-width:0;width:50%}.header-container[_ngcontent-%COMP%]{max-width:100%;display:inline-flex}.header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%]{flex-grow:1}mat-spinner[_ngcontent-%COMP%]{display:inline-block;opacity:.5;margin-left:2px;position:relative;top:2px}mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}"]})}}return t})()},{path:"**",redirectTo:"status"}]},{path:"**",redirectTo:"/vpn/unavailable?problem=pk"}]},{path:"**",redirectTo:""}];let _Ae=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=tt({type:t})}static{this.\u0275inj=Je({imports:[b5.forRoot(gAe,{useHash:!0}),b5]})}}return t})(),vAe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ii]})}return t})(),yAe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[f4,Zd,ii,Rf]})}return t})();class CAe{getTranslation(n){return Kn(Ec(995)(`./${n}.json`))}}let wAe=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=tt({type:t})}static{this.\u0275inj=Je({imports:[l5.forRoot({loader:{provide:$f,useClass:CAe}}),l5]})}}return t})(),xAe=(()=>{class t{shouldDetach(e){return!1}store(e,i){}shouldAttach(e){return!1}retrieve(e){return null}shouldReuseRoute(e,i){return!1}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac})}}return t})();const SAe={disabled:!0};let kAe=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=tt({type:t,bootstrap:[Xr]})}static{this.\u0275inj=Je({providers:[np,{provide:$4,useValue:{duration:3e3,verticalPosition:"top"}},{provide:k4,useValue:{width:"600px",hasBackdrop:!0}},{provide:pk,useClass:gpe},{provide:O3,useClass:xAe},{provide:TS,useValue:SAe},Sse($l(va.LegacyInterceptors,[{provide:xL,useFactory:mse},{provide:pf,useExisting:xL,multi:!0}]))],imports:[oN,dre,Afe,_Ae,wAe,Due,oue,lv,vpe,pDe,B4,Fue,yAe,jge,Ofe,vAe,qme,Xue,fge,vTe]})}}return t})();(function wA(t,n,e){const i=t.\u0275cmp;i.directiveDefs=Tg(n,dI),i.pipeDefs=Tg(e,tr)})(m6,[$t,Ld,Is,Pn,We,Kt,op,Yr,mv,Mr,g6],[fa,xe]),mie().bootstrapModule(kAe,{applicationProviders:[function fee(t){const n=t?.scheduleInRootZone,e=function hee({ngZoneFactory:t,scheduleInRootZone:n}){return t??=()=>new _e({...VR(),scheduleInRootZone:n}),[{provide:um,useValue:!1},{provide:_e,useFactory:t},{provide:ss,multi:!0,useFactory:()=>{const e=D(dee,{optional:!0});return()=>e.initialize()}},{provide:ss,multi:!0,useFactory:()=>{const e=D(pee);return()=>{e.initialize()}}},{provide:zM,useValue:n??BM}]}({ngZoneFactory:()=>{const i=VR(t);return i.scheduleInRootZone=n,i.shouldCoalesceEventChangeDetection&&vi("NgZone_CoalesceEvent"),new _e(i)},scheduleInRootZone:n});return Hu([{provide:uee,useValue:!0},e])}()]}).catch(t=>console.log(t))},995(Eu,Yv,Ec){var An={"./de.json":[229,[229]],"./de_base.json":[735,[735]],"./en.json":[473,[473]],"./es.json":[18,[18]],"./es_base.json":[434,[434]],"./pt.json":[750,[750]],"./pt_base.json":[718,[718]]};function os(Ua){if(!Ec.o(An,Ua))return Promise.resolve().then(()=>{var Te=new Error("Cannot find module '"+Ua+"'");throw Te.code="MODULE_NOT_FOUND",Te});var Pc=An[Ua],Rn=Pc[0];return Ec.e(Pc[1][0]).then(()=>Ec.t(Rn,19))}os.keys=()=>Object.keys(An),os.id=995,Eu.exports=os}},Eu=>{Eu(Eu.s=398)}]); \ No newline at end of file diff --git a/static/skywire-manager-src/dist/runtime.5f5290bb093e7f9b.js b/pkg/visor/static/runtime.e180a7a1f57101c3.js similarity index 65% rename from static/skywire-manager-src/dist/runtime.5f5290bb093e7f9b.js rename to pkg/visor/static/runtime.e180a7a1f57101c3.js index e9b59d6e88..ce966c02f7 100644 --- a/static/skywire-manager-src/dist/runtime.5f5290bb093e7f9b.js +++ b/pkg/visor/static/runtime.e180a7a1f57101c3.js @@ -1 +1 @@ -(()=>{"use strict";var e,g={},v={};function r(e){var n=v[e];if(void 0!==n)return n.exports;var t=v[e]={exports:{}};return g[e](t,t.exports,r),t.exports}r.m=g,e=[],r.O=(n,t,f,i)=>{if(!t){var a=1/0;for(o=0;o=i)&&Object.keys(r.O).every(b=>r.O[b](t[d]))?t.splice(d--,1):(c=!1,i0&&e[o-1][2]>i;o--)e[o]=e[o-1];e[o]=[t,f,i]},r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},(()=>{var n,e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__;r.t=function(t,f){if(1&f&&(t=this(t)),8&f||"object"==typeof t&&t&&(4&f&&t.__esModule||16&f&&"function"==typeof t.then))return t;var i=Object.create(null);r.r(i);var o={};n=n||[null,e({}),e([]),e(e)];for(var a=2&f&&t;("object"==typeof a||"function"==typeof a)&&!~n.indexOf(a);a=e(a))Object.getOwnPropertyNames(a).forEach(c=>o[c]=()=>t[c]);return o.default=()=>t,r.d(i,o),i}})(),r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((n,t)=>(r.f[t](e,n),n),[])),r.u=e=>e+"."+{18:"b642409e5ce7396b",229:"c28b198c7e8c3360",434:"1689f9ef170dbe39",473:"112ef2b987479257",718:"f6f4ca927aabc898",735:"1d822507e38df57b",750:"320ee2a84d46217c"}[e]+".js",r.miniCssF=e=>{},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={},n="skywire-manager:";r.l=(t,f,i,o)=>{if(e[t])e[t].push(f);else{var a,c;if(void 0!==i)for(var d=document.getElementsByTagName("script"),s=0;s{a.onerror=a.onload=null,clearTimeout(p);var _=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),_&&_.forEach(m=>m(b)),y)return y(b)},p=setTimeout(l.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=l.bind(null,a.onerror),a.onload=l.bind(null,a.onload),c&&document.head.appendChild(a)}}})(),r.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:n=>n},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="",(()=>{var e={121:0};r.f.j=(f,i)=>{var o=r.o(e,f)?e[f]:void 0;if(0!==o)if(o)i.push(o[2]);else if(121!=f){var a=new Promise((u,l)=>o=e[f]=[u,l]);i.push(o[2]=a);var c=r.p+r.u(f),d=new Error;r.l(c,u=>{if(r.o(e,f)&&(0!==(o=e[f])&&(e[f]=void 0),o)){var l=u&&("load"===u.type?"missing":u.type),p=u&&u.target&&u.target.src;d.message="Loading chunk "+f+" failed.\n("+l+": "+p+")",d.name="ChunkLoadError",d.type=l,d.request=p,o[1](d)}},"chunk-"+f,f)}else e[f]=0},r.O.j=f=>0===e[f];var n=(f,i)=>{var d,s,[o,a,c]=i,u=0;if(o.some(p=>0!==e[p])){for(d in a)r.o(a,d)&&(r.m[d]=a[d]);if(c)var l=c(r)}for(f&&f(i);u{"use strict";var e,g={},v={};function r(e){var n=v[e];if(void 0!==n)return n.exports;var t=v[e]={exports:{}};return g[e](t,t.exports,r),t.exports}r.m=g,e=[],r.O=(n,t,f,i)=>{if(!t){var a=1/0;for(o=0;o=i)&&Object.keys(r.O).every(b=>r.O[b](t[d]))?t.splice(d--,1):(l=!1,i0&&e[o-1][2]>i;o--)e[o]=e[o-1];e[o]=[t,f,i]},r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},(()=>{var n,e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__;r.t=function(t,f){if(1&f&&(t=this(t)),8&f||"object"==typeof t&&t&&(4&f&&t.__esModule||16&f&&"function"==typeof t.then))return t;var i=Object.create(null);r.r(i);var o={};n=n||[null,e({}),e([]),e(e)];for(var a=2&f&&t;("object"==typeof a||"function"==typeof a)&&!~n.indexOf(a);a=e(a))Object.getOwnPropertyNames(a).forEach(l=>o[l]=()=>t[l]);return o.default=()=>t,r.d(i,o),i}})(),r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((n,t)=>(r.f[t](e,n),n),[])),r.u=e=>e+"."+{18:"b642409e5ce7396b",229:"c28b198c7e8c3360",434:"1689f9ef170dbe39",473:"fe39a7ded331ced8",718:"f6f4ca927aabc898",735:"1d822507e38df57b",750:"320ee2a84d46217c"}[e]+".js",r.miniCssF=e=>{},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={},n="skywire-manager:";r.l=(t,f,i,o)=>{if(e[t])e[t].push(f);else{var a,l;if(void 0!==i)for(var d=document.getElementsByTagName("script"),s=0;s{a.onerror=a.onload=null,clearTimeout(p);var _=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),_&&_.forEach(m=>m(b)),y)return y(b)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=c.bind(null,a.onerror),a.onload=c.bind(null,a.onload),l&&document.head.appendChild(a)}}})(),r.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:n=>n},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="",(()=>{var e={121:0};r.f.j=(f,i)=>{var o=r.o(e,f)?e[f]:void 0;if(0!==o)if(o)i.push(o[2]);else if(121!=f){var a=new Promise((u,c)=>o=e[f]=[u,c]);i.push(o[2]=a);var l=r.p+r.u(f),d=new Error;r.l(l,u=>{if(r.o(e,f)&&(0!==(o=e[f])&&(e[f]=void 0),o)){var c=u&&("load"===u.type?"missing":u.type),p=u&&u.target&&u.target.src;d.message="Loading chunk "+f+" failed.\n("+c+": "+p+")",d.name="ChunkLoadError",d.type=c,d.request=p,o[1](d)}},"chunk-"+f,f)}else e[f]=0},r.O.j=f=>0===e[f];var n=(f,i)=>{var d,s,[o,a,l]=i,u=0;if(o.some(p=>0!==e[p])){for(d in a)r.o(a,d)&&(r.m[d]=a[d]);if(l)var c=l(r)}for(f&&f(i);umat-icon,.generic-title-container .icon-button{opacity:.85}.subtle-transparent-button:hover,.generic-title-container .options .options-container>mat-icon:hover,.generic-title-container .icon-button:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins{padding:0!important}}@media(max-width:767px){.full-node-list-margins{padding:0!important}}@font-face{font-family:Skycoin;font-style:normal;font-weight:300;src:url(/assets/fonts/skycoin/skycoin-light-webfont.woff2) format("woff2"),url(/assets/fonts/skycoin/skycoin-light-webfont.woff) format("woff")}@font-face{font-family:Skycoin;font-style:normal;font-weight:400;src:url(/assets/fonts/skycoin/skycoin-regular-webfont.woff2) format("woff2"),url(/assets/fonts/skycoin/skycoin-regular-webfont.woff) format("woff")}@font-face{font-family:Skycoin;font-style:normal;font-weight:700;src:url(/assets/fonts/skycoin/skycoin-bold-webfont.woff2) format("woff2"),url(/assets/fonts/skycoin/skycoin-bold-webfont.woff) format("woff")}span{overflow-wrap:break-word}.font-sm{font-size:.875rem!important;font-weight:lighter!important}.font-smaller{font-size:.8rem!important;font-weight:lighter!important}.uppercase{text-transform:uppercase}.single-line,.options-list-button-container button .internal-container{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text{color:#2ecc54}.green-clear-text{color:#84c826}.yellow-text{color:#d48b05}.yellow-clear-text{color:orange}.red-text{color:#da3439}.red-clear-text{color:#ff393f}.grey-text{color:#777!important}.dot-green{height:10px;width:10px;background-color:#2ecc54;border-radius:50%;display:inline-block}.dot-green.sm{height:7px;width:7px}.dot-red{height:10px;width:10px;background-color:#da3439;border-radius:50%;display:inline-block}.dot-red.sm{height:7px;width:7px}.dot-yellow{height:10px;width:10px;background-color:#d48b05;border-radius:50%;display:inline-block}.dot-yellow.sm{height:7px;width:7px}.dot-outline-white{height:10px;width:10px;border-radius:50%;border:solid 1px #F8F9F9;display:inline-block}.dot-outline-white.sm{height:7px;width:7px}.dot-outline-gray{height:10px;width:10px;border-radius:50%;border:solid 1px #777;display:inline-block}.dot-outline-gray.sm{height:7px;width:7px}.mat-mdc-menu-panel{border-radius:10px!important;max-width:none!important}.mat-mdc-menu-item{width:auto!important}.mat-mdc-menu-item mat-icon{opacity:.5}.responsive-table-translucid{background:transparent!important;margin-left:auto;margin-right:auto;border-collapse:separate!important;width:100%;word-break:break-all;color:#f8f9f9!important}.responsive-table-translucid td,.responsive-table-translucid th{color:#f8f9f9!important;padding:12px 10px;border-bottom:1px solid rgba(255,255,255,.15)}.responsive-table-translucid th{font-size:.875rem!important;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:48px}.responsive-table-translucid td{font-size:.8rem!important;font-weight:lighter!important}.responsive-table-translucid tr .sortable-column mat-icon{display:inline;position:relative;top:2px}.responsive-table-translucid .link-row{display:table-row;text-decoration:none}.responsive-table-translucid .link-row:hover{text-decoration:none}.responsive-table-translucid td{vertical-align:middle}.responsive-table-translucid .selection-col{width:30px;padding-top:0;padding-bottom:0}.responsive-table-translucid .selection-col .mat-mdc-checkbox{vertical-align:super}.responsive-table-translucid .action-button,.responsive-table-translucid .big-action-button{width:28px!important;height:28px!important;line-height:16px;font-size:16px;margin-right:5px;padding:0!important;color:#fff!important;min-width:0!important}.responsive-table-translucid .action-button:last-child,.responsive-table-translucid .big-action-button:last-child{margin-right:0}.responsive-table-translucid .action-button .mat-icon,.responsive-table-translucid .big-action-button .mat-icon{margin-right:0!important}.responsive-table-translucid .big-action-button{line-height:18px;font-size:18px}.responsive-table-translucid .selectable,.responsive-table-translucid tr .sortable-column{cursor:pointer}.responsive-table-translucid .selectable:hover,.responsive-table-translucid tr .sortable-column:hover{background:#0003}.responsive-table-translucid .click-effect:active{background:#0006!important}.responsive-table-translucid mat-checkbox>label{margin-bottom:0}.responsive-table-translucid mat-checkbox .mdc-checkbox__background{box-sizing:border-box;width:18px;height:18px;background:#0000004d!important;border-radius:6px;border-width:2px;border-color:#00000080}.responsive-table-translucid mat-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background{background-color:#0000004d!important;border-color:#00000080!important}.responsive-table-translucid mat-checkbox svg{color:#fff!important}.responsive-table-translucid .list-item-container{display:flex;padding:10px 0 10px 15px}.responsive-table-translucid .list-item-container .check-part{width:50px;flex-shrink:0;margin-left:-20px}.responsive-table-translucid .list-item-container .left-part{flex-grow:1}.responsive-table-translucid .list-item-container .left-part .list-row{margin-bottom:5px;word-break:break-word}.responsive-table-translucid .list-item-container .left-part .list-row:last-of-type{margin-bottom:0}.responsive-table-translucid .list-item-container .left-part .long-content{word-break:break-all}.responsive-table-translucid .list-item-container .margin-part{width:5px;height:5px;flex-shrink:0}.responsive-table-translucid .list-item-container .right-part{width:60px;text-align:center;flex-shrink:0}.responsive-table-translucid .list-item-container .right-part button{width:60px;height:60px}.responsive-table-translucid .list-item-container .right-part mat-icon{display:inline;font-size:20px}.responsive-table-translucid .title{font-size:.875rem!important;font-weight:700}@media(min-width:768px){.generic-title-container{padding-right:5px}}@media(max-width:767px){.generic-title-container{margin-right:-15px}}.generic-title-container .title{margin-right:auto;font-size:1rem;font-weight:700}@media(min-width:768px){.generic-title-container .title{margin-left:1.25rem!important}}.generic-title-container .title .filter-label{font-size:.7rem;font-weight:lighter}.generic-title-container .title .help{opacity:.5;font-size:14px;cursor:default}.generic-title-container .icon-button{display:flex;line-height:18px!important;margin-right:15px;background:#f8f9f9;color:#154b6c;border-radius:1000px;cursor:pointer;padding:1px 7px;font-weight:400;border:0;font-size:.8rem;align-items:center}.generic-title-container .icon-button mat-icon{margin-right:2px;font-size:18px;height:auto;width:auto}@media(max-width:767px){.generic-title-container .icon-button{padding:1px 10px;line-height:24px!important;font-size:.875rem!important}.generic-title-container .icon-button mat-icon{margin-right:3px;font-size:22px}}.generic-title-container .options{text-align:right}.generic-title-container .options .options-container{text-align:right;display:inline-flex}.generic-title-container .options .options-container>mat-icon{width:18px!important;height:18px!important;line-height:18px!important;font-size:18px!important;margin-right:15px;background:#f8f9f9;color:#154b6c;border-radius:1000px;cursor:pointer}@media(max-width:767px){.generic-title-container .options .options-container>mat-icon{width:24px!important;height:24px!important;line-height:24px!important;font-size:24px!important}}.generic-title-container .options .options-container .small-icon{font-size:14px!important;text-align:center}.paginator-icons-fixer{margin-right:0!important}mat-form-field{display:block!important}.white-form-field{color:#f8f9f9}.white-form-field .mat-mdc-select-value,.white-form-field .mat-mdc-select-arrow{color:#f8f9f9!important}.white-form-field .mdc-line-ripple:before{border-bottom-color:#f8f9f980!important}.white-form-field input{color:#f8f9f9!important}.white-form-field .mat-mdc-input-element{caret-color:#f8f9f9}.form-help-icon-container,.white-form-help-icon-container{height:0px;text-align:right;color:#215f9e}.white-form-help-icon-container{color:#f8f9f9cc}.element-disabled{pointer-events:none!important;opacity:.5!important}.app-background{width:100%;height:100%;top:0;left:0;position:fixed;background:linear-gradient(#060a10,#0a1421) no-repeat fixed!important;box-shadow:inset 0 0 200px #608dcd40;z-index:-1}.no-gradient-for-elevated-box{box-shadow:5px 5px 7px #00000059!important}.elevated-box,.rounded-elevated-box,.small-rounded-elevated-box{background-image:url(/assets/img/background-pattern.png);box-shadow:inset 0 0 55px #35578666,5px 5px 7px #00000059;border:rgba(156,197,255,.33) solid 1px}.rounded-elevated-box,.small-rounded-elevated-box{width:100%;border-radius:10px;overflow:hidden;padding:3px}.rounded-elevated-box .box-internal-container,.small-rounded-elevated-box .box-internal-container{border-radius:10px;padding:12px;border:rgba(156,197,255,.1155) solid 1px;overflow:hidden}.small-rounded-elevated-box{width:unset;padding:0;box-shadow:inset 0 0 20px #35578666,5px 5px 7px #00000059}.mat-mdc-dialog-surface{border-radius:10px!important;background-image:url(/assets/img/modal-background-pattern.png)!important;box-shadow:inset 0 0 100px #ffffff80,5px 5px 15px #000!important;background-color:#e0e5ec!important;overflow:hidden;padding:24px!important}.mat-mdc-dialog-content{font-family:Skycoin!important;margin:0 -24px -24px!important;padding:24px!important;color:#202226!important;line-height:1.5!important}app-dialog app-loading-indicator{margin-top:32px;margin-bottom:24px}.options-list-button-container{margin:0 -24px}.options-list-button-container button{width:100%}.options-list-button-container button .internal-container{text-align:left;padding:5px 7px}.options-list-button-container button mat-icon{margin-right:10px;position:relative;top:2px;opacity:.5}.options-list-button-container:first-of-type{margin-top:-24px!important}.options-list-button-container:last-of-type{margin-bottom:-24px!important}.info-dialog{word-break:break-all;font-size:.875rem;color:#202226}.info-dialog .title{margin-bottom:2px;font-size:1rem;margin-top:25px;color:#215f9e;display:flex}.info-dialog .title mat-icon{margin-right:5px;position:relative;top:2px}.info-dialog .item{margin-top:2px}.info-dialog .item span{color:#999}.top-dialog-button{margin-left:-24px;margin-right:-24px;font-size:.8rem;background-color:#d9deeb;color:#202226;cursor:pointer}.top-dialog-button:hover{background-color:#cfd5e6}.top-dialog-button .top-dialog-button-content{padding:10px 24px}.top-dialog-button .top-dialog-button-margin{height:1px;background-color:#215f9e33;margin:0 12px}.vpn-small-button{cursor:pointer;-webkit-user-select:none;user-select:none}.vpn-small-button:active{transform:scale(.9)}.vpn-dark-box-radius{border-radius:10px}.vpn-table-container{text-align:center}.vpn-table-container .width-limiter{width:inherit;max-width:1250px;display:inline-block;text-align:initial}*,*:before,*:after{box-sizing:border-box}@media(prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(32,34,38,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media(min-width:1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media(min-width:1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media(min-width:1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media(min-width:1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;line-height:inherit;font-size:calc(1.275rem + .3vw)}@media(min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale(1)}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: .5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #F8F9F9;--bs-list-group-active-bg: #0d6efd;--bs-list-group-active-border-color: #0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:not(.active):hover,.list-group-item-action:not(.active):focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:not(.active):active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width:1300px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-green{--bs-list-group-color: var(--bs-green-text-emphasis);--bs-list-group-bg: var(--bs-green-bg-subtle);--bs-list-group-border-color: var(--bs-green-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-green-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-green-border-subtle);--bs-list-group-active-color: var(--bs-green-bg-subtle);--bs-list-group-active-bg: var(--bs-green-text-emphasis);--bs-list-group-active-border-color: var(--bs-green-text-emphasis)}.list-group-item-red{--bs-list-group-color: var(--bs-red-text-emphasis);--bs-list-group-bg: var(--bs-red-bg-subtle);--bs-list-group-border-color: var(--bs-red-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-red-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-red-border-subtle);--bs-list-group-active-color: var(--bs-red-bg-subtle);--bs-list-group-active-bg: var(--bs-red-text-emphasis);--bs-list-group-active-border-color: var(--bs-red-text-emphasis)}.list-group-item-yellow{--bs-list-group-color: var(--bs-yellow-text-emphasis);--bs-list-group-bg: var(--bs-yellow-bg-subtle);--bs-list-group-border-color: var(--bs-yellow-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-yellow-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-yellow-border-subtle);--bs-list-group-active-color: var(--bs-yellow-bg-subtle);--bs-list-group-active-bg: var(--bs-yellow-text-emphasis);--bs-list-group-active-border-color: var(--bs-yellow-text-emphasis)}.list-group-item-translucid-hover{--bs-list-group-color: var(--bs-translucid-hover-text-emphasis);--bs-list-group-bg: var(--bs-translucid-hover-bg-subtle);--bs-list-group-border-color: var(--bs-translucid-hover-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-translucid-hover-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-translucid-hover-border-subtle);--bs-list-group-active-color: var(--bs-translucid-hover-bg-subtle);--bs-list-group-active-bg: var(--bs-translucid-hover-text-emphasis);--bs-list-group-active-border-color: var(--bs-translucid-hover-text-emphasis)}.list-group-item-translucid-hover-hard{--bs-list-group-color: var(--bs-translucid-hover-hard-text-emphasis);--bs-list-group-bg: var(--bs-translucid-hover-hard-bg-subtle);--bs-list-group-border-color: var(--bs-translucid-hover-hard-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-translucid-hover-hard-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-translucid-hover-hard-border-subtle);--bs-list-group-active-color: var(--bs-translucid-hover-hard-bg-subtle);--bs-list-group-active-bg: var(--bs-translucid-hover-hard-text-emphasis);--bs-list-group-active-border-color: var(--bs-translucid-hover-hard-text-emphasis)}.list-group-item-white{--bs-list-group-color: var(--bs-white-text-emphasis);--bs-list-group-bg: var(--bs-white-bg-subtle);--bs-list-group-border-color: var(--bs-white-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-white-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-white-border-subtle);--bs-list-group-active-color: var(--bs-white-bg-subtle);--bs-list-group-active-bg: var(--bs-white-text-emphasis);--bs-list-group-active-border-color: var(--bs-white-text-emphasis)}.list-group-item-light-gray{--bs-list-group-color: var(--bs-light-gray-text-emphasis);--bs-list-group-bg: var(--bs-light-gray-bg-subtle);--bs-list-group-border-color: var(--bs-light-gray-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-gray-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-gray-border-subtle);--bs-list-group-active-color: var(--bs-light-gray-bg-subtle);--bs-list-group-active-bg: var(--bs-light-gray-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-gray-text-emphasis)}.lead{font-size:1.25rem;font-weight:300}.display-1{font-weight:300;line-height:1.2;font-size:calc(1.625rem + 4.5vw)}@media(min-width:1200px){.display-1{font-size:5rem}}.display-2{font-weight:300;line-height:1.2;font-size:calc(1.575rem + 3.9vw)}@media(min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-weight:300;line-height:1.2;font-size:calc(1.525rem + 3.3vw)}@media(min-width:1200px){.display-3{font-size:4rem}}.display-4{font-weight:300;line-height:1.2;font-size:calc(1.475rem + 2.7vw)}@media(min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-weight:300;line-height:1.2;font-size:calc(1.425rem + 2.1vw)}@media(min-width:1200px){.display-5{font-size:3rem}}.display-6{font-weight:300;line-height:1.2;font-size:calc(1.375rem + 1.5vw)}@media(min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}/*! +@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(MaterialIcons-Regular.1e50f5c2ffa6aba4.eot);src:local("Material Icons"),local("MaterialIcons-Regular"),url(MaterialIcons-Regular.7ea2023eeca07427.woff2) format("woff2"),url(MaterialIcons-Regular.db852539204b1a34.woff) format("woff"),url(MaterialIcons-Regular.196fa4a92dd6fa73.ttf) format("truetype")}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga"}@charset "UTF-8";.cursor-pointer,.highlight-internal-icon{cursor:pointer}.reactivate-mouse{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled{pointer-events:none}.clearfix:after{content:"";display:block;clear:both}.mt-4\.5{margin-top:2rem!important}.highlight-internal-icon mat-icon{opacity:.5}.highlight-internal-icon:hover mat-icon{opacity:.8}.transparent-button{opacity:.5}.transparent-button:hover{opacity:1}.subtle-transparent-button,.generic-title-container .options .options-container>mat-icon,.generic-title-container .icon-button{opacity:.85}.subtle-transparent-button:hover,.generic-title-container .options .options-container>mat-icon:hover,.generic-title-container .icon-button:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins{padding:0!important}}@media(max-width:767px){.full-node-list-margins{padding:0!important}}@font-face{font-family:Skycoin;font-style:normal;font-weight:300;src:url(/assets/fonts/skycoin/skycoin-light-webfont.woff2) format("woff2"),url(/assets/fonts/skycoin/skycoin-light-webfont.woff) format("woff")}@font-face{font-family:Skycoin;font-style:normal;font-weight:400;src:url(/assets/fonts/skycoin/skycoin-regular-webfont.woff2) format("woff2"),url(/assets/fonts/skycoin/skycoin-regular-webfont.woff) format("woff")}@font-face{font-family:Skycoin;font-style:normal;font-weight:700;src:url(/assets/fonts/skycoin/skycoin-bold-webfont.woff2) format("woff2"),url(/assets/fonts/skycoin/skycoin-bold-webfont.woff) format("woff")}span{overflow-wrap:break-word}.font-sm{font-size:.875rem!important;font-weight:lighter!important}.font-smaller{font-size:.8rem!important;font-weight:lighter!important}.uppercase{text-transform:uppercase}.single-line,.options-list-button-container button .internal-container{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text{color:#2ecc54}.green-clear-text{color:#84c826}.yellow-text{color:#d48b05}.yellow-clear-text{color:orange}.red-text{color:#da3439}.red-clear-text{color:#ff393f}.grey-text{color:#777!important}.dot-green{height:10px;width:10px;background-color:#2ecc54;border-radius:50%;display:inline-block}.dot-green.sm{height:7px;width:7px}.dot-red{height:10px;width:10px;background-color:#da3439;border-radius:50%;display:inline-block}.dot-red.sm{height:7px;width:7px}.dot-yellow{height:10px;width:10px;background-color:#d48b05;border-radius:50%;display:inline-block}.dot-yellow.sm{height:7px;width:7px}.dot-outline-white{height:10px;width:10px;border-radius:50%;border:solid 1px #F8F9F9;display:inline-block}.dot-outline-white.sm{height:7px;width:7px}.dot-outline-gray{height:10px;width:10px;border-radius:50%;border:solid 1px #777;display:inline-block}.dot-outline-gray.sm{height:7px;width:7px}.mat-mdc-menu-panel{border-radius:10px!important;max-width:none!important}.mat-mdc-menu-item{width:auto!important}.mat-mdc-menu-item mat-icon{opacity:.5}.responsive-table-translucid{background:transparent!important;margin-left:auto;margin-right:auto;border-collapse:separate!important;width:100%;word-break:break-all;color:#f8f9f9!important}.responsive-table-translucid td,.responsive-table-translucid th{color:#f8f9f9!important;padding:12px 10px;border-bottom:1px solid rgba(255,255,255,.15)}.responsive-table-translucid th{font-size:.875rem!important;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:48px}.responsive-table-translucid td{font-size:.8rem!important;font-weight:lighter!important}.responsive-table-translucid tr .sortable-column mat-icon{display:inline;position:relative;top:2px}.responsive-table-translucid .link-row{display:table-row;text-decoration:none}.responsive-table-translucid .link-row:hover{text-decoration:none}.responsive-table-translucid td{vertical-align:middle}.responsive-table-translucid .selection-col{width:30px;padding-top:0;padding-bottom:0}.responsive-table-translucid .selection-col .mat-mdc-checkbox{vertical-align:super}.responsive-table-translucid .action-button,.responsive-table-translucid .big-action-button{width:28px!important;height:28px!important;line-height:16px;font-size:16px;margin-right:5px;padding:0!important;color:#fff!important;min-width:0!important}.responsive-table-translucid .action-button:last-child,.responsive-table-translucid .big-action-button:last-child{margin-right:0}.responsive-table-translucid .action-button .mat-icon,.responsive-table-translucid .big-action-button .mat-icon{margin-right:0!important}.responsive-table-translucid .big-action-button{line-height:18px;font-size:18px}.responsive-table-translucid .selectable,.responsive-table-translucid tr .sortable-column{cursor:pointer}.responsive-table-translucid .selectable:hover,.responsive-table-translucid tr .sortable-column:hover{background:#0003}.responsive-table-translucid .click-effect:active{background:#0006!important}.responsive-table-translucid mat-checkbox>label{margin-bottom:0}.responsive-table-translucid mat-checkbox .mdc-checkbox__background{box-sizing:border-box;width:18px;height:18px;background:#0000004d!important;border-radius:6px;border-width:2px;border-color:#00000080}.responsive-table-translucid mat-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background{background-color:#0000004d!important;border-color:#00000080!important}.responsive-table-translucid mat-checkbox svg{color:#fff!important}.responsive-table-translucid .list-item-container{display:flex;padding:10px 0 10px 15px}.responsive-table-translucid .list-item-container .check-part{width:50px;flex-shrink:0;margin-left:-20px}.responsive-table-translucid .list-item-container .left-part{flex-grow:1}.responsive-table-translucid .list-item-container .left-part .list-row{margin-bottom:5px;word-break:break-word}.responsive-table-translucid .list-item-container .left-part .list-row:last-of-type{margin-bottom:0}.responsive-table-translucid .list-item-container .left-part .long-content{word-break:break-all}.responsive-table-translucid .list-item-container .margin-part{width:5px;height:5px;flex-shrink:0}.responsive-table-translucid .list-item-container .right-part{width:60px;text-align:center;flex-shrink:0}.responsive-table-translucid .list-item-container .right-part button{width:60px;height:60px}.responsive-table-translucid .list-item-container .right-part mat-icon{display:inline;font-size:20px}.responsive-table-translucid .title{font-size:.875rem!important;font-weight:700}@media(min-width:768px){.generic-title-container{padding-right:5px}}@media(max-width:767px){.generic-title-container{margin-right:-15px}}.generic-title-container .title{margin-right:auto;font-size:1rem;font-weight:700}@media(min-width:768px){.generic-title-container .title{margin-left:1.25rem!important}}.generic-title-container .title .filter-label{font-size:.7rem;font-weight:lighter}.generic-title-container .title .help{opacity:.5;font-size:14px;cursor:default}.generic-title-container .icon-button{display:flex;line-height:18px!important;margin-right:15px;background:#f8f9f9;color:#154b6c;border-radius:1000px;cursor:pointer;padding:1px 7px;font-weight:400;border:0;font-size:.8rem;align-items:center}.generic-title-container .icon-button mat-icon{margin-right:2px;font-size:18px;height:auto;width:auto}@media(max-width:767px){.generic-title-container .icon-button{padding:1px 10px;line-height:24px!important;font-size:.875rem!important}.generic-title-container .icon-button mat-icon{margin-right:3px;font-size:22px}}.generic-title-container .options{text-align:right}.generic-title-container .options .options-container{text-align:right;display:inline-flex}.generic-title-container .options .options-container>mat-icon{width:18px!important;height:18px!important;line-height:18px!important;font-size:18px!important;margin-right:15px;background:#f8f9f9;color:#154b6c;border-radius:1000px;cursor:pointer}@media(max-width:767px){.generic-title-container .options .options-container>mat-icon{width:24px!important;height:24px!important;line-height:24px!important;font-size:24px!important}}.generic-title-container .options .options-container .small-icon{font-size:14px!important;text-align:center}.paginator-icons-fixer{margin-right:0!important}mat-form-field{display:block!important}.white-form-field{color:#f8f9f9}.white-form-field .mat-mdc-select-value,.white-form-field .mat-mdc-select-arrow{color:#f8f9f9!important}.white-form-field .mdc-line-ripple:before{border-bottom-color:#f8f9f980!important}.white-form-field input{color:#f8f9f9!important}.white-form-field .mat-mdc-input-element{caret-color:#f8f9f9}.form-help-icon-container,.white-form-help-icon-container{height:0px;text-align:right;color:#215f9e}.white-form-help-icon-container{color:#f8f9f9cc}.element-disabled{pointer-events:none!important;opacity:.5!important}.info-line{word-break:break-word;margin-top:7px;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.info-line .text-with-right-margin{margin-right:5px}.info-line .text-with-small-right-margin{margin-right:3px}.info-line .link-icon{font-size:20px;line-height:1;color:#fff!important;cursor:pointer}.info-line .edit-icon{display:inline!important}.info-line mat-icon{position:relative;top:3px;-webkit-user-select:none;user-select:none}.info-line i{margin-left:7px}.info-line .title{opacity:.7;white-space:nowrap;min-width:120px;font-size:.9em}.toggle-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.toggle-line .info-tip{opacity:.5;font-size:16px;cursor:help}.collapsible-link{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:4px;margin-top:6px;opacity:.85}.collapsible-link:hover{opacity:1}.collapsible-header{display:inline-flex!important;align-items:center;gap:6px}.inline-edit-btn{margin-left:4px;height:24px;width:24px;line-height:24px;opacity:.7}.inline-edit-btn:hover{opacity:1}.inline-form{display:flex;flex-direction:column;gap:8px;margin-top:6px;margin-bottom:6px}.inline-form .inline-form-field{width:100%}.inline-form .inline-form-field-sm{width:120px}.inline-form .inline-form-actions{display:flex;gap:8px;flex-wrap:wrap}.section-title{font-size:.95em;font-weight:500;color:#ffffffeb;display:block;margin-bottom:4px}.app-background{width:100%;height:100%;top:0;left:0;position:fixed;background:linear-gradient(#060a10,#0a1421) no-repeat fixed!important;box-shadow:inset 0 0 200px #608dcd40;z-index:-1}.no-gradient-for-elevated-box{box-shadow:5px 5px 7px #00000059!important}.elevated-box,.rounded-elevated-box,.small-rounded-elevated-box{background-image:url(/assets/img/background-pattern.png);box-shadow:inset 0 0 55px #35578666,5px 5px 7px #00000059;border:rgba(156,197,255,.33) solid 1px}.rounded-elevated-box,.small-rounded-elevated-box{width:100%;border-radius:10px;overflow:hidden;padding:3px}.rounded-elevated-box .box-internal-container,.small-rounded-elevated-box .box-internal-container{border-radius:10px;padding:12px;border:rgba(156,197,255,.1155) solid 1px;overflow:hidden}.small-rounded-elevated-box{width:unset;padding:0;box-shadow:inset 0 0 20px #35578666,5px 5px 7px #00000059}.mat-mdc-dialog-surface{border-radius:10px!important;background-image:url(/assets/img/modal-background-pattern.png)!important;box-shadow:inset 0 0 100px #ffffff80,5px 5px 15px #000!important;background-color:#e0e5ec!important;overflow:hidden;padding:24px!important}.mat-mdc-dialog-content{font-family:Skycoin!important;margin:0 -24px -24px!important;padding:24px!important;color:#202226!important;line-height:1.5!important}app-dialog app-loading-indicator{margin-top:32px;margin-bottom:24px}.options-list-button-container{margin:0 -24px}.options-list-button-container button{width:100%}.options-list-button-container button .internal-container{text-align:left;padding:5px 7px}.options-list-button-container button mat-icon{margin-right:10px;position:relative;top:2px;opacity:.5}.options-list-button-container:first-of-type{margin-top:-24px!important}.options-list-button-container:last-of-type{margin-bottom:-24px!important}.info-dialog{word-break:break-all;font-size:.875rem;color:#202226}.info-dialog .title{margin-bottom:2px;font-size:1rem;margin-top:25px;color:#215f9e;display:flex}.info-dialog .title mat-icon{margin-right:5px;position:relative;top:2px}.info-dialog .item{margin-top:2px}.info-dialog .item span{color:#999}.top-dialog-button{margin-left:-24px;margin-right:-24px;font-size:.8rem;background-color:#d9deeb;color:#202226;cursor:pointer}.top-dialog-button:hover{background-color:#cfd5e6}.top-dialog-button .top-dialog-button-content{padding:10px 24px}.top-dialog-button .top-dialog-button-margin{height:1px;background-color:#215f9e33;margin:0 12px}.vpn-small-button{cursor:pointer;-webkit-user-select:none;user-select:none}.vpn-small-button:active{transform:scale(.9)}.vpn-dark-box-radius{border-radius:10px}.vpn-table-container{text-align:center}.vpn-table-container .width-limiter{width:inherit;max-width:1250px;display:inline-block;text-align:initial}*,*:before,*:after{box-sizing:border-box}@media(prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(32,34,38,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media(min-width:1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media(min-width:1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media(min-width:1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media(min-width:1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;line-height:inherit;font-size:calc(1.275rem + .3vw)}@media(min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale(1)}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: .5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #F8F9F9;--bs-list-group-active-bg: #0d6efd;--bs-list-group-active-border-color: #0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:not(.active):hover,.list-group-item-action:not(.active):focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:not(.active):active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width:1300px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-green{--bs-list-group-color: var(--bs-green-text-emphasis);--bs-list-group-bg: var(--bs-green-bg-subtle);--bs-list-group-border-color: var(--bs-green-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-green-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-green-border-subtle);--bs-list-group-active-color: var(--bs-green-bg-subtle);--bs-list-group-active-bg: var(--bs-green-text-emphasis);--bs-list-group-active-border-color: var(--bs-green-text-emphasis)}.list-group-item-red{--bs-list-group-color: var(--bs-red-text-emphasis);--bs-list-group-bg: var(--bs-red-bg-subtle);--bs-list-group-border-color: var(--bs-red-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-red-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-red-border-subtle);--bs-list-group-active-color: var(--bs-red-bg-subtle);--bs-list-group-active-bg: var(--bs-red-text-emphasis);--bs-list-group-active-border-color: var(--bs-red-text-emphasis)}.list-group-item-yellow{--bs-list-group-color: var(--bs-yellow-text-emphasis);--bs-list-group-bg: var(--bs-yellow-bg-subtle);--bs-list-group-border-color: var(--bs-yellow-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-yellow-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-yellow-border-subtle);--bs-list-group-active-color: var(--bs-yellow-bg-subtle);--bs-list-group-active-bg: var(--bs-yellow-text-emphasis);--bs-list-group-active-border-color: var(--bs-yellow-text-emphasis)}.list-group-item-translucid-hover{--bs-list-group-color: var(--bs-translucid-hover-text-emphasis);--bs-list-group-bg: var(--bs-translucid-hover-bg-subtle);--bs-list-group-border-color: var(--bs-translucid-hover-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-translucid-hover-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-translucid-hover-border-subtle);--bs-list-group-active-color: var(--bs-translucid-hover-bg-subtle);--bs-list-group-active-bg: var(--bs-translucid-hover-text-emphasis);--bs-list-group-active-border-color: var(--bs-translucid-hover-text-emphasis)}.list-group-item-translucid-hover-hard{--bs-list-group-color: var(--bs-translucid-hover-hard-text-emphasis);--bs-list-group-bg: var(--bs-translucid-hover-hard-bg-subtle);--bs-list-group-border-color: var(--bs-translucid-hover-hard-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-translucid-hover-hard-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-translucid-hover-hard-border-subtle);--bs-list-group-active-color: var(--bs-translucid-hover-hard-bg-subtle);--bs-list-group-active-bg: var(--bs-translucid-hover-hard-text-emphasis);--bs-list-group-active-border-color: var(--bs-translucid-hover-hard-text-emphasis)}.list-group-item-white{--bs-list-group-color: var(--bs-white-text-emphasis);--bs-list-group-bg: var(--bs-white-bg-subtle);--bs-list-group-border-color: var(--bs-white-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-white-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-white-border-subtle);--bs-list-group-active-color: var(--bs-white-bg-subtle);--bs-list-group-active-bg: var(--bs-white-text-emphasis);--bs-list-group-active-border-color: var(--bs-white-text-emphasis)}.list-group-item-light-gray{--bs-list-group-color: var(--bs-light-gray-text-emphasis);--bs-list-group-bg: var(--bs-light-gray-bg-subtle);--bs-list-group-border-color: var(--bs-light-gray-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-gray-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-gray-border-subtle);--bs-list-group-active-color: var(--bs-light-gray-bg-subtle);--bs-list-group-active-bg: var(--bs-light-gray-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-gray-text-emphasis)}.lead{font-size:1.25rem;font-weight:300}.display-1{font-weight:300;line-height:1.2;font-size:calc(1.625rem + 4.5vw)}@media(min-width:1200px){.display-1{font-size:5rem}}.display-2{font-weight:300;line-height:1.2;font-size:calc(1.575rem + 3.9vw)}@media(min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-weight:300;line-height:1.2;font-size:calc(1.525rem + 3.3vw)}@media(min-width:1200px){.display-3{font-size:4rem}}.display-4{font-weight:300;line-height:1.2;font-size:calc(1.475rem + 2.7vw)}@media(min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-weight:300;line-height:1.2;font-size:calc(1.425rem + 2.1vw)}@media(min-width:1200px){.display-5{font-size:3rem}}.display-6{font-weight:300;line-height:1.2;font-size:calc(1.375rem + 1.5vw)}@media(min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}/*! * Bootstrap Grid v5.3.8 (https://getbootstrap.com/) * Copyright 2011-2025 The Bootstrap Authors * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) diff --git a/pkg/visor/visor.go b/pkg/visor/visor.go index 89279a6ba5..862459d4e2 100644 --- a/pkg/visor/visor.go +++ b/pkg/visor/visor.go @@ -12,6 +12,7 @@ import ( "path/filepath" "strings" "sync" + "sync/atomic" "time" "github.com/google/uuid" @@ -239,6 +240,17 @@ type Visor struct { // back to HTTP /metrics when a path hasn't been published yet. tpdMetricsSub *tpdMetricsSubscriber tpdMetricsSubMu sync.RWMutex + + // Same lazy-on-demand pattern for TPD's network-wide visor-uptime + // feed (the /uptimes?v=v3 mirror). Drives the hvui Network Uptime + // tab. Falls back to DMSG-HTTP / HTTP when the cache misses. + tpdUptimeSub *tpdUptimeSubscriber + tpdUptimeSubMu sync.RWMutex + // Records the last unix-nano time a Connect attempt failed so we + // can throttle re-dials while TPD's publisher is down. Read + // lock-free on the hot path (atomic), written from inside the + // connect-fail branch under the outer mutex. + tpdUptimeLastFail atomic.Int64 } // pingState manages Skywire transport ping connections. @@ -655,10 +667,11 @@ func (v *Visor) Close() error { log := v.MasterLogger().PackageLogger("visor:shutdown") log.Info("Begin shutdown.") - // Tear down lazy CXO subscribers (TPD metrics) before the - // closeStack runs, since they hold dmsg conns that closeStack + // Tear down lazy CXO subscribers (TPD metrics + uptime) before + // the closeStack runs, since they hold dmsg conns that closeStack // also touches via the dmsg client shutdown. v.closeTPDMetricsSubscriber() + v.closeTPDUptimeSubscriber() // Cleanly close ongoing raw TCP forward conns for _, forwardConn := range appnet.GetAllRawTCPForwardConns() { diff --git a/pkg/visor/visorconfig/common.go b/pkg/visor/visorconfig/common.go index 83657e6202..21a77958dd 100644 --- a/pkg/visor/visorconfig/common.go +++ b/pkg/visor/visorconfig/common.go @@ -56,6 +56,12 @@ func (c *Common) MasterLogger() *logging.MasterLogger { return c.log } +// Path returns the on-disk path the config was loaded from. Empty +// when the config came from STDIN or was synthesized in-memory. +func (c *Common) Path() string { + return c.path +} + // SetLogger sets logger. func (c *Common) SetLogger(log *logging.MasterLogger) { c.log = log diff --git a/static/skywire-manager-src/dist/473.112ef2b987479257.js b/static/skywire-manager-src/dist/473.112ef2b987479257.js deleted file mode 100644 index df45a8caa2..0000000000 --- a/static/skywire-manager-src/dist/473.112ef2b987479257.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkskywire_manager=self.webpackChunkskywire_manager||[]).push([[473],{473(e){e.exports=JSON.parse('{"common":{"save":"Save","cancel":"Cancel","loading":"Loading\u2026","downloaded":"Downloaded","uploaded":"Uploaded","loading-error":"There was an error getting the data. Retrying...","operation-error":"There was an error trying to complete the operation.","no-connection-error":"There is no internet connection or connection to the Hypervisor.","error":"Error:","refreshed":"Data refreshed.","options":"Options","logout":"Logout","logout-error":"Error logging out.","logout-confirmation":"Are you sure you want to log out?","time-in-ms":"{{ time }}ms.","time-in-segs":"{{ time }}s.","ok":"Ok","yes":"Yes","no":"No","unknown":"Unknown","close":"Close","window-size-error":"The window is too narrow for the content.","data-update-problems":"Problem updating the data."},"labeled-element":{"edit-label":"Edit label","remove-label":"Remove label","go-to-settings":"Go to settings","view-all-labels":"View all labels","copy":"Copy","remove-label-confirmation":"Do you really want to remove the label?","unnamed-element":"Unnamed","unnamed-local-visor":"Local visor","local-element":"Local","tooltip":"Click to copy the entry or change the label","tooltip-with-text":"{{ text }} (Click to copy the entry or change the label)"},"labels":{"title":"Labels","info":"Labels you have entered to easily identify visors, transports and other elements, instead of having to read machine generated identifiers.","list-title":"Label list","label":"Label","id":"Element ID","type":"Type","delete-confirmation":"Are you sure you want to delete the label?","delete-selected-confirmation":"Are you sure you want to delete the selected labels?","delete":"Delete label","deleted":"Delete operation completed.","empty":"There aren\'t any saved labels.","empty-with-filter":"No label matches the selected filtering criteria.","filter-dialog":{"label":"The label must contain","id":"The id must contain","type":"The type must be","type-options":{"any":"Any","visor":"Visor","dmsg-server":"DMSG server","transport":"Transport"}}},"filters":{"filter-action":"Filter","filter-info":"Filter list.","press-to-remove":"(Press to remove the filters)","remove-confirmation":"Are you sure you want to remove the filters?"},"tables":{"title":"Order by","sorting-title":"Ordered by:","sort-by-value":"Value","sort-by-label":"Label","label":"(label)","inverted-order":"(inverted)"},"start":{"title":"Start","loading-error":"An error occurred while getting the initial data. Retrying..."},"node":{"title":"Visor details","not-found":"Visor not found.","resource-monitor":{"title":"Resource monitor","tab-host":"Host","tab-process":"Process","cpu":"CPU","memory":"Memory","disk":"Disk","net-rx":"Net rx","net-tx":"Net tx","threads":"Threads","heap":"Heap","goroutines":"Goroutines","gc":"GC rate"},"logs":{"title":"Runtime Logs","no-logs":"No runtime logs were found for this visor.","no-logs-for-filter":"No runtime logs matches the selected filter.","view-all":"View all logs in raw format >","view-rest":"View all {{ number }} elements in raw format >","selected-filter":"Showing:","filter-ignored":"The filter excluded {{ number }} entries","filter-title":"Filter","filter-all":"All logs","filter-debug":"Debug or more important","filter-info":"Info or more important","filter-warning":"Warning or more important","filter-error":"Error or more important","filter-faltal":"Faltal or more important","filter-panic":"Panic","live-on":"Live (pause)","live-off":"Paused (live)","dropped":"Skipped {{ count }} older entries that aged out of the visor\'s runtime buffer."},"statuses":{"online":"Online","online-tooltip":"The visor is online.","connecting":"Connecting","connecting-tooltip":"The visor is online, but still connecting to the uptime tracker.","unknown":"Unknown","unknown-tooltip":"The visor is online, but it has not been possible to determine if it is connected to the uptime tracker.","partially-online":"Online with problems","partially-online-tooltip":"The visor is online, but disconnected from the uptime tracker.","offline":"Offline","offline-tooltip":"The visor is offline."},"details":{"node-info":{"title":"Visor","title-local":"Local Visor","label":"Label:","public-key":"Public key:","symmetic-nat":"Symmetic NAT:","public-ip":"Public IP:","ip":"IP:","dmsg-servers":"DMSG servers:","connected":"connected","no-dmsg-server":"Not connected","ping":"Ping:","node-version":"Visor version:","config-version":"Config version:","os":"OS:","arch":"Architecture:","skybian-version":"Skybian version:","time":{"title":"Time online:","seconds":"a few seconds","minute":"1 minute","minutes":"{{ time }} minutes","hour":"1 hour","hours":"{{ time }} hours","day":"1 day","days":"{{ time }} days","week":"1 week","weeks":"{{ time }} weeks"}},"rewards-info":{"title":"Rewards","rewards-address":"Reward address:","not-registered":"Not registered","not-registered-info":"You have not specified a Skycoin address for receiving rewards for this visor. If you want to register the visor for receiving rewards, press the \\"Set address\\" button and set a Skycoin address.","open-in-explorer":"Open in blockchain explorer","set-address-button":"Set address","change-address-button":"Change address","show-rules":"Reward rules (embedded mainnet_rules.md)"},"transports-info":{"title":"Transport","total":"Total:","autoconnect":"Autoconnect:","autoconnect-info":"When enabled, the visor will automatically create the transports needed when a connection to a public visor is requested. If disabled, the transports will have to be created before being able to make the connection.","enabled":"Enabled","disabled":"Disabled","enable-button":"Enable","disable-button":"Disable","enable-confirmation":"Are you sure you want to enable the autoconnect feature?","disable-confirmation":"Are you sure you want to disable the autoconnect feature?","enable-done":"The autoconnect feature has been enabled.","disable-done":"The autoconnect feature has been disabled.","is-public":"Public Visor:","is-public-info":"When enabled, this visor registers as a public relay for other visors","public-enabled":"Enabled","public-disabled":"Disabled","public-enable-button":"Enable","public-disable-button":"Disable","public-enable-confirmation":"Are you sure you want to make this visor public?","public-disable-confirmation":"Are you sure you want to make this visor private?","public-enable-done":"This visor is now public.","public-disable-done":"This visor is now private."},"router-info":{"title":"Router","min-hops":"Min hops:","max-hops":"Max hops:","change-config-button":"Change configuration"},"node-health":{"title":"Health","services":"Services:","uptime-tracker":"Uptime tracker:","autoconnect":"Autoconnect:","transportability":"Transportability:","connected":"Connected","disconnected":"Disconnected"},"ports":{"title":"Ports"},"config":{"view-button":"View Config","title":"Runtime Configuration"},"tpviz":{"title":"Network Visualizer","open":"Open Transport Visualizer"},"node-traffic-data":"Traffic data"},"tabs":{"info":"Info","apps":"Apps","routing":"Routing","transports":"Transports","rewards":"Rewards","skynet":"Skynet","resources":"Resources","chat":"Skychat","dmsg":"DMSG"},"error-load":"An error occurred while refreshing the data. Retrying..."},"rewards-address-config":{"title":"Reward Address Configuration","info":"Here you can set to which Skycoin address you want the rewards to be sent. If you leave the address empty, the registration will be deleted and the visor will not receive rewards.","more-info-link":"(More info about the reward system)","address":"Address","address-error":"Please enter a valid Skycoin address.","save-config-button":"Save configuration","done":"Changes saved.","empty-warning":"The address in empty, so the registration will be deleted and no rewards will be received. Do you really want to continue?"},"router-config":{"title":"Router Configuration","info":"Here you can configure how many hops the connections must pass through other Skywire visors before reaching the final destination. NOTE: the changes will not affect the existing routes.","min-hops":"Min hops","min-hops-error":"Please enter a valid number.","save-config-button":"Save configuration","done":"Changes saved."},"nodes":{"title":"Visor list","dmsg-title":"DMSG","rewards-title":"Rewards","services-health-title":"Deployment","network-title":"Network","resources-title":"Resources","transports-title":"Transports","dmsg-settings-title":"DMSG settings","reward-address":"Reward Address","reward-total":"Week Total","reward-distributed":"Distributed","reward-pending":"Pending","rewards-loading":"Loading rewards...","modify-rewards-all":"Change rewards address","update-all":"Update all online visors","hypervisor":"Hypervisor","state":"State","state-tooltip":"Current state","label":"Label","key":"Key","ip":"IP","lan-ip":"LAN IP","public-ip":"Public IP","location":"Location","dmsg-server":"DMSG server","ping":"Ping","version":"Version","config-version":"Config","hypervisor-info":"This visor is the current Hypervisor.","copy-key":"Copy key","copy-dmsg":"Copy DMSG server key","copy-data":"Copy data","view-node":"View visor","delete-node":"Remove visor","delete-all-offline":"Remove all offline visors","error-load":"An error occurred while refreshing the list. Retrying...","empty":"There aren\'t any visors connected to this hypervisor.","empty-with-filter":"No visor matches the selected filtering criteria.","delete-node-confirmation":"Are you sure you want to remove the visor from the list?","delete-all-offline-confirmation":"Are you sure you want to remove all offline visors from the list?","delete-all-filtered-offline-confirmation":"All offline visors satisfying the current filtering criteria will be removed from the list. Are you sure you want to continue?","deleted":"Visor removed.","deleted-singular":"1 offline visor removed.","deleted-plural":"{{ number }} offline visors removed.","no-visors-to-update":"There are no visors to update.","no-visors-to-modify":"There are no visors to modify.","transports":"Transports","services":"Services","reward":"Reward","reward-set":"Reward address set","reward-not-set":"No reward address","ip-location":"IP / Location","visor-version":"Visor","config-label":"Config","filter-dialog":{"online":"The visor must be","label":"The label must contain","key":"The public key must contain","dmsg":"The DMSG server key must contain","online-options":{"any":"Online or offline","online":"Online","offline":"Offline"}}},"network-transports":{"loading":"Fetching transport metrics from TPD\u2026","summary":"{{transports}} transports \xb7 {{bandwidth}} network bandwidth ({{days}} days)","last-updated":"last fetched","days":"Window","view":"View","view-compact":"Compact","view-tree":"Tree","refresh":"Refresh","tp-id":"Transport ID","type":"Type","edge-a":"Edge A","edge-b":"Edge B","sent":"Sent","recv":"Recv","total":"Total","latency":"Latency"},"multi-resources":{"loading":"Polling visor host stats\u2026","summary":"{{count}} visors","last-updated":"last sample","visor":"Visor","cpu":"CPU","mem":"Memory","disk":"Disk","tx":"TX","rx":"RX","proc-rss":"Process RSS"},"services-health":{"loading":"Checking deployment services\u2026","all-ok":"All deployment services operational","degraded":"One or more deployment services are degraded","last-updated":"last checked","service":"Service","status":"Status","latency":"Latency","version":"Version","endpoint":"Endpoint","rsn-section":"Route Setup Nodes","rsn-empty":"No route setup nodes configured.","rsn-pk":"Public Key","rsn-success":"Successful","rsn-failed":"Failed","rsn-rate":"Success rate","rsn-latency-p50":"p50","rsn-latency-p95":"p95","rsn-latency-p99":"p99","rsn-active":"In flight","rsn-last-success":"Last success","rsn-last-failure":"Last failure","rsn-uptime":"Uptime","rsn-failure-reasons":"Top failure reasons","rsn-error":"Unreachable"},"skychat":{"title":"Skychat","connected":"Connected","disconnected":"Disconnected","no-history":"history is disabled (--persist not set)","empty":"No messages yet \u2014 incoming chats from connected peers will appear here.","peers":"Peers","peers-empty":"No peers yet. Send a message or wait for an incoming chat.","to":"Recipient PK","network":"Network","message":"Message","placeholder":"Type a message; Ctrl+Enter to send","send":"Send","password":{"set":"Set password","change":"Change password","clear":"Remove","hide":"Hide","saved":"Skychat password updated","cleared":"Skychat password removed","old":"Current password","new":"New password","confirm":"Repeat new password","help-unset":"Skychat is currently unprotected. Set a password to require basic auth on the standalone :8001 surface; this hypervisor session always bypasses it.","help-set":"A password is set on skychat\'s standalone :8001 surface. Change or remove it here.","errors":{"length":"Skychat password must be 6-64 characters","mismatch":"Passwords do not match","old-required":"Current password is required to remove the gate"}}},"network-view":{"loading":"Aggregating service-discovery, transport-discovery and uptime-tracker\u2026","last-updated":"last fetched","empty":"No visors match the current filters.","search":"Search","country":"Country","version":"Version","min-transports":"Min tps","online-only":"Online only","refresh":"Refresh now","col":{"pk":"PK","country":"Country","version":"Version","services":"Services","total":"Total","status":"UT"},"legend":{"offline":"offline (UT)","not-in-ut":"not in UT","low-transports":"online but <2 stcpr/sudph"}},"dmsg-settings":{"loading":"Loading DMSG session state\u2026","summary":"DMSG client sessions","last-updated":"last updated","connect-all":"Connect to all servers","sessions-count-label":"sessions_count","apply-count":"Apply","sessions":"sessions","no-sessions":"No connected sessions.","no-clients":"No DMSG clients running on this visor.","result-total":"total:","result-already":"already connected:","result-new":"newly connected:","result-failed":"failed"},"bulk-rewards":{"title":"Change reward address","info":"Enter the Skycoin address where you want to receive the rewards. The address will be set on all the selected visors. If you leave the address empty, the registration will be deleted and the visors will not receive rewards. You can also set the reward address of each node individually using the option on the visor details page.","more-info-link":"(More info about the reward system)","address":"New address","select-visors":"Visors to alter:","current-address":"Current address:","not-registered":"None (not registered on the reward program).","checking":"Checking...","error-checking":"Error checking:","processing":"Processing...","error-processing":"Error making the change:","done":"Change done.","perform-changes":"Perform changes","empty-warning":"The address in empty, so the registrations will be deleted and no rewards will be received. Do you really want to continue?"},"edit-label":{"label":"Label","done":"Label saved.","label-removed-warning":"The label was removed."},"settings":{"title":"Settings","checking-auth":"Checking authentication settings.","password":{"initial-config-help":"Use this option for setting the initial password. After a password has been set, it is not possible to use this option to modify it.","help":"Options for changing your password.","old-password":"Old password","new-password":"New password","repeat-password":"Repeat password","password-changed":"Password changed.","error-changing":"Error changing password.","initial-config":{"title":"Set initial password","password":"Password","repeat-password":"Repeat password","set-password":"Set password","done":"Password set. Please use it to access the system.","error":"Error. Please make sure you have not already set the password."},"errors":{"bad-old-password":"The provided old password is not correct.","old-password-required":"Old password is required.","new-password-error":"Password must be 6-64 characters long.","passwords-not-match":"Passwords do not match.","default-password":"Don\'t use the default password (1234)."}},"updater-config":{"open-link":"Show updater settings","open-confirmation":"The updater settings are for experienced users only. Are you sure you want to continue?","help":"Use this form for overriding the settings that will be used by the updater. All empty fields will be ignored. The settings will be used for all updating operations, no mater which element is being updated, so please be careful.","channel":"Channel","version":"Version","archive-url":"Archive URL","checksum-url":"Checksum URL","not-saved":"The changes have not been saved yet.","save":"Save changes","remove-settings":"Remove the settings","saved":"The custom settings have been saved.","removed":"The custom settings have been removed.","save-confirmation":"Are you sure you want to apply the custom settings?","remove-confirmation":"Are you sure you want to remove the custom settings?"},"change-password":"Change password","refresh-rate":"Refresh rate","refresh-rate-help":"Time the system waits to update the data automatically.","refresh-rate-confirmation":"Refresh rate changed.","seconds":"seconds"},"login":{"password":"Password","incorrect-password":"Incorrect password.","initial-config":"Configure initial launch"},"actions":{"menu":{"terminal":"Terminal","config":"Configuration","update":"Update","proxy":"Resolving Proxy","turn-off":"Turn off","logs":"View logs"},"update":{"confirmation":"A terminal will be opened in a new tab and the update procedure will be started automatically. Do you want to continue?"},"turn-off":{"confirmation":"Are you sure you want to turn off the visor?","done":"The visor is shutting down."},"terminal-options":{"full":"Full terminal","simple":"Simple terminal"},"terminal":{"title":"Terminal","input-start":"Skywire terminal for {{address}}","error":"Unexpected error while trying to execute the command."}},"update":{"title":"Update","error-title":"Error","processing":"Looking for updates...","no-update":"There is no update for the visor. The currently installed version is:","no-updates":"No new updates were found.","already-updating":"Some visors are already being updated:","with-error":"It was not possible to check the following visors:","update-available":"The following updates were found:","update-available-singular":"The following updates for 1 visor were found:","update-available-plural":"The following updates for {{ number }} visors were found:","update-available-additional-singular":"The following additional updates for 1 visor were found:","update-available-additional-plural":"The following additional updates for {{ number }} visors were found:","update-instructions":"Click the \'Install updates\' button to continue.","updating":"The update operation has been started, you can open this window again for checking the progress:","version-change":"From {{ currentVersion }} to {{ newVersion }}","selected-channel":"Selected channel:","downloaded-file-name-prefix":"Downloading: ","speed-prefix":"Speed: ","time-downloading-prefix":"Time downloading: ","time-left-prefix":"Aprox. time left: ","starting":"Preparing to update","finished":"Status connection finished","install":"Install updates"},"update-all":{"title":"Update","updatable-list-text":"Please press the buttons of the visors you want to update. A terminal will be opened in a new tab for each visor and the update procedure will be started automatically.","non-updatable-list-text":"The following visors can not be updated via the terminal:","update-button":"Update"},"apps":{"log":{"title":"Log","empty":"There are no log messages for the selected time range.","filter-button":"Only showing logs generated since:","view-all":"View all {{ totalLogs }} entries","filter":{"title":"Filter","filter":"Only show logs generated since","7-days":"The last 7 days","1-month":"The last 30 days","3-months":"The last 3 months","6-months":"The last 6 months","1-year":"The last year","all":"Show all"}},"apps-list":{"title":"Applications","title-official":"Official Applications","title-user":"User Applications","list-title":"Application list","app-name":"Name","port":"Port","state":"State","state-tooltip":"Current state","auto-start":"Auto start","empty-official":"This visor doesn\'t have any official applications.","empty-user":"This visor doesn\'t have any user applications.","empty-with-filter":"No app matches the selected filtering criteria.","disable-autostart":"Disable autostart","enable-autostart":"Enable autostart","autostart-disabled":"Autostart disabled","autostart-enabled":"Autostart enabled","unavailable-logs-error":"Unable to show the logs while the app is not running.","filter-dialog":{"state":"The state must be","name":"The name must contain","port":"The port must contain","autostart":"The autostart must be","state-options":{"any":"Running or stopped","running":"Running","stopped":"Stopped"},"autostart-options":{"any":"Enabled or disabled","enabled":"Enabled","disabled":"Disabled"}}},"user-app-settings":{"title":"{{ name }} (Settings)","info":"Here you can edit the app settings as name-value pairs. Please check the application docs to see which settings and values are supported by this app.","name":"Name {{ number }}","value":"Value {{ number }}","remove":"Remove","add":"Add setting","save":"Save","invalid-confirmation":"One or more settings do not have a name and will be ignored. Do you want to continue?","empty-confirmation":"The settings list is empty. Do you really want to continue?","changes-made":"The changes have been made."},"skychat-settings":{"title":"Skychat Settings","localhost-only":"Allow access from the local machine only","port":"Port","save":"Save","changes-made":"The changes have been made.","port-error":"Must be a valid number between 1025 and 65536.","non-localhost-confirmation":"This will allow to use the app from anywhere on the internet. Are you sure you vant to continue?"},"vpn-socks-server-settings":{"socks-title":"Skysocks Settings","vpn-title":"VPN-Server Settings","whitelist":"Allowed peers (public keys)","whitelist-help":"Comma- or whitespace-separated public keys. Empty = open to all authenticated peers.","whitelist-invalid-pk":"One or more entries is not a valid 66-character hex public key.","netifc":"Default network interface (optional)","secure-mode-check":"Use secure mode","secure-mode-info":"When active, the server doesn\'t allow client/server SSH and doesn\'t allow any traffic from VPN clients to the server local network.","save":"Save","set-whitelist-confirmation":"Apply this whitelist to the server? Only the listed peers will be able to connect.","clear-whitelist-confirmation":"The whitelist is empty. The server will accept connections from any authenticated peer. Continue?","changes-made":"The changes have been made."},"vpn-socks-client-settings":{"socks-title":"Skysocks-Client Settings","vpn-title":"VPN-Client Settings","discovery-tab":"Search","remote-visor-tab":"Enter manually","history-tab":"History","settings-tab":"Settings","use":"Use this data","change-note":"Change note","remove-entry":"Remove entry","note":"Note:","note-entered-manually":"Entered manually","note-obtained":"Obtained from the discovery service","key":"Key:","port":"Port:","location":"Location:","state-available":"Available","state-offline":"Offline","public-key":"Remote visor public key","password":"Password","password-history-warning":"Note: the password will not be saved in the history.","copy-pk-info":"Copy public key.","copied-pk-info":"The public key has been copied.","copy-pk-error":"There was a problem copying the public key.","no-elements":"Currently there are no elements to show. Please try again later.","no-elements-for-filters":"There are no elements that meet the filter criteria.","no-filter":"No filter has been selected","click-to-change":"Click to change","remote-key-length-error":"The public key must be 66 characters long.","remote-key-chars-error":"The public key must only contain hexadecimal characters.","save":"Save","remove-from-history-confirmation":"Are you sure you want to remove the entry from the history?","change-key-confirmation":"Are you sure you want to change the remote visor public key?","changes-made":"The changes have been made.","no-history":"This tab will show the last {{ number }} public keys used.","default-note-warning":"The default note has been used.","pagination-info":"{{ currentElementsRange }} of {{ totalElements }}","dns":"Custom DNS server IP address","dns-error":"Invalid value.","killswitch-check":"Activate killswitch","killswitch-info":"When active, all network connections will be disabled if the app is running but the VPN protection is interrupted (for temporary errors or any other problem). This avoids data leaks.","settings-changed-alert":" The changes have not been saved yet.","save-settings":"Save settings","change-note-dialog":{"title":"Change Note","note":"Note"},"password-dialog":{"title":"Enter Password","password":"Password","info":"You are being asked for a password because a password was set when the selected entry was created, but the it was not saved for security reasons. You can leave the password empty if needed.","continue-button":"Continue"},"filter-dialog":{"title":"Filters","country":"The country must be","any-country":"Any","location":"The location must contain","pub-key":"The public key must contain","apply":"Apply"}},"stop-app":"Stop","start-app":"Start","view-logs":"View logs","settings":"Settings","open":"Open","error":"An error has occured and it was not possible to perform the operation.","stop-confirmation":"Are you sure you want to stop the app?","stop-selected-confirmation":"Are you sure you want to stop the selected apps?","disable-autostart-confirmation":"Are you sure you want to disable autostart for the app?","enable-autostart-confirmation":"Are you sure you want to enable autostart for the app?","disable-autostart-selected-confirmation":"Are you sure you want to disable autostart for the selected apps?","enable-autostart-selected-confirmation":"Are you sure you want to enable autostart for the selected apps?","operation-completed":"Operation completed.","operation-unnecessary":"The selection already has the requested setting.","status-running":"Running","status-connecting":"Connecting","status-stopped":"Stopped","status-failed":"Ended with the following error: {{ error }}","status-running-tooltip":"App is currently running","status-connecting-tooltip":"App is currently connecting","status-stopped-tooltip":"App is currently stopped","status-failed-tooltip":"The app finished with the following error: {{ error }}"},"transports":{"title":"Transports","info":"Connections you have with remote Skywire visors, to allow local Skywire apps to communicate with apps running on those remote visors.","list-title":"Transport list","offline":"Offline","persistent":"Persistent","persistent-tooltip":"Persistent transports, which are created automatically when the visor is turned on and are automatically recreated in case of disconnection.","persistent-transport-tooltip":"This transport is persistent, so it is created automatically when the visor is turned on and automatically recreated in case of disconnection.","persistent-transport-button-tooltip":"This transport is persistent, so it is created automatically when the visor is turned on and automatically recreated in case of disconnection. Press to make non-persistent.","non-persistent-transport-button-tooltip":"Press to make this transport persistent. Persistent transports are created automatically when the visor is turned on and automatically recreated in case of disconnection.","make-persistent":"Make persistent","make-non-persistent":"Make non-persistent","make-selected-persistent":"Make all selected persistent","make-selected-non-persistent":"Make all selected non-persistent","changes-made":"Changes made.","no-changes-needed":"No changes were needed.","id":"ID","remote-node":"Remote","type":"Type","latency":"Latency","create":"Create transport","make-persistent-confirmation":"Are you sure you want to make the transport persistent?","make-non-persistent-confirmation":"Are you sure you want to make the transport non-persistent?","make-selected-persistent-confirmation":"Are you sure you want to make the selected transports persistent?","make-selected-non-persistent-confirmation":"Are you sure you want to make the selected transports non-persistent?","make-offline-non-persistent-confirmation":"Are you sure you want to make the transport non-persistent? It will not be shown in the list while offline anymore.","delete-confirmation":"Are you sure you want to delete the transport?","delete-persistent-confirmation":"This transport is persistent, so it may be recreated shortly after deletion. Are you sure you want to delete it?","delete-selected-confirmation":"Are you sure you want to delete the selected transports?","delete":"Delete transport","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any transports.","empty-with-filter":"No transport matches the selected filtering criteria.","details":{"title":"Details","basic":{"title":"Basic info","persistent":"Persistent:","id":"ID:","local-pk":"Local public key:","remote-pk":"Remote public key:","type":"Type:"},"data":{"title":"Data transmission","uploaded":"Uploaded data:","downloaded":"Downloaded data:"}},"dialog":{"remote-key":"Remote public key","label":"Identification name (optional)","transport-type":"Transport type","make-persistent":"Make persistent","persistent-tooltip":"Persistent transports are created automatically when the visor is turned on and automatically recreated in case of disconnection.","only-persistent-created":"The persistent transport was created, but it may have not been activated.","success":"Transport created.","success-without-label":"The transport was created, but it was not possible to save the label.","errors":{"remote-key-length-error":"The remote public key must be 66 characters long.","remote-key-chars-error":"The remote public key must only contain hexadecimal characters.","transport-type-error":"The transport type is required."}},"filter-dialog":{"persistent":"The transport must be","id":"The id must contain","remote-node":"The remote key must contain","persistent-options":{"any":"Any","persistent":"Persistent","non-persistent":"Non-persistent"}}},"routes":{"title":"Routes","info":"Paths used to reach the remote visors to which transports have been established. Routes are automatically generated as needed.","list-title":"Route list","key":"Key","type":"Type","source":"Source","destination":"Destination","local-port":"Local port","remote-port":"Remote port","remote-pk":"Remote","next-rid":"Next RID","next-tp":"Next TP","keep-alive":"Keep-alive","delete-confirmation":"Are you sure you want to delete the route?","delete-selected-confirmation":"Are you sure you want to delete the selected routes?","delete":"Delete route","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any routes.","empty-with-filter":"No route matches the selected filtering criteria.","details":{"title":"Details","basic":{"title":"Basic info","key":"Key:","rule":"Rule:"},"summary":{"title":"Rule summary","keep-alive":"Keep alive:","type":"Rule type:","key-route-id":"Key route ID:"},"specific-fields-titles":{"app":"App fields","forward":"Forward fields","intermediary-forward":"Intermediary forward fields"},"specific-fields":{"route-id":"Next route ID:","transport-id":"Next transport ID:","destination-pk":"Destination public key:","source-pk":"Source public key:","destination-port":"Destination port:","source-port":"Source port:"}},"filter-dialog":{"key":"The key must contain","type":"The type must be","source":"The source must contain","destination":"The destination must contain","any-type-option":"Any"}},"copy":{"tooltip":"Click to copy","tooltip-with-text":"{{ text }} (Click to copy)","copied":"Copied!"},"selection":{"select-all":"Select all","unselect-all":"Unselect all","delete-all":"Delete all selected elements","start-all":"Start all selected apps","stop-all":"Stop all selected apps","enable-autostart-all":"Enable autostart for all selected apps","disable-autostart-all":"Disable autostart for all selected apps"},"refresh-button":{"seconds":"Updated a few seconds ago","minute":"Updated 1 minute ago","minutes":"Updated {{ time }} minutes ago","hour":"Updated 1 hour ago","hours":"Updated {{ time }} hours ago","day":"Updated 1 day ago","days":"Updated {{ time }} days ago","week":"Updated 1 week ago","weeks":"Updated {{ time }} weeks ago","error-tooltip":"There was an error updating the data. Retrying automatically every {{ time }} seconds..."},"view-all-link":{"label":"View all {{ number }} elements"},"paginator":{"first":"First","last":"Last","total":"Total: {{ number }} pages","select-page-title":"Select page"},"confirmation":{"header-text":"Confirmation","confirm-button":"Yes","cancel-button":"No","close":"Close","error-header-text":"Error","done-header-text":"Done"},"language":{"title":"Select language"},"tabs-window":{"title":"Change tab"},"vpn":{"title":"VPN Control Panel","start":"Start","servers":"Servers","settings":"Settings","unnamed":"Unnamed","starting-blocked-server-error":"Unable to connect to the selected server because it has been added to the blocked servers list.","unexpedted-error":"An unexpected error occurred and the operation could not be completed.","remote-access-title":"It appears that you are accessing the system remotely","remote-access-text":"This application only allows you to manage the VPN protection of the device on which it was installed. Changes made with it will not affect remote devices like the one you seem to be using. Also, the displayed IP data may be incorrect.","server-change":{"busy-error":"The system is busy. Please wait.","backend-error":"It was not possible to change the server. Please make sure the public key is correct and the VPN app is running.","already-selected-warning":"The selected server is already being used.","change-server-while-connected-confirmation":"The VPN protection will be interrupted while changing the server and some data may be transmitted unprotected during the process. Do you want to continue?","start-same-server-confirmation":"You had already selected that server. Do you want to connect to it?"},"error-page":{"text":"The VPN client app is not available.","more-info":"It was not possible to connect to the VPN client app. This may be due to a configuration error, an unexpected problem with the visor or because you used an invalid public key in the URL.","text-pk":"Invalid configuration.","more-info-pk":"The application cannot be started because you have not specified the visor public key.","text-storage":"Error saving data.","more-info-storage":"There has been a conflict when trying to save the data and the application has been closed to prevent errors. This could happen if you open the application in more than one tab or window.","text-pk-change":"Invalid operation.","more-info-pk-change":"Please use this application to manage only one VPN client."},"connection-info":{"state-title":"Your connection is currently:","state-connecting":"Connecting","state-connecting-info":"The VPN protection is being activated.","state-connected":"Connected","state-connected-info":"The VPN protection is on.","state-disconnecting":"Disconnecting","state-disconnecting-info":"The VPN protection is being deactivated.","state-reconnecting":"Reconnecting","state-reconnecting-info":"The VPN protection is being restored.","state-disconnected":"Disconnected","state-disconnected-info":"The VPN protection is off.","state-info":"Current connection status.","latency-info":"Current latency.","upload-info":"Upload speed.","download-info":"Download speed."},"connection-error":{"text":"Connection error","info":"Problem connecting with the vpn app. Some data being displayed could be outdated."},"status-page":{"start-title":"Start VPN","no-server":"No server selected!","disconnect":"Disconnect","last-error":"Last error:","unknown-error":"Unknown error.","disconnect-confirmation":"Are you sure you want to stop the VPN protection?","upload-info":"Uploaded data stats.","download-info":"Downloaded data stats.","latency-info":"Latency stats.","total-data-label":"total","problem-connecting-error":"It was not possible to connect to the server. The server may be invalid or temporarily down.","problem-starting-error":"It was not possible to start the VPN. Please make sure the base VPN client app is running.","problem-stopping-error":"It was not possible to stop the VPN. Please make sure the base VPN client app is running.","generic-problem-error":"It was not possible to perform the operation. Please make sure the base VPN client app is running.","select-server-warning":"Please select a server first.","data":{"ip":"IP address:","ip-problem-info":"There was a problem trying to get the IP. Please verify it using an external service.","ip-country-problem-info":"There was a problem trying to get the country. Please verify it using an external service.","ip-refresh-info":"Refresh","ip-refresh-time-warning":"Please wait {{ seconds }} second(s) before refreshing the data.","ip-refresh-loading-warning":"Please wait for the previous operation to finish.","country":"Country:","server":"Server:","server-note":"Server note:","original-server-note":"Original server note:","local-pk":"Local visor public key:","remote-pk":"Remote visor public key:","unavailable":"Unavailable"}},"server-options":{"tooltip":"Options","connect-without-password":"Connect without password","connect-without-password-confirmation":"The connection will be made without the password. Are you sure you want to continue?","connect-using-password":"Connect using a password","connect-using-another-password":"Connect using another password","edit-name":"Custom name","edit-label":"Custom note","make-favorite":"Make favorite","make-favorite-confirmation":"Are you sure you want to mark this server as favorite? It will be removed from the blocked list.","make-favorite-done":"Added to the favorites list.","remove-from-favorites":"Remove from favorites","remove-from-favorites-done":"Removed from the favorites list.","block":"Block server","block-done":"Added to the blocked list.","block-confirmation":"Are you sure you want to block this server? It will be removed from the favorites list.","block-selected-confirmation":"Are you sure you want to block the currently selected server? All connections will be closed.","block-selected-favorite-confirmation":"Are you sure you want to block the currently selected server? All connections will be closed and it will be removed from the favorites list.","unblock":"Unblock server","unblock-done":"Removed from the blocked list.","remove-from-history":"Remove from history","remove-from-history-confirmation":"Are you sure you want to remove this server from the history?","remove-from-history-done":"Removed from history.","edit-value":{"name-title":"Custom Name","note-title":"Custom Note","name-label":"Custom name","note-label":"Custom note","apply-button":"Apply","changes-made-confirmation":"The change has been made."}},"server-conditions":{"selected-info":"This is the currently selected server.","blocked-info":"This server is in the blocked list.","favorite-info":"This server is in the favorites list.","history-info":"This server is in the server history.","has-password-info":"A password was set for connecting with this server."},"server-list":{"date-small-table-label":"Date","date-info":"Last time you used this server.","country-small-table-label":"Country","country-info":"Country where the server is located.","name-small-table-label":"Name","location-small-table-label":"Location","public-key-small-table-label":"Pk","public-key-info":"Server public key.","congestion-rating-small-table-label":"Congestion rating","congestion-rating-info":"Rating of the server related to how congested it tends to be.","congestion-small-table-label":"Congestion","congestion-info":"Current server congestion.","latency-rating-small-table-label":"Latency rating","latency-rating-info":"Rating of the server related to how much latency it tends to have.","latency-small-table-label":"Latency","latency-info":"Current server latency.","hops-small-table-label":"Hops","hops-info":"How many hops are needed for connecting with the server.","note-small-table-label":"Note","note-info":"Note about the server.","gold-rating-info":"Gold","silver-rating-info":"Silver","bronze-rating-info":"Bronze","notes-info":"Custom note: {{ custom }} - Original note: {{ original }}","empty-discovery":"Currently there are no VPN servers to show. Please try again later.","empty-history":"There is no history to show.","empty-favorites":"There are no favorite servers to show.","empty-blocked":"There are no blocked servers to show.","empty-with-filter":"No VPN server matches the selected filtering criteria.","add-manually-info":"Add server manually.","current-filters":"Current filters (press to remove)","none":"None","unknown":"Unknown","tabs":{"public":"Public","history":"History","favorites":"Favorites","blocked":"Blocked"},"add-server-dialog":{"title":"Enter manually","pk-label":"Server public key","password-label":"Server password (if any)","name-label":"Server name (optional)","note-label":"Personal note (optional)","pk-length-error":"The public key must be 66 characters long.","pk-chars-error":"The public key must only contain hexadecimal characters.","use-server-button":"Use server"},"password-dialog":{"title":"Enter Password","password-if-any-label":"Server password (if any)","password-label":"Server password","continue-button":"Continue"},"filter-dialog":{"country":"The country must be","name":"The name must contain","location":"The location must contain","public-key":"The public key must contain","congestion-rating":"The congestion rating must be","latency-rating":"The latency rating must be","rating-options":{"any":"Any","gold":"Gold","silver":"Silver","bronze":"Bronze"},"country-options":{"any":"Any"}}},"settings-page":{"setting-small-table-label":"Setting","value-small-table-label":"Value","killswitch":"Killswitch","killswitch-info":"When active, all network connections will be disabled if the app is running but the VPN protection is interrupted (for temporary errors or any other problem). This avoids data leaks.","get-ip":"Get IP info","get-ip-info":"When active, the application will use external services to obtain information about the current IP.","data-units":"Data units","data-units-info":"Allows to select the units that will be used to display the data transmission statistics.","minimum-hops":"Minimum hops","minimum-hops-info":"Allows to set the minimum number of hops the connections must pass through other Skywire visors before reaching the final destination.","dns":"Custom DNS server","dns-info":"Allows to use a custom DNS server, which could improve privacy and prevent sites from being blocked by the default DNS server of your ISP.","setting-none":"None","setting-on":"On","setting-off":"Off","working-warning":"The system is busy. Please wait for the previous operation to finish.","change-while-connected-confirmation":"The VPN protection will be interrupted while changing the setting. Do you want to continue?","data-units-modal":{"title":"Data Units","only-bits":"Bits for all stats","only-bytes":"Bytes for all stats","bits-speed-and-bytes-volume":"Bits for speed and bytes for volume (default)"}},"dns-config":{"title":"Custom DNS server","ip":"Custom DNS server IP address","save-config-button":"Save configuration","done":"Changes saved."}}}')}}]); \ No newline at end of file diff --git a/static/skywire-manager-src/dist/473.fe39a7ded331ced8.js b/static/skywire-manager-src/dist/473.fe39a7ded331ced8.js new file mode 100644 index 0000000000..48710c68f1 --- /dev/null +++ b/static/skywire-manager-src/dist/473.fe39a7ded331ced8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkskywire_manager=self.webpackChunkskywire_manager||[]).push([[473],{473(e){e.exports=JSON.parse('{"common":{"save":"Save","cancel":"Cancel","loading":"Loading\u2026","downloaded":"Downloaded","uploaded":"Uploaded","loading-error":"There was an error getting the data. Retrying...","operation-error":"There was an error trying to complete the operation.","no-connection-error":"There is no internet connection or connection to the Hypervisor.","error":"Error:","refreshed":"Data refreshed.","options":"Options","logout":"Logout","logout-error":"Error logging out.","logout-confirmation":"Are you sure you want to log out?","time-in-ms":"{{ time }}ms.","time-in-segs":"{{ time }}s.","ok":"Ok","yes":"Yes","no":"No","unknown":"Unknown","close":"Close","window-size-error":"The window is too narrow for the content.","data-update-problems":"Problem updating the data.","visors":"visors"},"labeled-element":{"edit-label":"Edit label","remove-label":"Remove label","go-to-settings":"Go to settings","view-all-labels":"View all labels","copy":"Copy","remove-label-confirmation":"Do you really want to remove the label?","unnamed-element":"Unnamed","unnamed-local-visor":"Local visor","local-element":"Local","tooltip":"Click to copy the entry or change the label","tooltip-with-text":"{{ text }} (Click to copy the entry or change the label)"},"labels":{"title":"Labels","info":"Labels you have entered to easily identify visors, transports and other elements, instead of having to read machine generated identifiers.","list-title":"Label list","label":"Label","id":"Element ID","type":"Type","delete-confirmation":"Are you sure you want to delete the label?","delete-selected-confirmation":"Are you sure you want to delete the selected labels?","delete":"Delete label","deleted":"Delete operation completed.","empty":"There aren\'t any saved labels.","empty-with-filter":"No label matches the selected filtering criteria.","filter-dialog":{"label":"The label must contain","id":"The id must contain","type":"The type must be","type-options":{"any":"Any","visor":"Visor","dmsg-server":"DMSG server","transport":"Transport"}}},"filters":{"filter-action":"Filter","filter-info":"Filter list.","press-to-remove":"(Press to remove the filters)","remove-confirmation":"Are you sure you want to remove the filters?"},"tables":{"title":"Order by","sorting-title":"Ordered by:","sort-by-value":"Value","sort-by-label":"Label","label":"(label)","inverted-order":"(inverted)"},"start":{"title":"Start","loading-error":"An error occurred while getting the initial data. Retrying..."},"node":{"title":"Visor details","not-found":"Visor not found.","resource-monitor":{"title":"Resource monitor","tab-host":"Host","tab-process":"Process","cpu":"CPU","memory":"Memory","disk":"Disk","net-rx":"Net rx","net-tx":"Net tx","threads":"Threads","heap":"Heap","goroutines":"Goroutines","gc":"GC rate"},"logs":{"title":"Runtime Logs","no-logs":"No runtime logs were found for this visor.","no-logs-for-filter":"No runtime logs matches the selected filter.","view-all":"View all logs in raw format >","view-rest":"View all {{ number }} elements in raw format >","selected-filter":"Showing:","filter-ignored":"The filter excluded {{ number }} entries","filter-title":"Filter","filter-all":"All logs","filter-debug":"Debug or more important","filter-info":"Info or more important","filter-warning":"Warning or more important","filter-error":"Error or more important","filter-faltal":"Faltal or more important","filter-panic":"Panic","live-on":"Live (pause)","live-off":"Paused (live)","dropped":"Skipped {{ count }} older entries that aged out of the visor\'s runtime buffer."},"statuses":{"online":"Online","online-tooltip":"The visor is online.","connecting":"Connecting","connecting-tooltip":"The visor is online, but still connecting to the uptime tracker.","unknown":"Unknown","unknown-tooltip":"The visor is online, but it has not been possible to determine if it is connected to the uptime tracker.","partially-online":"Online with problems","partially-online-tooltip":"The visor is online, but disconnected from the uptime tracker.","offline":"Offline","offline-tooltip":"The visor is offline."},"details":{"node-info":{"title":"Visor","title-local":"Local Visor","label":"Label:","public-key":"Public key:","symmetic-nat":"Symmetic NAT:","public-ip":"Public IP:","ip":"IP:","dmsg-servers":"DMSG servers:","connected":"connected","no-dmsg-server":"Not connected","ping":"Ping:","node-version":"Visor version:","config-version":"Config version:","os":"OS:","arch":"Architecture:","skybian-version":"Skybian version:","time":{"title":"Time online:","seconds":"a few seconds","minute":"1 minute","minutes":"{{ time }} minutes","hour":"1 hour","hours":"{{ time }} hours","day":"1 day","days":"{{ time }} days","week":"1 week","weeks":"{{ time }} weeks"}},"rewards-info":{"title":"Rewards","rewards-address":"Reward address:","not-registered":"Not registered","not-registered-info":"You have not specified a Skycoin address for receiving rewards for this visor. If you want to register the visor for receiving rewards, press the \\"Set address\\" button and set a Skycoin address.","open-in-explorer":"Open in blockchain explorer","set-address-button":"Set address","change-address-button":"Change address","show-rules":"Reward rules (embedded mainnet_rules.md)"},"transports-info":{"title":"Transport","total":"Total:","autoconnect":"Autoconnect:","autoconnect-info":"When enabled, the visor will automatically create the transports needed when a connection to a public visor is requested. If disabled, the transports will have to be created before being able to make the connection.","enabled":"Enabled","disabled":"Disabled","enable-button":"Enable","disable-button":"Disable","enable-confirmation":"Are you sure you want to enable the autoconnect feature?","disable-confirmation":"Are you sure you want to disable the autoconnect feature?","enable-done":"The autoconnect feature has been enabled.","disable-done":"The autoconnect feature has been disabled.","is-public":"Public Visor:","is-public-info":"When enabled, this visor registers as a public relay for other visors","public-enabled":"Enabled","public-disabled":"Disabled","public-enable-button":"Enable","public-disable-button":"Disable","public-enable-confirmation":"Are you sure you want to make this visor public?","public-disable-confirmation":"Are you sure you want to make this visor private?","public-enable-done":"This visor is now public.","public-disable-done":"This visor is now private."},"router-info":{"title":"Router","min-hops":"Min hops:","max-hops":"Max hops:","change-config-button":"Change configuration"},"node-health":{"title":"Health","services":"Services:","uptime-tracker":"Uptime tracker:","autoconnect":"Autoconnect:","transportability":"Transportability:","connected":"Connected","disconnected":"Disconnected"},"ports":{"title":"Ports"},"config":{"view-button":"View Config","title":"Runtime Configuration","edit":"Edit","save":"Save","restart-hint":"Visor must be restarted for changes to take effect."},"tpviz":{"title":"Network Visualizer","open":"Open Transport Visualizer"},"node-traffic-data":"Traffic data"},"tabs":{"info":"Info","apps":"Apps","routing":"Routing","transports":"Transports","bandwidth":"Bandwidth","uptime":"Uptime","rewards":"Rewards","skynet":"Skynet","web-proxy":"Web Proxy","resources":"Resources","terminal":"Terminal","logs":"Logs","chat":"Skychat","dmsg":"DMSG"},"error-load":"An error occurred while refreshing the data. Retrying..."},"rewards-address-config":{"title":"Reward Address Configuration","info":"Here you can set to which Skycoin address you want the rewards to be sent. If you leave the address empty, the registration will be deleted and the visor will not receive rewards.","more-info-link":"(More info about the reward system)","address":"Address","address-error":"Please enter a valid Skycoin address.","save-config-button":"Save configuration","done":"Changes saved.","empty-warning":"The address in empty, so the registration will be deleted and no rewards will be received. Do you really want to continue?"},"router-config":{"title":"Router Configuration","info":"Here you can configure how many hops the connections must pass through other Skywire visors before reaching the final destination. NOTE: the changes will not affect the existing routes.","min-hops":"Min hops","min-hops-error":"Please enter a valid number.","save-config-button":"Save configuration","done":"Changes saved."},"nodes":{"title":"Visor list","dmsg-title":"DMSG","rewards-title":"Rewards","services-health-title":"Deployment","network-title":"Network","resources-title":"Resources","transports-title":"Transports","uptime-title":"Uptime","dmsg-settings-title":"DMSG settings","reward-address":"Reward Address","reward-total":"Week Total","reward-distributed":"Distributed","reward-pending":"Pending","rewards-loading":"Loading rewards...","modify-rewards-all":"Change rewards address","update-all":"Update all online visors","hypervisor":"Hypervisor","state":"State","state-tooltip":"Current state","label":"Label","key":"Key","ip":"IP","lan-ip":"LAN IP","public-ip":"Public IP","location":"Location","dmsg-server":"DMSG server","ping":"Ping","version":"Version","config-version":"Config","hypervisor-info":"This visor is the current Hypervisor.","copy-key":"Copy key","copy-dmsg":"Copy DMSG server key","copy-data":"Copy data","view-node":"View visor","delete-node":"Remove visor","delete-all-offline":"Remove all offline visors","error-load":"An error occurred while refreshing the list. Retrying...","empty":"There aren\'t any visors connected to this hypervisor.","empty-with-filter":"No visor matches the selected filtering criteria.","delete-node-confirmation":"Are you sure you want to remove the visor from the list?","delete-all-offline-confirmation":"Are you sure you want to remove all offline visors from the list?","delete-all-filtered-offline-confirmation":"All offline visors satisfying the current filtering criteria will be removed from the list. Are you sure you want to continue?","deleted":"Visor removed.","deleted-singular":"1 offline visor removed.","deleted-plural":"{{ number }} offline visors removed.","no-visors-to-update":"There are no visors to update.","no-visors-to-modify":"There are no visors to modify.","transports":"Transports","services":"Services","reward":"Reward","reward-set":"Reward address set","reward-not-set":"No reward address","ip-location":"IP / Location","visor-version":"Visor","config-label":"Config","filter-dialog":{"online":"The visor must be","label":"The label must contain","key":"The public key must contain","dmsg":"The DMSG server key must contain","online-options":{"any":"Online or offline","online":"Online","offline":"Offline"}}},"network-transports":{"loading":"Fetching transport metrics from TPD\u2026","summary":"{{transports}} transports \xb7 {{bandwidth}} network bandwidth ({{days}} days)","last-updated":"last fetched","days":"Window","view":"View","view-compact":"Compact","view-tree":"Tree","edges":"Edges","edges-show":"Show","edges-hide":"Hide","offline":"Offline","offline-show":"Show","offline-hide":"Hide","offline-count-tooltip":"Number of this visor\'s transports that TPD currently considers offline","refresh":"Refresh","tp-id":"Transport ID","type":"Type","edge-a":"Edge A","edge-b":"Edge B","sent":"Sent","recv":"Recv","total":"Total","latency":"Latency"},"multi-resources":{"loading":"Polling visor host stats\u2026","summary":"{{count}} visors","last-updated":"last sample","visor":"Visor","cpu":"CPU","mem":"Memory","disk":"Disk","tx":"TX","rx":"RX","proc-rss":"Process RSS"},"services-health":{"loading":"Checking deployment services\u2026","all-ok":"All deployment services operational","degraded":"One or more deployment services are degraded","last-updated":"last checked","service":"Service","status":"Status","latency":"Latency","version":"Version","endpoint":"Endpoint","rsn-section":"Route Setup Nodes","rsn-empty":"No route setup nodes configured.","rsn-pk":"Public Key","rsn-success":"Successful","rsn-failed":"Failed","rsn-rate":"Success rate","rsn-latency-p50":"p50","rsn-latency-p95":"p95","rsn-latency-p99":"p99","rsn-active":"In flight","rsn-last-success":"Last success","rsn-last-failure":"Last failure","rsn-uptime":"Uptime","rsn-failure-reasons":"Top failure reasons","rsn-error":"Unreachable"},"terminal":{"help":"Live shell on the visor (dmsgpty). Ctrl+D or type \\"exit\\" to close.","open-fullscreen":"Open in new window"},"web-proxy":{"title":"Resolving Proxy","help":"Browse .skynet and .dmsg domains. Optionally route all other traffic through an upstream SOCKS5 proxy (e.g. skysocks).","loading":"Reading proxy state\u2026","resolver":"Resolver","running":"Running","socks-addr":"SOCKS","upstream":"Upstream","enable":"Enable resolving proxy (.skynet + .dmsg)","upstream-label":"Upstream SOCKS5 (e.g. 127.0.0.1:1080)","set":"Set","refresh":"Refresh"},"logs":{"loading":"Loading runtime logs\u2026","empty":"No log entries match the current filter.","filter":"Filter","pause":"Pause","resume":"Resume","open-raw":"Open raw logs","view-rest":"View all {{number}} entries in raw format >","dropped":"Skipped {{count}} older entries that aged out of the visor\'s runtime buffer."},"bandwidth":{"loading":"Reading local transport stats\u2026","empty":"No transport bandwidth recorded yet.","transports":"transports","total":"total","last-updated":"fetched","window":"Window","window-now":"Now","refresh":"Refresh","current-snapshot":"Current snapshot","daily-history":"Daily history","no-history":"No daily rollups recorded yet.","date":"Date","sent":"Sent","recv":"Recv","samples":"Samples","latency-current":"Latency (min/avg/max)","latency-min-avg-max":"Lat min/avg/max","sampled-at":"Sampled at"},"uptime":{"loading":"Reading local uptime bitmaps\u2026","empty":"No uptime data recorded yet.","tiers":"tiers","today":"today","window-avg":"Window avg","last-updated":"fetched","window":"Window","window-now":"Today","refresh":"Refresh","tier-process":"Process","tier-process-info":"Visor process up \u2014 local sampler ticked.","tier-dmsg":"DMSG","tier-dmsg-info":"DMSG client has at least one server session.","tier-skynet":"Skynet","tier-skynet-info":"\u2265 2 live transports \u2014 visor is routable through Skynet (matches TPD\'s \'skynet online\' criterion).","online":"online","offline":"offline","legend":"Legend","legend-down":"down","legend-up":"up","legend-future":"future","loading-fleet":"Reading TPD uptime feed\u2026","fleet-empty":"No connected visors reporting uptime.","fleet-filter":"Filter","fleet-filter-connected":"Only connected to this hypervisor","fleet-filter-all":"All visible visors","fleet-visor":"Visor","fleet-process":"Process %","fleet-dmsg":"DMSG %","fleet-skynet":"Skynet %","today-pct":"Today %"},"skychat":{"title":"Skychat","connected":"Connected","disconnected":"Disconnected","no-history":"history is disabled (--persist not set)","empty":"No messages yet \u2014 incoming chats from connected peers will appear here.","peers":"Peers","peers-empty":"No peers yet. Send a message or wait for an incoming chat.","to":"Recipient PK","network":"Network","message":"Message","placeholder":"Type a message; Ctrl+Enter to send","send":"Send","password":{"set":"Set password","change":"Change password","clear":"Remove","hide":"Hide","saved":"Skychat password updated","cleared":"Skychat password removed","old":"Current password","new":"New password","confirm":"Repeat new password","help-unset":"Skychat is currently unprotected. Set a password to require basic auth on the standalone :8001 surface; this hypervisor session always bypasses it.","help-set":"A password is set on skychat\'s standalone :8001 surface. Change or remove it here.","errors":{"length":"Skychat password must be 6-64 characters","mismatch":"Passwords do not match","old-required":"Current password is required to remove the gate"}}},"network-view":{"loading":"Aggregating service-discovery, transport-discovery and uptime-tracker\u2026","last-updated":"last fetched","empty":"No visors match the current filters.","search":"Search","country":"Country","version":"Version","min-transports":"Min tps","online-only":"Online only","refresh":"Refresh now","col":{"pk":"PK","country":"Country","version":"Version","services":"Services","total":"Total","status":"UT"},"legend":{"offline":"offline (UT)","not-in-ut":"not in UT","low-transports":"online but <2 stcpr/sudph"}},"dmsg-settings":{"loading":"Loading DMSG session state\u2026","summary":"DMSG client sessions","last-updated":"last updated","connect-all":"Connect to all servers","sessions-count-label":"sessions_count","apply-count":"Apply","sessions":"sessions","no-sessions":"No connected sessions.","no-clients":"No DMSG clients running on this visor.","result-total":"total:","result-already":"already connected:","result-new":"newly connected:","result-failed":"failed"},"bulk-rewards":{"title":"Change reward address","info":"Enter the Skycoin address where you want to receive the rewards. The address will be set on all the selected visors. If you leave the address empty, the registration will be deleted and the visors will not receive rewards. You can also set the reward address of each node individually using the option on the visor details page.","more-info-link":"(More info about the reward system)","address":"New address","select-visors":"Visors to alter:","current-address":"Current address:","not-registered":"None (not registered on the reward program).","checking":"Checking...","error-checking":"Error checking:","processing":"Processing...","error-processing":"Error making the change:","done":"Change done.","perform-changes":"Perform changes","empty-warning":"The address in empty, so the registrations will be deleted and no rewards will be received. Do you really want to continue?"},"edit-label":{"label":"Label","done":"Label saved.","label-removed-warning":"The label was removed."},"settings":{"title":"Settings","checking-auth":"Checking authentication settings.","password":{"initial-config-help":"Use this option for setting the initial password. After a password has been set, it is not possible to use this option to modify it.","help":"Options for changing your password.","old-password":"Old password","new-password":"New password","repeat-password":"Repeat password","password-changed":"Password changed.","error-changing":"Error changing password.","initial-config":{"title":"Set initial password","password":"Password","repeat-password":"Repeat password","set-password":"Set password","done":"Password set. Please use it to access the system.","error":"Error. Please make sure you have not already set the password."},"errors":{"bad-old-password":"The provided old password is not correct.","old-password-required":"Old password is required.","new-password-error":"Password must be 6-64 characters long.","passwords-not-match":"Passwords do not match.","default-password":"Don\'t use the default password (1234)."}},"updater-config":{"open-link":"Show updater settings","open-confirmation":"The updater settings are for experienced users only. Are you sure you want to continue?","help":"Use this form for overriding the settings that will be used by the updater. All empty fields will be ignored. The settings will be used for all updating operations, no mater which element is being updated, so please be careful.","channel":"Channel","version":"Version","archive-url":"Archive URL","checksum-url":"Checksum URL","not-saved":"The changes have not been saved yet.","save":"Save changes","remove-settings":"Remove the settings","saved":"The custom settings have been saved.","removed":"The custom settings have been removed.","save-confirmation":"Are you sure you want to apply the custom settings?","remove-confirmation":"Are you sure you want to remove the custom settings?"},"change-password":"Change password","refresh-rate":"Refresh rate","refresh-rate-help":"Time the system waits to update the data automatically.","refresh-rate-confirmation":"Refresh rate changed.","seconds":"seconds"},"login":{"password":"Password","incorrect-password":"Incorrect password.","initial-config":"Configure initial launch"},"actions":{"menu":{"terminal":"Terminal","config":"Configuration","update":"Update","proxy":"Resolving Proxy","turn-off":"Turn off","logs":"View logs"},"update":{"confirmation":"A terminal will be opened in a new tab and the update procedure will be started automatically. Do you want to continue?"},"turn-off":{"confirmation":"Are you sure you want to turn off the visor?","done":"The visor is shutting down."},"terminal-options":{"full":"Full terminal","simple":"Simple terminal"},"terminal":{"title":"Terminal","input-start":"Skywire terminal for {{address}}","error":"Unexpected error while trying to execute the command."}},"update":{"title":"Update","error-title":"Error","processing":"Looking for updates...","no-update":"There is no update for the visor. The currently installed version is:","no-updates":"No new updates were found.","already-updating":"Some visors are already being updated:","with-error":"It was not possible to check the following visors:","update-available":"The following updates were found:","update-available-singular":"The following updates for 1 visor were found:","update-available-plural":"The following updates for {{ number }} visors were found:","update-available-additional-singular":"The following additional updates for 1 visor were found:","update-available-additional-plural":"The following additional updates for {{ number }} visors were found:","update-instructions":"Click the \'Install updates\' button to continue.","updating":"The update operation has been started, you can open this window again for checking the progress:","version-change":"From {{ currentVersion }} to {{ newVersion }}","selected-channel":"Selected channel:","downloaded-file-name-prefix":"Downloading: ","speed-prefix":"Speed: ","time-downloading-prefix":"Time downloading: ","time-left-prefix":"Aprox. time left: ","starting":"Preparing to update","finished":"Status connection finished","install":"Install updates"},"update-all":{"title":"Update","updatable-list-text":"Please press the buttons of the visors you want to update. A terminal will be opened in a new tab for each visor and the update procedure will be started automatically.","non-updatable-list-text":"The following visors can not be updated via the terminal:","update-button":"Update"},"apps":{"log":{"title":"Log","empty":"There are no log messages for the selected time range.","filter-button":"Only showing logs generated since:","view-all":"View all {{ totalLogs }} entries","filter":{"title":"Filter","filter":"Only show logs generated since","7-days":"The last 7 days","1-month":"The last 30 days","3-months":"The last 3 months","6-months":"The last 6 months","1-year":"The last year","all":"Show all"}},"apps-list":{"title":"Applications","title-official":"Official Applications","title-user":"User Applications","list-title":"Application list","app-name":"Name","port":"Port","state":"State","state-tooltip":"Current state","auto-start":"Auto start","empty-official":"This visor doesn\'t have any official applications.","empty-user":"This visor doesn\'t have any user applications.","empty-with-filter":"No app matches the selected filtering criteria.","disable-autostart":"Disable autostart","enable-autostart":"Enable autostart","autostart-disabled":"Autostart disabled","autostart-enabled":"Autostart enabled","unavailable-logs-error":"Unable to show the logs while the app is not running.","filter-dialog":{"state":"The state must be","name":"The name must contain","port":"The port must contain","autostart":"The autostart must be","state-options":{"any":"Running or stopped","running":"Running","stopped":"Stopped"},"autostart-options":{"any":"Enabled or disabled","enabled":"Enabled","disabled":"Disabled"}}},"user-app-settings":{"title":"{{ name }} (Settings)","info":"Here you can edit the app settings as name-value pairs. Please check the application docs to see which settings and values are supported by this app.","name":"Name {{ number }}","value":"Value {{ number }}","remove":"Remove","add":"Add setting","save":"Save","invalid-confirmation":"One or more settings do not have a name and will be ignored. Do you want to continue?","empty-confirmation":"The settings list is empty. Do you really want to continue?","changes-made":"The changes have been made."},"skychat-settings":{"title":"Skychat Settings","listener-section":"Listener","localhost-only":"Allow access from the local machine only","port":"Port (--port routing)","skynet":"Listen on Skynet (--skynet)","skynet-info":"Accept connections via the Skynet network. Disable to be reachable only on DMSG.","dmsg":"Listen on DMSG (--dmsg)","dmsg-info":"Accept connections via the DMSG network. Disable to be reachable only on Skynet.","persistence-section":"Persistence","persistence-help":"When enabled, skychat stores message history in a local BoltDB. All limits below have safe defaults; leave a field empty to use the binary\'s default.","persist-enable":"Enable persistence (--persist)","persist-max-size":"Max message size, bytes (--persist-max-size)","persist-max-size-hint":"Default 4096","persist-per-peer-rate":"Per-peer rate, msgs/min (--persist-per-peer-rate)","persist-per-peer-rate-hint":"Default 20","persist-per-peer-cap":"Per-peer cap, msgs (--persist-per-peer-cap)","persist-per-peer-cap-hint":"FIFO eviction; default 500","persist-total-cap":"Total cap, MB (--persist-total-cap)","persist-total-cap-hint":"Default 10","persist-ttl":"TTL, days (--persist-ttl)","persist-ttl-hint":"0 disables sweep; default 30","persist-seed":"SSE seed count (--persist-seed)","persist-seed-hint":"Recent messages sent to new SSE clients; 0 disables. Default 50","pairing-section":"Pairing","pair-enable":"Enable CXO pair feeds (--pair-enable)","pair-enable-info":"Per-partner CXO pair feeds + handshake (HTTP /pair endpoints).","save":"Save","changes-made":"The changes have been made.","port-error":"Must be a valid number between 1025 and 65536.","non-localhost-confirmation":"This will allow to use the app from anywhere on the internet. Are you sure you vant to continue?"},"vpn-socks-server-settings":{"socks-title":"Skysocks Settings","vpn-title":"VPN-Server Settings","whitelist":"Allowed peers (public keys)","whitelist-help":"Comma- or whitespace-separated public keys. Empty = open to all authenticated peers.","whitelist-invalid-pk":"One or more entries is not a valid 66-character hex public key.","netifc":"Default network interface (optional)","secure-mode-check":"Use secure mode","secure-mode-info":"When active, the server doesn\'t allow client/server SSH and doesn\'t allow any traffic from VPN clients to the server local network.","save":"Save","set-whitelist-confirmation":"Apply this whitelist to the server? Only the listed peers will be able to connect.","clear-whitelist-confirmation":"The whitelist is empty. The server will accept connections from any authenticated peer. Continue?","changes-made":"The changes have been made."},"vpn-socks-client-settings":{"socks-title":"Skysocks-Client Settings","vpn-title":"VPN-Client Settings","discovery-tab":"Search","remote-visor-tab":"Enter manually","history-tab":"History","settings-tab":"Settings","use":"Use this data","change-note":"Change note","remove-entry":"Remove entry","note":"Note:","note-entered-manually":"Entered manually","note-obtained":"Obtained from the discovery service","key":"Key:","port":"Port:","location":"Location:","state-available":"Available","state-offline":"Offline","public-key":"Remote visor public key","password":"Password","password-history-warning":"Note: the password will not be saved in the history.","copy-pk-info":"Copy public key.","copied-pk-info":"The public key has been copied.","copy-pk-error":"There was a problem copying the public key.","no-elements":"Currently there are no elements to show. Please try again later.","no-elements-for-filters":"There are no elements that meet the filter criteria.","no-filter":"No filter has been selected","click-to-change":"Click to change","remote-key-length-error":"The public key must be 66 characters long.","remote-key-chars-error":"The public key must only contain hexadecimal characters.","save":"Save","remove-from-history-confirmation":"Are you sure you want to remove the entry from the history?","change-key-confirmation":"Are you sure you want to change the remote visor public key?","changes-made":"The changes have been made.","no-history":"This tab will show the last {{ number }} public keys used.","default-note-warning":"The default note has been used.","pagination-info":"{{ currentElementsRange }} of {{ totalElements }}","dns":"Custom DNS server IP address","dns-error":"Invalid value.","killswitch-check":"Activate killswitch","killswitch-info":"When active, all network connections will be disabled if the app is running but the VPN protection is interrupted (for temporary errors or any other problem). This avoids data leaks.","settings-changed-alert":" The changes have not been saved yet.","save-settings":"Save settings","addr":"Listener address (--addr)","addr-hint":"Where the SOCKS5 server listens locally (default: 127.0.0.1:1080)","http":"HTTP proxy address (--http)","http-hint":"When set, also expose an HTTP-CONNECT proxy on this address","tries":"Connection retries (--tries)","tries-hint":"Number of attempts before giving up (default: 3)","retry-time":"Retry delay seconds (--retry-time)","retry-time-hint":"Wait between retry attempts (default: 5)","change-note-dialog":{"title":"Change Note","note":"Note"},"password-dialog":{"title":"Enter Password","password":"Password","info":"You are being asked for a password because a password was set when the selected entry was created, but the it was not saved for security reasons. You can leave the password empty if needed.","continue-button":"Continue"},"filter-dialog":{"title":"Filters","country":"The country must be","any-country":"Any","location":"The location must contain","pub-key":"The public key must contain","apply":"Apply"}},"stop-app":"Stop","start-app":"Start","view-logs":"View logs","settings":"Settings","open":"Open","error":"An error has occured and it was not possible to perform the operation.","stop-confirmation":"Are you sure you want to stop the app?","stop-selected-confirmation":"Are you sure you want to stop the selected apps?","disable-autostart-confirmation":"Are you sure you want to disable autostart for the app?","enable-autostart-confirmation":"Are you sure you want to enable autostart for the app?","disable-autostart-selected-confirmation":"Are you sure you want to disable autostart for the selected apps?","enable-autostart-selected-confirmation":"Are you sure you want to enable autostart for the selected apps?","operation-completed":"Operation completed.","operation-unnecessary":"The selection already has the requested setting.","status-running":"Running","status-connecting":"Connecting","status-stopped":"Stopped","status-failed":"Ended with the following error: {{ error }}","status-running-tooltip":"App is currently running","status-connecting-tooltip":"App is currently connecting","status-stopped-tooltip":"App is currently stopped","status-failed-tooltip":"The app finished with the following error: {{ error }}"},"transports":{"title":"Transports","info":"Connections you have with remote Skywire visors, to allow local Skywire apps to communicate with apps running on those remote visors.","list-title":"Transport list","offline":"Offline","persistent":"Persistent","persistent-tooltip":"Persistent transports, which are created automatically when the visor is turned on and are automatically recreated in case of disconnection.","persistent-transport-tooltip":"This transport is persistent, so it is created automatically when the visor is turned on and automatically recreated in case of disconnection.","persistent-transport-button-tooltip":"This transport is persistent, so it is created automatically when the visor is turned on and automatically recreated in case of disconnection. Press to make non-persistent.","non-persistent-transport-button-tooltip":"Press to make this transport persistent. Persistent transports are created automatically when the visor is turned on and automatically recreated in case of disconnection.","make-persistent":"Make persistent","make-non-persistent":"Make non-persistent","make-selected-persistent":"Make all selected persistent","make-selected-non-persistent":"Make all selected non-persistent","changes-made":"Changes made.","no-changes-needed":"No changes were needed.","id":"ID","remote-node":"Remote","type":"Type","latency":"Latency","create":"Create transport","make-persistent-confirmation":"Are you sure you want to make the transport persistent?","make-non-persistent-confirmation":"Are you sure you want to make the transport non-persistent?","make-selected-persistent-confirmation":"Are you sure you want to make the selected transports persistent?","make-selected-non-persistent-confirmation":"Are you sure you want to make the selected transports non-persistent?","make-offline-non-persistent-confirmation":"Are you sure you want to make the transport non-persistent? It will not be shown in the list while offline anymore.","delete-confirmation":"Are you sure you want to delete the transport?","delete-persistent-confirmation":"This transport is persistent, so it may be recreated shortly after deletion. Are you sure you want to delete it?","delete-selected-confirmation":"Are you sure you want to delete the selected transports?","delete":"Delete transport","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any transports.","empty-with-filter":"No transport matches the selected filtering criteria.","details":{"title":"Details","basic":{"title":"Basic info","persistent":"Persistent:","id":"ID:","local-pk":"Local public key:","remote-pk":"Remote public key:","type":"Type:"},"data":{"title":"Data transmission","uploaded":"Uploaded data:","downloaded":"Downloaded data:"}},"dialog":{"remote-key":"Remote public key","label":"Identification name (optional)","transport-type":"Transport type","make-persistent":"Make persistent","persistent-tooltip":"Persistent transports are created automatically when the visor is turned on and automatically recreated in case of disconnection.","only-persistent-created":"The persistent transport was created, but it may have not been activated.","success":"Transport created.","success-without-label":"The transport was created, but it was not possible to save the label.","errors":{"remote-key-length-error":"The remote public key must be 66 characters long.","remote-key-chars-error":"The remote public key must only contain hexadecimal characters.","transport-type-error":"The transport type is required."}},"filter-dialog":{"persistent":"The transport must be","id":"The id must contain","remote-node":"The remote key must contain","persistent-options":{"any":"Any","persistent":"Persistent","non-persistent":"Non-persistent"}}},"routes":{"title":"Routes","info":"Paths used to reach the remote visors to which transports have been established. Routes are automatically generated as needed.","list-title":"Route list","key":"Key","type":"Type","source":"Source","destination":"Destination","local-port":"Local port","remote-port":"Remote port","remote-pk":"Remote","next-rid":"Next RID","next-tp":"Next TP","keep-alive":"Keep-alive","delete-confirmation":"Are you sure you want to delete the route?","delete-selected-confirmation":"Are you sure you want to delete the selected routes?","delete":"Delete route","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any routes.","empty-with-filter":"No route matches the selected filtering criteria.","details":{"title":"Details","basic":{"title":"Basic info","key":"Key:","rule":"Rule:"},"summary":{"title":"Rule summary","keep-alive":"Keep alive:","type":"Rule type:","key-route-id":"Key route ID:"},"specific-fields-titles":{"app":"App fields","forward":"Forward fields","intermediary-forward":"Intermediary forward fields"},"specific-fields":{"route-id":"Next route ID:","transport-id":"Next transport ID:","destination-pk":"Destination public key:","source-pk":"Source public key:","destination-port":"Destination port:","source-port":"Source port:"}},"filter-dialog":{"key":"The key must contain","type":"The type must be","source":"The source must contain","destination":"The destination must contain","any-type-option":"Any"}},"copy":{"tooltip":"Click to copy","tooltip-with-text":"{{ text }} (Click to copy)","copied":"Copied!"},"selection":{"select-all":"Select all","unselect-all":"Unselect all","delete-all":"Delete all selected elements","start-all":"Start all selected apps","stop-all":"Stop all selected apps","enable-autostart-all":"Enable autostart for all selected apps","disable-autostart-all":"Disable autostart for all selected apps"},"refresh-button":{"seconds":"Updated a few seconds ago","minute":"Updated 1 minute ago","minutes":"Updated {{ time }} minutes ago","hour":"Updated 1 hour ago","hours":"Updated {{ time }} hours ago","day":"Updated 1 day ago","days":"Updated {{ time }} days ago","week":"Updated 1 week ago","weeks":"Updated {{ time }} weeks ago","error-tooltip":"There was an error updating the data. Retrying automatically every {{ time }} seconds..."},"view-all-link":{"label":"View all {{ number }} elements"},"paginator":{"first":"First","last":"Last","total":"Total: {{ number }} pages","select-page-title":"Select page"},"confirmation":{"header-text":"Confirmation","confirm-button":"Yes","cancel-button":"No","close":"Close","error-header-text":"Error","done-header-text":"Done"},"language":{"title":"Select language"},"tabs-window":{"title":"Change tab"},"vpn":{"title":"VPN Control Panel","start":"Start","servers":"Servers","settings":"Settings","unnamed":"Unnamed","starting-blocked-server-error":"Unable to connect to the selected server because it has been added to the blocked servers list.","unexpedted-error":"An unexpected error occurred and the operation could not be completed.","remote-access-title":"It appears that you are accessing the system remotely","remote-access-text":"This application only allows you to manage the VPN protection of the device on which it was installed. Changes made with it will not affect remote devices like the one you seem to be using. Also, the displayed IP data may be incorrect.","server-change":{"busy-error":"The system is busy. Please wait.","backend-error":"It was not possible to change the server. Please make sure the public key is correct and the VPN app is running.","already-selected-warning":"The selected server is already being used.","change-server-while-connected-confirmation":"The VPN protection will be interrupted while changing the server and some data may be transmitted unprotected during the process. Do you want to continue?","start-same-server-confirmation":"You had already selected that server. Do you want to connect to it?"},"error-page":{"text":"The VPN client app is not available.","more-info":"It was not possible to connect to the VPN client app. This may be due to a configuration error, an unexpected problem with the visor or because you used an invalid public key in the URL.","text-pk":"Invalid configuration.","more-info-pk":"The application cannot be started because you have not specified the visor public key.","text-storage":"Error saving data.","more-info-storage":"There has been a conflict when trying to save the data and the application has been closed to prevent errors. This could happen if you open the application in more than one tab or window.","text-pk-change":"Invalid operation.","more-info-pk-change":"Please use this application to manage only one VPN client."},"connection-info":{"state-title":"Your connection is currently:","state-connecting":"Connecting","state-connecting-info":"The VPN protection is being activated.","state-connected":"Connected","state-connected-info":"The VPN protection is on.","state-disconnecting":"Disconnecting","state-disconnecting-info":"The VPN protection is being deactivated.","state-reconnecting":"Reconnecting","state-reconnecting-info":"The VPN protection is being restored.","state-disconnected":"Disconnected","state-disconnected-info":"The VPN protection is off.","state-info":"Current connection status.","latency-info":"Current latency.","upload-info":"Upload speed.","download-info":"Download speed."},"connection-error":{"text":"Connection error","info":"Problem connecting with the vpn app. Some data being displayed could be outdated."},"status-page":{"start-title":"Start VPN","no-server":"No server selected!","disconnect":"Disconnect","last-error":"Last error:","unknown-error":"Unknown error.","disconnect-confirmation":"Are you sure you want to stop the VPN protection?","upload-info":"Uploaded data stats.","download-info":"Downloaded data stats.","latency-info":"Latency stats.","total-data-label":"total","problem-connecting-error":"It was not possible to connect to the server. The server may be invalid or temporarily down.","problem-starting-error":"It was not possible to start the VPN. Please make sure the base VPN client app is running.","problem-stopping-error":"It was not possible to stop the VPN. Please make sure the base VPN client app is running.","generic-problem-error":"It was not possible to perform the operation. Please make sure the base VPN client app is running.","select-server-warning":"Please select a server first.","data":{"ip":"IP address:","ip-problem-info":"There was a problem trying to get the IP. Please verify it using an external service.","ip-country-problem-info":"There was a problem trying to get the country. Please verify it using an external service.","ip-refresh-info":"Refresh","ip-refresh-time-warning":"Please wait {{ seconds }} second(s) before refreshing the data.","ip-refresh-loading-warning":"Please wait for the previous operation to finish.","country":"Country:","server":"Server:","server-note":"Server note:","original-server-note":"Original server note:","local-pk":"Local visor public key:","remote-pk":"Remote visor public key:","unavailable":"Unavailable"}},"server-options":{"tooltip":"Options","connect-without-password":"Connect without password","connect-without-password-confirmation":"The connection will be made without the password. Are you sure you want to continue?","connect-using-password":"Connect using a password","connect-using-another-password":"Connect using another password","edit-name":"Custom name","edit-label":"Custom note","make-favorite":"Make favorite","make-favorite-confirmation":"Are you sure you want to mark this server as favorite? It will be removed from the blocked list.","make-favorite-done":"Added to the favorites list.","remove-from-favorites":"Remove from favorites","remove-from-favorites-done":"Removed from the favorites list.","block":"Block server","block-done":"Added to the blocked list.","block-confirmation":"Are you sure you want to block this server? It will be removed from the favorites list.","block-selected-confirmation":"Are you sure you want to block the currently selected server? All connections will be closed.","block-selected-favorite-confirmation":"Are you sure you want to block the currently selected server? All connections will be closed and it will be removed from the favorites list.","unblock":"Unblock server","unblock-done":"Removed from the blocked list.","remove-from-history":"Remove from history","remove-from-history-confirmation":"Are you sure you want to remove this server from the history?","remove-from-history-done":"Removed from history.","edit-value":{"name-title":"Custom Name","note-title":"Custom Note","name-label":"Custom name","note-label":"Custom note","apply-button":"Apply","changes-made-confirmation":"The change has been made."}},"server-conditions":{"selected-info":"This is the currently selected server.","blocked-info":"This server is in the blocked list.","favorite-info":"This server is in the favorites list.","history-info":"This server is in the server history.","has-password-info":"A password was set for connecting with this server."},"server-list":{"date-small-table-label":"Date","date-info":"Last time you used this server.","country-small-table-label":"Country","country-info":"Country where the server is located.","name-small-table-label":"Name","location-small-table-label":"Location","public-key-small-table-label":"Pk","public-key-info":"Server public key.","congestion-rating-small-table-label":"Congestion rating","congestion-rating-info":"Rating of the server related to how congested it tends to be.","congestion-small-table-label":"Congestion","congestion-info":"Current server congestion.","latency-rating-small-table-label":"Latency rating","latency-rating-info":"Rating of the server related to how much latency it tends to have.","latency-small-table-label":"Latency","latency-info":"Current server latency.","hops-small-table-label":"Hops","hops-info":"How many hops are needed for connecting with the server.","note-small-table-label":"Note","note-info":"Note about the server.","gold-rating-info":"Gold","silver-rating-info":"Silver","bronze-rating-info":"Bronze","notes-info":"Custom note: {{ custom }} - Original note: {{ original }}","empty-discovery":"Currently there are no VPN servers to show. Please try again later.","empty-history":"There is no history to show.","empty-favorites":"There are no favorite servers to show.","empty-blocked":"There are no blocked servers to show.","empty-with-filter":"No VPN server matches the selected filtering criteria.","add-manually-info":"Add server manually.","current-filters":"Current filters (press to remove)","none":"None","unknown":"Unknown","tabs":{"public":"Public","history":"History","favorites":"Favorites","blocked":"Blocked"},"add-server-dialog":{"title":"Enter manually","pk-label":"Server public key","password-label":"Server password (if any)","name-label":"Server name (optional)","note-label":"Personal note (optional)","pk-length-error":"The public key must be 66 characters long.","pk-chars-error":"The public key must only contain hexadecimal characters.","use-server-button":"Use server"},"password-dialog":{"title":"Enter Password","password-if-any-label":"Server password (if any)","password-label":"Server password","continue-button":"Continue"},"filter-dialog":{"country":"The country must be","name":"The name must contain","location":"The location must contain","public-key":"The public key must contain","congestion-rating":"The congestion rating must be","latency-rating":"The latency rating must be","rating-options":{"any":"Any","gold":"Gold","silver":"Silver","bronze":"Bronze"},"country-options":{"any":"Any"}}},"settings-page":{"setting-small-table-label":"Setting","value-small-table-label":"Value","killswitch":"Killswitch","killswitch-info":"When active, all network connections will be disabled if the app is running but the VPN protection is interrupted (for temporary errors or any other problem). This avoids data leaks.","get-ip":"Get IP info","get-ip-info":"When active, the application will use external services to obtain information about the current IP.","data-units":"Data units","data-units-info":"Allows to select the units that will be used to display the data transmission statistics.","minimum-hops":"Minimum hops","minimum-hops-info":"Allows to set the minimum number of hops the connections must pass through other Skywire visors before reaching the final destination.","dns":"Custom DNS server","dns-info":"Allows to use a custom DNS server, which could improve privacy and prevent sites from being blocked by the default DNS server of your ISP.","setting-none":"None","setting-on":"On","setting-off":"Off","working-warning":"The system is busy. Please wait for the previous operation to finish.","change-while-connected-confirmation":"The VPN protection will be interrupted while changing the setting. Do you want to continue?","data-units-modal":{"title":"Data Units","only-bits":"Bits for all stats","only-bytes":"Bytes for all stats","bits-speed-and-bytes-volume":"Bits for speed and bytes for volume (default)"}},"dns-config":{"title":"Custom DNS server","ip":"Custom DNS server IP address","save-config-button":"Save configuration","done":"Changes saved."}}}')}}]); \ No newline at end of file diff --git a/static/skywire-manager-src/dist/assets/i18n/en.json b/static/skywire-manager-src/dist/assets/i18n/en.json index ea49412e4f..528dcd9871 100644 --- a/static/skywire-manager-src/dist/assets/i18n/en.json +++ b/static/skywire-manager-src/dist/assets/i18n/en.json @@ -22,7 +22,8 @@ "unknown": "Unknown", "close": "Close", "window-size-error": "The window is too narrow for the content.", - "data-update-problems": "Problem updating the data." + "data-update-problems": "Problem updating the data.", + "visors": "visors" }, "labeled-element": { @@ -221,7 +222,10 @@ }, "config": { "view-button": "View Config", - "title": "Runtime Configuration" + "title": "Runtime Configuration", + "edit": "Edit", + "save": "Save", + "restart-hint": "Visor must be restarted for changes to take effect." }, "tpviz": { "title": "Network Visualizer", @@ -234,9 +238,14 @@ "apps": "Apps", "routing": "Routing", "transports": "Transports", + "bandwidth": "Bandwidth", + "uptime": "Uptime", "rewards": "Rewards", "skynet": "Skynet", + "web-proxy": "Web Proxy", "resources": "Resources", + "terminal": "Terminal", + "logs": "Logs", "chat": "Skychat", "dmsg": "DMSG" }, @@ -271,6 +280,7 @@ "network-title": "Network", "resources-title": "Resources", "transports-title": "Transports", + "uptime-title": "Uptime", "dmsg-settings-title": "DMSG settings", "reward-address": "Reward Address", "reward-total": "Week Total", @@ -340,6 +350,13 @@ "view": "View", "view-compact": "Compact", "view-tree": "Tree", + "edges": "Edges", + "edges-show": "Show", + "edges-hide": "Hide", + "offline": "Offline", + "offline-show": "Show", + "offline-hide": "Hide", + "offline-count-tooltip": "Number of this visor's transports that TPD currently considers offline", "refresh": "Refresh", "tp-id": "Transport ID", "type": "Type", @@ -391,6 +408,91 @@ "rsn-error": "Unreachable" }, + "terminal": { + "help": "Live shell on the visor (dmsgpty). Ctrl+D or type \"exit\" to close.", + "open-fullscreen": "Open in new window" + }, + + "web-proxy": { + "title": "Resolving Proxy", + "help": "Browse .skynet and .dmsg domains. Optionally route all other traffic through an upstream SOCKS5 proxy (e.g. skysocks).", + "loading": "Reading proxy state…", + "resolver": "Resolver", + "running": "Running", + "socks-addr": "SOCKS", + "upstream": "Upstream", + "enable": "Enable resolving proxy (.skynet + .dmsg)", + "upstream-label": "Upstream SOCKS5 (e.g. 127.0.0.1:1080)", + "set": "Set", + "refresh": "Refresh" + }, + + "logs": { + "loading": "Loading runtime logs…", + "empty": "No log entries match the current filter.", + "filter": "Filter", + "pause": "Pause", + "resume": "Resume", + "open-raw": "Open raw logs", + "view-rest": "View all {{number}} entries in raw format >", + "dropped": "Skipped {{count}} older entries that aged out of the visor's runtime buffer." + }, + + "bandwidth": { + "loading": "Reading local transport stats…", + "empty": "No transport bandwidth recorded yet.", + "transports": "transports", + "total": "total", + "last-updated": "fetched", + "window": "Window", + "window-now": "Now", + "refresh": "Refresh", + "current-snapshot": "Current snapshot", + "daily-history": "Daily history", + "no-history": "No daily rollups recorded yet.", + "date": "Date", + "sent": "Sent", + "recv": "Recv", + "samples": "Samples", + "latency-current": "Latency (min/avg/max)", + "latency-min-avg-max": "Lat min/avg/max", + "sampled-at": "Sampled at" + }, + + "uptime": { + "loading": "Reading local uptime bitmaps…", + "empty": "No uptime data recorded yet.", + "tiers": "tiers", + "today": "today", + "window-avg": "Window avg", + "last-updated": "fetched", + "window": "Window", + "window-now": "Today", + "refresh": "Refresh", + "tier-process": "Process", + "tier-process-info": "Visor process up — local sampler ticked.", + "tier-dmsg": "DMSG", + "tier-dmsg-info": "DMSG client has at least one server session.", + "tier-skynet": "Skynet", + "tier-skynet-info": "≥ 2 live transports — visor is routable through Skynet (matches TPD's 'skynet online' criterion).", + "online": "online", + "offline": "offline", + "legend": "Legend", + "legend-down": "down", + "legend-up": "up", + "legend-future": "future", + "loading-fleet": "Reading TPD uptime feed…", + "fleet-empty": "No connected visors reporting uptime.", + "fleet-filter": "Filter", + "fleet-filter-connected": "Only connected to this hypervisor", + "fleet-filter-all": "All visible visors", + "fleet-visor": "Visor", + "fleet-process": "Process %", + "fleet-dmsg": "DMSG %", + "fleet-skynet": "Skynet %", + "today-pct": "Today %" + }, + "skychat": { "title": "Skychat", "connected": "Connected", @@ -673,8 +775,31 @@ }, "skychat-settings": { "title": "Skychat Settings", + "listener-section": "Listener", "localhost-only": "Allow access from the local machine only", - "port": "Port", + "port": "Port (--port routing)", + "skynet": "Listen on Skynet (--skynet)", + "skynet-info": "Accept connections via the Skynet network. Disable to be reachable only on DMSG.", + "dmsg": "Listen on DMSG (--dmsg)", + "dmsg-info": "Accept connections via the DMSG network. Disable to be reachable only on Skynet.", + "persistence-section": "Persistence", + "persistence-help": "When enabled, skychat stores message history in a local BoltDB. All limits below have safe defaults; leave a field empty to use the binary's default.", + "persist-enable": "Enable persistence (--persist)", + "persist-max-size": "Max message size, bytes (--persist-max-size)", + "persist-max-size-hint": "Default 4096", + "persist-per-peer-rate": "Per-peer rate, msgs/min (--persist-per-peer-rate)", + "persist-per-peer-rate-hint": "Default 20", + "persist-per-peer-cap": "Per-peer cap, msgs (--persist-per-peer-cap)", + "persist-per-peer-cap-hint": "FIFO eviction; default 500", + "persist-total-cap": "Total cap, MB (--persist-total-cap)", + "persist-total-cap-hint": "Default 10", + "persist-ttl": "TTL, days (--persist-ttl)", + "persist-ttl-hint": "0 disables sweep; default 30", + "persist-seed": "SSE seed count (--persist-seed)", + "persist-seed-hint": "Recent messages sent to new SSE clients; 0 disables. Default 50", + "pairing-section": "Pairing", + "pair-enable": "Enable CXO pair feeds (--pair-enable)", + "pair-enable-info": "Per-partner CXO pair feeds + handshake (HTTP /pair endpoints).", "save": "Save", "changes-made": "The changes have been made.", "port-error": "Must be a valid number between 1025 and 65536.", @@ -738,6 +863,15 @@ "settings-changed-alert": " The changes have not been saved yet.", "save-settings": "Save settings", + "addr": "Listener address (--addr)", + "addr-hint": "Where the SOCKS5 server listens locally (default: 127.0.0.1:1080)", + "http": "HTTP proxy address (--http)", + "http-hint": "When set, also expose an HTTP-CONNECT proxy on this address", + "tries": "Connection retries (--tries)", + "tries-hint": "Number of attempts before giving up (default: 3)", + "retry-time": "Retry delay seconds (--retry-time)", + "retry-time-hint": "Wait between retry attempts (default: 5)", + "change-note-dialog": { "title": "Change Note", "note": "Note" diff --git a/static/skywire-manager-src/dist/assets/scss/_forms.scss b/static/skywire-manager-src/dist/assets/scss/_forms.scss index a3466753e7..2e895bce6c 100644 --- a/static/skywire-manager-src/dist/assets/scss/_forms.scss +++ b/static/skywire-manager-src/dist/assets/scss/_forms.scss @@ -40,3 +40,110 @@ mat-form-field { pointer-events: none !important; opacity: 0.5 !important; } + +// ---- Inline edit / info-line layout helpers --------------------- +// These were originally scoped to the Info-tab component but are +// reused by the Rewards, Routing, and Transports tabs after that +// page-restructure split. Lift them into the global form helpers +// so all four tabs lay out consistently. + +.info-line { + word-break: break-word; + margin-top: 7px; + display: flex; + align-items: baseline; + gap: 6px; + // Wrap on narrow widths so the title + value + edit button don't + // collide when the value is long (e.g. a 66-char PK + edit btn). + flex-wrap: wrap; + + .text-with-right-margin { margin-right: 5px; } + .text-with-small-right-margin { margin-right: 3px; } + + .link-icon { + font-size: 20px; + line-height: 1; + color: white !important; + cursor: pointer; + } + + .edit-icon { display: inline !important; } + + mat-icon { + position: relative; + top: 3px; + user-select: none; + } + + i { margin-left: 7px; } + + .title { + opacity: 0.7; + white-space: nowrap; + min-width: 120px; + font-size: 0.9em; + } +} + +.toggle-line { + display: flex; + align-items: center; + gap: 8px; + flex-wrap: wrap; + + .info-tip { + opacity: 0.5; + font-size: 16px; + cursor: help; + } +} + +.collapsible-link { + cursor: pointer; + user-select: none; + display: flex; + align-items: center; + gap: 4px; + margin-top: 6px; + opacity: 0.85; + &:hover { opacity: 1; } +} + +.collapsible-header { + display: inline-flex !important; + align-items: center; + gap: 6px; +} + +.inline-edit-btn { + margin-left: 4px; + height: 24px; + width: 24px; + line-height: 24px; + opacity: 0.7; + &:hover { opacity: 1; } +} + +.inline-form { + display: flex; + flex-direction: column; + gap: 8px; + margin-top: 6px; + margin-bottom: 6px; + + .inline-form-field { width: 100%; } + .inline-form-field-sm { width: 120px; } + .inline-form-actions { + display: flex; + gap: 8px; + flex-wrap: wrap; + } +} + +.section-title { + font-size: 0.95em; + font-weight: 500; + color: rgba(255, 255, 255, 0.92); + display: block; + margin-bottom: 4px; +} diff --git a/static/skywire-manager-src/dist/index.html b/static/skywire-manager-src/dist/index.html index 0f7e3924ac..7a31d503b6 100644 --- a/static/skywire-manager-src/dist/index.html +++ b/static/skywire-manager-src/dist/index.html @@ -7,9 +7,9 @@ - +
- + diff --git a/static/skywire-manager-src/dist/main.379613b3fb1f64af.js b/static/skywire-manager-src/dist/main.379613b3fb1f64af.js new file mode 100644 index 0000000000..a37297843c --- /dev/null +++ b/static/skywire-manager-src/dist/main.379613b3fb1f64af.js @@ -0,0 +1 @@ +(self.webpackChunkskywire_manager=self.webpackChunkskywire_manager||[]).push([[792],{29(Fu,ty,Lc){"use strict";let Rn=null,us=!1,Ka=1;const Fn=Symbol("SIGNAL");function Pe(t){const n=Rn;return Rn=t,n}const Vc={version:0,lastCleanEpoch:0,dirty:!1,producers:void 0,producersTail:void 0,consumers:void 0,consumersTail:void 0,recomputing:!1,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:"unknown",producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Nu(t){if(us)throw new Error("");if(null===Rn)return;Rn.consumerOnSignalRead(t);const n=Rn.producersTail;if(void 0!==n&&n.producer===t)return;let e;const i=Rn.recomputing;if(i&&(e=void 0!==n?n.nextProducer:Rn.producers,void 0!==e&&e.producer===t))return Rn.producersTail=e,void(e.lastReadVersion=t.version);const o=t.consumersTail;if(void 0!==o&&o.consumer===Rn&&(!i||function OH(t,n){const e=n.producersTail;if(void 0!==e){let i=n.producers;do{if(i===t)return!0;if(i===e)break;i=i.nextProducer}while(void 0!==i)}return!1}(o,Rn)))return;const r=Uc(Rn),s={producer:t,consumer:Rn,nextProducer:e,prevConsumer:o,lastReadVersion:t.version,nextConsumer:void 0};Rn.producersTail=s,void 0!==n?n.nextProducer=s:Rn.producers=s,r&&RM(t,s)}function Lu(t){if((!Uc(t)||t.dirty)&&(t.dirty||t.lastCleanEpoch!==Ka)){if(!t.producerMustRecompute(t)&&!Lp(t))return void Np(t);t.producerRecomputeValue(t),Np(t)}}function OM(t){if(void 0===t.consumers)return;const n=us;us=!0;try{for(let e=t.consumers;void 0!==e;e=e.nextConsumer){const i=e.consumer;i.dirty||EH(i)}}finally{us=n}}function AM(){return!1!==Rn?.consumerAllowSignalWrites}function EH(t){t.dirty=!0,OM(t),t.consumerMarkedDirty?.(t)}function Np(t){t.dirty=!1,t.lastCleanEpoch=Ka}function Hc(t){return t&&function PH(t){t.producersTail=void 0,t.recomputing=!0}(t),Pe(t)}function Bu(t,n){Pe(n),t&&function IH(t){t.recomputing=!1;const n=t.producersTail;let e=void 0!==n?n.nextProducer:t.producers;if(void 0!==e){if(Uc(t))do{e=iy(e)}while(void 0!==e);void 0!==n?n.nextProducer=void 0:t.producers=void 0}}(t)}function Lp(t){for(let n=t.producers;void 0!==n;n=n.nextProducer){const e=n.producer,i=n.lastReadVersion;if(i!==e.version||(Lu(e),i!==e.version))return!0}return!1}function Vu(t){if(Uc(t)){let n=t.producers;for(;void 0!==n;)n=iy(n)}t.producers=void 0,t.producersTail=void 0,t.consumers=void 0,t.consumersTail=void 0}function RM(t,n){const e=t.consumersTail,i=Uc(t);if(void 0!==e?(n.nextConsumer=e.nextConsumer,e.nextConsumer=n):(n.nextConsumer=void 0,t.consumers=n),n.prevConsumer=e,t.consumersTail=n,!i)for(let o=t.producers;void 0!==o;o=o.nextProducer)RM(o.producer,o)}function iy(t){const n=t.producer,e=t.nextProducer,i=t.nextConsumer,o=t.prevConsumer;if(t.nextConsumer=void 0,t.prevConsumer=void 0,void 0!==i?i.prevConsumer=o:n.consumersTail=o,void 0!==o)o.nextConsumer=i;else if(n.consumers=i,!Uc(n)){let r=n.producers;for(;void 0!==r;)r=iy(r)}return e}function Uc(t){return t.consumerIsAlwaysLive||void 0!==t.consumers}function ry(t,n){return Object.is(t,n)}function FM(t,n){const e=Object.create(AH);e.computation=t,void 0!==n&&(e.equal=n);const i=()=>{if(Lu(e),Nu(e),e.value===hs)throw e.error;return e.value};return i[Fn]=e,i}const Ya=Symbol("UNSET"),zc=Symbol("COMPUTING"),hs=Symbol("ERRORED"),AH={...Vc,value:Ya,dirty:!0,error:null,equal:ry,kind:"computed",producerMustRecompute:t=>t.value===Ya||t.value===zc,producerRecomputeValue(t){if(t.value===zc)throw new Error("");const n=t.value;t.value=zc;const e=Hc(t);let i,o=!1;try{i=t.computation(),Pe(null),o=n!==Ya&&n!==hs&&i!==hs&&t.equal(n,i)}catch(r){i=hs,t.error=r}finally{Bu(t,e)}o?t.value=n:(t.value=i,t.version++)}};let NM=function RH(){throw new Error};function LM(t){NM(t)}function Vp(t,n){AM()||LM(t),t.equal(t.value,n)||(t.value=n,function BH(t){t.version++,function TH(){Ka++}(),OM(t)}(t))}function BM(t,n){AM()||LM(t),Vp(t,n(t.value))}const sy={...Vc,equal:ry,value:void 0,kind:"signal"},VH={...Vc,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,kind:"effect"};function fn(t){return"function"==typeof t}function ay(t){const e=t(i=>{Error.call(i),i.stack=(new Error).stack});return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}const ly=ay(t=>function(e){t(this),this.message=e?`${e.length} errors occurred during unsubscription:\n${e.map((i,o)=>`${o+1}) ${i.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=e});function Hp(t,n){if(t){const e=t.indexOf(n);0<=e&&t.splice(e,1)}}class gt{constructor(n){this.initialTeardown=n,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let n;if(!this.closed){this.closed=!0;const{_parentage:e}=this;if(e)if(this._parentage=null,Array.isArray(e))for(const r of e)r.remove(this);else e.remove(this);const{initialTeardown:i}=this;if(fn(i))try{i()}catch(r){n=r instanceof ly?r.errors:[r]}const{_finalizers:o}=this;if(o){this._finalizers=null;for(const r of o)try{UM(r)}catch(s){n=n??[],s instanceof ly?n=[...n,...s.errors]:n.push(s)}}if(n)throw new ly(n)}}add(n){var e;if(n&&n!==this)if(this.closed)UM(n);else{if(n instanceof gt){if(n.closed||n._hasParent(this))return;n._addParent(this)}(this._finalizers=null!==(e=this._finalizers)&&void 0!==e?e:[]).push(n)}}_hasParent(n){const{_parentage:e}=this;return e===n||Array.isArray(e)&&e.includes(n)}_addParent(n){const{_parentage:e}=this;this._parentage=Array.isArray(e)?(e.push(n),e):e?[e,n]:n}_removeParent(n){const{_parentage:e}=this;e===n?this._parentage=null:Array.isArray(e)&&Hp(e,n)}remove(n){const{_finalizers:e}=this;e&&Hp(e,n),n instanceof gt&&n._removeParent(this)}}gt.EMPTY=(()=>{const t=new gt;return t.closed=!0,t})();const VM=gt.EMPTY;function HM(t){return t instanceof gt||t&&"closed"in t&&fn(t.remove)&&fn(t.add)&&fn(t.unsubscribe)}function UM(t){fn(t)?t():t.unsubscribe()}const Xa={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Up={setTimeout(t,n,...e){const{delegate:i}=Up;return i?.setTimeout?i.setTimeout(t,n,...e):setTimeout(t,n,...e)},clearTimeout(t){const{delegate:n}=Up;return(n?.clearTimeout||clearTimeout)(t)},delegate:void 0};function zM(t){Up.setTimeout(()=>{const{onUnhandledError:n}=Xa;if(!n)throw t;n(t)})}function zp(){}const UH=cy("C",void 0,void 0);function cy(t,n,e){return{kind:t,value:n,error:e}}let Za=null;function jp(t){if(Xa.useDeprecatedSynchronousErrorHandling){const n=!Za;if(n&&(Za={errorThrown:!1,error:null}),t(),n){const{errorThrown:e,error:i}=Za;if(Za=null,e)throw i}}else t()}class $p extends gt{constructor(n){super(),this.isStopped=!1,n?(this.destination=n,HM(n)&&n.add(this)):this.destination=KH}static create(n,e,i){return new Hu(n,e,i)}next(n){this.isStopped?uy(function jH(t){return cy("N",t,void 0)}(n),this):this._next(n)}error(n){this.isStopped?uy(function zH(t){return cy("E",void 0,t)}(n),this):(this.isStopped=!0,this._error(n))}complete(){this.isStopped?uy(UH,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(n){this.destination.next(n)}_error(n){try{this.destination.error(n)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const WH=Function.prototype.bind;function dy(t,n){return WH.call(t,n)}class GH{constructor(n){this.partialObserver=n}next(n){const{partialObserver:e}=this;if(e.next)try{e.next(n)}catch(i){Wp(i)}}error(n){const{partialObserver:e}=this;if(e.error)try{e.error(n)}catch(i){Wp(i)}else Wp(n)}complete(){const{partialObserver:n}=this;if(n.complete)try{n.complete()}catch(e){Wp(e)}}}class Hu extends $p{constructor(n,e,i){let o;if(super(),fn(n)||!n)o={next:n??void 0,error:e??void 0,complete:i??void 0};else{let r;this&&Xa.useDeprecatedNextContext?(r=Object.create(n),r.unsubscribe=()=>this.unsubscribe(),o={next:n.next&&dy(n.next,r),error:n.error&&dy(n.error,r),complete:n.complete&&dy(n.complete,r)}):o=n}this.destination=new GH(o)}}function Wp(t){Xa.useDeprecatedSynchronousErrorHandling?function $H(t){Xa.useDeprecatedSynchronousErrorHandling&&Za&&(Za.errorThrown=!0,Za.error=t)}(t):zM(t)}function uy(t,n){const{onStoppedNotification:e}=Xa;e&&Up.setTimeout(()=>e(t,n))}const KH={closed:!0,next:zp,error:function qH(t){throw t},complete:zp},hy="function"==typeof Symbol&&Symbol.observable||"@@observable";function Qa(t){return t}function jM(t){return 0===t.length?Qa:1===t.length?t[0]:function(e){return t.reduce((i,o)=>o(i),e)}}let zt=(()=>{class t{constructor(e){e&&(this._subscribe=e)}lift(e){const i=new t;return i.source=this,i.operator=e,i}subscribe(e,i,o){const r=function ZH(t){return t&&t instanceof $p||function XH(t){return t&&fn(t.next)&&fn(t.error)&&fn(t.complete)}(t)&&HM(t)}(e)?e:new Hu(e,i,o);return jp(()=>{const{operator:s,source:a}=this;r.add(s?s.call(r,a):a?this._subscribe(r):this._trySubscribe(r))}),r}_trySubscribe(e){try{return this._subscribe(e)}catch(i){e.error(i)}}forEach(e,i){return new(i=$M(i))((o,r)=>{const s=new Hu({next:a=>{try{e(a)}catch(l){r(l),s.unsubscribe()}},error:r,complete:o});this.subscribe(s)})}_subscribe(e){var i;return null===(i=this.source)||void 0===i?void 0:i.subscribe(e)}[hy](){return this}pipe(...e){return jM(e)(this)}toPromise(e){return new(e=$M(e))((i,o)=>{let r;this.subscribe(s=>r=s,s=>o(s),()=>i(r))})}}return t.create=n=>new t(n),t})();function $M(t){var n;return null!==(n=t??Xa.Promise)&&void 0!==n?n:Promise}const QH=ay(t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let py,be=(()=>{class t extends zt{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(e){const i=new fy(this,this);return i.operator=e,i}_throwIfClosed(){if(this.closed)throw new QH}next(e){jp(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(e)}})}error(e){jp(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=e;const{observers:i}=this;for(;i.length;)i.shift().error(e)}})}complete(){jp(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:e}=this;for(;e.length;)e.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0}_trySubscribe(e){return this._throwIfClosed(),super._trySubscribe(e)}_subscribe(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)}_innerSubscribe(e){const{hasError:i,isStopped:o,observers:r}=this;return i||o?VM:(this.currentObservers=null,r.push(e),new gt(()=>{this.currentObservers=null,Hp(r,e)}))}_checkFinalizedStatuses(e){const{hasError:i,thrownError:o,isStopped:r}=this;i?e.error(o):r&&e.complete()}asObservable(){const e=new zt;return e.source=this,e}}return t.create=(n,e)=>new fy(n,e),t})();class fy extends be{constructor(n,e){super(),this.destination=n,this.source=e}next(n){var e,i;null===(i=null===(e=this.destination)||void 0===e?void 0:e.next)||void 0===i||i.call(e,n)}error(n){var e,i;null===(i=null===(e=this.destination)||void 0===e?void 0:e.error)||void 0===i||i.call(e,n)}complete(){var n,e;null===(e=null===(n=this.destination)||void 0===n?void 0:n.complete)||void 0===e||e.call(n)}_subscribe(n){var e,i;return null!==(i=null===(e=this.source)||void 0===e?void 0:e.subscribe(n))&&void 0!==i?i:VM}}class Ei extends be{constructor(n){super(),this._value=n}get value(){return this.getValue()}_subscribe(n){const e=super._subscribe(n);return!e.closed&&n.next(this._value),e}getValue(){const{hasError:n,thrownError:e,_value:i}=this;if(n)throw e;return this._throwIfClosed(),i}next(n){super.next(this._value=n)}}function my(){return py}function Xs(t){const n=py;return py=t,n}const JH=Symbol("NotFound");function gy(t){return t===JH||"\u0275NotFound"===t?.name}Error;const qM="https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss";class X extends Error{code;constructor(n,e){super(po(n,e)),this.code=n}}function po(t,n){return`${function tU(t){return`NG0${Math.abs(t)}`}(t)}${n?": "+n:""}`}const Nn=globalThis;function Ot(t){for(let n in t)if(t[n]===Ot)return n;throw Error("")}function nU(t,n){for(const e in n)n.hasOwnProperty(e)&&!t.hasOwnProperty(e)&&(t[e]=n[e])}function Zs(t){if("string"==typeof t)return t;if(Array.isArray(t))return`[${t.map(Zs).join(", ")}]`;if(null==t)return""+t;const n=t.overriddenName||t.name;if(n)return`${n}`;const e=t.toString();if(null==e)return""+e;const i=e.indexOf("\n");return i>=0?e.slice(0,i):e}function _y(t,n){return t?n?`${t} ${n}`:t:n||""}const iU=Ot({__forward_ref__:Ot});function jt(t){return t.__forward_ref__=jt,t}function Ke(t){return qp(t)?t():t}function qp(t){return"function"==typeof t&&t.hasOwnProperty(iU)&&t.__forward_ref__===jt}function te(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function Je(t){return{providers:t.providers||[],imports:t.imports||[]}}function Kp(t){return function dU(t,n){return t.hasOwnProperty(n)&&t[n]||null}(t,Xp)}function Yp(t){return t&&t.hasOwnProperty(by)?t[by]:null}const Xp=Ot({\u0275prov:Ot}),by=Ot({\u0275inj:Ot});class Z{_desc;ngMetadataName="InjectionToken";\u0275prov;constructor(n,e){this._desc=n,this.\u0275prov=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.\u0275prov=te({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function yy(t){return t&&!!t.\u0275providers}const KM=Ot({\u0275cmp:Ot}),gU=Ot({\u0275dir:Ot}),_U=Ot({\u0275pipe:Ot}),YM=Ot({\u0275mod:Ot}),tl=Ot({\u0275fac:Ot}),Uu=Ot({__NG_ELEMENT_ID__:Ot}),XM=Ot({__NG_ENV_ID__:Ot});function Ar(t){return Qp(t),t[YM]||null}function kt(t){return Qp(t),t[KM]||null}function no(t){return Qp(t),t[gU]||null}function sr(t){return Qp(t),t[_U]||null}function Qp(t,n){if(null==t)throw new X(-919,!1)}function ze(t){return"string"==typeof t?t:null==t?"":String(t)}const wy=Ot({ngErrorCode:Ot}),ZM=Ot({ngErrorMessage:Ot}),zu=Ot({ngTokenPath:Ot});function xy(t,n){return QM("",-200,n)}function ky(t,n){throw new X(-201,!1)}function QM(t,n,e){const i=new X(n,t);return i[wy]=n,i[ZM]=t,e&&(i[zu]=e),i}let Sy;function JM(){return Sy}function mo(t){const n=Sy;return Sy=t,n}function eD(t,n,e){const i=Kp(t);return i&&"root"==i.providedIn?void 0===i.value?i.value=i.factory():i.value:8&e?null:void 0!==n?n:void ky()}const nl={};class xU{injector;constructor(n){this.injector=n}retrieve(n,e){const i=ju(e)||0;try{return this.injector.get(n,8&i?null:nl,i)}catch(o){if(gy(o))return o;throw o}}}function kU(t,n=0){const e=my();if(void 0===e)throw new X(-203,!1);if(null===e)return eD(t,void 0,n);{const i=function SU(t){return{optional:!!(8&t),host:!!(1&t),self:!!(2&t),skipSelf:!!(4&t)}}(n),o=e.retrieve(t,i);if(gy(o)){if(i.optional)return null;throw o}return o}}function ce(t,n=0){return(JM()||kU)(Ke(t),n)}function T(t,n){return ce(t,ju(n))}function ju(t){return typeof t>"u"||"number"==typeof t?t:0|(t.optional&&8)|(t.host&&1)|(t.self&&2)|(t.skipSelf&&4)}function Dy(t){const n=[];for(let e=0;eArray.isArray(e)?Gc(e,n):n(e))}function nD(t,n,e){n>=t.length?t.push(e):t.splice(n,0,e)}function Jp(t,n){return n>=t.length-1?t.pop():t.splice(n,1)[0]}function tm(t,n,e){let i=Wu(t,n);return i>=0?t[1|i]=e:(i=~i,function oD(t,n,e,i){let o=t.length;if(o==n)t.push(e,i);else if(1===o)t.push(i,t[0]),t[0]=e;else{for(o--,t.push(t[o-1],t[o]);o>n;)t[o]=t[o-2],o--;t[n]=e,t[n+1]=i}}(t,i,n,e)),i}function Ty(t,n){const e=Wu(t,n);if(e>=0)return t[1|e]}function Wu(t,n){return function TU(t,n,e){let i=0,o=t.length>>e;for(;o!==i;){const r=i+(o-i>>1),s=t[r<n?o=r:i=r+1}return~(o<{e.push(s)};return Gc(n,s=>{const a=s;im(a,r,[],i)&&(o||=[],o.push(a))}),void 0!==o&&sD(o,r),e}function sD(t,n){for(let e=0;e{n(r,i)})}}function im(t,n,e,i){if(!(t=Ke(t)))return!1;let o=null,r=Yp(t);const s=!r&&kt(t);if(r||s){if(s&&!s.standalone)return!1;o=t}else{const l=t.ngModule;if(r=Yp(l),!r)return!1;o=l}const a=i.has(o);if(s){if(a)return!1;if(i.add(o),s.dependencies){const l="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const d of l)im(d,n,e,i)}}else{if(!r)return!1;{if(null!=r.imports&&!a){let d;i.add(o),Gc(r.imports,f=>{im(f,n,e,i)&&(d||=[],d.push(f))}),void 0!==d&&sD(d,n)}if(!a){const d=il(o)||(()=>new o);n({provide:o,useFactory:d,deps:en},o),n({provide:Ey,useValue:o,multi:!0},o),n({provide:fs,useValue:()=>ce(o),multi:!0},o)}const l=r.providers;if(null!=l&&!a){const d=t;Iy(l,f=>{n(f,d)})}}}return o!==t&&void 0!==t.providers}function Iy(t,n){for(let e of t)yy(e)&&(e=e.\u0275providers),Array.isArray(e)?Iy(e,n):n(e)}const IU=Ot({provide:String,useValue:Ot});function Oy(t){return null!==t&&"object"==typeof t&&IU in t}function ps(t){return"function"==typeof t}const Ay=new Z(""),om={},dD={};let Ry;function rm(){return void 0===Ry&&(Ry=new nm),Ry}class Wn{}class ol extends Wn{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(n,e,i,o){super(),this.parent=e,this.source=i,this.scopes=o,Ny(n,s=>this.processProvider(s)),this.records.set(rD,qc(void 0,this)),o.has("environment")&&this.records.set(Wn,qc(void 0,this));const r=this.records.get(Ay);null!=r&&"string"==typeof r.value&&this.scopes.add(r.value),this.injectorDefTypes=new Set(this.get(Ey,en,{self:!0}))}retrieve(n,e){const i=ju(e)||0;try{return this.get(n,nl,i)}catch(o){if(gy(o))return o;throw o}}destroy(){qu(this),this._destroyed=!0;const n=Pe(null);try{for(const i of this._ngOnDestroyHooks)i.ngOnDestroy();const e=this._onDestroyHooks;this._onDestroyHooks=[];for(const i of e)i()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),Pe(n)}}onDestroy(n){return qu(this),this._onDestroyHooks.push(n),()=>this.removeOnDestroy(n)}runInContext(n){qu(this);const e=Xs(this),i=mo(void 0);try{return n()}finally{Xs(e),mo(i)}}get(n,e=nl,i){if(qu(this),n.hasOwnProperty(XM))return n[XM](this);const o=ju(i),s=Xs(this),a=mo(void 0);try{if(!(4&o)){let d=this.records.get(n);if(void 0===d){const f=function NU(t){return"function"==typeof t||"object"==typeof t&&"InjectionToken"===t.ngMetadataName}(n)&&Kp(n);d=f&&this.injectableDefInScope(f)?qc(Fy(n),om):null,this.records.set(n,d)}if(null!=d)return this.hydrate(n,d,o)}return(2&o?rm():this.parent).get(n,e=8&o&&e===nl?null:e)}catch(l){const d=function CU(t){return t[wy]}(l);throw-200===d||-201===d?new X(d,null):l}finally{mo(a),Xs(s)}}resolveInjectorInitializers(){const n=Pe(null),e=Xs(this),i=mo(void 0);try{const r=this.get(fs,en,{self:!0});for(const s of r)s()}finally{Xs(e),mo(i),Pe(n)}}toString(){return"R3Injector[...]"}processProvider(n){let e=ps(n=Ke(n))?n:Ke(n&&n.provide);const i=function AU(t){return Oy(t)?qc(void 0,t.useValue):qc(uD(t),om)}(n);if(!ps(n)&&!0===n.multi){let o=this.records.get(e);o||(o=qc(void 0,om,!0),o.factory=()=>Dy(o.multi),this.records.set(e,o)),e=n,o.multi.push(n)}this.records.set(e,i)}hydrate(n,e,i){const o=Pe(null);try{if(e.value===dD)throw xy();return e.value===om&&(e.value=dD,e.value=e.factory(void 0,i)),"object"==typeof e.value&&e.value&&function FU(t){return null!==t&&"object"==typeof t&&"function"==typeof t.ngOnDestroy}(e.value)&&this._ngOnDestroyHooks.add(e.value),e.value}finally{Pe(o)}}injectableDefInScope(n){if(!n.providedIn)return!1;const e=Ke(n.providedIn);return"string"==typeof e?"any"===e||this.scopes.has(e):this.injectorDefTypes.has(e)}removeOnDestroy(n){const e=this._onDestroyHooks.indexOf(n);-1!==e&&this._onDestroyHooks.splice(e,1)}}function Fy(t){const n=Kp(t),e=null!==n?n.factory:il(t);if(null!==e)return e;if(t instanceof Z)throw new X(-204,!1);if(t instanceof Function)return function OU(t){if(t.length>0)throw new X(-204,!1);const e=function uU(t){return(t?.[Xp]??null)||null}(t);return null!==e?()=>e.factory(t):()=>new t}(t);throw new X(-204,!1)}function uD(t,n,e){let i;if(ps(t)){const o=Ke(t);return il(o)||Fy(o)}if(Oy(t))i=()=>Ke(t.useValue);else if(function lD(t){return!(!t||!t.useFactory)}(t))i=()=>t.useFactory(...Dy(t.deps||[]));else if(function aD(t){return!(!t||!t.useExisting)}(t))i=(o,r)=>ce(Ke(t.useExisting),void 0!==r&&8&r?8:void 0);else{const o=Ke(t&&(t.useClass||t.provide));if(!function RU(t){return!!t.deps}(t))return il(o)||Fy(o);i=()=>new o(...Dy(t.deps))}return i}function qu(t){if(t.destroyed)throw new X(-205,!1)}function qc(t,n,e=!1){return{factory:t,value:n,multi:e?[]:void 0}}function Ny(t,n){for(const e of t)Array.isArray(e)?Ny(e,n):e&&yy(e)?Ny(e.\u0275providers,n):n(e)}function io(t,n){let e;t instanceof ol?(qu(t),e=t):e=new xU(t);const o=Xs(e),r=mo(void 0);try{return n()}finally{Xs(o),mo(r)}}function Ly(){return void 0!==JM()||null!=my()}function Tn(t){return Array.isArray(t)&&"object"==typeof t[1]}function oo(t){return Array.isArray(t)&&!0===t[1]}function fD(t){return!!(4&t.flags)}function Fr(t){return t.componentOffset>-1}function Qc(t){return!(1&~t.flags)}function lr(t){return!!t.template}function ea(t){return!!(512&t[2])}function bs(t){return!(256&~t[2])}function bi(t){for(;Array.isArray(t);)t=t[0];return t}function Jc(t,n){return bi(n[t])}function Jn(t,n){return bi(n[t.index])}function ed(t,n){return t.data[n]}function cl(t,n){return t[n]}function ro(t,n){const e=n[t];return Tn(e)?e:e[0]}function Uy(t){return!(128&~t[2])}function zi(t,n){return null==n?null:t[n]}function vD(t){t[17]=0}function yD(t){1024&t[2]||(t[2]|=1024,Uy(t)&&td(t))}function cm(t){return!!(9216&t[2]||t[24]?.dirty)}function zy(t){t[10].changeDetectionScheduler?.notify(8),64&t[2]&&(t[2]|=1024),cm(t)&&td(t)}function td(t){t[10].changeDetectionScheduler?.notify(0);let n=vs(t);for(;null!==n&&!(8192&n[2])&&(n[2]|=8192,Uy(n));)n=vs(n)}function dm(t,n){if(bs(t))throw new X(911,!1);null===t[21]&&(t[21]=[]),t[21].push(n)}function vs(t){const n=t[3];return oo(n)?n[3]:n}function wD(t){return t[7]??=[]}function xD(t){return t.cleanup??=[]}const Ve={lFrame:BD(null),bindingsEnabled:!0,skipHydrationRootTNode:null};let Wy=!1;function kD(){Ve.lFrame.elementDepthCount--}function Gy(){return Ve.bindingsEnabled}function SD(){return null!==Ve.skipHydrationRootTNode}function MD(t){return Ve.skipHydrationRootTNode===t}function DD(){Ve.skipHydrationRootTNode=null}function ne(){return Ve.lFrame.lView}function $e(){return Ve.lFrame.tView}function V(t){return Ve.lFrame.contextLView=t,t[8]}function H(t){return Ve.lFrame.contextLView=null,t}function He(){let t=TD();for(;null!==t&&64===t.type;)t=t.parent;return t}function TD(){return Ve.lFrame.currentTNode}function ys(t,n){const e=Ve.lFrame;e.currentTNode=t,e.isParent=n}function ED(){return Ve.lFrame.isParent}function PD(){Ve.lFrame.isParent=!1}function AD(){return Wy}function um(t){const n=Wy;return Wy=t,n}function ji(){const t=Ve.lFrame;let n=t.bindingRootIndex;return-1===n&&(n=t.bindingRootIndex=t.tView.bindingStartIndex),n}function Cs(){return Ve.lFrame.bindingIndex}function go(){return Ve.lFrame.bindingIndex++}function ws(t){const n=Ve.lFrame,e=n.bindingIndex;return n.bindingIndex=n.bindingIndex+t,e}function YU(t,n){const e=Ve.lFrame;e.bindingIndex=e.bindingRootIndex=t,qy(n)}function qy(t){Ve.lFrame.currentDirectiveIndex=t}function Yy(){return Ve.lFrame.currentQueryIndex}function hm(t){Ve.lFrame.currentQueryIndex=t}function ZU(t){const n=t[1];return 2===n.type?n.declTNode:1===n.type?t[5]:null}function ND(t,n,e){if(4&e){let o=n,r=t;for(;!(o=o.parent,null!==o||1&e||(o=ZU(r),null===o||(r=r[14],10&o.type))););if(null===o)return!1;n=o,t=r}const i=Ve.lFrame=LD();return i.currentTNode=n,i.lView=t,!0}function Xy(t){const n=LD(),e=t[1];Ve.lFrame=n,n.currentTNode=e.firstChild,n.lView=t,n.tView=e,n.contextLView=t,n.bindingIndex=e.bindingStartIndex,n.inI18n=!1}function LD(){const t=Ve.lFrame,n=null===t?null:t.child;return null===n?BD(t):n}function BD(t){const n={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=n),n}function VD(){const t=Ve.lFrame;return Ve.lFrame=t.parent,t.currentTNode=null,t.lView=null,t}const HD=VD;function Zy(){const t=VD();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 Pi(){return Ve.lFrame.selectedIndex}function dl(t){Ve.lFrame.selectedIndex=t}function cr(){const t=Ve.lFrame;return ed(t.tView,t.selectedIndex)}function ul(){Ve.lFrame.currentNamespace="svg"}function Qy(){!function e7(){Ve.lFrame.currentNamespace=null}()}let UD=!0;function fm(){return UD}function Xu(t){UD=t}function zD(t,n=null,e=null,i){const o=jD(t,n,e);return o.resolveInjectorInitializers(),o}function jD(t,n=null,e=null,i,o=new Set){const r=[e||en,PU(t)];return new ol(r,n||rm(),null,o)}class Ue{static THROW_IF_NOT_FOUND=nl;static NULL=new nm;static create(n,e){if(Array.isArray(n))return zD({name:""},e,n);{const i=n.name??"";return zD({name:i},n.parent,n.providers)}}static \u0275prov=te({token:Ue,providedIn:"any",factory:()=>ce(rD)});static __NG_ELEMENT_ID__=-1}const et=new Z("");let dr=(()=>class t{static __NG_ELEMENT_ID__=n7;static __NG_ENV_ID__=e=>e})();class $D extends dr{_lView;constructor(n){super(),this._lView=n}get destroyed(){return bs(this._lView)}onDestroy(n){const e=this._lView;return dm(e,n),()=>function jy(t,n){if(null===t[21])return;const e=t[21].indexOf(n);-1!==e&&t[21].splice(e,1)}(e,n)}}function n7(){return new $D(ne())}const WD=!1,i7=new Z("");let ta=(()=>{class t{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new Ei(!1);debugTaskTracker=T(i7,{optional:!0});get hasPendingTasks(){return!this.destroyed&&this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new zt(e=>{e.next(!1),e.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);const e=this.taskId++;return this.pendingTasks.add(e),this.debugTaskTracker?.add(e),e}has(e){return this.pendingTasks.has(e)}remove(e){this.pendingTasks.delete(e),this.debugTaskTracker?.remove(e),0===this.pendingTasks.size&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})();const ke=class o7 extends be{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(n=!1){super(),this.__isAsync=n,Ly()&&(this.destroyRef=T(dr,{optional:!0})??void 0,this.pendingTasks=T(ta,{optional:!0})??void 0)}emit(n){const e=Pe(null);try{super.next(n)}finally{Pe(e)}}subscribe(n,e,i){let o=n,r=e||(()=>null),s=i;if(n&&"object"==typeof n){const l=n;o=l.next?.bind(l),r=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(r=this.wrapInTimeout(r),o&&(o=this.wrapInTimeout(o)),s&&(s=this.wrapInTimeout(s)));const a=super.subscribe({next:o,error:r,complete:s});return n instanceof gt&&n.add(a),a}wrapInTimeout(n){return e=>{const i=this.pendingTasks?.add();setTimeout(()=>{try{n(e)}finally{void 0!==i&&this.pendingTasks?.remove(i)}})}}};function pm(...t){}function GD(t){let n,e;function i(){t=pm;try{void 0!==e&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(e),void 0!==n&&clearTimeout(n)}catch{}}return n=setTimeout(()=>{t(),i()}),"function"==typeof requestAnimationFrame&&(e=requestAnimationFrame(()=>{t(),i()})),()=>i()}function r7(t){return queueMicrotask(()=>t()),()=>{t=pm}}const Jy="isAngularZone",mm=Jy+"_ID";let s7=0;class Ce{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new ke(!1);onMicrotaskEmpty=new ke(!1);onStable=new ke(!1);onError=new ke(!1);constructor(n){const{enableLongStackTrace:e=!1,shouldCoalesceEventChangeDetection:i=!1,shouldCoalesceRunChangeDetection:o=!1,scheduleInRootZone:r=WD}=n;if(typeof Zone>"u")throw new X(908,!1);Zone.assertZonePatched();const s=this;s._nesting=0,s._outer=s._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(s._inner=s._inner.fork(new Zone.TaskTrackingZoneSpec)),e&&Zone.longStackTraceZoneSpec&&(s._inner=s._inner.fork(Zone.longStackTraceZoneSpec)),s.shouldCoalesceEventChangeDetection=!o&&i,s.shouldCoalesceRunChangeDetection=o,s.callbackScheduled=!1,s.scheduleInRootZone=r,function c7(t){const n=()=>{!function l7(t){function n(){GD(()=>{t.callbackScheduled=!1,t1(t),t.isCheckStableRunning=!0,e1(t),t.isCheckStableRunning=!1})}t.isCheckStableRunning||t.callbackScheduled||(t.callbackScheduled=!0,t.scheduleInRootZone?Zone.root.run(()=>{n()}):t._outer.run(()=>{n()}),t1(t))}(t)},e=s7++;t._inner=t._inner.fork({name:"angular",properties:{[Jy]:!0,[mm]:e,[mm+e]:!0},onInvokeTask:(i,o,r,s,a,l)=>{if(function u7(t){return YD(t,"__ignore_ng_zone__")}(l))return i.invokeTask(r,s,a,l);try{return qD(t),i.invokeTask(r,s,a,l)}finally{(t.shouldCoalesceEventChangeDetection&&"eventTask"===s.type||t.shouldCoalesceRunChangeDetection)&&n(),KD(t)}},onInvoke:(i,o,r,s,a,l,d)=>{try{return qD(t),i.invoke(r,s,a,l,d)}finally{t.shouldCoalesceRunChangeDetection&&!t.callbackScheduled&&!function h7(t){return YD(t,"__scheduler_tick__")}(l)&&n(),KD(t)}},onHasTask:(i,o,r,s)=>{i.hasTask(r,s),o===r&&("microTask"==s.change?(t._hasPendingMicrotasks=s.microTask,t1(t),e1(t)):"macroTask"==s.change&&(t.hasPendingMacrotasks=s.macroTask))},onHandleError:(i,o,r,s)=>(i.handleError(r,s),t.runOutsideAngular(()=>t.onError.emit(s)),!1)})}(s)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get(Jy)}static assertInAngularZone(){if(!Ce.isInAngularZone())throw new X(909,!1)}static assertNotInAngularZone(){if(Ce.isInAngularZone())throw new X(909,!1)}run(n,e,i){return this._inner.run(n,e,i)}runTask(n,e,i,o){const r=this._inner,s=r.scheduleEventTask("NgZoneEvent: "+o,n,a7,pm,pm);try{return r.runTask(s,e,i)}finally{r.cancelTask(s)}}runGuarded(n,e,i){return this._inner.runGuarded(n,e,i)}runOutsideAngular(n){return this._outer.run(n)}}const a7={};function e1(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 t1(t){t.hasPendingMicrotasks=!!(t._hasPendingMicrotasks||(t.shouldCoalesceEventChangeDetection||t.shouldCoalesceRunChangeDetection)&&!0===t.callbackScheduled)}function qD(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function KD(t){t._nesting--,e1(t)}class d7{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new ke;onMicrotaskEmpty=new ke;onStable=new ke;onError=new ke;run(n,e,i){return n.apply(e,i)}runGuarded(n,e,i){return n.apply(e,i)}runOutsideAngular(n){return n()}runTask(n,e,i,o){return n.apply(e,i)}}function YD(t,n){return!(!Array.isArray(t)||1!==t.length)&&!0===t[0]?.data?.[n]}class hl{_console=console;handleError(n){this._console.error("ERROR",n)}}const Nr=new Z("",{factory:()=>{const t=T(Ce),n=T(Wn);let e;return i=>{t.runOutsideAngular(()=>{n.destroyed&&!e?setTimeout(()=>{throw i}):(e??=n.get(hl),e.handleError(i))})}}}),f7={provide:fs,useValue:()=>{T(hl,{optional:!0})},multi:!0};function Ct(t,n){const[e,i,o]=function NH(t,n){const e=Object.create(sy);e.value=t,void 0!==n&&(e.equal=n);const i=()=>function LH(t){return Nu(t),t.value}(e);return i[Fn]=e,[i,s=>Vp(e,s),s=>BM(e,s)]}(t,n?.equal),r=e;return r.set=i,r.update=o,r.asReadonly=n1.bind(r),r}function n1(){const t=this[Fn];if(void 0===t.readonlyFn){const n=()=>this();n[Fn]=t,t.readonlyFn=n}return t.readonlyFn}let gm=(()=>class t{view;node;constructor(e,i){this.view=e,this.node=i}static __NG_ELEMENT_ID__=m7})();function m7(){return new gm(ne(),He())}class fl{}const _m=new Z("",{factory:()=>!0}),XD=new Z("");let bm=(()=>{class t{internalPendingTasks=T(ta);scheduler=T(fl);errorHandler=T(Nr);add(){const e=this.internalPendingTasks.add();return()=>{this.internalPendingTasks.has(e)&&(this.scheduler.notify(11),this.internalPendingTasks.remove(e))}}run(e){const i=this.add();e().catch(this.errorHandler).finally(i)}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})(),ZD=(()=>{class t{static \u0275prov=te({token:t,providedIn:"root",factory:()=>new g7})}return t})();class g7{dirtyEffectCount=0;queues=new Map;add(n){this.enqueue(n),this.schedule(n)}schedule(n){n.dirty&&this.dirtyEffectCount++}remove(n){const i=this.queues.get(n.zone);i.has(n)&&(i.delete(n),n.dirty&&this.dirtyEffectCount--)}enqueue(n){const e=n.zone;this.queues.has(e)||this.queues.set(e,new Set);const i=this.queues.get(e);i.has(n)||i.add(n)}flush(){for(;this.dirtyEffectCount>0;){let n=!1;for(const[e,i]of this.queues)n||=null===e?this.flushQueue(i):e.run(()=>this.flushQueue(i));n||(this.dirtyEffectCount=0)}}flushQueue(n){let e=!1;for(const i of n)i.dirty&&(this.dirtyEffectCount--,e=!0,i.run());return e}}class i1{[Fn];constructor(n){this[Fn]=n}destroy(){this[Fn].destroy()}}function vm(t,n){const e=n?.injector??T(Ue);let o,i=!0!==n?.manualCleanup?e.get(dr):null;const r=e.get(gm,null,{optional:!0}),s=e.get(fl);return null!==r?(o=function v7(t,n,e){const i=Object.create(b7);return i.view=t,i.zone=typeof Zone<"u"?Zone.current:null,i.notifier=n,i.fn=JD(i,e),t[23]??=new Set,t[23].add(i),i.consumerMarkedDirty(i),i}(r.view,s,t),i instanceof $D&&i._lView===r.view&&(i=null)):o=function y7(t,n,e){const i=Object.create(_7);return i.fn=JD(i,t),i.scheduler=n,i.notifier=e,i.zone=typeof Zone<"u"?Zone.current:null,i.scheduler.add(i),i.notifier.notify(12),i}(t,e.get(ZD),s),o.injector=e,null!==i&&(o.onDestroyFns=[i.onDestroy(()=>o.destroy())]),new i1(o)}const QD={...VH,cleanupFns:void 0,zone:null,onDestroyFns:null,run(){const t=um(!1);try{!function HH(t){if(t.dirty=!1,t.version>0&&!Lp(t))return;t.version++;const n=Hc(t);try{t.cleanup(),t.fn()}finally{Bu(t,n)}}(this)}finally{um(t)}},cleanup(){if(!this.cleanupFns?.length)return;const t=Pe(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],Pe(t)}}},_7={...QD,consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(Vu(this),null!==this.onDestroyFns)for(const t of this.onDestroyFns)t();this.cleanup(),this.scheduler.remove(this)}},b7={...QD,consumerMarkedDirty(){this.view[2]|=8192,td(this.view),this.notifier.notify(13)},destroy(){if(Vu(this),null!==this.onDestroyFns)for(const t of this.onDestroyFns)t();this.cleanup(),this.view[23]?.delete(this)}};function JD(t,n){return()=>{n(e=>(t.cleanupFns??=[]).push(e))}}let eT=null;function na(){return eT}class w7{}let ym=(()=>{class t{historyGo(e){throw new Error("")}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>T(k7),providedIn:"platform"})}return t})();const x7=new Z("");let k7=(()=>{class t extends ym{_location;_history;_doc=T(et);constructor(){super(),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return na().getBaseHref(this._doc)}onPopState(e){const i=na().getGlobalEventTarget(this._doc,"window");return i.addEventListener("popstate",e,!1),()=>i.removeEventListener("popstate",e)}onHashChange(e){const i=na().getGlobalEventTarget(this._doc,"window");return i.addEventListener("hashchange",e,!1),()=>i.removeEventListener("hashchange",e)}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(e){this._location.pathname=e}pushState(e,i,o){this._history.pushState(e,i,o)}replaceState(e,i,o){this._history.replaceState(e,i,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(e=0){this._history.go(e)}getState(){return this._history.state}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>new t,providedIn:"platform"})}return t})();function tT(t,n){n=encodeURIComponent(n);for(const e of t.split(";")){const i=e.indexOf("="),[o,r]=-1==i?[e,""]:[e.slice(0,i),e.slice(i+1)];if(o.trim()===n)return decodeURIComponent(r)}return null}class nT{}const iT="browser";let oT=(()=>{class t{static \u0275prov=te({token:t,providedIn:"root",factory:()=>new O7(T(et),window)})}return t})();class O7{document;window;offset=()=>[0,0];constructor(n,e){this.document=n,this.window=e}setOffset(n){this.offset=Array.isArray(n)?()=>n:n}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(n,e){this.window.scrollTo({...e,left:n[0],top:n[1]})}scrollToAnchor(n,e){const i=function A7(t,n){const e=t.getElementById(n)||t.getElementsByName(n)[0];if(e)return e;if("function"==typeof t.createTreeWalker&&t.body&&"function"==typeof t.body.attachShadow){const i=t.createTreeWalker(t.body,NodeFilter.SHOW_ELEMENT);let o=i.currentNode;for(;o;){const r=o.shadowRoot;if(r){const s=r.getElementById(n)||r.querySelector(`[name="${n}"]`);if(s)return s}o=i.nextNode()}}return null}(this.document,n);i&&(this.scrollToElement(i,e),i.focus())}setHistoryScrollRestoration(n){try{this.window.history.scrollRestoration=n}catch{console.warn(po(2400,!1))}}scrollToElement(n,e){const i=n.getBoundingClientRect(),o=i.left+this.window.pageXOffset,r=i.top+this.window.pageYOffset,s=this.offset();this.window.scrollTo({...e,left:o-s[0],top:r-s[1]})}}function mT(t,n,e,i,o,r,s){try{var a=t[r](s),l=a.value}catch(d){return void e(d)}a.done?n(l):Promise.resolve(l).then(i,o)}function At(t){return function(){var n=this,e=arguments;return new Promise(function(i,o){var r=t.apply(n,e);function s(l){mT(r,i,o,s,a,"next",l)}function a(l){mT(r,i,o,s,a,"throw",l)}s(void 0)})}}function En(t){return n=>{if(function az(t){return fn(t?.lift)}(n))return n.lift(function(e){try{return t(e,this)}catch(i){this.error(i)}});throw new TypeError("Unable to lift unknown Observable type")}}function pn(t,n,e,i,o){return new lz(t,n,e,i,o)}class lz extends $p{constructor(n,e,i,o,r,s){super(n),this.onFinalize=r,this.shouldUnsubscribe=s,this._next=e?function(a){try{e(a)}catch(l){n.error(l)}}:super._next,this._error=o?function(a){try{o(a)}catch(l){n.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=i?function(){try{i()}catch(a){n.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var n;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:e}=this;super.unsubscribe(),!e&&(null===(n=this.onFinalize)||void 0===n||n.call(this))}}}function De(t,n){return En((e,i)=>{let o=0;e.subscribe(pn(i,r=>{i.next(t.call(n,r,o++))}))})}function xs(t){return{toString:t}.toString()}function TT(t,n,e,i){null!==n?n.applyValueToInputSignal(n,i):t[e]=i}class Hz{previousValue;currentValue;firstChange;constructor(n,e,i){this.previousValue=n,this.currentValue=e,this.firstChange=i}isFirstChange(){return this.firstChange}}const vi=(()=>{const t=()=>ET;return t.ngInherit=!0,t})();function ET(t){return t.type.prototype.ngOnChanges&&(t.setInput=zz),Uz}function Uz(){const t=IT(this),n=t?.current;if(n){const e=t.previous;if(e===Rr)t.previous=n;else for(let i in n)e[i]=n[i];t.current=null,this.ngOnChanges(n)}}function zz(t,n,e,i,o){const r=this.declaredInputs[i],s=IT(t)||function jz(t,n){return t[PT]=n}(t,{previous:Rr,current:null}),a=s.current||(s.current={}),l=s.previous,d=l[r];a[r]=new Hz(d&&d.currentValue,e,l===Rr),TT(t,n,o,e)}const PT="__ngSimpleChanges__";function IT(t){return t[PT]||null}const gl=[],$t=function(t,n=null,e){for(let i=0;i=i)break}else n[l]<0&&(t[17]+=65536),(a>14>16&&(3&t[2])===n&&(t[2]+=16384,RT(a,r)):RT(a,r)}class oh{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(n,e,i,o){this.factory=n,this.name=o,this.canSeeViewProviders=e,this.injectImpl=i}}function NT(t){return 3===t||4===t||6===t}function LT(t){return 64===t.charCodeAt(0)}function cd(t,n){if(null!==n&&0!==n.length)if(null===t||0===t.length)t=n.slice();else{let e=-1;for(let i=0;in){s=r-1;break}}}for(;r>16}(t),i=n;for(;e>0;)i=i[14],e--;return i}let _1=!0;function Om(t){const n=_1;return _1=t,n}let Jz=0;const Br={};function Am(t,n){const e=UT(t,n);if(-1!==e)return e;const i=n[1];i.firstCreatePass&&(t.injectorIndex=n.length,b1(i.data,t),b1(n,null),b1(i.blueprint,null));const o=Rm(t,n),r=t.injectorIndex;if(g1(o)){const s=rh(o),a=sh(o,n),l=a[1].data;for(let d=0;d<8;d++)n[r+d]=a[s+d]|l[s+d]}return n[r+8]=o,r}function b1(t,n){t.push(0,0,0,0,0,0,0,0,n)}function UT(t,n){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null===n[t.injectorIndex+8]?-1:t.injectorIndex}function Rm(t,n){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;let e=0,i=null,o=n;for(;null!==o;){if(i=KT(o),null===i)return-1;if(e++,o=o[14],-1!==i.injectorIndex)return i.injectorIndex|e<<16}return-1}function v1(t,n,e){!function ej(t,n,e){let i;"string"==typeof e?i=e.charCodeAt(0)||0:e.hasOwnProperty(Uu)&&(i=e[Uu]),null==i&&(i=e[Uu]=Jz++);const o=255&i;n.data[t+(o>>5)]|=1<=0?255&n:oj:n}(e);if("function"==typeof r){if(!ND(n,t,i))return 1&i?zT(o,0,i):jT(n,e,i,o);try{let s;if(s=r(i),null!=s||8&i)return s;ky()}finally{HD()}}else if("number"==typeof r){let s=null,a=UT(t,n),l=-1,d=1&i?n[15][5]:null;for((-1===a||4&i)&&(l=-1===a?Rm(t,n):n[a+8],-1!==l&&qT(i,!1)?(s=n[1],a=rh(l),n=sh(l,n)):a=-1);-1!==a;){const f=n[1];if(GT(r,a,f.data)){const m=nj(a,n,e,s,i,d);if(m!==Br)return m}l=n[a+8],-1!==l&&qT(i,n[1].data[a+8]===d)&>(r,a,n)?(s=f,a=rh(l),n=sh(l,n)):a=-1}}return o}function nj(t,n,e,i,o,r){const s=n[1],a=s.data[t+8],f=Fm(a,s,e,null==i?Fr(a)&&_1:i!=s&&!!(3&a.type),1&o&&r===a);return null!==f?ah(n,s,f,a,o):Br}function Fm(t,n,e,i,o){const r=t.providerIndexes,s=n.data,a=1048575&r,l=t.directiveStart,f=r>>20,g=o?a+f:t.directiveEnd;for(let b=i?a:a+f;b=l&&w.type===e)return b}if(o){const b=s[l];if(b&&lr(b)&&b.type===e)return l}return null}function ah(t,n,e,i,o){let r=t[e];const s=n.data;if(r instanceof oh){const a=r;if(a.resolving)throw xy();const l=Om(a.canSeeViewProviders);a.resolving=!0;const m=a.injectImpl?mo(a.injectImpl):null;ND(t,i,0);try{r=t[e]=a.factory(void 0,o,s,t,i),n.firstCreatePass&&e>=i.directiveStart&&function qz(t,n,e){const{ngOnChanges:i,ngOnInit:o,ngDoCheck:r}=n.type.prototype;if(i){const s=ET(n);(e.preOrderHooks??=[]).push(t,s),(e.preOrderCheckHooks??=[]).push(t,s)}o&&(e.preOrderHooks??=[]).push(0-t,o),r&&((e.preOrderHooks??=[]).push(t,r),(e.preOrderCheckHooks??=[]).push(t,r))}(e,s[e],n)}finally{null!==m&&mo(m),Om(l),a.resolving=!1,HD()}}return r}function GT(t,n,e){return!!(e[n+(t>>5)]&1<{const n=t.prototype.constructor,e=n[tl]||y1(n),i=Object.prototype;let o=Object.getPrototypeOf(t.prototype).constructor;for(;o&&o!==i;){const r=o[tl]||y1(o);if(r&&r!==e)return r;o=Object.getPrototypeOf(o)}return r=>new r})}function y1(t){return qp(t)?()=>{const n=y1(Ke(t));return n&&n()}:il(t)}function KT(t){const n=t[1],e=n.type;return 2===e?n.declTNode:1===e?t[5]:null}function lh(t){return function tj(t,n){if("class"===n)return t.classes;if("style"===n)return t.styles;const e=t.attrs;if(e){const i=e.length;let o=0;for(;oclass t{nativeElement;constructor(e){this.nativeElement=e}static __NG_ELEMENT_ID__=fj})();function JT(t){return t instanceof Ne?t.nativeElement:t}function pj(){return this._results[Symbol.iterator]()}class ud{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new be}constructor(n=!1){this._emitDistinctChangesOnly=n}get(n){return this._results[n]}map(n){return this._results.map(n)}filter(n){return this._results.filter(n)}find(n){return this._results.find(n)}reduce(n,e){return this._results.reduce(n,e)}forEach(n){this._results.forEach(n)}some(n){return this._results.some(n)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(n,e){this.dirty=!1;const i=function Lo(t){return t.flat(Number.POSITIVE_INFINITY)}(n);(this._changesDetected=!function DU(t,n,e){if(t.length!==n.length)return!1;for(let i=0;iHj}),Hj="ng",b2=new Z(""),T1=new Z("",{providedIn:"platform",factory:()=>"unknown"}),Hm=new Z(""),E1=new Z("",{factory:()=>T(et).body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null}),qj=new Z("",{factory:()=>!1}),Zj=new Z("");function Wm(t){return!(32&~t.flags)}function G2(t,n){const e=t.contentQueries;if(null!==e){const i=Pe(null);try{for(let o=0;ot,createScript:t=>t,createScriptURL:t=>t})}catch{}return Qm}()?.createHTML(t)||t}function J2(t){return function K1(){if(void 0===Jm&&(Jm=null,Nn.trustedTypes))try{Jm=Nn.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return Jm}()?.createScriptURL(t)||t}class bl{changingThisBreaksApplicationSecurity;constructor(n){this.changingThisBreaksApplicationSecurity=n}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${qM})`}}class D9 extends bl{getTypeName(){return"HTML"}}class T9 extends bl{getTypeName(){return"Style"}}class E9 extends bl{getTypeName(){return"Script"}}class P9 extends bl{getTypeName(){return"URL"}}class I9 extends bl{getTypeName(){return"ResourceURL"}}function Po(t){return t instanceof bl?t.changingThisBreaksApplicationSecurity:t}function Vr(t,n){const e=function O9(t){return t instanceof bl&&t.getTypeName()||null}(t);if(null!=e&&e!==n){if("ResourceURL"===e&&"URL"===n)return!0;throw new Error(`Required a safe ${n}, got a ${e} (see ${qM})`)}return e===n}class B9{inertDocumentHelper;constructor(n){this.inertDocumentHelper=n}getInertBodyElement(n){n=""+n;try{const e=(new window.DOMParser).parseFromString(fd(n),"text/html").body;return null===e?this.inertDocumentHelper.getInertBodyElement(n):(e.firstChild?.remove(),e)}catch{return null}}}class V9{defaultDoc;inertDocument;constructor(n){this.defaultDoc=n,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(n){const e=this.inertDocument.createElement("template");return e.innerHTML=fd(n),e}}const U9=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function mh(t){return(t=String(t)).match(U9)?t:"unsafe:"+t}function Hr(t){const n={};for(const e of t.split(","))n[e]=!0;return n}function pd(...t){const n={};for(const e of t)for(const i in e)e.hasOwnProperty(i)&&(n[i]=!0);return n}const tE=Hr("area,br,col,hr,img,wbr"),nE=Hr("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),iE=Hr("rp,rt"),Y1=pd(tE,pd(nE,Hr("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),pd(iE,Hr("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),pd(iE,nE)),X1=Hr("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),Z1=pd(X1,Hr("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),Hr("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext")),z9=Hr("script,style,template");class j9{sanitizedSomething=!1;buf=[];sanitizeChildren(n){let e=n.firstChild,i=!0,o=[];for(;e;)if(e.nodeType===Node.ELEMENT_NODE?i=this.startElement(e):e.nodeType===Node.TEXT_NODE?this.chars(e.nodeValue):this.sanitizedSomething=!0,i&&e.firstChild)o.push(e),e=G9(e);else for(;e;){e.nodeType===Node.ELEMENT_NODE&&this.endElement(e);let r=W9(e);if(r){e=r;break}e=o.pop()}return this.buf.join("")}startElement(n){const e=oE(n).toLowerCase();if(!Y1.hasOwnProperty(e))return this.sanitizedSomething=!0,!z9.hasOwnProperty(e);this.buf.push("<"),this.buf.push(e);const i=n.attributes;for(let o=0;o"),!0}endElement(n){const e=oE(n).toLowerCase();Y1.hasOwnProperty(e)&&!tE.hasOwnProperty(e)&&(this.buf.push(""))}chars(n){this.buf.push(sE(n))}}function W9(t){const n=t.nextSibling;if(n&&t!==n.previousSibling)throw rE(n);return n}function G9(t){const n=t.firstChild;if(n&&function $9(t,n){return(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}(t,n))throw rE(n);return n}function oE(t){const n=t.nodeName;return"string"==typeof n?n:"FORM"}function rE(t){return new Error(`Failed to sanitize html because the element is clobbered: ${t.outerHTML}`)}const q9=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,K9=/([^\#-~ |!])/g;function sE(t){return t.replace(/&/g,"&").replace(q9,function(n){return"&#"+(1024*(n.charCodeAt(0)-55296)+(n.charCodeAt(1)-56320)+65536)+";"}).replace(K9,function(n){return"&#"+n.charCodeAt(0)+";"}).replace(//g,">")}let eg;function aE(t,n){let e=null;try{eg=eg||function eE(t){const n=new V9(t);return function H9(){try{return!!(new window.DOMParser).parseFromString(fd(""),"text/html")}catch{return!1}}()?new B9(n):n}(t);let i=n?String(n):"";e=eg.getInertBodyElement(i);let o=5,r=i;do{if(0===o)throw new Error("Failed to sanitize html because the input is unstable");o--,i=r,r=e.innerHTML,e=eg.getInertBodyElement(i)}while(i!==r);return fd((new j9).sanitizeChildren(J1(e)||e))}finally{if(e){const i=J1(e)||e;for(;i.firstChild;)i.firstChild.remove()}}}function J1(t){return"content"in t&&function Y9(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}const X9=/^>|^->||--!>|)/g;function tC(t,n){return t.createComment(function lE(t){return t.replace(X9,n=>n.replace(Z9,"\u200b$1\u200b"))}(n))}function tg(t,n,e){return t.createElement(n,e)}function vl(t,n,e,i,o){t.insertBefore(n,e,i,o)}function dE(t,n,e){t.appendChild(n,e)}function uE(t,n,e,i,o){null!==i?vl(t,n,e,i,o):dE(t,n,e)}function gh(t,n,e,i){t.removeChild(null,n,e,i)}function fE(t,n,e){const{mergedAttrs:i,classes:o,styles:r}=e;null!==i&&function Zz(t,n,e){let i=0;for(;i-1){let r;for(;++or?"":o[f+1].toLowerCase(),2&i&&d!==m){if(ur(i))return!1;s=!0}}}}else{if(!s&&!ur(i)&&!ur(l))return!1;if(s&&ur(l))continue;s=!1,i=l|1&i}}return ur(i)||s}function ur(t){return!(1&t)}function x$(t,n,e,i){if(null===n)return-1;let o=0;if(i||!e){let r=!1;for(;o-1)for(e++;e0?'="'+a+'"':"")+"]"}else 8&i?o+="."+s:4&i&&(o+=" "+s);else""!==o&&!ur(s)&&(n+=CE(r,o),o=""),i=s,r=r||!ur(i);e++}return""!==o&&(n+=CE(r,o)),n}const Vt={};function rC(t,n,e,i,o,r,s,a,l,d,f){const m=27+i,g=m+o,b=function I$(t,n){const e=[];for(let i=0;i{class t{impl=null;execute(){this.impl?.execute()}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})();const EE=[0,1,2,3];let PE=(()=>{class t{ngZone=T(Ce);scheduler=T(fl);errorHandler=T(hl,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){T(da,{optional:!0})}execute(){const e=this.sequences.size>0;e&&$t(ye.AfterRenderHooksStart),this.executing=!0;for(const i of EE)for(const o of this.sequences)if(!o.erroredOrDestroyed&&o.hooks[i])try{o.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>(0,o.hooks[i])(o.pipelinedValue),o.snapshot))}catch(r){o.erroredOrDestroyed=!0,this.errorHandler?.handleError(r)}this.executing=!1;for(const i of this.sequences)i.afterRun(),i.once&&(this.sequences.delete(i),i.destroy());for(const i of this.deferredRegistrations)this.sequences.add(i);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),e&&$t(ye.AfterRenderHooksEnd)}register(e){const{view:i}=e;void 0!==i?((i[25]??=[]).push(e),td(i),i[2]|=8192):this.executing?this.deferredRegistrations.add(e):this.addSequence(e)}addSequence(e){this.sequences.add(e),this.scheduler.notify(7)}unregister(e){this.executing&&this.sequences.has(e)?(e.erroredOrDestroyed=!0,e.pipelinedValue=void 0,e.once=!0):(this.sequences.delete(e),this.deferredRegistrations.delete(e))}maybeTrace(e,i){return i?i.run(_C.AFTER_NEXT_RENDER,e):e()}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})();class IE{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(n,e,i,o,r,s=null){this.impl=n,this.hooks=e,this.view=i,this.once=o,this.snapshot=s,this.unregisterOnDestroy=r?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();const n=this.view?.[25];n&&(this.view[25]=n.filter(e=>e!==this))}}function Wi(t,n){const e=n?.injector??T(Ue);return Ci("NgAfterNextRender"),function OE(t,n,e,i){const o=n.get(bC);o.impl??=n.get(PE);const r=n.get(da,null,{optional:!0}),s=!0!==e?.manualCleanup?n.get(dr):null,a=n.get(gm,null,{optional:!0}),l=new IE(o.impl,function K$(t){return t instanceof Function?[void 0,void 0,t,void 0]:[t.earlyRead,t.write,t.mixedReadWrite,t.read]}(t),a?.view,i,s,r?.snapshot(null));return o.impl.register(l),l}(t,e,n,!0)}const dg=new Z("",{factory:()=>({queue:new Set,isScheduled:!1,scheduler:null,injector:T(Wn)})});function AE(t,n,e){const i=t.get(dg);if(Array.isArray(n))for(const o of n)i.queue.add(o),e?.detachedLeaveAnimationFns?.push(o);else i.queue.add(n),e?.detachedLeaveAnimationFns?.push(n);i.scheduler&&i.scheduler(t)}function RE(t,n,e,i){const o=t?.[26]?.enter;null!==n&&o&&o.has(e.index)&&function vC(t,n){for(const[e,i]of n)AE(t,i.animateFns)}(i,o)}function _d(t,n,e,i,o,r,s,a){if(null!=o){let l,d=!1;oo(o)?l=o:Tn(o)&&(d=!0,o=o[0]);const f=bi(o);0===t&&null!==i?(RE(a,i,r,e),null==s?dE(n,i,f):vl(n,i,f,s||null,!0)):1===t&&null!==i?(RE(a,i,r,e),vl(n,i,f,s||null,!0),function H$(t,n){const e=vh.get(t);if(!e||0===e.length)return;const i=n.parentNode,o=n.previousSibling;for(let r=e.length-1;r>=0;r--){const s=e[r],a=s.parentNode;s===n?(e.splice(r,1),uC.add(s),s.dispatchEvent(new CustomEvent("animationend",{detail:{cancel:!0}}))):(o&&s===o||a&&i&&a!==i)&&(e.splice(r,1),s.dispatchEvent(new CustomEvent("animationend",{detail:{cancel:!0}})),s.parentNode?.removeChild(s))}}(r,f)):2===t?(a?.[26]?.leave?.has(r.index)&&function fC(t,n){const e=vh.get(t);e?e.includes(n)||e.push(n):vh.set(t,[n])}(r,f),LE(a,r,e,m=>{uC.has(f)?uC.delete(f):gh(n,f,d,m)})):3===t&&LE(a,r,e,()=>{n.destroyNode(f)}),null!=l&&function iW(t,n,e,i,o,r,s){const a=i[7];a!==bi(i)&&_d(n,t,e,r,a,o,s);for(let d=10;d=0?i[a]():i[-a].unsubscribe(),s+=2}else e[s].call(i[e[s+1]]);null!==i&&(n[7]=null);const o=n[21];if(null!==o){n[21]=null;for(let s=0;s{if(o.leave&&o.leave.has(n.index)){const s=o.leave.get(n.index),a=[];if(s){for(let l=0;l{t[26].running=void 0,kl.delete(t[19]),n(!0)}):n(!1)}(t,i)}else t&&kl.delete(t[19]),i(!1)},o)}function wC(t,n,e){return function BE(t,n,e){let i=n;for(;null!==i&&168&i.type;)i=(n=i).parent;if(null===i)return e[0];if(Fr(i)){const{encapsulation:o}=t.data[i.directiveStart+i.componentOffset];if(o===Ho.None||o===Ho.Emulated)return null}return Jn(i,e)}(t,n.parent,e)}function VE(t,n,e){return UE(t,n,e)}let UE=function HE(t,n,e){return 40&t.type?Jn(t,e):null};function kC(t,n,e,i){const o=wC(t,i,n),r=n[11],a=VE(i.parent||n[5],i,n);if(null!=o)if(Array.isArray(e))for(let l=0;l27&&xE(t,n,27,!1),$t(s?ye.TemplateUpdateStart:ye.TemplateCreateStart,o,e),e(i,o)}finally{dl(r),$t(s?ye.TemplateUpdateEnd:ye.TemplateCreateEnd,o,e)}}function fg(t,n,e){(function cW(t,n,e){const i=e.directiveStart,o=e.directiveEnd;Fr(e)&&function O$(t,n,e){const i=Jn(n,t),o=function wE(t){const n=t.tView;return null===n||n.incompleteFirstPass?t.tView=rC(1,null,t.template,t.decls,t.vars,t.directiveDefs,t.pipeDefs,t.viewQuery,t.schemas,t.consts,t.id):n}(e),r=t[10].rendererFactory,s=aC(t,ig(t,o,null,sC(e),i,n,null,r.createRenderer(i,e),null,null,null));t[n.index]=s}(n,e,t.data[i+e.componentOffset]),t.firstCreatePass||Am(e,n);const r=e.initialInputs;for(let s=i;snull;function DC(t,n,e,i,o,r){_g(t,n[1],n,e,i)?Fr(t)&&qE(n,t.index):(3&t.type&&(e=function lW(t){return"class"===t?"className":"for"===t?"htmlFor":"formaction"===t?"formAction":"innerHtml"===t?"innerHTML":"readonly"===t?"readOnly":"tabindex"===t?"tabIndex":t}(e)),TC(t,n,e,i,o,r))}function TC(t,n,e,i,o,r){if(3&t.type){const s=Jn(t,n);i=null!=r?r(i,t.value||"",e):i,o.setProperty(s,e,i)}}function qE(t,n){const e=ro(n,t);16&e[2]||(e[2]|=64)}function uW(t,n){null!==t.hostBindings&&t.hostBindings(1,n)}function EC(t,n){const e=t.directiveRegistry;let i=null;if(e)for(let o=0;o{td(t.lView)},consumerOnSignalRead(){this.lView[24]=this}},kW={...Vc,consumerIsAlwaysLive:!0,kind:"template",consumerMarkedDirty:t=>{let n=vs(t.lView);for(;n&&!QE(n[1]);)n=vs(n);n&&yD(n)},consumerOnSignalRead(){this.lView[24]=this}};function QE(t){return 2!==t.type}function JE(t){if(null===t[23])return;let n=!0;for(;n;){let e=!1;for(const i of t[23])i.dirty&&(e=!0,null===i.zone||Zone.current===i.zone?i.run():i.zone.run(()=>i.run()));n=e&&!!(8192&t[2])}}function vg(t,n=0){const i=t[10].rendererFactory;i.begin?.();try{!function MW(t,n){const e=AD();try{um(!0),IC(t,n);let i=0;for(;cm(t);){if(100===i)throw new X(103,!1);i++,IC(t,1)}}finally{um(e)}}(t,n)}finally{i.end?.()}}function eP(t,n,e,i){if(bs(n))return;const o=n[2];Xy(n);let a=!0,l=null,d=null;QE(t)?(d=function vW(t){return t[24]??function yW(t){const n=ZE.pop()??Object.create(wW);return n.lView=t,n}(t)}(n),l=Hc(d)):null===function ny(){return Rn}()?(a=!1,d=function xW(t){const n=t[24]??Object.create(kW);return n.lView=t,n}(n),l=Hc(d)):n[24]&&(Vu(n[24]),n[24]=null);try{vD(n),function RD(t){return Ve.lFrame.bindingIndex=t}(t.bindingStartIndex),null!==e&&WE(t,n,e,2,i);const f=!(3&~o);if(f){const b=t.preOrderCheckHooks;null!==b&&Pm(n,b,null)}else{const b=t.preOrderHooks;null!==b&&Im(n,b,0,null),p1(n,0)}if(function DW(t){for(let n=c2(t);null!==n;n=d2(n)){if(!(2&n[2]))continue;const e=n[9];for(let i=0;i0&&(e[o-1][4]=n),i0&&(t[e-1][4]=i[4]);const r=Jp(t,10+n);!function FE(t,n){NE(t,n),n[0]=null,n[5]=null}(i[1],i);const s=r[18];null!==s&&s.detachView(r[1]),i[3]=null,i[4]=null,i[2]&=-129}return i}function sP(t,n){const e=t[9],i=n[3];(Tn(i)||n[15]!==i[3][15])&&(t[2]|=2),null===e?t[9]=[n]:e.push(n)}class kh{_lView;_cdRefInjectingView;_appRef=null;_attachedToViewContainer=!1;exhaustive;get rootNodes(){const n=this._lView,e=n[1];return wh(e,n,e.firstChild,[])}constructor(n,e){this._lView=n,this._cdRefInjectingView=e}get context(){return this._lView[8]}set context(n){this._lView[8]=n}get destroyed(){return bs(this._lView)}destroy(){if(this._appRef)this._appRef.detachView(this);else if(this._attachedToViewContainer){const n=this._lView[3];if(oo(n)){const e=n[8],i=e?e.indexOf(this):-1;i>-1&&(xh(n,i),Jp(e,i))}this._attachedToViewContainer=!1}Ch(this._lView[1],this._lView)}onDestroy(n){dm(this._lView,n)}markForCheck(){yd(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[2]&=-129}reattach(){zy(this._lView),this._lView[2]|=128}detectChanges(){this._lView[2]|=1024,vg(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new X(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;const n=ea(this._lView),e=this._lView[16];null!==e&&!n&&yC(e,this._lView),NE(this._lView[1],this._lView)}attachToAppRef(n){if(this._attachedToViewContainer)throw new X(902,!1);this._appRef=n;const e=ea(this._lView),i=this._lView[16];null!==i&&!e&&sP(i,this._lView),zy(this._lView)}}let Oi=(()=>class t{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=IW;constructor(e,i,o){this._declarationLView=e,this._declarationTContainer=i,this.elementRef=o}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,i){return this.createEmbeddedViewImpl(e,i)}createEmbeddedViewImpl(e,i,o){const r=vd(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:i,dehydratedView:o});return new kh(r)}})();function IW(){return yg(He(),ne())}function yg(t,n){return 4&t.type?new Oi(n,t,dd(t,n)):null}function Dl(t,n,e,i,o){let r=t.data[n];if(null===r)r=function NC(t,n,e,i,o){const r=TD(),s=ED(),l=t.data[n]=function HW(t,n,e,i,o,r){let s=n?n.injectorIndex:-1,a=0;return SD()&&(a|=128),{type:e,index:i,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:a,providerIndexes:0,value:o,attrs:r,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:n,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}(0,s?r:r&&r.parent,e,n,i,o);return function VW(t,n,e,i){null===t.firstChild&&(t.firstChild=n),null!==e&&(i?null==e.child&&null!==n.parent&&(e.child=n):null===e.next&&(e.next=n,n.prev=e))}(t,l,r,s),l}(t,n,e,i,o),function KU(){return Ve.lFrame.inI18n}()&&(r.flags|=32);else if(64&r.type){r.type=e,r.value=i,r.attrs=o;const s=function Yu(){const t=Ve.lFrame,n=t.currentTNode;return t.isParent?n:n.parent}();r.injectorIndex=null===s?-1:s.injectorIndex}return ys(r,!0),r}function SP(t,n){let e=0,i=t.firstChild;if(i){const o=t.data.r;for(;eclass t{destroyNode=null;static __NG_ELEMENT_ID__=()=>function kG(){const t=ne(),e=ro(He().index,t);return(Tn(e)?e:t)[11]}()})(),SG=(()=>{class t{static \u0275prov=te({token:t,providedIn:"root",factory:()=>null})}return t})();const $C={};class xd{injector;parentInjector;constructor(n,e){this.injector=n,this.parentInjector=e}get(n,e,i){const o=this.injector.get(n,$C,i);return o!==$C||e===$C?o:this.parentInjector.get(n,e,i)}}function Pg(t,n,e){let i=e?t.styles:null,o=e?t.classes:null,r=0;if(null!==n)for(let s=0;s0&&(e.directiveToIndex=new Map);for(let g=0;g0;){const e=t[--n];if("number"==typeof e&&e<0)return e}return 0})(s)!=a&&s.push(a),s.push(e,i,r)}}(t,n,i,bh(t,e,o.hostVars,Vt),o)}function NG(t,n,e){if(e){if(n.exportAs)for(let i=0;il?a[l]:null}"string"==typeof s&&(r+=2)}return null}(n,e,r,t.index)),null!==f)(f.__ngLastListenerFn__||f).__ngNextListenerFn__=s,f.__ngLastListenerFn__=s,d=!0;else{const m=Jn(t,e),g=i?i(m):m,b=o.listen(g,r,a);(function UG(t){return t.startsWith("animation")||t.startsWith("transition")})(r)||HP(i?M=>i(bi(M[t.index])):t.index,n,e,r,a,b,!1)}return d}function HP(t,n,e,i,o,r,s){const a=n.firstCreatePass?xD(n):null,l=wD(e),d=l.length;l.push(o,r),a&&a.push(i,t,d,(d+1)*(s?-1:1))}function Sd(t,n,e,i,o,r){const a=n[1],m=n[e][a.data[e].outputs[i]].subscribe(r);HP(t.index,a,n,o,r,m,!0)}const ks=Symbol("BINDING");function XC(t){return t.debugInfo?.className||t.type.name||null}class KP extends Tg{ngModule;constructor(n){super(),this.ngModule=n}resolveComponentFactory(n){const e=kt(n);return new Rh(e,this.ngModule)}}class Rh extends IP{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=function JG(t){return Object.keys(t).map(n=>{const[e,i,o]=t[n],r={propName:e,templateName:n,isSignal:0!==(i&og.SignalBased)};return o&&(r.transform=o),r})}(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=function eq(t){return Object.keys(t).map(n=>({propName:t[n],templateName:n}))}(this.componentDef.outputs),this.cachedOutputs}constructor(n,e){super(),this.componentDef=n,this.ngModule=e,this.componentType=n.type,this.selector=function E$(t){return t.map(T$).join(",")}(n.selectors),this.ngContentSelectors=n.ngContentSelectors??[],this.isBoundToModule=!!e}create(n,e,i,o,r,s){$t(ye.DynamicComponentStart);const a=Pe(null);try{const l=this.componentDef,d=function tq(t,n,e){let i=n instanceof Wn?n:n?.injector;return i&&null!==t.getStandaloneInjector&&(i=t.getStandaloneInjector(i)||i),i?new xd(e,i):e}(l,o||this.ngModule,n),f=function nq(t){const n=t.get(Uo,null);if(null===n)throw new X(407,!1);return{rendererFactory:n,sanitizer:t.get(SG,null),changeDetectionScheduler:t.get(fl,null),ngReflect:!1,tracingService:t.get(da,null,{optional:!0})}}(d),m=f.tracingService;return m&&m.componentCreate?m.componentCreate(XC(l),()=>this.createComponentRef(f,d,e,i,r,s)):this.createComponentRef(f,d,e,i,r,s)}finally{Pe(a)}}createComponentRef(n,e,i,o,r,s){const a=this.componentDef,l=function rq(t,n,e,i){const o=t?["ng-version","21.2.4"]:function P$(t){const n=[],e=[];let i=1,o=2;for(;i{if(1&e&&t)for(const i of t)i.create();if(2&e&&n)for(const i of n)i.update()}:null}(r,s),1,a,l,null,null,null,[o],null)}(o,a,s,r),d=n.rendererFactory.createRenderer(null,a),f=o?function rW(t,n,e,i){const r=i.get(qj,!1)||e===Ho.ShadowDom||e===Ho.ExperimentalIsolatedShadowDom,s=t.selectRootElement(n,r);return function sW(t){GE(t)}(s),s}(d,o,a.encapsulation,e):function iq(t,n){const e=function oq(t){return(t.selectors[0][0]||"div").toLowerCase()}(t);return tg(n,e,"svg"===e?"svg":"math"===e?"math":null)}(a,d),m=s?.some(YP)||r?.some(w=>"function"!=typeof w&&w.bindings.some(YP)),g=ig(null,l,null,512|sC(a),null,null,n,d,e,null,null);g[27]=f,Xy(g);let b=null;try{const w=GC(27,g,2,"#host",()=>l.directiveRegistry,!0,0);fE(d,f,w),bo(f,g),fg(l,g,w),W1(l,w,g),qC(l,w),void 0!==i&&function lq(t,n,e){const i=t.projection=[];for(let o=0;oclass t{static __NG_ELEMENT_ID__=cq})();function cq(){return ZP(He(),ne())}class ZC extends Ai{_lContainer;_hostTNode;_hostLView;constructor(n,e,i){super(),this._lContainer=n,this._hostTNode=e,this._hostLView=i}get element(){return dd(this._hostTNode,this._hostLView)}get injector(){return new Vn(this._hostTNode,this._hostLView)}get parentInjector(){const n=Rm(this._hostTNode,this._hostLView);if(g1(n)){const e=sh(n,this._hostLView),i=rh(n);return new Vn(e[1].data[i+8],e)}return new Vn(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(n){const e=XP(this._lContainer);return null!==e&&e[n]||null}get length(){return this._lContainer.length-10}createEmbeddedView(n,e,i){let o,r;"number"==typeof i?o=i:null!=i&&(o=i.index,r=i.injector);const a=n.createEmbeddedViewImpl(e||{},r,null);return this.insertImpl(a,o,Ml(this._hostTNode,null)),a}createComponent(n,e,i,o,r,s,a){const l=n&&!function ih(t){return"function"==typeof t}(n);let d;if(l)d=e;else{const E=e||{};d=E.index,i=E.injector,o=E.projectableNodes,r=E.environmentInjector||E.ngModuleRef,s=E.directives,a=E.bindings}const f=l?n:new Rh(kt(n)),m=i||this.parentInjector;if(!r&&null==f.ngModule){const I=(l?m:this.parentInjector).get(Wn,null);I&&(r=I)}kt(f.componentType??{});const M=f.create(m,o,null,r,s,a);return this.insertImpl(M.hostView,d,Ml(this._hostTNode,null)),M}insert(n,e){return this.insertImpl(n,e,!0)}insertImpl(n,e,i){const o=n._lView;if(function zU(t){return oo(t[3])}(o)){const a=this.indexOf(n);if(-1!==a)this.detach(a);else{const l=o[3],d=new ZC(l,l[5],l[3]);d.detach(d.indexOf(n))}}const r=this._adjustIndex(e),s=this._lContainer;return Cd(s,o,r,i),n.attachToViewContainerRef(),nD(QC(s),r,n),n}move(n,e){return this.insert(n,e)}indexOf(n){const e=XP(this._lContainer);return null!==e?e.indexOf(n):-1}remove(n){const e=this._adjustIndex(n,-1),i=xh(this._lContainer,e);i&&(Jp(QC(this._lContainer),e),Ch(i[1],i))}detach(n){const e=this._adjustIndex(n,-1),i=xh(this._lContainer,e);return i&&null!=Jp(QC(this._lContainer),e)?new kh(i):null}_adjustIndex(n,e=0){return n??this.length+e}}function XP(t){return t[8]}function QC(t){return t[8]||(t[8]=[])}function ZP(t,n){let e;const i=n[t.index];return oo(i)?e=i:(e=oP(i,n,null,t),n[t.index]=e,aC(n,e)),QP(e,n,t,i),new ZC(e,t,n)}let QP=function eI(t,n,e,i){if(t[7])return;let o;o=8&e.type?bi(i):function dq(t,n){const e=t[11],i=e.createComment(""),o=Jn(n,t),r=e.parentNode(o);return vl(e,r,i,e.nextSibling(o),!1),i}(n,e),t[7]=o};class e0{queryList;matches=null;constructor(n){this.queryList=n}clone(){return new e0(this.queryList)}setDirty(){this.queryList.setDirty()}}class t0{queries;constructor(n=[]){this.queries=n}createEmbeddedView(n){const e=n.queries;if(null!==e){const i=null!==n.contentQueries?n.contentQueries[0]:e.length,o=[];for(let r=0;rn.trim())}(n):n}}class n0{queries;constructor(n=[]){this.queries=n}elementStart(n,e){for(let i=0;i0)i.push(s[a/2]);else{const d=r[a+1],f=n[-l];for(let m=10;m{i._dirtyCounter();const r=function yq(t,n){const e=t._lView,i=t._queryIndex;if(void 0===e||void 0===i||4&e[2])return n?void 0:en;const o=r0(e,i),r=aI(e,i);return o.reset(r,JT),n?o.first:o._changesDetected||void 0===t._flatValue?t._flatValue=o.toArray():t._flatValue}(i,t);if(n&&void 0===r)throw new X(-951,!1);return r});return i=o[Fn],i._dirtyCounter=Ct(0),i._flatValue=void 0,o}function lI(t){return a0(!0,!1)}function cI(t){return a0(!0,!0)}function dI(t,n){const e=t[Fn];e._lView=ne(),e._queryIndex=n,e._queryList=r0(e._lView,n),e._queryList.onDirty(()=>e._dirtyCounter.update(i=>i+1))}let Ss=class{},pI=class{};class u0 extends Ss{ngModuleType;_parent;_bootstrapComponents=[];_r3Injector;instance;destroyCbs=[];componentFactoryResolver=new KP(this);constructor(n,e,i,o=!0){super(),this.ngModuleType=n,this._parent=e;const r=Ar(n);this._bootstrapComponents=Ur(r.bootstrap),this._r3Injector=jD(n,e,[{provide:Ss,useValue:this},{provide:Tg,useValue:this.componentFactoryResolver},...i],Zs(n),new Set(["environment"])),o&&this.resolveInjectorInitializers()}resolveInjectorInitializers(){this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(this.ngModuleType)}get injector(){return this._r3Injector}destroy(){const n=this._r3Injector;!n.destroyed&&n.destroy(),this.destroyCbs.forEach(e=>e()),this.destroyCbs=null}onDestroy(n){this.destroyCbs.push(n)}}class mI extends pI{moduleType;constructor(n){super(),this.moduleType=n}create(n){return new u0(this.moduleType,n,[])}}class Tq extends Ss{injector;componentFactoryResolver=new KP(this);instance=null;constructor(n){super();const e=new ol([...n.providers,{provide:Ss,useValue:this},{provide:Tg,useValue:this.componentFactoryResolver}],n.parent||rm(),n.debugName,new Set(["environment"]));this.injector=e,n.runEnvironmentInitializers&&e.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(n){this.injector.onDestroy(n)}}function Ag(t,n,e=null){return new Tq({providers:t,parent:n,debugName:e,runEnvironmentInitializers:!0}).injector}let Eq=(()=>{class t{_injector;cachedInjectors=new Map;constructor(e){this._injector=e}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){const i=Py(0,e.type),o=i.length>0?Ag([i],this._injector,""):null;this.cachedInjectors.set(e,o)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(const e of this.cachedInjectors.values())null!==e&&e.destroy()}finally{this.cachedInjectors.clear()}}static \u0275prov=te({token:t,providedIn:"environment",factory:()=>new t(ce(Wn))})}return t})();function ae(t){return xs(()=>{const n=_I(t),e={...n,decls:t.decls,vars:t.vars,template:t.template,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,onPush:t.changeDetection===Lm.OnPush,directiveDefs:null,pipeDefs:null,dependencies:n.standalone&&t.dependencies||null,getStandaloneInjector:n.standalone?o=>o.get(Eq).getOrCreateStandaloneInjector(e):null,getExternalStyles:null,signals:t.signals??!1,data:t.data||{},encapsulation:t.encapsulation||Ho.Emulated,styles:t.styles||en,_:null,schemas:t.schemas||null,tView:null,id:""};n.standalone&&Ci("NgStandalone"),bI(e);const i=t.dependencies;return e.directiveDefs=Rg(i,gI),e.pipeDefs=Rg(i,sr),e.id=function Aq(t){let n=0;const i=[t.selectors,t.ngContentSelectors,t.hostVars,t.hostAttrs,"function"==typeof t.consts?"":t.consts,t.vars,t.decls,t.encapsulation,t.standalone,t.signals,t.exportAs,JSON.stringify(t.inputs),JSON.stringify(t.outputs),Object.getOwnPropertyNames(t.type.prototype),!!t.contentQueries,!!t.viewQuery];for(const r of i.join("|"))n=Math.imul(31,n)+r.charCodeAt(0)|0;return n+=2147483648,"c"+n}(e),e})}function gI(t){return kt(t)||no(t)}function tt(t){return xs(()=>({type:t.type,bootstrap:t.bootstrap||en,declarations:t.declarations||en,imports:t.imports||en,exports:t.exports||en,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}))}function Pq(t,n){if(null==t)return Rr;const e={};for(const i in t)if(t.hasOwnProperty(i)){const o=t[i];let r,s,a,l;Array.isArray(o)?(a=o[0],r=o[1],s=o[2]??r,l=o[3]||null):(r=o,s=o,a=og.None,l=null),e[r]=[i,a,l],n[r]=s}return e}function Iq(t){if(null==t)return Rr;const n={};for(const e in t)t.hasOwnProperty(e)&&(n[t[e]]=e);return n}function de(t){return xs(()=>{const n=_I(t);return bI(n),n})}function Gi(t){return{type:t.type,name:t.name,factory:null,pure:!1!==t.pure,standalone:t.standalone??!0,onDestroy:t.type.prototype.ngOnDestroy||null}}function _I(t){const n={};return{type:t.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:n,inputConfig:t.inputs||Rr,exportAs:t.exportAs||null,standalone:t.standalone??!0,signals:!0===t.signals,selectors:t.selectors||en,viewQuery:t.viewQuery||null,features:t.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,inputs:Pq(t.inputs,n),outputs:Iq(t.outputs),debugInfo:null}}function bI(t){t.features?.forEach(n=>n(t))}function Rg(t,n){return t?()=>{const e="function"==typeof t?t():t,i=[];for(const o of e){const r=n(o);null!==r&&i.push(r)}return i}:null}function vI(t){const n=e=>{const i=Array.isArray(t);null===e.hostDirectives?(e.resolveHostDirectives=Fq,e.hostDirectives=i?t.map(h0):[t]):i?e.hostDirectives.unshift(...t.map(h0)):e.hostDirectives.unshift(t)};return n.ngInherit=!0,n}function Fq(t){const n=[];let e=!1,i=null,o=null;for(let r=0;r=0;i--){const o=t[i];o.hostVars=n+=o.hostVars,o.hostAttrs=cd(o.hostAttrs,e=cd(e,o.hostAttrs))}}(i)}function Bq(t,n){for(const e in n.inputs){if(!n.inputs.hasOwnProperty(e)||t.inputs.hasOwnProperty(e))continue;const i=n.inputs[e];void 0!==i&&(t.inputs[e]=i,t.declaredInputs[e]=n.declaredInputs[e])}}function f0(t){return t===Rr?{}:t===en?[]:t}function Hq(t,n){const e=t.viewQuery;t.viewQuery=e?(i,o)=>{n(i,o),e(i,o)}:n}function Uq(t,n){const e=t.contentQueries;t.contentQueries=e?(i,o,r)=>{n(i,o,r),e(i,o,r)}:n}function zq(t,n){const e=t.hostBindings;t.hostBindings=e?(i,o)=>{n(i,o),e(i,o)}:n}function kI(t,n,e,i,o,r,s,a){if(e.firstCreatePass){t.mergedAttrs=cd(t.mergedAttrs,t.attrs);const f=t.tView=rC(2,t,o,r,s,e.directiveRegistry,e.pipeRegistry,null,e.schemas,e.consts,null);null!==e.queries&&(e.queries.template(e,t),f.queries=e.queries.embeddedTView(t))}a&&(t.flags|=a),ys(t,!1);const l=SI(e,n,t,i);fm()&&kC(e,n,l,t),bo(l,n);const d=oP(l,n,l,t);n[i+27]=d,aC(n,d)}function Ol(t,n,e,i,o,r,s,a,l,d,f){const m=e+27;let g;if(n.firstCreatePass){if(g=Dl(n,m,4,s||null,a||null),null!=d){const b=zi(n.consts,d);g.localNames=[];for(let w=0;w{class t{log(e){console.log(e)}warn(e){console.warn(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})();function Fl(t){return"function"==typeof t&&void 0!==t[Fn]}function UI(t){return Fl(t)&&"function"==typeof t.set}const nO=new Z(""),iO=new Z("");let C0,y0=(()=>{class t{_ngZone;registry;_isZoneStable=!0;_callbacks=[];_taskTrackingZone=null;_destroyRef;constructor(e,i,o){this._ngZone=e,this.registry=i,Ly()&&(this._destroyRef=T(dr,{optional:!0})??void 0),C0||(function ZK(t){C0=t}(o),o.addToWindow(i)),this._watchAngularEvents(),e.run(()=>{this._taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){const e=this._ngZone.onUnstable.subscribe({next:()=>{this._isZoneStable=!1}}),i=this._ngZone.runOutsideAngular(()=>this._ngZone.onStable.subscribe({next:()=>{Ce.assertNotInAngularZone(),queueMicrotask(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}}));this._destroyRef?.onDestroy(()=>{e.unsubscribe(),i.unsubscribe()})}isStable(){return this._isZoneStable&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())queueMicrotask(()=>{for(;0!==this._callbacks.length;){let e=this._callbacks.pop();clearTimeout(e.timeoutId),e.doneCb()}});else{let e=this.getPendingTasks();this._callbacks=this._callbacks.filter(i=>!i.updateCb||!i.updateCb(e)||(clearTimeout(i.timeoutId),!1))}}getPendingTasks(){return this._taskTrackingZone?this._taskTrackingZone.macroTasks.map(e=>({source:e.source,creationLocation:e.creationLocation,data:e.data})):[]}addCallback(e,i,o){let r=-1;i&&i>0&&(r=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==r),e()},i)),this._callbacks.push({doneCb:e,timeoutId:r,updateCb:o})}whenStable(e,i,o){if(o&&!this._taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(e,i,o),this._runCallbacksIfReady()}registerApplication(e){this.registry.registerApplication(e,this)}unregisterApplication(e){this.registry.unregisterApplication(e)}findProviders(e,i,o){return[]}static \u0275fac=function(i){return new(i||t)(ce(Ce),ce(XK),ce(iO))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),XK=(()=>{class t{_applications=new Map;registerApplication(e,i){this._applications.set(e,i)}unregisterApplication(e){this._applications.delete(e)}unregisterAllApplications(){this._applications.clear()}getTestability(e){return this._applications.get(e)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(e,i=!0){return C0?.findTestabilityInTree(this,e,i)??null}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})();function Hh(t){return!!t&&"function"==typeof t.then}function oO(t){return!!t&&"function"==typeof t.subscribe}const rO=new Z("");function sO(t){return Gu([{provide:rO,multi:!0,useValue:t}])}let aO=(()=>{class t{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((e,i)=>{this.resolve=e,this.reject=i});appInits=T(rO,{optional:!0})??[];injector=T(Ue);constructor(){}runInitializers(){if(this.initialized)return;const e=[];for(const o of this.appInits){const r=io(this.injector,o);if(Hh(r))e.push(r);else if(oO(r)){const s=new Promise((a,l)=>{r.subscribe({complete:a,error:l})});e.push(s)}}const i=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{i()}).catch(o=>{this.reject(o)}),0===e.length&&i(),this.initialized=!0}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const lO=new Z("");function cO(t,n){return Array.isArray(n)?n.reduce(cO,t):{...t,...n}}let fr=(()=>{class t{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=T(Nr);afterRenderManager=T(bC);zonelessEnabled=T(_m);rootEffectScheduler=T(ZD);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new be;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=T(ta);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(De(e=>!e))}constructor(){T(da,{optional:!0})}whenStable(){let e;return new Promise(i=>{e=this.isStable.subscribe({next:o=>{o&&i()}})}).finally(()=>{e.unsubscribe()})}_injector=T(Wn);_rendererFactory=null;get injector(){return this._injector}bootstrap(e,i){return this.bootstrapImpl(e,i)}bootstrapImpl(e,i,o=Ue.NULL){return this._injector.get(Ce).run(()=>{$t(ye.BootstrapComponentStart);const s=e instanceof IP;if(!this._injector.get(aO).done)throw new X(405,"");let l;l=s?e:this._injector.get(Tg).resolveComponentFactory(e),this.componentTypes.push(l.componentType);const d=function JK(t){return t.isBoundToModule}(l)?void 0:this._injector.get(Ss),m=l.create(o,[],i||l.selector,d),g=m.location.nativeElement,b=m.injector.get(nO,null);return b?.registerApplication(g),m.onDestroy(()=>{this.detachView(m.hostView),jg(this.components,m),b?.unregisterApplication(g)}),this._loadComponent(m),$t(ye.BootstrapComponentEnd,m),m})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){$t(ye.ChangeDetectionStart),null!==this.tracingSnapshot?this.tracingSnapshot.run(_C.CHANGE_DETECTION,this.tickImpl):this.tickImpl()}tickImpl=()=>{if(this._runningTick)throw $t(ye.ChangeDetectionEnd),new X(101,!1);const e=Pe(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,Pe(e),this.afterTick.next(),$t(ye.ChangeDetectionEnd)}};synchronize(){null===this._rendererFactory&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(Uo,null,{optional:!0}));let e=0;for(;0!==this.dirtyFlags&&e++<10;){$t(ye.ChangeDetectionSyncStart);try{this.synchronizeOnce()}finally{$t(ye.ChangeDetectionSyncEnd)}}}synchronizeOnce(){16&this.dirtyFlags&&(this.dirtyFlags&=-17,this.rootEffectScheduler.flush());let e=!1;if(7&this.dirtyFlags){const i=!!(1&this.dirtyFlags);this.dirtyFlags&=-8,this.dirtyFlags|=8;for(let{_lView:o}of this.allViews)(i||cm(o))&&(vg(o,i&&!this.zonelessEnabled?0:1),e=!0);if(this.dirtyFlags&=-5,this.syncDirtyFlagsWithViews(),23&this.dirtyFlags)return}e||(this._rendererFactory?.begin?.(),this._rendererFactory?.end?.()),8&this.dirtyFlags&&(this.dirtyFlags&=-9,this.afterRenderManager.execute()),this.syncDirtyFlagsWithViews()}syncDirtyFlagsWithViews(){this.allViews.some(({_lView:e})=>cm(e))?this.dirtyFlags|=2:this.dirtyFlags&=-8}attachView(e){const i=e;this._views.push(i),i.attachToAppRef(this)}detachView(e){const i=e;jg(this._views,i),i.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView);try{this.tick()}catch(o){this.internalErrorHandler(o)}this.components.push(e),this._injector.get(lO,[]).forEach(o=>o(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy())}finally{this._destroyed=!0,this._views=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>jg(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new X(406,!1);const e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function jg(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}function D0(t,n){const e=ne();if(mn(e,go(),n)){const o=$e(),r=cr();if(_g(r,o,e,t,n))Fr(r)&&qE(e,r.index);else{const a=Jn(r,e);pg(e[11],a,null,r.value,t,n,null)}}return D0}function We(t,n,e,i){const o=ne();return mn(o,go(),n)&&($e(),function hW(t,n,e,i,o,r){const s=Jn(t,n);pg(n[11],s,r,t.value,e,i,o)}(cr(),o,t,n,e,i)),We}function wi(){return ne()[15][8]}class UY{destroy(n){}updateValue(n,e){}swap(n,e){const i=Math.min(n,e),o=Math.max(n,e),r=this.detach(o);if(o-i>1){const s=this.detach(i);this.attach(i,r),this.attach(o,s)}else this.attach(i,r)}move(n,e){this.attach(e,this.detach(n))}}function E0(t,n,e,i,o){return t===e&&Object.is(n,i)?1:Object.is(o(t,n),o(e,i))?-1:0}function P0(t,n,e,i){return!(void 0===n||!n.has(i)||(t.attach(e,n.get(i)),n.delete(i),0))}function bO(t,n,e,i,o){if(P0(t,n,i,e(i,o)))t.updateValue(i,o);else{const r=t.create(i,o);t.attach(i,r)}}function vO(t,n,e,i){const o=new Set;for(let r=n;r<=e;r++)o.add(i(r,t.at(r)));return o}class yO{kvMap=new Map;_vMap=void 0;has(n){return this.kvMap.has(n)}delete(n){if(!this.has(n))return!1;const e=this.kvMap.get(n);return void 0!==this._vMap&&this._vMap.has(e)?(this.kvMap.set(n,this._vMap.get(e)),this._vMap.delete(e)):this.kvMap.delete(n),!0}get(n){return this.kvMap.get(n)}set(n,e){if(this.kvMap.has(n)){let i=this.kvMap.get(n);void 0===this._vMap&&(this._vMap=new Map);const o=this._vMap;for(;o.has(i);)i=o.get(i);o.set(i,e)}else this.kvMap.set(n,e)}forEach(n){for(let[e,i]of this.kvMap)if(n(i,e),void 0!==this._vMap){const o=this._vMap;for(;o.has(i);)i=o.get(i),n(i,e)}}}function x(t,n,e,i,o,r,s,a){Ci("NgControlFlow");const l=ne(),d=$e();return Ol(l,d,t,n,e,i,o,zi(d.consts,r),256,s,a),I0}function I0(t,n,e,i,o,r,s,a){Ci("NgControlFlow");const l=ne(),d=$e();return Ol(l,d,t,n,e,i,o,zi(d.consts,r),512,s,a),I0}function k(t,n){Ci("NgControlFlow");const e=ne(),i=go(),o=e[i]!==Vt?e[i]:-1,r=-1!==o?qg(e,27+o):void 0;if(mn(e,i,t)){const a=Pe(null);try{if(void 0!==r&&OC(r,0),-1!==t){const l=27+t,d=qg(e,l),f=O0(e[1],l),m=null;Cd(d,vd(e,f,n,{dehydratedView:m}),0,Ml(f,m))}}finally{Pe(a)}}else if(void 0!==r){const a=rP(r,0);void 0!==a&&(a[8]=n)}}class jY{lContainer;$implicit;$index;constructor(n,e,i){this.lContainer=n,this.$implicit=e,this.$index=i}get $count(){return this.lContainer.length-10}}function CO(t){return t}function Le(t,n){return n}class $Y{hasEmptyBlock;trackByFn;liveCollection;constructor(n,e,i){this.hasEmptyBlock=n,this.trackByFn=e,this.liveCollection=i}}function me(t,n,e,i,o,r,s,a,l,d,f,m,g){Ci("NgControlFlow");const b=ne(),w=$e(),M=void 0!==l,E=ne(),I=a?s.bind(E[15][8]):s,A=new $Y(M,I);E[27+t]=A,Ol(b,w,t+1,n,e,i,o,zi(w.consts,r),256),M&&Ol(b,w,t+2,l,d,f,m,zi(w.consts,g),512)}class WY extends UY{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(n,e,i){super(),this.lContainer=n,this.hostLView=e,this.templateTNode=i}get length(){return this.lContainer.length-10}at(n){return this.getLView(n)[8].$implicit}attach(n,e){const i=e[6];this.needsIndexUpdate||=n!==this.length,Cd(this.lContainer,e,n,Ml(this.templateTNode,i)),function GY(t,n){if(t.length<=10)return;const i=t[10+n],o=i?i[26]:void 0;i&&o&&o.detachedLeaveAnimationFns&&o.detachedLeaveAnimationFns.length>0&&(function Y$(t,n){const e=t.get(dg);if(n.detachedLeaveAnimationFns){for(const i of n.detachedLeaveAnimationFns)e.queue.delete(i);n.detachedLeaveAnimationFns=void 0}}(i[9],o),kl.delete(i[19]),o.detachedLeaveAnimationFns=void 0)}(this.lContainer,n)}detach(n){return this.needsIndexUpdate||=n!==this.length-1,function qY(t,n){if(t.length<=10)return;const i=t[10+n],o=i?i[26]:void 0;o&&o.leave&&o.leave.size>0&&(o.detachedLeaveAnimationFns=[])}(this.lContainer,n),function KY(t,n){return xh(t,n)}(this.lContainer,n)}create(n,e){return vd(this.hostLView,this.templateTNode,new jY(this.lContainer,e,n),{dehydratedView:null})}destroy(n){Ch(n[1],n)}updateValue(n,e){this.getLView(n)[8].$implicit=e}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let n=0;n{t.destroy(d)})}(l,t,r.trackByFn,n),l.updateIndexes(),r.hasEmptyBlock){const d=go(),f=0===l.length;if(mn(i,d,f)){const m=e+2,g=qg(i,m);if(f){const b=O0(o,m),w=null;Cd(g,vd(i,b,void 0,{dehydratedView:w}),0,Ml(b,w))}else o.firstUpdatePass&&function Sg(t){const n=t[6]??[],i=t[3][11],o=[];for(const r of n)void 0!==r.data.di?o.push(r):SP(r,i);t[6]=o}(g),OC(g,0)}}}finally{Pe(n)}}function qg(t,n){return t[n]}function O0(t,n){return ed(t,n)}function C(t,n,e){const i=ne();return mn(i,go(),n)&&($e(),DC(cr(),i,t,n,i[11],e)),C}function A0(t,n,e,i,o){_g(n,t,e,o?"class":"style",i)}function h(t,n,e,i){const o=ne(),r=o[1],s=t+27,a=r.firstCreatePass?GC(s,o,2,n,EC,Gy(),e,i):r.data[s];if(Fr(a)){const l=o[10].tracingService;if(l&&l.componentCreate)return l.componentCreate(XC(r.data[a.directiveStart+a.componentOffset]),()=>(wO(t,n,o,a,i),h))}return wO(t,n,o,a,i),h}function wO(t,n,e,i,o){if(mg(i,e,t,n,R0),Qc(i)){const r=e[1];fg(r,e,i),W1(r,i,e)}null!=o&&bd(e,i)}function u(){const t=$e(),e=gg(He());return t.firstCreatePass&&qC(t,e),MD(e)&&DD(),kD(),null!=e.classesWithoutHost&&function Yz(t){return!!(8&t.flags)}(e)&&A0(t,e,ne(),e.classesWithoutHost,!0),null!=e.stylesWithoutHost&&function Xz(t){return!!(16&t.flags)}(e)&&A0(t,e,ne(),e.stylesWithoutHost,!1),u}function L(t,n,e,i){return h(t,n,e,i),u(),L}function Ms(t,n,e,i){const o=ne(),r=o[1],s=t+27,a=r.firstCreatePass?function BP(t,n,e,i,o,r){const s=n.consts,l=Dl(n,t,e,i,zi(s,o));if(l.mergedAttrs=cd(l.mergedAttrs,l.attrs),null!=r){const d=zi(s,r);l.localNames=[];for(let f=0;f(Xu(!0),tg(n[11],i,function t7(){return Ve.lFrame.currentNamespace}()));function zr(t,n,e){const i=ne(),o=i[1],r=t+27,s=o.firstCreatePass?GC(r,i,8,"ng-container",EC,Gy(),n,e):o.data[r];if(mg(s,i,t,"ng-container",N0),Qc(s)){const a=i[1];fg(a,i,s),W1(a,s,i)}return null!=e&&bd(i,s),zr}function pr(){const t=$e(),e=gg(He());return t.firstCreatePass&&qC(t,e),pr}function mr(t,n,e){return zr(t,n,e),pr(),mr}let N0=(t,n,e,i,o)=>(Xu(!0),tC(n[11],""));function re(){return ne()}function gr(t,n,e){const i=ne();return mn(i,go(),n)&&($e(),TC(cr(),i,t,n,i[11],e)),gr}const zh=void 0;var JY=["en",[["a","p"],["AM","PM"]],[["AM","PM"]],[["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"]],zh,[["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"]],zh,[["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\u202fa","h:mm:ss\u202fa","h:mm:ss\u202fa z","h:mm:ss\u202fa zzzz"],["{1}, {0}",zh,zh,zh],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function QY(t){const n=Math.floor(Math.abs(t)),e=t.toString().replace(/^[^.]*\.?/,"").length;return 1===n&&0===e?1:5}];let Od={};function so(t){const n=function eX(t){return t.toLowerCase().replace(/_/g,"-")}(t);let e=DO(n);if(e)return e;const i=n.split("-")[0];if(e=DO(i),e)return e;if("en"===i)return JY;throw new X(701,!1)}function DO(t){return t in Od||(Od[t]=Nn.ng&&Nn.ng.common&&Nn.ng.common.locales&&Nn.ng.common.locales[t]),Od[t]}var gn=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}(gn||{});const Kg="en-US";let TO=Kg;function F(t,n,e){const i=ne(),o=$e(),r=He();return V0(o,i,i[11],r,t,n,e),F}function Jg(t,n,e){const i=ne(),o=$e(),r=He();return(3&r.type||e)&&YC(r,o,i,e,i[11],t,n,ha(r,i,n)),Jg}function V0(t,n,e,i,o,r,s){let a=!0,l=null;if((3&i.type||s)&&(l??=ha(i,n,r),YC(i,t,n,s,e,o,r,l)&&(a=!1)),a){const d=i.outputs?.[o],f=i.hostDirectiveOutputs?.[o];if(f&&f.length)for(let m=0;m0;)n=n[14],t--;return n}(t,Ve.lFrame.contextLView))[8]}(t)}function HX(t,n){let e=null;const i=function k$(t){const n=t.attrs;if(null!=n){const e=n.indexOf(5);if(!(1&e))return n[e+1]}return null}(t);for(let o=0;o>17&32767}function j0(t){return 2|t}function Ad(t){return(131068&t)>>2}function $0(t,n){return-131069&t|n<<2}function W0(t){return 1|t}function KO(t,n,e,i){const o=t[e+1],r=null===n;let s=i?Vl(o):Ad(o),a=!1;for(;0!==s&&(!1===a||r);){const d=t[s+1];qX(t[s],n)&&(a=!0,t[s+1]=i?W0(d):j0(d)),s=i?Vl(d):Ad(d)}a&&(t[e+1]=i?j0(o):W0(o))}function qX(t,n){return null===t||null==n||(Array.isArray(t)?t[1]:t)===n||!(!Array.isArray(t)||"string"!=typeof n)&&Wu(t,n)>=0}const di={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function YO(t){return t.substring(di.key,di.keyEnd)}function KX(t){return t.substring(di.value,di.valueEnd)}function XO(t,n){const e=di.textEnd;return e===n?-1:(n=di.keyEnd=function ZX(t,n,e){for(;n32;)n++;return n}(t,di.key=n,e),Rd(t,n,e))}function ZO(t,n){const e=di.textEnd;let i=di.key=Rd(t,n,e);return e===i?-1:(i=di.keyEnd=function QX(t,n,e){let i;for(;n=65&&(-33&i)<=90||i>=48&&i<=57);)n++;return n}(t,i,e),i=JO(t,i,e),i=di.value=Rd(t,i,e),i=di.valueEnd=function JX(t,n,e){let i=-1,o=-1,r=-1,s=n,a=s;for(;s32&&(a=s),r=o,o=i,i=-33&l}return a}(t,i,e),JO(t,i,e))}function QO(t){di.key=0,di.keyEnd=0,di.value=0,di.valueEnd=0,di.textEnd=t.length}function Rd(t,n,e){for(;n=0;e=ZO(n,e))rA(t,YO(n),KX(n))}function Ge(t){nA(aZ,tZ,t,!0)}function tZ(t,n){for(let e=function YX(t){return QO(t),XO(t,Rd(t,0,di.textEnd))}(n);e>=0;e=XO(n,e))tm(t,YO(n),!0)}function tA(t,n,e,i){const o=ne(),r=$e(),s=ws(2);r.firstUpdatePass&&oA(r,t,s,i),n!==Vt&&mn(o,s,n)&&sA(r,r.data[Pi()],o,o[11],t,o[s+1]=function cZ(t,n){return null==t||""===t||("string"==typeof n?t+=n:"object"==typeof t&&(t=Zs(Po(t)))),t}(n,e),i,s)}function nA(t,n,e,i){const o=$e(),r=ws(2);o.firstUpdatePass&&oA(o,null,r,i);const s=ne();if(e!==Vt&&mn(s,r,e)){const a=o.data[Pi()];if(lA(a,i)&&!iA(o,r)){let l=i?a.classesWithoutHost:a.stylesWithoutHost;null!==l&&(e=_y(l,e||"")),A0(o,a,s,e,i)}else!function lZ(t,n,e,i,o,r,s,a){o===Vt&&(o=en);let l=0,d=0,f=0=t.expandoStartIndex}function oA(t,n,e,i){const o=t.data;if(null===o[e+1]){const r=o[Pi()],s=iA(t,e);lA(r,i)&&null===n&&!s&&(n=!1),n=function nZ(t,n,e,i){const o=function Ky(t){const n=Ve.lFrame.currentDirectiveIndex;return-1===n?null:t[n]}(t);let r=i?n.residualClasses:n.residualStyles;if(null===o)0===(i?n.classBindings:n.styleBindings)&&(e=qh(e=G0(null,t,n,e,i),n.attrs,i),r=null);else{const s=n.directiveStylingLast;if(-1===s||t[s]!==o)if(e=G0(o,t,n,e,i),null===r){let l=function iZ(t,n,e){const i=e?n.classBindings:n.styleBindings;if(0!==Ad(i))return t[Vl(i)]}(t,n,i);void 0!==l&&Array.isArray(l)&&(l=G0(null,t,n,l[1],i),l=qh(l,n.attrs,i),function oZ(t,n,e,i){t[Vl(e?n.classBindings:n.styleBindings)]=i}(t,n,i,l))}else r=function rZ(t,n,e){let i;const o=n.directiveEnd;for(let r=1+n.directiveStylingLast;r0)&&(d=!0)):f=e,o)if(0!==l){const g=Vl(t[a+1]);t[i+1]=e_(g,a),0!==g&&(t[g+1]=$0(t[g+1],i)),t[a+1]=function jX(t,n){return 131071&t|n<<17}(t[a+1],i)}else t[i+1]=e_(a,0),0!==a&&(t[a+1]=$0(t[a+1],i)),a=i;else t[i+1]=e_(l,0),0===a?a=i:t[l+1]=$0(t[l+1],i),l=i;d&&(t[i+1]=j0(t[i+1])),KO(t,f,i,!0),KO(t,f,i,!1),function GX(t,n,e,i,o){const r=o?t.residualClasses:t.residualStyles;null!=r&&"string"==typeof n&&Wu(r,n)>=0&&(e[i+1]=W0(e[i+1]))}(n,f,t,i,r),s=e_(a,l),r?n.classBindings=s:n.styleBindings=s}(o,r,n,e,s,i)}}function G0(t,n,e,i,o){let r=null;const s=e.directiveEnd;let a=e.directiveStylingLast;for(-1===a?a=e.directiveStart:a++;a0;){const l=t[o],d=Array.isArray(l),f=d?l[1]:l,m=null===f;let g=e[o+1];g===Vt&&(g=m?en:void 0);let b=m?Ty(g,i):f===i?g:void 0;if(d&&!t_(b)&&(b=Ty(l,i)),t_(b)&&(a=b,s))return a;const w=t[o+1];o=s?Vl(w):Ad(w)}if(null!==n){let l=r?n.residualClasses:n.residualStyles;null!=l&&(a=Ty(l,i))}return a}function t_(t){return void 0!==t}function lA(t,n){return!!(t.flags&(n?8:16))}function p(t,n=""){const e=ne(),i=$e(),o=t+27,r=i.firstCreatePass?Dl(i,o,1,n,null):i.data[o],s=cA(i,e,r,n);e[o]=s,fm()&&kC(i,e,s,r),ys(r,!1)}let cA=(t,n,e,i)=>(Xu(!0),function eC(t,n){return t.createText(n)}(n[11],i));function S(t){return D("",t),S}function D(t,n,e){const i=ne(),o=function uA(t,n,e,i=""){return mn(t,go(),e)?n+ze(e)+i:Vt}(i,t,n,e);return o!==Vt&&Ts(i,Pi(),o),D}function nt(t,n,e,i,o){const r=ne(),s=function hA(t,n,e,i,o,r=""){const a=Pl(t,Cs(),e,o);return ws(2),a?n+ze(e)+i+ze(o)+r:Vt}(r,t,n,e,i,o);return s!==Vt&&Ts(r,Pi(),s),nt}function Fd(t,n,e,i,o,r,s){const a=ne(),l=function fA(t,n,e,i,o,r,s,a=""){const d=Og(t,Cs(),e,o,s);return ws(3),d?n+ze(e)+i+ze(o)+r+ze(s)+a:Vt}(a,t,n,e,i,o,r,s);return l!==Vt&&Ts(a,Pi(),l),Fd}function Kh(t,n,e,i,o,r,s,a,l){const d=ne(),f=function pA(t,n,e,i,o,r,s,a,l,d=""){const m=zo(t,Cs(),e,o,s,l);return ws(4),m?n+ze(e)+i+ze(o)+r+ze(s)+a+ze(l)+d:Vt}(d,t,n,e,i,o,r,s,a,l);return f!==Vt&&Ts(d,Pi(),f),Kh}function q0(t,n,e,i,o,r,s,a,l,d,f){const m=ne(),g=function mA(t,n,e,i,o,r,s,a,l,d,f,m=""){const g=Cs();let b=zo(t,g,e,o,s,l);return b=mn(t,g+4,f)||b,ws(5),b?n+ze(e)+i+ze(o)+r+ze(s)+a+ze(l)+d+ze(f)+m:Vt}(m,t,n,e,i,o,r,s,a,l,d,f);return g!==Vt&&Ts(m,Pi(),g),q0}function K0(t,n,e,i,o,r,s,a,l,d,f,m,g){const b=ne(),w=function gA(t,n,e,i,o,r,s,a,l,d,f,m,g,b=""){const w=Cs();let M=zo(t,w,e,o,s,l);return M=Pl(t,w+4,f,g)||M,ws(6),M?n+ze(e)+i+ze(o)+r+ze(s)+a+ze(l)+d+ze(f)+m+ze(g)+b:Vt}(b,t,n,e,i,o,r,s,a,l,d,f,m,g);return w!==Vt&&Ts(b,Pi(),w),K0}function Ts(t,n,e){const i=Jc(n,t);!function cE(t,n,e){t.setValue(n,e)}(t[11],i,e)}function Kt(t,n,e){UI(n)&&(n=n());const i=ne();return mn(i,go(),n)&&($e(),DC(cr(),i,t,n,i[11],e)),Kt}function nn(t,n){const e=UI(t);return e&&t.set(n),e}function Yt(t,n){const e=ne(),i=$e(),o=He();return V0(i,e,e[11],o,t,n),Yt}function on(t){return mn(ne(),go(),t)?ze(t):Vt}function kA(t,n,e){const i=$e();i.firstCreatePass&&SA(n,i.data,i.blueprint,lr(t),e)}function SA(t,n,e,i,o){if(t=Ke(t),Array.isArray(t))for(let r=0;r>20;if(ps(t)||!t.multi){const b=new oh(d,o,O,null),w=X0(l,n,o?f:f+g,m);-1===w?(v1(Am(a,s),r,l),Y0(r,t,n.length),n.push(l),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),e.push(b),s.push(b)):(e[w]=b,s[w]=b)}else{const b=X0(l,n,f+g,m),w=X0(l,n,f,f+g),E=w>=0&&e[w];if(o&&!E||!o&&!(b>=0&&e[b])){v1(Am(a,s),r,l);const I=function MZ(t,n,e,i,o){const s=new oh(t,e,O,null);return s.multi=[],s.index=n,s.componentProviders=0,MA(s,o,i&&!e),s}(o?SZ:kZ,e.length,o,i,d);!o&&E&&(e[w].providerFactory=I),Y0(r,t,n.length,0),n.push(l),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),e.push(I),s.push(I)}else Y0(r,t,b>-1?b:w,MA(e[o?w:b],d,!o&&i));!o&&i&&E&&e[w].componentProviders++}}}function Y0(t,n,e,i){const o=ps(n),r=function cD(t){return!!t.useClass}(n);if(o||r){const l=(r?Ke(n.useClass):n).prototype.ngOnDestroy;if(l){const d=t.destroyHooks||(t.destroyHooks=[]);if(!o&&n.multi){const f=d.indexOf(e);-1===f?d.push(e,[i,l]):d[f+1].push(i,l)}else d.push(e,l)}}}function MA(t,n,e){return e&&t.componentProviders++,t.multi.push(n)-1}function X0(t,n,e,i){for(let o=e;o{e.providersResolver=(i,o)=>kA(i,o?o(t):t,!1),n&&(e.viewProvidersResolver=(i,o)=>kA(i,o?o(n):n,!0))}}function vt(t,n){const e=ji()+t,i=ne();return i[e]===Vt?hr(i,e,n()):function kd(t,n){return t[n]}(i,e)}function ie(t,n,e){return PA(ne(),ji(),t,n,e)}function pt(t,n,e,i){return IA(ne(),ji(),t,n,e,i)}function EA(t,n,e,i,o){return function OA(t,n,e,i,o,r,s,a){const l=n+e;return Og(t,l,o,r,s)?hr(t,l+3,a?i.call(a,o,r,s):i(o,r,s)):Yh(t,l+3)}(ne(),ji(),t,n,e,i,o)}function Yh(t,n){const e=t[n];return e===Vt?void 0:e}function PA(t,n,e,i,o,r){const s=n+e;return mn(t,s,o)?hr(t,s+1,r?i.call(r,o):i(o)):Yh(t,s+1)}function IA(t,n,e,i,o,r,s){const a=n+e;return Pl(t,a,o,r)?hr(t,a+2,s?i.call(s,o,r):i(o,r)):Yh(t,a+2)}function _(t,n){const e=$e();let i;const o=t+27;e.firstCreatePass?(i=function FZ(t,n){if(n)for(let e=n.length-1;e>=0;e--){const i=n[e];if(t===i.name)return i}}(n,e.pipeRegistry),e.data[o]=i,i.onDestroy&&(e.destroyHooks??=[]).push(o,i.onDestroy)):i=e.data[o];const r=i.factory||(i.factory=il(i.type)),a=mo(O);try{const l=Om(!1),d=r();return Om(l),function Hy(t,n,e,i){e>=t.data.length&&(t.data[e]=null,t.blueprint[e]=null),n[e]=i}(e,ne(),o,d),d}finally{mo(a)}}function v(t,n,e){const i=t+27,o=ne(),r=cl(o,i);return Xh(o,i)?PA(o,ji(),n,r.transform,e,r):r.transform(e)}function ue(t,n,e,i){const o=t+27,r=ne(),s=cl(r,o);return Xh(r,o)?IA(r,ji(),n,s.transform,e,i,s):s.transform(e,i)}function Xh(t,n){return t[1].data[n].pure}function Ul(t,n){return yg(t,n)}class hQ{ngModuleFactory;componentFactories;constructor(n,e){this.ngModuleFactory=n,this.componentFactories=e}}let fQ=(()=>{class t{compileModuleSync(e){return new mI(e)}compileModuleAsync(e){return Promise.resolve(this.compileModuleSync(e))}compileModuleAndAllComponentsSync(e){const i=this.compileModuleSync(e),r=Ur(Ar(e).declarations).reduce((s,a)=>{const l=kt(a);return l&&s.push(new Rh(l)),s},[]);return new hQ(i,r)}compileModuleAndAllComponentsAsync(e){return Promise.resolve(this.compileModuleAndAllComponentsSync(e))}clearCache(){}clearCacheFor(e){}getModuleId(e){}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),mQ=(()=>{class t{applicationErrorHandler=T(Nr);appRef=T(fr);taskService=T(ta);ngZone=T(Ce);zonelessEnabled=T(_m);tracing=T(da,{optional:!0});zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new gt;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(mm):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(T(XD,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{const e=this.taskService.add();this.runningTick||(this.cleanup(),this.zonelessEnabled&&!this.appRef.includeAllTestViews)?(this.switchToMicrotaskScheduler(),this.taskService.remove(e)):this.taskService.remove(e)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{const e=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(e)})})}notify(e){if(!this.zonelessEnabled&&5===e)return;switch(e){case 0:case 6:case 13:this.appRef.dirtyFlags|=2;break;case 3:case 2:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 12:this.appRef.dirtyFlags|=16;break;case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;const i=this.useMicrotaskScheduler?r7:GD;this.pendingRenderTaskId=this.taskService.add(),this.cancelScheduledCallback=this.scheduleInRootZone?Zone.root.run(()=>i(()=>this.tick())):this.ngZone.runOutsideAngular(()=>i(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||null!==this.pendingRenderTaskId||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(mm+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(0===this.appRef.dirtyFlags)return void this.cleanup();!this.zonelessEnabled&&7&this.appRef.dirtyFlags&&(this.appRef.dirtyFlags|=1);const e=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(i){this.applicationErrorHandler(i)}finally{this.taskService.remove(e),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,null!==this.pendingRenderTaskId){const e=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(e)}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const _a=new Z("",{factory:()=>T(_a,{optional:!0,skipSelf:!0})||function gQ(){return typeof $localize<"u"&&$localize.locale||Kg}()}),h_=Symbol("InputSignalNode#UNSET"),NR={...sy,transformFn:void 0,applyValueToInputSignal(t,n){Vp(t,n)}};function LR(t,n){const e=Object.create(NR);function i(){if(Nu(e),e.value===h_)throw new X(-950,null);return e.value}return e.value=t,e.transformFn=n?.transform,i[Fn]=e,i}class tf{attributeName;constructor(n){this.attributeName=n}__NG_ELEMENT_ID__=()=>lh(this.attributeName);toString(){return`HostAttributeToken ${this.attributeName}`}}function BR(t,n){return LR(t,n)}const uee=(BR.required=function dee(t){return LR(h_,t)},BR);function VR(t,n){return lI()}const f_=(VR.required=function hee(t,n){return cI()},VR);function HR(t,n){return lI()}const pee=(HR.required=function fee(t,n){return cI()},HR);let gee=(()=>{class t{zone=T(Ce);changeDetectionScheduler=T(fl);applicationRef=T(fr);applicationErrorHandler=T(Nr);_onMicrotaskEmptySubscription;initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler.runningTick||this.zone.run(()=>{try{this.applicationRef.dirtyFlags|=1,this.applicationRef._tick()}catch(e){this.applicationErrorHandler(e)}})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const _ee=new Z("",{factory:()=>!1});function $R(t){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:t?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:t?.runCoalescing??!1}}let yee=(()=>{class t{subscription=new gt;initialized=!1;zone=T(Ce);pendingTasks=T(ta);initialize(){if(this.initialized)return;this.initialized=!0;let e=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(e=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{Ce.assertNotInAngularZone(),queueMicrotask(()=>{null!==e&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(e),e=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{Ce.assertInAngularZone(),e??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const p_=new Z(""),kee=new Z("");function nf(t){return!t.moduleRef}let qR;function KR(){qR=See}function See(t,n){const e=t.injector.get(fr);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(i=>e.bootstrap(i));else{if(!t.instance.ngDoBootstrap)throw new X(-403,!1);t.instance.ngDoBootstrap(e)}n.push(t)}let YR=(()=>{class t{_injector;_modules=[];_destroyListeners=[];_destroyed=!1;constructor(e){this._injector=e}bootstrapModuleFactory(e,i){const o=[[{provide:fl,useExisting:mQ},{provide:Ce,useClass:d7},{provide:_m,useValue:!0}],...i?.applicationProviders??[],f7],r=function Dq(t,n,e){return new u0(t,n,e,!1)}(e.moduleType,this.injector,o);return KR(),function GR(t){const n=nf(t)?t.r3Injector:t.moduleRef.injector,e=n.get(Ce);return e.run(()=>{nf(t)?t.r3Injector.resolveInjectorInitializers():t.moduleRef.resolveInjectorInitializers();const i=n.get(Nr);let o;if(e.runOutsideAngular(()=>{o=e.onError.subscribe({next:i})}),nf(t)){const r=()=>n.destroy(),s=t.platformInjector.get(p_);s.add(r),n.onDestroy(()=>{o.unsubscribe(),s.delete(r)})}else{const r=()=>t.moduleRef.destroy(),s=t.platformInjector.get(p_);s.add(r),t.moduleRef.onDestroy(()=>{jg(t.allPlatformModules,t.moduleRef),o.unsubscribe(),s.delete(r)})}return function Mee(t,n,e){try{const i=e();return Hh(i)?i.catch(o=>{throw n.runOutsideAngular(()=>t(o)),o}):i}catch(i){throw n.runOutsideAngular(()=>t(i)),i}}(i,e,()=>{const r=n.get(ta),s=r.add(),a=n.get(aO);return a.runInitializers(),a.donePromise.then(()=>{if(function oX(t){"string"==typeof t&&(TO=t.toLowerCase().replace(/_/g,"-"))}(n.get(_a,Kg)||Kg),!n.get(kee,!0))return nf(t)?n.get(fr):(t.allPlatformModules.push(t.moduleRef),t.moduleRef);if(nf(t)){const f=n.get(fr);return void 0!==t.rootComponent&&f.bootstrap(t.rootComponent),f}return qR?.(t.moduleRef,t.allPlatformModules),t.moduleRef}).finally(()=>{r.remove(s)})})})}({moduleRef:r,allPlatformModules:this._modules,platformInjector:this.injector})}bootstrapModule(e,i=[]){const o=cO({},i);return KR(),function mee(t,n,e){const i=new mI(e);return Promise.resolve(i)}(0,0,e).then(r=>this.bootstrapModuleFactory(r,o))}onDestroy(e){this._destroyListeners.push(e)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new X(404,!1);this._modules.slice().forEach(i=>i.destroy()),this._destroyListeners.forEach(i=>i());const e=this._injector.get(p_,null);e&&(e.forEach(i=>i()),e.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}static \u0275fac=function(i){return new(i||t)(ce(Ue))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})(),zd=null;function XR(t,n,e=[]){const i=`Platform: ${n}`,o=new Z(i);return(r=[])=>{let s=m_();if(!s){const a=[...e,...r,{provide:o,useValue:!0}];s=t?.(a)??function Dee(t){if(m_())throw new X(400,!1);(function QK(){!function FH(t){NM=t}(()=>{throw new X(600,"")})})(),zd=t;const n=t.get(YR);return function QR(t){const n=t.get(b2,null);io(t,()=>{n?.forEach(e=>e())})}(t),n}(function ZR(t=[],n){return Ue.create({name:n,providers:[{provide:Ay,useValue:"platform"},{provide:p_,useValue:new Set([()=>zd=null])},...t]})}(a,i))}return function Tee(){const n=m_();if(!n)throw new X(-401,!1);return n}()}}function m_(){return zd?.get(YR)??null}let Dt=(()=>class t{static __NG_ELEMENT_ID__=jee})();function jee(t){return function $ee(t,n,e){if(Fr(t)&&!e){const i=ro(t.index,n);return new kh(i,i)}return 175&t.type?new kh(n[15],n):null}(He(),ne(),!(16&~t))}class sF{supports(n){return Ig(n)}create(n){return new Gee(n)}}const Wee=(t,n)=>n;class Gee{length=0;collection;_linkedRecords=null;_unlinkedRecords=null;_previousItHead=null;_itHead=null;_itTail=null;_additionsHead=null;_additionsTail=null;_movesHead=null;_movesTail=null;_removalsHead=null;_removalsTail=null;_identityChangesHead=null;_identityChangesTail=null;_trackByFn;constructor(n){this._trackByFn=n||Wee}forEachItem(n){let e;for(e=this._itHead;null!==e;e=e._next)n(e)}forEachOperation(n){let e=this._itHead,i=this._removalsHead,o=0,r=null;for(;e||i;){const s=!i||e&&e.currentIndex{s=this._trackByFn(o,a),null!==e&&Object.is(e.trackById,s)?(i&&(e=this._verifyReinsertion(e,a,s,o)),Object.is(e.item,a)||this._addIdentityChange(e,a)):(e=this._mismatch(e,a,s,o),i=!0),e=e._next,o++}),this.length=o;return this._truncate(e),this.collection=n,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let n;for(n=this._previousItHead=this._itHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._additionsHead;null!==n;n=n._nextAdded)n.previousIndex=n.currentIndex;for(this._additionsHead=this._additionsTail=null,n=this._movesHead;null!==n;n=n._nextMoved)n.previousIndex=n.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(n,e,i,o){let r;return null===n?r=this._itTail:(r=n._prev,this._remove(n)),null!==(n=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null))?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._reinsertAfter(n,r,o)):null!==(n=null===this._linkedRecords?null:this._linkedRecords.get(i,o))?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._moveAfter(n,r,o)):n=this._addAfter(new qee(e,i),r,o),n}_verifyReinsertion(n,e,i,o){let r=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null);return null!==r?n=this._reinsertAfter(r,n._prev,o):n.currentIndex!=o&&(n.currentIndex=o,this._addToMoves(n,o)),n}_truncate(n){for(;null!==n;){const e=n._next;this._addToRemovals(this._unlink(n)),n=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(n,e,i){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(n);const o=n._prevRemoved,r=n._nextRemoved;return null===o?this._removalsHead=r:o._nextRemoved=r,null===r?this._removalsTail=o:r._prevRemoved=o,this._insertAfter(n,e,i),this._addToMoves(n,i),n}_moveAfter(n,e,i){return this._unlink(n),this._insertAfter(n,e,i),this._addToMoves(n,i),n}_addAfter(n,e,i){return this._insertAfter(n,e,i),this._additionsTail=null===this._additionsTail?this._additionsHead=n:this._additionsTail._nextAdded=n,n}_insertAfter(n,e,i){const o=null===e?this._itHead:e._next;return n._next=o,n._prev=e,null===o?this._itTail=n:o._prev=n,null===e?this._itHead=n:e._next=n,null===this._linkedRecords&&(this._linkedRecords=new aF),this._linkedRecords.put(n),n.currentIndex=i,n}_remove(n){return this._addToRemovals(this._unlink(n))}_unlink(n){null!==this._linkedRecords&&this._linkedRecords.remove(n);const e=n._prev,i=n._next;return null===e?this._itHead=i:e._next=i,null===i?this._itTail=e:i._prev=e,n}_addToMoves(n,e){return n.previousIndex===e||(this._movesTail=null===this._movesTail?this._movesHead=n:this._movesTail._nextMoved=n),n}_addToRemovals(n){return null===this._unlinkedRecords&&(this._unlinkedRecords=new aF),this._unlinkedRecords.put(n),n.currentIndex=null,n._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=n,n._prevRemoved=null):(n._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=n),n}_addIdentityChange(n,e){return n.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=n:this._identityChangesTail._nextIdentityChange=n,n}}class qee{item;trackById;currentIndex=null;previousIndex=null;_nextPrevious=null;_prev=null;_next=null;_prevDup=null;_nextDup=null;_prevRemoved=null;_nextRemoved=null;_nextAdded=null;_nextMoved=null;_nextIdentityChange=null;constructor(n,e){this.item=n,this.trackById=e}}class Kee{_head=null;_tail=null;add(n){null===this._head?(this._head=this._tail=n,n._nextDup=null,n._prevDup=null):(this._tail._nextDup=n,n._prevDup=this._tail,n._nextDup=null,this._tail=n)}get(n,e){let i;for(i=this._head;null!==i;i=i._nextDup)if((null===e||e<=i.currentIndex)&&Object.is(i.trackById,n))return i;return null}remove(n){const e=n._prevDup,i=n._nextDup;return null===e?this._head=i:e._nextDup=i,null===i?this._tail=e:i._prevDup=e,null===this._head}}class aF{map=new Map;put(n){const e=n.trackById;let i=this.map.get(e);i||(i=new Kee,this.map.set(e,i)),i.add(n)}get(n,e){const o=this.map.get(n);return o?o.get(n,e):null}remove(n){const e=n.trackById;return this.map.get(e).remove(n)&&this.map.delete(e),n}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function lF(t,n,e){const i=t.previousIndex;if(null===i)return i;let o=0;return e&&i{class t{factories;static \u0275prov=te({token:t,providedIn:"root",factory:dF});constructor(e){this.factories=e}static create(e,i){if(null!=i){const o=i.factories.slice();e=e.concat(o)}return new t(e)}static extend(e){return{provide:t,useFactory:()=>{const i=T(t,{optional:!0,skipSelf:!0});return t.create(e,i||dF())}}}find(e){const i=this.factories.find(o=>o.supports(e));if(null!=i)return i;throw new X(901,!1)}}return t})();const Jee=XR(null,"core",[]);let ete=(()=>{class t{constructor(e){}static \u0275fac=function(i){return new(i||t)(ce(fr))};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function Te(t){return"boolean"==typeof t?t:null!=t&&"false"!==t}function _r(t,n=NaN){return isNaN(parseFloat(t))||isNaN(Number(t))?n:Number(t)}const pw=Symbol("NOT_SET"),yF=new Set,fte={...sy,kind:"afterRenderEffectPhase",consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,value:pw,cleanup:null,consumerMarkedDirty(){if(this.sequence.impl.executing){if(null===this.sequence.lastPhase||this.sequence.lastPhase(Nu(d),d.value),d.signal[Fn]=d,d.registerCleanupFn=f=>(d.cleanup??=new Set).add(f),this.nodes[a]=d,this.hooks[a]=f=>d.phaseFn(f)}}afterRun(){super.afterRun(),this.lastPhase=null}destroy(){if(null!==this.onDestroyFns)for(const n of this.onDestroyFns)n();super.destroy();for(const n of this.nodes)if(n)try{for(const e of n.cleanup??yF)e()}finally{Vu(n)}}}function CF(t,n){const e=kt(t),i=n.elementInjector||rm();return new Rh(e).create(i,n.projectableNodes,n.hostElement,n.environmentInjector,n.directives,n.bindings)}function wF(t,n,e){const i=Object.create(Cte);i.source=t,i.computation=n,null!=e&&(i.equal=e);const r=()=>{if(Lu(i),Nu(i),i.value===hs)throw i.error;return i.value};return r[Fn]=i,r}const Cte={...Vc,value:Ya,dirty:!0,error:null,equal:ry,kind:"linkedSignal",producerMustRecompute:t=>t.value===Ya||t.value===zc,producerRecomputeValue(t){if(t.value===zc)throw new Error("");const n=t.value;t.value=zc;const e=Hc(t);let i;try{const o=t.source();i=t.computation(o,n===Ya||n===hs?void 0:{source:t.sourceValue,value:n}),t.sourceValue=o}catch(o){i=hs,t.error=o}finally{Bu(t,e)}n!==Ya&&i!==hs&&t.equal(n,i)?t.value=n:(t.value=i,t.version++)}};function it(t){return function wte(t){const n=Pe(null);try{return t()}finally{Pe(n)}}(t)}function Fi(t,n){return FM(t,n?.equal)}const Ete=t=>t;function SF(t,n){const e=t[Fn],i=t;return i.set=o=>function vte(t,n){Lu(t),Vp(t,n),Np(t)}(e,o),i.update=o=>function yte(t,n){if(Lu(t),t.value===hs)throw t.error;BM(t,n),Np(t)}(e,o),i.asReadonly=n1.bind(t),i}function bw(t,n){return t?n?t.endsWith("/")?n.startsWith("/")?t+n.slice(1):t+n:n.startsWith("/")?t+n:`${t}/${n}`:t:n}function TF(t){const n=t.search(/#|\?|$/);return"/"===t[n-1]?t.slice(0,n-1)+t.slice(n):t}function Es(t){return t&&"?"!==t[0]?`?${t}`:t}Error,Error;let Wl=(()=>{class t{historyGo(e){throw new Error("")}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>T(PF),providedIn:"root"})}return t})();const EF=new Z("");let PF=(()=>{class t extends Wl{_platformLocation;_baseHref;_removeListenerFns=[];constructor(e,i){super(),this._platformLocation=e,this._baseHref=i??this._platformLocation.getBaseHrefFromDOM()??T(et).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}prepareExternalUrl(e){return bw(this._baseHref,e)}path(e=!1){const i=this._platformLocation.pathname+Es(this._platformLocation.search),o=this._platformLocation.hash;return o&&e?`${i}${o}`:i}pushState(e,i,o,r){const s=this.prepareExternalUrl(o+Es(r));this._platformLocation.pushState(e,i,s)}replaceState(e,i,o,r){const s=this.prepareExternalUrl(o+Es(r));this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static \u0275fac=function(i){return new(i||t)(ce(ym),ce(EF,8))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),jd=(()=>{class t{_subject=new be;_basePath;_locationStrategy;_urlChangeListeners=[];_urlChangeSubscription=null;constructor(e){this._locationStrategy=e;const i=this._locationStrategy.getBaseHref();this._basePath=function Hte(t){if(new RegExp("^(https?:)?//").test(t)){const[,e]=t.split(/\/\/[^\/]+/);return e}return t}(TF(IF(i))),this._locationStrategy.onPopState(o=>{this._subject.next({url:this.path(!0),pop:!0,state:o.state,type:o.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(e=!1){return this.normalize(this._locationStrategy.path(e))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(e,i=""){return this.path()==this.normalize(e+Es(i))}normalize(e){return t.stripTrailingSlash(function Vte(t,n){if(!t||!n.startsWith(t))return n;const e=n.substring(t.length);return""===e||["/",";","?","#"].includes(e[0])?e:n}(this._basePath,IF(e)))}prepareExternalUrl(e){return e&&"/"!==e[0]&&(e="/"+e),this._locationStrategy.prepareExternalUrl(e)}go(e,i="",o=null){this._locationStrategy.pushState(o,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Es(i)),o)}replaceState(e,i="",o=null){this._locationStrategy.replaceState(o,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Es(i)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(e=0){this._locationStrategy.historyGo?.(e)}onUrlChange(e){return this._urlChangeListeners.push(e),this._urlChangeSubscription??=this.subscribe(i=>{this._notifyUrlChangeListeners(i.url,i.state)}),()=>{const i=this._urlChangeListeners.indexOf(e);this._urlChangeListeners.splice(i,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(e="",i){this._urlChangeListeners.forEach(o=>o(e,i))}subscribe(e,i,o){return this._subject.subscribe({next:e,error:i??void 0,complete:o??void 0})}static normalizeQueryParams=Es;static joinWithSlash=bw;static stripTrailingSlash=TF;static \u0275fac=function(i){return new(i||t)(ce(Wl))};static \u0275prov=te({token:t,factory:()=>function Bte(){return new jd(ce(Wl))}(),providedIn:"root"})}return t})();function IF(t){return t.replace(/\/index.html$/,"")}let zte=(()=>{class t extends Wl{_platformLocation;_baseHref="";_removeListenerFns=[];constructor(e,i){super(),this._platformLocation=e,null!=i&&(this._baseHref=i)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}path(e=!1){const i=this._platformLocation.hash??"#";return i.length>0?i.substring(1):i}prepareExternalUrl(e){const i=bw(this._baseHref,e);return i.length>0?"#"+i:i}pushState(e,i,o,r){const s=this.prepareExternalUrl(o+Es(r))||this._platformLocation.pathname;this._platformLocation.pushState(e,i,s)}replaceState(e,i,o,r){const s=this.prepareExternalUrl(o+Es(r))||this._platformLocation.pathname;this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static \u0275fac=function(i){return new(i||t)(ce(ym),ce(EF,8))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();var C_=function(t){return t[t.Decimal=0]="Decimal",t[t.Percent=1]="Percent",t[t.Currency=2]="Currency",t[t.Scientific=3]="Scientific",t}(C_||{}),lo=function(t){return t[t.Format=0]="Format",t[t.Standalone=1]="Standalone",t}(lo||{}),rn=function(t){return t[t.Narrow=0]="Narrow",t[t.Abbreviated=1]="Abbreviated",t[t.Wide=2]="Wide",t[t.Short=3]="Short",t}(rn||{}),Io=function(t){return t[t.Short=0]="Short",t[t.Medium=1]="Medium",t[t.Long=2]="Long",t[t.Full=3]="Full",t}(Io||{});function w_(t,n){return $o(so(t)[gn.DateFormat],n)}function x_(t,n){return $o(so(t)[gn.TimeFormat],n)}function k_(t,n){return $o(so(t)[gn.DateTimeFormat],n)}function jo(t,n){const e=so(t),i=e[gn.NumberSymbols][n];if(typeof i>"u"){if(12===n)return e[gn.NumberSymbols][0];if(13===n)return e[gn.NumberSymbols][1]}return i}function AF(t){if(!t[gn.ExtraData])throw new X(2303,!1)}function $o(t,n){for(let e=n;e>-1;e--)if(typeof t[e]<"u")return t[e];throw new X(2304,!1)}function yw(t){const[n,e]=t.split(":");return{hours:+n,minutes:+e}}const nne=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,S_={},ine=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?: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}|c{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]*)/;function RF(t,n,e,i){let o=function hne(t){if(LF(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[o,r=1,s=1]=t.split("-").map(a=>+a);return M_(o,r-1,s)}const e=parseFloat(t);if(!isNaN(t-e))return new Date(e);let i;if(i=t.match(nne))return function fne(t){const n=new Date(0);let e=0,i=0;const o=t[8]?n.setUTCFullYear:n.setFullYear,r=t[8]?n.setUTCHours:n.setHours;t[9]&&(e=Number(t[9]+t[10]),i=Number(t[9]+t[11])),o.call(n,Number(t[1]),Number(t[2])-1,Number(t[3]));const s=Number(t[4]||0)-e,a=Number(t[5]||0)-i,l=Number(t[6]||0),d=Math.floor(1e3*parseFloat("0."+(t[7]||0)));return r.call(n,s,a,l,d),n}(i)}const n=new Date(t);if(!LF(n))throw new X(2311,!1);return n}(t);n=Ps(e,n)||n;let a,s=[];for(;n;){if(a=ine.exec(n),!a){s.push(n);break}{s=s.concat(a.slice(1));const f=s.pop();if(!f)break;n=f}}let l=o.getTimezoneOffset();i&&(l=NF(i,l),o=function une(t,n){const o=t.getTimezoneOffset();return function dne(t,n){return(t=new Date(t.getTime())).setMinutes(t.getMinutes()+n),t}(t,-1*(NF(n,o)-o))}(o,i));let d="";return s.forEach(f=>{const m=function cne(t){if(ww[t])return ww[t];let n;switch(t){case"G":case"GG":case"GGG":n=an(3,rn.Abbreviated);break;case"GGGG":n=an(3,rn.Wide);break;case"GGGGG":n=an(3,rn.Narrow);break;case"y":n=ni(0,1,0,!1,!0);break;case"yy":n=ni(0,2,0,!0,!0);break;case"yyy":n=ni(0,3,0,!1,!0);break;case"yyyy":n=ni(0,4,0,!1,!0);break;case"Y":n=P_(1);break;case"YY":n=P_(2,!0);break;case"YYY":n=P_(3);break;case"YYYY":n=P_(4);break;case"M":case"L":n=ni(1,1,1);break;case"MM":case"LL":n=ni(1,2,1);break;case"MMM":n=an(2,rn.Abbreviated);break;case"MMMM":n=an(2,rn.Wide);break;case"MMMMM":n=an(2,rn.Narrow);break;case"LLL":n=an(2,rn.Abbreviated,lo.Standalone);break;case"LLLL":n=an(2,rn.Wide,lo.Standalone);break;case"LLLLL":n=an(2,rn.Narrow,lo.Standalone);break;case"w":n=Cw(1);break;case"ww":n=Cw(2);break;case"W":n=Cw(1,!0);break;case"d":n=ni(2,1);break;case"dd":n=ni(2,2);break;case"c":case"cc":n=ni(7,1);break;case"ccc":n=an(1,rn.Abbreviated,lo.Standalone);break;case"cccc":n=an(1,rn.Wide,lo.Standalone);break;case"ccccc":n=an(1,rn.Narrow,lo.Standalone);break;case"cccccc":n=an(1,rn.Short,lo.Standalone);break;case"E":case"EE":case"EEE":n=an(1,rn.Abbreviated);break;case"EEEE":n=an(1,rn.Wide);break;case"EEEEE":n=an(1,rn.Narrow);break;case"EEEEEE":n=an(1,rn.Short);break;case"a":case"aa":case"aaa":n=an(0,rn.Abbreviated);break;case"aaaa":n=an(0,rn.Wide);break;case"aaaaa":n=an(0,rn.Narrow);break;case"b":case"bb":case"bbb":n=an(0,rn.Abbreviated,lo.Standalone,!0);break;case"bbbb":n=an(0,rn.Wide,lo.Standalone,!0);break;case"bbbbb":n=an(0,rn.Narrow,lo.Standalone,!0);break;case"B":case"BB":case"BBB":n=an(0,rn.Abbreviated,lo.Format,!0);break;case"BBBB":n=an(0,rn.Wide,lo.Format,!0);break;case"BBBBB":n=an(0,rn.Narrow,lo.Format,!0);break;case"h":n=ni(3,1,-12);break;case"hh":n=ni(3,2,-12);break;case"H":n=ni(3,1);break;case"HH":n=ni(3,2);break;case"m":n=ni(4,1);break;case"mm":n=ni(4,2);break;case"s":n=ni(5,1);break;case"ss":n=ni(5,2);break;case"S":n=ni(6,1);break;case"SS":n=ni(6,2);break;case"SSS":n=ni(6,3);break;case"Z":case"ZZ":case"ZZZ":n=T_(0);break;case"ZZZZZ":n=T_(3);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":n=T_(1);break;case"OOOO":case"ZZZZ":case"zzzz":n=T_(2);break;default:return null}return ww[t]=n,n}(f);d+=m?m(o,e,l):"''"===f?"'":f.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),d}function M_(t,n,e){const i=new Date(0);return i.setFullYear(t,n,e),i.setHours(0,0,0),i}function Ps(t,n){const e=function $te(t){return so(t)[gn.LocaleId]}(t);if(S_[e]??={},S_[e][n])return S_[e][n];let i="";switch(n){case"shortDate":i=w_(t,Io.Short);break;case"mediumDate":i=w_(t,Io.Medium);break;case"longDate":i=w_(t,Io.Long);break;case"fullDate":i=w_(t,Io.Full);break;case"shortTime":i=x_(t,Io.Short);break;case"mediumTime":i=x_(t,Io.Medium);break;case"longTime":i=x_(t,Io.Long);break;case"fullTime":i=x_(t,Io.Full);break;case"short":const o=Ps(t,"shortTime"),r=Ps(t,"shortDate");i=D_(k_(t,Io.Short),[o,r]);break;case"medium":const s=Ps(t,"mediumTime"),a=Ps(t,"mediumDate");i=D_(k_(t,Io.Medium),[s,a]);break;case"long":const l=Ps(t,"longTime"),d=Ps(t,"longDate");i=D_(k_(t,Io.Long),[l,d]);break;case"full":const f=Ps(t,"fullTime"),m=Ps(t,"fullDate");i=D_(k_(t,Io.Full),[f,m])}return i&&(S_[e][n]=i),i}function D_(t,n){return n&&(t=t.replace(/\{([^}]+)}/g,function(e,i){return null!=n&&i in n?n[i]:e})),t}function br(t,n,e="-",i,o){let r="";(t<0||o&&t<=0)&&(o?t=1-t:(t=-t,r=e));let s=String(t);for(;s.length0||a>-e)&&(a+=e),3===t)0===a&&-12===e&&(a=12);else if(6===t)return function one(t,n){return br(t,3).substring(0,n)}(a,n);const l=jo(s,5);return br(a,n,l,i,o)}}function an(t,n,e=lo.Format,i=!1){return function(o,r){return function sne(t,n,e,i,o,r){switch(e){case 2:return function qte(t,n,e){const i=so(t),r=$o([i[gn.MonthsFormat],i[gn.MonthsStandalone]],n);return $o(r,e)}(n,o,i)[t.getMonth()];case 1:return function Gte(t,n,e){const i=so(t),r=$o([i[gn.DaysFormat],i[gn.DaysStandalone]],n);return $o(r,e)}(n,o,i)[t.getDay()];case 0:const s=t.getHours(),a=t.getMinutes();if(r){const d=function Zte(t){const n=so(t);return AF(n),(n[gn.ExtraData][2]||[]).map(i=>"string"==typeof i?yw(i):[yw(i[0]),yw(i[1])])}(n),f=function Qte(t,n,e){const i=so(t);AF(i);const r=$o([i[gn.ExtraData][0],i[gn.ExtraData][1]],n)||[];return $o(r,e)||[]}(n,o,i),m=d.findIndex(g=>{if(Array.isArray(g)){const[b,w]=g,M=s>=b.hours&&a>=b.minutes,E=s0?Math.floor(o/60):Math.ceil(o/60);switch(t){case 0:return(o>=0?"+":"")+br(s,2,r)+br(Math.abs(o%60),2,r);case 1:return"GMT"+(o>=0?"+":"")+br(s,1,r);case 2:return"GMT"+(o>=0?"+":"")+br(s,2,r)+":"+br(Math.abs(o%60),2,r);case 3:return 0===i?"Z":(o>=0?"+":"")+br(s,2,r)+":"+br(Math.abs(o%60),2,r);default:throw new X(2310,!1)}}}function FF(t){const n=t.getDay(),e=0===n?-3:4-n;return M_(t.getFullYear(),t.getMonth(),t.getDate()+e)}function Cw(t,n=!1){return function(e,i){let o;if(n){const r=new Date(e.getFullYear(),e.getMonth(),1).getDay()-1,s=e.getDate();o=1+Math.floor((s+r)/7)}else{const r=FF(e),s=function lne(t){const n=M_(t,0,1).getDay();return M_(t,0,1+(n<=4?4:11)-n)}(r.getFullYear()),a=r.getTime()-s.getTime();o=1+Math.round(a/6048e5)}return br(o,t,jo(i,5))}}function P_(t,n=!1){return function(e,i){return br(FF(e).getFullYear(),t,jo(i,5),n)}}const ww={};function NF(t,n){t=t.replace(/:/g,"");const e=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(e)?n:e}function LF(t){return t instanceof Date&&!isNaN(t.valueOf())}const pne=/^(\d+)?\.((\d+)(-(\d+))?)?$/;function Mw(t){const n=parseInt(t);if(isNaN(n))throw new X(2305,!1);return n}const Tw=/\s+/,UF=[];let Ft=(()=>{class t{_ngEl;_renderer;initialClasses=UF;rawClass;stateMap=new Map;constructor(e,i){this._ngEl=e,this._renderer=i}set klass(e){this.initialClasses=null!=e?e.trim().split(Tw):UF}set ngClass(e){this.rawClass="string"==typeof e?e.trim().split(Tw):e}ngDoCheck(){for(const i of this.initialClasses)this._updateState(i,!0);const e=this.rawClass;if(Array.isArray(e)||e instanceof Set)for(const i of e)this._updateState(i,!0);else if(null!=e)for(const i of Object.keys(e))this._updateState(i,!!e[i]);this._applyStateDiff()}_updateState(e,i){const o=this.stateMap.get(e);void 0!==o?(o.enabled!==i&&(o.changed=!0,o.enabled=i),o.touched=!0):this.stateMap.set(e,{enabled:i,changed:!0,touched:!0})}_applyStateDiff(){for(const e of this.stateMap){const i=e[0],o=e[1];o.changed?(this._toggleClass(i,o.enabled),o.changed=!1):o.touched||(o.enabled&&this._toggleClass(i,!1),this.stateMap.delete(i)),o.touched=!1}}_toggleClass(e,i){(e=e.trim()).length>0&&e.split(Tw).forEach(o=>{i?this._renderer.addClass(this._ngEl.nativeElement,o):this._renderer.removeClass(this._ngEl.nativeElement,o)})}static \u0275fac=function(i){return new(i||t)(O(Ne),O(ei))};static \u0275dir=de({type:t,selectors:[["","ngClass",""]],inputs:{klass:[0,"class","klass"],ngClass:"ngClass"}})}return t})();class Dne{$implicit;ngForOf;index;count;constructor(n,e,i,o){this.$implicit=n,this.ngForOf=e,this.index=i,this.count=o}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 zF=(()=>{class t{_viewContainer;_template;_differs;set ngForOf(e){this._ngForOf=e,this._ngForOfDirty=!0}set ngForTrackBy(e){this._trackByFn=e}get ngForTrackBy(){return this._trackByFn}_ngForOf=null;_ngForOfDirty=!0;_differ=null;_trackByFn;constructor(e,i,o){this._viewContainer=e,this._template=i,this._differs=o}set ngForTemplate(e){e&&(this._template=e)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const e=this._ngForOf;!this._differ&&e&&(this._differ=this._differs.find(e).create(this.ngForTrackBy))}if(this._differ){const e=this._differ.diff(this._ngForOf);e&&this._applyChanges(e)}}_applyChanges(e){const i=this._viewContainer;e.forEachOperation((o,r,s)=>{if(null==o.previousIndex)i.createEmbeddedView(this._template,new Dne(o.item,this._ngForOf,-1,-1),null===s?void 0:s);else if(null==s)i.remove(null===r?void 0:r);else if(null!==r){const a=i.get(r);i.move(a,s),jF(a,o)}});for(let o=0,r=i.length;o{jF(i.get(o.currentIndex),o)})}static ngTemplateContextGuard(e,i){return!0}static \u0275fac=function(i){return new(i||t)(O(Ai),O(Oi),O(__))};static \u0275dir=de({type:t,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"}})}return t})();function jF(t,n){t.context.$implicit=n.item}let lf=(()=>{class t{_viewContainer;_context=new Tne;_thenTemplateRef=null;_elseTemplateRef=null;_thenViewRef=null;_elseViewRef=null;constructor(e,i){this._viewContainer=e,this._thenTemplateRef=i}set ngIf(e){this._context.$implicit=this._context.ngIf=e,this._updateView()}set ngIfThen(e){$F(e),this._thenTemplateRef=e,this._thenViewRef=null,this._updateView()}set ngIfElse(e){$F(e),this._elseTemplateRef=e,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 ngIfUseIfTypeGuard;static ngTemplateGuard_ngIf;static ngTemplateContextGuard(e,i){return!0}static \u0275fac=function(i){return new(i||t)(O(Ai),O(Oi))};static \u0275dir=de({type:t,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"}})}return t})();class Tne{$implicit=null;ngIf=null}function $F(t,n){if(t&&!t.createEmbeddedView)throw new X(2020,!1)}let Wd=(()=>{class t{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;injector=T(Ue);constructor(e){this._viewContainerRef=e}ngOnChanges(e){if(this._shouldRecreateView(e)){const i=this._viewContainerRef;if(this._viewRef&&i.remove(i.indexOf(this._viewRef)),!this.ngTemplateOutlet)return void(this._viewRef=null);const o=this._createContextForwardProxy();this._viewRef=i.createEmbeddedView(this.ngTemplateOutlet,o,{injector:this._getInjector()})}}_getInjector(){return"outlet"===this.ngTemplateOutletInjector?this.injector:this.ngTemplateOutletInjector??void 0}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,i,o)=>!!this.ngTemplateOutletContext&&Reflect.set(this.ngTemplateOutletContext,i,o),get:(e,i,o)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,i,o)}})}static \u0275fac=function(i){return new(i||t)(O(Ai))};static \u0275dir=de({type:t,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},features:[vi]})}return t})();function Is(t,n){return new X(2100,!1)}const jne=new Z(""),$ne=new Z("");let vr=(()=>{class t{locale;defaultTimezone;defaultOptions;constructor(e,i,o){this.locale=e,this.defaultTimezone=i,this.defaultOptions=o}transform(e,i,o,r){if(null==e||""===e||e!=e)return null;try{return RF(e,i??this.defaultOptions?.dateFormat??"mediumDate",r||this.locale,o??this.defaultOptions?.timezone??this.defaultTimezone??void 0)}catch(s){throw Is()}}static \u0275fac=function(i){return new(i||t)(O(_a,16),O(jne,24),O($ne,24))};static \u0275pipe=Gi({name:"date",type:t,pure:!0})}return t})(),Gl=(()=>{class t{_locale;constructor(e){this._locale=e}transform(e,i,o){if(!function Ow(t){return!(null==t||""===t||t!=t)}(e))return null;o||=this._locale;try{return function yne(t,n,e){return function kw(t,n,e,i,o,r,s=!1){let a="",l=!1;if(isFinite(t)){let d=function wne(t){let i,o,r,s,a,n=Math.abs(t)+"",e=0;for((o=n.indexOf("."))>-1&&(n=n.replace(".","")),(r=n.search(/e/i))>0?(o<0&&(o=r),o+=+n.slice(r+1),n=n.substring(0,r)):o<0&&(o=n.length),r=0;"0"===n.charAt(r);r++);if(r===(a=n.length))i=[0],o=1;else{for(a--;"0"===n.charAt(a);)a--;for(o-=r,i=[],s=0;r<=a;r++,s++)i[s]=Number(n.charAt(r))}return o>22&&(i=i.splice(0,21),e=o-1,o=1),{digits:i,exponent:e,integerLen:o}}(t);s&&(d=function Cne(t){if(0===t.digits[0])return t;const n=t.digits.length-t.integerLen;return t.exponent?t.exponent+=2:(0===n?t.digits.push(0,0):1===n&&t.digits.push(0),t.integerLen+=2),t}(d));let f=n.minInt,m=n.minFrac,g=n.maxFrac;if(r){const A=r.match(pne);if(null===A)throw new X(2306,!1);const W=A[1],q=A[3],Y=A[5];null!=W&&(f=Mw(W)),null!=q&&(m=Mw(q)),null!=Y?g=Mw(Y):null!=q&&m>g&&(g=m)}!function xne(t,n,e){if(n>e)throw new X(2307,!1);let i=t.digits,o=i.length-t.integerLen;const r=Math.min(Math.max(n,o),e);let s=r+t.integerLen,a=i[s];if(s>0){i.splice(Math.max(t.integerLen,s));for(let m=s;m=5)if(s-1<0){for(let m=0;m>s;m--)i.unshift(0),t.integerLen++;i.unshift(1),t.integerLen++}else i[s-1]++;for(;o=d?w.pop():l=!1),g>=10?1:0},0);f&&(i.unshift(f),t.integerLen++)}(d,m,g);let b=d.digits,w=d.integerLen;const M=d.exponent;let E=[];for(l=b.every(A=>!A);w0?E=b.splice(w,b.length):(E=b,b=[0]);const I=[];for(b.length>=n.lgSize&&I.unshift(b.splice(-n.lgSize,b.length).join(""));b.length>n.gSize;)I.unshift(b.splice(-n.gSize,b.length).join(""));b.length&&I.unshift(b.join("")),a=I.join(jo(e,i)),E.length&&(a+=jo(e,o)+E.join("")),M&&(a+=jo(e,6)+"+"+M)}else a=jo(e,9);return a=t<0&&!l?n.negPre+a+n.negSuf:n.posPre+a+n.posSuf,a}(t,function Sw(t,n="-"){const e={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},i=t.split(";"),o=i[0],r=i[1],s=-1!==o.indexOf(".")?o.split("."):[o.substring(0,o.lastIndexOf("0")+1),o.substring(o.lastIndexOf("0")+1)],a=s[0],l=s[1]||"";e.posPre=a.substring(0,a.indexOf("#"));for(let f=0;f{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();class qF{_doc;constructor(n){this._doc=n}manager}let Rw=(()=>{class t extends qF{constructor(e){super(e)}supports(e){return!0}addEventListener(e,i,o,r){return e.addEventListener(i,o,r),()=>this.removeEventListener(e,i,o,r)}removeEventListener(e,i,o,r){return e.removeEventListener(i,o,r)}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const Fw=new Z("");let KF=(()=>{class t{_zone;_plugins;_eventNameToPlugin=new Map;constructor(e,i){this._zone=i,e.forEach(s=>{s.manager=this});const o=e.filter(s=>!(s instanceof Rw));this._plugins=o.slice().reverse();const r=e.find(s=>s instanceof Rw);r&&this._plugins.push(r)}addEventListener(e,i,o,r){return this._findPluginFor(i).addEventListener(e,i,o,r)}getZone(){return this._zone}_findPluginFor(e){let i=this._eventNameToPlugin.get(e);if(i)return i;if(i=this._plugins.find(r=>r.supports(e)),!i)throw new X(5101,!1);return this._eventNameToPlugin.set(e,i),i}static \u0275fac=function(i){return new(i||t)(ce(Fw),ce(Ce))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const Nw="ng-app-id";function YF(t){for(const n of t)n.remove()}function XF(t,n){const e=n.createElement("style");return e.textContent=t,e}function Lw(t,n){const e=n.createElement("link");return e.setAttribute("rel","stylesheet"),e.setAttribute("href",t),e}let ZF=(()=>{class t{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(e,i,o,r={}){this.doc=e,this.appId=i,this.nonce=o,function eie(t,n,e,i){const o=t.head?.querySelectorAll(`style[${Nw}="${n}"],link[${Nw}="${n}"]`);if(o)for(const r of o)r.removeAttribute(Nw),r instanceof HTMLLinkElement?i.set(r.href.slice(r.href.lastIndexOf("/")+1),{usage:0,elements:[r]}):r.textContent&&e.set(r.textContent,{usage:0,elements:[r]})}(e,i,this.inline,this.external),this.hosts.add(e.head)}addStyles(e,i){for(const o of e)this.addUsage(o,this.inline,XF);i?.forEach(o=>this.addUsage(o,this.external,Lw))}removeStyles(e,i){for(const o of e)this.removeUsage(o,this.inline);i?.forEach(o=>this.removeUsage(o,this.external))}addUsage(e,i,o){const r=i.get(e);r?r.usage++:i.set(e,{usage:1,elements:[...this.hosts].map(s=>this.addElement(s,o(e,this.doc)))})}removeUsage(e,i){const o=i.get(e);o&&(o.usage--,o.usage<=0&&(YF(o.elements),i.delete(e)))}ngOnDestroy(){for(const[,{elements:e}]of[...this.inline,...this.external])YF(e);this.hosts.clear()}addHost(e){this.hosts.add(e);for(const[i,{elements:o}]of this.inline)o.push(this.addElement(e,XF(i,this.doc)));for(const[i,{elements:o}]of this.external)o.push(this.addElement(e,Lw(i,this.doc)))}removeHost(e){this.hosts.delete(e)}addElement(e,i){return this.nonce&&i.setAttribute("nonce",this.nonce),e.appendChild(i)}static \u0275fac=function(i){return new(i||t)(ce(et),ce(ra),ce(E1,8),ce(T1))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const Bw={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/",math:"http://www.w3.org/1998/Math/MathML"},Vw=/%COMP%/g,sie=new Z("",{factory:()=>!0});function JF(t,n){return n.map(e=>e.replace(Vw,t))}let Hw=(()=>{class t{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;constructor(e,i,o,r,s,a,l=null,d=null){this.eventManager=e,this.sharedStylesHost=i,this.appId=o,this.removeStylesOnCompDestroy=r,this.doc=s,this.ngZone=a,this.nonce=l,this.tracingService=d,this.defaultRenderer=new Uw(e,s,a,this.tracingService)}createRenderer(e,i){if(!e||!i)return this.defaultRenderer;const o=this.getOrCreateRenderer(e,i);return o instanceof n3?o.applyToHost(e):o instanceof zw&&o.applyStyles(),o}getOrCreateRenderer(e,i){const o=this.rendererByCompId;let r=o.get(i.id);if(!r){const s=this.doc,a=this.ngZone,l=this.eventManager,d=this.sharedStylesHost,f=this.removeStylesOnCompDestroy,m=this.tracingService;switch(i.encapsulation){case Ho.Emulated:r=new n3(l,d,i,this.appId,f,s,a,m);break;case Ho.ShadowDom:return new t3(l,e,i,s,a,this.nonce,m,d);case Ho.ExperimentalIsolatedShadowDom:return new t3(l,e,i,s,a,this.nonce,m);default:r=new zw(l,d,i,f,s,a,m)}o.set(i.id,r)}return r}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(e){this.rendererByCompId.delete(e)}static \u0275fac=function(i){return new(i||t)(ce(KF),ce(ZF),ce(ra),ce(sie),ce(et),ce(Ce),ce(E1),ce(da,8))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class Uw{eventManager;doc;ngZone;tracingService;data=Object.create(null);throwOnSyntheticProps=!0;constructor(n,e,i,o){this.eventManager=n,this.doc=e,this.ngZone=i,this.tracingService=o}destroy(){}destroyNode=null;createElement(n,e){return e?this.doc.createElementNS(Bw[e]||e,n):this.doc.createElement(n)}createComment(n){return this.doc.createComment(n)}createText(n){return this.doc.createTextNode(n)}appendChild(n,e){(e3(n)?n.content:n).appendChild(e)}insertBefore(n,e,i){n&&(e3(n)?n.content:n).insertBefore(e,i)}removeChild(n,e){e.remove()}selectRootElement(n,e){let i="string"==typeof n?this.doc.querySelector(n):n;if(!i)throw new X(-5104,!1);return e||(i.textContent=""),i}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,e,i,o){if(o){e=o+":"+e;const r=Bw[o];r?n.setAttributeNS(r,e,i):n.setAttribute(e,i)}else n.setAttribute(e,i)}removeAttribute(n,e,i){if(i){const o=Bw[i];o?n.removeAttributeNS(o,e):n.removeAttribute(`${i}:${e}`)}else n.removeAttribute(e)}addClass(n,e){n.classList.add(e)}removeClass(n,e){n.classList.remove(e)}setStyle(n,e,i,o){o&(ca.DashCase|ca.Important)?n.style.setProperty(e,i,o&ca.Important?"important":""):n.style[e]=i}removeStyle(n,e,i){i&ca.DashCase?n.style.removeProperty(e):n.style[e]=""}setProperty(n,e,i){null!=n&&(n[e]=i)}setValue(n,e){n.nodeValue=e}listen(n,e,i,o){if("string"==typeof n&&!(n=na().getGlobalEventTarget(this.doc,n)))throw new X(5102,!1);let r=this.decoratePreventDefault(i);return this.tracingService?.wrapEventListener&&(r=this.tracingService.wrapEventListener(n,e,r)),this.eventManager.addEventListener(n,e,r,o)}decoratePreventDefault(n){return e=>{if("__ngUnwrap__"===e)return n;!1===n(e)&&e.preventDefault()}}}function e3(t){return"TEMPLATE"===t.tagName&&void 0!==t.content}class t3 extends Uw{hostEl;sharedStylesHost;shadowRoot;constructor(n,e,i,o,r,s,a,l){super(n,o,r,a),this.hostEl=e,this.sharedStylesHost=l,this.shadowRoot=e.attachShadow({mode:"open"}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let d=i.styles;d=JF(i.id,d);for(const m of d){const g=document.createElement("style");s&&g.setAttribute("nonce",s),g.textContent=m,this.shadowRoot.appendChild(g)}const f=i.getExternalStyles?.();if(f)for(const m of f){const g=Lw(m,o);s&&g.setAttribute("nonce",s),this.shadowRoot.appendChild(g)}}nodeOrShadowRoot(n){return n===this.hostEl?this.shadowRoot:n}appendChild(n,e){return super.appendChild(this.nodeOrShadowRoot(n),e)}insertBefore(n,e,i){return super.insertBefore(this.nodeOrShadowRoot(n),e,i)}removeChild(n,e){return super.removeChild(null,e)}parentNode(n){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(n)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}}class zw extends Uw{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(n,e,i,o,r,s,a,l){super(n,r,s,a),this.sharedStylesHost=e,this.removeStylesOnCompDestroy=o;let d=i.styles;this.styles=l?JF(l,d):d,this.styleUrls=i.getExternalStyles?.(l)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&0===kl.size&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}}class n3 extends zw{contentAttr;hostAttr;constructor(n,e,i,o,r,s,a,l){const d=o+"-"+i.id;super(n,e,i,r,s,a,l,d),this.contentAttr=function aie(t){return"_ngcontent-%COMP%".replace(Vw,t)}(d),this.hostAttr=function lie(t){return"_nghost-%COMP%".replace(Vw,t)}(d)}applyToHost(n){this.applyStyles(),this.setAttribute(n,this.hostAttr,"")}createElement(n,e){const i=super.createElement(n,e);return super.setAttribute(i,this.contentAttr,""),i}}class $w extends w7{supportsDOMEvents=!0;static makeCurrent(){!function C7(t){eT??=t}(new $w)}onAndCancel(n,e,i,o){return n.addEventListener(e,i,o),()=>{n.removeEventListener(e,i,o)}}dispatchEvent(n,e){n.dispatchEvent(e)}remove(n){n.remove()}createElement(n,e){return(e=e||this.getDefaultDocument()).createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,e){return"window"===e?window:"document"===e?n:"body"===e?n.body:null}getBaseHref(n){const e=function uie(){return cf=cf||document.head.querySelector("base"),cf?cf.getAttribute("href"):null}();return null==e?null:function hie(t){return new URL(t,document.baseURI).pathname}(e)}resetBaseElement(){cf=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return tT(document.cookie,n)}}let cf=null,pie=(()=>{class t{build(){return new XMLHttpRequest}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const o3=["alt","control","meta","shift"],mie={"\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"},gie={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey};let _ie=(()=>{class t extends qF{constructor(e){super(e)}supports(e){return null!=t.parseEventName(e)}addEventListener(e,i,o,r){const s=t.parseEventName(i),a=t.eventCallback(s.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>na().onAndCancel(e,s.domEventName,a,r))}static parseEventName(e){const i=e.toLowerCase().split("."),o=i.shift();if(0===i.length||"keydown"!==o&&"keyup"!==o)return null;const r=t._normalizeKey(i.pop());let s="",a=i.indexOf("code");if(a>-1&&(i.splice(a,1),s="code."),o3.forEach(d=>{const f=i.indexOf(d);f>-1&&(i.splice(f,1),s+=d+".")}),s+=r,0!=i.length||0===r.length)return null;const l={};return l.domEventName=o,l.fullKey=s,l}static matchEventFullKeyCode(e,i){let o=mie[e.key]||e.key,r="";return i.indexOf("code.")>-1&&(o=e.code,r="code."),!(null==o||!o)&&(o=o.toLowerCase()," "===o?o="space":"."===o&&(o="dot"),o3.forEach(s=>{s!==o&&(0,gie[s])(e)&&(r+=s+".")}),r+=o,r===i)}static eventCallback(e,i,o){return r=>{t.matchEventFullKeyCode(r,e)&&o.runGuarded(()=>i(r))}}static _normalizeKey(e){return"esc"===e?"escape":e}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const Cie=XR(Jee,"browser",[{provide:T1,useValue:iT},{provide:b2,useValue:function bie(){$w.makeCurrent()},multi:!0},{provide:et,useFactory:function yie(){return function Vj(t){D1=t}(document),document}}]),a3=[{provide:iO,useClass:class fie{addToWindow(n){Nn.getAngularTestability=(i,o=!0)=>{const r=n.findTestabilityInTree(i,o);if(null==r)throw new X(5103,!1);return r},Nn.getAllAngularTestabilities=()=>n.getAllTestabilities(),Nn.getAllAngularRootElements=()=>n.getAllRootElements(),Nn.frameworkStabilizers||(Nn.frameworkStabilizers=[]),Nn.frameworkStabilizers.push(i=>{const o=Nn.getAllAngularTestabilities();let r=o.length;const s=function(){r--,0==r&&i()};o.forEach(a=>{a.whenStable(s)})})}findTestabilityInTree(n,e,i){return null==e?null:n.getTestability(e)??(i?na().isShadowRoot(e)?this.findTestabilityInTree(n,e.host,!0):this.findTestabilityInTree(n,e.parentElement,!0):null)}}},{provide:nO,useClass:y0},{provide:y0,useClass:y0}],l3=[{provide:Ay,useValue:"root"},{provide:hl,useFactory:function vie(){return new hl}},{provide:Fw,useClass:Rw,multi:!0},{provide:Fw,useClass:_ie,multi:!0},Hw,ZF,KF,{provide:Uo,useExisting:Hw},{provide:nT,useClass:pie},[]];let c3=(()=>{class t{constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[...l3,...a3],imports:[Jne,ete]})}return t})();var Be=function(t){return t[t.State=0]="State",t[t.Transition=1]="Transition",t[t.Sequence=2]="Sequence",t[t.Group=3]="Group",t[t.Animate=4]="Animate",t[t.Keyframes=5]="Keyframes",t[t.Style=6]="Style",t[t.Trigger=7]="Trigger",t[t.Reference=8]="Reference",t[t.AnimateChild=9]="AnimateChild",t[t.AnimateRef=10]="AnimateRef",t[t.Query=11]="Query",t[t.Stagger=12]="Stagger",t}(Be||{});const Os="*";function d3(t){return{type:Be.Style,styles:t,offset:null}}class df{_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_originalOnDoneFns=[];_originalOnStartFns=[];_started=!1;_destroyed=!1;_finished=!1;_position=0;parentPlayer=null;totalTime;constructor(n=0,e=0){this.totalTime=n+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(n=>n()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(n){this._position=this.totalTime?n*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(n){const e="start"==n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}class u3{_onDoneFns=[];_onStartFns=[];_finished=!1;_started=!1;_destroyed=!1;_onDestroyFns=[];parentPlayer=null;totalTime=0;players;constructor(n){this.players=n;let e=0,i=0,o=0;const r=this.players.length;0==r?queueMicrotask(()=>this._onFinish()):this.players.forEach(s=>{s.onDone(()=>{++e==r&&this._onFinish()}),s.onDestroy(()=>{++i==r&&this._onDestroy()}),s.onStart(()=>{++o==r&&this._onStart()})}),this.totalTime=this.players.reduce((s,a)=>Math.max(s,a.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this.players.forEach(n=>n.init())}onStart(n){this._onStartFns.push(n)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(n=>n()),this._onStartFns=[])}onDone(n){this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(n=>n.play())}pause(){this.players.forEach(n=>n.pause())}restart(){this.players.forEach(n=>n.restart())}finish(){this._onFinish(),this.players.forEach(n=>n.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(n=>n.destroy()),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this.players.forEach(n=>n.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(n){const e=n*this.totalTime;this.players.forEach(i=>{const o=i.totalTime?Math.min(1,e/i.totalTime):1;i.setPosition(o)})}getPosition(){const n=this.players.reduce((e,i)=>null===e||i.totalTime>e.totalTime?i:e,null);return null!=n?n.getPosition():0}beforeDestroy(){this.players.forEach(n=>{n.beforeDestroy&&n.beforeDestroy()})}triggerCallback(n){const e="start"==n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}function f3(t){return new X(3e3,!1)}function Oie(t){return new X(3002,!1)}function va(t){switch(t.length){case 0:return new df;case 1:return t[0];default:return new u3(t)}}function p3(t,n,e=new Map,i=new Map){const o=[],r=[];let s=-1,a=null;if(n.forEach(l=>{const d=l.get("offset"),f=d==s,m=f&&a||new Map;l.forEach((g,b)=>{let w=b,M=g;if("offset"!==b)switch(w=t.normalizePropertyName(w,o),M){case"!":M=e.get(b);break;case Os:M=i.get(b);break;default:M=t.normalizeStyleValue(b,w,M,o)}m.set(w,M)}),f||r.push(m),a=m,s=d}),o.length)throw function jie(){return new X(3502,!1)}();return r}function Yw(t,n,e,i){switch(n){case"start":t.onStart(()=>i(e&&Xw(e,"start",t)));break;case"done":t.onDone(()=>i(e&&Xw(e,"done",t)));break;case"destroy":t.onDestroy(()=>i(e&&Xw(e,"destroy",t)))}}function Xw(t,n,e){const r=Zw(t.element,t.triggerName,t.fromState,t.toState,n||t.phaseName,e.totalTime??t.totalTime,!!e.disabled),s=t._data;return null!=s&&(r._data=s),r}function Zw(t,n,e,i,o="",r=0,s){return{element:t,triggerName:n,fromState:e,toState:i,phaseName:o,totalTime:r,disabled:!!s}}function Oo(t,n,e){let i=t.get(n);return i||t.set(n,i=e),i}function m3(t){const n=t.indexOf(":");return[t.substring(1,n),t.slice(n+1)]}const toe=typeof document>"u"?null:document.documentElement;function Qw(t){const n=t.parentNode||t.host||null;return n===toe?null:n}let ql=null,g3=!1;function _3(t,n){for(;n;){if(n===t)return!0;n=Qw(n)}return!1}function b3(t,n,e){if(e)return Array.from(t.querySelectorAll(n));const i=t.querySelector(n);return i?[i]:[]}const y3="ng-enter",Jw="ng-leave",O_="ng-trigger",A_=".ng-trigger",C3="ng-animating",ex=".ng-animating";function As(t){if("number"==typeof t)return t;const n=t.match(/^(-?[\.\d]+)(m?s)/);return!n||n.length<2?0:tx(parseFloat(n[1]),n[2])}function tx(t,n){return"s"===n?1e3*t:t}function R_(t,n,e){return t.hasOwnProperty("duration")?t:function loe(t,n,e){let i,o=0,r="";if("string"==typeof t){const s=t.match(aoe);if(null===s)return n.push(f3()),{duration:0,delay:0,easing:""};i=tx(parseFloat(s[1]),s[2]);const a=s[3];null!=a&&(o=tx(parseFloat(a),s[4]));const l=s[5];l&&(r=l)}else i=t;if(!e){let s=!1,a=n.length;i<0&&(n.push(function xie(){return new X(3100,!1)}()),s=!0),o<0&&(n.push(function kie(){return new X(3101,!1)}()),s=!0),s&&n.splice(a,0,f3())}return{duration:i,delay:o,easing:r}}(t,n,e)}const aoe=/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i;function jr(t,n,e){n.forEach((i,o)=>{const r=ix(o);e&&!e.has(o)&&e.set(o,t.style[r]),t.style[r]=i})}function Kl(t,n){n.forEach((e,i)=>{const o=ix(i);t.style[o]=""})}function uf(t){return Array.isArray(t)?1==t.length?t[0]:function wie(t,n=null){return{type:Be.Sequence,steps:t,options:n}}(t):t}const nx=new RegExp("{{\\s*(.+?)\\s*}}","g");function w3(t){let n=[];if("string"==typeof t){let e;for(;e=nx.exec(t);)n.push(e[1]);nx.lastIndex=0}return n}function hf(t,n,e){const i=`${t}`,o=i.replace(nx,(r,s)=>{let a=n[s];return null==a&&(e.push(function Mie(){return new X(3003,!1)}()),a=""),a.toString()});return o==i?t:o}const uoe=/-+([a-z0-9])/g;function ix(t){return t.replace(uoe,(...n)=>n[1].toUpperCase())}function Ao(t,n,e){switch(n.type){case Be.Trigger:return t.visitTrigger(n,e);case Be.State:return t.visitState(n,e);case Be.Transition:return t.visitTransition(n,e);case Be.Sequence:return t.visitSequence(n,e);case Be.Group:return t.visitGroup(n,e);case Be.Animate:return t.visitAnimate(n,e);case Be.Keyframes:return t.visitKeyframes(n,e);case Be.Style:return t.visitStyle(n,e);case Be.Reference:return t.visitReference(n,e);case Be.AnimateChild:return t.visitAnimateChild(n,e);case Be.AnimateRef:return t.visitAnimateRef(n,e);case Be.Query:return t.visitQuery(n,e);case Be.Stagger:return t.visitStagger(n,e);default:throw function Die(){return new X(3004,!1)}()}}function ox(t,n){return window.getComputedStyle(t)[n]}let rx=(()=>{class t{validateStyleProperty(e){return function ioe(t){ql||(ql=function ooe(){return typeof document<"u"?document.body:null}()||{},g3=!!ql.style&&"WebkitAppearance"in ql.style);let n=!0;return ql.style&&!function noe(t){return"ebkit"==t.substring(1,6)}(t)&&(n=t in ql.style,!n&&g3&&(n="Webkit"+t.charAt(0).toUpperCase()+t.slice(1)in ql.style)),n}(e)}containsElement(e,i){return _3(e,i)}getParentElement(e){return Qw(e)}query(e,i,o){return b3(e,i,o)}computeStyle(e,i,o){return o||""}animate(e,i,o,r,s,a=[],l){return new df(o,r)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class sx{static NOOP=new rx}class ax{}const voe=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]);class k3 extends ax{normalizePropertyName(n,e){return ix(n)}normalizeStyleValue(n,e,i,o){let r="";const s=i.toString().trim();if(voe.has(e)&&0!==i&&"0"!==i)if("number"==typeof i)r="px";else{const a=i.match(/^[+-]?[\d\.]+([a-z]*)$/);a&&0==a[1].length&&o.push(function Tie(){return new X(3005,!1)}())}return s+r}}const N_=new Set(["true","1"]),L_=new Set(["false","0"]);function S3(t,n){const e=N_.has(t)||L_.has(t),i=N_.has(n)||L_.has(n);return(o,r)=>{let s="*"==t||t==o,a="*"==n||n==r;return!s&&e&&"boolean"==typeof o&&(s=o?N_.has(t):L_.has(t)),!a&&i&&"boolean"==typeof r&&(a=r?N_.has(n):L_.has(n)),s&&a}}const xoe=new RegExp("s*:selfs*,?","g");function cx(t,n,e,i){return new koe(t).build(n,e,i)}class koe{_driver;constructor(n){this._driver=n}build(n,e,i){const o=new Doe(e);return this._resetContextStyleTimingState(o),Ao(this,uf(n),o)}_resetContextStyleTimingState(n){n.currentQuerySelector="",n.collectedStyles=new Map,n.collectedStyles.set("",new Map),n.currentTime=0}visitTrigger(n,e){let i=e.queryCount=0,o=e.depCount=0;const r=[],s=[];return"@"==n.name.charAt(0)&&e.errors.push(function Eie(){return new X(3006,!1)}()),n.definitions.forEach(a=>{if(this._resetContextStyleTimingState(e),a.type==Be.State){const l=a,d=l.name;d.toString().split(/\s*,\s*/).forEach(f=>{l.name=f,r.push(this.visitState(l,e))}),l.name=d}else if(a.type==Be.Transition){const l=this.visitTransition(a,e);i+=l.queryCount,o+=l.depCount,s.push(l)}else e.errors.push(function Pie(){return new X(3007,!1)}())}),{type:Be.Trigger,name:n.name,states:r,transitions:s,queryCount:i,depCount:o,options:null}}visitState(n,e){const i=this.visitStyle(n.styles,e),o=n.options&&n.options.params||null;if(i.containsDynamicStyles){const r=new Set,s=o||{};i.styles.forEach(a=>{a instanceof Map&&a.forEach(l=>{w3(l).forEach(d=>{s.hasOwnProperty(d)||r.add(d)})})}),r.size&&e.errors.push(function Iie(){return new X(3008,!1)}(0,r.values()))}return{type:Be.State,name:n.name,style:i,options:o?{params:o}:null}}visitTransition(n,e){e.queryCount=0,e.depCount=0;const i=Ao(this,uf(n.animation),e),o=function yoe(t,n){const e=[];return"string"==typeof t?t.split(/\s*,\s*/).forEach(i=>function Coe(t,n,e){if(":"==t[0]){const l=function woe(t,n){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(e,i)=>parseFloat(i)>parseFloat(e);case":decrement":return(e,i)=>parseFloat(i) *"}}(t,e);if("function"==typeof l)return void n.push(l);t=l}const i=t.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(null==i||i.length<4)return e.push(function Hie(){return new X(3015,!1)}()),n;const o=i[1],r=i[2],s=i[3];n.push(S3(o,s)),"<"==r[0]&&("*"!=o||"*"!=s)&&n.push(S3(s,o))}(i,e,n)):e.push(t),e}(n.expr,e.errors);return{type:Be.Transition,matchers:o,animation:i,queryCount:e.queryCount,depCount:e.depCount,options:Yl(n.options)}}visitSequence(n,e){return{type:Be.Sequence,steps:n.steps.map(i=>Ao(this,i,e)),options:Yl(n.options)}}visitGroup(n,e){const i=e.currentTime;let o=0;const r=n.steps.map(s=>{e.currentTime=i;const a=Ao(this,s,e);return o=Math.max(o,e.currentTime),a});return e.currentTime=o,{type:Be.Group,steps:r,options:Yl(n.options)}}visitAnimate(n,e){const i=function Eoe(t,n){if(t.hasOwnProperty("duration"))return t;if("number"==typeof t)return dx(R_(t,n).duration,0,"");const e=t;if(e.split(/\s+/).some(r=>"{"==r.charAt(0)&&"{"==r.charAt(1))){const r=dx(0,0,"");return r.dynamic=!0,r.strValue=e,r}const o=R_(e,n);return dx(o.duration,o.delay,o.easing)}(n.timings,e.errors);e.currentAnimateTimings=i;let o,r=n.styles?n.styles:d3({});if(r.type==Be.Keyframes)o=this.visitKeyframes(r,e);else{let s=n.styles,a=!1;if(!s){a=!0;const d={};i.easing&&(d.easing=i.easing),s=d3(d)}e.currentTime+=i.duration+i.delay;const l=this.visitStyle(s,e);l.isEmptyStep=a,o=l}return e.currentAnimateTimings=null,{type:Be.Animate,timings:i,style:o,options:null}}visitStyle(n,e){const i=this._makeStyleAst(n,e);return this._validateStyleAst(i,e),i}_makeStyleAst(n,e){const i=[],o=Array.isArray(n.styles)?n.styles:[n.styles];for(let a of o)"string"==typeof a?a===Os?i.push(a):e.errors.push(Oie()):i.push(new Map(Object.entries(a)));let r=!1,s=null;return i.forEach(a=>{if(a instanceof Map&&(a.has("easing")&&(s=a.get("easing"),a.delete("easing")),!r))for(let l of a.values())if(l.toString().indexOf("{{")>=0){r=!0;break}}),{type:Be.Style,styles:i,easing:s,offset:n.offset,containsDynamicStyles:r,options:null}}_validateStyleAst(n,e){const i=e.currentAnimateTimings;let o=e.currentTime,r=e.currentTime;i&&r>0&&(r-=i.duration+i.delay),n.styles.forEach(s=>{"string"!=typeof s&&s.forEach((a,l)=>{const d=e.collectedStyles.get(e.currentQuerySelector),f=d.get(l);let m=!0;f&&(r!=o&&r>=f.startTime&&o<=f.endTime&&(e.errors.push(function Aie(){return new X(3010,!1)}()),m=!1),r=f.startTime),m&&d.set(l,{startTime:r,endTime:o}),e.options&&function doe(t,n,e){const i=n.params||{},o=w3(t);o.length&&o.forEach(r=>{i.hasOwnProperty(r)||e.push(function Sie(){return new X(3001,!1)}())})}(a,e.options,e.errors)})})}visitKeyframes(n,e){const i={type:Be.Keyframes,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push(function Rie(){return new X(3011,!1)}()),i;let r=0;const s=[];let a=!1,l=!1,d=0;const f=n.steps.map(I=>{const A=this._makeStyleAst(I,e);let W=null!=A.offset?A.offset:function Toe(t){if("string"==typeof t)return null;let n=null;if(Array.isArray(t))t.forEach(e=>{if(e instanceof Map&&e.has("offset")){const i=e;n=parseFloat(i.get("offset")),i.delete("offset")}});else if(t instanceof Map&&t.has("offset")){const e=t;n=parseFloat(e.get("offset")),e.delete("offset")}return n}(A.styles),q=0;return null!=W&&(r++,q=A.offset=W),l=l||q<0||q>1,a=a||q0&&r{const W=g>0?A==b?1:g*A:s[A],q=W*E;e.currentTime=w+M.delay+q,M.duration=q,this._validateStyleAst(I,e),I.offset=W,i.styles.push(I)}),i}visitReference(n,e){return{type:Be.Reference,animation:Ao(this,uf(n.animation),e),options:Yl(n.options)}}visitAnimateChild(n,e){return e.depCount++,{type:Be.AnimateChild,options:Yl(n.options)}}visitAnimateRef(n,e){return{type:Be.AnimateRef,animation:this.visitReference(n.animation,e),options:Yl(n.options)}}visitQuery(n,e){const i=e.currentQuerySelector,o=n.options||{};e.queryCount++,e.currentQuery=n;const[r,s]=function Soe(t){const n=!!t.split(/\s*,\s*/).find(e=>":self"==e);return n&&(t=t.replace(xoe,"")),t=t.replace(/@\*/g,A_).replace(/@\w+/g,e=>A_+"-"+e.slice(1)).replace(/:animating/g,ex),[t,n]}(n.selector);e.currentQuerySelector=i.length?i+" "+r:r,Oo(e.collectedStyles,e.currentQuerySelector,new Map);const a=Ao(this,uf(n.animation),e);return e.currentQuery=null,e.currentQuerySelector=i,{type:Be.Query,selector:r,limit:o.limit||0,optional:!!o.optional,includeSelf:s,animation:a,originalSelector:n.selector,options:Yl(n.options)}}visitStagger(n,e){e.currentQuery||e.errors.push(function Bie(){return new X(3013,!1)}());const i="full"===n.timings?{duration:0,delay:0,easing:"full"}:R_(n.timings,e.errors,!0);return{type:Be.Stagger,animation:Ao(this,uf(n.animation),e),timings:i,options:null}}}class Doe{errors;queryCount=0;depCount=0;currentTransition=null;currentQuery=null;currentQuerySelector=null;currentAnimateTimings=null;currentTime=0;collectedStyles=new Map;options=null;unsupportedCSSPropertiesFound=new Set;constructor(n){this.errors=n}}function Yl(t){return t?(t={...t}).params&&(t.params=function Moe(t){return t?{...t}:null}(t.params)):t={},t}function dx(t,n,e){return{duration:t,delay:n,easing:e}}function ux(t,n,e,i,o,r,s=null,a=!1){return{type:1,element:t,keyframes:n,preStyleProps:e,postStyleProps:i,duration:o,delay:r,totalTime:o+r,easing:s,subTimeline:a}}class B_{_map=new Map;get(n){return this._map.get(n)||[]}append(n,e){let i=this._map.get(n);i||this._map.set(n,i=[]),i.push(...e)}has(n){return this._map.has(n)}clear(){this._map.clear()}}const Ooe=new RegExp(":enter","g"),Roe=new RegExp(":leave","g");function hx(t,n,e,i,o,r=new Map,s=new Map,a,l,d=[]){return(new Foe).buildKeyframes(t,n,e,i,o,r,s,a,l,d)}class Foe{buildKeyframes(n,e,i,o,r,s,a,l,d,f=[]){d=d||new B_;const m=new fx(n,e,d,o,r,f,[]);m.options=l;const g=l.delay?As(l.delay):0;m.currentTimeline.delayNextStep(g),m.currentTimeline.setStyles([s],null,m.errors,l),Ao(this,i,m);const b=m.timelines.filter(w=>w.containsAnimation());if(b.length&&a.size){let w;for(let M=b.length-1;M>=0;M--){const E=b[M];if(E.element===e){w=E;break}}w&&!w.allowOnlyTimelineStyles()&&w.setStyles([a],null,m.errors,l)}return b.length?b.map(w=>w.buildKeyframes()):[ux(e,[],[],[],0,g,"",!1)]}visitTrigger(n,e){}visitState(n,e){}visitTransition(n,e){}visitAnimateChild(n,e){const i=e.subInstructions.get(e.element);if(i){const o=e.createSubContext(n.options),r=e.currentTimeline.currentTime,s=this._visitSubInstructions(i,o,o.options);r!=s&&e.transformIntoNewTimeline(s)}e.previousNode=n}visitAnimateRef(n,e){const i=e.createSubContext(n.options);i.transformIntoNewTimeline(),this._applyAnimationRefDelays([n.options,n.animation.options],e,i),this.visitReference(n.animation,i),e.transformIntoNewTimeline(i.currentTimeline.currentTime),e.previousNode=n}_applyAnimationRefDelays(n,e,i){for(const o of n){const r=o?.delay;if(r){const s="number"==typeof r?r:As(hf(r,o?.params??{},e.errors));i.delayNextStep(s)}}}_visitSubInstructions(n,e,i){let r=e.currentTimeline.currentTime;const s=null!=i.duration?As(i.duration):null,a=null!=i.delay?As(i.delay):null;return 0!==s&&n.forEach(l=>{const d=e.appendInstructionToTimeline(l,s,a);r=Math.max(r,d.duration+d.delay)}),r}visitReference(n,e){e.updateOptions(n.options,!0),Ao(this,n.animation,e),e.previousNode=n}visitSequence(n,e){const i=e.subContextCount;let o=e;const r=n.options;if(r&&(r.params||r.delay)&&(o=e.createSubContext(r),o.transformIntoNewTimeline(),null!=r.delay)){o.previousNode.type==Be.Style&&(o.currentTimeline.snapshotCurrentStyles(),o.previousNode=V_);const s=As(r.delay);o.delayNextStep(s)}n.steps.length&&(n.steps.forEach(s=>Ao(this,s,o)),o.currentTimeline.applyStylesToKeyframe(),o.subContextCount>i&&o.transformIntoNewTimeline()),e.previousNode=n}visitGroup(n,e){const i=[];let o=e.currentTimeline.currentTime;const r=n.options&&n.options.delay?As(n.options.delay):0;n.steps.forEach(s=>{const a=e.createSubContext(n.options);r&&a.delayNextStep(r),Ao(this,s,a),o=Math.max(o,a.currentTimeline.currentTime),i.push(a.currentTimeline)}),i.forEach(s=>e.currentTimeline.mergeTimelineCollectedStyles(s)),e.transformIntoNewTimeline(o),e.previousNode=n}_visitTiming(n,e){if(n.dynamic){const i=n.strValue;return R_(e.params?hf(i,e.params,e.errors):i,e.errors)}return{duration:n.duration,delay:n.delay,easing:n.easing}}visitAnimate(n,e){const i=e.currentAnimateTimings=this._visitTiming(n.timings,e),o=e.currentTimeline;i.delay&&(e.incrementTime(i.delay),o.snapshotCurrentStyles());const r=n.style;r.type==Be.Keyframes?this.visitKeyframes(r,e):(e.incrementTime(i.duration),this.visitStyle(r,e),o.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=n}visitStyle(n,e){const i=e.currentTimeline,o=e.currentAnimateTimings;!o&&i.hasCurrentStyleProperties()&&i.forwardFrame();const r=o&&o.easing||n.easing;n.isEmptyStep?i.applyEmptyStep(r):i.setStyles(n.styles,r,e.errors,e.options),e.previousNode=n}visitKeyframes(n,e){const i=e.currentAnimateTimings,o=e.currentTimeline.duration,r=i.duration,a=e.createSubContext().currentTimeline;a.easing=i.easing,n.styles.forEach(l=>{a.forwardTime((l.offset||0)*r),a.setStyles(l.styles,l.easing,e.errors,e.options),a.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(a),e.transformIntoNewTimeline(o+r),e.previousNode=n}visitQuery(n,e){const i=e.currentTimeline.currentTime,o=n.options||{},r=o.delay?As(o.delay):0;r&&(e.previousNode.type===Be.Style||0==i&&e.currentTimeline.hasCurrentStyleProperties())&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=V_);let s=i;const a=e.invokeQuery(n.selector,n.originalSelector,n.limit,n.includeSelf,!!o.optional,e.errors);e.currentQueryTotal=a.length;let l=null;a.forEach((d,f)=>{e.currentQueryIndex=f;const m=e.createSubContext(n.options,d);r&&m.delayNextStep(r),d===e.element&&(l=m.currentTimeline),Ao(this,n.animation,m),m.currentTimeline.applyStylesToKeyframe(),s=Math.max(s,m.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(s),l&&(e.currentTimeline.mergeTimelineCollectedStyles(l),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=n}visitStagger(n,e){const i=e.parentContext,o=e.currentTimeline,r=n.timings,s=Math.abs(r.duration),a=s*(e.currentQueryTotal-1);let l=s*e.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":l=a-l;break;case"full":l=i.currentStaggerTime}const f=e.currentTimeline;l&&f.delayNextStep(l);const m=f.currentTime;Ao(this,n.animation,e),e.previousNode=n,i.currentStaggerTime=o.currentTime-m+(o.startTime-i.currentTimeline.startTime)}}const V_={};class fx{_driver;element;subInstructions;_enterClassName;_leaveClassName;errors;timelines;parentContext=null;currentTimeline;currentAnimateTimings=null;previousNode=V_;subContextCount=0;options={};currentQueryIndex=0;currentQueryTotal=0;currentStaggerTime=0;constructor(n,e,i,o,r,s,a,l){this._driver=n,this.element=e,this.subInstructions=i,this._enterClassName=o,this._leaveClassName=r,this.errors=s,this.timelines=a,this.currentTimeline=l||new H_(this._driver,e,0),a.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(n,e){if(!n)return;const i=n;let o=this.options;null!=i.duration&&(o.duration=As(i.duration)),null!=i.delay&&(o.delay=As(i.delay));const r=i.params;if(r){let s=o.params;s||(s=this.options.params={}),Object.keys(r).forEach(a=>{(!e||!s.hasOwnProperty(a))&&(s[a]=hf(r[a],s,this.errors))})}}_copyOptions(){const n={};if(this.options){const e=this.options.params;if(e){const i=n.params={};Object.keys(e).forEach(o=>{i[o]=e[o]})}}return n}createSubContext(n=null,e,i){const o=e||this.element,r=new fx(this._driver,o,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(o,i||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(n),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(n){return this.previousNode=V_,this.currentTimeline=this.currentTimeline.fork(this.element,n),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(n,e,i){const o={duration:e??n.duration,delay:this.currentTimeline.currentTime+(i??0)+n.delay,easing:""},r=new Noe(this._driver,n.element,n.keyframes,n.preStyleProps,n.postStyleProps,o,n.stretchStartingKeyframe);return this.timelines.push(r),o}incrementTime(n){this.currentTimeline.forwardTime(this.currentTimeline.duration+n)}delayNextStep(n){n>0&&this.currentTimeline.delayNextStep(n)}invokeQuery(n,e,i,o,r,s){let a=[];if(o&&a.push(this.element),n.length>0){n=(n=n.replace(Ooe,"."+this._enterClassName)).replace(Roe,"."+this._leaveClassName);let d=this._driver.query(this.element,n,1!=i);0!==i&&(d=i<0?d.slice(d.length+i,d.length):d.slice(0,i)),a.push(...d)}return!r&&0==a.length&&s.push(function Vie(){return new X(3014,!1)}()),a}}class H_{_driver;element;startTime;_elementTimelineStylesLookup;duration=0;easing=null;_previousKeyframe=new Map;_currentKeyframe=new Map;_keyframes=new Map;_styleSummary=new Map;_localTimelineStyles=new Map;_globalTimelineStyles;_pendingStyles=new Map;_backFill=new Map;_currentEmptyStepKeyframe=null;constructor(n,e,i,o){this._driver=n,this.element=e,this.startTime=i,this._elementTimelineStylesLookup=o,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(n){const e=1===this._keyframes.size&&this._pendingStyles.size;this.duration||e?(this.forwardTime(this.currentTime+n),e&&this.snapshotCurrentStyles()):this.startTime+=n}fork(n,e){return this.applyStylesToKeyframe(),new H_(this._driver,n,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(n){this.applyStylesToKeyframe(),this.duration=n,this._loadKeyframe()}_updateStyle(n,e){this._localTimelineStyles.set(n,e),this._globalTimelineStyles.set(n,e),this._styleSummary.set(n,{time:this.currentTime,value:e})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(n){n&&this._previousKeyframe.set("easing",n);for(let[e,i]of this._globalTimelineStyles)this._backFill.set(e,i||Os),this._currentKeyframe.set(e,Os);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(n,e,i,o){e&&this._previousKeyframe.set("easing",e);const r=o&&o.params||{},s=function Loe(t,n){const e=new Map;let i;return t.forEach(o=>{if("*"===o){i??=n.keys();for(let r of i)e.set(r,Os)}else for(let[r,s]of o)e.set(r,s)}),e}(n,this._globalTimelineStyles);for(let[a,l]of s){const d=hf(l,r,i);this._pendingStyles.set(a,d),this._localTimelineStyles.has(a)||this._backFill.set(a,this._globalTimelineStyles.get(a)??Os),this._updateStyle(a,d)}}applyStylesToKeyframe(){0!=this._pendingStyles.size&&(this._pendingStyles.forEach((n,e)=>{this._currentKeyframe.set(e,n)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((n,e)=>{this._currentKeyframe.has(e)||this._currentKeyframe.set(e,n)}))}snapshotCurrentStyles(){for(let[n,e]of this._localTimelineStyles)this._pendingStyles.set(n,e),this._updateStyle(n,e)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const n=[];for(let e in this._currentKeyframe)n.push(e);return n}mergeTimelineCollectedStyles(n){n._styleSummary.forEach((e,i)=>{const o=this._styleSummary.get(i);(!o||e.time>o.time)&&this._updateStyle(i,e.value)})}buildKeyframes(){this.applyStylesToKeyframe();const n=new Set,e=new Set,i=1===this._keyframes.size&&0===this.duration;let o=[];this._keyframes.forEach((a,l)=>{const d=new Map([...this._backFill,...a]);d.forEach((f,m)=>{"!"===f?n.add(m):f===Os&&e.add(m)}),i||d.set("offset",l/this.duration),o.push(d)});const r=[...n.values()],s=[...e.values()];if(i){const a=o[0],l=new Map(a);a.set("offset",0),l.set("offset",1),o=[a,l]}return ux(this.element,o,r,s,this.duration,this.startTime,this.easing,!1)}}class Noe extends H_{keyframes;preStyleProps;postStyleProps;_stretchStartingKeyframe;timings;constructor(n,e,i,o,r,s,a=!1){super(n,e,s.delay),this.keyframes=i,this.preStyleProps=o,this.postStyleProps=r,this._stretchStartingKeyframe=a,this.timings={duration:s.duration,delay:s.delay,easing:s.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let n=this.keyframes,{delay:e,duration:i,easing:o}=this.timings;if(this._stretchStartingKeyframe&&e){const r=[],s=i+e,a=e/s,l=new Map(n[0]);l.set("offset",0),r.push(l);const d=new Map(n[0]);d.set("offset",T3(a)),r.push(d);const f=n.length-1;for(let m=1;m<=f;m++){let g=new Map(n[m]);const b=g.get("offset");g.set("offset",T3((e+b*i)/s)),r.push(g)}i=s,e=0,o="",n=r}return ux(this.element,n,this.preStyleProps,this.postStyleProps,i,e,o,!0)}}function T3(t,n=3){const e=Math.pow(10,n-1);return Math.round(t*e)/e}function E3(t,n,e,i,o,r,s,a,l,d,f,m,g){return{type:0,element:t,triggerName:n,isRemovalTransition:o,fromState:e,fromStyles:r,toState:i,toStyles:s,timelines:a,queriedElements:l,preStyleProps:d,postStyleProps:f,totalTime:m,errors:g}}const px={};class P3{_triggerName;ast;_stateStyles;constructor(n,e,i){this._triggerName=n,this.ast=e,this._stateStyles=i}match(n,e,i,o){return function Boe(t,n,e,i,o){return t.some(r=>r(n,e,i,o))}(this.ast.matchers,n,e,i,o)}buildStyles(n,e,i){let o=this._stateStyles.get("*");return void 0!==n&&(o=this._stateStyles.get(n?.toString())||o),o?o.buildStyles(e,i):new Map}build(n,e,i,o,r,s,a,l,d,f){const m=[],g=this.ast.options&&this.ast.options.params||px,w=this.buildStyles(i,a&&a.params||px,m),M=l&&l.params||px,E=this.buildStyles(o,M,m),I=new Set,A=new Map,W=new Map,q="void"===o,Y={params:I3(M,g),delay:this.ast.options?.delay},ee=f?[]:hx(n,e,this.ast.animation,r,s,w,E,Y,d,m);let oe=0;return ee.forEach(P=>{oe=Math.max(P.duration+P.delay,oe)}),m.length?E3(e,this._triggerName,i,o,q,w,E,[],[],A,W,oe,m):(ee.forEach(P=>{const R=P.element,B=Oo(A,R,new Set);P.preStyleProps.forEach(z=>B.add(z));const $=Oo(W,R,new Set);P.postStyleProps.forEach(z=>$.add(z)),R!==e&&I.add(R)}),E3(e,this._triggerName,i,o,q,w,E,ee,[...I.values()],A,W,oe))}}function I3(t,n){const e={...n};return Object.entries(t).forEach(([i,o])=>{null!=o&&(e[i]=o)}),e}class Voe{styles;defaultParams;normalizer;constructor(n,e,i){this.styles=n,this.defaultParams=e,this.normalizer=i}buildStyles(n,e){const i=new Map,o=I3(n,this.defaultParams);return this.styles.styles.forEach(r=>{"string"!=typeof r&&r.forEach((s,a)=>{s&&(s=hf(s,o,e));const l=this.normalizer.normalizePropertyName(a,e);s=this.normalizer.normalizeStyleValue(a,l,s,e),i.set(a,s)})}),i}}class Uoe{name;ast;_normalizer;transitionFactories=[];fallbackTransition;states=new Map;constructor(n,e,i){this.name=n,this.ast=e,this._normalizer=i,e.states.forEach(o=>{this.states.set(o.name,new Voe(o.style,o.options&&o.options.params||{},i))}),O3(this.states,"true","1"),O3(this.states,"false","0"),e.transitions.forEach(o=>{this.transitionFactories.push(new P3(n,o,this.states))}),this.fallbackTransition=function zoe(t,n){return new P3(t,{type:Be.Transition,animation:{type:Be.Sequence,steps:[],options:null},matchers:[(s,a)=>!0],options:null,queryCount:0,depCount:0},n)}(n,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(n,e,i,o){return this.transitionFactories.find(s=>s.match(n,e,i,o))||null}matchStyles(n,e,i){return this.fallbackTransition.buildStyles(n,e,i)}}function O3(t,n,e){t.has(n)?t.has(e)||t.set(e,t.get(n)):t.has(e)&&t.set(n,t.get(e))}const joe=new B_;class $oe{bodyNode;_driver;_normalizer;_animations=new Map;_playersById=new Map;players=[];constructor(n,e,i){this.bodyNode=n,this._driver=e,this._normalizer=i}register(n,e){const i=[],r=cx(this._driver,e,i,[]);if(i.length)throw function $ie(){return new X(3503,!1)}();this._animations.set(n,r)}_buildPlayer(n,e,i){const o=n.element,r=p3(this._normalizer,n.keyframes,e,i);return this._driver.animate(o,r,n.duration,n.delay,n.easing,[],!0)}create(n,e,i={}){const o=[],r=this._animations.get(n);let s;const a=new Map;if(r?(s=hx(this._driver,e,r,y3,Jw,new Map,new Map,i,joe,o),s.forEach(f=>{const m=Oo(a,f.element,new Map);f.postStyleProps.forEach(g=>m.set(g,null))})):(o.push(function Wie(){return new X(3300,!1)}()),s=[]),o.length)throw function Gie(){return new X(3504,!1)}();a.forEach((f,m)=>{f.forEach((g,b)=>{f.set(b,this._driver.computeStyle(m,b,Os))})});const d=va(s.map(f=>{const m=a.get(f.element);return this._buildPlayer(f,new Map,m)}));return this._playersById.set(n,d),d.onDestroy(()=>this.destroy(n)),this.players.push(d),d}destroy(n){const e=this._getPlayer(n);e.destroy(),this._playersById.delete(n);const i=this.players.indexOf(e);i>=0&&this.players.splice(i,1)}_getPlayer(n){const e=this._playersById.get(n);if(!e)throw function qie(){return new X(3301,!1)}();return e}listen(n,e,i,o){const r=Zw(e,"","","");return Yw(this._getPlayer(n),i,r,o),()=>{}}command(n,e,i,o){if("register"==i)return void this.register(n,o[0]);if("create"==i)return void this.create(n,e,o[0]||{});const r=this._getPlayer(n);switch(i){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(o[0]));break;case"destroy":this.destroy(n)}}}const A3="ng-animate-queued",mx="ng-animate-disabled",Yoe=[],R3={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},Xoe={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},yr="__ng_removed";class gx{namespaceId;value;options;get params(){return this.options.params}constructor(n,e=""){this.namespaceId=e;const i=n&&n.hasOwnProperty("value");if(this.value=function ere(t){return t??null}(i?n.value:n),i){const{value:r,...s}=n;this.options=s}else this.options={};this.options.params||(this.options.params={})}absorbOptions(n){const e=n.params;if(e){const i=this.options.params;Object.keys(e).forEach(o=>{null==i[o]&&(i[o]=e[o])})}}}const ff="void",_x=new gx(ff);class Zoe{id;hostElement;_engine;players=[];_triggers=new Map;_queue=[];_elementListeners=new Map;_hostClassName;constructor(n,e,i){this.id=n,this.hostElement=e,this._engine=i,this._hostClassName="ng-tns-"+n,Wo(e,this._hostClassName)}listen(n,e,i,o){if(!this._triggers.has(e))throw function Kie(){return new X(3302,!1)}();if(null==i||0==i.length)throw function Yie(){return new X(3303,!1)}();if(!function tre(t){return"start"==t||"done"==t}(i))throw function Xie(){return new X(3400,!1)}();const r=Oo(this._elementListeners,n,[]),s={name:e,phase:i,callback:o};r.push(s);const a=Oo(this._engine.statesByElement,n,new Map);return a.has(e)||(Wo(n,O_),Wo(n,O_+"-"+e),a.set(e,_x)),()=>{this._engine.afterFlush(()=>{const l=r.indexOf(s);l>=0&&r.splice(l,1),this._triggers.has(e)||a.delete(e)})}}register(n,e){return!this._triggers.has(n)&&(this._triggers.set(n,e),!0)}_getTrigger(n){const e=this._triggers.get(n);if(!e)throw function Zie(){return new X(3401,!1)}();return e}trigger(n,e,i,o=!0){const r=this._getTrigger(e),s=new bx(this.id,e,n);let a=this._engine.statesByElement.get(n);a||(Wo(n,O_),Wo(n,O_+"-"+e),this._engine.statesByElement.set(n,a=new Map));let l=a.get(e);const d=new gx(i,this.id);if(!(i&&i.hasOwnProperty("value"))&&l&&d.absorbOptions(l.options),a.set(e,d),l||(l=_x),d.value!==ff&&l.value===d.value){if(!function ore(t,n){const e=Object.keys(t),i=Object.keys(n);if(e.length!=i.length)return!1;for(let o=0;o{Kl(n,E),jr(n,I)})}return}const g=Oo(this._engine.playersByElement,n,[]);g.forEach(M=>{M.namespaceId==this.id&&M.triggerName==e&&M.queued&&M.destroy()});let b=r.matchTransition(l.value,d.value,n,d.params),w=!1;if(!b){if(!o)return;b=r.fallbackTransition,w=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:e,transition:b,fromState:l,toState:d,player:s,isFallbackTransition:w}),w||(Wo(n,A3),s.onStart(()=>{Gd(n,A3)})),s.onDone(()=>{let M=this.players.indexOf(s);M>=0&&this.players.splice(M,1);const E=this._engine.playersByElement.get(n);if(E){let I=E.indexOf(s);I>=0&&E.splice(I,1)}}),this.players.push(s),g.push(s),s}deregister(n){this._triggers.delete(n),this._engine.statesByElement.forEach(e=>e.delete(n)),this._elementListeners.forEach((e,i)=>{this._elementListeners.set(i,e.filter(o=>o.name!=n))})}clearElementCache(n){this._engine.statesByElement.delete(n),this._elementListeners.delete(n);const e=this._engine.playersByElement.get(n);e&&(e.forEach(i=>i.destroy()),this._engine.playersByElement.delete(n))}_signalRemovalForInnerTriggers(n,e){const i=this._engine.driver.query(n,A_,!0);i.forEach(o=>{if(o[yr])return;const r=this._engine.fetchNamespacesByElement(o);r.size?r.forEach(s=>s.triggerLeaveAnimation(o,e,!1,!0)):this.clearElementCache(o)}),this._engine.afterFlushAnimationsDone(()=>i.forEach(o=>this.clearElementCache(o)))}triggerLeaveAnimation(n,e,i,o){const r=this._engine.statesByElement.get(n),s=new Map;if(r){const a=[];if(r.forEach((l,d)=>{if(s.set(d,l.value),this._triggers.has(d)){const f=this.trigger(n,d,ff,o);f&&a.push(f)}}),a.length)return this._engine.markElementAsRemoved(this.id,n,!0,e,s),i&&va(a).onDone(()=>this._engine.processLeaveNode(n)),!0}return!1}prepareLeaveAnimationListeners(n){const e=this._elementListeners.get(n),i=this._engine.statesByElement.get(n);if(e&&i){const o=new Set;e.forEach(r=>{const s=r.name;if(o.has(s))return;o.add(s);const l=this._triggers.get(s).fallbackTransition,d=i.get(s)||_x,f=new gx(ff),m=new bx(this.id,s,n);this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:s,transition:l,fromState:d,toState:f,player:m,isFallbackTransition:!0})})}}removeNode(n,e){const i=this._engine;if(n.childElementCount&&this._signalRemovalForInnerTriggers(n,e),this.triggerLeaveAnimation(n,e,!0))return;let o=!1;if(i.totalAnimations){const r=i.players.length?i.playersByQueriedElement.get(n):[];if(r&&r.length)o=!0;else{let s=n;for(;s=s.parentNode;)if(i.statesByElement.get(s)){o=!0;break}}}if(this.prepareLeaveAnimationListeners(n),o)i.markElementAsRemoved(this.id,n,!1,e);else{const r=n[yr];(!r||r===R3)&&(i.afterFlush(()=>this.clearElementCache(n)),i.destroyInnerAnimations(n),i._onRemovalComplete(n,e))}}insertNode(n,e){Wo(n,this._hostClassName)}drainQueuedTransitions(n){const e=[];return this._queue.forEach(i=>{const o=i.player;if(o.destroyed)return;const r=i.element,s=this._elementListeners.get(r);s&&s.forEach(a=>{if(a.name==i.triggerName){const l=Zw(r,i.triggerName,i.fromState.value,i.toState.value);l._data=n,Yw(i.player,a.phase,l,a.callback)}}),o.markedForDestroy?this._engine.afterFlush(()=>{o.destroy()}):e.push(i)}),this._queue=[],e.sort((i,o)=>{const r=i.transition.ast.depCount,s=o.transition.ast.depCount;return 0==r||0==s?r-s:this._engine.driver.containsElement(i.element,o.element)?1:-1})}destroy(n){this.players.forEach(e=>e.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,n)}}class Qoe{bodyNode;driver;_normalizer;players=[];newHostElements=new Map;playersByElement=new Map;playersByQueriedElement=new Map;statesByElement=new Map;disabledNodes=new Set;totalAnimations=0;totalQueuedPlayers=0;_namespaceLookup={};_namespaceList=[];_flushFns=[];_whenQuietFns=[];namespacesByHostElement=new Map;collectedEnterElements=[];collectedLeaveElements=[];onRemovalComplete=(n,e)=>{};_onRemovalComplete(n,e){this.onRemovalComplete(n,e)}constructor(n,e,i){this.bodyNode=n,this.driver=e,this._normalizer=i}get queuedPlayers(){const n=[];return this._namespaceList.forEach(e=>{e.players.forEach(i=>{i.queued&&n.push(i)})}),n}createNamespace(n,e){const i=new Zoe(n,e,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,e)?this._balanceNamespaceList(i,e):(this.newHostElements.set(e,i),this.collectEnterElement(e)),this._namespaceLookup[n]=i}_balanceNamespaceList(n,e){const i=this._namespaceList,o=this.namespacesByHostElement;if(i.length-1>=0){let s=!1,a=this.driver.getParentElement(e);for(;a;){const l=o.get(a);if(l){const d=i.indexOf(l);i.splice(d+1,0,n),s=!0;break}a=this.driver.getParentElement(a)}s||i.unshift(n)}else i.push(n);return o.set(e,n),n}register(n,e){let i=this._namespaceLookup[n];return i||(i=this.createNamespace(n,e)),i}registerTrigger(n,e,i){let o=this._namespaceLookup[n];o&&o.register(e,i)&&this.totalAnimations++}destroy(n,e){n&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{const i=this._fetchNamespace(n);this.namespacesByHostElement.delete(i.hostElement);const o=this._namespaceList.indexOf(i);o>=0&&this._namespaceList.splice(o,1),i.destroy(e),delete this._namespaceLookup[n]}))}_fetchNamespace(n){return this._namespaceLookup[n]}fetchNamespacesByElement(n){const e=new Set,i=this.statesByElement.get(n);if(i)for(let o of i.values())if(o.namespaceId){const r=this._fetchNamespace(o.namespaceId);r&&e.add(r)}return e}trigger(n,e,i,o){if(U_(e)){const r=this._fetchNamespace(n);if(r)return r.trigger(e,i,o),!0}return!1}insertNode(n,e,i,o){if(!U_(e))return;const r=e[yr];if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;const s=this.collectedLeaveElements.indexOf(e);s>=0&&this.collectedLeaveElements.splice(s,1)}if(n){const s=this._fetchNamespace(n);s&&s.insertNode(e,i)}o&&this.collectEnterElement(e)}collectEnterElement(n){this.collectedEnterElements.push(n)}markElementAsDisabled(n,e){e?this.disabledNodes.has(n)||(this.disabledNodes.add(n),Wo(n,mx)):this.disabledNodes.has(n)&&(this.disabledNodes.delete(n),Gd(n,mx))}removeNode(n,e,i){if(U_(e)){const o=n?this._fetchNamespace(n):null;o?o.removeNode(e,i):this.markElementAsRemoved(n,e,!1,i);const r=this.namespacesByHostElement.get(e);r&&r.id!==n&&r.removeNode(e,i)}else this._onRemovalComplete(e,i)}markElementAsRemoved(n,e,i,o,r){this.collectedLeaveElements.push(e),e[yr]={namespaceId:n,setForRemoval:o,hasAnimation:i,removedBeforeQueried:!1,previousTriggersValues:r}}listen(n,e,i,o,r){return U_(e)?this._fetchNamespace(n).listen(e,i,o,r):()=>{}}_buildInstruction(n,e,i,o,r){return n.transition.build(this.driver,n.element,n.fromState.value,n.toState.value,i,o,n.fromState.options,n.toState.options,e,r)}destroyInnerAnimations(n){let e=this.driver.query(n,A_,!0);e.forEach(i=>this.destroyActiveAnimationsForElement(i)),0!=this.playersByQueriedElement.size&&(e=this.driver.query(n,ex,!0),e.forEach(i=>this.finishActiveQueriedAnimationOnElement(i)))}destroyActiveAnimationsForElement(n){const e=this.playersByElement.get(n);e&&e.forEach(i=>{i.queued?i.markedForDestroy=!0:i.destroy()})}finishActiveQueriedAnimationOnElement(n){const e=this.playersByQueriedElement.get(n);e&&e.forEach(i=>i.finish())}whenRenderingDone(){return new Promise(n=>{if(this.players.length)return va(this.players).onDone(()=>n());n()})}processLeaveNode(n){const e=n[yr];if(e&&e.setForRemoval){if(n[yr]=R3,e.namespaceId){this.destroyInnerAnimations(n);const i=this._fetchNamespace(e.namespaceId);i&&i.clearElementCache(n)}this._onRemovalComplete(n,e.setForRemoval)}n.classList?.contains(mx)&&this.markElementAsDisabled(n,!1),this.driver.query(n,".ng-animate-disabled",!0).forEach(i=>{this.markElementAsDisabled(i,!1)})}flush(n=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((i,o)=>this._balanceNamespaceList(i,o)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let i=0;ii()),this._flushFns=[],this._whenQuietFns.length){const i=this._whenQuietFns;this._whenQuietFns=[],e.length?va(e).onDone(()=>{i.forEach(o=>o())}):i.forEach(o=>o())}}reportError(n){throw function Qie(){return new X(3402,!1)}()}_flushAnimations(n,e){const i=new B_,o=[],r=new Map,s=[],a=new Map,l=new Map,d=new Map,f=new Set;this.disabledNodes.forEach(N=>{f.add(N);const K=this.driver.query(N,".ng-animate-queued",!0);for(let j=0;j{const j=y3+M++;w.set(K,j),N.forEach(Q=>Wo(Q,j))});const E=[],I=new Set,A=new Set;for(let N=0;NI.add(Q)):A.add(K))}const W=new Map,q=L3(g,Array.from(I));q.forEach((N,K)=>{const j=Jw+M++;W.set(K,j),N.forEach(Q=>Wo(Q,j))}),n.push(()=>{b.forEach((N,K)=>{const j=w.get(K);N.forEach(Q=>Gd(Q,j))}),q.forEach((N,K)=>{const j=W.get(K);N.forEach(Q=>Gd(Q,j))}),E.forEach(N=>{this.processLeaveNode(N)})});const Y=[],ee=[];for(let N=this._namespaceList.length-1;N>=0;N--)this._namespaceList[N].drainQueuedTransitions(e).forEach(j=>{const Q=j.player,he=j.element;if(Y.push(Q),this.collectedEnterElements.length){const xt=he[yr];if(xt&&xt.setForMove){if(xt.previousTriggersValues&&xt.previousTriggersValues.has(j.triggerName)){const or=xt.previousTriggersValues.get(j.triggerName),to=this.statesByElement.get(j.element);if(to&&to.has(j.triggerName)){const qa=to.get(j.triggerName);qa.value=or,to.set(j.triggerName,qa)}}return void Q.destroy()}}const xe=!m||!this.driver.containsElement(m,he),Ie=W.get(he),ht=w.get(he),Re=this._buildInstruction(j,i,ht,Ie,xe);if(Re.errors&&Re.errors.length)return void ee.push(Re);if(xe)return Q.onStart(()=>Kl(he,Re.fromStyles)),Q.onDestroy(()=>jr(he,Re.toStyles)),void o.push(Q);if(j.isFallbackTransition)return Q.onStart(()=>Kl(he,Re.fromStyles)),Q.onDestroy(()=>jr(he,Re.toStyles)),void o.push(Q);const Qe=[];Re.timelines.forEach(xt=>{xt.stretchStartingKeyframe=!0,this.disabledNodes.has(xt.element)||Qe.push(xt)}),Re.timelines=Qe,i.append(he,Re.timelines),s.push({instruction:Re,player:Q,element:he}),Re.queriedElements.forEach(xt=>Oo(a,xt,[]).push(Q)),Re.preStyleProps.forEach((xt,or)=>{if(xt.size){let to=l.get(or);to||l.set(or,to=new Set),xt.forEach((qa,Mo)=>to.add(Mo))}}),Re.postStyleProps.forEach((xt,or)=>{let to=d.get(or);to||d.set(or,to=new Set),xt.forEach((qa,Mo)=>to.add(Mo))})});if(ee.length){const N=[];ee.forEach(K=>{N.push(function Jie(){return new X(3505,!1)}())}),Y.forEach(K=>K.destroy()),this.reportError(N)}const oe=new Map,P=new Map;s.forEach(N=>{const K=N.element;i.has(K)&&(P.set(K,K),this._beforeAnimationBuild(N.player.namespaceId,N.instruction,oe))}),o.forEach(N=>{const K=N.element;this._getPreviousPlayers(K,!1,N.namespaceId,N.triggerName,null).forEach(Q=>{Oo(oe,K,[]).push(Q),Q.destroy()})});const R=E.filter(N=>V3(N,l,d)),B=new Map;N3(B,this.driver,A,d,Os).forEach(N=>{V3(N,l,d)&&R.push(N)});const z=new Map;b.forEach((N,K)=>{N3(z,this.driver,new Set(N),l,"!")}),R.forEach(N=>{const K=B.get(N),j=z.get(N);B.set(N,new Map([...K?.entries()??[],...j?.entries()??[]]))});const G=[],J=[],U={};s.forEach(N=>{const{element:K,player:j,instruction:Q}=N;if(i.has(K)){if(f.has(K))return j.onDestroy(()=>jr(K,Q.toStyles)),j.disabled=!0,j.overrideTotalTime(Q.totalTime),void o.push(j);let he=U;if(P.size>1){let Ie=K;const ht=[];for(;Ie=Ie.parentNode;){const Re=P.get(Ie);if(Re){he=Re;break}ht.push(Ie)}ht.forEach(Re=>P.set(Re,he))}const xe=this._buildAnimation(j.namespaceId,Q,oe,r,z,B);if(j.setRealPlayer(xe),he===U)G.push(j);else{const Ie=this.playersByElement.get(he);Ie&&Ie.length&&(j.parentPlayer=va(Ie)),o.push(j)}}else Kl(K,Q.fromStyles),j.onDestroy(()=>jr(K,Q.toStyles)),J.push(j),f.has(K)&&o.push(j)}),J.forEach(N=>{const K=r.get(N.element);if(K&&K.length){const j=va(K);N.setRealPlayer(j)}}),o.forEach(N=>{N.parentPlayer?N.syncPlayerEvents(N.parentPlayer):N.destroy()});for(let N=0;N!xe.destroyed);he.length?nre(this,K,he):this.processLeaveNode(K)}return E.length=0,G.forEach(N=>{this.players.push(N),N.onDone(()=>{N.destroy();const K=this.players.indexOf(N);this.players.splice(K,1)}),N.play()}),G}afterFlush(n){this._flushFns.push(n)}afterFlushAnimationsDone(n){this._whenQuietFns.push(n)}_getPreviousPlayers(n,e,i,o,r){let s=[];if(e){const a=this.playersByQueriedElement.get(n);a&&(s=a)}else{const a=this.playersByElement.get(n);if(a){const l=!r||r==ff;a.forEach(d=>{d.queued||!l&&d.triggerName!=o||s.push(d)})}}return(i||o)&&(s=s.filter(a=>!(i&&i!=a.namespaceId||o&&o!=a.triggerName))),s}_beforeAnimationBuild(n,e,i){const r=e.element,s=e.isRemovalTransition?void 0:n,a=e.isRemovalTransition?void 0:e.triggerName;for(const l of e.timelines){const d=l.element,f=d!==r,m=Oo(i,d,[]);this._getPreviousPlayers(d,f,s,a,e.toState).forEach(b=>{const w=b.getRealPlayer();w.beforeDestroy&&w.beforeDestroy(),b.destroy(),m.push(b)})}Kl(r,e.fromStyles)}_buildAnimation(n,e,i,o,r,s){const a=e.triggerName,l=e.element,d=[],f=new Set,m=new Set,g=e.timelines.map(w=>{const M=w.element;f.add(M);const E=M[yr];if(E&&E.removedBeforeQueried)return new df(w.duration,w.delay);const I=M!==l,A=function ire(t){const n=[];return B3(t,n),n}((i.get(M)||Yoe).map(oe=>oe.getRealPlayer())).filter(oe=>!!oe.element&&oe.element===M),W=r.get(M),q=s.get(M),Y=p3(this._normalizer,w.keyframes,W,q),ee=this._buildPlayer(w,Y,A);if(w.subTimeline&&o&&m.add(M),I){const oe=new bx(n,a,M);oe.setRealPlayer(ee),d.push(oe)}return ee});d.forEach(w=>{Oo(this.playersByQueriedElement,w.element,[]).push(w),w.onDone(()=>function Joe(t,n,e){let i=t.get(n);if(i){if(i.length){const o=i.indexOf(e);i.splice(o,1)}0==i.length&&t.delete(n)}return i}(this.playersByQueriedElement,w.element,w))}),f.forEach(w=>Wo(w,C3));const b=va(g);return b.onDestroy(()=>{f.forEach(w=>Gd(w,C3)),jr(l,e.toStyles)}),m.forEach(w=>{Oo(o,w,[]).push(b)}),b}_buildPlayer(n,e,i){return e.length>0?this.driver.animate(n.element,e,n.duration,n.delay,n.easing,i):new df(n.duration,n.delay)}}class bx{namespaceId;triggerName;element;_player=new df;_containsRealPlayer=!1;_queuedCallbacks=new Map;destroyed=!1;parentPlayer=null;markedForDestroy=!1;disabled=!1;queued=!0;totalTime=0;constructor(n,e,i){this.namespaceId=n,this.triggerName=e,this.element=i}setRealPlayer(n){this._containsRealPlayer||(this._player=n,this._queuedCallbacks.forEach((e,i)=>{e.forEach(o=>Yw(n,i,void 0,o))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(n.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(n){this.totalTime=n}syncPlayerEvents(n){const e=this._player;e.triggerCallback&&n.onStart(()=>e.triggerCallback("start")),n.onDone(()=>this.finish()),n.onDestroy(()=>this.destroy())}_queueEvent(n,e){Oo(this._queuedCallbacks,n,[]).push(e)}onDone(n){this.queued&&this._queueEvent("done",n),this._player.onDone(n)}onStart(n){this.queued&&this._queueEvent("start",n),this._player.onStart(n)}onDestroy(n){this.queued&&this._queueEvent("destroy",n),this._player.onDestroy(n)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(n){this.queued||this._player.setPosition(n)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(n){const e=this._player;e.triggerCallback&&e.triggerCallback(n)}}function U_(t){return t&&1===t.nodeType}function F3(t,n){const e=t.style.display;return t.style.display=n??"none",e}function N3(t,n,e,i,o){const r=[];e.forEach(l=>r.push(F3(l)));const s=[];i.forEach((l,d)=>{const f=new Map;l.forEach(m=>{const g=n.computeStyle(d,m,o);f.set(m,g),(!g||0==g.length)&&(d[yr]=Xoe,s.push(d))}),t.set(d,f)});let a=0;return e.forEach(l=>F3(l,r[a++])),s}function L3(t,n){const e=new Map;if(t.forEach(a=>e.set(a,[])),0==n.length)return e;const o=new Set(n),r=new Map;function s(a){if(!a)return 1;let l=r.get(a);if(l)return l;const d=a.parentNode;return l=e.has(d)?d:o.has(d)?1:s(d),r.set(a,l),l}return n.forEach(a=>{const l=s(a);1!==l&&e.get(l).push(a)}),e}function Wo(t,n){t.classList?.add(n)}function Gd(t,n){t.classList?.remove(n)}function nre(t,n,e){va(e).onDone(()=>t.processLeaveNode(n))}function B3(t,n){for(let e=0;eo.add(r)):n.set(t,i),e.delete(t),!0}class pf{_driver;_normalizer;_transitionEngine;_timelineEngine;_triggerCache={};onRemovalComplete=(n,e)=>{};constructor(n,e,i){this._driver=e,this._normalizer=i,this._transitionEngine=new Qoe(n.body,e,i),this._timelineEngine=new $oe(n.body,e,i),this._transitionEngine.onRemovalComplete=(o,r)=>this.onRemovalComplete(o,r)}registerTrigger(n,e,i,o,r){const s=n+"-"+o;let a=this._triggerCache[s];if(!a){const l=[],f=cx(this._driver,r,l,[]);if(l.length)throw function zie(){return new X(3404,!1)}();a=function Hoe(t,n,e){return new Uoe(t,n,e)}(o,f,this._normalizer),this._triggerCache[s]=a}this._transitionEngine.registerTrigger(e,o,a)}register(n,e){this._transitionEngine.register(n,e)}destroy(n,e){this._transitionEngine.destroy(n,e)}onInsert(n,e,i,o){this._transitionEngine.insertNode(n,e,i,o)}onRemove(n,e,i){this._transitionEngine.removeNode(n,e,i)}disableAnimations(n,e){this._transitionEngine.markElementAsDisabled(n,e)}process(n,e,i,o){if("@"==i.charAt(0)){const[r,s]=m3(i);this._timelineEngine.command(r,e,s,o)}else this._transitionEngine.trigger(n,e,i,o)}listen(n,e,i,o,r){if("@"==i.charAt(0)){const[s,a]=m3(i);return this._timelineEngine.listen(s,e,a,r)}return this._transitionEngine.listen(n,e,i,o,r)}flush(n=-1){this._transitionEngine.flush(n)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(n){this._transitionEngine.afterFlushAnimationsDone(n)}}let sre=(()=>{class t{_element;_startStyles;_endStyles;static initialStylesByElement=new WeakMap;_state=0;_initialStyles;constructor(e,i,o){this._element=e,this._startStyles=i,this._endStyles=o;let r=t.initialStylesByElement.get(e);r||t.initialStylesByElement.set(e,r=new Map),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&jr(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(jr(this._element,this._initialStyles),this._endStyles&&(jr(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(t.initialStylesByElement.delete(this._element),this._startStyles&&(Kl(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(Kl(this._element,this._endStyles),this._endStyles=null),jr(this._element,this._initialStyles),this._state=3)}}return t})();function vx(t){let n=null;return t.forEach((e,i)=>{(function are(t){return"display"===t||"position"===t})(i)&&(n=n||new Map,n.set(i,e))}),n}class H3{element;keyframes;options;_specialStyles;_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_duration;_delay;_initialized=!1;_finished=!1;_started=!1;_destroyed=!1;_finalKeyframe;_originalOnDoneFns=[];_originalOnStartFns=[];domPlayer=null;time=0;parentPlayer=null;currentSnapshot=new Map;constructor(n,e,i,o){this.element=n,this.keyframes=e,this.options=i,this._specialStyles=o,this._duration=i.duration,this._delay=i.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this._buildPlayer()&&this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return this.domPlayer;this._initialized=!0;const n=this.keyframes,e=this._triggerWebAnimation(this.element,n,this.options);if(!e)return this._onFinish(),null;this.domPlayer=e,this._finalKeyframe=n.length?n[n.length-1]:new Map;const i=()=>this._onFinish();return e.addEventListener("finish",i),this.onDestroy(()=>{e.removeEventListener("finish",i)}),e}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer?.pause()}_convertKeyframesToObject(n){const e=[];return n.forEach(i=>{e.push(Object.fromEntries(i))}),e}_triggerWebAnimation(n,e,i){const o=this._convertKeyframesToObject(e);try{return n.animate(o,i)}catch{return null}}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}play(){const n=this._buildPlayer();n&&(this.hasStarted()||(this._onStartFns.forEach(e=>e()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),n.play())}pause(){this.init(),this.domPlayer?.pause()}finish(){this.init(),this.domPlayer&&(this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish())}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer?.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}setPosition(n){this.domPlayer||this.init(),this.domPlayer&&(this.domPlayer.currentTime=n*this.time)}getPosition(){return this.domPlayer?+(this.domPlayer.currentTime??0)/this.time:this._initialized?1:0}get totalTime(){return this._delay+this._duration}beforeDestroy(){const n=new Map;this.hasStarted()&&this._finalKeyframe.forEach((i,o)=>{"offset"!==o&&n.set(o,this._finished?i:ox(this.element,o))}),this.currentSnapshot=n}triggerCallback(n){const e="start"===n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}class U3{validateStyleProperty(n){return!0}validateAnimatableStyleProperty(n){return!0}containsElement(n,e){return _3(n,e)}getParentElement(n){return Qw(n)}query(n,e,i){return b3(n,e,i)}computeStyle(n,e,i){return ox(n,e)}animate(n,e,i,o,r,s=[]){const l={duration:i,delay:o,fill:0==o?"both":"forwards"};r&&(l.easing=r);const d=new Map,f=s.filter(b=>b instanceof H3);(function hoe(t,n){return 0===t||0===n})(i,o)&&f.forEach(b=>{b.currentSnapshot.forEach((w,M)=>d.set(M,w))});let m=function coe(t){return t.length?t[0]instanceof Map?t:t.map(n=>new Map(Object.entries(n))):[]}(e).map(b=>new Map(b));m=function foe(t,n,e){if(e.size&&n.length){let i=n[0],o=[];if(e.forEach((r,s)=>{i.has(s)||o.push(s),i.set(s,r)}),o.length)for(let r=1;rs.set(a,ox(t,a)))}}return n}(n,m,d);const g=function rre(t,n){let e=null,i=null;return Array.isArray(n)&&n.length?(e=vx(n[0]),n.length>1&&(i=vx(n[n.length-1]))):n instanceof Map&&(e=vx(n)),e||i?new sre(t,e,i):null}(n,m);return new H3(n,m,l,g)}}const z3="@.disabled";class j3{namespaceId;delegate;engine;_onDestroy;\u0275type=0;constructor(n,e,i,o){this.namespaceId=n,this.delegate=e,this.engine=i,this._onDestroy=o}get data(){return this.delegate.data}destroyNode(n){this.delegate.destroyNode?.(n)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(n,e){return this.delegate.createElement(n,e)}createComment(n){return this.delegate.createComment(n)}createText(n){return this.delegate.createText(n)}appendChild(n,e){this.delegate.appendChild(n,e),this.engine.onInsert(this.namespaceId,e,n,!1)}insertBefore(n,e,i,o=!0){this.delegate.insertBefore(n,e,i),this.engine.onInsert(this.namespaceId,e,n,o)}removeChild(n,e,i,o){o?this.delegate.removeChild(n,e,i,o):this.parentNode(e)&&this.engine.onRemove(this.namespaceId,e,this.delegate)}selectRootElement(n,e){return this.delegate.selectRootElement(n,e)}parentNode(n){return this.delegate.parentNode(n)}nextSibling(n){return this.delegate.nextSibling(n)}setAttribute(n,e,i,o){this.delegate.setAttribute(n,e,i,o)}removeAttribute(n,e,i){this.delegate.removeAttribute(n,e,i)}addClass(n,e){this.delegate.addClass(n,e)}removeClass(n,e){this.delegate.removeClass(n,e)}setStyle(n,e,i,o){this.delegate.setStyle(n,e,i,o)}removeStyle(n,e,i){this.delegate.removeStyle(n,e,i)}setProperty(n,e,i){"@"==e.charAt(0)&&e==z3?this.disableAnimations(n,!!i):this.delegate.setProperty(n,e,i)}setValue(n,e){this.delegate.setValue(n,e)}listen(n,e,i,o){return this.delegate.listen(n,e,i,o)}disableAnimations(n,e){this.engine.disableAnimations(n,e)}}class lre extends j3{factory;constructor(n,e,i,o,r){super(e,i,o,r),this.factory=n,this.namespaceId=e}setProperty(n,e,i){"@"==e.charAt(0)?"."==e.charAt(1)&&e==z3?this.disableAnimations(n,i=void 0===i||!!i):this.engine.process(this.namespaceId,n,e.slice(1),i):this.delegate.setProperty(n,e,i)}listen(n,e,i,o){if("@"==e.charAt(0)){const r=function cre(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}(n);let s=e.slice(1),a="";return"@"!=s.charAt(0)&&([s,a]=function dre(t){const n=t.indexOf(".");return[t.substring(0,n),t.slice(n+1)]}(s)),this.engine.listen(this.namespaceId,r,s,a,l=>{this.factory.scheduleListenerCallback(l._data||-1,i,l)})}return this.delegate.listen(n,e,i,o)}}class ure{delegate;engine;_zone;_currentId=0;_microtaskId=1;_animationCallbacksBuffer=[];_rendererCache=new Map;_cdRecurDepth=0;constructor(n,e,i){this.delegate=n,this.engine=e,this._zone=i,e.onRemovalComplete=(o,r)=>{r?.removeChild(null,o)}}createRenderer(n,e){const o=this.delegate.createRenderer(n,e);if(!n||!e?.data?.animation){const d=this._rendererCache;let f=d.get(o);return f||(f=new j3("",o,this.engine,()=>d.delete(o)),d.set(o,f)),f}const r=e.id,s=e.id+"-"+this._currentId;this._currentId++,this.engine.register(s,n);const a=d=>{Array.isArray(d)?d.forEach(a):this.engine.registerTrigger(r,s,n,d.name,d)};return e.data.animation.forEach(a),new lre(this,s,o,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(n,e,i){if(n>=0&&ne(i));const o=this._animationCallbacksBuffer;0==o.length&&queueMicrotask(()=>{this._zone.run(()=>{o.forEach(r=>{const[s,a]=r;s(a)}),this._animationCallbacksBuffer=[]})}),o.push([e,i])}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}componentReplaced(n){this.engine.flush(),this.delegate.componentReplaced?.(n)}}const $3=[{provide:ax,useFactory:function pre(){return new k3}},{provide:pf,useClass:(()=>{class t extends pf{constructor(e,i,o){super(e,i,o)}ngOnDestroy(){this.flush()}static \u0275fac=function(i){return new(i||t)(ce(et),ce(sx),ce(ax))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})()},{provide:Uo,useFactory:function mre(){return new ure(T(Hw),T(pf),T(Ce))}}],W3=[{provide:sx,useClass:rx},{provide:Hm,useValue:"NoopAnimations"},...$3],yx=[{provide:sx,useFactory:()=>new U3},{provide:Hm,useFactory:()=>"BrowserAnimations"},...$3];let gre=(()=>{class t{static withConfig(e){return{ngModule:t,providers:e.disableAnimations?W3:yx}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:yx,imports:[c3]})}return t})();function ya(t){return this instanceof ya?(this.v=t,this):new ya(t)}function Y3(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=function kx(t){var n="function"==typeof Symbol&&Symbol.iterator,e=n&&t[n],i=0;if(e)return e.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),e={},i("next"),i("throw"),i("return"),e[Symbol.asyncIterator]=function(){return this},e);function i(r){e[r]=t[r]&&function(s){return new Promise(function(a,l){!function o(r,s,a,l){Promise.resolve(l).then(function(d){r({value:d,done:a})},s)}(a,l,(s=t[r](s)).done,s.value)})}}}"function"==typeof SuppressedError&&SuppressedError;const X3=t=>t&&"number"==typeof t.length&&"function"!=typeof t;function Z3(t){return fn(t?.then)}function Q3(t){return fn(t[hy])}function J3(t){return Symbol.asyncIterator&&fn(t?.[Symbol.asyncIterator])}function eN(t){return new TypeError(`You provided ${null!==t&&"object"==typeof t?"an invalid object":`'${t}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const tN=function jre(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function nN(t){return fn(t?.[tN])}function iN(t){return function K3(t,n,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o,i=e.apply(t,n||[]),r=[];return o=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",function s(b){return function(w){return Promise.resolve(w).then(b,m)}}),o[Symbol.asyncIterator]=function(){return this},o;function a(b,w){i[b]&&(o[b]=function(M){return new Promise(function(E,I){r.push([b,M,E,I])>1||l(b,M)})},w&&(o[b]=w(o[b])))}function l(b,w){try{!function d(b){b.value instanceof ya?Promise.resolve(b.value.v).then(f,m):g(r[0][2],b)}(i[b](w))}catch(M){g(r[0][3],M)}}function f(b){l("next",b)}function m(b){l("throw",b)}function g(b,w){b(w),r.shift(),r.length&&l(r[0][0],r[0][1])}}(this,arguments,function*(){const e=t.getReader();try{for(;;){const{value:i,done:o}=yield ya(e.read());if(o)return yield ya(void 0);yield yield ya(i)}}finally{e.releaseLock()}})}function oN(t){return fn(t?.getReader)}function qi(t){if(t instanceof zt)return t;if(null!=t){if(Q3(t))return function $re(t){return new zt(n=>{const e=t[hy]();if(fn(e.subscribe))return e.subscribe(n);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(t);if(X3(t))return function Wre(t){return new zt(n=>{for(let e=0;e{t.then(e=>{n.closed||(n.next(e),n.complete())},e=>n.error(e)).then(null,zM)})}(t);if(J3(t))return rN(t);if(nN(t))return function qre(t){return new zt(n=>{for(const e of t)if(n.next(e),n.closed)return;n.complete()})}(t);if(oN(t))return function Kre(t){return rN(iN(t))}(t)}throw eN(t)}function rN(t){return new zt(n=>{(function Yre(t,n){var e,i,o,r;return function G3(t,n,e,i){return new(e||(e=Promise))(function(r,s){function a(f){try{d(i.next(f))}catch(m){s(m)}}function l(f){try{d(i.throw(f))}catch(m){s(m)}}function d(f){f.done?r(f.value):function o(r){return r instanceof e?r:new e(function(s){s(r)})}(f.value).then(a,l)}d((i=i.apply(t,n||[])).next())})}(this,void 0,void 0,function*(){try{for(e=Y3(t);!(i=yield e.next()).done;)if(n.next(i.value),n.closed)return}catch(s){o={error:s}}finally{try{i&&!i.done&&(r=e.return)&&(yield r.call(e))}finally{if(o)throw o.error}}n.complete()})})(t,n).catch(e=>n.error(e))})}function wt(t,n){return En((e,i)=>{let o=null,r=0,s=!1;const a=()=>s&&!o&&i.complete();e.subscribe(pn(i,l=>{o?.unsubscribe();let d=0;const f=r++;qi(t(l,f)).subscribe(o=pn(i,m=>i.next(n?n(l,m,f,d++):m),()=>{o=null,a()}))},()=>{s=!0,a()}))})}function j_(t){return En((n,e)=>{try{n.subscribe(e)}finally{e.add(t)}})}function Rs(t,n,e,i=0,o=!1){const r=n.schedule(function(){e(),o?t.add(this.schedule(null,i)):this.unsubscribe()},i);if(t.add(r),!o)return r}function Tt(t,n,e=1/0){return fn(n)?Tt((i,o)=>De((r,s)=>n(i,r,o,s))(qi(t(i,o))),e):("number"==typeof n&&(e=n),En((i,o)=>function Xre(t,n,e,i,o,r,s,a){const l=[];let d=0,f=0,m=!1;const g=()=>{m&&!l.length&&!d&&n.complete()},b=M=>d{r&&n.next(M),d++;let E=!1;qi(e(M,f++)).subscribe(pn(n,I=>{o?.(I),r?b(I):n.next(I)},()=>{E=!0},void 0,()=>{if(E)try{for(d--;l.length&&dw(I)):w(I)}g()}catch(I){n.error(I)}}))};return t.subscribe(pn(n,b,()=>{m=!0,g()})),()=>{a?.()}}(i,o,t,e)))}function mf(t,n){return fn(n)?Tt(t,n,1):Tt(t,1)}function Pn(t,n){return En((e,i)=>{let o=0;e.subscribe(pn(i,r=>t.call(n,r,o++)&&i.next(r)))})}function sN(t,n=0){return En((e,i)=>{e.subscribe(pn(i,o=>Rs(i,t,()=>i.next(o),n),()=>Rs(i,t,()=>i.complete(),n),o=>Rs(i,t,()=>i.error(o),n)))})}function aN(t,n=0){return En((e,i)=>{i.add(t.schedule(()=>e.subscribe(i),n))})}function lN(t,n){if(!t)throw new Error("Iterable cannot be null");return new zt(e=>{Rs(e,n,()=>{const i=t[Symbol.asyncIterator]();Rs(e,n,()=>{i.next().then(o=>{o.done?e.complete():e.next(o.value)})},0,!0)})})}function Xn(t,n){return n?function nse(t,n){if(null!=t){if(Q3(t))return function Zre(t,n){return qi(t).pipe(aN(n),sN(n))}(t,n);if(X3(t))return function Jre(t,n){return new zt(e=>{let i=0;return n.schedule(function(){i===t.length?e.complete():(e.next(t[i++]),e.closed||this.schedule())})})}(t,n);if(Z3(t))return function Qre(t,n){return qi(t).pipe(aN(n),sN(n))}(t,n);if(J3(t))return lN(t,n);if(nN(t))return function ese(t,n){return new zt(e=>{let i;return Rs(e,n,()=>{i=t[tN](),Rs(e,n,()=>{let o,r;try{({value:o,done:r}=i.next())}catch(s){return void e.error(s)}r?e.complete():e.next(o)},0,!0)}),()=>fn(i?.return)&&i.return()})}(t,n);if(oN(t))return function tse(t,n){return lN(iN(t),n)}(t,n)}throw eN(t)}(t,n):qi(t)}function cN(t){return t&&fn(t.schedule)}function Mx(t){return t[t.length-1]}function dN(t){return fn(Mx(t))?t.pop():void 0}function gf(t){return cN(Mx(t))?t.pop():void 0}function se(...t){return Xn(t,gf(t))}class Go{headers;normalizedNames=new Map;lazyInit;lazyUpdate=null;constructor(n){n?"string"==typeof n?this.lazyInit=()=>{this.headers=new Map,n.split("\n").forEach(e=>{const i=e.indexOf(":");if(i>0){const o=e.slice(0,i),r=e.slice(i+1).trim();this.addHeaderEntry(o,r)}})}:typeof Headers<"u"&&n instanceof Headers?(this.headers=new Map,n.forEach((e,i)=>{this.addHeaderEntry(i,e)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(n).forEach(([e,i])=>{this.setHeaderEntries(e,i)})}:this.headers=new Map}has(n){return this.init(),this.headers.has(n.toLowerCase())}get(n){this.init();const e=this.headers.get(n.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(n){return this.init(),this.headers.get(n.toLowerCase())||null}append(n,e){return this.clone({name:n,value:e,op:"a"})}set(n,e){return this.clone({name:n,value:e,op:"s"})}delete(n,e){return this.clone({name:n,value:e,op:"d"})}maybeSetNormalizedName(n,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,n)}init(){this.lazyInit&&(this.lazyInit instanceof Go?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(n=>this.applyUpdate(n)),this.lazyUpdate=null))}copyFrom(n){n.init(),Array.from(n.headers.keys()).forEach(e=>{this.headers.set(e,n.headers.get(e)),this.normalizedNames.set(e,n.normalizedNames.get(e))})}clone(n){const e=new Go;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof Go?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([n]),e}applyUpdate(n){const e=n.name.toLowerCase();switch(n.op){case"a":case"s":let i=n.value;if("string"==typeof i&&(i=[i]),0===i.length)return;this.maybeSetNormalizedName(n.name,e);const o=("a"===n.op?this.headers.get(e):void 0)||[];o.push(...i),this.headers.set(e,o);break;case"d":const r=n.value;if(r){let s=this.headers.get(e);if(!s)return;s=s.filter(a=>-1===r.indexOf(a)),0===s.length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,s)}else this.headers.delete(e),this.normalizedNames.delete(e)}}addHeaderEntry(n,e){const i=n.toLowerCase();this.maybeSetNormalizedName(n,i),this.headers.has(i)?this.headers.get(i).push(e):this.headers.set(i,[e])}setHeaderEntries(n,e){const i=(Array.isArray(e)?e:[e]).map(r=>r.toString()),o=n.toLowerCase();this.headers.set(o,i),this.maybeSetNormalizedName(n,o)}forEach(n){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>n(this.normalizedNames.get(e),this.headers.get(e)))}}class ose{map=new Map;set(n,e){return this.map.set(n,e),this}get(n){return this.map.has(n)||this.map.set(n,n.defaultValue()),this.map.get(n)}delete(n){return this.map.delete(n),this}has(n){return this.map.has(n)}keys(){return this.map.keys()}}class rse{encodeKey(n){return hN(n)}encodeValue(n){return hN(n)}decodeKey(n){return decodeURIComponent(n)}decodeValue(n){return decodeURIComponent(n)}}const ase=/%(\d[a-f0-9])/gi,lse={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function hN(t){return encodeURIComponent(t).replace(ase,(n,e)=>lse[e]??n)}function $_(t){return`${t}`}class Ca{map;encoder;updates=null;cloneFrom=null;constructor(n={}){if(this.encoder=n.encoder||new rse,n.fromString){if(n.fromObject)throw new X(2805,!1);this.map=function sse(t,n){const e=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(o=>{const r=o.indexOf("="),[s,a]=-1==r?[n.decodeKey(o),""]:[n.decodeKey(o.slice(0,r)),n.decodeValue(o.slice(r+1))],l=e.get(s)||[];l.push(a),e.set(s,l)}),e}(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach(e=>{const i=n.fromObject[e],o=Array.isArray(i)?i.map($_):[$_(i)];this.map.set(e,o)})):this.map=null}has(n){return this.init(),this.map.has(n)}get(n){this.init();const e=this.map.get(n);return e?e[0]:null}getAll(n){return this.init(),this.map.get(n)||null}keys(){return this.init(),Array.from(this.map.keys())}append(n,e){return this.clone({param:n,value:e,op:"a"})}appendAll(n){const e=[];return Object.keys(n).forEach(i=>{const o=n[i];Array.isArray(o)?o.forEach(r=>{e.push({param:i,value:r,op:"a"})}):e.push({param:i,value:o,op:"a"})}),this.clone(e)}set(n,e){return this.clone({param:n,value:e,op:"s"})}delete(n,e){return this.clone({param:n,value:e,op:"d"})}toString(){return this.init(),this.keys().map(n=>{const e=this.encoder.encodeKey(n);return this.map.get(n).map(i=>e+"="+this.encoder.encodeValue(i)).join("&")}).filter(n=>""!==n).join("&")}clone(n){const e=new Ca({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat(n),e}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(n=>this.map.set(n,this.cloneFrom.map.get(n))),this.updates.forEach(n=>{switch(n.op){case"a":case"s":const e=("a"===n.op?this.map.get(n.param):void 0)||[];e.push($_(n.value)),this.map.set(n.param,e);break;case"d":if(void 0===n.value){this.map.delete(n.param);break}{let i=this.map.get(n.param)||[];const o=i.indexOf($_(n.value));-1!==o&&i.splice(o,1),i.length>0?this.map.set(n.param,i):this.map.delete(n.param)}}}),this.cloneFrom=this.updates=null)}}function fN(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function pN(t){return typeof Blob<"u"&&t instanceof Blob}function mN(t){return typeof FormData<"u"&&t instanceof FormData}const _f="Content-Type",gN="text/plain",_N="application/json",bN=`${_N}, ${gN}, */*`;class bf{url;body=null;headers;context;reportProgress=!1;withCredentials=!1;credentials;keepalive=!1;cache;priority;mode;redirect;referrer;integrity;referrerPolicy;responseType="json";method;params;urlWithParams;transferCache;timeout;constructor(n,e,i,o){let r;if(this.url=e,this.method=n.toUpperCase(),function cse(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||o?(this.body=void 0!==i?i:null,r=o):r=i,r){if(this.reportProgress=!!r.reportProgress,this.withCredentials=!!r.withCredentials,this.keepalive=!!r.keepalive,r.responseType&&(this.responseType=r.responseType),r.headers&&(this.headers=r.headers),r.context&&(this.context=r.context),r.params&&(this.params=r.params),r.priority&&(this.priority=r.priority),r.cache&&(this.cache=r.cache),r.credentials&&(this.credentials=r.credentials),"number"==typeof r.timeout){if(r.timeout<1||!Number.isInteger(r.timeout))throw new X(2822,"");this.timeout=r.timeout}r.mode&&(this.mode=r.mode),r.redirect&&(this.redirect=r.redirect),r.integrity&&(this.integrity=r.integrity),r.referrer&&(this.referrer=r.referrer),r.referrerPolicy&&(this.referrerPolicy=r.referrerPolicy),this.transferCache=r.transferCache}if(this.headers??=new Go,this.context??=new ose,this.params){const s=this.params.toString();if(0===s.length)this.urlWithParams=e;else{const a=e.indexOf("?");this.urlWithParams=e+(-1===a?"?":aee.set(oe,n.setHeaders[oe]),W)),n.setParams&&(q=Object.keys(n.setParams).reduce((ee,oe)=>ee.set(oe,n.setParams[oe]),q)),new bf(e,i,E,{params:q,headers:W,context:Y,reportProgress:A,responseType:o,withCredentials:I,transferCache:w,keepalive:r,cache:a,priority:s,timeout:M,mode:l,redirect:d,credentials:f,referrer:m,integrity:g,referrerPolicy:b})}}var wa=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}(wa||{});class Dx{headers;status;statusText;url;ok;type;redirected;responseType;constructor(n,e=200,i="OK"){this.headers=n.headers||new Go,this.status=void 0!==n.status?n.status:e,this.statusText=n.statusText||i,this.url=n.url||null,this.redirected=n.redirected,this.responseType=n.responseType,this.ok=this.status>=200&&this.status<300}}class G_ extends Dx{constructor(n={}){super(n)}type=wa.ResponseHeader;clone(n={}){return new G_({headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}class vf extends Dx{body;constructor(n={}){super(n),this.body=void 0!==n.body?n.body:null}type=wa.Response;clone(n={}){return new vf({body:void 0!==n.body?n.body:this.body,headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0,redirected:n.redirected??this.redirected,responseType:n.responseType??this.responseType})}}class Xl extends Dx{name="HttpErrorResponse";message;error;ok=!1;constructor(n){super(n,0,"Unknown Error"),this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${n.url||"(unknown url)"}`:`Http failure response for ${n.url||"(unknown url)"}: ${n.status} ${n.statusText}`,this.error=n.error||null}}const yN=new Z(""),gse=/^\)\]\}',?\n/;let CN=(()=>{class t{xhrFactory;tracingService=T(da,{optional:!0});constructor(e){this.xhrFactory=e}maybePropagateTrace(e){return this.tracingService?.propagate?this.tracingService.propagate(e):e}handle(e){if("JSONP"===e.method)throw new X(-2800,!1);const i=this.xhrFactory;return se(null).pipe(wt(()=>new zt(r=>{const s=i.build();if(s.open(e.method,e.urlWithParams),e.withCredentials&&(s.withCredentials=!0),e.headers.forEach((E,I)=>s.setRequestHeader(E,I.join(","))),e.headers.has("Accept")||s.setRequestHeader("Accept",bN),!e.headers.has(_f)){const E=e.detectContentTypeHeader();null!==E&&s.setRequestHeader(_f,E)}if(e.timeout&&(s.timeout=e.timeout),e.responseType){const E=e.responseType.toLowerCase();s.responseType="json"!==E?E:"text"}const a=e.serializeBody();let l=null;const d=()=>{if(null!==l)return l;const E=s.statusText||"OK",I=new Go(s.getAllResponseHeaders());return l=new G_({headers:I,status:s.status,statusText:E,url:s.responseURL||e.url}),l},f=this.maybePropagateTrace(()=>{let{headers:E,status:I,statusText:A,url:W}=d(),q=null;204!==I&&(q=typeof s.response>"u"?s.responseText:s.response),0===I&&(I=q?200:0);let Y=I>=200&&I<300;if("json"===e.responseType&&"string"==typeof q){const ee=q;q=q.replace(gse,"");try{q=""!==q?JSON.parse(q):null}catch(oe){q=ee,Y&&(Y=!1,q={error:oe,text:q})}}Y?(r.next(new vf({body:q,headers:E,status:I,statusText:A,url:W||void 0})),r.complete()):r.error(new Xl({error:q,headers:E,status:I,statusText:A,url:W||void 0}))}),m=this.maybePropagateTrace(E=>{const{url:I}=d(),A=new Xl({error:E,status:s.status||0,statusText:s.statusText||"Unknown Error",url:I||void 0});r.error(A)});let g=m;e.timeout&&(g=this.maybePropagateTrace(E=>{const{url:I}=d(),A=new Xl({error:new DOMException("Request timed out","TimeoutError"),status:s.status||0,statusText:s.statusText||"Request timeout",url:I||void 0});r.error(A)}));let b=!1;const w=this.maybePropagateTrace(E=>{b||(r.next(d()),b=!0);let I={type:wa.DownloadProgress,loaded:E.loaded};E.lengthComputable&&(I.total=E.total),"text"===e.responseType&&s.responseText&&(I.partialText=s.responseText),r.next(I)}),M=this.maybePropagateTrace(E=>{let I={type:wa.UploadProgress,loaded:E.loaded};E.lengthComputable&&(I.total=E.total),r.next(I)});return s.addEventListener("load",f),s.addEventListener("error",m),s.addEventListener("timeout",g),s.addEventListener("abort",m),e.reportProgress&&(s.addEventListener("progress",w),null!==a&&s.upload&&s.upload.addEventListener("progress",M)),s.send(a),r.next({type:wa.Sent}),()=>{s.removeEventListener("error",m),s.removeEventListener("abort",m),s.removeEventListener("load",f),s.removeEventListener("timeout",g),e.reportProgress&&(s.removeEventListener("progress",w),null!==a&&s.upload&&s.upload.removeEventListener("progress",M)),s.readyState!==s.DONE&&s.abort()}})))}static \u0275fac=function(i){return new(i||t)(ce(nT))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function wN(t,n){return n(t)}function _se(t,n){return(e,i)=>n.intercept(e,{handle:o=>t(o,i)})}const vse=new Z(""),yf=new Z("",{factory:()=>[]}),yse=new Z(""),xN=new Z("",{factory:()=>!0});function Cse(){let t=null;return(n,e)=>{null===t&&(t=(T(vse,{optional:!0})??[]).reduceRight(_se,wN));const i=T(bm);if(T(xN)){const r=i.add();return t(n,e).pipe(j_(r))}return t(n,e)}}let q_=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(CN),o},providedIn:"root"})}return t})(),Px=(()=>{class t{backend;injector;chain=null;pendingTasks=T(bm);contributeToStability=T(xN);constructor(e,i){this.backend=e,this.injector=i}handle(e){if(null===this.chain){const i=Array.from(new Set([...this.injector.get(yf),...this.injector.get(yse,[])]));this.chain=i.reduceRight((o,r)=>function bse(t,n,e){return(i,o)=>io(e,()=>n(i,r=>t(r,o)))}(o,r,this.injector),wN)}if(this.contributeToStability){const i=this.pendingTasks.add();return this.chain(e,o=>this.backend.handle(o)).pipe(j_(i))}return this.chain(e,i=>this.backend.handle(i))}static \u0275fac=function(i){return new(i||t)(ce(q_),ce(Wn))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Ix=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(Px),o},providedIn:"root"})}return t})();function Ox(t,n){return{body:n,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials,credentials:t.credentials,transferCache:t.transferCache,timeout:t.timeout,keepalive:t.keepalive,priority:t.priority,cache:t.cache,mode:t.mode,redirect:t.redirect,integrity:t.integrity,referrer:t.referrer,referrerPolicy:t.referrerPolicy}}let xa=(()=>{class t{handler;constructor(e){this.handler=e}request(e,i,o={}){let r;if(e instanceof bf)r=e;else{let l,d;l=o.headers instanceof Go?o.headers:new Go(o.headers),o.params&&(d=o.params instanceof Ca?o.params:new Ca({fromObject:o.params})),r=new bf(e,i,void 0!==o.body?o.body:null,{headers:l,context:o.context,params:d,reportProgress:o.reportProgress,responseType:o.responseType||"json",withCredentials:o.withCredentials,transferCache:o.transferCache,keepalive:o.keepalive,priority:o.priority,cache:o.cache,mode:o.mode,redirect:o.redirect,credentials:o.credentials,referrer:o.referrer,referrerPolicy:o.referrerPolicy,integrity:o.integrity,timeout:o.timeout})}const s=se(r).pipe(mf(l=>this.handler.handle(l)));if(e instanceof bf||"events"===o.observe)return s;const a=s.pipe(Pn(l=>l instanceof vf));switch(o.observe||"body"){case"body":switch(r.responseType){case"arraybuffer":return a.pipe(De(l=>{if(null!==l.body&&!(l.body instanceof ArrayBuffer))throw new X(2806,!1);return l.body}));case"blob":return a.pipe(De(l=>{if(null!==l.body&&!(l.body instanceof Blob))throw new X(2807,!1);return l.body}));case"text":return a.pipe(De(l=>{if(null!==l.body&&"string"!=typeof l.body)throw new X(2808,!1);return l.body}));default:return a.pipe(De(l=>l.body))}case"response":return a;default:throw new X(2809,!1)}}delete(e,i={}){return this.request("DELETE",e,i)}get(e,i={}){return this.request("GET",e,i)}head(e,i={}){return this.request("HEAD",e,i)}jsonp(e,i){return this.request("JSONP",e,{params:(new Ca).append(i,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(e,i={}){return this.request("OPTIONS",e,i)}patch(e,i,o={}){return this.request("PATCH",e,Ox(o,i))}post(e,i,o={}){return this.request("POST",e,Ox(o,i))}put(e,i,o={}){return this.request("PUT",e,Ox(o,i))}static \u0275fac=function(i){return new(i||t)(ce(Ix))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const SN=new Z("",{factory:()=>!0}),MN=new Z("",{factory:()=>"XSRF-TOKEN"}),DN=new Z("",{factory:()=>"X-XSRF-TOKEN"});let Dse=(()=>{class t{cookieName=T(MN);doc=T(et);lastCookieString="";lastToken=null;parseCount=0;getToken(){const e=this.doc.cookie||"";return e!==this.lastCookieString&&(this.parseCount++,this.lastToken=tT(e,this.cookieName),this.lastCookieString=e),this.lastToken}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Tse=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(Dse),o},providedIn:"root"})}return t})();function Ese(t,n){if(!T(SN)||"GET"===t.method||"HEAD"===t.method)return n(t);try{const o=T(ym).href,{origin:r}=new URL(o),{origin:s}=new URL(t.url,r);if(r!==s)return n(t)}catch{return n(t)}const e=T(Tse).getToken(),i=T(DN);return null!=e&&!t.headers.has(i)&&(t=t.clone({headers:t.headers.set(i,e)})),n(t)}var ka=function(t){return t[t.Interceptors=0]="Interceptors",t[t.LegacyInterceptors=1]="LegacyInterceptors",t[t.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",t[t.NoXsrfProtection=3]="NoXsrfProtection",t[t.JsonpSupport=4]="JsonpSupport",t[t.RequestsMadeViaParent=5]="RequestsMadeViaParent",t[t.Fetch=6]="Fetch",t}(ka||{});function Zl(t,n){return{\u0275kind:t,\u0275providers:n}}function Pse(...t){const n=[xa,Px,{provide:Ix,useExisting:Px},{provide:q_,useFactory:()=>T(yN,{optional:!0})??T(CN)},{provide:yf,useValue:Ese,multi:!0}];for(const e of t)n.push(...e.\u0275providers);return Gu(n)}const TN=new Z("");function $r(t){return!!t&&(t instanceof zt||fn(t.lift)&&fn(t.subscribe))}const{isArray:Ose}=Array,{getPrototypeOf:Ase,prototype:Rse,keys:Fse}=Object;function EN(t){if(1===t.length){const n=t[0];if(Ose(n))return{args:n,keys:null};if(function Nse(t){return t&&"object"==typeof t&&Ase(t)===Rse}(n)){const e=Fse(n);return{args:e.map(i=>n[i]),keys:e}}}return{args:t,keys:null}}const{isArray:Lse}=Array;function PN(t){return De(n=>function Bse(t,n){return Lse(n)?t(...n):t(n)}(t,n))}function IN(t,n){return t.reduce((e,i,o)=>(e[i]=n[o],e),{})}function Ax(...t){const n=gf(t),e=dN(t),{args:i,keys:o}=EN(t);if(0===i.length)return Xn([],n);const r=new zt(function Vse(t,n,e=Qa){return i=>{ON(n,()=>{const{length:o}=t,r=new Array(o);let s=o,a=o;for(let l=0;l{const d=Xn(t[l],n);let f=!1;d.subscribe(pn(i,m=>{r[l]=m,f||(f=!0,a--),a||i.next(e(r.slice()))},()=>{--s||i.complete()}))},i)},i)}}(i,n,o?s=>IN(o,s):Qa));return e?r.pipe(PN(e)):r}function ON(t,n,e){t?Rs(e,t,n):n()}const Rx=ay(t=>function(){t(this),this.name="EmptyError",this.message="no elements in sequence"});function qd(t=1/0){return Tt(Qa,t)}function Fs(...t){return function Hse(){return qd(1)}()(Xn(t,gf(t)))}function Sa(t){return new zt(n=>{qi(t()).subscribe(n)})}const Ni=new zt(t=>t.complete());function Cr(t,n){const e=fn(t)?t:()=>t,i=o=>o.error(e());return new zt(n?o=>n.schedule(i,0,o):i)}function wn(t){return t<=0?()=>Ni:En((n,e)=>{let i=0;n.subscribe(pn(e,o=>{++i<=t&&(e.next(o),t<=i&&e.complete())}))})}function $se(t=Wse){return En((n,e)=>{let i=!1;n.subscribe(pn(e,o=>{i=!0,e.next(o)},()=>i?e.complete():e.error(t())))})}function Wse(){return new Rx}function Wr(t,n){const e=arguments.length>=2;return i=>i.pipe(t?Pn((o,r)=>t(o,r,i)):Qa,wn(1),e?function jse(t){return En((n,e)=>{let i=!1;n.subscribe(pn(e,o=>{i=!0,e.next(o)},()=>{i||e.next(t),e.complete()}))})}(n):$se(()=>new Rx))}function zn(...t){const n=gf(t);return En((e,i)=>{(n?Fs(t,e,n):Fs(t,e)).subscribe(i)})}function ln(t){return En((n,e)=>{qi(t).subscribe(pn(e,()=>e.complete(),zp)),!e.closed&&n.subscribe(e)})}function ui(t,n,e){const i=fn(t)||n||e?{next:t,error:n,complete:e}:t;return i?En((o,r)=>{var s;null===(s=i.subscribe)||void 0===s||s.call(i);let a=!0;o.subscribe(pn(r,l=>{var d;null===(d=i.next)||void 0===d||d.call(i,l),r.next(l)},()=>{var l;a=!1,null===(l=i.complete)||void 0===l||l.call(i),r.complete()},l=>{var d;a=!1,null===(d=i.error)||void 0===d||d.call(i,l),r.error(l)},()=>{var l,d;a&&(null===(l=i.unsubscribe)||void 0===l||l.call(i)),null===(d=i.finalize)||void 0===d||d.call(i)}))}):Qa}function AN(t){return t<=0?()=>Ni:En((n,e)=>{let i=[];n.subscribe(pn(e,o=>{i.push(o),t{for(const o of i)e.next(o);e.complete()},void 0,()=>{i=null}))})}function ii(t){return En((n,e)=>{let r,i=null,o=!1;i=n.subscribe(pn(e,void 0,void 0,s=>{r=qi(t(s,ii(t)(n))),i?(i.unsubscribe(),i=null,r.subscribe(e)):o=!0})),o&&(i.unsubscribe(),i=null,r.subscribe(e))})}let iae=(()=>{class t{_doc;constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),K_=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(aae),o},providedIn:"root"})}return t})(),aae=(()=>{class t extends K_{_doc;constructor(e){super(),this._doc=e}sanitize(e,i){if(null==i)return null;switch(e){case yi.NONE:return i;case yi.HTML:return Vr(i,"HTML")?Po(i):aE(this._doc,String(i)).toString();case yi.STYLE:return Vr(i,"Style")?Po(i):i;case yi.SCRIPT:if(Vr(i,"Script"))return Po(i);throw new X(5200,!1);case yi.URL:return Vr(i,"URL")?Po(i):mh(String(i));case yi.RESOURCE_URL:if(Vr(i,"ResourceURL"))return Po(i);throw new X(5201,!1);default:throw new X(5202,!1)}}bypassSecurityTrustHtml(e){return function A9(t){return new D9(t)}(e)}bypassSecurityTrustStyle(e){return function R9(t){return new T9(t)}(e)}bypassSecurityTrustScript(e){return function F9(t){return new E9(t)}(e)}bypassSecurityTrustUrl(e){return function N9(t){return new P9(t)}(e)}bypassSecurityTrustResourceUrl(e){return function L9(t){return new I9(t)}(e)}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Ye="primary",wf=Symbol("RouteTitle");class lae{params;constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){const e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){const e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function Kd(t){return new lae(t)}function Fx(t,n,e){for(let i=0;it.length||"full"===e.pathMatch&&(n.hasChildren()||i.lengtht.length||"full"===e.pathMatch&&n.hasChildren()&&"**"!==e.path)return null;const a={};return Fx(r,t.slice(0,r.length),a)&&Fx(s,t.slice(t.length-s.length),a)?{consumed:t,posParams:a}:null}function Y_(t){return new Promise((n,e)=>{t.pipe(Wr()).subscribe({next:i=>n(i),error:i=>e(i)})})}function Gr(t,n){const e=t?Nx(t):void 0,i=n?Nx(n):void 0;if(!e||!i||e.length!=i.length)return!1;let o;for(let r=0;ri[r]===o)}return t===n}function Ql(t){return $r(t)?t:Hh(t)?Xn(Promise.resolve(t)):se(t)}function HN(t){return $r(t)?Y_(t):Promise.resolve(t)}const hae={exact:function jN(t,n,e){if(!Jl(t.segments,n.segments)||!Z_(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(const i in n.children)if(!t.children[i]||!jN(t.children[i],n.children[i],e))return!1;return!0},subset:$N},UN={exact:function pae(t,n){return Gr(t,n)},subset:function mae(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>VN(t[e],n[e]))},ignored:()=>!0},zN={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},X_={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};function Lx(t,n,e){return hae[e.paths](t.root,n.root,e.matrixParams)&&UN[e.queryParams](t.queryParams,n.queryParams)&&!("exact"===e.fragment&&t.fragment!==n.fragment)}function $N(t,n,e){return WN(t,n,n.segments,e)}function WN(t,n,e,i){if(t.segments.length>e.length){const o=t.segments.slice(0,e.length);return!(!Jl(o,e)||n.hasChildren()||!Z_(o,e,i))}if(t.segments.length===e.length){if(!Jl(t.segments,e)||!Z_(t.segments,e,i))return!1;for(const o in n.children)if(!t.children[o]||!$N(t.children[o],n.children[o],i))return!1;return!0}{const o=e.slice(0,t.segments.length),r=e.slice(t.segments.length);return!!(Jl(t.segments,o)&&Z_(t.segments,o,i)&&t.children[Ye])&&WN(t.children[Ye],n,r,i)}}function Z_(t,n,e){return n.every((i,o)=>UN[e](t[o].parameters,i.parameters))}class wr{root;queryParams;fragment;_queryParamMap;constructor(n=new Xt([],{}),e={},i=null){this.root=n,this.queryParams=e,this.fragment=i}get queryParamMap(){return this._queryParamMap??=Kd(this.queryParams),this._queryParamMap}toString(){return bae.serialize(this)}}class Xt{segments;children;parent=null;constructor(n,e){this.segments=n,this.children=e,Object.values(e).forEach(i=>i.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Q_(this)}}class xf{path;parameters;_parameterMap;constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=Kd(this.parameters),this._parameterMap}toString(){return KN(this)}}function Jl(t,n){return t.length===n.length&&t.every((e,i)=>e.path===n[i].path)}let Yd=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>new kf,providedIn:"root"})}return t})();class kf{parse(n){const e=new Eae(n);return new wr(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){const e=`/${Sf(n.root,!0)}`,i=function Cae(t){const n=Object.entries(t).map(([e,i])=>Array.isArray(i)?i.map(o=>`${J_(e)}=${J_(o)}`).join("&"):`${J_(e)}=${J_(i)}`).filter(e=>e);return n.length?`?${n.join("&")}`:""}(n.queryParams);return`${e}${i}${"string"==typeof n.fragment?`#${function vae(t){return encodeURI(t)}(n.fragment)}`:""}`}}const bae=new kf;function Q_(t){return t.segments.map(n=>KN(n)).join("/")}function Sf(t,n){if(!t.hasChildren())return Q_(t);if(n){const e=t.children[Ye]?Sf(t.children[Ye],!1):"",i=[];return Object.entries(t.children).forEach(([o,r])=>{o!==Ye&&i.push(`${o}:${Sf(r,!1)}`)}),i.length>0?`${e}(${i.join("//")})`:e}{const e=function _ae(t,n){let e=[];return Object.entries(t.children).forEach(([i,o])=>{i===Ye&&(e=e.concat(n(o,i)))}),Object.entries(t.children).forEach(([i,o])=>{i!==Ye&&(e=e.concat(n(o,i)))}),e}(t,(i,o)=>o===Ye?[Sf(t.children[Ye],!1)]:[`${o}:${Sf(i,!1)}`]);return 1===Object.keys(t.children).length&&null!=t.children[Ye]?`${Q_(t)}/${e[0]}`:`${Q_(t)}/(${e.join("//")})`}}function GN(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function J_(t){return GN(t).replace(/%3B/gi,";")}function Bx(t){return GN(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function eb(t){return decodeURIComponent(t)}function qN(t){return eb(t.replace(/\+/g,"%20"))}function KN(t){return`${Bx(t.path)}${function yae(t){return Object.entries(t).map(([n,e])=>`;${Bx(n)}=${Bx(e)}`).join("")}(t.parameters)}`}const wae=/^[^\/()?;#]+/;function Vx(t){const n=t.match(wae);return n?n[0]:""}const xae=/^[^\/()?;=#]+/,Sae=/^[^=?&#]+/,Dae=/^[^&#]+/;class Eae{url;remaining;constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new Xt([],{}):new Xt([],this.parseChildren())}parseQueryParams(){const n={};if(this.consumeOptional("?"))do{this.parseQueryParam(n)}while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(n=0){if(n>50)throw new X(4010,!1);if(""===this.remaining)return{};this.consumeOptional("/");const e=[];for(this.peekStartsWith("(")||e.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),e.push(this.parseSegment());let i={};this.peekStartsWith("/(")&&(this.capture("/"),i=this.parseParens(!0,n));let o={};return this.peekStartsWith("(")&&(o=this.parseParens(!1,n)),(e.length>0||Object.keys(i).length>0)&&(o[Ye]=new Xt(e,i)),o}parseSegment(){const n=Vx(this.remaining);if(""===n&&this.peekStartsWith(";"))throw new X(4009,!1);return this.capture(n),new xf(eb(n),this.parseMatrixParams())}parseMatrixParams(){const n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){const e=function kae(t){const n=t.match(xae);return n?n[0]:""}(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){const o=Vx(this.remaining);o&&(i=o,this.capture(i))}n[eb(e)]=eb(i)}parseQueryParam(n){const e=function Mae(t){const n=t.match(Sae);return n?n[0]:""}(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){const s=function Tae(t){const n=t.match(Dae);return n?n[0]:""}(this.remaining);s&&(i=s,this.capture(i))}const o=qN(e),r=qN(i);if(n.hasOwnProperty(o)){let s=n[o];Array.isArray(s)||(s=[s],n[o]=s),s.push(r)}else n[o]=r}parseParens(n,e){const i={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const o=Vx(this.remaining),r=this.remaining[o.length];if("/"!==r&&")"!==r&&";"!==r)throw new X(4010,!1);let s;o.indexOf(":")>-1?(s=o.slice(0,o.indexOf(":")),this.capture(s),this.capture(":")):n&&(s=Ye);const a=this.parseChildren(e+1);i[s??Ye]=1===Object.keys(a).length&&a[Ye]?a[Ye]:new Xt([],a),this.consumeOptional("//")}return i}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return!!this.peekStartsWith(n)&&(this.remaining=this.remaining.substring(n.length),!0)}capture(n){if(!this.consumeOptional(n))throw new X(4011,!1)}}function YN(t){return t.segments.length>0?new Xt([],{[Ye]:t}):t}function XN(t){const n={};for(const[i,o]of Object.entries(t.children)){const r=XN(o);if(i===Ye&&0===r.segments.length&&r.hasChildren())for(const[s,a]of Object.entries(r.children))n[s]=a;else(r.segments.length>0||r.hasChildren())&&(n[i]=r)}return function Pae(t){if(1===t.numberOfChildren&&t.children[Ye]){const n=t.children[Ye];return new Xt(t.segments.concat(n.segments),n.children)}return t}(new Xt(t.segments,n))}function ec(t){return t instanceof wr}function ZN(t){let n;const o=YN(function e(r){const s={};for(const l of r.children){const d=e(l);s[l.outlet]=d}const a=new Xt(r.url,s);return r===t&&(n=a),a}(t.root));return n??o}function QN(t,n,e,i,o){let r=t;for(;r.parent;)r=r.parent;if(0===n.length)return Hx(r,r,r,e,i,o);const s=function Oae(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new tL(!0,0,t);let n=0,e=!1;const i=t.reduce((o,r,s)=>{if("object"==typeof r&&null!=r){if(r.outlets){const a={};return Object.entries(r.outlets).forEach(([l,d])=>{a[l]="string"==typeof d?d.split("/"):d}),[...o,{outlets:a}]}if(r.segmentPath)return[...o,r.segmentPath]}return"string"!=typeof r?[...o,r]:0===s?(r.split("/").forEach((a,l)=>{0==l&&"."===a||(0==l&&""===a?e=!0:".."===a?n++:""!=a&&o.push(a))}),o):[...o,r]},[]);return new tL(e,n,i)}(n);if(s.toRoot())return Hx(r,r,new Xt([],{}),e,i,o);const a=function Aae(t,n,e){if(t.isAbsolute)return new nb(n,!0,0);if(!e)return new nb(n,!1,NaN);if(null===e.parent)return new nb(e,!0,0);const i=tb(t.commands[0])?0:1;return function Rae(t,n,e){let i=t,o=n,r=e;for(;r>o;){if(r-=o,i=i.parent,!i)throw new X(4005,!1);o=i.segments.length}return new nb(i,!1,o-r)}(e,e.segments.length-1+i,t.numberOfDoubleDots)}(s,r,t),l=a.processChildren?Df(a.segmentGroup,a.index,s.commands):nL(a.segmentGroup,a.index,s.commands);return Hx(r,a.segmentGroup,l,e,i,o)}function tb(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function Mf(t){return"object"==typeof t&&null!=t&&t.outlets}function JN(t,n,e){t||="\u0275";const i=new wr;return i.queryParams={[t]:n},e.parse(e.serialize(i)).queryParams[t]}function Hx(t,n,e,i,o,r){const s={};for(const[d,f]of Object.entries(i??{}))s[d]=Array.isArray(f)?f.map(m=>JN(d,m,r)):JN(d,f,r);let a;a=t===n?e:eL(t,n,e);const l=YN(XN(a));return new wr(l,s,o)}function eL(t,n,e){const i={};return Object.entries(t.children).forEach(([o,r])=>{i[o]=r===n?e:eL(r,n,e)}),new Xt(t.segments,i)}class tL{isAbsolute;numberOfDoubleDots;commands;constructor(n,e,i){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=i,n&&i.length>0&&tb(i[0]))throw new X(4003,!1);const o=i.find(Mf);if(o&&o!==function uae(t){return t.length>0?t[t.length-1]:null}(i))throw new X(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class nb{segmentGroup;processChildren;index;constructor(n,e,i){this.segmentGroup=n,this.processChildren=e,this.index=i}}function nL(t,n,e){if(t??=new Xt([],{}),0===t.segments.length&&t.hasChildren())return Df(t,n,e);const i=function Nae(t,n,e){let i=0,o=n;const r={match:!1,pathIndex:0,commandIndex:0};for(;o=e.length)return r;const s=t.segments[o],a=e[i];if(Mf(a))break;const l=`${a}`,d=i0&&void 0===l)break;if(l&&d&&"object"==typeof d&&void 0===d.outlets){if(!oL(l,d,s))return r;i+=2}else{if(!oL(l,{},s))return r;i++}o++}return{match:!0,pathIndex:o,commandIndex:i}}(t,n,e),o=e.slice(i.commandIndex);if(i.match&&i.pathIndexr!==Ye)&&t.children[Ye]&&1===t.numberOfChildren&&0===t.children[Ye].segments.length){const r=Df(t.children[Ye],n,e);return new Xt(t.segments,r.children)}return Object.entries(i).forEach(([r,s])=>{"string"==typeof s&&(s=[s]),null!==s&&(o[r]=nL(t.children[r],n,s))}),Object.entries(t.children).forEach(([r,s])=>{void 0===i[r]&&(o[r]=s)}),new Xt(t.segments,o)}}function Ux(t,n,e){const i=t.segments.slice(0,n);let o=0;for(;o{"string"==typeof i&&(i=[i]),null!==i&&(n[e]=Ux(new Xt([],{}),0,i))}),n}function iL(t){const n={};return Object.entries(t).forEach(([e,i])=>n[e]=`${i}`),n}function oL(t,n,e){return t==e.path&&Gr(n,e.parameters)}const Tf="imperative";var bt=function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t}(bt||{});class qr{id;url;constructor(n,e){this.id=n,this.url=e}}class ib extends qr{type=bt.NavigationStart;navigationTrigger;restoredState;constructor(n,e,i="imperative",o=null){super(n,e),this.navigationTrigger=i,this.restoredState=o}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class Kr extends qr{urlAfterRedirects;type=bt.NavigationEnd;constructor(n,e,i){super(n,e),this.urlAfterRedirects=i}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}var wo=function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t[t.Aborted=4]="Aborted",t}(wo||{}),ob=function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t}(ob||{});class Da extends qr{reason;code;type=bt.NavigationCancel;constructor(n,e,i,o){super(n,e),this.reason=i,this.code=o}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class Xd extends qr{reason;code;type=bt.NavigationSkipped;constructor(n,e,i,o){super(n,e),this.reason=i,this.code=o}}class zx extends qr{error;target;type=bt.NavigationError;constructor(n,e,i,o){super(n,e),this.error=i,this.target=o}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class rL extends qr{urlAfterRedirects;state;type=bt.RoutesRecognized;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Vae extends qr{urlAfterRedirects;state;type=bt.GuardsCheckStart;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Hae extends qr{urlAfterRedirects;state;shouldActivate;type=bt.GuardsCheckEnd;constructor(n,e,i,o,r){super(n,e),this.urlAfterRedirects=i,this.state=o,this.shouldActivate=r}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class Uae extends qr{urlAfterRedirects;state;type=bt.ResolveStart;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class zae extends qr{urlAfterRedirects;state;type=bt.ResolveEnd;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class jae{route;type=bt.RouteConfigLoadStart;constructor(n){this.route=n}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class $ae{route;type=bt.RouteConfigLoadEnd;constructor(n){this.route=n}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class Wae{snapshot;type=bt.ChildActivationStart;constructor(n){this.snapshot=n}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Gae{snapshot;type=bt.ChildActivationEnd;constructor(n){this.snapshot=n}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class qae{snapshot;type=bt.ActivationStart;constructor(n){this.snapshot=n}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Kae{snapshot;type=bt.ActivationEnd;constructor(n){this.snapshot=n}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class sL{routerEvent;position;anchor;scrollBehavior;type=bt.Scroll;constructor(n,e,i,o){this.routerEvent=n,this.position=e,this.anchor=i,this.scrollBehavior=o}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}class jx{}class aL{}class rb{url;navigationBehaviorOptions;constructor(n,e){this.url=n,this.navigationBehaviorOptions=e}}class Xae{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return this.route?.snapshot._environmentInjector??this.rootInjector}constructor(n){this.rootInjector=n,this.children=new Ef(this.rootInjector)}}let Ef=(()=>{class t{rootInjector;contexts=new Map;constructor(e){this.rootInjector=e}onChildOutletCreated(e,i){const o=this.getOrCreateContext(e);o.outlet=i,this.contexts.set(e,o)}onChildOutletDestroyed(e){const i=this.getContext(e);i&&(i.outlet=null,i.attachRef=null)}onOutletDeactivated(){const e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let i=this.getContext(e);return i||(i=new Xae(this.rootInjector),this.contexts.set(e,i)),i}getContext(e){return this.contexts.get(e)||null}static \u0275fac=function(i){return new(i||t)(ce(Wn))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class lL{_root;constructor(n){this._root=n}get root(){return this._root.value}parent(n){const e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){const e=$x(n,this._root);return e?e.children.map(i=>i.value):[]}firstChild(n){const e=$x(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){const e=Wx(n,this._root);return e.length<2?[]:e[e.length-2].children.map(o=>o.value).filter(o=>o!==n)}pathFromRoot(n){return Wx(n,this._root).map(e=>e.value)}}function $x(t,n){if(t===n.value)return n;for(const e of n.children){const i=$x(t,e);if(i)return i}return null}function Wx(t,n){if(t===n.value)return[n];for(const e of n.children){const i=Wx(t,e);if(i.length)return i.unshift(n),i}return[]}class xr{value;children;constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}}function Zd(t){const n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}class cL extends lL{snapshot;constructor(n,e){super(n),this.snapshot=e,Kx(this,n)}toString(){return this.snapshot.toString()}}function dL(t,n){const e=function Zae(t,n){const s=new qx([],{},{},"",{},Ye,t,null,{},n);return new uL("",new xr(s,[]))}(t,n),i=new Ei([new xf("",{})]),o=new Ei({}),r=new Ei({}),s=new Ei({}),a=new Ei(""),l=new Li(i,o,s,a,r,Ye,t,e.root);return l.snapshot=e.root,new cL(new xr(l,[]),e)}class Li{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(n,e,i,o,r,s,a,l){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=i,this.fragmentSubject=o,this.dataSubject=r,this.outlet=s,this.component=a,this._futureSnapshot=l,this.title=this.dataSubject?.pipe(De(d=>d[wf]))??se(void 0),this.url=n,this.params=e,this.queryParams=i,this.fragment=o,this.data=r}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.params.pipe(De(n=>Kd(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(De(n=>Kd(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Gx(t,n,e="emptyOnly"){let i;const{routeConfig:o}=t;return i=null===n||"always"!==e&&""!==o?.path&&(n.component||n.routeConfig?.loadComponent)?{params:{...t.params},data:{...t.data},resolve:{...t.data,...t._resolvedData??{}}}:{params:{...n.params,...t.params},data:{...n.data,...t.data},resolve:{...t.data,...n.data,...o?.data,...t._resolvedData}},o&&fL(o)&&(i.resolve[wf]=o.title),i}class qx{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;_environmentInjector;get title(){return this.data?.[wf]}constructor(n,e,i,o,r,s,a,l,d,f){this.url=n,this.params=e,this.queryParams=i,this.fragment=o,this.data=r,this.outlet=s,this.component=a,this.routeConfig=l,this._resolve=d,this._environmentInjector=f}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??=Kd(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=Kd(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(i=>i.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class uL extends lL{url;constructor(n,e){super(e),this.url=n,Kx(this,e)}toString(){return hL(this._root)}}function Kx(t,n){n.value._routerState=t,n.children.forEach(e=>Kx(t,e))}function hL(t){const n=t.children.length>0?` { ${t.children.map(hL).join(", ")} } `:"";return`${t.value}${n}`}function Yx(t){if(t.snapshot){const n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,Gr(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),Gr(n.params,e.params)||t.paramsSubject.next(e.params),function dae(t,n){if(t.length!==n.length)return!1;for(let e=0;eGr(e.parameters,n[i].parameters))}(t.url,n.url);return e&&!(!t.parent!=!n.parent)&&(!t.parent||Xx(t.parent,n.parent))}function fL(t){return"string"==typeof t.title||null===t.title}const Qae=new Z("");let sb=(()=>{class t{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=Ye;activateEvents=new ke;deactivateEvents=new ke;attachEvents=new ke;detachEvents=new ke;routerOutletData=uee();parentContexts=T(Ef);location=T(Ai);changeDetector=T(Dt);inputBinder=T(ab,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(e){if(e.name){const{firstChange:i,previousValue:o}=e.name;if(i)return;this.isTrackedInParentContexts(o)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(o)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new X(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new X(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new X(4012,!1);this.location.detach();const e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,i){this.activated=e,this._activatedRoute=i,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){const e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,i){if(this.isActivated)throw new X(4013,!1);this._activatedRoute=e;const o=this.location,s=e.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,l=new Jae(e,a,o.injector,this.routerOutletData);this.activated=o.createComponent(s,{index:o.length,injector:l,environmentInjector:i}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["router-outlet"]],inputs:{name:"name",routerOutletData:[1,"routerOutletData"]},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],features:[vi]})}return t})();class Jae{route;childContexts;parent;outletData;constructor(n,e,i,o){this.route=n,this.childContexts=e,this.parent=i,this.outletData=o}get(n,e){return n===Li?this.route:n===Ef?this.childContexts:n===Qae?this.outletData:this.parent.get(n,e)}}const ab=new Z("");let pL=(()=>{class t{outletDataSubscriptions=new Map;bindActivatedRouteToOutletComponent(e){this.unsubscribeFromRouteData(e),this.subscribeToRouteData(e)}unsubscribeFromRouteData(e){this.outletDataSubscriptions.get(e)?.unsubscribe(),this.outletDataSubscriptions.delete(e)}subscribeToRouteData(e){const{activatedRoute:i}=e,o=Ax([i.queryParams,i.params,i.data]).pipe(wt(([r,s,a],l)=>(a={...r,...s,...a},0===l?se(a):Promise.resolve(a)))).subscribe(r=>{if(!e.isActivated||!e.activatedComponentRef||e.activatedRoute!==i||null===i.component)return void this.unsubscribeFromRouteData(e);const s=function bte(t){const n=kt(t);if(!n)return null;const e=new Rh(n);return{get selector(){return e.selector},get type(){return e.componentType},get inputs(){return e.inputs},get outputs(){return e.outputs},get ngContentSelectors(){return e.ngContentSelectors},get isStandalone(){return n.standalone},get isSignal(){return n.signals}}}(i.component);if(s)for(const{templateName:a}of s.inputs)e.activatedComponentRef.setInput(a,r[a]);else this.unsubscribeFromRouteData(e)});this.outletDataSubscriptions.set(e,o)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),mL=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["ng-component"]],exportAs:["emptyRouterOutlet"],decls:1,vars:0,template:function(i,o){1&i&&L(0,"router-outlet")},dependencies:[sb],encapsulation:2})}return t})();function Zx(t){const n=t.children&&t.children.map(Zx),e=n?{...t,children:n}:{...t};return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==Ye&&(e.component=mL),e}function Pf(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){const i=e.value;i._futureSnapshot=n.value;const o=function tle(t,n,e){return n.children.map(i=>{for(const o of e.children)if(t.shouldReuseRoute(i.value,o.value.snapshot))return Pf(t,i,o);return Pf(t,i)})}(t,n,e);return new xr(i,o)}{if(t.shouldAttach(n.value)){const r=t.retrieve(n.value);if(null!==r){const s=r.route;return s.value._futureSnapshot=n.value,s.children=n.children.map(a=>Pf(t,a)),s}}const i=function nle(t){return new Li(new Ei(t.url),new Ei(t.params),new Ei(t.queryParams),new Ei(t.fragment),new Ei(t.data),t.outlet,t.component,t)}(n.value),o=n.children.map(r=>Pf(t,r));return new xr(i,o)}}class Qx{redirectTo;navigationBehaviorOptions;constructor(n,e){this.redirectTo=n,this.navigationBehaviorOptions=e}}const gL="ngNavigationCancelingError";function lb(t,n){const{redirectTo:e,navigationBehaviorOptions:i}=ec(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,o=_L(!1,wo.Redirect);return o.url=e,o.navigationBehaviorOptions=i,o}function _L(t,n){const e=new Error(`NavigationCancelingError: ${t||""}`);return e[gL]=!0,e.cancellationCode=n,e}function bL(t){return!!t&&t[gL]}class ole{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(n,e,i,o,r){this.routeReuseStrategy=n,this.futureState=e,this.currState=i,this.forwardEvent=o,this.inputBindingEnabled=r}activate(n){const e=this.futureState._root,i=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,i,n),Yx(this.futureState.root),this.activateChildRoutes(e,i,n)}deactivateChildRoutes(n,e,i){const o=Zd(e);n.children.forEach(r=>{const s=r.value.outlet;this.deactivateRoutes(r,o[s],i),delete o[s]}),Object.values(o).forEach(r=>{this.deactivateRouteAndItsChildren(r,i)})}deactivateRoutes(n,e,i){const o=n.value,r=e?e.value:null;if(o===r)if(o.component){const s=i.getContext(o.outlet);s&&this.deactivateChildRoutes(n,e,s.children)}else this.deactivateChildRoutes(n,e,i);else r&&this.deactivateRouteAndItsChildren(e,i)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){const i=e.getContext(n.value.outlet),o=i&&n.value.component?i.children:e,r=Zd(n);for(const s of Object.values(r))this.deactivateRouteAndItsChildren(s,o);if(i&&i.outlet){const s=i.outlet.detach(),a=i.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:a})}}deactivateRouteAndOutlet(n,e){const i=e.getContext(n.value.outlet),o=i&&n.value.component?i.children:e,r=Zd(n);for(const s of Object.values(r))this.deactivateRouteAndItsChildren(s,o);i&&(i.outlet&&(i.outlet.deactivate(),i.children.onOutletDeactivated()),i.attachRef=null,i.route=null)}activateChildRoutes(n,e,i){const o=Zd(e);n.children.forEach(r=>{this.activateRoutes(r,o[r.value.outlet],i),this.forwardEvent(new Kae(r.value.snapshot))}),n.children.length&&this.forwardEvent(new Gae(n.value.snapshot))}activateRoutes(n,e,i){const o=n.value,r=e?e.value:null;if(Yx(o),o===r)if(o.component){const s=i.getOrCreateContext(o.outlet);this.activateChildRoutes(n,e,s.children)}else this.activateChildRoutes(n,e,i);else if(o.component){const s=i.getOrCreateContext(o.outlet);if(this.routeReuseStrategy.shouldAttach(o.snapshot)){const a=this.routeReuseStrategy.retrieve(o.snapshot);this.routeReuseStrategy.store(o.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),Yx(a.route.value),this.activateChildRoutes(n,null,s.children)}else s.attachRef=null,s.route=o,s.outlet&&s.outlet.activateWith(o,s.injector),this.activateChildRoutes(n,null,s.children)}else this.activateChildRoutes(n,null,i)}}class vL{path;route;constructor(n){this.path=n,this.route=this.path[this.path.length-1]}}class cb{component;route;constructor(n,e){this.component=n,this.route=e}}function rle(t,n,e){const i=t._root;return If(i,n?n._root:null,e,[i.value])}function Qd(t,n){const e=Symbol(),i=n.get(t,e);return i===e?"function"!=typeof t||function cU(t){return null!==Kp(t)}(t)?n.get(t):t:i}function If(t,n,e,i,o={canDeactivateChecks:[],canActivateChecks:[]}){const r=Zd(n);return t.children.forEach(s=>{(function ale(t,n,e,i,o={canDeactivateChecks:[],canActivateChecks:[]}){const r=t.value,s=n?n.value:null,a=e?e.getContext(t.value.outlet):null;if(s&&r.routeConfig===s.routeConfig){const l=function lle(t,n,e){if("function"==typeof e)return io(n._environmentInjector,()=>e(t,n));switch(e){case"pathParamsChange":return!Jl(t.url,n.url);case"pathParamsOrQueryParamsChange":return!Jl(t.url,n.url)||!Gr(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Xx(t,n)||!Gr(t.queryParams,n.queryParams);default:return!Xx(t,n)}}(s,r,r.routeConfig.runGuardsAndResolvers);l?o.canActivateChecks.push(new vL(i)):(r.data=s.data,r._resolvedData=s._resolvedData),If(t,n,r.component?a?a.children:null:e,i,o),l&&a&&a.outlet&&a.outlet.isActivated&&o.canDeactivateChecks.push(new cb(a.outlet.component,s))}else s&&Of(n,a,o),o.canActivateChecks.push(new vL(i)),If(t,null,r.component?a?a.children:null:e,i,o)})(s,r[s.value.outlet],e,i.concat([s.value]),o),delete r[s.value.outlet]}),Object.entries(r).forEach(([s,a])=>Of(a,e.getContext(s),o)),o}function Of(t,n,e){const i=Zd(t),o=t.value;Object.entries(i).forEach(([r,s])=>{Of(s,o.component?n?n.children.getContext(r):null:n,e)}),e.canDeactivateChecks.push(new cb(o.component&&n&&n.outlet&&n.outlet.isActivated?n.outlet.component:null,o))}function Af(t){return"function"==typeof t}function yL(t){return t instanceof Rx||"EmptyError"===t?.name}const db=Symbol("INITIAL_VALUE");function Jd(){return wt(t=>Ax(t.map(n=>n.pipe(wn(1),zn(db)))).pipe(De(n=>{for(const e of n)if(!0!==e){if(e===db)return db;if(!1===e||mle(e))return e}return!0}),Pn(n=>n!==db),wn(1)))}function mle(t){return ec(t)||t instanceof Qx}function CL(t){return t.aborted?se(void 0).pipe(wn(1)):new zt(n=>{const e=()=>{n.next(),n.complete()};return t.addEventListener("abort",e),()=>t.removeEventListener("abort",e)})}function wL(t){return ln(CL(t))}function xL(t){return function YH(...t){return jM(t)}(ui(n=>{if("boolean"!=typeof n)throw lb(0,n)}),De(n=>!0===n))}class Ns extends Error{segmentGroup;constructor(n){super(),this.segmentGroup=n||null,Object.setPrototypeOf(this,Ns.prototype)}}class Rf extends Error{urlTree;constructor(n){super(),this.urlTree=n,Object.setPrototypeOf(this,Rf.prototype)}}function Mle(t){throw new X(4e3,!1)}class Tle{urlSerializer;urlTree;constructor(n,e){this.urlSerializer=n,this.urlTree=e}lineralizeSegments(n,e){return At(function*(){let i=[],o=e.root;for(;;){if(i=i.concat(o.segments),0===o.numberOfChildren)return i;if(o.numberOfChildren>1||!o.children[Ye])throw Mle();o=o.children[Ye]}})()}applyRedirectCommands(n,e,i,o,r){var s=this;return At(function*(){const a=yield function Ele(t,n,e){if("string"==typeof t)return Promise.resolve(t);const i=t;return Y_(Ql(io(e,()=>i(n))))}(e,o,r);if(a instanceof wr)throw new Rf(a);const l=s.applyRedirectCreateUrlTree(a,s.urlSerializer.parse(a),n,i);if("/"===a[0])throw new Rf(l);return l})()}applyRedirectCreateUrlTree(n,e,i,o){const r=this.createSegmentGroup(n,e.root,i,o);return new wr(r,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){const i={};return Object.entries(n).forEach(([o,r])=>{if("string"==typeof r&&":"===r[0]){const a=r.substring(1);i[o]=e[a]}else i[o]=r}),i}createSegmentGroup(n,e,i,o){const r=this.createSegments(n,e.segments,i,o);let s={};return Object.entries(e.children).forEach(([a,l])=>{s[a]=this.createSegmentGroup(n,l,i,o)}),new Xt(r,s)}createSegments(n,e,i,o){return e.map(r=>":"===r.path[0]?this.findPosParam(n,r,o):this.findOrReturn(r,i))}findPosParam(n,e,i){const o=i[e.path.substring(1)];if(!o)throw new X(4001,!1);return o}findOrReturn(n,e){let i=0;for(const o of e){if(o.path===n.path)return e.splice(i),o;i++}return n}}function Yr(t){return t.outlet||Ye}function Rle(t,n){const e=t.filter(i=>Yr(i)===n);return e.push(...t.filter(i=>Yr(i)!==n)),e}const Jx={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function kL(t){return{routeConfig:t.routeConfig,url:t.url,params:t.params,queryParams:t.queryParams,fragment:t.fragment,data:t.data,outlet:t.outlet,title:t.title,paramMap:t.paramMap,queryParamMap:t.queryParamMap}}function Fle(t,n,e,i,o,r,s){const a=SL(t,n,e);if(!a.matched)return se(a);const l=kL(r(a));return i=function Ple(t,n){return t.providers&&!t._injector&&(t._injector=Ag(t.providers,n,`Route: ${t.path}`)),t._injector??n}(n,i),function Sle(t,n,e,i,o,r){const s=n.canMatch;return s&&0!==s.length?se(s.map(l=>{const d=Qd(l,t);return Ql(function ple(t){return t&&Af(t.canMatch)}(d)?d.canMatch(n,e,o):io(t,()=>d(n,e,o))).pipe(wL(r))})).pipe(Jd(),xL()):se(!0)}(i,n,e,0,l,s).pipe(De(d=>!0===d?a:{...Jx}))}function SL(t,n,e){if(""===n.path)return"full"===n.pathMatch&&(t.hasChildren()||e.length>0)?{...Jx}:{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};const o=(n.matcher||cae)(e,t,n);if(!o)return{...Jx};const r={};Object.entries(o.posParams??{}).forEach(([a,l])=>{r[a]=l.path});const s=o.consumed.length>0?{...r,...o.consumed[o.consumed.length-1].parameters}:r;return{matched:!0,consumedSegments:o.consumed,remainingSegments:e.slice(o.consumed.length),parameters:s,positionalParamSegments:o.posParams??{}}}function ML(t,n,e,i){return e.length>0&&function Ble(t,n,e){return e.some(i=>ub(t,n,i)&&Yr(i)!==Ye)}(t,e,i)?{segmentGroup:new Xt(n,Lle(i,new Xt(e,t.children))),slicedSegments:[]}:0===e.length&&function Vle(t,n,e){return e.some(i=>ub(t,n,i))}(t,e,i)?{segmentGroup:new Xt(t.segments,Nle(t,e,i,t.children)),slicedSegments:e}:{segmentGroup:new Xt(t.segments,t.children),slicedSegments:e}}function Nle(t,n,e,i){const o={};for(const r of e)if(ub(t,n,r)&&!i[Yr(r)]){const s=new Xt([],{});o[Yr(r)]=s}return{...i,...o}}function Lle(t,n){const e={};e[Ye]=n;for(const i of t)if(""===i.path&&Yr(i)!==Ye){const o=new Xt([],{});e[Yr(i)]=o}return e}function ub(t,n,e){return(!(t.hasChildren()||n.length>0)||"full"!==e.pathMatch)&&""===e.path}class Ule{}function ek(){return(ek=At(function*(t,n,e,i,o,r,s="emptyOnly",a){return new $le(t,n,e,i,o,s,r,a).recognize()})).apply(this,arguments)}class $le{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(n,e,i,o,r,s,a,l){this.injector=n,this.configLoader=e,this.rootComponentType=i,this.config=o,this.urlTree=r,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.abortSignal=l,this.applyRedirects=new Tle(this.urlSerializer,this.urlTree)}noMatchError(n){return new X(4002,`'${n.segmentGroup}'`)}recognize(){var n=this;return At(function*(){const e=ML(n.urlTree.root,[],[],n.config).segmentGroup,{children:i,rootSnapshot:o}=yield n.match(e),r=new xr(o,i),s=new uL("",r),a=function Iae(t,n,e=null,i=null,o=new kf){return QN(ZN(t),n,e,i,o)}(o,[],n.urlTree.queryParams,n.urlTree.fragment);return a.queryParams=n.urlTree.queryParams,s.url=n.urlSerializer.serialize(a),{state:s,tree:a}})()}match(n){var e=this;return At(function*(){const i=new qx([],Object.freeze({}),Object.freeze({...e.urlTree.queryParams}),e.urlTree.fragment,Object.freeze({}),Ye,e.rootComponentType,null,{},e.injector);try{return{children:yield e.processSegmentGroup(e.injector,e.config,n,Ye,i),rootSnapshot:i}}catch(o){if(o instanceof Rf)return e.urlTree=o.urlTree,e.match(o.urlTree.root);throw o instanceof Ns?e.noMatchError(o):o}})()}processSegmentGroup(n,e,i,o,r){var s=this;return At(function*(){if(0===i.segments.length&&i.hasChildren())return s.processChildren(n,e,i,r);const a=yield s.processSegment(n,e,i,i.segments,o,!0,r);return a instanceof xr?[a]:[]})()}processChildren(n,e,i,o){var r=this;return At(function*(){const s=[];for(const d of Object.keys(i.children))"primary"===d?s.unshift(d):s.push(d);let a=[];for(const d of s){const f=i.children[d],m=Rle(e,d),g=yield r.processSegmentGroup(n,m,f,d,o);a.push(...g)}const l=DL(a);return function Wle(t){t.sort((n,e)=>n.value.outlet===Ye?-1:e.value.outlet===Ye?1:n.value.outlet.localeCompare(e.value.outlet))}(l),l})()}processSegment(n,e,i,o,r,s,a){var l=this;return At(function*(){for(const d of e)try{return yield l.processSegmentAgainstRoute(d._injector??n,e,d,i,o,r,s,a)}catch(f){if(f instanceof Ns||yL(f))continue;throw f}if(function Hle(t,n,e){return 0===n.length&&!t.children[e]}(i,o,r))return new Ule;throw new Ns(i)})()}processSegmentAgainstRoute(n,e,i,o,r,s,a,l){var d=this;return At(function*(){if(Yr(i)!==s&&(s===Ye||!ub(o,r,i)))throw new Ns(o);if(void 0===i.redirectTo)return d.matchSegmentAgainstRoute(n,o,i,r,s,l);if(d.allowRedirects&&a)return d.expandSegmentAgainstRouteUsingRedirect(n,o,e,i,r,s,l);throw new Ns(o)})()}expandSegmentAgainstRouteUsingRedirect(n,e,i,o,r,s,a){var l=this;return At(function*(){const{matched:d,parameters:f,consumedSegments:m,positionalParamSegments:g,remainingSegments:b}=SL(e,o,r);if(!d)throw new Ns(e);"string"==typeof o.redirectTo&&"/"===o.redirectTo[0]&&(l.absoluteRedirectCount++,l.absoluteRedirectCount>31&&(l.allowRedirects=!1));const w=l.createSnapshot(n,o,r,f,a);if(l.abortSignal.aborted)throw new Error(l.abortSignal.reason);const M=yield l.applyRedirects.applyRedirectCommands(m,o.redirectTo,g,kL(w),n),E=yield l.applyRedirects.lineralizeSegments(o,M);return l.processSegment(n,i,e,E.concat(b),s,!1,a)})()}createSnapshot(n,e,i,o,r){const s=new qx(i,o,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,function qle(t){return t.data||{}}(e),Yr(e),e.component??e._loadedComponent??null,e,function Kle(t){return t.resolve||{}}(e),n),a=Gx(s,r,this.paramsInheritanceStrategy);return s.params=Object.freeze(a.params),s.data=Object.freeze(a.data),s}matchSegmentAgainstRoute(n,e,i,o,r,s){var a=this;return At(function*(){if(a.abortSignal.aborted)throw new Error(a.abortSignal.reason);const d=yield Y_(Fle(e,i,o,n,0,q=>a.createSnapshot(n,i,q.consumedSegments,q.parameters,s),a.abortSignal));if("**"===i.path&&(e.children={}),!d?.matched)throw new Ns(e);n=i._injector??n;const{routes:f}=yield a.getChildConfig(n,i,o),m=i._loadedInjector??n,{parameters:g,consumedSegments:b,remainingSegments:w}=d,M=a.createSnapshot(n,i,b,g,s),{segmentGroup:E,slicedSegments:I}=ML(e,b,w,f);if(0===I.length&&E.hasChildren()){const q=yield a.processChildren(m,f,E,M);return new xr(M,q)}if(0===f.length&&0===I.length)return new xr(M,[]);const A=Yr(i)===r,W=yield a.processSegment(m,f,E,I,A?Ye:r,!0,M);return new xr(M,W instanceof xr?[W]:[])})()}getChildConfig(n,e,i){var o=this;return At(function*(){if(e.children)return{routes:e.children,injector:n};if(e.loadChildren){if(void 0!==e._loadedRoutes){const s=e._loadedNgModuleFactory;return s&&!e._loadedInjector&&(e._loadedInjector=s.create(n).injector),{routes:e._loadedRoutes,injector:e._loadedInjector}}if(o.abortSignal.aborted)throw new Error(o.abortSignal.reason);if(yield Y_(function kle(t,n,e,i,o){const r=n.canLoad;return void 0===r||0===r.length?se(!0):se(r.map(a=>{const l=Qd(a,t),f=Ql(function dle(t){return t&&Af(t.canLoad)}(l)?l.canLoad(n,e):io(t,()=>l(n,e)));return o?f.pipe(wL(o)):f})).pipe(Jd(),xL())}(n,e,i,0,o.abortSignal))){const s=yield o.configLoader.loadChildren(n,e);return e._loadedRoutes=s.routes,e._loadedInjector=s.injector,e._loadedNgModuleFactory=s.factory,s}throw function Dle(){throw _L(!1,wo.GuardRejected)}()}return{routes:[],injector:n}})()}}function Gle(t){const n=t.value.routeConfig;return n&&""===n.path}function DL(t){const n=[],e=new Set;for(const i of t){if(!Gle(i)){n.push(i);continue}const o=n.find(r=>i.value.routeConfig===r.value.routeConfig);void 0!==o?(o.children.push(...i.children),e.add(o)):n.push(i)}for(const i of e){const o=DL(i.children);n.push(new xr(i.value,o))}return n.filter(i=>!e.has(i))}function TL(t){const n=t.children.map(e=>TL(e)).flat();return[t,...n]}function EL(t){return wt(n=>{const e=t(n);return e?Xn(e).pipe(De(()=>n)):se(n)})}let PL=(()=>{class t{buildTitle(e){let i,o=e.root;for(;void 0!==o;)i=this.getResolvedTitleForRoute(o)??i,o=o.children.find(r=>r.outlet===Ye);return i}getResolvedTitleForRoute(e){return e.data[wf]}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>T(ece),providedIn:"root"})}return t})(),ece=(()=>{class t extends PL{title;constructor(e){super(),this.title=e}updateTitle(e){const i=this.buildTitle(e);void 0!==i&&this.title.setTitle(i)}static \u0275fac=function(i){return new(i||t)(ce(iae))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const eu=new Z("",{factory:()=>({})}),hb=new Z("");let tk=(()=>{class t{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=T(fQ);loadComponent(e,i){var o=this;return At(function*(){if(o.componentLoaders.get(i))return o.componentLoaders.get(i);if(i._loadedComponent)return Promise.resolve(i._loadedComponent);o.onLoadStartListener&&o.onLoadStartListener(i);const r=At(function*(){try{const s=yield HN(io(e,()=>i.loadComponent())),a=yield OL(IL(s));return o.onLoadEndListener&&o.onLoadEndListener(i),i._loadedComponent=a,a}finally{o.componentLoaders.delete(i)}})();return o.componentLoaders.set(i,r),r})()}loadChildren(e,i){var o=this;if(this.childrenLoaders.get(i))return this.childrenLoaders.get(i);if(i._loadedRoutes)return Promise.resolve({routes:i._loadedRoutes,injector:i._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(i);const r=At(function*(){try{const s=yield function tce(t,n,e,i){return nk.apply(this,arguments)}(i,o.compiler,e,o.onLoadEndListener);return i._loadedRoutes=s.routes,i._loadedInjector=s.injector,i._loadedNgModuleFactory=s.factory,s}finally{o.childrenLoaders.delete(i)}})();return this.childrenLoaders.set(i,r),r}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function nk(){return(nk=At(function*(t,n,e,i){const o=yield HN(io(e,()=>t.loadChildren())),r=yield OL(IL(o));let s;s=r instanceof pI||Array.isArray(r)?r:yield n.compileModuleAsync(r),i&&i(t);let a,l,f;return Array.isArray(s)?l=s:(a=s.create(e).injector,f=s,l=a.get(hb,[],{optional:!0,self:!0}).flat()),{routes:l.map(Zx),injector:a,factory:f}})).apply(this,arguments)}function IL(t){return function nce(t){return t&&"object"==typeof t&&"default"in t}(t)?t.default:t}function OL(t){return ik.apply(this,arguments)}function ik(){return(ik=At(function*(t){return t})).apply(this,arguments)}let ok=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>T(ice),providedIn:"root"})}return t})(),ice=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,i){return e}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const AL=new Z(""),RL=new Z("");function oce(t,n,e){const i=t.get(RL),o=t.get(et);if(!o.startViewTransition||i.skipNextTransition)return i.skipNextTransition=!1,new Promise(d=>setTimeout(d));let r;const s=new Promise(d=>{r=d}),a=o.startViewTransition(()=>(r(),function rce(t){return new Promise(n=>{Wi({read:()=>setTimeout(n)},{injector:t})})}(t)));a.updateCallbackDone.catch(d=>{}),a.ready.catch(d=>{}),a.finished.catch(d=>{});const{onViewTransitionCreated:l}=i;return l&&io(t,()=>l({transition:a,from:n,to:e})),s}const sce=()=>{},FL=new Z("");let rk=(()=>{class t{currentNavigation=Ct(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=Ct(null);events=new be;transitionAbortWithErrorSubject=new be;configLoader=T(tk);environmentInjector=T(Wn);destroyRef=T(dr);urlSerializer=T(Yd);rootContexts=T(Ef);location=T(jd);inputBindingEnabled=null!==T(ab,{optional:!0});titleStrategy=T(PL);options=T(eu,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly";urlHandlingStrategy=T(ok);createViewTransition=T(AL,{optional:!0});navigationErrorHandler=T(FL,{optional:!0});navigationId=0;get hasRequestedNavigation(){return 0!==this.navigationId}transitions;afterPreactivation=()=>se(void 0);rootComponentType=null;destroyed=!1;constructor(){this.configLoader.onLoadEndListener=o=>this.events.next(new $ae(o)),this.configLoader.onLoadStartListener=o=>this.events.next(new jae(o)),this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(e){const i=++this.navigationId;it(()=>{this.transitions?.next({...e,extractedUrl:this.urlHandlingStrategy.extract(e.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:i,routesRecognizeHandler:{},beforeActivateHandler:{}})})}setupNavigations(e){return this.transitions=new Ei(null),this.transitions.pipe(Pn(i=>null!==i),wt(i=>{let o=!1;const r=new AbortController,s=()=>!o&&this.currentTransition?.id===i.id;return se(i).pipe(wt(a=>{if(this.navigationId>i.id)return this.cancelNavigationTransition(i,"",wo.SupersededByNewNavigation),Ni;this.currentTransition=i;const l=this.lastSuccessfulNavigation();this.currentNavigation.set({id:a.id,initialUrl:a.rawUrl,extractedUrl:a.extractedUrl,targetBrowserUrl:"string"==typeof a.extras.browserUrl?this.urlSerializer.parse(a.extras.browserUrl):a.extras.browserUrl,trigger:a.source,extras:a.extras,previousNavigation:l?{...l,previousNavigation:null}:null,abort:()=>r.abort(),routesRecognizeHandler:a.routesRecognizeHandler,beforeActivateHandler:a.beforeActivateHandler});const d=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl();if(!d&&"reload"!==(a.extras.onSameUrlNavigation??e.onSameUrlNavigation))return this.events.next(new Xd(a.id,this.urlSerializer.serialize(a.rawUrl),"",ob.IgnoredSameUrlNavigation)),a.resolve(!1),Ni;if(this.urlHandlingStrategy.shouldProcessUrl(a.rawUrl))return se(a).pipe(wt(m=>(this.events.next(new ib(m.id,this.urlSerializer.serialize(m.extractedUrl),m.source,m.restoredState)),m.id!==this.navigationId?Ni:Promise.resolve(m))),function Yle(t,n,e,i,o,r,s){return Tt(function(){var a=At(function*(l){const{state:d,tree:f}=yield function zle(t,n,e,i,o,r){return ek.apply(this,arguments)}(t,n,e,i,l.extractedUrl,o,r,s);return{...l,targetSnapshot:d,urlAfterRedirects:f}});return function(l){return a.apply(this,arguments)}}())}(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy,r.signal),ui(m=>{i.targetSnapshot=m.targetSnapshot,i.urlAfterRedirects=m.urlAfterRedirects,this.currentNavigation.update(g=>(g.finalUrl=m.urlAfterRedirects,g)),this.events.next(new aL)}),wt(m=>Xn(i.routesRecognizeHandler.deferredHandle??se(void 0)).pipe(De(()=>m))),ui(()=>{const m=new rL(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(m)}));if(d&&this.urlHandlingStrategy.shouldProcessUrl(a.currentRawUrl)){const{id:m,extractedUrl:g,source:b,restoredState:w,extras:M}=a,E=new ib(m,this.urlSerializer.serialize(g),b,w);this.events.next(E);const I=dL(this.rootComponentType,this.environmentInjector).snapshot;return this.currentTransition=i={...a,targetSnapshot:I,urlAfterRedirects:g,extras:{...M,skipLocationChange:!1,replaceUrl:!1}},this.currentNavigation.update(A=>(A.finalUrl=g,A)),se(i)}return this.events.next(new Xd(a.id,this.urlSerializer.serialize(a.extractedUrl),"",ob.IgnoredByUrlHandlingStrategy)),a.resolve(!1),Ni}),De(a=>{const l=new Vae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);return this.events.next(l),this.currentTransition=i={...a,guards:rle(a.targetSnapshot,a.currentSnapshot,this.rootContexts)},i}),function gle(t){return Tt(n=>{const{targetSnapshot:e,currentSnapshot:i,guards:{canActivateChecks:o,canDeactivateChecks:r}}=n;return 0===r.length&&0===o.length?se({...n,guardsResult:!0}):function _le(t,n,e){return Xn(t).pipe(Tt(i=>function xle(t,n,e,i){const o=n&&n.routeConfig?n.routeConfig.canDeactivate:null;return o&&0!==o.length?se(o.map(s=>{const a=n._environmentInjector,l=Qd(s,a);return Ql(function fle(t){return t&&Af(t.canDeactivate)}(l)?l.canDeactivate(t,n,e,i):io(a,()=>l(t,n,e,i))).pipe(Wr())})).pipe(Jd()):se(!0)}(i.component,i.route,e,n)),Wr(i=>!0!==i,!0))}(r,e,i).pipe(Tt(s=>s&&function cle(t){return"boolean"==typeof t}(s)?function ble(t,n,e){return Xn(n).pipe(mf(i=>Fs(function yle(t,n){return null!==t&&n&&n(new Wae(t)),se(!0)}(i.route.parent,e),function vle(t,n){return null!==t&&n&&n(new qae(t)),se(!0)}(i.route,e),function wle(t,n){const e=n[n.length-1],o=n.slice(0,n.length-1).reverse().map(r=>function sle(t){const n=t.routeConfig?t.routeConfig.canActivateChild:null;return n&&0!==n.length?{node:t,guards:n}:null}(r)).filter(r=>null!==r).map(r=>Sa(()=>se(r.guards.map(a=>{const l=r.node._environmentInjector,d=Qd(a,l);return Ql(function hle(t){return t&&Af(t.canActivateChild)}(d)?d.canActivateChild(e,t):io(l,()=>d(e,t))).pipe(Wr())})).pipe(Jd())));return se(o).pipe(Jd())}(t,i.path),function Cle(t,n){const e=n.routeConfig?n.routeConfig.canActivate:null;if(!e||0===e.length)return se(!0);const i=e.map(o=>Sa(()=>{const r=n._environmentInjector,s=Qd(o,r);return Ql(function ule(t){return t&&Af(t.canActivate)}(s)?s.canActivate(n,t):io(r,()=>s(n,t))).pipe(Wr())}));return se(i).pipe(Jd())}(t,i.route))),Wr(i=>!0!==i,!0))}(e,o,t):se(s)),De(s=>({...n,guardsResult:s})))})}(a=>this.events.next(a)),wt(a=>{if(i.guardsResult=a.guardsResult,a.guardsResult&&"boolean"!=typeof a.guardsResult)throw lb(0,a.guardsResult);const l=new Hae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot,!!a.guardsResult);if(this.events.next(l),!s())return Ni;if(!a.guardsResult)return this.cancelNavigationTransition(a,"",wo.GuardRejected),Ni;if(0===a.guards.canActivateChecks.length)return se(a);const d=new Uae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);if(this.events.next(d),!s())return Ni;let f=!1;return se(a).pipe(function Xle(t){return Tt(n=>{const{targetSnapshot:e,guards:{canActivateChecks:i}}=n;if(!i.length)return se(n);const o=new Set(i.map(a=>a.route)),r=new Set;for(const a of o)if(!r.has(a))for(const l of TL(a))r.add(l);let s=0;return Xn(r).pipe(mf(a=>o.has(a)?function Zle(t,n,e){const i=t.routeConfig,o=t._resolve;return void 0!==i?.title&&!fL(i)&&(o[wf]=i.title),Sa(()=>(t.data=Gx(t,t.parent,e).resolve,function Qle(t,n,e){const i=Nx(t);if(0===i.length)return se({});const o={};return Xn(i).pipe(Tt(r=>function Jle(t,n,e){const i=n._environmentInjector,o=Qd(t,i);return Ql(o.resolve?o.resolve(n,e):io(i,()=>o(n,e)))}(t[r],n,e).pipe(Wr(),ui(s=>{if(s instanceof Qx)throw lb(new kf,s);o[r]=s}))),AN(1),De(()=>o),ii(r=>yL(r)?Ni:Cr(r)))}(o,t,n).pipe(De(r=>(t._resolvedData=r,t.data={...t.data,...r},null)))))}(a,e,t):(a.data=Gx(a,a.parent,t).resolve,se(void 0))),ui(()=>s++),AN(1),Tt(a=>s===r.size?se(n):Ni))})}(this.paramsInheritanceStrategy),ui({next:()=>{f=!0;const m=new zae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(m)},complete:()=>{f||this.cancelNavigationTransition(a,"",wo.NoDataFromResolver)}}))}),EL(a=>{const l=f=>{const m=[];f.routeConfig?._loadedComponent?f.component=f.routeConfig?._loadedComponent:f.routeConfig?.loadComponent&&m.push(this.configLoader.loadComponent(f._environmentInjector,f.routeConfig).then(b=>{f.component=b}));for(const g of f.children)m.push(...l(g));return m},d=l(a.targetSnapshot.root);return 0===d.length?se(a):Xn(Promise.all(d).then(()=>a))}),EL(()=>this.afterPreactivation()),wt(()=>{const{currentSnapshot:a,targetSnapshot:l}=i,d=this.createViewTransition?.(this.environmentInjector,a.root,l.root);return d?Xn(d).pipe(De(()=>i)):se(i)}),wn(1),wt(a=>{const l=function ele(t,n,e){const i=Pf(t,n._root,e?e._root:void 0);return new cL(i,n)}(e.routeReuseStrategy,a.targetSnapshot,a.currentRouterState);this.currentTransition=i=a={...a,targetRouterState:l},this.currentNavigation.update(f=>(f.targetRouterState=l,f)),this.events.next(new jx);const d=i.beforeActivateHandler.deferredHandle;return d?Xn(d.then(()=>a)):se(a)}),ui(a=>{new ole(e.routeReuseStrategy,i.targetRouterState,i.currentRouterState,l=>this.events.next(l),this.inputBindingEnabled).activate(this.rootContexts),s()&&(o=!0,this.currentNavigation.update(l=>(l.abort=sce,l)),this.lastSuccessfulNavigation.set(it(this.currentNavigation)),this.events.next(new Kr(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects))),this.titleStrategy?.updateTitle(a.targetRouterState.snapshot),a.resolve(!0))}),ln(CL(r.signal).pipe(Pn(()=>!o&&!i.targetRouterState),ui(()=>{this.cancelNavigationTransition(i,r.signal.reason+"",wo.Aborted)}))),ui({complete:()=>{o=!0}}),ln(this.transitionAbortWithErrorSubject.pipe(ui(a=>{throw a}))),j_(()=>{r.abort(),o||this.cancelNavigationTransition(i,"",wo.SupersededByNewNavigation),this.currentTransition?.id===i.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),ii(a=>{if(o=!0,this.destroyed)return i.resolve(!1),Ni;if(bL(a))this.events.next(new Da(i.id,this.urlSerializer.serialize(i.extractedUrl),a.message,a.cancellationCode)),function ile(t){return bL(t)&&ec(t.url)}(a)?this.events.next(new rb(a.url,a.navigationBehaviorOptions)):i.resolve(!1);else{const l=new zx(i.id,this.urlSerializer.serialize(i.extractedUrl),a,i.targetSnapshot??void 0);try{const d=io(this.environmentInjector,()=>this.navigationErrorHandler?.(l));if(!(d instanceof Qx))throw this.events.next(l),a;{const{message:f,cancellationCode:m}=lb(0,d);this.events.next(new Da(i.id,this.urlSerializer.serialize(i.extractedUrl),f,m)),this.events.next(new rb(d.redirectTo,d.navigationBehaviorOptions))}}catch(d){this.options.resolveNavigationPromiseOnError?i.resolve(!1):i.reject(d)}}return Ni}))}))}cancelNavigationTransition(e,i,o){const r=new Da(e.id,this.urlSerializer.serialize(e.extractedUrl),i,o);this.events.next(r),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){const e=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),i=it(this.currentNavigation),o=i?.targetBrowserUrl??i?.extractedUrl;return e.toString()!==o?.toString()&&!i?.extras.skipLocationChange}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function ace(t){return t!==Tf}const lce=new Z("");let LL=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>T(dce),providedIn:"root"})}return t})();class cce{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}shouldDestroyInjector(n){return!0}}let dce=(()=>{class t extends cce{static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),ak=(()=>{class t{urlSerializer=T(Yd);options=T(eu,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||"replace";location=T(jd);urlHandlingStrategy=T(ok);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";currentUrlTree=new wr;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:e,initialUrl:i,targetBrowserUrl:o}){const r=void 0!==e?this.urlHandlingStrategy.merge(e,i):i,s=o??r;return s instanceof wr?this.urlSerializer.serialize(s):s}commitTransition({targetRouterState:e,finalUrl:i,initialUrl:o}){i&&e?(this.currentUrlTree=i,this.rawUrlTree=this.urlHandlingStrategy.merge(i,o),this.routerState=e):this.rawUrlTree=o}routerState=dL(null,T(Wn));getRouterState(){return this.routerState}_stateMemento=this.createStateMemento();get stateMemento(){return this._stateMemento}updateStateMemento(){this._stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}restoredState(){return this.location.getState()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>T(uce),providedIn:"root"})}return t})(),uce=(()=>{class t extends ak{currentPageId=0;lastSuccessfulId=-1;get browserPageId(){return"computed"!==this.canceledNavigationResolution?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(i=>{"popstate"===i.type&&setTimeout(()=>{e(i.url,i.state,"popstate",{replaceUrl:!0})})})}handleRouterEvent(e,i){e instanceof ib?this.updateStateMemento():e instanceof Xd?this.commitTransition(i):e instanceof rL?"eager"===this.urlUpdateStrategy&&(i.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(i),i)):e instanceof jx?(this.commitTransition(i),"deferred"===this.urlUpdateStrategy&&!i.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(i),i)):e instanceof Da&&!function Bae(t){return t instanceof Da&&(t.code===wo.Redirect||t.code===wo.SupersededByNewNavigation)}(e)?this.restoreHistory(i):e instanceof zx?this.restoreHistory(i,!0):e instanceof Kr&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,{extras:i,id:o}){const{replaceUrl:r,state:s}=i;if(this.location.isCurrentPathEqualTo(e)||r){const a=this.browserPageId,l={...s,...this.generateNgRouterState(o,a)};this.location.replaceState(e,"",l)}else{const a={...s,...this.generateNgRouterState(o,this.browserPageId+1)};this.location.go(e,"",a)}}restoreHistory(e,i=!1){if("computed"===this.canceledNavigationResolution){const r=this.currentPageId-this.browserPageId;0!==r?this.location.historyGo(r):this.getCurrentUrlTree()===e.finalUrl&&0===r&&(this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}else"replace"===this.canceledNavigationResolution&&(i&&this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}resetInternalState({finalUrl:e}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,i){return"computed"===this.canceledNavigationResolution?{navigationId:e,\u0275routerPageId:i}:{navigationId:e}}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function BL(t,n){t.events.pipe(Pn(e=>e instanceof Kr||e instanceof Da||e instanceof zx||e instanceof Xd),De(e=>e instanceof Kr||e instanceof Xd?0:e instanceof Da&&(e.code===wo.Redirect||e.code===wo.SupersededByNewNavigation)?2:1),Pn(e=>2!==e),wn(1)).subscribe(()=>{n()})}let yt=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=T(VI);stateManager=T(ak);options=T(eu,{optional:!0})||{};pendingTasks=T(ta);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";navigationTransitions=T(rk);urlSerializer=T(Yd);location=T(jd);urlHandlingStrategy=T(ok);injector=T(Wn);_events=new be;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=T(LL);injectorCleanup=T(lce,{optional:!0});onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore";config=T(hb,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!T(ab,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:e=>{}}),this.subscribeToNavigationEvents()}eventsSubscription=new gt;subscribeToNavigationEvents(){const e=this.navigationTransitions.events.subscribe(i=>{try{const o=this.navigationTransitions.currentTransition,r=it(this.navigationTransitions.currentNavigation);if(null!==o&&null!==r)if(this.stateManager.handleRouterEvent(i,r),i instanceof Da&&i.code!==wo.Redirect&&i.code!==wo.SupersededByNewNavigation)this.navigated=!0;else if(i instanceof Kr)this.navigated=!0,this.injectorCleanup?.(this.routeReuseStrategy,this.routerState,this.config);else if(i instanceof rb){const s=i.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(i.url,o.currentRawUrl),l={scroll:o.extras.scroll,browserUrl:o.extras.browserUrl,info:o.extras.info,skipLocationChange:o.extras.skipLocationChange,replaceUrl:o.extras.replaceUrl||"eager"===this.urlUpdateStrategy||ace(o.source),...s};this.scheduleNavigation(a,Tf,null,l,{resolve:o.resolve,reject:o.reject,promise:o.promise})}(function Yae(t){return!(t instanceof jx||t instanceof rb||t instanceof aL)})(i)&&this._events.next(i)}catch(o){this.navigationTransitions.transitionAbortWithErrorSubject.next(o)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),Tf,this.stateManager.restoredState(),{replaceUrl:!0})}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,i,o,r)=>{this.navigateToSyncWithBrowser(e,o,i,r)})}navigateToSyncWithBrowser(e,i,o,r){const s=o?.navigationId?o:null;if(o){const l={...o};delete l.navigationId,delete l.\u0275routerPageId,0!==Object.keys(l).length&&(r.state=l)}const a=this.parseUrl(e);this.scheduleNavigation(a,i,s,r).catch(l=>{this.disposed||this.injector.get(Nr)(l)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return it(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(Zx),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription?.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0,this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,i={}){const{relativeTo:o,queryParams:r,fragment:s,queryParamsHandling:a,preserveFragment:l}=i,d=l?this.currentUrlTree.fragment:s;let m,f=null;switch(a??this.options.defaultQueryParamsHandling){case"merge":f={...this.currentUrlTree.queryParams,...r};break;case"preserve":f=this.currentUrlTree.queryParams;break;default:f=r||null}null!==f&&(f=this.removeEmptyProps(f));try{m=ZN(o?o.snapshot:this.routerState.snapshot.root)}catch{("string"!=typeof e[0]||"/"!==e[0][0])&&(e=[]),m=this.currentUrlTree.root}return QN(m,e,f,d??null,this.urlSerializer)}navigateByUrl(e,i={skipLocationChange:!1}){const o=ec(e)?e:this.parseUrl(e),r=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(r,Tf,null,i)}navigate(e,i={skipLocationChange:!1}){return function hce(t){for(let n=0;n(null!=r&&(i[o]=r),i),{})}scheduleNavigation(e,i,o,r,s){if(this.disposed)return Promise.resolve(!1);let a,l,d;s?(a=s.resolve,l=s.reject,d=s.promise):d=new Promise((m,g)=>{a=m,l=g});const f=this.pendingTasks.add();return BL(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(f))}),this.navigationTransitions.handleNavigationRequest({source:i,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:r,resolve:a,reject:l,promise:d,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),d.catch(Promise.reject.bind(Promise))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class fce extends gt{constructor(n,e){super()}schedule(n,e=0){return this}}const fb={setInterval(t,n,...e){const{delegate:i}=fb;return i?.setInterval?i.setInterval(t,n,...e):setInterval(t,n,...e)},clearInterval(t){const{delegate:n}=fb;return(n?.clearInterval||clearInterval)(t)},delegate:void 0};class lk extends fce{constructor(n,e){super(n,e),this.scheduler=n,this.work=e,this.pending=!1}schedule(n,e=0){var i;if(this.closed)return this;this.state=n;const o=this.id,r=this.scheduler;return null!=o&&(this.id=this.recycleAsyncId(r,o,e)),this.pending=!0,this.delay=e,this.id=null!==(i=this.id)&&void 0!==i?i:this.requestAsyncId(r,this.id,e),this}requestAsyncId(n,e,i=0){return fb.setInterval(n.flush.bind(n,this),i)}recycleAsyncId(n,e,i=0){if(null!=i&&this.delay===i&&!1===this.pending)return e;null!=e&&fb.clearInterval(e)}execute(n,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const i=this._execute(n,e);if(i)return i;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(n,e){let o,i=!1;try{this.work(n)}catch(r){i=!0,o=r||new Error("Scheduled action threw falsy error")}if(i)return this.unsubscribe(),o}unsubscribe(){if(!this.closed){const{id:n,scheduler:e}=this,{actions:i}=e;this.work=this.state=this.scheduler=null,this.pending=!1,Hp(i,this),null!=n&&(this.id=this.recycleAsyncId(e,n,null)),this.delay=null,super.unsubscribe()}}}const ck={now:()=>(ck.delegate||Date).now(),delegate:void 0};class Ff{constructor(n,e=Ff.now){this.schedulerActionCtor=n,this.now=e}schedule(n,e=0,i){return new this.schedulerActionCtor(this,n).schedule(i,e)}}Ff.now=ck.now;class dk extends Ff{constructor(n,e=Ff.now){super(n,e),this.actions=[],this._active=!1}flush(n){const{actions:e}=this;if(this._active)return void e.push(n);let i;this._active=!0;do{if(i=n.execute(n.state,n.delay))break}while(n=e.shift());if(this._active=!1,i){for(;n=e.shift();)n.unsubscribe();throw i}}}const Nf=new dk(lk),pce=Nf;function VL(t,n){return n?e=>Fs(n.pipe(wn(1),function mce(){return En((t,n)=>{t.subscribe(pn(n,zp))})}()),e.pipe(VL(t))):Tt((e,i)=>qi(t(e,i)).pipe(wn(1),function gce(t){return De(()=>t)}(e)))}function Ls(t=0,n,e=pce){let i=-1;return null!=n&&(cN(n)?e=n:i=n),new zt(o=>{let r=function _ce(t){return t instanceof Date&&!isNaN(t)}(t)?+t-e.now():t;r<0&&(r=0);let s=0;return e.schedule(function(){o.closed||(o.next(s++),0<=i?this.schedule(void 0,i):o.complete())},r)})}function oi(t,n=Nf){const e=Ls(t,n);return VL(()=>e)}var pb=function(t){return t.NoConnection="NoConnection",t.Unknown="Unknown",t}(pb||{});class bce{}const HL="common.operation-error";function Ze(t){if(t&&t.type&&!t.srcElement)return t;const n=new bce;if(n.originalError=t,!t||"string"==typeof t)return n.originalServerErrorMsg=t||"",n.translatableErrorMsg=t||HL,n.type=pb.Unknown,n;n.originalServerErrorMsg=function yce(t){if(t){if("string"==typeof t._body)return t._body;if(t.originalServerErrorMsg&&"string"==typeof t.originalServerErrorMsg)return t.originalServerErrorMsg;if(t.error&&"string"==typeof t.error)return t.error;if(t.error&&t.error.error&&t.error.error.message)return t.error.error.message;if(t.error&&t.error.error&&"string"==typeof t.error.error)return t.error.error;if(t.message)return t.message;if(t._body&&t._body.error)return t._body.error;try{return JSON.parse(t._body).error}catch{}}return null}(t);return null!=t.status&&(0===t.status||504===t.status)&&(n.type=pb.NoConnection,n.translatableErrorMsg="common.no-connection-error"),n.type||(n.type=pb.Unknown,n.translatableErrorMsg=n.originalServerErrorMsg?function vce(t){if(!t||0===t.length)return t;if(-1!==t.indexOf('"error":'))try{t=JSON.parse(t).error}catch{}if(t.startsWith("400")||t.startsWith("403")){const e=t.split(" - ",2);t=2===e.length?e[1]:t}const n=(t=t.trim()).substr(0,1);return n.toUpperCase()!==n&&(t=n.toUpperCase()+t.substr(1,t.length-1)),!t.endsWith(".")&&!t.endsWith(",")&&!t.endsWith(":")&&!t.endsWith(";")&&!t.endsWith("?")&&!t.endsWith("!")&&(t+="."),t}(n.originalServerErrorMsg):HL),n}class co extends be{constructor(n=1/0,e=1/0,i=ck){super(),this._bufferSize=n,this._windowTime=e,this._timestampProvider=i,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=e===1/0,this._bufferSize=Math.max(1,n),this._windowTime=Math.max(1,e)}next(n){const{isStopped:e,_buffer:i,_infiniteTimeWindow:o,_timestampProvider:r,_windowTime:s}=this;e||(i.push(n),!o&&i.push(r.now()+s)),this._trimBuffer(),super.next(n)}_subscribe(n){this._throwIfClosed(),this._trimBuffer();const e=this._innerSubscribe(n),{_infiniteTimeWindow:i,_buffer:o}=this,r=o.slice();for(let s=0;s{class t{constructor(){this.currentRefreshTimeSubject=new co(1),this.savedLocalNodes=new Map,this.savedLabels=new Map,this.savedVisibleLocalNodes=new Set}initialize(e){this.storage=localStorage,this.hypervisorPk=e,this.migrateDataToHvStorage(),this.currentRefreshTime=parseInt(this.getDataForHv(mb),10)||10,this.currentRefreshTimeSubject.next(this.currentRefreshTime),this.getSavedLocalNodes().forEach(r=>{this.savedLocalNodes.set(r.publicKey,r),r.hidden||this.savedVisibleLocalNodes.add(r.publicKey)}),this.getSavedLabels().forEach(r=>this.savedLabels.set(r.id,r)),this.loadLegacyNodeData();const i=[];this.savedLocalNodes.forEach(r=>i.push(r));const o=[];this.savedLabels.forEach(r=>o.push(r)),this.saveLocalNodes(i),this.saveLabels(o)}getDataForHv(e){return this.storage.getItem(this.hypervisorPk+e)}setDataForHv(e,i){return this.storage.setItem(this.hypervisorPk+e,i)}migrateDataToHvStorage(){const e=this.storage.getItem(mb);if(e){const r=parseInt(e,10)||10;this.setRefreshTime(r),this.storage.removeItem(mb)}const i=this.storage.getItem(_b);if(i){const r=JSON.parse(i)||[];this.saveLocalNodes(r),this.storage.removeItem(_b)}const o=this.storage.getItem(gb);if(o){const r=JSON.parse(o)||[];this.saveLabels(r),this.storage.removeItem(gb)}}loadLegacyNodeData(){const e=JSON.parse(this.storage.getItem(UL))||[];if(e.length>0){const i=this.getSavedLocalNodes(),o=this.getSavedLabels();e.forEach(r=>{i.push({publicKey:r.publicKey,hidden:r.deleted,ip:null}),this.savedLocalNodes.set(r.publicKey,i[i.length-1]),r.deleted||this.savedVisibleLocalNodes.add(r.publicKey),o.push({id:r.publicKey,identifiedElementType:uo.Node,label:r.label}),this.savedLabels.set(r.publicKey,o[o.length-1])}),this.saveLocalNodes(i),this.saveLabels(o),this.storage.removeItem(UL)}}setRefreshTime(e){this.setDataForHv(mb,e.toString()),this.currentRefreshTime=e,this.currentRefreshTimeSubject.next(this.currentRefreshTime)}getRefreshTimeObservable(){return this.currentRefreshTimeSubject.asObservable()}getRefreshTime(){return this.currentRefreshTime}includeVisibleLocalNodes(e,i){this.changeLocalNodesHiddenProperty(e,i,!1)}setLocalNodesAsHidden(e,i){this.changeLocalNodesHiddenProperty(e,i,!0)}changeLocalNodesHiddenProperty(e,i,o){if(e.length!==i.length)throw new Error("Invalid params");const r=new Map,s=new Map;e.forEach((d,f)=>{r.set(d,i[f]),s.set(d,i[f])});let a=!1;const l=this.getSavedLocalNodes();l.forEach(d=>{r.has(d.publicKey)&&(s.has(d.publicKey)&&s.delete(d.publicKey),d.ip!==r.get(d.publicKey)&&(d.ip=r.get(d.publicKey),a=!0,this.savedLocalNodes.set(d.publicKey,d)),d.hidden!==o&&(d.hidden=o,a=!0,this.savedLocalNodes.set(d.publicKey,d),o?this.savedVisibleLocalNodes.delete(d.publicKey):this.savedVisibleLocalNodes.add(d.publicKey)))}),s.forEach((d,f)=>{a=!0;const m={publicKey:f,hidden:o,ip:d};l.push(m),this.savedLocalNodes.set(f,m),o?this.savedVisibleLocalNodes.delete(f):this.savedVisibleLocalNodes.add(f)}),a&&this.saveLocalNodes(l)}getSavedLocalNodes(){return JSON.parse(this.getDataForHv(_b))||[]}getSavedVisibleLocalNodes(){return this.savedVisibleLocalNodes}saveLocalNodes(e){this.setDataForHv(_b,JSON.stringify(e))}getSavedLabels(){return JSON.parse(this.getDataForHv(gb))||[]}saveLabels(e){this.setDataForHv(gb,JSON.stringify(e))}saveLabel(e,i,o){if(i){let r=!1;const s=this.getSavedLabels().map(a=>(a.id===e&&a.identifiedElementType===o&&(r=!0,a.label=i,this.savedLabels.set(a.id,{label:a.label,id:a.id,identifiedElementType:a.identifiedElementType})),a));if(r)this.saveLabels(s);else{const a={label:i,id:e,identifiedElementType:o};s.push(a),this.savedLabels.set(e,a),this.saveLabels(s)}}else{this.savedLabels.has(e)&&this.savedLabels.delete(e);let r=!1;const s=this.getSavedLabels().filter(a=>a.id!==e||(r=!0,!1));r&&this.saveLabels(s)}}getDefaultLabel(e){return e?e.ip?e.ip:e.localPk:""}getLabelInfo(e){return this.savedLabels.has(e)?this.savedLabels.get(e):null}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const uk={};class si{_appId=T(ra);static _infix=`a${Math.floor(1e5*Math.random()).toString()}`;getId(n,e=!1){return"ng"!==this._appId&&(n+=this._appId),uk.hasOwnProperty(n)||(uk[n]=0),`${n}${e?si._infix+"-":""}${uk[n]++}`}static \u0275fac=function(e){return new(e||si)};static \u0275prov=te({token:si,factory:si.\u0275fac,providedIn:"root"})}const Lf={schedule(t){let n=requestAnimationFrame,e=cancelAnimationFrame;const{delegate:i}=Lf;i&&(n=i.requestAnimationFrame,e=i.cancelAnimationFrame);const o=n(r=>{e=void 0,t(r)});return new gt(()=>e?.(o))},requestAnimationFrame(...t){const{delegate:n}=Lf;return(n?.requestAnimationFrame||requestAnimationFrame)(...t)},cancelAnimationFrame(...t){const{delegate:n}=Lf;return(n?.cancelAnimationFrame||cancelAnimationFrame)(...t)},delegate:void 0};new class wce extends dk{flush(n){let e;this._active=!0,n?e=n.id:(e=this._scheduled,this._scheduled=void 0);const{actions:i}=this;let o;n=n||i.shift();do{if(o=n.execute(n.state,n.delay))break}while((n=i[0])&&n.id===e&&i.shift());if(this._active=!1,o){for(;(n=i[0])&&n.id===e&&i.shift();)n.unsubscribe();throw o}}}(class Cce extends lk{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}requestAsyncId(n,e,i=0){return null!==i&&i>0?super.requestAsyncId(n,e,i):(n.actions.push(this),n._scheduled||(n._scheduled=Lf.requestAnimationFrame(()=>n.flush(void 0))))}recycleAsyncId(n,e,i=0){var o;if(null!=i?i>0:this.delay>0)return super.recycleAsyncId(n,e,i);const{actions:r}=n;null!=e&&e===n._scheduled&&(null===(o=r[r.length-1])||void 0===o?void 0:o.id)!==e&&(Lf.cancelAnimationFrame(e),n._scheduled=void 0)}});let hk,kce=1;const bb={};function zL(t){return t in bb&&(delete bb[t],!0)}const Sce={setImmediate(t){const n=kce++;return bb[n]=!0,hk||(hk=Promise.resolve()),hk.then(()=>zL(n)&&t()),n},clearImmediate(t){zL(t)}},{setImmediate:Mce,clearImmediate:Dce}=Sce,vb={setImmediate(...t){const{delegate:n}=vb;return(n?.setImmediate||Mce)(...t)},clearImmediate(t){const{delegate:n}=vb;return(n?.clearImmediate||Dce)(t)},delegate:void 0};new class Ece extends dk{flush(n){this._active=!0;const e=this._scheduled;this._scheduled=void 0;const{actions:i}=this;let o;n=n||i.shift();do{if(o=n.execute(n.state,n.delay))break}while((n=i[0])&&n.id===e&&i.shift());if(this._active=!1,o){for(;(n=i[0])&&n.id===e&&i.shift();)n.unsubscribe();throw o}}}(class Tce extends lk{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}requestAsyncId(n,e,i=0){return null!==i&&i>0?super.requestAsyncId(n,e,i):(n.actions.push(this),n._scheduled||(n._scheduled=vb.setImmediate(n.flush.bind(n,void 0))))}recycleAsyncId(n,e,i=0){var o;if(null!=i?i>0:this.delay>0)return super.recycleAsyncId(n,e,i);const{actions:r}=n;null!=e&&(null===(o=r[r.length-1])||void 0===o?void 0:o.id)!==e&&(vb.clearImmediate(e),n._scheduled===e&&(n._scheduled=void 0))}});function jL(t,n=Nf){return function Ice(t){return En((n,e)=>{let i=!1,o=null,r=null,s=!1;const a=()=>{if(r?.unsubscribe(),r=null,i){i=!1;const d=o;o=null,e.next(d)}s&&e.complete()},l=()=>{r=null,s&&e.complete()};n.subscribe(pn(e,d=>{i=!0,o=d,r||qi(t(d)).subscribe(r=pn(e,a,l))},()=>{s=!0,(!i||!r||r.closed)&&e.complete()}))})}(()=>Ls(t,n))}function Bf(t,n=0){return function Oce(t){return!isNaN(parseFloat(t))&&!isNaN(Number(t))}(t)?Number(t):2===arguments.length?n:0}function Bs(t){return t instanceof Ne?t.nativeElement:t}let fk;try{fk=typeof Intl<"u"&&Intl.v8BreakIterator}catch{fk=!1}let Zn=(()=>{class t{_platformId=T(T1);isBrowser=this._platformId?function I7(t){return t===iT}(this._platformId):"object"==typeof document&&!!document;EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent);TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent);BLINK=this.isBrowser&&!(!window.chrome&&!fk)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT;WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT;IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window);FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent);ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT;SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT;constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Ace=new Z("cdk-dir-doc",{providedIn:"root",factory:()=>T(et)}),Rce=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let kr=(()=>{class t{get value(){return this.valueSignal()}valueSignal=Ct("ltr");change=new ke;constructor(){const e=T(Ace,{optional:!0});e&&this.valueSignal.set(function Fce(t){const n=t?.toLowerCase()||"";return"auto"===n&&typeof navigator<"u"&&navigator?.language?Rce.test(navigator.language)?"rtl":"ltr":"rtl"===n?"rtl":"ltr"}((e.body?e.body.dir:null)||(e.documentElement?e.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Xr=function(t){return t[t.NORMAL=0]="NORMAL",t[t.NEGATED=1]="NEGATED",t[t.INVERTED=2]="INVERTED",t}(Xr||{});let yb,tc;function $L(){if(null==tc){if("object"!=typeof document||!document||"function"!=typeof Element||!Element)return tc=!1,tc;if(document.documentElement?.style&&"scrollBehavior"in document.documentElement.style)tc=!0;else{const t=Element.prototype.scrollTo;tc=!!t&&!/\{\s*\[native code\]\s*\}/.test(t.toString())}}return tc}function Vf(){if("object"!=typeof document||!document)return Xr.NORMAL;if(null==yb){const t=document.createElement("div"),n=t.style;t.dir="rtl",n.width="1px",n.overflow="auto",n.visibility="hidden",n.pointerEvents="none",n.position="absolute";const e=document.createElement("div"),i=e.style;i.width="2px",i.height="1px",t.appendChild(e),document.body.appendChild(t),yb=Xr.NORMAL,0===t.scrollLeft&&(t.scrollLeft=1,yb=0===t.scrollLeft?Xr.NEGATED:Xr.INVERTED),t.remove()}return yb}let pk,ai=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})(),Cb=(()=>{class t{_ngZone=T(Ce);_platform=T(Zn);_renderer=T(Uo).createRenderer(null,null);_cleanupGlobalListener;constructor(){}_scrolled=new be;_scrolledCount=0;scrollContainers=new Map;register(e){this.scrollContainers.has(e)||this.scrollContainers.set(e,e.elementScrolled().subscribe(()=>this._scrolled.next(e)))}deregister(e){const i=this.scrollContainers.get(e);i&&(i.unsubscribe(),this.scrollContainers.delete(e))}scrolled(e=20){return this._platform.isBrowser?new zt(i=>{this._cleanupGlobalListener||(this._cleanupGlobalListener=this._ngZone.runOutsideAngular(()=>this._renderer.listen("document","scroll",()=>this._scrolled.next())));const o=e>0?this._scrolled.pipe(jL(e)).subscribe(i):this._scrolled.subscribe(i);return this._scrolledCount++,()=>{o.unsubscribe(),this._scrolledCount--,this._scrolledCount||(this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0)}}):se()}ngOnDestroy(){this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0,this.scrollContainers.forEach((e,i)=>this.deregister(i)),this._scrolled.complete()}ancestorScrolled(e,i){const o=this.getAncestorScrollContainers(e);return this.scrolled(i).pipe(Pn(r=>!r||o.indexOf(r)>-1))}getAncestorScrollContainers(e){const i=[];return this.scrollContainers.forEach((o,r)=>{this._scrollableContainsElement(r,e)&&i.push(r)}),i}_scrollableContainsElement(e,i){let o=Bs(i),r=e.getElementRef().nativeElement;do{if(o==r)return!0}while(o=o.parentElement);return!1}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),WL=(()=>{class t{elementRef=T(Ne);scrollDispatcher=T(Cb);ngZone=T(Ce);dir=T(kr,{optional:!0});_scrollElement=this.elementRef.nativeElement;_destroyed=new be;_renderer=T(ei);_cleanupScroll;_elementScrolled=new be;constructor(){}ngOnInit(){this._cleanupScroll=this.ngZone.runOutsideAngular(()=>this._renderer.listen(this._scrollElement,"scroll",e=>this._elementScrolled.next(e))),this.scrollDispatcher.register(this)}ngOnDestroy(){this._cleanupScroll?.(),this._elementScrolled.complete(),this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(e){const i=this.elementRef.nativeElement,o=this.dir&&"rtl"==this.dir.value;null==e.left&&(e.left=o?e.end:e.start),null==e.right&&(e.right=o?e.start:e.end),null!=e.bottom&&(e.top=i.scrollHeight-i.clientHeight-e.bottom),o&&Vf()!=Xr.NORMAL?(null!=e.left&&(e.right=i.scrollWidth-i.clientWidth-e.left),Vf()==Xr.INVERTED?e.left=e.right:Vf()==Xr.NEGATED&&(e.left=e.right?-e.right:e.right)):null!=e.right&&(e.left=i.scrollWidth-i.clientWidth-e.right),this._applyScrollToOptions(e)}_applyScrollToOptions(e){const i=this.elementRef.nativeElement;$L()?i.scrollTo(e):(null!=e.top&&(i.scrollTop=e.top),null!=e.left&&(i.scrollLeft=e.left))}measureScrollOffset(e){const i="left",o="right",r=this.elementRef.nativeElement;if("top"==e)return r.scrollTop;if("bottom"==e)return r.scrollHeight-r.clientHeight-r.scrollTop;const s=this.dir&&"rtl"==this.dir.value;return"start"==e?e=s?o:i:"end"==e&&(e=s?i:o),s&&Vf()==Xr.INVERTED?e==i?r.scrollWidth-r.clientWidth-r.scrollLeft:r.scrollLeft:s&&Vf()==Xr.NEGATED?e==i?r.scrollLeft+r.scrollWidth-r.clientWidth:-r.scrollLeft:e==i?r.scrollLeft:r.scrollWidth-r.clientWidth-r.scrollLeft}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]]})}return t})(),tu=(()=>{class t{_platform=T(Zn);_listeners;_viewportSize=null;_change=new be;_document=T(et);constructor(){const e=T(Ce),i=T(Uo).createRenderer(null,null);e.runOutsideAngular(()=>{if(this._platform.isBrowser){const o=r=>this._change.next(r);this._listeners=[i.listen("window","resize",o),i.listen("window","orientationchange",o)]}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){this._listeners?.forEach(e=>e()),this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const e={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),e}getViewportRect(){const e=this.getViewportScrollPosition(),{width:i,height:o}=this.getViewportSize();return{top:e.top,left:e.left,bottom:e.top+o,right:e.left+i,height:o,width:i}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const e=this._document,i=this._getWindow(),o=e.documentElement,r=o.getBoundingClientRect();return{top:-r.top||e.body?.scrollTop||i.scrollY||o.scrollTop||0,left:-r.left||e.body?.scrollLeft||i.scrollX||o.scrollLeft||0}}change(e=20){return e>0?this._change.pipe(jL(e)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const e=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:e.innerWidth,height:e.innerHeight}:{width:0,height:0}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Hf=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})(),GL=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ai,Hf,ai,Hf]})}return t})();function mk(){let t=typeof document<"u"&&document?document.activeElement:null;for(;t&&t.shadowRoot;){const n=t.shadowRoot.activeElement;if(n===t)break;t=n}return t}function Sr(t){return t.composedPath?t.composedPath()[0]:t.target}function qL(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}const wb=new WeakMap;let qo=(()=>{class t{_appRef;_injector=T(Ue);_environmentInjector=T(Wn);load(e){const i=this._appRef=this._appRef||this._injector.get(fr);let o=wb.get(i);o||(o={loaders:new Set,refs:[]},wb.set(i,o),i.onDestroy(()=>{wb.get(i)?.refs.forEach(r=>r.destroy()),wb.delete(i)})),o.loaders.has(e)||(o.loaders.add(e),o.refs.push(CF(e,{environmentInjector:this._environmentInjector})))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function li(t){return null==t?"":"string"==typeof t?t:`${t}px`}function xb(t){return Array.isArray(t)?t:[t]}class gk{_attachedHost=null;attach(n){return this._attachedHost=n,n.attach(this)}detach(){let n=this._attachedHost;null!=n&&(this._attachedHost=null,n.detach())}get isAttached(){return null!=this._attachedHost}setAttachedHost(n){this._attachedHost=n}}class nu extends gk{component;viewContainerRef;injector;projectableNodes;bindings;constructor(n,e,i,o,r){super(),this.component=n,this.viewContainerRef=e,this.injector=i,this.projectableNodes=o,this.bindings=r||null}}class nc extends gk{templateRef;viewContainerRef;context;injector;constructor(n,e,i,o){super(),this.templateRef=n,this.viewContainerRef=e,this.context=i,this.injector=o}get origin(){return this.templateRef.elementRef}attach(n,e=this.context){return this.context=e,super.attach(n)}detach(){return this.context=void 0,super.detach()}}class zce extends gk{element;constructor(n){super(),this.element=n instanceof Ne?n.nativeElement:n}}class kb{_attachedPortal=null;_disposeFn=null;_isDisposed=!1;hasAttached(){return!!this._attachedPortal}attach(n){return n instanceof nu?(this._attachedPortal=n,this.attachComponentPortal(n)):n instanceof nc?(this._attachedPortal=n,this.attachTemplatePortal(n)):this.attachDomPortal&&n instanceof zce?(this._attachedPortal=n,this.attachDomPortal(n)):void 0}attachDomPortal=null;detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(n){this._disposeFn=n}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}class jce extends kb{outletElement;_appRef;_defaultInjector;constructor(n,e,i){super(),this.outletElement=n,this._appRef=e,this._defaultInjector=i}attachComponentPortal(n){let e;if(n.viewContainerRef){const i=n.injector||n.viewContainerRef.injector,o=i.get(Ss,null,{optional:!0})||void 0;e=n.viewContainerRef.createComponent(n.component,{index:n.viewContainerRef.length,injector:i,ngModuleRef:o,projectableNodes:n.projectableNodes||void 0,bindings:n.bindings||void 0}),this.setDisposeFn(()=>e.destroy())}else{const i=this._appRef,o=n.injector||this._defaultInjector||Ue.NULL,r=o.get(Wn,i.injector);e=CF(n.component,{elementInjector:o,environmentInjector:r,projectableNodes:n.projectableNodes||void 0,bindings:n.bindings||void 0}),i.attachView(e.hostView),this.setDisposeFn(()=>{i.viewCount>0&&i.detachView(e.hostView),e.destroy()})}return this.outletElement.appendChild(this._getComponentRootNode(e)),this._attachedPortal=n,e}attachTemplatePortal(n){let e=n.viewContainerRef,i=e.createEmbeddedView(n.templateRef,n.context,{injector:n.injector});return i.rootNodes.forEach(o=>this.outletElement.appendChild(o)),i.detectChanges(),this.setDisposeFn(()=>{let o=e.indexOf(i);-1!==o&&e.remove(o)}),this._attachedPortal=n,i}attachDomPortal=n=>{const e=n.element,i=this.outletElement.ownerDocument.createComment("dom-portal");e.parentNode.insertBefore(i,e),this.outletElement.appendChild(e),this._attachedPortal=n,super.setDisposeFn(()=>{i.parentNode&&i.parentNode.replaceChild(e,i)})};dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(n){return n.hostView.rootNodes[0]}}let $ce=(()=>{class t extends nc{constructor(){super(T(Oi),T(Ai))}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkPortal",""]],exportAs:["cdkPortal"],features:[_e]})}return t})(),ic=(()=>{class t extends kb{_moduleRef=T(Ss,{optional:!0});_document=T(et);_viewContainerRef=T(Ai);_isInitialized=!1;_attachedRef=null;constructor(){super()}get portal(){return this._attachedPortal}set portal(e){this.hasAttached()&&!e&&!this._isInitialized||(this.hasAttached()&&super.detach(),e&&super.attach(e),this._attachedPortal=e||null)}attached=new ke;get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(e){e.setAttachedHost(this);const i=null!=e.viewContainerRef?e.viewContainerRef:this._viewContainerRef,o=i.createComponent(e.component,{index:i.length,injector:e.injector||i.injector,projectableNodes:e.projectableNodes||void 0,ngModuleRef:this._moduleRef||void 0,bindings:e.bindings||void 0});return i!==this._viewContainerRef&&this._getRootNode().appendChild(o.hostView.rootNodes[0]),super.setDisposeFn(()=>o.destroy()),this._attachedPortal=e,this._attachedRef=o,this.attached.emit(o),o}attachTemplatePortal(e){e.setAttachedHost(this);const i=this._viewContainerRef.createEmbeddedView(e.templateRef,e.context,{injector:e.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=e,this._attachedRef=i,this.attached.emit(i),i}attachDomPortal=e=>{const i=e.element,o=this._document.createComment("dom-portal");e.setAttachedHost(this),i.parentNode.insertBefore(o,i),this._getRootNode().appendChild(i),this._attachedPortal=e,super.setDisposeFn(()=>{o.parentNode&&o.parentNode.replaceChild(i,o)})};_getRootNode(){const e=this._viewContainerRef.element.nativeElement;return e.nodeType===e.ELEMENT_NODE?e:e.parentNode}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:[0,"cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],features:[_e]})}return t})(),Uf=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function Mr(t,...n){return n.length?n.some(e=>t[e]):t.altKey||t.shiftKey||t.ctrlKey||t.metaKey}const YL=$L();function _k(t){return new rde(t.get(tu),t.get(et))}class rde{_viewportRuler;_previousHTMLStyles={top:"",left:""};_previousScrollPosition;_isEnabled=!1;_document;constructor(n,e){this._viewportRuler=n,this._document=e}attach(){}enable(){if(this._canBeEnabled()){const n=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=n.style.left||"",this._previousHTMLStyles.top=n.style.top||"",n.style.left=li(-this._previousScrollPosition.left),n.style.top=li(-this._previousScrollPosition.top),n.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){const n=this._document.documentElement,i=n.style,o=this._document.body.style,r=i.scrollBehavior||"",s=o.scrollBehavior||"";this._isEnabled=!1,i.left=this._previousHTMLStyles.left,i.top=this._previousHTMLStyles.top,n.classList.remove("cdk-global-scrollblock"),YL&&(i.scrollBehavior=o.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),YL&&(i.scrollBehavior=r,o.scrollBehavior=s)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;const e=this._document.documentElement,i=this._viewportRuler.getViewportSize();return e.scrollHeight>i.height||e.scrollWidth>i.width}}class ade{_scrollDispatcher;_ngZone;_viewportRuler;_config;_scrollSubscription=null;_overlayRef;_initialScrollPosition;constructor(n,e,i,o){this._scrollDispatcher=n,this._ngZone=e,this._viewportRuler=i,this._config=o}attach(n){this._overlayRef=n}enable(){if(this._scrollSubscription)return;const n=this._scrollDispatcher.scrolled(0).pipe(Pn(e=>!e||!this._overlayRef.overlayElement.contains(e.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=n.subscribe(()=>{const e=this._viewportRuler.getViewportScrollPosition().top;Math.abs(e-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=n.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}_detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}class bk{enable(){}disable(){}attach(){}}function vk(t,n){return n.some(e=>t.bottome.bottom||t.righte.right)}function XL(t,n){return n.some(e=>t.tope.bottom||t.lefte.right)}function $f(t,n){return new lde(t.get(Cb),t.get(tu),t.get(Ce),n)}class lde{_scrollDispatcher;_viewportRuler;_ngZone;_config;_scrollSubscription=null;_overlayRef;constructor(n,e,i,o){this._scrollDispatcher=n,this._viewportRuler=e,this._ngZone=i,this._config=o}attach(n){this._overlayRef=n}enable(){this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){const e=this._overlayRef.overlayElement.getBoundingClientRect(),{width:i,height:o}=this._viewportRuler.getViewportSize();vk(e,[{width:i,height:o,bottom:o,right:i,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}}))}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}let cde=(()=>{class t{_injector=T(Ue);constructor(){}noop=()=>new bk;close=e=>function sde(t,n){return new ade(t.get(Cb),t.get(Ce),t.get(tu),n)}(this._injector,e);block=()=>_k(this._injector);reposition=e=>$f(this._injector,e);static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class Wf{positionStrategy;scrollStrategy=new bk;panelClass="";hasBackdrop=!1;backdropClass="cdk-overlay-dark-backdrop";disableAnimations;width;height;minWidth;minHeight;maxWidth;maxHeight;direction;disposeOnNavigation=!1;usePopover;eventPredicate;constructor(n){if(n){const e=Object.keys(n);for(const i of e)void 0!==n[i]&&(this[i]=n[i])}}}class dde{connectionPair;scrollableViewProperties;constructor(n,e){this.connectionPair=n,this.scrollableViewProperties=e}}let ZL=(()=>{class t{_attachedOverlays=[];_document=T(et);_isAttached=!1;constructor(){}ngOnDestroy(){this.detach()}add(e){this.remove(e),this._attachedOverlays.push(e)}remove(e){const i=this._attachedOverlays.indexOf(e);i>-1&&this._attachedOverlays.splice(i,1),0===this._attachedOverlays.length&&this.detach()}canReceiveEvent(e,i,o){return!(o.observers.length<1)&&(!e.eventPredicate||e.eventPredicate(i))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),ude=(()=>{class t extends ZL{_ngZone=T(Ce);_renderer=T(Uo).createRenderer(null,null);_cleanupKeydown;add(e){super.add(e),this._isAttached||(this._ngZone.runOutsideAngular(()=>{this._cleanupKeydown=this._renderer.listen("body","keydown",this._keydownListener)}),this._isAttached=!0)}detach(){this._isAttached&&(this._cleanupKeydown?.(),this._isAttached=!1)}_keydownListener=e=>{const i=this._attachedOverlays;for(let o=i.length-1;o>-1;o--){const r=i[o];if(this.canReceiveEvent(r,e,r._keydownEvents)){this._ngZone.run(()=>r._keydownEvents.next(e));break}}};static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),hde=(()=>{class t extends ZL{_platform=T(Zn);_ngZone=T(Ce);_renderer=T(Uo).createRenderer(null,null);_cursorOriginalValue;_cursorStyleIsSet=!1;_pointerDownEventTarget=null;_cleanups;add(e){if(super.add(e),!this._isAttached){const i=this._document.body,o={capture:!0},r=this._renderer;this._cleanups=this._ngZone.runOutsideAngular(()=>[r.listen(i,"pointerdown",this._pointerDownListener,o),r.listen(i,"click",this._clickListener,o),r.listen(i,"auxclick",this._clickListener,o),r.listen(i,"contextmenu",this._clickListener,o)]),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=i.style.cursor,i.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){this._isAttached&&(this._cleanups?.forEach(e=>e()),this._cleanups=void 0,this._platform.IOS&&this._cursorStyleIsSet&&(this._document.body.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1)}_pointerDownListener=e=>{this._pointerDownEventTarget=Sr(e)};_clickListener=e=>{const i=Sr(e),o="click"===e.type&&this._pointerDownEventTarget?this._pointerDownEventTarget:i;this._pointerDownEventTarget=null;const r=this._attachedOverlays.slice();for(let s=r.length-1;s>-1;s--){const a=r[s],l=a._outsidePointerEvents;if(a.hasAttached()&&this.canReceiveEvent(a,e,l)){if(QL(a.overlayElement,i)||QL(a.overlayElement,o))break;this._ngZone?this._ngZone.run(()=>l.next(e)):l.next(e)}}};static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function QL(t,n){const e=typeof ShadowRoot<"u"&&ShadowRoot;let i=n;for(;i;){if(i===t)return!0;i=e&&i instanceof ShadowRoot?i.host:i.parentNode}return!1}let JL=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["ng-component"]],hostAttrs:["cdk-overlay-style-loader",""],decls:0,vars:0,template:function(i,o){},styles:[".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed}@layer cdk-overlay{.cdk-overlay-container{z-index:1000}}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute}@layer cdk-overlay{.cdk-global-overlay-wrapper{z-index:1000}}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%}@layer cdk-overlay{.cdk-overlay-pane{z-index:1000}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);opacity:0;touch-action:manipulation}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}@layer cdk-overlay{.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px}@layer cdk-overlay{.cdk-overlay-connected-position-bounding-box{z-index:1000}}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.cdk-overlay-popover{background:none;border:none;padding:0;outline:0;overflow:visible;position:fixed;pointer-events:none;white-space:normal;color:inherit;text-decoration:none;width:100%;height:100%;inset:auto;top:0;left:0}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{position:fixed;z-index:auto}\n"],encapsulation:2,changeDetection:0})}return t})(),yk=(()=>{class t{_platform=T(Zn);_containerElement;_document=T(et);_styleLoader=T(qo);constructor(){}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._loadStyles(),this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const e="cdk-overlay-container";if(this._platform.isBrowser||qL()){const o=this._document.querySelectorAll(`.${e}[platform="server"], .${e}[platform="test"]`);for(let r=0;r{const n=this.element;clearTimeout(this._fallbackTimeout),this._cleanupTransitionEnd?.(),this._cleanupTransitionEnd=this._renderer.listen(n,"transitionend",this.dispose),this._fallbackTimeout=setTimeout(this.dispose,500),n.style.pointerEvents="none",n.classList.remove("cdk-overlay-backdrop-showing")})}dispose=()=>{clearTimeout(this._fallbackTimeout),this._cleanupClick?.(),this._cleanupTransitionEnd?.(),this._cleanupClick=this._cleanupTransitionEnd=this._fallbackTimeout=void 0,this.element.remove()}}function Ck(t){return t&&1===t.nodeType}class e4{_portalOutlet;_host;_pane;_config;_ngZone;_keyboardDispatcher;_document;_location;_outsideClickDispatcher;_animationsDisabled;_injector;_renderer;_backdropClick=new be;_attachments=new be;_detachments=new be;_positionStrategy;_scrollStrategy;_locationChanges=gt.EMPTY;_backdropRef=null;_detachContentMutationObserver;_detachContentAfterRenderRef;_disposed=!1;_previousHostParent;_keydownEvents=new be;_outsidePointerEvents=new be;_afterNextRenderRef;constructor(n,e,i,o,r,s,a,l,d,f=!1,m,g){this._portalOutlet=n,this._host=e,this._pane=i,this._config=o,this._ngZone=r,this._keyboardDispatcher=s,this._document=a,this._location=l,this._outsideClickDispatcher=d,this._animationsDisabled=f,this._injector=m,this._renderer=g,o.scrollStrategy&&(this._scrollStrategy=o.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=o.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropRef?.element||null}get hostElement(){return this._host}get eventPredicate(){return this._config?.eventPredicate||null}attach(n){if(this._disposed)return null;this._attachHost();const e=this._portalOutlet.attach(n);return this._positionStrategy?.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._afterNextRenderRef?.destroy(),this._afterNextRenderRef=Wi(()=>{this.hasAttached()&&this.updatePosition()},{injector:this._injector}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._completeDetachContent(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),"function"==typeof e?.onDestroy&&e.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),e}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();const n=this._portalOutlet.detach();return this._detachments.next(),this._completeDetachContent(),this._keyboardDispatcher.remove(this),this._detachContentWhenEmpty(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),n}dispose(){if(this._disposed)return;const n=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._backdropRef?.dispose(),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._afterNextRenderRef?.destroy(),this._previousHostParent=this._pane=this._host=this._backdropRef=null,n&&this._detachments.next(),this._detachments.complete(),this._completeDetachContent(),this._disposed=!0}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(n){n!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=n,this.hasAttached()&&(n.attach(this),this.updatePosition()))}updateSize(n){this._config={...this._config,...n},this._updateElementSize()}setDirection(n){this._config={...this._config,direction:n},this._updateElementDirection()}addPanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!0)}removePanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!1)}getDirection(){const n=this._config.direction;return n?"string"==typeof n?n:n.value:"ltr"}updateScrollStrategy(n){n!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=n,this.hasAttached()&&(n.attach(this),n.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;const n=this._pane.style;n.width=li(this._config.width),n.height=li(this._config.height),n.minWidth=li(this._config.minWidth),n.minHeight=li(this._config.minHeight),n.maxWidth=li(this._config.maxWidth),n.maxHeight=li(this._config.maxHeight)}_togglePointerEvents(n){this._pane.style.pointerEvents=n?"":"none"}_attachHost(){if(!this._host.parentElement){const n=this._config.usePopover?this._positionStrategy?.getPopoverInsertionPoint?.():null;Ck(n)?n.after(this._host):"parent"===n?.type?n.element.appendChild(this._host):this._previousHostParent?.appendChild(this._host)}if(this._config.usePopover)try{this._host.showPopover()}catch{}}_attachBackdrop(){const n="cdk-overlay-backdrop-showing";this._backdropRef?.dispose(),this._backdropRef=new fde(this._document,this._renderer,this._ngZone,e=>{this._backdropClick.next(e)}),this._animationsDisabled&&this._backdropRef.element.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropRef.element,this._config.backdropClass,!0),this._config.usePopover?this._host.prepend(this._backdropRef.element):this._host.parentElement.insertBefore(this._backdropRef.element,this._host),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>this._backdropRef?.element.classList.add(n))}):this._backdropRef.element.classList.add(n)}_updateStackingOrder(){!this._config.usePopover&&this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){this._animationsDisabled?(this._backdropRef?.dispose(),this._backdropRef=null):this._backdropRef?.detach()}_toggleClasses(n,e,i){const o=xb(e||[]).filter(r=>!!r);o.length&&(i?n.classList.add(...o):n.classList.remove(...o))}_detachContentWhenEmpty(){let n=!1;try{this._detachContentAfterRenderRef=Wi(()=>{n=!0,this._detachContent()},{injector:this._injector})}catch(e){if(n)throw e;this._detachContent()}globalThis.MutationObserver&&this._pane&&(this._detachContentMutationObserver||=new globalThis.MutationObserver(()=>{this._detachContent()}),this._detachContentMutationObserver.observe(this._pane,{childList:!0}))}_detachContent(){(!this._pane||!this._host||0===this._pane.children.length)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),this._completeDetachContent())}_completeDetachContent(){this._detachContentAfterRenderRef?.destroy(),this._detachContentAfterRenderRef=void 0,this._detachContentMutationObserver?.disconnect()}_disposeScrollStrategy(){const n=this._scrollStrategy;n?.disable(),n?.detach?.()}}const t4="cdk-overlay-connected-position-bounding-box",pde=/([A-Za-z%]+)$/;function Eb(t,n){return new mde(n,t.get(tu),t.get(et),t.get(Zn),t.get(yk))}class mde{_viewportRuler;_document;_platform;_overlayContainer;_overlayRef;_isInitialRender=!1;_lastBoundingBoxSize={width:0,height:0};_isPushed=!1;_canPush=!0;_growAfterOpen=!1;_hasFlexibleDimensions=!0;_positionLocked=!1;_originRect;_overlayRect;_viewportRect;_containerRect;_viewportMargin=0;_scrollables=[];_preferredPositions=[];_origin;_pane;_isDisposed=!1;_boundingBox=null;_lastPosition=null;_lastScrollVisibility=null;_positionChanges=new be;_resizeSubscription=gt.EMPTY;_offsetX=0;_offsetY=0;_transformOriginSelector;_appliedPanelClasses=[];_previousPushAmount=null;_popoverLocation="global";positionChanges=this._positionChanges;get positions(){return this._preferredPositions}constructor(n,e,i,o,r){this._viewportRuler=e,this._document=i,this._platform=o,this._overlayContainer=r,this.setOrigin(n)}attach(n){this._validatePositions(),n.hostElement.classList.add(t4),this._overlayRef=n,this._boundingBox=n.hostElement,this._pane=n.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition)return void this.reapplyLastPosition();this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._getContainerRect();const n=this._originRect,e=this._overlayRect,i=this._viewportRect,o=this._containerRect,r=[];let s;for(let a of this._preferredPositions){let l=this._getOriginPoint(n,o,a),d=this._getOverlayPoint(l,e,a),f=this._getOverlayFit(d,e,i,a);if(f.isCompletelyWithinViewport)return this._isPushed=!1,void this._applyPosition(a,l);this._canFitWithFlexibleDimensions(f,d,i)?r.push({position:a,origin:l,overlayRect:e,boundingBoxRect:this._calculateBoundingBoxRect(l,a)}):(!s||s.overlayFit.visibleAreal&&(l=f,a=d)}return this._isPushed=!1,void this._applyPosition(a.position,a.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(s.position,s.originPoint);this._applyPosition(s.position,s.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&oc(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(t4),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;const n=this._lastPosition;n?(this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._getContainerRect(),this._applyPosition(n,this._getOriginPoint(this._originRect,this._containerRect,n))):this.apply()}withScrollableContainers(n){return this._scrollables=n,this}withPositions(n){return this._preferredPositions=n,-1===n.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(n){return this._viewportMargin=n,this}withFlexibleDimensions(n=!0){return this._hasFlexibleDimensions=n,this}withGrowAfterOpen(n=!0){return this._growAfterOpen=n,this}withPush(n=!0){return this._canPush=n,this}withLockedPosition(n=!0){return this._positionLocked=n,this}setOrigin(n){return this._origin=n,this}withDefaultOffsetX(n){return this._offsetX=n,this}withDefaultOffsetY(n){return this._offsetY=n,this}withTransformOriginOn(n){return this._transformOriginSelector=n,this}withPopoverLocation(n){return this._popoverLocation=n,this}getPopoverInsertionPoint(){return"global"===this._popoverLocation?null:"inline"!==this._popoverLocation?this._popoverLocation:this._origin instanceof Ne?this._origin.nativeElement:Ck(this._origin)?this._origin:null}_getOriginPoint(n,e,i){let o,r;if("center"==i.originX)o=n.left+n.width/2;else{const s=this._isRtl()?n.right:n.left,a=this._isRtl()?n.left:n.right;o="start"==i.originX?s:a}return e.left<0&&(o-=e.left),r="center"==i.originY?n.top+n.height/2:"top"==i.originY?n.top:n.bottom,e.top<0&&(r-=e.top),{x:o,y:r}}_getOverlayPoint(n,e,i){let o,r;return o="center"==i.overlayX?-e.width/2:"start"===i.overlayX?this._isRtl()?-e.width:0:this._isRtl()?0:-e.width,r="center"==i.overlayY?-e.height/2:"top"==i.overlayY?0:-e.height,{x:n.x+o,y:n.y+r}}_getOverlayFit(n,e,i,o){const r=i4(e);let{x:s,y:a}=n,l=this._getOffset(o,"x"),d=this._getOffset(o,"y");l&&(s+=l),d&&(a+=d);let g=0-a,b=a+r.height-i.height,w=this._subtractOverflows(r.width,0-s,s+r.width-i.width),M=this._subtractOverflows(r.height,g,b),E=w*M;return{visibleArea:E,isCompletelyWithinViewport:r.width*r.height===E,fitsInViewportVertically:M===r.height,fitsInViewportHorizontally:w==r.width}}_canFitWithFlexibleDimensions(n,e,i){if(this._hasFlexibleDimensions){const o=i.bottom-e.y,r=i.right-e.x,s=n4(this._overlayRef.getConfig().minHeight),a=n4(this._overlayRef.getConfig().minWidth);return(n.fitsInViewportVertically||null!=s&&s<=o)&&(n.fitsInViewportHorizontally||null!=a&&a<=r)}return!1}_pushOverlayOnScreen(n,e,i){if(this._previousPushAmount&&this._positionLocked)return{x:n.x+this._previousPushAmount.x,y:n.y+this._previousPushAmount.y};const o=i4(e),r=this._viewportRect,s=Math.max(n.x+o.width-r.width,0),a=Math.max(n.y+o.height-r.height,0),l=Math.max(r.top-i.top-n.y,0),d=Math.max(r.left-i.left-n.x,0);let f=0,m=0;return f=o.width<=r.width?d||-s:n.xw&&!this._isInitialRender&&!this._growAfterOpen&&(s=n.y-w/2)}const l="start"===e.overlayX&&!o||"end"===e.overlayX&&o;let f,m,g;if("end"===e.overlayX&&!o||"start"===e.overlayX&&o)g=i.width-n.x+this._getViewportMarginStart()+this._getViewportMarginEnd(),f=n.x-this._getViewportMarginStart();else if(l)m=n.x,f=i.right-n.x-this._getViewportMarginEnd();else{const b=Math.min(i.right-n.x+i.left,n.x),w=this._lastBoundingBoxSize.width;f=2*b,m=n.x-b,f>w&&!this._isInitialRender&&!this._growAfterOpen&&(m=n.x-w/2)}return{top:s,left:m,bottom:a,right:g,width:f,height:r}}_setBoundingBoxStyles(n,e){const i=this._calculateBoundingBoxRect(n,e);!this._isInitialRender&&!this._growAfterOpen&&(i.height=Math.min(i.height,this._lastBoundingBoxSize.height),i.width=Math.min(i.width,this._lastBoundingBoxSize.width));const o={};if(this._hasExactPosition())o.top=o.left="0",o.bottom=o.right="auto",o.maxHeight=o.maxWidth="",o.width=o.height="100%";else{const r=this._overlayRef.getConfig().maxHeight,s=this._overlayRef.getConfig().maxWidth;o.width=li(i.width),o.height=li(i.height),o.top=li(i.top)||"auto",o.bottom=li(i.bottom)||"auto",o.left=li(i.left)||"auto",o.right=li(i.right)||"auto",o.alignItems="center"===e.overlayX?"center":"end"===e.overlayX?"flex-end":"flex-start",o.justifyContent="center"===e.overlayY?"center":"bottom"===e.overlayY?"flex-end":"flex-start",r&&(o.maxHeight=li(r)),s&&(o.maxWidth=li(s))}this._lastBoundingBoxSize=i,oc(this._boundingBox.style,o)}_resetBoundingBoxStyles(){oc(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){oc(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(n,e){const i={},o=this._hasExactPosition(),r=this._hasFlexibleDimensions,s=this._overlayRef.getConfig();if(o){const f=this._viewportRuler.getViewportScrollPosition();oc(i,this._getExactOverlayY(e,n,f)),oc(i,this._getExactOverlayX(e,n,f))}else i.position="static";let a="",l=this._getOffset(e,"x"),d=this._getOffset(e,"y");l&&(a+=`translateX(${l}px) `),d&&(a+=`translateY(${d}px)`),i.transform=a.trim(),s.maxHeight&&(o?i.maxHeight=li(s.maxHeight):r&&(i.maxHeight="")),s.maxWidth&&(o?i.maxWidth=li(s.maxWidth):r&&(i.maxWidth="")),oc(this._pane.style,i)}_getExactOverlayY(n,e,i){let o={top:"",bottom:""},r=this._getOverlayPoint(e,this._overlayRect,n);return this._isPushed&&(r=this._pushOverlayOnScreen(r,this._overlayRect,i)),"bottom"===n.overlayY?o.bottom=this._document.documentElement.clientHeight-(r.y+this._overlayRect.height)+"px":o.top=li(r.y),o}_getExactOverlayX(n,e,i){let s,o={left:"",right:""},r=this._getOverlayPoint(e,this._overlayRect,n);return this._isPushed&&(r=this._pushOverlayOnScreen(r,this._overlayRect,i)),s=this._isRtl()?"end"===n.overlayX?"left":"right":"end"===n.overlayX?"right":"left","right"===s?o.right=this._document.documentElement.clientWidth-(r.x+this._overlayRect.width)+"px":o.left=li(r.x),o}_getScrollVisibility(){const n=this._getOriginRect(),e=this._pane.getBoundingClientRect(),i=this._scrollables.map(o=>o.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:XL(n,i),isOriginOutsideView:vk(n,i),isOverlayClipped:XL(e,i),isOverlayOutsideView:vk(e,i)}}_subtractOverflows(n,...e){return e.reduce((i,o)=>i-Math.max(o,0),n)}_getNarrowedViewportRect(){const n=this._document.documentElement.clientWidth,e=this._document.documentElement.clientHeight,i=this._viewportRuler.getViewportScrollPosition();return{top:i.top+this._getViewportMarginTop(),left:i.left+this._getViewportMarginStart(),right:i.left+n-this._getViewportMarginEnd(),bottom:i.top+e-this._getViewportMarginBottom(),width:n-this._getViewportMarginStart()-this._getViewportMarginEnd(),height:e-this._getViewportMarginTop()-this._getViewportMarginBottom()}}_isRtl(){return"rtl"===this._overlayRef.getDirection()}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(n,e){return"x"===e?null==n.offsetX?this._offsetX:n.offsetX:null==n.offsetY?this._offsetY:n.offsetY}_validatePositions(){}_addPanelClasses(n){this._pane&&xb(n).forEach(e=>{""!==e&&-1===this._appliedPanelClasses.indexOf(e)&&(this._appliedPanelClasses.push(e),this._pane.classList.add(e))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(n=>{this._pane.classList.remove(n)}),this._appliedPanelClasses=[])}_getViewportMarginStart(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.start??0}_getViewportMarginEnd(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.end??0}_getViewportMarginTop(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.top??0}_getViewportMarginBottom(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.bottom??0}_getOriginRect(){const n=this._origin;if(n instanceof Ne)return n.nativeElement.getBoundingClientRect();if(n instanceof Element)return n.getBoundingClientRect();const e=n.width||0,i=n.height||0;return{top:n.y,bottom:n.y+i,left:n.x,right:n.x+e,height:i,width:e}}_getContainerRect(){const n=this._overlayRef.getConfig().usePopover&&"global"!==this._popoverLocation,e=this._overlayContainer.getContainerElement();n&&(e.style.display="block");const i=e.getBoundingClientRect();return n&&(e.style.display=""),i}}function oc(t,n){for(let e in n)n.hasOwnProperty(e)&&(t[e]=n[e]);return t}function n4(t){if("number"!=typeof t&&null!=t){const[n,e]=t.split(pde);return e&&"px"!==e?null:parseFloat(n)}return t||null}function i4(t){return{top:Math.floor(t.top),right:Math.floor(t.right),bottom:Math.floor(t.bottom),left:Math.floor(t.left),width:Math.floor(t.width),height:Math.floor(t.height)}}const o4="cdk-global-overlay-wrapper";function Pb(t){return new _de}class _de{_overlayRef;_cssPosition="static";_topOffset="";_bottomOffset="";_alignItems="";_xPosition="";_xOffset="";_width="";_height="";_isDisposed=!1;attach(n){const e=n.getConfig();this._overlayRef=n,this._width&&!e.width&&n.updateSize({width:this._width}),this._height&&!e.height&&n.updateSize({height:this._height}),n.hostElement.classList.add(o4),this._isDisposed=!1}top(n=""){return this._bottomOffset="",this._topOffset=n,this._alignItems="flex-start",this}left(n=""){return this._xOffset=n,this._xPosition="left",this}bottom(n=""){return this._topOffset="",this._bottomOffset=n,this._alignItems="flex-end",this}right(n=""){return this._xOffset=n,this._xPosition="right",this}start(n=""){return this._xOffset=n,this._xPosition="start",this}end(n=""){return this._xOffset=n,this._xPosition="end",this}width(n=""){return this._overlayRef?this._overlayRef.updateSize({width:n}):this._width=n,this}height(n=""){return this._overlayRef?this._overlayRef.updateSize({height:n}):this._height=n,this}centerHorizontally(n=""){return this.left(n),this._xPosition="center",this}centerVertically(n=""){return this.top(n),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;const n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement.style,i=this._overlayRef.getConfig(),{width:o,height:r,maxWidth:s,maxHeight:a}=i,l=!("100%"!==o&&"100vw"!==o||s&&"100%"!==s&&"100vw"!==s),d=!("100%"!==r&&"100vh"!==r||a&&"100%"!==a&&"100vh"!==a),f=this._xPosition,m=this._xOffset,g="rtl"===this._overlayRef.getConfig().direction;let b="",w="",M="";l?M="flex-start":"center"===f?(M="center",g?w=m:b=m):g?"left"===f||"end"===f?(M="flex-end",b=m):("right"===f||"start"===f)&&(M="flex-start",w=m):"left"===f||"start"===f?(M="flex-start",b=m):("right"===f||"end"===f)&&(M="flex-end",w=m),n.position=this._cssPosition,n.marginLeft=l?"0":b,n.marginTop=d?"0":this._topOffset,n.marginBottom=this._bottomOffset,n.marginRight=l?"0":w,e.justifyContent=M,e.alignItems=d?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;const n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement,i=e.style;e.classList.remove(o4),i.justifyContent=i.alignItems=n.marginTop=n.marginBottom=n.marginLeft=n.marginRight=n.position="",this._overlayRef=null,this._isDisposed=!0}}let bde=(()=>{class t{_injector=T(Ue);constructor(){}global(){return Pb()}flexibleConnectedTo(e){return Eb(this._injector,e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const wk=new Z("OVERLAY_DEFAULT_CONFIG");function ou(t,n){t.get(qo).load(JL);const e=t.get(yk),i=t.get(et),o=t.get(si),r=t.get(fr),s=t.get(kr),a=t.get(ei,null,{optional:!0})||t.get(Uo).createRenderer(null,null),l=new Wf(n),d=t.get(wk,null,{optional:!0})?.usePopover??!0;l.direction=l.direction||s.value,l.usePopover="showPopover"in i.body&&(n?.usePopover??d);const f=i.createElement("div"),m=i.createElement("div");f.id=o.getId("cdk-overlay-"),f.classList.add("cdk-overlay-pane"),m.appendChild(f),l.usePopover&&(m.setAttribute("popover","manual"),m.classList.add("cdk-overlay-popover"));const g=l.usePopover?l.positionStrategy?.getPopoverInsertionPoint?.():null;return Ck(g)?g.after(m):"parent"===g?.type?g.element.appendChild(m):e.getContainerElement().appendChild(m),new e4(new jce(f,r,t),m,f,l,t.get(Ce),t.get(ude),i,t.get(jd),t.get(hde),n?.disableAnimations??"NoopAnimations"===t.get(Hm,null,{optional:!0}),t.get(Wn),a)}let vde=(()=>{class t{scrollStrategies=T(cde);_positionBuilder=T(bde);_injector=T(Ue);constructor(){}create(e){return ou(this._injector,e)}position(){return this._positionBuilder}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const yde=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],Cde=new Z("cdk-connected-overlay-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Ue);return()=>$f(t)}});let Ib=(()=>{class t{elementRef=T(Ne);constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"]})}return t})();const wde=new Z("cdk-connected-overlay-default-config");let Ob,r4=(()=>{class t{_dir=T(kr,{optional:!0});_injector=T(Ue);_overlayRef;_templatePortal;_backdropSubscription=gt.EMPTY;_attachSubscription=gt.EMPTY;_detachSubscription=gt.EMPTY;_positionSubscription=gt.EMPTY;_offsetX;_offsetY;_position;_scrollStrategyFactory=T(Cde);_ngZone=T(Ce);origin;positions;positionStrategy;get offsetX(){return this._offsetX}set offsetX(e){this._offsetX=e,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(e){this._offsetY=e,this._position&&this._updatePositionStrategy(this._position)}width;height;minWidth;minHeight;backdropClass;panelClass;viewportMargin=0;scrollStrategy;open=!1;disableClose=!1;transformOriginSelector;hasBackdrop=!1;lockPosition=!1;flexibleDimensions=!1;growAfterOpen=!1;push=!1;disposeOnNavigation=!1;usePopover;matchWidth=!1;set _config(e){"string"!=typeof e&&this._assignConfig(e)}backdropClick=new ke;positionChange=new ke;attach=new ke;detach=new ke;overlayKeydown=new ke;overlayOutsideClick=new ke;constructor(){const e=T(Oi),i=T(Ai),o=T(wde,{optional:!0}),r=T(wk,{optional:!0});this.usePopover=!1===r?.usePopover?null:"global",this._templatePortal=new nc(e,i),this.scrollStrategy=this._scrollStrategyFactory(),o&&this._assignConfig(o)}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef?.dispose()}ngOnChanges(e){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef?.updateSize({width:this._getWidth(),minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),e.origin&&this.open&&this._position.apply()),e.open&&(this.open?this.attachOverlay():this.detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=yde);const e=this._overlayRef=ou(this._injector,this._buildConfig());this._attachSubscription=e.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=e.detachments().subscribe(()=>this.detach.emit()),e.keydownEvents().subscribe(i=>{this.overlayKeydown.next(i),27===i.keyCode&&!this.disableClose&&!Mr(i)&&(i.preventDefault(),this.detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(i=>{const o=this._getOriginElement(),r=Sr(i);(!o||o!==r&&!o.contains(r))&&this.overlayOutsideClick.next(i)})}_buildConfig(){const e=this._position=this.positionStrategy||this._createPositionStrategy(),i=new Wf({direction:this._dir||"ltr",positionStrategy:e,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop,disposeOnNavigation:this.disposeOnNavigation,usePopover:!!this.usePopover});return(this.height||0===this.height)&&(i.height=this.height),(this.minWidth||0===this.minWidth)&&(i.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(i.minHeight=this.minHeight),this.backdropClass&&(i.backdropClass=this.backdropClass),this.panelClass&&(i.panelClass=this.panelClass),i}_updatePositionStrategy(e){const i=this.positions.map(o=>({originX:o.originX,originY:o.originY,overlayX:o.overlayX,overlayY:o.overlayY,offsetX:o.offsetX||this.offsetX,offsetY:o.offsetY||this.offsetY,panelClass:o.panelClass||void 0}));return e.setOrigin(this._getOrigin()).withPositions(i).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector).withPopoverLocation(null===this.usePopover?"global":this.usePopover)}_createPositionStrategy(){const e=Eb(this._injector,this._getOrigin());return this._updatePositionStrategy(e),e}_getOrigin(){return this.origin instanceof Ib?this.origin.elementRef:this.origin}_getOriginElement(){return this.origin instanceof Ib?this.origin.elementRef.nativeElement:this.origin instanceof Ne?this.origin.nativeElement:typeof Element<"u"&&this.origin instanceof Element?this.origin:null}_getWidth(){return this.width?this.width:this.matchWidth?this._getOriginElement()?.getBoundingClientRect?.().width:void 0}attachOverlay(){this._overlayRef||this._createOverlay();const e=this._overlayRef;e.getConfig().hasBackdrop=this.hasBackdrop,e.updateSize({width:this._getWidth()}),e.hasAttached()||e.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=e.backdropClick().subscribe(i=>this.backdropClick.emit(i)):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(function Wce(t,n=!1){return En((e,i)=>{let o=0;e.subscribe(pn(i,r=>{const s=t(r,o++);(s||n)&&i.next(r),!s&&i.complete()}))})}(()=>this.positionChange.observers.length>0)).subscribe(i=>{this._ngZone.run(()=>this.positionChange.emit(i)),0===this.positionChange.observers.length&&this._positionSubscription.unsubscribe()})),this.open=!0}detachOverlay(){this._overlayRef?.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.open=!1}_assignConfig(e){this.origin=e.origin??this.origin,this.positions=e.positions??this.positions,this.positionStrategy=e.positionStrategy??this.positionStrategy,this.offsetX=e.offsetX??this.offsetX,this.offsetY=e.offsetY??this.offsetY,this.width=e.width??this.width,this.height=e.height??this.height,this.minWidth=e.minWidth??this.minWidth,this.minHeight=e.minHeight??this.minHeight,this.backdropClass=e.backdropClass??this.backdropClass,this.panelClass=e.panelClass??this.panelClass,this.viewportMargin=e.viewportMargin??this.viewportMargin,this.scrollStrategy=e.scrollStrategy??this.scrollStrategy,this.disableClose=e.disableClose??this.disableClose,this.transformOriginSelector=e.transformOriginSelector??this.transformOriginSelector,this.hasBackdrop=e.hasBackdrop??this.hasBackdrop,this.lockPosition=e.lockPosition??this.lockPosition,this.flexibleDimensions=e.flexibleDimensions??this.flexibleDimensions,this.growAfterOpen=e.growAfterOpen??this.growAfterOpen,this.push=e.push??this.push,this.disposeOnNavigation=e.disposeOnNavigation??this.disposeOnNavigation,this.usePopover=e.usePopover??this.usePopover,this.matchWidth=e.matchWidth??this.matchWidth}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:[0,"cdkConnectedOverlayOrigin","origin"],positions:[0,"cdkConnectedOverlayPositions","positions"],positionStrategy:[0,"cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:[0,"cdkConnectedOverlayOffsetX","offsetX"],offsetY:[0,"cdkConnectedOverlayOffsetY","offsetY"],width:[0,"cdkConnectedOverlayWidth","width"],height:[0,"cdkConnectedOverlayHeight","height"],minWidth:[0,"cdkConnectedOverlayMinWidth","minWidth"],minHeight:[0,"cdkConnectedOverlayMinHeight","minHeight"],backdropClass:[0,"cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:[0,"cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:[0,"cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:[0,"cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:[0,"cdkConnectedOverlayOpen","open"],disableClose:[0,"cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:[0,"cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:[2,"cdkConnectedOverlayHasBackdrop","hasBackdrop",Te],lockPosition:[2,"cdkConnectedOverlayLockPosition","lockPosition",Te],flexibleDimensions:[2,"cdkConnectedOverlayFlexibleDimensions","flexibleDimensions",Te],growAfterOpen:[2,"cdkConnectedOverlayGrowAfterOpen","growAfterOpen",Te],push:[2,"cdkConnectedOverlayPush","push",Te],disposeOnNavigation:[2,"cdkConnectedOverlayDisposeOnNavigation","disposeOnNavigation",Te],usePopover:[0,"cdkConnectedOverlayUsePopover","usePopover"],matchWidth:[2,"cdkConnectedOverlayMatchWidth","matchWidth",Te],_config:[0,"cdkConnectedOverlay","_config"]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],features:[vi]})}return t})(),ru=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[vde],imports:[ai,Uf,GL,GL]})}return t})(),xk=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["ng-component"]],exportAs:["cdkVisuallyHidden"],decls:0,vars:0,template:function(i,o){},styles:[".cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}\n"],encapsulation:2,changeDetection:0})}return t})();function su(t){return function xde(){if(void 0===Ob&&(Ob=null,typeof window<"u")){const t=window;void 0!==t.trustedTypes&&(Ob=t.trustedTypes.createPolicy("angular#components",{createHTML:n=>n}))}return Ob}()?.createHTML(t)||t}function kk(t){return Pn((n,e)=>t<=e)}function Ab(t,n=Nf){return En((e,i)=>{let o=null,r=null,s=null;const a=()=>{if(o){o.unsubscribe(),o=null;const d=r;r=null,i.next(d)}};function l(){const d=s+t,f=n.now();if(f{r=d,s=n.now(),o||(o=n.schedule(l,t),i.add(o))},()=>{a(),i.complete()},void 0,()=>{r=o=null}))})}const s4=new Set;let rc,Sk=(()=>{class t{_platform=T(Zn);_nonce=T(E1,{optional:!0});_matchMedia;constructor(){this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):Mde}matchMedia(e){return(this._platform.WEBKIT||this._platform.BLINK)&&function Sde(t,n){if(!s4.has(t))try{rc||(rc=document.createElement("style"),n&&rc.setAttribute("nonce",n),rc.setAttribute("type","text/css"),document.head.appendChild(rc)),rc.sheet&&(rc.sheet.insertRule(`@media ${t} {body{ }}`,0),s4.add(t))}catch(e){console.error(e)}}(e,this._nonce),this._matchMedia(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Mde(t){return{matches:"all"===t||""===t,media:t,addListener:()=>{},removeListener:()=>{}}}let a4=(()=>{class t{_mediaMatcher=T(Sk);_zone=T(Ce);_queries=new Map;_destroySubject=new be;constructor(){}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(e){return l4(xb(e)).some(o=>this._registerQuery(o).mql.matches)}observe(e){let r=Ax(l4(xb(e)).map(s=>this._registerQuery(s).observable));return r=Fs(r.pipe(wn(1)),r.pipe(kk(1),Ab(0))),r.pipe(De(s=>{const a={matches:!1,breakpoints:{}};return s.forEach(({matches:l,query:d})=>{a.matches=a.matches||l,a.breakpoints[d]=l}),a}))}_registerQuery(e){if(this._queries.has(e))return this._queries.get(e);const i=this._mediaMatcher.matchMedia(e),r={observable:new zt(s=>{const a=l=>this._zone.run(()=>s.next(l));return i.addListener(a),()=>{i.removeListener(a)}}).pipe(zn(i),De(({matches:s})=>({query:e,matches:s})),ln(this._destroySubject)),mql:i};return this._queries.set(e,r),r}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function l4(t){return t.map(n=>n.split(",")).reduce((n,e)=>n.concat(e)).map(n=>n.trim())}let c4=(()=>{class t{create(e){return typeof MutationObserver>"u"?null:new MutationObserver(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Tde=(()=>{class t{_mutationObserverFactory=T(c4);_observedElements=new Map;_ngZone=T(Ce);constructor(){}ngOnDestroy(){this._observedElements.forEach((e,i)=>this._cleanupObserver(i))}observe(e){const i=Bs(e);return new zt(o=>{const s=this._observeElement(i).pipe(De(a=>a.filter(l=>!function Dde(t){if("characterData"===t.type&&t.target instanceof Comment)return!0;if("childList"===t.type){for(let n=0;n!!a.length)).subscribe(a=>{this._ngZone.run(()=>{o.next(a)})});return()=>{s.unsubscribe(),this._unobserveElement(i)}})}_observeElement(e){return this._ngZone.runOutsideAngular(()=>{if(this._observedElements.has(e))this._observedElements.get(e).count++;else{const i=new be,o=this._mutationObserverFactory.create(r=>i.next(r));o&&o.observe(e,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(e,{observer:o,stream:i,count:1})}return this._observedElements.get(e).stream})}_unobserveElement(e){this._observedElements.has(e)&&(this._observedElements.get(e).count--,this._observedElements.get(e).count||this._cleanupObserver(e))}_cleanupObserver(e){if(this._observedElements.has(e)){const{observer:i,stream:o}=this._observedElements.get(e);i&&i.disconnect(),o.complete(),this._observedElements.delete(e)}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Ede=(()=>{class t{_contentObserver=T(Tde);_elementRef=T(Ne);event=new ke;get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._disabled?this._unsubscribe():this._subscribe()}_disabled=!1;get debounce(){return this._debounce}set debounce(e){this._debounce=Bf(e),this._subscribe()}_debounce;_currentSubscription=null;constructor(){}ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();const e=this._contentObserver.observe(this._elementRef);this._currentSubscription=(this.debounce?e.pipe(Ab(this.debounce)):e).subscribe(this.event)}_unsubscribe(){this._currentSubscription?.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkObserveContent",""]],inputs:{disabled:[2,"cdkObserveContentDisabled","disabled",Te],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"]})}return t})(),d4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[c4]})}return t})(),u4=(()=>{class t{_platform=T(Zn);constructor(){}isDisabled(e){return e.hasAttribute("disabled")}isVisible(e){return function Ide(t){return!!(t.offsetWidth||t.offsetHeight||"function"==typeof t.getClientRects&&t.getClientRects().length)}(e)&&"visible"===getComputedStyle(e).visibility}isTabbable(e){if(!this._platform.isBrowser)return!1;const i=function Pde(t){try{return t.frameElement}catch{return null}}(function Vde(t){return t.ownerDocument&&t.ownerDocument.defaultView||window}(e));if(i&&(-1===f4(i)||!this.isVisible(i)))return!1;let o=e.nodeName.toLowerCase(),r=f4(e);return e.hasAttribute("contenteditable")?-1!==r:!("iframe"===o||"object"===o||this._platform.WEBKIT&&this._platform.IOS&&!function Lde(t){let n=t.nodeName.toLowerCase(),e="input"===n&&t.type;return"text"===e||"password"===e||"select"===n||"textarea"===n}(e))&&("audio"===o?!!e.hasAttribute("controls")&&-1!==r:"video"===o?-1!==r&&(null!==r||this._platform.FIREFOX||e.hasAttribute("controls")):e.tabIndex>=0)}isFocusable(e,i){return function Bde(t){return!function Ade(t){return function Fde(t){return"input"==t.nodeName.toLowerCase()}(t)&&"hidden"==t.type}(t)&&(function Ode(t){let n=t.nodeName.toLowerCase();return"input"===n||"select"===n||"button"===n||"textarea"===n}(t)||function Rde(t){return function Nde(t){return"a"==t.nodeName.toLowerCase()}(t)&&t.hasAttribute("href")}(t)||t.hasAttribute("contenteditable")||h4(t))}(e)&&!this.isDisabled(e)&&(i?.ignoreVisibility||this.isVisible(e))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function h4(t){if(!t.hasAttribute("tabindex")||void 0===t.tabIndex)return!1;let n=t.getAttribute("tabindex");return!(!n||isNaN(parseInt(n,10)))}function f4(t){if(!h4(t))return null;const n=parseInt(t.getAttribute("tabindex")||"",10);return isNaN(n)?-1:n}class p4{_element;_checker;_ngZone;_document;_injector;_startAnchor=null;_endAnchor=null;_hasAttached=!1;startAnchorListener=()=>this.focusLastTabbableElement();endAnchorListener=()=>this.focusFirstTabbableElement();get enabled(){return this._enabled}set enabled(n){this._enabled=n,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}_enabled=!0;constructor(n,e,i,o,r=!1,s){this._element=n,this._checker=e,this._ngZone=i,this._document=o,this._injector=s,r||this.attachAnchors()}destroy(){const n=this._startAnchor,e=this._endAnchor;n&&(n.removeEventListener("focus",this.startAnchorListener),n.remove()),e&&(e.removeEventListener("focus",this.endAnchorListener),e.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return!!this._hasAttached||(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusInitialElement(n)))})}focusFirstTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusFirstTabbableElement(n)))})}focusLastTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusLastTabbableElement(n)))})}_getRegionBoundary(n){const e=this._element.querySelectorAll(`[cdk-focus-region-${n}], [cdkFocusRegion${n}], [cdk-focus-${n}]`);return"start"==n?e.length?e[0]:this._getFirstTabbableElement(this._element):e.length?e[e.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(n){const e=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(e){if(!this._checker.isFocusable(e)){const i=this._getFirstTabbableElement(e);return i?.focus(n),!!i}return e.focus(n),!0}return this.focusFirstTabbableElement(n)}focusFirstTabbableElement(n){const e=this._getRegionBoundary("start");return e&&e.focus(n),!!e}focusLastTabbableElement(n){const e=this._getRegionBoundary("end");return e&&e.focus(n),!!e}hasAttached(){return this._hasAttached}_getFirstTabbableElement(n){if(this._checker.isFocusable(n)&&this._checker.isTabbable(n))return n;const e=n.children;for(let i=0;i=0;i--){const o=e[i].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(e[i]):null;if(o)return o}return null}_createAnchor(){const n=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,n),n.classList.add("cdk-visually-hidden"),n.classList.add("cdk-focus-trap-anchor"),n.setAttribute("aria-hidden","true"),n}_toggleAnchorTabIndex(n,e){n?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}toggleAnchors(n){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}_executeOnStable(n){this._injector?Wi(n,{injector:this._injector}):setTimeout(n)}}let Hde=(()=>{class t{_checker=T(u4);_ngZone=T(Ce);_document=T(et);_injector=T(Ue);constructor(){T(qo).load(xk)}create(e,i=!1){return new p4(e,this._checker,this._ngZone,this._document,i,this._injector)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Ude=new Z("liveAnnouncerElement",{providedIn:"root",factory:()=>null}),zde=new Z("LIVE_ANNOUNCER_DEFAULT_OPTIONS");let jde=0,m4=(()=>{class t{_ngZone=T(Ce);_defaultOptions=T(zde,{optional:!0});_liveElement;_document=T(et);_sanitizer=T(K_);_previousTimeout;_currentPromise;_currentResolve;constructor(){const e=T(Ude,{optional:!0});this._liveElement=e||this._createLiveElement()}announce(e,...i){const o=this._defaultOptions;let r,s;return 1===i.length&&"number"==typeof i[0]?s=i[0]:[r,s]=i,this.clear(),clearTimeout(this._previousTimeout),r||(r=o&&o.politeness?o.politeness:"polite"),null==s&&o&&(s=o.duration),this._liveElement.setAttribute("aria-live",r),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular(()=>(this._currentPromise||(this._currentPromise=new Promise(a=>this._currentResolve=a)),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout(()=>{e&&"string"!=typeof e?function kde(t,n,e){const i=e.sanitize(yi.HTML,n);t.innerHTML=su(i||"")}(this._liveElement,e,this._sanitizer):this._liveElement.textContent=e,"number"==typeof s&&(this._previousTimeout=setTimeout(()=>this.clear(),s)),this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0},100),this._currentPromise))}clear(){this._liveElement&&(this._liveElement.textContent="")}ngOnDestroy(){clearTimeout(this._previousTimeout),this._liveElement?.remove(),this._liveElement=null,this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){const e="cdk-live-announcer-element",i=this._document.getElementsByClassName(e),o=this._document.createElement("div");for(let r=0;r .cdk-overlay-container [aria-modal="true"]');for(let o=0;o{class t{_platform=T(Zn);_hasCheckedHighContrastMode=!1;_document=T(et);_breakpointSubscription;constructor(){this._breakpointSubscription=T(a4).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return sc.NONE;const e=this._document.createElement("div");e.style.backgroundColor="rgb(1,2,3)",e.style.position="absolute",this._document.body.appendChild(e);const i=this._document.defaultView||window,o=i&&i.getComputedStyle?i.getComputedStyle(e):null,r=(o&&o.backgroundColor||"").replace(/ /g,"");switch(e.remove(),r){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return sc.WHITE_ON_BLACK;case"rgb(255,255,255)":case"rgb(255,250,239)":return sc.BLACK_ON_WHITE}return sc.NONE}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){const e=this._document.body.classList;e.remove(Mk,g4,_4),this._hasCheckedHighContrastMode=!0;const i=this.getHighContrastMode();i===sc.BLACK_ON_WHITE?e.add(Mk,g4):i===sc.WHITE_ON_BLACK&&e.add(Mk,_4)}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),b4=(()=>{class t{constructor(){T($de)._applyBodyHighContrastModeCssClasses()}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[d4]})}return t})();function Gde(t,n){return t===n}function Dk(t){return 0===t.buttons||0===t.detail}function Tk(t){const n=t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0];return!(!n||-1!==n.identifier||null!=n.radiusX&&1!==n.radiusX||null!=n.radiusY&&1!==n.radiusY)}function Ek(t){return function qde(){if(null==Gf&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>Gf=!0}))}finally{Gf=Gf||!1}return Gf}()?t:!!t.capture}const Kde=new Z("cdk-input-modality-detector-options"),Yde={ignoreKeys:[18,17,224,91,16]},Pk={passive:!0,capture:!0};let Xde=(()=>{class t{_platform=T(Zn);_listenerCleanups;modalityDetected;modalityChanged;get mostRecentModality(){return this._modality.value}_mostRecentTarget=null;_modality=new Ei(null);_options;_lastTouchMs=0;_onKeydown=e=>{this._options?.ignoreKeys?.some(i=>i===e.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=Sr(e))};_onMousedown=e=>{Date.now()-this._lastTouchMs<650||(this._modality.next(Dk(e)?"keyboard":"mouse"),this._mostRecentTarget=Sr(e))};_onTouchstart=e=>{Tk(e)?this._modality.next("keyboard"):(this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=Sr(e))};constructor(){const e=T(Ce),i=T(et),o=T(Kde,{optional:!0});if(this._options={...Yde,...o},this.modalityDetected=this._modality.pipe(kk(1)),this.modalityChanged=this.modalityDetected.pipe(function Wde(t,n=Qa){return t=t??Gde,En((e,i)=>{let o,r=!0;e.subscribe(pn(i,s=>{const a=n(s);(r||!t(o,a))&&(r=!1,o=a,i.next(s))}))})}()),this._platform.isBrowser){const r=T(Uo).createRenderer(null,null);this._listenerCleanups=e.runOutsideAngular(()=>[r.listen(i,"keydown",this._onKeydown,Pk),r.listen(i,"mousedown",this._onMousedown,Pk),r.listen(i,"touchstart",this._onTouchstart,Pk)])}}ngOnDestroy(){this._modality.complete(),this._listenerCleanups?.forEach(e=>e())}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Rb=function(t){return t[t.IMMEDIATE=0]="IMMEDIATE",t[t.EVENTUAL=1]="EVENTUAL",t}(Rb||{});const Zde=new Z("cdk-focus-monitor-default-options"),Fb=Ek({passive:!0,capture:!0});let ac=(()=>{class t{_ngZone=T(Ce);_platform=T(Zn);_inputModalityDetector=T(Xde);_origin=null;_lastFocusOrigin=null;_windowFocused=!1;_windowFocusTimeoutId;_originTimeoutId;_originFromTouchInteraction=!1;_elementInfo=new Map;_monitoredElementCount=0;_rootNodeFocusListenerCount=new Map;_detectionMode;_windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=setTimeout(()=>this._windowFocused=!1)};_document=T(et);_stopInputModalityDetector=new be;constructor(){const e=T(Zde,{optional:!0});this._detectionMode=e?.detectionMode||Rb.IMMEDIATE}_rootNodeFocusAndBlurListener=e=>{for(let o=Sr(e);o;o=o.parentElement)"focus"===e.type?this._onFocus(e,o):this._onBlur(e,o)};monitor(e,i=!1){const o=Bs(e);if(!this._platform.isBrowser||1!==o.nodeType)return se();const r=function Uce(t){if(function Hce(){if(null==pk){const t=typeof document<"u"?document.head:null;pk=!(!t||!t.createShadowRoot&&!t.attachShadow)}return pk}()){const n=t.getRootNode?t.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&n instanceof ShadowRoot)return n}return null}(o)||this._document,s=this._elementInfo.get(o);if(s)return i&&(s.checkChildren=!0),s.subject;const a={checkChildren:i,subject:new be,rootNode:r};return this._elementInfo.set(o,a),this._registerGlobalListeners(a),a.subject}stopMonitoring(e){const i=Bs(e),o=this._elementInfo.get(i);o&&(o.subject.complete(),this._setClasses(i),this._elementInfo.delete(i),this._removeGlobalListeners(o))}focusVia(e,i,o){const r=Bs(e);r===this._document.activeElement?this._getClosestElementsInfo(r).forEach(([a,l])=>this._originChanged(a,i,l)):(this._setOrigin(i),"function"==typeof r.focus&&r.focus(o))}ngOnDestroy(){this._elementInfo.forEach((e,i)=>this.stopMonitoring(i))}_getWindow(){return this._document.defaultView||window}_getFocusOrigin(e){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(e)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:e&&this._isLastInteractionFromInputLabel(e)?"mouse":"program"}_shouldBeAttributedToTouch(e){return this._detectionMode===Rb.EVENTUAL||!!e?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(e,i){e.classList.toggle("cdk-focused",!!i),e.classList.toggle("cdk-touch-focused","touch"===i),e.classList.toggle("cdk-keyboard-focused","keyboard"===i),e.classList.toggle("cdk-mouse-focused","mouse"===i),e.classList.toggle("cdk-program-focused","program"===i)}_setOrigin(e,i=!1){this._ngZone.runOutsideAngular(()=>{this._origin=e,this._originFromTouchInteraction="touch"===e&&i,this._detectionMode===Rb.IMMEDIATE&&(clearTimeout(this._originTimeoutId),this._originTimeoutId=setTimeout(()=>this._origin=null,this._originFromTouchInteraction?650:1))})}_onFocus(e,i){const o=this._elementInfo.get(i),r=Sr(e);!o||!o.checkChildren&&i!==r||this._originChanged(i,this._getFocusOrigin(r),o)}_onBlur(e,i){const o=this._elementInfo.get(i);!o||o.checkChildren&&e.relatedTarget instanceof Node&&i.contains(e.relatedTarget)||(this._setClasses(i),this._emitOrigin(o,null))}_emitOrigin(e,i){e.subject.observers.length&&this._ngZone.run(()=>e.subject.next(i))}_registerGlobalListeners(e){if(!this._platform.isBrowser)return;const i=e.rootNode,o=this._rootNodeFocusListenerCount.get(i)||0;o||this._ngZone.runOutsideAngular(()=>{i.addEventListener("focus",this._rootNodeFocusAndBlurListener,Fb),i.addEventListener("blur",this._rootNodeFocusAndBlurListener,Fb)}),this._rootNodeFocusListenerCount.set(i,o+1),1===++this._monitoredElementCount&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(ln(this._stopInputModalityDetector)).subscribe(r=>{this._setOrigin(r,!0)}))}_removeGlobalListeners(e){const i=e.rootNode;if(this._rootNodeFocusListenerCount.has(i)){const o=this._rootNodeFocusListenerCount.get(i);o>1?this._rootNodeFocusListenerCount.set(i,o-1):(i.removeEventListener("focus",this._rootNodeFocusAndBlurListener,Fb),i.removeEventListener("blur",this._rootNodeFocusAndBlurListener,Fb),this._rootNodeFocusListenerCount.delete(i))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(e,i,o){this._setClasses(e,i),this._emitOrigin(o,i),this._lastFocusOrigin=i}_getClosestElementsInfo(e){const i=[];return this._elementInfo.forEach((o,r)=>{(r===e||o.checkChildren&&r.contains(e))&&i.push([r,o])}),i}_isLastInteractionFromInputLabel(e){const{_mostRecentTarget:i,mostRecentModality:o}=this._inputModalityDetector;if("mouse"!==o||!i||i===e||"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.disabled)return!1;const r=e.labels;if(r)for(let s=0;s{class t{_elementRef=T(Ne);_focusMonitor=T(ac);_monitorSubscription;_focusOrigin=null;cdkFocusChange=new ke;constructor(){}get focusOrigin(){return this._focusOrigin}ngAfterViewInit(){const e=this._elementRef.nativeElement;this._monitorSubscription=this._focusMonitor.monitor(e,1===e.nodeType&&e.hasAttribute("cdkMonitorSubtreeFocus")).subscribe(i=>{this._focusOrigin=i,this.cdkFocusChange.emit(i)})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._monitorSubscription?.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkMonitorElementFocus",""],["","cdkMonitorSubtreeFocus",""]],outputs:{cdkFocusChange:"cdkFocusChange"},exportAs:["cdkMonitorFocus"]})}return t})();function Jde(t,n){}class qf{viewContainerRef;injector;id;role="dialog";panelClass="";hasBackdrop=!0;backdropClass="";disableClose=!1;closePredicate;width="";height="";minWidth;minHeight;maxWidth;maxHeight;positionStrategy;data=null;direction;ariaDescribedBy=null;ariaLabelledBy=null;ariaLabel=null;ariaModal=!1;autoFocus="first-tabbable";restoreFocus=!0;scrollStrategy;closeOnNavigation=!0;closeOnDestroy=!0;closeOnOverlayDetachments=!0;disableAnimations=!1;providers;container;templateContext}let y4=(()=>{class t extends kb{_elementRef=T(Ne);_focusTrapFactory=T(Hde);_config;_interactivityChecker=T(u4);_ngZone=T(Ce);_focusMonitor=T(ac);_renderer=T(ei);_changeDetectorRef=T(Dt);_injector=T(Ue);_platform=T(Zn);_document=T(et);_portalOutlet;_focusTrapped=new be;_focusTrap=null;_elementFocusedBeforeDialogWasOpened=null;_closeInteractionType=null;_ariaLabelledByQueue=[];_isDestroyed=!1;constructor(){super(),this._config=T(qf,{optional:!0})||new qf,this._config.ariaLabelledBy&&this._ariaLabelledByQueue.push(this._config.ariaLabelledBy)}_addAriaLabelledBy(e){this._ariaLabelledByQueue.push(e),this._changeDetectorRef.markForCheck()}_removeAriaLabelledBy(e){const i=this._ariaLabelledByQueue.indexOf(e);i>-1&&(this._ariaLabelledByQueue.splice(i,1),this._changeDetectorRef.markForCheck())}_contentAttached(){this._initializeFocusTrap(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._focusTrapped.complete(),this._isDestroyed=!0,this._restoreFocus()}attachComponentPortal(e){this._portalOutlet.hasAttached();const i=this._portalOutlet.attachComponentPortal(e);return this._contentAttached(),i}attachTemplatePortal(e){this._portalOutlet.hasAttached();const i=this._portalOutlet.attachTemplatePortal(e);return this._contentAttached(),i}attachDomPortal=e=>{this._portalOutlet.hasAttached();const i=this._portalOutlet.attachDomPortal(e);return this._contentAttached(),i};_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(e,i){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{const o=()=>{r(),s(),e.removeAttribute("tabindex")},r=this._renderer.listen(e,"blur",o),s=this._renderer.listen(e,"mousedown",o)})),e.focus(i)}_focusByCssSelector(e,i){let o=this._elementRef.nativeElement.querySelector(e);o&&this._forceFocus(o,i)}_trapFocus(e){this._isDestroyed||Wi(()=>{const i=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||i.focus(e);break;case!0:case"first-tabbable":this._focusTrap?.focusInitialElement(e)||this._focusDialogContainer(e);break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]',e);break;default:this._focusByCssSelector(this._config.autoFocus,e)}this._focusTrapped.next()},{injector:this._injector})}_restoreFocus(){const e=this._config.restoreFocus;let i=null;if("string"==typeof e?i=this._document.querySelector(e):"boolean"==typeof e?i=e?this._elementFocusedBeforeDialogWasOpened:null:e&&(i=e),this._config.restoreFocus&&i&&"function"==typeof i.focus){const o=mk(),r=this._elementRef.nativeElement;(!o||o===this._document.body||o===r||r.contains(o))&&(this._focusMonitor?(this._focusMonitor.focusVia(i,this._closeInteractionType),this._closeInteractionType=null):i.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(e){this._elementRef.nativeElement.focus?.(e)}_containsFocus(){const e=this._elementRef.nativeElement,i=mk();return e===i||e.contains(i)}_initializeFocusTrap(){this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=mk()))}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["cdk-dialog-container"]],viewQuery:function(i,o){if(1&i&&st(ic,7),2&i){let r;fe(r=pe())&&(o._portalOutlet=r.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(i,o){2&i&&We("id",o._config.id||null)("role",o._config.role)("aria-modal",o._config.ariaModal)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledByQueue[0])("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null)},features:[_e],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(i,o){1&i&&rt(0,Jde,0,0,"ng-template",0)},dependencies:[ic],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}\n"],encapsulation:2})}return t})();class Ik{overlayRef;config;componentInstance=null;componentRef=null;containerInstance;disableClose;closed=new be;backdropClick;keydownEvents;outsidePointerEvents;id;_detachSubscription;constructor(n,e){this.overlayRef=n,this.config=e,this.disableClose=e.disableClose,this.backdropClick=n.backdropClick(),this.keydownEvents=n.keydownEvents(),this.outsidePointerEvents=n.outsidePointerEvents(),this.id=e.id,this.keydownEvents.subscribe(i=>{27===i.keyCode&&!this.disableClose&&!Mr(i)&&(i.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{!this.disableClose&&this._canClose()?this.close(void 0,{focusOrigin:"mouse"}):this.containerInstance._recaptureFocus?.()}),this._detachSubscription=n.detachments().subscribe(()=>{!1!==e.closeOnOverlayDetachments&&this.close()})}close(n,e){if(this._canClose(n)){const i=this.closed;this.containerInstance._closeInteractionType=e?.focusOrigin||"program",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),i.next(n),i.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(n="",e=""){return this.overlayRef.updateSize({width:n,height:e}),this}addPanelClass(n){return this.overlayRef.addPanelClass(n),this}removePanelClass(n){return this.overlayRef.removePanelClass(n),this}_canClose(n){const e=this.config;return!!this.containerInstance&&(!e.closePredicate||e.closePredicate(n,e,this.componentInstance))}}const eue=new Z("DialogScrollStrategy",{providedIn:"root",factory:()=>{const t=T(Ue);return()=>_k(t)}}),tue=new Z("DialogData"),nue=new Z("DefaultDialogConfig");function iue(t){const n=Ct(t),e=new ke;return{valueSignal:n,get value(){return n()},change:e,ngOnDestroy(){e.complete()}}}let C4=(()=>{class t{_injector=T(Ue);_defaultOptions=T(nue,{optional:!0});_parentDialog=T(t,{optional:!0,skipSelf:!0});_overlayContainer=T(yk);_idGenerator=T(si);_openDialogsAtThisLevel=[];_afterAllClosedAtThisLevel=new be;_afterOpenedAtThisLevel=new be;_ariaHiddenElements=new Map;_scrollStrategy=T(eue);get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}afterAllClosed=Sa(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(zn(void 0)));constructor(){}open(e,i){(i={...this._defaultOptions||new qf,...i}).id=i.id||this._idGenerator.getId("cdk-dialog-"),i.id&&this.getDialogById(i.id);const r=this._getOverlayConfig(i),s=ou(this._injector,r),a=new Ik(s,i),l=this._attachContainer(s,a,i);if(a.containerInstance=l,!this.openDialogs.length){const d=this._overlayContainer.getContainerElement();l._focusTrapped?l._focusTrapped.pipe(wn(1)).subscribe(()=>{this._hideNonDialogContentFromAssistiveTechnology(d)}):this._hideNonDialogContentFromAssistiveTechnology(d)}return this._attachDialogContent(e,a,l,i),this.openDialogs.push(a),a.closed.subscribe(()=>this._removeOpenDialog(a,!0)),this.afterOpened.next(a),a}closeAll(){Ok(this.openDialogs,e=>e.close())}getDialogById(e){return this.openDialogs.find(i=>i.id===e)}ngOnDestroy(){Ok(this._openDialogsAtThisLevel,e=>{!1===e.config.closeOnDestroy&&this._removeOpenDialog(e,!1)}),Ok(this._openDialogsAtThisLevel,e=>e.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(e){const i=new Wf({positionStrategy:e.positionStrategy||Pb().centerHorizontally().centerVertically(),scrollStrategy:e.scrollStrategy||this._scrollStrategy(),panelClass:e.panelClass,hasBackdrop:e.hasBackdrop,direction:e.direction,minWidth:e.minWidth,minHeight:e.minHeight,maxWidth:e.maxWidth,maxHeight:e.maxHeight,width:e.width,height:e.height,disposeOnNavigation:e.closeOnNavigation,disableAnimations:e.disableAnimations});return e.backdropClass&&(i.backdropClass=e.backdropClass),i}_attachContainer(e,i,o){const r=o.injector||o.viewContainerRef?.injector,s=[{provide:qf,useValue:o},{provide:Ik,useValue:i},{provide:e4,useValue:e}];let a;o.container?"function"==typeof o.container?a=o.container:(a=o.container.type,s.push(...o.container.providers(o))):a=y4;const l=new nu(a,o.viewContainerRef,Ue.create({parent:r||this._injector,providers:s}));return e.attach(l).instance}_attachDialogContent(e,i,o,r){if(e instanceof Oi){const s=this._createInjector(r,i,o,void 0);let a={$implicit:r.data,dialogRef:i};r.templateContext&&(a={...a,..."function"==typeof r.templateContext?r.templateContext():r.templateContext}),o.attachTemplatePortal(new nc(e,null,a,s))}else{const s=this._createInjector(r,i,o,this._injector),a=o.attachComponentPortal(new nu(e,r.viewContainerRef,s));i.componentRef=a,i.componentInstance=a.instance}}_createInjector(e,i,o,r){const s=e.injector||e.viewContainerRef?.injector,a=[{provide:tue,useValue:e.data},{provide:Ik,useValue:i}];return e.providers&&("function"==typeof e.providers?a.push(...e.providers(i,e,o)):a.push(...e.providers)),e.direction&&(!s||!s.get(kr,null,{optional:!0}))&&a.push({provide:kr,useValue:iue(e.direction)}),Ue.create({parent:s||r,providers:a})}_removeOpenDialog(e,i){const o=this.openDialogs.indexOf(e);o>-1&&(this.openDialogs.splice(o,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((r,s)=>{r?s.setAttribute("aria-hidden",r):s.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),i&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(e){if(e.parentElement){const i=e.parentElement.children;for(let o=i.length-1;o>-1;o--){const r=i[o];r!==e&&"SCRIPT"!==r.nodeName&&"STYLE"!==r.nodeName&&!r.hasAttribute("aria-live")&&!r.hasAttribute("popover")&&(this._ariaHiddenElements.set(r,r.getAttribute("aria-hidden")),r.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ok(t,n){let e=t.length;for(;e--;)n(t[e])}let oue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[C4],imports:[ru,Uf,b4,Uf]})}return t})();const rue=new Z("MATERIAL_ANIMATIONS");let w4=null;function x4(){return T(rue,{optional:!0})?.animationsDisabled||"NoopAnimations"===T(Hm,{optional:!0})?"di-disabled":(w4??=T(Sk).matchMedia("(prefers-reduced-motion)").matches,w4?"reduced-motion":"enabled")}function hi(){return"enabled"!==x4()}function Dr(...t){const n=gf(t),e=function ise(t,n){return"number"==typeof Mx(t)?t.pop():n}(t,1/0),i=t;return i.length?1===i.length?qi(i[0]):qd(e)(Xn(i,n)):Ni}function sue(t,n){}class cn{viewContainerRef;injector;id;role="dialog";panelClass="";hasBackdrop=!0;backdropClass="";disableClose=!1;closePredicate;width="";height="";minWidth;minHeight;maxWidth;maxHeight;position;data=null;direction;ariaDescribedBy=null;ariaLabelledBy=null;ariaLabel=null;ariaModal=!1;autoFocus="first-tabbable";restoreFocus=!0;delayFocusTrap=!0;scrollStrategy;closeOnNavigation=!0;enterAnimationDuration;exitAnimationDuration}const Ak="mdc-dialog--open",k4="mdc-dialog--opening",S4="mdc-dialog--closing";let M4=(()=>{class t extends y4{_animationStateChanged=new ke;_animationsEnabled=!hi();_actionSectionCount=0;_hostElement=this._elementRef.nativeElement;_enterAnimationDuration=this._animationsEnabled?T4(this._config.enterAnimationDuration)??150:0;_exitAnimationDuration=this._animationsEnabled?T4(this._config.exitAnimationDuration)??75:0;_animationTimer=null;_contentAttached(){super._contentAttached(),this._startOpenAnimation()}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._enterAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(D4,`${this._enterAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(k4,Ak)),this._waitForAnimationToComplete(this._enterAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(Ak),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._exitAnimationDuration}),this._hostElement.classList.remove(Ak),this._animationsEnabled?(this._hostElement.style.setProperty(D4,`${this._exitAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(S4)),this._waitForAnimationToComplete(this._exitAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_updateActionSectionCount(e){this._actionSectionCount+=e,this._changeDetectorRef.markForCheck()}_finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._enterAnimationDuration)};_finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._exitAnimationDuration})};_clearAnimationClasses(){this._hostElement.classList.remove(k4,S4)}_waitForAnimationToComplete(e,i){null!==this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(i,e)}_requestAnimationFrame(e){this._ngZone.runOutsideAngular(()=>{"function"==typeof requestAnimationFrame?requestAnimationFrame(e):e()})}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(e){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:e})}ngOnDestroy(){super.ngOnDestroy(),null!==this._animationTimer&&clearTimeout(this._animationTimer)}attachComponentPortal(e){const i=super.attachComponentPortal(e);return i.location.nativeElement.classList.add("mat-mdc-dialog-component-host"),i}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275cmp=ae({type:t,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:10,hostBindings:function(i,o){2&i&&(gr("id",o._config.id),We("aria-modal",o._config.ariaModal)("role",o._config.role)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledByQueue[0])("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null),ve("_mat-animation-noopable",!o._animationsEnabled)("mat-mdc-dialog-container-with-actions",o._actionSectionCount>0))},features:[_e],decls:3,vars:0,consts:[[1,"mat-mdc-dialog-inner-container","mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1),rt(2,sue,0,0,"ng-template",2),u()())},dependencies:[ic],styles:['.mat-mdc-dialog-container{width:100%;height:100%;display:block;box-sizing:border-box;max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;outline:0}.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-max-width, 560px);min-width:var(--mat-dialog-container-min-width, 280px)}@media(max-width: 599px){.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-small-max-width, calc(100vw - 32px))}}.mat-mdc-dialog-inner-container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;opacity:0;transition:opacity linear var(--mat-dialog-transition-duration, 0ms);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mdc-dialog--closing .mat-mdc-dialog-inner-container{transition:opacity 75ms linear;transform:none}.mdc-dialog--open .mat-mdc-dialog-inner-container{opacity:1}._mat-animation-noopable .mat-mdc-dialog-inner-container{transition:none}.mat-mdc-dialog-surface{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;width:100%;height:100%;position:relative;overflow-y:auto;outline:0;transform:scale(0.8);transition:transform var(--mat-dialog-transition-duration, 0ms) cubic-bezier(0, 0, 0.2, 1);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;box-shadow:var(--mat-dialog-container-elevation-shadow, none);border-radius:var(--mat-dialog-container-shape, var(--mat-sys-corner-extra-large, 4px));background-color:var(--mat-dialog-container-color, var(--mat-sys-surface, white))}[dir=rtl] .mat-mdc-dialog-surface{text-align:right}.mdc-dialog--open .mat-mdc-dialog-surface,.mdc-dialog--closing .mat-mdc-dialog-surface{transform:none}._mat-animation-noopable .mat-mdc-dialog-surface{transition:none}.mat-mdc-dialog-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mat-mdc-dialog-title{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:var(--mat-dialog-headline-padding, 6px 24px 13px)}.mat-mdc-dialog-title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mat-mdc-dialog-title{text-align:right}.mat-mdc-dialog-container .mat-mdc-dialog-title{color:var(--mat-dialog-subhead-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-dialog-subhead-font, var(--mat-sys-headline-small-font, inherit));line-height:var(--mat-dialog-subhead-line-height, var(--mat-sys-headline-small-line-height, 1.5rem));font-size:var(--mat-dialog-subhead-size, var(--mat-sys-headline-small-size, 1rem));font-weight:var(--mat-dialog-subhead-weight, var(--mat-sys-headline-small-weight, 400));letter-spacing:var(--mat-dialog-subhead-tracking, var(--mat-sys-headline-small-tracking, 0.03125em))}.mat-mdc-dialog-content{display:block;flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;max-height:65vh}.mat-mdc-dialog-content>:first-child{margin-top:0}.mat-mdc-dialog-content>:last-child{margin-bottom:0}.mat-mdc-dialog-container .mat-mdc-dialog-content{color:var(--mat-dialog-supporting-text-color, var(--mat-sys-on-surface-variant, rgba(0, 0, 0, 0.6)));font-family:var(--mat-dialog-supporting-text-font, var(--mat-sys-body-medium-font, inherit));line-height:var(--mat-dialog-supporting-text-line-height, var(--mat-sys-body-medium-line-height, 1.5rem));font-size:var(--mat-dialog-supporting-text-size, var(--mat-sys-body-medium-size, 1rem));font-weight:var(--mat-dialog-supporting-text-weight, var(--mat-sys-body-medium-weight, 400));letter-spacing:var(--mat-dialog-supporting-text-tracking, var(--mat-sys-body-medium-tracking, 0.03125em))}.mat-mdc-dialog-container .mat-mdc-dialog-content{padding:var(--mat-dialog-content-padding, 20px 24px)}.mat-mdc-dialog-container-with-actions .mat-mdc-dialog-content{padding:var(--mat-dialog-with-actions-content-padding, 20px 24px 0)}.mat-mdc-dialog-container .mat-mdc-dialog-title+.mat-mdc-dialog-content{padding-top:0}.mat-mdc-dialog-actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;box-sizing:border-box;min-height:52px;margin:0;border-top:1px solid rgba(0,0,0,0);padding:var(--mat-dialog-actions-padding, 16px 24px);justify-content:var(--mat-dialog-actions-alignment, flex-end)}@media(forced-colors: active){.mat-mdc-dialog-actions{border-top-color:CanvasText}}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-start,.mat-mdc-dialog-actions[align=start]{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}.mat-mdc-dialog-component-host{display:contents}\n'],encapsulation:2})}return t})();const D4="--mat-dialog-transition-duration";function T4(t){return null==t?null:"number"==typeof t?t:t.endsWith("ms")?Bf(t.substring(0,t.length-2)):t.endsWith("s")?1e3*Bf(t.substring(0,t.length-1)):"0"===t?0:null}var Nb=function(t){return t[t.OPEN=0]="OPEN",t[t.CLOSING=1]="CLOSING",t[t.CLOSED=2]="CLOSED",t}(Nb||{});class Zt{_ref;_config;_containerInstance;componentInstance;componentRef=null;disableClose;id;_afterOpened=new co(1);_beforeClosed=new co(1);_result;_closeFallbackTimeout;_state=Nb.OPEN;_closeInteractionType;constructor(n,e,i){this._ref=n,this._config=e,this._containerInstance=i,this.disableClose=e.disableClose,this.id=n.id,n.addPanelClass("mat-mdc-dialog-panel"),i._animationStateChanged.pipe(Pn(o=>"opened"===o.state),wn(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),i._animationStateChanged.pipe(Pn(o=>"closed"===o.state),wn(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),n.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),Dr(this.backdropClick(),this.keydownEvents().pipe(Pn(o=>27===o.keyCode&&!this.disableClose&&!Mr(o)))).subscribe(o=>{this.disableClose||(o.preventDefault(),E4(this,"keydown"===o.type?"keyboard":"mouse"))})}close(n){const e=this._config.closePredicate;e&&!e(n,this._config,this.componentInstance)||(this._result=n,this._containerInstance._animationStateChanged.pipe(Pn(i=>"closing"===i.state),wn(1)).subscribe(i=>{this._beforeClosed.next(n),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),i.totalTime+100)}),this._state=Nb.CLOSING,this._containerInstance._startExitAnimation())}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(n){let e=this._ref.config.positionStrategy;return n&&(n.left||n.right)?n.left?e.left(n.left):e.right(n.right):e.centerHorizontally(),n&&(n.top||n.bottom)?n.top?e.top(n.top):e.bottom(n.bottom):e.centerVertically(),this._ref.updatePosition(),this}updateSize(n="",e=""){return this._ref.updateSize(n,e),this}addPanelClass(n){return this._ref.addPanelClass(n),this}removePanelClass(n){return this._ref.removePanelClass(n),this}getState(){return this._state}_finishDialogClose(){this._state=Nb.CLOSED,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}}function E4(t,n,e){return t._closeInteractionType=n,t.close(e)}const In=new Z("MatMdcDialogData"),P4=new Z("mat-mdc-dialog-default-options"),cue=new Z("mat-mdc-dialog-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Ue);return()=>_k(t)}});let Nt=(()=>{class t{_defaultOptions=T(P4,{optional:!0});_scrollStrategy=T(cue);_parentDialog=T(t,{optional:!0,skipSelf:!0});_idGenerator=T(si);_injector=T(Ue);_dialog=T(C4);_animationsDisabled=hi();_openDialogsAtThisLevel=[];_afterAllClosedAtThisLevel=new be;_afterOpenedAtThisLevel=new be;dialogConfigClass=cn;_dialogRefConstructor;_dialogContainerType;_dialogDataToken;get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}afterAllClosed=Sa(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(zn(void 0)));constructor(){this._dialogRefConstructor=Zt,this._dialogContainerType=M4,this._dialogDataToken=In}open(e,i){let o;(i={...this._defaultOptions||new cn,...i}).id=i.id||this._idGenerator.getId("mat-mdc-dialog-"),i.scrollStrategy=i.scrollStrategy||this._scrollStrategy();const r=this._dialog.open(e,{...i,positionStrategy:Pb().centerHorizontally().centerVertically(),disableClose:!0,closePredicate:void 0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,disableAnimations:this._animationsDisabled||"0"===i.enterAnimationDuration?.toLocaleString()||"0"===i.exitAnimationDuration?.toString(),container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:i},{provide:qf,useValue:i}]},templateContext:()=>({dialogRef:o}),providers:(s,a,l)=>(o=new this._dialogRefConstructor(s,i,l),o.updatePosition(i?.position),[{provide:this._dialogContainerType,useValue:l},{provide:this._dialogDataToken,useValue:a.data},{provide:this._dialogRefConstructor,useValue:o}])});return o.componentRef=r.componentRef,o.componentInstance=r.componentInstance,this.openDialogs.push(o),this.afterOpened.next(o),o.afterClosed().subscribe(()=>{const s=this.openDialogs.indexOf(o);s>-1&&(this.openDialogs.splice(s,1),this.openDialogs.length||this._getAfterAllClosed().next())}),o}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(e){return this.openDialogs.find(i=>i.id===e)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(e){let i=e.length;for(;i--;)e[i].close()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),I4=(()=>{class t{dialogRef=T(Zt,{optional:!0});_elementRef=T(Ne);_dialog=T(Nt);ariaLabel;type="button";dialogResult;_matDialogClose;constructor(){}ngOnInit(){this.dialogRef||(this.dialogRef=R4(this._elementRef,this._dialog.openDialogs))}ngOnChanges(e){const i=e._matDialogClose||e._matDialogCloseResult;i&&(this.dialogResult=i.currentValue)}_onButtonClick(e){E4(this.dialogRef,0===e.screenX&&0===e.screenY?"keyboard":"mouse",this.dialogResult)}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(i,o){1&i&&F("click",function(s){return o._onButtonClick(s)}),2&i&&We("aria-label",o.ariaLabel||null)("type",o.type)},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],type:"type",dialogResult:[0,"mat-dialog-close","dialogResult"],_matDialogClose:[0,"matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],features:[vi]})}return t})(),O4=(()=>{class t{_dialogRef=T(Zt,{optional:!0});_elementRef=T(Ne);_dialog=T(Nt);constructor(){}ngOnInit(){this._dialogRef||(this._dialogRef=R4(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then(()=>{this._onAdd()})}ngOnDestroy(){this._dialogRef?._containerInstance&&Promise.resolve().then(()=>{this._onRemove()})}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t})}return t})(),Rk=(()=>{class t extends O4{id=T(si).getId("mat-mdc-dialog-title-");_onAdd(){this._dialogRef._containerInstance?._addAriaLabelledBy?.(this.id)}_onRemove(){this._dialogRef?._containerInstance?._removeAriaLabelledBy?.(this.id)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","mat-dialog-title",""],["","matDialogTitle",""]],hostAttrs:[1,"mat-mdc-dialog-title","mdc-dialog__title"],hostVars:1,hostBindings:function(i,o){2&i&&gr("id",o.id)},inputs:{id:"id"},exportAs:["matDialogTitle"],features:[_e]})}return t})(),au=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-mdc-dialog-content","mdc-dialog__content"],features:[vI([WL])]})}return t})(),A4=(()=>{class t extends O4{align;_onAdd(){this._dialogRef._containerInstance?._updateActionSectionCount?.(1)}_onRemove(){this._dialogRef._containerInstance?._updateActionSectionCount?.(-1)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-mdc-dialog-actions","mdc-dialog__actions"],hostVars:6,hostBindings:function(i,o){2&i&&ve("mat-mdc-dialog-actions-align-start","start"===o.align)("mat-mdc-dialog-actions-align-center","center"===o.align)("mat-mdc-dialog-actions-align-end","end"===o.align)},inputs:{align:"align"},features:[_e]})}return t})();function R4(t,n){let e=t.nativeElement.parentElement;for(;e&&!e.classList.contains("mat-mdc-dialog-container");)e=e.parentElement;return e?n.find(i=>i.id===e.id):null}let due=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[Nt],imports:[oue,ru,Uf,ai]})}return t})();var Ko=function(t){return t[t.FADING_IN=0]="FADING_IN",t[t.VISIBLE=1]="VISIBLE",t[t.FADING_OUT=2]="FADING_OUT",t[t.HIDDEN=3]="HIDDEN",t}(Ko||{});class uue{_renderer;element;config;_animationForciblyDisabledThroughCss;state=Ko.HIDDEN;constructor(n,e,i,o=!1){this._renderer=n,this.element=e,this.config=i,this._animationForciblyDisabledThroughCss=o}fadeOut(){this._renderer.fadeOutRipple(this)}}const F4=Ek({passive:!0,capture:!0});class hue{_events=new Map;addHandler(n,e,i,o){const r=this._events.get(e);if(r){const s=r.get(i);s?s.add(o):r.set(i,new Set([o]))}else this._events.set(e,new Map([[i,new Set([o])]])),n.runOutsideAngular(()=>{document.addEventListener(e,this._delegateEventHandler,F4)})}removeHandler(n,e,i){const o=this._events.get(n);if(!o)return;const r=o.get(e);r&&(r.delete(i),0===r.size&&o.delete(e),0===o.size&&(this._events.delete(n),document.removeEventListener(n,this._delegateEventHandler,F4)))}_delegateEventHandler=n=>{const e=Sr(n);e&&this._events.get(n.type)?.forEach((i,o)=>{(o===e||o.contains(e))&&i.forEach(r=>r.handleEvent(n))})}}const Lb={enterDuration:225,exitDuration:150},N4=Ek({passive:!0,capture:!0}),L4=["mousedown","touchstart"],B4=["mouseup","mouseleave","touchend","touchcancel"];let pue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["ng-component"]],hostAttrs:["mat-ripple-style-loader",""],decls:0,vars:0,template:function(i,o){},styles:[".mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0, 0, 0.2, 1);transform:scale3d(0, 0, 0);background-color:var(--mat-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface) 10%, transparent))}@media(forced-colors: active){.mat-ripple-element{display:none}}.cdk-drag-preview .mat-ripple-element,.cdk-drag-placeholder .mat-ripple-element{display:none}\n"],encapsulation:2,changeDetection:0})}return t})();class Kf{_target;_ngZone;_platform;_containerElement;_triggerElement=null;_isPointerDown=!1;_activeRipples=new Map;_mostRecentTransientRipple=null;_lastTouchStartEvent;_pointerUpEventsRegistered=!1;_containerRect=null;static _eventManager=new hue;constructor(n,e,i,o,r){this._target=n,this._ngZone=e,this._platform=o,o.isBrowser&&(this._containerElement=Bs(i)),r&&r.get(qo).load(pue)}fadeInRipple(n,e,i={}){const o=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),r={...Lb,...i.animation};i.centered&&(n=o.left+o.width/2,e=o.top+o.height/2);const s=i.radius||function mue(t,n,e){const i=Math.max(Math.abs(t-e.left),Math.abs(t-e.right)),o=Math.max(Math.abs(n-e.top),Math.abs(n-e.bottom));return Math.sqrt(i*i+o*o)}(n,e,o),a=n-o.left,l=e-o.top,d=r.enterDuration,f=document.createElement("div");f.classList.add("mat-ripple-element"),f.style.left=a-s+"px",f.style.top=l-s+"px",f.style.height=2*s+"px",f.style.width=2*s+"px",null!=i.color&&(f.style.backgroundColor=i.color),f.style.transitionDuration=`${d}ms`,this._containerElement.appendChild(f);const m=window.getComputedStyle(f),b=m.transitionDuration,w="none"===m.transitionProperty||"0s"===b||"0s, 0s"===b||0===o.width&&0===o.height,M=new uue(this,f,i,w);f.style.transform="scale3d(1, 1, 1)",M.state=Ko.FADING_IN,i.persistent||(this._mostRecentTransientRipple=M);let E=null;return!w&&(d||r.exitDuration)&&this._ngZone.runOutsideAngular(()=>{const I=()=>{E&&(E.fallbackTimer=null),clearTimeout(W),this._finishRippleTransition(M)},A=()=>this._destroyRipple(M),W=setTimeout(A,d+100);f.addEventListener("transitionend",I),f.addEventListener("transitioncancel",A),E={onTransitionEnd:I,onTransitionCancel:A,fallbackTimer:W}}),this._activeRipples.set(M,E),(w||!d)&&this._finishRippleTransition(M),M}fadeOutRipple(n){if(n.state===Ko.FADING_OUT||n.state===Ko.HIDDEN)return;const e=n.element,i={...Lb,...n.config.animation};e.style.transitionDuration=`${i.exitDuration}ms`,e.style.opacity="0",n.state=Ko.FADING_OUT,(n._animationForciblyDisabledThroughCss||!i.exitDuration)&&this._finishRippleTransition(n)}fadeOutAll(){this._getActiveRipples().forEach(n=>n.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(n=>{n.config.persistent||n.fadeOut()})}setupTriggerEvents(n){const e=Bs(n);!this._platform.isBrowser||!e||e===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=e,L4.forEach(i=>{Kf._eventManager.addHandler(this._ngZone,i,e,this)}))}handleEvent(n){"mousedown"===n.type?this._onMousedown(n):"touchstart"===n.type?this._onTouchStart(n):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{B4.forEach(e=>{this._triggerElement.addEventListener(e,this,N4)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(n){n.state===Ko.FADING_IN?this._startFadeOutTransition(n):n.state===Ko.FADING_OUT&&this._destroyRipple(n)}_startFadeOutTransition(n){const e=n===this._mostRecentTransientRipple,{persistent:i}=n.config;n.state=Ko.VISIBLE,!i&&(!e||!this._isPointerDown)&&n.fadeOut()}_destroyRipple(n){const e=this._activeRipples.get(n)??null;this._activeRipples.delete(n),this._activeRipples.size||(this._containerRect=null),n===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),n.state=Ko.HIDDEN,null!==e&&(n.element.removeEventListener("transitionend",e.onTransitionEnd),n.element.removeEventListener("transitioncancel",e.onTransitionCancel),null!==e.fallbackTimer&&clearTimeout(e.fallbackTimer)),n.element.remove()}_onMousedown(n){const e=Dk(n),i=this._lastTouchStartEvent&&Date.now(){!n.config.persistent&&(n.state===Ko.VISIBLE||n.config.terminateOnPointerUp&&n.state===Ko.FADING_IN)&&n.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){const n=this._triggerElement;n&&(L4.forEach(e=>Kf._eventManager.removeHandler(e,n,this)),this._pointerUpEventsRegistered&&(B4.forEach(e=>n.removeEventListener(e,this,N4)),this._pointerUpEventsRegistered=!1))}}const Fk=new Z("mat-ripple-global-options");let lu=(()=>{class t{_elementRef=T(Ne);_animationsDisabled=hi();color;unbounded=!1;centered=!1;radius=0;animation;get disabled(){return this._disabled}set disabled(e){e&&this.fadeOutAllNonPersistent(),this._disabled=e,this._setupTriggerEventsIfEnabled()}_disabled=!1;get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(e){this._trigger=e,this._setupTriggerEventsIfEnabled()}_trigger;_rippleRenderer;_globalOptions;_isInitialized=!1;constructor(){const e=T(Ce),i=T(Zn),o=T(Fk,{optional:!0}),r=T(Ue);this._globalOptions=o||{},this._rippleRenderer=new Kf(this,e,this._elementRef,i,r)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:{...this._globalOptions.animation,...this._animationsDisabled?{enterDuration:0,exitDuration:0}:{},...this.animation},terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(e,i=0,o){return"number"==typeof e?this._rippleRenderer.fadeInRipple(e,i,{...this.rippleConfig,...o}):this._rippleRenderer.fadeInRipple(0,0,{...this.rippleConfig,...e})}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(i,o){2&i&&ve("mat-ripple-unbounded",o.unbounded)},inputs:{color:[0,"matRippleColor","color"],unbounded:[0,"matRippleUnbounded","unbounded"],centered:[0,"matRippleCentered","centered"],radius:[0,"matRippleRadius","radius"],animation:[0,"matRippleAnimation","animation"],disabled:[0,"matRippleDisabled","disabled"],trigger:[0,"matRippleTrigger","trigger"]},exportAs:["matRipple"]})}return t})();const gue={capture:!0},_ue=["focus","mousedown","mouseenter","touchstart"],Nk="mat-ripple-loader-uninitialized",Lk="mat-ripple-loader-class-name",V4="mat-ripple-loader-centered",Bb="mat-ripple-loader-disabled";let bue=(()=>{class t{_document=T(et);_animationsDisabled=hi();_globalRippleOptions=T(Fk,{optional:!0});_platform=T(Zn);_ngZone=T(Ce);_injector=T(Ue);_eventCleanups;_hosts=new Map;constructor(){const e=T(Uo).createRenderer(null,null);this._eventCleanups=this._ngZone.runOutsideAngular(()=>_ue.map(i=>e.listen(this._document,i,this._onInteraction,gue)))}ngOnDestroy(){const e=this._hosts.keys();for(const i of e)this.destroyRipple(i);this._eventCleanups.forEach(i=>i())}configureRipple(e,i){e.setAttribute(Nk,this._globalRippleOptions?.namespace??""),(i.className||!e.hasAttribute(Lk))&&e.setAttribute(Lk,i.className||""),i.centered&&e.setAttribute(V4,""),i.disabled&&e.setAttribute(Bb,"")}setDisabled(e,i){const o=this._hosts.get(e);o?(o.target.rippleDisabled=i,!i&&!o.hasSetUpEvents&&(o.hasSetUpEvents=!0,o.renderer.setupTriggerEvents(e))):i?e.setAttribute(Bb,""):e.removeAttribute(Bb)}_onInteraction=e=>{const i=Sr(e);if(i instanceof HTMLElement){const o=i.closest(`[${Nk}="${this._globalRippleOptions?.namespace??""}"]`);o&&this._createRipple(o)}};_createRipple(e){if(!this._document||this._hosts.has(e))return;e.querySelector(".mat-ripple")?.remove();const i=this._document.createElement("span");i.classList.add("mat-ripple",e.getAttribute(Lk)),e.append(i);const o=this._globalRippleOptions,r=this._animationsDisabled?0:o?.animation?.enterDuration??Lb.enterDuration,s=this._animationsDisabled?0:o?.animation?.exitDuration??Lb.exitDuration,a={rippleDisabled:this._animationsDisabled||o?.disabled||e.hasAttribute(Bb),rippleConfig:{centered:e.hasAttribute(V4),terminateOnPointerUp:o?.terminateOnPointerUp,animation:{enterDuration:r,exitDuration:s}}},l=new Kf(a,this._ngZone,i,this._platform,this._injector),d=!a.rippleDisabled;d&&l.setupTriggerEvents(e),this._hosts.set(e,{target:a,renderer:l,hasSetUpEvents:d}),e.removeAttribute(Nk)}destroyRipple(e){const i=this._hosts.get(e);i&&(i.renderer._removeTriggerEvents(),this._hosts.delete(e))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),cu=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["structural-styles"]],decls:0,vars:0,template:function(i,o){},styles:['.mat-focus-indicator{position:relative}.mat-focus-indicator::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border-width:var(--mat-focus-indicator-border-width, 3px);border-style:var(--mat-focus-indicator-border-style, solid);border-color:var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus-visible::before{content:""}@media(forced-colors: active){html{--mat-focus-indicator-display: block}}\n'],encapsulation:2,changeDetection:0})}return t})();const vue=["mat-icon-button",""],yue=["*"],Cue=new Z("MAT_BUTTON_CONFIG");function H4(t){return null==t?void 0:_r(t)}let U4=(()=>{class t{_elementRef=T(Ne);_ngZone=T(Ce);_animationsDisabled=hi();_config=T(Cue,{optional:!0});_focusMonitor=T(ac);_cleanupClick;_renderer=T(ei);_rippleLoader=T(bue);_isAnchor;_isFab=!1;color;get disableRipple(){return this._disableRipple}set disableRipple(e){this._disableRipple=e,this._updateRippleDisabled()}_disableRipple=!1;get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._updateRippleDisabled()}_disabled=!1;ariaDisabled;disabledInteractive;tabIndex;set _tabindex(e){this.tabIndex=e}constructor(){T(qo).load(cu);const e=this._elementRef.nativeElement;this._isAnchor="A"===e.tagName,this.disabledInteractive=this._config?.disabledInteractive??!1,this.color=this._config?.color??null,this._rippleLoader?.configureRipple(e,{className:"mat-mdc-button-ripple"})}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0),this._isAnchor&&this._setupAsAnchor()}ngOnDestroy(){this._cleanupClick?.(),this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement)}focus(e="program",i){e?this._focusMonitor.focusVia(this._elementRef.nativeElement,e,i):this._elementRef.nativeElement.focus(i)}_getAriaDisabled(){return null!=this.ariaDisabled?this.ariaDisabled:this._isAnchor?this.disabled||null:!(!this.disabled||!this.disabledInteractive)||null}_getDisabledAttribute(){return!(this.disabledInteractive||!this.disabled)||null}_updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementRef.nativeElement,this.disableRipple||this.disabled)}_getTabIndex(){return this._isAnchor&&this.disabled&&!this.disabledInteractive?-1:this.tabIndex}_setupAsAnchor(){this._cleanupClick=this._ngZone.runOutsideAngular(()=>this._renderer.listen(this._elementRef.nativeElement,"click",e=>{this.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}))}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,hostAttrs:[1,"mat-mdc-button-base"],hostVars:13,hostBindings:function(i,o){2&i&&(We("disabled",o._getDisabledAttribute())("aria-disabled",o._getAriaDisabled())("tabindex",o._getTabIndex()),Ge(o.color?"mat-"+o.color:""),ve("mat-mdc-button-disabled",o.disabled)("mat-mdc-button-disabled-interactive",o.disabledInteractive)("mat-unthemed",!o.color)("_mat-animation-noopable",o._animationsDisabled))},inputs:{color:"color",disableRipple:[2,"disableRipple","disableRipple",Te],disabled:[2,"disabled","disabled",Te],ariaDisabled:[2,"aria-disabled","ariaDisabled",Te],disabledInteractive:[2,"disabledInteractive","disabledInteractive",Te],tabIndex:[2,"tabIndex","tabIndex",H4],_tabindex:[2,"tabindex","_tabindex",H4]}})}return t})(),Yo=(()=>{class t extends U4{constructor(){super(),this._rippleLoader.configureRipple(this._elementRef.nativeElement,{centered:!0})}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["button","mat-icon-button",""],["a","mat-icon-button",""],["button","matIconButton",""],["a","matIconButton",""]],hostAttrs:[1,"mdc-icon-button","mat-mdc-icon-button"],exportAs:["matButton","matAnchor"],features:[_e],attrs:vue,ngContentSelectors:yue,decls:4,vars:0,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(i,o){1&i&&(xi(),ma(0,"span",0),Rt(1),ma(2,"span",1)(3,"span",2))},styles:['.mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%));flex-shrink:0;text-align:center;width:var(--mat-icon-button-state-layer-size, 40px);height:var(--mat-icon-button-state-layer-size, 40px);padding:calc(calc(var(--mat-icon-button-state-layer-size, 40px) - var(--mat-icon-button-icon-size, 24px)) / 2);font-size:var(--mat-icon-button-icon-size, 24px);color:var(--mat-icon-button-icon-color, var(--mat-sys-on-surface-variant));-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-icon-button:focus-visible>.mat-focus-indicator::before{content:"";border-radius:inherit}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface-variant) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-icon-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-icon-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-icon-button-touch-target-size, 48px);display:var(--mat-icon-button-touch-target-display, block);left:50%;width:var(--mat-icon-button-touch-target-size, 48px);transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-icon-button-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mat-icon-button-icon-size, 24px);height:var(--mat-icon-button-icon-size, 24px);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%))}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}\n',"@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}\n"],encapsulation:2,changeDetection:0})}return t})(),Bk=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ai]})}return t})();const wue=["matButton",""],xue=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],kue=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"],z4=new Map([["text",["mat-mdc-button"]],["filled",["mdc-button--unelevated","mat-mdc-unelevated-button"]],["elevated",["mdc-button--raised","mat-mdc-raised-button"]],["outlined",["mdc-button--outlined","mat-mdc-outlined-button"]],["tonal",["mat-tonal-button"]]]);let Ht=(()=>{class t extends U4{get appearance(){return this._appearance}set appearance(e){this.setAppearance(e||this._config?.defaultAppearance||"text")}_appearance=null;constructor(){super();const e=function Sue(t){return t.hasAttribute("mat-raised-button")?"elevated":t.hasAttribute("mat-stroked-button")?"outlined":t.hasAttribute("mat-flat-button")?"filled":t.hasAttribute("mat-button")?"text":null}(this._elementRef.nativeElement);e&&this.setAppearance(e)}setAppearance(e){if(e===this._appearance)return;const i=this._elementRef.nativeElement.classList,o=this._appearance?z4.get(this._appearance):null,r=z4.get(e);o&&i.remove(...o),i.add(...r),this._appearance=e}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["button","matButton",""],["a","matButton",""],["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""],["a","mat-button",""],["a","mat-raised-button",""],["a","mat-flat-button",""],["a","mat-stroked-button",""]],hostAttrs:[1,"mdc-button"],inputs:{appearance:[0,"matButton","appearance"]},exportAs:["matButton","matAnchor"],features:[_e],attrs:wue,ngContentSelectors:kue,decls:7,vars:4,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(i,o){1&i&&(xi(xue),ma(0,"span",0),Rt(1),Ms(2,"span",1),Rt(3,1),Bl(),Rt(4,2),ma(5,"span",2)(6,"span",3)),2&i&&ve("mdc-button__ripple",!o._isFab)("mdc-fab__ripple",o._isFab)},styles:['.mat-mdc-button-base{text-decoration:none}.mat-mdc-button-base .mat-icon{min-height:fit-content;flex-shrink:0}@media(hover: none){.mat-mdc-button-base:hover>span.mat-mdc-button-persistent-ripple::before{opacity:0}}.mdc-button{-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0);padding:0 8px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__label{position:relative}.mat-mdc-button{padding:0 var(--mat-button-text-horizontal-padding, 12px);height:var(--mat-button-text-container-height, 40px);font-family:var(--mat-button-text-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-text-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-text-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-text-label-text-transform);font-weight:var(--mat-button-text-label-text-weight, var(--mat-sys-label-large-weight))}.mat-mdc-button,.mat-mdc-button .mdc-button__ripple{border-radius:var(--mat-button-text-container-shape, var(--mat-sys-corner-full))}.mat-mdc-button:not(:disabled){color:var(--mat-button-text-label-text-color, var(--mat-sys-primary))}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-text-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-button-text-with-icon-horizontal-padding, 16px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-button-text-icon-spacing, 8px);margin-left:var(--mat-button-text-icon-offset, -4px)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-button-text-icon-offset, -4px);margin-left:var(--mat-button-text-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-text-icon-offset, -4px);margin-left:var(--mat-button-text-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-text-icon-spacing, 8px);margin-left:var(--mat-button-text-icon-offset, -4px)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-button-text-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-text-state-layer-color, var(--mat-sys-primary))}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-text-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-text-touch-target-size, 48px);display:var(--mat-button-text-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-unelevated-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-filled-container-height, 40px);font-family:var(--mat-button-filled-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-filled-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-filled-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-filled-label-text-transform);font-weight:var(--mat-button-filled-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-filled-horizontal-padding, 24px)}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-button-filled-icon-spacing, 8px);margin-left:var(--mat-button-filled-icon-offset, -8px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-button-filled-icon-offset, -8px);margin-left:var(--mat-button-filled-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-filled-icon-offset, -8px);margin-left:var(--mat-button-filled-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-filled-icon-spacing, 8px);margin-left:var(--mat-button-filled-icon-offset, -8px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-button-filled-ripple-color, color-mix(in srgb, var(--mat-sys-on-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-filled-state-layer-color, var(--mat-sys-on-primary))}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-filled-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-unelevated-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-unelevated-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-unelevated-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-filled-touch-target-size, 48px);display:var(--mat-button-filled-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mat-button-filled-label-text-color, var(--mat-sys-on-primary));background-color:var(--mat-button-filled-container-color, var(--mat-sys-primary))}.mat-mdc-unelevated-button,.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mat-button-filled-container-shape, var(--mat-sys-corner-full))}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-filled-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-filled-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);box-shadow:var(--mat-button-protected-container-elevation-shadow, var(--mat-sys-level1));height:var(--mat-button-protected-container-height, 40px);font-family:var(--mat-button-protected-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-protected-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-protected-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-protected-label-text-transform);font-weight:var(--mat-button-protected-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-protected-horizontal-padding, 24px)}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-button-protected-icon-spacing, 8px);margin-left:var(--mat-button-protected-icon-offset, -8px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-button-protected-icon-offset, -8px);margin-left:var(--mat-button-protected-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-protected-icon-offset, -8px);margin-left:var(--mat-button-protected-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-protected-icon-spacing, 8px);margin-left:var(--mat-button-protected-icon-offset, -8px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-button-protected-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-protected-state-layer-color, var(--mat-sys-primary))}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-protected-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-raised-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-raised-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-raised-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-protected-touch-target-size, 48px);display:var(--mat-button-protected-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-raised-button:not(:disabled){color:var(--mat-button-protected-label-text-color, var(--mat-sys-primary));background-color:var(--mat-button-protected-container-color, var(--mat-sys-surface))}.mat-mdc-raised-button,.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mat-button-protected-container-shape, var(--mat-sys-corner-full))}@media(hover: hover){.mat-mdc-raised-button:hover{box-shadow:var(--mat-button-protected-hover-container-elevation-shadow, var(--mat-sys-level2))}}.mat-mdc-raised-button:focus{box-shadow:var(--mat-button-protected-focus-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mat-button-protected-pressed-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-protected-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-protected-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mat-button-protected-disabled-container-elevation-shadow, var(--mat-sys-level0))}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-outlined-container-height, 40px);font-family:var(--mat-button-outlined-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-outlined-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-outlined-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-outlined-label-text-transform);font-weight:var(--mat-button-outlined-label-text-weight, var(--mat-sys-label-large-weight));border-radius:var(--mat-button-outlined-container-shape, var(--mat-sys-corner-full));border-width:var(--mat-button-outlined-outline-width, 1px);padding:0 var(--mat-button-outlined-horizontal-padding, 24px)}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-button-outlined-icon-spacing, 8px);margin-left:var(--mat-button-outlined-icon-offset, -8px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-button-outlined-icon-offset, -8px);margin-left:var(--mat-button-outlined-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-outlined-icon-offset, -8px);margin-left:var(--mat-button-outlined-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-outlined-icon-spacing, 8px);margin-left:var(--mat-button-outlined-icon-offset, -8px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-button-outlined-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-outlined-state-layer-color, var(--mat-sys-primary))}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-outlined-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-outlined-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-outlined-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-outlined-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-outlined-touch-target-size, 48px);display:var(--mat-button-outlined-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-outlined-button:not(:disabled){color:var(--mat-button-outlined-label-text-color, var(--mat-sys-primary));border-color:var(--mat-button-outlined-outline-color, var(--mat-sys-outline))}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-outlined-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:var(--mat-button-outlined-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-tonal-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-tonal-container-height, 40px);font-family:var(--mat-button-tonal-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-tonal-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-tonal-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-tonal-label-text-transform);font-weight:var(--mat-button-tonal-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-tonal-horizontal-padding, 24px)}.mat-tonal-button:not(:disabled){color:var(--mat-button-tonal-label-text-color, var(--mat-sys-on-secondary-container));background-color:var(--mat-button-tonal-container-color, var(--mat-sys-secondary-container))}.mat-tonal-button,.mat-tonal-button .mdc-button__ripple{border-radius:var(--mat-button-tonal-container-shape, var(--mat-sys-corner-full))}.mat-tonal-button[disabled],.mat-tonal-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-tonal-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-tonal-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-tonal-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-tonal-button>.mat-icon{margin-right:var(--mat-button-tonal-icon-spacing, 8px);margin-left:var(--mat-button-tonal-icon-offset, -8px)}[dir=rtl] .mat-tonal-button>.mat-icon{margin-right:var(--mat-button-tonal-icon-offset, -8px);margin-left:var(--mat-button-tonal-icon-spacing, 8px)}.mat-tonal-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-tonal-icon-offset, -8px);margin-left:var(--mat-button-tonal-icon-spacing, 8px)}[dir=rtl] .mat-tonal-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-tonal-icon-spacing, 8px);margin-left:var(--mat-button-tonal-icon-offset, -8px)}.mat-tonal-button .mat-ripple-element{background-color:var(--mat-button-tonal-ripple-color, color-mix(in srgb, var(--mat-sys-on-secondary-container) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-tonal-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-tonal-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-tonal-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-tonal-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-tonal-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-tonal-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-tonal-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-tonal-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-tonal-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-tonal-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-tonal-touch-target-size, 48px);display:var(--mat-button-tonal-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button,.mat-tonal-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before,.mat-tonal-button .mat-mdc-button-ripple,.mat-tonal-button .mat-mdc-button-persistent-ripple,.mat-tonal-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-tonal-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before,.mat-tonal-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-button .mat-icon,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-unelevated-button .mat-icon,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-raised-button .mat-icon,.mat-mdc-outlined-button .mdc-button__label,.mat-mdc-outlined-button .mat-icon,.mat-tonal-button .mdc-button__label,.mat-tonal-button .mat-icon{z-index:1;position:relative}.mat-mdc-button .mat-focus-indicator,.mat-mdc-unelevated-button .mat-focus-indicator,.mat-mdc-raised-button .mat-focus-indicator,.mat-mdc-outlined-button .mat-focus-indicator,.mat-tonal-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-unelevated-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-raised-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-outlined-button:focus-visible>.mat-focus-indicator::before,.mat-tonal-button:focus-visible>.mat-focus-indicator::before{content:"";border-radius:inherit}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable,.mat-tonal-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon,.mat-tonal-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px}.mat-mdc-unelevated-button .mat-focus-indicator::before,.mat-tonal-button .mat-focus-indicator::before,.mat-mdc-raised-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px)*-1)}\n',"@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}\n"],encapsulation:2,changeDetection:0})}return t})(),j4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[Bk,ai]})}return t})();function Tue(t,n){if(1&t){const e=re();h(0,"div",1)(1,"button",2),F("click",function(){return V(e),H(y().action())}),p(2),u()()}if(2&t){const e=y();c(2),D(" ",e.data.action," ")}}const Eue=["label"];function Pue(t,n){}const Iue=Math.pow(2,31)-1;class Vb{_overlayRef;instance;containerInstance;_afterDismissed=new be;_afterOpened=new be;_onAction=new be;_durationTimeoutId;_dismissedByAction=!1;constructor(n,e){this._overlayRef=e,this.containerInstance=n,n._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(n){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(n,Iue))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}}const Vk=new Z("MatSnackBarData");class Hb{politeness="polite";announcementMessage="";viewContainerRef;duration=0;panelClass;direction;data=null;horizontalPosition="center";verticalPosition="bottom"}let $4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"]})}return t})(),W4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"]})}return t})(),G4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"]})}return t})(),q4=(()=>{class t{snackBarRef=T(Vb);data=T(Vk);constructor(){}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions",""],["matButton","","matSnackBarAction","",3,"click"]],template:function(i,o){1&i&&(h(0,"div",0),p(1),u(),x(2,Tue,3,1,"div",1)),2&i&&(c(),D(" ",o.data.message,"\n"),c(),k(o.hasAction?2:-1))},dependencies:[Ht,$4,W4,G4],styles:[".mat-mdc-simple-snack-bar{display:flex}.mat-mdc-simple-snack-bar .mat-mdc-snack-bar-label{max-height:50vh;overflow:auto}\n"],encapsulation:2,changeDetection:0})}return t})();const Hk="_mat-snack-bar-enter",Uk="_mat-snack-bar-exit";let K4=(()=>{class t extends kb{_ngZone=T(Ce);_elementRef=T(Ne);_changeDetectorRef=T(Dt);_platform=T(Zn);_animationsDisabled=hi();snackBarConfig=T(Hb);_document=T(et);_trackedModals=new Set;_enterFallback;_exitFallback;_injector=T(Ue);_announceDelay=150;_announceTimeoutId;_destroyed=!1;_portalOutlet;_onAnnounce=new be;_onExit=new be;_onEnter=new be;_animationState="void";_live;_label;_role;_liveElementId=T(si).getId("mat-snack-bar-container-live-");constructor(){super();const e=this.snackBarConfig;this._live="assertive"!==e.politeness||e.announcementMessage?"off"===e.politeness?"off":"polite":"assertive",this._platform.FIREFOX&&("polite"===this._live&&(this._role="status"),"assertive"===this._live&&(this._role="alert"))}attachComponentPortal(e){this._assertNotAttached();const i=this._portalOutlet.attachComponentPortal(e);return this._afterPortalAttached(),i}attachTemplatePortal(e){this._assertNotAttached();const i=this._portalOutlet.attachTemplatePortal(e);return this._afterPortalAttached(),i}attachDomPortal=e=>{this._assertNotAttached();const i=this._portalOutlet.attachDomPortal(e);return this._afterPortalAttached(),i};onAnimationEnd(e){e===Uk?this._completeExit():e===Hk&&(clearTimeout(this._enterFallback),this._ngZone.run(()=>{this._onEnter.next(),this._onEnter.complete()}))}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce(),this._animationsDisabled?Wi(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(Hk)))},{injector:this._injector}):(clearTimeout(this._enterFallback),this._enterFallback=setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-snack-bar-fallback-visible"),this.onAnimationEnd(Hk)},200)))}exit(){return this._destroyed?se(void 0):(this._ngZone.run(()=>{this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._elementRef.nativeElement.setAttribute("mat-exit",""),clearTimeout(this._announceTimeoutId),this._animationsDisabled?Wi(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(Uk)))},{injector:this._injector}):(clearTimeout(this._exitFallback),this._exitFallback=setTimeout(()=>this.onAnimationEnd(Uk),200))}),this._onExit)}ngOnDestroy(){this._destroyed=!0,this._clearFromModals(),this._completeExit()}_completeExit(){clearTimeout(this._exitFallback),queueMicrotask(()=>{this._onExit.next(),this._onExit.complete()})}_afterPortalAttached(){const e=this._elementRef.nativeElement,i=this.snackBarConfig.panelClass;i&&(Array.isArray(i)?i.forEach(s=>e.classList.add(s)):e.classList.add(i)),this._exposeToModals();const o=this._label.nativeElement,r="mdc-snackbar__label";o.classList.toggle(r,!o.querySelector(`.${r}`))}_exposeToModals(){const e=this._liveElementId,i=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal="true"]');for(let o=0;o{const i=e.getAttribute("aria-owns");if(i){const o=i.replace(this._liveElementId,"").trim();o.length>0?e.setAttribute("aria-owns",o):e.removeAttribute("aria-owns")}}),this._trackedModals.clear()}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{if(this._destroyed)return;const e=this._elementRef.nativeElement,i=e.querySelector("[aria-hidden]"),o=e.querySelector("[aria-live]");if(i&&o){let r=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&i.contains(document.activeElement)&&(r=document.activeElement),i.removeAttribute("aria-hidden"),o.appendChild(i),r?.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-snack-bar-container"]],viewQuery:function(i,o){if(1&i&&st(ic,7)(Eue,7),2&i){let r;fe(r=pe())&&(o._portalOutlet=r.first),fe(r=pe())&&(o._label=r.first)}},hostAttrs:[1,"mdc-snackbar","mat-mdc-snack-bar-container"],hostVars:6,hostBindings:function(i,o){1&i&&F("animationend",function(s){return o.onAnimationEnd(s.animationName)})("animationcancel",function(s){return o.onAnimationEnd(s.animationName)}),2&i&&ve("mat-snack-bar-container-enter","visible"===o._animationState)("mat-snack-bar-container-exit","hidden"===o._animationState)("mat-snack-bar-container-animations-enabled",!o._animationsDisabled)},features:[_e],decls:6,vars:3,consts:[["label",""],[1,"mdc-snackbar__surface","mat-mdc-snackbar-surface"],[1,"mat-mdc-snack-bar-label"],["aria-hidden","true"],["cdkPortalOutlet",""]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2,0)(3,"div",3),rt(4,Pue,0,0,"ng-template",4),u(),L(5,"div"),u()()),2&i&&(c(5),We("aria-live",o._live)("role",o._role)("id",o._liveElementId))},dependencies:[ic],styles:["@keyframes _mat-snack-bar-enter{from{transform:scale(0.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes _mat-snack-bar-exit{from{opacity:1}to{opacity:0}}.mat-mdc-snack-bar-container{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:8px}.mat-mdc-snack-bar-handset .mat-mdc-snack-bar-container{width:100vw}.mat-snack-bar-container-animations-enabled{opacity:0}.mat-snack-bar-container-animations-enabled.mat-snack-bar-fallback-visible{opacity:1}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-enter{animation:_mat-snack-bar-enter 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-exit{animation:_mat-snack-bar-exit 75ms cubic-bezier(0.4, 0, 1, 1) forwards}.mat-mdc-snackbar-surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;padding-left:0;padding-right:8px}[dir=rtl] .mat-mdc-snackbar-surface{padding-right:0;padding-left:8px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{min-width:344px;max-width:672px}.mat-mdc-snack-bar-handset .mat-mdc-snackbar-surface{width:100%;min-width:0}@media(forced-colors: active){.mat-mdc-snackbar-surface{outline:solid 1px}}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{color:var(--mat-snack-bar-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-snack-bar-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-snack-bar-container-color, var(--mat-sys-inverse-surface))}.mdc-snackbar__label{width:100%;flex-grow:1;box-sizing:border-box;margin:0;padding:14px 8px 14px 16px}[dir=rtl] .mdc-snackbar__label{padding-left:8px;padding-right:16px}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-family:var(--mat-snack-bar-supporting-text-font, var(--mat-sys-body-medium-font));font-size:var(--mat-snack-bar-supporting-text-size, var(--mat-sys-body-medium-size));font-weight:var(--mat-snack-bar-supporting-text-weight, var(--mat-sys-body-medium-weight));line-height:var(--mat-snack-bar-supporting-text-line-height, var(--mat-sys-body-medium-line-height))}.mat-mdc-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled).mat-unthemed{color:var(--mat-snack-bar-button-color, var(--mat-sys-inverse-primary))}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){--mat-button-text-state-layer-color: currentColor;--mat-button-text-ripple-color: currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}\n"],encapsulation:2})}return t})();const Y4=new Z("mat-snack-bar-default-options",{providedIn:"root",factory:()=>new Hb});let X4=(()=>{class t{_live=T(m4);_injector=T(Ue);_breakpointObserver=T(a4);_parentSnackBar=T(t,{optional:!0,skipSelf:!0});_defaultConfig=T(Y4);_animationsDisabled=hi();_snackBarRefAtThisLevel=null;simpleSnackBarComponent=q4;snackBarContainerComponent=K4;handsetCssClass="mat-mdc-snack-bar-handset";get _openedSnackBarRef(){const e=this._parentSnackBar;return e?e._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(e){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=e:this._snackBarRefAtThisLevel=e}constructor(){}openFromComponent(e,i){return this._attach(e,i)}openFromTemplate(e,i){return this._attach(e,i)}open(e,i="",o){const r={...this._defaultConfig,...o};return r.data={message:e,action:i},r.announcementMessage===e&&(r.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,r)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(e,i){const r=Ue.create({parent:i&&i.viewContainerRef&&i.viewContainerRef.injector||this._injector,providers:[{provide:Hb,useValue:i}]}),s=new nu(this.snackBarContainerComponent,i.viewContainerRef,r),a=e.attach(s);return a.instance.snackBarConfig=i,a.instance}_attach(e,i){const o={...new Hb,...this._defaultConfig,...i},r=this._createOverlay(o),s=this._attachSnackBarContainer(r,o),a=new Vb(s,r);if(e instanceof Oi){const l=new nc(e,null,{$implicit:o.data,snackBarRef:a});a.instance=s.attachTemplatePortal(l)}else{const l=this._createInjector(o,a),d=new nu(e,void 0,l),f=s.attachComponentPortal(d);a.instance=f.instance}return this._breakpointObserver.observe("(max-width: 599.98px) and (orientation: portrait)").pipe(ln(r.detachments())).subscribe(l=>{r.overlayElement.classList.toggle(this.handsetCssClass,l.matches)}),o.announcementMessage&&s._onAnnounce.subscribe(()=>{this._live.announce(o.announcementMessage,o.politeness)}),this._animateSnackBar(a,o),this._openedSnackBarRef=a,this._openedSnackBarRef}_animateSnackBar(e,i){e.afterDismissed().subscribe(()=>{this._openedSnackBarRef==e&&(this._openedSnackBarRef=null),i.announcementMessage&&this._live.clear()}),i.duration&&i.duration>0&&e.afterOpened().subscribe(()=>e._dismissAfter(i.duration)),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{e.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):e.containerInstance.enter()}_createOverlay(e){const i=new Wf;i.direction=e.direction;const o=Pb(),r="rtl"===e.direction,s="left"===e.horizontalPosition||"start"===e.horizontalPosition&&!r||"end"===e.horizontalPosition&&r,a=!s&&"center"!==e.horizontalPosition;return s?o.left("0"):a?o.right("0"):o.centerHorizontally(),"top"===e.verticalPosition?o.top("0"):o.bottom("0"),i.positionStrategy=o,i.disableAnimations=this._animationsDisabled,ou(this._injector,i)}_createInjector(e,i){return Ue.create({parent:e&&e.viewContainerRef&&e.viewContainerRef.injector||this._injector,providers:[{provide:Vb,useValue:i},{provide:Vk,useValue:e.data}]})}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Oue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[X4],imports:[ru,Uf,j4,q4,ai]})}return t})();function du(...t){const n=dN(t),{args:e,keys:i}=EN(t),o=new zt(r=>{const{length:s}=e;if(!s)return void r.complete();const a=new Array(s);let l=s,d=s;for(let f=0;f{m||(m=!0,d--),a[f]=g},()=>l--,void 0,()=>{(!l||!m)&&(d||r.next(i?IN(i,a):a),r.complete())}))}});return n?o.pipe(PN(n)):o}function Z4(t={}){const{connector:n=()=>new be,resetOnError:e=!0,resetOnComplete:i=!0,resetOnRefCountZero:o=!0}=t;return r=>{let s,a,l,d=0,f=!1,m=!1;const g=()=>{a?.unsubscribe(),a=void 0},b=()=>{g(),s=l=void 0,f=m=!1},w=()=>{const M=s;b(),M?.unsubscribe()};return En((M,E)=>{d++,!m&&!f&&g();const I=l=l??n();E.add(()=>{d--,0===d&&!m&&!f&&(a=zk(w,o))}),I.subscribe(E),!s&&d>0&&(s=new Hu({next:A=>I.next(A),error:A=>{m=!0,g(),a=zk(b,e,A),I.error(A)},complete:()=>{f=!0,g(),a=zk(b,i),I.complete()}}),qi(M).subscribe(s))})(r)}}function zk(t,n,...e){if(!0===n)return void t();if(!1===n)return;const i=new Hu({next:()=>{i.unsubscribe(),t()}});return qi(n(...e)).subscribe(i)}function Q4(t){return Error(`Unable to find icon with the name "${t}"`)}function J4(t){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${t}".`)}function e5(t){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${t}".`)}class lc{url;svgText;options;svgElement=null;constructor(n,e,i){this.url=n,this.svgText=e,this.options=i}}let Rue=(()=>{class t{_httpClient;_sanitizer;_errorHandler;_document;_svgIconConfigs=new Map;_iconSetConfigs=new Map;_cachedIconsByUrl=new Map;_inProgressUrlFetches=new Map;_fontCssClassesByAlias=new Map;_resolvers=[];_defaultFontSetClass=["material-icons","mat-ligature-font"];constructor(e,i,o,r){this._httpClient=e,this._sanitizer=i,this._errorHandler=r,this._document=o}addSvgIcon(e,i,o){return this.addSvgIconInNamespace("",e,i,o)}addSvgIconLiteral(e,i,o){return this.addSvgIconLiteralInNamespace("",e,i,o)}addSvgIconInNamespace(e,i,o,r){return this._addSvgIconConfig(e,i,new lc(o,null,r))}addSvgIconResolver(e){return this._resolvers.push(e),this}addSvgIconLiteralInNamespace(e,i,o,r){const s=this._sanitizer.sanitize(yi.HTML,o);if(!s)throw e5(o);const a=su(s);return this._addSvgIconConfig(e,i,new lc("",a,r))}addSvgIconSet(e,i){return this.addSvgIconSetInNamespace("",e,i)}addSvgIconSetLiteral(e,i){return this.addSvgIconSetLiteralInNamespace("",e,i)}addSvgIconSetInNamespace(e,i,o){return this._addSvgIconSetConfig(e,new lc(i,null,o))}addSvgIconSetLiteralInNamespace(e,i,o){const r=this._sanitizer.sanitize(yi.HTML,i);if(!r)throw e5(i);const s=su(r);return this._addSvgIconSetConfig(e,new lc("",s,o))}registerFontClassAlias(e,i=e){return this._fontCssClassesByAlias.set(e,i),this}classNameForFontAlias(e){return this._fontCssClassesByAlias.get(e)||e}setDefaultFontSetClass(...e){return this._defaultFontSetClass=e,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(e){const i=this._sanitizer.sanitize(yi.RESOURCE_URL,e);if(!i)throw J4(e);const o=this._cachedIconsByUrl.get(i);return o?se(Ub(o)):this._loadSvgIconFromConfig(new lc(e,null)).pipe(ui(r=>this._cachedIconsByUrl.set(i,r)),De(r=>Ub(r)))}getNamedSvgIcon(e,i=""){const o=t5(i,e);let r=this._svgIconConfigs.get(o);if(r)return this._getSvgFromConfig(r);if(r=this._getIconConfigFromResolvers(i,e),r)return this._svgIconConfigs.set(o,r),this._getSvgFromConfig(r);const s=this._iconSetConfigs.get(i);return s?this._getSvgFromIconSetConfigs(e,s):Cr(Q4(o))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(e){return e.svgText?se(Ub(this._svgElementFromConfig(e))):this._loadSvgIconFromConfig(e).pipe(De(i=>Ub(i)))}_getSvgFromIconSetConfigs(e,i){const o=this._extractIconWithNameFromAnySet(e,i);return o?se(o):du(i.filter(s=>!s.svgText).map(s=>this._loadSvgIconSetFromConfig(s).pipe(ii(a=>{const d=`Loading icon set URL: ${this._sanitizer.sanitize(yi.RESOURCE_URL,s.url)} failed: ${a.message}`;return this._errorHandler.handleError(new Error(d)),se(null)})))).pipe(De(()=>{const s=this._extractIconWithNameFromAnySet(e,i);if(!s)throw Q4(e);return s}))}_extractIconWithNameFromAnySet(e,i){for(let o=i.length-1;o>=0;o--){const r=i[o];if(r.svgText&&r.svgText.toString().indexOf(e)>-1){const s=this._svgElementFromConfig(r),a=this._extractSvgIconFromSet(s,e,r.options);if(a)return a}}return null}_loadSvgIconFromConfig(e){return this._fetchIcon(e).pipe(ui(i=>e.svgText=i),De(()=>this._svgElementFromConfig(e)))}_loadSvgIconSetFromConfig(e){return e.svgText?se(null):this._fetchIcon(e).pipe(ui(i=>e.svgText=i))}_extractSvgIconFromSet(e,i,o){const r=e.querySelector(`[id="${i}"]`);if(!r)return null;const s=r.cloneNode(!0);if(s.removeAttribute("id"),"svg"===s.nodeName.toLowerCase())return this._setSvgAttributes(s,o);if("symbol"===s.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(s),o);const a=this._svgElementFromString(su(""));return a.appendChild(s),this._setSvgAttributes(a,o)}_svgElementFromString(e){const i=this._document.createElement("DIV");i.innerHTML=e;const o=i.querySelector("svg");if(!o)throw Error(" tag not found");return o}_toSvgElement(e){const i=this._svgElementFromString(su("")),o=e.attributes;for(let r=0;rsu(d)),j_(()=>this._inProgressUrlFetches.delete(s)),Z4());return this._inProgressUrlFetches.set(s,l),l}_addSvgIconConfig(e,i,o){return this._svgIconConfigs.set(t5(e,i),o),this}_addSvgIconSetConfig(e,i){const o=this._iconSetConfigs.get(e);return o?o.push(i):this._iconSetConfigs.set(e,[i]),this}_svgElementFromConfig(e){if(!e.svgElement){const i=this._svgElementFromString(e.svgText);this._setSvgAttributes(i,e.options),e.svgElement=i}return e.svgElement}_getIconConfigFromResolvers(e,i){for(let o=0;o{const t=T(et),n=t?t.location:null;return{getPathname:()=>n?n.pathname+n.search:""}}}),n5=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],Vue=n5.map(t=>`[${t}]`).join(", "),Hue=/^url\(['"]?#(.*?)['"]?\)$/;let Ae=(()=>{class t{_elementRef=T(Ne);_iconRegistry=T(Rue);_location=T(Bue);_errorHandler=T(hl);_defaultColor;get color(){return this._color||this._defaultColor}set color(e){this._color=e}_color;inline=!1;get svgIcon(){return this._svgIcon}set svgIcon(e){e!==this._svgIcon&&(e?this._updateSvgIcon(e):this._svgIcon&&this._clearSvgElement(),this._svgIcon=e)}_svgIcon;get fontSet(){return this._fontSet}set fontSet(e){const i=this._cleanupFontValue(e);i!==this._fontSet&&(this._fontSet=i,this._updateFontIconClasses())}_fontSet;get fontIcon(){return this._fontIcon}set fontIcon(e){const i=this._cleanupFontValue(e);i!==this._fontIcon&&(this._fontIcon=i,this._updateFontIconClasses())}_fontIcon;_previousFontSetClass=[];_previousFontIconClass;_svgName=null;_svgNamespace=null;_previousPath;_elementsWithExternalReferences;_currentIconFetch=gt.EMPTY;constructor(){const e=T(new tf("aria-hidden"),{optional:!0}),i=T(Lue,{optional:!0});i&&(i.color&&(this.color=this._defaultColor=i.color),i.fontSet&&(this.fontSet=i.fontSet)),e||this._elementRef.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(e){if(!e)return["",""];const i=e.split(":");switch(i.length){case 1:return["",i[0]];case 2:return i;default:throw Error(`Invalid icon name: "${e}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const e=this._elementsWithExternalReferences;if(e&&e.size){const i=this._location.getPathname();i!==this._previousPath&&(this._previousPath=i,this._prependPathToReferences(i))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(e){this._clearSvgElement();const i=this._location.getPathname();this._previousPath=i,this._cacheChildrenWithExternalReferences(e),this._prependPathToReferences(i),this._elementRef.nativeElement.appendChild(e)}_clearSvgElement(){const e=this._elementRef.nativeElement;let i=e.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();i--;){const o=e.childNodes[i];(1!==o.nodeType||"svg"===o.nodeName.toLowerCase())&&o.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const e=this._elementRef.nativeElement,i=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(o=>o.length>0);this._previousFontSetClass.forEach(o=>e.classList.remove(o)),i.forEach(o=>e.classList.add(o)),this._previousFontSetClass=i,this.fontIcon!==this._previousFontIconClass&&!i.includes("mat-ligature-font")&&(this._previousFontIconClass&&e.classList.remove(this._previousFontIconClass),this.fontIcon&&e.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(e){return"string"==typeof e?e.trim().split(" ")[0]:e}_prependPathToReferences(e){const i=this._elementsWithExternalReferences;i&&i.forEach((o,r)=>{o.forEach(s=>{r.setAttribute(s.name,`url('${e}#${s.value}')`)})})}_cacheChildrenWithExternalReferences(e){const i=e.querySelectorAll(Vue),o=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let r=0;r{const a=i[r],l=a.getAttribute(s),d=l?l.match(Hue):null;if(d){let f=o.get(a);f||(f=[],o.set(a,f)),f.push({name:s,value:d[1]})}})}_updateSvgIcon(e){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),e){const[i,o]=this._splitIconName(e);i&&(this._svgNamespace=i),o&&(this._svgName=o),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(o,i).pipe(wn(1)).subscribe(r=>this._setSvgElement(r),r=>{this._errorHandler.handleError(new Error(`Error retrieving icon ${i}:${o}! ${r.message}`))})}}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:10,hostBindings:function(i,o){2&i&&(We("data-mat-icon-type",o._usingFontIcon()?"font":"svg")("data-mat-icon-name",o._svgName||o.fontIcon)("data-mat-icon-namespace",o._svgNamespace||o.fontSet)("fontIcon",o._usingFontIcon()?o.fontIcon:null),Ge(o.color?"mat-"+o.color:""),ve("mat-icon-inline",o.inline)("mat-icon-no-color","primary"!==o.color&&"accent"!==o.color&&"warn"!==o.color))},inputs:{color:"color",inline:[2,"inline","inline",Te],svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],ngContentSelectors:Nue,decls:1,vars:0,template:function(i,o){1&i&&(xi(),Rt(0))},styles:["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color, inherit)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}\n"],encapsulation:2,changeDetection:0})}return t})(),Uue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ai]})}return t})();function jk(t,n,e){let i,o=!1;return t&&"object"==typeof t?({bufferSize:i=1/0,windowTime:n=1/0,refCount:o=!1,scheduler:e}=t):i=t??1/0,Z4({connector:()=>new co(i,n,e),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:o})}class $k{}let i5=(()=>{class t{handle(e){return e.key}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class zb{}let o5=(()=>{class t extends zb{compile(e,i){return e}compileTranslations(e,i){return e}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class Yf{}let r5=(()=>{class t extends Yf{getTranslation(e){return se({})}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();function jb(t,n){if(t===n)return!0;if(null===t||null===n)return!1;if(t!=t&&n!=n)return!0;const e=typeof t;let o;if(e==typeof n&&"object"==e)if(Array.isArray(t)){if(!Array.isArray(n))return!1;if((o=t.length)==n.length){for(let r=0;rWb(n));if(Zr(t)){const n={};return Object.keys(t).forEach(e=>{n[e]=Wb(t[e])}),n}return t}function Wk(t,n){if(!Xf(t))return Wb(n);const e=Wb(t);return Xf(e)&&Xf(n)&&Object.keys(n).forEach(i=>{Zr(n[i])?i in t?e[i]=Wk(t[i],n[i]):Object.assign(e,{[i]:n[i]}):Object.assign(e,{[i]:n[i]})}),e}function a5(t,n){const e=n.split(".");n="";do{n+=e.shift();const i=!e.length;if(Ta(t)){if(Zr(t)&&s5(t[n])&&(Zr(t[n])||cc(t[n])||i)){t=t[n],n="";continue}if(cc(t)){const o=parseInt(n,10);if(s5(t[o])&&(Zr(t[o])||cc(t[o])||i)){t=t[o],n="";continue}}}i?t=void 0:n+="."}while(e.length);return t}class Gb{}let l5=(()=>{class t extends Gb{templateMatcher=/{{\s?([^{}\s]*)\s?}}/g;interpolate(e,i){return $b(e)?this.interpolateString(e,i):function zue(t){return"function"==typeof t}(e)?this.interpolateFunction(e,i):void 0}interpolateFunction(e,i){return e(i)}interpolateString(e,i){return i?e.replace(this.templateMatcher,(o,r)=>{const s=this.getInterpolationReplacement(i,r);return void 0!==s?s:o}):e}getInterpolationReplacement(e,i){return this.formatValue(a5(e,i))}formatValue(e){return $b(e)?e:"number"==typeof e||"boolean"==typeof e?e.toString():null===e?"null":cc(e)?e.join(", "):Xf(e)?"function"==typeof e.toString&&e.toString!==Object.prototype.toString?e.toString():JSON.stringify(e):void 0}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),Gk=(()=>{class t{_onTranslationChange=new be;_onLangChange=new be;_onFallbackLangChange=new be;fallbackLang=null;currentLang;translations={};languages=[];getTranslations(e){return this.translations[e]}setTranslations(e,i,o){this.translations[e]=o&&this.hasTranslationFor(e)?Wk(this.translations[e],i):i,this.addLanguages([e]),this._onTranslationChange.next({lang:e,translations:this.getTranslations(e)})}getLanguages(){return this.languages}getCurrentLang(){return this.currentLang}getFallbackLang(){return this.fallbackLang}setFallbackLang(e,i=!0){this.fallbackLang=e,i&&this._onFallbackLangChange.next({lang:e,translations:this.translations[e]})}setCurrentLang(e,i=!0){this.currentLang=e,i&&this._onLangChange.next({lang:e,translations:this.translations[e]})}get onTranslationChange(){return this._onTranslationChange.asObservable()}get onLangChange(){return this._onLangChange.asObservable()}get onFallbackLangChange(){return this._onFallbackLangChange.asObservable()}addLanguages(e){this.languages=Array.from(new Set([...this.languages,...e]))}hasTranslationFor(e){return typeof this.translations[e]<"u"}deleteTranslations(e){delete this.translations[e]}getTranslation(e){let i=this.getValue(this.currentLang,e);return void 0===i&&null!=this.fallbackLang&&this.fallbackLang!==this.currentLang&&(i=this.getValue(this.fallbackLang,e)),i}getValue(e,i){return a5(this.getTranslations(e),i)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const qk=new Z("TRANSLATE_CONFIG"),Zf=t=>$r(t)?t:se(t);let Xo=(()=>{class t{loadingTranslations;pending=!1;_translationRequests={};lastUseLanguage=null;currentLoader=T(Yf);compiler=T(zb);parser=T(Gb);missingTranslationHandler=T($k);store=T(Gk);extend=!1;get onTranslationChange(){return this.store.onTranslationChange}get onLangChange(){return this.store.onLangChange}get onFallbackLangChange(){return this.store.onFallbackLangChange}get onDefaultLangChange(){return this.store.onFallbackLangChange}constructor(){const e={extend:!1,fallbackLang:null,...T(qk,{optional:!0})};e.lang&&this.use(e.lang),e.fallbackLang&&this.setFallbackLang(e.fallbackLang),e.extend&&(this.extend=!0)}setFallbackLang(e){this.getFallbackLang()||this.store.setFallbackLang(e,!1);const i=this.loadOrExtendLanguage(e);return $r(i)?(i.pipe(wn(1)).subscribe({next:()=>{this.store.setFallbackLang(e)},error:()=>{}}),i):(this.store.setFallbackLang(e),se(this.store.getTranslations(e)))}use(e){this.lastUseLanguage=e,this.getCurrentLang()||this.store.setCurrentLang(e,!1);const i=this.loadOrExtendLanguage(e);return $r(i)?(i.pipe(wn(1)).subscribe({next:()=>{this.changeLang(e)},error:()=>{}}),i):(this.changeLang(e),se(this.store.getTranslations(e)))}loadOrExtendLanguage(e){if(!this.store.hasTranslationFor(e)||this.extend)return this._translationRequests[e]=this._translationRequests[e]||this.loadAndCompileTranslations(e),this._translationRequests[e]}changeLang(e){e===this.lastUseLanguage&&this.store.setCurrentLang(e)}getCurrentLang(){return this.store.getCurrentLang()}loadAndCompileTranslations(e){this.pending=!0;const i=this.currentLoader.getTranslation(e).pipe(jk(1),wn(1));return this.loadingTranslations=i.pipe(De(o=>this.compiler.compileTranslations(o,e)),jk(1),wn(1)),this.loadingTranslations.subscribe({next:o=>{this.store.setTranslations(e,o,this.extend),this.pending=!1},error:o=>{this.pending=!1}}),i}setTranslation(e,i,o=!1){const r=this.compiler.compileTranslations(i,e);this.store.setTranslations(e,r,o||this.extend)}getLangs(){return this.store.getLanguages()}addLangs(e){this.store.addLanguages(e)}getParsedResultForKey(e,i){const o=this.getTextToInterpolate(e);if(Ta(o))return this.runInterpolation(o,i);const r=this.missingTranslationHandler.handle({key:e,translateService:this,...void 0!==i&&{interpolateParams:i}});return void 0!==r?r:e}getFallbackLang(){return this.store.getFallbackLang()}getTextToInterpolate(e){return this.store.getTranslation(e)}runInterpolation(e,i){if(Ta(e))return cc(e)?this.runInterpolationOnArray(e,i):Zr(e)?this.runInterpolationOnDict(e,i):this.parser.interpolate(e,i)}runInterpolationOnArray(e,i){return e.map(o=>this.runInterpolation(o,i))}runInterpolationOnDict(e,i){const o={};for(const r in e){const s=this.runInterpolation(e[r],i);void 0!==s&&(o[r]=s)}return o}getParsedResult(e,i){return e instanceof Array?this.getParsedResultForArray(e,i):this.getParsedResultForKey(e,i)}getParsedResultForArray(e,i){const o={};let r=!1;for(const a of e)o[a]=this.getParsedResultForKey(a,i),r=r||$r(o[a]);return r?du(e.map(a=>Zf(o[a]))).pipe(De(a=>{const l={};return a.forEach((d,f)=>{l[e[f]]=d}),l})):o}get(e,i){if(!Ta(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return this.pending?this.loadingTranslations.pipe(mf(()=>Zf(this.getParsedResult(e,i)))):Zf(this.getParsedResult(e,i))}getStreamOnTranslationChange(e,i){if(!Ta(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return Fs(Sa(()=>this.get(e,i)),this.onTranslationChange.pipe(wt(()=>{const o=this.getParsedResult(e,i);return Zf(o)})))}stream(e,i){if(!Ta(e)||!e.length)throw new Error('Parameter "key" required');return Fs(Sa(()=>this.get(e,i)),this.onLangChange.pipe(wt(()=>{const o=this.getParsedResult(e,i);return Zf(o)})))}instant(e,i){if(!Ta(e)||0===e.length)throw new Error('Parameter "key" is required and cannot be empty');const o=this.getParsedResult(e,i);return $r(o)?Array.isArray(e)?e.reduce((r,s)=>(r[s]=s,r),{}):e:o}set(e,i,o=this.getCurrentLang()){this.store.setTranslations(o,function jue(t,n,e){return Wk(t,function $ue(t,n){return t.split(".").reduceRight((e,i)=>({[i]:e}),n)}(n,e))}(this.store.getTranslations(o),e,$b(i)?this.compiler.compile(i,o):this.compiler.compileTranslations(i,o)),!1)}reloadLang(e){return this.resetLang(e),this.loadAndCompileTranslations(e)}resetLang(e){delete this._translationRequests[e],this.store.deleteTranslations(e)}static getBrowserLang(){if(typeof window>"u"||!window.navigator)return;const e=this.getBrowserCultureLang();return e?e.split(/[-_]/)[0]:void 0}static getBrowserCultureLang(){if(!(typeof window>"u"||typeof window.navigator>"u"))return window.navigator.languages?window.navigator.languages[0]:window.navigator.language||window.navigator.browserLanguage||window.navigator.userLanguage}getBrowserLang(){return t.getBrowserLang()}getBrowserCultureLang(){return t.getBrowserCultureLang()}get defaultLang(){return this.getFallbackLang()}get currentLang(){return this.store.getCurrentLang()}get langs(){return this.store.getLanguages()}setDefaultLang(e){return this.setFallbackLang(e)}getDefaultLang(){return this.getFallbackLang()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),we=(()=>{class t{translate=T(Xo);_ref=T(Dt);value="";lastKey=null;lastParams=[];onTranslationChange;onLangChange;onFallbackLangChange;updateValue(e,i,o){const r=s=>{this.value=void 0!==s?s:e,this.lastKey=e,this._ref.markForCheck()};if(o){const s=this.translate.getParsedResult(e,i);$r(s)?s.subscribe(r):r(s)}this.translate.get(e,i).subscribe(r)}transform(e,...i){if(!e||!e.length)return e;if(jb(e,this.lastKey)&&jb(i,this.lastParams))return this.value;let o;if(Ta(i[0])&&i.length)if($b(i[0])&&i[0].length){const r=i[0].replace(/(')?([a-zA-Z0-9_]+)(')?(\s)?:/g,'"$2":').replace(/:(\s)?(')(.*?)(')/g,':"$3"');try{o=JSON.parse(r)}catch(s){throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${i[0]}`)}}else Zr(i[0])&&(o=i[0]);return this.lastKey=e,this.lastParams=i,this.updateValue(e,o),this._dispose(),this.onTranslationChange||(this.onTranslationChange=this.translate.onTranslationChange.subscribe(r=>{(this.lastKey&&r.lang===this.translate.getCurrentLang()||r.lang===this.translate.getFallbackLang())&&(this.lastKey=null,this.updateValue(e,o,r.translations))})),this.onLangChange||(this.onLangChange=this.translate.onLangChange.subscribe(r=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,o,r.translations))})),this.onFallbackLangChange||(this.onFallbackLangChange=this.translate.onFallbackLangChange.subscribe(()=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,o))})),this.value}_dispose(){typeof this.onTranslationChange<"u"&&(this.onTranslationChange.unsubscribe(),this.onTranslationChange=void 0),typeof this.onLangChange<"u"&&(this.onLangChange.unsubscribe(),this.onLangChange=void 0),typeof this.onFallbackLangChange<"u"&&(this.onFallbackLangChange.unsubscribe(),this.onFallbackLangChange=void 0)}ngOnDestroy(){this._dispose()}static \u0275fac=function(i){return new(i||t)};static \u0275pipe=Gi({name:"translate",type:t,pure:!1});static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();function c5(t){return{provide:Yf,useClass:t}}function d5(t){return{provide:zb,useClass:t}}function u5(t){return{provide:Gb,useClass:t}}function h5(t){return{provide:$k,useClass:t}}function qb(t={},n){const e=[];return t.loader&&e.push(t.loader),t.compiler&&e.push(t.compiler),t.parser&&e.push(t.parser),t.missingTranslationHandler&&e.push(t.missingTranslationHandler),n&&e.push(Gk),(t.useDefaultLang||t.defaultLanguage)&&(console.warn("The `useDefaultLang` and `defaultLanguage` options are deprecated. Please use `fallbackLang` instead."),!0===t.useDefaultLang&&t.defaultLanguage&&(t.fallbackLang=t.defaultLanguage)),e.push({provide:qk,useValue:{fallbackLang:t.fallbackLang??null,lang:t.lang,extend:t.extend??!1}}),e.push({provide:Xo,useClass:Xo,deps:[Gk,Yf,zb,Gb,$k,qk]}),e}let f5=(()=>{class t{static forRoot(e={}){return{ngModule:t,providers:[...qb({compiler:d5(o5),parser:u5(l5),loader:c5(r5),missingTranslationHandler:h5(i5),...e},!0)]}}static forChild(e={}){return{ngModule:t,providers:[...qb(e,e.isolate??!1)]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function Wue(t,n){if(1&t&&(h(0,"div",0)(1,"mat-icon",5),p(2),u()()),2&t){const e=y();c(),C("inline",!0),c(),S(e.config.icon)}}function Gue(t,n){if(1&t&&(h(0,"div",2),p(1),_(2,"translate"),_(3,"translate"),u()),2&t){const e=y();c(),nt(" ",v(2,2,"common.error")," ",ue(3,4,e.config.smallText,e.config.smallTextTranslationParams)," ")}}var Kb=function(t){return t.Error="error",t.Done="done",t.Warning="warning",t}(Kb||{}),Yb=function(t){return t.Red="red-background",t.Green="green-background",t.Yellow="yellow-background",t}(Yb||{});let que=(()=>{class t{constructor(e,i){this.snackbarRef=i,this.config=e}close(){this.snackbarRef.dismiss()}static{this.\u0275fac=function(i){return new(i||t)(O(Vk),O(Vb))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-snack-bar"]],standalone:!1,decls:9,vars:8,consts:[[1,"icon-container"],[1,"text-container"],[1,"second-line"],[1,"close-button-separator"],[1,"close-button",3,"click"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"div"),x(1,Wue,3,2,"div",0),h(2,"div",1),p(3),_(4,"translate"),x(5,Gue,4,7,"div",2),u(),L(6,"div",3),h(7,"mat-icon",4),F("click",function(){return o.close()}),p(8,"close"),u()()),2&i&&(Ge("main-container "+o.config.color),c(),k(o.config.icon?1:-1),c(2),D(" ",ue(4,5,o.config.text,o.config.textTranslationParams)," "),c(2),k(o.config.smallText?5:-1))},dependencies:[Ae,we],styles:['.cursor-pointer[_ngcontent-%COMP%], .close-button[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.main-container[_ngcontent-%COMP%]{width:100%;display:flex;color:#fff;padding:15px;border-radius:5px}.red-background[_ngcontent-%COMP%]{background-color:#ea0606}.green-background[_ngcontent-%COMP%]{background-color:#1fb11f}.yellow-background[_ngcontent-%COMP%]{background-color:#f90}.icon-container[_ngcontent-%COMP%]{margin-right:10px;position:relative;top:1px}.text-container[_ngcontent-%COMP%]{flex-grow:1;margin-right:10px;font-size:1rem;word-break:break-word}.text-container[_ngcontent-%COMP%] .second-line[_ngcontent-%COMP%]{font-size:.8rem;opacity:.9}.close-button-separator[_ngcontent-%COMP%]{width:1px;margin-right:10px;background-color:#0000004d}.close-button[_ngcontent-%COMP%]{opacity:.7}.close-button[_ngcontent-%COMP%]:hover{opacity:1}mat-icon[_ngcontent-%COMP%]{position:relative;top:1px;-webkit-user-select:none;user-select:none}']})}}return t})(),ot=(()=>{class t{constructor(e){this.snackBar=e,this.lastWasTemporaryError=!1}showError(e,i=null,o=!1,r=null,s=null){e=Ze(e),r=r?Ze(r):null,this.lastWasTemporaryError=o,this.show(e.translatableErrorMsg,i,r?r.translatableErrorMsg:null,s,Kb.Error,Yb.Red,15e3)}showWarning(e,i=null){this.lastWasTemporaryError=!1,this.show(e,i,null,null,Kb.Warning,Yb.Yellow,15e3)}showDone(e,i=null){this.lastWasTemporaryError=!1,this.show(e,i,null,null,Kb.Done,Yb.Green,5e3)}closeCurrent(){this.snackBar.dismiss()}closeCurrentIfTemporaryError(){this.lastWasTemporaryError&&this.snackBar.dismiss()}show(e,i,o,r,s,a,l){this.snackBar.openFromComponent(que,{duration:l,panelClass:"snackbar-container",data:{text:e,textTranslationParams:i,smallText:o,smallTextTranslationParams:r,icon:s,color:a}})}static{this.\u0275fac=function(i){return new(i||t)(ce(X4))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const at={maxShortListElements:5,maxFullListElements:40,connectionRetryDelay:5e3,languages:[{code:"en",name:"English",iconName:"en.png"},{code:"es",name:"Espa\xf1ol",iconName:"es.png"},{code:"de",name:"Deutsch",iconName:"de.png"},{code:"pt",name:"Portugu\xeas (Brazil)",iconName:"pt.png"}],defaultLanguage:"en",smallModalWidth:"480px",mediumModalWidth:"640px",largeModalWidth:"900px",vpn:{hardcodedIpWhileDeveloping:!1}};class Kue{constructor(n){Object.assign(this,n)}}let Xb=(()=>{class t{constructor(e){this.translate=e,this.currentLanguage=new co(1),this.languages=new co(1),this.storageKey="lang",this.languagesInternal=[],this.settingsLoaded=!1}loadLanguageSettings(){if(this.settingsLoaded)return;this.settingsLoaded=!0;const e=[];at.languages.forEach(i=>{const o=new Kue(i);this.languagesInternal.push(o),e.push(o.code)}),this.languages.next(this.languagesInternal),this.translate.addLangs(e),this.translate.setDefaultLang(at.defaultLanguage),this.translate.onLangChange.subscribe(i=>this.onLanguageChanged(i)),this.loadCurrentLanguage()}changeLanguage(e){this.translate.use(e)}onLanguageChanged(e){this.currentLanguage.next(this.languagesInternal.find(i=>i.code===e.lang)),localStorage.setItem(this.storageKey,e.lang)}loadCurrentLanguage(){let e=localStorage.getItem(this.storageKey);e=e||at.defaultLanguage,setTimeout(()=>this.translate.use(e),16)}static{this.\u0275fac=function(i){return new(i||t)(ce(Xo))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const Yue={url:"",deserializer:t=>JSON.parse(t.data),serializer:t=>JSON.stringify(t)};class Kk extends fy{constructor(n,e){if(super(),this._socket=null,n instanceof zt)this.destination=e,this.source=n;else{const i=this._config=Object.assign({},Yue);if(this._output=new be,"string"==typeof n)i.url=n;else for(const o in n)n.hasOwnProperty(o)&&(i[o]=n[o]);if(!i.WebSocketCtor&&WebSocket)i.WebSocketCtor=WebSocket;else if(!i.WebSocketCtor)throw new Error("no WebSocket constructor can be found");this.destination=new co}}lift(n){const e=new Kk(this._config,this.destination);return e.operator=n,e.source=this,e}_resetState(){this._socket=null,this.source||(this.destination=new co),this._output=new be}multiplex(n,e,i){const o=this;return new zt(r=>{try{o.next(n())}catch(a){r.error(a)}const s=o.subscribe({next:a=>{try{i(a)&&r.next(a)}catch(l){r.error(l)}},error:a=>r.error(a),complete:()=>r.complete()});return()=>{try{o.next(e())}catch(a){r.error(a)}s.unsubscribe()}})}_connectSocket(){const{WebSocketCtor:n,protocol:e,url:i,binaryType:o}=this._config,r=this._output;let s=null;try{s=e?new n(i,e):new n(i),this._socket=s,o&&(this._socket.binaryType=o)}catch(l){return void r.error(l)}const a=new gt(()=>{this._socket=null,s&&1===s.readyState&&s.close()});s.onopen=l=>{const{_socket:d}=this;if(!d)return s.close(),void this._resetState();const{openObserver:f}=this._config;f&&f.next(l);const m=this.destination;this.destination=$p.create(g=>{if(1===s.readyState)try{const{serializer:b}=this._config;s.send(b(g))}catch(b){this.destination.error(b)}},g=>{const{closingObserver:b}=this._config;b&&b.next(void 0),g&&g.code?s.close(g.code,g.reason):r.error(new TypeError("WebSocketSubject.error must be called with an object with an error code, and an optional reason: { code: number, reason: string }")),this._resetState()},()=>{const{closingObserver:g}=this._config;g&&g.next(void 0),s.close(),this._resetState()}),m&&m instanceof co&&a.add(m.subscribe(this.destination))},s.onerror=l=>{this._resetState(),r.error(l)},s.onclose=l=>{s===this._socket&&this._resetState();const{closeObserver:d}=this._config;d&&d.next(l),l.wasClean?r.complete():r.error(l)},s.onmessage=l=>{try{const{deserializer:d}=this._config;r.next(d(l))}catch(d){r.error(d)}}}_subscribe(n){const{source:e}=this;return e?e.subscribe(n):(this._socket||this._connectSocket(),this._output.subscribe(n),n.add(()=>{const{_socket:i}=this;0===this._output.observers.length&&(i&&(1===i.readyState||0===i.readyState)&&i.close(),this._resetState())}),n)}unsubscribe(){const{_socket:n}=this;n&&(1===n.readyState||0===n.readyState)&&n.close(),this._resetState(),super.unsubscribe()}}var Qf=function(t){return t.Json="json",t.Text="text",t}(Qf||{}),uc=function(t){return t.Json="json",t.RawJson="raw-json",t}(uc||{});class Ro{constructor(n){this.responseType=Qf.Json,this.requestType=uc.Json,this.ignoreAuth=!1,Object.assign(this,n)}}let fi=(()=>{class t{constructor(e,i,o){this.http=e,this.router=i,this.ngZone=o,this.apiPrefix="api/",this.wsApiPrefix="api/"}get(e,i=null){return this.request("GET",e,{},i)}post(e,i={},o=null){return this.getCsrf().pipe(Wr(),Tt(r=>((o=o||new Ro).csrfToken=r,this.request("POST",e,i,o))))}put(e,i={},o=null){return this.getCsrf().pipe(Wr(),Tt(r=>((o=o||new Ro).csrfToken=r,this.request("PUT",e,i,o))))}delete(e,i=null){return this.getCsrf().pipe(Wr(),Tt(o=>((i=i||new Ro).csrfToken=o,this.request("DELETE",e,{},i))))}getCsrf(){return this.get("csrf").pipe(De(e=>e.csrf_token))}ws(e,i={}){const s=function Zue(t){return new Kk(t)}((location.protocol.startsWith("https")?"wss://":"ws://")+location.host+"/"+this.wsApiPrefix+e);return s.next(i),s}request(e,i,o,r){return o=o||{},r=r||new Ro,i.startsWith("/")&&(i=i.substr(1,i.length-1)),this.http.request(e,this.apiPrefix+i,{...this.getRequestOptions(r),responseType:r.responseType,withCredentials:!0,body:this.getPostBody(o,r)}).pipe(De(s=>this.successHandler(s)),ii(s=>this.errorHandler(s,r)))}getRequestOptions(e){const i={};return i.headers=new Go,(e.requestType===uc.Json||e.requestType===uc.RawJson)&&(i.headers=i.headers.append("Content-Type","application/json")),e.csrfToken&&(i.headers=i.headers.append("X-CSRF-Token",e.csrfToken)),i}getPostBody(e,i){if(i.requestType===uc.RawJson)return"string"==typeof e?e:JSON.stringify(e);if(i.requestType===uc.Json)return JSON.stringify(e);const o=new FormData;return Object.keys(e).forEach(r=>o.append(r,e[r])),o}successHandler(e){if("string"==typeof e&&"manager token is null"===e)throw new Error(e);return e}errorHandler(e,i){if(!i.ignoreAuth){if(401===e.status){const o=i.vpnKeyForAuth?["vpnlogin",i.vpnKeyForAuth]:["login"];this.ngZone.run(()=>this.router.navigate(o,{replaceUrl:!0}))}if(e.error&&"string"==typeof e.error&&e.error.includes("change password")){const o=i.vpnKeyForAuth?["vpnlogin",i.vpnKeyForAuth]:["login"];this.ngZone.run(()=>this.router.navigate(o,{replaceUrl:!0}))}}return Cr(Ze(e))}static{this.\u0275fac=function(i){return new(i||t)(ce(xa),ce(yt),ce(Ce))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const Que=["determinateSpinner"];function Jue(t,n){if(1&t&&(ul(),h(0,"svg",11),L(1,"circle",12),u()),2&t){const e=y();We("viewBox",e._viewBox()),c(),Hl("stroke-dasharray",e._strokeCircumference(),"px")("stroke-dashoffset",e._strokeCircumference()/2,"px")("stroke-width",e._circleStrokeWidth(),"%"),We("r",e._circleRadius())}}const ehe=new Z("mat-progress-spinner-default-options",{providedIn:"root",factory:()=>({diameter:p5})}),p5=100;let ci=(()=>{class t{_elementRef=T(Ne);_noopAnimations;get color(){return this._color||this._defaultColor}set color(e){this._color=e}_color;_defaultColor="primary";_determinateCircle;constructor(){const e=T(ehe),i=x4(),o=this._elementRef.nativeElement;this._noopAnimations="di-disabled"===i&&!!e&&!e._forceAnimations,this.mode="mat-spinner"===o.nodeName.toLowerCase()?"indeterminate":"determinate",!this._noopAnimations&&"reduced-motion"===i&&o.classList.add("mat-progress-spinner-reduced-motion"),e&&(e.color&&(this.color=this._defaultColor=e.color),e.diameter&&(this.diameter=e.diameter),e.strokeWidth&&(this.strokeWidth=e.strokeWidth))}mode;get value(){return"determinate"===this.mode?this._value:0}set value(e){this._value=Math.max(0,Math.min(100,e||0))}_value=0;get diameter(){return this._diameter}set diameter(e){this._diameter=e||0}_diameter=p5;get strokeWidth(){return this._strokeWidth??this.diameter/10}set strokeWidth(e){this._strokeWidth=e||0}_strokeWidth;_circleRadius(){return(this.diameter-10)/2}_viewBox(){const e=2*this._circleRadius()+this.strokeWidth;return`0 0 ${e} ${e}`}_strokeCircumference(){return 2*Math.PI*this._circleRadius()}_strokeDashOffset(){return"determinate"===this.mode?this._strokeCircumference()*(100-this._value)/100:null}_circleStrokeWidth(){return this.strokeWidth/this.diameter*100}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-progress-spinner"],["mat-spinner"]],viewQuery:function(i,o){if(1&i&&st(Que,5),2&i){let r;fe(r=pe())&&(o._determinateCircle=r.first)}},hostAttrs:["role","progressbar","tabindex","-1",1,"mat-mdc-progress-spinner","mdc-circular-progress"],hostVars:18,hostBindings:function(i,o){2&i&&(We("aria-valuemin",0)("aria-valuemax",100)("aria-valuenow","determinate"===o.mode?o.value:null)("mode",o.mode),Ge("mat-"+o.color),Hl("width",o.diameter,"px")("height",o.diameter,"px")("--mat-progress-spinner-size",o.diameter+"px")("--mat-progress-spinner-active-indicator-width",o.diameter+"px"),ve("_mat-animation-noopable",o._noopAnimations)("mdc-circular-progress--indeterminate","indeterminate"===o.mode))},inputs:{color:"color",mode:"mode",value:[2,"value","value",_r],diameter:[2,"diameter","diameter",_r],strokeWidth:[2,"strokeWidth","strokeWidth",_r]},exportAs:["matProgressSpinner"],decls:14,vars:11,consts:[["circle",""],["determinateSpinner",""],["aria-hidden","true",1,"mdc-circular-progress__determinate-container"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__determinate-circle-graphic"],["cx","50%","cy","50%",1,"mdc-circular-progress__determinate-circle"],["aria-hidden","true",1,"mdc-circular-progress__indeterminate-container"],[1,"mdc-circular-progress__spinner-layer"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-left"],[3,"ngTemplateOutlet"],[1,"mdc-circular-progress__gap-patch"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-right"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__indeterminate-circle-graphic"],["cx","50%","cy","50%"]],template:function(i,o){if(1&i&&(rt(0,Jue,2,8,"ng-template",null,0,Ul),h(2,"div",2,1),ul(),h(4,"svg",3),L(5,"circle",4),u()(),Qy(),h(6,"div",5)(7,"div",6)(8,"div",7),mr(9,8),u(),h(10,"div",9),mr(11,8),u(),h(12,"div",10),mr(13,8),u()()()),2&i){const r=Un(1);c(4),We("viewBox",o._viewBox()),c(),Hl("stroke-dasharray",o._strokeCircumference(),"px")("stroke-dashoffset",o._strokeDashOffset(),"px")("stroke-width",o._circleStrokeWidth(),"%"),We("r",o._circleRadius()),c(4),C("ngTemplateOutlet",r),c(2),C("ngTemplateOutlet",r),c(2),C("ngTemplateOutlet",r)}},dependencies:[Wd],styles:[".mat-mdc-progress-spinner{--mat-progress-spinner-animation-multiplier: 1;display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity 250ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-progress-spinner circle{stroke-width:var(--mat-progress-spinner-active-indicator-width, 4px)}.mat-mdc-progress-spinner._mat-animation-noopable,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__determinate-circle{transition:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__spinner-layer,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container{animation:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container circle{stroke-dasharray:0 !important}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle{stroke:currentColor;stroke:CanvasText}}.mat-progress-spinner-reduced-motion{--mat-progress-spinner-animation-multiplier: 1.25}.mdc-circular-progress__determinate-container,.mdc-circular-progress__indeterminate-circle-graphic,.mdc-circular-progress__indeterminate-container,.mdc-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}.mdc-circular-progress__determinate-container{transform:rotate(-90deg)}.mdc-circular-progress--indeterminate .mdc-circular-progress__determinate-container{opacity:0}.mdc-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{opacity:1;animation:mdc-circular-progress-container-rotate calc(1568.2352941176ms*var(--mat-progress-spinner-animation-multiplier)) linear infinite}.mdc-circular-progress__determinate-circle-graphic,.mdc-circular-progress__indeterminate-circle-graphic{fill:rgba(0,0,0,0)}.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--mat-progress-spinner-active-indicator-color, var(--mat-sys-primary))}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}.mdc-circular-progress__determinate-circle{transition:stroke-dashoffset 500ms cubic-bezier(0, 0, 0.2, 1)}.mdc-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}.mdc-circular-progress__gap-patch .mdc-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.mdc-circular-progress__circle-clipper .mdc-circular-progress__indeterminate-circle-graphic{width:200%}.mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{left:-100%}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-left .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-left-spin calc(1333ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-right-spin calc(1333ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.mdc-circular-progress--indeterminate .mdc-circular-progress__spinner-layer{animation:mdc-circular-progress-spinner-layer-rotate calc(5332ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}@keyframes mdc-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes mdc-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}@keyframes mdc-circular-progress-left-spin{from{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes mdc-circular-progress-right-spin{from{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}\n"],encapsulation:2,changeDetection:0})}return t})(),nhe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ai]})}return t})();const ihe=t=>({"white-theme":t});let Qr=(()=>{class t{constructor(){this.showWhite=!0}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=ae({type:t,selectors:[["app-loading-indicator"]],inputs:{showWhite:"showWhite"},standalone:!1,decls:2,vars:4,consts:[[1,"container",3,"ngClass"],[3,"diameter"]],template:function(i,o){1&i&&(h(0,"div",0),L(1,"mat-spinner",1),u()),2&i&&(C("ngClass",ie(2,ihe,o.showWhite)),c(),C("diameter",50))},dependencies:[Ft,ci],styles:["[_nghost-%COMP%]{width:100%;height:100%;display:flex}.container[_ngcontent-%COMP%]{width:100%;align-self:center;display:flex;flex-direction:column;align-items:center}.container[_ngcontent-%COMP%] > mat-spinner[_ngcontent-%COMP%]{opacity:.5}"]})}}return t})();const ohe=t=>({background:t});function rhe(t,n){1&t&&(h(0,"div",0)(1,"div"),L(2,"img",5),h(3,"div"),p(4),_(5,"translate"),u()()()),2&t&&(c(4),S(v(5,1,"common.window-size-error")))}function she(t,n){1&t&&L(0,"router-outlet")}function ahe(t,n){1&t&&L(0,"app-loading-indicator",3)}function lhe(t,n){1&t&&(h(0,"div",4)(1,"span",6)(2,"mat-icon",7),p(3,"error_outline"),u(),p(4),_(5,"translate"),u()()),2&t&&(c(2),C("inline",!0),c(2),D(" ",v(5,2,"common.data-update-problems")," "))}let Jr=(()=>{class t{constructor(e,i,o,r,s,a){this.storage=e,this.snackbarService=r,this.languageService=s,this.apiService=a,this.inVpnClient=!1,this.inLoginPage=!1,this.hypervisorPkObtained=!1,this.pkErrorShown=!1,this.pkErrorsFound=0,this.showingDataProblemMsg=!1,t.currentInstance=this,o.afterOpened.subscribe(()=>r.closeCurrent()),history.scrollRestoration&&(history.scrollRestoration="manual"),i.events.subscribe(l=>{l instanceof Kr&&(r.closeCurrent(),o.closeAll())}),o.afterAllClosed.subscribe(()=>r.closeCurrentIfTemporaryError()),i.events.subscribe(l=>{if(this.inVpnClient=i.url.includes("/vpn/")||i.url.includes("vpnlogin"),l.url){const d=this.inLoginPage;this.inLoginPage=l.url.includes("login"),d&&!this.inLoginPage&&!this.hypervisorPkObtained&&this.checkHypervisorPk(0)}i.url.length>2&&(document.title=this.inVpnClient?"Skywire VPN":"Skywire Hypervisor")}),this.languageService.loadLanguageSettings(),this.checkHypervisorPk(0)}processLoginDone(){this.inLoginPage=!1,this.hypervisorPkObtained||this.checkHypervisorPk(0)}showDataProblemMsg(){this.showingDataProblemMsg=!0}hideDataProblemMsg(){this.showingDataProblemMsg=!1}checkHypervisorPk(e){this.obtainPkSubscription&&this.obtainPkSubscription.unsubscribe(),this.obtainPkSubscription=se(1).pipe(oi(e),Tt(()=>this.apiService.get("about"))).subscribe(i=>{i.public_key?(this.finishStartup(i.public_key),this.hypervisorPkObtained=!0):(this.pkErrorShown||(this.snackbarService.showError("start.loading-error",null,!0),this.pkErrorShown=!0),this.checkHypervisorPk(1e3))},i=>{if(this.pkErrorsFound+=1,this.pkErrorsFound>4&&!this.pkErrorShown){const o=Ze(i);this.snackbarService.showError("start.loading-error",null,!0,o),this.pkErrorShown=!0}!this.inLoginPage&&this.pkErrorsFound<30&&this.checkHypervisorPk(Math.min(1e3*this.pkErrorsFound,1e4))})}finishStartup(e){this.storage.initialize(e)}static{this.\u0275fac=function(i){return new(i||t)(O(ri),O(yt),O(Nt),O(ot),O(Xb),O(fi))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-root"]],standalone:!1,decls:6,vars:7,consts:[[1,"size-alert","d-md-none"],[1,"flex-1","content","container-fluid"],[3,"ngClass"],[1,"h-100"],[1,"connection-problem-container"],["src","assets/img/size-alert.png"],[1,"blinking"],[3,"inline"]],template:function(i,o){1&i&&(x(0,rhe,6,3,"div",0),h(1,"div",1),L(2,"div",2),x(3,she,1,0,"router-outlet"),x(4,ahe,1,0,"app-loading-indicator",3),u(),x(5,lhe,6,4,"div",4)),2&i&&(k(o.inVpnClient?0:-1),c(2),C("ngClass",ie(5,ohe,o.inVpnClient)),c(),k(o.hypervisorPkObtained||o.inLoginPage?3:-1),c(),k(o.hypervisorPkObtained||o.inLoginPage?-1:4),c(),k(o.showingDataProblemMsg?5:-1))},dependencies:[Ft,sb,Ae,Qr,we],styles:[".size-alert[_ngcontent-%COMP%]{background-color:#000000d9;position:fixed;top:0;left:0;width:100%;height:100%;z-index:10000;display:inline-flex;align-items:center;justify-content:center;text-align:center;color:#fff}.size-alert[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{margin:0 40px;max-width:400px}[_nghost-%COMP%]{display:flex;flex-direction:column;justify-content:space-between;min-height:100%;height:100%}.content[_ngcontent-%COMP%]{padding:20px!important}.background[_ngcontent-%COMP%]{background-image:url(/assets/img/map.png);background-size:cover;background-position:center;opacity:.1;width:100%;height:100%;top:0;left:0;position:fixed}.connection-problem-container[_ngcontent-%COMP%]{position:fixed;bottom:0;right:0;background-color:red;padding:0 10px 5px;font-size:10px;opacity:.75}.connection-problem-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:4px}"]})}}return t})(),Che=(()=>{class t{router=T(yt);stateManager=T(ak);fragment=Ct("");queryParams=Ct({});path=Ct("");serializer=T(Yd);constructor(){this.updateState(),this.router.events?.subscribe(e=>{e instanceof Kr&&this.updateState()})}updateState(){const{fragment:e,root:i,queryParams:o}=this.stateManager.getCurrentUrlTree();this.fragment.set(e),this.queryParams.set(o),this.path.set(this.serializer.serialize(new wr(i)))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),es=(()=>{class t{router;route;tabIndexAttribute;renderer;el;locationStrategy;hrefAttributeValue=T(new tf("href"),{optional:!0});reactiveHref=function gw(t,n){return SF("function"==typeof t?wF(t,Ete,n?.equal):wF(t.source,t.computation,t.equal))}(()=>this.isAnchorElement?this.computeHref(this._urlTree()):this.hrefAttributeValue);get href(){return it(this.reactiveHref)}set href(e){this.reactiveHref.set(e)}set target(e){this._target.set(e)}get target(){return it(this._target)}_target=Ct(void 0);set queryParams(e){this._queryParams.set(e)}get queryParams(){return it(this._queryParams)}_queryParams=Ct(void 0,{equal:()=>!1});set fragment(e){this._fragment.set(e)}get fragment(){return it(this._fragment)}_fragment=Ct(void 0);set queryParamsHandling(e){this._queryParamsHandling.set(e)}get queryParamsHandling(){return it(this._queryParamsHandling)}_queryParamsHandling=Ct(void 0);set state(e){this._state.set(e)}get state(){return it(this._state)}_state=Ct(void 0,{equal:()=>!1});set info(e){this._info.set(e)}get info(){return it(this._info)}_info=Ct(void 0,{equal:()=>!1});set relativeTo(e){this._relativeTo.set(e)}get relativeTo(){return it(this._relativeTo)}_relativeTo=Ct(void 0);set preserveFragment(e){this._preserveFragment.set(e)}get preserveFragment(){return it(this._preserveFragment)}_preserveFragment=Ct(!1);set skipLocationChange(e){this._skipLocationChange.set(e)}get skipLocationChange(){return it(this._skipLocationChange)}_skipLocationChange=Ct(!1);set replaceUrl(e){this._replaceUrl.set(e)}get replaceUrl(){return it(this._replaceUrl)}_replaceUrl=Ct(!1);isAnchorElement;onChanges=new be;applicationErrorHandler=T(Nr);options=T(eu,{optional:!0});reactiveRouterState=T(Che);constructor(e,i,o,r,s,a){this.router=e,this.route=i,this.tabIndexAttribute=o,this.renderer=r,this.el=s,this.locationStrategy=a;const l=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement="a"===l||"area"===l||!("object"!=typeof customElements||!customElements.get(l)?.observedAttributes?.includes?.("href"))}setTabIndexIfNotOnNativeEl(e){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.onChanges.next(this)}routerLinkInput=Ct(null);set routerLink(e){null==e?(this.routerLinkInput.set(null),this.setTabIndexIfNotOnNativeEl(null)):(ec(e)?this.routerLinkInput.set(e):this.routerLinkInput.set(Array.isArray(e)?e:[e]),this.setTabIndexIfNotOnNativeEl("0"))}onClick(e,i,o,r,s){const a=this._urlTree();if(null===a||this.isAnchorElement&&(0!==e||i||o||r||s||"string"==typeof this.target&&"_self"!=this.target))return!0;const l={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(a,l)?.catch(d=>{this.applicationErrorHandler(d)}),!this.isAnchorElement}ngOnDestroy(){}applyAttributeValue(e,i){const o=this.renderer,r=this.el.nativeElement;null!==i?o.setAttribute(r,e,i):o.removeAttribute(r,e)}_urlTree=Fi(()=>{this.reactiveRouterState.path(),this._preserveFragment()&&this.reactiveRouterState.fragment();const e=o=>"preserve"===o||"merge"===o;(e(this._queryParamsHandling())||e(this.options?.defaultQueryParamsHandling))&&this.reactiveRouterState.queryParams();const i=this.routerLinkInput();return null!==i&&this.router.createUrlTree?ec(i)?i:this.router.createUrlTree(i,{relativeTo:void 0!==this._relativeTo()?this._relativeTo():this.route,queryParams:this._queryParams(),fragment:this._fragment(),queryParamsHandling:this._queryParamsHandling(),preserveFragment:this._preserveFragment()}):null},{equal:(e,i)=>this.computeHref(e)===this.computeHref(i)});get urlTree(){return it(this._urlTree)}computeHref(e){return null!==e&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e))??"":null}static \u0275fac=function(i){return new(i||t)(O(yt),O(Li),lh("tabindex"),O(ei),O(Ne),O(Wl))};static \u0275dir=de({type:t,selectors:[["","routerLink",""]],hostVars:2,hostBindings:function(i,o){1&i&&F("click",function(s){return o.onClick(s.button,s.ctrlKey,s.shiftKey,s.altKey,s.metaKey)}),2&i&&We("href",o.reactiveHref(),pE)("target",o._target())},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",Te],skipLocationChange:[2,"skipLocationChange","skipLocationChange",Te],replaceUrl:[2,"replaceUrl","replaceUrl",Te],routerLink:"routerLink"},features:[vi]})}return t})();class _5{}let khe=(()=>{class t{router;injector;preloadingStrategy;loader;subscription;constructor(e,i,o,r){this.router=e,this.injector=i,this.preloadingStrategy=o,this.loader=r}setUpPreloading(){this.subscription=this.router.events.pipe(Pn(e=>e instanceof Kr),mf(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription?.unsubscribe()}processRoutes(e,i){const o=[];for(const r of i){r.providers&&!r._injector&&(r._injector=Ag(r.providers,e,""));const s=r._injector??e;r._loadedNgModuleFactory&&!r._loadedInjector&&(r._loadedInjector=r._loadedNgModuleFactory.create(s).injector);const a=r._loadedInjector??s;(r.loadChildren&&!r._loadedRoutes&&void 0===r.canLoad||r.loadComponent&&!r._loadedComponent)&&o.push(this.preloadConfig(s,r)),(r.children||r._loadedRoutes)&&o.push(this.processRoutes(a,r.children??r._loadedRoutes))}return Xn(o).pipe(qd())}preloadConfig(e,i){return this.preloadingStrategy.preload(i,()=>{if(e.destroyed)return se(null);let o;o=i.loadChildren&&void 0===i.canLoad?Xn(this.loader.loadChildren(e,i)):se(null);const r=o.pipe(Tt(s=>null===s?se(void 0):(i._loadedRoutes=s.routes,i._loadedInjector=s.injector,i._loadedNgModuleFactory=s.factory,this.processRoutes(s.injector??e,s.routes))));return i.loadComponent&&!i._loadedComponent?Xn([r,this.loader.loadComponent(e,i)]).pipe(qd()):r})}static \u0275fac=function(i){return new(i||t)(ce(yt),ce(Wn),ce(_5),ce(tk))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Yk=new Z("");let b5=(()=>{class t{options;routerEventsSubscription;scrollEventsSubscription;lastId=0;lastSource=Tf;restoredId=0;store={};urlSerializer=T(Yd);zone=T(Ce);viewportScroller=T(oT);transitions=T(rk);constructor(e){this.options=e,this.options.scrollPositionRestoration||="disabled",this.options.anchorScrolling||="disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof ib?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof Kr?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof Xd&&e.code===ob.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{if(!(e instanceof sL)||"manual"===e.scrollBehavior)return;const i={behavior:"instant"};e.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0],i):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(e.position,i):e.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0])})}scheduleScrollEvent(e,i){var o=this;const r=it(this.transitions.currentNavigation)?.extras.scroll;this.zone.runOutsideAngular(At(function*(){yield new Promise(s=>{setTimeout(s),typeof requestAnimationFrame<"u"&&requestAnimationFrame(s)}),o.zone.run(()=>{o.transitions.events.next(new sL(e,"popstate"===o.lastSource?o.store[o.restoredId]:null,i,r))})}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static \u0275fac=function(i){WC()};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();function Zo(t,n){return{\u0275kind:t,\u0275providers:n}}function y5(){const t=T(Ue);return n=>{const e=t.get(fr);if(n!==e.components[0])return;const i=t.get(yt),o=t.get(C5);1===t.get(Xk)&&i.initialNavigation(),t.get(w5,null,{optional:!0})?.setUpPreloading(),t.get(Yk,null,{optional:!0})?.init(),i.resetRootComponentType(e.componentTypes[0]),o.closed||(o.next(),o.complete(),o.unsubscribe())}}const C5=new Z("",{factory:()=>new be}),Xk=new Z("",{factory:()=>1}),w5=new Z("");function Ehe(t){return Zo(0,[{provide:w5,useExisting:khe},{provide:_5,useExisting:t}])}function Ihe(t){return Ci("NgRouterViewTransitions"),Zo(9,[{provide:AL,useValue:oce},{provide:RL,useValue:{skipNextTransition:!!t?.skipInitialTransition,...t}}])}const Ohe=[jd,{provide:Yd,useClass:kf},yt,Ef,{provide:Li,useFactory:function v5(){return T(yt).routerState.root}},tk,[]];let x5=(()=>{class t{constructor(){}static forRoot(e,i){return{ngModule:t,providers:[Ohe,[],{provide:hb,multi:!0,useValue:e},[],i?.errorHandler?{provide:FL,useValue:i.errorHandler}:[],{provide:eu,useValue:i||{}},i?.useHash?{provide:Wl,useClass:zte}:{provide:Wl,useClass:PF},{provide:Yk,useFactory:()=>{const t=T(oT),n=T(eu);return n.scrollOffset&&t.setOffset(n.scrollOffset),new b5(n)}},i?.preloadingStrategy?Ehe(i.preloadingStrategy).\u0275providers:[],i?.initialNavigation?Nhe(i):[],i?.bindToComponentInputs?Zo(8,[pL,{provide:ab,useExisting:pL}]).\u0275providers:[],i?.enableViewTransitions?Ihe().\u0275providers:[],[{provide:k5,useFactory:y5},{provide:lO,multi:!0,useExisting:k5}]]}}static forChild(e){return{ngModule:t,providers:[{provide:hb,multi:!0,useValue:e}]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function Nhe(t){return["disabled"===t.initialNavigation?Zo(3,[sO(()=>{T(yt).setUpLocationChangeListener()}),{provide:Xk,useValue:2}]).\u0275providers:[],"enabledBlocking"===t.initialNavigation?Zo(2,[{provide:Zj,useValue:!0},{provide:Xk,useValue:0},sO(()=>{const n=T(Ue);return n.get(x7,Promise.resolve()).then(()=>new Promise(i=>{const o=n.get(yt),r=n.get(C5);BL(o,()=>{i(!0)}),n.get(rk).afterPreactivation=()=>(i(!0),r.closed?se(void 0):r),o.initialNavigation()}))})]).\u0275providers:[]]}const k5=new Z("");let Jf=(()=>{class t{set forceFail(e){this.forceFailInternal=e}constructor(e){this.router=e,this.forceFailInternal=!1}canActivate(e,i){return this.checkIfCanActivate()}canActivateChild(e,i){return this.checkIfCanActivate()}checkIfCanActivate(){return this.forceFailInternal?(this.router.navigate(["login"],{replaceUrl:!0}),se(!1)):se(!0)}static{this.\u0275fac=function(i){return new(i||t)(ce(yt))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Ea=function(t){return t[t.AuthDisabled=0]="AuthDisabled",t[t.Logged=1]="Logged",t[t.NotLogged=2]="NotLogged",t}(Ea||{});let ep=(()=>{class t{constructor(e,i,o){this.apiService=e,this.translateService=i,this.authGuardService=o}login(e){return this.apiService.post("login",{username:"admin",password:e},new Ro({ignoreAuth:!0})).pipe(ui(i=>{if(!0!==i)throw new Error;this.authGuardService.forceFail=!1}))}checkLogin(){return this.apiService.get("user",new Ro({ignoreAuth:!0})).pipe(De(e=>e.username?Ea.Logged:Ea.AuthDisabled),ii(e=>(e=Ze(e)).originalError&&401===e.originalError.status?(this.authGuardService.forceFail=!0,se(Ea.NotLogged)):Cr(e)))}logout(){return this.apiService.post("logout",{}).pipe(ui(e=>{if(!0!==e)throw new Error;this.authGuardService.forceFail=!0}))}changePassword(e,i){return this.apiService.post("change-password",{old_password:e,new_password:i},new Ro({responseType:Qf.Text,ignoreAuth:!0})).pipe(De(o=>{if("string"==typeof o&&"true"===o.trim())return!0;throw"Please do not change the default password."===o?new Error(this.translateService.instant("settings.password.errors.default-password")):new Error(this.translateService.instant("common.operation-error"))}),ii(o=>((o=Ze(o)).originalError&&401===o.originalError.status&&(o.translatableErrorMsg="settings.password.errors.bad-old-password"),Cr(o))))}initialConfig(e){return this.apiService.post("create-account",{username:"admin",password:e},new Ro({responseType:Qf.Text,ignoreAuth:!0})).pipe(De(i=>{if("string"==typeof i&&"true"===i.trim())return!0;throw new Error(i)}),ii(i=>((i=Ze(i)).originalError&&500===i.originalError.status&&(i.translatableErrorMsg="settings.password.initial-config.error"),Cr(i))))}userExists(){return this.apiService.get("user-exists",new Ro({ignoreAuth:!0})).pipe(De(e=>!0===e.exists),ii(()=>se(!0)))}static{this.\u0275fac=function(i){return new(i||t)(ce(fi),ce(Xo),ce(Jf))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();class Bhe{}class Lt{constructor(){this.persistentScrollPosKey="scroll-pos"}static{this.mustCallNgOnInitSuper=Symbol("You must call super.ngOnInit.")}ngOnInit(){let n=this.getLocalValue(this.persistentScrollPosKey);n=n?n.value:"0",window.scrollTo(0,Number(n)),setTimeout(()=>window.scrollTo(0,Number(n)),1)}saveScrollPosition(n){this.saveLocalValue(this.persistentScrollPosKey,window.scrollY+"")}saveLocalValue(n,e){const i=window.history.state;i[n]=e,i[n+"_time"]=(new Date).getTime(),window.history.replaceState(i,"",window.location.pathname+window.location.hash)}getLocalValue(n){if(!window.history.state||void 0===window.history.state[n])return null;const e=new Bhe;return e.value=window.history.state[n],e.date=window.history.state[n+"_time"],e}static{this.\u0275fac=function(e){return new(e||Lt)}}static{this.\u0275cmp=ae({type:Lt,selectors:[["app-page-base"]],hostBindings:function(e,i){1&e&&F("scroll",function(r){return i.saveScrollPosition(r)},iC)},standalone:!1,decls:0,vars:0,template:function(e,i){},encapsulation:2})}}let Vhe=(()=>{class t extends Lt{constructor(e,i){super(),this.authService=e,this.router=i}ngOnInit(){return this.verificationSubscription=this.authService.checkLogin().subscribe(e=>{this.router.navigate(e!==Ea.NotLogged?["nodes"]:["login"],{replaceUrl:!0})},()=>{this.router.navigate(["nodes"],{replaceUrl:!0})}),super.ngOnInit()}ngOnDestroy(){this.verificationSubscription.unsubscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(ep),O(yt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-start"]],standalone:!1,features:[_e],decls:2,vars:0,consts:[[1,"h-100","w-100"]],template:function(i,o){1&i&&(h(0,"div",0),L(1,"app-loading-indicator"),u())},dependencies:[Qr],encapsulation:2})}}return t})(),S5=(()=>{class t{_renderer;_elementRef;onChange=e=>{};onTouched=()=>{};constructor(e,i){this._renderer=e,this._elementRef=i}setProperty(e,i){this._renderer.setProperty(this._elementRef.nativeElement,e,i)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}static \u0275fac=function(i){return new(i||t)(O(ei),O(Ne))};static \u0275dir=de({type:t})}return t})(),hc=(()=>{class t extends S5{static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,features:[_e]})}return t})();const Qo=new Z(""),Uhe={provide:Qo,useExisting:jt(()=>Qt),multi:!0},jhe=new Z("");let Qt=(()=>{class t extends S5{_compositionMode;_composing=!1;constructor(e,i,o){super(e,i),this._compositionMode=o,null==this._compositionMode&&(this._compositionMode=!function zhe(){const t=na()?na().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}())}writeValue(e){this.setProperty("value",e??"")}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}static \u0275fac=function(i){return new(i||t)(O(ei),O(Ne),O(jhe,8))};static \u0275dir=de({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(i,o){1&i&&F("input",function(s){return o._handleInput(s.target.value)})("blur",function(){return o.onTouched()})("compositionstart",function(){return o._compositionStart()})("compositionend",function(s){return o._compositionEnd(s.target.value)})},standalone:!1,features:[dt([Uhe]),_e]})}return t})();function Zk(t){return null==t||0===Qk(t)}function Qk(t){return null==t?null:Array.isArray(t)||"string"==typeof t?t.length:t instanceof Set?t.size:null}const ki=new Z(""),Pa=new Z(""),$he=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class Se{static min(n){return D5(n)}static max(n){return T5(n)}static required(n){return function E5(t){return Zk(t.value)?{required:!0}:null}(n)}static requiredTrue(n){return function P5(t){return!0===t.value?null:{required:!0}}(n)}static email(n){return function I5(t){return Zk(t.value)||$he.test(t.value)?null:{email:!0}}(n)}static minLength(n){return function O5(t){return n=>{const e=n.value?.length??Qk(n.value);return null===e||0===e?null:e{if(Zk(i.value))return null;const o=i.value;return n.test(o)?null:{pattern:{requiredPattern:e,actualValue:o}}}}(n)}static nullValidator(n){return null}static compose(n){return H5(n)}static composeAsync(n){return U5(n)}}function D5(t){return n=>{if(null==n.value||null==t)return null;const e=parseFloat(n.value);return!isNaN(e)&&e{if(null==n.value||null==t)return null;const e=parseFloat(n.value);return!isNaN(e)&&e>t?{max:{max:t,actual:n.value}}:null}}function A5(t){return n=>{const e=n.value?.length??Qk(n.value);return null!==e&&e>t?{maxlength:{requiredLength:t,actualLength:e}}:null}}function Zb(t){return null}function F5(t){return null!=t}function N5(t){return Hh(t)?Xn(t):t}function L5(t){let n={};return t.forEach(e=>{n=null!=e?{...n,...e}:n}),0===Object.keys(n).length?null:n}function B5(t,n){return n.map(e=>e(t))}function V5(t){return t.map(n=>function Whe(t){return!t.validate}(n)?n:e=>n.validate(e))}function H5(t){if(!t)return null;const n=t.filter(F5);return 0==n.length?null:function(e){return L5(B5(e,n))}}function Jk(t){return null!=t?H5(V5(t)):null}function U5(t){if(!t)return null;const n=t.filter(F5);return 0==n.length?null:function(e){return du(B5(e,n).map(N5)).pipe(De(L5))}}function eS(t){return null!=t?U5(V5(t)):null}function z5(t,n){return null===t?[n]:Array.isArray(t)?[...t,n]:[t,n]}function j5(t){return t._rawValidators}function $5(t){return t._rawAsyncValidators}function tS(t){return t?Array.isArray(t)?t:[t]:[]}function Qb(t,n){return Array.isArray(t)?t.includes(n):t===n}function W5(t,n){const e=tS(n);return tS(t).forEach(o=>{Qb(e,o)||e.push(o)}),e}function G5(t,n){return tS(n).filter(e=>!Qb(t,e))}class q5{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}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=Jk(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=eS(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n=void 0){this.control?.reset(n)}hasError(n,e){return!!this.control&&this.control.hasError(n,e)}getError(n,e){return this.control?this.control.getError(n,e):null}}class Ki extends q5{name;get formDirective(){return null}get path(){return null}}class ts extends q5{_parent=null;name=null;valueAccessor=null}class K5{_cd;constructor(n){this._cd=n}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}}let Jt=(()=>{class t extends K5{constructor(e){super(e)}static \u0275fac=function(i){return new(i||t)(O(ts,2))};static \u0275dir=de({type:t,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(i,o){2&i&&ve("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)},standalone:!1,features:[_e]})}return t})(),xn=(()=>{class t extends K5{constructor(e){super(e)}static \u0275fac=function(i){return new(i||t)(O(Ki,10))};static \u0275dir=de({type:t,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["","formArray",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(i,o){2&i&&ve("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)("ng-submitted",o.isSubmitted)},standalone:!1,features:[_e]})}return t})();const tp="VALID",ev="INVALID",uu="PENDING",np="DISABLED";class hu{}class Z5 extends hu{value;source;constructor(n,e){super(),this.value=n,this.source=e}}class oS extends hu{pristine;source;constructor(n,e){super(),this.pristine=n,this.source=e}}class rS extends hu{touched;source;constructor(n,e){super(),this.touched=n,this.source=e}}class tv extends hu{status;source;constructor(n,e){super(),this.status=n,this.source=e}}class Q5 extends hu{source;constructor(n){super(),this.source=n}}class sS extends hu{source;constructor(n){super(),this.source=n}}function aS(t){return(nv(t)?t.validators:t)||null}function lS(t,n){return(nv(n)?n.asyncValidators:t)||null}function nv(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}function J5(t,n,e){const i=t.controls;if(!(n?Object.keys(i):i).length)throw new X(1e3,"");if(!i[e])throw new X(1001,"")}function eB(t,n,e){t._forEachChild((i,o)=>{if(void 0===e[o])throw new X(1002,"")})}class iv{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(n,e){this._assignValidators(n),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(n){this._rawValidators=this._composedValidatorFn=n}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(n){this._rawAsyncValidators=this._composedAsyncValidatorFn=n}get parent(){return this._parent}get status(){return it(this.statusReactive)}set status(n){it(()=>this.statusReactive.set(n))}_status=Fi(()=>this.statusReactive());statusReactive=Ct(void 0);get valid(){return this.status===tp}get invalid(){return this.status===ev}get pending(){return this.status==uu}get disabled(){return this.status===np}get enabled(){return this.status!==np}errors;get pristine(){return it(this.pristineReactive)}set pristine(n){it(()=>this.pristineReactive.set(n))}_pristine=Fi(()=>this.pristineReactive());pristineReactive=Ct(!0);get dirty(){return!this.pristine}get touched(){return it(this.touchedReactive)}set touched(n){it(()=>this.touchedReactive.set(n))}_touched=Fi(()=>this.touchedReactive());touchedReactive=Ct(!1);get untouched(){return!this.touched}_events=new be;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(n){this._assignValidators(n)}setAsyncValidators(n){this._assignAsyncValidators(n)}addValidators(n){this.setValidators(W5(n,this._rawValidators))}addAsyncValidators(n){this.setAsyncValidators(W5(n,this._rawAsyncValidators))}removeValidators(n){this.setValidators(G5(n,this._rawValidators))}removeAsyncValidators(n){this.setAsyncValidators(G5(n,this._rawAsyncValidators))}hasValidator(n){return Qb(this._rawValidators,n)}hasAsyncValidator(n){return Qb(this._rawAsyncValidators,n)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(n={}){const e=!1===this.touched;this.touched=!0;const i=n.sourceControl??this;n.onlySelf||this._parent?.markAsTouched({...n,sourceControl:i}),e&&!1!==n.emitEvent&&this._events.next(new rS(!0,i))}markAllAsDirty(n={}){this.markAsDirty({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsDirty(n))}markAllAsTouched(n={}){this.markAsTouched({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsTouched(n))}markAsUntouched(n={}){const e=!0===this.touched;this.touched=!1,this._pendingTouched=!1;const i=n.sourceControl??this;this._forEachChild(o=>{o.markAsUntouched({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:i})}),n.onlySelf||this._parent?._updateTouched(n,i),e&&!1!==n.emitEvent&&this._events.next(new rS(!1,i))}markAsDirty(n={}){const e=!0===this.pristine;this.pristine=!1;const i=n.sourceControl??this;n.onlySelf||this._parent?.markAsDirty({...n,sourceControl:i}),e&&!1!==n.emitEvent&&this._events.next(new oS(!1,i))}markAsPristine(n={}){const e=!1===this.pristine;this.pristine=!0,this._pendingDirty=!1;const i=n.sourceControl??this;this._forEachChild(o=>{o.markAsPristine({onlySelf:!0,emitEvent:n.emitEvent})}),n.onlySelf||this._parent?._updatePristine(n,i),e&&!1!==n.emitEvent&&this._events.next(new oS(!0,i))}markAsPending(n={}){this.status=uu;const e=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new tv(this.status,e)),this.statusChanges.emit(this.status)),n.onlySelf||this._parent?.markAsPending({...n,sourceControl:e})}disable(n={}){const e=this._parentMarkedDirty(n.onlySelf);this.status=np,this.errors=null,this._forEachChild(o=>{o.disable({...n,onlySelf:!0})}),this._updateValue();const i=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new Z5(this.value,i)),this._events.next(new tv(this.status,i)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...n,skipPristineCheck:e},this),this._onDisabledChange.forEach(o=>o(!0))}enable(n={}){const e=this._parentMarkedDirty(n.onlySelf);this.status=tp,this._forEachChild(i=>{i.enable({...n,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent}),this._updateAncestors({...n,skipPristineCheck:e},this),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(n,e){n.onlySelf||(this._parent?.updateValueAndValidity(n),n.skipPristineCheck||this._parent?._updatePristine({},e),this._parent?._updateTouched({},e))}setParent(n){this._parent=n}getRawValue(){return this.value}updateValueAndValidity(n={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){const i=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===tp||this.status===uu)&&this._runAsyncValidator(i,n.emitEvent)}const e=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new Z5(this.value,e)),this._events.next(new tv(this.status,e)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),n.onlySelf||this._parent?.updateValueAndValidity({...n,sourceControl:e})}_updateTreeValidity(n={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(n)),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?np:tp}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(n,e){if(this.asyncValidator){this.status=uu,this._hasOwnPendingAsyncValidator={emitEvent:!1!==e,shouldHaveEmitted:!1!==n};const i=N5(this.asyncValidator(this));this._asyncValidationSubscription=i.subscribe(o=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(o,{emitEvent:e,shouldHaveEmitted:n})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();const n=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,n}return!1}setErrors(n,e={}){this.errors=n,this._updateControlsErrors(!1!==e.emitEvent,this,e.shouldHaveEmitted)}get(n){let e=n;return null==e||(Array.isArray(e)||(e=e.split(".")),0===e.length)?null:e.reduce((i,o)=>i&&i._find(o),this)}getError(n,e){const i=e?this.get(e):this;return i?.errors?i.errors[n]:null}hasError(n,e){return!!this.getError(n,e)}get root(){let n=this;for(;n._parent;)n=n._parent;return n}_updateControlsErrors(n,e,i){this.status=this._calculateStatus(),n&&this.statusChanges.emit(this.status),(n||i)&&this._events.next(new tv(this.status,e)),this._parent&&this._parent._updateControlsErrors(n,e,i)}_initObservables(){this.valueChanges=new ke,this.statusChanges=new ke}_calculateStatus(){return this._allControlsDisabled()?np:this.errors?ev:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(uu)?uu:this._anyControlsHaveStatus(ev)?ev:tp}_anyControlsHaveStatus(n){return this._anyControls(e=>e.status===n)}_anyControlsDirty(){return this._anyControls(n=>n.dirty)}_anyControlsTouched(){return this._anyControls(n=>n.touched)}_updatePristine(n,e){const i=!this._anyControlsDirty(),o=this.pristine!==i;this.pristine=i,n.onlySelf||this._parent?._updatePristine(n,e),o&&this._events.next(new oS(this.pristine,e))}_updateTouched(n={},e){this.touched=this._anyControlsTouched(),this._events.next(new rS(this.touched,e)),n.onlySelf||this._parent?._updateTouched(n,e)}_onDisabledChange=[];_registerOnCollectionChange(n){this._onCollectionChange=n}_setUpdateStrategy(n){nv(n)&&null!=n.updateOn&&(this._updateOn=n.updateOn)}_parentMarkedDirty(n){return!n&&!!this._parent?.dirty&&!this._parent._anyControlsDirty()}_find(n){return null}_assignValidators(n){this._rawValidators=Array.isArray(n)?n.slice():n,this._composedValidatorFn=function Qhe(t){return Array.isArray(t)?Jk(t):t||null}(this._rawValidators)}_assignAsyncValidators(n){this._rawAsyncValidators=Array.isArray(n)?n.slice():n,this._composedAsyncValidatorFn=function Jhe(t){return Array.isArray(t)?eS(t):t||null}(this._rawAsyncValidators)}}class fu extends iv{constructor(n,e,i){super(aS(e),lS(i,e)),this.controls=n,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;registerControl(n,e){return this.controls[n]?this.controls[n]:(this.controls[n]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(n,e,i={}){this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}removeControl(n,e={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(n,e,i={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],e&&this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}contains(n){return this.controls.hasOwnProperty(n)&&this.controls[n].enabled}setValue(n,e={}){eB(this,0,n),Object.keys(n).forEach(i=>{J5(this,!0,i),this.controls[i].setValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(n,e={}){null!=n&&(Object.keys(n).forEach(i=>{const o=this.controls[i];o&&o.patchValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(n={},e={}){this._forEachChild((i,o)=>{i.reset(n?n[o]:null,{...e,onlySelf:!0})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e),!1!==e?.emitEvent&&this._events.next(new sS(this))}getRawValue(){return this._reduceChildren({},(n,e,i)=>(n[i]=e.getRawValue(),n))}_syncPendingControls(){let n=this._reduceChildren(!1,(e,i)=>!!i._syncPendingControls()||e);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){Object.keys(this.controls).forEach(e=>{const i=this.controls[e];i&&n(i,e)})}_setUpControls(){this._forEachChild(n=>{n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(n){for(const[e,i]of Object.entries(this.controls))if(this.contains(e)&&n(i))return!0;return!1}_reduceValue(){return this._reduceChildren({},(e,i,o)=>((i.enabled||this.disabled)&&(e[o]=i.value),e))}_reduceChildren(n,e){let i=n;return this._forEachChild((o,r)=>{i=e(i,o,r)}),i}_allControlsDisabled(){for(const n of Object.keys(this.controls))if(this.controls[n].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(n){return this.controls.hasOwnProperty(n)?this.controls[n]:null}}const ov=fu;class tB extends fu{}const fc=new Z("",{factory:()=>ip}),ip="always";function rv(t,n){return[...n.path,t]}function op(t,n,e=ip){cS(t,n),n.valueAccessor.writeValue(t.value),(t.disabled||"always"===e)&&n.valueAccessor.setDisabledState?.(t.disabled),function tfe(t,n){n.valueAccessor.registerOnChange(e=>{t._pendingValue=e,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&nB(t,n)})}(t,n),function ife(t,n){const e=(i,o)=>{n.valueAccessor.writeValue(i),o&&n.viewToModelUpdate(i)};t.registerOnChange(e),n._registerOnDestroy(()=>{t._unregisterOnChange(e)})}(t,n),function nfe(t,n){n.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&nB(t,n),"submit"!==t.updateOn&&t.markAsTouched()})}(t,n),function efe(t,n){if(n.valueAccessor.setDisabledState){const e=i=>{n.valueAccessor.setDisabledState(i)};t.registerOnDisabledChange(e),n._registerOnDestroy(()=>{t._unregisterOnDisabledChange(e)})}}(t,n)}function sv(t,n,e=!0){const i=()=>{};n?.valueAccessor?.registerOnChange(i),n?.valueAccessor?.registerOnTouched(i),lv(t,n),t&&(n._invokeOnDestroyCallbacks(),t._registerOnCollectionChange(()=>{}))}function av(t,n){t.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(n)})}function cS(t,n){const e=j5(t);null!==n.validator?t.setValidators(z5(e,n.validator)):"function"==typeof e&&t.setValidators([e]);const i=$5(t);null!==n.asyncValidator?t.setAsyncValidators(z5(i,n.asyncValidator)):"function"==typeof i&&t.setAsyncValidators([i]);const o=()=>t.updateValueAndValidity();av(n._rawValidators,o),av(n._rawAsyncValidators,o)}function lv(t,n){let e=!1;if(null!==t){if(null!==n.validator){const o=j5(t);if(Array.isArray(o)&&o.length>0){const r=o.filter(s=>s!==n.validator);r.length!==o.length&&(e=!0,t.setValidators(r))}}if(null!==n.asyncValidator){const o=$5(t);if(Array.isArray(o)&&o.length>0){const r=o.filter(s=>s!==n.asyncValidator);r.length!==o.length&&(e=!0,t.setAsyncValidators(r))}}}const i=()=>{};return av(n._rawValidators,i),av(n._rawAsyncValidators,i),e}function nB(t,n){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),n.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function iB(t,n){cS(t,n)}function uS(t,n){if(!t.hasOwnProperty("model"))return!1;const e=t.model;return!!e.isFirstChange()||!Object.is(n,e.currentValue)}function oB(t,n){t._syncPendingControls(),n.forEach(e=>{const i=e.control;"submit"===i.updateOn&&i._pendingChange&&(e.viewToModelUpdate(i._pendingValue),i._pendingChange=!1)})}function hS(t,n){if(!n)return null;let e,i,o;return Array.isArray(n),n.forEach(r=>{r.constructor===Qt?e=r:function sfe(t){return Object.getPrototypeOf(t.constructor)===hc}(r)?i=r:o=r}),o||i||e||null}const lfe={provide:Ki,useExisting:jt(()=>pu)},rp=Promise.resolve();let pu=(()=>{class t extends Ki{callSetDisabledState;get submitted(){return it(this.submittedReactive)}_submitted=Fi(()=>this.submittedReactive());submittedReactive=Ct(!1);_directives=new Set;form;ngSubmit=new ke;options;constructor(e,i,o){super(),this.callSetDisabledState=o,this.form=new fu({},Jk(e),eS(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){rp.then(()=>{const i=this._findContainer(e.path);e.control=i.registerControl(e.name,e.control),op(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){rp.then(()=>{this._findContainer(e.path)?.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){rp.then(()=>{const i=this._findContainer(e.path),o=new fu({});iB(o,e),i.registerControl(e.name,o),o.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){rp.then(()=>{this._findContainer(e.path)?.removeControl?.(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,i){rp.then(()=>{this.form.get(e.path).setValue(i)})}setValue(e){this.control.setValue(e)}onSubmit(e){return this.submittedReactive.set(!0),oB(this.form,this._directives),this.ngSubmit.emit(e),this.form._events.next(new Q5(this.control)),"dialog"===e?.target?.method}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submittedReactive.set(!1)}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}static \u0275fac=function(i){return new(i||t)(O(ki,10),O(Pa,10),O(fc,8))};static \u0275dir=de({type:t,selectors:[["form",3,"ngNoForm","",3,"formGroup","",3,"formArray",""],["ng-form"],["","ngForm",""]],hostBindings:function(i,o){1&i&&F("submit",function(s){return o.onSubmit(s)})("reset",function(){return o.onReset()})},inputs:{options:[0,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[dt([lfe]),_e]})}return t})();function rB(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}function sB(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}const mu=class extends iv{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(n=null,e,i){super(aS(e),lS(i,e)),this._applyFormState(n),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),nv(e)&&(e.nonNullable||e.initialValueIsDefault)&&(this.defaultValue=sB(n)?n.value:n)}setValue(n,e={}){this.value=this._pendingValue=n,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(i=>i(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(n,e={}){this.setValue(n,e)}reset(n=this.defaultValue,e={}){this._applyFormState(n),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),e.overwriteDefaultValue&&(this.defaultValue=this.value),this._pendingChange=!1,!1!==e?.emitEvent&&this._events.next(new sS(this))}_updateValue(){}_anyControls(n){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(n){this._onChange.push(n)}_unregisterOnChange(n){rB(this._onChange,n)}registerOnDisabledChange(n){this._onDisabledChange.push(n)}_unregisterOnDisabledChange(n){rB(this._onDisabledChange,n)}_forEachChild(n){}_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(n){sB(n)?(this.value=this._pendingValue=n.value,n.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=n}},Ia=mu;let cv=(()=>{class t extends Ki{_parent;ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective?.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return rv(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,standalone:!1,features:[_e]})}return t})();const ffe={provide:ts,useExisting:jt(()=>gu)},aB=Promise.resolve();let gu=(()=>{class t extends ts{_changeDetectorRef;callSetDisabledState;control=new mu;static ngAcceptInputType_isDisabled;_registered=!1;viewModel;name="";isDisabled;model;options;update=new ke;constructor(e,i,o,r,s,a){super(),this._changeDetectorRef=s,this.callSetDisabledState=a,this._parent=e,this._setValidators(i),this._setAsyncValidators(o),this.valueAccessor=hS(0,r)}ngOnChanges(e){if(this._checkForErrors(),!this._registered||"name"in e){if(this._registered&&(this._checkName(),this.formDirective)){const i=e.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in e&&this._updateDisabled(e),uS(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective?.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_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(){op(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(e){aB.then(()=>{this.control.setValue(e,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(e){const i=e.isDisabled.currentValue,o=0!==i&&Te(i);aB.then(()=>{o&&!this.control.disabled?this.control.disable():!o&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(e){return this._parent?rv(e,this._parent):[e]}static \u0275fac=function(i){return new(i||t)(O(Ki,9),O(ki,10),O(Pa,10),O(Qo,10),O(Dt,8),O(fc,8))};static \u0275dir=de({type:t,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],standalone:!1,features:[dt([ffe]),_e,vi]})}return t})(),kn=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""],standalone:!1})}return t})();const pfe={provide:Qo,useExisting:jt(()=>Oa),multi:!0};let Oa=(()=>{class t extends hc{writeValue(e){this.setProperty("value",e??"")}registerOnChange(e){this.onChange=i=>{e(""==i?null:parseFloat(i))}}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(i,o){1&i&&F("input",function(s){return o.onChange(s.target.value)})("blur",function(){return o.onTouched()})},standalone:!1,features:[dt([pfe]),_e]})}return t})();class dB extends iv{constructor(n,e,i){super(aS(e),lS(i,e)),this.controls=n,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;at(n){return this.controls[this._adjustIndex(n)]}push(n,e={}){Array.isArray(n)?n.forEach(i=>{this.controls.push(i),this._registerControl(i)}):(this.controls.push(n),this._registerControl(n)),this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}insert(n,e,i={}){this.controls.splice(n,0,e),this._registerControl(e),this.updateValueAndValidity({emitEvent:i.emitEvent})}removeAt(n,e={}){let i=this._adjustIndex(n);i<0&&(i=0),this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),this.controls.splice(i,1),this.updateValueAndValidity({emitEvent:e.emitEvent})}setControl(n,e,i={}){let o=this._adjustIndex(n);o<0&&(o=0),this.controls[o]&&this.controls[o]._registerOnCollectionChange(()=>{}),this.controls.splice(o,1),e&&(this.controls.splice(o,0,e),this._registerControl(e)),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(n,e={}){eB(this,0,n),n.forEach((i,o)=>{J5(this,!1,o),this.at(o).setValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(n,e={}){null!=n&&(n.forEach((i,o)=>{this.at(o)&&this.at(o).patchValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(n=[],e={}){this._forEachChild((i,o)=>{i.reset(n[o],{...e,onlySelf:!0})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e),!1!==e?.emitEvent&&this._events.next(new sS(this))}getRawValue(){return this.controls.map(n=>n.getRawValue())}clear(n={}){this.controls.length<1||(this._forEachChild(e=>e._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:n.emitEvent}))}_adjustIndex(n){return n<0?n+this.length:n}_syncPendingControls(){let n=this.controls.reduce((e,i)=>!!i._syncPendingControls()||e,!1);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){this.controls.forEach((e,i)=>{n(e,i)})}_updateValue(){this.value=this.controls.filter(n=>n.enabled||this.disabled).map(n=>n.value)}_anyControls(n){return this.controls.some(e=>e.enabled&&n(e))}_setUpControls(){this._forEachChild(n=>this._registerControl(n))}_allControlsDisabled(){for(const n of this.controls)if(n.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(n){n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)}_find(n){return this.at(n)??null}}let uv=(()=>{class t extends Ki{callSetDisabledState;get submitted(){return it(this._submittedReactive)}set submitted(e){this._submittedReactive.set(e)}_submitted=Fi(()=>this._submittedReactive());_submittedReactive=Ct(!1);_oldForm;_onCollectionChange=()=>this._updateDomValue();directives=[];constructor(e,i,o){super(),this.callSetDisabledState=o,this._setValidators(e),this._setAsyncValidators(i)}ngOnChanges(e){this.onChanges(e)}ngOnDestroy(){this.onDestroy()}onChanges(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}onDestroy(){this.form&&(lv(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get path(){return[]}addControl(e){const i=this.form.get(e.path);return op(i,e,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),i}getControl(e){return this.form.get(e.path)}removeControl(e){sv(e.control||null,e,!1),function afe(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}getFormArray(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}updateModel(e,i){this.form.get(e.path).setValue(i)}onReset(){this.resetForm()}resetForm(e=void 0,i={}){this.form.reset(e,i),this._submittedReactive.set(!1)}onSubmit(e){return this.submitted=!0,oB(this.form,this.directives),this.ngSubmit.emit(e),this.form._events.next(new Q5(this.control)),"dialog"===e?.target?.method}_updateDomValue(){this.directives.forEach(e=>{const i=e.control,o=this.form.get(e.path);i!==o&&(sv(i||null,e),(t=>t instanceof mu)(o)&&(op(o,e,this.callSetDisabledState),e.control=o))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){const i=this.form.get(e.path);iB(i,e),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){const i=this.form?.get(e.path);i&&function ofe(t,n){return lv(t,n)}(i,e)&&i.updateValueAndValidity({emitEvent:!1})}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm?._registerOnCollectionChange(()=>{})}_updateValidators(){cS(this.form,this),this._oldForm&&lv(this._oldForm,this)}_checkFormPresent(){}static \u0275fac=function(i){return new(i||t)(O(ki,10),O(Pa,10),O(fc,8))};static \u0275dir=de({type:t,features:[_e,vi]})}return t})();const fS=new Z(""),yfe={provide:Ki,useExisting:jt(()=>pc)};let pc=(()=>{class t extends cv{name=null;constructor(e,i,o){super(),this._parent=e,this._setValidators(i),this._setAsyncValidators(o)}_checkParentType(){fB(this._parent)}static \u0275fac=function(i){return new(i||t)(O(Ki,13),O(ki,10),O(Pa,10))};static \u0275dir=de({type:t,selectors:[["","formGroupName",""]],inputs:{name:[0,"formGroupName","name"]},standalone:!1,features:[dt([yfe]),_e]})}return t})();const Cfe={provide:Ki,useExisting:jt(()=>_u)};let _u=(()=>{class t extends Ki{_parent;name=null;constructor(e,i,o){super(),this._parent=e,this._setValidators(i),this._setAsyncValidators(o)}ngOnInit(){fB(this._parent),this.formDirective.addFormArray(this)}ngOnDestroy(){this.formDirective?.removeFormArray(this)}get control(){return this.formDirective.getFormArray(this)}get formDirective(){return this._parent?this._parent.formDirective:null}get path(){return rv(null==this.name?this.name:this.name.toString(),this._parent)}static \u0275fac=function(i){return new(i||t)(O(Ki,13),O(ki,10),O(Pa,10))};static \u0275dir=de({type:t,selectors:[["","formArrayName",""]],inputs:{name:[0,"formArrayName","name"]},standalone:!1,features:[dt([Cfe]),_e]})}return t})();function fB(t){return!(t instanceof pc||t instanceof uv||t instanceof _u)}const wfe={provide:ts,useExisting:jt(()=>_n)};let _n=(()=>{class t extends ts{_ngModelWarningConfig;_added=!1;viewModel;control;name=null;set isDisabled(e){}model;update=new ke;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(e,i,o,r,s){super(),this._ngModelWarningConfig=s,this._parent=e,this._setValidators(i),this._setAsyncValidators(o),this.valueAccessor=hS(0,r)}ngOnChanges(e){this._added||this._setUpControl(),uS(e,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective?.removeControl(this)}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}get path(){return rv(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_setUpControl(){this.control=this.formDirective.addControl(this),this._added=!0}static \u0275fac=function(i){return new(i||t)(O(Ki,13),O(ki,10),O(Pa,10),O(Qo,10),O(fS,8))};static \u0275dir=de({type:t,selectors:[["","formControlName",""]],inputs:{name:[0,"formControlName","name"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},standalone:!1,features:[dt([wfe]),_e,vi]})}return t})();const xfe={provide:Ki,useExisting:jt(()=>sn)};let sn=(()=>{class t extends uv{form=null;ngSubmit=new ke;get control(){return this.form}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","formGroup",""]],hostBindings:function(i,o){1&i&&F("submit",function(s){return o.onSubmit(s)})("reset",function(){return o.onReset()})},inputs:{form:[0,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[dt([xfe]),_e]})}return t})();function _B(t){return"number"==typeof t?t:parseFloat(t)}let mc=(()=>{class t{_validator=Zb;_onChange;_enabled;ngOnChanges(e){if(this.inputName in e){const i=this.normalizeInput(e[this.inputName].currentValue);this._enabled=this.enabled(i),this._validator=this._enabled?this.createValidator(i):Zb,this._onChange?.()}}validate(e){return this._validator(e)}registerOnValidatorChange(e){this._onChange=e}enabled(e){return null!=e}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,features:[vi]})}return t})();const Pfe={provide:ki,useExisting:jt(()=>hv),multi:!0};let hv=(()=>{class t extends mc{max;inputName="max";normalizeInput=e=>_B(e);createValidator=e=>T5(e);static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["input","type","number","max","","formControlName",""],["input","type","number","max","","formControl",""],["input","type","number","max","","ngModel",""]],hostVars:1,hostBindings:function(i,o){2&i&&We("max",o._enabled?o.max:null)},inputs:{max:"max"},standalone:!1,features:[dt([Pfe]),_e]})}return t})();const Ife={provide:ki,useExisting:jt(()=>gc),multi:!0};let gc=(()=>{class t extends mc{min;inputName="min";normalizeInput=e=>_B(e);createValidator=e=>D5(e);static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["input","type","number","min","","formControlName",""],["input","type","number","min","","formControl",""],["input","type","number","min","","ngModel",""]],hostVars:1,hostBindings:function(i,o){2&i&&We("min",o._enabled?o.min:null)},inputs:{min:"min"},standalone:!1,features:[dt([Ife]),_e]})}return t})();const Nfe={provide:ki,useExisting:jt(()=>Bi),multi:!0};let Bi=(()=>{class t extends mc{maxlength;inputName="maxlength";normalizeInput=e=>function gB(t){return"number"==typeof t?t:parseInt(t,10)}(e);createValidator=e=>A5(e);static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(i,o){2&i&&We("maxlength",o._enabled?o.maxlength:null)},inputs:{maxlength:"maxlength"},standalone:!1,features:[dt([Nfe]),_e]})}return t})(),wB=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function xB(t){return!!t&&(void 0!==t.asyncValidators||void 0!==t.validators||void 0!==t.updateOn)}let kB=(()=>{class t{useNonNullable=!1;get nonNullable(){const e=new t;return e.useNonNullable=!0,e}group(e,i=null){const o=this._reduceControls(e);let r={};return xB(i)?r=i:null!==i&&(r.validators=i.validator,r.asyncValidators=i.asyncValidator),new fu(o,r)}record(e,i=null){const o=this._reduceControls(e);return new tB(o,i)}control(e,i,o){let r={};return this.useNonNullable?(xB(i)?r=i:(r.validators=i,r.asyncValidators=o),new mu(e,{...r,nonNullable:!0})):new mu(e,i,o)}array(e,i,o){const r=e.map(s=>this._createControl(s));return new dB(r,i,o)}_reduceControls(e){const i={};return Object.keys(e).forEach(o=>{i[o]=this._createControl(e[o])}),i}_createControl(e){return e instanceof mu||e instanceof iv?e:Array.isArray(e)?this.control(e[0],e.length>1?e[1]:null,e.length>2?e[2]:null):this.control(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Si=(()=>{class t extends kB{group(e,i=null){return super.group(e,i)}control(e,i,o){return super.control(e,i,o)}array(e,i,o){return super.array(e,i,o)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Bfe=(()=>{class t{static withConfig(e){return{ngModule:t,providers:[{provide:fc,useValue:e.callSetDisabledState??ip}]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[wB]})}return t})(),Vfe=(()=>{class t{static withConfig(e){return{ngModule:t,providers:[{provide:fS,useValue:e.warnOnNgModelWithFormControl??"always"},{provide:fc,useValue:e.callSetDisabledState??ip}]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[wB]})}return t})();function bu(t){return null!=t&&"false"!=`${t}`}class Ufe{_box;_destroyed=new be;_resizeSubject=new be;_resizeObserver;_elementObservables=new Map;constructor(n){this._box=n,typeof ResizeObserver<"u"&&(this._resizeObserver=new ResizeObserver(e=>this._resizeSubject.next(e)))}observe(n){return this._elementObservables.has(n)||this._elementObservables.set(n,new zt(e=>{const i=this._resizeSubject.subscribe(e);return this._resizeObserver?.observe(n,{box:this._box}),()=>{this._resizeObserver?.unobserve(n),i.unsubscribe(),this._elementObservables.delete(n)}}).pipe(Pn(e=>e.some(i=>i.target===n)),jk({bufferSize:1,refCount:!0}),ln(this._destroyed))),this._elementObservables.get(n)}destroy(){this._destroyed.next(),this._destroyed.complete(),this._resizeSubject.complete(),this._elementObservables.clear()}}let SB=(()=>{class t{_cleanupErrorListener;_observers=new Map;_ngZone=T(Ce);constructor(){}ngOnDestroy(){for(const[,e]of this._observers)e.destroy();this._observers.clear(),this._cleanupErrorListener?.()}observe(e,i){const o=i?.box||"content-box";return this._observers.has(o)||this._observers.set(o,new Ufe(o)),this._observers.get(o).observe(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const zfe=["notch"],jfe=["matFormFieldNotchedOutline",""],$fe=["*"],MB=["iconPrefixContainer"],DB=["textPrefixContainer"],TB=["iconSuffixContainer"],EB=["textSuffixContainer"],Wfe=["textField"],Gfe=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],qfe=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];function Kfe(t,n){1&t&&L(0,"span",21)}function Yfe(t,n){if(1&t&&(h(0,"label",20),Rt(1,1),x(2,Kfe,1,0,"span",21),u()),2&t){const e=y(2);C("floating",e._shouldLabelFloat())("monitorResize",e._hasOutline())("id",e._labelId),We("for",e._control.disableAutomaticLabeling?null:e._control.id),c(2),k(!e.hideRequiredMarker&&e._control.required?2:-1)}}function Xfe(t,n){1&t&&x(0,Yfe,3,5,"label",20),2&t&&k(y()._hasFloatingLabel()?0:-1)}function Zfe(t,n){1&t&&L(0,"div",7)}function Qfe(t,n){}function Jfe(t,n){1&t&&rt(0,Qfe,0,0,"ng-template",13),2&t&&(y(2),C("ngTemplateOutlet",Un(1)))}function epe(t,n){if(1&t&&(h(0,"div",9),x(1,Jfe,1,1,null,13),u()),2&t){const e=y();C("matFormFieldNotchedOutlineOpen",e._shouldLabelFloat()),c(),k(e._forceDisplayInfixLabel()?-1:1)}}function tpe(t,n){1&t&&(h(0,"div",10,2),Rt(2,2),u())}function npe(t,n){1&t&&(h(0,"div",11,3),Rt(2,3),u())}function ipe(t,n){}function ope(t,n){1&t&&rt(0,ipe,0,0,"ng-template",13),2&t&&(y(),C("ngTemplateOutlet",Un(1)))}function rpe(t,n){1&t&&(h(0,"div",14,4),Rt(2,4),u())}function spe(t,n){1&t&&(h(0,"div",15,5),Rt(2,5),u())}function ape(t,n){1&t&&L(0,"div",16)}function lpe(t,n){1&t&&(h(0,"div",18),Rt(1,6),u())}function cpe(t,n){if(1&t&&(h(0,"mat-hint",22),p(1),u()),2&t){const e=y(2);C("id",e._hintLabelId),c(),S(e.hintLabel)}}function dpe(t,n){if(1&t&&(h(0,"div",19),x(1,cpe,2,2,"mat-hint",22),Rt(2,7),L(3,"div",23),Rt(4,8),u()),2&t){const e=y();c(),k(e.hintLabel?1:-1)}}let ns=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-label"]]})}return t})();const PB=new Z("MatError");let Aa=(()=>{class t{id=T(si).getId("mat-mdc-error-");constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-error"],["","matError",""]],hostAttrs:[1,"mat-mdc-form-field-error","mat-mdc-form-field-bottom-align"],hostVars:1,hostBindings:function(i,o){2&i&&gr("id",o.id)},inputs:{id:"id"},features:[dt([{provide:PB,useExisting:t}])]})}return t})(),sp=(()=>{class t{align="start";id=T(si).getId("mat-mdc-hint-");static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(i,o){2&i&&(gr("id",o.id),We("align",null),ve("mat-mdc-form-field-hint-end","end"===o.align))},inputs:{align:"align",id:"id"}})}return t})();const upe=new Z("MatPrefix"),hpe=new Z("MatSuffix"),IB=new Z("FloatingLabelParent");let OB=(()=>{class t{_elementRef=T(Ne);get floating(){return this._floating}set floating(e){this._floating=e,this.monitorResize&&this._handleResize()}_floating=!1;get monitorResize(){return this._monitorResize}set monitorResize(e){this._monitorResize=e,this._monitorResize?this._subscribeToResize():this._resizeSubscription.unsubscribe()}_monitorResize=!1;_resizeObserver=T(SB);_ngZone=T(Ce);_parent=T(IB);_resizeSubscription=new gt;constructor(){}ngOnDestroy(){this._resizeSubscription.unsubscribe()}getWidth(){return function fpe(t){if(null!==t.offsetParent)return t.scrollWidth;const e=t.cloneNode(!0);e.style.setProperty("position","absolute"),e.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(e);const i=e.scrollWidth;return e.remove(),i}(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}_handleResize(){setTimeout(()=>this._parent._handleLabelResized())}_subscribeToResize(){this._resizeSubscription.unsubscribe(),this._ngZone.runOutsideAngular(()=>{this._resizeSubscription=this._resizeObserver.observe(this._elementRef.nativeElement,{box:"border-box"}).subscribe(()=>this._handleResize())})}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(i,o){2&i&&ve("mdc-floating-label--float-above",o.floating)},inputs:{floating:"floating",monitorResize:"monitorResize"}})}return t})();const AB="mdc-line-ripple--active",fv="mdc-line-ripple--deactivating";let RB=(()=>{class t{_elementRef=T(Ne);_cleanupTransitionEnd;constructor(){const e=T(Ce),i=T(ei);e.runOutsideAngular(()=>{this._cleanupTransitionEnd=i.listen(this._elementRef.nativeElement,"transitionend",this._handleTransitionEnd)})}activate(){const e=this._elementRef.nativeElement.classList;e.remove(fv),e.add(AB)}deactivate(){this._elementRef.nativeElement.classList.add(fv)}_handleTransitionEnd=e=>{const i=this._elementRef.nativeElement.classList,o=i.contains(fv);"opacity"===e.propertyName&&o&&i.remove(AB,fv)};ngOnDestroy(){this._cleanupTransitionEnd()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"]})}return t})(),FB=(()=>{class t{_elementRef=T(Ne);_ngZone=T(Ce);open=!1;_notch;ngAfterViewInit(){const e=this._elementRef.nativeElement,i=e.querySelector(".mdc-floating-label");i?(e.classList.add("mdc-notched-outline--upgraded"),"function"==typeof requestAnimationFrame&&(i.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>i.style.transitionDuration="")}))):e.classList.add("mdc-notched-outline--no-label")}_setNotchWidth(e){this._notch.nativeElement.style.width=this.open&&e?`calc(${e}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`:""}_setMaxWidth(e){this._notch.nativeElement.style.setProperty("--mat-form-field-notch-max-width",`calc(100% - ${e}px)`)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["div","matFormFieldNotchedOutline",""]],viewQuery:function(i,o){if(1&i&&st(zfe,5),2&i){let r;fe(r=pe())&&(o._notch=r.first)}},hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(i,o){2&i&&ve("mdc-notched-outline--notched",o.open)},inputs:{open:[0,"matFormFieldNotchedOutlineOpen","open"]},attrs:jfe,ngContentSelectors:$fe,decls:5,vars:0,consts:[["notch",""],[1,"mat-mdc-notch-piece","mdc-notched-outline__leading"],[1,"mat-mdc-notch-piece","mdc-notched-outline__notch"],[1,"mat-mdc-notch-piece","mdc-notched-outline__trailing"]],template:function(i,o){1&i&&(xi(),ma(0,"div",1),Ms(1,"div",2,0),Rt(3),Bl(),ma(4,"div",3))},encapsulation:2,changeDetection:0})}return t})(),_S=(()=>{class t{value=null;stateChanges;id;placeholder;ngControl=null;focused=!1;empty=!1;shouldLabelFloat=!1;required=!1;disabled=!1;errorState=!1;controlType;autofilled;userAriaDescribedBy;disableAutomaticLabeling;describedByIds;static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t})}return t})();const bS=new Z("MatFormField"),ppe=new Z("MAT_FORM_FIELD_DEFAULT_OPTIONS");let vu,dn=(()=>{class t{_elementRef=T(Ne);_changeDetectorRef=T(Dt);_platform=T(Zn);_idGenerator=T(si);_ngZone=T(Ce);_defaults=T(ppe,{optional:!0});_currentDirection;_textField;_iconPrefixContainer;_textPrefixContainer;_iconSuffixContainer;_textSuffixContainer;_floatingLabel;_notchedOutline;_lineRipple;_iconPrefixContainerSignal=f_("iconPrefixContainer");_textPrefixContainerSignal=f_("textPrefixContainer");_iconSuffixContainerSignal=f_("iconSuffixContainer");_textSuffixContainerSignal=f_("textSuffixContainer");_prefixSuffixContainers=Fi(()=>[this._iconPrefixContainerSignal(),this._textPrefixContainerSignal(),this._iconSuffixContainerSignal(),this._textSuffixContainerSignal()].map(e=>e?.nativeElement).filter(e=>void 0!==e));_formFieldControl;_prefixChildren;_suffixChildren;_errorChildren;_hintChildren;_labelChild=pee(ns);get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(e){this._hideRequiredMarker=bu(e)}_hideRequiredMarker=!1;color="primary";get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||"auto"}set floatLabel(e){e!==this._floatLabel&&(this._floatLabel=e,this._changeDetectorRef.markForCheck())}_floatLabel;get appearance(){return this._appearanceSignal()}set appearance(e){this._appearanceSignal.set(e||this._defaults?.appearance||"fill")}_appearanceSignal=Ct("fill");get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||"fixed"}set subscriptSizing(e){this._subscriptSizing=e||this._defaults?.subscriptSizing||"fixed"}_subscriptSizing=null;get hintLabel(){return this._hintLabel}set hintLabel(e){this._hintLabel=e,this._processHints()}_hintLabel="";_hasIconPrefix=!1;_hasTextPrefix=!1;_hasIconSuffix=!1;_hasTextSuffix=!1;_labelId=this._idGenerator.getId("mat-mdc-form-field-label-");_hintLabelId=this._idGenerator.getId("mat-mdc-hint-");_describedByIds;get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(e){this._explicitFormFieldControl=e}_destroyed=new be;_isFocused=null;_explicitFormFieldControl;_previousControl=null;_previousControlValidatorFn=null;_stateChanges;_valueChanges;_describedByChanges;_outlineLabelOffsetResizeObserver=null;_animationsDisabled=hi();constructor(){const e=this._defaults,i=T(kr);e&&(e.appearance&&(this.appearance=e.appearance),this._hideRequiredMarker=!!e?.hideRequiredMarker,e.color&&(this.color=e.color)),vm(()=>this._currentDirection=i.valueSignal()),this._syncOutlineLabelOffset()}ngAfterViewInit(){this._updateFocusState(),this._animationsDisabled||this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-form-field-animations-enabled")},300)}),this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeSubscript(),this._initializePrefixAndSuffix()}ngAfterContentChecked(){this._assertFormFieldControl(),this._control!==this._previousControl&&(this._initializeControl(this._previousControl),this._control.ngControl&&this._control.ngControl.control&&(this._previousControlValidatorFn=this._control.ngControl.control.validator),this._previousControl=this._control),this._control.ngControl&&this._control.ngControl.control&&this._control.ngControl.control.validator!==this._previousControlValidatorFn&&this._changeDetectorRef.markForCheck()}ngOnDestroy(){this._outlineLabelOffsetResizeObserver?.disconnect(),this._stateChanges?.unsubscribe(),this._valueChanges?.unsubscribe(),this._describedByChanges?.unsubscribe(),this._destroyed.next(),this._destroyed.complete()}getLabelId=Fi(()=>this._hasFloatingLabel()?this._labelId:null);getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(e){const i=this._control,o="mat-mdc-form-field-type-";e&&this._elementRef.nativeElement.classList.remove(o+e.controlType),i.controlType&&this._elementRef.nativeElement.classList.add(o+i.controlType),this._stateChanges?.unsubscribe(),this._stateChanges=i.stateChanges.subscribe(()=>{this._updateFocusState(),this._changeDetectorRef.markForCheck()}),this._describedByChanges?.unsubscribe(),this._describedByChanges=i.stateChanges.pipe(zn([void 0,void 0]),De(()=>[i.errorState,i.userAriaDescribedBy]),function Hfe(){return En((t,n)=>{let e,i=!1;t.subscribe(pn(n,o=>{const r=e;e=o,i&&n.next([r,o]),i=!0}))})}(),Pn(([[r,s],[a,l]])=>r!==a||s!==l)).subscribe(()=>this._syncDescribedByIds()),this._valueChanges?.unsubscribe(),i.ngControl&&i.ngControl.valueChanges&&(this._valueChanges=i.ngControl.valueChanges.pipe(ln(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck()))}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(e=>!e._isText),this._hasTextPrefix=!!this._prefixChildren.find(e=>e._isText),this._hasIconSuffix=!!this._suffixChildren.find(e=>!e._isText),this._hasTextSuffix=!!this._suffixChildren.find(e=>e._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),Dr(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){}_updateFocusState(){const e=this._control.focused;e&&!this._isFocused?(this._isFocused=!0,this._lineRipple?.activate()):!e&&(this._isFocused||null===this._isFocused)&&(this._isFocused=!1,this._lineRipple?.deactivate()),this._elementRef.nativeElement.classList.toggle("mat-focused",e),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",e)}_syncOutlineLabelOffset(){!function mte(t,n){const e=n?.injector??T(Ue),i=e.get(fl),o=e.get(bC),r=e.get(da,null,{optional:!0});o.impl??=e.get(PE);let s=t;"function"==typeof s&&(s={mixedReadWrite:t});const a=e.get(gm,null,{optional:!0}),l=new pte(o.impl,[s.earlyRead,s.write,s.mixedReadWrite,s.read],a?.view,i,e,r?.snapshot(null));o.impl.register(l)}({earlyRead:()=>{if("outline"!==this._appearanceSignal())return this._outlineLabelOffsetResizeObserver?.disconnect(),null;if(globalThis.ResizeObserver){this._outlineLabelOffsetResizeObserver||=new globalThis.ResizeObserver(()=>{this._writeOutlinedLabelStyles(this._getOutlinedLabelOffset())});for(const e of this._prefixSuffixContainers())this._outlineLabelOffsetResizeObserver.observe(e,{box:"border-box"})}return this._getOutlinedLabelOffset()},write:e=>this._writeOutlinedLabelStyles(e())})}_shouldAlwaysFloat(){return"always"===this.floatLabel}_hasOutline(){return"outline"===this.appearance}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel=Fi(()=>!!this._labelChild());_shouldLabelFloat(){return!!this._hasFloatingLabel()&&(this._control.shouldLabelFloat||this._shouldAlwaysFloat())}_shouldForward(e){const i=this._control?this._control.ngControl:null;return i&&i[e]}_getSubscriptMessageType(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_handleLabelResized(){this._refreshOutlineNotchWidth()}_refreshOutlineNotchWidth(){this._hasOutline()&&this._floatingLabel&&this._shouldLabelFloat()?this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth()):this._notchedOutline?._setNotchWidth(0)}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){}_syncDescribedByIds(){if(this._control){let e=[];if(this._control.userAriaDescribedBy&&"string"==typeof this._control.userAriaDescribedBy&&e.push(...this._control.userAriaDescribedBy.split(" ")),"hint"===this._getSubscriptMessageType()){const r=this._hintChildren?this._hintChildren.find(a=>"start"===a.align):null,s=this._hintChildren?this._hintChildren.find(a=>"end"===a.align):null;r?e.push(r.id):this._hintLabel&&e.push(this._hintLabelId),s&&e.push(s.id)}else this._errorChildren&&e.push(...this._errorChildren.map(r=>r.id));const i=this._control.describedByIds;let o;if(i){const r=this._describedByIds||e;o=e.concat(i.filter(s=>s&&!r.includes(s)))}else o=e;this._control.setDescribedByIds(o),this._describedByIds=e}}_getOutlinedLabelOffset(){if(!this._hasOutline()||!this._floatingLabel)return null;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return["",null];if(!this._isAttachedToDom())return null;const e=this._iconPrefixContainer?.nativeElement,i=this._textPrefixContainer?.nativeElement,o=this._iconSuffixContainer?.nativeElement,r=this._textSuffixContainer?.nativeElement,s=e?.getBoundingClientRect().width??0,a=i?.getBoundingClientRect().width??0,l=o?.getBoundingClientRect().width??0,d=r?.getBoundingClientRect().width??0;return[`var(--mat-mdc-form-field-label-transform, translateY(-50%) translateX(calc(${"rtl"===this._currentDirection?"-1":"1"} * (${s+a}px + var(--mat-mdc-form-field-label-offset-x, 0px)))))`,s+a+l+d]}_writeOutlinedLabelStyles(e){if(null!==e){const[i,o]=e;this._floatingLabel&&(this._floatingLabel.element.style.transform=i),null!==o&&this._notchedOutline?._setMaxWidth(o)}}_isAttachedToDom(){const e=this._elementRef.nativeElement;if(e.getRootNode){const i=e.getRootNode();return i&&i!==e}return document.documentElement.contains(e)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-form-field"]],contentQueries:function(i,o,r){if(1&i&&(H0(r,o._labelChild,ns,5),Ds(r,_S,5)(r,upe,5)(r,hpe,5)(r,PB,5)(r,sp,5)),2&i){let s;z0(),fe(s=pe())&&(o._formFieldControl=s.first),fe(s=pe())&&(o._prefixChildren=s),fe(s=pe())&&(o._suffixChildren=s),fe(s=pe())&&(o._errorChildren=s),fe(s=pe())&&(o._hintChildren=s)}},viewQuery:function(i,o){if(1&i&&(U0(o._iconPrefixContainerSignal,MB,5)(o._textPrefixContainerSignal,DB,5)(o._iconSuffixContainerSignal,TB,5)(o._textSuffixContainerSignal,EB,5),st(Wfe,5)(MB,5)(DB,5)(TB,5)(EB,5)(OB,5)(FB,5)(RB,5)),2&i){let r;z0(4),fe(r=pe())&&(o._textField=r.first),fe(r=pe())&&(o._iconPrefixContainer=r.first),fe(r=pe())&&(o._textPrefixContainer=r.first),fe(r=pe())&&(o._iconSuffixContainer=r.first),fe(r=pe())&&(o._textSuffixContainer=r.first),fe(r=pe())&&(o._floatingLabel=r.first),fe(r=pe())&&(o._notchedOutline=r.first),fe(r=pe())&&(o._lineRipple=r.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:38,hostBindings:function(i,o){2&i&&ve("mat-mdc-form-field-label-always-float",o._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",o._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",o._hasIconSuffix)("mat-form-field-invalid",o._control.errorState)("mat-form-field-disabled",o._control.disabled)("mat-form-field-autofilled",o._control.autofilled)("mat-form-field-appearance-fill","fill"==o.appearance)("mat-form-field-appearance-outline","outline"==o.appearance)("mat-form-field-hide-placeholder",o._hasFloatingLabel()&&!o._shouldLabelFloat())("mat-primary","accent"!==o.color&&"warn"!==o.color)("mat-accent","accent"===o.color)("mat-warn","warn"===o.color)("ng-untouched",o._shouldForward("untouched"))("ng-touched",o._shouldForward("touched"))("ng-pristine",o._shouldForward("pristine"))("ng-dirty",o._shouldForward("dirty"))("ng-valid",o._shouldForward("valid"))("ng-invalid",o._shouldForward("invalid"))("ng-pending",o._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],features:[dt([{provide:bS,useExisting:t},{provide:IB,useExisting:t}])],ngContentSelectors:qfe,decls:18,vars:21,consts:[["labelTemplate",""],["textField",""],["iconPrefixContainer",""],["textPrefixContainer",""],["textSuffixContainer",""],["iconSuffixContainer",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],[1,"mat-mdc-form-field-focus-overlay"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen"],[1,"mat-mdc-form-field-icon-prefix"],[1,"mat-mdc-form-field-text-prefix"],[1,"mat-mdc-form-field-infix"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],["aria-atomic","true","aria-live","polite",1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align"],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],["matFormFieldFloatingLabel","",3,"floating","monitorResize","id"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[3,"id"],[1,"mat-mdc-form-field-hint-spacer"]],template:function(i,o){if(1&i&&(xi(Gfe),rt(0,Xfe,1,1,"ng-template",null,0,Ul),h(2,"div",6,1),F("click",function(s){return o._control.onContainerClick(s)}),x(4,Zfe,1,0,"div",7),h(5,"div",8),x(6,epe,2,2,"div",9),x(7,tpe,3,0,"div",10),x(8,npe,3,0,"div",11),h(9,"div",12),x(10,ope,1,1,null,13),Rt(11),u(),x(12,rpe,3,0,"div",14),x(13,spe,3,0,"div",15),u(),x(14,ape,1,0,"div",16),u(),h(15,"div",17),x(16,lpe,2,0,"div",18)(17,dpe,5,1,"div",19),u()),2&i){let r;c(2),ve("mdc-text-field--filled",!o._hasOutline())("mdc-text-field--outlined",o._hasOutline())("mdc-text-field--no-label",!o._hasFloatingLabel())("mdc-text-field--disabled",o._control.disabled)("mdc-text-field--invalid",o._control.errorState),c(2),k(o._hasOutline()||o._control.disabled?-1:4),c(2),k(o._hasOutline()?6:-1),c(),k(o._hasIconPrefix?7:-1),c(),k(o._hasTextPrefix?8:-1),c(2),k(!o._hasOutline()||o._forceDisplayInfixLabel()?10:-1),c(2),k(o._hasTextSuffix?12:-1),c(),k(o._hasIconSuffix?13:-1),c(),k(o._hasOutline()?-1:14),c(),ve("mat-mdc-form-field-subscript-dynamic-size","dynamic"===o.subscriptSizing);const s=o._getSubscriptMessageType();c(),k("error"===(r=s)?16:"hint"===r?17:-1)}},dependencies:[OB,FB,Wd,RB,sp],styles:['.mdc-text-field{display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field__input{width:100%;min-width:0;border:none;border-radius:0;background:none;padding:0;-moz-appearance:none;-webkit-appearance:none;height:28px}.mdc-text-field__input::-webkit-calendar-picker-indicator,.mdc-text-field__input::-webkit-search-cancel-button{display:none}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}.mdc-text-field__input::placeholder{opacity:0}.mdc-text-field__input::-moz-placeholder{opacity:0}.mdc-text-field__input::-webkit-input-placeholder{opacity:0}.mdc-text-field__input:-ms-input-placeholder{opacity:0}.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-moz-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-webkit-input-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive:-ms-input-placeholder{opacity:0}.mdc-text-field--outlined .mdc-text-field__input,.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mat-form-field-filled-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mat-form-field-filled-caret-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mat-form-field-outlined-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mat-form-field-outlined-caret-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mat-form-field-filled-error-caret-color, var(--mat-sys-error))}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mat-form-field-outlined-error-caret-color, var(--mat-sys-error))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mat-form-field-filled-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mat-form-field-outlined-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}}.mdc-text-field--filled{height:56px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));border-top-right-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mat-form-field-filled-container-color, var(--mat-sys-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mat-form-field-filled-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 4%, transparent))}.mdc-text-field--outlined{height:56px;overflow:visible;padding-right:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)));padding-left:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)) + 4px)}[dir=rtl] .mdc-text-field--outlined{padding-right:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)) + 4px);padding-left:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)))}.mdc-floating-label{position:absolute;left:0;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label{right:0;left:auto;transform-origin:right top;text-align:right}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:auto}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label{left:auto;right:4px}.mdc-text-field--filled .mdc-floating-label{left:16px;right:auto}[dir=rtl] .mdc-text-field--filled .mdc-floating-label{left:auto;right:16px}.mdc-text-field--disabled .mdc-floating-label{cursor:default}@media(forced-colors: active){.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mat-form-field-filled-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-filled-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mat-form-field-filled-hover-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label{color:var(--mat-form-field-filled-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mat-form-field-filled-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-filled-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mat-form-field-filled-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mat-form-field-filled-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-form-field-filled-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-form-field-filled-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-form-field-filled-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mat-form-field-outlined-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-outlined-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mat-form-field-outlined-hover-label-text-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label{color:var(--mat-form-field-outlined-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mat-form-field-outlined-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-outlined-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mat-form-field-outlined-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mat-form-field-outlined-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-form-field-outlined-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-form-field-outlined-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-form-field-outlined-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-floating-label--float-above{cursor:auto;transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1);font-size:.75rem}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0;content:"*"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline{text-align:right}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mat-mdc-notch-piece{box-sizing:border-box;height:100%;pointer-events:none;border:none;border-top:1px solid;border-bottom:1px solid}.mdc-text-field--focused .mat-mdc-notch-piece{border-width:2px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-outline-color, var(--mat-sys-outline));border-width:var(--mat-form-field-outlined-outline-width, 1px)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-hover-outline-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-focus-outline-color, var(--mat-sys-primary))}.mdc-text-field--outlined.mdc-text-field--disabled .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-notched-outline .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-hover-outline-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-focus-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mat-mdc-notch-piece{border-width:var(--mat-form-field-outlined-focus-outline-width, 2px)}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)))}[dir=rtl] .mdc-notched-outline__leading{border-left:none;border-right:1px solid;border-bottom-left-radius:0;border-top-left-radius:0;border-top-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__trailing{flex-grow:1;border-left:none;border-right:1px solid;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}[dir=rtl] .mdc-notched-outline__trailing{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:min(var(--mat-form-field-notch-max-width, 100%),calc(100% - max(12px, var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))) * 2))}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{max-width:min(100%,calc(100% - max(12px, var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))) * 2))}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{z-index:1;border-bottom-width:var(--mat-form-field-filled-active-indicator-height, 1px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-active-indicator-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-hover-active-indicator-color, var(--mat-sys-on-surface))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-disabled-active-indicator-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-error-active-indicator-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-error-hover-active-indicator-color, var(--mat-sys-on-error-container))}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mat-form-field-filled-focus-active-indicator-height, 2px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mat-form-field-filled-focus-active-indicator-color, var(--mat-sys-primary))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mat-form-field-filled-error-focus-active-indicator-color, var(--mat-sys-error))}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-text-field--disabled{pointer-events:none}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all;will-change:auto}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto;will-change:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:var(--mat-form-field-container-height, 56px);padding-top:var(--mat-form-field-filled-with-label-container-padding-top, 24px);padding-bottom:var(--mat-form-field-filled-with-label-container-padding-bottom, 8px)}.mdc-text-field--outlined .mat-mdc-form-field-infix,.mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:var(--mat-form-field-container-vertical-padding, 16px);padding-bottom:var(--mat-form-field-container-vertical-padding, 16px)}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:calc(var(--mat-form-field-container-height, 56px)/2)}.mdc-text-field--filled .mat-mdc-floating-label{display:var(--mat-form-field-filled-label-display, block)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(calc(calc(6.75px + var(--mat-form-field-container-height, 56px) / 2) * -1)) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}@keyframes _mat-form-field-subscript-animation{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px;opacity:1;transform:translateY(0);animation:_mat-form-field-subscript-animation 0ms cubic-bezier(0.55, 0, 0.55, 0.2)}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block;color:var(--mat-form-field-error-text-color, var(--mat-sys-error))}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font, var(--mat-sys-body-small-font));line-height:var(--mat-form-field-subscript-text-line-height, var(--mat-sys-body-small-line-height));font-size:var(--mat-form-field-subscript-text-size, var(--mat-sys-body-small-size));letter-spacing:var(--mat-form-field-subscript-text-tracking, var(--mat-sys-body-small-tracking));font-weight:var(--mat-form-field-subscript-text-weight, var(--mat-sys-body-small-weight))}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none;background-color:var(--mat-form-field-state-layer-color, var(--mat-sys-on-surface))}.mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-focus-state-layer-opacity, 0)}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:var(--mat-form-field-select-option-text-color, var(--mat-sys-neutral10))}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:var(--mat-form-field-select-disabled-option-text-color, color-mix(in srgb, var(--mat-sys-neutral10) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none;color:var(--mat-form-field-enabled-select-arrow-color, var(--mat-sys-on-surface-variant))}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select.mat-focused .mat-mdc-form-field-infix::after{color:var(--mat-form-field-focus-select-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:var(--mat-form-field-disabled-select-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}@media(forced-colors: active){.mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}}@media(forced-colors: active){.mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-form-field-container-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-form-field-container-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-form-field-container-text-tracking, var(--mat-sys-body-large-tracking));font-weight:var(--mat-form-field-container-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size)*var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%;z-index:0}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px;box-sizing:content-box}.mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-leading-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-disabled-leading-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-trailing-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-disabled-trailing-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-invalid .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-trailing-icon-color, var(--mat-sys-error))}.mat-form-field-invalid:not(.mat-focused):not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-hover-trailing-icon-color, var(--mat-sys-on-error-container))}.mat-form-field-invalid.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-focus-trailing-icon-color, var(--mat-sys-error))}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field-infix:has(textarea[cols]){width:auto}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::-moz-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::-webkit-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field.mat-form-field-animations-enabled .mat-mdc-form-field-error-wrapper{animation-duration:300ms}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}\n'],encapsulation:2,changeDetection:0})}return t})();const BB=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function VB(){if(vu)return vu;if("object"!=typeof document||!document)return vu=new Set(BB),vu;let t=document.createElement("input");return vu=new Set(BB.filter(n=>(t.setAttribute("type",n),t.type===n))),vu}let _pe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["ng-component"]],hostAttrs:["cdk-text-field-style-loader",""],decls:0,vars:0,template:function(i,o){},styles:["textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0 !important;box-sizing:content-box !important;height:auto !important;overflow:hidden !important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0 !important;box-sizing:content-box !important;height:0 !important}@keyframes cdk-text-field-autofill-start{/*!*/}@keyframes cdk-text-field-autofill-end{/*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}\n"],encapsulation:2,changeDetection:0})}return t})();const bpe={passive:!0};let vpe=(()=>{class t{_platform=T(Zn);_ngZone=T(Ce);_renderer=T(Uo).createRenderer(null,null);_styleLoader=T(qo);_monitoredElements=new Map;constructor(){}monitor(e){if(!this._platform.isBrowser)return Ni;this._styleLoader.load(_pe);const i=Bs(e),o=this._monitoredElements.get(i);if(o)return o.subject;const r=new be,s="cdk-text-field-autofilled",a=d=>{"cdk-text-field-autofill-start"!==d.animationName||i.classList.contains(s)?"cdk-text-field-autofill-end"===d.animationName&&i.classList.contains(s)&&(i.classList.remove(s),this._ngZone.run(()=>r.next({target:d.target,isAutofilled:!1}))):(i.classList.add(s),this._ngZone.run(()=>r.next({target:d.target,isAutofilled:!0})))},l=this._ngZone.runOutsideAngular(()=>(i.classList.add("cdk-text-field-autofill-monitored"),this._renderer.listen(i,"animationstart",a,bpe)));return this._monitoredElements.set(i,{subject:r,unlisten:l}),r}stopMonitoring(e){const i=Bs(e),o=this._monitoredElements.get(i);o&&(o.unlisten(),o.subject.complete(),i.classList.remove("cdk-text-field-autofill-monitored"),i.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(i))}ngOnDestroy(){this._monitoredElements.forEach((e,i)=>this.stopMonitoring(i))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),ype=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();const Cpe=new Z("MAT_INPUT_VALUE_ACCESSOR");let wpe=(()=>{class t{isErrorState(e,i){return!!(e&&e.invalid&&(e.dirty||i&&i.submitted))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),vS=(()=>{class t{isErrorState(e,i){return!!(e&&e.invalid&&(e.touched||i&&i.submitted))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class HB{_defaultMatcher;ngControl;_parentFormGroup;_parentForm;_stateChanges;errorState=!1;matcher;constructor(n,e,i,o,r){this._defaultMatcher=n,this.ngControl=e,this._parentFormGroup=i,this._parentForm=o,this._stateChanges=r}updateErrorState(){const n=this.errorState,e=this._parentFormGroup||this._parentForm,i=this.matcher||this._defaultMatcher,o=this.ngControl?this.ngControl.control:null,r=i?.isErrorState(o,e)??!1;r!==n&&(this.errorState=r,this._stateChanges.next())}}let pv=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[d4,dn,ai]})}return t})();const xpe=["button","checkbox","file","hidden","image","radio","range","reset","submit"],kpe=new Z("MAT_INPUT_CONFIG");let On=(()=>{class t{_elementRef=T(Ne);_platform=T(Zn);ngControl=T(ts,{optional:!0,self:!0});_autofillMonitor=T(vpe);_ngZone=T(Ce);_formField=T(bS,{optional:!0});_renderer=T(ei);_uid=T(si).getId("mat-input-");_previousNativeValue;_inputValueAccessor;_signalBasedValueAccessor;_previousPlaceholder=null;_errorStateTracker;_config=T(kpe,{optional:!0});_cleanupIosKeyup;_cleanupWebkitWheel;_isServer=!1;_isNativeSelect=!1;_isTextarea=!1;_isInFormField=!1;focused=!1;stateChanges=new be;controlType="mat-input";autofilled=!1;get disabled(){return this._disabled}set disabled(e){this._disabled=bu(e),this.focused&&(this.focused=!1,this.stateChanges.next())}_disabled=!1;get id(){return this._id}set id(e){this._id=e||this._uid}_id;placeholder;name;get required(){return this._required??this.ngControl?.control?.hasValidator(Se.required)??!1}set required(e){this._required=bu(e)}_required;get type(){return this._type}set type(e){this._type=e||"text",this._validateType(),!this._isTextarea&&VB().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}_type="text";get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}userAriaDescribedBy;get value(){return this._signalBasedValueAccessor?this._signalBasedValueAccessor.value():this._inputValueAccessor.value}set value(e){e!==this.value&&(this._signalBasedValueAccessor?this._signalBasedValueAccessor.value.set(e):this._inputValueAccessor.value=e,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(e){this._readonly=bu(e)}_readonly=!1;disabledInteractive;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}_neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(e=>VB().has(e));constructor(){const e=T(pu,{optional:!0}),i=T(sn,{optional:!0}),o=T(vS),r=T(Cpe,{optional:!0,self:!0}),s=this._elementRef.nativeElement,a=s.nodeName.toLowerCase();r?Fl(r.value)?this._signalBasedValueAccessor=r:this._inputValueAccessor=r:this._inputValueAccessor=s,this._previousNativeValue=this.value,this.id=this.id,this._platform.IOS&&this._ngZone.runOutsideAngular(()=>{this._cleanupIosKeyup=this._renderer.listen(s,"keyup",this._iOSKeyupListener)}),this._errorStateTracker=new HB(o,this.ngControl,i,e,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect="select"===a,this._isTextarea="textarea"===a,this._isInFormField=!!this._formField,this.disabledInteractive=this._config?.disabledInteractive||!1,this._isNativeSelect&&(this.controlType=s.multiple?"mat-native-select-multiple":"mat-native-select"),this._signalBasedValueAccessor&&vm(()=>{this._signalBasedValueAccessor.value(),this.stateChanges.next()})}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._cleanupIosKeyup?.(),this._cleanupWebkitWheel?.()}ngDoCheck(){this.ngControl&&(this.updateErrorState(),null!==this.ngControl.disabled&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(e){this._elementRef.nativeElement.focus(e)}updateErrorState(){this._errorStateTracker.updateErrorState()}_focusChanged(e){if(e!==this.focused){if(!this._isNativeSelect&&e&&this.disabled&&this.disabledInteractive){const i=this._elementRef.nativeElement;"number"===i.type?(i.type="text",i.setSelectionRange(0,0),i.type="number"):i.setSelectionRange(0,0)}this.focused=e,this.stateChanges.next()}}_onInput(){}_dirtyCheckNativeValue(){const e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next())}_dirtyCheckPlaceholder(){const e=this._getPlaceholder();if(e!==this._previousPlaceholder){const i=this._elementRef.nativeElement;this._previousPlaceholder=e,e?i.setAttribute("placeholder",e):i.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){xpe.indexOf(this._type)}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return!(this._isNeverEmpty()||this._elementRef.nativeElement.value||this._isBadInput()||this.autofilled)}get shouldLabelFloat(){if(this._isNativeSelect){const e=this._elementRef.nativeElement,i=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&i&&i.label)}return this.focused&&!this.disabled||!this.empty}get describedByIds(){return this._elementRef.nativeElement.getAttribute("aria-describedby")?.split(" ")||[]}setDescribedByIds(e){const i=this._elementRef.nativeElement;e.length?i.setAttribute("aria-describedby",e.join(" ")):i.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){const e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}_iOSKeyupListener=e=>{const i=e.target;!i.value&&0===i.selectionStart&&0===i.selectionEnd&&(i.setSelectionRange(1,1),i.setSelectionRange(0,0))};_getReadonlyAttribute(){return this._isNativeSelect?null:this.readonly||this.disabled&&this.disabledInteractive?"true":null}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:21,hostBindings:function(i,o){1&i&&F("focus",function(){return o._focusChanged(!0)})("blur",function(){return o._focusChanged(!1)})("input",function(){return o._onInput()}),2&i&&(gr("id",o.id)("disabled",o.disabled&&!o.disabledInteractive)("required",o.required),We("name",o.name||null)("readonly",o._getReadonlyAttribute())("aria-disabled",o.disabled&&o.disabledInteractive?"true":null)("aria-invalid",o.empty&&o.required?null:o.errorState)("aria-required",o.required)("id",o.id),ve("mat-input-server",o._isServer)("mat-mdc-form-field-textarea-control",o._isInFormField&&o._isTextarea)("mat-mdc-form-field-input-control",o._isInFormField)("mat-mdc-input-disabled-interactive",o.disabledInteractive)("mdc-text-field__input",o._isInFormField)("mat-mdc-native-select-inline",o._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly",disabledInteractive:[2,"disabledInteractive","disabledInteractive",Te]},exportAs:["matInput"],features:[dt([{provide:_S,useExisting:t}]),vi]})}return t})(),Spe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[pv,pv,ype,ai]})}return t})();class UB{_letterKeyStream=new be;_items=[];_selectedItemIndex=-1;_pressedLetters=[];_skipPredicateFn;_selectedItem=new be;selectedItem=this._selectedItem;constructor(n,e){const i="number"==typeof e?.debounceInterval?e.debounceInterval:200;e?.skipPredicate&&(this._skipPredicateFn=e.skipPredicate),this.setItems(n),this._setupKeyHandler(i)}destroy(){this._pressedLetters=[],this._letterKeyStream.complete(),this._selectedItem.complete()}setCurrentSelectedItemIndex(n){this._selectedItemIndex=n}setItems(n){this._items=n}handleKey(n){const e=n.keyCode;n.key&&1===n.key.length?this._letterKeyStream.next(n.key.toLocaleUpperCase()):(e>=65&&e<=90||e>=48&&e<=57)&&this._letterKeyStream.next(String.fromCharCode(e))}isTyping(){return this._pressedLetters.length>0}reset(){this._pressedLetters=[]}_setupKeyHandler(n){this._letterKeyStream.pipe(ui(e=>this._pressedLetters.push(e)),Ab(n),Pn(()=>this._pressedLetters.length>0),De(()=>this._pressedLetters.join("").toLocaleUpperCase())).subscribe(e=>{for(let i=1;io.trim()===e)&&(i.push(e),t.setAttribute(n,i.join(" ")))}function yS(t,n,e){const i=mv(t,n);e=e.trim();const o=i.filter(r=>r!==e);o.length?t.setAttribute(n,o.join(" ")):t.removeAttribute(n)}function mv(t,n){return t.getAttribute(n)?.match(/\S+/g)??[]}const WB="cdk-describedby-message",gv="cdk-describedby-host";let CS=0,Epe=(()=>{class t{_platform=T(Zn);_document=T(et);_messageRegistry=new Map;_messagesContainer=null;_id=""+CS++;constructor(){T(qo).load(xk),this._id=T(ra)+"-"+CS++}describe(e,i,o){if(!this._canBeDescribed(e,i))return;const r=wS(i,o);"string"!=typeof i?(GB(i,this._id),this._messageRegistry.set(r,{messageElement:i,referenceCount:0})):this._messageRegistry.has(r)||this._createMessageElement(i,o),this._isElementDescribedByMessage(e,r)||this._addMessageReference(e,r)}removeDescription(e,i,o){if(!i||!this._isElementNode(e))return;const r=wS(i,o);if(this._isElementDescribedByMessage(e,r)&&this._removeMessageReference(e,r),"string"==typeof i){const s=this._messageRegistry.get(r);s&&0===s.referenceCount&&this._deleteMessageElement(r)}0===this._messagesContainer?.childNodes.length&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){const e=this._document.querySelectorAll(`[${gv}="${this._id}"]`);for(let i=0;i0!=o.indexOf(WB));e.setAttribute("aria-describedby",i.join(" "))}_addMessageReference(e,i){const o=this._messageRegistry.get(i);$B(e,"aria-describedby",o.messageElement.id),e.setAttribute(gv,this._id),o.referenceCount++}_removeMessageReference(e,i){const o=this._messageRegistry.get(i);o.referenceCount--,yS(e,"aria-describedby",o.messageElement.id),e.removeAttribute(gv)}_isElementDescribedByMessage(e,i){const o=mv(e,"aria-describedby"),r=this._messageRegistry.get(i),s=r&&r.messageElement.id;return!!s&&-1!=o.indexOf(s)}_canBeDescribed(e,i){if(!this._isElementNode(e))return!1;if(i&&"object"==typeof i)return!0;const o=null==i?"":`${i}`.trim(),r=e.getAttribute("aria-label");return!(!o||r&&r.trim()===o)}_isElementNode(e){return e.nodeType===this._document.ELEMENT_NODE}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function wS(t,n){return"string"==typeof t?`${n||""}/${t}`:t}function GB(t,n){t.id||(t.id=`${WB}-${n}-${CS++}`)}const Ipe=["tooltip"],Ape=new Z("mat-tooltip-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Ue);return()=>$f(t,{scrollThrottle:20})}}),Rpe=new Z("mat-tooltip-default-options",{providedIn:"root",factory:()=>({showDelay:0,hideDelay:0,touchendHideDelay:1500})}),qB="tooltip-panel",Fpe={passive:!0};let Et=(()=>{class t{_elementRef=T(Ne);_ngZone=T(Ce);_platform=T(Zn);_ariaDescriber=T(Epe);_focusMonitor=T(ac);_dir=T(kr);_injector=T(Ue);_viewContainerRef=T(Ai);_mediaMatcher=T(Sk);_document=T(et);_renderer=T(ei);_animationsDisabled=hi();_defaultOptions=T(Rpe,{optional:!0});_overlayRef=null;_tooltipInstance=null;_overlayPanelClass;_portal;_position="below";_positionAtOrigin=!1;_disabled=!1;_tooltipClass;_viewInitialized=!1;_pointerExitEventsInitialized=!1;_tooltipComponent=Hpe;_viewportMargin=8;_currentPosition;_cssClassPrefix="mat-mdc";_ariaDescriptionPending=!1;_dirSubscribed=!1;get position(){return this._position}set position(e){e!==this._position&&(this._position=e,this._overlayRef&&(this._updatePosition(this._overlayRef),this._tooltipInstance?.show(0),this._overlayRef.updatePosition()))}get positionAtOrigin(){return this._positionAtOrigin}set positionAtOrigin(e){this._positionAtOrigin=bu(e),this._detach(),this._overlayRef=null}get disabled(){return this._disabled}set disabled(e){const i=bu(e);this._disabled!==i&&(this._disabled=i,i?this.hide(0):this._setupPointerEnterEventsIfNeeded(),this._syncAriaDescription(this.message))}get showDelay(){return this._showDelay}set showDelay(e){this._showDelay=Bf(e)}_showDelay;get hideDelay(){return this._hideDelay}set hideDelay(e){this._hideDelay=Bf(e),this._tooltipInstance&&(this._tooltipInstance._mouseLeaveHideDelay=this._hideDelay)}_hideDelay;touchGestures="auto";get message(){return this._message}set message(e){const i=this._message;this._message=null!=e?String(e).trim():"",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEnterEventsIfNeeded(),this._updateTooltipMessage()),this._syncAriaDescription(i)}_message="";get tooltipClass(){return this._tooltipClass}set tooltipClass(e){this._tooltipClass=e,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}_eventCleanups=[];_touchstartTimeout=null;_destroyed=new be;_isDestroyed=!1;constructor(){const e=this._defaultOptions;e&&(this._showDelay=e.showDelay,this._hideDelay=e.hideDelay,e.position&&(this.position=e.position),e.positionAtOrigin&&(this.positionAtOrigin=e.positionAtOrigin),e.touchGestures&&(this.touchGestures=e.touchGestures),e.tooltipClass&&(this.tooltipClass=e.tooltipClass)),this._viewportMargin=8}ngAfterViewInit(){this._viewInitialized=!0,this._setupPointerEnterEventsIfNeeded(),this._focusMonitor.monitor(this._elementRef).pipe(ln(this._destroyed)).subscribe(e=>{e?"keyboard"===e&&this._ngZone.run(()=>this.show()):this._ngZone.run(()=>this.hide(0))})}ngOnDestroy(){const e=this._elementRef.nativeElement;this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),this._eventCleanups.forEach(i=>i()),this._eventCleanups.length=0,this._destroyed.next(),this._destroyed.complete(),this._isDestroyed=!0,this._ariaDescriber.removeDescription(e,this.message,"tooltip"),this._focusMonitor.stopMonitoring(e)}show(e=this.showDelay,i){if(this.disabled||!this.message||this._isTooltipVisible())return void this._tooltipInstance?._cancelPendingAnimations();const o=this._createOverlay(i);this._detach(),this._portal=this._portal||new nu(this._tooltipComponent,this._viewContainerRef);const r=this._tooltipInstance=o.attach(this._portal).instance;r._triggerElement=this._elementRef.nativeElement,r._mouseLeaveHideDelay=this._hideDelay,r.afterHidden().pipe(ln(this._destroyed)).subscribe(()=>this._detach()),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),r.show(e)}hide(e=this.hideDelay){const i=this._tooltipInstance;i&&(i.isVisible()?i.hide(e):(i._cancelPendingAnimations(),this._detach()))}toggle(e){this._isTooltipVisible()?this.hide():this.show(void 0,e)}_isTooltipVisible(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}_createOverlay(e){if(this._overlayRef){const s=this._overlayRef.getConfig().positionStrategy;if((!this.positionAtOrigin||!e)&&s._origin instanceof Ne)return this._overlayRef;this._detach()}const i=this._injector.get(Cb).getAncestorScrollContainers(this._elementRef),o=`${this._cssClassPrefix}-${qB}`,r=Eb(this._injector,this.positionAtOrigin&&e||this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(!1).withViewportMargin(this._viewportMargin).withScrollableContainers(i).withPopoverLocation("global");return r.positionChanges.pipe(ln(this._destroyed)).subscribe(s=>{this._updateCurrentPositionClass(s.connectionPair),this._tooltipInstance&&s.scrollableViewProperties.isOverlayClipped&&this._tooltipInstance.isVisible()&&this._ngZone.run(()=>this.hide(0))}),this._overlayRef=ou(this._injector,{direction:this._dir,positionStrategy:r,panelClass:this._overlayPanelClass?[...this._overlayPanelClass,o]:o,scrollStrategy:this._injector.get(Ape)(),disableAnimations:this._animationsDisabled,eventPredicate:this._overlayEventPredicate}),this._updatePosition(this._overlayRef),this._overlayRef.detachments().pipe(ln(this._destroyed)).subscribe(()=>this._detach()),this._overlayRef.outsidePointerEvents().pipe(ln(this._destroyed)).subscribe(()=>this._tooltipInstance?._handleBodyInteraction()),this._overlayRef.keydownEvents().pipe(ln(this._destroyed)).subscribe(s=>{s.preventDefault(),s.stopPropagation(),this._ngZone.run(()=>this.hide(0))}),this._defaultOptions?.disableTooltipInteractivity&&this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`),this._dirSubscribed||(this._dirSubscribed=!0,this._dir.change.pipe(ln(this._destroyed)).subscribe(()=>{this._overlayRef&&this._updatePosition(this._overlayRef)})),this._overlayRef}_detach(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}_updatePosition(e){const i=e.getConfig().positionStrategy,o=this._getOrigin(),r=this._getOverlayPosition();i.withPositions([this._addOffset({...o.main,...r.main}),this._addOffset({...o.fallback,...r.fallback})])}_addOffset(e){const o=!this._dir||"ltr"==this._dir.value;return"top"===e.originY?e.offsetY=-8:"bottom"===e.originY?e.offsetY=8:"start"===e.originX?e.offsetX=o?-8:8:"end"===e.originX&&(e.offsetX=o?8:-8),e}_getOrigin(){const e=!this._dir||"ltr"==this._dir.value,i=this.position;let o;"above"==i||"below"==i?o={originX:"center",originY:"above"==i?"top":"bottom"}:"before"==i||"left"==i&&e||"right"==i&&!e?o={originX:"start",originY:"center"}:("after"==i||"right"==i&&e||"left"==i&&!e)&&(o={originX:"end",originY:"center"});const{x:r,y:s}=this._invertPosition(o.originX,o.originY);return{main:o,fallback:{originX:r,originY:s}}}_getOverlayPosition(){const e=!this._dir||"ltr"==this._dir.value,i=this.position;let o;"above"==i?o={overlayX:"center",overlayY:"bottom"}:"below"==i?o={overlayX:"center",overlayY:"top"}:"before"==i||"left"==i&&e||"right"==i&&!e?o={overlayX:"end",overlayY:"center"}:("after"==i||"right"==i&&e||"left"==i&&!e)&&(o={overlayX:"start",overlayY:"center"});const{x:r,y:s}=this._invertPosition(o.overlayX,o.overlayY);return{main:o,fallback:{overlayX:r,overlayY:s}}}_updateTooltipMessage(){this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),Wi(()=>{this._tooltipInstance&&this._overlayRef.updatePosition()},{injector:this._injector}))}_setTooltipClass(e){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=e instanceof Set?Array.from(e):e,this._tooltipInstance._markForCheck())}_invertPosition(e,i){return"above"===this.position||"below"===this.position?"top"===i?i="bottom":"bottom"===i&&(i="top"):"end"===e?e="start":"start"===e&&(e="end"),{x:e,y:i}}_updateCurrentPositionClass(e){const{overlayY:i,originX:o,originY:r}=e;let s;if(s="center"===i?this._dir&&"rtl"===this._dir.value?"end"===o?"left":"right":"start"===o?"left":"right":"bottom"===i&&"top"===r?"above":"below",s!==this._currentPosition){const a=this._overlayRef;if(a){const l=`${this._cssClassPrefix}-${qB}-`;a.removePanelClass(l+this._currentPosition),a.addPanelClass(l+s)}this._currentPosition=s}}_setupPointerEnterEventsIfNeeded(){this._disabled||!this.message||!this._viewInitialized||this._eventCleanups.length||(this._isTouchPlatform()?"off"!==this.touchGestures&&(this._disableNativeGesturesIfNecessary(),this._addListener("touchstart",e=>{const i=e.targetTouches?.[0],o=i?{x:i.clientX,y:i.clientY}:void 0;this._setupPointerExitEventsIfNeeded(),this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this._touchstartTimeout=setTimeout(()=>{this._touchstartTimeout=null,this.show(void 0,o)},this._defaultOptions?.touchLongPressShowDelay??500)})):this._addListener("mouseenter",e=>{let i;this._setupPointerExitEventsIfNeeded(),void 0!==e.x&&void 0!==e.y&&(i=e),this.show(void 0,i)}))}_setupPointerExitEventsIfNeeded(){if(!this._pointerExitEventsInitialized)if(this._pointerExitEventsInitialized=!0,this._isTouchPlatform()){if("off"!==this.touchGestures){this._disableNativeGesturesIfNecessary();const e=()=>{this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this.hide(this._defaultOptions?.touchendHideDelay)};this._addListener("touchend",e),this._addListener("touchcancel",e)}}else this._addListener("mouseleave",e=>{const i=e.relatedTarget;(!i||!this._overlayRef?.overlayElement.contains(i))&&this.hide()}),this._addListener("wheel",e=>{if(this._isTooltipVisible()){const i=this._document.elementFromPoint(e.clientX,e.clientY),o=this._elementRef.nativeElement;i!==o&&!o.contains(i)&&this.hide()}})}_addListener(e,i){this._eventCleanups.push(this._renderer.listen(this._elementRef.nativeElement,e,i,Fpe))}_isTouchPlatform(){return!(!this._platform.IOS&&!this._platform.ANDROID)||!!this._platform.isBrowser&&!!this._defaultOptions?.detectHoverCapability&&this._mediaMatcher.matchMedia("(any-hover: none)").matches}_disableNativeGesturesIfNecessary(){const e=this.touchGestures;if("off"!==e){const i=this._elementRef.nativeElement,o=i.style;("on"===e||"INPUT"!==i.nodeName&&"TEXTAREA"!==i.nodeName)&&(o.userSelect=o.msUserSelect=o.webkitUserSelect=o.MozUserSelect="none"),("on"===e||!i.draggable)&&(o.webkitUserDrag="none"),o.touchAction="none",o.webkitTapHighlightColor="transparent"}}_syncAriaDescription(e){this._ariaDescriptionPending||(this._ariaDescriptionPending=!0,this._ariaDescriber.removeDescription(this._elementRef.nativeElement,e,"tooltip"),this._isDestroyed||Wi({write:()=>{this._ariaDescriptionPending=!1,this.message&&!this.disabled&&this._ariaDescriber.describe(this._elementRef.nativeElement,this.message,"tooltip")}},{injector:this._injector}))}_overlayEventPredicate=e=>"keydown"!==e.type||this._isTooltipVisible()&&27===e.keyCode&&!Mr(e);static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matTooltip",""]],hostAttrs:[1,"mat-mdc-tooltip-trigger"],hostVars:2,hostBindings:function(i,o){2&i&&ve("mat-mdc-tooltip-disabled",o.disabled)},inputs:{position:[0,"matTooltipPosition","position"],positionAtOrigin:[0,"matTooltipPositionAtOrigin","positionAtOrigin"],disabled:[0,"matTooltipDisabled","disabled"],showDelay:[0,"matTooltipShowDelay","showDelay"],hideDelay:[0,"matTooltipHideDelay","hideDelay"],touchGestures:[0,"matTooltipTouchGestures","touchGestures"],message:[0,"matTooltip","message"],tooltipClass:[0,"matTooltipClass","tooltipClass"]},exportAs:["matTooltip"]})}return t})(),Hpe=(()=>{class t{_changeDetectorRef=T(Dt);_elementRef=T(Ne);_isMultiline=!1;message;tooltipClass;_showTimeoutId;_hideTimeoutId;_triggerElement;_mouseLeaveHideDelay;_animationsDisabled=hi();_tooltip;_closeOnInteraction=!1;_isVisible=!1;_onHide=new be;_showAnimation="mat-mdc-tooltip-show";_hideAnimation="mat-mdc-tooltip-hide";constructor(){}show(e){null!=this._hideTimeoutId&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=setTimeout(()=>{this._toggleVisibility(!0),this._showTimeoutId=void 0},e)}hide(e){null!=this._showTimeoutId&&clearTimeout(this._showTimeoutId),this._hideTimeoutId=setTimeout(()=>{this._toggleVisibility(!1),this._hideTimeoutId=void 0},e)}afterHidden(){return this._onHide}isVisible(){return this._isVisible}ngOnDestroy(){this._cancelPendingAnimations(),this._onHide.complete(),this._triggerElement=null}_handleBodyInteraction(){this._closeOnInteraction&&this.hide(0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_handleMouseLeave({relatedTarget:e}){(!e||!this._triggerElement.contains(e))&&(this.isVisible()?this.hide(this._mouseLeaveHideDelay):this._finalizeAnimation(!1))}_onShow(){this._isMultiline=this._isTooltipMultiline(),this._markForCheck()}_isTooltipMultiline(){const e=this._elementRef.nativeElement.getBoundingClientRect();return e.height>24&&e.width>=200}_handleAnimationEnd({animationName:e}){(e===this._showAnimation||e===this._hideAnimation)&&this._finalizeAnimation(e===this._showAnimation)}_cancelPendingAnimations(){null!=this._showTimeoutId&&clearTimeout(this._showTimeoutId),null!=this._hideTimeoutId&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=this._hideTimeoutId=void 0}_finalizeAnimation(e){e?this._closeOnInteraction=!0:this.isVisible()||this._onHide.next()}_toggleVisibility(e){const i=this._tooltip.nativeElement,o=this._showAnimation,r=this._hideAnimation;if(i.classList.remove(e?r:o),i.classList.add(e?o:r),this._isVisible!==e&&(this._isVisible=e,this._changeDetectorRef.markForCheck()),e&&!this._animationsDisabled&&"function"==typeof getComputedStyle){const s=getComputedStyle(i);("0s"===s.getPropertyValue("animation-duration")||"none"===s.getPropertyValue("animation-name"))&&(this._animationsDisabled=!0)}e&&this._onShow(),this._animationsDisabled&&(i.classList.add("_mat-animation-noopable"),this._finalizeAnimation(e))}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-tooltip-component"]],viewQuery:function(i,o){if(1&i&&st(Ipe,7),2&i){let r;fe(r=pe())&&(o._tooltip=r.first)}},hostAttrs:["aria-hidden","true"],hostBindings:function(i,o){1&i&&F("mouseleave",function(s){return o._handleMouseLeave(s)})},decls:4,vars:5,consts:[["tooltip",""],[1,"mdc-tooltip","mat-mdc-tooltip",3,"animationend"],[1,"mat-mdc-tooltip-surface","mdc-tooltip__surface"]],template:function(i,o){1&i&&(Ms(0,"div",1,0),Jg("animationend",function(s){return o._handleAnimationEnd(s)}),Ms(2,"div",2),p(3),Bl()()),2&i&&(Ge(o.tooltipClass),ve("mdc-tooltip--multiline",o._isMultiline),c(3),S(o.message))},styles:['.mat-mdc-tooltip{position:relative;transform:scale(0);display:inline-flex}.mat-mdc-tooltip::before{content:"";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-surface{word-break:normal;overflow-wrap:anywhere;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center;will-change:transform,opacity;background-color:var(--mat-tooltip-container-color, var(--mat-sys-inverse-surface));color:var(--mat-tooltip-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-tooltip-container-shape, var(--mat-sys-corner-extra-small));font-family:var(--mat-tooltip-supporting-text-font, var(--mat-sys-body-small-font));font-size:var(--mat-tooltip-supporting-text-size, var(--mat-sys-body-small-size));font-weight:var(--mat-tooltip-supporting-text-weight, var(--mat-sys-body-small-weight));line-height:var(--mat-tooltip-supporting-text-line-height, var(--mat-sys-body-small-line-height));letter-spacing:var(--mat-tooltip-supporting-text-tracking, var(--mat-sys-body-small-tracking))}.mat-mdc-tooltip-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:right}.mat-mdc-tooltip-panel{line-height:normal}.mat-mdc-tooltip-panel.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}\n'],encapsulation:2,changeDetection:0})}return t})();const Upe=["button1"],zpe=["button2"],jpe=["*"],$pe=t=>({"for-dark-background":t});function Wpe(t,n){1&t&&L(0,"mat-spinner",3),2&t&&C("diameter",y().loadingSize)}function Gpe(t,n){1&t&&(h(0,"mat-icon"),p(1,"error_outline"),u())}var _c=function(t){return t[t.Normal=0]="Normal",t[t.Error=1]="Error",t[t.Loading=2]="Loading",t}(_c||{});let Mi=(()=>{class t{constructor(){this.forDarkBackground=!1,this.disabled=!1,this.color="",this.loadingSize=20,this.action=new ke,this.state=_c.Normal,this.buttonStates=_c}ngOnDestroy(){this.action.complete()}click(){this.disabled||(this.reset(),this.action.emit())}reset(e=!0){this.state=_c.Normal,e&&(this.disabled=!1)}focus(){this.button1&&this.button1.focus(),this.button2&&this.button2.focus()}showEnabled(){this.disabled=!1}showDisabled(){this.disabled=!0}showLoading(e=!0){this.state=_c.Loading,e&&(this.disabled=!0)}showError(e=!0){this.state=_c.Error,e&&(this.disabled=!1)}get isLoading(){return this.state===_c.Loading}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=ae({type:t,selectors:[["app-button"]],viewQuery:function(i,o){if(1&i&&st(Upe,5)(zpe,5),2&i){let r;fe(r=pe())&&(o.button1=r.first),fe(r=pe())&&(o.button2=r.first)}},inputs:{forDarkBackground:"forDarkBackground",disabled:"disabled",color:"color",loadingSize:"loadingSize"},outputs:{action:"action"},standalone:!1,ngContentSelectors:jpe,decls:6,vars:7,consts:[["button2",""],["mat-raised-button","",3,"click","disabled","color","ngClass"],[1,"d-flex"],[3,"diameter"]],template:function(i,o){1&i&&(xi(),h(0,"button",1,0),F("click",function(){return o.click()}),h(2,"div",2),x(3,Wpe,1,1,"mat-spinner",3),x(4,Gpe,2,0,"mat-icon"),Rt(5),u()()),2&i&&(C("disabled",o.disabled)("color",o.color)("ngClass",ie(5,$pe,o.forDarkBackground)),c(3),k(o.state===o.buttonStates.Loading?3:-1),c(),k(o.state===o.buttonStates.Error?4:-1))},dependencies:[Ft,Ht,Ae,ci],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], button[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px}button[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}mat-icon[_ngcontent-%COMP%], mat-spinner[_ngcontent-%COMP%]{display:inline-block;margin-right:15px}.for-dark-background[_ngcontent-%COMP%]:disabled{background-color:#000!important;color:#fff!important;opacity:.3}"]})}}return t})();const qpe=["button"],Kpe=["firstInput"],Ype=t=>({"rounded-elevated-box":t}),KB=(t,n)=>({"white-form-field":t,"element-disabled":n}),Xpe=(t,n)=>({"mt-2 app-button":t,"float-right":n}),Zpe=t=>({"element-disabled":t});function Qpe(t,n){if(1&t&&(h(0,"mat-form-field",6)(1,"div",7)(2,"label",8),p(3),_(4,"translate"),u(),L(5,"input",12),u(),h(6,"mat-error")(7,"span"),p(8),_(9,"translate"),u()()()),2&t){const e=y();C("ngClass",ie(7,Zpe,e.working)),c(3),S(v(4,3,"settings.password.old-password")),c(5),S(v(9,5,"settings.password.errors.old-password-required"))}}let YB=(()=>{class t{constructor(e,i,o,r){this.authService=e,this.router=i,this.snackbarService=o,this.dialog=r,this.workingState=new ke,this.forInitialConfig=!1}ngOnInit(){this.form=new ov({oldPassword:new Ia("",this.forInitialConfig?null:Se.required),newPassword:new Ia("",Se.compose([Se.required,Se.minLength(6),Se.maxLength(64)])),newPasswordConfirmation:new Ia("",[Se.required,this.validatePasswords.bind(this)])}),this.formSubscription=this.form.controls.newPassword.valueChanges.subscribe(()=>this.form.controls.newPasswordConfirmation.updateValueAndValidity())}ngAfterViewInit(){this.forInitialConfig&&setTimeout(()=>this.firstInput.nativeElement.focus())}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe(),this.formSubscription.unsubscribe()}get working(){return!!this.button&&this.button.isLoading}changePassword(){this.form.valid&&!this.button.disabled&&(this.button.showLoading(),this.workingState.next(!0),this.subscription=this.forInitialConfig?this.authService.initialConfig(this.form.get("newPassword").value).subscribe(()=>{this.dialog.closeAll(),this.snackbarService.showDone("settings.password.initial-config.done"),this.workingState.next(!1)},e=>{this.button.showError(),e=Ze(e),this.snackbarService.showError(e,null,!0),this.workingState.next(!1)}):this.authService.changePassword(this.form.get("oldPassword").value,this.form.get("newPassword").value).subscribe(()=>{this.router.navigate(["nodes"]),this.snackbarService.showDone("settings.password.password-changed"),this.workingState.next(!1)},e=>{this.button.showError(),e=Ze(e),this.snackbarService.showError(e),this.workingState.next(!1)}))}validatePasswords(){return this.form&&this.form.get("newPassword").value!==this.form.get("newPasswordConfirmation").value?{invalid:!0}:null}static{this.\u0275fac=function(i){return new(i||t)(O(ep),O(yt),O(ot),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-password"]],viewQuery:function(i,o){if(1&i&&st(qpe,5)(Kpe,5),2&i){let r;fe(r=pe())&&(o.button=r.first),fe(r=pe())&&(o.firstInput=r.first)}},inputs:{forInitialConfig:"forInitialConfig"},outputs:{workingState:"workingState"},standalone:!1,decls:33,vars:40,consts:[["firstInput",""],["button",""],[3,"ngClass"],[1,"box-internal-container","overflow"],[1,"help-icon",3,"inline","matTooltip"],[3,"formGroup"],[1,"white-form-field",3,"ngClass"],[1,"field-container"],["for","remoteKey",1,"field-label"],["type","password","formControlName","newPassword","maxlength","64","matInput",""],["type","password","formControlName","newPasswordConfirmation","maxlength","64","matInput",""],["color","primary",3,"action","ngClass","disabled","forDarkBackground"],["type","password","formControlName","oldPassword","maxlength","64","matInput",""]],template:function(i,o){1&i&&(h(0,"div",2)(1,"div",3)(2,"div")(3,"mat-icon",4),_(4,"translate"),p(5," help "),u()(),h(6,"form",5),x(7,Qpe,10,9,"mat-form-field",6),h(8,"mat-form-field",2)(9,"div",7)(10,"label",8),p(11),_(12,"translate"),u(),L(13,"input",9,0),u(),h(15,"mat-error")(16,"span"),p(17),_(18,"translate"),u()()(),h(19,"mat-form-field",2)(20,"div",7)(21,"label",8),p(22),_(23,"translate"),u(),L(24,"input",10),u(),h(25,"mat-error")(26,"span"),p(27),_(28,"translate"),u()()(),h(29,"app-button",11,1),F("action",function(){return o.changePassword()}),p(31),_(32,"translate"),u()()()()),2&i&&(C("ngClass",ie(29,Ype,!o.forInitialConfig)),c(2),Ge((o.forInitialConfig?"":"white-")+"form-help-icon-container"),c(),C("inline",!0)("matTooltip",v(4,17,o.forInitialConfig?"settings.password.initial-config-help":"settings.password.help")),c(3),C("formGroup",o.form),c(),k(o.forInitialConfig?-1:7),c(),C("ngClass",pt(31,KB,!o.forInitialConfig,o.working)),c(3),S(v(12,19,o.forInitialConfig?"settings.password.initial-config.password":"settings.password.new-password")),c(6),S(v(18,21,"settings.password.errors.new-password-error")),c(2),C("ngClass",pt(34,KB,!o.forInitialConfig,o.working)),c(3),S(v(23,23,o.forInitialConfig?"settings.password.initial-config.repeat-password":"settings.password.repeat-password")),c(5),S(v(28,25,"settings.password.errors.passwords-not-match")),c(2),C("ngClass",pt(37,Xpe,!o.forInitialConfig,o.forInitialConfig))("disabled",!o.form.valid)("forDarkBackground",!o.forInitialConfig),c(2),D(" ",v(32,27,o.forInitialConfig?"settings.password.initial-config.set-password":"settings.change-password")," "))},dependencies:[Ft,kn,Qt,Jt,xn,Bi,sn,_n,dn,Aa,On,Ae,Et,Mi,we],styles:[".help-icon[_ngcontent-%COMP%]{display:inline}mat-form-field[_ngcontent-%COMP%]{margin-right:32px}app-button[_ngcontent-%COMP%]{float:right;margin-right:32px}"]})}}return t})();const Jpe=["*"],XB=t=>({"content-margin":t});function eme(t,n){1&t&&(h(0,"button",2)(1,"mat-icon"),p(2,"close"),u()())}function tme(t,n){1&t&&mr(0)}function nme(t,n){if(1&t&&(h(0,"mat-dialog-content",4),rt(1,tme,1,0,"ng-container",5),u()),2&t){const e=y(),i=Un(8);C("ngClass",ie(2,XB,e.includeVerticalMargins)),c(),C("ngTemplateOutlet",i)}}function ime(t,n){1&t&&mr(0)}function ome(t,n){if(1&t&&(h(0,"div",4),rt(1,ime,1,0,"ng-container",5),u()),2&t){const e=y(),i=Un(8);C("ngClass",ie(2,XB,e.includeVerticalMargins)),c(),C("ngTemplateOutlet",i)}}function rme(t,n){1&t&&Rt(0)}let Sn=(()=>{class t{set dialog(e){e.disableClose=!0,this.dialogInternal=e}constructor(e){this.matDialog=e,this.includeScrollableArea=!0,this.includeVerticalMargins=!0}onKeyUp(){this.closePopup()}closePopup(){this.disableDismiss||this.matDialog.openDialogs[this.matDialog.openDialogs.length-1].id===this.dialogInternal.id&&this.dialogInternal.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-dialog"]],hostBindings:function(i,o){1&i&&F("keyup.esc",function(){return o.onKeyUp()},iC)},inputs:{headline:"headline",disableDismiss:"disableDismiss",includeScrollableArea:"includeScrollableArea",includeVerticalMargins:"includeVerticalMargins",dialog:"dialog"},standalone:!1,ngContentSelectors:Jpe,decls:9,vars:4,consts:[["contentTemplate",""],["mat-dialog-title","",1,"header"],["mat-dialog-close","","mat-icon-button","",1,"grey-button-background"],[1,"header-separator"],[3,"ngClass"],[4,"ngTemplateOutlet"]],template:function(i,o){1&i&&(xi(),h(0,"div",1)(1,"span"),p(2),u(),x(3,eme,3,0,"button",2),u(),L(4,"div",3),x(5,nme,2,4,"mat-dialog-content",4),x(6,ome,2,4,"div",4),rt(7,rme,1,0,"ng-template",null,0,Ul)),2&i&&(c(2),S(o.headline),c(),k(o.disableDismiss?-1:3),c(2),k(o.includeScrollableArea?5:-1),c(),k(o.includeScrollableArea?-1:6))},dependencies:[Ft,Wd,I4,Rk,au,Yo,Ae],styles:['.cursor-pointer[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}[_nghost-%COMP%]{color:#202226}.header[_ngcontent-%COMP%]{margin:-24px -24px 0;color:#215f9e;padding:0 14px 0 24px;font-size:1rem;text-transform:uppercase;font-weight:700;display:flex;align-items:center}.header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex-grow:1}@media(max-width:767px){.header[_ngcontent-%COMP%]{padding:0 2px 0 24px}}.header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{line-height:1rem;margin:18px 0}.header[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%]{color:#a6b2b2;width:32px;height:32px;line-height:20px;margin-left:10px;padding:0}@media(max-width:767px){.header[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%]{width:46px;height:46px}}.header-separator[_ngcontent-%COMP%]{height:1px;background-color:#215f9e33;margin-left:-12px;margin-right:-12px}.content-margin[_ngcontent-%COMP%]{padding-top:18px;padding-bottom:24px!important}']})}}return t})(),sme=(()=>{class t{static openDialog(e){const i=new cn;return i.autoFocus=!1,i.width=at.smallModalWidth,e.open(t,i)}constructor(e){this.dialogRef=e,this.disableDismiss=!1}static{this.\u0275fac=function(i){return new(i||t)(O(Zt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-initial-setup"]],standalone:!1,decls:3,vars:6,consts:[[3,"headline","dialog","disableDismiss"],[3,"workingState","forInitialConfig"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),_(1,"translate"),h(2,"app-password",1),F("workingState",function(s){return o.disableDismiss=s}),u()()),2&i&&(C("headline",v(1,4,"settings.password.initial-config.title"))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),c(2),C("forInitialConfig",!0))},dependencies:[YB,Sn,we],encapsulation:2})}}return t})();var xS=function QB(t){var n,e,i,P,R,o=I.prototype={constructor:I,toString:null,valueOf:null},r=new I(1),s=20,a=4,l=-7,d=21,f=-1e7,m=1e7,g=!1,b=1,w=0,M={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xa0",suffix:""},E="0123456789abcdefghijklmnopqrstuvwxyz";function I(P,R){var B,$,z,G,J,U,N,K,j=this;if(!(j instanceof I))return new I(P,R);if(K=typeof P,null==R){if(W(P))return j.s=P.s,void(!P.c||P.e>m?j.c=j.e=null:P.e=10;J/=10,G++);return void(G>m?j.c=j.e=null:(j.e=G,j.c=[P]))}N=String(P)}else{if("string"==K){if(!ame.test(N=P))return i(j,N)}else{if("bigint"!=K)throw Error(xo+"Invalid argument: "+P);N=String(P)}j.s=45==N.charCodeAt(0)?(N=N.slice(1),-1):1}(G=N.indexOf("."))>-1&&(N=N.replace(".","")),(J=N.search(/e/i))>0?(G<0&&(G=J),G+=+N.slice(J+1),N=N.substring(0,J)):G<0&&(G=N.length)}else{if("string"!=K)throw Error(xo+"String expected: "+P);for(An(R,2,E.length,"Base"),j.s=45===(N=P).charCodeAt(0)?(N=N.slice(1),-1):1,B=E.slice(0,R),G=J=0,U=N.length;JG){G=U;continue}}else if(!z&&(N==N.toUpperCase()&&(N=N.toLowerCase())||N==N.toLowerCase()&&(N=N.toUpperCase()))){z=!0,J=-1,G=0;continue}return i(j,P,R)}(G=(N=e(N,R,10,j.s)).indexOf("."))>-1?N=N.replace(".",""):G=N.length}for(J=0;48===N.charCodeAt(J);J++);for(U=N.length;48===N.charCodeAt(--U););if(N=N.slice(J,++U))if(U-=J,(G=G-J-1)>m)j.c=j.e=null;else if(G=d)?bv(N,J):Fa(N,J,"0");else if(G=(P=ee(new I(P),R,B)).e,U=(N=Pr(P.c)).length,1==$||2==$&&(R<=G||G<=l)){for(;UJ),N=Fa(N,G,"0"),G+1>U){if(--R>0)for(N+=".";R--;N+="0");}else if((R+=G-U)>0)for(G+1==U&&(N+=".");R--;N+="0");return P.s<0&&z?"-"+N:N}function W(P){return P instanceof I||!!P&&!0===P._isBigNumber}function q(P,R){for(var B,$,z=1,G=new I(P[0]);z=10;z/=10,$++);return(B=$+14*B-1)>m?P.c=P.e=null:B=10;U/=10,z++);if((G=R-z)<0)G+=14,N=Q[K=0],j=Tr(N/he[z-(J=R)-1]%10);else if((K=kS((G+1)/14))>=Q.length){if(!$)break e;for(;Q.length<=K;Q.push(0));N=j=0,z=1,J=(G%=14)-14+1}else{for(N=U=Q[K],z=1;U>=10;U/=10,z++);j=(J=(G%=14)-14+z)<0?0:Tr(N/he[z-J-1]%10)}if($=$||R<0||null!=Q[K+1]||(J<0?N:N%he[z-J-1]),$=B<4?(j||$)&&(0==B||B==(P.s<0?3:2)):j>5||5==j&&(4==B||$||6==B&&(G>0?J>0?N/he[z-J]:0:Q[K-1])%10&1||B==(P.s<0?8:7)),R<1||!Q[0])return Q.length=0,$?(Q[0]=he[(14-(R-=P.e+1)%14)%14],P.e=-R||0):Q[0]=P.e=0,P;if(0==G?(Q.length=K,U=1,K--):(Q.length=K+1,U=he[14-G],Q[K]=J>0?Tr(N/he[z-J]%he[J])*U:0),$)for(;;){if(0==K){for(G=1,J=Q[0];J>=10;J/=10,G++);for(J=Q[0]+=U,U=1;J>=10;J/=10,U++);G!=U&&(P.e++,Q[0]==Er&&(Q[0]=1));break}if(Q[K]+=U,Q[K]!=Er)break;Q[K--]=0,U=1}for(G=Q.length;0===Q[--G];Q.pop());}P.e>m?P.c=P.e=null:P.e=d?bv(R,B):Fa(R,B,"0"),P.s<0?"-"+R:R)}return I.clone=QB,I.ROUND_UP=0,I.ROUND_DOWN=1,I.ROUND_CEIL=2,I.ROUND_FLOOR=3,I.ROUND_HALF_UP=4,I.ROUND_HALF_DOWN=5,I.ROUND_HALF_EVEN=6,I.ROUND_HALF_CEIL=7,I.ROUND_HALF_FLOOR=8,I.EUCLID=9,I.config=I.set=function(P){var R,B;if(null!=P){if("object"!=typeof P)throw Error(xo+"Object expected: "+P);if(P.hasOwnProperty(R="DECIMAL_PLACES")&&(An(B=P[R],0,Di,R),s=B),P.hasOwnProperty(R="ROUNDING_MODE")&&(An(B=P[R],0,8,R),a=B),P.hasOwnProperty(R="EXPONENTIAL_AT")&&((B=P[R])&&B.pop?(An(B[0],-Di,0,R),An(B[1],0,Di,R),l=B[0],d=B[1]):(An(B,-Di,Di,R),l=-(d=B<0?-B:B))),P.hasOwnProperty(R="RANGE"))if((B=P[R])&&B.pop)An(B[0],-Di,-1,R),An(B[1],1,Di,R),f=B[0],m=B[1];else{if(An(B,-Di,Di,R),!B)throw Error(xo+R+" cannot be zero: "+B);f=-(m=B<0?-B:B)}if(P.hasOwnProperty(R="CRYPTO")){if((B=P[R])!==!!B)throw Error(xo+R+" not true or false: "+B);if(B){if(!(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes)))throw g=!B,Error(xo+"crypto unavailable");g=B}else g=B}if(P.hasOwnProperty(R="MODULO_MODE")&&(An(B=P[R],0,9,R),b=B),P.hasOwnProperty(R="POW_PRECISION")&&(An(B=P[R],0,Di,R),w=B),P.hasOwnProperty(R="FORMAT")){if("object"!=typeof(B=P[R]))throw Error(xo+R+" not an object: "+B);M=B}if(P.hasOwnProperty(R="ALPHABET")){if("string"!=typeof(B=P[R])||/^.?$|[+\-.\s]|(.).*\1/.test(B))throw Error(xo+R+" invalid: "+B);E=B}}return{DECIMAL_PLACES:s,ROUNDING_MODE:a,EXPONENTIAL_AT:[l,d],RANGE:[f,m],CRYPTO:g,MODULO_MODE:b,POW_PRECISION:w,FORMAT:M,ALPHABET:E}},I.isBigNumber=function(P){if(!W(P))return!1;var R,B,$=P.c,z=P.e,G=P.s;if("[object Array]"!={}.toString.call($))return null===$&&null===z&&(null===G||1===G||-1===G);if(1!==G&&-1!==G||z<-Di||z>Di||z!==Tr(z))return!1;if(0===$[0])return 0===z&&1===$.length;if((R=(z+1)%14)<1&&(R+=14),String($[0]).length!==R)return!1;for(R=0;R<$.length;R++)if((B=$[R])<0||B>=Er||B!==Tr(B))return!1;return 0!==B},I.maximum=I.max=function(){return q(arguments,-1)},I.minimum=I.min=function(){return q(arguments,1)},I.random=(P=9007199254740992,R=Math.random()*P&2097151?function(){return Tr(Math.random()*P)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(B){var $,z,G,J,U,N=0,K=[],j=new I(r);if(null==B?B=s:An(B,0,Di),J=kS(B/14),g)if(crypto.getRandomValues){for($=crypto.getRandomValues(new Uint32Array(J*=2));N>>11))>=9e15?(z=crypto.getRandomValues(new Uint32Array(2)),$[N]=z[0],$[N+1]=z[1]):(K.push(U%1e14),N+=2);N=J/2}else{if(!crypto.randomBytes)throw g=!1,Error(xo+"crypto unavailable");for($=crypto.randomBytes(J*=7);N=9e15?crypto.randomBytes(7).copy($,N):(K.push(U%1e14),N+=7);N=J/7}if(!g)for(;N=10;U/=10,N++);N<14&&(G-=14-N)}return j.e=G,j.c=K,j}),I.sum=function(){for(var P=1,R=arguments,B=new I(R[0]);Pz-1&&(null==U[J+1]&&(U[J+1]=0),U[J+1]+=U[J]/z|0,U[J]%=z)}return U.reverse()}return function(B,$,z,G,J){var U,N,K,j,Q,he,xe,Ie,ht=B.indexOf("."),Re=s,Qe=a;for(ht>=0&&(j=w,w=0,B=B.replace(".",""),he=(Ie=new I($)).pow(B.length-ht),w=j,Ie.c=R(Fa(Pr(he.c),he.e,"0"),10,z,P),Ie.e=Ie.c.length),K=j=(xe=R(B,$,z,J?(U=E,P):(U=P,E))).length;0==xe[--j];xe.pop());if(!xe[0])return U.charAt(0);if(ht<0?--K:(he.c=xe,he.e=K,he.s=G,xe=(he=n(he,Ie,Re,Qe,z)).c,Q=he.r,K=he.e),ht=xe[N=K+Re+1],j=z/2,Q=Q||N<0||null!=xe[N+1],Q=Qe<4?(null!=ht||Q)&&(0==Qe||Qe==(he.s<0?3:2)):ht>j||ht==j&&(4==Qe||Q||6==Qe&&1&xe[N-1]||Qe==(he.s<0?8:7)),N<1||!xe[0])B=Q?Fa(U.charAt(1),-Re,U.charAt(0)):U.charAt(0);else{if(xe.length=N,Q)for(--z;++xe[--N]>z;)xe[N]=0,N||(++K,xe=[1].concat(xe));for(j=xe.length;!xe[--j];);for(ht=0,B="";ht<=j;B+=U.charAt(xe[ht++]));B=Fa(B,K,U.charAt(0))}return B}}(),n=function(){function P($,z,G){var J,U,N,K,j=0,Q=$.length,he=z%Ra,xe=z/Ra|0;for($=$.slice();Q--;)j=((U=he*(N=$[Q]%Ra)+(J=xe*N+(K=$[Q]/Ra|0)*he)%Ra*Ra+j)/G|0)+(J/Ra|0)+xe*K,$[Q]=U%G;return j&&($=[j].concat($)),$}function R($,z,G,J){var U,N;if(G!=J)N=G>J?1:-1;else for(U=N=0;Uz[U]?1:-1;break}return N}function B($,z,G,J){for(var U=0;G--;)$[G]-=U,$[G]=(U=$[G]1;$.splice(0,1));}return function($,z,G,J,U){var N,K,j,Q,he,xe,Ie,ht,Re,Qe,ct,xt,or,to,qa,Mo,Fp,rr=$.s==z.s?1:-1,fo=$.c,$n=z.c;if(!(fo&&fo[0]&&$n&&$n[0]))return new I($.s&&z.s&&(fo?!$n||fo[0]!=$n[0]:$n)?fo&&0==fo[0]||!$n?0*rr:rr/0:NaN);for(Re=(ht=new I(rr)).c=[],rr=G+(K=$.e-z.e)+1,U||(U=Er,K=Jo($.e/14)-Jo(z.e/14),rr=rr/14|0),j=0;$n[j]==(fo[j]||0);j++);if($n[j]>(fo[j]||0)&&K--,rr<0)Re.push(1),Q=!0;else{for(to=fo.length,Mo=$n.length,j=0,rr+=2,(he=Tr(U/($n[0]+1)))>1&&($n=P($n,he,U),fo=P(fo,he,U),Mo=$n.length,to=fo.length),or=Mo,ct=(Qe=fo.slice(0,Mo)).length;ct=U/2&&qa++;do{if(he=0,(N=R($n,Qe,Mo,ct))<0){if(xt=Qe[0],Mo!=ct&&(xt=xt*U+(Qe[1]||0)),(he=Tr(xt/qa))>1)for(he>=U&&(he=U-1),Ie=(xe=P($n,he,U)).length,ct=Qe.length;1==R(xe,Qe,Ie,ct);)he--,B(xe,Mo=10;rr/=10,j++);ee(ht,G+(ht.e=j+14*K-1)+1,J,Q)}else ht.e=K,ht.r=+Q;return ht}}(),i=function(){var P=/^(-?)0([xbo])(?=\w[\w.]*$)/i,R=/^([^.]+)\.$/,B=/^\.([^.]+)$/,$=/^-?(Infinity|NaN)$/,z=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(G,J,U){var N,K=J.replace(z,"");if($.test(K))return G.s=isNaN(K)?null:K<0?-1:1,void(G.c=G.e=null);if(K=K.replace(P,function(j,Q,he){return N="x"==(he=he.toLowerCase())?16:"b"==he?2:8,U&&U!=N?j:Q}),U&&(N=U,K=K.replace(R,"$1").replace(B,"0.$1")),J!=K)return new I(K,N);throw Error(xo+"Not a"+(U?" base "+U:"")+" number: "+J)}}(),o.absoluteValue=o.abs=function(){var P=new I(this);return P.s<0&&(P.s=1),P},o.comparedTo=function(P,R){return bc(this,new I(P,R))},o.decimalPlaces=o.dp=function(P,R){var B,$,z,G=this;if(null!=P)return An(P,0,Di),null==R?R=a:An(R,0,8),ee(new I(G),P+G.e+1,R);if(!(B=G.c))return null;if($=14*((z=B.length-1)-Jo(this.e/14)),z=B[z])for(;z%10==0;z/=10,$--);return $<0&&($=0),$},o.dividedBy=o.div=function(P,R){return n(this,new I(P,R),s,a)},o.dividedToIntegerBy=o.idiv=function(P,R){return n(this,new I(P,R),0,1)},o.exponentiatedBy=o.pow=function(P,R){var B,$,z,G,U,N,K,j,Q=this;if((P=new I(P)).c&&!P.isInteger())throw Error(xo+"Exponent not an integer: "+oe(P));if(null!=R&&(R=new I(R)),U=P.e>14,!Q.c||!Q.c[0]||1==Q.c[0]&&!Q.e&&1==Q.c.length||!P.c||!P.c[0])return j=new I(Math.pow(+oe(Q),U?P.s*(2-_v(P)):+oe(P))),R?j.mod(R):j;if(N=P.s<0,R){if(R.c?!R.c[0]:!R.s)return new I(NaN);($=!N&&Q.isInteger()&&R.isInteger())&&(Q=Q.mod(R))}else{if(P.e>9&&(Q.e>0||Q.e<-1||(0==Q.e?Q.c[0]>1||U&&Q.c[1]>=24e7:Q.c[0]<8e13||U&&Q.c[0]<=9999975e7)))return G=Q.s<0&&_v(P)?-0:0,Q.e>-1&&(G=1/G),new I(N?1/G:G);w&&(G=kS(w/14+2))}for(U?(B=new I(.5),N&&(P.s=1),K=_v(P)):K=(z=Math.abs(+oe(P)))%2,j=new I(r);;){if(K){if(!(j=j.times(Q)).c)break;G?j.c.length>G&&(j.c.length=G):$&&(j=j.mod(R))}if(z){if(0===(z=Tr(z/2)))break;K=z%2}else if(ee(P=P.times(B),P.e+1,1),P.e>14)K=_v(P);else{if(0===(z=+oe(P)))break;K=z%2}Q=Q.times(Q),G?Q.c&&Q.c.length>G&&(Q.c.length=G):$&&(Q=Q.mod(R))}return $?j:(N&&(j=r.div(j)),R?j.mod(R):G?ee(j,w,a,void 0):j)},o.integerValue=function(P){var R=new I(this);return null==P?P=a:An(P,0,8),ee(R,R.e+1,P)},o.isEqualTo=o.eq=function(P,R){return 0===bc(this,new I(P,R))},o.isFinite=function(){return!!this.c},o.isGreaterThan=o.gt=function(P,R){return bc(this,new I(P,R))>0},o.isGreaterThanOrEqualTo=o.gte=function(P,R){return 1===(R=bc(this,new I(P,R)))||0===R},o.isInteger=function(){return!!this.c&&Jo(this.e/14)>this.c.length-2},o.isLessThan=o.lt=function(P,R){return bc(this,new I(P,R))<0},o.isLessThanOrEqualTo=o.lte=function(P,R){return-1===(R=bc(this,new I(P,R)))||0===R},o.isNaN=function(){return!this.s},o.isNegative=function(){return this.s<0},o.isPositive=function(){return this.s>0},o.isZero=function(){return!!this.c&&0==this.c[0]},o.minus=function(P,R){var B,$,z,G,J=this,U=J.s;if(R=(P=new I(P,R)).s,!U||!R)return new I(NaN);if(U!=R)return P.s=-R,J.plus(P);var N=J.e/14,K=P.e/14,j=J.c,Q=P.c;if(!N||!K){if(!j||!Q)return j?(P.s=-R,P):new I(Q?J:NaN);if(!j[0]||!Q[0])return Q[0]?(P.s=-R,P):new I(j[0]?J:3==a?-0:0)}if(N=Jo(N),K=Jo(K),j=j.slice(),U=N-K){for((G=U<0)?(U=-U,z=j):(K=N,z=Q),z.reverse(),R=U;R--;z.push(0));z.reverse()}else for($=(G=(U=j.length)<(R=Q.length))?U:R,U=R=0;R<$;R++)if(j[R]!=Q[R]){G=j[R]0)for(;R--;j[B++]=0);for(R=Er-1;$>U;){if(j[--$]=0;){for(B=0,he=xt[z]%Re,xe=xt[z]/Re|0,G=z+(J=N);G>z;)B=((K=he*(K=ct[--J]%Re)+(U=xe*K+(j=ct[J]/Re|0)*he)%Re*Re+Ie[G]+B)/ht|0)+(U/Re|0)+xe*j,Ie[G--]=K%ht;Ie[G]=B}return B?++$:Ie.splice(0,1),Y(P,Ie,$)},o.negated=function(){var P=new I(this);return P.s=-P.s||null,P},o.plus=function(P,R){var B,$=this,z=$.s;if(R=(P=new I(P,R)).s,!z||!R)return new I(NaN);if(z!=R)return P.s=-R,$.minus(P);var G=$.e/14,J=P.e/14,U=$.c,N=P.c;if(!G||!J){if(!U||!N)return new I(z/0);if(!U[0]||!N[0])return N[0]?P:new I(U[0]?$:0*z)}if(G=Jo(G),J=Jo(J),U=U.slice(),z=G-J){for(z>0?(J=G,B=N):(z=-z,B=U),B.reverse();z--;B.push(0));B.reverse()}for((z=U.length)-(R=N.length)<0&&(B=N,N=U,U=B,R=z),z=0;R;)z=(U[--R]=U[R]+N[R]+z)/Er|0,U[R]=Er===U[R]?0:U[R]%Er;return z&&(U=[z].concat(U),++J),Y(P,U,J)},o.precision=o.sd=function(P,R){var B,$,z,G=this;if(null!=P&&P!==!!P)return An(P,1,Di),null==R?R=a:An(R,0,8),ee(new I(G),P,R);if(!(B=G.c))return null;if($=14*(z=B.length-1)+1,z=B[z]){for(;z%10==0;z/=10,$--);for(z=B[0];z>=10;z/=10,$++);}return P&&G.e+1>$&&($=G.e+1),$},o.shiftedBy=function(P){return An(P,-ZB,ZB),this.times("1e"+P)},o.squareRoot=o.sqrt=function(){var P,R,B,$,z,G=this,J=G.c,U=G.s,N=G.e,K=s+4,j=new I("0.5");if(1!==U||!J||!J[0])return new I(!U||U<0&&(!J||J[0])?NaN:J?G:1/0);if(0==(U=Math.sqrt(+oe(G)))||U==1/0?(((R=Pr(J)).length+N)%2==0&&(R+="0"),U=Math.sqrt(+R),N=Jo((N+1)/2)-(N<0||N%2),B=new I(R=U==1/0?"5e"+N:(R=U.toExponential()).slice(0,R.indexOf("e")+1)+N)):B=new I(U+""),B.c[0])for((U=(N=B.e)+K)<3&&(U=0);;)if(B=j.times((z=B).plus(n(G,z,K,1))),Pr(z.c).slice(0,U)===(R=Pr(B.c)).slice(0,U)){if(B.e0&&Ie>0){for(j=xe.substr(0,G=Ie%U||U);G0&&(j+=K+xe.slice(G)),he&&(j="-"+j)}$=Q?j+(B.decimalSeparator||"")+((N=+B.fractionGroupSize)?Q.replace(new RegExp("\\d{"+N+"}\\B","g"),"$&"+(B.fractionGroupSeparator||"")):Q):j}return(B.prefix||"")+$+(B.suffix||"")},o.toFraction=function(P){var R,B,$,z,G,J,U,N,K,j,Q,he,xe=this,Ie=xe.c;if(null!=P&&(!(U=new I(P)).isInteger()&&(U.c||1!==U.s)||U.lt(r)))throw Error(xo+"Argument "+(U.isInteger()?"out of range: ":"not an integer: ")+oe(U));if(!Ie)return new I(xe);for(R=new I(r),K=B=new I(r),$=N=new I(r),he=Pr(Ie),G=R.e=he.length-xe.e-1,R.c[0]=SS[(J=G%14)<0?14+J:J],P=!P||U.comparedTo(R)>0?G>0?R:K:U,J=m,m=1/0,U=new I(he),N.c[0]=0;j=n(U,R,0,1),1!=(z=B.plus(j.times($))).comparedTo(P);)B=$,$=z,K=N.plus(j.times(z=K)),N=z,R=U.minus(j.times(z=R)),U=z;return z=n(P.minus(B),$,0,1),N=N.plus(z.times(K)),B=B.plus(z.times($)),N.s=K.s=xe.s,Q=n(K,$,G*=2,a).minus(xe).abs().comparedTo(n(N,B,G,a).minus(xe).abs())<1?[K,$]:[N,B],m=J,Q},o.toNumber=function(){return+oe(this)},o.toObject=function(){var P=this;return{c:P.c?P.c.slice():null,e:P.e,s:P.s}},o.toPrecision=function(P,R){return null!=P&&An(P,1,Di),A(this,P,R,2)},o.toString=function(P){var R,B=this,$=B.s,z=B.e;return null===z?$?(R="Infinity",$<0&&(R="-"+R)):R="NaN":(null==P?R=z<=l||z>=d?bv(Pr(B.c),z):Fa(Pr(B.c),z,"0"):(An(P,2,E.length,"Base"),R=e(Fa(Pr(B.c),z,"0"),10,P,$,!0)),$<0&&B.c[0]&&(R="-"+R)),R},o.valueOf=o.toJSON=function(){return oe(this)},o._isBigNumber=!0,null!=t&&I.set(t),I}(),ame=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,kS=Math.ceil,Tr=Math.floor,xo="[BigNumber Error] ",Er=1e14,ZB=9007199254740991,SS=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Ra=1e7,Di=1e9;function Jo(t){var n=0|t;return t>0||t===n?n:n-1}function Pr(t){for(var n,e,i=1,o=t.length,r=t[0]+"";id^e?1:-1;for(a=(l=o.length)<(d=r.length)?l:d,s=0;sr[s]^e?1:-1;return l==d?0:l>d^e?1:-1}function An(t,n,e,i){if(te||t!==Tr(t))throw Error(xo+(i||"Argument")+("number"==typeof t?te?" out of range: ":" not an integer: ":" not a primitive number: ")+String(t))}function _v(t){var n=t.c.length-1;return Jo(t.e/14)==n&&t.c[n]%2!=0}function bv(t,n){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(n<0?"e":"e+")+n}function Fa(t,n,e){var i,o;if(n<0){for(o=e+".";++n;o+=e);t=o+t}else if(++n>(i=t.length)){for(o=e,n-=i;--n;o+=e);t+=o}else n{class t{constructor(e,i){this.apiService=e,this.storageService=i}getNodes(){let e=[];return this.apiService.get("visors-summary").pipe(De(i=>{i&&i.forEach(l=>{const d=new MS;d.online=l.online,d.localPk=l.overview.local_pk,d.version=l.overview.build_info.version,d.configVersion=l.config_version,d.os=l.overview.build_info.os,d.arch=l.overview.build_info.arch,d.autoconnectTransports=l.public_autoconnect,d.isPublic=l.is_public,d.buildTag=l.build_tag?l.build_tag:"",d.rewardsAddress=l.reward_address,d.ip=l.overview&&l.overview.local_ip&&l.overview.local_ip.trim()?l.overview.local_ip:null,d.publicIp=l.overview&&l.overview.public_ip&&l.overview.public_ip.trim()?l.overview.public_ip:null,d.isSymmeticNat=l.overview.is_symmetic_nat,l.overview.country_code&&(d.countryCode=l.overview.country_code),l.overview.region_name&&(d.regionName=l.overview.region_name),l.overview.city_name&&(d.cityName=l.overview.city_name),l.overview.latitude&&(d.latitude=l.overview.latitude),l.overview.longitude&&(d.longitude=l.overview.longitude);const f=this.storageService.getLabelInfo(d.localPk);if(d.label=f&&f.label?f.label:this.storageService.getDefaultLabel(d),!d.online)return d.dmsgServerPk="",d.roundTripPing="",void e.push(d);d.health={servicesHealth:l.health.services_health,uptimeTrackerHealth:l.health.uptime_tracker_health,autoconnectHealth:l.health.autoconnect_health,transportabilityHealth:l.health.transportability_health},d.dmsgServerPk=l.dmsg_stats.server_public_key,d.connectedDmsgServers=l.connected_dmsg_servers||[],d.roundTripPing=this.nsToMs(l.dmsg_stats.round_trip),l.dmsg_servers&&Array.isArray(l.dmsg_servers)&&(d.dmsgServers=l.dmsg_servers.map(m=>({pk:m.pk,latency:m.latency||0}))),d.transports=[],l.overview.transports&&l.overview.transports.forEach(m=>{d.transports.push({id:m.id,localPk:m.local_pk,remotePk:m.remote_pk,type:m.type,recv:m.log?m.log.recv:0,sent:m.log?m.log.sent:0,latencyMs:m.latency_ms||0})}),d.apps=[],l.overview.apps&&l.overview.apps.forEach(m=>{d.apps.push({name:m.name,autostart:m.auto_start,port:m.port,status:m.status,detailedStatus:m.detailed_status,args:m.args})}),d.isHypervisor=l.is_hypervisor,e.push(d)});const o=new Map,r=[],s=[];e.forEach(l=>{o.set(l.localPk,l),l.online&&(r.push(l.localPk),s.push(l.ip))}),this.storageService.includeVisibleLocalNodes(r,s);const a=[];return this.storageService.getSavedLocalNodes().forEach(l=>{if(!o.has(l.publicKey)&&!l.hidden){const d=new MS;d.localPk=l.publicKey;const f=this.storageService.getLabelInfo(l.publicKey);d.label=f&&f.label?f.label:this.storageService.getDefaultLabel(d),d.online=!1,d.dmsgServerPk="",d.roundTripPing="",a.push(d)}o.has(l.publicKey)&&!o.get(l.publicKey).online&&l.hidden&&o.delete(l.publicKey)}),e=[],o.forEach(l=>e.push(l)),e=e.concat(a),e}))}nsToMs(e){let i=new vv(e).dividedBy(1e6);return i=i.isLessThan(10)?i.decimalPlaces(2):i.decimalPlaces(0),i.toString(10)}getNode(e){return this.apiService.get(`visors/${e}/summary`).pipe(De(i=>{const o=new MS;o.localPk=i.overview.local_pk,o.version=i.overview.build_info.version,o.configVersion=i.config_version,o.os=i.overview.build_info.os,o.arch=i.overview.build_info.arch,o.secondsOnline=Math.floor(Number.parseFloat(i.uptime)),o.minHops=i.min_hops,o.buildTag=i.build_tag,o.skybianBuildVersion=i.skybian_build_version,o.connectedDmsgServers=i.connected_dmsg_servers||[],o.isSymmeticNat=i.overview.is_symmetic_nat,o.publicIp=i.overview.public_ip,o.autoconnectTransports=i.public_autoconnect,o.isPublic=i.is_public,o.rewardsAddress=i.reward_address,i.overview.country_code&&(o.countryCode=i.overview.country_code),i.overview.region_name&&(o.regionName=i.overview.region_name),i.overview.city_name&&(o.cityName=i.overview.city_name),i.overview.latitude&&(o.latitude=i.overview.latitude),i.overview.longitude&&(o.longitude=i.overview.longitude),o.ip=i.overview.local_ip&&i.overview.local_ip.trim()?i.overview.local_ip:null;const r=this.storageService.getLabelInfo(o.localPk);o.label=r&&r.label?r.label:this.storageService.getDefaultLabel(o),o.health={servicesHealth:i.health.services_health,uptimeTrackerHealth:i.health.uptime_tracker_health,autoconnectHealth:i.health.autoconnect_health,transportabilityHealth:i.health.transportability_health},o.transports=[],i.overview.transports&&i.overview.transports.forEach(a=>{o.transports.push({id:a.id,localPk:a.local_pk,remotePk:a.remote_pk,type:a.type,recv:a.log.recv,sent:a.log.sent,latencyMs:a.latency_ms||0})}),o.persistentTransports=[],i.persistent_transports&&i.persistent_transports.forEach(a=>{o.persistentTransports.push({pk:a.pk,type:a.type})}),o.routes=[],i.routes&&i.routes.forEach(a=>{o.routes.push({key:a.key,rule:a.rule}),a.rule_summary&&(o.routes[o.routes.length-1].ruleSummary={keepAlive:a.rule_summary.keep_alive,ruleType:a.rule_summary.rule_type,keyRouteId:a.rule_summary.key_route_id},a.rule_summary.app_fields&&a.rule_summary.app_fields.route_descriptor&&(o.routes[o.routes.length-1].appFields={routeDescriptor:{dstPk:a.rule_summary.app_fields.route_descriptor.dst_pk,dstPort:a.rule_summary.app_fields.route_descriptor.dst_port,srcPk:a.rule_summary.app_fields.route_descriptor.src_pk,srcPort:a.rule_summary.app_fields.route_descriptor.src_port}}),a.rule_summary.forward_fields&&(o.routes[o.routes.length-1].forwardFields={nextRid:a.rule_summary.forward_fields.next_rid,nextTid:a.rule_summary.forward_fields.next_tid},a.rule_summary.forward_fields.route_descriptor&&(o.routes[o.routes.length-1].forwardFields.routeDescriptor={dstPk:a.rule_summary.forward_fields.route_descriptor.dst_pk,dstPort:a.rule_summary.forward_fields.route_descriptor.dst_port,srcPk:a.rule_summary.forward_fields.route_descriptor.src_pk,srcPort:a.rule_summary.forward_fields.route_descriptor.src_port})),a.rule_summary.intermediary_forward_fields&&(o.routes[o.routes.length-1].intermediaryForwardFields={nextRid:a.rule_summary.intermediary_forward_fields.next_rid,nextTid:a.rule_summary.intermediary_forward_fields.next_tid}))}),o.apps=[],i.overview.apps&&i.overview.apps.forEach(a=>{o.apps.push({name:a.name,status:a.status,port:a.port,autostart:a.auto_start,detailedStatus:a.detailed_status,args:a.args})});let s=!1;return i.dmsg_stats&&(o.dmsgServerPk=i.dmsg_stats.server_public_key,o.roundTripPing=this.nsToMs(i.dmsg_stats.round_trip),s=!0),s||(o.dmsgServerPk="-",o.roundTripPing="-1"),i.dmsg_servers&&Array.isArray(i.dmsg_servers)&&(o.dmsgServers=i.dmsg_servers.map(a=>({pk:a.pk,latency:a.latency||0}))),o.isHypervisor=i.is_hypervisor,o}))}setRewardsAddress(e,i){return this.apiService.put(`visors/${e}/reward`,{reward_address:i})}getRewardsAddress(e){return this.apiService.get(`visors/${e}/reward`)}getRuntimeLogs(e){return this.apiService.get(`visors/${e}/runtime-logs`)}getRuntimeLogsSince(e,i){return this.apiService.get(`visors/${e}/runtime-logs?since=${i}`)}getRuntimeStats(e){return this.apiService.get(`visors/${e}/runtime-stats`)}getHostStats(e){return this.apiService.get(`visors/${e}/host-stats`)}getNetworkView(e=!1){return this.apiService.get("network-view"+(e?"?refresh=true":""))}getRewardRules(){return this.apiService.get("reward-rules",new Ro({responseType:Qf.Text}))}deleteRewardsAddress(e){return this.apiService.delete(`visors/${e}/reward`)}getProxies(e){return this.apiService.get(`visors/${e}/proxies`)}setProxyEnabled(e,i,o){return this.apiService.post(`visors/${e}/proxies/set`,{kind:i,enable:o})}setProxyUpstream(e,i,o){return this.apiService.post(`visors/${e}/proxies/upstream`,{kind:i,addr:o})}getSkynetPorts(e){return this.apiService.get(`visors/${e}/skynet-ports`)}registerSkynetPort(e,i){return this.apiService.post(`visors/${e}/skynet-ports/register`,{port:i})}deregisterSkynetPort(e,i){return this.apiService.post(`visors/${e}/skynet-ports/deregister`,{port:i})}getForwardedPorts(e){return this.apiService.get(`visors/${e}/forwarded-ports`)}registerForwardedPort(e,i){return this.apiService.post(`visors/${e}/forwarded-ports/register`,i)}updateForwardedPort(e,i){return this.apiService.post(`visors/${e}/forwarded-ports/update`,i)}getSkynetForwards(e){return this.apiService.get(`visors/${e}/skynet-forwards`)}skynetConnect(e,i,o,r,s){return this.apiService.post(`visors/${e}/skynet-forwards/connect`,{network:i,remote_pk:o,remote_port:r,local_port:s})}skynetDisconnect(e,i){return this.apiService.post(`visors/${e}/skynet-forwards/disconnect`,{id:i})}shutdown(e){return this.apiService.post(`visors/${e}/shutdown`)}checkIfUpdating(e){return this.apiService.get(`visors/${e}/update/ws/running`)}checkUpdate(e){let i="stable";return i=localStorage.getItem(vc.Channel)||i,this.apiService.get(`visors/${e}/update/available/${i}`)}update(e){const i={channel:"stable"};if(localStorage.getItem(vc.UseCustomSettings)){const r=localStorage.getItem(vc.Channel);r&&(i.channel=r);const s=localStorage.getItem(vc.Version);s&&(i.version=s);const a=localStorage.getItem(vc.ArchiveURL);a&&(i.archive_url=a);const l=localStorage.getItem(vc.ChecksumsURL);l&&(i.checksums_url=l)}return this.apiService.ws(`visors/${e}/update/ws`,i)}static{this.\u0275fac=function(i){return new(i||t)(ce(fi),ce(ri))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();class cme{}let JB=(()=>{class t{constructor(e,i){this.storageService=e,this.nodeService=i,this.dataSubject=new Ei(null),this.lastEmitedData=new cme,this.firstCallToGetDataMade=!1,this.storageService.getRefreshTimeObservable().subscribe(o=>{this.dataRefreshDelay=1e3*o,this.forceRefresh()})}startRequestingData(){return this.firstCallToGetDataMade||this.getData(0),this.dataSubject.asObservable()}stopRequestingData(){this.updateSubscription&&(this.updateSubscription.unsubscribe(),this.firstCallToGetDataMade=!1)}getData(e){this.firstCallToGetDataMade=!0,this.updateSubscription&&this.updateSubscription.unsubscribe(),this.updateSubscription=se(1).pipe(oi(e),ui(()=>{this.lastEmitedData.updating=!0,this.dataSubject.next(this.lastEmitedData)}),oi(120),Tt(()=>this.nodeService.getNodes())).subscribe(i=>{this.lastEmitedData={data:i,error:null,momentOfLastCorrectUpdate:Date.now(),updating:!1},this.dataSubject.next(this.lastEmitedData),this.getData(this.dataRefreshDelay)},i=>{i=Ze(i),this.lastEmitedData={data:this.lastEmitedData.data,error:i,momentOfLastCorrectUpdate:this.lastEmitedData.momentOfLastCorrectUpdate,updating:!1},this.dataSubject.next(this.lastEmitedData),this.getData(at.connectionRetryDelay)})}forceRefresh(){this.getData(0)}static{this.\u0275fac=function(i){return new(i||t)(ce(ri),ce(Yi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function dme(t,n){if(1&t){const e=re();h(0,"button",3),F("click",function(){const o=V(e).$implicit;return H(y().closePopup(o))}),L(1,"img",4),h(2,"div",5),p(3),u()()}if(2&t){const e=n.$implicit;c(),C("src","assets/img/lang/"+e.iconName,$i),c(2),S(e.name)}}let eV=(()=>{class t{static openDialog(e){const i=new cn;return i.autoFocus=!1,i.width=at.mediumModalWidth,e.open(t,i)}constructor(e,i){this.dialogRef=e,this.languageService=i,this.languages=[]}ngOnInit(){this.subscription=this.languageService.languages.subscribe(e=>{this.languages=e})}ngOnDestroy(){this.subscription.unsubscribe()}closePopup(e=null){e&&this.languageService.changeLanguage(e.code),this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(Xb))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-select-language"]],standalone:!1,decls:5,vars:4,consts:[[3,"headline","dialog"],[1,"options-container"],["mat-button","","color","accent",1,"grey-button-background"],["mat-button","","color","accent",1,"grey-button-background",3,"click"],[3,"src"],[1,"label"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),_(1,"translate"),h(2,"div",1),me(3,dme,4,2,"button",2,Le),u()()),2&i&&(C("headline",v(1,2,"language.title"))("dialog",o.dialogRef),c(3),ge(o.languages))},dependencies:[Ht,Sn,we],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}.options-container[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:118px;height:auto!important;margin:20px;font-size:.7rem;line-height:unset;padding:0!important;color:unset}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .mdc-button__label{width:100%}@media(max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:90px;font-size:.6rem;margin:6px}}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:64px;height:64px;margin:10px 0}@media(max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:48px;height:48px;margin:7px 0}}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{color:#202226!important;background-color:#ffffff40;padding:4px 10px}@media(max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{padding:4px 5px}}"]})}}return t})();function ume(t,n){1&t&&L(0,"img",1),2&t&&C("src","assets/img/lang/"+y().language.iconName,$i)}let hme=(()=>{class t{constructor(e,i){this.languageService=e,this.dialog=i}ngOnInit(){this.subscription=this.languageService.currentLanguage.subscribe(e=>{this.language=e})}ngOnDestroy(){this.subscription.unsubscribe()}openLanguageWindow(){eV.openDialog(this.dialog)}static{this.\u0275fac=function(i){return new(i||t)(O(Xb),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-lang-button"]],standalone:!1,decls:3,vars:4,consts:[["mat-button","",1,"lang-button","subtle-transparent-button",3,"click","matTooltip"],[1,"flag",3,"src"]],template:function(i,o){1&i&&(h(0,"button",0),_(1,"translate"),F("click",function(){return o.openLanguageWindow()}),x(2,ume,1,1,"img",1),u()),2&i&&(C("matTooltip",v(1,2,"language.title")),c(2),k(o.language?2:-1))},dependencies:[Ht,Et,we],styles:[".lang-button[_ngcontent-%COMP%]{height:40px;background-color:#f8f9f9;border-radius:100%;padding:0;line-height:1;padding:0!important}.lang-button[_ngcontent-%COMP%] .flag[_ngcontent-%COMP%]{width:20px;height:20px}"]})}}return t})();const fme=t=>({"element-disabled":t});function pme(t,n){if(1&t){const e=re();h(0,"div",8),F("click",function(){return V(e),H(y().configure())}),p(1),_(2,"translate"),u()}2&t&&(c(),S(v(2,1,"login.initial-config")))}let tV=(()=>{class t extends Lt{constructor(e,i,o,r,s,a){super(),this.authService=e,this.router=i,this.snackbarService=o,this.dialog=r,this.route=s,this.multipleNodeDataService=a,this.loading=!1,this.isForVpn=!1,this.vpnKey="",this.userExists=!0}ngOnInit(){return this.multipleNodeDataService.stopRequestingData(),this.routeSubscription=this.route.paramMap.subscribe(e=>{this.vpnKey=e.get("key"),this.isForVpn=-1!==window.location.href.indexOf("vpnlogin"),this.verificationSubscription=this.authService.checkLogin().subscribe(i=>{i!==Ea.NotLogged&&(Jr.currentInstance.processLoginDone(),setTimeout(()=>{this.router.navigate(this.isForVpn?["vpn",this.vpnKey,"status"]:["nodes"],{replaceUrl:!0})},5))})}),this.form=new ov({password:new Ia("",Se.required)}),this.authService.userExists().subscribe(e=>this.userExists=e,()=>this.userExists=!0),super.ngOnInit()}ngOnDestroy(){this.loginSubscription&&this.loginSubscription.unsubscribe(),this.verificationSubscription.unsubscribe(),this.routeSubscription.unsubscribe()}login(){!this.form.valid||this.loading||(this.loading=!0,this.loginSubscription=this.authService.login(this.form.get("password").value).subscribe(()=>this.onLoginSuccess(),e=>this.onLoginError(e)))}configure(){sme.openDialog(this.dialog)}onLoginSuccess(){Jr.currentInstance.processLoginDone(),setTimeout(()=>{this.router.navigate(this.isForVpn?["vpn",this.vpnKey,"status"]:["nodes"],{replaceUrl:!0})})}onLoginError(e){e=Ze(e),this.loading=!1,this.snackbarService.showError(e.originalError&&401===e.originalError.status?"login.incorrect-password":e.translatableErrorMsg)}static{this.\u0275fac=function(i){return new(i||t)(O(ep),O(yt),O(ot),O(Nt),O(Li),O(JB))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-login"]],standalone:!1,features:[_e],decls:12,vars:9,consts:[[1,"w-100","h-100","d-flex","justify-content-center"],[1,"row","main-container"],["src","/assets/img/logo-v.png",1,"logo"],[1,"mt-5",3,"formGroup"],[1,"login-input",3,"ngClass"],["type","password","formControlName","password","autocomplete","off",3,"keydown.enter","placeholder"],[3,"click","disabled"],["class","config-link",3,"click",4,"ngIf"],[1,"config-link",3,"click"]],template:function(i,o){1&i&&(h(0,"div",0),L(1,"app-lang-button"),h(2,"div",1),L(3,"img",2),h(4,"form",3)(5,"div",4)(6,"input",5),_(7,"translate"),F("keydown.enter",function(){return o.login()}),u(),h(8,"button",6),F("click",function(){return o.login()}),h(9,"mat-icon"),p(10,"chevron_right"),u()()()(),rt(11,pme,3,3,"div",7),u()()),2&i&&(c(4),C("formGroup",o.form),c(),C("ngClass",ie(7,fme,o.loading)),c(),C("placeholder",v(7,5,"login.password")),c(2),C("disabled",!o.form.valid||o.loading),c(3),C("ngIf",!o.userExists))},dependencies:[Ft,lf,kn,Qt,Jt,xn,sn,_n,Ae,hme,we],styles:['.cursor-pointer[_ngcontent-%COMP%], .config-link[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}app-lang-button[_ngcontent-%COMP%]{position:fixed;right:10px;top:10px;z-index:10}.main-container[_ngcontent-%COMP%]{z-index:1;height:100%;flex-direction:column;align-items:center;justify-content:center}.logo[_ngcontent-%COMP%]{width:170px}.login-input[_ngcontent-%COMP%]{height:35px;width:300px;overflow:hidden;border-radius:10px;box-shadow:0 3px 8px #0000001a,0 6px 20px #0000001a;display:flex}.login-input[_ngcontent-%COMP%] input[type=password][_ngcontent-%COMP%]{background:#fff;width:calc(100% - 35px);height:100%;font-size:.875rem;border:none;padding-left:10px;padding-right:10px}.login-input[_ngcontent-%COMP%] input[type=password][_ngcontent-%COMP%]:focus{outline:none}.login-input[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{background:#fff;color:#202226;width:35px;height:35px;line-height:35px;border:none;display:flex;cursor:pointer;align-items:center}.login-input[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{color:#777}.config-link[_ngcontent-%COMP%]{color:#f8f9f9;font-size:.7rem;margin-top:20px}']})}}return t})();const mme=["firstInput"];let DS=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.formBuilder=o,this.storageService=r,this.snackbarService=s}ngOnInit(){this.form=this.formBuilder.group({label:[this.data.label]})}ngAfterViewInit(){setTimeout(()=>this.firstInput.nativeElement.focus())}save(){const e=this.form.get("label").value.trim();e!==this.data.label?(this.storageService.saveLabel(this.data.id,e,this.data.identifiedElementType),e?this.snackbarService.showDone("edit-label.done"):this.snackbarService.showWarning("edit-label.label-removed-warning"),this.dialogRef.close(!0)):this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Si),O(ri),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-edit-label"]],viewQuery:function(i,o){if(1&i&&st(mme,5),2&i){let r;fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:11,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","label","maxlength","66","matInput",""],["color","primary",1,"float-right",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),_(7,"translate"),u(),L(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.save()}),p(11),_(12,"translate"),u()()),2&i&&(C("headline",v(1,5,"labeled-element.edit-label"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(4),S(v(7,7,"edit-label.label")),c(5),S(v(12,9,"common.save")))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,On,Mi,Sn,we],encapsulation:2})}}return t})();const gme=["cancelButton"],_me=["confirmButton"];function bme(t,n){if(1&t&&(h(0,"div"),p(1),_(2,"translate"),u()),2&t){const e=n.$implicit;c(),D(" - ",v(2,1,e)," ")}}function vme(t,n){if(1&t&&(h(0,"div",4),me(1,bme,3,3,"div",null,Le),u()),2&t){const e=y();c(),ge(e.state!==e.confirmationStates.Done?e.data.list:e.doneList)}}function yme(t,n){if(1&t&&(h(0,"div",3),p(1),_(2,"translate"),u()),2&t){const e=y();c(),D(" ",v(2,1,e.data.lowerText)," ")}}function Cme(t,n){if(1&t){const e=re();h(0,"app-button",8,1),F("action",function(){return V(e),H(y().closeModal())}),p(2),_(3,"translate"),u()}if(2&t){const e=y();c(2),D(" ",v(3,1,e.data.cancelButtonText)," ")}}var Cu=function(t){return t.Asking="Asking",t.Processing="Processing",t.Done="Done",t}(Cu||{});let wme=(()=>{class t{constructor(e,i){this.dialogRef=e,this.data=i,this.disableDismiss=!1,this.state=Cu.Asking,this.confirmationStates=Cu,this.operationAccepted=new ke,this.disableDismiss=!!i.disableDismiss,this.dialogRef.disableClose=this.disableDismiss}ngAfterViewInit(){this.data.cancelButtonText?setTimeout(()=>this.cancelButton.focus()):setTimeout(()=>this.confirmButton.focus())}ngOnDestroy(){this.operationAccepted.complete()}closeModal(){this.dialogRef.close()}sendOperationAcceptedEvent(){this.operationAccepted.emit()}showAsking(e){e&&(this.data=e),this.state=Cu.Asking,this.confirmButton.reset(),this.disableDismiss=!1,this.dialogRef.disableClose=this.disableDismiss,this.cancelButton&&this.cancelButton.showEnabled()}showProcessing(){this.state=Cu.Processing,this.disableDismiss=!0,this.confirmButton.showLoading(),this.cancelButton&&this.cancelButton.showDisabled()}showDone(e,i,o=null){this.doneTitle=e||this.data.headerText,this.doneText=i,this.doneList=o,this.confirmButton.reset(),setTimeout(()=>this.confirmButton.focus()),this.state=Cu.Done,this.dialogRef.disableClose=!1,this.disableDismiss=!1}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-confirmation"]],viewQuery:function(i,o){if(1&i&&st(gme,5)(_me,5),2&i){let r;fe(r=pe())&&(o.cancelButton=r.first),fe(r=pe())&&(o.confirmButton=r.first)}},outputs:{operationAccepted:"operationAccepted"},standalone:!1,decls:13,vars:14,consts:[["confirmButton",""],["cancelButton",""],[3,"headline","dialog","disableDismiss"],[1,"text-container"],[1,"list-container"],[1,"buttons"],["color","accent"],["color","primary",3,"action"],["color","accent",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),_(1,"translate"),h(2,"div",3),p(3),_(4,"translate"),u(),x(5,vme,3,0,"div",4),x(6,yme,3,3,"div",3),h(7,"div",5),x(8,Cme,4,3,"app-button",6),h(9,"app-button",7,0),F("action",function(){return o.state===o.confirmationStates.Asking?o.sendOperationAcceptedEvent():o.closeModal()}),p(11),_(12,"translate"),u()()()),2&i&&(C("headline",v(1,8,o.state!==o.confirmationStates.Done?o.data.headerText:o.doneTitle))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),c(3),D(" ",v(4,10,o.state!==o.confirmationStates.Done?o.data.text:o.doneText)," "),c(2),k(o.data.list&&o.state!==o.confirmationStates.Done||o.doneList&&o.state===o.confirmationStates.Done?5:-1),c(),k(o.data.lowerText&&o.state!==o.confirmationStates.Done?6:-1),c(2),k(o.data.cancelButtonText&&o.state!==o.confirmationStates.Done?8:-1),c(3),D(" ",v(12,12,o.state!==o.confirmationStates.Done?o.data.confirmButtonText:"confirmation.close")," "))},dependencies:[Mi,Sn,we],styles:[".text-container[_ngcontent-%COMP%]{word-break:break-word}.list-container[_ngcontent-%COMP%]{font-size:14px;margin:10px;color:#215f9e;word-break:break-word}.buttons[_ngcontent-%COMP%]{margin-top:15px;text-align:right}.buttons[_ngcontent-%COMP%] app-button[_ngcontent-%COMP%]{margin-left:5px}"]})}}return t})();class Ut{static createConfirmationDialog(n,e){const i={text:e,headerText:"confirmation.header-text",confirmButtonText:"confirmation.confirm-button",cancelButtonText:"confirmation.cancel-button",disableDismiss:!1},o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,n.open(wme,o)}static checkIfTagIsUpdatable(n){return!(null==n||n.toUpperCase()==="Windows".toUpperCase()||n.toUpperCase()==="Win".toUpperCase()||n.toUpperCase()==="Mac".toUpperCase()||n.toUpperCase()==="Macos".toUpperCase()||n.toUpperCase()==="Mac OS".toUpperCase()||n.toUpperCase()==="Darwin".toUpperCase())}static checkIfTagCanOpenterminal(n){return!(null==n||n.toUpperCase()==="Windows".toUpperCase()||n.toUpperCase()==="Win".toUpperCase())}static checkIfIpValidOrEmpty(n){if(!n)return!0;const e=n.split(".");if(4!==e.length)return!1;for(const i of e){const o=Number.parseInt(i,10);if(isNaN(o)||o+""!==i||o<0||o>255)return!1}return!0}}function xme(t,n){if(1&t&&(h(0,"mat-icon",4),p(1),u()),2&t){const e=y().$implicit;C("inline",!0),c(),S(e.icon)}}function kme(t,n){if(1&t){const e=re();h(0,"div",1)(1,"button",2),F("click",function(){const o=V(e).$index;return H(y().closePopup(o+1))}),h(2,"div",3),x(3,xme,2,2,"mat-icon",4),h(4,"span"),p(5),_(6,"translate"),u()()()()}if(2&t){const e=n.$implicit;c(3),k(e.icon?3:-1),c(2),S(v(6,2,e.label))}}let ho=(()=>{class t{static openDialog(e,i,o){const r=new cn;return r.data={options:i,title:o},r.autoFocus=!1,r.width=at.smallModalWidth,e.open(t,r)}constructor(e,i){this.data=e,this.dialogRef=i}closePopup(e){this.dialogRef.close(e)}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-select-option"]],standalone:!1,decls:4,vars:5,consts:[[3,"headline","dialog","includeVerticalMargins"],[1,"options-list-button-container"],["mat-button","",1,"grey-button-background",3,"click"],[1,"internal-container"],[1,"icon",3,"inline"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),_(1,"translate"),me(2,kme,7,4,"div",1,Le),u()),2&i&&(C("headline",v(1,3,o.data.title))("dialog",o.dialogRef)("includeVerticalMargins",!1),c(2),ge(o.data.options))},dependencies:[Ht,Ae,Sn,we],styles:[".icon[_ngcontent-%COMP%]{font-size:14px;width:14px;line-height:1}.grey-button-background[_ngcontent-%COMP%]{justify-content:left!important;min-height:45px}"]})}}return t})();var Mn=function(t){return t.TextInput="TextInput",t.Select="Select",t}(Mn||{});class Pt{constructor(n,e,i,o){this.properties=n,this.label=e,this.sortingMode=i,this.labelProperties=o}get id(){return this.properties.join("")}}var lt=function(t){return t.Text="Text",t.Number="Number",t.NumberReversed="NumberReversed",t.Boolean="Boolean",t}(lt||{});class wu{get sortingArrow(){return this.sortReverse?"keyboard_arrow_up":"keyboard_arrow_down"}get currentSortingColumn(){return this.sortBy}get sortingInReverseOrder(){return this.sortReverse}get dataSorted(){return this.dataUpdatedSubject.asObservable()}get currentlySortingByLabel(){return this.sortByLabel}constructor(n,e,i,o,r,s){this.dialog=n,this.translateService=e,this.storageService=i,this.sortReverse=!1,this.sortByLabel=!1,this.tieBreakerColumnIndex=null,this.columnStorageKeyPrefix="col_",this.orderStorageKeyPrefix="order_",this.labelStorageKeyPrefix="label_",this.dataUpdatedSubject=new be,this.sortableColumns=o,this.id=s,this.defaultColumnIndex=r,this.sortBy=o[r];const a=this.storageService.getDataForHv(this.columnStorageKeyPrefix+s);if(a){const l=o.find(d=>d.id===a);l&&(this.sortBy=l)}this.sortReverse="true"===this.storageService.getDataForHv(this.orderStorageKeyPrefix+s),this.sortByLabel="true"===this.storageService.getDataForHv(this.labelStorageKeyPrefix+s)}dispose(){this.dataUpdatedSubject.complete()}setTieBreakerColumnIndex(n){this.tieBreakerColumnIndex=n}setData(n){this.data=n,this.sortData()}changeSortingOrder(n){if(this.sortBy===n||n.labelProperties)if(n.labelProperties){const e=[{label:this.translateService.instant("tables.sort-by-value")},{label:this.translateService.instant("tables.sort-by-value")+" "+this.translateService.instant("tables.inverted-order")},{label:this.translateService.instant("tables.sort-by-label")},{label:this.translateService.instant("tables.sort-by-label")+" "+this.translateService.instant("tables.inverted-order")}];ho.openDialog(this.dialog,e,"tables.title").afterClosed().subscribe(i=>{i&&this.changeSortingParams(n,i>2,i%2==0)})}else this.sortReverse=!this.sortReverse,this.storageService.setDataForHv(this.orderStorageKeyPrefix+this.id,String(this.sortReverse)),this.sortData();else this.changeSortingParams(n,!1,!1)}changeSortingParams(n,e,i){this.sortBy=n,this.sortByLabel=e,this.sortReverse=i,this.storageService.setDataForHv(this.columnStorageKeyPrefix+this.id,n.id),this.storageService.setDataForHv(this.orderStorageKeyPrefix+this.id,String(this.sortReverse)),this.storageService.setDataForHv(this.labelStorageKeyPrefix+this.id,String(this.sortByLabel)),this.sortData()}openSortingOrderModal(){const n=[],e=[];this.sortableColumns.forEach(i=>{const o=this.translateService.instant(i.label);n.push({label:o}),e.push({sortBy:i,sortReverse:!1,sortByLabel:!1}),n.push({label:o+" "+this.translateService.instant("tables.inverted-order")}),e.push({sortBy:i,sortReverse:!0,sortByLabel:!1}),i.labelProperties&&(n.push({label:o+" "+this.translateService.instant("tables.label")}),e.push({sortBy:i,sortReverse:!1,sortByLabel:!0}),n.push({label:o+" "+this.translateService.instant("tables.label")+" "+this.translateService.instant("tables.inverted-order")}),e.push({sortBy:i,sortReverse:!0,sortByLabel:!0}))}),ho.openDialog(this.dialog,n,"tables.title").afterClosed().subscribe(i=>{i&&this.changeSortingParams(e[i-1].sortBy,e[i-1].sortByLabel,e[i-1].sortReverse)})}sortData(){this.data&&(this.data.sort((n,e)=>{let i=this.getSortResponse(this.sortBy,n,e,!0);return 0===i&&null!==this.tieBreakerColumnIndex&&this.sortableColumns[this.tieBreakerColumnIndex]!==this.sortBy&&(i=this.getSortResponse(this.sortableColumns[this.tieBreakerColumnIndex],n,e,!1)),0===i&&this.sortableColumns[this.defaultColumnIndex]!==this.sortBy&&(i=this.getSortResponse(this.sortableColumns[this.defaultColumnIndex],n,e,!1)),i}),this.dataUpdatedSubject.next())}getSortResponse(n,e,i,o){let s=e,a=i;(this.sortByLabel&&o&&n.labelProperties?n.labelProperties:n.properties).forEach(f=>{s=s[f],a=a[f]});const l=this.sortByLabel&&o?lt.Text:n.sortingMode;let d=0;return l===lt.Text?d=this.sortReverse?a.localeCompare(s):s.localeCompare(a):l===lt.NumberReversed?d=this.sortReverse?s-a:a-s:l===lt.Number?d=this.sortReverse?a-s:s-a:l===lt.Boolean&&(s&&!a?d=-1:!s&&a&&(d=1),d*=this.sortReverse?-1:1),d}}let Dme=(()=>{class t{_animationsDisabled=hi();state="unchecked";disabled=!1;appearance="full";constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:12,hostBindings:function(i,o){2&i&&ve("mat-pseudo-checkbox-indeterminate","indeterminate"===o.state)("mat-pseudo-checkbox-checked","checked"===o.state)("mat-pseudo-checkbox-disabled",o.disabled)("mat-pseudo-checkbox-minimal","minimal"===o.appearance)("mat-pseudo-checkbox-full","full"===o.appearance)("_mat-animation-noopable",o._animationsDisabled)},inputs:{state:"state",disabled:"disabled",appearance:"appearance"},decls:0,vars:0,template:function(i,o){},styles:['.mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-minimal-selected-checkmark-color, var(--mat-sys-primary))}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full{border-color:var(--mat-pseudo-checkbox-full-unselected-icon-color, var(--mat-sys-on-surface-variant));border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-pseudo-checkbox-full-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-pseudo-checkbox-full-selected-icon-color, var(--mat-sys-primary));border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-full-selected-checkmark-color, var(--mat-sys-on-primary))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-pseudo-checkbox-full-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-full-disabled-selected-checkmark-color, var(--mat-sys-surface))}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}\n'],encapsulation:2,changeDetection:0})}return t})();const Tme=["text"],Eme=[[["mat-icon"]],"*"],Pme=["mat-icon","*"];function Ime(t,n){if(1&t&&L(0,"mat-pseudo-checkbox",1),2&t){const e=y();C("disabled",e.disabled)("state",e.selected?"checked":"unchecked")}}function Ome(t,n){1&t&&L(0,"mat-pseudo-checkbox",3),2&t&&C("disabled",y().disabled)}function Ame(t,n){if(1&t&&(h(0,"span",4),p(1),u()),2&t){const e=y();c(),D("(",e.group.label,")")}}const nV=new Z("MAT_OPTION_PARENT_COMPONENT"),iV=new Z("MatOptgroup");class Rme{source;isUserInput;constructor(n,e=!1){this.source=n,this.isUserInput=e}}let is=(()=>{class t{_element=T(Ne);_changeDetectorRef=T(Dt);_parent=T(nV,{optional:!0});group=T(iV,{optional:!0});_signalDisableRipple=!1;_selected=!1;_active=!1;_mostRecentViewValue="";get multiple(){return this._parent&&this._parent.multiple}get selected(){return this._selected}value;id=T(si).getId("mat-option-");get disabled(){return this.group&&this.group.disabled||this._disabled()}set disabled(e){this._disabled.set(e)}_disabled=Ct(!1);get disableRipple(){return this._signalDisableRipple?this._parent.disableRipple():!!this._parent?.disableRipple}get hideSingleSelectionIndicator(){return!(!this._parent||!this._parent.hideSingleSelectionIndicator)}onSelectionChange=new ke;_text;_stateChanges=new be;constructor(){const e=T(qo);e.load(cu),e.load(xk),this._signalDisableRipple=!!this._parent&&Fl(this._parent.disableRipple)}get active(){return this._active}get viewValue(){return(this._text?.nativeElement.textContent||"").trim()}select(e=!0){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),e&&this._emitSelectionChangeEvent())}deselect(e=!0){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),e&&this._emitSelectionChangeEvent())}focus(e,i){const o=this._getHostElement();"function"==typeof o.focus&&o.focus(i)}setActiveStyles(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}setInactiveStyles(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}getLabel(){return this.viewValue}_handleKeydown(e){(13===e.keyCode||32===e.keyCode)&&!Mr(e)&&(this._selectViaInteraction(),e.preventDefault())}_selectViaInteraction(){this.disabled||(this._selected=!this.multiple||!this._selected,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._element.nativeElement}ngAfterViewChecked(){if(this._selected){const e=this.viewValue;e!==this._mostRecentViewValue&&(this._mostRecentViewValue&&this._stateChanges.next(),this._mostRecentViewValue=e)}}ngOnDestroy(){this._stateChanges.complete()}_emitSelectionChangeEvent(e=!1){this.onSelectionChange.emit(new Rme(this,e))}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-option"]],viewQuery:function(i,o){if(1&i&&st(Tme,7),2&i){let r;fe(r=pe())&&(o._text=r.first)}},hostAttrs:["role","option",1,"mat-mdc-option","mdc-list-item"],hostVars:11,hostBindings:function(i,o){1&i&&F("click",function(){return o._selectViaInteraction()})("keydown",function(s){return o._handleKeydown(s)}),2&i&&(gr("id",o.id),We("aria-selected",o.selected)("aria-disabled",o.disabled.toString()),ve("mdc-list-item--selected",o.selected)("mat-mdc-option-multiple",o.multiple)("mat-mdc-option-active",o.active)("mdc-list-item--disabled",o.disabled))},inputs:{value:"value",id:"id",disabled:[2,"disabled","disabled",Te]},outputs:{onSelectionChange:"onSelectionChange"},exportAs:["matOption"],ngContentSelectors:Pme,decls:8,vars:5,consts:[["text",""],["aria-hidden","true",1,"mat-mdc-option-pseudo-checkbox",3,"disabled","state"],[1,"mdc-list-item__primary-text"],["state","checked","aria-hidden","true","appearance","minimal",1,"mat-mdc-option-pseudo-checkbox",3,"disabled"],[1,"cdk-visually-hidden"],["aria-hidden","true","mat-ripple","",1,"mat-mdc-option-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled"]],template:function(i,o){1&i&&(xi(Eme),x(0,Ime,1,2,"mat-pseudo-checkbox",1),Rt(1),h(2,"span",2,0),Rt(4,1),u(),x(5,Ome,1,1,"mat-pseudo-checkbox",3),x(6,Ame,2,1,"span",4),L(7,"div",5)),2&i&&(k(o.multiple?0:-1),c(5),k(o.multiple||!o.selected||o.hideSingleSelectionIndicator?-1:5),c(),k(o.group&&o.group._inert?6:-1),c(),C("matRippleTrigger",o._getHostElement())("matRippleDisabled",o.disabled||o.disableRipple))},dependencies:[Dme,lu],styles:['.mat-mdc-option{-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-option-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-option-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-option-label-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-option-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-option-label-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent));outline:0}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-active,.mat-mdc-option-multiple,:focus,:hover){background-color:var(--mat-option-selected-state-layer-color, var(--mat-sys-secondary-container))}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-active,.mat-mdc-option-multiple,:focus,:hover) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option.mdc-list-item{align-items:center;background:rgba(0,0,0,0)}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}@media(forced-colors: active){.mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{right:auto;left:16px}}.mat-mdc-option-multiple{--mat-list-list-item-selected-container-color: var(--mat-list-list-item-container-color, transparent)}.mat-mdc-option-active .mat-focus-indicator::before{content:""}\n'],encapsulation:2,changeDetection:0})}return t})();class oV{_items;_activeItemIndex=Ct(-1);_activeItem=Ct(null);_wrap=!1;_typeaheadSubscription=gt.EMPTY;_itemChangesSubscription;_vertical=!0;_horizontal=null;_allowedModifierKeys=[];_homeAndEnd=!1;_pageUpAndDown={enabled:!1,delta:10};_effectRef;_typeahead;_skipPredicateFn=n=>n.disabled;constructor(n,e){this._items=n,n instanceof ud?this._itemChangesSubscription=n.changes.subscribe(i=>this._itemsChanged(i.toArray())):Fl(n)&&(this._effectRef=vm(()=>this._itemsChanged(n()),{injector:e}))}tabOut=new be;change=new be;skipPredicate(n){return this._skipPredicateFn=n,this}withWrap(n=!0){return this._wrap=n,this}withVerticalOrientation(n=!0){return this._vertical=n,this}withHorizontalOrientation(n){return this._horizontal=n,this}withAllowedModifierKeys(n){return this._allowedModifierKeys=n,this}withTypeAhead(n=200){this._typeaheadSubscription.unsubscribe();const e=this._getItemsArray();return this._typeahead=new UB(e,{debounceInterval:"number"==typeof n?n:void 0,skipPredicate:i=>this._skipPredicateFn(i)}),this._typeaheadSubscription=this._typeahead.selectedItem.subscribe(i=>{this.setActiveItem(i)}),this}cancelTypeahead(){return this._typeahead?.reset(),this}withHomeAndEnd(n=!0){return this._homeAndEnd=n,this}withPageUpDown(n=!0,e=10){return this._pageUpAndDown={enabled:n,delta:e},this}setActiveItem(n){const e=this._activeItem();this.updateActiveItem(n),this._activeItem()!==e&&this.change.next(this._activeItemIndex())}onKeydown(n){const e=n.keyCode,o=["altKey","ctrlKey","metaKey","shiftKey"].every(r=>!n[r]||this._allowedModifierKeys.indexOf(r)>-1);switch(e){case 9:return void this.tabOut.next();case 40:if(this._vertical&&o){this.setNextItemActive();break}return;case 38:if(this._vertical&&o){this.setPreviousItemActive();break}return;case 39:if(this._horizontal&&o){"rtl"===this._horizontal?this.setPreviousItemActive():this.setNextItemActive();break}return;case 37:if(this._horizontal&&o){"rtl"===this._horizontal?this.setNextItemActive():this.setPreviousItemActive();break}return;case 36:if(this._homeAndEnd&&o){this.setFirstItemActive();break}return;case 35:if(this._homeAndEnd&&o){this.setLastItemActive();break}return;case 33:if(this._pageUpAndDown.enabled&&o){const r=this._activeItemIndex()-this._pageUpAndDown.delta;this._setActiveItemByIndex(r>0?r:0,1);break}return;case 34:if(this._pageUpAndDown.enabled&&o){const r=this._activeItemIndex()+this._pageUpAndDown.delta,s=this._getItemsArray().length;this._setActiveItemByIndex(r-1&&i!==this._activeItemIndex()&&(this._activeItemIndex.set(i),this._typeahead?.setCurrentSelectedItemIndex(i))}}}class Lme extends oV{setActiveItem(n){this.activeItem&&this.activeItem.setInactiveStyles(),super.setActiveItem(n),this.activeItem&&this.activeItem.setActiveStyles()}}class Bme{_multiple;_emitChanges;compareWith;_selection=new Set;_deselectedToEmit=[];_selectedToEmit=[];_selected=null;get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}changed=new be;constructor(n=!1,e,i=!0,o){this._multiple=n,this._emitChanges=i,this.compareWith=o,e&&e.length&&(n?e.forEach(r=>this._markSelected(r)):this._markSelected(e[0]),this._selectedToEmit.length=0)}select(...n){this._verifyValueAssignment(n),n.forEach(i=>this._markSelected(i));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}deselect(...n){this._verifyValueAssignment(n),n.forEach(i=>this._unmarkSelected(i));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}setSelection(...n){this._verifyValueAssignment(n);const e=this.selected,i=new Set(n.map(r=>this._getConcreteValue(r)));n.forEach(r=>this._markSelected(r)),e.filter(r=>!i.has(this._getConcreteValue(r,i))).forEach(r=>this._unmarkSelected(r));const o=this._hasQueuedChanges();return this._emitChangeEvent(),o}toggle(n){return this.isSelected(n)?this.deselect(n):this.select(n)}clear(n=!0){this._unmarkAll();const e=this._hasQueuedChanges();return n&&this._emitChangeEvent(),e}isSelected(n){return this._selection.has(this._getConcreteValue(n))}isEmpty(){return 0===this._selection.size}hasValue(){return!this.isEmpty()}sort(n){this._multiple&&this.selected&&this._selected.sort(n)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(n){n=this._getConcreteValue(n),this.isSelected(n)||(this._multiple||this._unmarkAll(),this.isSelected(n)||this._selection.add(n),this._emitChanges&&this._selectedToEmit.push(n))}_unmarkSelected(n){n=this._getConcreteValue(n),this.isSelected(n)&&(this._selection.delete(n),this._emitChanges&&this._deselectedToEmit.push(n))}_unmarkAll(){this.isEmpty()||this._selection.forEach(n=>this._unmarkSelected(n))}_verifyValueAssignment(n){}_hasQueuedChanges(){return!(!this._deselectedToEmit.length&&!this._selectedToEmit.length)}_getConcreteValue(n,e){if(this.compareWith){e=e??this._selection;for(let i of e)if(this.compareWith(n,i))return i;return n}return n}}let Vme=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ai]})}return t})(),rV=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[Bk,Vme,is,ai]})}return t})();const Hme=["trigger"],Ume=["panel"],zme=[[["mat-select-trigger"]],"*"],jme=["mat-select-trigger","*"];function $me(t,n){if(1&t&&(h(0,"span",4),p(1),u()),2&t){const e=y();c(),S(e.placeholder)}}function Wme(t,n){1&t&&Rt(0)}function Gme(t,n){if(1&t&&(h(0,"span",11),p(1),u()),2&t){const e=y(2);c(),S(e.triggerValue)}}function qme(t,n){if(1&t&&(h(0,"span",5),x(1,Wme,1,0)(2,Gme,2,1,"span",11),u()),2&t){const e=y();c(),k(e.customTrigger?1:2)}}function Kme(t,n){if(1&t){const e=re();h(0,"div",12,1),F("keydown",function(o){return V(e),H(y()._handleKeydown(o))}),Rt(2,1),u()}if(2&t){const e=y();Ge(e.panelClass),ve("mat-select-panel-animations-enabled",!e._animationsDisabled)("mat-primary","primary"===(null==e._parentFormField?null:e._parentFormField.color))("mat-accent","accent"===(null==e._parentFormField?null:e._parentFormField.color))("mat-warn","warn"===(null==e._parentFormField?null:e._parentFormField.color))("mat-undefined",!(null!=e._parentFormField&&e._parentFormField.color)),We("id",e.id+"-panel")("aria-multiselectable",e.multiple)("aria-label",e.ariaLabel||null)("aria-labelledby",e._getPanelAriaLabelledby())}}const Yme=new Z("mat-select-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Ue);return()=>$f(t)}}),Xme=new Z("MAT_SELECT_CONFIG"),sV=new Z("MatSelectTrigger");class Zme{source;value;constructor(n,e){this.source=n,this.value=e}}let Na=(()=>{class t{_viewportRuler=T(tu);_changeDetectorRef=T(Dt);_elementRef=T(Ne);_dir=T(kr,{optional:!0});_idGenerator=T(si);_renderer=T(ei);_parentFormField=T(bS,{optional:!0});ngControl=T(ts,{self:!0,optional:!0});_liveAnnouncer=T(m4);_defaultOptions=T(Xme,{optional:!0});_animationsDisabled=hi();_popoverLocation;_initialized=new be;_cleanupDetach;options;optionGroups;customTrigger;_positions=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"}];_scrollOptionIntoView(e){const i=this.options.toArray()[e];if(i){const o=this.panel.nativeElement,r=function Fme(t,n,e){if(e.length){let i=n.toArray(),o=e.toArray(),r=0;for(let s=0;se+i?Math.max(0,t-i+n):e}(s.offsetTop,s.offsetHeight,o.scrollTop,o.offsetHeight)}}_positioningSettled(){this._scrollOptionIntoView(this._keyManager.activeItemIndex||0)}_getChangeEvent(e){return new Zme(this,e)}_scrollStrategyFactory=T(Yme);_panelOpen=!1;_compareWith=(e,i)=>e===i;_uid=this._idGenerator.getId("mat-select-");_triggerAriaLabelledBy=null;_previousControl;_destroy=new be;_errorStateTracker;stateChanges=new be;disableAutomaticLabeling=!0;userAriaDescribedBy;_selectionModel;_keyManager;_preferredOverlayOrigin;_overlayWidth;_onChange=()=>{};_onTouched=()=>{};_valueId=this._idGenerator.getId("mat-select-value-");_scrollStrategy;_overlayPanelClass=this._defaultOptions?.overlayPanelClass||"";get focused(){return this._focused||this._panelOpen}_focused=!1;controlType="mat-select";trigger;panel;_overlayDir;panelClass;disabled=!1;get disableRipple(){return this._disableRipple()}set disableRipple(e){this._disableRipple.set(e)}_disableRipple=Ct(!1);tabIndex=0;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._syncParentProperties()}_hideSingleSelectionIndicator=this._defaultOptions?.hideSingleSelectionIndicator??!1;get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.stateChanges.next()}_placeholder;get required(){return this._required??this.ngControl?.control?.hasValidator(Se.required)??!1}set required(e){this._required=e,this.stateChanges.next()}_required;get multiple(){return this._multiple}set multiple(e){this._multiple=e}_multiple=!1;disableOptionCentering=this._defaultOptions?.disableOptionCentering??!1;get compareWith(){return this._compareWith}set compareWith(e){this._compareWith=e,this._selectionModel&&this._initializeSelection()}get value(){return this._value}set value(e){this._assignValue(e)&&this._onChange(e)}_value;ariaLabel="";ariaLabelledby;get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}typeaheadDebounceInterval;sortComparator;get id(){return this._id}set id(e){this._id=e||this._uid,this.stateChanges.next()}_id;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}panelWidth=this._defaultOptions&&typeof this._defaultOptions.panelWidth<"u"?this._defaultOptions.panelWidth:"auto";canSelectNullableOptions=this._defaultOptions?.canSelectNullableOptions??!1;optionSelectionChanges=Sa(()=>{const e=this.options;return e?e.changes.pipe(zn(e),wt(()=>Dr(...e.map(i=>i.onSelectionChange)))):this._initialized.pipe(wt(()=>this.optionSelectionChanges))});openedChange=new ke;_openedStream=this.openedChange.pipe(Pn(e=>e),De(()=>{}));_closedStream=this.openedChange.pipe(Pn(e=>!e),De(()=>{}));selectionChange=new ke;valueChange=new ke;constructor(){const e=T(vS),i=T(pu,{optional:!0}),o=T(sn,{optional:!0}),r=T(new tf("tabindex"),{optional:!0}),s=T(wk,{optional:!0});this.ngControl&&(this.ngControl.valueAccessor=this),null!=this._defaultOptions?.typeaheadDebounceInterval&&(this.typeaheadDebounceInterval=this._defaultOptions.typeaheadDebounceInterval),this._errorStateTracker=new HB(e,this.ngControl,o,i,this.stateChanges),this._scrollStrategy=this._scrollStrategyFactory(),this.tabIndex=null==r?0:parseInt(r)||0,this._popoverLocation=!1===s?.usePopover?null:"inline",this.id=this.id}ngOnInit(){this._selectionModel=new Bme(this.multiple),this.stateChanges.next(),this._viewportRuler.change().pipe(ln(this._destroy)).subscribe(()=>{this.panelOpen&&(this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._changeDetectorRef.detectChanges())})}ngAfterContentInit(){this._initialized.next(),this._initialized.complete(),this._initKeyManager(),this._selectionModel.changed.pipe(ln(this._destroy)).subscribe(e=>{e.added.forEach(i=>i.select()),e.removed.forEach(i=>i.deselect())}),this.options.changes.pipe(zn(null),ln(this._destroy)).subscribe(()=>{this._resetOptions(),this._initializeSelection()})}ngDoCheck(){const e=this._getTriggerAriaLabelledby(),i=this.ngControl;if(e!==this._triggerAriaLabelledBy){const o=this._elementRef.nativeElement;this._triggerAriaLabelledBy=e,e?o.setAttribute("aria-labelledby",e):o.removeAttribute("aria-labelledby")}i&&(this._previousControl!==i.control&&(void 0!==this._previousControl&&null!==i.disabled&&i.disabled!==this.disabled&&(this.disabled=i.disabled),this._previousControl=i.control),this.updateErrorState())}ngOnChanges(e){(e.disabled||e.userAriaDescribedBy)&&this.stateChanges.next(),e.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this.typeaheadDebounceInterval),e.panelClass&&this.panelClass instanceof Set&&(this.panelClass=Array.from(this.panelClass))}ngOnDestroy(){this._cleanupDetach?.(),this._keyManager?.destroy(),this._destroy.next(),this._destroy.complete(),this.stateChanges.complete(),this._clearFromModal()}toggle(){this.panelOpen?this.close():this.open()}open(){this._canOpen()&&(this._parentFormField&&(this._preferredOverlayOrigin=this._parentFormField.getConnectedOverlayOrigin()),this._cleanupDetach?.(),this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._applyModalPanelOwnership(),this._panelOpen=!0,this._overlayDir.positionChange.pipe(wn(1)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this._positioningSettled()}),this._overlayDir.attachOverlay(),this._keyManager.withHorizontalOrientation(null),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck(),this.stateChanges.next(),Promise.resolve().then(()=>this.openedChange.emit(!0)))}_trackedModal=null;_applyModalPanelOwnership(){const e=this._elementRef.nativeElement.closest('body > .cdk-overlay-container [aria-modal="true"]');if(!e)return;const i=`${this.id}-panel`;this._trackedModal&&yS(this._trackedModal,"aria-owns",i),$B(e,"aria-owns",i),this._trackedModal=e}_clearFromModal(){this._trackedModal&&(yS(this._trackedModal,"aria-owns",`${this.id}-panel`),this._trackedModal=null)}close(){this._panelOpen&&(this._panelOpen=!1,this._exitAndDetach(),this._keyManager.withHorizontalOrientation(this._isRtl()?"rtl":"ltr"),this._changeDetectorRef.markForCheck(),this._onTouched(),this.stateChanges.next(),Promise.resolve().then(()=>this.openedChange.emit(!1)))}_exitAndDetach(){if(this._animationsDisabled||!this.panel)return void this._detachOverlay();this._cleanupDetach?.(),this._cleanupDetach=()=>{i(),clearTimeout(o),this._cleanupDetach=void 0};const e=this.panel.nativeElement,i=this._renderer.listen(e,"animationend",r=>{"_mat-select-exit"===r.animationName&&(this._cleanupDetach?.(),this._detachOverlay())}),o=setTimeout(()=>{this._cleanupDetach?.(),this._detachOverlay()},200);e.classList.add("mat-select-panel-exit")}_detachOverlay(){this._overlayDir.detachOverlay(),this._changeDetectorRef.markForCheck()}writeValue(e){this._assignValue(e)}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}get panelOpen(){return this._panelOpen}get selected(){return this.multiple?this._selectionModel?.selected||[]:this._selectionModel?.selected[0]}get triggerValue(){if(this.empty)return"";if(this._multiple){const e=this._selectionModel.selected.map(i=>i.viewValue);return this._isRtl()&&e.reverse(),e.join(", ")}return this._selectionModel.selected[0].viewValue}updateErrorState(){this._errorStateTracker.updateErrorState()}_isRtl(){return!!this._dir&&"rtl"===this._dir.value}_handleKeydown(e){this.disabled||(this.panelOpen?this._handleOpenKeydown(e):this._handleClosedKeydown(e))}_handleClosedKeydown(e){const i=e.keyCode,o=40===i||38===i||37===i||39===i,r=13===i||32===i,s=this._keyManager;if(!s.isTyping()&&r&&!Mr(e)||(this.multiple||e.altKey)&&o)e.preventDefault(),this.open();else if(!this.multiple){const a=this.selected;s.onKeydown(e);const l=this.selected;l&&a!==l&&this._liveAnnouncer.announce(l.viewValue,1e4)}}_handleOpenKeydown(e){const i=this._keyManager,o=e.keyCode,r=40===o||38===o,s=i.isTyping();if(r&&e.altKey)e.preventDefault(),this.close();else if(s||13!==o&&32!==o||!i.activeItem||Mr(e))if(!s&&this._multiple&&65===o&&e.ctrlKey){e.preventDefault();const a=this.options.some(l=>!l.disabled&&!l.selected);this.options.forEach(l=>{l.disabled||(a?l.select():l.deselect())})}else{const a=i.activeItemIndex;i.onKeydown(e),this._multiple&&r&&e.shiftKey&&i.activeItem&&i.activeItemIndex!==a&&i.activeItem._selectViaInteraction()}else e.preventDefault(),i.activeItem._selectViaInteraction()}_handleOverlayKeydown(e){27===e.keyCode&&!Mr(e)&&(e.preventDefault(),this.close())}_onFocus(){this.disabled||(this._focused=!0,this.stateChanges.next())}_onBlur(){this._focused=!1,this._keyManager?.cancelTypeahead(),!this.disabled&&!this.panelOpen&&(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}get empty(){return!this._selectionModel||this._selectionModel.isEmpty()}_initializeSelection(){Promise.resolve().then(()=>{this.ngControl&&(this._value=this.ngControl.value),this._setSelectionByValue(this._value),this.stateChanges.next()})}_setSelectionByValue(e){if(this.options.forEach(i=>i.setInactiveStyles()),this._selectionModel.clear(),this.multiple&&e)Array.isArray(e),e.forEach(i=>this._selectOptionByValue(i)),this._sortValues();else{const i=this._selectOptionByValue(e);i?this._keyManager.updateActiveItem(i):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}_selectOptionByValue(e){const i=this.options.find(o=>{if(this._selectionModel.isSelected(o))return!1;try{return(null!=o.value||this.canSelectNullableOptions)&&this._compareWith(o.value,e)}catch{return!1}});return i&&this._selectionModel.select(i),i}_assignValue(e){return!!(e!==this._value||this._multiple&&Array.isArray(e))&&(this.options&&this._setSelectionByValue(e),this._value=e,!0)}_skipPredicate=e=>!this.panelOpen&&e.disabled;_getOverlayWidth(e){return"auto"===this.panelWidth?(e instanceof Ib?e.elementRef:e||this._elementRef).nativeElement.getBoundingClientRect().width:null===this.panelWidth?"":this.panelWidth}_syncParentProperties(){if(this.options)for(const e of this.options)e._changeDetectorRef.markForCheck()}_initKeyManager(){this._keyManager=new Lme(this.options).withTypeAhead(this.typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?"rtl":"ltr").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(["shiftKey"]).skipPredicate(this._skipPredicate),this._keyManager.tabOut.subscribe(()=>{this.panelOpen&&(!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction(),this.focus(),this.close())}),this._keyManager.change.subscribe(()=>{this._panelOpen&&this.panel?this._scrollOptionIntoView(this._keyManager.activeItemIndex||0):!this._panelOpen&&!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction()})}_resetOptions(){const e=Dr(this.options.changes,this._destroy);this.optionSelectionChanges.pipe(ln(e)).subscribe(i=>{this._onSelect(i.source,i.isUserInput),i.isUserInput&&!this.multiple&&this._panelOpen&&(this.close(),this.focus())}),Dr(...this.options.map(i=>i._stateChanges)).pipe(ln(e)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this.stateChanges.next()})}_onSelect(e,i){const o=this._selectionModel.isSelected(e);this.canSelectNullableOptions||null!=e.value||this._multiple?(o!==e.selected&&(e.selected?this._selectionModel.select(e):this._selectionModel.deselect(e)),i&&this._keyManager.setActiveItem(e),this.multiple&&(this._sortValues(),i&&this.focus())):(e.deselect(),this._selectionModel.clear(),null!=this.value&&this._propagateChanges(e.value)),o!==this._selectionModel.isSelected(e)&&this._propagateChanges(),this.stateChanges.next()}_sortValues(){if(this.multiple){const e=this.options.toArray();this._selectionModel.sort((i,o)=>this.sortComparator?this.sortComparator(i,o,e):e.indexOf(i)-e.indexOf(o)),this.stateChanges.next()}}_propagateChanges(e){let i;i=this.multiple?this.selected.map(o=>o.value):this.selected?this.selected.value:e,this._value=i,this.valueChange.emit(i),this._onChange(i),this.selectionChange.emit(this._getChangeEvent(i)),this._changeDetectorRef.markForCheck()}_highlightCorrectOption(){if(this._keyManager)if(this.empty){let e=-1;for(let i=0;i0&&!!this._overlayDir}focus(e){this._elementRef.nativeElement.focus(e)}_getPanelAriaLabelledby(){if(this.ariaLabel)return null;const e=this._parentFormField?.getLabelId()||null;return this.ariaLabelledby?(e?e+" ":"")+this.ariaLabelledby:e}_getAriaActiveDescendant(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}_getTriggerAriaLabelledby(){if(this.ariaLabel)return null;let e=this._parentFormField?.getLabelId()||"";return this.ariaLabelledby&&(e+=" "+this.ariaLabelledby),e||(e=this._valueId),e}get describedByIds(){return this._elementRef.nativeElement.getAttribute("aria-describedby")?.split(" ")||[]}setDescribedByIds(e){const i=this._elementRef.nativeElement;e.length?i.setAttribute("aria-describedby",e.join(" ")):i.removeAttribute("aria-describedby")}onContainerClick(e){const i=Sr(e);i&&("MAT-OPTION"===i.tagName||i.classList.contains("cdk-overlay-backdrop")||i.closest(".mat-mdc-select-panel"))||(this.focus(),this.open())}get shouldLabelFloat(){return this.panelOpen||!this.empty||this.focused&&!!this.placeholder}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-select"]],contentQueries:function(i,o,r){if(1&i&&Ds(r,sV,5)(r,is,5)(r,iV,5),2&i){let s;fe(s=pe())&&(o.customTrigger=s.first),fe(s=pe())&&(o.options=s),fe(s=pe())&&(o.optionGroups=s)}},viewQuery:function(i,o){if(1&i&&st(Hme,5)(Ume,5)(r4,5),2&i){let r;fe(r=pe())&&(o.trigger=r.first),fe(r=pe())&&(o.panel=r.first),fe(r=pe())&&(o._overlayDir=r.first)}},hostAttrs:["role","combobox","aria-haspopup","listbox",1,"mat-mdc-select"],hostVars:21,hostBindings:function(i,o){1&i&&F("keydown",function(s){return o._handleKeydown(s)})("focus",function(){return o._onFocus()})("blur",function(){return o._onBlur()}),2&i&&(We("id",o.id)("tabindex",o.disabled?-1:o.tabIndex)("aria-controls",o.panelOpen?o.id+"-panel":null)("aria-expanded",o.panelOpen)("aria-label",o.ariaLabel||null)("aria-required",o.required.toString())("aria-disabled",o.disabled.toString())("aria-invalid",o.errorState)("aria-activedescendant",o._getAriaActiveDescendant()),ve("mat-mdc-select-disabled",o.disabled)("mat-mdc-select-invalid",o.errorState)("mat-mdc-select-required",o.required)("mat-mdc-select-empty",o.empty)("mat-mdc-select-multiple",o.multiple)("mat-select-open",o.panelOpen))},inputs:{userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],panelClass:"panelClass",disabled:[2,"disabled","disabled",Te],disableRipple:[2,"disableRipple","disableRipple",Te],tabIndex:[2,"tabIndex","tabIndex",e=>null==e?0:_r(e)],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",Te],placeholder:"placeholder",required:[2,"required","required",Te],multiple:[2,"multiple","multiple",Te],disableOptionCentering:[2,"disableOptionCentering","disableOptionCentering",Te],compareWith:"compareWith",value:"value",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],errorStateMatcher:"errorStateMatcher",typeaheadDebounceInterval:[2,"typeaheadDebounceInterval","typeaheadDebounceInterval",_r],sortComparator:"sortComparator",id:"id",panelWidth:"panelWidth",canSelectNullableOptions:[2,"canSelectNullableOptions","canSelectNullableOptions",Te]},outputs:{openedChange:"openedChange",_openedStream:"opened",_closedStream:"closed",selectionChange:"selectionChange",valueChange:"valueChange"},exportAs:["matSelect"],features:[dt([{provide:_S,useExisting:t},{provide:nV,useExisting:t}]),vi],ngContentSelectors:jme,decls:11,vars:10,consts:[["fallbackOverlayOrigin","cdkOverlayOrigin","trigger",""],["panel",""],["cdk-overlay-origin","",1,"mat-mdc-select-trigger",3,"click"],[1,"mat-mdc-select-value"],[1,"mat-mdc-select-placeholder","mat-mdc-select-min-line"],[1,"mat-mdc-select-value-text"],[1,"mat-mdc-select-arrow-wrapper"],[1,"mat-mdc-select-arrow"],["viewBox","0 0 24 24","width","24px","height","24px","focusable","false","aria-hidden","true"],["d","M7 10l5 5 5-5z"],["cdk-connected-overlay","","cdkConnectedOverlayHasBackdrop","","cdkConnectedOverlayBackdropClass","cdk-overlay-transparent-backdrop",3,"detach","backdropClick","overlayKeydown","cdkConnectedOverlayDisableClose","cdkConnectedOverlayPanelClass","cdkConnectedOverlayScrollStrategy","cdkConnectedOverlayOrigin","cdkConnectedOverlayPositions","cdkConnectedOverlayWidth","cdkConnectedOverlayFlexibleDimensions","cdkConnectedOverlayUsePopover"],[1,"mat-mdc-select-min-line"],["role","listbox","tabindex","-1",1,"mat-mdc-select-panel","mdc-menu-surface","mdc-menu-surface--open",3,"keydown"]],template:function(i,o){if(1&i&&(xi(zme),h(0,"div",2,0),F("click",function(){return o.open()}),h(3,"div",3),x(4,$me,2,1,"span",4)(5,qme,3,1,"span",5),u(),h(6,"div",6)(7,"div",7),ul(),h(8,"svg",8),L(9,"path",9),u()()()(),rt(10,Kme,3,16,"ng-template",10),F("detach",function(){return o.close()})("backdropClick",function(){return o.close()})("overlayKeydown",function(s){return o._handleOverlayKeydown(s)})),2&i){const r=Un(1);c(3),We("id",o._valueId),c(),k(o.empty?4:5),c(6),C("cdkConnectedOverlayDisableClose",!0)("cdkConnectedOverlayPanelClass",o._overlayPanelClass)("cdkConnectedOverlayScrollStrategy",o._scrollStrategy)("cdkConnectedOverlayOrigin",o._preferredOverlayOrigin||r)("cdkConnectedOverlayPositions",o._positions)("cdkConnectedOverlayWidth",o._overlayWidth)("cdkConnectedOverlayFlexibleDimensions",!0)("cdkConnectedOverlayUsePopover",o._popoverLocation)}},dependencies:[Ib,r4],styles:['@keyframes _mat-select-enter{from{opacity:0;transform:scaleY(0.8)}to{opacity:1;transform:none}}@keyframes _mat-select-exit{from{opacity:1}to{opacity:0}}.mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-sys-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-sys-body-large-tracking))}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-disabled .mat-mdc-select-placeholder{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color, var(--mat-sys-error))}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-select-open .mat-mdc-select-arrow{transform:rotate(180deg)}.mat-form-field-animations-enabled .mat-mdc-select-arrow{transition:transform 80ms linear}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}@media(forced-colors: active){.mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .mat-mdc-select-arrow svg{fill:GrayText}}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:relative;background-color:var(--mat-select-panel-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-select-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}.mat-select-panel-animations-enabled{animation:_mat-select-enter 120ms cubic-bezier(0, 0, 0.2, 1)}.mat-select-panel-animations-enabled.mat-select-panel-exit{animation:_mat-select-exit 100ms linear}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field:not(.mat-form-field-animations-enabled) .mat-mdc-select-placeholder,._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform, translateY(-8px))}\n'],encapsulation:2,changeDetection:0})}return t})(),Qme=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-select-trigger"]],features:[dt([{provide:sV,useExisting:t}])]})}return t})(),Jme=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ru,rV,ai,Hf,pv,rV]})}return t})();function ege(t,n){if(1&t&&L(0,"input",6),2&t){const e=y().$implicit;C("formControlName",e.keyNameInFiltersObject)("maxlength",e.maxlength)}}function tge(t,n){if(1&t&&(h(0,"div",10),L(1,"div",11),u()),2&t){const e=y().$implicit,i=y(2).$implicit;ao("background-image: url('"+i.printableLabelGeneralSettings.defaultImage+"'); width: "+i.printableLabelGeneralSettings.imageWidth+"px; height: "+i.printableLabelGeneralSettings.imageHeight+"px;"),c(),ao("background-image: url('"+e.image+"');")}}function nge(t,n){if(1&t&&(h(0,"mat-option",8),x(1,tge,2,4,"div",9),p(2),_(3,"translate"),u()),2&t){const e=n.$implicit,i=y(2).$implicit;C("value",e.value),c(),k(i.printableLabelGeneralSettings&&e.image?1:-1),c(),D(" ",v(3,3,e.label)," ")}}function ige(t,n){if(1&t&&(h(0,"mat-select",7),me(1,nge,4,5,"mat-option",8,Le),u()),2&t){const e=y().$implicit;C("formControlName",e.keyNameInFiltersObject),c(),ge(e.printableLabelsForValues)}}function oge(t,n){if(1&t&&(h(0,"mat-form-field")(1,"div",4)(2,"label",5),p(3),_(4,"translate"),u(),x(5,ege,1,2,"input",6),x(6,ige,3,1,"mat-select",7),u()()),2&t){const e=n.$implicit,i=y();c(3),S(v(4,3,e.filterName)),c(2),k(e.type===i.filterFieldTypes.TextInput?5:-1),c(),k(e.type===i.filterFieldTypes.Select?6:-1)}}let rge=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.data=e,this.dialogRef=i,this.formBuilder=o,this.filterFieldTypes=Mn}ngOnInit(){const e={};this.data.filterPropertiesList.forEach(i=>{e[i.keyNameInFiltersObject]=[this.data.currentFilters[i.keyNameInFiltersObject]]}),this.form=this.formBuilder.group(e)}apply(){const e={};this.data.filterPropertiesList.forEach(i=>{e[i.keyNameInFiltersObject]=this.form.get(i.keyNameInFiltersObject).value.trim()}),this.dialogRef.close(e)}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt),O(Si))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-filters-selection"]],standalone:!1,decls:9,vars:8,consts:[["button",""],[3,"headline","dialog"],[3,"formGroup"],["color","primary",1,"float-right",3,"action"],[1,"field-container"],["for","remoteKey",1,"field-label"],["matInput","",3,"formControlName","maxlength"],[3,"formControlName"],[3,"value"],[1,"image-container",3,"style"],[1,"image-container"],[1,"image"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2),me(3,oge,7,5,"mat-form-field",null,Le),u(),h(5,"app-button",3,0),F("action",function(){return o.apply()}),p(7),_(8,"translate"),u()()),2&i&&(C("headline",v(1,4,"filters.filter-action"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(),ge(o.data.filterPropertiesList),c(4),D(" ",v(8,6,"common.ok")," "))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,On,Na,is,Mi,Sn,we],styles:[".image-container[_ngcontent-%COMP%]{display:inline-block;background-size:contain;margin-right:5px}.image-container[_ngcontent-%COMP%] .image[_ngcontent-%COMP%]{background-size:contain;width:100%;height:100%}"]})}}return t})();class xu{get currentFiltersTexts(){return this.currentFiltersTextsInternal}get currentUrlQueryParams(){return this.currentUrlQueryParamsInternal}get dataFiltered(){return this.dataUpdatedSubject.asObservable()}constructor(n,e,i,o,r){this.dialog=n,this.route=e,this.router=i,this.currentFiltersTextsInternal=[],this.dataUpdatedSubject=new be,this.filterPropertiesList=o,this.currentFilters={},this.filterPropertiesList.forEach(s=>{s.keyNameInFiltersObject=r+"_"+s.keyNameInElementsArray,this.currentFilters[s.keyNameInFiltersObject]=""}),this.navigationsSubscription=this.route.queryParamMap.subscribe(s=>{Object.keys(this.currentFilters).forEach(a=>{s.has(a)&&(this.currentFilters[a]=s.get(a))}),this.currentUrlQueryParamsInternal={},s.keys.forEach(a=>{this.currentUrlQueryParamsInternal[a]=s.get(a)}),this.filter()})}dispose(){this.dataUpdatedSubject.complete(),this.navigationsSubscription.unsubscribe()}setData(n){this.data=n,this.filter()}removeFilters(){const n=Ut.createConfirmationDialog(this.dialog,"filters.remove-confirmation");n.componentInstance.operationAccepted.subscribe(()=>{n.componentInstance.closeModal(),this.router.navigate([],{queryParams:{}})})}changeFilters(){rge.openDialog(this.dialog,{filterPropertiesList:this.filterPropertiesList,currentFilters:this.currentFilters}).afterClosed().subscribe(e=>{e&&this.router.navigate([],{queryParams:e})})}filter(){if(this.data){let n,e=!1;Object.keys(this.currentFilters).forEach(i=>{this.currentFilters[i]&&(e=!0)}),e?(n=function Sme(t,n,e){if(t){const i=[];return Object.keys(n).forEach(r=>{if(n[r])for(const s of e)if(s.keyNameInFiltersObject===r){i.push(s);break}}),t.filter(r=>{let s=!0;return i.forEach(a=>{const l=String(r[a.keyNameInElementsArray]).toLowerCase().includes(n[a.keyNameInFiltersObject].toLowerCase()),d=a.secondaryKeyNameInElementsArray&&String(r[a.secondaryKeyNameInElementsArray]).toLowerCase().includes(n[a.keyNameInFiltersObject].toLowerCase());!l&&!d&&(s=!1)}),s})}return null}(this.data,this.currentFilters,this.filterPropertiesList),this.updateCurrentFilters()):(n=this.data,this.updateCurrentFilters()),this.dataUpdatedSubject.next(n)}}updateCurrentFilters(){this.currentFiltersTextsInternal=function Mme(t,n){const e=[];return n.forEach(i=>{if(t[i.keyNameInFiltersObject]){let o,r;i.printableLabelsForValues&&i.printableLabelsForValues.forEach(s=>{s.value===t[i.keyNameInFiltersObject]&&(r=s.label)}),r||(o=t[i.keyNameInFiltersObject]),e.push({filterName:i.filterName,translatableValue:r,value:o})}}),e}(this.currentFilters,this.filterPropertiesList)}}function sge(t,n){if(1&t){const e=re();h(0,"div",3)(1,"div",4)(2,"div",5),p(3),u(),h(4,"div",6),p(5),u()(),h(6,"div",7)(7,"app-button",8),F("click",function(){const o=V(e).$implicit;return H(y(2).openTerminal(o.key))}),p(8),_(9,"translate"),u()()()}if(2&t){const e=n.$implicit;c(3),S(e.label),c(2),S(e.version),c(3),D(" ",v(9,3,"update-all.update-button")," ")}}function age(t,n){if(1&t&&(h(0,"div",1),p(1),_(2,"translate"),u(),h(3,"div",2),me(4,sge,10,5,"div",3,Le),u()),2&t){const e=y();c(),D(" ",v(2,1,"update-all.updatable-list-text")," "),c(3),ge(e.updatableNodes)}}function lge(t,n){if(1&t&&(h(0,"div",6),p(1),u()),2&t){const e=y().$implicit;c(),S(e.tag)}}function cge(t,n){if(1&t&&(h(0,"div",3)(1,"div",4)(2,"div",5),p(3),u(),h(4,"div",6),p(5),u(),x(6,lge,2,1,"div",6),u()()),2&t){const e=n.$implicit;c(3),S(e.label),c(2),S(e.version),c(),k(e.tag?6:-1)}}function dge(t,n){if(1&t&&(h(0,"div",1),p(1),_(2,"translate"),u(),h(3,"div",2),me(4,cge,7,3,"div",3,Le),u()),2&t){const e=y();c(),D(" ",v(2,1,"update-all.non-updatable-list-text")," "),c(3),ge(e.nonUpdatableNodes)}}let uge=(()=>{class t{static openDialog(e,i,o){const r=new cn;return r.data=[i,o],r.autoFocus=!1,r.width=at.smallModalWidth,e.open(t,r)}constructor(e,i){this.dialogRef=e,this.updatableNodes=i[0],this.nonUpdatableNodes=i[1]}openTerminal(e){const i=window.location.protocol,o=window.location.host.replace("localhost:4200","127.0.0.1:8000");window.open(i+"//"+o+"/pty/"+e+"?commands=update","_blank","noopener noreferrer")}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-update-all"]],standalone:!1,decls:4,vars:6,consts:[[3,"headline","dialog"],[1,"text-container"],[1,"list-container"],[1,"list-element"],[1,"left-part"],[1,"name"],[1,"version"],[1,"right-part"],["color","primary",3,"click"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),_(1,"translate"),x(2,age,6,3),x(3,dge,6,3),u()),2&i&&(C("headline",v(1,4,"update-all.title"))("dialog",o.dialogRef),c(2),k(o.updatableNodes&&o.updatableNodes.length>0?2:-1),c(),k(o.nonUpdatableNodes&&o.nonUpdatableNodes.length>0?3:-1))},dependencies:[Mi,Sn,we],styles:[".text-container[_ngcontent-%COMP%]{word-break:break-word}.list-container[_ngcontent-%COMP%]{font-size:14px;margin:10px;color:#215f9e;word-break:break-word;line-height:1.2}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%]{display:flex;margin-bottom:10px}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%]{flex-grow:1;flex-shrink:1;align-self:center;margin-right:10px;min-width:0}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:575px){.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-size:.7rem}}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%] .version[_ngcontent-%COMP%]{font-size:.7rem;color:#777;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .right-part[_ngcontent-%COMP%]{flex-basis:0;flex-shrink:0}.list-container[_ngcontent-%COMP%] .details[_ngcontent-%COMP%]{color:#777}"]})}}return t})();const hge=["mat-internal-form-field",""],fge=["*"];let aV=(()=>{class t{labelPosition="after";static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["div","mat-internal-form-field",""]],hostAttrs:[1,"mdc-form-field","mat-internal-form-field"],hostVars:2,hostBindings:function(i,o){2&i&&ve("mdc-form-field--align-end","before"===o.labelPosition)},inputs:{labelPosition:"labelPosition"},attrs:hge,ngContentSelectors:fge,decls:1,vars:0,template:function(i,o){1&i&&(xi(),Rt(0))},styles:[".mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-flex;align-items:center;vertical-align:middle}.mat-internal-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mat-internal-form-field>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end .mdc-form-field--align-end label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0}\n"],encapsulation:2,changeDetection:0})}return t})();const pge=["input"],mge=["label"],gge=["*"],TS={color:"accent",clickAction:"check-indeterminate",disabledInteractive:!1},_ge=new Z("mat-checkbox-default-options",{providedIn:"root",factory:()=>TS});var Xi=function(t){return t[t.Init=0]="Init",t[t.Checked=1]="Checked",t[t.Unchecked=2]="Unchecked",t[t.Indeterminate=3]="Indeterminate",t}(Xi||{});class bge{source;checked}let Fo=(()=>{class t{_elementRef=T(Ne);_changeDetectorRef=T(Dt);_ngZone=T(Ce);_animationsDisabled=hi();_options=T(_ge,{optional:!0});focus(){this._inputElement.nativeElement.focus()}_createChangeEvent(e){const i=new bge;return i.source=this,i.checked=e,i}_getAnimationTargetElement(){return this._inputElement?.nativeElement}_animationClasses={uncheckedToChecked:"mdc-checkbox--anim-unchecked-checked",uncheckedToIndeterminate:"mdc-checkbox--anim-unchecked-indeterminate",checkedToUnchecked:"mdc-checkbox--anim-checked-unchecked",checkedToIndeterminate:"mdc-checkbox--anim-checked-indeterminate",indeterminateToChecked:"mdc-checkbox--anim-indeterminate-checked",indeterminateToUnchecked:"mdc-checkbox--anim-indeterminate-unchecked"};ariaLabel="";ariaLabelledby=null;ariaDescribedby;ariaExpanded;ariaControls;ariaOwns;_uniqueId;id;get inputId(){return`${this.id||this._uniqueId}-input`}required=!1;labelPosition="after";name=null;change=new ke;indeterminateChange=new ke;value;disableRipple=!1;_inputElement;_labelElement;tabIndex;color;disabledInteractive;_onTouched=()=>{};_currentAnimationClass="";_currentCheckState=Xi.Init;_controlValueAccessorChangeFn=()=>{};_validatorChangeFn=()=>{};constructor(){T(qo).load(cu);const e=T(new tf("tabindex"),{optional:!0});this._options=this._options||TS,this.color=this._options.color||TS.color,this.tabIndex=null==e?0:parseInt(e)||0,this.id=this._uniqueId=T(si).getId("mat-mdc-checkbox-"),this.disabledInteractive=this._options?.disabledInteractive??!1}ngOnChanges(e){e.required&&this._validatorChangeFn()}ngAfterViewInit(){this._syncIndeterminate(this.indeterminate)}get checked(){return this._checked}set checked(e){e!=this.checked&&(this._checked=e,this._changeDetectorRef.markForCheck())}_checked=!1;get disabled(){return this._disabled}set disabled(e){e!==this.disabled&&(this._disabled=e,this._changeDetectorRef.markForCheck())}_disabled=!1;get indeterminate(){return this._indeterminate()}set indeterminate(e){const i=e!=this._indeterminate();this._indeterminate.set(e),i&&(this._transitionCheckState(e?Xi.Indeterminate:this.checked?Xi.Checked:Xi.Unchecked),this.indeterminateChange.emit(e)),this._syncIndeterminate(e)}_indeterminate=Ct(!1);_isRippleDisabled(){return this.disableRipple||this.disabled}_onLabelTextChange(){this._changeDetectorRef.detectChanges()}writeValue(e){this.checked=!!e}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}validate(e){return this.required&&!0!==e.value?{required:!0}:null}registerOnValidatorChange(e){this._validatorChangeFn=e}_transitionCheckState(e){let i=this._currentCheckState,o=this._getAnimationTargetElement();if(i!==e&&o&&(this._currentAnimationClass&&o.classList.remove(this._currentAnimationClass),this._currentAnimationClass=this._getAnimationClassForCheckStateTransition(i,e),this._currentCheckState=e,this._currentAnimationClass.length>0)){o.classList.add(this._currentAnimationClass);const r=this._currentAnimationClass;this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{o.classList.remove(r)},1e3)})}}_emitChangeEvent(){this._controlValueAccessorChangeFn(this.checked),this.change.emit(this._createChangeEvent(this.checked)),this._inputElement&&(this._inputElement.nativeElement.checked=this.checked)}toggle(){this.checked=!this.checked,this._controlValueAccessorChangeFn(this.checked)}_handleInputClick(){const e=this._options?.clickAction;this.disabled||"noop"===e?(this.disabled&&this.disabledInteractive||!this.disabled&&"noop"===e)&&(this._inputElement.nativeElement.checked=this.checked,this._inputElement.nativeElement.indeterminate=this.indeterminate):(this.indeterminate&&"check"!==e&&Promise.resolve().then(()=>{this._indeterminate.set(!1),this.indeterminateChange.emit(!1)}),this._checked=!this._checked,this._transitionCheckState(this._checked?Xi.Checked:Xi.Unchecked),this._emitChangeEvent())}_onInteractionEvent(e){e.stopPropagation()}_onBlur(){Promise.resolve().then(()=>{this._onTouched(),this._changeDetectorRef.markForCheck()})}_getAnimationClassForCheckStateTransition(e,i){if(this._animationsDisabled)return"";switch(e){case Xi.Init:if(i===Xi.Checked)return this._animationClasses.uncheckedToChecked;if(i==Xi.Indeterminate)return this._checked?this._animationClasses.checkedToIndeterminate:this._animationClasses.uncheckedToIndeterminate;break;case Xi.Unchecked:return i===Xi.Checked?this._animationClasses.uncheckedToChecked:this._animationClasses.uncheckedToIndeterminate;case Xi.Checked:return i===Xi.Unchecked?this._animationClasses.checkedToUnchecked:this._animationClasses.checkedToIndeterminate;case Xi.Indeterminate:return i===Xi.Checked?this._animationClasses.indeterminateToChecked:this._animationClasses.indeterminateToUnchecked}return""}_syncIndeterminate(e){const i=this._inputElement;i&&(i.nativeElement.indeterminate=e)}_onInputClick(){this._handleInputClick()}_onTouchTargetClick(){this._handleInputClick(),this.disabled||this._inputElement.nativeElement.focus()}_preventBubblingFromLabel(e){e.target&&this._labelElement.nativeElement.contains(e.target)&&e.stopPropagation()}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-checkbox"]],viewQuery:function(i,o){if(1&i&&st(pge,5)(mge,5),2&i){let r;fe(r=pe())&&(o._inputElement=r.first),fe(r=pe())&&(o._labelElement=r.first)}},hostAttrs:[1,"mat-mdc-checkbox"],hostVars:16,hostBindings:function(i,o){2&i&&(gr("id",o.id),We("tabindex",null)("aria-label",null)("aria-labelledby",null),Ge(o.color?"mat-"+o.color:"mat-accent"),ve("_mat-animation-noopable",o._animationsDisabled)("mdc-checkbox--disabled",o.disabled)("mat-mdc-checkbox-disabled",o.disabled)("mat-mdc-checkbox-checked",o.checked)("mat-mdc-checkbox-disabled-interactive",o.disabledInteractive))},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],ariaExpanded:[2,"aria-expanded","ariaExpanded",Te],ariaControls:[0,"aria-controls","ariaControls"],ariaOwns:[0,"aria-owns","ariaOwns"],id:"id",required:[2,"required","required",Te],labelPosition:"labelPosition",name:"name",value:"value",disableRipple:[2,"disableRipple","disableRipple",Te],tabIndex:[2,"tabIndex","tabIndex",e=>null==e?void 0:_r(e)],color:"color",disabledInteractive:[2,"disabledInteractive","disabledInteractive",Te],checked:[2,"checked","checked",Te],disabled:[2,"disabled","disabled",Te],indeterminate:[2,"indeterminate","indeterminate",Te]},outputs:{change:"change",indeterminateChange:"indeterminateChange"},exportAs:["matCheckbox"],features:[dt([{provide:Qo,useExisting:jt(()=>t),multi:!0},{provide:ki,useExisting:t,multi:!0}]),vi],ngContentSelectors:gge,decls:15,vars:23,consts:[["checkbox",""],["input",""],["label",""],["mat-internal-form-field","",3,"click","labelPosition"],[1,"mdc-checkbox"],["aria-hidden","true",1,"mat-mdc-checkbox-touch-target",3,"click"],["type","checkbox",1,"mdc-checkbox__native-control",3,"blur","click","change","checked","indeterminate","disabled","id","required","tabIndex"],["aria-hidden","true",1,"mdc-checkbox__ripple"],["aria-hidden","true",1,"mdc-checkbox__background"],["focusable","false","viewBox","0 0 24 24",1,"mdc-checkbox__checkmark"],["fill","none","d","M1.73,12.91 8.1,19.28 22.79,4.59",1,"mdc-checkbox__checkmark-path"],[1,"mdc-checkbox__mixedmark"],["mat-ripple","","aria-hidden","true",1,"mat-mdc-checkbox-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-label",3,"for"]],template:function(i,o){if(1&i&&(xi(),h(0,"div",3),F("click",function(s){return o._preventBubblingFromLabel(s)}),h(1,"div",4,0)(3,"div",5),F("click",function(){return o._onTouchTargetClick()}),u(),h(4,"input",6,1),F("blur",function(){return o._onBlur()})("click",function(){return o._onInputClick()})("change",function(s){return o._onInteractionEvent(s)}),u(),L(6,"div",7),h(7,"div",8),ul(),h(8,"svg",9),L(9,"path",10),u(),Qy(),L(10,"div",11),u(),L(11,"div",12),u(),h(12,"label",13,2),Rt(14),u()()),2&i){const r=Un(2);C("labelPosition",o.labelPosition),c(4),ve("mdc-checkbox--selected",o.checked),C("checked",o.checked)("indeterminate",o.indeterminate)("disabled",o.disabled&&!o.disabledInteractive)("id",o.inputId)("required",o.required)("tabIndex",o.disabled&&!o.disabledInteractive?-1:o.tabIndex),We("aria-label",o.ariaLabel||null)("aria-labelledby",o.ariaLabelledby)("aria-describedby",o.ariaDescribedby)("aria-checked",o.indeterminate?"mixed":null)("aria-controls",o.ariaControls)("aria-disabled",!(!o.disabled||!o.disabledInteractive)||null)("aria-expanded",o.ariaExpanded)("aria-owns",o.ariaOwns)("name",o.name)("value",o.value),c(7),C("matRippleTrigger",r)("matRippleDisabled",o.disableRipple||o.disabled)("matRippleCentered",!0),c(),C("for",o.inputId)}},dependencies:[lu,aV],styles:['.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom;padding:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2);margin:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox:hover>.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity));background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:hover>.mat-mdc-checkbox-ripple>.mat-ripple-element{background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity));background-color:var(--mat-checkbox-unselected-focus-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-unselected-focus-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:active>.mdc-checkbox__native-control+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));background-color:var(--mat-checkbox-unselected-pressed-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:active>.mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-unselected-pressed-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity));background-color:var(--mat-checkbox-selected-hover-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-hover-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity));background-color:var(--mat-checkbox-selected-focus-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-focus-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:active>.mdc-checkbox__native-control:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));background-color:var(--mat-checkbox-selected-pressed-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:active>.mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-pressed-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control+.mdc-checkbox__ripple{background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1;width:var(--mat-checkbox-state-layer-size, 40px);height:var(--mat-checkbox-state-layer-size, 40px);top:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2);right:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2);left:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms cubic-bezier(0.4, 0, 0.6, 1);-webkit-print-color-adjust:exact;color-adjust:exact;border-color:var(--mat-checkbox-unselected-icon-color, var(--mat-sys-on-surface-variant));top:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2);left:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2)}.mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-icon-color, var(--mat-sys-primary))}.mdc-checkbox--disabled .mdc-checkbox__background{border-color:var(--mat-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox__native-control:disabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:disabled:indeterminate~.mdc-checkbox__background{background-color:var(--mat-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:rgba(0,0,0,0)}@media(forced-colors: active){.mdc-checkbox__native-control:disabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:disabled:indeterminate~.mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox:hover>.mdc-checkbox__native-control:not(:checked)~.mdc-checkbox__background,.mdc-checkbox:hover>.mdc-checkbox__native-control:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mat-checkbox-unselected-hover-icon-color, var(--mat-sys-on-surface));background-color:rgba(0,0,0,0)}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox:hover>.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-hover-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-hover-icon-color, var(--mat-sys-primary))}.mdc-checkbox__native-control:focus:focus:not(:checked)~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mat-checkbox-unselected-focus-icon-color, var(--mat-sys-on-surface))}.mdc-checkbox__native-control:focus:focus:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-focus-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-focus-icon-color, var(--mat-sys-primary))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox:hover>.mdc-checkbox__native-control~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__background{border-color:var(--mat-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox:hover>.mdc-checkbox__native-control~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{background-color:var(--mat-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:rgba(0,0,0,0)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms cubic-bezier(0.4, 0, 0.6, 1);color:var(--mat-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}@media(forced-colors: active){.mdc-checkbox__checkmark{color:CanvasText}}.mdc-checkbox--disabled .mdc-checkbox__checkmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:var(--mat-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__checkmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:GrayText}}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);border-color:var(--mat-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}@media(forced-colors: active){.mdc-checkbox__mixedmark{margin:0 1px}}.mdc-checkbox--disabled .mdc-checkbox__mixedmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__mixedmark{border-color:var(--mat-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__mixedmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__mixedmark{border-color:GrayText}}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__checkmark{transition:opacity 180ms cubic-bezier(0, 0, 0.2, 1),transform 180ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mat-mdc-checkbox{display:inline-block;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mat-mdc-checkbox-touch-target,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__native-control,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__ripple,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mat-mdc-checkbox-ripple::before,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__mixedmark{transition:none !important;animation:none !important}.mat-mdc-checkbox label{cursor:pointer}.mat-mdc-checkbox .mat-internal-form-field{color:var(--mat-checkbox-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-checkbox-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-checkbox-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-checkbox-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-checkbox-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-checkbox-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive{pointer-events:auto}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive input{cursor:default}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{cursor:default;color:var(--mat-checkbox-disabled-label-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:GrayText}}.mat-mdc-checkbox label:empty{display:none}.mat-mdc-checkbox .mdc-checkbox__ripple{opacity:0}.mat-mdc-checkbox .mat-mdc-checkbox-ripple,.mdc-checkbox__ripple{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-checkbox .mat-mdc-checkbox-ripple:not(:empty),.mdc-checkbox__ripple:not(:empty){transform:translateZ(0)}.mat-mdc-checkbox-ripple .mat-ripple-element{opacity:.1}.mat-mdc-checkbox-touch-target{position:absolute;top:50%;left:50%;height:var(--mat-checkbox-touch-target-size, 48px);width:var(--mat-checkbox-touch-target-size, 48px);transform:translate(-50%, -50%);display:var(--mat-checkbox-touch-target-display, block)}.mat-mdc-checkbox .mat-mdc-checkbox-ripple::before{border-radius:50%}.mdc-checkbox__native-control:focus-visible~.mat-focus-indicator::before{content:""}\n'],encapsulation:2,changeDetection:0})}return t})(),vge=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[Fo,ai]})}return t})();const yge=["button"],Cge=t=>({"element-disabled":t}),wge=t=>({"element-margin":t});function xge(t,n){1&t&&(h(0,"span",17),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"bulk-rewards.checking")))}function kge(t,n){if(1&t&&(h(0,"span",18)(1,"span"),p(2),_(3,"translate"),u(),h(4,"span"),p(5),_(6,"translate"),u()()),2&t){const e=y(2).$implicit;c(2),D(" ",v(3,2,"bulk-rewards.error-checking")),c(3),D(" ",v(6,4,e.operationError))}}function Sge(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y(2).$implicit;c(),D(" ",e.currentAddress)}}function Mge(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"bulk-rewards.not-registered")))}function Dge(t,n){if(1&t&&(zr(0,12),h(1,"mat-checkbox",13)(2,"div")(3,"div",14),p(4),u(),h(5,"div",15)(6,"span",16),p(7),_(8,"translate"),u(),x(9,xge,3,3,"span",17),x(10,kge,7,6,"span",18),x(11,Sge,2,1,"span"),x(12,Mge,3,3,"span"),u()()(),pr()),2&t){const e=y(),i=e.$implicit;C("formGroupName",e.$index),c(4),D(" ",i.label," "),c(3),S(v(8,7,"bulk-rewards.current-address")),c(2),k(null!==i.currentAddress||i.operationError?-1:9),c(),k(i.operationError?10:-1),c(),k(i.currentAddress&&!i.operationError?11:-1),c(),k(""!==i.currentAddress||i.operationError?-1:12)}}function Tge(t,n){1&t&&(h(0,"span",17),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"bulk-rewards.processing")))}function Ege(t,n){if(1&t&&(h(0,"span",18)(1,"span"),p(2),_(3,"translate"),u(),h(4,"span"),p(5),_(6,"translate"),u()()),2&t){const e=y(2).$implicit;c(2),D(" ",v(3,2,"bulk-rewards.error-processing")),c(3),D(" ",v(6,4,e.operationError))}}function Pge(t,n){1&t&&(h(0,"span",22),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"bulk-rewards.done")))}function Ige(t,n){if(1&t&&(h(0,"div",19),p(1,"-"),u(),h(2,"div",20),p(3),h(4,"div",21),x(5,Tge,3,3,"span",17),x(6,Ege,7,6,"span",18),x(7,Pge,3,3,"span",22),u()()),2&t){const e=y().$implicit;c(3),D(" ",e.label," "),c(2),k(e.processing&&!e.operationError?5:-1),c(),k(e.operationError?6:-1),c(),k(e.processing||e.operationError?-1:7)}}function Oge(t,n){if(1&t&&(h(0,"div",9),x(1,Dge,13,9,"ng-container",12),x(2,Ige,8,4),u()),2&t){const e=y();C("ngClass",ie(3,wge,e.processingStarted)),c(),k(e.processingStarted?-1:1),c(),k(e.processingStarted?2:-1)}}function Age(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"bulk-rewards.perform-changes")," ")}function Rge(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"common.close")," ")}let Fge=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.nodeService=o,this.formBuilder=r,this.dialog=s,this.processingStarted=!1,this.processingFinished=!1,this.currentlyProcessed=0,this.form=r.group({address:["",Se.compose([Se.minLength(20),Se.maxLength(112)])],nodes:r.array([])}),i.nodes.forEach(a=>{const l=this.formBuilder.group({selected:[!0]});this.form.get("nodes").push(l)}),this.startChecking()}formValid(){if(!this.processingStarted){if(!this.form.valid)return!1;let e=0;return this.form.get("nodes").controls.forEach((i,o)=>{i.get("selected")?.value&&(e+=1)}),e>0}return!0}get disableDismiss(){return this.processingStarted&&!this.processingFinished}startChecking(){this.nodesToEdit=[],this.data.nodes.forEach(e=>{this.nodesToEdit.push({key:e.key,label:e.label,currentAddress:null,operationError:"",processing:!1})}),this.operationSubscriptions=[],this.nodesToEdit.forEach((e,i)=>{this.operationSubscriptions.push(this.nodeService.getRewardsAddress(e.key).subscribe(o=>{this.nodesToEdit[i].currentAddress=o},o=>{this.nodesToEdit[i].operationError=o.translatableErrorMsg?o.translatableErrorMsg:o.originalServerErrorMsg}))})}checkBeforeProcessing(){if(this.form.valid)if(this.form.get("address").value)this.startProcessing();else{const i=Ut.createConfirmationDialog(this.dialog,"bulk-rewards.empty-warning");i.componentInstance.operationAccepted.subscribe(()=>{i.componentInstance.closeModal(),this.startProcessing()})}}startProcessing(){this.processingStarted=!0,this.button.showLoading(),this.closeoperationSubscriptions();const e=[];this.form.get("nodes").controls.forEach((o,r)=>{o.get("selected")?.value&&(this.nodesToEdit[r].operationError="",this.nodesToEdit[r].processing=!0,e.push(this.nodesToEdit[r]))}),this.nodesToEdit=e;const i=this.form.get("address").value;this.form.get("address").disable(),this.currentlyProcessed=0,this.operationSubscriptions=[],this.nodesToEdit.forEach((o,r)=>{let s=this.nodeService.setRewardsAddress(o.key,i);i||(s=this.nodeService.deleteRewardsAddress(o.key)),this.operationSubscriptions.push(se(0).pipe(oi(100),Tt(()=>s)).subscribe(a=>{this.nodesToEdit[r].processing=!1,this.currentlyProcessed+=1,this.currentlyProcessed===this.nodesToEdit.length&&(this.processingFinished=!0,this.button.reset())},a=>{this.nodesToEdit[r].processing=!1,this.nodesToEdit[r].operationError=a.translatableErrorMsg?a.translatableErrorMsg:a.originalServerErrorMsg,this.currentlyProcessed+=1,this.currentlyProcessed===this.nodesToEdit.length&&(this.processingFinished=!0,this.button.reset())}))})}ngOnDestroy(){this.closeoperationSubscriptions()}closeoperationSubscriptions(){this.operationSubscriptions&&this.operationSubscriptions.forEach(e=>e.unsubscribe())}closeModal(){this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Yi),O(Si),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-bulk-reward-address-changer"]],viewQuery:function(i,o){if(1&i&&st(yge,5),2&i){let r;fe(r=pe())&&(o.button=r.first)}},standalone:!1,decls:31,vars:27,consts:[["button",""],[3,"headline","dialog","disableDismiss"],[3,"formGroup"],[1,"text-container"],["href","https://github.com/skycoin/skywire/blob/develop/rewards/mainnet_rules.md","target","_blank","rel","noreferrer nofollow noopener"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","address","maxlength","112","matInput","",3,"ngClass"],["formArrayName","nodes",1,"list-container"],[1,"list-element",3,"ngClass"],[1,"buttons"],["type","mat-raised-button","color","primary",3,"action","disabled"],[3,"formGroupName"],["color","primary","formControlName","selected"],[1,"contents"],[1,"address","contents"],[1,"address-label"],[1,"blinking"],[1,"red-text"],[1,"left-area"],[1,"right-area","contents"],[1,"address"],[1,"green-text"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2)(3,"div",3)(4,"span"),p(5),_(6,"translate"),u(),h(7,"a",4),p(8),_(9,"translate"),u()(),h(10,"mat-form-field")(11,"div",5)(12,"label",6),p(13),_(14,"translate"),u(),L(15,"input",7),u(),h(16,"mat-error")(17,"span"),p(18),_(19,"translate"),u()()(),h(20,"div",3),p(21),_(22,"translate"),u(),h(23,"div",8),me(24,Oge,3,5,"div",9,Le),u()(),h(26,"div",10)(27,"app-button",11,0),F("action",function(){return o.processingStarted?o.closeModal():o.checkBeforeProcessing()}),x(29,Age,2,3),x(30,Rge,2,3),u()()()),2&i&&(C("headline",v(1,13,"bulk-rewards.title"))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),c(2),C("formGroup",o.form),c(3),D("",v(6,15,"bulk-rewards.info")," "),c(3),D(" ",v(9,17,"bulk-rewards.more-info-link")," "),c(5),S(v(14,19,"rewards-address-config.address")),c(2),C("ngClass",ie(25,Cge,o.processingStarted)),c(3),S(v(19,21,"rewards-address-config.address-error")),c(3),D(" ",v(22,23,"bulk-rewards.select-visors")," "),c(3),ge(o.nodesToEdit),c(3),C("disabled",!o.formValid()),c(2),k(o.processingStarted?-1:29),c(),k(o.processingStarted?30:-1))},dependencies:[Ft,kn,Qt,Jt,xn,Bi,sn,_n,pc,_u,dn,Aa,On,Fo,Mi,Sn,we],styles:[".text-container[_ngcontent-%COMP%]{word-break:break-word}mat-form-field[_ngcontent-%COMP%]{margin-top:10px}.list-container[_ngcontent-%COMP%]{font-size:14px;margin:10px;color:#215f9e;word-break:break-word}.list-container[_ngcontent-%COMP%] .element-margin[_ngcontent-%COMP%]{margin:15px 0}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%]{display:flex}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-area[_ngcontent-%COMP%]{width:12px;flex-grow:0;flex-shrink:0}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .right-area[_ngcontent-%COMP%]{flex-grow:1}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .contents[_ngcontent-%COMP%]{white-space:normal;line-height:1.2}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .address[_ngcontent-%COMP%]{font-size:.7rem;color:#777}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .address[_ngcontent-%COMP%] .address-label[_ngcontent-%COMP%]{opacity:.7}.buttons[_ngcontent-%COMP%]{margin-top:15px;text-align:right}.buttons[_ngcontent-%COMP%] app-button[_ngcontent-%COMP%]{margin-left:5px}"]})}}return t})(),ap=(()=>{class t{constructor(e){this.dom=e}copy(e){let i=null;try{return i=this.dom.createElement("textarea"),i.style.height="0px",i.style.left="-100px",i.style.opacity="0",i.style.position="fixed",i.style.top="-100px",i.style.width="0px",this.dom.body.appendChild(i),i.value=e,i.select(),this.dom.execCommand("copy"),!0}catch{return!1}finally{i&&i.parentNode&&i.parentNode.removeChild(i)}}static{this.\u0275fac=function(i){return new(i||t)(ce(et))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac})}}return t})(),Nge=(()=>{class t{constructor(e){this.http=e,this.rewardSystemUrl="/api/rewards",this.rewardDataCache=new Map,this.cachedDates=[],this.fetching=!1}getLastNDays(e){const i=[];for(let o=0;o0}fetchRewardData(e){return this.hasCache()?se(this.rewardDataCache):(this.fetching=!0,du(e.map(o=>this.http.get(`${this.rewardSystemUrl}/skycoin-rewards/visor/${o}?days=7`).pipe(De(r=>({pk:o,history:r&&r.history?r.history:[]})),ii(()=>se({pk:o,history:[]}))))).pipe(De(o=>{const r=new Map;for(const{pk:s,history:a}of o){const l={pk:s,rewardAddress:"",dailyAmounts:{},dailySent:{},weekTotal:0};for(const d of a)d.date&&(l.dailyAmounts[d.date]=d.amount||0,l.dailySent[d.date]=d.sent||!1,l.weekTotal+=d.amount||0);r.set(s,l)}return this.rewardDataCache=r,this.cachedDates=this.getLastNDays(7),this.fetching=!1,r}),ii(o=>(this.fetching=!1,se(new Map)))))}clearCache(){this.rewardDataCache=new Map,this.cachedDates=[]}static{this.\u0275fac=function(i){return new(i||t)(ce(xa))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();class lV extends oV{_origin="program";setFocusOrigin(n){return this._origin=n,this}setActiveItem(n){super.setActiveItem(n),this.activeItem&&this.activeItem.focus(this._origin)}}const Lge=["mat-menu-item",""],Bge=[[["mat-icon"],["","matMenuItemIcon",""]],"*"],Vge=["mat-icon, [matMenuItemIcon]","*"];function Hge(t,n){1&t&&(ul(),h(0,"svg",2),L(1,"polygon",3),u())}const Uge=["*"];function zge(t,n){if(1&t){const e=re();Ms(0,"div",0),Jg("click",function(){return V(e),H(y().closed.emit("click"))})("animationstart",function(o){return V(e),H(y()._onAnimationStart(o.animationName))})("animationend",function(o){return V(e),H(y()._onAnimationDone(o.animationName))})("animationcancel",function(o){return V(e),H(y()._onAnimationDone(o.animationName))}),Ms(1,"div",1),Rt(2),Bl()()}if(2&t){const e=y();Ge(e._classList),ve("mat-menu-panel-animations-disabled",e._animationsDisabled)("mat-menu-panel-exit-animation","void"===e._panelAnimationState)("mat-menu-panel-animating",e._isAnimating()),gr("id",e.panelId),We("aria-label",e.ariaLabel||null)("aria-labelledby",e.ariaLabelledby||null)("aria-describedby",e.ariaDescribedby||null)}}const ES=new Z("MAT_MENU_PANEL");let Vs=(()=>{class t{_elementRef=T(Ne);_document=T(et);_focusMonitor=T(ac);_parentMenu=T(ES,{optional:!0});_changeDetectorRef=T(Dt);role="menuitem";disabled=!1;disableRipple=!1;_hovered=new be;_focused=new be;_highlighted=!1;_triggersSubmenu=!1;constructor(){T(qo).load(cu),this._parentMenu?.addItem?.(this)}focus(e,i){this._focusMonitor&&e?this._focusMonitor.focusVia(this._getHostElement(),e,i):this._getHostElement().focus(i),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(e){this.disabled&&(e.preventDefault(),e.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){const e=this._elementRef.nativeElement.cloneNode(!0),i=e.querySelectorAll("mat-icon, .material-icons");for(let o=0;o({overlapTrigger:!1,xPosition:"after",yPosition:"below",backdropClass:"cdk-overlay-transparent-backdrop"})}),PS="_mat-menu-enter",yv="_mat-menu-exit";let os=(()=>{class t{_elementRef=T(Ne);_changeDetectorRef=T(Dt);_injector=T(Ue);_keyManager;_xPosition;_yPosition;_firstItemFocusRef;_exitFallbackTimeout;_animationsDisabled=hi();_allItems;_directDescendantItems=new ud;_classList={};_panelAnimationState="void";_animationDone=new be;_isAnimating=Ct(!1);parentMenu;direction;overlayPanelClass;backdropClass;ariaLabel;ariaLabelledby;ariaDescribedby;get xPosition(){return this._xPosition}set xPosition(e){this._xPosition=e,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(e){this._yPosition=e,this.setPositionClasses()}templateRef;items;lazyContent;overlapTrigger=!1;hasBackdrop;set panelClass(e){const i=this._previousPanelClass,o={...this._classList};i&&i.length&&i.split(" ").forEach(r=>{o[r]=!1}),this._previousPanelClass=e,e&&e.length&&(e.split(" ").forEach(r=>{o[r]=!0}),this._elementRef.nativeElement.className=""),this._classList=o}_previousPanelClass;get classList(){return this.panelClass}set classList(e){this.panelClass=e}closed=new ke;close=this.closed;panelId=T(si).getId("mat-menu-panel-");constructor(){const e=T($ge);this.overlayPanelClass=e.overlayPanelClass||"",this._xPosition=e.xPosition,this._yPosition=e.yPosition,this.backdropClass=e.backdropClass,this.overlapTrigger=e.overlapTrigger,this.hasBackdrop=e.hasBackdrop}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new lV(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit("tab")),this._directDescendantItems.changes.pipe(zn(this._directDescendantItems),wt(e=>Dr(...e.map(i=>i._focused)))).subscribe(e=>this._keyManager.updateActiveItem(e)),this._directDescendantItems.changes.subscribe(e=>{const i=this._keyManager;if("enter"===this._panelAnimationState&&i.activeItem?._hasFocus()){const o=e.toArray(),r=Math.max(0,Math.min(o.length-1,i.activeItemIndex||0));o[r]&&!o[r].disabled?i.setActiveItem(r):i.setNextItemActive()}})}ngOnDestroy(){this._keyManager?.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),this._firstItemFocusRef?.destroy(),clearTimeout(this._exitFallbackTimeout)}_hovered(){return this._directDescendantItems.changes.pipe(zn(this._directDescendantItems),wt(i=>Dr(...i.map(o=>o._hovered))))}addItem(e){}removeItem(e){}_handleKeydown(e){const i=e.keyCode,o=this._keyManager;switch(i){case 27:Mr(e)||(e.preventDefault(),this.closed.emit("keydown"));break;case 37:this.parentMenu&&"ltr"===this.direction&&this.closed.emit("keydown");break;case 39:this.parentMenu&&"rtl"===this.direction&&this.closed.emit("keydown");break;default:return(38===i||40===i)&&o.setFocusOrigin("keyboard"),void o.onKeydown(e)}}focusFirstItem(e="program"){this._firstItemFocusRef?.destroy(),this._firstItemFocusRef=Wi(()=>{const i=this._resolvePanel();if(!i||!i.contains(document.activeElement)){const o=this._keyManager;o.setFocusOrigin(e).setFirstItemActive(),!o.activeItem&&i&&i.focus()}},{injector:this._injector})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(e){}setPositionClasses(e=this.xPosition,i=this.yPosition){this._classList={...this._classList,"mat-menu-before":"before"===e,"mat-menu-after":"after"===e,"mat-menu-above":"above"===i,"mat-menu-below":"below"===i},this._changeDetectorRef.markForCheck()}_onAnimationDone(e){const i=e===yv;(i||e===PS)&&(i&&(clearTimeout(this._exitFallbackTimeout),this._exitFallbackTimeout=void 0),this._animationDone.next(i?"void":"enter"),this._isAnimating.set(!1))}_onAnimationStart(e){(e===PS||e===yv)&&this._isAnimating.set(!0)}_setIsOpen(e){if(this._panelAnimationState=e?"enter":"void",e){if(0===this._keyManager.activeItemIndex){const i=this._resolvePanel();i&&(i.scrollTop=0)}}else this._animationsDisabled||(this._exitFallbackTimeout=setTimeout(()=>this._onAnimationDone(yv),200));this._animationsDisabled&&setTimeout(()=>{this._onAnimationDone(e?PS:yv)}),this._changeDetectorRef.markForCheck()}_updateDirectDescendants(){this._allItems.changes.pipe(zn(this._allItems)).subscribe(e=>{this._directDescendantItems.reset(e.filter(i=>i._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}_resolvePanel(){let e=null;return this._directDescendantItems.length&&(e=this._directDescendantItems.first._getHostElement().closest('[role="menu"]')),e}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-menu"]],contentQueries:function(i,o,r){if(1&i&&Ds(r,jge,5)(r,Vs,5)(r,Vs,4),2&i){let s;fe(s=pe())&&(o.lazyContent=s.first),fe(s=pe())&&(o._allItems=s),fe(s=pe())&&(o.items=s)}},viewQuery:function(i,o){if(1&i&&st(Oi,5),2&i){let r;fe(r=pe())&&(o.templateRef=r.first)}},hostVars:3,hostBindings:function(i,o){2&i&&We("aria-label",null)("aria-labelledby",null)("aria-describedby",null)},inputs:{backdropClass:"backdropClass",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:[2,"overlapTrigger","overlapTrigger",Te],hasBackdrop:[2,"hasBackdrop","hasBackdrop",e=>null==e?null:Te(e)],panelClass:[0,"class","panelClass"],classList:"classList"},outputs:{closed:"closed",close:"close"},exportAs:["matMenu"],features:[dt([{provide:ES,useExisting:t}])],ngContentSelectors:Uge,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-mdc-menu-panel",3,"click","animationstart","animationend","animationcancel","id"],[1,"mat-mdc-menu-content"]],template:function(i,o){1&i&&(xi(),Fg(0,zge,3,12,"ng-template"))},styles:['mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-sys-label-large-weight))}@keyframes _mat-menu-enter{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:none}}@keyframes _mat-menu-exit{from{opacity:1}to{opacity:0}}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;box-sizing:border-box;outline:0;animation:_mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1);border-radius:var(--mat-menu-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-sys-surface-container));box-shadow:var(--mat-menu-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));will-change:transform,opacity}.mat-mdc-menu-panel.mat-menu-panel-exit-animation{animation:_mat-menu-exit 100ms 25ms linear forwards}.mat-mdc-menu-panel.mat-menu-panel-animations-disabled{animation:none}.mat-mdc-menu-panel.mat-menu-panel-animating{pointer-events:none}.mat-mdc-menu-panel.mat-menu-panel-animating:has(.mat-mdc-menu-content:empty){display:none}@media(forced-colors: active){.mat-mdc-menu-panel{outline:solid 1px}}.mat-mdc-menu-panel .mat-divider{border-top-color:var(--mat-menu-divider-color, var(--mat-sys-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing, 8px);margin-top:var(--mat-menu-divider-top-spacing, 8px)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px;padding-left:var(--mat-menu-item-leading-spacing, 12px);padding-right:var(--mat-menu-item-trailing-spacing, 12px);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-menu-item::-moz-focus-inner{border:0}[dir=rtl] .mat-mdc-menu-item{padding-left:var(--mat-menu-item-trailing-spacing, 12px);padding-right:var(--mat-menu-item-leading-spacing, 12px)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-trailing-spacing, 12px)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-trailing-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-leading-spacing, 12px)}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing, 12px);height:var(--mat-menu-item-icon-size, 24px);width:var(--mat-menu-item-icon-size, 24px)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing, 12px)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}@media(forced-colors: active){.mat-mdc-menu-item{margin-top:1px}}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size, 24px);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing, 12px)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing, 12px);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1);transform-origin:center}@media(forced-colors: active){.mat-mdc-menu-submenu-icon{fill:CanvasText}}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n'],encapsulation:2,changeDetection:0})}return t})();const Wge=new Z("mat-menu-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Ue);return()=>$f(t)}}),ku=new WeakMap;let Gge=(()=>{class t{_canHaveBackdrop;_element=T(Ne);_viewContainerRef=T(Ai);_menuItemInstance=T(Vs,{optional:!0,self:!0});_dir=T(kr,{optional:!0});_focusMonitor=T(ac);_ngZone=T(Ce);_injector=T(Ue);_scrollStrategy=T(Wge);_changeDetectorRef=T(Dt);_animationsDisabled=hi();_portal;_overlayRef=null;_menuOpen=!1;_closingActionsSubscription=gt.EMPTY;_menuCloseSubscription=gt.EMPTY;_pendingRemoval;_parentMaterialMenu;_parentInnerPadding;_openedBy=void 0;get _menu(){return this._menuInternal}set _menu(e){e!==this._menuInternal&&(this._menuInternal=e,this._menuCloseSubscription.unsubscribe(),e&&(this._menuCloseSubscription=e.close.subscribe(i=>{this._destroyMenu(i),("click"===i||"tab"===i)&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(i)})),this._menuItemInstance?._setTriggersSubmenu(this._triggersSubmenu()))}_menuInternal=null;constructor(e){this._canHaveBackdrop=e;const i=T(ES,{optional:!0});this._parentMaterialMenu=i instanceof os?i:void 0}ngOnDestroy(){this._menu&&this._ownsMenu(this._menu)&&ku.delete(this._menu),this._pendingRemoval?.unsubscribe(),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null)}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this._menu)}_closeMenu(){this._menu?.close.emit()}_openMenu(e){if(this._triggerIsAriaDisabled())return;const i=this._menu;if(this._menuOpen||!i)return;this._pendingRemoval?.unsubscribe();const o=ku.get(i);ku.set(i,this),o&&o!==this&&o._closeMenu();const r=this._createOverlay(i),s=r.getConfig(),a=s.positionStrategy;this._setPosition(i,a),s.hasBackdrop=this._canHaveBackdrop?null==i.hasBackdrop?!this._triggersSubmenu():i.hasBackdrop:i.hasBackdrop??!1,r.hasAttached()||(r.attach(this._getPortal(i)),i.lazyContent?.attach(this.menuData)),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this._closeMenu()),i.parentMenu=this._triggersSubmenu()?this._parentMaterialMenu:void 0,i.direction=this.dir,e&&i.focusFirstItem(this._openedBy||"program"),this._setIsMenuOpen(!0),i instanceof os&&(i._setIsOpen(!0),i._directDescendantItems.changes.pipe(ln(i.close)).subscribe(()=>{a.withLockedPosition(!1).reapplyLastPosition(),a.withLockedPosition(!0)}))}focus(e,i){this._focusMonitor&&e?this._focusMonitor.focusVia(this._element,e,i):this._element.nativeElement.focus(i)}_destroyMenu(e){const i=this._overlayRef,o=this._menu;!i||!this.menuOpen||(this._closingActionsSubscription.unsubscribe(),this._pendingRemoval?.unsubscribe(),o instanceof os&&this._ownsMenu(o)?(this._pendingRemoval=o._animationDone.pipe(wn(1)).subscribe(()=>{i.detach(),ku.has(o)||o.lazyContent?.detach()}),o._setIsOpen(!1)):(i.detach(),o?.lazyContent?.detach()),o&&this._ownsMenu(o)&&ku.delete(o),this.restoreFocus&&("keydown"===e||!this._openedBy||!this._triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,this._setIsMenuOpen(!1))}_setIsMenuOpen(e){e!==this._menuOpen&&(this._menuOpen=e,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this._triggersSubmenu()&&this._menuItemInstance._setHighlighted(e),this._changeDetectorRef.markForCheck())}_createOverlay(e){if(!this._overlayRef){const i=this._getOverlayConfig(e);this._subscribeToPositions(e,i.positionStrategy),this._overlayRef=ou(this._injector,i),this._overlayRef.keydownEvents().subscribe(o=>{this._menu instanceof os&&this._menu._handleKeydown(o)})}return this._overlayRef}_getOverlayConfig(e){return new Wf({positionStrategy:Eb(this._injector,this._getOverlayOrigin()).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:e.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:e.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir||"ltr",disableAnimations:this._animationsDisabled})}_subscribeToPositions(e,i){e.setPositionClasses&&i.positionChanges.subscribe(o=>{this._ngZone.run(()=>{e.setPositionClasses("start"===o.connectionPair.overlayX?"after":"before","top"===o.connectionPair.overlayY?"below":"above")})})}_setPosition(e,i){let[o,r]="before"===e.xPosition?["end","start"]:["start","end"],[s,a]="above"===e.yPosition?["bottom","top"]:["top","bottom"],[l,d]=[s,a],[f,m]=[o,r],g=0;if(this._triggersSubmenu()){if(m=o="before"===e.xPosition?"start":"end",r=f="end"===o?"start":"end",this._parentMaterialMenu){if(null==this._parentInnerPadding){const b=this._parentMaterialMenu.items.first;this._parentInnerPadding=b?b._getHostElement().offsetTop:0}g="bottom"===s?this._parentInnerPadding:-this._parentInnerPadding}}else e.overlapTrigger||(l="top"===s?"bottom":"top",d="top"===a?"bottom":"top");i.withPositions([{originX:o,originY:l,overlayX:f,overlayY:s,offsetY:g},{originX:r,originY:l,overlayX:m,overlayY:s,offsetY:g},{originX:o,originY:d,overlayX:f,overlayY:a,offsetY:-g},{originX:r,originY:d,overlayX:m,overlayY:a,offsetY:-g}])}_menuClosingActions(){const e=this._getOutsideClickStream(this._overlayRef),i=this._overlayRef.detachments();return Dr(e,this._parentMaterialMenu?this._parentMaterialMenu.closed:se(),this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe(Pn(s=>this._menuOpen&&s!==this._menuItemInstance)):se(),i)}_getPortal(e){return(!this._portal||this._portal.templateRef!==e.templateRef)&&(this._portal=new nc(e.templateRef,this._viewContainerRef)),this._portal}_ownsMenu(e){return ku.get(e)===this}_triggerIsAriaDisabled(){return Te(this._element.nativeElement.getAttribute("aria-disabled"))}static \u0275fac=function(i){WC()};static \u0275dir=de({type:t})}return t})(),Su=(()=>{class t extends Gge{_cleanupTouchstart;_hoverSubscription=gt.EMPTY;get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(e){this.menu=e}get menu(){return this._menu}set menu(e){this._menu=e}menuData;restoreFocus=!0;menuOpened=new ke;onMenuOpen=this.menuOpened;menuClosed=new ke;onMenuClose=this.menuClosed;constructor(){super(!0);const e=T(ei);this._cleanupTouchstart=e.listen(this._element.nativeElement,"touchstart",i=>{Tk(i)||(this._openedBy="touch")},{passive:!0})}triggersSubmenu(){return super._triggersSubmenu()}toggleMenu(){return this.menuOpen?this.closeMenu():this.openMenu()}openMenu(){this._openMenu(!0)}closeMenu(){this._closeMenu()}updatePosition(){this._overlayRef?.updatePosition()}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){super.ngOnDestroy(),this._cleanupTouchstart(),this._hoverSubscription.unsubscribe()}_getOverlayOrigin(){return this._element}_getOutsideClickStream(e){return e.backdropClick()}_handleMousedown(e){Dk(e)||(this._openedBy=0===e.button?"mouse":void 0,this.triggersSubmenu()&&e.preventDefault())}_handleKeydown(e){const i=e.keyCode;(13===i||32===i)&&(this._openedBy="keyboard"),this.triggersSubmenu()&&(39===i&&"ltr"===this.dir||37===i&&"rtl"===this.dir)&&(this._openedBy="keyboard",this.openMenu())}_handleClick(e){this.triggersSubmenu()?(e.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){this.triggersSubmenu()&&this._parentMaterialMenu&&(this._hoverSubscription=this._parentMaterialMenu._hovered().subscribe(e=>{e===this._menuItemInstance&&!e.disabled&&"void"!==this._parentMaterialMenu?._panelAnimationState&&(this._openedBy="mouse",this._openMenu(!1))}))}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:[1,"mat-mdc-menu-trigger"],hostVars:3,hostBindings:function(i,o){1&i&&F("click",function(s){return o._handleClick(s)})("mousedown",function(s){return o._handleMousedown(s)})("keydown",function(s){return o._handleKeydown(s)}),2&i&&We("aria-haspopup",o.menu?"menu":null)("aria-expanded",o.menuOpen)("aria-controls",o.menuOpen?null==o.menu?null:o.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:[0,"mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:[0,"matMenuTriggerFor","menu"],menuData:[0,"matMenuTriggerData","menuData"],restoreFocus:[0,"matMenuTriggerRestoreFocus","restoreFocus"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"},exportAs:["matMenuTrigger"],features:[_e]})}return t})(),qge=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[Bk,ru,ai,Hf]})}return t})();const cV=()=>["1"],La=t=>[t],dV=t=>({number:t});function Kge(t,n){if(1&t&&(h(0,"a",4)(1,"mat-icon",10),p(2,"chevron_left"),u(),p(3),_(4,"translate"),u()),2&t){const e=y();C("routerLink",e.linkParts.concat(vt(6,cV)))("queryParams",e.queryParams),c(),C("inline",!0),c(2),D(" ",v(4,4,"paginator.first")," ")}}function Yge(t,n){if(1&t&&(h(0,"a",5)(1,"mat-icon",10),p(2,"chevron_left"),u(),h(3,"span",11),p(4),_(5,"translate"),u()()),2&t){const e=y();C("routerLink",e.linkParts.concat(vt(6,cV)))("queryParams",e.queryParams),c(),C("inline",!0),c(3),S(v(5,4,"paginator.first"))}}function Xge(t,n){if(1&t&&(h(0,"a",4)(1,"div")(2,"mat-icon",10),p(3,"chevron_left"),u()()()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(3,La,(e.currentPage-1).toString())))("queryParams",e.queryParams),c(2),C("inline",!0)}}function Zge(t,n){if(1&t&&(h(0,"a",4),p(1),u()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(3,La,(e.currentPage-2).toString())))("queryParams",e.queryParams),c(),S(e.currentPage-2)}}function Qge(t,n){if(1&t&&(h(0,"a",6),p(1),u()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(3,La,(e.currentPage-1).toString())))("queryParams",e.queryParams),c(),S(e.currentPage-1)}}function Jge(t,n){if(1&t&&(h(0,"a",6),p(1),u()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(3,La,(e.currentPage+1).toString())))("queryParams",e.queryParams),c(),S(e.currentPage+1)}}function e_e(t,n){if(1&t&&(h(0,"a",4),p(1),u()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(3,La,(e.currentPage+2).toString())))("queryParams",e.queryParams),c(),S(e.currentPage+2)}}function t_e(t,n){if(1&t&&(h(0,"a",4)(1,"div")(2,"mat-icon",10),p(3,"chevron_right"),u()()()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(3,La,(e.currentPage+1).toString())))("queryParams",e.queryParams),c(2),C("inline",!0)}}function n_e(t,n){if(1&t&&(h(0,"a",4),p(1),_(2,"translate"),h(3,"mat-icon",10),p(4,"chevron_right"),u()()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(6,La,e.numberOfPages.toString())))("queryParams",e.queryParams),c(),D(" ",v(2,4,"paginator.last")," "),c(2),C("inline",!0)}}function i_e(t,n){if(1&t&&(h(0,"a",5)(1,"mat-icon",10),p(2,"chevron_right"),u(),h(3,"span",11),p(4),_(5,"translate"),u()()),2&t){const e=y();C("routerLink",e.linkParts.concat(ie(6,La,e.numberOfPages.toString())))("queryParams",e.queryParams),c(),C("inline",!0),c(3),S(v(5,4,"paginator.last"))}}function o_e(t,n){if(1&t&&(h(0,"div",8),p(1),_(2,"translate"),u()),2&t){const e=y();c(),S(ue(2,1,"paginator.total",ie(4,dV,e.numberOfPages)))}}function r_e(t,n){if(1&t&&(h(0,"div",9),p(1),_(2,"translate"),u()),2&t){const e=y();c(),S(ue(2,1,"paginator.total",ie(4,dV,e.numberOfPages)))}}let Cv=(()=>{class t{constructor(e,i){this.dialog=e,this.router=i,this.linkParts=[""],this.queryParams={}}openSelectionDialog(){const e=[];for(let i=1;i<=this.numberOfPages;i++)e.push({label:i.toString()});ho.openDialog(this.dialog,e,"paginator.select-page-title").afterClosed().subscribe(i=>{i&&this.router.navigate(this.linkParts.concat([i.toString()]),{queryParams:this.queryParams})})}static{this.\u0275fac=function(i){return new(i||t)(O(Nt),O(yt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-paginator"]],inputs:{currentPage:"currentPage",numberOfPages:"numberOfPages",linkParts:"linkParts",queryParams:"queryParams"},standalone:!1,decls:21,vars:13,consts:[[1,"main-container"],[1,"d-inline-block","small-rounded-elevated-box","mt-3"],[1,"d-flex"],[1,"responsive-height","d-md-none"],[1,"d-none","d-md-flex",3,"routerLink","queryParams"],[1,"d-flex","d-md-none","flex-column",3,"routerLink","queryParams"],[3,"routerLink","queryParams"],[1,"selected",3,"click"],[1,"d-none","d-md-block","total-pages"],[1,"d-block","d-md-none","total-pages"],[3,"inline"],[1,"label"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3),p(4,"\xa0"),L(5,"br"),p(6,"\xa0"),u(),x(7,Kge,5,7,"a",4),x(8,Yge,6,7,"a",5),x(9,Xge,4,5,"a",4),x(10,Zge,2,5,"a",4),x(11,Qge,2,5,"a",6),h(12,"a",7),F("click",function(){return o.openSelectionDialog()}),p(13),u(),x(14,Jge,2,5,"a",6),x(15,e_e,2,5,"a",4),x(16,t_e,4,5,"a",4),x(17,n_e,5,8,"a",4),x(18,i_e,6,8,"a",5),u()(),x(19,o_e,3,6,"div",8),x(20,r_e,3,6,"div",9),u()),2&i&&(c(7),k(o.currentPage>3?7:-1),c(),k(o.currentPage>2?8:-1),c(),k(o.currentPage>1?9:-1),c(),k(o.currentPage>2?10:-1),c(),k(o.currentPage>1?11:-1),c(2),S(o.currentPage),c(),k(o.currentPage3?19:-1),c(),k(o.numberOfPages>2?20:-1))},dependencies:[es,Ae,we],styles:[".main-container[_ngcontent-%COMP%]{text-align:right}.main-container[_ngcontent-%COMP%] .responsive-height[_ngcontent-%COMP%]{padding:10px 0;width:0px}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:10px;border-right:rgba(255,255,255,.15) solid 1px;border-left:rgba(255,255,255,.15) solid 1px;min-width:40px;text-align:center;color:#f8f9f980;text-decoration:none;display:flex;align-items:center;justify-content:center}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:#0003}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:.7rem}.main-container[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{color:#f8f9f9;background:#0000005c;padding:10px 20px;cursor:pointer}.main-container[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]:hover{background:#0009}.main-container[_ngcontent-%COMP%] .total-pages[_ngcontent-%COMP%]{font-size:.6rem;margin-top:-3px;margin-right:4px}"]})}}return t})();function lp(t){return En((n,e)=>{let i,r,o=!1;const s=()=>{i=n.subscribe(pn(e,void 0,void 0,a=>{r||(r=new be,qi(t(r)).subscribe(pn(e,()=>i?s():o=!0))),r&&r.next(a)})),o&&(i.unsubscribe(),i=null,o=!1,s())};s()})}const rs={AF:"Afghanistan",AX:"Aland Islands",AL:"Albania",DZ:"Algeria",AS:"American Samoa",AD:"Andorra",AO:"Angola",AI:"Anguilla",AQ:"Antarctica",AG:"Antigua and Barbuda",AR:"Argentina",AM:"Armenia",AW:"Aruba",AU:"Australia",AT:"Austria",AZ:"Azerbaijan",BS:"Bahamas",BH:"Bahrain",BD:"Bangladesh",BB:"Barbados",BY:"Belarus",BE:"Belgium",BZ:"Belize",BJ:"Benin",BM:"Bermuda",BT:"Bhutan",BO:"Bolivia",BA:"Bosnia and Herzegovina",BW:"Botswana",BV:"Bouvet Island",BR:"Brazil",IO:"British Indian Ocean Territory",BN:"Brunei Darussalam",BG:"Bulgaria",BF:"Burkina Faso",BI:"Burundi",KH:"Cambodia",CM:"Cameroon",CA:"Canada",CV:"Cape Verde",KY:"Cayman Islands",CF:"Central African Republic",TD:"Chad",CL:"Chile",CN:"China",CX:"Christmas Island",CC:"Cocos (Keeling) Islands",CO:"Colombia",KM:"Comoros",CG:"Congo",CD:"Congo, Democratic Republic",CK:"Cook Islands",CR:"Costa Rica",CI:"Cote D'Ivoire",HR:"Croatia",CU:"Cuba",CY:"Cyprus",CZ:"Czech Republic",DK:"Denmark",DJ:"Djibouti",DM:"Dominica",DO:"Dominican Republic",EC:"Ecuador",EG:"Egypt",SV:"El Salvador",GQ:"Equatorial Guinea",ER:"Eritrea",EE:"Estonia",ET:"Ethiopia",FK:"Falkland Islands (Malvinas)",FO:"Faroe Islands",FJ:"Fiji",FI:"Finland",FR:"France",GF:"French Guiana",PF:"French Polynesia",TF:"French Southern Territories",GA:"Gabon",GM:"Gambia",GE:"Georgia",DE:"Germany",GH:"Ghana",GI:"Gibraltar",GR:"Greece",GL:"Greenland",GD:"Grenada",GP:"Guadeloupe",GU:"Guam",GT:"Guatemala",GG:"Guernsey",GN:"Guinea",GW:"Guinea-Bissau",GY:"Guyana",HT:"Haiti",HM:"Heard Island and Mcdonald Islands",VA:"Holy See (Vatican City State)",HN:"Honduras",HK:"Hong Kong",HU:"Hungary",IS:"Iceland",IN:"India",ID:"Indonesia",IR:"Iran",IQ:"Iraq",IE:"Ireland",IM:"Isle of Man",IL:"Israel",IT:"Italy",JM:"Jamaica",JP:"Japan",JE:"Jersey",JO:"Jordan",KZ:"Kazakhstan",KE:"Kenya",KI:"Kiribati",KP:"Korea (North)",KR:"Korea (South)",XK:"Kosovo",KW:"Kuwait",KG:"Kyrgyzstan",LA:"Laos",LV:"Latvia",LB:"Lebanon",LS:"Lesotho",LR:"Liberia",LY:"Libyan Arab Jamahiriya",LI:"Liechtenstein",LT:"Lithuania",LU:"Luxembourg",MO:"Macao",MK:"Macedonia",MG:"Madagascar",MW:"Malawi",MY:"Malaysia",MV:"Maldives",ML:"Mali",MT:"Malta",MH:"Marshall Islands",MQ:"Martinique",MR:"Mauritania",MU:"Mauritius",YT:"Mayotte",MX:"Mexico",FM:"Micronesia",MD:"Moldova",MC:"Monaco",MN:"Mongolia",MS:"Montserrat",MA:"Morocco",MZ:"Mozambique",MM:"Myanmar",NA:"Namibia",NR:"Nauru",NP:"Nepal",NL:"Netherlands",AN:"Netherlands Antilles",NC:"New Caledonia",NZ:"New Zealand",NI:"Nicaragua",NE:"Niger",NG:"Nigeria",NU:"Niue",NF:"Norfolk Island",MP:"Northern Mariana Islands",NO:"Norway",OM:"Oman",PK:"Pakistan",PW:"Palau",PS:"Palestinian Territory, Occupied",PA:"Panama",PG:"Papua New Guinea",PY:"Paraguay",PE:"Peru",PH:"Philippines",PN:"Pitcairn",PL:"Poland",PT:"Portugal",PR:"Puerto Rico",QA:"Qatar",RE:"Reunion",RO:"Romania",RU:"Russian Federation",RW:"Rwanda",SH:"Saint Helena",KN:"Saint Kitts and Nevis",LC:"Saint Lucia",PM:"Saint Pierre and Miquelon",VC:"Saint Vincent and the Grenadines",WS:"Samoa",SM:"San Marino",ST:"Sao Tome and Principe",SA:"Saudi Arabia",SN:"Senegal",RS:"Serbia",ME:"Montenegro",SC:"Seychelles",SL:"Sierra Leone",SG:"Singapore",SK:"Slovakia",SI:"Slovenia",SB:"Solomon Islands",SO:"Somalia",ZA:"South Africa",GS:"South Georgia and the South Sandwich Islands",ES:"Spain",LK:"Sri Lanka",SD:"Sudan",SR:"Suriname",SJ:"Svalbard and Jan Mayen",SZ:"Swaziland",SE:"Sweden",CH:"Switzerland",SY:"Syrian Arab Republic",TW:"Taiwan, Province of China",TJ:"Tajikistan",TZ:"Tanzania",TH:"Thailand",TL:"Timor-Leste",TG:"Togo",TK:"Tokelau",TO:"Tonga",TT:"Trinidad and Tobago",TN:"Tunisia",TR:"Turkey",TM:"Turkmenistan",TC:"Turks and Caicos Islands",TV:"Tuvalu",UG:"Uganda",UA:"Ukraine",AE:"United Arab Emirates",GB:"United Kingdom",US:"United States",UM:"United States Minor Outlying Islands",UY:"Uruguay",UZ:"Uzbekistan",VU:"Vanuatu",VE:"Venezuela",VN:"Viet Nam",VG:"Virgin Islands, British",VI:"Virgin Islands, U.S.",WF:"Wallis and Futuna",EH:"Western Sahara",YE:"Yemen",ZM:"Zambia",ZW:"Zimbabwe",ZZ:"Unknown"};let Hs=(()=>{class t{constructor(e){this.apiService=e}changeAppState(e,i,o){return this.apiService.put(`visors/${e}/apps/${encodeURIComponent(i)}`,{status:o?1:0})}changeAppAutostart(e,i,o){return this.changeAppSettings(e,i,{autostart:o})}changeAppSettings(e,i,o){return this.apiService.put(`visors/${e}/apps/${encodeURIComponent(i)}`,o)}getLogMessages(e,i,o){const s=RF(-1!==o?Date.now()-864e5*o:0,"yyyy-MM-ddTHH:mm:ssZZZZZ","en-US");return this.apiService.get(this.getLogMessagesUrl(e,i)+`?since=${s}`).pipe(De(a=>a.logs))}getLogMessagesUrl(e,i){return`visors/${e}/apps/${encodeURIComponent(i)}/logs`}static{this.\u0275fac=function(i){return new(i||t)(ce(fi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var bn=function(t){return t.None="None",t.Favorite="Favorite",t.Blocked="Blocked",t}(bn||{}),er=function(t){return t.BitsSpeedAndBytesVolume="BitsSpeedAndBytesVolume",t.OnlyBytes="OnlyBytes",t.OnlyBits="OnlyBits",t}(er||{});let Cc=(()=>{class t{constructor(e,i){this.router=e,this.storageService=i,this.maxHistoryElements=30,this.savedServersStorageKey="VpnServers",this.checkIpSettingStorageKey="VpnGetIp",this.dataUnitsSettingStorageKey="VpnDataUnits",this.serversMap=new Map,this.savedDataVersion=0,this.currentServerSubject=new co(1),this.historySubject=new co(1),this.favoritesSubject=new co(1),this.blockedSubject=new co(1)}initialize(){this.migrateDataToHvStorage(),this.serversMap=new Map;const e=this.storageService.getDataForHv(this.savedServersStorageKey);if(e){const i=JSON.parse(e);i.serverList.forEach(o=>{this.serversMap.set(o.pk,o)}),this.savedDataVersion=i.version,i.selectedServerPk&&this.updateCurrentServerPk(i.selectedServerPk)}this.launchListEvents()}migrateDataToHvStorage(){const e=localStorage.getItem(this.savedServersStorageKey);e&&(this.storageService.setDataForHv(this.savedServersStorageKey,e),localStorage.removeItem(this.savedServersStorageKey));const i=localStorage.getItem(this.checkIpSettingStorageKey);i&&(this.storageService.setDataForHv(this.checkIpSettingStorageKey,i),localStorage.removeItem(this.checkIpSettingStorageKey));const o=localStorage.getItem(this.dataUnitsSettingStorageKey);o&&(this.storageService.setDataForHv(this.dataUnitsSettingStorageKey,o),localStorage.removeItem(this.dataUnitsSettingStorageKey))}get currentServer(){return this.serversMap.get(this.currentServerPk)}get currentServerObservable(){return this.currentServerSubject.asObservable()}get history(){return this.historySubject.asObservable()}get favorites(){return this.favoritesSubject.asObservable()}get blocked(){return this.blockedSubject.asObservable()}getSavedVersion(e,i){return i&&this.checkIfDataWasChanged(),this.serversMap.get(e)}getCheckIpSetting(){const e=this.storageService.getDataForHv(this.checkIpSettingStorageKey);return null==e||"false"!==e}setCheckIpSetting(e){this.storageService.setDataForHv(this.checkIpSettingStorageKey,e?"true":"false")}getDataUnitsSetting(){return this.storageService.getDataForHv(this.dataUnitsSettingStorageKey)??er.BitsSpeedAndBytesVolume}setDataUnitsSetting(e){this.storageService.setDataForHv(this.dataUnitsSettingStorageKey,e)}updateFromDiscovery(e){this.checkIfDataWasChanged(),e.forEach(i=>{if(this.serversMap.has(i.pk)){const o=this.serversMap.get(i.pk);o.countryCode=i.countryCode,o.name=i.name,o.location=i.location,o.note=i.note}}),this.saveData()}updateServer(e){this.serversMap.set(e.pk,e),this.cleanServers(),this.saveData()}processFromDiscovery(e){this.checkIfDataWasChanged();const i=this.serversMap.get(e.pk);return i?(i.countryCode=e.countryCode,i.name=e.name,i.location=e.location,i.note=e.note,this.saveData(),i):{countryCode:e.countryCode,name:e.name,customName:null,pk:e.pk,lastUsed:0,inHistory:!1,flag:bn.None,location:e.location,personalNote:null,note:e.note,enteredManually:!1,usedWithPassword:!1}}processFromManual(e){this.checkIfDataWasChanged();const i=this.serversMap.get(e.pk);return i?(i.customName=e.name,i.personalNote=e.note,i.enteredManually=!0,this.saveData(),i):{countryCode:"zz",name:"",customName:e.name,pk:e.pk,lastUsed:0,inHistory:!1,flag:bn.None,location:"",personalNote:e.note,note:"",enteredManually:!0,usedWithPassword:!1}}changeFlag(e,i){this.checkIfDataWasChanged();const o=this.serversMap.get(e.pk);o&&(e=o),e.flag!==i&&(e.flag=i,this.serversMap.has(e.pk)||this.serversMap.set(e.pk,e),this.cleanServers(),this.saveData())}removeFromHistory(e){this.checkIfDataWasChanged();const i=this.serversMap.get(e);!i||!i.inHistory||(i.inHistory=!1,this.cleanServers(),this.saveData())}modifyCurrentServer(e){this.checkIfDataWasChanged(),e.pk!==this.currentServerPk&&(this.serversMap.has(e.pk)||this.serversMap.set(e.pk,e),this.updateCurrentServerPk(e.pk),this.cleanServers(),this.saveData())}compareCurrentServer(e){if(this.checkIfDataWasChanged(),e){if(!this.currentServerPk||this.currentServerPk!==e){if(this.currentServerPk=e,!this.serversMap.get(e)){const o=this.processFromManual({pk:e});this.serversMap.set(o.pk,o),this.cleanServers()}this.saveData(),this.currentServerSubject.next(this.currentServer)}}else this.currentServerPk&&(this.currentServerPk=null,this.saveData(),this.currentServerSubject.next(this.currentServer))}updateHistory(){this.checkIfDataWasChanged(),this.currentServer.lastUsed=Date.now(),this.currentServer.inHistory=!0;let e=[];this.serversMap.forEach(o=>{o.inHistory&&e.push(o)}),e=e.sort((o,r)=>r.lastUsed-o.lastUsed);let i=0;e.forEach(o=>{i{!i.inHistory&&i.flag===bn.None&&i.pk!==this.currentServerPk&&!i.customName&&!i.personalNote&&e.push(i.pk)}),e.forEach(i=>{this.serversMap.delete(i)})}saveData(){let e=0;const i=this.storageService.getDataForHv(this.savedServersStorageKey);if(i&&(e=JSON.parse(i).version),e!==this.savedDataVersion)return void this.router.navigate(["vpn","unavailable"],{queryParams:{problem:"storage"}});this.savedDataVersion+=1;const o={version:this.savedDataVersion,serverList:Array.from(this.serversMap.values()),selectedServerPk:this.currentServerPk},r=JSON.stringify(o);this.storageService.setDataForHv(this.savedServersStorageKey,r),this.launchListEvents()}checkIfDataWasChanged(){let e=0;const i=this.storageService.getDataForHv(this.savedServersStorageKey);i&&(e=JSON.parse(i).version),e!==this.savedDataVersion&&this.initialize()}launchListEvents(){const e=[],i=[],o=[];this.serversMap.forEach(r=>{r.inHistory&&e.push(r),r.flag===bn.Favorite&&i.push(r),r.flag===bn.Blocked&&o.push(r)}),this.historySubject.next(e),this.favoritesSubject.next(i),this.blockedSubject.next(o)}updateCurrentServerPk(e){this.currentServerPk=e,this.currentServerSubject.next(this.currentServer)}static{this.\u0275fac=function(i){return new(i||t)(ce(yt),ce(ri))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var un=function(t){return t.Stopped="stopped",t.Connecting="Connecting",t.Running="Running",t.ShuttingDown="Shutting down",t.Reconnecting="Connection failed, reconnecting",t}(un||{});class s_e{constructor(){this.updateDate=Date.now()}}class a_e{}class l_e{constructor(){this.latency=0,this.uploadSpeed=0,this.downloadSpeed=0,this.totalUploaded=0,this.totalDownloaded=0,this.connectionDuration=0,this.error=""}}var Vi=function(t){return t[t.PerformingInitialCheck=1]="PerformingInitialCheck",t[t.Off=10]="Off",t[t.Starting=20]="Starting",t[t.Running=100]="Running",t[t.Disconnecting=200]="Disconnecting",t}(Vi||{}),Ir=function(t){return t[t.Busy=1]="Busy",t[t.Ok=2]="Ok",t[t.MustStop=3]="MustStop",t[t.SamePkRunning=4]="SamePkRunning",t[t.SamePkStopped=5]="SamePkStopped",t}(Ir||{});let wc=(()=>{class t{constructor(e,i,o,r,s,a,l){this.apiService=e,this.appsService=i,this.router=o,this.vpnSavedDataService=r,this.http=s,this.snackbarService=a,this.translateService=l,this.vpnClientAppName="vpn-client",this.standardWaitTime=2e3,this.stateSubject=new Ei(null),this.errorSubject=new Ei(!1),this.working=!0,this.requestedServer=null,this.requestedPassword=null,this.updatesStopped=!1,this.currentEventData=new s_e,this.currentEventData.busy=!0,this.lastServiceState=Vi.PerformingInitialCheck}initialize(e){e&&(this.nodeKey?e!==this.nodeKey?this.router.navigate(["vpn","unavailable"],{queryParams:{problem:"pkChange"}}):this.updatesStopped&&(this.updatesStopped=!1,this.updateData()):(this.nodeKey=e,this.vpnSavedDataService.initialize(),this.updateData()))}get backendState(){return this.stateSubject.asObservable()}get errorsConnecting(){return this.errorSubject.asObservable()}updateData(){this.continuallyUpdateData(0)}start(){return!this.working&&this.lastServiceState<20&&(this.changeAppState(!0),!0)}stop(){return!this.working&&this.lastServiceState>=20&&this.lastServiceState<200&&(this.changeAppState(!1),!0)}getIpData(){return this.http.request("GET",window.location.protocol+"//ip.skycoin.com/").pipe(lp(e=>Fs(e.pipe(oi(this.standardWaitTime),wn(4)),Cr(""))),De(e=>[e&&e.ip_address?e.ip_address:this.translateService.instant("common.unknown"),e&&e.country_name?e.country_name:this.translateService.instant("common.unknown")]))}changeServerUsingHistory(e,i){return this.requestedServer=e,this.requestedPassword=i,this.updateRequestedServerPasswordSetting(),this.changeServer()}changeServerUsingDiscovery(e,i){return this.requestedServer=this.vpnSavedDataService.processFromDiscovery(e),this.requestedPassword=i,this.updateRequestedServerPasswordSetting(),this.changeServer()}changeServerManually(e,i){return this.requestedServer=this.vpnSavedDataService.processFromManual(e),this.requestedPassword=i,this.updateRequestedServerPasswordSetting(),this.changeServer()}updateRequestedServerPasswordSetting(){this.requestedServer.usedWithPassword=!!this.requestedPassword&&""!==this.requestedPassword;const e=this.vpnSavedDataService.getSavedVersion(this.requestedServer.pk,!0);e&&(e.usedWithPassword=this.requestedServer.usedWithPassword,this.vpnSavedDataService.updateServer(e))}changeServer(){return!this.working&&(this.stop()||this.processServerChange(),!0)}checkNewPk(e){return this.working?Ir.Busy:this.lastServiceState!==Vi.Off?e===this.vpnSavedDataService.currentServer.pk?Ir.SamePkRunning:Ir.MustStop:this.vpnSavedDataService.currentServer&&e===this.vpnSavedDataService.currentServer.pk?Ir.SamePkStopped:Ir.Ok}processServerChange(){this.dataSubscription&&this.dataSubscription.unsubscribe();const e={pk:this.requestedServer.pk};e.passcode=this.requestedPassword?this.requestedPassword:"",this.stopContinuallyUpdatingData(),this.working=!0,this.sendUpdate(),this.dataSubscription=this.appsService.changeAppSettings(this.nodeKey,this.vpnClientAppName,e).subscribe(()=>{this.vpnSavedDataService.modifyCurrentServer(this.requestedServer),this.requestedServer=null,this.requestedPassword=null,this.working=!1,this.start()},i=>{i=Ze(i),this.snackbarService.showError("vpn.server-change.backend-error",null,!1,i.originalServerErrorMsg),this.working=!1,this.requestedServer=null,this.requestedPassword=null,this.sendUpdate(),this.updateData()})}changeAppState(e){if(this.working)return;this.stopContinuallyUpdatingData(),this.working=!0,this.sendUpdate();const i={status:1};e?(this.lastServiceState=Vi.Starting,this.connectionHistoryPk=null):(this.lastServiceState=Vi.Disconnecting,i.status=0),this.dataSubscription&&this.dataSubscription.unsubscribe(),this.dataSubscription=this.appsService.changeAppSettings(this.nodeKey,this.vpnClientAppName,i).pipe(ii(o=>this.getVpnClientState().pipe(Tt(r=>{if(r){if(e&&r.running)return se(!0);if(!e&&!r.running)return se(!0)}return Cr(o)}))),lp(o=>Fs(o.pipe(oi(this.standardWaitTime),wn(3)),o.pipe(Tt(r=>Cr(r)))))).subscribe(o=>{this.working=!1;const r=this.processAppData(o);this.lastServiceState=r.running?Vi.Running:Vi.Off,this.currentEventData.vpnClientAppData=r,this.currentEventData.updateDate=Date.now(),this.sendUpdate(),this.updateData(),!e&&this.requestedServer&&this.processServerChange()},o=>{o=Ze(o),this.snackbarService.showError(this.lastServiceState===Vi.Starting?"vpn.status-page.problem-starting-error":this.lastServiceState===Vi.Disconnecting?"vpn.status-page.problem-stopping-error":"vpn.status-page.generic-problem-error",null,!1,o.originalServerErrorMsg),this.working=!1,this.sendUpdate(),this.updateData()})}continuallyUpdateData(e){if(this.working&&this.lastServiceState!==Vi.PerformingInitialCheck)return;this.continuousUpdateSubscription&&this.continuousUpdateSubscription.unsubscribe();let i=0;this.continuousUpdateSubscription=se(0).pipe(oi(e),Tt(()=>this.getVpnClientState()),lp(o=>o.pipe(Tt(r=>(this.errorSubject.next(!0),Jr.currentInstance.showDataProblemMsg(),(r=Ze(r)).originalError&&r.originalError.status&&401===r.originalError.status?Cr(r):this.lastServiceState!==Vi.PerformingInitialCheck||i<4?(i+=1,se(r).pipe(oi(this.standardWaitTime))):Cr(r)))))).subscribe(o=>{o?(this.errorSubject.next(!1),Jr.currentInstance.hideDataProblemMsg(),this.lastServiceState===Vi.PerformingInitialCheck&&(this.working=!1),this.vpnSavedDataService.compareCurrentServer(o.serverPk),this.lastServiceState=o.running?Vi.Running:Vi.Off,this.currentEventData.vpnClientAppData=o,this.currentEventData.updateDate=Date.now(),this.sendUpdate()):this.lastServiceState===Vi.PerformingInitialCheck&&(this.router.navigate(["vpn","unavailable"]),this.nodeKey=null,this.updatesStopped=!0),this.continuallyUpdateData(this.standardWaitTime)},o=>{(o=Ze(o)).originalError&&o.originalError.status&&401===o.originalError.status||(this.router.navigate(["vpn","unavailable"]),this.nodeKey=null),this.updatesStopped=!0})}stopContinuallyUpdatingData(){this.continuousUpdateSubscription&&this.continuousUpdateSubscription.unsubscribe()}getVpnClientState(){let e;const i=new Ro;return i.vpnKeyForAuth=this.nodeKey,this.apiService.get(`visors/${this.nodeKey}/summary`,i).pipe(Tt(o=>{let r;if(o&&o.overview)if(this.visorPublicIp=o.overview.public_ip&&o.overview.public_ip.trim()?o.overview.public_ip:null,o.overview.country_code){this.visorCountryCode=o.overview.country_code;const s=rs[o.overview.country_code.toUpperCase()];this.visorCountryName=s||o.overview.country_code}else this.visorCountryCode=null,this.visorCountryName=null;if(o&&o.overview&&o.overview.apps&&o.overview.apps.length>0&&o.overview.apps.forEach(s=>{s.name===this.vpnClientAppName&&(r=s)}),r&&(e=this.processAppData(r)),e.minHops=o.min_hops?o.min_hops:0,e&&e.running){const s=new Ro;return s.vpnKeyForAuth=this.nodeKey,this.apiService.get(`visors/${this.nodeKey}/apps/${this.vpnClientAppName}/connections`,s)}return se(null)}),De(o=>{if(o&&o.length>0){const r=new l_e;o.forEach(s=>{r.latency+=s.latency/o.length,r.uploadSpeed+=s.upload_speed/o.length,r.downloadSpeed+=s.download_speed/o.length,r.totalUploaded+=s.bandwidth_sent,r.totalDownloaded+=s.bandwidth_received,s.error&&(r.error=s.error),s.connection_duration>r.connectionDuration&&(r.connectionDuration=s.connection_duration)}),(!this.connectionHistoryPk||this.connectionHistoryPk!==e.serverPk)&&(this.connectionHistoryPk=e.serverPk,this.uploadSpeedHistory=[0,0,0,0,0,0,0,0,0,0],this.downloadSpeedHistory=[0,0,0,0,0,0,0,0,0,0],this.latencyHistory=[0,0,0,0,0,0,0,0,0,0]),r.latency=Math.round(r.latency),r.uploadSpeed=Math.round(r.uploadSpeed),r.downloadSpeed=Math.round(r.downloadSpeed),r.totalUploaded=Math.round(r.totalUploaded),r.totalDownloaded=Math.round(r.totalDownloaded),this.uploadSpeedHistory.splice(0,1),this.uploadSpeedHistory.push(r.uploadSpeed),r.uploadSpeedHistory=this.uploadSpeedHistory,this.downloadSpeedHistory.splice(0,1),this.downloadSpeedHistory.push(r.downloadSpeed),r.downloadSpeedHistory=this.downloadSpeedHistory,this.latencyHistory.splice(0,1),this.latencyHistory.push(r.latency),r.latencyHistory=this.latencyHistory,e.connectionData=r}return e}))}processAppData(e){const i=new a_e;if(i.running=0!==e.status&&2!==e.status,i.connectionDuration=e.connection_duration,i.appState=un.Stopped,i.running?e.detailed_status===un.Connecting||3===e.status?i.appState=un.Connecting:e.detailed_status===un.Running?i.appState=un.Running:e.detailed_status===un.ShuttingDown?i.appState=un.ShuttingDown:e.detailed_status===un.Reconnecting&&(i.appState=un.Reconnecting):2===e.status&&(i.lastErrorMsg=e.detailed_status,i.lastErrorMsg||(i.lastErrorMsg=this.translateService.instant("vpn.status-page.unknown-error"))),i.killswitch=!1,e.args&&e.args.length>0)for(let o=0;o{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.formBuilder=o,this.snackbarService=r,this.vpnSavedDataService=s}ngOnInit(){this.form=this.formBuilder.group({value:[(this.data.editName?this.data.server.customName:this.data.server.personalNote)||""]}),setTimeout(()=>this.firstInput.nativeElement.focus())}process(){let e=this.vpnSavedDataService.getSavedVersion(this.data.server.pk,!0);e=e||this.data.server;const i=this.form.get("value").value;i!==(this.data.editName?this.data.server.customName:this.data.server.personalNote)?(this.data.editName?e.customName=i:e.personalNote=i,this.vpnSavedDataService.updateServer(e),this.snackbarService.showDone("vpn.server-options.edit-value.changes-made-confirmation"),this.dialogRef.close(!0)):this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Si),O(ot),O(Cc))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-edit-vpn-server-value"]],viewQuery:function(i,o){if(1&i&&st(c_e,5),2&i){let r;fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:11,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","value","maxlength","100","matInput",""],["color","primary",1,"float-right",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),_(7,"translate"),u(),L(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.process()}),p(11),_(12,"translate"),u()()),2&i&&(C("headline",v(1,5,"vpn.server-options.edit-value."+(o.data.editName?"name":"note")+"-title"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(4),S(v(7,7,"vpn.server-options.edit-value."+(o.data.editName?"name":"note")+"-label")),c(5),D(" ",v(12,9,"vpn.server-options.edit-value.apply-button")," "))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,On,Mi,Sn,we],encapsulation:2})}}return t})();const u_e=["firstInput"];let uV=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.mediumModalWidth,e.open(t,o)}constructor(e,i,o){this.dialogRef=e,this.data=i,this.formBuilder=o}ngOnInit(){this.form=this.formBuilder.group({password:["",this.data?void 0:Se.required]}),setTimeout(()=>this.firstInput.nativeElement.focus())}process(){this.dialogRef.close("-"+this.form.get("password").value)}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Si))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-enter-vpn-server-password"]],viewQuery:function(i,o){if(1&i&&st(u_e,5),2&i){let r;fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:12,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","password","type","password","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),_(7,"translate"),u(),L(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.process()}),p(11),_(12,"translate"),u()()),2&i&&(C("headline",v(1,6,"vpn.server-list.password-dialog.title"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(4),S(v(7,8,"vpn.server-list.password-dialog.password"+(o.data?"-if-any":"")+"-label")),c(4),C("disabled",!o.form.valid),c(),D(" ",v(12,10,"vpn.server-list.password-dialog.continue-button")," "))},dependencies:[kn,Qt,Jt,xn,sn,_n,dn,On,Mi,Sn,we],encapsulation:2})}}return t})(),pi=(()=>{class t{static{this.serverListTabStorageKey="ServerListTab"}static{this.currentPk=""}static changeCurrentPk(e){this.currentPk=e}static setDefaultTabForServerList(e){sessionStorage.setItem(t.serverListTabStorageKey,e)}static get vpnTabsData(){const e=sessionStorage.getItem(t.serverListTabStorageKey);return[{icon:"power_settings_new",label:"vpn.start",linkParts:["/vpn",this.currentPk,"status"]},{icon:"list",label:"vpn.servers",linkParts:e?["/vpn",this.currentPk,"servers",e,"1"]:["/vpn",this.currentPk,"servers"]},{icon:"settings",label:"vpn.settings",linkParts:["/vpn",this.currentPk,"settings"]}]}static getLatencyValueString(e){return e<1e3?"time-in-ms":"time-in-segs"}static getPrintableLatency(e){return e<1e3?e+"":(e/1e3).toFixed(1)}static processServerChange(e,i,o,r,s,a,l,d,f,m,g){let b;if(d&&(f||m)||f&&(d||m)||m&&(d||f))throw new Error("Invalid call");if(d)b=d.pk;else if(f)b=f.pk;else{if(!m)throw new Error("Invalid call");b=m.pk}const w=o.getSavedVersion(b,!0),M=w&&(g||w.usedWithPassword),E=i.checkNewPk(b);if(E!==Ir.Busy)if(E!==Ir.SamePkRunning||M){if(E===Ir.MustStop||E===Ir.SamePkRunning&&M){const I=Ut.createConfirmationDialog(s,"vpn.server-change.change-server-while-connected-confirmation");return void I.componentInstance.operationAccepted.subscribe(()=>{I.componentInstance.closeModal(),d?i.changeServerUsingHistory(d,g):f?i.changeServerUsingDiscovery(f,g):m&&i.changeServerManually(m,g),t.redirectAfterServerChange(e,a,l)})}if(E===Ir.SamePkStopped&&!M){const I=Ut.createConfirmationDialog(s,"vpn.server-change.start-same-server-confirmation");return void I.componentInstance.operationAccepted.subscribe(()=>{I.componentInstance.closeModal(),m&&w&&o.processFromManual(m),i.start(),t.redirectAfterServerChange(e,a,l)})}d?i.changeServerUsingHistory(d,g):f?i.changeServerUsingDiscovery(f,g):m&&i.changeServerManually(m,g),t.redirectAfterServerChange(e,a,l)}else r.showWarning("vpn.server-change.already-selected-warning");else r.showError("vpn.server-change.busy-error")}static redirectAfterServerChange(e,i,o){i&&i.close(),e.navigate(["vpn",o,"status"])}static openServerOptions(e,i,o,r,s,a){const l=[],d=[];return e.usedWithPassword?(l.push({icon:"lock_open",label:"vpn.server-options.connect-without-password"}),d.push(201),l.push({icon:"lock_outlined",label:"vpn.server-options.connect-using-another-password"}),d.push(202)):e.enteredManually&&(l.push({icon:"lock_outlined",label:"vpn.server-options.connect-using-password"}),d.push(202)),l.push({icon:"edit",label:"vpn.server-options.edit-name"}),d.push(101),l.push({icon:"subject",label:"vpn.server-options.edit-label"}),d.push(102),(!e||e.flag!==bn.Favorite)&&(l.push({icon:"star",label:"vpn.server-options.make-favorite"}),d.push(1)),e&&e.flag===bn.Favorite&&(l.push({icon:"star_outline",label:"vpn.server-options.remove-from-favorites"}),d.push(-1)),(!e||e.flag!==bn.Blocked)&&(l.push({icon:"pan_tool",label:"vpn.server-options.block"}),d.push(2)),e&&e.flag===bn.Blocked&&(l.push({icon:"thumb_up",label:"vpn.server-options.unblock"}),d.push(-2)),e&&e.inHistory&&(l.push({icon:"delete",label:"vpn.server-options.remove-from-history"}),d.push(-3)),ho.openDialog(a,l,"common.options").afterClosed().pipe(Tt(f=>{if(f){const m=o.getSavedVersion(e.pk,!0);if(e=m||e,d[f-=1]>200){if(201===d[f]){let g=!1;const b=Ut.createConfirmationDialog(a,"vpn.server-options.connect-without-password-confirmation");return b.componentInstance.operationAccepted.subscribe(()=>{g=!0,t.processServerChange(i,r,o,s,a,null,t.currentPk,e,null,null,null),b.componentInstance.closeModal()}),b.afterClosed().pipe(De(()=>g))}return uV.openDialog(a,!1).afterClosed().pipe(De(g=>!(!g||"-"===g||(t.processServerChange(i,r,o,s,a,null,t.currentPk,e,null,null,g.substr(1)),0))))}if(d[f]>100)return d_e.openDialog(a,{editName:101===d[f],server:e}).afterClosed();if(1===d[f])return t.makeFavorite(e,o,s,a);if(-1===d[f])return o.changeFlag(e,bn.None),s.showDone("vpn.server-options.remove-from-favorites-done"),se(!0);if(2===d[f])return t.blockServer(e,o,r,s,a);if(-2===d[f])return o.changeFlag(e,bn.None),s.showDone("vpn.server-options.unblock-done"),se(!0);if(-3===d[f])return t.removeFromHistory(e,o,s,a)}return se(!1)}))}static removeFromHistory(e,i,o,r){let s=!1;const a=Ut.createConfirmationDialog(r,"vpn.server-options.remove-from-history-confirmation");return a.componentInstance.operationAccepted.subscribe(()=>{s=!0,i.removeFromHistory(e.pk),o.showDone("vpn.server-options.remove-from-history-done"),a.componentInstance.closeModal()}),a.afterClosed().pipe(De(()=>s))}static makeFavorite(e,i,o,r){if(e.flag!==bn.Blocked)return i.changeFlag(e,bn.Favorite),o.showDone("vpn.server-options.make-favorite-done"),se(!0);let s=!1;const a=Ut.createConfirmationDialog(r,"vpn.server-options.make-favorite-confirmation");return a.componentInstance.operationAccepted.subscribe(()=>{s=!0,i.changeFlag(e,bn.Favorite),o.showDone("vpn.server-options.make-favorite-done"),a.componentInstance.closeModal()}),a.afterClosed().pipe(De(()=>s))}static blockServer(e,i,o,r,s){if(e.flag!==bn.Favorite&&(!i.currentServer||i.currentServer.pk!==e.pk))return i.changeFlag(e,bn.Blocked),r.showDone("vpn.server-options.block-done"),se(!0);let a=!1;const l=i.currentServer&&i.currentServer.pk===e.pk;let d;d=e.flag!==bn.Favorite?"vpn.server-options.block-selected-confirmation":l?"vpn.server-options.block-selected-favorite-confirmation":"vpn.server-options.block-confirmation";const f=Ut.createConfirmationDialog(s,d);return f.componentInstance.operationAccepted.subscribe(()=>{a=!0,i.changeFlag(e,bn.Blocked),r.showDone("vpn.server-options.block-done"),l&&o.stop(),f.componentInstance.closeModal()}),f.afterClosed().pipe(De(()=>a))}}return t})(),h_e=(()=>{class t{constructor(e){this.clipboardService=e,this.copyEvent=new ke,this.errorEvent=new ke,this.value=""}ngOnDestroy(){this.copyEvent.complete(),this.errorEvent.complete()}copyToClipboard(){this.clipboardService.copy(this.value)?this.copyEvent.emit(this.value):this.errorEvent.emit()}static{this.\u0275fac=function(i){return new(i||t)(O(ap))}}static{this.\u0275dir=de({type:t,selectors:[["","clipboard",""]],hostBindings:function(i,o){1&i&&F("click",function(){return o.copyToClipboard()})},inputs:{value:[0,"clipboard","value"]},outputs:{copyEvent:"copyEvent",errorEvent:"errorEvent"},standalone:!1})}}return t})();const f_e=()=>({"tooltip-word-break":!0});function p_e(t,n){if(1&t&&(h(0,"span",1),p(1),u()),2&t){const e=y();c(),S(e.shortText)}}function m_e(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y();c(),S(e.text)}}let hV=(()=>{class t{constructor(){this.short=!1,this.showTooltip=!0,this.shortTextLength=5}get shortText(){if(this.text.length>2*this.shortTextLength){const e=this.text.length;return`${this.text.slice(0,this.shortTextLength)}...${this.text.slice(e-this.shortTextLength,e)}`}return this.text}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=ae({type:t,selectors:[["app-truncated-text"]],inputs:{short:"short",showTooltip:"showTooltip",text:"text",shortTextLength:"shortTextLength"},standalone:!1,decls:3,vars:5,consts:[[1,"wrapper",3,"matTooltip","matTooltipClass"],[1,"nowrap"]],template:function(i,o){1&i&&(h(0,"div",0),x(1,p_e,2,1,"span",1),x(2,m_e,2,1,"span"),u()),2&i&&(C("matTooltip",o.short&&o.showTooltip?o.text:"")("matTooltipClass",vt(4,f_e)),c(),k(o.short?1:-1),c(),k(o.short?-1:2))},dependencies:[Et],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.nowrap[_ngcontent-%COMP%]{white-space:nowrap}.wrapper[_ngcontent-%COMP%]{display:inline}']})}}return t})();const g_e=t=>({text:t}),__e=()=>({"tooltip-word-break":!0});function b_e(t,n){if(1&t&&(L(0,"app-truncated-text",2),h(1,"mat-icon",3),p(2,"filter_none"),u()),2&t){const e=y();C("short",e.short)("showTooltip",!1)("shortTextLength",e.shortTextLength)("text",e.text),c(),C("inline",!0)}}function v_e(t,n){if(1&t&&(h(0,"div",1)(1,"div",4),p(2),u(),h(3,"mat-icon",3),p(4,"filter_none"),u()()),2&t){const e=y();c(2),S(e.text),c(),C("inline",!0)}}let cp=(()=>{class t{constructor(e){this.snackbarService=e,this.short=!1,this.shortSimple=!1,this.shortTextLength=5}onCopyToClipboardClicked(){this.snackbarService.showDone("copy.copied")}static{this.\u0275fac=function(i){return new(i||t)(O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-copy-to-clipboard-text"]],inputs:{text:"text",short:"short",shortSimple:"shortSimple",shortTextLength:"shortTextLength"},standalone:!1,decls:4,vars:11,consts:[[1,"wrapper","highlight-internal-icon",3,"copyEvent","clipboard","matTooltip","matTooltipClass"],[1,"d-flex"],[1,"text-margin",3,"short","showTooltip","shortTextLength","text"],[3,"inline"],[1,"single-line","text-margin"]],template:function(i,o){1&i&&(h(0,"div",0),_(1,"translate"),F("copyEvent",function(){return o.onCopyToClipboardClicked()}),x(2,b_e,3,5),x(3,v_e,5,2,"div",1),u()),2&i&&(C("clipboard",o.text)("matTooltip",ue(1,5,o.short||o.shortSimple?"copy.tooltip-with-text":"copy.tooltip",ie(8,g_e,o.text)))("matTooltipClass",vt(10,__e)),c(2),k(o.shortSimple?-1:2),c(),k(o.shortSimple?3:-1))},dependencies:[Ae,Et,h_e,hV,we],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.wrapper[_ngcontent-%COMP%]{display:inline}.wrapper[_ngcontent-%COMP%] .text-margin[_ngcontent-%COMP%]{margin-right:5px}.wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:.6rem;-webkit-user-select:none;user-select:none;flex-shrink:0;display:inline!important}']})}}return t})();var xc=function(t){return t[t.Seconds=0]="Seconds",t[t.Minutes=1]="Minutes",t[t.Hours=2]="Hours",t[t.Days=3]="Days",t[t.Weeks=4]="Weeks",t}(xc||{});class y_e{}class wv{static getElapsedTime(n){const e=new y_e;e.timeRepresentation=xc.Seconds,e.totalMinutes=Math.floor(n/60).toString(),e.translationVarName="second";let i=1;n>=60&&n<3600?(e.timeRepresentation=xc.Minutes,i=60,e.translationVarName="minute"):n>=3600&&n<86400?(e.timeRepresentation=xc.Hours,i=3600,e.translationVarName="hour"):n>=86400&&n<604800?(e.timeRepresentation=xc.Days,i=86400,e.translationVarName="day"):n>=604800&&(e.timeRepresentation=xc.Weeks,i=604800,e.translationVarName="week");const o=Math.floor(n/i);return e.elapsedTime=o.toString(),(e.timeRepresentation===xc.Seconds||o>1)&&(e.translationVarName=e.translationVarName+"s"),e}}const C_e=t=>({"grey-button-background":t}),fV=t=>({time:t});function w_e(t,n){1&t&&L(0,"mat-spinner",2),2&t&&C("diameter",14)}function x_e(t,n){1&t&&L(0,"mat-spinner",3),2&t&&C("diameter",18)}function k_e(t,n){1&t&&(h(0,"mat-icon",5),p(1,"refresh"),u()),2&t&&C("inline",!0)}function S_e(t,n){1&t&&(h(0,"mat-icon",6),p(1,"warning"),u()),2&t&&C("inline",!0)}function M_e(t,n){if(1&t&&(x(0,k_e,2,1,"mat-icon",5),x(1,S_e,2,1,"mat-icon",6)),2&t){const e=y();k(e.showAlert?-1:0),c(),k(e.showAlert?1:-1)}}function D_e(t,n){if(1&t&&(h(0,"span",4),p(1),_(2,"translate"),u()),2&t){const e=y();c(),S(ue(2,1,"refresh-button."+e.elapsedTime.translationVarName,ie(4,fV,e.elapsedTime.elapsedTime)))}}let T_e=(()=>{class t{constructor(){this.refeshRate=-1}set secondsSinceLastUpdate(e){this.elapsedTime=wv.getElapsedTime(e)}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=ae({type:t,selectors:[["app-refresh-button"]],inputs:{secondsSinceLastUpdate:"secondsSinceLastUpdate",showLoading:"showLoading",showAlert:"showAlert",refeshRate:"refeshRate"},standalone:!1,decls:7,vars:14,consts:[["mat-button","",1,"time-button","subtle-transparent-button","white-theme",3,"disabled","ngClass","matTooltip"],[1,"internal-container"],[1,"icon","d-none","d-md-inline-block",3,"diameter"],[1,"icon","d-md-none",3,"diameter"],[1,"d-none","d-md-inline"],[1,"icon",3,"inline"],[1,"icon","alert",3,"inline"]],template:function(i,o){1&i&&(h(0,"button",0),_(1,"translate"),h(2,"div",1),x(3,w_e,1,1,"mat-spinner",2),x(4,x_e,1,1,"mat-spinner",3),x(5,M_e,2,2),x(6,D_e,3,6,"span",4),u()()),2&i&&(C("disabled",o.showLoading)("ngClass",ie(10,C_e,!o.showLoading))("matTooltip",o.showAlert?ue(1,7,"refresh-button.error-tooltip",ie(12,fV,o.refeshRate)):""),c(3),k(o.showLoading?3:-1),c(),k(o.showLoading?4:-1),c(),k(o.showLoading?-1:5),c(),k(o.elapsedTime?6:-1))},dependencies:[Ft,Ht,Ae,Et,ci,we],styles:[".time-button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px;height:40px}.time-button[disabled][_ngcontent-%COMP%]{opacity:.7!important;color:#f8f9f9}.time-button[disabled][_ngcontent-%COMP%] span[_ngcontent-%COMP%]{opacity:.7}.time-button[_ngcontent-%COMP%] .internal-container[_ngcontent-%COMP%]{display:flex;align-items:center}.time-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:16px;margin-right:5px;opacity:.5;display:inline-block}@media(max-width:767px){.time-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:22px;margin-right:0;opacity:.75}}.time-button[_ngcontent-%COMP%] .alert[_ngcontent-%COMP%]{color:orange;opacity:1}.time-button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:.6rem}"]})}}return t})(),dp=(()=>{class t{static{this.accumulatedMeasurements=["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}static{this.measurementsPerSec=["B/s","KB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"]}static{this.accumulatedMeasurementsInBits=["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"]}static{this.measurementsPerSecInBits=["b/s","Kb/s","Mb/s","Gb/s","Tb/s","Pb/s","Eb/s","Zb/s","Yb/s"]}transform(e,i){let r,o=!0;i?i.showPerSecond?i.useBits?(r=t.measurementsPerSecInBits,o=!1):r=t.measurementsPerSec:i.useBits?(r=t.accumulatedMeasurementsInBits,o=!1):r=t.accumulatedMeasurements:r=t.accumulatedMeasurements;let s=new xS(e);o||(s=s.multipliedBy(8));let a=r[0],l=0;for(;s.dividedBy(1024).isGreaterThan(1);)s=s.dividedBy(1024),l+=1,a=r[l];let d="";return(!i||i.showValue)&&(d=i&&i.limitDecimals?new xS(s).decimalPlaces(1).toString():s.toFixed(2)),(!i||i.showValue&&i.showUnit)&&(d+=" "),(!i||i.showUnit)&&(d+=a),d}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275pipe=Gi({name:"autoScale",type:t,pure:!0,standalone:!1})}}return t})();const pV=(t,n)=>({"d-lg-none":t,"d-none":n}),E_e=t=>({"normal-height":t}),P_e=(t,n)=>({"d-none d-lg-flex":t,"d-flex":n}),I_e=t=>({transparent:t}),O_e=(t,n)=>({"d-lg-none":t,"d-none d-md-inline-block":n}),IS=(t,n)=>({"mouse-disabled":t,"grey-button-background":n}),A_e=t=>({"d-none":t}),R_e=(t,n)=>({"animation-container":t,"d-none":n}),F_e=t=>({time:t}),mV=t=>({showValue:!0,showUnit:!0,showPerSecond:!0,useBits:t});function N_e(t,n){if(1&t){const e=re();h(0,"button",21),F("click",function(){return V(e),H(y().requestAction(null))}),h(1,"mat-icon"),p(2,"chevron_left"),u()()}}function L_e(t,n){if(1&t&&(h(0,"span",5),p(1),u()),2&t){const e=y();c(),S(e.pageHeaderLabel)}}function B_e(t,n){if(1&t&&(p(0),_(1,"translate")),2&t){const e=y();D(" ",v(1,1,e.titleParts[e.titleParts.length-1])," ")}}function V_e(t,n){1&t&&L(0,"img",6)}function H_e(t,n){if(1&t){const e=re();h(0,"div",23),F("click",function(){const o=V(e).$implicit;return H(y(2).requestAction(o.actionName))}),h(1,"mat-icon",24),p(2),u(),p(3),_(4,"translate"),u()}if(2&t){const e=n.$implicit;C("disabled",e.disabled),c(),C("ngClass",ie(6,I_e,e.disabled)),c(),S(e.icon),c(),D(" ",v(4,4,e.name)," ")}}function U_e(t,n){1&t&&L(0,"div",10)}function z_e(t,n){if(1&t&&(me(0,H_e,5,8,"div",22,Le),x(2,U_e,1,0,"div",10)),2&t){const e=y();ge(e.optionsData),c(2),k(e.returnText?2:-1)}}function j_e(t,n){1&t&&L(0,"div",10)}function $_e(t,n){1&t&&L(0,"img",26),2&t&&C("src","assets/img/lang/"+y(2).language.iconName,$i)}function W_e(t,n){if(1&t){const e=re();h(0,"div",25),F("click",function(){return V(e),H(y().openLanguageWindow())}),x(1,$_e,1,1,"img",26),p(2),_(3,"translate"),u()}if(2&t){const e=y();c(),k(e.language?1:-1),c(),D(" ",v(3,2,e.language?e.language.name:"")," ")}}function G_e(t,n){if(1&t){const e=re();h(0,"div",15)(1,"a",27),_(2,"translate"),F("click",function(){return V(e),H(y().requestAction(null))}),h(3,"mat-icon",28),p(4,"chevron_left"),u()()()}if(2&t){const e=y();c(),C("matTooltip",v(2,2,e.returnText)),c(2),C("inline",!0)}}function q_e(t,n){if(1&t&&(h(0,"span",31),p(1),u()),2&t){const e=y(3);c(),S(e.pageHeaderLabel)}}function K_e(t,n){1&t&&L(0,"app-copy-to-clipboard-text",32),2&t&&C("text",on(y(3).pageHeaderIdentifier))("short",!1)}function Y_e(t,n){if(1&t&&(h(0,"span",29),x(1,q_e,2,1,"span",31),x(2,K_e,1,3,"app-copy-to-clipboard-text",32),u()),2&t){const e=y(2);c(),k(e.pageHeaderLabel?1:-1),c(),k(e.pageHeaderIdentifier?2:-1)}}function X_e(t,n){if(1&t&&(h(0,"span",30),p(1),_(2,"translate"),u()),2&t){const e=y(2);c(),D(" ",v(2,1,e.titleParts[e.titleParts.length-1])," ")}}function Z_e(t,n){if(1&t&&x(0,Y_e,3,2,"span",29)(1,X_e,3,3,"span",30),2&t){const e=y();k(e.pageHeaderLabel||e.pageHeaderIdentifier?0:1)}}function Q_e(t,n){1&t&&L(0,"img",16)}function J_e(t,n){1&t&&L(0,"span",33)}function ebe(t,n){if(1&t&&(h(0,"a",34)(1,"mat-icon",28),p(2),u(),h(3,"span"),p(4),_(5,"translate"),u()()),2&t){const e=y().$implicit,i=y();C("href",e.externalUrl,$i)("ngClass",pt(7,IS,i.disableMouse,!i.disableMouse)),c(),C("inline",!0),c(),S(e.icon),c(2),S(v(5,5,e.label))}}function tbe(t,n){if(1&t&&(h(0,"a",35)(1,"mat-icon",28),p(2),u(),h(3,"span"),p(4),_(5,"translate"),u()()),2&t){const e=y(),i=e.$implicit,o=e.$index,r=y();C("disabled",o===r.selectedTabIndex)("routerLink",i.linkParts)("ngClass",pt(8,IS,r.disableMouse,!r.disableMouse&&o!==r.selectedTabIndex)),c(),C("inline",!0),c(),S(i.icon),c(2),S(v(5,6,i.label))}}function nbe(t,n){if(1&t&&(x(0,J_e,1,0,"span",33),h(1,"div",24),x(2,ebe,6,10,"a",34),x(3,tbe,6,11,"a",35),u()),2&t){const e=n.$implicit,i=n.$index,o=y();k(i>0&&o.tabsData[i-1].group!==e.group?0:-1),c(),C("ngClass",pt(4,O_e,e.onlyIfLessThanLg,1!==o.tabsData.length)),c(),k(e.externalUrl?2:-1),c(),k(e.externalUrl?-1:3)}}function ibe(t,n){if(1&t){const e=re();h(0,"div",18)(1,"button",36),F("click",function(){return V(e),H(y().openTabSelector())}),h(2,"div",37)(3,"mat-icon",28),p(4),u(),h(5,"span"),p(6),_(7,"translate"),u(),h(8,"mat-icon",28),p(9,"keyboard_arrow_down"),u()()()()}if(2&t){const e=y();C("ngClass",ie(8,A_e,1===e.tabsData.length)),c(),C("ngClass",pt(10,IS,e.disableMouse,!e.disableMouse)),c(2),C("inline",!0),c(),S(e.tabsData[e.selectedTabIndex].icon),c(2),S(v(7,6,e.tabsData[e.selectedTabIndex].label)),c(2),C("inline",!0)}}function obe(t,n){if(1&t){const e=re();h(0,"app-refresh-button",41),F("click",function(){return V(e),H(y(2).sendRefreshEvent())}),u()}if(2&t){const e=y(2);C("secondsSinceLastUpdate",e.secondsSinceLastUpdate)("showLoading",e.showLoading)("showAlert",e.showAlert)("refeshRate",e.refeshRate)}}function rbe(t,n){if(1&t&&(h(0,"div",19),x(1,obe,1,4,"app-refresh-button",38),h(2,"button",39)(3,"div",40)(4,"mat-icon",28),p(5,"menu"),u()()()()),2&t){const e=y(),i=Un(13);c(),k(e.showUpdateButton?1:-1),c(),C("matMenuTriggerFor",i),c(2),C("inline",!0)}}function sbe(t,n){if(1&t){const e=re();h(0,"div",43)(1,"div",49),F("click",function(){return V(e),H(y(2).openLanguageWindow())}),L(2,"img",50),p(3),_(4,"translate"),u()()}if(2&t){const e=y(2);c(2),C("src","assets/img/lang/"+e.language.iconName,$i),c(),D(" ",v(4,2,e.language?e.language.name:"")," ")}}function abe(t,n){1&t&&(h(0,"div",45),_(1,"translate"),h(2,"mat-icon",28),p(3,"warning"),u(),p(4),_(5,"translate"),u()),2&t&&(C("matTooltip",v(1,3,"vpn.connection-error.info")),c(2),C("inline",!0),c(2),D(" ",v(5,5,"vpn.connection-error.text")," "))}function lbe(t,n){1&t&&(h(0,"div",55)(1,"mat-icon",54),p(2,"brightness_1"),u()()),2&t&&(c(),C("inline",!0))}function cbe(t,n){if(1&t&&(h(0,"table",47)(1,"tr")(2,"td",51),_(3,"translate"),h(4,"div",24)(5,"div",52)(6,"div",53)(7,"mat-icon",54),p(8,"brightness_1"),u(),p(9),_(10,"translate"),u()()(),x(11,lbe,3,1,"div",55),h(12,"mat-icon",54),p(13,"brightness_1"),u(),p(14),_(15,"translate"),u(),h(16,"td",51),_(17,"translate"),h(18,"mat-icon",28),p(19,"swap_horiz"),u(),p(20),_(21,"translate"),u()(),h(22,"tr")(23,"td",51),_(24,"translate"),h(25,"mat-icon",28),p(26,"arrow_upward"),u(),p(27),_(28,"autoScale"),u(),h(29,"td",51),_(30,"translate"),h(31,"mat-icon",28),p(32,"arrow_downward"),u(),p(33),_(34,"autoScale"),u()()()),2&t){const e=y(2);c(2),Ge(e.vpnData.stateClass+" state-td"),C("matTooltip",v(3,18,e.vpnData.state+"-info")),c(2),C("ngClass",pt(39,R_e,e.showVpnStateAnimation,!e.showVpnStateAnimation)),c(3),C("inline",!0),c(2),D(" ",v(10,20,e.vpnData.state)," "),c(2),k(e.showVpnStateAnimatedDot?11:-1),c(),C("inline",!0),c(2),D(" ",v(15,22,e.vpnData.state)," "),c(2),C("matTooltip",v(17,24,"vpn.connection-info.latency-info")),c(2),C("inline",!0),c(2),D(" ",ue(21,26,"common."+e.getLatencyValueString(e.vpnData.latency),ie(42,F_e,e.getPrintableLatency(e.vpnData.latency)))," "),c(3),C("matTooltip",v(24,29,"vpn.connection-info.upload-info")),c(2),C("inline",!0),c(2),D(" ",ue(28,31,e.vpnData.uploadSpeed,ie(44,mV,e.showVpnDataStatsInBits))," "),c(2),C("matTooltip",v(30,34,"vpn.connection-info.download-info")),c(2),C("inline",!0),c(2),D(" ",ue(34,36,e.vpnData.downloadSpeed,ie(46,mV,e.showVpnDataStatsInBits))," ")}}function dbe(t,n){1&t&&L(0,"mat-spinner",48),2&t&&C("diameter",20)}function ube(t,n){if(1&t&&(h(0,"div")(1,"div",42),x(2,sbe,5,4,"div",43),L(3,"div",44),x(4,abe,6,7,"div",45),u(),h(5,"div",46),x(6,cbe,35,48,"table",47),x(7,dbe,1,1,"mat-spinner",48),u()()),2&t){const e=y();c(2),k(!e.hideLanguageButton&&e.language?2:-1),c(2),k(e.errorsConnectingToVpn?4:-1),c(2),k(e.vpnData?6:-1),c(),k(e.vpnData?-1:7)}}function hbe(t,n){1&t&&(h(0,"div",20)(1,"div",56)(2,"mat-icon",28),p(3,"error_outline"),u(),p(4),_(5,"translate"),u(),h(6,"div",57),p(7),_(8,"translate"),u()()),2&t&&(c(2),C("inline",!0),c(2),D(" ",v(5,3,"vpn.remote-access-title")," "),c(3),D(" ",v(8,5,"vpn.remote-access-text")," "))}let tr=(()=>{class t{set localVpnKey(e){this.localVpnKeyInternal=e,e?this.startGettingVpnInfo():this.stopGettingVpnInfo()}constructor(e,i,o,r,s){this.languageService=e,this.dialog=i,this.router=o,this.vpnClientService=r,this.vpnSavedDataService=s,this.disableMouse=!1,this.selectedTabIndex=0,this.refeshRate=-1,this.showUpdateButton=!0,this.localVpnKeyInternal="",this.refreshRequested=new ke,this.optionSelected=new ke,this.hideLanguageButton=!0,this.showVpnInfo=!1,this.initialVpnStateObtained=!1,this.lastVpnState="",this.showVpnStateAnimation=!1,this.showVpnStateAnimatedDot=!0,this.showVpnDataStatsInBits=!0,this.remoteAccess=!1,this.errorsConnectingToVpn=!1,this.langSubscriptionsGroup=[]}ngOnInit(){this.langSubscriptionsGroup.push(this.languageService.currentLanguage.subscribe(i=>{this.language=i})),this.langSubscriptionsGroup.push(this.languageService.languages.subscribe(i=>{this.hideLanguageButton=!(i.length>1)}));const e=window.location.hostname;!e.toLowerCase().includes("localhost")&&!e.toLowerCase().includes("127.0.0.1")&&(this.remoteAccess=!0)}ngOnDestroy(){this.langSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.refreshRequested.complete(),this.optionSelected.complete(),this.stopGettingVpnInfo()}startGettingVpnInfo(){this.showVpnInfo=!0,this.vpnClientService.initialize(this.localVpnKeyInternal),this.updateVpnDataStatsUnit(),this.vpnDataSubscription=this.vpnClientService.backendState.subscribe(e=>{e&&(this.vpnData={state:"",stateClass:"",latency:e.vpnClientAppData.connectionData?e.vpnClientAppData.connectionData.latency:0,downloadSpeed:e.vpnClientAppData.connectionData?e.vpnClientAppData.connectionData.downloadSpeed:0,uploadSpeed:e.vpnClientAppData.connectionData?e.vpnClientAppData.connectionData.uploadSpeed:0},e.vpnClientAppData.appState===un.Stopped?(this.vpnData.state="vpn.connection-info.state-disconnected",this.vpnData.stateClass="red-clear-text"):e.vpnClientAppData.appState===un.Connecting?(this.vpnData.state="vpn.connection-info.state-connecting",this.vpnData.stateClass="yellow-clear-text"):e.vpnClientAppData.appState===un.Running?(this.vpnData.state="vpn.connection-info.state-connected",this.vpnData.stateClass="green-clear-text"):e.vpnClientAppData.appState===un.ShuttingDown?(this.vpnData.state="vpn.connection-info.state-disconnecting",this.vpnData.stateClass="yellow-clear-text"):e.vpnClientAppData.appState===un.Reconnecting&&(this.vpnData.state="vpn.connection-info.state-reconnecting",this.vpnData.stateClass="yellow-clear-text"),this.initialVpnStateObtained?this.lastVpnState!==this.vpnData.state&&(this.lastVpnState=this.vpnData.state,this.showVpnStateAnimation=!1,this.showVpnStateChangeAnimationSubscription&&this.showVpnStateChangeAnimationSubscription.unsubscribe(),this.showVpnStateChangeAnimationSubscription=se(0).pipe(oi(1)).subscribe(()=>this.showVpnStateAnimation=!0)):(this.initialVpnStateObtained=!0,this.lastVpnState=this.vpnData.state),this.showVpnStateAnimatedDot=!1,this.showVpnStateAnimatedDotSubscription&&this.showVpnStateAnimatedDotSubscription.unsubscribe(),this.showVpnStateAnimatedDotSubscription=se(0).pipe(oi(1)).subscribe(()=>this.showVpnStateAnimatedDot=!0))}),this.errorsConnectingToVpnSubscription=this.vpnClientService.errorsConnecting.subscribe(e=>{this.errorsConnectingToVpn=e})}stopGettingVpnInfo(){this.showVpnInfo=!1,this.vpnDataSubscription&&this.vpnDataSubscription.unsubscribe(),this.errorsConnectingToVpnSubscription&&this.errorsConnectingToVpnSubscription.unsubscribe()}getLatencyValueString(e){return pi.getLatencyValueString(e)}getPrintableLatency(e){return pi.getPrintableLatency(e)}requestAction(e){this.optionSelected.emit(e)}openLanguageWindow(){eV.openDialog(this.dialog)}sendRefreshEvent(){this.refreshRequested.emit()}openTabSelector(){const e=[];this.tabsData.forEach(i=>{e.push({label:i.label,icon:i.icon})}),ho.openDialog(this.dialog,e,"tabs-window.title").afterClosed().subscribe(i=>{i&&(i-=1)!==this.selectedTabIndex&&this.router.navigate(this.tabsData[i].linkParts)})}updateVpnDataStatsUnit(){const e=this.vpnSavedDataService.getDataUnitsSetting();this.showVpnDataStatsInBits=e===er.BitsSpeedAndBytesVolume||e===er.OnlyBits}static{this.\u0275fac=function(i){return new(i||t)(O(Xb),O(Nt),O(yt),O(wc),O(Cc))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-top-bar"]],inputs:{disableMouse:"disableMouse",titleParts:"titleParts",pageHeaderLabel:"pageHeaderLabel",pageHeaderIdentifier:"pageHeaderIdentifier",tabsData:"tabsData",selectedTabIndex:"selectedTabIndex",optionsData:"optionsData",returnText:"returnText",secondsSinceLastUpdate:"secondsSinceLastUpdate",showLoading:"showLoading",showAlert:"showAlert",refeshRate:"refeshRate",showUpdateButton:"showUpdateButton",localVpnKey:"localVpnKey"},outputs:{refreshRequested:"refreshRequested",optionSelected:"optionSelected"},standalone:!1,decls:30,vars:29,consts:[["menu","matMenu"],[1,"top-bar",3,"ngClass"],[1,"button-container"],["mat-icon-button","",1,"transparent-button"],[1,"logo-container"],[1,"page-header-label-mobile"],["src","/assets/img/logo-s.png"],["mat-icon-button","",1,"transparent-button",3,"matMenuTriggerFor"],[1,"top-bar-margin",3,"ngClass"],[3,"overlapTrigger"],[1,"menu-separator"],["mat-menu-item",""],[1,"main-container",3,"ngClass"],[1,"main-area"],[1,"title",3,"ngClass"],[1,"return-container"],["src","./assets/img/logo-vpn.png",1,"title-image"],[1,"lower-container"],[1,"d-md-none",3,"ngClass"],[1,"right-container"],[1,"remote-vpn-alert-container"],["mat-icon-button","",1,"transparent-button",3,"click"],["mat-menu-item","",3,"disabled"],["mat-menu-item","",3,"click","disabled"],[3,"ngClass"],["mat-menu-item","",3,"click"],[1,"flag",3,"src"],[1,"return-button","transparent-button",3,"click","matTooltip"],[3,"inline"],[1,"page-header"],[1,"title-text"],[1,"page-header-label"],[1,"page-header-id",3,"text","short"],["aria-hidden","true",1,"tab-group-separator","d-none","d-md-inline-block"],["mat-button","","target","_blank","rel","noreferrer nofollow noopener",1,"tab-button","white-theme",3,"href","ngClass"],["mat-button","",1,"tab-button","white-theme",3,"disabled","routerLink","ngClass"],["mat-button","",1,"tab-button","select-tab-button","white-theme",3,"click","ngClass"],[1,"d-flex"],[3,"secondsSinceLastUpdate","showLoading","showAlert","refeshRate"],["mat-button","",1,"menu-button","subtle-transparent-button","d-none","d-lg-block",3,"matMenuTriggerFor"],[1,"icon-container"],[3,"click","secondsSinceLastUpdate","showLoading","showAlert","refeshRate"],[1,"top-text-vpn-container"],[1,"languaje-button-vpn"],[1,"elements-separator"],[1,"connection-error-msg-vpn","blinking",3,"matTooltip"],[1,"vpn-info","vpn-dark-box-radius"],["cellspacing","0","cellpadding","0"],[3,"diameter"],[1,"text-container",3,"click"],[1,"language-flag",3,"src"],[3,"matTooltip"],[1,"internal-animation-container"],[1,"animation-area"],[1,"state-icon",3,"inline"],[1,"aminated-state-icon-container"],[1,"top-line"],[1,"bottom-line"]],template:function(i,o){if(1&i&&(h(0,"div",1)(1,"div",2),x(2,N_e,3,0,"button",3),u(),h(3,"div",4),x(4,L_e,2,1,"span",5)(5,B_e,2,3)(6,V_e,1,0,"img",6),u(),h(7,"div",2)(8,"button",7)(9,"mat-icon"),p(10,"menu"),u()()()(),L(11,"div",8),h(12,"mat-menu",9,0),x(14,z_e,3,1),x(15,j_e,1,0,"div",10),x(16,W_e,4,4,"div",11),u(),h(17,"div",12)(18,"div",13)(19,"div",14),x(20,G_e,5,4,"div",15),x(21,Z_e,2,1),x(22,Q_e,1,0,"img",16),u(),h(23,"div",17),me(24,nbe,4,7,null,null,Le),x(26,ibe,10,13,"div",18),x(27,rbe,6,3,"div",19),u()(),x(28,ube,8,4,"div"),u(),x(29,hbe,9,7,"div",20)),2&i){const r=Un(13);C("ngClass",pt(18,pV,!o.showVpnInfo,o.showVpnInfo)),c(2),k(o.returnText?2:-1),c(2),k(o.pageHeaderLabel?4:o.titleParts&&o.titleParts.length>=2?5:6),c(4),C("matMenuTriggerFor",r),c(3),C("ngClass",pt(21,pV,!o.showVpnInfo,o.showVpnInfo)),c(),C("overlapTrigger",!1),c(2),k(o.optionsData&&o.optionsData.length>=1?14:-1),c(),k(!o.hideLanguageButton&&o.optionsData&&o.optionsData.length>=1?15:-1),c(),k(o.hideLanguageButton?-1:16),c(),C("ngClass",ie(24,E_e,!o.showVpnInfo)),c(2),C("ngClass",pt(26,P_e,!o.showVpnInfo,o.showVpnInfo)),c(),k(o.returnText?20:-1),c(),k(o.showVpnInfo?-1:21),c(),k(o.showVpnInfo?22:-1),c(2),ge(o.tabsData),c(2),k(o.tabsData&&o.tabsData[o.selectedTabIndex]?26:-1),c(),k(o.showVpnInfo?-1:27),c(),k(o.showVpnInfo?28:-1),c(),k(o.showVpnInfo&&o.remoteAccess?29:-1)}},dependencies:[Ft,es,Ht,Yo,Ae,Et,os,Vs,Su,ci,cp,T_e,we,dp],styles:["@media(max-width:991px){.normal-height[_ngcontent-%COMP%]{height:55px!important}}.main-container[_ngcontent-%COMP%]{border-bottom:1px solid rgba(255,255,255,.15);padding-bottom:10px;margin-bottom:-5px;height:100px;display:flex}.main-container[_ngcontent-%COMP%] .main-area[_ngcontent-%COMP%]{flex-grow:1}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:.875rem;margin-bottom:15px;margin-left:5px;flex-direction:row;align-items:center}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .title-text[_ngcontent-%COMP%]{z-index:1}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .title-image[_ngcontent-%COMP%]{width:124px;height:21px}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .return-container[_ngcontent-%COMP%]{width:30px;position:relative;top:2px}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .return-container[_ngcontent-%COMP%] .return-button[_ngcontent-%COMP%]{line-height:1;font-size:25px;position:relative;top:2px;width:100%;margin-right:4px;cursor:pointer}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;align-items:center;gap:2px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-group-separator[_ngcontent-%COMP%]{width:1px;height:20px;background:#fff3;margin:0 8px;align-self:center}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{flex:0 0 auto;min-width:0}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px;opacity:.5;margin-right:0;text-decoration:none;height:40px;display:flex;align-items:center}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%]:hover{opacity:.75}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[disabled][_ngcontent-%COMP%]{opacity:1!important;color:#f8f9f9;background:#000000b3!important}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{margin-right:2px;opacity:.75;font-size:18px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:1rem;margin:0 4px;position:relative;top:-1px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .select-tab-button[_ngcontent-%COMP%]{opacity:.75!important}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .select-tab-button[_ngcontent-%COMP%]:hover{opacity:1!important}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%]{display:flex;align-items:center;margin-left:auto}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] app-refresh-button[_ngcontent-%COMP%]{align-self:flex-end}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%]{height:32px;width:32px;min-width:0px!important;background-color:#f8f9f9;border-radius:100%;padding:0!important;line-height:normal;color:#929292;font-size:20px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%] .icon-container[_ngcontent-%COMP%]{display:flex;place-content:center}.menu-separator[_ngcontent-%COMP%]{width:100%;height:1px;background-color:#0000001f}.flag[_ngcontent-%COMP%]{width:24px;margin-right:16px}.transparent[_ngcontent-%COMP%]{opacity:.5}.top-bar[_ngcontent-%COMP%]{position:fixed;z-index:10;width:100%;height:56px;background-color:#f8f9f9;top:0;left:0;right:0;color:#202226;display:flex}.top-bar[_ngcontent-%COMP%] .logo-container[_ngcontent-%COMP%]{flex-grow:1;display:flex;justify-content:center;align-items:center}.top-bar[_ngcontent-%COMP%] .logo-container[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{height:28px}.top-bar[_ngcontent-%COMP%] .button-container[_ngcontent-%COMP%]{flex-shrink:0;width:56px}.top-bar[_ngcontent-%COMP%] .button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:56px;height:56px}.top-bar-margin[_ngcontent-%COMP%]{margin-top:56px;flex-shrink:0}.vpn-info[_ngcontent-%COMP%]{font-size:.7rem;background:#000000b3;padding:15px 20px;align-self:center}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] .state-td[_ngcontent-%COMP%]{font-weight:700}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:2px 0;min-width:90px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:3px;font-size:12px;position:relative;top:1px;-webkit-user-select:none;user-select:none;width:auto;line-height:1}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .state-icon[_ngcontent-%COMP%]{transform:scale(.75)}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .aminated-state-icon-container[_ngcontent-%COMP%]{width:0px;height:0px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .aminated-state-icon-container[_ngcontent-%COMP%] .state-icon[_ngcontent-%COMP%]{height:auto;animation:_ngcontent-%COMP%_state-icon-animation 1s linear 1}@keyframes _ngcontent-%COMP%_state-icon-animation{0%{transform:perspective(1px) scale(1);opacity:.8}to{transform:scale(2);opacity:0}}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .animation-container[_ngcontent-%COMP%]{width:0px;height:0px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .animation-container[_ngcontent-%COMP%] .internal-animation-container[_ngcontent-%COMP%]{width:200px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .animation-container[_ngcontent-%COMP%] .internal-animation-container[_ngcontent-%COMP%] .animation-area[_ngcontent-%COMP%]{display:inline-block;animation:_ngcontent-%COMP%_state-animation 1s linear 1;opacity:0}@keyframes _ngcontent-%COMP%_state-animation{0%{transform:scale(1);opacity:1}to{transform:scale(2.5);opacity:0}}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-of-type{padding-right:30px}.vpn-info[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.top-text-vpn-container[_ngcontent-%COMP%]{display:flex;flex-direction:row-reverse;font-size:.6rem}.top-text-vpn-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:3px}.top-text-vpn-container[_ngcontent-%COMP%] .connection-error-msg-vpn[_ngcontent-%COMP%]{margin:-5px 5px 5px 10px;color:orange}.top-text-vpn-container[_ngcontent-%COMP%] .elements-separator[_ngcontent-%COMP%]{flex-grow:1}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%]{margin:-5px 10px 5px 0}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{cursor:pointer;display:inline;opacity:.8}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]:hover{opacity:1}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .language-flag[_ngcontent-%COMP%]{width:11px;height:11px;margin-right:2px}.remote-vpn-alert-container[_ngcontent-%COMP%]{background-color:#da3439;margin:0 -21px;padding:10px 20px 15px;text-align:center}.remote-vpn-alert-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:14px}.remote-vpn-alert-container[_ngcontent-%COMP%] .top-line[_ngcontent-%COMP%]{font-size:1.25rem}.remote-vpn-alert-container[_ngcontent-%COMP%] .bottom-line[_ngcontent-%COMP%]{font-size:.8rem}.page-header[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;line-height:1.1;gap:2px;min-width:0}.page-header-label[_ngcontent-%COMP%]{font-size:18px;font-weight:500;letter-spacing:.2px}.page-header-id[_ngcontent-%COMP%]{display:inline-block;font-size:12px;opacity:.65;font-family:monospace;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-header-label-mobile[_ngcontent-%COMP%]{font-weight:500;font-size:14px}"]})}}return t})();const gV=()=>["start.title"],fbe=t=>({"paginator-icons-fixer":t}),_V=()=>["/nodes","rewards"],bV=()=>["/nodes","list"],pbe=()=>({"click-effect":!0}),mbe=t=>["/nodes",t,"rewards"],gbe=(t,n)=>({"click-effect":t,"non-selectable":n}),vV=t=>["/nodes",t],_be=t=>({"selectable click-effect":t}),bbe=(t,n)=>n.type;function vbe(t,n){if(1&t&&(h(0,"div",1)(1,"div"),L(2,"app-top-bar",3),u(),L(3,"app-loading-indicator",4),u()),2&t){const e=y();c(2),C("titleParts",vt(4,gV))("tabsData",e.tabsData)("selectedTabIndex",e.showRewardsInfo?1:0)("showUpdateButton",!1)}}function ybe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().$implicit.translatableValue)," ")}function Cbe(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.value," ")}function wbe(t,n){if(1&t&&(h(0,"div",19)(1,"span"),p(2),_(3,"translate"),u(),x(4,ybe,2,3),x(5,Cbe,1,1),u()),2&t){const e=n.$implicit;c(2),D("",v(3,3,e.filterName),": "),c(2),k(e.translatableValue?4:-1),c(),k(e.value?5:-1)}}function xbe(t,n){if(1&t){const e=re();h(0,"div",18),F("click",function(){return V(e),H(y(2).dataFilterer.removeFilters())}),me(1,wbe,6,5,"div",19,Le),h(3,"div",20),p(4),_(5,"translate"),u()()}if(2&t){const e=y(2);c(),ge(e.dataFilterer.currentFiltersTexts),c(3),S(v(5,1,"filters.press-to-remove"))}}function kbe(t,n){if(1&t){const e=re();h(0,"mat-icon",21),_(1,"translate"),F("click",function(){return V(e),H(y(2).dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",v(1,2,"filters.filter-action"))}function Sbe(t,n){1&t&&(h(0,"mat-icon",13),p(1,"more_horiz"),u()),2&t&&(y(),C("matMenuTriggerFor",Un(12)))}function Mbe(t,n){if(1&t&&L(0,"app-paginator",16),2&t){const e=y(2);C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",e.showRewardsInfo?vt(4,_V):vt(5,bV))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function Dbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Tbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Ebe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Pbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Ibe(t,n){if(1&t&&(h(0,"th",33),p(1),u()),2&t){const e=n.$implicit;c(),D(" ",e," ")}}function Obe(t,n){1&t&&(me(0,Ibe,2,1,"th",33,Le),h(2,"th",34),p(3),_(4,"translate"),u()),2&t&&(ge(y(4).rewardDateHeaders),c(3),D(" ",v(4,1,"nodes.reward-total")," "))}function Abe(t,n){1&t&&(h(0,"th"),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"nodes.rewards-loading")," "))}function Rbe(t,n){1&t&&(h(0,"mat-icon",35),_(1,"translate"),p(2,"star"),u()),2&t&&C("inline",!0)("matTooltip",v(1,2,"nodes.hypervisor-info"))}function Fbe(t,n){if(1&t&&(h(0,"td",33)(1,"span",37),p(2),u()()),2&t){const e=n.$implicit,i=y(2).$implicit,o=y(4);c(),Ge(o.getRewardClass(i.localPk,e)),c(),S(o.getRewardAmount(i.localPk,e))}}function Nbe(t,n){if(1&t&&(me(0,Fbe,3,3,"td",33,Le),h(2,"td",34)(3,"span",40),p(4),u()()),2&t){const e=y().$implicit,i=y(4);ge(i.rewardDates),c(4),S(i.getWeekTotal(e.localPk))}}function Lbe(t,n){1&t&&(h(0,"td")(1,"span",37),p(2,"..."),u()())}function Bbe(t,n){1&t&&(h(0,"button",39),_(1,"translate"),h(2,"mat-icon",27),p(3,"chevron_right"),u()()),2&t&&(C("matTooltip",v(1,2,"nodes.view-node")),c(2),C("inline",!0))}function Vbe(t,n){if(1&t){const e=re();h(0,"button",38),_(1,"translate"),F("click",function(o){V(e);const r=y().$implicit,s=y(4);return o.stopPropagation(),o.preventDefault(),H(s.deleteNode(r))}),h(2,"mat-icon"),p(3,"close"),u()()}2&t&&C("matTooltip",v(1,1,"nodes.delete-node"))}function Hbe(t,n){if(1&t){const e=re();h(0,"a",32)(1,"td"),x(2,Rbe,3,4,"mat-icon",35),u(),h(3,"td"),L(4,"span",36),_(5,"translate"),u(),h(6,"td"),p(7),u(),h(8,"td"),p(9),u(),h(10,"td")(11,"span",37),p(12),u()(),x(13,Nbe,5,1),x(14,Lbe,3,0,"td"),h(15,"td",31)(16,"button",38),_(17,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(4);return o.stopPropagation(),o.preventDefault(),H(s.copyToClipboard(r))}),h(18,"mat-icon",27),p(19,"filter_none"),u()(),h(20,"button",38),_(21,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(4);return o.stopPropagation(),o.preventDefault(),H(s.showEditLabelDialog(r))}),h(22,"mat-icon",27),p(23,"short_text"),u()(),x(24,Bbe,4,4,"button",39),x(25,Vbe,4,3,"button",39),u()()}if(2&t){const e=n.$implicit,i=y(4);C("ngClass",vt(23,pbe))("routerLink",ie(24,mbe,e.localPk)),c(2),k(e.isHypervisor?2:-1),c(2),Ge(i.nodeStatusClass(e,!0)),C("matTooltip",v(5,17,i.nodeStatusText(e,!0))),c(3),D(" ",e.label," "),c(2),D(" ",e.localPk," "),c(3),S(i.getRewardAddress(e.localPk)),c(),k(i.rewardDataLoaded?13:-1),c(),k(i.rewardDataLoading?14:-1),c(2),C("matTooltip",v(17,19,"nodes.copy-key")),c(2),C("inline",!0),c(2),C("matTooltip",v(21,21,"labeled-element.edit-label")),c(2),C("inline",!0),c(2),k(e.online?24:-1),c(),k(e.online?-1:25)}}function Ube(t,n){if(1&t){const e=re();h(0,"table",23)(1,"tr")(2,"th",25),_(3,"translate"),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.hypervisorSortData))}),h(4,"mat-icon",26),p(5,"star_outline"),u(),x(6,Dbe,2,2,"mat-icon",27),u(),h(7,"th",25),_(8,"translate"),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.stateSortData))}),L(9,"span",28),x(10,Tbe,2,2,"mat-icon",27),u(),h(11,"th",29),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.labelSortData))}),p(12),_(13,"translate"),x(14,Ebe,2,2,"mat-icon",27),u(),h(15,"th",30),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.keySortData))}),p(16),_(17,"translate"),x(18,Pbe,2,2,"mat-icon",27),u(),h(19,"th"),p(20),_(21,"translate"),u(),x(22,Obe,5,3),x(23,Abe,3,3,"th"),L(24,"th",31),u(),me(25,Hbe,26,26,"a",32,Le),u()}if(2&t){const e=y(3);c(2),C("matTooltip",v(3,11,"nodes.hypervisor")),c(4),k(e.dataSorter.currentSortingColumn===e.hypervisorSortData?6:-1),c(),C("matTooltip",v(8,13,"nodes.state-tooltip")),c(3),k(e.dataSorter.currentSortingColumn===e.stateSortData?10:-1),c(2),D(" ",v(13,15,"nodes.label")," "),c(2),k(e.dataSorter.currentSortingColumn===e.labelSortData?14:-1),c(2),D(" ",v(17,17,"nodes.key")," "),c(2),k(e.dataSorter.currentSortingColumn===e.keySortData?18:-1),c(2),D(" ",v(21,19,"nodes.reward-address")," "),c(2),k(e.rewardDataLoaded?22:-1),c(),k(e.rewardDataLoading?23:-1),c(2),ge(e.dataSource)}}function zbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function jbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function $be(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Wbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Gbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function qbe(t,n){1&t&&(h(0,"mat-icon",35),_(1,"translate"),p(2,"star"),u()),2&t&&C("inline",!0)("matTooltip",v(1,2,"nodes.hypervisor-info"))}function Kbe(t,n){if(1&t&&(h(0,"div",37),p(1),u(),h(2,"div",37),p(3),u()),2&t){const e=y(2).$implicit;c(),S(e.ip),c(2),S(e.publicIp)}}function Ybe(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=y(2).$implicit;c(),S(e.publicIp)}}function Xbe(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=y(2).$implicit;c(),S(e.ip)}}function Zbe(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=y(2).$implicit;c(),Fd("",e.cityName?e.cityName+", ":"","",e.regionName?e.regionName+", ":"","",e.countryCode)}}function Qbe(t,n){if(1&t&&(x(0,Kbe,4,2)(1,Ybe,2,1,"div",37)(2,Xbe,2,1,"div",37),x(3,Zbe,2,3,"div",37)),2&t){const e=y().$implicit;k(e.ip&&e.publicIp&&e.ip!==e.publicIp?0:e.publicIp?1:e.ip?2:-1),c(3),k(e.countryCode?3:-1)}}function Jbe(t,n){1&t&&(h(0,"span"),p(1,"-"),u())}function eve(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=n.$implicit;c(),nt("",e.type,": ",e.count)}}function tve(t,n){if(1&t&&(me(0,eve,2,2,"div",37,bbe),h(2,"div",37),p(3),u()),2&t){const e=y().$implicit;ge(y(4).getTransportCounts(e)),c(3),D("Total: ",e.transports.length)}}function nve(t,n){1&t&&(h(0,"span",37),p(1,"Total: 0"),u())}function ive(t,n){1&t&&(h(0,"span"),p(1,"-"),u())}function ove(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=y().$implicit;c(),S(e.version)}}function rve(t,n){if(1&t&&(h(0,"div",37),p(1),_(2,"translate"),u(),h(3,"div",37),p(4),_(5,"translate"),u()),2&t){const e=y().$implicit;c(),nt("",v(2,4,"nodes.visor-version"),": ",e.version||"-"),c(3),nt("",v(5,6,"nodes.config-label"),": ",e.configVersion||"-")}}function sve(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=n.$implicit;c(),S(e)}}function ave(t,n){if(1&t&&me(0,sve,2,1,"div",37,Le),2&t){const e=y().$implicit;ge(y(4).getNodeServices(e))}}function lve(t,n){1&t&&(h(0,"span"),p(1,"-"),u())}function cve(t,n){1&t&&(h(0,"mat-icon",41),p(1,"check_circle"),u()),2&t&&C("matTooltip",y().$implicit.rewardsAddress)}function dve(t,n){1&t&&(h(0,"mat-icon",42),_(1,"translate"),p(2,"cancel"),u()),2&t&&C("matTooltip",v(1,1,"nodes.reward-not-set"))}function uve(t,n){1&t&&(h(0,"button",39),_(1,"translate"),h(2,"mat-icon",27),p(3,"chevron_right"),u()()),2&t&&(C("matTooltip",v(1,2,"nodes.view-node")),c(2),C("inline",!0))}function hve(t,n){if(1&t){const e=re();h(0,"button",38),_(1,"translate"),F("click",function(o){V(e);const r=y().$implicit,s=y(4);return o.stopPropagation(),o.preventDefault(),H(s.deleteNode(r))}),h(2,"mat-icon"),p(3,"close"),u()()}2&t&&C("matTooltip",v(1,1,"nodes.delete-node"))}function fve(t,n){if(1&t){const e=re();h(0,"a",32)(1,"td"),x(2,qbe,3,4,"mat-icon",35),u(),h(3,"td"),L(4,"span",36),_(5,"translate"),u(),h(6,"td"),p(7),u(),h(8,"td"),x(9,Qbe,4,2),x(10,Jbe,2,0,"span"),u(),h(11,"td"),x(12,tve,4,1),x(13,nve,2,0,"span",37),x(14,ive,2,0,"span"),u(),h(15,"td"),p(16),u(),h(17,"td"),x(18,ove,2,1,"div",37)(19,rve,6,8),u(),h(20,"td"),x(21,ave,2,0),x(22,lve,2,0,"span"),u(),h(23,"td"),x(24,cve,2,1,"mat-icon",41),x(25,dve,3,3,"mat-icon",42),u(),h(26,"td",31)(27,"button",38),_(28,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(4);return o.stopPropagation(),o.preventDefault(),H(s.copyToClipboard(r))}),h(29,"mat-icon",27),p(30,"filter_none"),u()(),h(31,"button",38),_(32,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(4);return o.stopPropagation(),o.preventDefault(),H(s.showEditLabelDialog(r))}),h(33,"mat-icon",27),p(34,"short_text"),u()(),x(35,uve,4,4,"button",39),x(36,hve,4,3,"button",39),u()()}if(2&t){const e=n.$implicit,i=y(4);C("ngClass",pt(30,gbe,e.online,!e.online))("routerLink",e.online?ie(33,vV,e.localPk):null),c(2),k(e.isHypervisor?2:-1),c(2),Ge(i.nodeStatusClass(e,!0)),C("matTooltip",v(5,24,i.nodeStatusText(e,!0))),c(3),D(" ",e.label," "),c(2),k(e.ip||e.publicIp||e.countryCode?9:-1),c(),k(e.ip||e.publicIp||e.countryCode?-1:10),c(2),k(e.transports&&e.transports.length>0?12:-1),c(),k(e.transports&&0===e.transports.length?13:-1),c(),k(e.transports?-1:14),c(2),D(" ",e.localPk," "),c(2),k(e.version&&e.configVersion&&e.version===e.configVersion?18:19),c(3),k(i.getNodeServices(e).length>0?21:-1),c(),k(0===i.getNodeServices(e).length?22:-1),c(2),k(e.rewardsAddress?24:-1),c(),k(e.rewardsAddress?-1:25),c(2),C("matTooltip",v(28,26,"nodes.copy-key")),c(2),C("inline",!0),c(2),C("matTooltip",v(32,28,"labeled-element.edit-label")),c(2),C("inline",!0),c(2),k(e.online?35:-1),c(),k(e.online?-1:36)}}function pve(t,n){if(1&t){const e=re();h(0,"table",23)(1,"tr")(2,"th",25),_(3,"translate"),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.hypervisorSortData))}),h(4,"mat-icon",26),p(5,"star_outline"),u(),x(6,zbe,2,2,"mat-icon",27),u(),h(7,"th",25),_(8,"translate"),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.stateSortData))}),L(9,"span",28),x(10,jbe,2,2,"mat-icon",27),u(),h(11,"th",29),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.labelSortData))}),p(12),_(13,"translate"),x(14,$be,2,2,"mat-icon",27),u(),h(15,"th"),p(16),_(17,"translate"),u(),h(18,"th"),p(19),_(20,"translate"),u(),h(21,"th",30),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.keySortData))}),p(22),_(23,"translate"),x(24,Wbe,2,2,"mat-icon",27),u(),h(25,"th",30),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.versionSortData))}),p(26),_(27,"translate"),x(28,Gbe,2,2,"mat-icon",27),u(),h(29,"th"),p(30),_(31,"translate"),u(),h(32,"th"),p(33),_(34,"translate"),u(),L(35,"th",31),u(),me(36,fve,37,35,"a",32,Le),u()}if(2&t){const e=y(3);c(2),C("matTooltip",v(3,14,"nodes.hypervisor")),c(4),k(e.dataSorter.currentSortingColumn===e.hypervisorSortData?6:-1),c(),C("matTooltip",v(8,16,"nodes.state-tooltip")),c(3),k(e.dataSorter.currentSortingColumn===e.stateSortData?10:-1),c(2),D(" ",v(13,18,"nodes.label")," "),c(2),k(e.dataSorter.currentSortingColumn===e.labelSortData?14:-1),c(2),D(" ",v(17,20,"nodes.ip-location")," "),c(3),D(" ",v(20,22,"nodes.transports")," "),c(3),D(" ",v(23,24,"nodes.key")," "),c(2),k(e.dataSorter.currentSortingColumn===e.keySortData?24:-1),c(2),D(" ",v(27,26,"nodes.version")," "),c(2),k(e.dataSorter.currentSortingColumn===e.versionSortData?28:-1),c(2),D(" ",v(31,28,"nodes.services")," "),c(3),D(" ",v(34,30,"nodes.reward")," "),c(3),ge(e.dataSource)}}function mve(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.label")," ")}function gve(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.inverted-order")," ")}function _ve(t,n){1&t&&(h(0,"div",49)(1,"mat-icon",53),p(2,"star"),u(),p(3,"\xa0 "),h(4,"span",54),p(5),_(6,"translate"),u()()),2&t&&(c(),C("inline",!0),c(4),S(v(6,2,"nodes.hypervisor")))}function bve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y(2).$implicit;c(),S(e.ip)}}function vve(t,n){1&t&&(h(0,"span"),p(1," / "),u())}function yve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y(2).$implicit;c(),S(e.publicIp)}}function Cve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),_(3,"translate"),u(),p(4,": "),x(5,bve,2,1,"span"),x(6,vve,2,0,"span"),x(7,yve,2,1,"span"),u()),2&t){const e=y().$implicit;c(2),S(v(3,4,"nodes.ip")),c(3),k(e.ip?5:-1),c(),k(e.ip&&e.publicIp?6:-1),c(),k(e.publicIp?7:-1)}}function wve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y(2).$implicit;c(),D("",e.cityName,", ")}}function xve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y(2).$implicit;c(),D("",e.regionName,", ")}}function kve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),_(3,"translate"),u(),p(4,": "),x(5,wve,2,1,"span"),x(6,xve,2,1,"span"),p(7),u()),2&t){const e=y().$implicit;c(2),S(v(3,4,"nodes.location")),c(3),k(e.cityName?5:-1),c(),k(e.regionName?6:-1),c(),D("",e.countryCode," ")}}function Sve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),_(3,"translate"),u(),p(4),u()),2&t){const e=y().$implicit;c(2),S(v(3,2,"nodes.version")),c(2),D(": ",e.version," ")}}function Mve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),_(3,"translate"),u(),p(4),u()),2&t){const e=y().$implicit;c(2),S(v(3,2,"nodes.config-version")),c(2),D(": ",e.configVersion," ")}}function Dve(t,n){if(1&t){const e=re();h(0,"a",47)(1,"tr",48)(2,"td",48)(3,"div",44)(4,"div",45),x(5,_ve,7,4,"div",49),h(6,"div",49)(7,"span",8),p(8),_(9,"translate"),u(),p(10,": "),h(11,"span"),p(12),_(13,"translate"),u()(),h(14,"div",49)(15,"span",8),p(16),_(17,"translate"),u(),p(18),u(),x(19,Cve,8,6,"div",49),x(20,kve,8,6,"div",49),h(21,"div",50)(22,"span",8),p(23),_(24,"translate"),u(),p(25),u(),x(26,Sve,5,4,"div",49),x(27,Mve,5,4,"div",49),u(),L(28,"div",51),h(29,"div",46)(30,"button",52),_(31,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(4);return o.stopPropagation(),o.preventDefault(),H(s.showOptionsDialog(r))}),h(32,"mat-icon"),p(33),u()()()()()()()}if(2&t){const e=n.$implicit,i=y(4);C("ngClass",ie(27,_be,e.online))("routerLink",e.online?ie(29,vV,e.localPk):null),c(5),k(e.isHypervisor?5:-1),c(3),S(v(9,17,"nodes.state")),c(3),Ge(i.nodeStatusClass(e,!1)+" title"),c(),S(v(13,19,i.nodeStatusText(e,!1))),c(4),S(v(17,21,"nodes.label")),c(2),D(": ",e.label," "),c(),k(e.ip||e.publicIp?19:-1),c(),k(e.countryCode?20:-1),c(3),S(v(24,23,"nodes.key")),c(2),D(": ",e.localPk," "),c(),k(e.version?26:-1),c(),k(e.configVersion?27:-1),c(3),C("matTooltip",v(31,25,"common.options")),c(3),S("add")}}function Tve(t,n){if(1&t){const e=re();h(0,"table",24)(1,"tr",43),F("click",function(){return V(e),H(y(3).dataSorter.openSortingOrderModal())}),h(2,"td")(3,"div",44)(4,"div",45)(5,"div",8),p(6),_(7,"translate"),u(),h(8,"div"),p(9),_(10,"translate"),x(11,mve,2,3),x(12,gve,2,3),u()(),h(13,"div",46)(14,"mat-icon",27),p(15,"keyboard_arrow_down"),u()()()()(),me(16,Dve,34,31,"a",47,Le),u()}if(2&t){const e=y(3);c(6),S(v(7,5,"tables.sorting-title")),c(3),D("",v(10,7,e.dataSorter.currentSortingColumn.label)," "),c(2),k(e.dataSorter.currentlySortingByLabel?11:-1),c(),k(e.dataSorter.sortingInReverseOrder?12:-1),c(2),C("inline",!0),c(2),ge(e.dataSource)}}function Eve(t,n){if(1&t&&(h(0,"div",17)(1,"div",22),x(2,Ube,27,21,"table",23),x(3,pve,38,32,"table",23),x(4,Tve,18,9,"table",24),u()()),2&t){const e=y(2);c(2),k(e.showRewardsInfo&&e.dataSource.length>0?2:-1),c(),k(!e.showRewardsInfo&&e.dataSource.length>0?3:-1),c(),k(e.dataSource.length>0?4:-1)}}function Pve(t,n){if(1&t&&L(0,"app-paginator",16),2&t){const e=y(2);C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",e.showRewardsInfo?vt(4,_V):vt(5,bV))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function Ive(t,n){1&t&&(h(0,"span",57),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"nodes.empty")))}function Ove(t,n){1&t&&(h(0,"span",57),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"nodes.empty-with-filter")))}function Ave(t,n){if(1&t&&(h(0,"div",17)(1,"div",55)(2,"mat-icon",56),p(3,"warning"),u(),x(4,Ive,3,3,"span",57),x(5,Ove,3,3,"span",57),u()()),2&t){const e=y(2);c(2),C("inline",!0),c(2),k(0===e.allNodes.length?4:-1),c(),k(0!==e.allNodes.length?5:-1)}}function Rve(t,n){if(1&t){const e=re();h(0,"div",2)(1,"div",5)(2,"app-top-bar",6),F("refreshRequested",function(){return V(e),H(y().forceDataRefresh(!0))})("optionSelected",function(o){return V(e),H(y().performAction(o))}),u()(),h(3,"div",5)(4,"div",7)(5,"div",8),x(6,xbe,6,3,"div",9),u(),h(7,"div",10)(8,"div",11),x(9,kbe,3,4,"mat-icon",12),x(10,Sbe,2,1,"mat-icon",13),h(11,"mat-menu",14,0)(13,"div",15),F("click",function(){return V(e),H(y().removeOffline())}),p(14),_(15,"translate"),u()()(),x(16,Mbe,1,6,"app-paginator",16),u()(),x(17,Eve,5,3,"div",17),x(18,Pve,1,6,"app-paginator",16),x(19,Ave,6,3,"div",17),u()()}if(2&t){const e=y();c(2),C("titleParts",vt(22,gV))("tabsData",e.tabsData)("selectedTabIndex",e.showRewardsInfo?1:0)("secondsSinceLastUpdate",e.secondsSinceLastUpdate)("showLoading",e.updating)("showAlert",e.errorsUpdating)("refeshRate",e.storageService.getRefreshTime())("optionsData",e.options),c(2),C("ngClass",ie(23,fbe,e.numberOfPages>1)),c(2),k(e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0?6:-1),c(3),k(e.allNodes&&e.allNodes.length>0?9:-1),c(),k(e.dataSource.length>0?10:-1),c(),C("overlapTrigger",!1),c(2),C("disabled",on(!e.hasOfflineNodes)),c(),D(" ",v(15,20,"nodes.delete-all-offline")," "),c(2),k(e.numberOfPages>1?16:-1),c(),k(0!==e.dataSource.length?17:-1),c(),k(e.numberOfPages>1?18:-1),c(),k(0===e.dataSource.length?19:-1)}}let yV=(()=>{class t extends Lt{constructor(e,i,o,r,s,a,l,d,f,m,g,b){super(),this.nodeService=e,this.multipleNodeDataService=i,this.router=o,this.dialog=r,this.authService=s,this.storageService=a,this.ngZone=l,this.snackbarService=d,this.clipboardService=f,this.translateService=m,this.rewardService=g,this.persistentServerDataResponseKey="serv-dat-response",this.nodesListId="nl",this.dmsgListId="dl",this.hypervisorSortData=new Pt(["isHypervisor"],"nodes.hypervisor",lt.Boolean),this.stateSortData=new Pt(["online"],"nodes.state",lt.Boolean),this.labelSortData=new Pt(["label"],"nodes.label",lt.Text),this.keySortData=new Pt(["localPk"],"nodes.key",lt.Text),this.versionSortData=new Pt(["version"],"nodes.version",lt.Text),this.configVersionSortData=new Pt(["configVersion"],"nodes.config-version",lt.Text),this.dmsgServerSortData=new Pt(["dmsgServerPk"],"nodes.dmsg-server",lt.Text,["dmsgServerPk_label"]),this.pingSortData=new Pt(["roundTripPing"],"nodes.ping",lt.Number),this.loading=!0,this.dataSource=[],this.tabsData=[],this.options=[],this.showDmsgInfo=!1,this.showRewardsInfo=!1,this.canLogOut=!0,this.rewardDataMap=new Map,this.rewardDates=[],this.rewardDateHeaders=[],this.rewardDataLoading=!1,this.rewardDataLoaded=!1,this.hasOfflineNodes=!1,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"nodes.filter-dialog.online",keyNameInElementsArray:"online",type:Mn.Select,printableLabelsForValues:[{value:"",label:"nodes.filter-dialog.online-options.any"},{value:"true",label:"nodes.filter-dialog.online-options.online"},{value:"false",label:"nodes.filter-dialog.online-options.offline"}]},{filterName:"nodes.filter-dialog.label",keyNameInElementsArray:"label",type:Mn.TextInput,maxlength:100},{filterName:"nodes.filter-dialog.key",keyNameInElementsArray:"localPk",type:Mn.TextInput,maxlength:66},{filterName:"nodes.filter-dialog.dmsg",keyNameInElementsArray:"dmsgServerPk",secondaryKeyNameInElementsArray:"dmsgServerPk_label",type:Mn.TextInput,maxlength:66}],this.secondsSinceLastUpdate=0,this.lastUpdate=Date.now(),this.updating=!1,this.errorsUpdating=!1,this.lastUpdateRequestedManually=!1,this.labeledElementTypes=uo,this.updateOptionsMenu(),this.authVerificationSubscription=this.authService.checkLogin().subscribe(E=>{this.canLogOut=E!==Ea.AuthDisabled,this.updateOptionsMenu()}),this.showRewardsInfo=-1!==this.router.url.indexOf("rewards"),this.showDmsgInfo=!1,this.filterProperties.splice(this.filterProperties.length-1);const M=this.showRewardsInfo?"rl":this.nodesListId;this.dataSorter=new wu(this.dialog,this.translateService,this.storageService,[this.hypervisorSortData,this.stateSortData,this.labelSortData,this.keySortData,this.versionSortData,this.configVersionSortData],3,M),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new xu(this.dialog,b,this.router,this.filterProperties,M),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(E=>{this.filteredNodes=E,this.hasOfflineNodes=!1,this.filteredNodes.forEach(I=>{I.online||(this.hasOfflineNodes=!0)}),this.dataSorter.setData(this.filteredNodes)}),this.navigationsSubscription=b.paramMap.subscribe(E=>{if(E.has("page")){let I=Number.parseInt(E.get("page"),10);(isNaN(I)||I<1)&&(I=1),this.currentPageInUrl=I,this.recalculateElementsToShow()}}),this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"schedule",label:"nodes.uptime-title",linkParts:["/nodes","uptime"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}],this.languageSubscription=this.translateService.onLangChange.subscribe(()=>{this.multipleNodeDataService.forceRefresh()})}updateOptionsMenu(){this.options=[],this.options.push({name:"nodes.modify-rewards-all",actionName:"modifyRewardsAll",icon:"edit"}),this.canLogOut&&this.options.push({name:"common.logout",actionName:"logout",icon:"power_settings_new"})}ngOnInit(){return this.startGettingData(!0),this.ngZone.runOutsideAngular(()=>{this.updateTimeSubscription=Ls(5e3,5e3).subscribe(()=>this.ngZone.run(()=>{this.secondsSinceLastUpdate=Math.floor((Date.now()-this.lastUpdate)/1e3)}))}),super.ngOnInit()}ngOnDestroy(){this.authVerificationSubscription.unsubscribe(),this.dataSubscription.unsubscribe(),this.updateTimeSubscription.unsubscribe(),this.navigationsSubscription.unsubscribe(),this.languageSubscription.unsubscribe(),this.updateSubscription&&this.updateSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose()}performAction(e){"logout"===e?this.logout():"updateAll"===e?this.updateAll():"modifyRewardsAll"===e&&this.changeRewardsToAll()}nodeStatusClass(e,i){return e.online?e.health&&e.health.servicesHealth===yu.Unhealthy?i?"dot-yellow blinking":"yellow-text":e.health&&e.health.servicesHealth===yu.Healthy?i?"dot-green":"green-text":i?"dot-outline-gray":"":i?"dot-red":"red-text"}nodeStatusText(e,i){return e.online?e.health&&e.health.servicesHealth===yu.Healthy?"node.statuses.online"+(i?"-tooltip":""):e.health&&e.health.servicesHealth===yu.Unhealthy?"node.statuses.partially-online"+(i?"-tooltip":""):e.health&&e.health.servicesHealth===yu.Connecting?"node.statuses.connecting"+(i?"-tooltip":""):"node.statuses.unknown"+(i?"-tooltip":""):"node.statuses.offline"+(i?"-tooltip":"")}forceDataRefresh(e=!1){e&&(this.lastUpdateRequestedManually=!0),this.multipleNodeDataService.forceRefresh()}startGettingData(e){const i=e?this.getLocalValue(this.persistentServerDataResponseKey):null;let o=this.multipleNodeDataService.startRequestingData();i&&(o=se(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{i||this.saveLocalValue(this.persistentServerDataResponseKey,JSON.stringify(r)),this.updating=!r||r.updating,r&&!r.updating&&(r.data&&!r.error?(this.allNodes=r.data,this.dataFilterer.setData(this.allNodes),this.showRewardsInfo&&!this.rewardDataLoaded&&!this.rewardDataLoading&&this.loadRewardData(),this.loading=!1,this.snackbarService.closeCurrentIfTemporaryError(),this.lastUpdate=r.momentOfLastCorrectUpdate,this.secondsSinceLastUpdate=Math.floor((Date.now()-r.momentOfLastCorrectUpdate)/1e3),this.errorsUpdating=!1,Jr.currentInstance.hideDataProblemMsg(),this.lastUpdateRequestedManually&&(this.snackbarService.showDone("common.refreshed",null),this.lastUpdateRequestedManually=!1)):r.error&&(this.errorsUpdating||this.snackbarService.showError(this.loading?"common.loading-error":"nodes.error-load",null,!0,r.error),this.loading=!1,this.errorsUpdating=!0,Jr.currentInstance.showDataProblemMsg())),i&&this.startGettingData(!1)})}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredNodes){const e=at.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredNodes.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.nodesToShow=this.filteredNodes.slice(i,i+e)}else this.nodesToShow=null;this.nodesToShow&&(this.dataSource=this.nodesToShow)}logout(){const e=Ut.createConfirmationDialog(this.dialog,"common.logout-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.authService.logout().subscribe(()=>this.router.navigate(["login"]),()=>this.snackbarService.showError("common.logout-error"))})}updateAll(){if(!this.dataSource||0===this.dataSource.length)return void this.snackbarService.showError("nodes.no-visors-to-update");const e=[],i=[];this.dataSource.forEach(o=>{if(o.online){const r={key:o.localPk,label:o.label,version:o.version,tag:o.buildTag};Ut.checkIfTagIsUpdatable(o.buildTag)?e.push(r):i.push(r)}}),uge.openDialog(this.dialog,e,i)}changeRewardsToAll(){if(!this.dataSource||0===this.dataSource.length)return void this.snackbarService.showError("nodes.no-visors-to-modify");const e=[];this.dataSource.forEach(o=>{o.online&&e.push({key:o.localPk,label:o.label})}),Fge.openDialog(this.dialog,{nodes:e})}recursivelyUpdateWallets(e,i,o=0){return this.nodeService.update(e[e.length-1]).pipe(ii(()=>se(null)),Tt(r=>(r&&r.updated&&!r.error?this.snackbarService.showDone(this.translateService.instant("nodes.update.done",{name:i[i.length-1]})):(this.snackbarService.showError(this.translateService.instant("nodes.update.update-error",{name:i[i.length-1]})),o+=1),e.pop(),i.pop(),e.length>=1?this.recursivelyUpdateWallets(e,i,o):se(o))))}showOptionsDialog(e){const i=[{icon:"filter_none",label:"nodes.copy-key"}];i.push({icon:"short_text",label:"labeled-element.edit-label"}),e.online||i.push({icon:"close",label:"nodes.delete-node"}),ho.openDialog(this.dialog,i,"common.options").afterClosed().subscribe(o=>{1===o?this.copySpecificTextToClipboard(e.localPk):2===o?this.showEditLabelDialog(e):3===o&&this.deleteNode(e)})}copyToClipboard(e){this.copySpecificTextToClipboard(e.localPk)}copySpecificTextToClipboard(e){this.clipboardService.copy(e)&&this.snackbarService.showDone("copy.copied")}showEditLabelDialog(e){let i=this.storageService.getLabelInfo(e.localPk);i||(i={id:e.localPk,label:"",identifiedElementType:uo.Node}),DS.openDialog(this.dialog,i).afterClosed().subscribe(o=>{o&&this.forceDataRefresh()})}deleteNode(e){const i=Ut.createConfirmationDialog(this.dialog,"nodes.delete-node-confirmation");i.componentInstance.operationAccepted.subscribe(()=>{i.close(),this.storageService.setLocalNodesAsHidden([e.localPk],[e.ip]),this.forceDataRefresh(),this.snackbarService.showDone("nodes.deleted")})}getTransportCounts(e){if(!e.transports||0===e.transports.length)return[];const i={};return e.transports.forEach(o=>{const r=(o.type||"unknown").toUpperCase();i[r]=(i[r]||0)+1}),Object.keys(i).sort().map(o=>({type:o,count:i[o]}))}getNodeServices(e){const i=[];return e.apps&&e.apps.forEach(o=>{1===o.status&&("skysocks"===o.name?i.push("Proxy Server"):"vpn-server"===o.name&&i.push("VPN Server"))}),e.isPublic&&i.push("Public Visor"),e.autoconnectTransports&&i.push("Autoconnect"),i}loadRewardData(){if(!this.allNodes||0===this.allNodes.length)return;this.rewardDataLoading=!0;const e=this.allNodes.map(i=>i.localPk);this.rewardService.fetchRewardData(e).subscribe(i=>{this.rewardDataMap=i,this.rewardDates=this.rewardService.getCachedDates(),this.rewardDateHeaders=this.rewardDates.map(o=>this.rewardService.formatDateShort(o)),this.rewardDataLoading=!1,this.rewardDataLoaded=!0})}getRewardData(e){return this.rewardDataMap.get(e)||null}getRewardAmount(e,i){const o=this.rewardDataMap.get(e);return o&&o.dailyAmounts[i]&&0!==o.dailyAmounts[i]?o.dailyAmounts[i].toFixed(2):"-"}getRewardClass(e,i){const o=this.rewardDataMap.get(e);return o&&o.dailyAmounts[i]&&0!==o.dailyAmounts[i]?o.dailySent[i]?"reward-sent":"reward-pending":""}getWeekTotal(e){const i=this.rewardDataMap.get(e);return i&&0!==i.weekTotal?i.weekTotal.toFixed(2):"-"}getRewardAddress(e){const i=this.allNodes?.find(r=>r.localPk===e);if(i?.rewardsAddress)return i.rewardsAddress;const o=this.rewardDataMap.get(e);return o?.rewardAddress?o.rewardAddress:"-"}removeOffline(){let e="nodes.delete-all-offline-confirmation";this.dataFilterer.currentFiltersTexts&&this.dataFilterer.currentFiltersTexts.length>0&&(e="nodes.delete-all-filtered-offline-confirmation");const i=Ut.createConfirmationDialog(this.dialog,e);i.componentInstance.operationAccepted.subscribe(()=>{i.close();const o=[],r=[];this.filteredNodes.forEach(s=>{s.online||(o.push(s.localPk),r.push(s.ip))}),o.length>0&&(this.storageService.setLocalNodesAsHidden(o,r),this.forceDataRefresh(),1===o.length?this.snackbarService.showDone("nodes.deleted-singular"):this.snackbarService.showDone("nodes.deleted-plural",{number:o.length}))})}static{this.\u0275fac=function(i){return new(i||t)(O(Yi),O(JB),O(yt),O(Nt),O(ep),O(ri),O(Ce),O(ot),O(ap),O(Xo),O(Nge),O(Li))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-node-list"]],standalone:!1,features:[_e],decls:2,vars:2,consts:[["selectionMenu","matMenu"],[1,"d-flex","flex-column","h-100","w-100"],[1,"row"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton"],[1,"h-100"],[1,"col-12"],[3,"refreshRequested","optionSelected","titleParts","tabsData","selectedTabIndex","secondsSinceLastUpdate","showLoading","showAlert","refeshRate","optionsData"],[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click","disabled"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow","full-node-list-margins"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none","nowrap"],[1,"sortable-column","small-column",3,"click","matTooltip"],[1,"hypervisor-icon","grey-text"],[3,"inline"],[1,"dot-outline-gray"],[1,"sortable-column","labels",3,"click"],[1,"sortable-column",3,"click"],[1,"actions"],[1,"selectable","link-row",3,"ngClass","routerLink"],[1,"reward-day-column"],[1,"reward-total-column"],[1,"hypervisor-icon",3,"inline","matTooltip"],[3,"matTooltip"],[2,"font-size","0.85em"],["mat-button","",1,"big-action-button","transparent-button",3,"click","matTooltip"],["mat-button","",1,"big-action-button","transparent-button",3,"matTooltip"],[2,"font-size","0.85em","font-weight","bold"],[2,"color","#4caf50","font-size","20px",3,"matTooltip"],[2,"color","#f44336","font-size","20px",3,"matTooltip"],[1,"selectable","click-effect",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[1,"link-row",3,"ngClass","routerLink"],[1,"d-block"],[1,"list-row"],[1,"list-row","long-content"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"hypervisor-icon",3,"inline"],[1,"yellow-clear-text","title"],[1,"box-internal-container","font-sm"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(x(0,vbe,4,5,"div",1),x(1,Rve,20,25,"div",2)),2&i&&(k(o.loading?0:-1),c(),k(o.loading?-1:1))},dependencies:[Ft,es,Ht,Yo,Ae,Et,os,Vs,Su,Qr,Cv,tr,we],styles:[".labels[_ngcontent-%COMP%]{width:15%}.actions[_ngcontent-%COMP%]{text-align:right;width:120px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}.hypervisor-icon[_ngcontent-%COMP%]{font-size:14px!important;line-height:14px!important;position:relative;top:2px;margin-left:2px;color:#d48b05}.small-column[_ngcontent-%COMP%]{width:1px}.non-selectable[_ngcontent-%COMP%]{cursor:not-allowed}.reward-day-column[_ngcontent-%COMP%]{text-align:center;white-space:nowrap;min-width:60px}.reward-total-column[_ngcontent-%COMP%]{text-align:center;white-space:nowrap;min-width:70px}.reward-sent[_ngcontent-%COMP%]{color:#4caf50}.reward-pending[_ngcontent-%COMP%]{color:#ff9800}"]})}}return t})();function Fve(t,n){1&t&&(h(0,"div",6),L(1,"mat-spinner",7),u())}function Nve(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2,".dmsg"),u(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),u()()),2&t){const e=y(4);c(3),Ge(e.proxyStatus.dmsg_web.running?"status-ok":"status-off"),c(),D(" ",e.proxyStatus.dmsg_web.running?"Yes":"No"," "),c(2),S(e.proxyStatus.dmsg_web.socks_addr||"-"),c(2),S(e.proxyStatus.dmsg_web.upstream_socks||"direct")}}function Lve(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2,".skynet"),u(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),u()()),2&t){const e=y(4);c(3),Ge(e.proxyStatus.skynet_web.running?"status-ok":"status-off"),c(),D(" ",e.proxyStatus.skynet_web.running?"Yes":"No"," "),c(2),S(e.proxyStatus.skynet_web.socks_addr||"-"),c(2),S(e.proxyStatus.skynet_web.upstream_socks||"direct")}}function Bve(t,n){if(1&t&&(h(0,"table",21)(1,"tr")(2,"th"),p(3,"Resolver"),u(),h(4,"th"),p(5,"Running"),u(),h(6,"th"),p(7,"SOCKS"),u(),h(8,"th"),p(9,"Upstream"),u()(),rt(10,Nve,9,5,"tr",3)(11,Lve,9,5,"tr",3),u()),2&t){const e=y(3);c(10),C("ngIf",e.proxyStatus.dmsg_web),c(),C("ngIf",e.proxyStatus.skynet_web)}}function Vve(t,n){if(1&t&&(h(0,"div",19),rt(1,Bve,12,2,"table",20),u()),2&t){const e=y(2);c(),C("ngIf",e.proxyStatus.dmsg_web||e.proxyStatus.skynet_web)}}function Hve(t,n){if(1&t){const e=re();h(0,"div")(1,"h3",8),p(2,"Resolving Proxy"),u(),h(3,"p",9),p(4," Browse "),h(5,"strong"),p(6,".skynet"),u(),p(7," and "),h(8,"strong"),p(9,".dmsg"),u(),p(10," domains. Set an upstream SOCKS5 proxy to route all other traffic through skysocks. "),u(),rt(11,Vve,2,1,"div",10),h(12,"div",11)(13,"div",12)(14,"mat-checkbox",13),F("change",function(o){V(e);const r=y();return r.form.get("skynetEnabled").setValue(o.checked),H(r.toggleProxy())}),p(15," Enable resolving proxy (.skynet + .dmsg) "),u()(),h(16,"form",14)(17,"div",15)(18,"mat-form-field",16)(19,"mat-label"),p(20,"Upstream SOCKS5 (e.g. 127.0.0.1:1080)"),u(),L(21,"input",17),u(),h(22,"button",18),F("click",function(){return V(e),H(y().setUpstream())}),p(23," Set "),u()()()()()}if(2&t){const e=y();c(11),C("ngIf",e.proxyStatus),c(3),C("checked",e.form.get("skynetEnabled").value)("disabled",e.loading),c(2),C("formGroup",e.form),c(6),C("disabled",e.loading)}}let Uve=(()=>{class t{constructor(e,i,o,r){this.dialogRef=e,this.data=i,this.nodeService=o,this.snackbarService=r,this.loading=!1,this.proxyStatus=null,this.skynetPorts=[],this.newPort="",this.form=new ov({skynetEnabled:new Ia(!1),upstream:new Ia("")}),this.loadStatus(),this.loadPorts()}loadStatus(){this.loading=!0,this.nodeService.getProxies(this.data.nodeKey).subscribe(e=>{this.proxyStatus=e,this.loading=!1;const i=e?.skynet_web?.running||!1,o=e?.skynet_web?.upstream_socks||"";this.form.get("skynetEnabled").setValue(i),this.form.get("upstream").setValue(o)},()=>{this.loading=!1})}loadPorts(){this.nodeService.getSkynetPorts(this.data.nodeKey).subscribe(e=>{this.skynetPorts=(e||[]).sort((i,o)=>i-o)},()=>{})}toggleProxy(){const e=this.form.get("skynetEnabled").value;this.loading=!0,this.nodeService.setProxyEnabled(this.data.nodeKey,"skynet",e).subscribe(()=>{this.nodeService.setProxyEnabled(this.data.nodeKey,"dmsg",e).subscribe(()=>{this.loading=!1,this.snackbarService.showDone(e?"Resolving proxy enabled":"Resolving proxy disabled"),this.loadStatus()},()=>{this.loading=!1})},()=>{this.loading=!1,this.snackbarService.showError("Failed to toggle proxy")})}setUpstream(){const e=this.form.get("upstream").value.trim();this.loading=!0,this.nodeService.setProxyUpstream(this.data.nodeKey,"skynet",e).subscribe(()=>{this.loading=!1,this.snackbarService.showDone(e?`Upstream set to ${e}`:"Upstream cleared"),this.loadStatus()},()=>{this.loading=!1,this.snackbarService.showError("Failed to set upstream")})}addPort(){const e=parseInt(this.newPort,10);isNaN(e)||e<1||e>65535?this.snackbarService.showError("Invalid port number"):this.nodeService.registerSkynetPort(this.data.nodeKey,e).subscribe(()=>{this.newPort="",this.snackbarService.showDone(`Port ${e} forwarded`),this.loadPorts()},i=>{this.snackbarService.showError(i?.error?.error||"Failed to register port")})}removePort(e){this.nodeService.deregisterSkynetPort(this.data.nodeKey,e).subscribe(()=>{this.snackbarService.showDone(`Port ${e} removed`),this.loadPorts()},()=>{this.snackbarService.showError("Failed to deregister port")})}close(){this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Yi),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-proxy-settings"]],standalone:!1,decls:9,vars:2,consts:[[1,"generic-dialog-container"],["mat-dialog-title",""],["class","text-center py-3",4,"ngIf"],[4,"ngIf"],["align","end"],["mat-button","",3,"click"],[1,"text-center","py-3"],["diameter","30",1,"mx-auto"],[1,"section-title"],[1,"help-text"],["class","proxy-status",4,"ngIf"],[1,"proxy-form"],[1,"form-row","toggle-row"],[3,"change","checked","disabled"],[3,"formGroup"],[1,"form-row","upstream-row"],["appearance","outline",1,"upstream-field"],["matInput","","formControlName","upstream","placeholder","127.0.0.1:1080"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"proxy-status"],["class","status-table",4,"ngIf"],[1,"status-table"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"h2",1),p(2,"Skynet Settings"),u(),h(3,"mat-dialog-content"),rt(4,Fve,2,0,"div",2)(5,Hve,24,5,"div",3),u(),h(6,"mat-dialog-actions",4)(7,"button",5),F("click",function(){return o.close()}),p(8,"Close"),u()()()),2&i&&(c(4),C("ngIf",o.loading),c(),C("ngIf",!o.loading))},dependencies:[lf,kn,Qt,Jt,xn,sn,_n,Rk,A4,au,dn,ns,On,Ht,ci,Fo],styles:[".section-title[_ngcontent-%COMP%]{font-size:15px;font-weight:500;margin:16px 0 4px;color:#000000de}.section-title[_ngcontent-%COMP%]:first-of-type{margin-top:0}.help-text[_ngcontent-%COMP%]{color:#0009;font-size:13px;margin-bottom:12px}.help-text[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:#0000000f;padding:1px 4px;border-radius:3px;font-size:12px}.status-table[_ngcontent-%COMP%]{width:100%;margin-bottom:12px;border-collapse:collapse}.status-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .status-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:5px 8px;text-align:left;border-bottom:1px solid rgba(0,0,0,.08);font-size:13px}.status-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{color:#00000080;font-weight:500}.status-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{color:#000000de}.status-table[_ngcontent-%COMP%] .status-ok[_ngcontent-%COMP%]{color:#4caf50;font-weight:500}.status-table[_ngcontent-%COMP%] .status-off[_ngcontent-%COMP%]{color:#00000061}.proxy-form[_ngcontent-%COMP%]{margin-top:8px;margin-bottom:8px}.form-row[_ngcontent-%COMP%]{margin-bottom:12px}.upstream-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.upstream-row[_ngcontent-%COMP%] .upstream-field[_ngcontent-%COMP%]{flex:1}.no-ports[_ngcontent-%COMP%]{color:#00000061;font-style:italic;font-size:13px}.port-list[_ngcontent-%COMP%]{margin-bottom:8px}.port-item[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border-bottom:1px solid rgba(0,0,0,.06)}.port-item[_ngcontent-%COMP%] .port-number[_ngcontent-%COMP%]{font-family:monospace;font-size:14px;font-weight:500}.add-port-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.add-port-row[_ngcontent-%COMP%] .port-field[_ngcontent-%COMP%]{width:120px}"]})}}return t})();const zve=["content"],OS=t=>({number:t}),jve=t=>({count:t}),$ve=t=>({time:t});function Wve(t,n){if(1&t&&(h(0,"div",15),p(1),_(2,"translate"),u()),2&t){const e=y(2);c(),D(" ",ue(2,1,"node.logs.filter-ignored",ie(4,OS,e.logEntries.length-e.filteredLogEntries.length))," ")}}function Gve(t,n){if(1&t){const e=re();h(0,"div",12),F("click",function(){return V(e),H(y().showFilters())}),h(1,"div",13)(2,"div")(3,"span"),p(4),_(5,"translate"),u(),h(6,"span",14),p(7),_(8,"translate"),u()(),x(9,Wve,3,6,"div",15),u(),L(10,"div",16),u()}if(2&t){const e=y();c(4),D("",v(5,3,"node.logs.selected-filter")," "),c(3),S(v(8,5,"node.logs."+e.levelDetails.get(e.currentMinimumLevel).levelFilterName)),c(2),k(e.logEntries.length>e.filteredLogEntries.length?9:-1)}}function qve(t,n){if(1&t&&(h(0,"div",3)(1,"mat-icon",17),p(2,"history"),u(),p(3),_(4,"translate"),u()),2&t){const e=y();c(),C("inline",!0),c(2),D(" ",ue(4,2,"node.logs.dropped",ie(5,jve,e.totalDropped))," ")}}function Kve(t,n){if(1&t&&(h(0,"div",4)(1,"a",18),p(2),_(3,"translate"),u()()),2&t){const e=y();c(),C("href",e.getFullLogsUrl(),$i),c(),D(" ",ue(3,2,"node.logs.view-rest",ie(5,OS,e.totalLogs))," ")}}function Yve(t,n){1&t&&p(0," : ")}function Xve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y().$implicit;c(),D(" ",e.msg," ")}}function Zve(t,n){if(1&t&&(h(0,"span",21),p(1),u(),h(2,"span"),p(3),u()),2&t){const e=n.$implicit;c(),D(" ",e.name," "),c(2),D(' ="',e.value,'" ')}}function Qve(t,n){if(1&t&&(h(0,"div",4)(1,"span",19),p(2),u(),h(3,"span"),p(4),u(),p(5," [ "),h(6,"span",19),p(7),u(),h(8,"span",20),p(9),u(),p(10," ]"),x(11,Yve,1,0),x(12,Xve,2,1,"span"),me(13,Zve,4,2,null,null,Le),u()),2&t){const e=n.$implicit,i=y(2);c(2),D(" ",e.time," "),c(),Ge(i.levelDetails.get(e.level).colorClass),c(),D(" ",i.levelDetails.get(e.level).name," "),c(3),D(" ",e.func," "),c(2),D(" ",e._module," "),c(2),k(e.msg?11:-1),c(),k(e.msg?12:-1),c(),ge(e.extra)}}function Jve(t,n){1&t&&me(0,Qve,15,8,"div",4,Le),2&t&&ge(y().filteredLogEntries)}function eye(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"node.logs.view-all")," ")}function tye(t,n){if(1&t&&(p(0),_(1,"translate")),2&t){const e=y(2);D(" ",ue(1,1,"node.logs.view-rest",ie(4,OS,e.totalLogs))," ")}}function nye(t,n){if(1&t&&(h(0,"div",4)(1,"a",18),x(2,eye,2,3),x(3,tye,2,6),u()()),2&t){const e=y();c(),C("href",e.getFullLogsUrl(),$i),c(),k(e.hasMoreLogMessages?-1:2),c(),k(e.hasMoreLogMessages?3:-1)}}function iye(t,n){1&t&&(h(0,"div",5),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"node.logs.no-logs")," "))}function oye(t,n){1&t&&(h(0,"div",5),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"node.logs.no-logs-for-filter")," "))}function rye(t,n){1&t&&L(0,"app-loading-indicator",6),2&t&&C("showWhite",!1)}function sye(t,n){if(1&t&&(h(0,"div",11)(1,"mat-icon",9),p(2,"refresh"),u(),h(3,"span"),p(4),_(5,"translate"),u()()),2&t){const e=y();c(),C("inline",!0),c(3),S(ue(5,2,"refresh-button."+e.elapsedTime.translationVarName,ie(5,$ve,e.elapsedTime.elapsedTime)))}}var vn=function(t){return t[t.PanicLevel=0]="PanicLevel",t[t.FatalLevel=1]="FatalLevel",t[t.ErrorLevel=2]="ErrorLevel",t[t.WarnLevel=3]="WarnLevel",t[t.InfoLevel=4]="InfoLevel",t[t.DebugLevel=5]="DebugLevel",t[t.TraceLevel=6]="TraceLevel",t[t.Unknown=7]="Unknown",t}(vn||{});class aye{constructor(){this.extra=[]}}let lye=(()=>{class t{static openDialog(e){const i=new cn;return i.autoFocus=!1,i.width=at.largeModalWidth,e.open(t,i)}constructor(e,i,o,r,s){this.dialogRef=e,this.nodeService=i,this.snackbarService=o,this.ngZone=r,this.dialog=s,this.levelDetails=new Map([[vn.PanicLevel,{name:"PANIC",colorClass:"panic-level-color",levelFilterName:"filter-panic",importance:8}],[vn.FatalLevel,{name:"FATAL",colorClass:"fatal-level-color",levelFilterName:"filter-faltal",importance:7}],[vn.ErrorLevel,{name:"ERROR",colorClass:"error-level-color",levelFilterName:"filter-error",importance:6}],[vn.WarnLevel,{name:"WARNING",colorClass:"warning-level-color",levelFilterName:"filter-warning",importance:5}],[vn.InfoLevel,{name:"INFO",colorClass:"info-level-color",levelFilterName:"filter-info",importance:4}],[vn.DebugLevel,{name:"DEBUG",colorClass:"debug-level-color",levelFilterName:"filter-debug",importance:3}],[vn.TraceLevel,{name:"TRACE",colorClass:"trace-level-color",levelFilterName:"filter-all",importance:2}],[vn.Unknown,{name:"UNKNOWN LOG",colorClass:"unknown-level-color",levelFilterName:"filter-all",importance:1}]]),this.currentMinimumLevel=vn.Unknown,this.loading=!0,this.LoadingMoment=0,this.liveTail=!0,this.livePollMs=2e3,this.logCursor=0,this.totalDropped=0,this.wasAtBottom=!0,this.maxElementsPerPage=1e3,this.logEntries=[],this.filteredLogEntries=[],this.hasMoreLogMessages=!1,this.totalLogs=0,this.shouldShowError=!0}ngOnInit(){this.loadData(0)}ngOnDestroy(){this.removeSubscription(),this.removeTimeSubscription()}showFilters(){const e=[{icon:"",label:"node.logs.filter-all"},{icon:"",label:"node.logs.filter-debug"},{icon:"",label:"node.logs.filter-info"},{icon:"",label:"node.logs.filter-warning"},{icon:"",label:"node.logs.filter-error"},{icon:"",label:"node.logs.filter-faltal"},{icon:"",label:"node.logs.filter-panic"}],i=[vn.Unknown,vn.DebugLevel,vn.InfoLevel,vn.WarnLevel,vn.ErrorLevel,vn.FatalLevel,vn.PanicLevel];for(let o=0;o<=i.length;o++)this.currentMinimumLevel===i[o]&&(e[o].icon="check");ho.openDialog(this.dialog,e,"node.logs.filter-title").afterClosed().subscribe(o=>{this.currentMinimumLevel=i[o-1],this.filter()})}loadData(e){this.removeSubscription(),this.captureScrollTailState(),this.loading=0===this.logEntries.length;const i=this.logCursor;this.subscription=se(1).pipe(oi(e),Tt(()=>this.nodeService.getRuntimeLogsSince(Me.getCurrentNodeKey(),i))).subscribe(o=>this.onLogsDeltaReceived(o),o=>this.onLogsError(o))}toggleLiveTail(){this.liveTail=!this.liveTail,this.liveTail?this.loadData(0):this.removeSubscription()}captureScrollTailState(){if(!this.content)return void(this.wasAtBottom=!0);const e=this.content.nativeElement;this.wasAtBottom=e.scrollHeight-e.scrollTop-e.clientHeight<40}removeSubscription(){this.subscription&&this.subscription.unsubscribe()}removeTimeSubscription(){this.timeUpdateSubscription&&this.timeUpdateSubscription.unsubscribe()}onLogsDeltaReceived(e){if(!e)return this.loading=!1,void this.scheduleNextPoll();const i=0===this.logCursor;this.logCursor="number"==typeof e.latest?e.latest:this.logCursor,"number"==typeof e.dropped&&e.dropped>0&&(this.totalDropped+=e.dropped);const o=Array.isArray(e.entries)?e.entries:[];if(0===o.length)return this.loading=!1,this.LoadingMoment=Date.now(),this.shouldShowError=!0,this.startUpdatingTime(),void this.scheduleNextPoll();const r=[];for(const s of o)try{r.push(JSON.parse(s))}catch{}i&&(this.logEntries=[]),this.appendParsedEntries(r),this.logEntries.length>this.maxElementsPerPage&&(this.logEntries=this.logEntries.slice(this.logEntries.length-this.maxElementsPerPage),this.hasMoreLogMessages=!0),this.totalLogs=this.logCursor,this.loading=!1,this.LoadingMoment=Date.now(),this.shouldShowError=!0,this.startUpdatingTime(),this.filter(),this.scheduleNextPoll()}scheduleNextPoll(){this.liveTail&&this.loadData(this.livePollMs)}appendParsedEntries(e){e.forEach(i=>{const o=new aye;o.time=i.time,o._module=i._module,o.msg=i.msg,o.func=i.func;const r=i.level?i.level.toLowerCase():"";if(o.level=r.includes("panic")?vn.PanicLevel:r.includes("fatal")?vn.FatalLevel:r.includes("error")?vn.ErrorLevel:r.includes("warn")?vn.WarnLevel:r.includes("info")?vn.InfoLevel:r.includes("debug")?vn.DebugLevel:r.includes("trace")?vn.TraceLevel:vn.Unknown,i.current_backoff){const a=Math.floor(i.current_backoff/1e9),l=Math.floor(a/60),d=Math.floor(a%60);o.extra.push(l?{name:"current_backoff",value:l+"m"+d+"s"}:{name:"current_backoff",value:d+"s"})}i.error&&o.extra.push({name:"error",value:i.error});const s=new Set;s.add("time"),s.add("_module"),s.add("msg"),s.add("func"),s.add("level"),s.add("current_backoff"),s.add("error"),s.add("log_line");for(const a in i)s.has(a)||o.extra.push({name:a,value:i[a]});this.logEntries.push(o)})}filter(){this.filteredLogEntries=[];const e=this.levelDetails.get(this.currentMinimumLevel).importance;this.logEntries.forEach(i=>{const o=this.levelDetails.get(i.level).importance;e<=o&&this.filteredLogEntries.push(i)}),this.wasAtBottom&&setTimeout(()=>{this.content&&(this.content.nativeElement.scrollTop=this.content.nativeElement.scrollHeight)})}startUpdatingTime(){this.elapsedTime=wv.getElapsedTime(Math.floor((Date.now()-this.LoadingMoment)/1e3)),this.removeTimeSubscription(),this.timeUpdateSubscription=Ls(5e3,5e3).subscribe(()=>this.ngZone.run(()=>{this.elapsedTime=wv.getElapsedTime(Math.floor((Date.now()-this.LoadingMoment)/1e3))}))}getFullLogsUrl(){return window.location.origin+"/api/visors/"+Me.getCurrentNodeKey()+"/runtime-logs"}onLogsError(e){e=Ze(e),this.shouldShowError&&(this.snackbarService.showError("common.loading-error",null,!0,e),this.shouldShowError=!1),this.loadData(at.connectionRetryDelay)}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(Yi),O(ot),O(Ce),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-node-logs"]],viewQuery:function(i,o){if(1&i&&st(zve,5),2&i){let r;fe(r=pe())&&(o.content=r.first)}},standalone:!1,decls:21,vars:20,consts:[["content",""],[3,"headline","includeVerticalMargins","includeScrollableArea","dialog"],[1,"top-dialog-button"],[1,"logs-dropped-banner"],[1,"log-entry"],[1,"log-empty-msg"],[3,"showWhite"],[1,"logs-footer"],[1,"live-tail-toggle","subtle-transparent-button",3,"click"],[1,"icon",3,"inline"],[1,"update-button","subtle-transparent-button",3,"click"],[1,"update-time"],[1,"top-dialog-button",3,"click"],[1,"top-dialog-button-content"],[1,"actual-value"],[1,"small"],[1,"top-dialog-button-margin"],[3,"inline"],["target","_blank",1,"view-raw-link",3,"href"],[1,"transparent"],[1,"module-color"],[1,"extra-data-color"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),x(2,Gve,11,7,"div",2),x(3,qve,5,7,"div",3),h(4,"mat-dialog-content",null,0),x(6,Kve,4,7,"div",4),x(7,Jve,2,0),x(8,nye,4,3,"div",4),x(9,iye,3,3,"div",5),x(10,oye,3,3,"div",5),x(11,rye,1,1,"app-loading-indicator",6),h(12,"div",7)(13,"div",8),F("click",function(){return o.toggleLiveTail()}),h(14,"mat-icon",9),p(15),u(),h(16,"span"),p(17),_(18,"translate"),u()(),h(19,"div",10),F("click",function(){return o.loadData(0)}),x(20,sye,6,7,"div",11),u()()()()),2&i&&(C("headline",v(1,16,"node.logs.title"))("includeVerticalMargins",!1)("includeScrollableArea",!1)("dialog",o.dialogRef),c(2),k(!o.loading&&o.logEntries&&o.logEntries.length>0?2:-1),c(),k(o.totalDropped>0?3:-1),c(3),k(!o.loading&&o.hasMoreLogMessages?6:-1),c(),k(o.loading?-1:7),c(),k(!o.loading&&o.logEntries&&o.logEntries.length>0?8:-1),c(),k(o.loading||o.logEntries&&0!==o.logEntries.length?-1:9),c(),k(!o.loading&&o.logEntries&&o.logEntries.length>0&&o.filteredLogEntries.length<1?10:-1),c(),k(o.loading?11:-1),c(3),C("inline",!0),c(),S(o.liveTail?"pause":"play_arrow"),c(2),S(v(18,18,o.liveTail?"node.logs.live-on":"node.logs.live-off")),c(3),k(o.loading?-1:20))},dependencies:[au,Ae,Sn,Qr,we],styles:[".top-dialog-button[_ngcontent-%COMP%]{color:#777!important}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%]{text-align:center}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .actual-value[_ngcontent-%COMP%]{color:#202226}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .small[_ngcontent-%COMP%]{font-size:.6rem}.log-entry[_ngcontent-%COMP%]{margin-top:15px;word-break:break-word}.log-entry[_ngcontent-%COMP%] .transparent[_ngcontent-%COMP%]{color:#999}.log-entry[_ngcontent-%COMP%]:first-of-type{margin-top:0}.log-entry[_ngcontent-%COMP%]:last-of-type{margin-bottom:24px}.log-empty-msg[_ngcontent-%COMP%]{text-align:center}.view-raw-link[_ngcontent-%COMP%]{color:#215f9e}.update-button[_ngcontent-%COMP%]{display:flex;justify-content:center;cursor:pointer}.update-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:5px;margin-right:5px}.update-button[_ngcontent-%COMP%] .update-time[_ngcontent-%COMP%]{text-align:center;font-size:.7rem;color:#202226;margin:0 5px}.panic-level-color[_ngcontent-%COMP%], .fatal-level-color[_ngcontent-%COMP%]{color:red}.error-level-color[_ngcontent-%COMP%]{color:#d10000}.warning-level-color[_ngcontent-%COMP%]{color:#e27505}.info-level-color[_ngcontent-%COMP%]{color:#0d9519}.debug-level-color[_ngcontent-%COMP%]{color:#0065ff}.trace-level-color[_ngcontent-%COMP%]{color:#468cf5}.unknown-level-color[_ngcontent-%COMP%]{color:#e27505}.module-color[_ngcontent-%COMP%]{color:#a119fc}.extra-data-color[_ngcontent-%COMP%]{color:#ad8021}.logs-footer[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;border-top:1px solid rgba(255,255,255,.08)}.live-tail-toggle[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:13px}.live-tail-toggle[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:18px}.logs-dropped-banner[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding:6px 10px;background:#ffc80014;border-bottom:1px solid rgba(255,200,0,.2);font-size:12px;opacity:.9}.logs-dropped-banner[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px}"]})}}return t})();class CV{constructor(n,e){this.canBeUpdated=!1,this.canOpenTerminal=!1,this.options=[],this.dialog=n.get(Nt),this.router=n.get(yt),this.snackbarService=n.get(ot),this.nodeService=n.get(Yi),this.storageService=n.get(ri),this.showingFullList=e,this.returnButtonText=e?"node.title":"nodes.title",this.updateOptions()}updateOptions(){this.options=[],this.options.push({name:"actions.menu.turn-off",actionName:"shutdown",icon:"power_settings_new"})}setCurrentNode(n){this.currentNode=n,this.canBeUpdated=!!Ut.checkIfTagIsUpdatable(n.buildTag),this.canOpenTerminal=Ut.checkIfTagCanOpenterminal(n.buildTag),this.updateOptions()}setCurrentNodeKey(n){this.currentNodeKey=n}performAction(n,e){"terminal"===n?this.terminal():"update"===n?this.update():"logs"===n?this.runtimeLogs():"proxy"===n?this.openProxySettings():"shutdown"===n?this.shutdown():null===n&&this.back()}dispose(){this.updateSubscription&&this.updateSubscription.unsubscribe(),this.shutdownSubscription&&this.shutdownSubscription.unsubscribe()}shutdown(){const n=Ut.createConfirmationDialog(this.dialog,"actions.turn-off.confirmation");n.componentInstance.operationAccepted.subscribe(()=>{n.componentInstance.showProcessing(),this.shutdownSubscription=this.nodeService.shutdown(this.currentNodeKey).subscribe(()=>{this.snackbarService.showDone("actions.turn-off.done"),n.close(),this.router.navigate(["nodes"])},e=>{e=Ze(e),n.componentInstance.showDone("confirmation.error-header-text",e.translatableErrorMsg)})})}update(){const n=Ut.createConfirmationDialog(this.dialog,"actions.update.confirmation");n.componentInstance.operationAccepted.subscribe(()=>{const e=window.location.protocol,i=window.location.host.replace("localhost:4200","127.0.0.1:8000");window.open(e+"//"+i+"/pty/"+this.currentNodeKey+"?commands=update","_blank","noopener noreferrer"),n.close()})}terminal(){const n=window.location.protocol,e=window.location.host.replace("localhost:4200","127.0.0.1:8000");window.open(n+"//"+e+"/pty/"+this.currentNodeKey,"_blank","noopener noreferrer")}runtimeLogs(){lye.openDialog(this.dialog)}openProxySettings(){this.dialog.open(Uve,{width:"550px",data:{nodeKey:this.currentNodeKey}})}back(){this.router.navigate(this.showingFullList?["nodes",this.currentNodeKey]:["nodes"])}}class cye{constructor(){this.trafficData=new dye}}class dye{constructor(){this.totalSent=0,this.totalReceived=0,this.sentHistory=[],this.receivedHistory=[]}}class uye{constructor(){this.lastEmitedData=new cye,this.dataSubject=new Ei(null),this.whenUpdateWasScheduled=0,this.stopRequestedDate=-1,this.consecutiveErrors=0}}let hye=(()=>{class t{constructor(e,i){this.storageService=e,this.nodeService=i,this.maxTrafficHistorySlots=10,this.expirationTime=6e4,this.nodesMap=new Map,this.storageService.getRefreshTimeObservable().subscribe(o=>{this.dataRefreshDelay=1e3*o,this.nodesMap.forEach(r=>{this.forceSpecificNodeRefresh(r.pk)})}),this.checkForExpired()}checkForExpired(){setInterval(()=>{try{this.nodesMap.forEach(e=>{this.finishIfExpired(e)})}catch{}},5e3)}startRequestingData(e){let i=this.nodesMap.get(e);return i?i.stopRequestedDate=-1:(i=new uye,i.pk=e,this.nodesMap.set(e,i),this.startDataSubscription(0,i)),i.dataSubject.asObservable()}stopRequestingSpecificNode(e){const i=this.nodesMap.get(e);i&&(i.stopRequestedDate=Date.now())}startDataSubscription(e,i){i.updateSubscription&&i.updateSubscription.unsubscribe();let o=0;i.updateSubscription=se(1).pipe(oi(e),ui(()=>{i.lastEmitedData.updating=!0,i.dataSubject.next(i.lastEmitedData)}),oi(120),ui(()=>{o=performance.now(),console.log("[HV-DIAG] fetching node data for",i.pk.substring(0,8)+"...")}),Tt(()=>this.nodeService.getNode(i.pk))).subscribe(r=>{console.log("[HV-DIAG] fetch completed in",(performance.now()-o).toFixed(0),"ms for",i.pk.substring(0,8)+"..."),i.consecutiveErrors=0,this.updateTrafficData(r.transports,i.lastEmitedData.trafficData,i.whenUpdateWasScheduled);let s=this.calculateRemainingTime(i.whenUpdateWasScheduled);s<1e3&&(i.whenUpdateWasScheduled=Date.now(),s=this.dataRefreshDelay),i.lastEmitedData={data:r,error:null,momentOfLastCorrectUpdate:Date.now(),updating:!1,trafficData:i.lastEmitedData.trafficData},i.dataSubject.next(i.lastEmitedData),this.startDataSubscription(s,i)},r=>{if(r=Ze(r),i.consecutiveErrors=(i.consecutiveErrors||0)+1,i.lastEmitedData={data:i.lastEmitedData.data,error:r,momentOfLastCorrectUpdate:i.lastEmitedData.momentOfLastCorrectUpdate,updating:!1,trafficData:i.lastEmitedData.trafficData},i.dataSubject.next(i.lastEmitedData),r.originalError&&400===r.originalError.status)i.dataSubject.complete(),i.updateSubscription.unsubscribe(),this.nodesMap.delete(i.pk);else{const a=Math.min(at.connectionRetryDelay*Math.pow(2,i.consecutiveErrors-1),3e4);this.startDataSubscription(a,i)}})}calculateRemainingTime(e){if(e<1)return 0;let i=this.dataRefreshDelay-(Date.now()-e);return i<0&&(i=0),i}updateTrafficData(e,i,o){if(i.totalSent=0,i.totalReceived=0,e&&e.length>0&&(i.totalSent=e.reduce((r,s)=>r+s.sent,0),i.totalReceived=e.reduce((r,s)=>r+s.recv,0)),0===i.sentHistory.length)for(let r=0;rthis.maxTrafficHistorySlots&&(s=this.maxTrafficHistorySlots),0===s)i.sentHistory[i.sentHistory.length-1]=i.totalSent,i.receivedHistory[i.receivedHistory.length-1]=i.totalReceived;else for(let a=0;athis.maxTrafficHistorySlots&&(i.sentHistory.splice(0,i.sentHistory.length-this.maxTrafficHistorySlots),i.receivedHistory.splice(0,i.receivedHistory.length-this.maxTrafficHistorySlots))}}forceSpecificNodeRefresh(e){const i=this.nodesMap.get(e);i&&this.startDataSubscription(0,i)}finishIfExpired(e){e.stopRequestedDate>0&&Date.now()-e.stopRequestedDate>this.expirationTime&&(e.dataSubject.complete(),e.updateSubscription.unsubscribe(),this.nodesMap.delete(e.pk))}static{this.\u0275fac=function(i){return new(i||t)(ce(ri),ce(Yi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function fye(t,n){if(1&t){const e=re();zr(0),h(1,"div",2)(2,"div",3)(3,"app-top-bar",4),F("optionSelected",function(o){return V(e),H(y().performAction(o))})("refreshRequested",function(){return V(e),H(y().forceDataRefresh(!0))}),u()(),h(4,"div",3)(5,"div",5)(6,"div",6),L(7,"router-outlet"),u()()()(),pr()}if(2&t){const e=y();c(3),C("titleParts",e.titleParts)("pageHeaderLabel",e.headerLabel)("pageHeaderIdentifier",e.headerIdentifier)("tabsData",e.tabsData)("selectedTabIndex",e.selectedTabIndex)("secondsSinceLastUpdate",e.secondsSinceLastUpdate)("showLoading",e.updating)("showAlert",e.errorsUpdating)("refeshRate",e.storageService.getRefreshTime())("optionsData",e.nodeActionsHelper?e.nodeActionsHelper.options:null)("returnText",e.nodeActionsHelper?e.nodeActionsHelper.returnButtonText:"")}}function pye(t,n){1&t&&(zr(0),L(1,"app-loading-indicator"),pr())}function mye(t,n){1&t&&(zr(0),h(1,"div",10)(2,"div")(3,"mat-icon",11),p(4,"error"),u(),p(5),_(6,"translate"),u()(),pr()),2&t&&(c(3),C("inline",!0),c(2),D(" ",v(6,2,"node.not-found")," "))}function gye(t,n){if(1&t){const e=re();zr(0),h(1,"div",10)(2,"div")(3,"mat-icon",11),p(4,"error"),u(),p(5),_(6,"translate"),L(7,"br"),h(8,"button",12),F("click",function(){return V(e),H(y(2).retryLoading())}),p(9),_(10,"translate"),u()()(),pr()}2&t&&(c(3),C("inline",!0),c(2),D(" ",v(6,3,"node.error-load")," "),c(4),D(" ",v(10,5,"common.refresh")," "))}function _ye(t,n){if(1&t){const e=re();h(0,"div",7)(1,"div")(2,"app-top-bar",8),F("optionSelected",function(o){return V(e),H(y().performAction(o))}),u()(),rt(3,pye,2,0,"ng-container",9)(4,mye,7,4,"ng-container",9)(5,gye,11,7,"ng-container",9),u()}if(2&t){const e=y();c(2),C("titleParts",e.titleParts)("pageHeaderLabel",e.headerLabel)("pageHeaderIdentifier",e.headerIdentifier)("tabsData",e.tabsData)("selectedTabIndex",e.selectedTabIndex)("showUpdateButton",!1)("optionsData",e.nodeActionsHelper?e.nodeActionsHelper.options:null)("returnText",e.nodeActionsHelper?e.nodeActionsHelper.returnButtonText:""),c(),C("ngIf",!e.notFound&&!e.loadFailed),c(),C("ngIf",e.notFound),c(),C("ngIf",e.loadFailed)}}let Me=(()=>{class t extends Lt{static refreshCurrentDisplayedData(){t.currentInstanceInternal&&t.currentInstanceInternal.forceDataRefresh(!1)}static getCurrentNodeKey(){return t.currentNodeKey}static get currentNode(){return t.nodeSubject.asObservable()}static get currentTrafficData(){return t.trafficDataSubject.asObservable()}constructor(e,i,o,r,s,a,l,d){super(),this.storageService=e,this.singleNodeDataService=i,this.route=o,this.ngZone=r,this.snackbarService=s,this.injector=a,this.cdr=l,this.persistentDataResponseKey="serv-dat-response",this.nodeLoaded=!1,this.notFound=!1,this.titleParts=[],this.tabsData=[],this.selectedTabIndex=-1,this.headerLabel="",this.headerIdentifier="",this.showingFullList=!1,this.initialRouteEventFired=!1,this.secondsSinceLastUpdate=0,this.lastUpdate=Date.now(),this.updating=!1,this.errorsUpdating=!1,this.lastUpdateRequestedManually=!1,this.loadFailed=!1,this.consecutiveLoadErrors=0,this.instanceId="",t.nodeSubject=new co(1),t.trafficDataSubject=new co(1),t.currentInstanceInternal=this,this.instanceId=Math.random().toString(36).substring(7),console.log("[HV-DIAG] NodeComponent constructor, instance:",this.instanceId),this.navigationsSubscription=d.events.subscribe(f=>{f.urlAfterRedirects&&(this.lastUrl=f.urlAfterRedirects,this.processRouteUpdate(),this.initialRouteEventFired=!0)})}ngOnInit(){return this.ngZone.runOutsideAngular(()=>{this.updateTimeSubscription=Ls(5e3,5e3).subscribe(()=>this.ngZone.run(()=>{this.secondsSinceLastUpdate=Math.floor((Date.now()-this.lastUpdate)/1e3)}))}),this.initSubscription=se(0).pipe(oi(500)).subscribe(()=>{this.initialRouteEventFired||(this.lastUrl=window.location.href,this.processRouteUpdate())}),super.ngOnInit()}processRouteUpdate(){console.log("[HV-DIAG] processRouteUpdate called, instance id:",this.instanceId),t.currentNodeKey=this.route.snapshot.params.key,this.nodeActionsHelper&&this.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),this.updateTabBar(),this.navigationsSubscription.unsubscribe(),this.startGettingData(!0)}refreshHeader(){if(!this.node)return this.headerLabel="",void(this.headerIdentifier="");const e=this.storageService.getLabelInfo(this.node.localPk);this.headerLabel=e&&e.label?e.label:this.node.label||(this.node.localPk?this.node.localPk.slice(0,8)+"\u2026":""),this.headerIdentifier=this.node.localPk||""}updateTabBar(){if(this.lastUrl&&(this.lastUrl.includes("/info")||this.lastUrl.includes("/routing")||this.lastUrl.includes("/transports")||this.lastUrl.includes("/bandwidth")||this.lastUrl.includes("/uptime")||this.lastUrl.includes("/rewards")||this.lastUrl.includes("/skynet")||this.lastUrl.includes("/web-proxy")||this.lastUrl.includes("/resources")||this.lastUrl.includes("/terminal")||this.lastUrl.includes("/logs")||this.lastUrl.includes("/chat")||this.lastUrl.includes("/dmsg")||this.lastUrl.includes("/apps")&&!this.lastUrl.includes("/apps-list")))this.titleParts=["nodes.title","node.title"],this.tabsData=[{icon:"info",label:"node.tabs.info",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"info"]:null},{icon:"shuffle",label:"node.tabs.routing",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"routing"]:null},{icon:"swap_horiz",label:"node.tabs.transports",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"transports"]:null},{icon:"equalizer",label:"node.tabs.bandwidth",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"bandwidth"]:null},{icon:"schedule",label:"node.tabs.uptime",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"uptime"]:null},{icon:"apps",label:"node.tabs.apps",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"apps"]:null},{icon:"forum",label:"node.tabs.chat",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"chat"]:null},{icon:"monetization_on",label:"node.tabs.rewards",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"rewards"]:null},{icon:"public",label:"node.tabs.skynet",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"skynet"]:null},{icon:"language",label:"node.tabs.web-proxy",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"web-proxy"]:null},{icon:"memory",label:"node.tabs.resources",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"resources"]:null},{icon:"terminal",label:"node.tabs.terminal",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"terminal"]:null},{icon:"description",label:"node.tabs.logs",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"logs"]:null},{icon:"device_hub",label:"node.tabs.dmsg",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"dmsg"]:null}],this.selectedTabIndex=0,this.lastUrl.includes("/routing")&&(this.selectedTabIndex=1),this.lastUrl.includes("/transports")&&(this.selectedTabIndex=2),this.lastUrl.includes("/bandwidth")&&(this.selectedTabIndex=3),this.lastUrl.includes("/uptime")&&(this.selectedTabIndex=4),this.lastUrl.includes("/apps")&&!this.lastUrl.includes("/apps-list")&&(this.selectedTabIndex=5),this.lastUrl.includes("/chat")&&(this.selectedTabIndex=6),this.lastUrl.includes("/rewards")&&(this.selectedTabIndex=7),this.lastUrl.includes("/skynet")&&(this.selectedTabIndex=8),this.lastUrl.includes("/web-proxy")&&(this.selectedTabIndex=9),this.lastUrl.includes("/resources")&&(this.selectedTabIndex=10),this.lastUrl.includes("/terminal")&&(this.selectedTabIndex=11),this.lastUrl.includes("/logs")&&(this.selectedTabIndex=12),this.lastUrl.includes("/dmsg")&&(this.selectedTabIndex=13),this.showingFullList=!1,this.nodeActionsHelper=new CV(this.injector,this.showingFullList),this.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),this.node&&this.nodeActionsHelper.setCurrentNode(this.node);else if(this.lastUrl&&this.lastUrl.includes("/apps-list")){this.showingFullList=!0,this.nodeActionsHelper=new CV(this.injector,this.showingFullList),this.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),this.node&&this.nodeActionsHelper.setCurrentNode(this.node);const e="apps.apps-list";this.titleParts=["nodes.title","node.title",e+".title"],this.tabsData=[{icon:"view_headline",label:e+".list-title",linkParts:[]}],this.selectedTabIndex=0}else this.titleParts=[],this.tabsData=[]}performAction(e){this.nodeActionsHelper.performAction(e,t.currentNodeKey)}forceDataRefresh(e=!1){e&&(this.lastUpdateRequestedManually=!0),this.singleNodeDataService.forceSpecificNodeRefresh(t.currentNodeKey)}retryLoading(){this.loadFailed=!1,this.consecutiveLoadErrors=0,this.startGettingData(!1)}startGettingData(e){const i=e?this.getLocalValue(this.persistentDataResponseKey):null;let o=this.singleNodeDataService.startRequestingData(t.currentNodeKey);i&&(o=se(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{if(performance.now(),console.log("[HV-DIAG] data event received",{updating:r?.updating,hasData:!!r?.data,hasError:!!r?.error,transports:r?.data?.transports?.length??"n/a",routes:r?.data?.routes?.length??"n/a",apps:r?.data?.apps?.length??"n/a"}),!i){const a=performance.now();this.saveLocalValue(this.persistentDataResponseKey,JSON.stringify(r)),console.log("[HV-DIAG] saveLocalValue took",(performance.now()-a).toFixed(1),"ms")}if(this.updating=!r||r.updating,console.log("[HV-DIAG] updating:",this.updating,"node set:",!!this.node,"notFound:",this.notFound,"loadFailed:",this.loadFailed),r&&!r.updating)if(r.data&&!r.error){const a=performance.now();this.ngZone.run(()=>{this.node=r.data,this.trafficData=r.trafficData,this.nodeLoaded=!0,this.refreshHeader()}),console.log("[HV-DIAG] node assigned, instance:",this.instanceId,"nodeLoaded:",this.nodeLoaded,"node.localPk:",this.node?.localPk?.substring(0,8),"transports:",this.node?.transports?.length,"routes:",this.node?.routes?.length);try{t.nodeSubject.next(this.node)}catch(l){console.error("[HV-DIAG] ERROR in nodeSubject.next:",l)}t.trafficDataSubject.next(this.trafficData),this.nodeActionsHelper&&this.nodeActionsHelper.setCurrentNode(this.node),this.snackbarService.closeCurrentIfTemporaryError(),this.lastUpdate=r.momentOfLastCorrectUpdate,this.secondsSinceLastUpdate=Math.floor((Date.now()-r.momentOfLastCorrectUpdate)/1e3),this.errorsUpdating=!1,this.consecutiveLoadErrors=0,this.loadFailed=!1,Jr.currentInstance.hideDataProblemMsg(),console.log("[HV-DIAG] data processing took",(performance.now()-a).toFixed(1),"ms"),console.log("[HV-DIAG] AFTER ASSIGNMENT: this.node is",this.node?"SET":"NULL","this.notFound:",this.notFound,"this.loadFailed:",this.loadFailed),this.cdr.detectChanges(),this.lastUpdateRequestedManually&&(this.snackbarService.showDone("common.refreshed",null),this.lastUpdateRequestedManually=!1)}else if(r.error){if(r.error.originalError&&400===r.error.originalError.status)return void(this.notFound=!0);if(this.consecutiveLoadErrors++,!this.node&&this.consecutiveLoadErrors>=3)return this.loadFailed=!0,this.singleNodeDataService.stopRequestingSpecificNode(t.currentNodeKey),this.snackbarService.showError("common.loading-error",null,!0,r.error),void Jr.currentInstance.showDataProblemMsg();this.errorsUpdating||this.snackbarService.showError(this.node?"node.error-load":"common.loading-error",null,!0,r.error),this.errorsUpdating=!0,Jr.currentInstance.showDataProblemMsg()}i&&this.startGettingData(!1)})}ngOnDestroy(){console.log("[HV-DIAG] ngOnDestroy, instance:",this.instanceId),this.singleNodeDataService.stopRequestingSpecificNode(t.currentNodeKey),this.dataSubscription.unsubscribe(),this.updateTimeSubscription.unsubscribe(),this.navigationsSubscription.unsubscribe(),this.initSubscription.unsubscribe(),t.currentInstanceInternal=void 0,t.currentNodeKey=void 0,t.nodeSubject.complete(),t.nodeSubject=void 0,t.trafficDataSubject.complete(),t.trafficDataSubject=void 0,this.nodeActionsHelper.dispose()}static{this.\u0275fac=function(i){return new(i||t)(O(ri),O(hye),O(Li),O(Ce),O(ot),O(Ue),O(Dt),O(yt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-node"]],standalone:!1,features:[_e],decls:3,vars:2,consts:[["loadingBlock",""],[4,"ngIf","ngIfElse"],[1,"row"],[1,"col-12"],[3,"optionSelected","refreshRequested","titleParts","pageHeaderLabel","pageHeaderIdentifier","tabsData","selectedTabIndex","secondsSinceLastUpdate","showLoading","showAlert","refeshRate","optionsData","returnText"],[1,"full-size-main-area"],[1,"d-flex","flex-column","h-100"],[1,"d-flex","flex-column","h-100","w-100"],[3,"optionSelected","titleParts","pageHeaderLabel","pageHeaderIdentifier","tabsData","selectedTabIndex","showUpdateButton","optionsData","returnText"],[4,"ngIf"],[1,"w-100","h-100","d-flex","not-found-label"],[3,"inline"],["mat-raised-button","","color","primary",2,"margin-top","16px",3,"click"]],template:function(i,o){if(1&i&&rt(0,fye,8,11,"ng-container",1)(1,_ye,6,11,"ng-template",null,0,Ul),2&i){const r=Un(2);C("ngIf",o.nodeLoaded)("ngIfElse",r)}},dependencies:[lf,sb,Ht,Ae,Qr,tr,we],styles:[".not-found-label[_ngcontent-%COMP%]{align-items:center;justify-content:center;font-size:1rem;position:relative}.not-found-label[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:5px;font-size:22px;opacity:.5;margin-right:3px}.full-size-main-area[_ngcontent-%COMP%], .main-area[_ngcontent-%COMP%]{width:100%}@media(min-width:992px){.main-area[_ngcontent-%COMP%]{width:73%;padding-right:20px;float:left}}.right-bar[_ngcontent-%COMP%]{width:27%;float:right;display:none}@media(min-width:992px){.right-bar[_ngcontent-%COMP%]{display:block;width:27%;float:right}}"]})}}return t})();function bye(t,n){if(1&t&&(h(0,"mat-option",9),p(1),_(2,"translate"),u()),2&t){const e=n.$implicit;C("value",on(e)),c(),nt(" ",e," ",v(2,4,"settings.seconds")," ")}}let vye=(()=>{class t{constructor(e,i,o){this.formBuilder=e,this.storageService=i,this.snackbarService=o,this.timesList=["3","5","10","15","30","60","90","150","300"]}ngOnInit(){this.form=this.formBuilder.group({refreshRate:[this.storageService.getRefreshTime().toString()]}),this.subscription=this.form.get("refreshRate").valueChanges.subscribe(e=>{this.storageService.setRefreshTime(e),this.snackbarService.showDone("settings.refresh-rate-confirmation")})}ngOnDestroy(){this.subscription.unsubscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(Si),O(ri),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-refresh-rate"]],standalone:!1,decls:15,vars:8,consts:[[1,"rounded-elevated-box"],[1,"box-internal-container","overflow"],[1,"white-form-help-icon-container"],[1,"help-icon",3,"inline","matTooltip"],[3,"formGroup"],[1,"white-form-field"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","refreshRate"],[3,"value"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"div",2)(3,"mat-icon",3),_(4,"translate"),p(5," help "),u()(),h(6,"form",4)(7,"mat-form-field",5)(8,"div",6)(9,"label",7),p(10),_(11,"translate"),u(),h(12,"mat-select",8),me(13,bye,3,6,"mat-option",9,Le),u()()()()()()),2&i&&(c(3),C("inline",!0)("matTooltip",v(4,4,"settings.refresh-rate-help")),c(3),C("formGroup",o.form),c(4),S(v(11,6,"settings.refresh-rate")),c(3),ge(o.timesList))},dependencies:[kn,Jt,xn,sn,_n,dn,Ae,Et,Na,is,we],styles:[".help-icon[_ngcontent-%COMP%]{display:inline}mat-form-field[_ngcontent-%COMP%]{margin-right:32px}mat-form-field[_ngcontent-%COMP%] .mat-mdc-form-field-bottom-align{margin-bottom:0!important}"]})}}return t})();const yye=t=>({number:t});let wV=(()=>{class t{constructor(){this.numberOfElements=0,this.linkParts=[""],this.queryParams={}}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=ae({type:t,selectors:[["app-view-all-link"]],inputs:{numberOfElements:"numberOfElements",linkParts:"linkParts",queryParams:"queryParams"},standalone:!1,decls:6,vars:9,consts:[[1,"main-container"],[3,"routerLink","queryParams"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"a",1),p(2),_(3,"translate"),h(4,"mat-icon",2),p(5,"chevron_right"),u()()()),2&i&&(c(),C("routerLink",o.linkParts)("queryParams",o.queryParams),c(),D(" ",ue(3,4,"view-all-link.label",ie(7,yye,o.numberOfElements))," "),c(2),C("inline",!0))},dependencies:[es,Ae,we],styles:[".main-container[_ngcontent-%COMP%]{padding-top:20px;margin-bottom:4px;text-align:right;font-size:.875rem}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.main-container[_ngcontent-%COMP%]{margin:0;padding:16px}}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#f8f9f9;text-decoration:none}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}"]})}}return t})();const Cye=t=>({"paginator-icons-fixer":t}),AS=()=>["/settings","labels"],wye=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),xye=t=>({"d-lg-none d-xl-table":t}),kye=t=>({"d-lg-table d-xl-none":t});function Sye(t,n){1&t&&(h(0,"span",3),p(1),_(2,"translate"),h(3,"mat-icon",14),_(4,"translate"),p(5,"help"),u()()),2&t&&(c(),D(" ",v(2,3,"labels.title")," "),c(2),C("inline",!0)("matTooltip",v(4,5,"labels.info")))}function Mye(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().$implicit.translatableValue)," ")}function Dye(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.value," ")}function Tye(t,n){if(1&t&&(h(0,"div",16)(1,"span"),p(2),_(3,"translate"),u(),x(4,Mye,2,3),x(5,Dye,1,1),u()),2&t){const e=n.$implicit;c(2),D("",v(3,3,e.filterName),": "),c(2),k(e.translatableValue?4:-1),c(),k(e.value?5:-1)}}function Eye(t,n){if(1&t){const e=re();h(0,"div",15),F("click",function(){return V(e),H(y().dataFilterer.removeFilters())}),me(1,Tye,6,5,"div",16,Le),h(3,"div",17),p(4),_(5,"translate"),u()()}if(2&t){const e=y();c(),ge(e.dataFilterer.currentFiltersTexts),c(3),S(v(5,1,"filters.press-to-remove"))}}function Pye(t,n){if(1&t){const e=re();h(0,"mat-icon",18),_(1,"translate"),F("click",function(){return V(e),H(y().dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",v(1,2,"filters.filter-action"))}function Iye(t,n){if(1&t&&(h(0,"mat-icon",8),p(1,"more_horiz"),u()),2&t){y();const e=Un(9);C("inline",!0)("matMenuTriggerFor",e)}}function Oye(t,n){if(1&t&&L(0,"app-paginator",12),2&t){const e=y();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",vt(4,AS))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function Aye(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Rye(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Fye(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Nye(t,n){if(1&t){const e=re();h(0,"tr")(1,"td",30)(2,"mat-checkbox",31),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),_(9,"translate"),u(),h(10,"td",23)(11,"button",32),_(12,"translate"),F("click",function(){const o=V(e).$implicit;return H(y(2).delete(o.id))}),h(13,"mat-icon",22),p(14,"close"),u()()()()}if(2&t){const e=n.$implicit,i=y(2);c(2),C("checked",i.selections.get(e.id)),c(2),D(" ",e.label," "),c(2),D(" ",e.id," "),c(2),nt(" ",i.getLabelTypeIdentification(e)[0]," - ",v(9,7,i.getLabelTypeIdentification(e)[1])," "),c(3),C("matTooltip",v(12,9,"labels.delete")),c(2),C("inline",!0)}}function Lye(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.label")," ")}function Bye(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.inverted-order")," ")}function Vye(t,n){if(1&t){const e=re();h(0,"tr")(1,"td")(2,"div",26)(3,"div",33)(4,"mat-checkbox",31),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(5,"div",27)(6,"div",34)(7,"span",2),p(8),_(9,"translate"),u(),p(10),u(),h(11,"div",35)(12,"span",2),p(13),_(14,"translate"),u(),p(15),u(),h(16,"div",34)(17,"span",2),p(18),_(19,"translate"),u(),p(20),_(21,"translate"),u()(),L(22,"div",36),h(23,"div",28)(24,"button",37),_(25,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(2);return o.stopPropagation(),H(s.showOptionsDialog(r))}),h(26,"mat-icon"),p(27),u()()()()()()}if(2&t){const e=n.$implicit,i=y(2);c(4),C("checked",i.selections.get(e.id)),c(4),S(v(9,10,"labels.label")),c(2),D(": ",e.label," "),c(3),S(v(14,12,"labels.id")),c(2),D(": ",e.id," "),c(3),S(v(19,14,"labels.type")),c(2),nt(": ",i.getLabelTypeIdentification(e)[0]," - ",v(21,16,i.getLabelTypeIdentification(e)[1])," "),c(4),C("matTooltip",v(25,18,"common.options")),c(3),S("add")}}function Hye(t,n){if(1&t&&L(0,"app-view-all-link",29),2&t){const e=y(2);C("numberOfElements",e.filteredLabels.length)("linkParts",vt(3,AS))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function Uye(t,n){if(1&t){const e=re();h(0,"div",13)(1,"div",19)(2,"table",20)(3,"tr"),L(4,"th"),h(5,"th",21),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.labelSortData))}),p(6),_(7,"translate"),x(8,Aye,2,2,"mat-icon",22),u(),h(9,"th",21),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.idSortData))}),p(10),_(11,"translate"),x(12,Rye,2,2,"mat-icon",22),u(),h(13,"th",21),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.typeSortData))}),p(14),_(15,"translate"),x(16,Fye,2,2,"mat-icon",22),u(),L(17,"th",23),u(),me(18,Nye,15,11,"tr",null,Le),u(),h(20,"table",24)(21,"tr",25),F("click",function(){return V(e),H(y().dataSorter.openSortingOrderModal())}),h(22,"td")(23,"div",26)(24,"div",27)(25,"div",2),p(26),_(27,"translate"),u(),h(28,"div"),p(29),_(30,"translate"),x(31,Lye,2,3),x(32,Bye,2,3),u()(),h(33,"div",28)(34,"mat-icon",22),p(35,"keyboard_arrow_down"),u()()()()(),me(36,Vye,28,20,"tr",null,Le),u(),x(38,Hye,1,4,"app-view-all-link",29),u()()}if(2&t){const e=y();c(),C("ngClass",pt(25,wye,e.showShortList_,!e.showShortList_)),c(),C("ngClass",ie(28,xye,e.showShortList_)),c(4),D(" ",v(7,15,"labels.label")," "),c(2),k(e.dataSorter.currentSortingColumn===e.labelSortData?8:-1),c(2),D(" ",v(11,17,"labels.id")," "),c(2),k(e.dataSorter.currentSortingColumn===e.idSortData?12:-1),c(2),D(" ",v(15,19,"labels.type")," "),c(2),k(e.dataSorter.currentSortingColumn===e.typeSortData?16:-1),c(2),ge(e.dataSource),c(2),C("ngClass",ie(30,kye,e.showShortList_)),c(6),S(v(27,21,"tables.sorting-title")),c(3),D("",v(30,23,e.dataSorter.currentSortingColumn.label)," "),c(2),k(e.dataSorter.currentlySortingByLabel?31:-1),c(),k(e.dataSorter.sortingInReverseOrder?32:-1),c(2),C("inline",!0),c(2),ge(e.dataSource),c(2),k(e.showShortList_&&e.numberOfPages>1?38:-1)}}function zye(t,n){1&t&&(h(0,"span",40),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"labels.empty")))}function jye(t,n){1&t&&(h(0,"span",40),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"labels.empty-with-filter")))}function $ye(t,n){if(1&t&&(h(0,"div",13)(1,"div",38)(2,"mat-icon",39),p(3,"warning"),u(),x(4,zye,3,3,"span",40),x(5,jye,3,3,"span",40),u()()),2&t){const e=y();c(2),C("inline",!0),c(2),k(0===e.allLabels.length?4:-1),c(),k(0!==e.allLabels.length?5:-1)}}function Wye(t,n){if(1&t&&L(0,"app-paginator",12),2&t){const e=y();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",vt(4,AS))("queryParams",e.dataFilterer.currentUrlQueryParams)}}let xV=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter.setData(this.filteredLabels)}constructor(e,i,o,r,s,a){this.dialog=e,this.route=i,this.router=o,this.snackbarService=r,this.translateService=s,this.storageService=a,this.listId="ll",this.labelSortData=new Pt(["label"],"labels.label",lt.Text),this.idSortData=new Pt(["id"],"labels.id",lt.Text),this.typeSortData=new Pt(["identifiedElementType_sort"],"labels.type",lt.Text),this.selections=new Map,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"labels.filter-dialog.label",keyNameInElementsArray:"label",type:Mn.TextInput,maxlength:100},{filterName:"labels.filter-dialog.id",keyNameInElementsArray:"id",type:Mn.TextInput,maxlength:66},{filterName:"labels.filter-dialog.type",keyNameInElementsArray:"identifiedElementType",type:Mn.Select,printableLabelsForValues:[{value:"",label:"labels.filter-dialog.type-options.any"},{value:uo.Node,label:"labels.filter-dialog.type-options.visor"},{value:uo.DmsgServer,label:"labels.filter-dialog.type-options.dmsg-server"},{value:uo.Transport,label:"labels.filter-dialog.type-options.transport"}]}],this.dataSorter=new wu(this.dialog,this.translateService,this.storageService,[this.labelSortData,this.idSortData,this.typeSortData],0,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new xu(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(d=>{this.filteredLabels=d,this.dataSorter.setData(this.filteredLabels)}),this.loadData(),this.navigationsSubscription=this.route.paramMap.subscribe(d=>{if(d.has("page")){let f=Number.parseInt(d.get("page"),10);(isNaN(f)||f<1)&&(f=1),this.currentPageInUrl=f,this.recalculateElementsToShow()}})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose()}loadData(){this.allLabels=this.storageService.getSavedLabels(),this.allLabels.forEach(e=>{e.identifiedElementType_sort=this.getLabelTypeIdentification(e)[0]}),this.dataFilterer.setData(this.allLabels)}getLabelTypeIdentification(e){return e.identifiedElementType===uo.Node?["1","labels.filter-dialog.type-options.visor"]:e.identifiedElementType===uo.DmsgServer?["2","labels.filter-dialog.type-options.dmsg-server"]:e.identifiedElementType===uo.Transport?["3","labels.filter-dialog.type-options.transport"]:void 0}changeSelection(e){this.selections.get(e.id)?this.selections.set(e.id,!1):this.selections.set(e.id,!0)}hasSelectedElements(){if(!this.selections)return!1;let e=!1;return this.selections.forEach(i=>{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}deleteSelected(){const e=Ut.createConfirmationDialog(this.dialog,"labels.delete-selected-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.close(),this.selections.forEach((i,o)=>{i&&this.storageService.saveLabel(o,"",null)}),this.snackbarService.showDone("labels.deleted"),this.loadData()})}showOptionsDialog(e){ho.openDialog(this.dialog,[{icon:"close",label:"labels.delete"}],"common.options").afterClosed().subscribe(o=>{1===o&&this.delete(e.id)})}delete(e){const i=Ut.createConfirmationDialog(this.dialog,"labels.delete-confirmation");i.componentInstance.operationAccepted.subscribe(()=>{i.close(),this.storageService.saveLabel(e,"",null),this.snackbarService.showDone("labels.deleted"),this.loadData()})}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredLabels){const e=this.showShortList_?at.maxShortListElements:at.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredLabels.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.labelsToShow=this.filteredLabels.slice(i,i+e);const r=new Map;this.labelsToShow.forEach(a=>{r.set(a.id,!0),this.selections.has(a.id)||this.selections.set(a.id,!1)});const s=[];this.selections.forEach((a,l)=>{r.has(l)||s.push(l)}),s.forEach(a=>{this.selections.delete(a)})}else this.labelsToShow=null,this.selections=new Map;this.dataSource=this.labelsToShow}static{this.\u0275fac=function(i){return new(i||t)(O(Nt),O(Li),O(yt),O(ot),O(Xo),O(ri))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-label-list"]],inputs:{showShortList:"showShortList"},standalone:!1,decls:23,vars:23,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"inline","matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"click"],[3,"inline"],[1,"actions"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[3,"numberOfElements","linkParts","queryParams"],[1,"selection-col"],[3,"change","checked"],["mat-button","",1,"action-button","transparent-button",3,"click","matTooltip"],[1,"check-part"],[1,"list-row"],[1,"list-row","long-content"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,Sye,6,7,"span",3),x(3,Eye,6,3,"div",4),u(),h(4,"div",5)(5,"div",6),x(6,Pye,3,4,"mat-icon",7),x(7,Iye,2,2,"mat-icon",8),h(8,"mat-menu",9,0)(10,"div",10),F("click",function(){return o.changeAllSelections(!0)}),p(11),_(12,"translate"),u(),h(13,"div",10),F("click",function(){return o.changeAllSelections(!1)}),p(14),_(15,"translate"),u(),h(16,"div",11),F("click",function(){return o.deleteSelected()}),p(17),_(18,"translate"),u()()(),x(19,Oye,1,5,"app-paginator",12),u()(),x(20,Uye,39,32,"div",13),x(21,$ye,6,3,"div",13),x(22,Wye,1,5,"app-paginator",12)),2&i&&(C("ngClass",ie(21,Cye,!o.showShortList_&&o.numberOfPages>1&&o.dataSource)),c(2),k(o.showShortList_?2:-1),c(),k(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?3:-1),c(3),k(o.allLabels&&o.allLabels.length>0?6:-1),c(),k(o.dataSource&&o.dataSource.length>0?7:-1),c(),C("overlapTrigger",!1),c(3),D(" ",v(12,15,"selection.select-all")," "),c(3),D(" ",v(15,17,"selection.unselect-all")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(18,19,"selection.delete-all")," "),c(2),k(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?19:-1),c(),k(o.dataSource&&o.dataSource.length>0?20:-1),c(),k(o.dataSource&&0!==o.dataSource.length?-1:21),c(),k(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?22:-1))},dependencies:[Ft,Ht,Yo,Ae,Et,os,Vs,Su,Fo,wV,Cv,we],styles:[".overflow[_ngcontent-%COMP%]{display:block;width:100%;overflow-x:auto}.overflow[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{width:100%}.actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"]})}}return t})();const Gye=()=>["start.title"];function qye(t,n){1&t&&L(0,"app-password")}function Kye(t,n){1&t&&(h(0,"div",5),L(1,"mat-spinner",7),p(2),_(3,"translate"),u()),2&t&&(c(),C("diameter",11),c(),D(" ",v(3,2,"settings.checking-auth")," "))}let Yye=(()=>{class t extends Lt{constructor(e,i,o,r){super(),this.authService=e,this.router=i,this.snackbarService=o,this.dialog=r,this.persistentAuthDataResponseKey="serv-aut-response",this.tabsData=[],this.options=[],this.waitBeforeShowingLoading=!0,this.authChecked=!1,this.authActive=!1,this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"schedule",label:"nodes.uptime-title",linkParts:["/nodes","uptime"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}],this.updateOptionsMenu()}ngOnInit(){return setTimeout(()=>{this.waitBeforeShowingLoading=!1},500),this.checkAuth(0,!0),super.ngOnInit()}checkAuth(e,i){const o=i?this.getLocalValue(this.persistentAuthDataResponseKey):null;let r=this.authService.checkLogin();o&&(r=se(JSON.parse(o.value))),this.authSubscription=se(1).pipe(oi(e),Tt(()=>r)).subscribe(s=>{o||this.saveLocalValue(this.persistentAuthDataResponseKey,JSON.stringify(s)),this.authChecked=!0,this.authActive=s===Ea.Logged,this.updateOptionsMenu(),o&&this.checkAuth(0,!1)},()=>{this.checkAuth(15e3,!1)})}ngOnDestroy(){this.authSubscription.unsubscribe()}updateOptionsMenu(){this.options=[],this.authActive&&(this.options=[{name:"common.logout",actionName:"logout",icon:"power_settings_new"}])}performAction(e){"logout"===e&&this.logout()}logout(){const e=Ut.createConfirmationDialog(this.dialog,"common.logout-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.authService.logout().subscribe(()=>this.router.navigate(["login"]),()=>this.snackbarService.showError("common.logout-error"))})}static{this.\u0275fac=function(i){return new(i||t)(O(ep),O(yt),O(ot),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-settings"]],standalone:!1,features:[_e],decls:8,vars:9,consts:[[1,"row"],[1,"col-12"],[3,"optionSelected","titleParts","tabsData","selectedTabIndex","showUpdateButton","optionsData"],[1,"content","col-12","mt-4.5"],[1,"d-block","mb-4"],[1,"white-theme","checking-container"],[3,"showShortList"],[3,"diameter"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"app-top-bar",2),F("optionSelected",function(s){return o.performAction(s)}),u()(),h(3,"div",3),L(4,"app-refresh-rate",4),x(5,qye,1,0,"app-password"),x(6,Kye,4,4,"div",5),L(7,"app-label-list",6),u()()),2&i&&(c(2),C("titleParts",vt(8,Gye))("tabsData",o.tabsData)("selectedTabIndex",7)("showUpdateButton",!1)("optionsData",o.options),c(3),k(o.authChecked&&o.authActive?5:-1),c(),k(o.authChecked||o.waitBeforeShowingLoading?-1:6),c(),C("showShortList",!0))},dependencies:[ci,YB,vye,tr,xV,we],styles:[".checking-container[_ngcontent-%COMP%]{font-size:10px;opacity:.5}.checking-container[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%]{display:inline-block}.show-link[_ngcontent-%COMP%]{cursor:pointer;font-size:.8rem}"]})}}return t})(),RS=(()=>{class t{constructor(e){this.apiService=e}get(e,i){return this.apiService.get(`visors/${e}/routes/${i}`)}delete(e,i){return this.apiService.delete(`visors/${e}/routes/${i}`)}setMinHops(e,i){return this.apiService.post(`visors/${e}/min-hops`,{min_hops:i})}static{this.\u0275fac=function(i){return new(i||t)(ce(fi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function Mu(t){return t+.5|0}const Us=(t,n,e)=>Math.max(Math.min(t,e),n);function up(t){return Us(Mu(2.55*t),0,255)}function Ba(t){return Us(Mu(255*t),0,255)}function zs(t){return Us(Mu(t/2.55)/100,0,1)}function kV(t){return Us(Mu(100*t),0,100)}const nr={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},FS=[..."0123456789ABCDEF"],Xye=t=>FS[15&t],Zye=t=>FS[(240&t)>>4]+FS[15&t],xv=t=>(240&t)>>4==(15&t);const n1e=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function SV(t,n,e){const i=n*Math.min(e,1-e),o=(r,s=(r+t/30)%12)=>e-i*Math.max(Math.min(s-3,9-s,1),-1);return[o(0),o(8),o(4)]}function i1e(t,n,e){const i=(o,r=(o+t/60)%6)=>e-e*n*Math.max(Math.min(r,4-r,1),0);return[i(5),i(3),i(1)]}function o1e(t,n,e){const i=SV(t,1,.5);let o;for(n+e>1&&(o=1/(n+e),n*=o,e*=o),o=0;o<3;o++)i[o]*=1-n-e,i[o]+=n;return i}function NS(t){const e=t.r/255,i=t.g/255,o=t.b/255,r=Math.max(e,i,o),s=Math.min(e,i,o),a=(r+s)/2;let l,d,f;return r!==s&&(f=r-s,d=a>.5?f/(2-r-s):f/(r+s),l=function r1e(t,n,e,i,o){return t===o?(n-e)/i+(nt<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Du=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Sv(t,n,e){if(t){let i=NS(t);i[n]=Math.max(0,Math.min(i[n]+i[n]*e,0===n?360:1)),i=BS(i),t.r=i[0],t.g=i[1],t.b=i[2]}}function EV(t,n){return t&&Object.assign(n||{},t)}function PV(t){var n={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(n={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(n.a=Ba(t[3]))):(n=EV(t,{r:0,g:0,b:0,a:1})).a=Ba(n.a),n}function _1e(t){return"r"===t.charAt(0)?function p1e(t){const n=f1e.exec(t);let i,o,r,e=255;if(n){if(n[7]!==i){const s=+n[7];e=n[8]?up(s):Us(255*s,0,255)}return i=+n[1],o=+n[3],r=+n[5],i=255&(n[2]?up(i):Us(i,0,255)),o=255&(n[4]?up(o):Us(o,0,255)),r=255&(n[6]?up(r):Us(r,0,255)),{r:i,g:o,b:r,a:e}}}(t):function l1e(t){const n=n1e.exec(t);let i,e=255;if(!n)return;n[5]!==i&&(e=n[6]?up(+n[5]):Ba(+n[5]));const o=MV(+n[2]),r=+n[3]/100,s=+n[4]/100;return i="hwb"===n[1]?function s1e(t,n,e){return LS(o1e,t,n,e)}(o,r,s):"hsv"===n[1]?function a1e(t,n,e){return LS(i1e,t,n,e)}(o,r,s):BS(o,r,s),{r:i[0],g:i[1],b:i[2],a:e}}(t)}class Tu{constructor(n){if(n instanceof Tu)return n;const e=typeof n;let i;"object"===e?i=PV(n):"string"===e&&(i=function Jye(t){var e,n=t.length;return"#"===t[0]&&(4===n||5===n?e={r:255&17*nr[t[1]],g:255&17*nr[t[2]],b:255&17*nr[t[3]],a:5===n?17*nr[t[4]]:255}:(7===n||9===n)&&(e={r:nr[t[1]]<<4|nr[t[2]],g:nr[t[3]]<<4|nr[t[4]],b:nr[t[5]]<<4|nr[t[6]],a:9===n?nr[t[7]]<<4|nr[t[8]]:255})),e}(n)||function h1e(t){kv||(kv=function u1e(){const t={},n=Object.keys(TV),e=Object.keys(DV);let i,o,r,s,a;for(i=0;i>16&255,r>>8&255,255&r]}return t}(),kv.transparent=[0,0,0,0]);const n=kv[t.toLowerCase()];return n&&{r:n[0],g:n[1],b:n[2],a:4===n.length?n[3]:255}}(n)||_1e(n)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var n=EV(this._rgb);return n&&(n.a=zs(n.a)),n}set rgb(n){this._rgb=PV(n)}rgbString(){return this._valid?function m1e(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${zs(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}(this._rgb):void 0}hexString(){return this._valid?function t1e(t){var n=(t=>xv(t.r)&&xv(t.g)&&xv(t.b)&&xv(t.a))(t)?Xye:Zye;return t?"#"+n(t.r)+n(t.g)+n(t.b)+((t,n)=>t<255?n(t):"")(t.a,n):void 0}(this._rgb):void 0}hslString(){return this._valid?function d1e(t){if(!t)return;const n=NS(t),e=n[0],i=kV(n[1]),o=kV(n[2]);return t.a<255?`hsla(${e}, ${i}%, ${o}%, ${zs(t.a)})`:`hsl(${e}, ${i}%, ${o}%)`}(this._rgb):void 0}mix(n,e){if(n){const i=this.rgb,o=n.rgb;let r;const s=e===r?.5:e,a=2*s-1,l=i.a-o.a,d=((a*l===-1?a:(a+l)/(1+a*l))+1)/2;r=1-d,i.r=255&d*i.r+r*o.r+.5,i.g=255&d*i.g+r*o.g+.5,i.b=255&d*i.b+r*o.b+.5,i.a=s*i.a+(1-s)*o.a,this.rgb=i}return this}interpolate(n,e){return n&&(this._rgb=function g1e(t,n,e){const i=Du(zs(t.r)),o=Du(zs(t.g)),r=Du(zs(t.b));return{r:Ba(VS(i+e*(Du(zs(n.r))-i))),g:Ba(VS(o+e*(Du(zs(n.g))-o))),b:Ba(VS(r+e*(Du(zs(n.b))-r))),a:t.a+e*(n.a-t.a)}}(this._rgb,n._rgb,e)),this}clone(){return new Tu(this.rgb)}alpha(n){return this._rgb.a=Ba(n),this}clearer(n){return this._rgb.a*=1-n,this}greyscale(){const n=this._rgb,e=Mu(.3*n.r+.59*n.g+.11*n.b);return n.r=n.g=n.b=e,this}opaquer(n){return this._rgb.a*=1+n,this}negate(){const n=this._rgb;return n.r=255-n.r,n.g=255-n.g,n.b=255-n.b,this}lighten(n){return Sv(this._rgb,2,n),this}darken(n){return Sv(this._rgb,2,-n),this}saturate(n){return Sv(this._rgb,1,n),this}desaturate(n){return Sv(this._rgb,1,-n),this}rotate(n){return function c1e(t,n){var e=NS(t);e[0]=MV(e[0]+n),e=BS(e),t.r=e[0],t.g=e[1],t.b=e[2]}(this._rgb,n),this}}const b1e=(()=>{let t=0;return()=>t++})();function ut(t){return null==t}function yn(t){if(Array.isArray&&Array.isArray(t))return!0;const n=Object.prototype.toString.call(t);return"[object"===n.slice(0,7)&&"Array]"===n.slice(-6)}function mt(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function jn(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function No(t,n){return jn(t)?t:n}function qe(t,n){return typeof t>"u"?n:t}function hn(t,n,e){if(t&&"function"==typeof t.call)return t.apply(e,n)}function Wt(t,n,e,i){let o,r,s;if(yn(t))if(r=t.length,i)for(o=r-1;o>=0;o--)n.call(e,t[o],o);else for(o=0;ot,x:t=>t.x,y:t=>t.y};function Va(t,n){return(AV[n]||(AV[n]=function x1e(t){const n=function w1e(t){const n=t.split("."),e=[];let i="";for(const o of n)i+=o,i.endsWith("\\")?i=i.slice(0,-1)+".":(e.push(i),i="");return e}(t);return e=>{for(const i of n){if(""===i)break;e=e&&e[i]}return e}}(n)))(t)}function HS(t){return t.charAt(0).toUpperCase()+t.slice(1)}const pp=t=>typeof t<"u",Ha=t=>"function"==typeof t,RV=(t,n)=>{if(t.size!==n.size)return!1;for(const e of t)if(!n.has(e))return!1;return!0},It=Math.PI,Cn=2*It,S1e=Cn+It,Tv=Number.POSITIVE_INFINITY,M1e=It/180,Qn=It/2,kc=It/4,FV=2*It/3,Ua=Math.log10,ss=Math.sign;function mp(t,n,e){return Math.abs(t-n)l&&d=Math.min(n,e)-i&&t<=Math.max(n,e)+i}function jS(t,n,e){e=e||(s=>t[s]1;)r=o+i>>1,e(r)?o=r:i=r;return{lo:o,hi:i}}const Ws=(t,n,e,i)=>jS(t,e,i?o=>{const r=t[o][n];return rt[o][n]jS(t,e,i=>t[i][n]>=e),HV=["push","pop","shift","splice","unshift"];function UV(t,n){const e=t._chartjs;if(!e)return;const i=e.listeners,o=i.indexOf(n);-1!==o&&i.splice(o,1),!(i.length>0)&&(HV.forEach(r=>{delete t[r]}),delete t._chartjs)}const jV=typeof window>"u"?function(t){return t()}:window.requestAnimationFrame;function $V(t,n){let e=[],i=!1;return function(...o){e=o,i||(i=!0,jV.call(window,()=>{i=!1,t.apply(n,e)}))}}const Qi=(t,n,e)=>"start"===t?n:"end"===t?e:(n+e)/2;const Ev=t=>0===t||1===t,qV=(t,n,e)=>-Math.pow(2,10*(t-=1))*Math.sin((t-n)*Cn/e),KV=(t,n,e)=>Math.pow(2,-10*t)*Math.sin((t-n)*Cn/e)+1,_p={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*Qn),easeOutSine:t=>Math.sin(t*Qn),easeInOutSine:t=>-.5*(Math.cos(It*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>Ev(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>Ev(t)?t:qV(t,.075,.3),easeOutElastic:t=>Ev(t)?t:KV(t,.075,.3),easeInOutElastic:t=>Ev(t)?t:t<.5?.5*qV(2*t,.1125,.45):.5+.5*KV(2*t-1,.1125,.45),easeInBack:t=>t*t*(2.70158*t-1.70158),easeOutBack:t=>(t-=1)*t*(2.70158*t+1.70158)+1,easeInOutBack(t){let n=1.70158;return(t/=.5)<1?t*t*((1+(n*=1.525))*t-n)*.5:.5*((t-=2)*t*((1+(n*=1.525))*t+n)+2)},easeInBounce:t=>1-_p.easeOutBounce(1-t),easeOutBounce:t=>t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,easeInOutBounce:t=>t<.5?.5*_p.easeInBounce(2*t):.5*_p.easeOutBounce(2*t-1)+.5};function WS(t){if(t&&"object"==typeof t){const n=t.toString();return"[object CanvasPattern]"===n||"[object CanvasGradient]"===n}return!1}function YV(t){return WS(t)?t:new Tu(t)}function GS(t){return WS(t)?t:new Tu(t).saturate(.5).darken(.1).hexString()}const L1e=["x","y","borderWidth","radius","tension"],B1e=["color","borderColor","backgroundColor"],XV=new Map;function bp(t,n,e){return function U1e(t,n){n=n||{};const e=t+JSON.stringify(n);let i=XV.get(e);return i||(i=new Intl.NumberFormat(t,n),XV.set(e,i)),i}(n,e).format(t)}const ZV={values:t=>yn(t)?t:""+t,numeric(t,n,e){if(0===t)return"0";const i=this.chart.options.locale;let o,r=t;if(e.length>1){const d=Math.max(Math.abs(e[0].value),Math.abs(e[e.length-1].value));(d<1e-4||d>1e15)&&(o="scientific"),r=function z1e(t,n){let e=n.length>3?n[2].value-n[1].value:n[1].value-n[0].value;return Math.abs(e)>=1&&t!==Math.floor(t)&&(e=t-Math.floor(t)),e}(t,e)}const s=Ua(Math.abs(r)),a=isNaN(s)?1:Math.max(Math.min(-1*Math.floor(s),20),0),l={notation:o,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),bp(t,i,l)},logarithmic(t,n,e){if(0===t)return"0";const i=e[n].significand||t/Math.pow(10,Math.floor(Ua(t)));return[1,2,3,5,10,15].includes(i)||n>.8*e.length?ZV.numeric.call(this,t,n,e):""}};var Pv={formatters:ZV};const Sc=Object.create(null),qS=Object.create(null);function vp(t,n){if(!n)return t;const e=n.split(".");for(let i=0,o=e.length;ii.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(i,o)=>GS(o.backgroundColor),this.hoverBorderColor=(i,o)=>GS(o.borderColor),this.hoverColor=(i,o)=>GS(o.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(n),this.apply(e)}set(n,e){return KS(this,n,e)}get(n){return vp(this,n)}describe(n,e){return KS(qS,n,e)}override(n,e){return KS(Sc,n,e)}route(n,e,i,o){const r=vp(this,n),s=vp(this,i),a="_"+e;Object.defineProperties(r,{[a]:{value:r[e],writable:!0},[e]:{enumerable:!0,get(){const l=this[a],d=s[o];return mt(l)?Object.assign({},d,l):qe(l,d)},set(l){this[a]=l}}})}apply(n){n.forEach(e=>e(this))}}var Dn=new $1e({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function V1e(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:n=>"onProgress"!==n&&"onComplete"!==n&&"fn"!==n}),t.set("animations",{colors:{type:"color",properties:B1e},numbers:{type:"number",properties:L1e}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:n=>0|n}}}})},function H1e(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function j1e(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(n,e)=>e.lineWidth,tickColor:(n,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Pv.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:n=>!n.startsWith("before")&&!n.startsWith("after")&&"callback"!==n&&"parser"!==n,_indexable:n=>"borderDash"!==n&&"tickBorderDash"!==n&&"dash"!==n}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:n=>"backdropPadding"!==n&&"callback"!==n,_indexable:n=>"backdropPadding"!==n})}]);function Iv(t,n,e,i,o){let r=n[o];return r||(r=n[o]=t.measureText(o).width,e.push(o)),r>i&&(i=r),i}function Mc(t,n,e){const i=t.currentDevicePixelRatio,o=0!==e?Math.max(e/2,.5):0;return Math.round((n-o)*i)/i+o}function QV(t,n){!n&&!t||((n=n||t.getContext("2d")).save(),n.resetTransform(),n.clearRect(0,0,t.width,t.height),n.restore())}function YS(t,n,e,i){!function JV(t,n,e,i,o){let r,s,a,l,d,f,m,g;const b=n.pointStyle,w=n.rotation,M=n.radius;let E=(w||0)*M1e;if(b&&"object"==typeof b&&(r=b.toString(),"[object HTMLImageElement]"===r||"[object HTMLCanvasElement]"===r))return t.save(),t.translate(e,i),t.rotate(E),t.drawImage(b,-b.width/2,-b.height/2,b.width,b.height),void t.restore();if(!(isNaN(M)||M<=0)){switch(t.beginPath(),b){default:o?t.ellipse(e,i,o/2,M,0,0,Cn):t.arc(e,i,M,0,Cn),t.closePath();break;case"triangle":f=o?o/2:M,t.moveTo(e+Math.sin(E)*f,i-Math.cos(E)*M),E+=FV,t.lineTo(e+Math.sin(E)*f,i-Math.cos(E)*M),E+=FV,t.lineTo(e+Math.sin(E)*f,i-Math.cos(E)*M),t.closePath();break;case"rectRounded":d=.516*M,l=M-d,s=Math.cos(E+kc)*l,m=Math.cos(E+kc)*(o?o/2-d:l),a=Math.sin(E+kc)*l,g=Math.sin(E+kc)*(o?o/2-d:l),t.arc(e-m,i-a,d,E-It,E-Qn),t.arc(e+g,i-s,d,E-Qn,E),t.arc(e+m,i+a,d,E,E+Qn),t.arc(e-g,i+s,d,E+Qn,E+It),t.closePath();break;case"rect":if(!w){l=Math.SQRT1_2*M,f=o?o/2:l,t.rect(e-f,i-l,2*f,2*l);break}E+=kc;case"rectRot":m=Math.cos(E)*(o?o/2:M),s=Math.cos(E)*M,a=Math.sin(E)*M,g=Math.sin(E)*(o?o/2:M),t.moveTo(e-m,i-a),t.lineTo(e+g,i-s),t.lineTo(e+m,i+a),t.lineTo(e-g,i+s),t.closePath();break;case"crossRot":E+=kc;case"cross":m=Math.cos(E)*(o?o/2:M),s=Math.cos(E)*M,a=Math.sin(E)*M,g=Math.sin(E)*(o?o/2:M),t.moveTo(e-m,i-a),t.lineTo(e+m,i+a),t.moveTo(e+g,i-s),t.lineTo(e-g,i+s);break;case"star":m=Math.cos(E)*(o?o/2:M),s=Math.cos(E)*M,a=Math.sin(E)*M,g=Math.sin(E)*(o?o/2:M),t.moveTo(e-m,i-a),t.lineTo(e+m,i+a),t.moveTo(e+g,i-s),t.lineTo(e-g,i+s),E+=kc,m=Math.cos(E)*(o?o/2:M),s=Math.cos(E)*M,a=Math.sin(E)*M,g=Math.sin(E)*(o?o/2:M),t.moveTo(e-m,i-a),t.lineTo(e+m,i+a),t.moveTo(e+g,i-s),t.lineTo(e-g,i+s);break;case"line":s=o?o/2:Math.cos(E)*M,a=Math.sin(E)*M,t.moveTo(e-s,i-a),t.lineTo(e+s,i+a);break;case"dash":t.moveTo(e,i),t.lineTo(e+Math.cos(E)*(o?o/2:M),i+Math.sin(E)*M);break;case!1:t.closePath()}t.fill(),n.borderWidth>0&&t.stroke()}}(t,n,e,i,null)}function Gs(t,n,e){return e=e||.5,!n||t&&t.x>n.left-e&&t.xn.top-e&&t.y0&&""!==r.strokeColor;let l,d;for(t.save(),t.font=o.string,function Y1e(t,n){n.translation&&t.translate(n.translation[0],n.translation[1]),ut(n.rotation)||t.rotate(n.rotation),n.color&&(t.fillStyle=n.color),n.textAlign&&(t.textAlign=n.textAlign),n.textBaseline&&(t.textBaseline=n.textBaseline)}(t,r),l=0;l+t||0;function e8(t){return function XS(t,n){const e={},i=mt(n),o=i?Object.keys(n):n,r=mt(t)?i?s=>qe(t[s],t[n[s]]):s=>t[s]:()=>t;for(const s of o)e[s]=tCe(r(s));return e}(t,{top:"y",right:"x",bottom:"y",left:"x"})}function Ji(t){const n=e8(t);return n.width=n.left+n.right,n.height=n.top+n.bottom,n}function mi(t,n){let e=qe((t=t||{}).size,(n=n||Dn.font).size);"string"==typeof e&&(e=parseInt(e,10));let i=qe(t.style,n.style);i&&!(""+i).match(J1e)&&(console.warn('Invalid font style specified: "'+i+'"'),i=void 0);const o={family:qe(t.family,n.family),lineHeight:eCe(qe(t.lineHeight,n.lineHeight),e),size:e,style:i,weight:qe(t.weight,n.weight),string:""};return o.string=function W1e(t){return!t||ut(t.size)||ut(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(o),o}function Cp(t,n,e,i){let r,s,a,o=!0;for(r=0,s=t.length;rt[0]){const r=e||t;typeof i>"u"&&(i=r8("_fallback",t));const s={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:r,_fallback:i,_getTarget:o,override:a=>ZS([a,...t],n,r,i)};return new Proxy(s,{deleteProperty:(a,l)=>(delete a[l],delete a._keys,delete t[0][l],!0),get:(a,l)=>n8(a,l,()=>function dCe(t,n,e,i){let o;for(const r of n)if(o=r8(iCe(r,t),e),typeof o<"u")return QS(t,o)?JS(e,i,t,o):o}(l,n,t,a)),getOwnPropertyDescriptor:(a,l)=>Reflect.getOwnPropertyDescriptor(a._scopes[0],l),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(a,l)=>s8(a).includes(l),ownKeys:a=>s8(a),set(a,l,d){const f=a._storage||(a._storage=o());return a[l]=f[l]=d,delete a._keys,!0}})}function Pu(t,n,e,i){const o={_cacheable:!1,_proxy:t,_context:n,_subProxy:e,_stack:new Set,_descriptors:t8(t,i),setContext:r=>Pu(t,r,e,i),override:r=>Pu(t.override(r),n,e,i)};return new Proxy(o,{deleteProperty:(r,s)=>(delete r[s],delete t[s],!0),get:(r,s,a)=>n8(r,s,()=>function oCe(t,n,e){const{_proxy:i,_context:o,_subProxy:r,_descriptors:s}=t;let a=i[n];return Ha(a)&&s.isScriptable(n)&&(a=function rCe(t,n,e,i){const{_proxy:o,_context:r,_subProxy:s,_stack:a}=e;if(a.has(t))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+t);a.add(t);let l=n(r,s||i);return a.delete(t),QS(t,l)&&(l=JS(o._scopes,o,t,l)),l}(n,a,t,e)),yn(a)&&a.length&&(a=function sCe(t,n,e,i){const{_proxy:o,_context:r,_subProxy:s,_descriptors:a}=e;if(typeof r.index<"u"&&i(t))return n[r.index%n.length];if(mt(n[0])){const l=n,d=o._scopes.filter(f=>f!==l);n=[];for(const f of l){const m=JS(d,o,t,f);n.push(Pu(m,r,s&&s[t],a))}}return n}(n,a,t,s.isIndexable)),QS(n,a)&&(a=Pu(a,o,r&&r[n],s)),a}(r,s,a)),getOwnPropertyDescriptor:(r,s)=>r._descriptors.allKeys?Reflect.has(t,s)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,s),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(r,s)=>Reflect.has(t,s),ownKeys:()=>Reflect.ownKeys(t),set:(r,s,a)=>(t[s]=a,delete r[s],!0)})}function t8(t,n={scriptable:!0,indexable:!0}){const{_scriptable:e=n.scriptable,_indexable:i=n.indexable,_allKeys:o=n.allKeys}=t;return{allKeys:o,scriptable:e,indexable:i,isScriptable:Ha(e)?e:()=>e,isIndexable:Ha(i)?i:()=>i}}const iCe=(t,n)=>t?t+HS(n):n,QS=(t,n)=>mt(n)&&"adapters"!==t&&(null===Object.getPrototypeOf(n)||n.constructor===Object);function n8(t,n,e){if(Object.prototype.hasOwnProperty.call(t,n)||"constructor"===n)return t[n];const i=e();return t[n]=i,i}function i8(t,n,e){return Ha(t)?t(n,e):t}const aCe=(t,n)=>!0===t?n:"string"==typeof t?Va(n,t):void 0;function lCe(t,n,e,i,o){for(const r of n){const s=aCe(e,r);if(s){t.add(s);const a=i8(s._fallback,e,o);if(typeof a<"u"&&a!==e&&a!==i)return a}else if(!1===s&&typeof i<"u"&&e!==i)return null}return!1}function JS(t,n,e,i){const o=n._rootScopes,r=i8(n._fallback,e,i),s=[...t,...o],a=new Set;a.add(i);let l=o8(a,s,e,r||e,i);return!(null===l||typeof r<"u"&&r!==e&&(l=o8(a,s,r,l,i),null===l))&&ZS(Array.from(a),[""],o,r,()=>function cCe(t,n,e){const i=t._getTarget();n in i||(i[n]={});const o=i[n];return yn(o)&&mt(e)?e:o||{}}(n,e,i))}function o8(t,n,e,i,o){for(;e;)e=lCe(t,n,e,i,o);return e}function r8(t,n){for(const e of n){if(!e)continue;const i=e[t];if(typeof i<"u")return i}}function s8(t){let n=t._keys;return n||(n=t._keys=function uCe(t){const n=new Set;for(const e of t)for(const i of Object.keys(e).filter(o=>!o.startsWith("_")))n.add(i);return Array.from(n)}(t._scopes)),n}const hCe=Number.EPSILON||1e-14,Iu=(t,n)=>n"x"===t?"y":"x";function fCe(t,n,e,i){const o=t.skip?n:t,r=n,s=e.skip?n:e,a=zS(r,o),l=zS(s,r);let d=a/(a+l),f=l/(a+l);d=isNaN(d)?0:d,f=isNaN(f)?0:f;const m=i*d,g=i*f;return{previous:{x:r.x-m*(s.x-o.x),y:r.y-m*(s.y-o.y)},next:{x:r.x+g*(s.x-o.x),y:r.y+g*(s.y-o.y)}}}function Rv(t,n,e){return Math.max(Math.min(t,e),n)}function bCe(t,n,e,i,o){let r,s,a,l;if(n.spanGaps&&(t=t.filter(d=>!d.skip)),"monotone"===n.cubicInterpolationMode)!function gCe(t,n="x"){const e=l8(n),i=t.length,o=Array(i).fill(0),r=Array(i);let s,a,l,d=Iu(t,0);for(s=0;st.ownerDocument.defaultView.getComputedStyle(t,null),yCe=["top","right","bottom","left"];function Ec(t,n,e){const i={};e=e?"-"+e:"";for(let o=0;o<4;o++){const r=yCe[o];i[r]=parseFloat(t[n+"-"+r+e])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}function Pc(t,n){if("native"in t)return t;const{canvas:e,currentDevicePixelRatio:i}=n,o=Nv(e),r="border-box"===o.boxSizing,s=Ec(o,"padding"),a=Ec(o,"border","width"),{x:l,y:d,box:f}=function wCe(t,n){const e=t.touches,i=e&&e.length?e[0]:t,{offsetX:o,offsetY:r}=i;let a,l,s=!1;if(((t,n,e)=>(t>0||n>0)&&(!e||!e.shadowRoot))(o,r,t.target))a=o,l=r;else{const d=n.getBoundingClientRect();a=i.clientX-d.left,l=i.clientY-d.top,s=!0}return{x:a,y:l,box:s}}(t,e),m=s.left+(f&&a.left),g=s.top+(f&&a.top);let{width:b,height:w}=n;return r&&(b-=s.width+a.width,w-=s.height+a.height),{x:Math.round((l-m)/b*e.width/i),y:Math.round((d-g)/w*e.height/i)}}const ja=t=>Math.round(10*t)/10;function c8(t,n,e){const i=n||1,o=ja(t.height*i),r=ja(t.width*i);t.height=ja(t.height),t.width=ja(t.width);const s=t.canvas;return s.style&&(e||!s.style.height&&!s.style.width)&&(s.style.height=`${t.height}px`,s.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==i||s.height!==o||s.width!==r)&&(t.currentDevicePixelRatio=i,s.height=o,s.width=r,t.ctx.setTransform(i,0,0,i,0,0),!0)}const SCe=function(){let t=!1;try{const n={get passive(){return t=!0,!1}};eM()&&(window.addEventListener("test",null,n),window.removeEventListener("test",null,n))}catch{}return t}();function d8(t,n){const e=function vCe(t,n){return Nv(t).getPropertyValue(n)}(t,n),i=e&&e.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}function Ic(t,n,e,i){return{x:t.x+e*(n.x-t.x),y:t.y+e*(n.y-t.y)}}function MCe(t,n,e,i){return{x:t.x+e*(n.x-t.x),y:"middle"===i?e<.5?t.y:n.y:"after"===i?e<1?t.y:n.y:e>0?n.y:t.y}}function DCe(t,n,e,i){const o={x:t.cp2x,y:t.cp2y},r={x:n.cp1x,y:n.cp1y},s=Ic(t,o,e),a=Ic(o,r,e),l=Ic(r,n,e),d=Ic(s,a,e),f=Ic(a,l,e);return Ic(d,f,e)}function f8(t){return"angle"===t?{between:gp,compare:P1e,normalize:Zi}:{between:$s,compare:(n,e)=>n-e,normalize:n=>n}}function p8({start:t,end:n,count:e,loop:i,style:o}){return{start:t%e,end:n%e,loop:i&&(n-t+1)%e==0,style:o}}function m8(t,n,e){if(!e)return[t];const{property:i,start:o,end:r}=e,s=n.length,{compare:a,between:l,normalize:d}=f8(i),{start:f,end:m,loop:g,style:b}=function PCe(t,n,e){const{property:i,start:o,end:r}=e,{between:s,normalize:a}=f8(i),l=n.length;let g,b,{start:d,end:f,loop:m}=t;if(m){for(d+=l,f+=l,g=0,b=l;gM||l(o,W,I)&&0!==a(o,W),oe=()=>!M||0===a(r,I)||l(r,W,I);for(let P=f,R=f;P<=m;++P)A=n[P%s],!A.skip&&(I=d(A[i]),I!==W&&(M=l(I,o,r),null===E&&ee()&&(E=0===a(I,o)?P:R),null!==E&&oe()&&(w.push(p8({start:E,end:P,loop:g,count:s,style:b})),E=null),R=P,W=I));return null!==E&&w.push(p8({start:E,end:m,loop:g,count:s,style:b})),w}function g8(t,n){const e=[],i=t.segments;for(let o=0;oa({chart:n,initial:e.initial,numSteps:s,currentStep:Math.min(i-e.start,s)}))}_refresh(){this._request||(this._running=!0,this._request=jV.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(n=Date.now()){let e=0;this._charts.forEach((i,o)=>{if(!i.running||!i.items.length)return;const r=i.items;let l,s=r.length-1,a=!1;for(;s>=0;--s)l=r[s],l._active?(l._total>i.duration&&(i.duration=l._total),l.tick(n),a=!0):(r[s]=r[r.length-1],r.pop());a&&(o.draw(),this._notify(o,i,n,"progress")),r.length||(i.running=!1,this._notify(o,i,n,"complete"),i.initial=!1),e+=r.length}),this._lastDate=n,0===e&&(this._running=!1)}_getAnims(n){const e=this._charts;let i=e.get(n);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(n,i)),i}listen(n,e,i){this._getAnims(n).listeners[e].push(i)}add(n,e){!e||!e.length||this._getAnims(n).items.push(...e)}has(n){return this._getAnims(n).items.length>0}start(n){const e=this._charts.get(n);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((i,o)=>Math.max(i,o._duration),0),this._refresh())}running(n){if(!this._running)return!1;const e=this._charts.get(n);return!(!e||!e.running||!e.items.length)}stop(n){const e=this._charts.get(n);if(!e||!e.items.length)return;const i=e.items;let o=i.length-1;for(;o>=0;--o)i[o].cancel();e.items=[],this._notify(n,e,Date.now(),"complete")}remove(n){return this._charts.delete(n)}}var qs=new LCe;const y8="transparent",BCe={boolean:(t,n,e)=>e>.5?n:t,color(t,n,e){const i=YV(t||y8),o=i.valid&&YV(n||y8);return o&&o.valid?o.mix(i,e).hexString():n},number:(t,n,e)=>t+(n-t)*e};class VCe{constructor(n,e,i,o){const r=e[i];o=Cp([n.to,o,r,n.from]);const s=Cp([n.from,r,o]);this._active=!0,this._fn=n.fn||BCe[n.type||typeof s],this._easing=_p[n.easing]||_p.linear,this._start=Math.floor(Date.now()+(n.delay||0)),this._duration=this._total=Math.floor(n.duration),this._loop=!!n.loop,this._target=e,this._prop=i,this._from=s,this._to=o,this._promises=void 0}active(){return this._active}update(n,e,i){if(this._active){this._notify(!1);const o=this._target[this._prop],r=i-this._start,s=this._duration-r;this._start=i,this._duration=Math.floor(Math.max(s,n.duration)),this._total+=r,this._loop=!!n.loop,this._to=Cp([n.to,e,o,n.from]),this._from=Cp([n.from,o,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(n){const e=n-this._start,i=this._duration,o=this._prop,r=this._from,s=this._loop,a=this._to;let l;if(this._active=r!==a&&(s||e1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[o]=this._fn(r,a,l))}wait(){const n=this._promises||(this._promises=[]);return new Promise((e,i)=>{n.push({res:e,rej:i})})}_notify(n){const e=n?"res":"rej",i=this._promises||[];for(let o=0;o{const r=n[o];if(!mt(r))return;const s={};for(const a of e)s[a]=r[a];(yn(r.properties)&&r.properties||[o]).forEach(a=>{(a===o||!i.has(a))&&i.set(a,s)})})}_animateOptions(n,e){const i=e.options,o=function UCe(t,n){if(!n)return;let e=t.options;if(e)return e.$shared&&(t.options=e=Object.assign({},e,{$shared:!1,$animations:{}})),e;t.options=n}(n,i);if(!o)return[];const r=this._createAnimations(o,i);return i.$shared&&function HCe(t,n){const e=[],i=Object.keys(n);for(let o=0;o{n.options=i},()=>{}),r}_createAnimations(n,e){const i=this._properties,o=[],r=n.$animations||(n.$animations={}),s=Object.keys(e),a=Date.now();let l;for(l=s.length-1;l>=0;--l){const d=s[l];if("$"===d.charAt(0))continue;if("options"===d){o.push(...this._animateOptions(n,e));continue}const f=e[d];let m=r[d];const g=i.get(d);if(m){if(g&&m.active()){m.update(g,f,a);continue}m.cancel()}g&&g.duration?(r[d]=m=new VCe(g,n,d,f),o.push(m)):n[d]=f}return o}update(n,e){if(0===this._properties.size)return void Object.assign(n,e);const i=this._createAnimations(n,e);return i.length?(qs.add(this._chart,i),!0):void 0}}function w8(t,n){const e=t&&t.options||{},i=e.reverse,o=void 0===e.min?n:0,r=void 0===e.max?n:0;return{start:i?r:o,end:i?o:r}}function x8(t,n){const e=[],i=t._getSortedDatasetMetas(n);let o,r;for(o=0,r=i.length;o0||!e&&r<0)return o.index}return null}function M8(t,n){const{chart:e,_cachedMeta:i}=t,o=e._stacks||(e._stacks={}),{iScale:r,vScale:s,index:a}=i,l=r.axis,d=s.axis,f=function WCe(t,n,e){return`${t.id}.${n.id}.${e.stack||e.type}`}(r,s,i),m=n.length;let g;for(let b=0;be[i].axis===n).shift()}function wp(t,n){const e=t.controller.index,i=t.vScale&&t.vScale.axis;if(i){n=n||t._parsed;for(const o of n){const r=o._stacks;if(!r||void 0===r[i]||void 0===r[i][e])return;delete r[i][e],void 0!==r[i]._visualValues&&void 0!==r[i]._visualValues[e]&&delete r[i]._visualValues[e]}}}const oM=t=>"reset"===t||"none"===t,D8=(t,n)=>n?t:Object.assign({},t);let $a=(()=>class t{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,i){this.chart=e,this._ctx=e.ctx,this.index=i,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=nM(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(e){this.index!==e&&wp(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,i=this._cachedMeta,o=this.getDataset(),r=(g,b,w,M)=>"x"===g?b:"r"===g?M:w,s=i.xAxisID=qe(o.xAxisID,iM(e,"x")),a=i.yAxisID=qe(o.yAxisID,iM(e,"y")),l=i.rAxisID=qe(o.rAxisID,iM(e,"r")),d=i.indexAxis,f=i.iAxisID=r(d,s,a,l),m=i.vAxisID=r(d,a,s,l);i.xScale=this.getScaleForId(s),i.yScale=this.getScaleForId(a),i.rScale=this.getScaleForId(l),i.iScale=this.getScaleForId(f),i.vScale=this.getScaleForId(m)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const i=this._cachedMeta;return e===i.iScale?i.vScale:i.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&UV(this._data,this),e._stacked&&wp(e)}_dataCheck(){const e=this.getDataset(),i=e.data||(e.data=[]),o=this._data;if(mt(i))this._data=function $Ce(t,n){const{iScale:e,vScale:i}=n,o="x"===e.axis?"x":"y",r="x"===i.axis?"x":"y",s=Object.keys(t),a=new Array(s.length);let l,d,f;for(l=0,d=s.length;l{const i="_onData"+HS(e),o=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...r){const s=o.apply(this,r);return t._chartjs.listeners.forEach(a=>{"function"==typeof a[i]&&a[i](...r)}),s}})}))}(i,this),this._syncList=[],this._data=i}}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const i=this._cachedMeta,o=this.getDataset();let r=!1;this._dataCheck();const s=i._stacked;i._stacked=nM(i.vScale,i),i.stack!==o.stack&&(r=!0,wp(i),i.stack=o.stack),this._resyncElements(e),(r||s!==i._stacked)&&(M8(this,i._parsed),i._stacked=nM(i.vScale,i))}configure(){const e=this.chart.config,i=e.datasetScopeKeys(this._type),o=e.getOptionScopes(this.getDataset(),i,!0);this.options=e.createResolver(o,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,i){const{_cachedMeta:o,_data:r}=this,{iScale:s,_stacked:a}=o,l=s.axis;let m,g,b,d=0===e&&i===r.length||o._sorted,f=e>0&&o._parsed[e-1];if(!1===this._parsing)o._parsed=r,o._sorted=!0,b=r;else{b=yn(r[e])?this.parseArrayData(o,r,e,i):mt(r[e])?this.parseObjectData(o,r,e,i):this.parsePrimitiveData(o,r,e,i);const w=()=>null===g[l]||f&&g[l]t&&!n.hidden&&n._stacked&&{keys:x8(this.chart,!0),values:null})(i,o),f={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:m,max:g}=function GCe(t){const{min:n,max:e,minDefined:i,maxDefined:o}=t.getUserBounds();return{min:i?n:Number.NEGATIVE_INFINITY,max:o?e:Number.POSITIVE_INFINITY}}(l);let b,w;function M(){w=r[b];const E=w[l.axis];return!jn(w[e.axis])||m>E||g=0;--b)if(!M()){this.updateRangeFromParsed(f,e,w,d);break}return f}getAllParsedValues(e){const i=this._cachedMeta._parsed,o=[];let r,s,a;for(r=0,s=i.length;r=0&&ethis.getContext(o,r,i),g);return E.$shared&&(E.$shared=d,s[a]=Object.freeze(D8(E,d))),E}_resolveAnimations(e,i,o){const r=this.chart,s=this._cachedDataOpts,a=`animation-${i}`,l=s[a];if(l)return l;let d;if(!1!==r.options.animation){const m=this.chart.config,g=m.datasetAnimationScopeKeys(this._type,i),b=m.getOptionScopes(this.getDataset(),g);d=m.createResolver(b,this.getContext(e,o,i))}const f=new C8(r,d&&d.animations);return d&&d._cacheable&&(s[a]=Object.freeze(f)),f}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,i){return!i||oM(e)||this.chart._animationsDisabled}_getSharedOptions(e,i){const o=this.resolveDataElementOptions(e,i),r=this._sharedOptions,s=this.getSharedOptions(o),a=this.includeOptions(i,s)||s!==r;return this.updateSharedOptions(s,i,o),{sharedOptions:s,includeOptions:a}}updateElement(e,i,o,r){oM(r)?Object.assign(e,o):this._resolveAnimations(i,r).update(e,o)}updateSharedOptions(e,i,o){e&&!oM(i)&&this._resolveAnimations(void 0,i).update(e,o)}_setStyle(e,i,o,r){e.active=r;const s=this.getStyle(i,r);this._resolveAnimations(i,o,r).update(e,{options:!r&&this.getSharedOptions(s)||s})}removeHoverStyle(e,i,o){this._setStyle(e,o,"active",!1)}setHoverStyle(e,i,o){this._setStyle(e,o,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const i=this._data,o=this._cachedMeta.data;for(const[l,d,f]of this._syncList)this[l](d,f);this._syncList=[];const r=o.length,s=i.length,a=Math.min(s,r);a&&this.parse(0,a),s>r?this._insertElements(r,s-r,e):s{for(f.length+=i,l=f.length-1;l>=a;l--)f[l]=f[l-i]};for(d(s),l=e;lclass t extends $a{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(e){const i=this._cachedMeta,{dataset:o,data:r=[],_dataset:s}=i,a=this.chart._animationsDisabled;let{start:l,count:d}=function WV(t,n,e){const i=n.length;let o=0,r=i;if(t._sorted){const{iScale:s,vScale:a,_parsed:l}=t,d=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,f=s.axis,{min:m,max:g,minDefined:b,maxDefined:w}=s.getUserBounds();if(b){if(o=Math.min(Ws(l,f,m).lo,e?i:Ws(n,f,s.getPixelForValue(m)).lo),d){const M=l.slice(0,o+1).reverse().findIndex(E=>!ut(E[a.axis]));o-=Math.max(0,M)}o=Ti(o,0,i-1)}if(w){let M=Math.max(Ws(l,s.axis,g,!0).hi+1,e?0:Ws(n,f,s.getPixelForValue(g),!0).hi+1);if(d){const E=l.slice(M-1).findIndex(I=>!ut(I[a.axis]));M+=Math.max(0,E)}r=Ti(M,o,i)-o}else r=i-o}return{start:o,count:r}}(i,r,a);this._drawStart=l,this._drawCount=d,function GV(t){const{xScale:n,yScale:e,_scaleRanges:i}=t,o={xmin:n.min,xmax:n.max,ymin:e.min,ymax:e.max};if(!i)return t._scaleRanges=o,!0;const r=i.xmin!==n.min||i.xmax!==n.max||i.ymin!==e.min||i.ymax!==e.max;return Object.assign(i,o),r}(i)&&(l=0,d=r.length),o._chart=this.chart,o._datasetIndex=this.index,o._decimated=!!s._decimated,o.points=r;const f=this.resolveDatasetElementOptions(e);this.options.showLine||(f.borderWidth=0),f.segment=this.options.segment,this.updateElement(o,void 0,{animated:!a,options:f},e),this.updateElements(r,l,d,e)}updateElements(e,i,o,r){const s="reset"===r,{iScale:a,vScale:l,_stacked:d,_dataset:f}=this._cachedMeta,{sharedOptions:m,includeOptions:g}=this._getSharedOptions(i,r),b=a.axis,w=l.axis,{spanGaps:M,segment:E}=this.options,I=Eu(M)?M:Number.POSITIVE_INFINITY,A=this.chart._animationsDisabled||s||"none"===r,W=i+o,q=e.length;let Y=i>0&&this.getParsed(i-1);for(let ee=0;ee=W){P.skip=!0;continue}const R=this.getParsed(ee),B=ut(R[w]),$=P[b]=a.getPixelForValue(R[b],ee),z=P[w]=s||B?l.getBasePixel():l.getPixelForValue(d?this.applyStack(l,R,d):R[w],ee);P.skip=isNaN($)||isNaN(z)||B,P.stop=ee>0&&Math.abs(R[b]-Y[b])>I,E&&(P.parsed=R,P.raw=f.data[ee]),g&&(P.options=m||this.resolveDataElementOptions(ee,oe.active?"active":r)),A||this.updateElement(oe,ee,P,r),Y=R}}getMaxOverflow(){const e=this._cachedMeta,i=e.dataset,o=i.options&&i.options.borderWidth||0,r=e.data||[];if(!r.length)return o;const s=r[0].size(this.resolveDataElementOptions(0)),a=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(o,s,a)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}})();function h0e(t,n,e,i){const{controller:o,data:r,_sorted:s}=t,a=o._cachedMeta.iScale,l=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null;if(a&&n===a.axis&&"r"!==n&&s&&r.length){const d=a._reversePixels?O1e:Ws;if(!i){const f=d(r,n,e);if(l){const{vScale:m}=o._cachedMeta,{_parsed:g}=t,b=g.slice(0,f.lo+1).reverse().findIndex(M=>!ut(M[m.axis]));f.lo-=Math.max(0,b);const w=g.slice(f.hi).findIndex(M=>!ut(M[m.axis]));f.hi+=Math.max(0,w)}return f}if(o._sharedOptions){const f=r[0],m="function"==typeof f.getRange&&f.getRange(n);if(m){const g=d(r,n,e-m),b=d(r,n,e+m);return{lo:g.lo,hi:b.hi}}}}return{lo:0,hi:r.length-1}}function xp(t,n,e,i,o){const r=t.getSortedVisibleDatasetMetas(),s=e[n];for(let a=0,l=r.length;a{l[s]&&l[s](n[e],o)&&(r.push({element:l,datasetIndex:d,index:f}),a=a||l.inRange(n.x,n.y,o))}),i&&!a?[]:r}var g0e={evaluateInteractionItems:xp,modes:{index(t,n,e,i){const o=Pc(n,t),r=e.axis||"x",s=e.includeInvisible||!1,a=e.intersect?lM(t,o,r,i,s):cM(t,o,r,!1,i,s),l=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach(d=>{const f=a[0].index,m=d.data[f];m&&!m.skip&&l.push({element:m,datasetIndex:d.index,index:f})}),l):[]},dataset(t,n,e,i){const o=Pc(n,t),r=e.axis||"xy",s=e.includeInvisible||!1;let a=e.intersect?lM(t,o,r,i,s):cM(t,o,r,!1,i,s);if(a.length>0){const l=a[0].datasetIndex,d=t.getDatasetMeta(l).data;a=[];for(let f=0;flM(t,Pc(n,t),e.axis||"xy",i,e.includeInvisible||!1),nearest:(t,n,e,i)=>cM(t,Pc(n,t),e.axis||"xy",e.intersect,i,e.includeInvisible||!1),x:(t,n,e,i)=>R8(t,Pc(n,t),"x",e.intersect,i),y:(t,n,e,i)=>R8(t,Pc(n,t),"y",e.intersect,i)}};const F8=["left","top","right","bottom"];function kp(t,n){return t.filter(e=>e.pos===n)}function N8(t,n){return t.filter(e=>-1===F8.indexOf(e.pos)&&e.box.axis===n)}function Sp(t,n){return t.sort((e,i)=>{const o=n?i:e,r=n?e:i;return o.weight===r.weight?o.index-r.index:o.weight-r.weight})}function L8(t,n,e,i){return Math.max(t[e],n[e])+Math.max(t[i],n[i])}function B8(t,n){t.top=Math.max(t.top,n.top),t.left=Math.max(t.left,n.left),t.bottom=Math.max(t.bottom,n.bottom),t.right=Math.max(t.right,n.right)}function C0e(t,n,e,i){const{pos:o,box:r}=e,s=t.maxPadding;if(!mt(o)){e.size&&(t[o]-=e.size);const m=i[e.stack]||{size:0,count:1};m.size=Math.max(m.size,e.horizontal?r.height:r.width),e.size=m.size/m.count,t[o]+=e.size}r.getPadding&&B8(s,r.getPadding());const a=Math.max(0,n.outerWidth-L8(s,t,"left","right")),l=Math.max(0,n.outerHeight-L8(s,t,"top","bottom")),d=a!==t.w,f=l!==t.h;return t.w=a,t.h=l,e.horizontal?{same:d,other:f}:{same:f,other:d}}function x0e(t,n){const e=n.maxPadding;return function i(o){const r={left:0,top:0,right:0,bottom:0};return o.forEach(s=>{r[s]=Math.max(n[s],e[s])}),r}(t?["left","right"]:["top","bottom"])}function Mp(t,n,e,i){const o=[];let r,s,a,l,d,f;for(r=0,s=t.length,d=0;rd.box.fullSize),!0),i=Sp(kp(n,"left"),!0),o=Sp(kp(n,"right")),r=Sp(kp(n,"top"),!0),s=Sp(kp(n,"bottom")),a=N8(n,"x"),l=N8(n,"y");return{fullSize:e,leftAndTop:i.concat(r),rightAndBottom:o.concat(l).concat(s).concat(a),chartArea:kp(n,"chartArea"),vertical:i.concat(o).concat(l),horizontal:r.concat(s).concat(a)}}(t.boxes),l=a.vertical,d=a.horizontal;Wt(t.boxes,M=>{"function"==typeof M.beforeLayout&&M.beforeLayout()});const f=l.reduce((M,E)=>E.box.options&&!1===E.box.options.display?M:M+1,0)||1,m=Object.freeze({outerWidth:n,outerHeight:e,padding:o,availableWidth:r,availableHeight:s,vBoxMaxWidth:r/2/f,hBoxMaxHeight:s/2}),g=Object.assign({},o);B8(g,Ji(i));const b=Object.assign({maxPadding:g,w:r,h:s,x:o.left,y:o.top},o),w=function v0e(t,n){const e=function b0e(t){const n={};for(const e of t){const{stack:i,pos:o,stackWeight:r}=e;if(!i||!F8.includes(o))continue;const s=n[i]||(n[i]={count:0,placed:0,weight:0,size:0});s.count++,s.weight+=r}return n}(t),{vBoxMaxWidth:i,hBoxMaxHeight:o}=n;let r,s,a;for(r=0,s=t.length;r{const E=M.box;Object.assign(E,t.chartArea),E.update(b.w,b.h,{left:0,top:0,right:0,bottom:0})})}};class H8{acquireContext(n,e){}releaseContext(n){return!1}addEventListener(n,e,i){}removeEventListener(n,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(n,e,i,o){return e=Math.max(0,e||n.width),i=i||n.height,{width:e,height:Math.max(0,o?Math.floor(e/o):i)}}isAttached(n){return!0}updateConfig(n){}}class k0e extends H8{acquireContext(n){return n&&n.getContext&&n.getContext("2d")||null}updateConfig(n){n.options.animation=!1}}const Vv="$chartjs",S0e={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},U8=t=>null===t||""===t,z8=!!SCe&&{passive:!0};function T0e(t,n,e){t&&t.canvas&&t.canvas.removeEventListener(n,e,z8)}function Hv(t,n){for(const e of t)if(e===n||e.contains(n))return!0}function P0e(t,n,e){const i=t.canvas,o=new MutationObserver(r=>{let s=!1;for(const a of r)s=s||Hv(a.addedNodes,i),s=s&&!Hv(a.removedNodes,i);s&&e()});return o.observe(document,{childList:!0,subtree:!0}),o}function I0e(t,n,e){const i=t.canvas,o=new MutationObserver(r=>{let s=!1;for(const a of r)s=s||Hv(a.removedNodes,i),s=s&&!Hv(a.addedNodes,i);s&&e()});return o.observe(document,{childList:!0,subtree:!0}),o}const Dp=new Map;let j8=0;function $8(){const t=window.devicePixelRatio;t!==j8&&(j8=t,Dp.forEach((n,e)=>{e.currentDevicePixelRatio!==t&&n()}))}function R0e(t,n,e){const i=t.canvas,o=i&&tM(i);if(!o)return;const r=$V((a,l)=>{const d=o.clientWidth;e(a,l),d{const l=a[0],d=l.contentRect.width,f=l.contentRect.height;0===d&&0===f||r(d,f)});return s.observe(o),function O0e(t,n){Dp.size||window.addEventListener("resize",$8),Dp.set(t,n)}(t,r),s}function dM(t,n,e){e&&e.disconnect(),"resize"===n&&function A0e(t){Dp.delete(t),Dp.size||window.removeEventListener("resize",$8)}(t)}function F0e(t,n,e){const i=t.canvas,o=$V(r=>{null!==t.ctx&&e(function E0e(t,n){const e=S0e[t.type]||t.type,{x:i,y:o}=Pc(t,n);return{type:e,chart:n,native:t,x:void 0!==i?i:null,y:void 0!==o?o:null}}(r,t))},t);return function D0e(t,n,e){t&&t.addEventListener(n,e,z8)}(i,n,o),o}class N0e extends H8{acquireContext(n,e){const i=n&&n.getContext&&n.getContext("2d");return i&&i.canvas===n?(function M0e(t,n){const e=t.style,i=t.getAttribute("height"),o=t.getAttribute("width");if(t[Vv]={initial:{height:i,width:o,style:{display:e.display,height:e.height,width:e.width}}},e.display=e.display||"block",e.boxSizing=e.boxSizing||"border-box",U8(o)){const r=d8(t,"width");void 0!==r&&(t.width=r)}if(U8(i))if(""===t.style.height)t.height=t.width/(n||2);else{const r=d8(t,"height");void 0!==r&&(t.height=r)}}(n,e),i):null}releaseContext(n){const e=n.canvas;if(!e[Vv])return!1;const i=e[Vv].initial;["height","width"].forEach(r=>{const s=i[r];ut(s)?e.removeAttribute(r):e.setAttribute(r,s)});const o=i.style||{};return Object.keys(o).forEach(r=>{e.style[r]=o[r]}),e.width=e.width,delete e[Vv],!0}addEventListener(n,e,i){this.removeEventListener(n,e),(n.$proxies||(n.$proxies={}))[e]=({attach:P0e,detach:I0e,resize:R0e}[e]||F0e)(n,e,i)}removeEventListener(n,e){const i=n.$proxies||(n.$proxies={}),o=i[e];o&&(({attach:dM,detach:dM,resize:dM}[e]||T0e)(n,e,o),i[e]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(n,e,i,o){return function kCe(t,n,e,i){const o=Nv(t),r=Ec(o,"margin"),s=Fv(o.maxWidth,t,"clientWidth")||Tv,a=Fv(o.maxHeight,t,"clientHeight")||Tv,l=function xCe(t,n,e){let i,o;if(void 0===n||void 0===e){const r=t&&tM(t);if(r){const s=r.getBoundingClientRect(),a=Nv(r),l=Ec(a,"border","width"),d=Ec(a,"padding");n=s.width-d.width-l.width,e=s.height-d.height-l.height,i=Fv(a.maxWidth,r,"clientWidth"),o=Fv(a.maxHeight,r,"clientHeight")}else n=t.clientWidth,e=t.clientHeight}return{width:n,height:e,maxWidth:i||Tv,maxHeight:o||Tv}}(t,n,e);let{width:d,height:f}=l;if("content-box"===o.boxSizing){const g=Ec(o,"border","width"),b=Ec(o,"padding");d-=b.width+g.width,f-=b.height+g.height}return d=Math.max(0,d-r.width),f=Math.max(0,i?d/i:f-r.height),d=ja(Math.min(d,s,l.maxWidth)),f=ja(Math.min(f,a,l.maxHeight)),d&&!f&&(f=ja(d/2)),(void 0!==n||void 0!==e)&&i&&l.height&&f>l.height&&(f=l.height,d=ja(Math.floor(f*i))),{width:d,height:f}}(n,e,i,o)}isAttached(n){const e=n&&tM(n);return!(!e||!e.isConnected)}}class Ks{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(n){const{x:e,y:i}=this.getProps(["x","y"],n);return{x:e,y:i}}hasValue(){return Eu(this.x)&&Eu(this.y)}getProps(n,e){const i=this.$animations;if(!e||!i)return this;const o={};return n.forEach(r=>{o[r]=i[r]&&i[r].active()?i[r]._to:this[r]}),o}}function Uv(t,n,e,i,o){const r=qe(i,0),s=Math.min(qe(o,t.length),t.length);let l,d,f,a=0;for(e=Math.ceil(e),o&&(l=o-i,e=l/Math.floor(l/e)),f=r;f<0;)a++,f=Math.round(r+a*e);for(d=Math.max(r,0);d"top"===n||"left"===n?t[n]+e:t[n]-e,G8=(t,n)=>Math.min(n||t,t);function q8(t,n){const e=[],i=t.length/n,o=t.length;let r=0;for(;rs+a)))return l}function Tp(t){return t.drawTicks?t.tickLength:0}function K8(t,n){if(!t.display)return 0;const e=mi(t.font,n),i=Ji(t.padding);return(yn(t.text)?t.text.length:1)*e.lineHeight+i.height}function Y0e(t,n,e){let i=(t=>"start"===t?"left":"end"===t?"right":"center")(t);return(e&&"right"!==n||!e&&"right"===n)&&(i=(t=>"left"===t?"right":"right"===t?"left":t)(i)),i}class Ac extends Ks{constructor(n){super(),this.id=n.id,this.type=n.type,this.options=void 0,this.ctx=n.ctx,this.chart=n.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(n){this.options=n.setContext(this.getContext()),this.axis=n.axis,this._userMin=this.parse(n.min),this._userMax=this.parse(n.max),this._suggestedMin=this.parse(n.suggestedMin),this._suggestedMax=this.parse(n.suggestedMax)}parse(n,e){return n}getUserBounds(){let{_userMin:n,_userMax:e,_suggestedMin:i,_suggestedMax:o}=this;return n=No(n,Number.POSITIVE_INFINITY),e=No(e,Number.NEGATIVE_INFINITY),i=No(i,Number.POSITIVE_INFINITY),o=No(o,Number.NEGATIVE_INFINITY),{min:No(n,i),max:No(e,o),minDefined:jn(n),maxDefined:jn(e)}}getMinMax(n){let s,{min:e,max:i,minDefined:o,maxDefined:r}=this.getUserBounds();if(o&&r)return{min:e,max:i};const a=this.getMatchingVisibleMetas();for(let l=0,d=a.length;li?i:e,i=o&&e>i?e:i,{min:No(e,No(i,e)),max:No(i,No(e,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const n=this.chart.data;return this.options.labels||(this.isHorizontal()?n.xLabels:n.yLabels)||n.labels||[]}getLabelItems(n=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(n))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){hn(this.options.beforeUpdate,[this])}update(n,e,i){const{beginAtZero:o,grace:r,ticks:s}=this.options,a=s.sampleSize;this.beforeUpdate(),this.maxWidth=n,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=function nCe(t,n,e){const{min:i,max:o}=t,r=((t,n)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*n:+t)(n,(o-i)/2),s=(a,l)=>e&&0===a?0:a+l;return{min:s(i,-Math.abs(r)),max:s(o,r)}}(this,r,o),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=ao)return function z0e(t,n,e,i){let s,o=0,r=e[0];for(i=Math.ceil(i),s=0;so-r).pop(),n}(i);for(let s=0,a=r.length-1;so)return l}return Math.max(o,1)}(r,n,o);if(s>0){let m,g;const b=s>1?Math.round((l-a)/(s-1)):null;for(Uv(n,d,f,ut(b)?0:a-b,a),m=0,g=s-1;m=r||i<=1||!this.isHorizontal())return void(this.labelRotation=o);const f=this._getLabelSizes(),m=f.widest.width,g=f.highest.height,b=Ti(this.chart.width-m,0,this.maxWidth);a=n.offset?this.maxWidth/i:b/(i-1),m+6>a&&(a=b/(i-(n.offset?.5:1)),l=this.maxHeight-Tp(n.grid)-e.padding-K8(n.title,this.chart.options.font),d=Math.sqrt(m*m+g*g),s=function US(t){return t*(180/It)}(Math.min(Math.asin(Ti((f.highest.height+6)/a,-1,1)),Math.asin(Ti(l/d,-1,1))-Math.asin(Ti(g/d,-1,1)))),s=Math.max(o,Math.min(r,s))),this.labelRotation=s}afterCalculateLabelRotation(){hn(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){hn(this.options.beforeFit,[this])}fit(){const n={width:0,height:0},{chart:e,options:{ticks:i,title:o,grid:r}}=this,s=this._isVisible(),a=this.isHorizontal();if(s){const l=K8(o,e.options.font);if(a?(n.width=this.maxWidth,n.height=Tp(r)+l):(n.height=this.maxHeight,n.width=Tp(r)+l),i.display&&this.ticks.length){const{first:d,last:f,widest:m,highest:g}=this._getLabelSizes(),b=2*i.padding,w=Or(this.labelRotation),M=Math.cos(w),E=Math.sin(w);a?n.height=Math.min(this.maxHeight,n.height+(i.mirror?0:E*m.width+M*g.height)+b):n.width=Math.min(this.maxWidth,n.width+(i.mirror?0:M*m.width+E*g.height)+b),this._calculatePadding(d,f,E,M)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=n.height):(this.width=n.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(n,e,i,o){const{ticks:{align:r,padding:s},position:a}=this.options,l=0!==this.labelRotation,d="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const f=this.getPixelForTick(0)-this.left,m=this.right-this.getPixelForTick(this.ticks.length-1);let g=0,b=0;l?d?(g=o*n.width,b=i*e.height):(g=i*n.height,b=o*e.width):"start"===r?b=e.width:"end"===r?g=n.width:"inner"!==r&&(g=n.width/2,b=e.width/2),this.paddingLeft=Math.max((g-f+s)*this.width/(this.width-f),0),this.paddingRight=Math.max((b-m+s)*this.width/(this.width-m),0)}else{let f=e.height/2,m=n.height/2;"start"===r?(f=0,m=n.height):"end"===r&&(f=e.height,m=0),this.paddingTop=f+s,this.paddingBottom=m+s}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){hn(this.options.afterFit,[this])}isHorizontal(){const{axis:n,position:e}=this.options;return"top"===e||"bottom"===e||"x"===n}isFullSize(){return this.options.fullSize}_convertTicksToLabels(n){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(n),e=0,i=n.length;e{const i=e.gc,o=i.length/2;let r;if(o>n){for(r=0;r({width:s[R]||0,height:a[R]||0});return{first:P(0),last:P(e-1),widest:P(ee),highest:P(oe),widths:s,heights:a}}getLabelForValue(n){return n}getPixelForValue(n,e){return NaN}getValueForPixel(n){}getPixelForTick(n){const e=this.ticks;return n<0||n>e.length-1?null:this.getPixelForValue(e[n].value)}getPixelForDecimal(n){this._reversePixels&&(n=1-n);const e=this._startPixel+n*this._length;return function I1e(t){return Ti(t,-32768,32767)}(this._alignToPixels?Mc(this.chart,e,0):e)}getDecimalForPixel(n){const e=(n-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:n,max:e}=this;return n<0&&e<0?e:n>0&&e>0?n:0}getContext(n){const e=this.ticks||[];if(n>=0&&na*o?a/i:l/o:l*o0}_computeGridLineItems(n){const e=this.axis,i=this.chart,o=this.options,{grid:r,position:s,border:a}=o,l=r.offset,d=this.isHorizontal(),m=this.ticks.length+(l?1:0),g=Tp(r),b=[],w=a.setContext(this.getContext()),M=w.display?w.width:0,E=M/2,I=function(N){return Mc(i,N,M)};let A,W,q,Y,ee,oe,P,R,B,$,z,G;if("top"===s)A=I(this.bottom),oe=this.bottom-g,R=A-E,$=I(n.top)+E,G=n.bottom;else if("bottom"===s)A=I(this.top),$=n.top,G=I(n.bottom)-E,oe=A+E,R=this.top+g;else if("left"===s)A=I(this.right),ee=this.right-g,P=A-E,B=I(n.left)+E,z=n.right;else if("right"===s)A=I(this.left),B=n.left,z=I(n.right)-E,ee=A+E,P=this.left+g;else if("x"===e){if("center"===s)A=I((n.top+n.bottom)/2+.5);else if(mt(s)){const N=Object.keys(s)[0];A=I(this.chart.scales[N].getPixelForValue(s[N]))}$=n.top,G=n.bottom,oe=A+E,R=oe+g}else if("y"===e){if("center"===s)A=I((n.left+n.right)/2);else if(mt(s)){const N=Object.keys(s)[0];A=I(this.chart.scales[N].getPixelForValue(s[N]))}ee=A-E,P=ee-g,B=n.left,z=n.right}const J=qe(o.ticks.maxTicksLimit,m),U=Math.max(1,Math.ceil(m/J));for(W=0;W0&&(ct-=Re/2)}xe={left:ct,top:Qe,width:Re+Ie.width,height:ht+Ie.height,color:U.backdropColor}}E.push({label:q,font:R,textOffset:z,options:{rotation:M,color:K,strokeColor:j,strokeWidth:Q,textAlign:he,textBaseline:G,translation:[Y,ee],backdrop:xe}})}return E}_getXAxisLabelAlignment(){const{position:n,ticks:e}=this.options;if(-Or(this.labelRotation))return"top"===n?"left":"right";let o="center";return"start"===e.align?o="left":"end"===e.align?o="right":"inner"===e.align&&(o="inner"),o}_getYAxisLabelAlignment(n){const{position:e,ticks:{crossAlign:i,mirror:o,padding:r}}=this.options,a=n+r,l=this._getLabelSizes().widest.width;let d,f;return"left"===e?o?(f=this.right+r,"near"===i?d="left":"center"===i?(d="center",f+=l/2):(d="right",f+=l)):(f=this.right-a,"near"===i?d="right":"center"===i?(d="center",f-=l/2):(d="left",f=this.left)):"right"===e?o?(f=this.left+r,"near"===i?d="right":"center"===i?(d="center",f-=l/2):(d="left",f-=l)):(f=this.left+a,"near"===i?d="left":"center"===i?(d="center",f+=l/2):(d="right",f=this.right)):d="right",{textAlign:d,x:f}}_computeLabelArea(){if(this.options.ticks.mirror)return;const n=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:n.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:n.width}:void 0}drawBackground(){const{ctx:n,options:{backgroundColor:e},left:i,top:o,width:r,height:s}=this;e&&(n.save(),n.fillStyle=e,n.fillRect(i,o,r,s),n.restore())}getLineWidthForValue(n){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const o=this.ticks.findIndex(r=>r.value===n);return o>=0?e.setContext(this.getContext(o)).lineWidth:0}drawGrid(n){const e=this.options.grid,i=this.ctx,o=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(n));let r,s;const a=(l,d,f)=>{!f.width||!f.color||(i.save(),i.lineWidth=f.width,i.strokeStyle=f.color,i.setLineDash(f.borderDash||[]),i.lineDashOffset=f.borderDashOffset,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(d.x,d.y),i.stroke(),i.restore())};if(e.display)for(r=0,s=o.length;r{this.drawBackground(),this.drawGrid(r),this.drawTitle()}},{z:o,draw:()=>{this.drawBorder()}},{z:e,draw:r=>{this.drawLabels(r)}}]:[{z:e,draw:r=>{this.draw(r)}}]}getMatchingVisibleMetas(n){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",o=[];let r,s;for(r=0,s=e.length;r{const i=e.split("."),o=i.pop(),r=[t].concat(i).join("."),s=n[e].split("."),a=s.pop(),l=s.join(".");Dn.route(r,o,l,a)})}(n,t.defaultRoutes),t.descriptors&&Dn.describe(n,t.descriptors)}(n,s,i),this.override&&Dn.override(n.id,n.overrides)),s}get(n){return this.items[n]}unregister(n){const e=this.items,i=n.id,o=this.scope;i in e&&delete e[i],o&&i in Dn[o]&&(delete Dn[o][i],this.override&&delete Sc[i])}}class ewe{constructor(){this.controllers=new zv($a,"datasets",!0),this.elements=new zv(Ks,"elements"),this.plugins=new zv(Object,"plugins"),this.scales=new zv(Ac,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...n){this._each("register",n)}remove(...n){this._each("unregister",n)}addControllers(...n){this._each("register",n,this.controllers)}addElements(...n){this._each("register",n,this.elements)}addPlugins(...n){this._each("register",n,this.plugins)}addScales(...n){this._each("register",n,this.scales)}getController(n){return this._get(n,this.controllers,"controller")}getElement(n){return this._get(n,this.elements,"element")}getPlugin(n){return this._get(n,this.plugins,"plugin")}getScale(n){return this._get(n,this.scales,"scale")}removeControllers(...n){this._each("unregister",n,this.controllers)}removeElements(...n){this._each("unregister",n,this.elements)}removePlugins(...n){this._each("unregister",n,this.plugins)}removeScales(...n){this._each("unregister",n,this.scales)}_each(n,e,i){[...e].forEach(o=>{const r=i||this._getRegistryForType(o);i||r.isForType(o)||r===this.plugins&&o.id?this._exec(n,r,o):Wt(o,s=>{const a=i||this._getRegistryForType(s);this._exec(n,a,s)})})}_exec(n,e,i){const o=HS(n);hn(i["before"+o],[],i),e[n](i),hn(i["after"+o],[],i)}_getRegistryForType(n){for(let e=0;er.filter(a=>!s.some(l=>a.plugin.id===l.plugin.id));this._notify(o(e,i),n,"stop"),this._notify(o(i,e),n,"start")}}function iwe(t,n){return n||!1!==t?!0===t?{}:t:null}function rwe(t,{plugin:n,local:e},i,o){const r=t.pluginScopeKeys(n),s=t.getOptionScopes(i,r);return e&&n.defaults&&s.push(n.defaults),t.createResolver(s,o,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function uM(t,n){return((n.datasets||{})[t]||{}).indexAxis||n.indexAxis||(Dn.datasets[t]||{}).indexAxis||"x"}function Y8(t){if("x"===t||"y"===t||"r"===t)return t}function lwe(t){return"top"===t||"bottom"===t?"x":"left"===t||"right"===t?"y":void 0}function hM(t,...n){if(Y8(t))return t;for(const e of n){const i=e.axis||lwe(e.position)||t.length>1&&Y8(t[0].toLowerCase());if(i)return i}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function X8(t,n,e){if(e[n+"AxisID"]===t)return{axis:n}}function Z8(t){const n=t.options||(t.options={});n.plugins=qe(n.plugins,{}),n.scales=function dwe(t,n){const e=Sc[t.type]||{scales:{}},i=n.scales||{},o=uM(t.type,n),r=Object.create(null);return Object.keys(i).forEach(s=>{const a=i[s];if(!mt(a))return console.error(`Invalid scale configuration for scale: ${s}`);if(a._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${s}`);const l=hM(s,a,function cwe(t,n){if(n.data&&n.data.datasets){const e=n.data.datasets.filter(i=>i.xAxisID===t||i.yAxisID===t);if(e.length)return X8(t,"x",e[0])||X8(t,"y",e[0])}return{}}(s,t),Dn.scales[a.type]),d=function awe(t,n){return t===n?"_index_":"_value_"}(l,o),f=e.scales||{};r[s]=fp(Object.create(null),[{axis:l},a,f[l],f[d]])}),t.data.datasets.forEach(s=>{const a=s.type||t.type,l=s.indexAxis||uM(a,n),f=(Sc[a]||{}).scales||{};Object.keys(f).forEach(m=>{const g=function swe(t,n){let e=t;return"_index_"===t?e=n:"_value_"===t&&(e="x"===n?"y":"x"),e}(m,l),b=s[g+"AxisID"]||g;r[b]=r[b]||Object.create(null),fp(r[b],[{axis:g},i[b],f[m]])})}),Object.keys(r).forEach(s=>{const a=r[s];fp(a,[Dn.scales[a.type],Dn.scale])}),r}(t,n)}function Q8(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const J8=new Map,e6=new Set;function jv(t,n){let e=J8.get(t);return e||(e=n(),J8.set(t,e),e6.add(e)),e}const Ep=(t,n,e)=>{const i=Va(n,e);void 0!==i&&t.add(i)};class hwe{constructor(n){this._config=function uwe(t){return(t=t||{}).data=Q8(t.data),Z8(t),t}(n),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(n){this._config.type=n}get data(){return this._config.data}set data(n){this._config.data=Q8(n)}get options(){return this._config.options}set options(n){this._config.options=n}get plugins(){return this._config.plugins}update(){const n=this._config;this.clearCache(),Z8(n)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(n){return jv(n,()=>[[`datasets.${n}`,""]])}datasetAnimationScopeKeys(n,e){return jv(`${n}.transition.${e}`,()=>[[`datasets.${n}.transitions.${e}`,`transitions.${e}`],[`datasets.${n}`,""]])}datasetElementScopeKeys(n,e){return jv(`${n}-${e}`,()=>[[`datasets.${n}.elements.${e}`,`datasets.${n}`,`elements.${e}`,""]])}pluginScopeKeys(n){const e=n.id;return jv(`${this.type}-plugin-${e}`,()=>[[`plugins.${e}`,...n.additionalOptionScopes||[]]])}_cachedScopes(n,e){const i=this._scopeCache;let o=i.get(n);return(!o||e)&&(o=new Map,i.set(n,o)),o}getOptionScopes(n,e,i){const{options:o,type:r}=this,s=this._cachedScopes(n,i),a=s.get(e);if(a)return a;const l=new Set;e.forEach(f=>{n&&(l.add(n),f.forEach(m=>Ep(l,n,m))),f.forEach(m=>Ep(l,o,m)),f.forEach(m=>Ep(l,Sc[r]||{},m)),f.forEach(m=>Ep(l,Dn,m)),f.forEach(m=>Ep(l,qS,m))});const d=Array.from(l);return 0===d.length&&d.push(Object.create(null)),e6.has(e)&&s.set(e,d),d}chartOptionScopes(){const{options:n,type:e}=this;return[n,Sc[e]||{},Dn.datasets[e]||{},{type:e},Dn,qS]}resolveNamedOptions(n,e,i,o=[""]){const r={$shared:!0},{resolver:s,subPrefixes:a}=t6(this._resolverCache,n,o);let l=s;(function pwe(t,n){const{isScriptable:e,isIndexable:i}=t8(t);for(const o of n){const r=e(o),s=i(o),a=(s||r)&&t[o];if(r&&(Ha(a)||fwe(a))||s&&yn(a))return!0}return!1})(s,e)&&(r.$shared=!1,l=Pu(s,i=Ha(i)?i():i,this.createResolver(n,i,a)));for(const d of e)r[d]=l[d];return r}createResolver(n,e,i=[""],o){const{resolver:r}=t6(this._resolverCache,n,i);return mt(e)?Pu(r,e,void 0,o):r}}function t6(t,n,e){let i=t.get(n);i||(i=new Map,t.set(n,i));const o=e.join();let r=i.get(o);return r||(r={resolver:ZS(n,e),subPrefixes:e.filter(a=>!a.toLowerCase().includes("hover"))},i.set(o,r)),r}const fwe=t=>mt(t)&&Object.getOwnPropertyNames(t).some(n=>Ha(t[n])),gwe=["top","bottom","left","right","chartArea"];function n6(t,n){return"top"===t||"bottom"===t||-1===gwe.indexOf(t)&&"x"===n}function i6(t,n){return function(e,i){return e[t]===i[t]?e[n]-i[n]:e[t]-i[t]}}function o6(t){const n=t.chart,e=n.options.animation;n.notifyPlugins("afterRender"),hn(e&&e.onComplete,[t],n)}function _we(t){const n=t.chart,e=n.options.animation;hn(e&&e.onProgress,[t],n)}function r6(t){return eM()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const $v={},s6=t=>{const n=r6(t);return Object.values($v).filter(e=>e.canvas===n).pop()};function bwe(t,n,e){const i=Object.keys(t);for(const o of i){const r=+o;if(r>=n){const s=t[o];delete t[o],(e>0||r>n)&&(t[r+e]=s)}}}let fM=(()=>class t{static defaults=Dn;static instances=$v;static overrides=Sc;static registry=as;static version="4.5.1";static getChart=s6;static register(...e){as.add(...e),a6()}static unregister(...e){as.remove(...e),a6()}constructor(e,i){const o=this.config=new hwe(i),r=r6(e),s=s6(r);if(s)throw new Error("Canvas is already in use. Chart with ID '"+s.id+"' must be destroyed before the canvas with ID '"+s.canvas.id+"' can be reused.");const a=o.createResolver(o.chartOptionScopes(),this.getContext());this.platform=new(o.platform||function L0e(t){return!eM()||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas?k0e:N0e}(r)),this.platform.updateConfig(o);const l=this.platform.acquireContext(r,a.aspectRatio),d=l&&l.canvas,f=d&&d.height,m=d&&d.width;this.id=b1e(),this.ctx=l,this.canvas=d,this.width=m,this.height=f,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new twe,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=function F1e(t,n){let e;return function(...i){return n?(clearTimeout(e),e=setTimeout(t,n,i)):t.apply(this,i),n}}(g=>this.update(g),a.resizeDelay||0),this._dataChanges=[],$v[this.id]=this,l&&d?(qs.listen(this,"complete",o6),qs.listen(this,"progress",_we),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:i},width:o,height:r,_aspectRatio:s}=this;return ut(e)?i&&s?s:r?o/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return as}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():c8(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return QV(this.canvas,this.ctx),this}stop(){return qs.stop(this),this}resize(e,i){qs.running(this)?this._resizeBeforeDraw={width:e,height:i}:this._resize(e,i)}_resize(e,i){const o=this.options,a=this.platform.getMaximumSize(this.canvas,e,i,o.maintainAspectRatio&&this.aspectRatio),l=o.devicePixelRatio||this.platform.getDevicePixelRatio(),d=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,c8(this,l,!0)&&(this.notifyPlugins("resize",{size:a}),hn(o.onResize,[this,a],this),this.attached&&this._doResize(d)&&this.render())}ensureScalesHaveIDs(){Wt(this.options.scales||{},(o,r)=>{o.id=r})}buildOrUpdateScales(){const e=this.options,i=e.scales,o=this.scales,r=Object.keys(o).reduce((a,l)=>(a[l]=!1,a),{});let s=[];i&&(s=s.concat(Object.keys(i).map(a=>{const l=i[a],d=hM(a,l),f="r"===d,m="x"===d;return{options:l,dposition:f?"chartArea":m?"bottom":"left",dtype:f?"radialLinear":m?"category":"linear"}}))),Wt(s,a=>{const l=a.options,d=l.id,f=hM(d,l),m=qe(l.type,a.dtype);(void 0===l.position||n6(l.position,f)!==n6(a.dposition))&&(l.position=a.dposition),r[d]=!0;let g=null;d in o&&o[d].type===m?g=o[d]:(g=new(as.getScale(m))({id:d,type:m,ctx:this.ctx,chart:this}),o[g.id]=g),g.init(l,e)}),Wt(r,(a,l)=>{a||delete o[l]}),Wt(o,a=>{eo.configure(this,a,a.options),eo.addBox(this,a)})}_updateMetasets(){const e=this._metasets,i=this.data.datasets.length,o=e.length;if(e.sort((r,s)=>r.index-s.index),o>i){for(let r=i;ri.length&&delete this._stacks,e.forEach((o,r)=>{0===i.filter(s=>s===o._dataset).length&&this._destroyDatasetMeta(r)})}buildOrUpdateControllers(){const e=[],i=this.data.datasets;let o,r;for(this._removeUnreferencedMetasets(),o=0,r=i.length;o{this.getDatasetMeta(i).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const i=this.config;i.update();const o=this._options=i.createResolver(i.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!o.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0}))return;const s=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let a=0;for(let f=0,m=this.data.datasets.length;f{f.reset()}),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(i6("z","_idx"));const{_active:l,_lastEvent:d}=this;d?this._eventHandler(d,!0):l.length&&this._updateHoverStyles(l,l,!0),this.render()}_updateScales(){Wt(this.scales,e=>{eo.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,i=new Set(Object.keys(this._listeners)),o=new Set(e.events);(!RV(i,o)||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,i=this._getUniformDataChanges()||[];for(const{method:o,start:r,count:s}of i)bwe(e,r,"_removeElements"===o?-s:s)}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const i=this.data.datasets.length,o=s=>new Set(e.filter(a=>a[0]===s).map((a,l)=>l+","+a.splice(1).join(","))),r=o(0);for(let s=1;ss.split(",")).map(s=>({method:s[1],start:+s[2],count:+s[3]}))}_updateLayout(e){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;eo.update(this,this.width,this.height,e);const i=this.chartArea,o=i.width<=0||i.height<=0;this._layers=[],Wt(this.boxes,r=>{o&&"chartArea"===r.position||(r.configure&&r.configure(),this._layers.push(...r._layers()))},this),this._layers.forEach((r,s)=>{r._idx=s}),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})){for(let i=0,o=this.data.datasets.length;i=0;--i)this._drawDataset(e[i]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const i=this.ctx,o={meta:e,index:e.index,cancelable:!0},r=v8(this,e);!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(r&&Ov(i,r),e.controller.draw(),r&&Av(i),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(e){return Gs(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,i,o,r){const s=g0e.modes[i];return"function"==typeof s?s(this,e,o,r):[]}getDatasetMeta(e){const i=this.data.datasets[e],o=this._metasets;let r=o.filter(s=>s&&s._dataset===i).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:i&&i.order||0,index:e,_dataset:i,_parsed:[],_sorted:!1},o.push(r)),r}getContext(){return this.$context||(this.$context=za(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const i=this.data.datasets[e];if(!i)return!1;const o=this.getDatasetMeta(e);return"boolean"==typeof o.hidden?!o.hidden:!i.hidden}setDatasetVisibility(e,i){this.getDatasetMeta(e).hidden=!i}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,i,o){const r=o?"show":"hide",s=this.getDatasetMeta(e),a=s.controller._resolveAnimations(void 0,r);pp(i)?(s.data[i].hidden=!o,this.update()):(this.setDatasetVisibility(e,o),a.update(s,{visible:o}),this.update(l=>l.datasetIndex===e?r:void 0))}hide(e,i){this._updateVisibility(e,i,!1)}show(e,i){this._updateVisibility(e,i,!0)}_destroyDatasetMeta(e){const i=this._metasets[e];i&&i.controller&&i.controller._destroy(),delete this._metasets[e]}_stop(){let e,i;for(this.stop(),qs.remove(this),e=0,i=this.data.datasets.length;e{i.addEventListener(this,s,a),e[s]=a},r=(s,a,l)=>{s.offsetX=a,s.offsetY=l,this._eventHandler(s)};Wt(this.options.events,s=>o(s,r))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,i=this.platform,o=(d,f)=>{i.addEventListener(this,d,f),e[d]=f},r=(d,f)=>{e[d]&&(i.removeEventListener(this,d,f),delete e[d])},s=(d,f)=>{this.canvas&&this.resize(d,f)};let a;const l=()=>{r("attach",l),this.attached=!0,this.resize(),o("resize",s),o("detach",a)};a=()=>{this.attached=!1,r("resize",s),this._stop(),this._resize(0,0),o("attach",l)},i.isAttached(this.canvas)?l():a()}unbindEvents(){Wt(this._listeners,(e,i)=>{this.platform.removeEventListener(this,i,e)}),this._listeners={},Wt(this._responsiveListeners,(e,i)=>{this.platform.removeEventListener(this,i,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,i,o){const r=o?"set":"remove";let s,a,l,d;for("dataset"===i&&(s=this.getDatasetMeta(e[0].datasetIndex),s.controller["_"+r+"DatasetHoverStyle"]()),l=0,d=e.length;l{const l=this.getDatasetMeta(s);if(!l)throw new Error("No dataset found at index "+s);return{datasetIndex:s,element:l.data[a],index:a}});!Mv(o,i)&&(this._active=o,this._lastEvent=null,this._updateHoverStyles(o,i))}notifyPlugins(e,i,o){return this._plugins.notify(this,e,i,o)}isPluginEnabled(e){return 1===this._plugins._cache.filter(i=>i.plugin.id===e).length}_updateHoverStyles(e,i,o){const r=this.options.hover,s=(d,f)=>d.filter(m=>!f.some(g=>m.datasetIndex===g.datasetIndex&&m.index===g.index)),a=s(i,e),l=o?e:s(e,i);a.length&&this.updateHoverStyle(a,r.mode,!1),l.length&&r.mode&&this.updateHoverStyle(l,r.mode,!0)}_eventHandler(e,i){const o={event:e,replay:i,cancelable:!0,inChartArea:this.isPointInArea(e)},r=a=>(a.options.events||this.options.events).includes(e.native.type);if(!1===this.notifyPlugins("beforeEvent",o,r))return;const s=this._handleEvent(e,i,o.inChartArea);return o.cancelable=!1,this.notifyPlugins("afterEvent",o,r),(s||o.changed)&&this.render(),this}_handleEvent(e,i,o){const{_active:r=[],options:s}=this,l=this._getActiveElements(e,r,o,i),d=function k1e(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}(e),f=function vwe(t,n,e,i){return e&&"mouseout"!==t.type?i?n:t:null}(e,this._lastEvent,o,d);o&&(this._lastEvent=null,hn(s.onHover,[e,l,this],this),d&&hn(s.onClick,[e,l,this],this));const m=!Mv(l,r);return(m||i)&&(this._active=l,this._updateHoverStyles(l,r,i)),this._lastEvent=f,m}_getActiveElements(e,i,o,r){if("mouseout"===e.type)return[];if(!o)return i;const s=this.options.hover;return this.getElementsAtEventForMode(e,s.mode,s,r)}})();function a6(){return Wt(fM.instances,t=>t._plugins.invalidate())}function l6(t,n,e=n){t.lineCap=qe(e.borderCapStyle,n.borderCapStyle),t.setLineDash(qe(e.borderDash,n.borderDash)),t.lineDashOffset=qe(e.borderDashOffset,n.borderDashOffset),t.lineJoin=qe(e.borderJoinStyle,n.borderJoinStyle),t.lineWidth=qe(e.borderWidth,n.borderWidth),t.strokeStyle=qe(e.borderColor,n.borderColor)}function Dwe(t,n,e){t.lineTo(e.x,e.y)}function c6(t,n,e={}){const i=t.length,{start:o=0,end:r=i-1}=e,{start:s,end:a}=n,l=Math.max(o,s),d=Math.min(r,a);return{count:i,start:l,loop:n.loop,ilen:da&&r>a)?i+d-l:d-l}}function Ewe(t,n,e,i){const{points:o,options:r}=n,{count:s,start:a,loop:l,ilen:d}=c6(o,e,i),f=function Twe(t){return t.stepped?q1e:t.tension||"monotone"===t.cubicInterpolationMode?K1e:Dwe}(r);let b,w,M,{move:m=!0,reverse:g}=i||{};for(b=0;b<=d;++b)w=o[(a+(g?d-b:b))%s],!w.skip&&(m?(t.moveTo(w.x,w.y),m=!1):f(t,M,w,g,r.stepped),M=w);return l&&(w=o[(a+(g?d:0))%s],f(t,M,w,g,r.stepped)),!!l}function Pwe(t,n,e,i){const o=n.points,{count:r,start:s,ilen:a}=c6(o,e,i),{move:l=!0,reverse:d}=i||{};let g,b,w,M,E,I,f=0,m=0;const A=q=>(s+(d?a-q:q))%r,W=()=>{M!==E&&(t.lineTo(f,E),t.lineTo(f,M),t.lineTo(f,I))};for(l&&(b=o[A(0)],t.moveTo(b.x,b.y)),g=0;g<=a;++g){if(b=o[A(g)],b.skip)continue;const q=b.x,Y=b.y,ee=0|q;ee===w?(YE&&(E=Y),f=(m*f+q)/++m):(W(),t.lineTo(q,Y),w=ee,m=0,M=E=Y),I=Y}W()}function pM(t){const n=t.options;return t._decimated||t._loop||n.tension||"monotone"===n.cubicInterpolationMode||n.stepped||n.borderDash&&n.borderDash.length?Ewe:Pwe}const Rwe="function"==typeof Path2D;let Pp=(()=>class t extends Ks{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:e=>"borderDash"!==e&&"fill"!==e};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,i){const o=this.options;!o.tension&&"monotone"!==o.cubicInterpolationMode||o.stepped||this._pointsUpdated||(bCe(this._points,o,e,o.spanGaps?this._loop:this._fullLoop,i),this._pointsUpdated=!0)}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=function ACe(t,n){const e=t.points,i=t.options.spanGaps,o=e.length;if(!o)return[];const r=!!t._loop,{start:s,end:a}=function ICe(t,n,e,i){let o=0,r=n-1;if(e&&!i)for(;oo&&t[r%n].skip;)r--;return r%=n,{start:o,end:r}}(e,o,r,i);return function _8(t,n,e,i){return i&&i.setContext&&e?function RCe(t,n,e,i){const o=t._chart.getContext(),r=b8(t.options),{_datasetIndex:s,options:{spanGaps:a}}=t,l=e.length,d=[];let f=r,m=n[0].start,g=m;function b(w,M,E,I){const A=a?-1:1;if(w!==M){for(w+=l;e[w%l].skip;)w-=A;for(;e[M%l].skip;)M+=A;w%l!==M%l&&(d.push({start:w%l,end:M%l,loop:E,style:I}),f=I,m=M%l)}}for(const w of n){m=a?m:w.start;let E,M=e[m%l];for(g=m+1;g<=w.end;g++){const I=e[g%l];E=b8(i.setContext(za(o,{type:"segment",p0:M,p1:I,p0DataIndex:(g-1)%l,p1DataIndex:g%l,datasetIndex:s}))),FCe(E,f)&&b(m,g-1,w.loop,f),M=I,f=E}mclass t extends Ks{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(e){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,e&&Object.assign(this,e)}inRange(e,i,o){const r=this.options,{x:s,y:a}=this.getProps(["x","y"],o);return Math.pow(e-s,2)+Math.pow(i-a,2)t;n--){const i=e[n];if(!isNaN(i.x)&&!isNaN(i.y))break}return n}function v6(t,n,e,i){return t&&n?i(t[e],n[e]):t?t[e]:n?n[e]:0}function y6(t,n){let e=[],i=!1;return yn(t)?(i=!0,e=t):e=function txe(t,n){const{x:e=null,y:i=null}=t||{},o=n.points,r=[];return n.segments.forEach(({start:s,end:a})=>{a=Gv(s,a,o);const l=o[s],d=o[a];null!==i?(r.push({x:l.x,y:i}),r.push({x:d.x,y:i})):null!==e&&(r.push({x:e,y:l.y}),r.push({x:e,y:d.y}))}),r}(t,n),e.length?new Pp({points:e,options:{tension:0},_loop:i,_fullLoop:i}):null}function C6(t){return t&&!1!==t.fill}function nxe(t,n,e){let o=t[n].fill;const r=[n];let s;if(!e)return o;for(;!1!==o&&-1===r.indexOf(o);){if(!jn(o))return o;if(s=t[o],!s)return!1;if(s.visible)return o;r.push(o),o=s.fill}return!1}function ixe(t,n,e){const i=function axe(t){const n=t.options,e=n.fill;let i=qe(e&&e.target,e);return void 0===i&&(i=!!n.backgroundColor),!1!==i&&null!==i&&(!0===i?"origin":i)}(t);if(mt(i))return!isNaN(i.value)&&i;let o=parseFloat(i);return jn(o)&&Math.floor(o)===o?function oxe(t,n,e,i){return("-"===t||"+"===t)&&(e=n+e),!(e===n||e<0||e>=i)&&e}(i[0],n,o,e):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function dxe(t,n,e){const i=[];for(let o=0;o=0;--s){const a=o[s].$filler;a&&(a.line.updateControlPoints(r,a.axis),i&&a.fill&&vM(t.ctx,a,r))}},beforeDatasetsDraw(t,n,e){if("beforeDatasetsDraw"!==e.drawTime)return;const i=t.getSortedVisibleDatasetMetas();for(let o=i.length-1;o>=0;--o){const r=i[o].$filler;C6(r)&&vM(t.ctx,r,t.chartArea)}},beforeDatasetDraw(t,n,e){const i=n.meta.$filler;!C6(i)||"beforeDatasetDraw"!==e.drawTime||vM(t.ctx,i,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};function L6(t){const n=this.getLabels();return t>=0&&tclass t extends Ac{static id="category";static defaults={ticks:{callback:L6}};constructor(e){super(e),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(e){const i=this._addedLabels;if(i.length){const o=this.getLabels();for(const{index:r,label:s}of i)o[r]===s&&o.splice(r,1);this._addedLabels=[]}super.init(e)}parse(e,i){if(ut(e))return null;const o=this.getLabels();return((t,n)=>null===t?null:Ti(Math.round(t),0,n))(i=isFinite(i)&&o[i]===e?i:function Bxe(t,n,e,i){const o=t.indexOf(n);return-1===o?((t,n,e,i)=>("string"==typeof n?(e=t.push(n)-1,i.unshift({index:e,label:n})):isNaN(n)&&(e=null),e))(t,n,e,i):o!==t.lastIndexOf(n)?e:o}(o,e,qe(i,e),this._addedLabels),o.length-1)}determineDataLimits(){const{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:o,max:r}=this.getMinMax(!0);"ticks"===this.options.bounds&&(e||(o=0),i||(r=this.getLabels().length-1)),this.min=o,this.max=r}buildTicks(){const e=this.min,i=this.max,o=this.options.offset,r=[];let s=this.getLabels();s=0===e&&i===s.length-1?s:s.slice(e,i+1),this._valueRange=Math.max(s.length-(o?0:1),1),this._startValue=this.min-(o?.5:0);for(let a=e;a<=i;a++)r.push({value:a});return r}getLabelForValue(e){return L6.call(this,e)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(e){return"number"!=typeof e&&(e=this.parse(e)),null===e?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getPixelForTick(e){const i=this.ticks;return e<0||e>i.length-1?null:this.getPixelForValue(i[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}})();function V6(t,n,{horizontal:e,minRotation:i}){const o=Or(i),r=(e?Math.sin(o):Math.cos(o))||.001;return Math.min(n/r,.75*n*(""+t).length)}class Yv extends Ac{constructor(n){super(n),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(n,e){return ut(n)||("number"==typeof n||n instanceof Number)&&!isFinite(+n)?null:+n}handleTickRangeOptions(){const{beginAtZero:n}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:o,max:r}=this;const s=l=>o=e?o:l,a=l=>r=i?r:l;if(n){const l=ss(o),d=ss(r);l<0&&d<0?a(0):l>0&&d>0&&s(0)}if(o===r){let l=0===r?1:Math.abs(.05*r);a(r+l),n||s(o-l)}this.min=o,this.max=r}getTickLimit(){const n=this.options.ticks;let o,{maxTicksLimit:e,stepSize:i}=n;return i?(o=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,o>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${o} ticks. Limiting to 1000.`),o=1e3)):(o=this.computeTickLimit(),e=e||11),e&&(o=Math.min(e,o)),o}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const n=this.options,e=n.ticks;let i=this.getTickLimit();i=Math.max(2,i);const s=function Hxe(t,n){const e=[],{bounds:o,step:r,min:s,max:a,precision:l,count:d,maxTicks:f,maxDigits:m,includeBounds:g}=t,b=r||1,w=f-1,{min:M,max:E}=n,I=!ut(s),A=!ut(a),W=!ut(d),q=(E-M)/(m+1);let ee,oe,P,R,Y=NV((E-M)/w/b)*b;if(Y<1e-14&&!I&&!A)return[{value:M},{value:E}];R=Math.ceil(E/Y)-Math.floor(M/Y),R>w&&(Y=NV(R*Y/w/b)*b),ut(l)||(ee=Math.pow(10,l),Y=Math.ceil(Y*ee)/ee),"ticks"===o?(oe=Math.floor(M/Y)*Y,P=Math.ceil(E/Y)*Y):(oe=M,P=E),I&&A&&r&&function E1e(t,n){const e=Math.round(t);return e-n<=t&&e+n>=t}((a-s)/r,Y/1e3)?(R=Math.round(Math.min((a-s)/Y,f)),Y=(a-s)/R,oe=s,P=a):W?(oe=I?s:oe,P=A?a:P,R=d-1,Y=(P-oe)/R):(R=(P-oe)/Y,R=mp(R,Math.round(R),Y/1e3)?Math.round(R):Math.ceil(R));const B=Math.max(BV(Y),BV(oe));ee=Math.pow(10,ut(l)?B:l),oe=Math.round(oe*ee)/ee,P=Math.round(P*ee)/ee;let $=0;for(I&&(g&&oe!==s?(e.push({value:s}),oea)break;e.push({value:z})}return A&&g&&P!==a?e.length&&mp(e[e.length-1].value,a,V6(a,q,t))?e[e.length-1].value=a:e.push({value:a}):(!A||P===a)&&e.push({value:P}),e}({maxTicks:i,bounds:n.bounds,min:n.min,max:n.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===n.bounds&&function LV(t,n,e){let i,o,r;for(i=0,o=t.length;i{class t{static{this.topInternalMargin=5}constructor(e){this.height=100,this.animated=!1,this.min=void 0,this.max=void 0,this.differ=e.find([]).create(null)}ngAfterViewInit(){this.chart=new fM(this.chartElement.nativeElement,{type:"line",data:{labels:Array.from(Array(this.data.length).keys()),datasets:[{data:this.data,backgroundColor:"rgba(10, 15, 22, 0.4)",borderColor:"rgba(10, 15, 22, 0.4)",borderWidth:1}]},options:{maintainAspectRatio:!1,events:[],plugins:{legend:{display:!1},tooltip:{enabled:!1}},scales:{y:{display:!1,suggestedMin:0},x:{display:!1}},elements:{point:{radius:0}},layout:{padding:{left:0,right:0,top:t.topInternalMargin,bottom:0}},animation:!!this.animated&&void 0}}),void 0!==this.min&&void 0!==this.max&&(this.updateMinAndMax(),this.chart.update())}ngDoCheck(){this.differ.diff(this.data)&&this.chart&&(void 0!==this.min&&void 0!==this.max&&this.updateMinAndMax(),this.animated?this.chart.update():this.chart.update("none"))}ngOnDestroy(){this.chart&&this.chart.destroy()}updateMinAndMax(){this.chart.options.scales.y.min=this.min,this.chart.options.scales.y.max=this.max}static{this.\u0275fac=function(i){return new(i||t)(O(__))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-line-chart"]],viewQuery:function(i,o){if(1&i&&st(cke,5),2&i){let r;fe(r=pe())&&(o.chartElement=r.first)}},inputs:{data:"data",height:"height",animated:"animated",min:"min",max:"max"},standalone:!1,decls:3,vars:2,consts:[["chart",""],[1,"chart-container"]],template:function(i,o){1&i&&(h(0,"div",1),L(1,"canvas",null,0),u()),2&i&&ao("height: "+o.height+"px;")},styles:[".chart-container[_ngcontent-%COMP%]{position:relative;width:100%;overflow:hidden;border-radius:10px}"]})}}return t})();const X6=()=>({showValue:!0}),Z6=()=>({showUnit:!0});function dke(t,n){if(1&t&&(h(0,"div",0),L(1,"app-line-chart",1),h(2,"div",2)(3,"span",3),p(4),_(5,"translate"),u(),h(6,"span",4)(7,"span",5),p(8),_(9,"autoScale"),u(),h(10,"span",6),p(11),_(12,"autoScale"),u()()()()),2&t){const e=y();c(),C("data",e.trafficData.sentHistory),c(3),S(v(5,4,"common.uploaded")),c(4),S(ue(9,6,e.trafficData.totalSent,vt(12,X6))),c(3),S(ue(12,9,e.trafficData.totalSent,vt(13,Z6)))}}function uke(t,n){if(1&t&&(h(0,"div",0),L(1,"app-line-chart",1),h(2,"div",2)(3,"span",3),p(4),_(5,"translate"),u(),h(6,"span",4)(7,"span",5),p(8),_(9,"autoScale"),u(),h(10,"span",6),p(11),_(12,"autoScale"),u()()()()),2&t){const e=y();c(),C("data",e.trafficData.receivedHistory),c(3),S(v(5,4,"common.downloaded")),c(4),S(ue(9,6,e.trafficData.totalReceived,vt(12,X6))),c(3),S(ue(12,9,e.trafficData.totalReceived,vt(13,Z6)))}}let hke=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=ae({type:t,selectors:[["app-charts"]],inputs:{trafficData:"trafficData"},standalone:!1,decls:2,vars:2,consts:[[1,"small-rounded-elevated-box","chart"],[3,"data"],[1,"info"],[1,"text"],[1,"rate"],[1,"value"],[1,"unit"]],template:function(i,o){1&i&&(x(0,dke,13,14,"div",0),x(1,uke,13,14,"div",0)),2&i&&(k(o.trafficData?0:-1),c(),k(o.trafficData?1:-1))},dependencies:[Qv,we,dp],styles:[".chart[_ngcontent-%COMP%]{position:relative;margin-bottom:20px}.chart[_ngcontent-%COMP%]:last-child{margin-bottom:10px}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%]{position:absolute;bottom:0;left:0;display:flex;justify-content:space-between;align-items:flex-end;padding:10px;width:100%}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#f8f9f9}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.text[_ngcontent-%COMP%]{font-size:.8rem;text-transform:uppercase;font-weight:700}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.rate[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:700}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.rate[_ngcontent-%COMP%] .unit[_ngcontent-%COMP%]{font-size:.8rem;padding-left:5px}"]})}}return t})();function fke(t,n){1&t&&(h(0,"div",4)(1,"mat-icon",2),p(2,"settings"),u(),p(3),_(4,"translate"),u()),2&t&&(c(),C("inline",!0),c(2),D("",v(4,2,"routes.details.specific-fields-titles.app")," "))}function pke(t,n){1&t&&(h(0,"div",4)(1,"mat-icon",2),p(2,"swap_horiz"),u(),p(3),_(4,"translate"),u()),2&t&&(c(),C("inline",!0),c(2),D("",v(4,2,"routes.details.specific-fields-titles.forward")," "))}function mke(t,n){1&t&&(h(0,"div",4)(1,"mat-icon",2),p(2,"arrow_forward"),u(),p(3),_(4,"translate"),u()),2&t&&(c(),C("inline",!0),c(2),D("",v(4,2,"routes.details.specific-fields-titles.intermediary-forward")," "))}function gke(t,n){if(1&t&&(h(0,"div")(1,"div",3)(2,"span"),p(3),_(4,"translate"),u(),p(5),u(),h(6,"div",3)(7,"span"),p(8),_(9,"translate"),u(),p(10),u()()),2&t){const e=y(2);c(3),S(v(4,5,"routes.details.specific-fields.route-id")),c(2),D(" ",e.routeRule.forwardFields?e.routeRule.forwardFields.nextRid:e.routeRule.intermediaryForwardFields.nextRid," "),c(3),S(v(9,7,"routes.details.specific-fields.transport-id")),c(2),nt(" ",e.routeRule.forwardFields?e.routeRule.forwardFields.nextTid:e.routeRule.intermediaryForwardFields.nextTid," ",e.getLabel(e.routeRule.forwardFields?e.routeRule.forwardFields.nextTid:e.routeRule.intermediaryForwardFields.nextTid)," ")}}function _ke(t,n){if(1&t&&(h(0,"div")(1,"div",3)(2,"span"),p(3),_(4,"translate"),u(),p(5),u(),h(6,"div",3)(7,"span"),p(8),_(9,"translate"),u(),p(10),u(),h(11,"div",3)(12,"span"),p(13),_(14,"translate"),u(),p(15),u(),h(16,"div",3)(17,"span"),p(18),_(19,"translate"),u(),p(20),u()()),2&t){const e=y(2);c(3),S(v(4,10,"routes.details.specific-fields.destination-pk")),c(2),nt(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.dstPk:e.routeRule.forwardFields.routeDescriptor.dstPk," ",e.getLabel(e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.dstPk:e.routeRule.forwardFields.routeDescriptor.dstPk)," "),c(3),S(v(9,12,"routes.details.specific-fields.source-pk")),c(2),nt(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.srcPk:e.routeRule.forwardFields.routeDescriptor.srcPk," ",e.getLabel(e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.srcPk:e.routeRule.forwardFields.routeDescriptor.srcPk)," "),c(3),S(v(14,14,"routes.details.specific-fields.destination-port")),c(2),D(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.dstPort:e.routeRule.forwardFields.routeDescriptor.dstPort," "),c(3),S(v(19,16,"routes.details.specific-fields.source-port")),c(2),D(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.srcPort:e.routeRule.forwardFields.routeDescriptor.srcPort," ")}}function bke(t,n){if(1&t&&(h(0,"div")(1,"div",4)(2,"mat-icon",2),p(3,"list"),u(),p(4),_(5,"translate"),u(),h(6,"div",3)(7,"span"),p(8),_(9,"translate"),u(),p(10),u(),h(11,"div",3)(12,"span"),p(13),_(14,"translate"),u(),p(15),u(),h(16,"div",3)(17,"span"),p(18),_(19,"translate"),u(),p(20),u(),x(21,fke,5,4,"div",4),x(22,pke,5,4,"div",4),x(23,mke,5,4,"div",4),x(24,gke,11,9,"div"),x(25,_ke,21,18,"div"),u()),2&t){const e=y();c(2),C("inline",!0),c(2),D("",v(5,13,"routes.details.summary.title")," "),c(4),S(v(9,15,"routes.details.summary.keep-alive")),c(2),D(" ",e.routeRule.ruleSummary.keepAlive," "),c(3),S(v(14,17,"routes.details.summary.type")),c(2),D(" ",e.getRuleTypeName(e.routeRule.ruleSummary.ruleType)," "),c(3),S(v(19,19,"routes.details.summary.key-route-id")),c(2),D(" ",e.routeRule.ruleSummary.keyRouteId," "),c(),k(e.routeRule.appFields?21:-1),c(),k(e.routeRule.forwardFields?22:-1),c(),k(e.routeRule.intermediaryForwardFields?23:-1),c(),k(e.routeRule.forwardFields||e.routeRule.intermediaryForwardFields?24:-1),c(),k(e.routeRule.appFields&&e.routeRule.appFields.routeDescriptor||e.routeRule.forwardFields&&e.routeRule.forwardFields.routeDescriptor?25:-1)}}let vke=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.largeModalWidth,e.open(t,o)}constructor(e,i,o){this.dialogRef=i,this.storageService=o,this.ruleTypes=new Map([[0,"App"],[1,"Forward"],[2,"Intermediary forward"]]),this.routeRule=e}getRuleTypeName(e){return this.ruleTypes.has(e)?this.ruleTypes.get(e):e.toString()}closePopup(){this.dialogRef.close()}getLabel(e){const i=this.storageService.getLabelInfo(e);return i?" ("+i.label+")":""}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt),O(ri))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-route-details"]],standalone:!1,decls:19,vars:17,consts:[[1,"info-dialog",3,"headline","dialog"],[1,"title","mt-0"],[3,"inline"],[1,"item"],[1,"title"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),_(1,"translate"),h(2,"div")(3,"div",1)(4,"mat-icon",2),p(5,"list"),u(),p(6),_(7,"translate"),u(),h(8,"div",3)(9,"span"),p(10),_(11,"translate"),u(),p(12),u(),h(13,"div",3)(14,"span"),p(15),_(16,"translate"),u(),p(17),u(),x(18,bke,26,21,"div"),u()()),2&i&&(C("headline",v(1,9,"routes.details.title"))("dialog",o.dialogRef),c(4),C("inline",!0),c(2),D("",v(7,11,"routes.details.basic.title")," "),c(4),S(v(11,13,"routes.details.basic.key")),c(2),D(" ",o.routeRule.key," "),c(3),S(v(16,15,"routes.details.basic.rule")),c(2),D(" ",o.routeRule.rule," "),c(),k(o.routeRule.ruleSummary?18:-1))},dependencies:[Ae,Sn,we],encapsulation:2})}}return t})();const yke=t=>({text:t}),Cke=()=>({"tooltip-word-break":!0});function wke(t,n){if(1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t){const e=y();c(),D(" ",v(2,1,e.labelComponents.prefix)," ")}}function xke(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y();c(),D(" ",e.labelComponents.prefixSeparator," ")}}function kke(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y();c(),D(" ",e.labelComponents.label," ")}}function Ske(t,n){if(1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t){const e=y();c(),D(" ",v(2,1,e.labelComponents.translatableLabel)," ")}}class Mke{constructor(){this.prefix="",this.prefixSeparator="",this.label="",this.translatableLabel=""}}let Fc=(()=>{class t{set id(e){this.idInternal=e,this.labelComponents=t.getLabelComponents(this.storageService,this.id)}get id(){return this.idInternal?this.idInternal:""}static getLabelComponents(e,i){let o;o=!!e.getSavedVisibleLocalNodes().has(i);const r=new Mke;return r.labelInfo=e.getLabelInfo(i),r.labelInfo&&r.labelInfo.label?(o&&(r.prefix="labeled-element.local-element",r.prefixSeparator=" - "),r.label=r.labelInfo.label):e.getSavedVisibleLocalNodes().has(i)?r.prefix="labeled-element.unnamed-local-visor":r.translatableLabel="labeled-element.unnamed-element",r}static getCompleteLabel(e,i,o){const r=t.getLabelComponents(e,o);return(r.prefix?i.instant(r.prefix):"")+r.prefixSeparator+r.label+(r.translatableLabel?i.instant(r.translatableLabel):"")}constructor(e,i,o,r,s){this.dialog=e,this.storageService=i,this.clipboardService=o,this.snackbarService=r,this.router=s,this.short=!1,this.shortTextLength=5,this.elementType=uo.Node,this.labelEdited=new ke}ngOnDestroy(){this.labelEdited.complete()}processClick(){const e=[{icon:"filter_none",label:"labeled-element.copy"},{icon:"edit",label:"labeled-element.edit-label"}];this.labelComponents.labelInfo&&e.push({icon:"close",label:"labeled-element.remove-label"}),e.push({icon:"list",label:"labeled-element.view-all-labels"}),ho.openDialog(this.dialog,e,"common.options").afterClosed().subscribe(i=>{if(1===i)this.clipboardService.copy(this.id)&&this.snackbarService.showDone("copy.copied");else if(i>2)if(3===i&&this.labelComponents.labelInfo){const o=Ut.createConfirmationDialog(this.dialog,"labeled-element.remove-label-confirmation");o.componentInstance.operationAccepted.subscribe(()=>{o.componentInstance.closeModal(),this.storageService.saveLabel(this.id,null,this.elementType),this.snackbarService.showDone("edit-label.label-removed-warning"),this.labelEdited.emit()})}else this.router.navigate(["/settings","labels"]);else if(2===i){let o=this.labelComponents.labelInfo;o||(o={id:this.id,label:"",identifiedElementType:this.elementType}),DS.openDialog(this.dialog,o).afterClosed().subscribe(r=>{r&&this.labelEdited.emit()})}})}static{this.\u0275fac=function(i){return new(i||t)(O(Nt),O(ri),O(ap),O(ot),O(yt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-labeled-element-text"]],inputs:{id:"id",short:"short",shortTextLength:"shortTextLength",elementType:"elementType"},outputs:{labelEdited:"labelEdited"},standalone:!1,decls:12,vars:17,consts:[[1,"wrapper","highlight-internal-icon",3,"click","matTooltip","matTooltipClass"],[1,"label"],[3,"short","showTooltip","shortTextLength","text"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"div",0),_(1,"translate"),F("click",function(s){return s.stopPropagation(),s.preventDefault(),o.processClick()}),h(2,"span",1),x(3,wke,3,3,"span"),x(4,xke,2,1,"span"),x(5,kke,2,1,"span"),x(6,Ske,3,3,"span"),u(),L(7,"br")(8,"app-truncated-text",2),p(9," \xa0"),h(10,"mat-icon",3),p(11,"settings"),u()()),2&i&&(C("matTooltip",ue(1,11,o.short?"labeled-element.tooltip-with-text":"labeled-element.tooltip",ie(14,yke,o.id)))("matTooltipClass",vt(16,Cke)),c(3),k(o.labelComponents&&o.labelComponents.prefix?3:-1),c(),k(o.labelComponents&&o.labelComponents.prefixSeparator?4:-1),c(),k(o.labelComponents&&o.labelComponents.label?5:-1),c(),k(o.labelComponents&&o.labelComponents.translatableLabel?6:-1),c(2),C("short",o.short)("showTooltip",!1)("shortTextLength",o.shortTextLength)("text",o.id),c(2),C("inline",!0))},dependencies:[Ae,Et,hV,we],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.wrapper[_ngcontent-%COMP%]{display:inline}.wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:.8rem;-webkit-user-select:none;user-select:none}.label[_ngcontent-%COMP%]{opacity:.7;font-size:.8rem}']})}}return t})();const Dke=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),Tke=t=>({"d-lg-none d-xl-table":t}),Eke=t=>({"d-lg-table d-xl-none":t});function Pke(t,n){1&t&&(h(0,"span",3),p(1),_(2,"translate"),h(3,"mat-icon",13),_(4,"translate"),p(5,"help"),u()()),2&t&&(c(),D(" ",v(2,3,"routes.title")," "),c(2),C("inline",!0)("matTooltip",v(4,5,"routes.info")))}function Ike(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().$implicit.translatableValue)," ")}function Oke(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.value," ")}function Ake(t,n){if(1&t&&(h(0,"div",15)(1,"span"),p(2),_(3,"translate"),u(),x(4,Ike,2,3),x(5,Oke,1,1),u()),2&t){const e=n.$implicit;c(2),D("",v(3,3,e.filterName),": "),c(2),k(e.translatableValue?4:-1),c(),k(e.value?5:-1)}}function Rke(t,n){if(1&t){const e=re();h(0,"div",14),F("click",function(){return V(e),H(y().dataFilterer.removeFilters())}),me(1,Ake,6,5,"div",15,Le),h(3,"div",16),p(4),_(5,"translate"),u()()}if(2&t){const e=y();c(),ge(e.dataFilterer.currentFiltersTexts),c(3),S(v(5,1,"filters.press-to-remove"))}}function Fke(t,n){if(1&t){const e=re();h(0,"mat-icon",17),_(1,"translate"),F("click",function(){return V(e),H(y().dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",v(1,2,"filters.filter-action"))}function Nke(t,n){1&t&&(h(0,"mat-icon",8),p(1,"more_horiz"),u()),2&t&&(y(),C("matMenuTriggerFor",Un(9)))}function Lke(t,n){if(1&t&&(h(0,"mat-icon",21),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Bke(t,n){if(1&t&&(h(0,"mat-icon",21),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Vke(t,n){if(1&t&&(h(0,"mat-icon",21),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Hke(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.appFields.routeDescriptor.srcPort," ")}function Uke(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.forwardFields.routeDescriptor.srcPort," ")}function zke(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function jke(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.appFields.routeDescriptor.dstPort," ")}function $ke(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.forwardFields.routeDescriptor.dstPort," ")}function Wke(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function Gke(t,n){if(1&t){const e=re();h(0,"app-labeled-element-text",33),F("labelEdited",function(){return V(e),H(y(3).refreshData())}),u()}if(2&t){const e=y().$implicit,i=y(2);C("id",on(e.dst))("elementType",i.labeledElementTypes.Node)}}function qke(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function Kke(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.forwardFields.nextRid," ")}function Yke(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.intermediaryForwardFields.nextRid," ")}function Xke(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function Zke(t,n){if(1&t){const e=re();h(0,"app-labeled-element-text",33),F("labelEdited",function(){return V(e),H(y(3).refreshData())}),u()}if(2&t){const e=y().$implicit,i=y(2);C("id",on(e.forwardFields.nextTid))("elementType",i.labeledElementTypes.Transport)}}function Qke(t,n){if(1&t){const e=re();h(0,"app-labeled-element-text",33),F("labelEdited",function(){return V(e),H(y(3).refreshData())}),u()}if(2&t){const e=y().$implicit,i=y(2);C("id",on(e.intermediaryForwardFields.nextTid))("elementType",i.labeledElementTypes.Transport)}}function Jke(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function eSe(t,n){1&t&&(p(0),_(1,"number")),2&t&&D(" ",ue(1,1,y().$implicit.ruleSummary.keepAlive/1e9,"1.0-1"),"s ")}function tSe(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function nSe(t,n){if(1&t){const e=re();h(0,"tr")(1,"td",28)(2,"mat-checkbox",29),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(3,"td",30),p(4),u(),h(5,"td"),p(6),u(),h(7,"td",30),x(8,Hke,1,1)(9,Uke,1,1)(10,zke,2,0,"span",16),u(),h(11,"td",30),x(12,jke,1,1)(13,$ke,1,1)(14,Wke,2,0,"span",16),u(),h(15,"td"),x(16,Gke,1,3,"app-labeled-element-text",31)(17,qke,2,0,"span",16),u(),h(18,"td",30),x(19,Kke,1,1)(20,Yke,1,1)(21,Xke,2,0,"span",16),u(),h(22,"td"),x(23,Zke,1,3,"app-labeled-element-text",31)(24,Qke,1,3,"app-labeled-element-text",31)(25,Jke,2,0,"span",16),u(),h(26,"td",30),x(27,eSe,2,4)(28,tSe,2,0,"span",16),u(),h(29,"td",22)(30,"button",32),_(31,"translate"),F("click",function(){const o=V(e).$implicit;return H(y(2).details(o))}),h(32,"mat-icon",21),p(33,"visibility"),u()(),h(34,"button",32),_(35,"translate"),F("click",function(){const o=V(e).$implicit;return H(y(2).delete(o.key))}),h(36,"mat-icon",21),p(37,"close"),u()()()()}if(2&t){const e=n.$implicit,i=y(2);c(2),C("checked",i.selections.get(e.key)),c(2),S(e.key),c(2),S(i.getTypeName(e.type)),c(2),k(null!=e.appFields&&e.appFields.routeDescriptor?8:null!=e.forwardFields&&e.forwardFields.routeDescriptor?9:10),c(4),k(null!=e.appFields&&e.appFields.routeDescriptor?12:null!=e.forwardFields&&e.forwardFields.routeDescriptor?13:14),c(4),k(e.appFields||e.forwardFields?16:17),c(3),k(null!=e.forwardFields&&e.forwardFields.nextRid||0===(null==e.forwardFields?null:e.forwardFields.nextRid)?19:null!=e.intermediaryForwardFields&&e.intermediaryForwardFields.nextRid||0===(null==e.intermediaryForwardFields?null:e.intermediaryForwardFields.nextRid)?20:21),c(4),k(null!=e.forwardFields&&e.forwardFields.nextTid?23:null!=e.intermediaryForwardFields&&e.intermediaryForwardFields.nextTid?24:25),c(4),k(null!=e.ruleSummary&&e.ruleSummary.keepAlive?27:28),c(3),C("matTooltip",v(31,13,"routes.details.title")),c(2),C("inline",!0),c(2),C("matTooltip",v(35,15,"routes.delete")),c(2),C("inline",!0)}}function iSe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.label")," ")}function oSe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.inverted-order")," ")}function rSe(t,n){if(1&t){const e=re();h(0,"div",35)(1,"span",2),p(2),_(3,"translate"),u(),p(4),u(),h(5,"div",35)(6,"span",2),p(7),_(8,"translate"),u(),p(9),u(),h(10,"div",35)(11,"span",2),p(12),_(13,"translate"),u(),p(14,": "),h(15,"app-labeled-element-text",33),F("labelEdited",function(){return V(e),H(y(3).refreshData())}),u()()}if(2&t){const e=y().$implicit,i=y(2);c(2),S(v(3,8,"routes.local-port")),c(2),D(": ",null==((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor))?null:((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor)).srcPort," "),c(3),S(v(8,10,"routes.remote-port")),c(2),D(": ",null==((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor))?null:((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor)).dstPort," "),c(3),S(v(13,12,"routes.remote-pk")),c(3),C("id",on(e.dst))("elementType",i.labeledElementTypes.Node)}}function sSe(t,n){if(1&t){const e=re();h(0,"div",35)(1,"span",2),p(2),_(3,"translate"),u(),p(4),u(),h(5,"div",35)(6,"span",2),p(7),_(8,"translate"),u(),p(9,": "),h(10,"app-labeled-element-text",33),F("labelEdited",function(){return V(e),H(y(3).refreshData())}),u()()}if(2&t){const e=y().$implicit,i=y(2);c(2),S(v(3,6,"routes.next-rid")),c(2),D(": ",(null==e.forwardFields?null:e.forwardFields.nextRid)??(null==e.intermediaryForwardFields?null:e.intermediaryForwardFields.nextRid)," "),c(3),S(v(8,8,"routes.next-tp")),c(3),C("id",on((null==e.forwardFields?null:e.forwardFields.nextTid)||(null==e.intermediaryForwardFields?null:e.intermediaryForwardFields.nextTid)))("elementType",i.labeledElementTypes.Transport)}}function aSe(t,n){if(1&t&&(h(0,"div",35)(1,"span",2),p(2),_(3,"translate"),u(),p(4),_(5,"number"),u()),2&t){const e=y().$implicit;c(2),S(v(3,2,"routes.keep-alive")),c(2),D(": ",ue(5,4,e.ruleSummary.keepAlive/1e9,"1.0-1"),"s ")}}function lSe(t,n){if(1&t){const e=re();h(0,"tr")(1,"td")(2,"div",25)(3,"div",34)(4,"mat-checkbox",29),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(5,"div",26)(6,"div",35)(7,"span",2),p(8),_(9,"translate"),u(),p(10),u(),h(11,"div",35)(12,"span",2),p(13),_(14,"translate"),u(),p(15),u(),x(16,rSe,16,14),x(17,sSe,11,10),x(18,aSe,6,7,"div",35),u(),L(19,"div",36),h(20,"div",27)(21,"button",37),_(22,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(2);return o.stopPropagation(),H(s.showOptionsDialog(r))}),h(23,"mat-icon"),p(24),u()()()()()()}if(2&t){const e=n.$implicit,i=y(2);c(4),C("checked",i.selections.get(e.key)),c(4),S(v(9,10,"routes.key")),c(2),D(": ",e.key," "),c(3),S(v(14,12,"routes.type")),c(2),D(": ",i.getTypeName(e.type)," "),c(),k(null!=e.appFields&&e.appFields.routeDescriptor||null!=e.forwardFields&&e.forwardFields.routeDescriptor?16:-1),c(),k(null!=e.forwardFields&&e.forwardFields.nextTid||null!=e.intermediaryForwardFields&&e.intermediaryForwardFields.nextTid?17:-1),c(),k(null!=e.ruleSummary&&e.ruleSummary.keepAlive?18:-1),c(3),C("matTooltip",v(22,14,"common.options")),c(3),S("add")}}function cSe(t,n){if(1&t){const e=re();h(0,"div",12)(1,"div",18)(2,"table",19)(3,"tr"),L(4,"th"),h(5,"th",20),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.keySortData))}),p(6),_(7,"translate"),x(8,Lke,2,2,"mat-icon",21),u(),h(9,"th",20),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.typeSortData))}),p(10),_(11,"translate"),x(12,Bke,2,2,"mat-icon",21),u(),h(13,"th"),p(14),_(15,"translate"),u(),h(16,"th"),p(17),_(18,"translate"),u(),h(19,"th",20),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.destinationSortData))}),p(20),_(21,"translate"),x(22,Vke,2,2,"mat-icon",21),u(),h(23,"th"),p(24),_(25,"translate"),u(),h(26,"th"),p(27),_(28,"translate"),u(),h(29,"th"),p(30),_(31,"translate"),u(),L(32,"th",22),u(),me(33,nSe,38,17,"tr",null,Le),u(),h(35,"table",23)(36,"tr",24),F("click",function(){return V(e),H(y().dataSorter.openSortingOrderModal())}),h(37,"td")(38,"div",25)(39,"div",26)(40,"div",2),p(41),_(42,"translate"),u(),h(43,"div"),p(44),_(45,"translate"),x(46,iSe,2,3),x(47,oSe,2,3),u()(),h(48,"div",27)(49,"mat-icon",21),p(50,"keyboard_arrow_down"),u()()()()(),me(51,lSe,25,16,"tr",null,Le),u()()()}if(2&t){const e=y();c(),C("ngClass",pt(39,Dke,e.showShortList_,!e.showShortList_)),c(),C("ngClass",ie(42,Tke,e.showShortList_)),c(4),D(" ",v(7,19,"routes.key")," "),c(2),k(e.dataSorter.currentSortingColumn===e.keySortData?8:-1),c(2),D(" ",v(11,21,"routes.type")," "),c(2),k(e.dataSorter.currentSortingColumn===e.typeSortData?12:-1),c(2),S(v(15,23,"routes.local-port")),c(3),S(v(18,25,"routes.remote-port")),c(3),D(" ",v(21,27,"routes.remote-pk")," "),c(2),k(e.dataSorter.currentSortingColumn===e.destinationSortData?22:-1),c(2),S(v(25,29,"routes.next-rid")),c(3),S(v(28,31,"routes.next-tp")),c(3),S(v(31,33,"routes.keep-alive")),c(3),ge(e.dataSource),c(2),C("ngClass",ie(44,Eke,e.showShortList_)),c(6),S(v(42,35,"tables.sorting-title")),c(3),D("",v(45,37,e.dataSorter.currentSortingColumn.label)," "),c(2),k(e.dataSorter.currentlySortingByLabel?46:-1),c(),k(e.dataSorter.sortingInReverseOrder?47:-1),c(2),C("inline",!0),c(2),ge(e.dataSource)}}function dSe(t,n){1&t&&(h(0,"span",40),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"routes.empty")))}function uSe(t,n){1&t&&(h(0,"span",40),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"routes.empty-with-filter")))}function hSe(t,n){if(1&t&&(h(0,"div",12)(1,"div",38)(2,"mat-icon",39),p(3,"warning"),u(),x(4,dSe,3,3,"span",40),x(5,uSe,3,3,"span",40),u()()),2&t){const e=y();c(2),C("inline",!0),c(2),k(0===e.allRoutes.length?4:-1),c(),k(0!==e.allRoutes.length?5:-1)}}let fSe=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter.setData(this.filteredRoutes)}set routes(e){if(!e)return;const i=performance.now();console.log("[HV-DIAG] route-list setter called, routes:",e.length);const o=e.map(r=>r.key).sort().join(",");if(o===this.lastRouteKeys&&e.length===this.lastRouteCount)return this.cdr.markForCheck(),void console.log("[HV-DIAG] route-list skip (unchanged) took",(performance.now()-i).toFixed(1),"ms");console.log("[HV-DIAG] route-list FULL reprocessing",e.length,"routes"),this.lastRouteCount=e.length,this.lastRouteKeys=o,this.allRoutes=e,this.allRoutes.forEach(r=>{if(r.type=r.ruleSummary.ruleType||0===r.ruleSummary.ruleType?r.ruleSummary.ruleType:"",r.appFields||r.forwardFields){const s=r.appFields?r.appFields.routeDescriptor:r.forwardFields.routeDescriptor;r.src=s.srcPk,r.src_label=Fc.getCompleteLabel(this.storageService,this.translateService,r.src),r.dst=s.dstPk,r.dst_label=Fc.getCompleteLabel(this.storageService,this.translateService,r.dst)}else r.intermediaryForwardFields?(r.src="",r.src_label="",r.dst=r.intermediaryForwardFields.nextTid,r.dst_label=Fc.getCompleteLabel(this.storageService,this.translateService,r.dst)):(r.src="",r.src_label="",r.dst="",r.dst_label="")}),this.dataFilterer.setData(this.allRoutes)}constructor(e,i,o,r,s,a,l,d){this.routeService=e,this.dialog=i,this.route=o,this.router=r,this.snackbarService=s,this.translateService=a,this.storageService=l,this.cdr=d,this.listId="rl",this.keySortData=new Pt(["key"],"routes.key",lt.Number),this.typeSortData=new Pt(["type"],"routes.type",lt.Number),this.sourceSortData=new Pt(["src"],"routes.source",lt.Text,["src_label"]),this.destinationSortData=new Pt(["dst"],"routes.destination",lt.Text,["dst_label"]),this.labeledElementTypes=uo,this.selections=new Map,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.lastRouteCount=-1,this.lastRouteKeys="",this.filterProperties=[{filterName:"routes.filter-dialog.key",keyNameInElementsArray:"key",type:Mn.TextInput,maxlength:8},{filterName:"routes.filter-dialog.source",keyNameInElementsArray:"src",secondaryKeyNameInElementsArray:"src_label",type:Mn.TextInput,maxlength:66},{filterName:"routes.filter-dialog.destination",keyNameInElementsArray:"dst",secondaryKeyNameInElementsArray:"dst_label",type:Mn.TextInput,maxlength:66}],this.ruleTypes=new Map([[0,"App"],[1,"Forward"],[2,"Int. forward"]]),this.operationSubscriptionsGroup=[],this.dataSorter=new wu(this.dialog,this.translateService,this.storageService,[this.keySortData,this.typeSortData,this.sourceSortData,this.destinationSortData],0,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()});const m={filterName:"routes.filter-dialog.type",keyNameInElementsArray:"type",type:Mn.Select,printableLabelsForValues:[{value:"",label:"routes.filter-dialog.any-type-option"}]};this.ruleTypes.forEach((g,b)=>{m.printableLabelsForValues.push({value:b+"",label:g})}),this.filterProperties=[m].concat(this.filterProperties),this.dataFilterer=new xu(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(g=>{this.filteredRoutes=g,this.dataSorter.setData(this.filteredRoutes)}),this.navigationsSubscription=this.route.paramMap.subscribe(g=>{if(g.has("page")){let b=Number.parseInt(g.get("page"),10);(isNaN(b)||b<1)&&(b=1),this.currentPageInUrl=b,this.recalculateElementsToShow()}})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.dataSortedSubscription.unsubscribe(),this.dataFiltererSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFilterer.dispose()}refreshData(){Me.refreshCurrentDisplayedData()}getTypeName(e){return this.ruleTypes.has(e)?this.ruleTypes.get(e):"Unknown"}changeSelection(e){this.selections.get(e.key)?this.selections.set(e.key,!1):this.selections.set(e.key,!0)}hasSelectedElements(){if(!this.selections)return!1;let e=!1;return this.selections.forEach(i=>{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}deleteSelected(){const e=[];this.selections.forEach((i,o)=>{i&&e.push(o)}),0!==e.length&&this.deleteRecursively(e,null)}showOptionsDialog(e){ho.openDialog(this.dialog,[{icon:"visibility",label:"routes.details.title"},{icon:"close",label:"routes.delete"}],"common.options").afterClosed().subscribe(o=>{1===o?this.details(e):2===o&&this.delete(e.key)})}details(e){vke.openDialog(this.dialog,e)}delete(e){this.operationSubscriptionsGroup.push(this.startDeleting(e).subscribe(()=>{Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("routes.deleted")},i=>{i=Ze(i),this.snackbarService.showError(i)}))}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredRoutes){this.numberOfPages=1,this.currentPage=1,this.routesToShow=this.filteredRoutes.slice();const e=new Map;this.routesToShow.forEach(o=>{e.set(o.key,!0),this.selections.has(o.key)||this.selections.set(o.key,!1)});const i=[];this.selections.forEach((o,r)=>{e.has(r)||i.push(r)}),i.forEach(o=>{this.selections.delete(o)})}else this.routesToShow=null,this.selections=new Map;this.dataSource=this.routesToShow,this.cdr.markForCheck()}startDeleting(e){return this.routeService.delete(Me.getCurrentNodeKey(),e.toString())}deleteRecursively(e,i){this.operationSubscriptionsGroup.push(this.startDeleting(e[e.length-1]).subscribe(()=>{e.pop(),0===e.length?(i&&i.close(),Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("routes.deleted")):this.deleteRecursively(e,i)},o=>{Me.refreshCurrentDisplayedData(),o=Ze(o),i?i.componentInstance.showDone("confirmation.error-header-text",o.translatableErrorMsg):this.snackbarService.showError(o)}))}static{this.\u0275fac=function(i){return new(i||t)(O(RS),O(Nt),O(Li),O(yt),O(ot),O(Xo),O(ri),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-route-list"]],inputs:{nodePK:"nodePK",showShortList:"showShortList",routes:"routes"},standalone:!1,decls:21,vars:18,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[1,"rounded-elevated-box","mt-3"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"click"],[3,"inline"],[1,"actions"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[1,"selection-col"],[3,"change","checked"],[1,"mono"],[3,"id","elementType"],["mat-button","",1,"action-button","transparent-button",3,"click","matTooltip"],[3,"labelEdited","id","elementType"],[1,"check-part"],[1,"list-row","long-content"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,Pke,6,7,"span",3),x(3,Rke,6,3,"div",4),u(),h(4,"div",5)(5,"div",6),x(6,Fke,3,4,"mat-icon",7),x(7,Nke,2,1,"mat-icon",8),h(8,"mat-menu",9,0)(10,"div",10),F("click",function(){return o.changeAllSelections(!0)}),p(11),_(12,"translate"),u(),h(13,"div",10),F("click",function(){return o.changeAllSelections(!1)}),p(14),_(15,"translate"),u(),h(16,"div",11),F("click",function(){return o.deleteSelected()}),p(17),_(18,"translate"),u()()()()(),x(19,cSe,53,46,"div",12),x(20,hSe,6,3,"div",12)),2&i&&(c(2),k(o.showShortList_?2:-1),c(),k(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?3:-1),c(3),k(o.allRoutes&&o.allRoutes.length>0?6:-1),c(),k(o.dataSource&&o.dataSource.length>0?7:-1),c(),C("overlapTrigger",!1),c(3),D(" ",v(12,12,"selection.select-all")," "),c(3),D(" ",v(15,14,"selection.unselect-all")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(18,16,"selection.delete-all")," "),c(2),k(o.dataSource&&o.dataSource.length>0?19:-1),c(),k(o.dataSource&&0!==o.dataSource.length?-1:20))},dependencies:[Ft,Ht,Yo,Ae,Et,os,Vs,Su,Fo,Fc,Gl,we],styles:[".actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"],changeDetection:0})}}return t})();function pSe(t,n){if(1&t){const e=re();h(0,"form",12),F("ngSubmit",function(){return V(e),H(y(2).submitRouterConfig())}),h(1,"mat-form-field",13)(2,"mat-label"),p(3),_(4,"translate"),u(),L(5,"input",14),u(),h(6,"div",15)(7,"button",16),p(8),_(9,"translate"),u(),h(10,"button",17),F("click",function(){return V(e),H(y(2).toggleRouterForm())}),p(11),_(12,"translate"),u()()()}if(2&t){const e=y(2);C("formGroup",e.routerForm),c(3),S(v(4,5,"node.details.router-info.min-hops")),c(4),C("disabled",!e.routerForm.valid),c(),D(" ",v(9,7,"common.save")," "),c(3),D(" ",v(12,9,"common.cancel")," ")}}function mSe(t,n){if(1&t){const e=re();h(0,"div",0)(1,"div",6)(2,"span",4),p(3),_(4,"translate"),u(),h(5,"span",7)(6,"span",8),p(7),_(8,"translate"),u(),p(9),h(10,"button",9),F("click",function(){return V(e),H(y().toggleRouterForm())}),h(11,"mat-icon",10),p(12),u()()(),x(13,pSe,13,11,"form",11),u()()}if(2&t){const e=y();c(3),S(v(4,6,"node.details.router-info.title")),c(4),D("",v(8,8,"node.details.router-info.min-hops")," "),c(2),D(" ",e.node.minHops," "),c(2),C("inline",!0),c(),S(e.showRouterForm?"close":"edit"),c(),k(e.showRouterForm?13:-1)}}let gSe=(()=>{class t extends Lt{constructor(e,i,o){super(),this.formBuilder=e,this.routeService=i,this.snackbarService=o,this.showRouterForm=!1,this.routerForm=this.formBuilder.group({min:[1,Se.compose([Se.required,Se.maxLength(3),Se.pattern("^[0-9]+$")])]})}ngOnInit(){return this.dataSubscription=Me.currentNode.subscribe(e=>{this.nodePK=e.localPk,this.node=e,this.routes=e.routes}),this.trafficSubscription=Me.currentTrafficData.subscribe(e=>{this.trafficData=e}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription.unsubscribe(),this.trafficSubscription?.unsubscribe(),this.saveRouterSubscription?.unsubscribe()}toggleRouterForm(){this.showRouterForm=!this.showRouterForm,this.showRouterForm&&this.node&&this.routerForm.get("min").setValue(this.node.minHops)}submitRouterConfig(){if(!this.routerForm.valid||!this.node)return;const e=parseInt(this.routerForm.get("min").value,10);this.saveRouterSubscription=this.routeService.setMinHops(this.node.localPk,e).subscribe({next:()=>{this.snackbarService.showDone("router-config.done"),this.showRouterForm=!1,Me.refreshCurrentDisplayedData()},error:i=>{i=Ze(i),this.snackbarService.showError(i)}})}static{this.\u0275fac=function(i){return new(i||t)(O(Si),O(RS),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-routing"]],standalone:!1,features:[_e],decls:8,vars:8,consts:[[1,"rounded-elevated-box","mt-3"],[3,"routes","showShortList","nodePK"],[1,"rounded-elevated-box","mt-3","traffic-box"],[1,"box-internal-container"],[1,"section-title"],[1,"d-flex","flex-column","justify-content-end","mt-3",3,"trafficData"],[1,"box-internal-container","overflow","font-smaller"],[1,"info-line"],[1,"title"],["mat-icon-button","",1,"inline-edit-btn",3,"click"],[3,"inline"],[1,"inline-form",3,"formGroup"],[1,"inline-form",3,"ngSubmit","formGroup"],["appearance","outline",1,"inline-form-field-sm"],["matInput","","type","number","formControlName","min","min","0","max","999"],[1,"inline-form-actions"],["mat-raised-button","","color","primary","type","submit",3,"disabled"],["mat-button","","type","button",3,"click"]],template:function(i,o){1&i&&(x(0,mSe,14,10,"div",0),L(1,"app-route-list",1),h(2,"div",2)(3,"div",3)(4,"span",4),p(5),_(6,"translate"),u(),L(7,"app-charts",5),u()()),2&i&&(k(o.node?0:-1),c(),C("routes",o.routes)("showShortList",!0)("nodePK",o.nodePK),c(4),S(v(6,6,"node.details.node-traffic-data")),c(2),C("trafficData",o.trafficData))},dependencies:[kn,Qt,Oa,Jt,xn,gc,hv,sn,_n,dn,ns,On,Ht,Yo,Ae,hke,fSe,we],encapsulation:2})}}return t})();function _Se(t,n){if(1&t&&(h(0,"mat-option",5),p(1),_(2,"translate"),u()),2&t){const e=n.$implicit;C("value",e.days),c(),S(v(2,2,e.text))}}let bSe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.data=e,this.dialogRef=i,this.formBuilder=o}ngOnInit(){this.filters=[{text:"apps.log.filter.7-days",days:7},{text:"apps.log.filter.1-month",days:30},{text:"apps.log.filter.3-months",days:90},{text:"apps.log.filter.6-months",days:180},{text:"apps.log.filter.1-year",days:365},{text:"apps.log.filter.all",days:-1}],this.form=this.formBuilder.group({filter:[this.data.days]}),this.formSubscription=this.form.get("filter").valueChanges.subscribe(e=>{this.dialogRef.close(this.filters.find(i=>i.days===e))})}ngOnDestroy(){this.formSubscription.unsubscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt),O(Si))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-log-filter"]],standalone:!1,decls:11,vars:8,consts:[[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","filter"],[3,"value"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),_(1,"translate"),h(2,"form",1)(3,"mat-form-field")(4,"div",2)(5,"label",3),p(6),_(7,"translate"),u(),h(8,"mat-select",4),me(9,_Se,3,4,"mat-option",5,Le),u()()()()()),2&i&&(C("headline",v(1,4,"apps.log.filter.title"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(4),S(v(7,6,"apps.log.filter.filter")),c(3),ge(o.filters))},dependencies:[kn,Jt,xn,sn,_n,dn,Na,is,Sn,we],styles:["mat-form-field[_ngcontent-%COMP%]{margin-bottom:-24px}"]})}}return t})();const vSe=["content"],ySe=t=>({totalLogs:t});function CSe(t,n){if(1&t&&(h(0,"app-button",7)(1,"div",11),p(2),_(3,"translate"),u()()),2&t){const e=y();c(2),D(" ",ue(3,1,"apps.log.view-all",ie(4,ySe,e.totalLogs))," ")}}function wSe(t,n){if(1&t&&(h(0,"div",8)(1,"span",12),p(2),u(),p(3),u()),2&t){const e=n.$implicit;c(2),D(" ",e.time," "),c(),D(" ",e.msg," ")}}function xSe(t,n){1&t&&(h(0,"div",9),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"apps.log.empty")," "))}function kSe(t,n){1&t&&L(0,"app-loading-indicator",10),2&t&&C("showWhite",!1)}let SSe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.largeModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.dialogRef=i,this.appsService=o,this.dialog=r,this.snackbarService=s,this.apiService=a,this.logMessages=[],this.hasMoreLogMessages=!1,this.totalLogs=0,this.loading=!1,this.currentFilter={text:"apps.log.filter.7-days",days:7},this.shouldShowError=!0}ngOnInit(){this.loadData(0)}ngOnDestroy(){this.removeSubscription()}filter(){bSe.openDialog(this.dialog,this.currentFilter).afterClosed().subscribe(e=>{e&&(this.currentFilter=e,this.logMessages=[],this.loadData(0))})}getLogsUrl(){return"/"+this.apiService.apiPrefix+this.appsService.getLogMessagesUrl(Me.getCurrentNodeKey(),this.data.name)}loadData(e){this.removeSubscription(),this.loading=!0,this.subscription=se(1).pipe(oi(e),Tt(()=>this.appsService.getLogMessages(Me.getCurrentNodeKey(),this.data.name,this.currentFilter.days))).subscribe(i=>this.onLogsReceived(i),i=>this.onLogsError(i))}removeSubscription(){this.subscription&&this.subscription.unsubscribe()}onLogsReceived(e=[]){this.loading=!1,this.shouldShowError=!0,this.snackbarService.closeCurrentIfTemporaryError();let i=0;this.hasMoreLogMessages=!1,this.totalLogs=e.length,e.forEach(o=>{if(i<5e3){const r=o.startsWith("[")?0:-1,s=-1!==r?o.indexOf("]"):-1;this.logMessages.push(-1!==r&&-1!==s?{time:o.substr(r,s+1),msg:o.substr(s+1)}:{time:"",msg:o})}else this.hasMoreLogMessages=!0;i+=1}),setTimeout(()=>{this.content.nativeElement.scrollTop=this.content.nativeElement.scrollHeight})}onLogsError(e){e=Ze(e),this.shouldShowError&&(this.snackbarService.showError("common.loading-error",null,!0,e),this.shouldShowError=!1),this.loadData(at.connectionRetryDelay)}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt),O(Hs),O(Nt),O(ot),O(fi))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-log"]],viewQuery:function(i,o){if(1&i&&st(vSe,5),2&i){let r;fe(r=pe())&&(o.content=r.first)}},standalone:!1,decls:20,vars:16,consts:[["content",""],[3,"headline","includeVerticalMargins","includeScrollableArea","dialog"],[1,"top-dialog-button",3,"click"],[1,"top-dialog-button-content"],[1,"actual-value"],[1,"top-dialog-button-margin"],["target","_blank",3,"href"],["color","primary",1,"full-logs-button"],[1,"app-log-message"],[1,"app-log-empty","mt-3"],[3,"showWhite"],[1,"text-container"],[1,"transparent"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"div",2),F("click",function(){return o.filter()}),h(3,"div",3)(4,"div")(5,"span"),p(6),_(7,"translate"),u(),h(8,"span",4),p(9),_(10,"translate"),u()()(),L(11,"div",5),u(),h(12,"mat-dialog-content",null,0)(14,"a",6),x(15,CSe,4,6,"app-button",7),u(),me(16,wSe,4,2,"div",8,Le),x(18,xSe,3,3,"div",9),x(19,kSe,1,1,"app-loading-indicator",10),u()()),2&i&&(C("headline",v(1,10,"apps.log.title"))("includeVerticalMargins",!1)("includeScrollableArea",!1)("dialog",o.dialogRef),c(6),D("",v(7,12,"apps.log.filter-button")," "),c(3),S(v(10,14,o.currentFilter.text)),c(5),C("href",o.getLogsUrl(),$i),c(),k(o.hasMoreLogMessages?15:-1),c(),ge(o.logMessages),c(2),k(o.loading||o.logMessages&&0!==o.logMessages.length?-1:18),c(),k(o.loading?19:-1))},dependencies:[au,Mi,Sn,Qr,we],styles:[".mat-mdc-dialog-content[_ngcontent-%COMP%]{font-size:.875rem}.app-log-message[_ngcontent-%COMP%]{margin-top:15px;word-break:break-word}.app-log-message[_ngcontent-%COMP%] .transparent[_ngcontent-%COMP%]{color:#999}.app-log-message[_ngcontent-%COMP%]:first-of-type{margin-top:0}.app-log-message[_ngcontent-%COMP%]:last-of-type{margin-bottom:24px}.top-dialog-button[_ngcontent-%COMP%]{color:#777!important}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%]{text-align:center}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .actual-value[_ngcontent-%COMP%]{color:#202226}.full-logs-button[_ngcontent-%COMP%] button{width:100%!important;display:block;text-align:center;margin-bottom:15px}.full-logs-button[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{width:100%}"]})}}return t})();const MSe=["button"],DSe=["firstInput"],kM=t=>({"element-disabled":t});function TSe(t,n){if(1&t&&(h(0,"mat-form-field",4)(1,"div",5)(2,"label",10),p(3),_(4,"translate"),u(),L(5,"input",11),u()()),2&t){const e=y();C("ngClass",ie(4,kM,e.disableDismiss)),c(3),S(v(4,2,"apps.vpn-socks-server-settings.netifc"))}}function ESe(t,n){if(1&t){const e=re();h(0,"div",8)(1,"mat-checkbox",12),F("change",function(o){return V(e),H(y().setSecureMode(o))}),p(2),_(3,"translate"),h(4,"mat-icon",13),_(5,"translate"),p(6,"help"),u()()()}if(2&t){const e=y();c(),C("checked",e.secureMode)("ngClass",ie(9,kM,e.disableDismiss)),c(),D(" ",v(3,5,"apps.vpn-socks-server-settings.secure-mode-check")," "),c(2),C("inline",!0)("matTooltip",v(5,7,"apps.vpn-socks-server-settings.secure-mode-info"))}}let PSe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.appsService=i,this.formBuilder=o,this.dialogRef=r,this.snackbarService=s,this.dialog=a,this.configuringVpn=!1,this.secureMode=!1,-1!==e.name.toLocaleLowerCase().indexOf("vpn")&&(this.configuringVpn=!0)}ngOnInit(){if(this.form=this.formBuilder.group({whitelist:["",this.validateWhitelist.bind(this)],netifc:[""]}),this.data.args&&this.data.args.length>0)for(let e=0;ethis.firstInput.nativeElement.focus())}ngOnDestroy(){this.formSubscription&&this.formSubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()}get disableDismiss(){return!!this.button&&this.button.isLoading}setSecureMode(e){this.button.disabled||(this.secureMode=!!e.checked)}saveChanges(){if(!this.form.valid||this.button.disabled)return;const i=this.normalizedWhitelist()?"apps.vpn-socks-server-settings.set-whitelist-confirmation":"apps.vpn-socks-server-settings.clear-whitelist-confirmation",o=Ut.createConfirmationDialog(this.dialog,i);o.componentInstance.operationAccepted.subscribe(()=>{o.close(),this.continueSavingChanges()})}continueSavingChanges(){this.button.showLoading();const e={whitelist:this.normalizedWhitelist()};this.configuringVpn&&(e.secure=this.secureMode,e.netifc=this.form.get("netifc").value),this.operationSubscription=this.appsService.changeAppSettings(Me.getCurrentNodeKey(),this.data.name,e).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)})}normalizedWhitelist(){const e=(this.form.get("whitelist").value||"").trim();return""===e?"":e.split(/[\s,]+/).filter(i=>i.length>0).join(",")}onSuccess(){Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.vpn-socks-server-settings.changes-made"),this.dialogRef.close()}onError(e){this.button.showError(),e=Ze(e),this.snackbarService.showError(e)}validateWhitelist(e){const i=(e&&(e.value||"")).trim();if(""===i)return null;for(const o of i.split(/[\s,]+/))if(""!==o&&(66!==o.length||!/^[0-9a-fA-F]+$/.test(o)))return{invalid:!0};return null}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Hs),O(Si),O(Zt),O(ot),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-skysocks-settings"]],viewQuery:function(i,o){if(1&i&&st(MSe,5)(DSe,5),2&i){let r;fe(r=pe())&&(o.button=r.first),fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:23,vars:24,consts:[["firstInput",""],["button",""],[3,"headline","dialog","disableDismiss"],[3,"formGroup"],[3,"ngClass"],[1,"field-container"],["for","whitelist",1,"field-label"],["id","whitelist","formControlName","whitelist","rows","3","matInput","","placeholder","02abc..., 03def..."],[1,"main-theme","settings-option"],["color","primary",1,"float-right",3,"action","disabled"],["for","remoteKey",1,"field-label"],["id","netifc","type","text","formControlName","netifc","matInput",""],["color","primary",3,"change","checked","ngClass"],[1,"help-icon",3,"inline","matTooltip"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),_(1,"translate"),h(2,"form",3)(3,"mat-form-field",4)(4,"div",5)(5,"label",6),p(6),_(7,"translate"),u(),L(8,"textarea",7,0),u(),h(10,"mat-hint"),p(11),_(12,"translate"),u(),h(13,"mat-error")(14,"span"),p(15),_(16,"translate"),u()()(),x(17,TSe,6,6,"mat-form-field",4),x(18,ESe,7,11,"div",8),u(),h(19,"app-button",9,1),F("action",function(){return o.saveChanges()}),p(21),_(22,"translate"),u()()),2&i&&(C("headline",v(1,12,"apps.vpn-socks-server-settings."+(o.configuringVpn?"vpn-title":"socks-title")))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),c(2),C("formGroup",o.form),c(),C("ngClass",ie(22,kM,o.disableDismiss)),c(3),S(v(7,14,"apps.vpn-socks-server-settings.whitelist")),c(5),S(v(12,16,"apps.vpn-socks-server-settings.whitelist-help")),c(4),S(v(16,18,"apps.vpn-socks-server-settings.whitelist-invalid-pk")),c(2),k(o.configuringVpn?17:-1),c(),k(o.configuringVpn?18:-1),c(),C("disabled",!o.form.valid),c(2),D(" ",v(22,20,"apps.vpn-socks-server-settings.save")," "))},dependencies:[Ft,kn,Qt,Jt,xn,sn,_n,dn,sp,Aa,On,Ae,Et,Fo,Mi,Sn,we],styles:["mat-checkbox[_ngcontent-%COMP%]{margin-bottom:15px}"]})}}return t})();const ISe=["firstInput"];let OSe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i||"",o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.dialogRef=e,this.data=i,this.formBuilder=o}ngOnInit(){this.form=this.formBuilder.group({note:[this.data]}),setTimeout(()=>this.firstInput.nativeElement.focus())}finish(){const e=this.form.get("note").value.trim();this.dialogRef.close("-"+e)}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Si))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-edit-skysocks-client-note"]],viewQuery:function(i,o){if(1&i&&st(ISe,5),2&i){let r;fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:11,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","note","maxlength","100","matInput",""],["color","primary","type","mat-raised-button",1,"float-right",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),_(7,"translate"),u(),L(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.finish()}),p(11),_(12,"translate"),u()()),2&i&&(C("headline",v(1,5,"apps.vpn-socks-client-settings.change-note-dialog.title"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(4),S(v(7,7,"apps.vpn-socks-client-settings.change-note-dialog.note")),c(5),S(v(12,9,"common.save")))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,On,Mi,Sn,we],encapsulation:2})}}return t})();function ASe(t,n){if(1&t&&p(0),2&t){const e=y().$implicit;D(" ",y(2).completeCountriesList[e.toUpperCase()]," ")}}function RSe(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.toUpperCase()," ")}function FSe(t,n){if(1&t&&(h(0,"mat-option",9)(1,"div",10),L(2,"div"),u(),x(3,ASe,1,1),x(4,RSe,1,1),u()),2&t){const e=n.$implicit,i=y(2);C("value",e.toUpperCase()),c(2),ao("background-image: url('assets/img/flags/"+e.toLocaleLowerCase()+".png');"),c(),k(i.completeCountriesList[e.toUpperCase()]?3:-1),c(),k(i.completeCountriesList[e.toUpperCase()]?-1:4)}}function NSe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"apps.vpn-socks-client-settings.filter-dialog.any-country")," ")}function LSe(t,n){if(1&t&&p(0),2&t){const e=y(3);D(" ",e.completeCountriesList[e.form.get("country").value]," ")}}function BSe(t,n){1&t&&p(0),2&t&&D(" ",y(3).form.get("country").value," ")}function VSe(t,n){if(1&t&&(h(0,"div",10),L(1,"div"),u(),x(2,LSe,1,1),x(3,BSe,1,1)),2&t){const e=y(2);c(),ao("background-image: url('assets/img/flags/"+e.form.get("country").value.toLocaleLowerCase()+".png');"),c(),k(e.completeCountriesList[e.form.get("country").value]?2:-1),c(),k(e.completeCountriesList[e.form.get("country").value]?-1:3)}}function HSe(t,n){if(1&t&&(h(0,"mat-form-field")(1,"div",3)(2,"label",4),p(3),_(4,"translate"),u(),h(5,"mat-select",8)(6,"mat-option",9),p(7),_(8,"translate"),u(),me(9,FSe,5,5,"mat-option",9,Le),h(11,"mat-select-trigger"),x(12,NSe,2,3),x(13,VSe,4,4),u()()()()),2&t){const e=y();c(3),S(v(4,5,"apps.vpn-socks-client-settings.filter-dialog.country")),c(3),C("value","-"),c(),S(v(8,7,"apps.vpn-socks-client-settings.filter-dialog.any-country")),c(2),ge(e.data.availableCountries),c(3),k("-"===e.form.get("country").value?12:-1),c(),k("-"!==e.form.get("country").value?13:-1)}}class Q6{constructor(){this.country="",this.location="",this.key=""}}let USe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.data=e,this.dialogRef=i,this.formBuilder=o,this.completeCountriesList=rs}ngOnInit(){this.form=this.formBuilder.group({country:[this.data.currentFilters.country?this.data.currentFilters.country:"-"],"location-text":[this.data.currentFilters.location],"key-text":[this.data.currentFilters.key]})}apply(){const e=new Q6;let i=this.form.get("country").value.trim();"-"===i&&(i=""),e.country=i,e.location=this.form.get("location-text").value.trim(),e.key=this.form.get("key-text").value.trim(),this.dialogRef.close(e)}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt),O(Si))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-skysocks-client-filter"]],standalone:!1,decls:20,vars:15,consts:[["button",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","location-text","maxlength","100","matInput",""],["formControlName","key-text","maxlength","66","matInput",""],["type","mat-raised-button","color","primary",1,"float-right",3,"action"],["formControlName","country","id","country"],[3,"value"],[1,"flag-container"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2),x(3,HSe,14,9,"mat-form-field"),h(4,"mat-form-field")(5,"div",3)(6,"label",4),p(7),_(8,"translate"),u(),L(9,"input",5),u()(),h(10,"mat-form-field")(11,"div",3)(12,"label",4),p(13),_(14,"translate"),u(),L(15,"input",6),u()()(),h(16,"app-button",7,0),F("action",function(){return o.apply()}),p(18),_(19,"translate"),u()()),2&i&&(C("headline",v(1,7,"apps.vpn-socks-client-settings.filter-dialog.title"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(),k(o.data.availableCountries.length>0?3:-1),c(4),S(v(8,9,"apps.vpn-socks-client-settings.filter-dialog.location")),c(6),S(v(14,11,"apps.vpn-socks-client-settings.filter-dialog.pub-key")),c(5),D(" ",v(19,13,"apps.vpn-socks-client-settings.filter-dialog.apply")," "))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,On,Na,Qme,is,Mi,Sn,we],encapsulation:2})}}return t})(),zSe=(()=>{class t{constructor(e){this.http=e,this.discoveryServiceUrl="https://sd.skycoin.com/api/services?type="}getServices(e){const i=[];return this.http.get(this.discoveryServiceUrl+(e?"proxy":"vpn")).pipe(lp(o=>o.pipe(oi(4e3))),De(o=>(o||(o=[]),o.forEach(r=>{const s=new lme,a=r.address.split(":");2===a.length&&(s.address=r.address,s.pk=a[0],s.port=a[1],s.location="",r.geo&&(r.geo.country&&(s.country=r.geo.country,s.location+=rs[r.geo.country.toUpperCase()]?rs[r.geo.country.toUpperCase()]:r.geo.country),r.geo.region&&r.geo.country&&(s.location+=", "),r.geo.region&&(s.region=r.geo.region,s.location+=s.region)),i.push(s))}),i)))}static{this.\u0275fac=function(i){return new(i||t)(ce(xa))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const SM=["*"];function jSe(t,n){1&t&&Rt(0)}const $Se=["tabListContainer"],WSe=["tabList"],GSe=["tabListInner"],qSe=["nextPaginator"],KSe=["previousPaginator"],YSe=["content"];function XSe(t,n){}const ZSe=["tabBodyWrapper"],QSe=["tabHeader"];function JSe(t,n){}function eMe(t,n){1&t&&rt(0,JSe,0,0,"ng-template",12),2&t&&C("cdkPortalOutlet",y().$implicit.templateLabel)}function tMe(t,n){1&t&&p(0),2&t&&S(y().$implicit.textLabel)}function nMe(t,n){if(1&t){const e=re();h(0,"div",7,2),F("click",function(){const o=V(e),r=o.$implicit,s=o.$index,a=y(),l=Un(1);return H(a._handleClick(r,l,s))})("cdkFocusChange",function(o){const r=V(e).$index;return H(y()._tabFocusChanged(o,r))}),L(2,"span",8)(3,"div",9),h(4,"span",10)(5,"span",11),x(6,eMe,1,1,null,12)(7,tMe,1,1),u()()()}if(2&t){const e=n.$implicit,i=n.$index,o=Un(1),r=y();Ge(e.labelClass),ve("mdc-tab--active",r.selectedIndex===i),C("id",r._getTabLabelId(e,i))("disabled",e.disabled)("fitInkBarToContent",r.fitInkBarToContent),We("tabIndex",r._getTabIndex(i))("aria-posinset",i+1)("aria-setsize",r._tabs.length)("aria-controls",r._getTabContentId(i))("aria-selected",r.selectedIndex===i)("aria-label",e.ariaLabel||null)("aria-labelledby",!e.ariaLabel&&e.ariaLabelledby?e.ariaLabelledby:null),c(3),C("matRippleTrigger",o)("matRippleDisabled",e.disabled||r.disableRipple),c(3),k(e.templateLabel?6:7)}}function iMe(t,n){1&t&&Rt(0)}function oMe(t,n){if(1&t){const e=re();h(0,"mat-tab-body",13),F("_onCentered",function(){return V(e),H(y()._removeTabBodyWrapperHeight())})("_onCentering",function(o){return V(e),H(y()._setTabBodyWrapperHeight(o))})("_beforeCentering",function(o){return V(e),H(y()._bodyCentered(o))}),u()}if(2&t){const e=n.$implicit,i=n.$index,o=y();Ge(e.bodyClass),C("id",o._getTabContentId(i))("content",e.content)("position",e.position)("animationDuration",o.animationDuration)("preserveContent",o.preserveContent),We("tabindex",null!=o.contentTabIndex&&o.selectedIndex===i?o.contentTabIndex:null)("aria-labelledby",o._getTabLabelId(e,i))("aria-hidden",o.selectedIndex!==i)}}const rMe=new Z("MatTabContent");let sMe=(()=>{class t{template=T(Oi);constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matTabContent",""]],features:[dt([{provide:rMe,useExisting:t}])]})}return t})();const aMe=new Z("MatTabLabel"),J6=new Z("MAT_TAB");let lMe=(()=>{class t extends $ce{_closestTab=T(J6,{optional:!0});static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","mat-tab-label",""],["","matTabLabel",""]],features:[dt([{provide:aMe,useExisting:t}]),_e]})}return t})();const eH=new Z("MAT_TAB_GROUP");let tH=(()=>{class t{_viewContainerRef=T(Ai);_closestTabGroup=T(eH,{optional:!0});disabled=!1;get templateLabel(){return this._templateLabel}set templateLabel(e){this._setTemplateLabelInput(e)}_templateLabel;_explicitContent=void 0;_implicitContent;textLabel="";ariaLabel;ariaLabelledby;labelClass;bodyClass;id=null;_contentPortal=null;get content(){return this._contentPortal}_stateChanges=new be;position=null;origin=null;isActive=!1;constructor(){T(qo).load(cu)}ngOnChanges(e){(e.hasOwnProperty("textLabel")||e.hasOwnProperty("disabled"))&&this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}ngOnInit(){this._contentPortal=new nc(this._explicitContent||this._implicitContent,this._viewContainerRef)}_setTemplateLabelInput(e){e&&e._closestTab===this&&(this._templateLabel=e)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-tab"]],contentQueries:function(i,o,r){if(1&i&&Ds(r,lMe,5)(r,sMe,7,Oi),2&i){let s;fe(s=pe())&&(o.templateLabel=s.first),fe(s=pe())&&(o._explicitContent=s.first)}},viewQuery:function(i,o){if(1&i&&st(Oi,7),2&i){let r;fe(r=pe())&&(o._implicitContent=r.first)}},hostAttrs:["hidden",""],hostVars:1,hostBindings:function(i,o){2&i&&We("id",null)},inputs:{disabled:[2,"disabled","disabled",Te],textLabel:[0,"label","textLabel"],ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],labelClass:"labelClass",bodyClass:"bodyClass",id:"id"},exportAs:["matTab"],features:[dt([{provide:J6,useExisting:t}]),vi],ngContentSelectors:SM,decls:1,vars:0,template:function(i,o){1&i&&(xi(),Fg(0,jSe,1,0,"ng-template"))},encapsulation:2})}return t})();const MM="mdc-tab-indicator--active",nH="mdc-tab-indicator--no-transition";class cMe{_items;_currentItem;constructor(n){this._items=n}hide(){this._items.forEach(n=>n.deactivateInkBar()),this._currentItem=void 0}alignToElement(n){const e=this._items.find(o=>o.elementRef.nativeElement===n),i=this._currentItem;if(e!==i&&(i?.deactivateInkBar(),e)){const o=i?.elementRef.nativeElement.getBoundingClientRect?.();e.activateInkBar(o),this._currentItem=e}}}let dMe=(()=>{class t{_elementRef=T(Ne);_inkBarElement=null;_inkBarContentElement=null;_fitToContent=!1;get fitInkBarToContent(){return this._fitToContent}set fitInkBarToContent(e){this._fitToContent!==e&&(this._fitToContent=e,this._inkBarElement&&this._appendInkBarElement())}activateInkBar(e){const i=this._elementRef.nativeElement;if(!e||!i.getBoundingClientRect||!this._inkBarContentElement)return void i.classList.add(MM);const o=i.getBoundingClientRect(),r=e.width/o.width,s=e.left-o.left;i.classList.add(nH),this._inkBarContentElement.style.setProperty("transform",`translateX(${s}px) scaleX(${r})`),i.getBoundingClientRect(),i.classList.remove(nH),i.classList.add(MM),this._inkBarContentElement.style.setProperty("transform","")}deactivateInkBar(){this._elementRef.nativeElement.classList.remove(MM)}ngOnInit(){this._createInkBarElement()}ngOnDestroy(){this._inkBarElement?.remove(),this._inkBarElement=this._inkBarContentElement=null}_createInkBarElement(){const e=this._elementRef.nativeElement.ownerDocument||document,i=this._inkBarElement=e.createElement("span"),o=this._inkBarContentElement=e.createElement("span");i.className="mdc-tab-indicator",o.className="mdc-tab-indicator__content mdc-tab-indicator__content--underline",i.appendChild(this._inkBarContentElement),this._appendInkBarElement()}_appendInkBarElement(){(this._fitToContent?this._elementRef.nativeElement.querySelector(".mdc-tab__content"):this._elementRef.nativeElement).appendChild(this._inkBarElement)}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,inputs:{fitInkBarToContent:[2,"fitInkBarToContent","fitInkBarToContent",Te]}})}return t})(),iH=(()=>{class t extends dMe{elementRef=T(Ne);disabled=!1;focus(){this.elementRef.nativeElement.focus()}getOffsetLeft(){return this.elementRef.nativeElement.offsetLeft}getOffsetWidth(){return this.elementRef.nativeElement.offsetWidth}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","matTabLabelWrapper",""]],hostVars:3,hostBindings:function(i,o){2&i&&(We("aria-disabled",!!o.disabled),ve("mat-mdc-tab-disabled",o.disabled))},inputs:{disabled:[2,"disabled","disabled",Te]},features:[_e]})}return t})();const oH={passive:!0};let fMe=(()=>{class t{_elementRef=T(Ne);_changeDetectorRef=T(Dt);_viewportRuler=T(tu);_dir=T(kr,{optional:!0});_ngZone=T(Ce);_platform=T(Zn);_sharedResizeObserver=T(SB);_injector=T(Ue);_renderer=T(ei);_animationsDisabled=hi();_eventCleanups;_scrollDistance=0;_selectedIndexChanged=!1;_destroyed=new be;_showPaginationControls=!1;_disableScrollAfter=!0;_disableScrollBefore=!0;_tabLabelCount;_scrollDistanceChanged=!1;_keyManager;_currentTextContent;_stopScrolling=new be;disablePagination=!1;get selectedIndex(){return this._selectedIndex}set selectedIndex(e){const i=isNaN(e)?0:e;this._selectedIndex!=i&&(this._selectedIndexChanged=!0,this._selectedIndex=i,this._keyManager&&this._keyManager.updateActiveItem(i))}_selectedIndex=0;selectFocusedIndex=new ke;indexFocused=new ke;constructor(){this._eventCleanups=this._ngZone.runOutsideAngular(()=>[this._renderer.listen(this._elementRef.nativeElement,"mouseleave",()=>this._stopInterval())])}ngAfterViewInit(){this._eventCleanups.push(this._renderer.listen(this._previousPaginator.nativeElement,"touchstart",()=>this._handlePaginatorPress("before"),oH),this._renderer.listen(this._nextPaginator.nativeElement,"touchstart",()=>this._handlePaginatorPress("after"),oH))}ngAfterContentInit(){const e=this._dir?this._dir.change:se("ltr"),i=this._sharedResizeObserver.observe(this._elementRef.nativeElement).pipe(Ab(32),ln(this._destroyed)),o=this._viewportRuler.change(150).pipe(ln(this._destroyed)),r=()=>{this.updatePagination(),this._alignInkBarToSelectedTab()};this._keyManager=new lV(this._items).withHorizontalOrientation(this._getLayoutDirection()).withHomeAndEnd().withWrap().skipPredicate(()=>!1),this._keyManager.updateActiveItem(Math.max(this._selectedIndex,0)),Wi(r,{injector:this._injector}),Dr(e,o,i,this._items.changes,this._itemsResized()).pipe(ln(this._destroyed)).subscribe(()=>{this._ngZone.run(()=>{Promise.resolve().then(()=>{this._scrollDistance=Math.max(0,Math.min(this._getMaxScrollDistance(),this._scrollDistance)),r()})}),this._keyManager?.withHorizontalOrientation(this._getLayoutDirection())}),this._keyManager.change.subscribe(s=>{this.indexFocused.emit(s),this._setTabFocus(s)})}_itemsResized(){return"function"!=typeof ResizeObserver?Ni:this._items.changes.pipe(zn(this._items),wt(e=>new zt(i=>this._ngZone.runOutsideAngular(()=>{const o=new ResizeObserver(r=>i.next(r));return e.forEach(r=>o.observe(r.elementRef.nativeElement)),()=>{o.disconnect()}}))),kk(1),Pn(e=>e.some(i=>i.contentRect.width>0&&i.contentRect.height>0)))}ngAfterContentChecked(){this._tabLabelCount!=this._items.length&&(this.updatePagination(),this._tabLabelCount=this._items.length,this._changeDetectorRef.markForCheck()),this._selectedIndexChanged&&(this._scrollToLabel(this._selectedIndex),this._checkScrollingControls(),this._alignInkBarToSelectedTab(),this._selectedIndexChanged=!1,this._changeDetectorRef.markForCheck()),this._scrollDistanceChanged&&(this._updateTabScrollPosition(),this._scrollDistanceChanged=!1,this._changeDetectorRef.markForCheck())}ngOnDestroy(){this._eventCleanups.forEach(e=>e()),this._keyManager?.destroy(),this._destroyed.next(),this._destroyed.complete(),this._stopScrolling.complete()}_handleKeydown(e){if(!Mr(e))switch(e.keyCode){case 13:case 32:if(this.focusIndex!==this.selectedIndex){const i=this._items.get(this.focusIndex);i&&!i.disabled&&(this.selectFocusedIndex.emit(this.focusIndex),this._itemSelected(e))}break;default:this._keyManager?.onKeydown(e)}}_onContentChanges(){const e=this._elementRef.nativeElement.textContent;e!==this._currentTextContent&&(this._currentTextContent=e||"",this._ngZone.run(()=>{this.updatePagination(),this._alignInkBarToSelectedTab(),this._changeDetectorRef.markForCheck()}))}updatePagination(){this._checkPaginationEnabled(),this._checkScrollingControls(),this._updateTabScrollPosition()}get focusIndex(){return this._keyManager?this._keyManager.activeItemIndex:0}set focusIndex(e){!this._isValidIndex(e)||this.focusIndex===e||!this._keyManager||this._keyManager.setActiveItem(e)}_isValidIndex(e){return!this._items||!!this._items.toArray()[e]}_setTabFocus(e){if(this._showPaginationControls&&this._scrollToLabel(e),this._items&&this._items.length){this._items.toArray()[e].focus();const i=this._tabListContainer.nativeElement;i.scrollLeft="ltr"==this._getLayoutDirection()?0:i.scrollWidth-i.offsetWidth}}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_updateTabScrollPosition(){if(this.disablePagination)return;const e=this.scrollDistance,i="ltr"===this._getLayoutDirection()?-e:e;this._tabList.nativeElement.style.transform=`translateX(${Math.round(i)}px)`,(this._platform.TRIDENT||this._platform.EDGE)&&(this._tabListContainer.nativeElement.scrollLeft=0)}get scrollDistance(){return this._scrollDistance}set scrollDistance(e){this._scrollTo(e)}_scrollHeader(e){return this._scrollTo(this._scrollDistance+("before"==e?-1:1)*this._tabListContainer.nativeElement.offsetWidth/3)}_handlePaginatorClick(e){this._stopInterval(),this._scrollHeader(e)}_scrollToLabel(e){if(this.disablePagination)return;const i=this._items?this._items.toArray()[e]:null;if(!i)return;const o=this._tabListContainer.nativeElement.offsetWidth,{offsetLeft:r,offsetWidth:s}=i.elementRef.nativeElement;let a,l;"ltr"==this._getLayoutDirection()?(a=r,l=a+s):(l=this._tabListInner.nativeElement.offsetWidth-r,a=l-s);const d=this.scrollDistance,f=this.scrollDistance+o;af&&(this.scrollDistance+=Math.min(l-f,a-d))}_checkPaginationEnabled(){if(this.disablePagination)this._showPaginationControls=!1;else{const o=this._tabListInner.nativeElement.scrollWidth-this._elementRef.nativeElement.offsetWidth>=5;o||(this.scrollDistance=0),o!==this._showPaginationControls&&(this._showPaginationControls=o,this._changeDetectorRef.markForCheck())}}_checkScrollingControls(){this.disablePagination?this._disableScrollAfter=this._disableScrollBefore=!0:(this._disableScrollBefore=0==this.scrollDistance,this._disableScrollAfter=this.scrollDistance==this._getMaxScrollDistance(),this._changeDetectorRef.markForCheck())}_getMaxScrollDistance(){return this._tabListInner.nativeElement.scrollWidth-this._tabListContainer.nativeElement.offsetWidth||0}_alignInkBarToSelectedTab(){const e=this._items&&this._items.length?this._items.toArray()[this.selectedIndex]:null,i=e?e.elementRef.nativeElement:null;i?this._inkBar.alignToElement(i):this._inkBar.hide()}_stopInterval(){this._stopScrolling.next()}_handlePaginatorPress(e,i){i&&null!=i.button&&0!==i.button||(this._stopInterval(),Ls(650,100).pipe(ln(Dr(this._stopScrolling,this._destroyed))).subscribe(()=>{const{maxScrollDistance:o,distance:r}=this._scrollHeader(e);(0===r||r>=o)&&this._stopInterval()}))}_scrollTo(e){if(this.disablePagination)return{maxScrollDistance:0,distance:0};const i=this._getMaxScrollDistance();return this._scrollDistance=Math.max(0,Math.min(i,e)),this._scrollDistanceChanged=!0,this._checkScrollingControls(),{maxScrollDistance:i,distance:this._scrollDistance}}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,inputs:{disablePagination:[2,"disablePagination","disablePagination",Te],selectedIndex:[2,"selectedIndex","selectedIndex",_r]},outputs:{selectFocusedIndex:"selectFocusedIndex",indexFocused:"indexFocused"}})}return t})(),pMe=(()=>{class t extends fMe{_items;_tabListContainer;_tabList;_tabListInner;_nextPaginator;_previousPaginator;_inkBar;ariaLabel;ariaLabelledby;disableRipple=!1;ngAfterContentInit(){this._inkBar=new cMe(this._items),super.ngAfterContentInit()}_itemSelected(e){e.preventDefault()}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})();static \u0275cmp=ae({type:t,selectors:[["mat-tab-header"]],contentQueries:function(i,o,r){if(1&i&&Ds(r,iH,4),2&i){let s;fe(s=pe())&&(o._items=s)}},viewQuery:function(i,o){if(1&i&&st($Se,7)(WSe,7)(GSe,7)(qSe,5)(KSe,5),2&i){let r;fe(r=pe())&&(o._tabListContainer=r.first),fe(r=pe())&&(o._tabList=r.first),fe(r=pe())&&(o._tabListInner=r.first),fe(r=pe())&&(o._nextPaginator=r.first),fe(r=pe())&&(o._previousPaginator=r.first)}},hostAttrs:[1,"mat-mdc-tab-header"],hostVars:4,hostBindings:function(i,o){2&i&&ve("mat-mdc-tab-header-pagination-controls-enabled",o._showPaginationControls)("mat-mdc-tab-header-rtl","rtl"==o._getLayoutDirection())},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],disableRipple:[2,"disableRipple","disableRipple",Te]},features:[_e],ngContentSelectors:SM,decls:13,vars:10,consts:[["previousPaginator",""],["tabListContainer",""],["tabList",""],["tabListInner",""],["nextPaginator",""],["mat-ripple","",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-before",3,"click","mousedown","touchend","matRippleDisabled"],[1,"mat-mdc-tab-header-pagination-chevron"],[1,"mat-mdc-tab-label-container",3,"keydown"],["role","tablist",1,"mat-mdc-tab-list",3,"cdkObserveContent"],[1,"mat-mdc-tab-labels"],["mat-ripple","",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-after",3,"mousedown","click","touchend","matRippleDisabled"]],template:function(i,o){1&i&&(xi(),h(0,"div",5,0),F("click",function(){return o._handlePaginatorClick("before")})("mousedown",function(s){return o._handlePaginatorPress("before",s)})("touchend",function(){return o._stopInterval()}),L(2,"div",6),u(),h(3,"div",7,1),F("keydown",function(s){return o._handleKeydown(s)}),h(5,"div",8,2),F("cdkObserveContent",function(){return o._onContentChanges()}),h(7,"div",9,3),Rt(9),u()()(),h(10,"div",10,4),F("mousedown",function(s){return o._handlePaginatorPress("after",s)})("click",function(){return o._handlePaginatorClick("after")})("touchend",function(){return o._stopInterval()}),L(12,"div",6),u()),2&i&&(ve("mat-mdc-tab-header-pagination-disabled",o._disableScrollBefore),C("matRippleDisabled",o._disableScrollBefore||o.disableRipple),c(3),ve("_mat-animation-noopable",o._animationsDisabled),c(2),We("aria-label",o.ariaLabel||null)("aria-labelledby",o.ariaLabelledby||null),c(5),ve("mat-mdc-tab-header-pagination-disabled",o._disableScrollAfter),C("matRippleDisabled",o._disableScrollAfter||o.disableRipple))},dependencies:[lu,Ede],styles:[".mat-mdc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mdc-tab-indicator .mdc-tab-indicator__content{transition-duration:var(--mat-tab-animation-duration, 250ms)}.mat-mdc-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;outline:0}.mat-mdc-tab-header-pagination::-moz-focus-inner{border:0}.mat-mdc-tab-header-pagination .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab-header-pagination-controls-enabled .mat-mdc-tab-header-pagination{display:flex}.mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after{padding-left:4px}.mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-pagination-after{padding-right:4px}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-mdc-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px;border-color:var(--mat-tab-pagination-icon-color, var(--mat-sys-on-surface))}.mat-mdc-tab-header-pagination-disabled{box-shadow:none;cursor:default;pointer-events:none}.mat-mdc-tab-header-pagination-disabled .mat-mdc-tab-header-pagination-chevron{opacity:.4}.mat-mdc-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-mdc-tab-list{transition:none}.mat-mdc-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1;border-bottom-style:solid;border-bottom-width:var(--mat-tab-divider-height, 1px);border-bottom-color:var(--mat-tab-divider-color, var(--mat-sys-surface-variant))}.mat-mdc-tab-group-inverted-header .mat-mdc-tab-label-container{border-bottom:none;border-top-style:solid;border-top-width:var(--mat-tab-divider-height, 1px);border-top-color:var(--mat-tab-divider-color, var(--mat-sys-surface-variant))}.mat-mdc-tab-labels{display:flex;flex:1 0 auto}[mat-align-tabs=center]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:flex-end}.cdk-drop-list .mat-mdc-tab-labels,.mat-mdc-tab-labels.cdk-drop-list{min-height:var(--mat-tab-container-height, 48px)}.mat-mdc-tab::before{margin:5px}@media(forced-colors: active){.mat-mdc-tab[aria-disabled=true]{color:GrayText}}\n"],encapsulation:2})}return t})();const mMe=new Z("MAT_TABS_CONFIG");let rH=(()=>{class t extends ic{_host=T(DM);_ngZone=T(Ce);_centeringSub=gt.EMPTY;_leavingSub=gt.EMPTY;constructor(){super()}ngOnInit(){super.ngOnInit(),this._centeringSub=this._host._beforeCentering.pipe(zn(this._host._isCenterPosition())).subscribe(e=>{this._host._content&&e&&!this.hasAttached()&&this._ngZone.run(()=>{Promise.resolve().then(),this.attach(this._host._content)})}),this._leavingSub=this._host._afterLeavingCenter.subscribe(()=>{this._host.preserveContent||this._ngZone.run(()=>this.detach())})}ngOnDestroy(){super.ngOnDestroy(),this._centeringSub.unsubscribe(),this._leavingSub.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matTabBodyHost",""]],features:[_e]})}return t})(),DM=(()=>{class t{_elementRef=T(Ne);_dir=T(kr,{optional:!0});_ngZone=T(Ce);_injector=T(Ue);_renderer=T(ei);_diAnimationsDisabled=hi();_eventCleanups;_initialized=!1;_fallbackTimer;_positionIndex;_dirChangeSubscription=gt.EMPTY;_position;_previousPosition;_onCentering=new ke;_beforeCentering=new ke;_afterLeavingCenter=new ke;_onCentered=new ke(!0);_portalHost;_contentElement;_content;animationDuration="500ms";preserveContent=!1;set position(e){this._positionIndex=e,this._computePositionAnimationState()}constructor(){if(this._dir){const e=T(Dt);this._dirChangeSubscription=this._dir.change.subscribe(i=>{this._computePositionAnimationState(i),e.markForCheck()})}}ngOnInit(){this._bindTransitionEvents(),"center"===this._position&&(this._setActiveClass(!0),Wi(()=>this._onCentering.emit(this._elementRef.nativeElement.clientHeight),{injector:this._injector})),this._initialized=!0}ngOnDestroy(){clearTimeout(this._fallbackTimer),this._eventCleanups?.forEach(e=>e()),this._dirChangeSubscription.unsubscribe()}_bindTransitionEvents(){this._ngZone.runOutsideAngular(()=>{const e=this._elementRef.nativeElement,i=o=>{o.target===this._contentElement?.nativeElement&&(this._elementRef.nativeElement.classList.remove("mat-tab-body-animating"),"transitionend"===o.type&&this._transitionDone())};this._eventCleanups=[this._renderer.listen(e,"transitionstart",o=>{o.target===this._contentElement?.nativeElement&&(this._elementRef.nativeElement.classList.add("mat-tab-body-animating"),this._transitionStarted())}),this._renderer.listen(e,"transitionend",i),this._renderer.listen(e,"transitioncancel",i)]})}_transitionStarted(){clearTimeout(this._fallbackTimer);const e="center"===this._position;this._beforeCentering.emit(e),e&&this._onCentering.emit(this._elementRef.nativeElement.clientHeight)}_transitionDone(){"center"===this._position?this._onCentered.emit():"center"===this._previousPosition&&this._afterLeavingCenter.emit()}_setActiveClass(e){this._elementRef.nativeElement.classList.toggle("mat-mdc-tab-body-active",e)}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_isCenterPosition(){return 0===this._positionIndex}_computePositionAnimationState(e=this._getLayoutDirection()){this._previousPosition=this._position,this._position=this._positionIndex<0?"ltr"==e?"left":"right":this._positionIndex>0?"ltr"==e?"right":"left":"center",this._animationsDisabled()?this._simulateTransitionEvents():this._initialized&&("center"===this._position||"center"===this._previousPosition)&&(clearTimeout(this._fallbackTimer),this._fallbackTimer=this._ngZone.runOutsideAngular(()=>setTimeout(()=>this._simulateTransitionEvents(),100)))}_simulateTransitionEvents(){this._transitionStarted(),Wi(()=>this._transitionDone(),{injector:this._injector})}_animationsDisabled(){return this._diAnimationsDisabled||"0ms"===this.animationDuration||"0s"===this.animationDuration}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-tab-body"]],viewQuery:function(i,o){if(1&i&&st(rH,5)(YSe,5),2&i){let r;fe(r=pe())&&(o._portalHost=r.first),fe(r=pe())&&(o._contentElement=r.first)}},hostAttrs:[1,"mat-mdc-tab-body"],hostVars:1,hostBindings:function(i,o){2&i&&We("inert","center"===o._position?null:"")},inputs:{_content:[0,"content","_content"],animationDuration:"animationDuration",preserveContent:"preserveContent",position:"position"},outputs:{_onCentering:"_onCentering",_beforeCentering:"_beforeCentering",_onCentered:"_onCentered"},decls:3,vars:6,consts:[["content",""],["cdkScrollable","",1,"mat-mdc-tab-body-content"],["matTabBodyHost",""]],template:function(i,o){1&i&&(h(0,"div",1,0),rt(2,XSe,0,0,"ng-template",2),u()),2&i&&ve("mat-tab-body-content-left","left"===o._position)("mat-tab-body-content-right","right"===o._position)("mat-tab-body-content-can-animate","center"===o._position||"center"===o._previousPosition)},dependencies:[rH,WL],styles:[".mat-mdc-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-mdc-tab-body.mat-mdc-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-mdc-tab-group.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body.mat-mdc-tab-body-active{overflow-y:hidden}.mat-mdc-tab-body-content{height:100%;overflow:auto;transform:none;visibility:hidden}.mat-tab-body-animating>.mat-mdc-tab-body-content,.mat-mdc-tab-body-active>.mat-mdc-tab-body-content{visibility:visible}.mat-tab-body-animating>.mat-mdc-tab-body-content{min-height:1px}.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body-content{overflow:hidden}.mat-tab-body-content-can-animate{transition:transform var(--mat-tab-animation-duration) 1ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable .mat-tab-body-content-can-animate{transition:none}.mat-tab-body-content-left{transform:translate3d(-100%, 0, 0)}.mat-tab-body-content-right{transform:translate3d(100%, 0, 0)}\n"],encapsulation:2})}return t})(),gMe=(()=>{class t{_elementRef=T(Ne);_changeDetectorRef=T(Dt);_ngZone=T(Ce);_tabsSubscription=gt.EMPTY;_tabLabelSubscription=gt.EMPTY;_tabBodySubscription=gt.EMPTY;_diAnimationsDisabled=hi();_allTabs;_tabBodies;_tabBodyWrapper;_tabHeader;_tabs=new ud;_indexToSelect=0;_lastFocusedTabIndex=null;_tabBodyWrapperHeight=0;color;get fitInkBarToContent(){return this._fitInkBarToContent}set fitInkBarToContent(e){this._fitInkBarToContent=e,this._changeDetectorRef.markForCheck()}_fitInkBarToContent=!1;stretchTabs=!0;alignTabs=null;dynamicHeight=!1;get selectedIndex(){return this._selectedIndex}set selectedIndex(e){this._indexToSelect=isNaN(e)?null:e}_selectedIndex=null;headerPosition="above";get animationDuration(){return this._animationDuration}set animationDuration(e){const i=e+"";this._animationDuration=/^\d+$/.test(i)?e+"ms":i}_animationDuration;get contentTabIndex(){return this._contentTabIndex}set contentTabIndex(e){this._contentTabIndex=isNaN(e)?null:e}_contentTabIndex=null;disablePagination=!1;disableRipple=!1;preserveContent=!1;get backgroundColor(){return this._backgroundColor}set backgroundColor(e){const i=this._elementRef.nativeElement.classList;i.remove("mat-tabs-with-background",`mat-background-${this.backgroundColor}`),e&&i.add("mat-tabs-with-background",`mat-background-${e}`),this._backgroundColor=e}_backgroundColor;ariaLabel;ariaLabelledby;selectedIndexChange=new ke;focusChange=new ke;animationDone=new ke;selectedTabChange=new ke(!0);_groupId;_isServer=!T(Zn).isBrowser;constructor(){const e=T(mMe,{optional:!0});this._groupId=T(si).getId("mat-tab-group-"),this.animationDuration=e&&e.animationDuration?e.animationDuration:"500ms",this.disablePagination=!(!e||null==e.disablePagination)&&e.disablePagination,this.dynamicHeight=!(!e||null==e.dynamicHeight)&&e.dynamicHeight,null!=e?.contentTabIndex&&(this.contentTabIndex=e.contentTabIndex),this.preserveContent=!!e?.preserveContent,this.fitInkBarToContent=!(!e||null==e.fitInkBarToContent)&&e.fitInkBarToContent,this.stretchTabs=!e||null==e.stretchTabs||e.stretchTabs,this.alignTabs=e&&null!=e.alignTabs?e.alignTabs:null}ngAfterContentChecked(){const e=this._indexToSelect=this._clampTabIndex(this._indexToSelect);if(this._selectedIndex!=e){const i=null==this._selectedIndex;if(!i){this.selectedTabChange.emit(this._createChangeEvent(e));const o=this._tabBodyWrapper.nativeElement;o.style.minHeight=o.clientHeight+"px"}Promise.resolve().then(()=>{this._tabs.forEach((o,r)=>o.isActive=r===e),i||(this.selectedIndexChange.emit(e),this._tabBodyWrapper.nativeElement.style.minHeight="")})}this._tabs.forEach((i,o)=>{i.position=o-e,null!=this._selectedIndex&&0==i.position&&!i.origin&&(i.origin=e-this._selectedIndex)}),this._selectedIndex!==e&&(this._selectedIndex=e,this._lastFocusedTabIndex=null,this._changeDetectorRef.markForCheck())}ngAfterContentInit(){this._subscribeToAllTabChanges(),this._subscribeToTabLabels(),this._tabsSubscription=this._tabs.changes.subscribe(()=>{const e=this._clampTabIndex(this._indexToSelect);if(e===this._selectedIndex){const i=this._tabs.toArray();let o;for(let r=0;r{i[e].isActive=!0,this.selectedTabChange.emit(this._createChangeEvent(e))})}this._changeDetectorRef.markForCheck()})}ngAfterViewInit(){this._tabBodySubscription=this._tabBodies.changes.subscribe(()=>this._bodyCentered(!0))}_subscribeToAllTabChanges(){this._allTabs.changes.pipe(zn(this._allTabs)).subscribe(e=>{this._tabs.reset(e.filter(i=>i._closestTabGroup===this||!i._closestTabGroup)),this._tabs.notifyOnChanges()})}ngOnDestroy(){this._tabs.destroy(),this._tabsSubscription.unsubscribe(),this._tabLabelSubscription.unsubscribe(),this._tabBodySubscription.unsubscribe()}realignInkBar(){this._tabHeader&&this._tabHeader._alignInkBarToSelectedTab()}updatePagination(){this._tabHeader&&this._tabHeader.updatePagination()}focusTab(e){const i=this._tabHeader;i&&(i.focusIndex=e)}_focusChanged(e){this._lastFocusedTabIndex=e,this.focusChange.emit(this._createChangeEvent(e))}_createChangeEvent(e){const i=new _Me;return i.index=e,this._tabs&&this._tabs.length&&(i.tab=this._tabs.toArray()[e]),i}_subscribeToTabLabels(){this._tabLabelSubscription&&this._tabLabelSubscription.unsubscribe(),this._tabLabelSubscription=Dr(...this._tabs.map(e=>e._stateChanges)).subscribe(()=>this._changeDetectorRef.markForCheck())}_clampTabIndex(e){return Math.min(this._tabs.length-1,Math.max(e||0,0))}_getTabLabelId(e,i){return e.id||`${this._groupId}-label-${i}`}_getTabContentId(e){return`${this._groupId}-content-${e}`}_setTabBodyWrapperHeight(e){if(!this.dynamicHeight||!this._tabBodyWrapperHeight)return void(this._tabBodyWrapperHeight=e);const i=this._tabBodyWrapper.nativeElement;i.style.height=this._tabBodyWrapperHeight+"px",this._tabBodyWrapper.nativeElement.offsetHeight&&(i.style.height=e+"px")}_removeTabBodyWrapperHeight(){const e=this._tabBodyWrapper.nativeElement;this._tabBodyWrapperHeight=e.clientHeight,e.style.height="",this._ngZone.run(()=>this.animationDone.emit())}_handleClick(e,i,o){i.focusIndex=o,e.disabled||(this.selectedIndex=o)}_getTabIndex(e){return e===(this._lastFocusedTabIndex??this.selectedIndex)?0:-1}_tabFocusChanged(e,i){e&&"mouse"!==e&&"touch"!==e&&(this._tabHeader.focusIndex=i)}_bodyCentered(e){e&&this._tabBodies?.forEach((i,o)=>i._setActiveClass(o===this._selectedIndex))}_animationsDisabled(){return this._diAnimationsDisabled||"0"===this.animationDuration||"0ms"===this.animationDuration}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-tab-group"]],contentQueries:function(i,o,r){if(1&i&&Ds(r,tH,5),2&i){let s;fe(s=pe())&&(o._allTabs=s)}},viewQuery:function(i,o){if(1&i&&st(ZSe,5)(QSe,5)(DM,5),2&i){let r;fe(r=pe())&&(o._tabBodyWrapper=r.first),fe(r=pe())&&(o._tabHeader=r.first),fe(r=pe())&&(o._tabBodies=r)}},hostAttrs:[1,"mat-mdc-tab-group"],hostVars:11,hostBindings:function(i,o){2&i&&(We("mat-align-tabs",o.alignTabs),Ge("mat-"+(o.color||"primary")),Hl("--mat-tab-animation-duration",o.animationDuration),ve("mat-mdc-tab-group-dynamic-height",o.dynamicHeight)("mat-mdc-tab-group-inverted-header","below"===o.headerPosition)("mat-mdc-tab-group-stretch-tabs",o.stretchTabs))},inputs:{color:"color",fitInkBarToContent:[2,"fitInkBarToContent","fitInkBarToContent",Te],stretchTabs:[2,"mat-stretch-tabs","stretchTabs",Te],alignTabs:[0,"mat-align-tabs","alignTabs"],dynamicHeight:[2,"dynamicHeight","dynamicHeight",Te],selectedIndex:[2,"selectedIndex","selectedIndex",_r],headerPosition:"headerPosition",animationDuration:"animationDuration",contentTabIndex:[2,"contentTabIndex","contentTabIndex",_r],disablePagination:[2,"disablePagination","disablePagination",Te],disableRipple:[2,"disableRipple","disableRipple",Te],preserveContent:[2,"preserveContent","preserveContent",Te],backgroundColor:"backgroundColor",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"]},outputs:{selectedIndexChange:"selectedIndexChange",focusChange:"focusChange",animationDone:"animationDone",selectedTabChange:"selectedTabChange"},exportAs:["matTabGroup"],features:[dt([{provide:eH,useExisting:t}])],ngContentSelectors:SM,decls:9,vars:8,consts:[["tabHeader",""],["tabBodyWrapper",""],["tabNode",""],[3,"indexFocused","selectFocusedIndex","selectedIndex","disableRipple","disablePagination","aria-label","aria-labelledby"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-focus-indicator",3,"id","mdc-tab--active","class","disabled","fitInkBarToContent"],[1,"mat-mdc-tab-body-wrapper"],["role","tabpanel",3,"id","class","content","position","animationDuration","preserveContent"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-focus-indicator",3,"click","cdkFocusChange","id","disabled","fitInkBarToContent"],[1,"mdc-tab__ripple"],["mat-ripple","",1,"mat-mdc-tab-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mdc-tab__content"],[1,"mdc-tab__text-label"],[3,"cdkPortalOutlet"],["role","tabpanel",3,"_onCentered","_onCentering","_beforeCentering","id","content","position","animationDuration","preserveContent"]],template:function(i,o){1&i&&(xi(),h(0,"mat-tab-header",3,0),F("indexFocused",function(s){return o._focusChanged(s)})("selectFocusedIndex",function(s){return o.selectedIndex=s}),me(2,nMe,8,17,"div",4,Le),u(),x(4,iMe,1,0),h(5,"div",5,1),me(7,oMe,1,10,"mat-tab-body",6,Le),u()),2&i&&(C("selectedIndex",o.selectedIndex||0)("disableRipple",o.disableRipple)("disablePagination",o.disablePagination),D0("aria-label",o.ariaLabel)("aria-labelledby",o.ariaLabelledby),c(2),ge(o._tabs),c(2),k(o._isServer?4:-1),c(),ve("_mat-animation-noopable",o._animationsDisabled()),c(2),ge(o._tabs))},dependencies:[pMe,iH,Qde,lu,ic,DM],styles:['.mdc-tab{min-width:90px;padding:0 24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;z-index:1;touch-action:manipulation}.mdc-tab__content{display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__text-label{transition:150ms color linear;display:inline-block;line-height:1;z-index:2}.mdc-tab--active .mdc-tab__text-label{transition-delay:100ms}._mat-animation-noopable .mdc-tab__text-label{transition:none}.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator__content{transition:var(--mat-tab-animation-duration, 250ms) transform cubic-bezier(0.4, 0, 0.2, 1);transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:1}._mat-animation-noopable .mdc-tab-indicator__content,.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mat-mdc-tab-ripple.mat-mdc-tab-ripple{position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none}.mat-mdc-tab{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none;background:none;height:var(--mat-tab-container-height, 48px);font-family:var(--mat-tab-label-text-font, var(--mat-sys-title-small-font));font-size:var(--mat-tab-label-text-size, var(--mat-sys-title-small-size));letter-spacing:var(--mat-tab-label-text-tracking, var(--mat-sys-title-small-tracking));line-height:var(--mat-tab-label-text-line-height, var(--mat-sys-title-small-line-height));font-weight:var(--mat-tab-label-text-weight, var(--mat-sys-title-small-weight))}.mat-mdc-tab.mdc-tab{flex-grow:0}.mat-mdc-tab .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-indicator-color, var(--mat-sys-primary));border-top-width:var(--mat-tab-active-indicator-height, 2px);border-radius:var(--mat-tab-active-indicator-shape, 0)}.mat-mdc-tab:hover .mdc-tab__text-label{color:var(--mat-tab-inactive-hover-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab:focus .mdc-tab__text-label{color:var(--mat-tab-inactive-focus-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-active-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__ripple::before,.mat-mdc-tab.mdc-tab--active .mat-ripple-element{background-color:var(--mat-tab-active-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab__text-label{color:var(--mat-tab-active-hover-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-hover-indicator-color, var(--mat-sys-primary))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-active-focus-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-focus-indicator-color, var(--mat-sys-primary))}.mat-mdc-tab.mat-mdc-tab-disabled{opacity:.4;pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__content{pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple::before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element{background-color:var(--mat-tab-disabled-ripple-color, var(--mat-sys-on-surface-variant))}.mat-mdc-tab .mdc-tab__ripple::before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-inactive-label-text-color, var(--mat-sys-on-surface));display:inline-flex;align-items:center}.mat-mdc-tab .mdc-tab__content{position:relative;pointer-events:auto}.mat-mdc-tab:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab-group.mat-mdc-tab-group-stretch-tabs>.mat-mdc-tab-header .mat-mdc-tab{flex-grow:1}.mat-mdc-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-tab-background-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab__text-label{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-focus-indicator::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-focus-indicator::before{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab__ripple::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header{flex-direction:column-reverse}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header .mdc-tab-indicator__content--underline{align-self:flex-start}.mat-mdc-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable{transition:none !important;animation:none !important}\n'],encapsulation:2})}return t})();class _Me{index;tab}let bMe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ai]})}return t})(),vMe=(()=>{class t{constructor(e){this.dialog=e,this.tabNames=[""],this.selectedTab=0,this.tabChanged=new ke}ngOnDestroy(){this.tabChanged.complete()}showTabSelector(){const e=[];this.tabNames.forEach((i,o)=>{e.push({icon:o===this.selectedTab?"check":"",label:i})}),ho.openDialog(this.dialog,e,"node.logs.filter-title").afterClosed().subscribe(i=>{this.tabChanged.emit(i-1)})}static{this.\u0275fac=function(i){return new(i||t)(O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-tab-selector"]],inputs:{tabNames:"tabNames",selectedTab:"selectedTab"},outputs:{tabChanged:"tabChanged"},standalone:!1,decls:9,vars:4,consts:[[1,"top-dialog-button",3,"click"],[1,"top-dialog-button-content"],[1,"tab-name"],[1,"icon",3,"inline"],[1,"top-dialog-button-margin"]],template:function(i,o){1&i&&(h(0,"div",0),F("click",function(){return o.showTabSelector()}),h(1,"div",1)(2,"div",2)(3,"span"),p(4),_(5,"translate"),u()(),h(6,"mat-icon",3),p(7,"expand_more"),u()(),L(8,"div",4),u()),2&i&&(c(4),S(v(5,2,o.tabNames[o.selectedTab])),c(2),C("inline",!0))},dependencies:[Ae,we],styles:[".top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%]{display:flex}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .tab-name[_ngcontent-%COMP%]{flex-grow:1;margin-right:10px;align-self:center}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:20px;flex-shrink:0;align-self:center}"]})}}return t})();const yMe=["button"],CMe=["settingsButton"],wMe=["firstInput"],xMe=["tabGroup"],cs=t=>({"element-disabled":t}),sH=t=>({highlighted:t}),kMe=(t,n)=>({currentElementsRange:t,totalElements:n}),SMe=t=>({number:t});function MMe(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.vpn-socks-client-settings.remote-key-length-error")))}function DMe(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.vpn-socks-client-settings.remote-key-chars-error")))}function TMe(t,n){1&t&&L(0,"app-loading-indicator",15),2&t&&C("showWhite",!1)}function EMe(t,n){1&t&&(h(0,"div",16)(1,"mat-icon",20),p(2,"error"),u(),p(3),_(4,"translate"),u()),2&t&&(c(),C("inline",!0),c(2),D(" ",v(4,2,"apps.vpn-socks-client-settings.no-elements")," "))}function PMe(t,n){1&t&&(h(0,"div",24),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"apps.vpn-socks-client-settings.no-filter")," "))}function IMe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().$implicit[1])," ")}function OMe(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit[2]," ")}function AMe(t,n){if(1&t&&(h(0,"div",24)(1,"span"),p(2),_(3,"translate"),u(),x(4,IMe,2,3),x(5,OMe,1,1),u()),2&t){const e=n.$implicit;c(2),D("",v(3,3,e[0])," "),c(2),k(e[1]?4:-1),c(),k(e[2]?5:-1)}}function RMe(t,n){1&t&&(h(0,"div",16)(1,"mat-icon",20),p(2,"error"),u(),p(3),_(4,"translate"),u()),2&t&&(c(),C("inline",!0),c(2),D(" ",v(4,2,"apps.vpn-socks-client-settings.no-elements-for-filters")," "))}function FMe(t,n){if(1&t&&(h(0,"span",10),p(1),u()),2&t){const e=n.$implicit;C("ngClass",ie(2,sH,n.$index%2!=0)),c(),S(e)}}function NMe(t,n){if(1&t&&(h(0,"div",30),L(1,"div"),u()),2&t){const e=y(2).$implicit;c(),ao("background-image: url('assets/img/flags/"+e.country.toLocaleLowerCase()+".png');")}}function LMe(t,n){if(1&t&&(h(0,"span",10),p(1),u()),2&t){const e=n.$implicit;C("ngClass",ie(2,sH,n.$index%2!=0)),c(),S(e)}}function BMe(t,n){if(1&t&&(h(0,"div",24)(1,"span"),p(2),_(3,"translate"),u(),h(4,"span"),p(5,"\xa0 "),x(6,NMe,2,2,"div",30),me(7,LMe,2,4,"span",10,Le),u()()),2&t){const e=y().$implicit,i=y(2);c(2),S(v(3,2,"apps.vpn-socks-client-settings.location")),c(4),k(e.country?6:-1),c(),ge(i.getHighlightedTextParts(e.location,i.currentFilters.location))}}function VMe(t,n){if(1&t){const e=re();h(0,"div",18)(1,"button",26),F("click",function(){const o=V(e).$implicit;return H(y(2).saveChanges(o.pk,null,!1,o.location))}),h(2,"div",27)(3,"div",24)(4,"span"),p(5),_(6,"translate"),u(),h(7,"span"),p(8,"\xa0"),me(9,FMe,2,4,"span",10,Le),u()(),x(11,BMe,9,4,"div",24),u()(),h(12,"button",28),_(13,"translate"),F("click",function(){const o=V(e).$implicit;return H(y(2).copyPk(o.pk))}),h(14,"mat-icon",29),p(15,"filter_none"),u()()()}if(2&t){const e=n.$implicit,i=y(2);c(),C("ngClass",ie(9,cs,i.disableDismiss)),c(4),S(v(6,5,"apps.vpn-socks-client-settings.key")),c(4),ge(i.getHighlightedTextParts(e.pk,i.currentFilters.key)),c(2),k(e.location?11:-1),c(),C("matTooltip",v(13,7,"apps.vpn-socks-client-settings.copy-pk-info")),c(2),C("inline",!0)}}function HMe(t,n){if(1&t){const e=re();h(0,"button",21),F("click",function(){return V(e),H(y().changeFilters())}),h(1,"div",22)(2,"div",23)(3,"mat-icon",20),p(4,"filter_list"),u()(),h(5,"div"),x(6,PMe,3,3,"div",24),me(7,AMe,6,5,"div",24,Le),h(9,"div",25),p(10),_(11,"translate"),u()()()(),x(12,RMe,5,4,"div",16),me(13,VMe,16,11,"div",18,Le)}if(2&t){const e=y();c(3),C("inline",!0),c(3),k(0===e.currentFiltersTexts.length?6:-1),c(),ge(e.currentFiltersTexts),c(3),S(v(11,4,"apps.vpn-socks-client-settings.click-to-change")),c(2),k(0===e.filteredProxiesFromDiscovery.length?12:-1),c(),ge(e.proxiesFromDiscoveryToShow)}}function UMe(t,n){if(1&t){const e=re();h(0,"div",17)(1,"span"),p(2),_(3,"translate"),u(),h(4,"button",31),F("click",function(){return V(e),H(y().goToPreviousPage())}),h(5,"mat-icon"),p(6,"chevron_left"),u()(),h(7,"button",31),F("click",function(){return V(e),H(y().goToNextPage())}),h(8,"mat-icon"),p(9,"chevron_right"),u()()()}if(2&t){const e=y();c(2),S(ue(3,1,"apps.vpn-socks-client-settings.pagination-info",pt(4,kMe,e.currentRange,e.filteredProxiesFromDiscovery.length)))}}function zMe(t,n){if(1&t&&(h(0,"div")(1,"div",16)(2,"mat-icon",20),p(3,"error"),u(),p(4),_(5,"translate"),u()()),2&t){const e=y();c(2),C("inline",!0),c(2),D(" ",ue(5,2,"apps.vpn-socks-client-settings.no-history",ie(5,SMe,e.maxHistoryElements))," ")}}function jMe(t,n){1&t&&mr(0)}function $Me(t,n){1&t&&mr(0)}function WMe(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y(2).$implicit;c(),D(" ",e.note)}}function GMe(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"apps.vpn-socks-client-settings.note-entered-manually")))}function qMe(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=y(4).$implicit;c(),D(" (",e.location,")")}}function KMe(t,n){if(1&t&&(h(0,"span"),p(1),_(2,"translate"),u(),x(3,qMe,2,1,"span")),2&t){const e=y(3).$implicit;c(),D(" ",v(2,2,"apps.vpn-socks-client-settings.note-obtained")),c(2),k(e.location?3:-1)}}function YMe(t,n){if(1&t&&(x(0,GMe,3,3,"span"),x(1,KMe,4,4)),2&t){const e=y(2).$implicit;k(e.enteredManually?0:-1),c(),k(e.enteredManually?-1:1)}}function XMe(t,n){if(1&t&&(h(0,"div",36)(1,"div",37)(2,"div",24)(3,"span"),p(4),_(5,"translate"),u(),h(6,"span"),p(7),u()(),h(8,"div",24)(9,"span"),p(10),_(11,"translate"),u(),x(12,WMe,2,1,"span"),x(13,YMe,2,2),u()(),h(14,"div",38)(15,"div",39)(16,"mat-icon",20),p(17,"add"),u()()()()),2&t){const e=y().$implicit;c(4),S(v(5,6,"apps.vpn-socks-client-settings.key")),c(3),D(" ",e.key),c(3),S(v(11,8,"apps.vpn-socks-client-settings.note")),c(2),k(e.note?12:-1),c(),k(e.note?-1:13),c(3),C("inline",!0)}}function ZMe(t,n){if(1&t){const e=re();h(0,"div",18)(1,"button",32),F("click",function(){const o=V(e).$implicit;return H(y().useFromHistory(o))}),rt(2,jMe,1,0,"ng-container",33),u(),h(3,"button",34),_(4,"translate"),F("click",function(){const o=V(e).$implicit;return H(y().changeNote(o))}),h(5,"mat-icon",29),p(6,"edit"),u()(),h(7,"button",34),_(8,"translate"),F("click",function(){const o=V(e).$implicit;return H(y().removeFromHistory(o.key))}),h(9,"mat-icon",29),p(10,"close"),u()(),h(11,"button",35),F("click",function(){const o=V(e).$implicit;return H(y().openHistoryOptions(o))}),rt(12,$Me,1,0,"ng-container",33),u(),rt(13,XMe,18,10,"ng-template",null,0,Ul),u()}if(2&t){const e=Un(14),i=y();c(),C("ngClass",ie(12,cs,i.disableDismiss)),c(),C("ngTemplateOutlet",e),c(),C("matTooltip",v(4,8,"apps.vpn-socks-client-settings.change-note")),c(2),C("inline",!0),c(2),C("matTooltip",v(8,10,"apps.vpn-socks-client-settings.remove-entry")),c(2),C("inline",!0),c(2),C("ngClass",ie(14,cs,i.disableDismiss)),c(),C("ngTemplateOutlet",e)}}function QMe(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.vpn-socks-client-settings.dns-error")))}function JMe(t,n){if(1&t&&(h(0,"mat-form-field",10)(1,"div",11)(2,"label",12),p(3),_(4,"translate"),u(),L(5,"input",40),u(),h(6,"mat-error"),x(7,QMe,3,3,"span"),u()(),h(8,"div",41)(9,"mat-checkbox",42),p(10),_(11,"translate"),h(12,"mat-icon",43),_(13,"translate"),p(14,"help"),u()()()),2&t){const e=y();C("ngClass",ie(13,cs,e.disableDismiss)),c(3),S(v(4,7,"apps.vpn-socks-client-settings.dns")),c(4),k(e.settingsForm.get("dns").valid?-1:7),c(2),C("ngClass",ie(15,cs,e.disableDismiss)),c(),D(" ",v(11,9,"apps.vpn-socks-client-settings.killswitch-check")," "),c(2),C("inline",!0)("matTooltip",v(13,11,"apps.vpn-socks-client-settings.killswitch-info"))}}function eDe(t,n){if(1&t&&(h(0,"mat-form-field",10)(1,"div",11)(2,"label",44),p(3),_(4,"translate"),u(),L(5,"input",45),u(),h(6,"mat-hint"),p(7),_(8,"translate"),u()(),h(9,"mat-form-field",10)(10,"div",11)(11,"label",44),p(12),_(13,"translate"),u(),L(14,"input",46),u(),h(15,"mat-hint"),p(16),_(17,"translate"),u()(),h(18,"mat-form-field",10)(19,"div",11)(20,"label",44),p(21),_(22,"translate"),u(),L(23,"input",47),u(),h(24,"mat-hint"),p(25),_(26,"translate"),u()(),h(27,"mat-form-field",10)(28,"div",11)(29,"label",44),p(30),_(31,"translate"),u(),L(32,"input",48),u(),h(33,"mat-hint"),p(34),_(35,"translate"),u()()),2&t){const e=y();C("ngClass",ie(28,cs,e.disableDismiss)),c(3),S(v(4,12,"apps.vpn-socks-client-settings.addr")),c(4),S(v(8,14,"apps.vpn-socks-client-settings.addr-hint")),c(2),C("ngClass",ie(30,cs,e.disableDismiss)),c(3),S(v(13,16,"apps.vpn-socks-client-settings.http")),c(4),S(v(17,18,"apps.vpn-socks-client-settings.http-hint")),c(2),C("ngClass",ie(32,cs,e.disableDismiss)),c(3),S(v(22,20,"apps.vpn-socks-client-settings.tries")),c(4),S(v(26,22,"apps.vpn-socks-client-settings.tries-hint")),c(2),C("ngClass",ie(34,cs,e.disableDismiss)),c(3),S(v(31,24,"apps.vpn-socks-client-settings.retry-time")),c(4),S(v(35,26,"apps.vpn-socks-client-settings.retry-time-hint"))}}function tDe(t,n){1&t&&(h(0,"div",19)(1,"mat-icon",20),p(2,"warning"),u(),p(3),_(4,"translate"),u()),2&t&&(c(),C("inline",!0),c(2),D(" ",v(4,2,"apps.vpn-socks-client-settings.settings-changed-alert")," "))}let nDe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.largeModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a,l,d,f){this.data=e,this.dialogRef=i,this.appsService=o,this.formBuilder=r,this.snackbarService=s,this.dialog=a,this.proxyDiscoveryService=l,this.clipboardService=d,this.storageService=f,this.socksHistoryStorageKey="SkysocksClientHistory_",this.vpnHistoryStorageKey="VpnClientHistory_",this.maxHistoryElements=10,this.maxElementsPerPage=10,this.tabLabels=[],this.currentTab=0,this.countriesFromDiscovery=new Set,this.loadingFromDiscovery=!0,this.numberOfPages=1,this.currentPage=1,this.currentRange="1 - 1",this.currentFilters=new Q6,this.currentFiltersTexts=[],this.configuringVpn=!1,this.initialSocksAddr="",this.initialSocksHTTP="",this.initialSocksTries="",this.initialSocksRetryTime="",this.initialKillswitchSetting=!1,this.initialDnsSetting="",this.working=!1,-1!==e.name.toLocaleLowerCase().indexOf("vpn")?(this.configuringVpn=!0,this.tabLabels=["apps.vpn-socks-client-settings.remote-visor-tab","apps.vpn-socks-client-settings.discovery-tab","apps.vpn-socks-client-settings.history-tab","apps.vpn-socks-client-settings.settings-tab"]):this.tabLabels=["apps.vpn-socks-client-settings.remote-visor-tab","apps.vpn-socks-client-settings.discovery-tab","apps.vpn-socks-client-settings.history-tab","apps.vpn-socks-client-settings.settings-tab"]}ngOnInit(){this.migrateDataToHvStorage(),this.discoverySubscription=this.proxyDiscoveryService.getServices(!this.configuringVpn).subscribe(o=>{this.proxiesFromDiscovery=o,this.proxiesFromDiscovery.forEach(r=>{r.country&&this.countriesFromDiscovery.add(r.country.toUpperCase())}),this.filterProxies(),this.loadingFromDiscovery=!1});const e=this.storageService.getDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey);this.history=e?JSON.parse(e):[];let i="";if(this.data.args&&this.data.args.length>0)for(let o=0;othis.firstInput.nativeElement.focus())}ngOnDestroy(){this.discoverySubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()}migrateDataToHvStorage(){const e=localStorage.getItem(this.socksHistoryStorageKey);e&&(this.storageService.setDataForHv(this.socksHistoryStorageKey,e),localStorage.removeItem(this.socksHistoryStorageKey));const i=localStorage.getItem(this.vpnHistoryStorageKey);i&&(this.storageService.setDataForHv(this.vpnHistoryStorageKey,i),localStorage.removeItem(this.vpnHistoryStorageKey))}get disableDismiss(){return this.button&&this.button.isLoading||this.settingsButton&&this.settingsButton.isLoading}tabChangeRequested(e){this.tabGroup.selectedIndex=e}tabIdexChanged(){this.currentTab=this.tabGroup.selectedIndex}validateIp(){if(this.settingsForm){const e=this.settingsForm.get("dns").value;return Ut.checkIfIpValidOrEmpty(e)?null:{invalid:!0}}return null}get settingsChanged(){return this.configuringVpn?this.initialKillswitchSetting!==this.settingsForm.get("killswitch").value||this.initialDnsSetting!==this.settingsForm.get("dns").value:this.initialSocksAddr!==(this.settingsForm.get("addr").value||"")||this.initialSocksHTTP!==(this.settingsForm.get("http").value||"")||String(this.initialSocksTries)!==String(this.settingsForm.get("tries").value||"")||String(this.initialSocksRetryTime)!==String(this.settingsForm.get("retryTime").value||"")}changeFilters(){const e=[];this.countriesFromDiscovery.forEach(o=>e.push(o)),USe.openDialog(this.dialog,{currentFilters:this.currentFilters,availableCountries:e}).afterClosed().subscribe(o=>{o&&(this.currentFilters=o,this.filterProxies())})}getHighlightedTextParts(e,i){if(!i)return[e];const o=e.toLowerCase(),r=i.toLowerCase();let s=!0,a=0;const l=[];for(;s;){const d=o.indexOf(r,a);-1===d?s=!1:(l.push(e.substring(a,d)),l.push(e.substring(d,d+i.length)),a=d+i.length)}return l.push(e.substring(a)),l}filterProxies(){this.filteredProxiesFromDiscovery=this.currentFilters.country||this.currentFilters.location||this.currentFilters.key?this.proxiesFromDiscovery.filter(e=>!(this.currentFilters.country&&(!e.country||!e.country.toUpperCase().includes(this.currentFilters.country.toUpperCase()))||this.currentFilters.location&&!e.location.toLowerCase().includes(this.currentFilters.location.toLowerCase())||this.currentFilters.key&&!e.address.toLowerCase().includes(this.currentFilters.key.toLowerCase()))):this.proxiesFromDiscovery,this.updateCurrentFilters(),this.updatePagination()}updateCurrentFilters(){if(this.currentFiltersTexts=[],this.currentFilters.country){const e=rs[this.currentFilters.country.toUpperCase()]?rs[this.currentFilters.country.toUpperCase()]:this.currentFilters.country.toUpperCase();this.currentFiltersTexts.push(["apps.vpn-socks-client-settings.filter-dialog.country","",e])}this.currentFilters.location&&this.currentFiltersTexts.push(["apps.vpn-socks-client-settings.filter-dialog.location","",this.currentFilters.location]),this.currentFilters.key&&this.currentFiltersTexts.push(["apps.vpn-socks-client-settings.filter-dialog.pub-key","",this.currentFilters.key])}updatePagination(){this.currentPage=1,this.numberOfPages=Math.ceil(this.filteredProxiesFromDiscovery.length/this.maxElementsPerPage),this.showCurrentPage()}goToNextPage(){this.currentPage>=this.numberOfPages||(this.currentPage+=1,this.showCurrentPage())}goToPreviousPage(){this.currentPage<=1||(this.currentPage-=1,this.showCurrentPage())}showCurrentPage(){this.proxiesFromDiscoveryToShow=this.filteredProxiesFromDiscovery.slice((this.currentPage-1)*this.maxElementsPerPage,this.currentPage*this.maxElementsPerPage),this.currentRange=(this.currentPage-1)*this.maxElementsPerPage+1+" - ",this.currentRange+=this.currentPage{1===o?this.useFromHistory(e):2===o?this.changeNote(e):3===o&&this.removeFromHistory(e.key)})}removeFromHistory(e){const o=Ut.createConfirmationDialog(this.dialog,"apps.vpn-socks-client-settings.remove-from-history-confirmation");o.componentInstance.operationAccepted.subscribe(()=>{this.history=this.history.filter(s=>s.key!==e);const r=JSON.stringify(this.history);this.storageService.setDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey,r),o.close()})}changeNote(e){OSe.openDialog(this.dialog,e.note).afterClosed().subscribe(i=>{if(i){i=i.substr(1,i.length-1),this.history.forEach(r=>{r.key===e.key&&(r.note=i)});const o=JSON.stringify(this.history);this.storageService.setDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey,o),i?this.snackbarService.showDone("apps.vpn-socks-client-settings.changes-made"):this.snackbarService.showWarning("apps.vpn-socks-client-settings.default-note-warning")}})}useFromHistory(e){this.saveChanges(e.key,null,e.enteredManually,e.location,e.note)}saveChanges(e=null,i=null,o=null,r=null,s=null){if(!this.form.valid&&!e||this.working)return;o=!e||o,i=e?i:this.form.get("password").value,e=e||this.form.get("pk").value;const l=Ut.createConfirmationDialog(this.dialog,"apps.vpn-socks-client-settings.change-key-confirmation");l.componentInstance.operationAccepted.subscribe(()=>{l.close(),this.continueSavingChanges(e,i,o,r,s)})}saveSettings(){if(this.working)return;let e;e=this.configuringVpn?{killswitch:this.settingsForm.get("killswitch").value,dns:this.settingsForm.get("dns").value}:{custom_setting:{addr:this.settingsForm.get("addr").value||"",http:this.settingsForm.get("http").value||"",tries:this.settingsForm.get("tries").value||"","retry-time":this.settingsForm.get("retryTime").value||""}},this.settingsButton.showLoading(!1),this.button.showLoading(!1),this.working=!0,this.operationSubscription=this.appsService.changeAppSettings(Me.getCurrentNodeKey(),this.data.name,e).subscribe(()=>{if(this.configuringVpn)this.initialKillswitchSetting=e.killswitch,this.initialDnsSetting=e.dns;else{const i=e.custom_setting||{};this.initialSocksAddr=i.addr,this.initialSocksHTTP=i.http,this.initialSocksTries=i.tries,this.initialSocksRetryTime=i["retry-time"]}this.snackbarService.showDone("apps.vpn-socks-client-settings.changes-made"),this.working=!1,this.settingsButton.reset(!1),this.button.reset(!1),Me.refreshCurrentDisplayedData()},i=>{this.working=!1,this.settingsButton.showError(!1),this.button.reset(!1),i=Ze(i),this.snackbarService.showError(i)})}copyPk(e){this.clipboardService.copy(e)?this.snackbarService.showDone("apps.vpn-socks-client-settings.copied-pk-info"):this.snackbarService.showError("apps.vpn-socks-client-settings.copy-pk-error")}continueSavingChanges(e,i,o,r,s){if(this.working)return;this.button.showLoading(!1),this.settingsButton&&this.settingsButton.showLoading(!1),this.working=!0;const a={pk:e};this.operationSubscription=this.appsService.changeAppSettings(Me.getCurrentNodeKey(),this.data.name,a).subscribe(()=>this.onServerDataChangeSuccess(e,!!i,o,r,s),l=>this.onServerDataChangeError(l))}onServerDataChangeSuccess(e,i,o,r,s){this.history=this.history.filter(d=>d.key!==e);const a={key:e,enteredManually:o};if(i&&(a.hasPassword=i),r&&(a.location=r),s&&(a.note=s),this.history=[a].concat(this.history),this.history.length>this.maxHistoryElements){const d=this.history.length-this.maxHistoryElements;this.history.splice(this.history.length-d,d)}this.form.get("pk").setValue(e);const l=JSON.stringify(this.history);this.storageService.setDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey,l),Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.vpn-socks-client-settings.changes-made"),this.working=!1,this.button.reset(!1),this.settingsButton&&this.settingsButton.reset(!1)}onServerDataChangeError(e){this.working=!1,this.button.showError(!1),this.settingsButton&&this.settingsButton.reset(!1),e=Ze(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt),O(Hs),O(Si),O(ot),O(Nt),O(zSe),O(ap),O(ri))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-skysocks-client-settings"]],viewQuery:function(i,o){if(1&i&&st(yMe,5)(CMe,5)(wMe,5)(xMe,5),2&i){let r;fe(r=pe())&&(o.button=r.first),fe(r=pe())&&(o.settingsButton=r.first),fe(r=pe())&&(o.firstInput=r.first),fe(r=pe())&&(o.tabGroup=r.first)}},standalone:!1,decls:45,vars:45,consts:[["content",""],["tabGroup",""],["firstInput",""],["button",""],["settingsButton",""],[3,"headline","dialog","disableDismiss","includeVerticalMargins","includeScrollableArea"],[3,"tabChanged","tabNames","selectedTab"],[3,"selectedIndexChange"],[3,"label"],[3,"formGroup"],[3,"ngClass"],[1,"field-container"],["for","remoteKey",1,"field-label"],["id","pk","formControlName","pk","maxlength","66","matInput",""],["color","primary",1,"float-right",3,"action","disabled"],[1,"loading-indicator",3,"showWhite"],[1,"info-text"],[1,"paginator"],[1,"d-flex"],[1,"settings-changed-warning"],[3,"inline"],["mat-button","",1,"list-button","grey-button-background","w-100",3,"click"],[1,"filter-button-content"],[1,"icon-area"],[1,"item"],[1,"blue-part"],["mat-button","",1,"list-button","grey-button-background","w-100",3,"click","ngClass"],[1,"button-content"],["mat-button","",1,"list-button","grey-button-background",3,"click","matTooltip"],[1,"option-button-icon",3,"inline"],[1,"flag-container"],["mat-icon-button","",1,"hard-grey-button-background",3,"click"],["mat-button","",1,"list-button","grey-button-background","w-100","d-none","d-md-inline",3,"click","ngClass"],[4,"ngTemplateOutlet"],["mat-button","",1,"list-button","grey-button-background","d-none","d-md-inline",3,"click","matTooltip"],["mat-button","",1,"list-button","grey-button-background","w-100","d-md-none",3,"click","ngClass"],[1,"button-content","d-flex"],[1,"full-size-area"],[1,"options-container"],[1,"small-button","d-md-none"],["formControlName","dns","maxlength","15","matInput",""],[1,"main-theme","settings-option"],["color","primary","formControlName","killswitch",3,"ngClass"],[1,"help-icon",3,"inline","matTooltip"],[1,"field-label"],["formControlName","addr","maxlength","64","matInput","","placeholder","127.0.0.1:1080"],["formControlName","http","maxlength","64","matInput","","placeholder","127.0.0.1:8080"],["formControlName","tries","maxlength","5","matInput","","type","number","min","1","placeholder","3"],["formControlName","retryTime","maxlength","5","matInput","","type","number","min","0","placeholder","5"]],template:function(i,o){1&i&&(h(0,"app-dialog",5),_(1,"translate"),h(2,"app-tab-selector",6),F("tabChanged",function(s){return o.tabChangeRequested(s)}),u(),h(3,"mat-dialog-content",null,0)(5,"mat-tab-group",7,1),F("selectedIndexChange",function(){return o.tabIdexChanged()}),h(7,"mat-tab",8),_(8,"translate"),h(9,"form",9)(10,"mat-form-field",10)(11,"div",11)(12,"label",12),p(13),_(14,"translate"),u(),L(15,"input",13,2),u(),h(17,"mat-error"),x(18,MMe,3,3,"span")(19,DMe,3,3,"span"),u()(),h(20,"app-button",14,3),F("action",function(){return o.saveChanges()}),p(22),_(23,"translate"),u()()(),h(24,"mat-tab",8),_(25,"translate"),x(26,TMe,1,1,"app-loading-indicator",15),x(27,EMe,5,4,"div",16),x(28,HMe,15,6),x(29,UMe,10,7,"div",17),u(),h(30,"mat-tab",8),_(31,"translate"),x(32,zMe,6,7,"div"),me(33,ZMe,15,16,"div",18,Le),u(),h(35,"mat-tab",8),_(36,"translate"),h(37,"form",9),x(38,JMe,15,17)(39,eDe,36,36),x(40,tDe,5,4,"div",19),h(41,"app-button",14,4),F("action",function(){return o.saveSettings()}),p(43),_(44,"translate"),u()()()()()()),2&i&&(C("headline",v(1,27,"apps.vpn-socks-client-settings."+(o.configuringVpn?"vpn-title":"socks-title")))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss)("includeVerticalMargins",!1)("includeScrollableArea",!1),c(2),C("tabNames",o.tabLabels)("selectedTab",o.currentTab),c(5),C("label",v(8,29,o.tabLabels[0])),c(2),C("formGroup",o.form),c(),C("ngClass",ie(43,cs,o.disableDismiss)),c(3),S(v(14,31,"apps.vpn-socks-client-settings.public-key")),c(5),k(o.form.get("pk").hasError("pattern")?19:18),c(2),C("disabled",!o.form.valid||o.working),c(2),D(" ",v(23,33,"apps.vpn-socks-client-settings.save")," "),c(2),C("label",v(25,35,o.tabLabels[1])),c(2),k(o.loadingFromDiscovery?26:-1),c(),k(o.loadingFromDiscovery||0!==o.proxiesFromDiscovery.length?-1:27),c(),k(!o.loadingFromDiscovery&&o.proxiesFromDiscovery.length>0?28:-1),c(),k(o.numberOfPages>1?29:-1),c(),C("label",v(31,37,o.tabLabels[2])),c(2),k(0===o.history.length?32:-1),c(),ge(o.history),c(2),C("label",v(36,39,o.tabLabels[3])),c(2),C("formGroup",o.settingsForm),c(),k(o.configuringVpn?38:39),c(2),k(o.settingsChanged?40:-1),c(),C("disabled",!o.settingsForm.valid||!o.settingsChanged||o.working),c(2),D(" ",v(44,41,"apps.vpn-socks-client-settings.save-settings")," "))},dependencies:[Ft,Wd,kn,Qt,Oa,Jt,xn,Bi,gc,sn,_n,au,dn,sp,Aa,On,tH,gMe,Ht,Yo,Ae,Et,Fo,Mi,Sn,Qr,vMe,we],styles:["mat-tab-header{border-bottom:solid 1px rgba(0,0,0,.12)}@media(max-width:767px){ mat-tab-header{display:none!important}}app-tab-selector[_ngcontent-%COMP%]{display:none}@media(max-width:767px){app-tab-selector[_ngcontent-%COMP%]{display:block!important}}form[_ngcontent-%COMP%]{margin-top:15px}.info-text[_ngcontent-%COMP%]{margin-top:20px;margin-bottom:2px;text-align:center;color:#202226}.info-text[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:5px}.loading-indicator[_ngcontent-%COMP%]{height:100px}.password-history-warning[_ngcontent-%COMP%]{font-size:.7rem;opacity:.7;position:relative;top:-5px}.list-button[_ngcontent-%COMP%]{border-bottom:solid 1px rgba(0,0,0,.12);height:auto;justify-content:left}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%]{padding:15px 0;white-space:normal;line-height:1.3;color:#202226;text-align:left;display:flex;font-size:.8rem;word-break:break-word}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .icon-area[_ngcontent-%COMP%]{font-size:20px;margin-right:15px;color:#999;opacity:.4;align-self:center}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{margin:4px 0}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type{color:#999}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .blue-part[_ngcontent-%COMP%]{color:#215f9e}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%]{text-align:left;padding:15px 0;white-space:normal}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .full-size-area[_ngcontent-%COMP%]{flex-grow:1}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{line-height:1.3;margin:4px 0;font-size:.8rem;color:#202226;word-break:break-all}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]:first-of-type{color:#999}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .highlighted[_ngcontent-%COMP%]{background-color:#ff0}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .options-container[_ngcontent-%COMP%]{flex-shrink:0;margin-left:5px;text-align:right;line-height:1}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .options-container[_ngcontent-%COMP%] .small-button[_ngcontent-%COMP%]{width:24px;height:24px;line-height:14px;font-size:14px;margin-left:5px}.list-button[_ngcontent-%COMP%] .option-button-icon[_ngcontent-%COMP%]{font-size:14px;margin:0!important;overflow:visible!important}.paginator[_ngcontent-%COMP%]{float:right;margin-top:15px;display:flex;align-items:center}@media(max-width:767px){.paginator[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{font-size:.7rem}}.paginator[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-left:5px;display:flex}.settings-option[_ngcontent-%COMP%]{margin-top:20px}.settings-option[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{margin-bottom:15px}.settings-changed-warning[_ngcontent-%COMP%]{font-size:.7rem;opacity:.7;position:relative}"]})}}return t})();const iDe=["button"],oDe=t=>({name:t}),aH=t=>({"element-disabled":t}),lH=t=>({number:t});function rDe(t,n){if(1&t){const e=re();zr(0,4),h(1,"div",7)(2,"mat-form-field",8)(3,"div",9)(4,"label",10),p(5),_(6,"translate"),u(),L(7,"input",11),u()(),h(8,"mat-form-field",8)(9,"div",9)(10,"label",12),p(11),_(12,"translate"),u(),L(13,"input",13),u()(),h(14,"button",14),_(15,"translate"),F("click",function(){const o=V(e).$index;return H(y().removeSetting(o))}),h(16,"mat-icon",15),p(17,"close"),u()()(),pr()}if(2&t){const e=n.$index,i=y();c(),C("formGroupName",e),c(),C("ngClass",ie(15,aH,i.disableDismiss)),c(3),S(ue(6,7,"apps.user-app-settings.name",ie(17,lH,e+1))),c(3),C("ngClass",ie(19,aH,i.disableDismiss)),c(3),S(ue(12,10,"apps.user-app-settings.value",ie(21,lH,e+1))),c(3),C("matTooltip",v(15,13,"apps.user-app-settings.remove")),c(2),C("inline",!0)}}let sDe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.appsService=i,this.formBuilder=o,this.dialogRef=r,this.snackbarService=s,this.dialog=a,this.appName="",this.appName=e.name}ngOnInit(){if(this.form=this.formBuilder.group({settings:this.formBuilder.array([])}),this.data.args&&this.data.args.length>0)for(let e=0;e{let s=r.get("name").value,a=r.get("value").value;s=s&&s.trim(),a=a&&a.trim(),s?(o[s]=a,i+=1):e=!0}),e||0===i){const s=Ut.createConfirmationDialog(this.dialog,"apps.user-app-settings."+(0===i?"empty-confirmation":"invalid-confirmation"));s.componentInstance.operationAccepted.subscribe(()=>{s.close(),this.continueSavingChanges(o)})}else this.continueSavingChanges(o)}continueSavingChanges(e){this.button.showLoading();const i={custom_setting:e};this.operationSubscription=this.appsService.changeAppSettings(Me.getCurrentNodeKey(),this.data.name,i).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)})}onSuccess(){Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.user-app-settings.changes-made"),this.dialogRef.close()}onError(e){this.button.showError(),e=Ze(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Hs),O(Si),O(Zt),O(ot),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-user-app-settings"]],viewQuery:function(i,o){if(1&i&&st(iDe,5),2&i){let r;fe(r=pe())&&(o.button=r.first)}},standalone:!1,decls:16,vars:19,consts:[["button",""],[3,"headline","dialog","disableDismiss"],[1,"info-container"],[3,"formGroup"],["formArrayName","settings"],[1,"add-setting",3,"click"],["color","primary",1,"float-right",3,"action","disabled"],[1,"settings-row",3,"formGroupName"],[3,"ngClass"],[1,"field-container"],["for","name",1,"field-label"],["id","name","formControlName","name","matInput",""],["for","value",1,"field-label"],["id","value","formControlName","value","matInput",""],["mat-button","",1,"transparent-button",3,"click","matTooltip"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"div",2),p(3),_(4,"translate"),u(),h(5,"form",3),me(6,rDe,18,23,"ng-container",4,Le),u(),h(8,"div")(9,"a",5),F("click",function(){return o.addSetting()}),p(10),_(11,"translate"),u()(),h(12,"app-button",6,0),F("action",function(){return o.saveChanges()}),p(14),_(15,"translate"),u()()),2&i&&(C("headline",ue(1,8,"apps.user-app-settings.title",ie(17,oDe,o.appName)))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),c(3),S(v(4,11,"apps.user-app-settings.info")),c(2),C("formGroup",o.form),c(),ge(o.settingsControls),c(4),D("+ ",v(11,13,"apps.user-app-settings.add")),c(2),C("disabled",!o.form.valid),c(2),D(" ",v(15,15,"apps.user-app-settings.save")," "))},dependencies:[Ft,kn,Qt,Jt,xn,sn,_n,pc,_u,dn,On,Ht,Ae,Et,Mi,Sn,we],styles:[".info-container[_ngcontent-%COMP%]{margin-bottom:10px}.settings-row[_ngcontent-%COMP%]{display:flex}mat-form-field[_ngcontent-%COMP%]{flex-grow:1;margin-right:10px}button[_ngcontent-%COMP%]{flex-shrink:0;width:50px;padding:0!important;align-self:center;border-radius:10px}button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin:0!important}.add-setting[_ngcontent-%COMP%]{color:#215f9e!important;cursor:pointer}"]})}}return t})();const aDe=["button"],ir=t=>({"element-disabled":t});let lDe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.appsService=i,this.formBuilder=o,this.dialogRef=r,this.snackbarService=s,this.dialog=a}ngOnInit(){if(this.form=this.formBuilder.group({localhostOnly:[!0],port:["",Se.compose([Se.required,Se.min(1025),Se.max(65536)])],skynet:[!0],dmsg:[!0],persist:[!1],persistMaxSize:["",Se.pattern("^[0-9]*$")],persistPerPeerRate:["",Se.pattern("^[0-9]*$")],persistPerPeerCap:["",Se.pattern("^[0-9]*$")],persistTotalCap:["",Se.pattern("^[0-9]*$")],persistTtl:["",Se.pattern("^[0-9]*$")],persistSeed:["",Se.pattern("^[0-9]*$")],pairEnable:[!1]}),this.formSubscription=this.form.get("localhostOnly").valueChanges.subscribe(e=>{if(!e){this.form.get("localhostOnly").setValue(!0);const i=Ut.createConfirmationDialog(this.dialog,"apps.skychat-settings.non-localhost-confirmation");i.componentInstance.operationAccepted.subscribe(()=>{i.componentInstance.closeModal(),this.form.get("localhostOnly").setValue(!1,{emitEvent:!1})})}}),this.data.args&&this.data.args.length>0)for(let e=0;e=0?"true"===e.slice(o+1).toLowerCase():"true"!==i&&"false"!==i||"true"===i}ngOnDestroy(){this.formSubscription&&this.formSubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()}get disableDismiss(){return!!this.button&&this.button.isLoading}saveChanges(){if(!this.form.valid||this.button.disabled)return;this.button.showLoading();const e={address:(this.form.get("localhostOnly").value?":":"*:")+this.form.get("port").value},i={skynet:this.form.get("skynet").value?"true":"false",dmsg:this.form.get("dmsg").value?"true":"false",persist:this.form.get("persist").value?"true":"false","pair-enable":this.form.get("pairEnable").value?"true":"false"},o=(r,s)=>{const a=this.form.get(s).value;""!==a&&null!=a&&(i[r]=String(a))};o("persist-max-size","persistMaxSize"),o("persist-per-peer-rate","persistPerPeerRate"),o("persist-per-peer-cap","persistPerPeerCap"),o("persist-total-cap","persistTotalCap"),o("persist-ttl","persistTtl"),o("persist-seed","persistSeed"),e.custom_setting=i,this.operationSubscription=this.appsService.changeAppSettings(Me.getCurrentNodeKey(),this.data.name,e).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)})}onSuccess(){Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.skychat-settings.changes-made"),this.dialogRef.close()}onError(e){this.button.showError(),e=Ze(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Hs),O(Si),O(Zt),O(ot),O(Nt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-skychat-settings"]],viewQuery:function(i,o){if(1&i&&st(aDe,5),2&i){let r;fe(r=pe())&&(o.button=r.first)}},standalone:!1,decls:120,vars:135,consts:[["button",""],[3,"headline","dialog","disableDismiss"],[3,"formGroup"],[1,"sk-section-title"],[3,"ngClass"],[1,"field-container"],["for","localhostOnly",1,"field-label"],["formControlName","localhostOnly"],[3,"value"],["for","port",1,"field-label"],["formControlName","port","type","number","matInput",""],[1,"settings-option"],["color","primary","formControlName","skynet",3,"ngClass"],[1,"help-icon",3,"inline","matTooltip"],["color","primary","formControlName","dmsg",3,"ngClass"],[1,"sk-section-help"],["color","primary","formControlName","persist",3,"ngClass"],[1,"field-label"],["formControlName","persistMaxSize","type","number","min","1","matInput","","placeholder","4096"],["formControlName","persistPerPeerRate","type","number","min","0","matInput","","placeholder","20"],["formControlName","persistPerPeerCap","type","number","min","0","matInput","","placeholder","500"],["formControlName","persistTotalCap","type","number","min","1","matInput","","placeholder","10"],["formControlName","persistTtl","type","number","min","0","matInput","","placeholder","30"],["formControlName","persistSeed","type","number","min","0","matInput","","placeholder","50"],["color","primary","formControlName","pairEnable",3,"ngClass"],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2)(3,"h4",3),p(4),_(5,"translate"),u(),h(6,"mat-form-field",4)(7,"div",5)(8,"label",6),p(9),_(10,"translate"),u(),h(11,"mat-select",7)(12,"mat-option",8),p(13),_(14,"translate"),u(),h(15,"mat-option",8),p(16),_(17,"translate"),u()()()(),h(18,"mat-form-field",4)(19,"div",5)(20,"label",9),p(21),_(22,"translate"),u(),L(23,"input",10),u(),h(24,"mat-error")(25,"span"),p(26),_(27,"translate"),u()()(),h(28,"div",11)(29,"mat-checkbox",12),p(30),_(31,"translate"),h(32,"mat-icon",13),_(33,"translate"),p(34,"help"),u()()(),h(35,"div",11)(36,"mat-checkbox",14),p(37),_(38,"translate"),h(39,"mat-icon",13),_(40,"translate"),p(41,"help"),u()()(),h(42,"h4",3),p(43),_(44,"translate"),u(),h(45,"p",15),p(46),_(47,"translate"),u(),h(48,"div",11)(49,"mat-checkbox",16),p(50),_(51,"translate"),u()(),h(52,"mat-form-field",4)(53,"div",5)(54,"label",17),p(55),_(56,"translate"),u(),L(57,"input",18),u(),h(58,"mat-hint"),p(59),_(60,"translate"),u()(),h(61,"mat-form-field",4)(62,"div",5)(63,"label",17),p(64),_(65,"translate"),u(),L(66,"input",19),u(),h(67,"mat-hint"),p(68),_(69,"translate"),u()(),h(70,"mat-form-field",4)(71,"div",5)(72,"label",17),p(73),_(74,"translate"),u(),L(75,"input",20),u(),h(76,"mat-hint"),p(77),_(78,"translate"),u()(),h(79,"mat-form-field",4)(80,"div",5)(81,"label",17),p(82),_(83,"translate"),u(),L(84,"input",21),u(),h(85,"mat-hint"),p(86),_(87,"translate"),u()(),h(88,"mat-form-field",4)(89,"div",5)(90,"label",17),p(91),_(92,"translate"),u(),L(93,"input",22),u(),h(94,"mat-hint"),p(95),_(96,"translate"),u()(),h(97,"mat-form-field",4)(98,"div",5)(99,"label",17),p(100),_(101,"translate"),u(),L(102,"input",23),u(),h(103,"mat-hint"),p(104),_(105,"translate"),u()(),h(106,"h4",3),p(107),_(108,"translate"),u(),h(109,"div",11)(110,"mat-checkbox",24),p(111),_(112,"translate"),h(113,"mat-icon",13),_(114,"translate"),p(115,"help"),u()()()(),h(116,"app-button",25,0),F("action",function(){return o.saveChanges()}),p(118),_(119,"translate"),u()()),2&i&&(C("headline",v(1,51,"apps.skychat-settings.title"))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),c(2),C("formGroup",o.form),c(2),S(v(5,53,"apps.skychat-settings.listener-section")),c(2),C("ngClass",ie(111,ir,o.disableDismiss)),c(3),S(v(10,55,"apps.skychat-settings.localhost-only")),c(3),C("value",!0),c(),S(v(14,57,"common.yes")),c(2),C("value",!1),c(),S(v(17,59,"common.no")),c(2),C("ngClass",ie(113,ir,o.disableDismiss)),c(3),S(v(22,61,"apps.skychat-settings.port")),c(5),S(v(27,63,"apps.skychat-settings.port-error")),c(3),C("ngClass",ie(115,ir,o.disableDismiss)),c(),D(" ",v(31,65,"apps.skychat-settings.skynet")," "),c(2),C("inline",!0)("matTooltip",v(33,67,"apps.skychat-settings.skynet-info")),c(4),C("ngClass",ie(117,ir,o.disableDismiss)),c(),D(" ",v(38,69,"apps.skychat-settings.dmsg")," "),c(2),C("inline",!0)("matTooltip",v(40,71,"apps.skychat-settings.dmsg-info")),c(4),S(v(44,73,"apps.skychat-settings.persistence-section")),c(3),S(v(47,75,"apps.skychat-settings.persistence-help")),c(3),C("ngClass",ie(119,ir,o.disableDismiss)),c(),D(" ",v(51,77,"apps.skychat-settings.persist-enable")," "),c(2),C("ngClass",ie(121,ir,o.disableDismiss)),c(3),S(v(56,79,"apps.skychat-settings.persist-max-size")),c(4),S(v(60,81,"apps.skychat-settings.persist-max-size-hint")),c(2),C("ngClass",ie(123,ir,o.disableDismiss)),c(3),S(v(65,83,"apps.skychat-settings.persist-per-peer-rate")),c(4),S(v(69,85,"apps.skychat-settings.persist-per-peer-rate-hint")),c(2),C("ngClass",ie(125,ir,o.disableDismiss)),c(3),S(v(74,87,"apps.skychat-settings.persist-per-peer-cap")),c(4),S(v(78,89,"apps.skychat-settings.persist-per-peer-cap-hint")),c(2),C("ngClass",ie(127,ir,o.disableDismiss)),c(3),S(v(83,91,"apps.skychat-settings.persist-total-cap")),c(4),S(v(87,93,"apps.skychat-settings.persist-total-cap-hint")),c(2),C("ngClass",ie(129,ir,o.disableDismiss)),c(3),S(v(92,95,"apps.skychat-settings.persist-ttl")),c(4),S(v(96,97,"apps.skychat-settings.persist-ttl-hint")),c(2),C("ngClass",ie(131,ir,o.disableDismiss)),c(3),S(v(101,99,"apps.skychat-settings.persist-seed")),c(4),S(v(105,101,"apps.skychat-settings.persist-seed-hint")),c(3),S(v(108,103,"apps.skychat-settings.pairing-section")),c(3),C("ngClass",ie(133,ir,o.disableDismiss)),c(),D(" ",v(112,105,"apps.skychat-settings.pair-enable")," "),c(2),C("inline",!0)("matTooltip",v(114,107,"apps.skychat-settings.pair-enable-info")),c(3),C("disabled",!o.form.valid),c(2),D(" ",v(119,109,"apps.skychat-settings.save")," "))},dependencies:[Ft,kn,Qt,Oa,Jt,xn,gc,sn,_n,dn,sp,Aa,On,Ae,Et,Na,is,Fo,Mi,Sn,we],encapsulation:2})}}return t})();const cDe=t=>({"paginator-icons-fixer":t}),cH=(t,n)=>["/nodes",t,"apps-list",n],dDe=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),uDe=t=>({"d-lg-none d-xl-table":t}),hDe=t=>({"d-lg-table d-xl-none":t}),dH=t=>({error:t}),fDe=(t,n)=>["/nodes",t,"apps-list",n,"1"];function pDe(t,n){1&t&&(h(0,"span",3),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.apps-list.title-official")))}function mDe(t,n){1&t&&(h(0,"span",3),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.apps-list.title-user")))}function gDe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().$implicit.translatableValue)," ")}function _De(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.value," ")}function bDe(t,n){if(1&t&&(h(0,"div",15)(1,"span"),p(2),_(3,"translate"),u(),x(4,gDe,2,3),x(5,_De,1,1),u()),2&t){const e=n.$implicit;c(2),D("",v(3,3,e.filterName),": "),c(2),k(e.translatableValue?4:-1),c(),k(e.value?5:-1)}}function vDe(t,n){if(1&t){const e=re();h(0,"div",14),F("click",function(){return V(e),H(y().dataFilterer.removeFilters())}),me(1,bDe,6,5,"div",15,Le),h(3,"div",16),p(4),_(5,"translate"),u()()}if(2&t){const e=y();c(),ge(e.dataFilterer.currentFiltersTexts),c(3),S(v(5,1,"filters.press-to-remove"))}}function yDe(t,n){if(1&t){const e=re();h(0,"mat-icon",17),_(1,"translate"),F("click",function(){return V(e),H(y().dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",v(1,2,"filters.filter-action"))}function CDe(t,n){1&t&&(h(0,"mat-icon",8),p(1,"more_horiz"),u()),2&t&&(y(),C("matMenuTriggerFor",Un(10)))}function wDe(t,n){if(1&t&&L(0,"app-paginator",12),2&t){const e=y();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",pt(4,cH,e.nodePK,e.showOfficialApps))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function xDe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function kDe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function SDe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function MDe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function DDe(t,n){if(1&t&&(L(0,"i",38),_(1,"translate")),2&t){const e=y().$implicit,i=y(2);Ge(i.getStateClass(e)),C("matTooltip",v(1,3,i.getStateTooltip(e)))}}function TDe(t,n){if(1&t&&(h(0,"mat-icon",34),_(1,"translate"),p(2,"warning"),u()),2&t){const e=y().$implicit;C("inline",!0)("matTooltip",ue(1,2,"apps.status-failed-tooltip",ie(5,dH,e.detailedStatus?e.detailedStatus:"")))}}function EDe(t,n){if(1&t&&(h(0,"a",36)(1,"button",37),_(2,"translate"),h(3,"mat-icon",22),p(4,"open_in_browser"),u()()()),2&t){const e=y().$implicit;C("href",y(2).getLink(e),$i),c(),C("matTooltip",v(2,3,"apps.open")),c(2),C("inline",!0)}}function PDe(t,n){if(1&t){const e=re();h(0,"button",35),_(1,"translate"),F("click",function(){V(e);const o=y().$implicit;return H(y(2).config(o))}),h(2,"mat-icon",22),p(3,"settings"),u()()}2&t&&(C("matTooltip",v(1,2,"apps.settings")),c(2),C("inline",!0))}function IDe(t,n){if(1&t){const e=re();h(0,"tr")(1,"td",31)(2,"mat-checkbox",32),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(3,"td"),x(4,DDe,2,5,"i",33),x(5,TDe,3,7,"mat-icon",34),u(),h(6,"td"),p(7),u(),h(8,"td"),p(9),u(),h(10,"td")(11,"button",35),_(12,"translate"),F("click",function(){const o=V(e).$implicit;return H(y(2).changeAppAutostart(o))}),h(13,"mat-icon",22),p(14),u()()(),h(15,"td",24),x(16,EDe,5,5,"a",36),x(17,PDe,4,4,"button",37),h(18,"button",35),_(19,"translate"),F("click",function(){const o=V(e).$implicit;return H(y(2).viewLogs(o))}),h(20,"mat-icon",22),p(21,"list"),u()(),h(22,"button",35),_(23,"translate"),F("click",function(){const o=V(e).$implicit;return H(y(2).changeAppState(o))}),h(24,"mat-icon",22),p(25),u()()()()}if(2&t){const e=n.$implicit,i=y(2);c(2),C("checked",i.selections.get(e.name)),c(2),k(2!==e.status?4:-1),c(),k(2===e.status?5:-1),c(2),D(" ",e.name," "),c(2),D(" ",e.port," "),c(2),C("matTooltip",v(12,15,e.autostart?"apps.apps-list.disable-autostart":"apps.apps-list.enable-autostart")),c(2),C("inline",!0),c(),S(e.autostart?"done":"close"),c(2),k(i.getLink(e)?16:-1),c(),k(i.appsWithoutConfig.has(e.name)?-1:17),c(),C("matTooltip",v(19,17,"apps.view-logs")),c(2),C("inline",!0),c(2),C("matTooltip",v(23,19,"apps."+(0===e.status||2===e.status?"start-app":"stop-app"))),c(2),C("inline",!0),c(),S(0===e.status||2===e.status?"play_arrow":"stop")}}function ODe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.label")," ")}function ADe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.inverted-order")," ")}function RDe(t,n){if(1&t&&(h(0,"a",43),F("click",function(i){return i.stopPropagation()}),h(1,"button",44),_(2,"translate"),h(3,"mat-icon"),p(4,"open_in_browser"),u()()()),2&t){const e=y().$implicit;C("href",y(2).getLink(e),$i),c(),C("matTooltip",v(2,2,"apps.open"))}}function FDe(t,n){if(1&t){const e=re();h(0,"tr")(1,"td")(2,"div",27)(3,"div",39)(4,"mat-checkbox",32),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(5,"div",28)(6,"div",40)(7,"span",2),p(8),_(9,"translate"),u(),p(10),u(),h(11,"div",40)(12,"span",2),p(13),_(14,"translate"),u(),p(15),u(),h(16,"div",40)(17,"span",2),p(18),_(19,"translate"),u(),p(20,": "),h(21,"span"),p(22),_(23,"translate"),u()(),h(24,"div",40)(25,"span",2),p(26),_(27,"translate"),u(),p(28,": "),h(29,"span"),p(30),_(31,"translate"),u()()(),L(32,"div",41),h(33,"div",29),x(34,RDe,5,4,"a",36),h(35,"button",42),_(36,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(2);return o.stopPropagation(),H(s.showOptionsDialog(r))}),h(37,"mat-icon"),p(38),u()()()()()()}if(2&t){const e=n.$implicit,i=y(2);c(4),C("checked",i.selections.get(e.name)),c(4),S(v(9,16,"apps.apps-list.app-name")),c(2),D(": ",e.name," "),c(3),S(v(14,18,"apps.apps-list.port")),c(2),D(": ",e.port," "),c(3),S(v(19,20,"apps.apps-list.state")),c(3),Ge(i.getSmallScreenStateClass(e)+" title"),c(),D(" ",ue(23,22,i.getSmallScreenStateTextVar(e),ie(31,dH,e.detailedStatus?e.detailedStatus:""))," "),c(4),S(v(27,25,"apps.apps-list.auto-start")),c(3),Ge((e.autostart?"green-clear-text":"red-clear-text")+" title"),c(),D(" ",v(31,27,e.autostart?"apps.apps-list.autostart-enabled":"apps.apps-list.autostart-disabled")," "),c(4),k(i.getLink(e)?34:-1),c(),C("matTooltip",v(36,29,"common.options")),c(3),S("add")}}function NDe(t,n){if(1&t&&L(0,"app-view-all-link",30),2&t){const e=y(2);C("numberOfElements",e.filteredApps.length)("linkParts",pt(3,fDe,e.nodePK,e.showOfficialApps))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function LDe(t,n){if(1&t){const e=re();h(0,"div",13)(1,"div",18)(2,"table",19)(3,"tr"),L(4,"th"),h(5,"th",20),_(6,"translate"),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.stateSortData))}),L(7,"span",21),x(8,xDe,2,2,"mat-icon",22),u(),h(9,"th",23),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.nameSortData))}),p(10),_(11,"translate"),x(12,kDe,2,2,"mat-icon",22),u(),h(13,"th",23),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.portSortData))}),p(14),_(15,"translate"),x(16,SDe,2,2,"mat-icon",22),u(),h(17,"th",23),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.autoStartSortData))}),p(18),_(19,"translate"),x(20,MDe,2,2,"mat-icon",22),u(),L(21,"th",24),u(),me(22,IDe,26,21,"tr",null,Le),u(),h(24,"table",25)(25,"tr",26),F("click",function(){return V(e),H(y().dataSorter.openSortingOrderModal())}),h(26,"td")(27,"div",27)(28,"div",28)(29,"div",2),p(30),_(31,"translate"),u(),h(32,"div"),p(33),_(34,"translate"),x(35,ODe,2,3),x(36,ADe,2,3),u()(),h(37,"div",29)(38,"mat-icon",22),p(39,"keyboard_arrow_down"),u()()()()(),me(40,FDe,39,33,"tr",null,Le),u(),x(42,NDe,1,6,"app-view-all-link",30),u()()}if(2&t){const e=y();c(),C("ngClass",pt(29,dDe,e.showShortList_,!e.showShortList_)),c(),C("ngClass",ie(32,uDe,e.showShortList_)),c(3),C("matTooltip",v(6,17,"apps.apps-list.state-tooltip")),c(3),k(e.dataSorter.currentSortingColumn===e.stateSortData?8:-1),c(2),D(" ",v(11,19,"apps.apps-list.app-name")," "),c(2),k(e.dataSorter.currentSortingColumn===e.nameSortData?12:-1),c(2),D(" ",v(15,21,"apps.apps-list.port")," "),c(2),k(e.dataSorter.currentSortingColumn===e.portSortData?16:-1),c(2),D(" ",v(19,23,"apps.apps-list.auto-start")," "),c(2),k(e.dataSorter.currentSortingColumn===e.autoStartSortData?20:-1),c(2),ge(e.dataSource),c(2),C("ngClass",ie(34,hDe,e.showShortList_)),c(6),S(v(31,25,"tables.sorting-title")),c(3),D("",v(34,27,e.dataSorter.currentSortingColumn.label)," "),c(2),k(e.dataSorter.currentlySortingByLabel?35:-1),c(),k(e.dataSorter.sortingInReverseOrder?36:-1),c(2),C("inline",!0),c(2),ge(e.dataSource),c(2),k(e.showShortList_&&e.numberOfPages>1?42:-1)}}function BDe(t,n){1&t&&(h(0,"span",47),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.apps-list.empty-official")))}function VDe(t,n){1&t&&(h(0,"span",47),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.apps-list.empty-user")))}function HDe(t,n){1&t&&(h(0,"span",47),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"apps.apps-list.empty-with-filter")))}function UDe(t,n){if(1&t&&(h(0,"div",13)(1,"div",45)(2,"mat-icon",46),p(3,"warning"),u(),x(4,BDe,3,3,"span",47),x(5,VDe,3,3,"span",47),x(6,HDe,3,3,"span",47),u()()),2&t){const e=y();c(2),C("inline",!0),c(2),k(0===e.allAppsForType.length&&e.showOfficialApps?4:-1),c(),k(0!==e.allAppsForType.length||e.showOfficialApps?-1:5),c(),k(0!==e.allAppsForType.length?6:-1)}}function zDe(t,n){if(1&t&&L(0,"app-paginator",12),2&t){const e=y();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",pt(4,cH,e.nodePK,e.showOfficialApps))("queryParams",e.dataFilterer.currentUrlQueryParams)}}let uH=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter&&this.dataSorter.setData(this.filteredApps)}set apps(e){this.allApps=e||[],this.allApps&&(this.allAppsForType=[],this.allApps.forEach(i=>{(this.showOfficialApps&&this.officialAppsList.has(i.name)||!this.showOfficialApps&&!this.officialAppsList.has(i.name))&&this.allAppsForType.push(i)}),this.dataFilterer&&this.dataFilterer.setData(this.allAppsForType))}constructor(e,i,o,r,s,a,l){this.appsService=e,this.dialog=i,this.route=o,this.router=r,this.snackbarService=s,this.translateService=a,this.storageService=l,this.listIdForOfficialApps="op",this.listIdForUserApps="up",this.officialAppsList=new Set(["skychat","skysocks","skysocks-client","vpn-client","vpn-server"]),this.showOfficialApps=!0,this.stateSortData=new Pt(["status"],"apps.apps-list.state",lt.NumberReversed),this.nameSortData=new Pt(["name"],"apps.apps-list.app-name",lt.Text),this.portSortData=new Pt(["port"],"apps.apps-list.port",lt.Number),this.autoStartSortData=new Pt(["autostart"],"apps.apps-list.auto-start",lt.Boolean),this.selections=new Map,this.appsWithoutConfig=new Set,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"apps.apps-list.filter-dialog.state",keyNameInElementsArray:"status",type:Mn.Select,printableLabelsForValues:[{value:"",label:"apps.apps-list.filter-dialog.state-options.any"},{value:"1",label:"apps.apps-list.filter-dialog.state-options.running"},{value:"0",label:"apps.apps-list.filter-dialog.state-options.stopped"}]},{filterName:"apps.apps-list.filter-dialog.name",keyNameInElementsArray:"name",type:Mn.TextInput,maxlength:50},{filterName:"apps.apps-list.filter-dialog.port",keyNameInElementsArray:"port",type:Mn.TextInput,maxlength:8},{filterName:"apps.apps-list.filter-dialog.autostart",keyNameInElementsArray:"autostart",type:Mn.Select,printableLabelsForValues:[{value:"",label:"apps.apps-list.filter-dialog.autostart-options.any"},{value:"true",label:"apps.apps-list.filter-dialog.autostart-options.enabled"},{value:"false",label:"apps.apps-list.filter-dialog.autostart-options.disabled"}]}],this.refreshAgain=!1,this.operationSubscriptionsGroup=[],this.navigationsSubscription=this.route.paramMap.subscribe(d=>{if(d.has("showOfficialApps")&&(this.showOfficialApps=d.get("showOfficialApps").toUpperCase()==="true".toUpperCase()),d.has("page")){let f=Number.parseInt(d.get("page"),10);(isNaN(f)||f<1)&&(f=1),this.currentPageInUrl=f,this.recalculateElementsToShow()}})}ngOnInit(){const e=this.showOfficialApps?this.listIdForOfficialApps:this.listIdForUserApps;this.dataSorter=new wu(this.dialog,this.translateService,this.storageService,[this.stateSortData,this.nameSortData,this.portSortData,this.autoStartSortData],1,e),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataSorter&&this.dataSorter.setData(this.filteredApps),this.dataFilterer=new xu(this.dialog,this.route,this.router,this.filterProperties,e),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(o=>{this.filteredApps=o,this.dataSorter.setData(this.filteredApps)}),this.allAppsForType&&this.dataFilterer.setData(this.allAppsForType)}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.dataSortedSubscription.unsubscribe(),this.dataFiltererSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFilterer.dispose()}getLink(e){if("skychat"===e.name.toLocaleLowerCase()&&this.nodeIp&&0!==e.status&&2!==e.status){let i="8001",o="127.0.0.1";if(e.args)for(let r=0;r{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}changeStateOfSelected(e){const i=[];this.selections.forEach((o,r)=>{o&&(e&&(0===this.appsMap.get(r).status||2===this.appsMap.get(r).status)||!e&&0!==this.appsMap.get(r).status&&2!==this.appsMap.get(r).status)&&i.push(r)}),this.changeAppsValRecursively(i,!1,e)}changeAutostartOfSelected(e){const i=[];this.selections.forEach((o,r)=>{o&&(e&&!this.appsMap.get(r).autostart||!e&&this.appsMap.get(r).autostart)&&i.push(r)}),0!==i.length&&this.changeAppsValRecursively(i,!0,e,null)}showOptionsDialog(e){const i=[{icon:"list",label:"apps.view-logs"},{icon:0===e.status||2===e.status?"play_arrow":"stop",label:"apps."+(0===e.status||2===e.status?"start-app":"stop-app")},{icon:e.autostart?"close":"done",label:e.autostart?"apps.apps-list.disable-autostart":"apps.apps-list.enable-autostart"}];this.appsWithoutConfig.has(e.name)||i.push({icon:"settings",label:"apps.settings"}),ho.openDialog(this.dialog,i,"common.options").afterClosed().subscribe(o=>{1===o?this.viewLogs(e):2===o?this.changeAppState(e):3===o?this.changeAppAutostart(e):4===o&&this.config(e)})}changeAppState(e){this.changeSingleAppVal(this.startChangingAppState(e.name,0===e.status||2===e.status))}changeAppAutostart(e){this.changeSingleAppVal(this.startChangingAppAutostart(e.name,!e.autostart))}changeSingleAppVal(e,i=null){this.operationSubscriptionsGroup.push(e.subscribe(()=>{i&&i.close(),setTimeout(()=>{this.refreshAgain=!0,Me.refreshCurrentDisplayedData()},50),this.snackbarService.showDone("apps.operation-completed")},o=>{o=Ze(o),setTimeout(()=>{this.refreshAgain=!0,Me.refreshCurrentDisplayedData()},50),i?i.componentInstance.showDone("confirmation.error-header-text",o.translatableErrorMsg):this.snackbarService.showError(o)}))}viewLogs(e){0!==e.status&&2!==e.status?SSe.openDialog(this.dialog,e):this.snackbarService.showError("apps.apps-list.unavailable-logs-error")}config(e){"skychat"===e.name?lDe.openDialog(this.dialog,e):"skysocks"===e.name||"vpn-server"===e.name?PSe.openDialog(this.dialog,e):"skysocks-client"===e.name||"vpn-client"===e.name?nDe.openDialog(this.dialog,e):sDe.openDialog(this.dialog,e)}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredApps){const e=this.showShortList_?at.maxShortListElements:at.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredApps.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.appsToShow=this.filteredApps.slice(i,i+e),this.appsMap=new Map,this.appsToShow.forEach(s=>{this.appsMap.set(s.name,s),this.selections.has(s.name)||this.selections.set(s.name,!1)});const r=[];this.selections.forEach((s,a)=>{this.appsMap.has(a)||r.push(a)}),r.forEach(s=>{this.selections.delete(s)})}else this.appsToShow=null,this.selections=new Map;this.dataSource=this.appsToShow,this.refreshAgain&&(this.refreshAgain=!1,setTimeout(()=>Me.refreshCurrentDisplayedData(),2e3))}startChangingAppState(e,i){return this.appsService.changeAppState(Me.getCurrentNodeKey(),e,i).pipe(De(o=>(null!=o.status&&this.dataSource.forEach(r=>{r.name===e&&(r.status=o.status,r.detailedStatus=o.detailed_status)}),o)))}startChangingAppAutostart(e,i){return this.appsService.changeAppAutostart(Me.getCurrentNodeKey(),e,i)}changeAppsValRecursively(e,i,o,r=null){if(!e||0===e.length)return setTimeout(()=>Me.refreshCurrentDisplayedData(),50),this.snackbarService.showWarning("apps.operation-unnecessary"),void(r&&r.close());let s;s=i?this.startChangingAppAutostart(e[e.length-1],o):this.startChangingAppState(e[e.length-1],o),this.operationSubscriptionsGroup.push(s.subscribe(()=>{e.pop(),0===e.length?(r&&r.close(),setTimeout(()=>{this.refreshAgain=!0,Me.refreshCurrentDisplayedData()},50),this.snackbarService.showDone("apps.operation-completed")):this.changeAppsValRecursively(e,i,o,r)},a=>{a=Ze(a),setTimeout(()=>{this.refreshAgain=!0,Me.refreshCurrentDisplayedData()},50),r?r.componentInstance.showDone("confirmation.error-header-text",a.translatableErrorMsg):this.snackbarService.showError(a)}))}static{this.\u0275fac=function(i){return new(i||t)(O(Hs),O(Nt),O(Li),O(yt),O(ot),O(Xo),O(ri))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-node-app-list"]],inputs:{nodePK:"nodePK",nodeIp:"nodeIp",showOfficialApps:"showOfficialApps",showShortList:"showShortList",apps:"apps"},standalone:!1,decls:33,vars:39,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"click","matTooltip"],[1,"dot-outline-white"],[3,"inline"],[1,"sortable-column",3,"click"],[1,"actions"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[3,"numberOfElements","linkParts","queryParams"],[1,"selection-col"],[3,"change","checked"],[3,"class","matTooltip"],[1,"red-text",3,"inline","matTooltip"],["mat-button","",1,"big-action-button","transparent-button",3,"click","matTooltip"],["target","_blank","rel","noreferrer nofollow noopener",1,"skychat-link",3,"href"],["mat-button","",1,"big-action-button","transparent-button",3,"matTooltip"],[3,"matTooltip"],[1,"check-part"],[1,"list-row"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],["target","_blank","rel","noreferrer nofollow noopener",1,"skychat-link",3,"click","href"],["mat-icon-button","",1,"transparent-button",3,"matTooltip"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,pDe,3,3,"span",3),x(3,mDe,3,3,"span",3),x(4,vDe,6,3,"div",4),u(),h(5,"div",5)(6,"div",6),x(7,yDe,3,4,"mat-icon",7),x(8,CDe,2,1,"mat-icon",8),h(9,"mat-menu",9,0)(11,"div",10),F("click",function(){return o.changeAllSelections(!0)}),p(12),_(13,"translate"),u(),h(14,"div",10),F("click",function(){return o.changeAllSelections(!1)}),p(15),_(16,"translate"),u(),h(17,"div",11),F("click",function(){return o.changeStateOfSelected(!0)}),p(18),_(19,"translate"),u(),h(20,"div",11),F("click",function(){return o.changeStateOfSelected(!1)}),p(21),_(22,"translate"),u(),h(23,"div",11),F("click",function(){return o.changeAutostartOfSelected(!0)}),p(24),_(25,"translate"),u(),h(26,"div",11),F("click",function(){return o.changeAutostartOfSelected(!1)}),p(27),_(28,"translate"),u()()(),x(29,wDe,1,7,"app-paginator",12),u()(),x(30,LDe,43,36,"div",13),x(31,UDe,7,4,"div",13),x(32,zDe,1,7,"app-paginator",12)),2&i&&(C("ngClass",ie(37,cDe,!o.showShortList_&&o.numberOfPages>1&&o.dataSource)),c(2),k(o.showShortList_&&o.showOfficialApps?2:-1),c(),k(o.showShortList_&&!o.showOfficialApps?3:-1),c(),k(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?4:-1),c(3),k(o.allAppsForType&&o.allAppsForType.length>0?7:-1),c(),k(o.dataSource&&o.dataSource.length>0?8:-1),c(),C("overlapTrigger",!1),c(3),D(" ",v(13,25,"selection.select-all")," "),c(3),D(" ",v(16,27,"selection.unselect-all")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(19,29,"selection.start-all")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(22,31,"selection.stop-all")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(25,33,"selection.enable-autostart-all")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(28,35,"selection.disable-autostart-all")," "),c(2),k(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?29:-1),c(),k(o.dataSource&&o.dataSource.length>0?30:-1),c(),k(o.dataSource&&0!==o.dataSource.length?-1:31),c(),k(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?32:-1))},dependencies:[Ft,Ht,Yo,Ae,Et,os,Vs,Su,Fo,wV,Cv,we],styles:[".actions[_ngcontent-%COMP%]{text-align:right;width:150px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}.skychat-link[_ngcontent-%COMP%]{color:#f8f9f9;text-decoration:none}.skychat-link[_ngcontent-%COMP%] .big-action-button[_ngcontent-%COMP%]{margin-right:5px}"]})}}return t})(),jDe=(()=>{class t extends Lt{ngOnInit(){return this.dataSubscription=Me.currentNode.subscribe(e=>{this.nodePK=e.localPk,this.apps=e.apps,this.nodeIp=e.ip}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})()}static{this.\u0275cmp=ae({type:t,selectors:[["app-apps"]],standalone:!1,features:[_e],decls:2,vars:10,consts:[[3,"showOfficialApps","apps","showShortList","nodePK","nodeIp"]],template:function(i,o){1&i&&L(0,"app-node-app-list",0)(1,"app-node-app-list",0),2&i&&(C("showOfficialApps",!0)("apps",o.apps)("showShortList",!0)("nodePK",o.nodePK)("nodeIp",o.nodeIp),c(),C("showOfficialApps",!1)("apps",o.apps)("showShortList",!0)("nodePK",o.nodePK)("nodeIp",o.nodeIp))},dependencies:[uH],encapsulation:2})}}return t})();function $De(t,n){if(1&t&&(h(0,"span",4),p(1),u()),2&t){const e=y();c(),Kh(" ",e.host.hostname," \xb7 ",e.host.platform||e.host.os," ",e.host.arch," \xb7 uptime ",e.fmtUptime(e.host.uptime_seconds)," ")}}function WDe(t,n){if(1&t&&(h(0,"div",13),p(1),_(2,"number"),u()),2&t){const e=y(3);c(),nt("",e.host.cpu_logical_count," cores \xb7 visor ",ue(2,2,e.procCPUPercent,"1.0-1"),"%")}}function GDe(t,n){if(1&t&&(h(0,"div",13),p(1),_(2,"number"),u()),2&t){const e=y(3);c(),Fd(" ",e.fmtBytes(e.host.mem_used)," / ",e.fmtBytes(e.host.mem_total)," \xb7 visor RSS ",ue(2,3,e.procMemRssMB,"1.0-0"),"M ")}}function qDe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=y(3);c(),nt("",e.fmtBytes(e.host.disk_used)," / ",e.fmtBytes(e.host.disk_total)," on /")}}function KDe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=y(3);c(),nt(" fds ",e.host.process.num_fds||"-"," \xb7 conns ",e.host.process.open_conns||0," ")}}function YDe(t,n){if(1&t&&(h(0,"div",7)(1,"div",8)(2,"div",9)(3,"span",10),p(4),_(5,"translate"),u(),h(6,"span",11),p(7),_(8,"number"),u()(),L(9,"app-line-chart",12),x(10,WDe,3,5,"div",13),u(),h(11,"div",8)(12,"div",9)(13,"span",10),p(14),_(15,"translate"),u(),h(16,"span",11),p(17),_(18,"number"),u()(),L(19,"app-line-chart",12),x(20,GDe,3,6,"div",13),u(),h(21,"div",8)(22,"div",9)(23,"span",10),p(24),_(25,"translate"),u(),h(26,"span",11),p(27),_(28,"number"),u()(),L(29,"app-line-chart",12),x(30,qDe,2,2,"div",13),u(),h(31,"div",8)(32,"div",9)(33,"span",10),p(34),_(35,"translate"),u(),h(36,"span",11),p(37),u()(),L(38,"app-line-chart",14),h(39,"div",13),p(40),u()(),h(41,"div",8)(42,"div",9)(43,"span",10),p(44),_(45,"translate"),u(),h(46,"span",11),p(47),u()(),L(48,"app-line-chart",14),h(49,"div",13),p(50),u()(),h(51,"div",8)(52,"div",9)(53,"span",10),p(54),_(55,"translate"),u(),h(56,"span",11),p(57),u()(),L(58,"app-line-chart",14),x(59,KDe,2,2,"div",13),u()()),2&t){const e=y(2);c(4),S(v(5,36,"node.resource-monitor.cpu")),c(3),D("",e.host?ue(8,38,e.host.cpu_percent,"1.0-1"):"-","%"),c(2),C("data",e.cpuPctSeries)("min",0)("max",100)("height",60),c(),k(e.host?10:-1),c(4),S(v(15,41,"node.resource-monitor.memory")),c(3),D("",e.host?ue(18,43,e.host.mem_percent,"1.0-1"):"-","%"),c(2),C("data",e.memPctSeries)("min",0)("max",100)("height",60),c(),k(e.host?20:-1),c(4),S(v(25,46,"node.resource-monitor.disk")),c(3),D("",e.host&&e.host.disk_percent?ue(28,48,e.host.disk_percent,"1.0-1"):"-","%"),c(2),C("data",e.diskPctSeries)("min",0)("max",100)("height",60),c(),k(e.host&&e.host.disk_total?30:-1),c(4),S(v(35,51,"node.resource-monitor.net-rx")),c(3),S(e.fmtBps(e.netRxBpsSeries[e.netRxBpsSeries.length-1])),c(),C("data",e.netRxBpsSeries)("height",60),c(2),D("",e.host?e.fmtBytes(e.host.net_bytes_recv):"-"," total"),c(4),S(v(45,53,"node.resource-monitor.net-tx")),c(3),S(e.fmtBps(e.netTxBpsSeries[e.netTxBpsSeries.length-1])),c(),C("data",e.netTxBpsSeries)("height",60),c(2),D("",e.host?e.fmtBytes(e.host.net_bytes_sent):"-"," total"),c(4),S(v(55,55,"node.resource-monitor.threads")),c(3),S(e.host&&e.host.process?e.host.process.num_threads:"-"),c(),C("data",e.threadsSeries)("height",60),c(),k(e.host&&e.host.process?59:-1)}}function XDe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=y(3);c(),nt("heap_sys ",e.fmtBytes(e.proc.mem_heap_sys)," \xb7 sys ",e.fmtBytes(e.proc.mem_sys))}}function ZDe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=y(3);c(),nt("GOMAXPROCS ",e.proc.gomaxprocs," \xb7 ",e.proc.go_version)}}function QDe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=y(3);c(),nt("total ",e.proc.num_gc," GCs \xb7 alloc ",e.fmtBytes(e.proc.mem_total_alloc)," since start")}}function JDe(t,n){if(1&t&&(h(0,"div",7)(1,"div",8)(2,"div",9)(3,"span",10),p(4),_(5,"translate"),u(),h(6,"span",11),p(7),_(8,"number"),u()(),L(9,"app-line-chart",14),x(10,XDe,2,2,"div",13),u(),h(11,"div",8)(12,"div",9)(13,"span",10),p(14),_(15,"translate"),u(),h(16,"span",11),p(17),u()(),L(18,"app-line-chart",14),x(19,ZDe,2,2,"div",13),u(),h(20,"div",8)(21,"div",9)(22,"span",10),p(23),_(24,"translate"),u(),h(25,"span",11),p(26),u()(),L(27,"app-line-chart",14),x(28,QDe,2,2,"div",13),u()()),2&t){const e=y(2);c(4),S(v(5,15,"node.resource-monitor.heap")),c(3),D("",e.proc?ue(8,17,e.proc.mem_heap_alloc/1024/1024,"1.0-1"):"-","M"),c(2),C("data",e.heapMbSeries)("height",60),c(),k(e.proc?10:-1),c(4),S(v(15,20,"node.resource-monitor.goroutines")),c(3),S(e.proc?e.proc.num_goroutine:"-"),c(),C("data",e.goroutinesSeries)("height",60),c(),k(e.proc?19:-1),c(4),S(v(24,22,"node.resource-monitor.gc")),c(3),D("",e.gcSeries[e.gcSeries.length-1]||0,"/s"),c(),C("data",e.gcSeries)("height",60),c(),k(e.proc?28:-1)}}function eTe(t,n){if(1&t){const e=re();h(0,"div",5)(1,"span",6),F("click",function(){return V(e),H(y().setTab("host"))}),p(2),_(3,"translate"),u(),h(4,"span",6),F("click",function(){return V(e),H(y().setTab("process"))}),p(5),_(6,"translate"),u()(),x(7,YDe,60,57,"div",7),x(8,JDe,29,24,"div",7)}if(2&t){const e=y();c(),ve("active","host"===e.activeTab),c(),D(" ",v(3,8,"node.resource-monitor.tab-host")," "),c(2),ve("active","process"===e.activeTab),c(),D(" ",v(6,10,"node.resource-monitor.tab-process")," "),c(2),k("host"===e.activeTab?7:-1),c(),k("process"===e.activeTab?8:-1)}}let nTe=(()=>{class t{constructor(e,i){this.nodeService=e,this.cdr=i,this.openByDefault=!1,this.expanded=!1,this.activeTab="host",this.host=null,this.proc=null,this.procCPUPercent=0,this.procMemRssMB=0,this.cpuPctSeries=[],this.memPctSeries=[],this.diskPctSeries=[],this.netRxBpsSeries=[],this.netTxBpsSeries=[],this.goroutinesSeries=[],this.heapMbSeries=[],this.gcSeries=[],this.threadsSeries=[],this.prevNetRx=0,this.prevNetTx=0,this.prevGc=0,this.prevSampleAtMs=0,this.firstHostSample=!0,this.firstProcSample=!0}ngOnInit(){this.openByDefault&&(this.expanded=!0,this.startPolling())}ngOnDestroy(){this.stopPolling()}toggleExpanded(){this.expanded=!this.expanded,this.expanded?this.startPolling():this.stopPolling()}setTab(e){this.activeTab=e}fmtBytes(e){return null==e||isNaN(e)?"-":e>=1e9?(e/1e9).toFixed(1)+"G":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toFixed(0)+"B"}fmtBps(e){return null==e||isNaN(e)||e<0?"0B/s":this.fmtBytes(e)+"/s"}fmtUptime(e){if(!e)return"-";const i=Math.floor(e/86400),o=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return i>0?`${i}d ${o}h`:o>0?`${o}h ${r}m`:`${r}m`}startPolling(){this.stopPolling(),this.firstHostSample=!0,this.firstProcSample=!0,this.prevSampleAtMs=0,this.pollSub=Ls(0,1e3).subscribe(()=>{this.pollHost(),this.pollProc()})}stopPolling(){this.pollSub&&(this.pollSub.unsubscribe(),this.pollSub=null),this.hostSub&&(this.hostSub.unsubscribe(),this.hostSub=null),this.procSub&&(this.procSub.unsubscribe(),this.procSub=null)}pollHost(){this.nodeKey&&(this.hostSub&&this.hostSub.unsubscribe(),this.hostSub=this.nodeService.getHostStats(this.nodeKey).subscribe(e=>this.onHostStats(e),()=>{}))}pollProc(){this.nodeKey&&(this.procSub&&this.procSub.unsubscribe(),this.procSub=this.nodeService.getRuntimeStats(this.nodeKey).subscribe(e=>this.onRuntimeStats(e),()=>{}))}onHostStats(e){this.host=e,this.procCPUPercent=e.process?e.process.cpu_percent:0,this.procMemRssMB=e.process?e.process.mem_rss/1024/1024:0;const i=Date.now();let o=(i-this.prevSampleAtMs)/1e3;if((o<=0||o>5)&&(o=1),this.prevSampleAtMs=i,this.push(this.cpuPctSeries,e.cpu_percent),this.push(this.memPctSeries,e.mem_percent),this.push(this.diskPctSeries,e.disk_percent||0),this.push(this.threadsSeries,e.process&&e.process.num_threads||0),this.firstHostSample)this.firstHostSample=!1;else{const r=Math.max(0,e.net_bytes_recv-this.prevNetRx)/o,s=Math.max(0,e.net_bytes_sent-this.prevNetTx)/o;this.push(this.netRxBpsSeries,r),this.push(this.netTxBpsSeries,s)}this.prevNetRx=e.net_bytes_recv,this.prevNetTx=e.net_bytes_sent,this.cdr.markForCheck()}onRuntimeStats(e){this.proc=e,this.push(this.goroutinesSeries,e.num_goroutine),this.push(this.heapMbSeries,e.mem_heap_alloc/1024/1024),this.firstProcSample?this.firstProcSample=!1:this.push(this.gcSeries,Math.max(0,e.num_gc-this.prevGc)),this.prevGc=e.num_gc,this.cdr.markForCheck()}push(e,i){e.push(i),e.length>60&&e.shift()}static{this.\u0275fac=function(i){return new(i||t)(O(Yi),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-resource-monitor"]],inputs:{nodeKey:"nodeKey",openByDefault:"openByDefault"},standalone:!1,decls:9,vars:7,consts:[[1,"resource-monitor","mt-3"],[1,"rm-header",3,"click"],[1,"rm-toggle-icon",3,"inline"],[1,"section-title"],[1,"rm-host-summary"],[1,"rm-tabs"],[1,"rm-tab",3,"click"],[1,"rm-grid"],[1,"rm-cell"],[1,"rm-cell-header"],[1,"rm-cell-label"],[1,"rm-cell-value"],[3,"data","min","max","height"],[1,"rm-cell-foot"],[3,"data","height"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1),F("click",function(){return o.toggleExpanded()}),h(2,"mat-icon",2),p(3),u(),h(4,"span",3),p(5),_(6,"translate"),u(),x(7,$De,2,4,"span",4),u(),x(8,eTe,9,12),u()),2&i&&(c(2),C("inline",!0),c(),S(o.expanded?"expand_less":"expand_more"),c(2),S(v(6,5,"node.resource-monitor.title")),c(2),k(o.host?7:-1),c(),k(o.expanded?8:-1))},dependencies:[Ae,Qv,Gl,we],styles:[".resource-monitor[_ngcontent-%COMP%]{border-top:1px solid rgba(255,255,255,.08);padding-top:12px}.rm-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none;padding:4px 0}.rm-toggle-icon[_ngcontent-%COMP%]{font-size:22px}.rm-host-summary[_ngcontent-%COMP%]{margin-left:auto;opacity:.6;font-size:12px}.rm-tabs[_ngcontent-%COMP%]{display:flex;gap:16px;margin:8px 0 12px;font-size:13px}.rm-tab[_ngcontent-%COMP%]{cursor:pointer;padding:4px 8px;border-radius:4px;opacity:.6}.rm-tab.active[_ngcontent-%COMP%]{opacity:1;background:#ffffff0f}.rm-tab[_ngcontent-%COMP%]:hover{opacity:.9}.rm-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.rm-cell[_ngcontent-%COMP%]{background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:6px;padding:8px 10px;min-height:110px;display:flex;flex-direction:column}.rm-cell-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:2px}.rm-cell-label[_ngcontent-%COMP%]{font-size:11px;text-transform:uppercase;opacity:.7;letter-spacing:.5px}.rm-cell-value[_ngcontent-%COMP%]{font-size:14px;font-weight:500;font-variant-numeric:tabular-nums}.rm-cell-foot[_ngcontent-%COMP%]{margin-top:2px;font-size:11px;opacity:.5;font-variant-numeric:tabular-nums}"]})}}return t})();function iTe(t,n){1&t&&L(0,"app-resource-monitor",0),2&t&&C("nodeKey",y().node.localPk)("openByDefault",!0)}let oTe=(()=>{class t extends Lt{ngOnInit(){return this.dataSubscription=Me.currentNode.subscribe(e=>{this.node=e}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription&&this.dataSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})()}static{this.\u0275cmp=ae({type:t,selectors:[["app-node-resources"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[3,"nodeKey","openByDefault"]],template:function(i,o){1&i&&x(0,iTe,1,2,"app-resource-monitor",0),2&i&&k(o.node?0:-1)},dependencies:[nTe],encapsulation:2})}}return t})();const rTe=["logEl"],sTe=t=>({active:t});function aTe(t,n){if(1&t&&(h(0,"span",8),p(1),u()),2&t){const e=y(2);c(),D("\xb7 ",e.errorText)}}function lTe(t,n){1&t&&(h(0,"span",9),p(1),_(2,"translate"),u()),2&t&&(c(),D("\xb7 ",v(2,1,"skychat.no-history")))}function cTe(t,n){if(1&t){const e=re();h(0,"mat-form-field",34)(1,"mat-label"),p(2),_(3,"translate"),u(),h(4,"input",35),Yt("ngModelChange",function(o){V(e);const r=y(3);return nn(r.pwOld,o)||(r.pwOld=o),H(o)}),u()()}if(2&t){const e=y(3);c(2),S(v(3,2,"skychat.password.old")),c(2),Kt("ngModel",e.pwOld)}}function dTe(t,n){if(1&t){const e=re();h(0,"button",39),F("click",function(){return V(e),H(y(3).clearPassword())}),p(1),_(2,"translate"),u()}if(2&t){const e=y(3);C("disabled",e.pwBusy||!e.pwOld),c(),D(" ",v(2,2,"skychat.password.clear")," ")}}function uTe(t,n){if(1&t){const e=re();h(0,"div",13)(1,"div",33),p(2),_(3,"translate"),u(),x(4,cTe,5,4,"mat-form-field",34),h(5,"mat-form-field",34)(6,"mat-label"),p(7),_(8,"translate"),u(),h(9,"input",35),Yt("ngModelChange",function(o){V(e);const r=y(2);return nn(r.pwNew,o)||(r.pwNew=o),H(o)}),u()(),h(10,"mat-form-field",34)(11,"mat-label"),p(12),_(13,"translate"),u(),h(14,"input",35),Yt("ngModelChange",function(o){V(e);const r=y(2);return nn(r.pwConfirm,o)||(r.pwConfirm=o),H(o)}),u()(),h(15,"div",36)(16,"button",37),F("click",function(){return V(e),H(y(2).applyPassword())}),p(17),_(18,"translate"),u(),x(19,dTe,3,4,"button",38),u()()}if(2&t){const e=y(2);c(2),D(" ",v(3,9,e.pwIsSet?"skychat.password.help-set":"skychat.password.help-unset")," "),c(2),k(e.pwIsSet?4:-1),c(3),S(v(8,11,"skychat.password.new")),c(2),Kt("ngModel",e.pwNew),c(3),S(v(13,13,"skychat.password.confirm")),c(2),Kt("ngModel",e.pwConfirm),c(2),C("disabled",e.pwBusy||!e.pwNew),c(),D(" ",v(18,15,e.pwIsSet?"skychat.password.change":"skychat.password.set")," "),c(2),k(e.pwIsSet?19:-1)}}function hTe(t,n){1&t&&(h(0,"div",17),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"skychat.peers-empty")))}function fTe(t,n){if(1&t){const e=re();h(0,"div",40),F("click",function(){const o=V(e).$implicit;return H(y(2).pickRecipient(o))}),h(1,"span",41),p(2),u()()}if(2&t){const e=n.$implicit,i=y(2);C("ngClass",ie(3,sTe,i.toPK===e))("matTooltip",e),c(2),S(e)}}function pTe(t,n){1&t&&(h(0,"div",21),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"skychat.empty")))}function mTe(t,n){if(1&t){const e=re();h(0,"div",22)(1,"div",42)(2,"span",43),F("click",function(){const o=V(e).$implicit;return H(y(2).pickRecipient(o.peer))}),p(3),u(),h(4,"span",44),p(5),_(6,"date"),u()(),h(7,"div",45),p(8),u()()}if(2&t){const e=n.$implicit;C("ngClass",e.direction),c(2),C("matTooltip",e.peer),c(),nt(" ","out"===e.direction?"\u2192":"\u2190"," ",e.peer," "),c(2),S(ue(6,6,e.ts,"mediumTime")),c(3),S(e.text)}}function gTe(t,n){if(1&t){const e=re();h(0,"div",1)(1,"div",2)(2,"div",3),L(3,"span",4),h(4,"span",5),p(5),_(6,"translate"),u(),h(7,"span",6),p(8,"\xb7"),u(),h(9,"span",7),p(10),_(11,"translate"),_(12,"translate"),u(),x(13,aTe,2,1,"span",8),x(14,lTe,3,3,"span",9),L(15,"span",10),h(16,"button",11),F("click",function(){return V(e),H(y().togglePassword())}),h(17,"mat-icon",12),p(18),u(),p(19),_(20,"translate"),u()(),x(21,uTe,20,17,"div",13),h(22,"div",14)(23,"aside",15)(24,"div",16),p(25),_(26,"translate"),u(),x(27,hTe,3,3,"div",17),me(28,fTe,3,5,"div",18,Le),u(),h(30,"section",19)(31,"div",20,0),x(33,pTe,3,3,"div",21),me(34,mTe,9,9,"div",22,CO),u(),h(36,"div",23)(37,"mat-form-field",24)(38,"mat-label"),p(39),_(40,"translate"),u(),h(41,"input",25),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.toPK,o)||(r.toPK=o),H(o)}),u()(),h(42,"mat-form-field",26)(43,"mat-label"),p(44),_(45,"translate"),u(),h(46,"mat-select",27),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.network,o)||(r.network=o),H(o)}),h(47,"mat-option",28),p(48,"skynet"),u(),h(49,"mat-option",29),p(50,"dmsg"),u()()()(),h(51,"div",23)(52,"mat-form-field",30)(53,"mat-label"),p(54),_(55,"translate"),u(),h(56,"textarea",31),_(57,"translate"),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.message,o)||(r.message=o),H(o)}),F("keydown.enter",function(o){V(e);const r=y();return H(o.ctrlKey&&r.send())}),u()(),h(58,"button",32),F("click",function(){return V(e),H(y().send())}),h(59,"mat-icon"),p(60,"send"),u(),p(61),_(62,"translate"),u()()()()()()}if(2&t){const e=y();c(3),C("ngClass",e.connected?"dot-green":"dot-outline-gray"),c(2),S(v(6,21,"skychat.title")),c(5),S(e.connected?v(11,23,"skychat.connected"):v(12,25,"skychat.disconnected")),c(3),k(e.errorText?13:-1),c(),k(e.historyAvailable?-1:14),c(3),C("inline",!0),c(),S(e.pwIsSet?"lock":"lock_open"),c(),D(" ",v(20,27,e.pwOpen?"skychat.password.hide":e.pwIsSet?"skychat.password.change":"skychat.password.set")," "),c(2),k(e.pwOpen?21:-1),c(4),S(v(26,29,"skychat.peers")),c(2),k(0===e.peers.length?27:-1),c(),ge(e.peers),c(5),k(0===e.messages.length?33:-1),c(),ge(e.messages),c(5),S(v(40,31,"skychat.to")),c(2),Kt("ngModel",e.toPK),c(3),S(v(45,33,"skychat.network")),c(2),Kt("ngModel",e.network),c(8),S(v(55,35,"skychat.message")),c(2),Kt("ngModel",e.message),C("placeholder",v(57,37,"skychat.placeholder")),c(2),C("disabled",e.sending||!e.message.trim()||!e.toPK.trim()),c(3),D(" ",v(62,39,"skychat.send")," ")}}let _Te=(()=>{class t extends Lt{get peers(){const e=[],i=new Set;for(let o=this.messages.length-1;o>=0;o--){const r=this.messages[o].peer;!r||i.has(r)||(i.add(r),e.push(r))}return e}constructor(e,i,o){super(),this.api=e,this.snackbar=i,this.cdr=o,this.toPK="",this.message="",this.network="skynet",this.sending=!1,this.messages=[],this.connected=!1,this.errorText="",this.historyAvailable=!0,this.wasAtBottom=!0,this.es=null,this.pwOpen=!1,this.pwIsSet=!1,this.pwOld="",this.pwNew="",this.pwConfirm="",this.pwBusy=!1}ngOnInit(){return this.nodeSub=Me.currentNode.subscribe(e=>{const i=!this.node;this.node=e,i&&(this.connectSSE(),this.tryLoadPeers(),this.refreshPasswordState())}),super.ngOnInit()}ngOnDestroy(){this.nodeSub&&this.nodeSub.unsubscribe(),this.disconnectSSE()}ngAfterViewChecked(){if(this.wasAtBottom&&this.logEl){const e=this.logEl.nativeElement;e.scrollTop=e.scrollHeight}}proxyUrl(e){return`/api/visors/${this.node.localPk}/skychat/proxy/${e.replace(/^\/+/,"")}`}connectSSE(){if(this.node&&!this.es)try{this.es=new EventSource(this.proxyUrl("sse")),this.es.onopen=()=>{this.connected=!0,this.errorText="",this.cdr.markForCheck()},this.es.onerror=()=>{this.connected=!1,this.errorText="Disconnected \u2014 retrying\u2026",this.cdr.markForCheck()},this.es.onmessage=e=>this.handleSSE(e.data)}catch(e){this.errorText=`SSE setup failed: ${e?.message||e}`}}disconnectSSE(){this.es&&(this.es.close(),this.es=null)}handleSSE(e){let i=null;try{i=JSON.parse(e)}catch{}if(!i||"object"!=typeof i)return;const o={peer:i.sender||i.from||"",direction:"in",text:"string"==typeof i.message?i.message:i.text||"",ts:Date.now()};!o.peer||!o.text||(this.captureScroll(),this.messages.push(o),this.messages.length>500&&this.messages.shift(),this.cdr.markForCheck())}send(){var e=this;if(this.sending)return;const i=this.toPK.trim(),o=this.message.trim();if(i&&o){if(66!==i.length||!/^[0-9a-fA-F]+$/.test(i))return void this.snackbar.showError("Recipient must be a 66-char hex public key");this.sending=!0,fetch(this.proxyUrl("message"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({recipient:i,message:o,network:this.network})}).then(function(){var r=At(function*(s){if(!s.ok){const a=yield s.text();throw new Error(a||`HTTP ${s.status}`)}e.captureScroll(),e.messages.push({peer:i,direction:"out",text:o,ts:Date.now()}),e.messages.length>500&&e.messages.shift(),e.message="",e.cdr.markForCheck()});return function(s){return r.apply(this,arguments)}}()).catch(r=>{this.snackbar.showError(r?.message||String(r))}).finally(()=>{this.sending=!1,this.cdr.markForCheck()})}}tryLoadPeers(){var e=this;!this.node||!this.historyAvailable||fetch(this.proxyUrl("history?limit=100")).then(function(){var i=At(function*(o){if(503===o.status)return e.historyAvailable=!1,null;if(!o.ok)throw new Error(`HTTP ${o.status}`);return o.json()});return function(o){return i.apply(this,arguments)}}()).then(i=>{if(!Array.isArray(i))return;const o=i.map(r=>({peer:r.peer||r.sender||"",direction:"out"===r.direction?"out":"in",text:r.message||r.text||"",ts:r.timestamp||r.ts||Date.now()})).filter(r=>r.peer&&r.text);this.messages=o.concat(this.messages),this.cdr.markForCheck()}).catch(()=>{})}pickRecipient(e){this.toPK=e}captureScroll(){if(!this.logEl)return void(this.wasAtBottom=!0);const e=this.logEl.nativeElement;this.wasAtBottom=e.scrollHeight-e.scrollTop-e.clientHeight<40}togglePassword(){this.pwOpen=!this.pwOpen,this.pwOpen?this.refreshPasswordState():this.resetPasswordForm()}refreshPasswordState(){this.node&&this.api.get(`visors/${this.node.localPk}/skychat/password`).subscribe(e=>{this.pwIsSet=!(!e||!e.set),this.cdr.markForCheck()},()=>{})}resetPasswordForm(){this.pwOld="",this.pwNew="",this.pwConfirm=""}validateNewPassword(){return this.pwNew.length<6||this.pwNew.length>64?"skychat.password.errors.length":this.pwNew!==this.pwConfirm?"skychat.password.errors.mismatch":null}applyPassword(){if(!this.node||this.pwBusy)return;const e=this.validateNewPassword();e?this.snackbar.showError(e):(this.pwBusy=!0,this.api.put(`visors/${this.node.localPk}/skychat/password`,{old_password:this.pwIsSet?this.pwOld:"",new_password:this.pwNew}).subscribe(()=>{this.pwBusy=!1,this.pwIsSet=!0,this.resetPasswordForm(),this.snackbar.showDone("skychat.password.saved"),this.cdr.markForCheck()},i=>{this.pwBusy=!1,this.snackbar.showError(i?.originalError?.error?.error||i?.message||String(i)),this.cdr.markForCheck()}))}clearPassword(){if(this.node&&!this.pwBusy&&this.pwIsSet){if(!this.pwOld)return void this.snackbar.showError("skychat.password.errors.old-required");this.pwBusy=!0,this.api.delete(`visors/${this.node.localPk}/skychat/password?old_password=${encodeURIComponent(this.pwOld)}`).subscribe(()=>{this.pwBusy=!1,this.pwIsSet=!1,this.resetPasswordForm(),this.snackbar.showDone("skychat.password.cleared"),this.cdr.markForCheck()},e=>{this.pwBusy=!1,this.snackbar.showError(e?.originalError?.error?.error||e?.message||String(e)),this.cdr.markForCheck()})}}static{this.\u0275fac=function(i){return new(i||t)(O(fi),O(ot),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-skychat"]],viewQuery:function(i,o){if(1&i&&st(rTe,5),2&i){let r;fe(r=pe())&&(o.logEl=r.first)}},standalone:!1,features:[_e],decls:1,vars:1,consts:[["logEl",""],[1,"rounded-elevated-box","mt-3","skychat-box"],[1,"box-internal-container","sc-shell"],[1,"sc-status"],[1,"dot",3,"ngClass"],[1,"status-text"],[1,"status-sep"],[1,"status-conn"],[1,"error"],[1,"hint"],[1,"sc-status-spacer"],["mat-button","","type","button",1,"sc-password-toggle",3,"click"],[1,"lock-icon",3,"inline"],[1,"sc-password"],[1,"sc-body"],[1,"sc-sidebar"],[1,"sc-sidebar-title"],[1,"sc-sidebar-empty"],[1,"sc-peer",3,"ngClass","matTooltip"],[1,"sc-chat"],[1,"sc-log"],[1,"sc-empty"],[1,"sc-msg",3,"ngClass"],[1,"sc-composer"],["appearance","outline",1,"field-pk"],["matInput","","placeholder","02abc\u2026",3,"ngModelChange","ngModel"],["appearance","outline",1,"field-sm"],["panelClass","skynet-select-panel",3,"ngModelChange","ngModel"],["value","skynet"],["value","dmsg"],["appearance","outline",1,"field-msg"],["matInput","","rows","2",3,"ngModelChange","keydown.enter","ngModel","placeholder"],["mat-raised-button","","color","primary",1,"send-btn",3,"click","disabled"],[1,"sc-password-help"],["appearance","outline",1,"field-pw"],["matInput","","type","password","maxlength","64",3,"ngModelChange","ngModel"],[1,"sc-password-actions"],["mat-raised-button","","color","primary",3,"click","disabled"],["mat-stroked-button","","color","warn",3,"disabled"],["mat-stroked-button","","color","warn",3,"click","disabled"],[1,"sc-peer",3,"click","ngClass","matTooltip"],[1,"peer-pk","mono","small"],[1,"sc-msg-meta"],[1,"peer","mono","small",3,"click","matTooltip"],[1,"ts"],[1,"sc-msg-text"]],template:function(i,o){1&i&&x(0,gTe,63,41,"div",1),2&i&&k(o.node?0:-1)},dependencies:[Ft,Qt,Jt,Bi,dn,ns,On,Ht,Ae,Et,gu,Na,is,vr,we],styles:[".skychat-box[_ngcontent-%COMP%]{display:flex;flex-direction:column}.sc-shell[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.sc-status[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:13px;padding:6px 4px}.sc-status[_ngcontent-%COMP%] .status-text[_ngcontent-%COMP%]{font-weight:600;font-size:14px}.sc-status[_ngcontent-%COMP%] .status-sep[_ngcontent-%COMP%]{opacity:.5}.sc-status[_ngcontent-%COMP%] .status-conn[_ngcontent-%COMP%]{font-weight:500}.sc-status[_ngcontent-%COMP%] .error[_ngcontent-%COMP%]{opacity:.85;color:#e53935e6}.sc-status[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{opacity:.6}.sc-status[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{display:inline-block;width:8px;height:8px;border-radius:50%}.sc-status[_ngcontent-%COMP%] .dot-green[_ngcontent-%COMP%]{background:#4caf50}.sc-status[_ngcontent-%COMP%] .dot-outline-gray[_ngcontent-%COMP%]{border:1px solid rgba(255,255,255,.4)}.sc-status[_ngcontent-%COMP%] .sc-status-spacer[_ngcontent-%COMP%]{flex:1 1 auto}.sc-status[_ngcontent-%COMP%] .sc-password-toggle[_ngcontent-%COMP%]{font-size:12px;line-height:1.2}.sc-status[_ngcontent-%COMP%] .sc-password-toggle[_ngcontent-%COMP%] .lock-icon[_ngcontent-%COMP%]{font-size:16px;vertical-align:middle;margin-right:4px}.sc-password[_ngcontent-%COMP%]{margin:8px 0 4px;padding:12px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:6px;display:flex;flex-wrap:wrap;gap:12px 16px;align-items:flex-end}.sc-password[_ngcontent-%COMP%] .sc-password-help[_ngcontent-%COMP%]{flex:1 1 100%;font-size:12px;opacity:.75;margin-bottom:4px}.sc-password[_ngcontent-%COMP%] .field-pw[_ngcontent-%COMP%]{flex:1 1 200px;min-width:180px}.sc-password[_ngcontent-%COMP%] .sc-password-actions[_ngcontent-%COMP%]{flex:1 1 100%;display:flex;gap:8px;justify-content:flex-end}.sc-body[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:stretch}.sc-sidebar[_ngcontent-%COMP%]{flex:0 0 220px;max-width:240px;display:flex;flex-direction:column;gap:4px;padding:8px;background:#0000002e;border:1px solid rgba(255,255,255,.06);border-radius:6px;overflow-y:auto;max-height:60vh}.sc-sidebar[_ngcontent-%COMP%] .sc-sidebar-title[_ngcontent-%COMP%]{font-size:11px;text-transform:uppercase;letter-spacing:.5px;opacity:.6;padding:2px 4px 6px}.sc-sidebar[_ngcontent-%COMP%] .sc-sidebar-empty[_ngcontent-%COMP%]{padding:8px 4px;font-size:12px;opacity:.5}.sc-sidebar[_ngcontent-%COMP%] .sc-peer[_ngcontent-%COMP%]{cursor:pointer;padding:6px 8px;border-radius:4px;border:1px solid transparent;background:#ffffff08}.sc-sidebar[_ngcontent-%COMP%] .sc-peer[_ngcontent-%COMP%]:hover{background:#ffffff0f}.sc-sidebar[_ngcontent-%COMP%] .sc-peer.active[_ngcontent-%COMP%]{background:#2196f32e;border-color:#2196f373}.sc-sidebar[_ngcontent-%COMP%] .sc-peer[_ngcontent-%COMP%] .peer-pk[_ngcontent-%COMP%]{display:block;word-break:break-all;line-height:1.25;font-size:10px}@media(max-width:720px){.sc-body[_ngcontent-%COMP%]{flex-direction:column}.sc-sidebar[_ngcontent-%COMP%]{flex:0 0 auto;max-width:none;max-height:140px}}.sc-chat[_ngcontent-%COMP%]{flex:1 1 auto;display:flex;flex-direction:column;min-width:0}.sc-log[_ngcontent-%COMP%]{background:#0000002e;border:1px solid rgba(255,255,255,.06);border-radius:6px;padding:8px;height:50vh;min-height:320px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.sc-empty[_ngcontent-%COMP%]{margin:auto;opacity:.5;font-size:13px}.sc-msg[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border-radius:6px;background:#ffffff08;max-width:80%}.sc-msg.in[_ngcontent-%COMP%]{align-self:flex-start}.sc-msg.out[_ngcontent-%COMP%]{align-self:flex-end;background:#2196f32e}.sc-msg-meta[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center;font-size:11px;opacity:.7;flex-wrap:wrap}.sc-msg-meta[_ngcontent-%COMP%] .peer[_ngcontent-%COMP%]{cursor:pointer;-webkit-text-decoration:underline dotted transparent;text-decoration:underline dotted transparent;word-break:break-all}.sc-msg-meta[_ngcontent-%COMP%] .peer[_ngcontent-%COMP%]:hover{text-decoration-color:currentColor}.sc-msg-text[_ngcontent-%COMP%]{white-space:pre-wrap;word-break:break-word;font-size:13px}.sc-composer[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:flex-start;margin-top:8px}.sc-composer[_ngcontent-%COMP%] .field-pk[_ngcontent-%COMP%]{flex:1 1 360px}.sc-composer[_ngcontent-%COMP%] .field-sm[_ngcontent-%COMP%]{flex:0 1 130px}.sc-composer[_ngcontent-%COMP%] .field-msg[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0}.sc-composer[_ngcontent-%COMP%] .send-btn[_ngcontent-%COMP%]{flex:0 0 auto;align-self:center;height:56px;white-space:nowrap}"]})}}return t})();function ds(t=0,n=Nf){return t<0&&(t=0),Ls(t,t,n)}function bTe(t,n){1&t&&(h(0,"div",8),L(1,"mat-spinner",13),h(2,"span",14),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"bandwidth.loading")))}function vTe(t,n){if(1&t&&(h(0,"div",9)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",14),p(4),u()()),2&t){const e=y(2);c(4),S(e.error)}}function yTe(t,n){if(1&t&&(h(0,"span",16),p(1),_(2,"translate"),_(3,"date"),u()),2&t){const e=y(3);c(),nt("\u2014 ",v(2,2,"bandwidth.last-updated"),": ",ue(3,4,e.fetchedAt,"HH:mm:ss"))}}function CTe(t,n){if(1&t&&(h(0,"div",10)(1,"mat-icon"),p(2,"swap_vert"),u(),h(3,"span",15),p(4),_(5,"translate"),_(6,"translate"),_(7,"translate"),u(),x(8,yTe,4,7,"span",16),u()),2&t){const e=y(2);c(4),q0(" ",e.rows.length," ",v(5,6,"bandwidth.transports")," \xb7 ",e.fmtBytes(e.totalNetworkBw)," ",v(6,8,"bandwidth.total")," (",1===e.windowDays?v(7,10,"bandwidth.window-now"):e.windowDays+"d",") "),c(4),k(e.fetchedAt?8:-1)}}function wTe(t,n){1&t&&(h(0,"div",11),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"bandwidth.empty")))}function xTe(t,n){if(1&t&&(h(0,"span",25),p(1),u()),2&t){const e=y().$implicit,i=y(2);C("matTooltip",i.fmtLatencyTriple(e.current)),c(),D(" ",i.fmtLatency(e.current.latency_avg_ms)," ")}}function kTe(t,n){if(1&t&&(h(0,"div")(1,"span",24),p(2),_(3,"translate"),u(),h(4,"strong"),p(5),_(6,"date"),u()()),2&t){const e=y(3).$implicit;c(2),D("",v(3,2,"bandwidth.sampled-at"),":"),c(3),S(ue(6,4,e.current.sampled_at,"HH:mm:ss"))}}function STe(t,n){if(1&t&&(h(0,"div",27)(1,"div",28),p(2),_(3,"translate"),u(),h(4,"div",29)(5,"div")(6,"span",24),p(7),_(8,"translate"),u(),h(9,"strong"),p(10),u()(),h(11,"div")(12,"span",24),p(13),_(14,"translate"),u(),h(15,"strong"),p(16),u()(),h(17,"div")(18,"span",24),p(19),_(20,"translate"),u(),h(21,"strong"),p(22),u()(),x(23,kTe,7,7,"div"),u()()),2&t){const e=y(2).$implicit,i=y(2);c(2),S(v(3,8,"bandwidth.current-snapshot")),c(5),D("",v(8,10,"bandwidth.sent"),":"),c(3),S(i.fmtBytes(e.current.sent_bytes)),c(3),D("",v(14,12,"bandwidth.recv"),":"),c(3),S(i.fmtBytes(e.current.recv_bytes)),c(3),D("",v(20,14,"bandwidth.latency-current"),":"),c(3),S(i.fmtLatencyTriple(e.current)),c(),k(e.current.sampled_at?23:-1)}}function MTe(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2),u(),h(3,"td",31),p(4),u(),h(5,"td",31),p(6),u(),h(7,"td",31)(8,"strong"),p(9),u()(),h(10,"td",31),p(11),u(),h(12,"td",32),p(13),u()()),2&t){const e=n.$implicit,i=y(5);c(2),S(e.date),c(2),S(i.fmtBytes(e.sent_bytes)),c(2),S(i.fmtBytes(e.recv_bytes)),c(3),S(i.fmtBytes((e.sent_bytes||0)+(e.recv_bytes||0))),c(2),S(i.fmtLatencyTriple(e)),c(2),S(e.samples||0)}}function DTe(t,n){if(1&t&&(h(0,"div",27)(1,"div",28),p(2),_(3,"translate"),u(),h(4,"table",30)(5,"tr")(6,"th"),p(7),_(8,"translate"),u(),h(9,"th",31),p(10),_(11,"translate"),u(),h(12,"th",31),p(13),_(14,"translate"),u(),h(15,"th",31),p(16),_(17,"translate"),u(),h(18,"th",31),p(19),_(20,"translate"),u(),h(21,"th",31),p(22),_(23,"translate"),u()(),me(24,MTe,14,6,"tr",null,wi().trackDay,!0),u()()),2&t){const e=y(2).$implicit;c(2),S(v(3,7,"bandwidth.daily-history")),c(5),S(v(8,9,"bandwidth.date")),c(3),S(v(11,11,"bandwidth.sent")),c(3),S(v(14,13,"bandwidth.recv")),c(3),S(v(17,15,"bandwidth.total")),c(3),S(v(20,17,"bandwidth.latency-min-avg-max")),c(3),S(v(23,19,"bandwidth.samples")),c(2),ge(e.daily)}}function TTe(t,n){1&t&&(h(0,"div",27)(1,"div",24),p(2),_(3,"translate"),u()()),2&t&&(c(2),S(v(3,1,"bandwidth.no-history")))}function ETe(t,n){if(1&t&&(h(0,"div",26),x(1,STe,24,16,"div",27),x(2,DTe,26,21,"div",27)(3,TTe,4,3,"div",27),u()),2&t){const e=y().$implicit;c(),k(e.current?1:-1),c(),k(e.daily&&e.daily.length>0?2:3)}}function PTe(t,n){if(1&t){const e=re();h(0,"div",17)(1,"div",18),F("click",function(){const o=V(e).$implicit;return H(y(2).toggleRow(o))}),h(2,"mat-icon",19),p(3),u(),h(4,"span",20),p(5),u(),h(6,"span",21),p(7),u(),h(8,"span",22),p(9),u(),h(10,"span",23)(11,"strong"),p(12),u(),h(13,"span",24),p(14),u()(),x(15,xTe,2,2,"span",25),u(),x(16,ETe,4,2,"div",26),u()}if(2&t){const e=n.$implicit,i=y(2);ve("expanded",e.expanded),c(2),C("inline",!0),c(),S(e.expanded?"expand_more":"chevron_right"),c(2),S(e.type||"-"),c(2),S(e.id),c(2),D("\u2192 ",i.remotePK(e)),c(3),S(i.fmtBytes(e.totalBw)),c(2),nt("\u2191 ",i.fmtBytes(e.totalSent)," \u2193 ",i.fmtBytes(e.totalRecv)),c(),k(null!=e.current&&e.current.latency_avg_ms?15:-1),c(),k(e.expanded?16:-1)}}function ITe(t,n){if(1&t){const e=re();h(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3)(4,"span",4),p(5),_(6,"translate"),u(),h(7,"button",5),F("click",function(){return V(e),H(y().setWindow(1))}),p(8),_(9,"translate"),u(),h(10,"button",5),F("click",function(){return V(e),H(y().setWindow(7))}),p(11,"7d"),u(),h(12,"button",5),F("click",function(){return V(e),H(y().setWindow(30))}),p(13,"30d"),u()(),h(14,"button",6),F("click",function(){return V(e),H(y().refreshNow())}),h(15,"mat-icon",7),p(16,"refresh"),u(),p(17),_(18,"translate"),u()(),x(19,bTe,5,4,"div",8),x(20,vTe,5,1,"div",9),x(21,CTe,9,12,"div",10),x(22,wTe,3,3,"div",11),me(23,PTe,17,12,"div",12,wi().trackRow,!0),u()()}if(2&t){const e=y();c(5),D("",v(6,14,"bandwidth.window"),":"),c(2),ve("active",1===e.windowDays),c(),S(v(9,16,"bandwidth.window-now")),c(2),ve("active",7===e.windowDays),c(2),ve("active",30===e.windowDays),c(3),C("inline",!0),c(2),D(" ",v(18,18,"bandwidth.refresh")," "),c(2),k(e.loading&&0===e.rows.length?19:-1),c(),k(e.error&&0===e.rows.length?20:-1),c(),k(e.rows.length>0?21:-1),c(),k(0!==e.rows.length||e.loading||e.error?-1:22),c(),ge(e.rows)}}let OTe=(()=>{class t extends Lt{constructor(e,i){super(),this.api=e,this.cdr=i,this.rows=[],this.loading=!0,this.error=null,this.fetchedAt=null,this.windowDays=7}ngOnInit(){return this.nodeSub=Me.currentNode.subscribe(e=>{const i=!this.node;this.node=e,i&&e&&this.startPolling()}),super.ngOnInit()}ngOnDestroy(){this.nodeSub?.unsubscribe(),this.pollSub?.unsubscribe()}setWindow(e){e!==this.windowDays&&(this.windowDays=e,this.recompute())}refreshNow(){this.node&&this.fetchOnce().subscribe()}toggleRow(e){e.expanded=!e.expanded}startPolling(){this.pollSub=ds(3e4).pipe(zn(0),wt(()=>this.fetchOnce())).subscribe()}fetchOnce(){return this.api.get(`visors/${this.node.localPk}/local-transport-stats`).pipe(ii(e=>(this.error=e?.message||"Failed to fetch bandwidth",this.loading=!1,this.cdr.markForCheck(),se(null))),wt(e=>(e&&this.consume(e),se(e))))}consume(e){this.rows=(e.transports||[]).map(o=>this.toRow(o)),this.recompute(),this.fetchedAt=e.fetched_at?new Date(e.fetched_at):new Date,this.loading=!1,this.error=null,this.cdr.markForCheck()}toRow(e){return{...e,expanded:!1,totalSent:0,totalRecv:0,totalBw:0}}recompute(){const e=new Date;e.setUTCDate(e.getUTCDate()-this.windowDays);const i=e.toISOString().slice(0,10);for(const o of this.rows){let r=0,s=0;if(1===this.windowDays)r=o.current?.sent_bytes||0,s=o.current?.recv_bytes||0;else for(const a of o.daily||[])a.date>=i&&(r+=a.sent_bytes||0,s+=a.recv_bytes||0);o.totalSent=r,o.totalRecv=s,o.totalBw=r+s}this.rows.sort((o,r)=>r.totalBw-o.totalBw)}get totalNetworkBw(){return this.rows.reduce((e,i)=>e+i.totalBw,0)}fmtBytes(e){if(null==e)return"-";if(0===e)return"0 B";const i=["B","KB","MB","GB","TB"];let o=0,r=e;for(;r>=1024&&oi!==this.node.localPk)||e.edges[0])||""}trackRow(e,i){return i.id}trackDay(e,i){return i.date}static{this.\u0275fac=function(i){return new(i||t)(O(fi),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-bandwidth"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow"],[1,"bw-controls"],[1,"control-group"],[1,"control-label"],["mat-button","",3,"click"],["mat-stroked-button","",1,"refresh-btn",3,"click"],[3,"inline"],[1,"loading-row"],[1,"error-row"],[1,"summary-line"],[1,"bw-empty"],[1,"bw-row",3,"expanded"],[3,"diameter"],[1,"ml-2"],[1,"ml-1"],[1,"last-updated"],[1,"bw-row"],[1,"bw-row-head",3,"click"],[1,"bw-exp",3,"inline"],[1,"bw-type-pill"],[1,"bw-tp-id","mono","small"],[1,"bw-remote","mono","small"],[1,"bw-totals"],[1,"dim"],[1,"bw-latency","dim",3,"matTooltip"],[1,"bw-row-body"],[1,"bw-section"],[1,"bw-section-title"],[1,"bw-grid"],[1,"responsive-table-translucid","bw-daily"],[1,"num"],[1,"num","dim"]],template:function(i,o){1&i&&x(0,ITe,25,20,"div",0),2&i&&k(o.node?0:-1)},dependencies:[Ht,Ae,Et,ci,vr,we],styles:[".bw-controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.bw-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.bw-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] .control-label[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffa6}.bw-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{min-width:0;padding:0 12px!important;opacity:.6;color:#ffffffd9!important}.bw-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{opacity:1;background:#2196f32e!important;color:#fff!important}.bw-controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%]{margin-left:auto;color:#ffffffd9!important}.bw-controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:inherit}.loading-row[_ngcontent-%COMP%], .error-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:16px 0}.error-row[_ngcontent-%COMP%]{color:#f87171}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em;margin-bottom:8px}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.bw-empty[_ngcontent-%COMP%]{padding:24px 0;color:#fff9;text-align:center}.dim[_ngcontent-%COMP%]{color:#fff9}.small[_ngcontent-%COMP%]{font-size:.85em}.mono[_ngcontent-%COMP%]{font-family:monospace;word-break:break-all}.bw-row[_ngcontent-%COMP%]{background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:4px;margin-bottom:6px}.bw-row.expanded[_ngcontent-%COMP%]{border-color:#2196f34d}.bw-row-head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:8px 12px;cursor:pointer;flex-wrap:wrap}.bw-row-head[_ngcontent-%COMP%]:hover{background:#ffffff0a}.bw-row-head[_ngcontent-%COMP%] .bw-exp[_ngcontent-%COMP%]{color:#fff9}.bw-row-head[_ngcontent-%COMP%] .bw-type-pill[_ngcontent-%COMP%]{display:inline-block;padding:1px 6px;border-radius:3px;background:#2196f32e;border:1px solid rgba(33,150,243,.35);font-size:11px;text-transform:lowercase}.bw-row-head[_ngcontent-%COMP%] .bw-tp-id[_ngcontent-%COMP%]{flex:0 1 320px;min-width:0;font-size:11px;color:#ffffffd9}.bw-row-head[_ngcontent-%COMP%] .bw-remote[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0;font-size:11px;color:#ffffffb3}.bw-row-head[_ngcontent-%COMP%] .bw-totals[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:8px;font-size:13px;flex:0 0 auto}.bw-row-head[_ngcontent-%COMP%] .bw-latency[_ngcontent-%COMP%]{font-size:12px;flex:0 0 auto}.bw-row-body[_ngcontent-%COMP%]{padding:4px 16px 12px 36px;border-top:1px solid rgba(255,255,255,.05)}.bw-section[_ngcontent-%COMP%]{margin-top:10px}.bw-section[_ngcontent-%COMP%] .bw-section-title[_ngcontent-%COMP%]{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:#ffffff8c;margin-bottom:6px}.bw-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:6px 16px;font-size:12px}.bw-grid[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{margin-left:4px;color:#fffffff2}.bw-daily[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .bw-daily[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{font-size:12px}.bw-daily[_ngcontent-%COMP%] td.num[_ngcontent-%COMP%], .bw-daily[_ngcontent-%COMP%] th.num[_ngcontent-%COMP%]{text-align:right;white-space:nowrap}"]})}}return t})();const ATe=(t,n)=>n.name;function RTe(t,n){1&t&&(h(0,"div",8),L(1,"mat-spinner",13),h(2,"span",14),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"uptime.loading")))}function FTe(t,n){if(1&t&&(h(0,"div",9)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",14),p(4),u()()),2&t){const e=y(2);c(4),S(e.error)}}function NTe(t,n){1&t&&(h(0,"div",10),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"uptime.empty")))}function LTe(t,n){if(1&t&&(h(0,"span",16)(1,"span",18),p(2),_(3,"translate"),u(),h(4,"span",19),p(5),u()()),2&t){const e=n.$implicit,i=y(3);c(2),S(v(3,3,i.tierLabel(e.name))),c(2),C("ngClass",i.pctClass(e.pct)),c(),S(i.fmtPct(e.pct))}}function BTe(t,n){if(1&t&&(h(0,"span",17),p(1),_(2,"translate"),_(3,"date"),u()),2&t){const e=y(3);c(),nt("\u2014 ",v(2,2,"uptime.last-updated"),": ",ue(3,4,e.fetchedAt,"HH:mm:ss"))}}function VTe(t,n){if(1&t&&(h(0,"div",11)(1,"span",15),p(2),_(3,"translate"),u(),me(4,LTe,6,5,"span",16,ATe),x(6,BTe,4,7,"span",17),u()),2&t){const e=y(2);c(2),D("",v(3,2,"uptime.window-avg"),":"),c(2),ge(e.summary),c(2),k(e.fetchedAt?6:-1)}}function HTe(t,n){1&t&&(h(0,"span",22),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"uptime.today")))}function UTe(t,n){if(1&t&&L(0,"span",28),2&t){const e=n.$implicit,i=y(4);ve("on","on"===e.state)("off","off"===e.state)("future","future"===e.state),C("matTooltip",i.cellTooltip(e))}}function zTe(t,n){if(1&t&&(h(0,"div",23)(1,"span",24),_(2,"translate"),p(3),_(4,"translate"),u(),h(5,"div",25),me(6,UTe,1,7,"span",26,wi().trackCell,!0),u(),h(8,"span",27),p(9),u()()),2&t){const e=n.$implicit,i=y(3);c(),C("matTooltip",v(2,4,i.tierInfo(e.name))),c(2),S(v(4,6,i.tierLabel(e.name))),c(3),ge(e.cells),c(2),C("ngClass",i.pctClass(e.pct,e.empty)),c(),D(" ",e.empty?"\u2013":i.fmtPct(e.pct)," ")}}function jTe(t,n){if(1&t&&(h(0,"div",12)(1,"div",20)(2,"span",21),p(3),u(),x(4,HTe,3,3,"span",22),u(),me(5,zTe,10,8,"div",23,wi().trackTier,!0),u()),2&t){const e=n.$implicit;c(3),S(e.date),c(),k(e.isToday?4:-1),c(),ge(e.tiers)}}function $Te(t,n){if(1&t){const e=re();h(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3)(4,"span",4),p(5),_(6,"translate"),u(),h(7,"button",5),F("click",function(){return V(e),H(y().setWindow(1))}),p(8),_(9,"translate"),u(),h(10,"button",5),F("click",function(){return V(e),H(y().setWindow(7))}),p(11,"7d"),u(),h(12,"button",5),F("click",function(){return V(e),H(y().setWindow(30))}),p(13,"30d"),u()(),h(14,"button",6),F("click",function(){return V(e),H(y().refreshNow())}),h(15,"mat-icon",7),p(16,"refresh"),u(),p(17),_(18,"translate"),u()(),x(19,RTe,5,4,"div",8),x(20,FTe,5,1,"div",9),x(21,NTe,3,3,"div",10),x(22,VTe,7,4,"div",11),me(23,jTe,7,2,"div",12,wi().trackDay,!0),u()()}if(2&t){const e=y();c(5),D("",v(6,14,"uptime.window"),":"),c(2),ve("active",1===e.windowDays),c(),S(v(9,16,"uptime.window-now")),c(2),ve("active",7===e.windowDays),c(2),ve("active",30===e.windowDays),c(3),C("inline",!0),c(2),D(" ",v(18,18,"uptime.refresh")," "),c(2),k(e.loading&&0===e.days.length?19:-1),c(),k(e.error&&0===e.days.length?20:-1),c(),k(0!==e.days.length||e.loading||e.error?-1:21),c(),k(e.days.length>0?22:-1),c(),ge(e.days)}}const TM=["process","dmsg","skynet"];let WTe=(()=>{class t extends Lt{constructor(e,i){super(),this.api=e,this.cdr=i,this.days=[],this.loading=!0,this.error=null,this.fetchedAt=null,this.windowDays=7,this.summary=[]}ngOnInit(){return this.nodeSub=Me.currentNode.subscribe(e=>{const i=!this.node;this.node=e,i&&e&&this.startPolling()}),super.ngOnInit()}ngOnDestroy(){this.nodeSub?.unsubscribe(),this.pollSub?.unsubscribe()}setWindow(e){e!==this.windowDays&&(this.windowDays=e,this.refreshNow())}refreshNow(){this.node&&this.fetchOnce().subscribe()}startPolling(){this.pollSub=ds(6e4).pipe(zn(0),wt(()=>this.fetchOnce())).subscribe()}fetchOnce(){const e=new Date,o=`?since=${new Date(e.getTime()-86400*this.windowDays*1e3).toISOString()}&until=${e.toISOString()}`;return this.api.get(`visors/${this.node.localPk}/local-uptime-stats${o}`).pipe(ii(r=>(this.error=r?.message||"Failed to fetch uptime",this.loading=!1,this.cdr.markForCheck(),se(null))),wt(r=>(r&&this.consume(r),se(r))))}consume(e){const i=e.tiers||{},o=(new Date).toISOString().slice(0,10),r=new Date,s=Math.floor((60*r.getUTCHours()+r.getUTCMinutes())/5),a=new Set;for(const g of TM){const b=i[g];if(b)for(const w of Object.keys(b))a.add(w)}const l=Array.from(a).sort().reverse(),d=[],f={},m={};for(const g of l){const b=g===o,w=[];for(const M of TM){const E=i[M]&&i[M][g]||"",I=this.buildCells(E,b,s);let A=0,W=0;for(const q of I)"future"!==q.state&&(W++,"on"===q.state&&A++);w.push({name:M,cells:I,pct:W>0?A/W*100:0,empty:!E}),f[M]=(f[M]||0)+A,m[M]=(m[M]||0)+W}d.push({date:g,isToday:b,tiers:w})}this.days=d,this.summary=TM.map(g=>({name:g,pct:m[g]>0?f[g]/m[g]*100:0})),this.fetchedAt=e.fetched_at?new Date(e.fetched_at):new Date,this.loading=!1,this.error=null,this.cdr.markForCheck()}buildCells(e,i,o){let s=e||"";s.length<288&&(s=s.padEnd(288," ")),s.length>288&&(s=s.slice(0,288));const a=new Array(288);for(let l=0;l<288;l++){let d;d=i&&l>=o?"future":"."===s.charAt(l)?"on":"off",a[l]={state:d,slot:l}}return a}fmtSlot(e){const i=5*e;return`${Math.floor(i/60).toString().padStart(2,"0")}:${(i%60).toString().padStart(2,"0")}`}cellTooltip(e){const i=this.fmtSlot(e.slot),o=this.fmtSlot(Math.min(e.slot+1,288));let r;switch(e.state){case"on":r="online";break;case"off":r="offline";break;default:r="future"}return`${i}\u2013${o} UTC: ${r}`}fmtPct(e){return e>=99.95?"100%":e>0&&e<1?"<1%":e.toFixed(1)+"%"}pctClass(e,i=!1){return i?"dim":e>=99?"up-good":e>=80?"up-mid":"up-bad"}tierLabel(e){return"uptime.tier-"+e}tierInfo(e){return"uptime.tier-"+e+"-info"}trackDay(e,i){return i.date}trackTier(e,i){return i.name}trackCell(e,i){return i.slot}static{this.\u0275fac=function(i){return new(i||t)(O(fi),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-uptime"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow"],[1,"up-controls"],[1,"control-group"],[1,"control-label"],["mat-button","",3,"click"],["mat-stroked-button","",1,"refresh-btn",3,"click"],[3,"inline"],[1,"loading-row"],[1,"error-row"],[1,"up-empty"],[1,"summary-strip"],[1,"up-day-block"],[3,"diameter"],[1,"ml-2"],[1,"summary-label"],[1,"summary-tier"],[1,"last-updated","dim","small"],[1,"summary-tier-name"],[1,"summary-tier-pct","mono",3,"ngClass"],[1,"up-day-head"],[1,"up-day-date","mono"],[1,"up-day-today","dim","small"],[1,"up-tier-line"],[1,"up-tier-name","small",3,"matTooltip"],[1,"up-bar"],[1,"up-cell",3,"on","off","future","matTooltip"],[1,"up-pct","mono","small",3,"ngClass"],[1,"up-cell",3,"matTooltip"]],template:function(i,o){1&i&&x(0,$Te,25,20,"div",0),2&i&&k(o.node?0:-1)},dependencies:[Ft,Ht,Ae,Et,ci,vr,we],styles:[".up-controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] .control-label[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffa6}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{min-width:0;padding:0 12px!important;opacity:.6;color:#ffffffd9!important}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{opacity:1;background:#2196f32e!important;color:#fff!important}.up-controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%]{margin-left:auto;color:#ffffffd9!important}.up-controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:inherit}.loading-row[_ngcontent-%COMP%], .error-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:12px}.up-empty[_ngcontent-%COMP%]{padding:24px;text-align:center;color:#ffffff80;font-style:italic}.summary-strip[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:8px 12px;margin-bottom:12px;background:#ffffff0a;border-radius:4px}.summary-strip[_ngcontent-%COMP%] .summary-label[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffa6}.summary-strip[_ngcontent-%COMP%] .summary-tier[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:6px}.summary-strip[_ngcontent-%COMP%] .summary-tier[_ngcontent-%COMP%] .summary-tier-name[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffbf}.summary-strip[_ngcontent-%COMP%] .summary-tier[_ngcontent-%COMP%] .summary-tier-pct[_ngcontent-%COMP%]{font-size:.95em;font-weight:600}.summary-strip[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{margin-left:auto}.up-day-block[_ngcontent-%COMP%]{margin-bottom:12px;background:#ffffff08;border-radius:4px;padding:8px 12px}.up-day-head[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:12px;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:6px}.up-day-head[_ngcontent-%COMP%] .up-day-date[_ngcontent-%COMP%]{font-weight:600;color:#fff;font-size:.95em}.up-day-head[_ngcontent-%COMP%] .up-day-today[_ngcontent-%COMP%]{color:#2196f3d9;text-transform:uppercase;letter-spacing:.05em}.up-tier-line[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:2px 0}.up-tier-line[_ngcontent-%COMP%] .up-tier-name[_ngcontent-%COMP%]{flex:0 0 auto;width:80px;color:#ffffffb3;text-transform:capitalize;cursor:help}.up-tier-line[_ngcontent-%COMP%] .up-bar[_ngcontent-%COMP%]{flex:1;display:flex;height:12px;background:#00000040;border-radius:2px;overflow:hidden;min-width:0}.up-tier-line[_ngcontent-%COMP%] .up-cell[_ngcontent-%COMP%]{flex:1;min-width:1px;height:100%;border-right:1px solid rgba(0,0,0,.18)}.up-tier-line[_ngcontent-%COMP%] .up-cell.on[_ngcontent-%COMP%]{background:#4caf50}.up-tier-line[_ngcontent-%COMP%] .up-cell.off[_ngcontent-%COMP%]{background:#e5393566}.up-tier-line[_ngcontent-%COMP%] .up-cell.future[_ngcontent-%COMP%]{background:#ffffff0a;background-image:repeating-linear-gradient(45deg,transparent,transparent 2px,rgba(255,255,255,.06) 2px,rgba(255,255,255,.06) 4px)}.up-tier-line[_ngcontent-%COMP%] .up-cell[_ngcontent-%COMP%]:last-child{border-right:none}.up-tier-line[_ngcontent-%COMP%] .up-pct[_ngcontent-%COMP%]{flex:0 0 auto;width:56px;text-align:right}.mono[_ngcontent-%COMP%]{font-family:monospace}.small[_ngcontent-%COMP%]{font-size:.85em}.dim[_ngcontent-%COMP%]{color:#ffffff8c}.up-good[_ngcontent-%COMP%]{color:#4caf50}.up-mid[_ngcontent-%COMP%]{color:#ff9800}.up-bad[_ngcontent-%COMP%]{color:#e53935}.ml-2[_ngcontent-%COMP%]{margin-left:8px}.ml-1[_ngcontent-%COMP%]{margin-left:4px}.mt-3[_ngcontent-%COMP%]{margin-top:12px}"]})}}return t})();function GTe(t,n){1&t&&L(0,"iframe",6),2&t&&C("src",y(2).iframeUrl,nC)}function qTe(t,n){if(1&t){const e=re();h(0,"div",0)(1,"div",1)(2,"div",2)(3,"span",3),p(4),_(5,"translate"),u(),h(6,"button",4),F("click",function(){return V(e),H(y().openFullWindow())}),h(7,"mat-icon",5),p(8,"open_in_new"),u(),p(9),_(10,"translate"),u()(),x(11,GTe,1,1,"iframe",6),u()()}if(2&t){const e=y();c(4),S(v(5,4,"terminal.help")),c(3),C("inline",!0),c(2),D(" ",v(10,6,"terminal.open-fullscreen")," "),c(2),k(e.iframeUrl?11:-1)}}let KTe=(()=>{class t extends Lt{constructor(e){super(),this.sanitizer=e,this.iframeUrl=null,this.fullWindowUrl="",this.boundPk=""}ngOnInit(){return this.nodeSub=Me.currentNode.subscribe(e=>{if(this.node=e,e&&e.localPk&&e.localPk!==this.boundPk){const i="/pty/"+e.localPk;this.iframeUrl=this.sanitizer.bypassSecurityTrustResourceUrl(i),this.fullWindowUrl=window.location.origin+i,this.boundPk=e.localPk}}),super.ngOnInit()}ngOnDestroy(){this.nodeSub?.unsubscribe()}openFullWindow(){this.fullWindowUrl&&window.open(this.fullWindowUrl,"_blank","noopener noreferrer")}static{this.\u0275fac=function(i){return new(i||t)(O(K_))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-terminal"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[1,"rounded-elevated-box","mt-3","term-box"],[1,"box-internal-container","term-shell"],[1,"term-controls"],[1,"dim","small"],["mat-stroked-button","",1,"term-fullscreen",3,"click"],[3,"inline"],["allowfullscreen","",1,"term-frame",3,"src"]],template:function(i,o){1&i&&x(0,qTe,12,8,"div",0),2&i&&k(o.node?0:-1)},dependencies:[Ht,Ae,we],styles:[".term-box[_ngcontent-%COMP%]{display:flex;flex-direction:column}.term-shell[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;padding-bottom:4px}.term-controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;padding:4px 0}.term-controls[_ngcontent-%COMP%] .dim[_ngcontent-%COMP%]{color:#fff9}.term-controls[_ngcontent-%COMP%] .small[_ngcontent-%COMP%]{font-size:.85em}.term-controls[_ngcontent-%COMP%] .term-fullscreen[_ngcontent-%COMP%]{margin-left:auto;color:#ffffffd9!important}.term-controls[_ngcontent-%COMP%] .term-fullscreen[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:inherit}.term-frame[_ngcontent-%COMP%]{width:100%;height:70vh;min-height:420px;border:1px solid rgba(255,255,255,.08);border-radius:6px;background:#000}"]})}}return t})();function YTe(t,n){1&t&&(h(0,"div",4),L(1,"mat-spinner",14),h(2,"span",15),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"web-proxy.loading")))}function XTe(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2,".dmsg"),u(),h(3,"td"),p(4),u(),h(5,"td",16),p(6),u(),h(7,"td",16),p(8),u()()),2&t){const e=y(3);c(3),Ge(e.proxyStatus.dmsg_web.running?"wp-ok":"wp-off"),c(),D(" ",e.proxyStatus.dmsg_web.running?"Yes":"No"," "),c(2),S(e.proxyStatus.dmsg_web.socks_addr||"-"),c(2),S(e.proxyStatus.dmsg_web.upstream_socks||"direct")}}function ZTe(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2,".skynet"),u(),h(3,"td"),p(4),u(),h(5,"td",16),p(6),u(),h(7,"td",16),p(8),u()()),2&t){const e=y(3);c(3),Ge(e.proxyStatus.skynet_web.running?"wp-ok":"wp-off"),c(),D(" ",e.proxyStatus.skynet_web.running?"Yes":"No"," "),c(2),S(e.proxyStatus.skynet_web.socks_addr||"-"),c(2),S(e.proxyStatus.skynet_web.upstream_socks||"direct")}}function QTe(t,n){if(1&t&&(h(0,"table",5)(1,"tr")(2,"th"),p(3),_(4,"translate"),u(),h(5,"th"),p(6),_(7,"translate"),u(),h(8,"th"),p(9),_(10,"translate"),u(),h(11,"th"),p(12),_(13,"translate"),u()(),x(14,XTe,9,5,"tr"),x(15,ZTe,9,5,"tr"),u()),2&t){const e=y(2);c(3),S(v(4,6,"web-proxy.resolver")),c(3),S(v(7,8,"web-proxy.running")),c(3),S(v(10,10,"web-proxy.socks-addr")),c(3),S(v(13,12,"web-proxy.upstream")),c(2),k(e.proxyStatus.dmsg_web?14:-1),c(),k(e.proxyStatus.skynet_web?15:-1)}}function JTe(t,n){if(1&t){const e=re();h(0,"div",0)(1,"div",1)(2,"span",2),p(3),_(4,"translate"),u(),h(5,"p",3),p(6),_(7,"translate"),u(),x(8,YTe,5,4,"div",4),x(9,QTe,16,14,"table",5),h(10,"div",6)(11,"mat-checkbox",7),F("change",function(o){V(e);const r=y();return r.form.get("skynetEnabled").setValue(o.checked),H(r.toggleProxy())}),p(12),_(13,"translate"),u(),h(14,"form",8)(15,"mat-form-field",9)(16,"mat-label"),p(17),_(18,"translate"),u(),L(19,"input",10),u(),h(20,"button",11),F("click",function(){return V(e),H(y().setUpstream())}),p(21),_(22,"translate"),u()(),h(23,"button",12),F("click",function(){return V(e),H(y().refresh())}),h(24,"mat-icon",13),p(25,"refresh"),u(),p(26),_(27,"translate"),u()()()()}if(2&t){const e=y();c(3),S(v(4,14,"web-proxy.title")),c(3),S(v(7,16,"web-proxy.help")),c(2),k(e.loading&&!e.proxyStatus?8:-1),c(),k(e.proxyStatus&&(e.proxyStatus.dmsg_web||e.proxyStatus.skynet_web)?9:-1),c(2),C("checked",e.form.get("skynetEnabled").value)("disabled",e.loading),c(),D(" ",v(13,18,"web-proxy.enable")," "),c(2),C("formGroup",e.form),c(3),S(v(18,20,"web-proxy.upstream-label")),c(3),C("disabled",e.loading),c(),D(" ",v(22,22,"web-proxy.set")," "),c(2),C("disabled",e.loading),c(),C("inline",!0),c(2),D(" ",v(27,24,"web-proxy.refresh")," ")}}let e2e=(()=>{class t extends Lt{constructor(e,i,o){super(),this.nodeService=e,this.snackbar=i,this.cdr=o,this.loading=!1,this.proxyStatus=null,this.form=new ov({skynetEnabled:new Ia(!1),upstream:new Ia("")})}ngOnInit(){return this.nodeSub=Me.currentNode.subscribe(e=>{const i=!this.node;this.node=e,i&&e&&this.loadStatus()}),super.ngOnInit()}ngOnDestroy(){this.nodeSub?.unsubscribe()}loadStatus(){this.node&&(this.loading=!0,this.nodeService.getProxies(this.node.localPk).subscribe(e=>{this.proxyStatus=e,this.loading=!1;const i=e?.skynet_web?.running||!1,o=e?.skynet_web?.upstream_socks||"";this.form.get("skynetEnabled").setValue(i),this.form.get("upstream").setValue(o),this.cdr.markForCheck()},()=>{this.loading=!1,this.cdr.markForCheck()}))}toggleProxy(){if(!this.node)return;const e=this.form.get("skynetEnabled").value;this.loading=!0,this.nodeService.setProxyEnabled(this.node.localPk,"skynet",e).subscribe(()=>{this.nodeService.setProxyEnabled(this.node.localPk,"dmsg",e).subscribe(()=>{this.loading=!1,this.snackbar.showDone(e?"Resolving proxy enabled":"Resolving proxy disabled"),this.loadStatus()},()=>{this.loading=!1})},()=>{this.loading=!1,this.snackbar.showError("Failed to toggle proxy")})}setUpstream(){if(!this.node)return;const e=(this.form.get("upstream").value||"").trim();this.loading=!0,this.nodeService.setProxyUpstream(this.node.localPk,"skynet",e).subscribe(()=>{this.loading=!1,this.snackbar.showDone(e?`Upstream set to ${e}`:"Upstream cleared"),this.loadStatus()},()=>{this.loading=!1,this.snackbar.showError("Failed to set upstream")})}refresh(){this.loadStatus()}static{this.\u0275fac=function(i){return new(i||t)(O(Yi),O(ot),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-web-proxy"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow"],[1,"section-title"],[1,"dim","small","wp-help"],[1,"loading-row"],[1,"responsive-table-translucid","wp-status"],[1,"wp-controls"],[3,"change","checked","disabled"],[1,"wp-upstream",3,"formGroup"],["appearance","outline",1,"wp-upstream-field"],["matInput","","formControlName","upstream","placeholder","127.0.0.1:1080"],["mat-raised-button","","color","primary",3,"click","disabled"],["mat-stroked-button","",1,"wp-refresh",3,"click","disabled"],[3,"inline"],[3,"diameter"],[1,"ml-2"],[1,"mono","small"]],template:function(i,o){1&i&&x(0,JTe,28,26,"div",0),2&i&&k(o.node?0:-1)},dependencies:[kn,Qt,Jt,xn,sn,_n,dn,ns,On,Ht,Ae,ci,Fo,we],styles:[".dim[_ngcontent-%COMP%]{color:#fff9}.small[_ngcontent-%COMP%]{font-size:.85em}.mono[_ngcontent-%COMP%]{font-family:monospace;word-break:break-all}.wp-help[_ngcontent-%COMP%]{margin:4px 0 12px}.loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:12px 0}.wp-status[_ngcontent-%COMP%]{margin-bottom:16px}.wp-status[_ngcontent-%COMP%] td.mono[_ngcontent-%COMP%]{font-size:11px}.wp-status[_ngcontent-%COMP%] .wp-ok[_ngcontent-%COMP%]{color:#4caf50}.wp-status[_ngcontent-%COMP%] .wp-off[_ngcontent-%COMP%]{color:#fff9}.wp-controls[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;align-items:flex-start}.wp-controls[_ngcontent-%COMP%] .wp-upstream[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.wp-controls[_ngcontent-%COMP%] .wp-upstream-field[_ngcontent-%COMP%]{flex:1 1 320px;min-width:220px}.wp-controls[_ngcontent-%COMP%] .wp-refresh[_ngcontent-%COMP%]{color:#ffffffd9!important}.wp-controls[_ngcontent-%COMP%] .wp-refresh[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:inherit}"]})}}return t})();const t2e=["content"],n2e=t=>({count:t}),i2e=t=>({number:t}),o2e=(t,n)=>n.level,r2e=(t,n)=>n.name;function s2e(t,n){if(1&t){const e=re();h(0,"button",16),F("click",function(){const o=V(e).$implicit;return H(y(2).setLevel(o.level))}),p(1),u()}if(2&t){const e=n.$implicit;ve("active",y(2).minLevel===e.level),c(),D(" ",e.label," ")}}function a2e(t,n){if(1&t&&(h(0,"div",11)(1,"mat-icon",9),p(2,"history"),u(),p(3),_(4,"translate"),u()),2&t){const e=y(2);c(),C("inline",!0),c(2),D(" ",ue(4,2,"logs.dropped",ie(5,n2e,e.totalDropped))," ")}}function l2e(t,n){1&t&&(h(0,"div",12),L(1,"mat-spinner",17),h(2,"span",18),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"logs.loading")))}function c2e(t,n){1&t&&(h(0,"div",13),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"logs.empty")))}function d2e(t,n){if(1&t&&(h(0,"div",15)(1,"a",19),p(2),_(3,"translate"),u()()),2&t){const e=y(2);c(),C("href",e.fullLogsUrl(),$i),c(),D(" ",ue(3,2,"logs.view-rest",ie(5,i2e,e.totalLogs))," ")}}function u2e(t,n){if(1&t&&(h(0,"span",22),p(1),u()),2&t){const e=y().$implicit;c(),D("[",e.func,"]")}}function h2e(t,n){if(1&t&&(h(0,"span",24),p(1),u()),2&t){const e=n.$implicit;c(),nt(" ",e.name,"=",e.value)}}function f2e(t,n){if(1&t&&(h(0,"div",15)(1,"span",20),p(2),u(),h(3,"span",21),p(4),u(),x(5,u2e,2,1,"span",22),h(6,"span",23),p(7),u(),me(8,h2e,2,2,"span",24,r2e),u()),2&t){const e=n.$implicit,i=y(2);c(2),S(e.time),c(),Ge(i.levelClass(e.level)),c(),S(i.levelName(e.level)),c(),k(e.func?5:-1),c(2),S(e.msg),c(),ge(e.extra)}}function p2e(t,n){if(1&t){const e=re();h(0,"div",1)(1,"div",2)(2,"div",3)(3,"div",4)(4,"span",5),p(5),_(6,"translate"),u(),me(7,s2e,2,3,"button",6,o2e),u(),h(9,"div",7)(10,"button",8),F("click",function(){return V(e),H(y().toggleLiveTail())}),h(11,"mat-icon",9),p(12),u(),p(13),_(14,"translate"),_(15,"translate"),u(),h(16,"a",10)(17,"mat-icon",9),p(18,"open_in_new"),u(),p(19),_(20,"translate"),u()()(),x(21,a2e,5,7,"div",11),x(22,l2e,5,4,"div",12),x(23,c2e,3,3,"div",13),h(24,"div",14,0),x(26,d2e,4,7,"div",15),me(27,f2e,10,6,"div",15,wi().trackEntry,!0),u()()()}if(2&t){const e=y();c(5),D("",v(6,13,"logs.filter"),":"),c(2),ge(e.levels),c(3),ve("active",e.liveTail),c(),C("inline",!0),c(),S(e.liveTail?"pause":"play_arrow"),c(),D(" ",e.liveTail?v(14,15,"logs.pause"):v(15,17,"logs.resume")," "),c(3),C("href",e.fullLogsUrl(),$i),c(),C("inline",!0),c(2),D(" ",v(20,19,"logs.open-raw")," "),c(2),k(e.totalDropped>0?21:-1),c(),k(e.loading&&0===e.logEntries.length?22:-1),c(),k(0!==e.filteredLogEntries.length||e.loading?-1:23),c(3),k(e.hasMoreLogMessages?26:-1),c(),ge(e.filteredLogEntries)}}var Bt=function(t){return t[t.Panic=8]="Panic",t[t.Fatal=7]="Fatal",t[t.Error=6]="Error",t[t.Warn=5]="Warn",t[t.Info=4]="Info",t[t.Debug=3]="Debug",t[t.Trace=2]="Trace",t[t.Unknown=1]="Unknown",t}(Bt||{});let m2e=(()=>{class t extends Lt{constructor(e,i,o,r){super(),this.nodeService=e,this.snackbar=i,this.ngZone=o,this.cdr=r,this.loading=!0,this.liveTail=!0,this.livePollMs=2e3,this.totalDropped=0,this.totalLogs=0,this.hasMoreLogMessages=!1,this.minLevel=Bt.Unknown,this.levels=[{level:Bt.Unknown,label:"All",cls:""},{level:Bt.Debug,label:"Debug+",cls:""},{level:Bt.Info,label:"Info+",cls:""},{level:Bt.Warn,label:"Warn+",cls:""},{level:Bt.Error,label:"Error+",cls:""},{level:Bt.Fatal,label:"Fatal+",cls:""},{level:Bt.Panic,label:"Panic",cls:""}],this.logEntries=[],this.filteredLogEntries=[],this.maxBufferEntries=1e3,this.logCursor=0,this.wasAtBottom=!0,this.shouldShowError=!0}ngOnInit(){return this.nodeSub=Me.currentNode.subscribe(e=>{const i=!this.node;this.node=e,i&&e&&this.loadData(0)}),super.ngOnInit()}ngOnDestroy(){this.nodeSub?.unsubscribe(),this.subscription?.unsubscribe()}setLevel(e){this.minLevel=e,this.applyFilter()}toggleLiveTail(){this.liveTail=!this.liveTail,this.liveTail?this.loadData(0):this.subscription?.unsubscribe()}fullLogsUrl(){if(!this.node)return"";return window.location.origin+"/api/visors/"+this.node.localPk+"/runtime-logs"}loadData(e){if(!this.node)return;this.subscription?.unsubscribe(),this.captureScrollTailState(),this.loading=0===this.logEntries.length;const i=this.logCursor;this.subscription=se(1).pipe(oi(e),Tt(()=>this.nodeService.getRuntimeLogsSince(this.node.localPk,i))).subscribe(o=>this.onDelta(o),o=>this.onError(o))}onDelta(e){if(!e)return this.loading=!1,void this.scheduleNext();const i=0===this.logCursor;this.logCursor="number"==typeof e.latest?e.latest:this.logCursor,"number"==typeof e.dropped&&e.dropped>0&&(this.totalDropped+=e.dropped);const o=Array.isArray(e.entries)?e.entries:[],r=[];for(const s of o)try{r.push(JSON.parse(s))}catch{}i&&(this.logEntries=[]),this.appendParsed(r),this.logEntries.length>this.maxBufferEntries&&(this.logEntries=this.logEntries.slice(this.logEntries.length-this.maxBufferEntries),this.hasMoreLogMessages=!0),this.totalLogs=this.logCursor,this.loading=!1,this.shouldShowError=!0,this.applyFilter(),this.cdr.markForCheck(),this.scheduleNext()}appendParsed(e){for(const i of e){const o={time:i.time,level:this.parseLevel(i.level),msg:i.msg,func:i.func,module:i._module,extra:[]};i.error&&o.extra.push({name:"error",value:i.error});const r=new Set(["time","_module","msg","func","level","log_line","error"]);for(const s in i)r.has(s)||o.extra.push({name:s,value:i[s]});this.logEntries.push(o)}}parseLevel(e){const i=(e||"").toLowerCase();return i.includes("panic")?Bt.Panic:i.includes("fatal")?Bt.Fatal:i.includes("error")?Bt.Error:i.includes("warn")?Bt.Warn:i.includes("info")?Bt.Info:i.includes("debug")?Bt.Debug:i.includes("trace")?Bt.Trace:Bt.Unknown}applyFilter(){this.filteredLogEntries=this.logEntries.filter(e=>e.level>=this.minLevel),this.wasAtBottom&&setTimeout(()=>{if(this.content){const e=this.content.nativeElement;e.scrollTop=e.scrollHeight}})}captureScrollTailState(){if(!this.content)return void(this.wasAtBottom=!0);const e=this.content.nativeElement;this.wasAtBottom=e.scrollHeight-e.scrollTop-e.clientHeight<40}scheduleNext(){this.liveTail&&this.ngZone.run(()=>this.loadData(this.livePollMs))}onError(e){e=Ze(e),this.shouldShowError&&(this.snackbar.showError("common.loading-error",null,!0,e),this.shouldShowError=!1),this.loadData(at.connectionRetryDelay)}levelClass(e){switch(e){case Bt.Panic:case Bt.Fatal:return"lvl-fatal";case Bt.Error:return"lvl-error";case Bt.Warn:return"lvl-warn";case Bt.Info:return"lvl-info";case Bt.Debug:return"lvl-debug";case Bt.Trace:return"lvl-trace";default:return"lvl-unknown"}}levelName(e){switch(e){case Bt.Panic:return"PANIC";case Bt.Fatal:return"FATAL";case Bt.Error:return"ERROR";case Bt.Warn:return"WARN";case Bt.Info:return"INFO";case Bt.Debug:return"DEBUG";case Bt.Trace:return"TRACE";default:return"LOG"}}trackEntry(e,i){return i}static{this.\u0275fac=function(i){return new(i||t)(O(Yi),O(ot),O(Ce),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-logs"]],viewQuery:function(i,o){if(1&i&&st(t2e,5),2&i){let r;fe(r=pe())&&(o.content=r.first)}},standalone:!1,features:[_e],decls:1,vars:1,consts:[["content",""],[1,"rounded-elevated-box","mt-3","logs-box"],[1,"box-internal-container","logs-shell"],[1,"logs-controls"],[1,"logs-filter-row"],[1,"control-label","dim"],["mat-button","",3,"active"],[1,"logs-action-row"],["mat-button","",1,"logs-tail",3,"click"],[3,"inline"],["target","_blank","rel","noreferrer",1,"logs-raw-link",3,"href"],[1,"logs-dropped-banner"],[1,"loading-row"],[1,"logs-empty"],[1,"logs-list"],[1,"log-entry"],["mat-button","",3,"click"],[3,"diameter"],[1,"ml-2"],["target","_blank",1,"logs-raw-link",3,"href"],[1,"le-time","dim"],[1,"le-level"],[1,"le-func","dim"],[1,"le-msg"],[1,"le-extra","dim"]],template:function(i,o){1&i&&x(0,p2e,29,21,"div",1),2&i&&k(o.node?0:-1)},dependencies:[Ht,Ae,ci,we],styles:[".dim[_ngcontent-%COMP%]{color:#fff9}.logs-box[_ngcontent-%COMP%]{display:flex;flex-direction:column}.logs-shell[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.logs-controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding-bottom:4px;border-bottom:1px solid rgba(255,255,255,.06)}.logs-filter-row[_ngcontent-%COMP%], .logs-action-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.logs-action-row[_ngcontent-%COMP%]{margin-left:auto;gap:8px}.logs-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{min-width:0;padding:0 10px!important;opacity:.65;color:#ffffffd9!important}.logs-controls[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{opacity:1;background:#2196f32e!important;color:#fff!important}.control-label[_ngcontent-%COMP%]{margin-right:4px;font-size:.85em}.logs-raw-link[_ngcontent-%COMP%]{color:#ffffffd9;text-decoration:none;display:inline-flex;align-items:center;gap:4px;font-size:.9em}.logs-raw-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.logs-raw-link[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{font-size:16px}.logs-dropped-banner[_ngcontent-%COMP%]{background:#e539351f;border:1px solid rgba(229,57,53,.35);color:#ffc8c8f2;padding:6px 10px;border-radius:4px;font-size:.85em;display:flex;align-items:center;gap:6px}.loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:16px 0}.logs-empty[_ngcontent-%COMP%]{padding:24px 0;text-align:center;color:#ffffff80}.logs-list[_ngcontent-%COMP%]{background:#00000040;border:1px solid rgba(255,255,255,.06);border-radius:6px;font-family:Consolas,Monaco,Courier New,monospace;font-size:.78em;height:65vh;min-height:400px;overflow-y:auto;padding:8px 12px}.log-entry[_ngcontent-%COMP%]{white-space:pre-wrap;word-break:break-word;padding:1px 0;line-height:1.4}.log-entry[_ngcontent-%COMP%] .le-time[_ngcontent-%COMP%]{margin-right:6px}.log-entry[_ngcontent-%COMP%] .le-level[_ngcontent-%COMP%]{display:inline-block;min-width:50px;margin-right:6px;font-weight:600}.log-entry[_ngcontent-%COMP%] .le-func[_ngcontent-%COMP%]{margin-right:6px}.log-entry[_ngcontent-%COMP%] .le-msg[_ngcontent-%COMP%]{color:#ffffffeb}.log-entry[_ngcontent-%COMP%] .le-extra[_ngcontent-%COMP%]{font-size:.92em}.lvl-fatal[_ngcontent-%COMP%]{color:#ff6b6b}.lvl-error[_ngcontent-%COMP%]{color:#f44336}.lvl-warn[_ngcontent-%COMP%]{color:#ff9800}.lvl-info[_ngcontent-%COMP%]{color:#4caf50}.lvl-debug[_ngcontent-%COMP%]{color:#03a9f4}.lvl-trace[_ngcontent-%COMP%]{color:#ffffff8c}.lvl-unknown[_ngcontent-%COMP%]{color:#ffffffb3}"]})}}return t})(),hH=(()=>{class t{constructor(e){this.apiService=e}create(e,i,o){const r={remote_pk:i};return o&&(r.transport_type=o),this.apiService.post(`visors/${e}/transports`,r)}delete(e,i){return this.apiService.delete(`visors/${e}/transports/${i}`)}savePersistentTransportsData(e,i){return this.apiService.put(`visors/${e}/persistent-transports`,i)}getPersistentTransports(e){return this.apiService.get(`visors/${e}/persistent-transports`)}types(e){return this.apiService.get(`visors/${e}/transport-types`)}changeAutoconnectSetting(e,i){const o={};return o.public_autoconnect=i,this.apiService.put(`visors/${e}/public-autoconnect`,o)}static{this.\u0275fac=function(i){return new(i||t)(ce(fi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const g2e=["switch"],_2e=["*"];function b2e(t,n){1&t&&(h(0,"span",11),ul(),h(1,"svg",13),L(2,"path",14),u(),h(3,"svg",15),L(4,"path",16),u()())}const v2e=new Z("mat-slide-toggle-default-options",{providedIn:"root",factory:()=>({disableToggleValue:!1,hideIcon:!1,disabledInteractive:!1})});class fH{source;checked;constructor(n,e){this.source=n,this.checked=e}}let pH=(()=>{class t{_elementRef=T(Ne);_focusMonitor=T(ac);_changeDetectorRef=T(Dt);defaults=T(v2e);_onChange=e=>{};_onTouched=()=>{};_validatorOnChange=()=>{};_uniqueId;_checked=!1;_createChangeEvent(e){return new fH(this,e)}_labelId;get buttonId(){return`${this.id||this._uniqueId}-button`}_switchElement;focus(){this._switchElement.nativeElement.focus()}_noopAnimations=hi();_focused=!1;name=null;id;labelPosition="after";ariaLabel=null;ariaLabelledby=null;ariaDescribedby;required=!1;color;disabled=!1;disableRipple=!1;tabIndex=0;get checked(){return this._checked}set checked(e){this._checked=e,this._changeDetectorRef.markForCheck()}hideIcon;disabledInteractive;change=new ke;toggleChange=new ke;get inputId(){return`${this.id||this._uniqueId}-input`}constructor(){T(qo).load(cu);const e=T(new tf("tabindex"),{optional:!0}),i=this.defaults;this.tabIndex=null==e?0:parseInt(e)||0,this.color=i.color||"accent",this.id=this._uniqueId=T(si).getId("mat-mdc-slide-toggle-"),this.hideIcon=i.hideIcon??!1,this.disabledInteractive=i.disabledInteractive??!1,this._labelId=this._uniqueId+"-label"}ngAfterContentInit(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{"keyboard"===e||"program"===e?(this._focused=!0,this._changeDetectorRef.markForCheck()):e||Promise.resolve().then(()=>{this._focused=!1,this._onTouched(),this._changeDetectorRef.markForCheck()})})}ngOnChanges(e){e.required&&this._validatorOnChange()}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}writeValue(e){this.checked=!!e}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}validate(e){return this.required&&!0!==e.value?{required:!0}:null}registerOnValidatorChange(e){this._validatorOnChange=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck()}toggle(){this.checked=!this.checked,this._onChange(this.checked)}_emitChangeEvent(){this._onChange(this.checked),this.change.emit(this._createChangeEvent(this.checked))}_handleClick(){this.disabled||(this.toggleChange.emit(),this.defaults.disableToggleValue||(this.checked=!this.checked,this._onChange(this.checked),this.change.emit(new fH(this,this.checked))))}_getAriaLabelledBy(){return this.ariaLabelledby?this.ariaLabelledby:this.ariaLabel?null:this._labelId}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=ae({type:t,selectors:[["mat-slide-toggle"]],viewQuery:function(i,o){if(1&i&&st(g2e,5),2&i){let r;fe(r=pe())&&(o._switchElement=r.first)}},hostAttrs:[1,"mat-mdc-slide-toggle"],hostVars:13,hostBindings:function(i,o){2&i&&(gr("id",o.id),We("tabindex",null)("aria-label",null)("name",null)("aria-labelledby",null),Ge(o.color?"mat-"+o.color:""),ve("mat-mdc-slide-toggle-focused",o._focused)("mat-mdc-slide-toggle-checked",o.checked)("_mat-animation-noopable",o._noopAnimations))},inputs:{name:"name",id:"id",labelPosition:"labelPosition",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],required:[2,"required","required",Te],color:"color",disabled:[2,"disabled","disabled",Te],disableRipple:[2,"disableRipple","disableRipple",Te],tabIndex:[2,"tabIndex","tabIndex",e=>null==e?0:_r(e)],checked:[2,"checked","checked",Te],hideIcon:[2,"hideIcon","hideIcon",Te],disabledInteractive:[2,"disabledInteractive","disabledInteractive",Te]},outputs:{change:"change",toggleChange:"toggleChange"},exportAs:["matSlideToggle"],features:[dt([{provide:Qo,useExisting:jt(()=>t),multi:!0},{provide:ki,useExisting:t,multi:!0}]),vi],ngContentSelectors:_2e,decls:14,vars:27,consts:[["switch",""],["mat-internal-form-field","",3,"labelPosition"],["role","switch","type","button",1,"mdc-switch",3,"click","tabIndex","disabled"],[1,"mat-mdc-slide-toggle-touch-target"],[1,"mdc-switch__track"],[1,"mdc-switch__handle-track"],[1,"mdc-switch__handle"],[1,"mdc-switch__shadow"],[1,"mdc-elevation-overlay"],[1,"mdc-switch__ripple"],["mat-ripple","",1,"mat-mdc-slide-toggle-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-switch__icons"],[1,"mdc-label",3,"click","for"],["viewBox","0 0 24 24","aria-hidden","true",1,"mdc-switch__icon","mdc-switch__icon--on"],["d","M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z"],["viewBox","0 0 24 24","aria-hidden","true",1,"mdc-switch__icon","mdc-switch__icon--off"],["d","M20 13H4v-2h16v2z"]],template:function(i,o){if(1&i&&(xi(),h(0,"div",1)(1,"button",2,0),F("click",function(){return o._handleClick()}),L(3,"div",3)(4,"span",4),h(5,"span",5)(6,"span",6)(7,"span",7),L(8,"span",8),u(),h(9,"span",9),L(10,"span",10),u(),x(11,b2e,5,0,"span",11),u()()(),h(12,"label",12),F("click",function(s){return s.stopPropagation()}),Rt(13),u()()),2&i){const r=Un(2);C("labelPosition",o.labelPosition),c(),ve("mdc-switch--selected",o.checked)("mdc-switch--unselected",!o.checked)("mdc-switch--checked",o.checked)("mdc-switch--disabled",o.disabled)("mat-mdc-slide-toggle-disabled-interactive",o.disabledInteractive),C("tabIndex",o.disabled&&!o.disabledInteractive?-1:o.tabIndex)("disabled",o.disabled&&!o.disabledInteractive),We("id",o.buttonId)("name",o.name)("aria-label",o.ariaLabel)("aria-labelledby",o._getAriaLabelledBy())("aria-describedby",o.ariaDescribedby)("aria-required",o.required||null)("aria-checked",o.checked)("aria-disabled",o.disabled&&o.disabledInteractive?"true":null),c(9),C("matRippleTrigger",r)("matRippleDisabled",o.disableRipple||o.disabled)("matRippleCentered",!0),c(),k(o.hideIcon?-1:11),c(),C("for",o.buttonId),We("id",o._labelId)}},dependencies:[lu,aV],styles:['.mdc-switch{align-items:center;background:none;border:none;cursor:pointer;display:inline-flex;flex-shrink:0;margin:0;outline:none;overflow:visible;padding:0;position:relative;width:var(--mat-slide-toggle-track-width, 52px)}.mdc-switch.mdc-switch--disabled{cursor:default;pointer-events:none}.mdc-switch.mat-mdc-slide-toggle-disabled-interactive{pointer-events:auto}.mdc-switch__track{overflow:hidden;position:relative;width:100%;height:var(--mat-slide-toggle-track-height, 32px);border-radius:var(--mat-slide-toggle-track-shape, var(--mat-sys-corner-full))}.mdc-switch--disabled.mdc-switch .mdc-switch__track{opacity:var(--mat-slide-toggle-disabled-track-opacity, 0.12)}.mdc-switch__track::before,.mdc-switch__track::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";height:100%;left:0;position:absolute;width:100%;border-width:var(--mat-slide-toggle-track-outline-width, 2px);border-color:var(--mat-slide-toggle-track-outline-color, var(--mat-sys-outline))}.mdc-switch--selected .mdc-switch__track::before,.mdc-switch--selected .mdc-switch__track::after{border-width:var(--mat-slide-toggle-selected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-selected-track-outline-color, transparent)}.mdc-switch--disabled .mdc-switch__track::before,.mdc-switch--disabled .mdc-switch__track::after{border-width:var(--mat-slide-toggle-disabled-unselected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-disabled-unselected-track-outline-color, var(--mat-sys-on-surface))}@media(forced-colors: active){.mdc-switch__track{border-color:currentColor}}.mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0);background:var(--mat-slide-toggle-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch--selected .mdc-switch__track::before{transform:translateX(-100%)}.mdc-switch--selected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-hover-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-focus-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:active .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-pressed-track-color, var(--mat-sys-surface-variant))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::before,.mdc-switch.mdc-switch--disabled .mdc-switch__track::before{background:var(--mat-slide-toggle-disabled-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch__track::after{transform:translateX(-100%);background:var(--mat-slide-toggle-selected-track-color, var(--mat-sys-primary))}[dir=rtl] .mdc-switch__track::after{transform:translateX(100%)}.mdc-switch--selected .mdc-switch__track::after{transform:translateX(0)}.mdc-switch--selected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-hover-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-focus-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:active .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-pressed-track-color, var(--mat-sys-primary))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::after,.mdc-switch.mdc-switch--disabled .mdc-switch__track::after{background:var(--mat-slide-toggle-disabled-selected-track-color, var(--mat-sys-on-surface))}.mdc-switch__handle-track{height:100%;pointer-events:none;position:absolute;top:0;transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);left:0;right:auto;transform:translateX(0);width:calc(100% - var(--mat-slide-toggle-handle-width))}[dir=rtl] .mdc-switch__handle-track{left:auto;right:0}.mdc-switch--selected .mdc-switch__handle-track{transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__handle-track{transform:translateX(-100%)}.mdc-switch__handle{display:flex;pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);left:0;right:auto;transition:width 75ms cubic-bezier(0.4, 0, 0.2, 1),height 75ms cubic-bezier(0.4, 0, 0.2, 1),margin 75ms cubic-bezier(0.4, 0, 0.2, 1);width:var(--mat-slide-toggle-handle-width);height:var(--mat-slide-toggle-handle-height);border-radius:var(--mat-slide-toggle-handle-shape, var(--mat-sys-corner-full))}[dir=rtl] .mdc-switch__handle{left:auto;right:0}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle{width:var(--mat-slide-toggle-unselected-handle-size, 16px);height:var(--mat-slide-toggle-unselected-handle-size, 16px);margin:var(--mat-slide-toggle-unselected-handle-horizontal-margin, 0 8px)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-unselected-with-icon-handle-horizontal-margin, 0 4px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle{width:var(--mat-slide-toggle-selected-handle-size, 24px);height:var(--mat-slide-toggle-selected-handle-size, 24px);margin:var(--mat-slide-toggle-selected-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-selected-with-icon-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch__handle:has(.mdc-switch__icons){width:var(--mat-slide-toggle-with-icon-handle-size, 24px);height:var(--mat-slide-toggle-with-icon-handle-size, 24px)}.mat-mdc-slide-toggle .mdc-switch:active:not(.mdc-switch--disabled) .mdc-switch__handle{width:var(--mat-slide-toggle-pressed-handle-size, 28px);height:var(--mat-slide-toggle-pressed-handle-size, 28px)}.mat-mdc-slide-toggle .mdc-switch--selected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-selected-pressed-handle-horizontal-margin, 0 22px)}.mat-mdc-slide-toggle .mdc-switch--unselected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-unselected-pressed-handle-horizontal-margin, 0 2px)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-selected-handle-opacity, 1)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-unselected-handle-opacity, 0.38)}.mdc-switch__handle::before,.mdc-switch__handle::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";width:100%;height:100%;left:0;position:absolute;top:0;transition:background-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1),border-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);z-index:-1}@media(forced-colors: active){.mdc-switch__handle::before,.mdc-switch__handle::after{border-color:currentColor}}.mdc-switch--selected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-handle-color, var(--mat-sys-on-primary))}.mdc-switch--selected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-hover-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-focus-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-pressed-handle-color, var(--mat-sys-primary-container))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:hover:not(:focus):not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:focus:not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:active .mdc-switch__handle::after,.mdc-switch--selected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-selected-handle-color, var(--mat-sys-surface))}.mdc-switch--unselected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-handle-color, var(--mat-sys-outline))}.mdc-switch--unselected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-hover-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-focus-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-pressed-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-unselected-handle-color, var(--mat-sys-on-surface))}.mdc-switch__handle::before{background:var(--mat-slide-toggle-handle-surface-color)}.mdc-switch__shadow{border-radius:inherit;bottom:0;left:0;position:absolute;right:0;top:0}.mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-handle-elevation-shadow)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__shadow,.mdc-switch.mdc-switch--disabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-disabled-handle-elevation-shadow)}.mdc-switch__ripple{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);z-index:-1;width:var(--mat-slide-toggle-state-layer-size, 40px);height:var(--mat-slide-toggle-state-layer-size, 40px)}.mdc-switch__ripple::after{content:"";opacity:0}.mdc-switch--disabled .mdc-switch__ripple::after{display:none}.mat-mdc-slide-toggle-disabled-interactive .mdc-switch__ripple::after{display:block}.mdc-switch:hover .mdc-switch__ripple::after{transition:75ms opacity cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:focus .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:active .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:hover:not(:focus) .mdc-switch__ripple::after,.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-hover-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-focus-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--unselected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-pressed-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-hover-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--selected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-focus-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--selected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-pressed-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch__icons{position:relative;height:100%;width:100%;z-index:1;transform:translateZ(0)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-unselected-icon-opacity, 0.38)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-selected-icon-opacity, 0.38)}.mdc-switch__icon{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;opacity:0;transition:opacity 30ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-switch--unselected .mdc-switch__icon{width:var(--mat-slide-toggle-unselected-icon-size, 16px);height:var(--mat-slide-toggle-unselected-icon-size, 16px);fill:var(--mat-slide-toggle-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__icon{width:var(--mat-slide-toggle-selected-icon-size, 16px);height:var(--mat-slide-toggle-selected-icon-size, 16px);fill:var(--mat-slide-toggle-selected-icon-color, var(--mat-sys-on-primary-container))}.mdc-switch--selected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-selected-icon-color, var(--mat-sys-on-surface))}.mdc-switch--selected .mdc-switch__icon--on,.mdc-switch--unselected .mdc-switch__icon--off{opacity:1;transition:opacity 45ms 30ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle{-webkit-user-select:none;user-select:none;display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple,.mat-mdc-slide-toggle .mdc-switch__ripple::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple:not(:empty),.mat-mdc-slide-toggle .mdc-switch__ripple::after:not(:empty){transform:translateZ(0)}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mat-focus-indicator::before{content:""}.mat-mdc-slide-toggle .mat-internal-form-field{color:var(--mat-slide-toggle-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-slide-toggle-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-slide-toggle-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-slide-toggle-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-slide-toggle-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-slide-toggle-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-slide-toggle .mat-ripple-element{opacity:.12}.mat-mdc-slide-toggle .mat-focus-indicator::before{border-radius:50%}.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle-track,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__icon,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::after,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::after{transition:none}.mat-mdc-slide-toggle .mdc-switch:enabled+.mdc-label{cursor:pointer}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:var(--mat-slide-toggle-disabled-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-slide-toggle label:empty{display:none}.mat-mdc-slide-toggle-touch-target{position:absolute;top:50%;left:50%;height:var(--mat-slide-toggle-touch-target-size, 48px);width:100%;transform:translate(-50%, -50%);display:var(--mat-slide-toggle-touch-target-display, block)}[dir=rtl] .mat-mdc-slide-toggle-touch-target{left:auto;right:50%;transform:translate(50%, -50%)}\n'],encapsulation:2,changeDetection:0})}return t})(),y2e=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[pH,ai]})}return t})();function C2e(t,n){1&t&&(p(0),_(1,"translate"),h(2,"mat-icon",5),_(3,"translate"),p(4,"help"),u()),2&t&&(D(" ",v(1,3,"common.yes")," "),c(2),C("inline",!0)("matTooltip",v(3,5,"transports.persistent-transport-tooltip")))}function w2e(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"common.no")," ")}function x2e(t,n){1&t&&(p(0),_(1,"number")),2&t&&D(" ",ue(1,1,y().data.latencyMs,"1.0-0")," ms ")}function k2e(t,n){1&t&&p(0," - ")}let S2e=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.largeModalWidth,e.open(t,o)}constructor(e,i){this.data=e,this.dialogRef=i}static{this.\u0275fac=function(i){return new(i||t)(O(In),O(Zt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-transport-details"]],standalone:!1,decls:57,vars:50,consts:[[1,"info-dialog",3,"headline","dialog"],[1,"title","mt-0"],[3,"inline"],[1,"item"],[1,"title"],[1,"help-icon","d-none","d-md-inline",3,"inline","matTooltip"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),_(1,"translate"),h(2,"div")(3,"div",1)(4,"mat-icon",2),p(5,"list"),u(),p(6),_(7,"translate"),u(),h(8,"div",3)(9,"span"),p(10),_(11,"translate"),u(),x(12,C2e,5,7),x(13,w2e,2,3),u(),h(14,"div",3)(15,"span"),p(16),_(17,"translate"),u(),p(18),u(),h(19,"div",3)(20,"span"),p(21),_(22,"translate"),u(),p(23),u(),h(24,"div",3)(25,"span"),p(26),_(27,"translate"),u(),p(28),u(),h(29,"div",3)(30,"span"),p(31),_(32,"translate"),u(),p(33),u(),h(34,"div",4)(35,"mat-icon",2),p(36,"import_export"),u(),p(37),_(38,"translate"),u(),h(39,"div",3)(40,"span"),p(41),_(42,"translate"),u(),p(43),_(44,"autoScale"),u(),h(45,"div",3)(46,"span"),p(47),_(48,"translate"),u(),p(49),_(50,"autoScale"),u(),h(51,"div",3)(52,"span"),p(53),_(54,"translate"),u(),x(55,x2e,2,4),x(56,k2e,1,0),u()()()),2&i&&(C("headline",v(1,24,"transports.details.title"))("dialog",o.dialogRef),c(4),C("inline",!0),c(2),D("",v(7,26,"transports.details.basic.title")," "),c(4),S(v(11,28,"transports.details.basic.persistent")),c(2),k(o.data.isPersistent?12:-1),c(),k(o.data.isPersistent?-1:13),c(3),S(v(17,30,"transports.details.basic.id")),c(2),D(" ",o.data.id," "),c(3),S(v(22,32,"transports.details.basic.local-pk")),c(2),D(" ",o.data.localPk," "),c(3),S(v(27,34,"transports.details.basic.remote-pk")),c(2),D(" ",o.data.remotePk," "),c(3),S(v(32,36,"transports.details.basic.type")),c(2),D(" ",o.data.type," "),c(2),C("inline",!0),c(2),D("",v(38,38,"transports.details.data.title")," "),c(4),S(v(42,40,"transports.details.data.uploaded")),c(2),D(" ",v(44,42,o.data.sent)," "),c(4),S(v(48,44,"transports.details.data.downloaded")),c(2),D(" ",v(50,46,o.data.recv)," "),c(4),S(v(54,48,"transports.latency")),c(2),k(o.data.latencyMs&&o.data.latencyMs>0?55:-1),c(),k(o.data.latencyMs&&0!==o.data.latencyMs?-1:56))},dependencies:[Ae,Et,Sn,Gl,we,dp],styles:[".help-icon[_ngcontent-%COMP%]{opacity:.5;font-size:14px;cursor:default}"]})}}return t})();const M2e=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),D2e=t=>({"d-lg-none d-xl-table":t}),T2e=t=>({"d-lg-table d-xl-none":t}),mH=t=>({offline:t});function E2e(t,n){1&t&&(h(0,"span",3),p(1),_(2,"translate"),h(3,"mat-icon",14),_(4,"translate"),p(5,"help"),u()()),2&t&&(c(),D(" ",v(2,3,"transports.title")," "),c(2),C("inline",!0)("matTooltip",v(4,5,"transports.info")))}function P2e(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().$implicit.translatableValue)," ")}function I2e(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.value," ")}function O2e(t,n){if(1&t&&(h(0,"div",16)(1,"span"),p(2),_(3,"translate"),u(),x(4,P2e,2,3),x(5,I2e,1,1),u()),2&t){const e=n.$implicit;c(2),D("",v(3,3,e.filterName),": "),c(2),k(e.translatableValue?4:-1),c(),k(e.value?5:-1)}}function A2e(t,n){if(1&t){const e=re();h(0,"div",15),F("click",function(){return V(e),H(y().dataFilterer.removeFilters())}),me(1,O2e,6,5,"div",16,Le),h(3,"div",17),p(4),_(5,"translate"),u()()}if(2&t){const e=y();c(),ge(e.dataFilterer.currentFiltersTexts),c(3),S(v(5,1,"filters.press-to-remove"))}}function R2e(t,n){if(1&t){const e=re();h(0,"mat-icon",18),F("click",function(){return V(e),H(y().dataFilterer.changeFilters())}),p(1,"filter_list"),u()}2&t&&C("inline",!0)}function F2e(t,n){if(1&t&&(h(0,"mat-icon",9),p(1,"more_horiz"),u()),2&t){y();const e=Un(12);C("inline",!0)("matMenuTriggerFor",e)}}function N2e(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"transports.dialog.errors.remote-key-length-error")," ")}function L2e(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"transports.dialog.errors.remote-key-chars-error")," ")}function B2e(t,n){if(1&t&&(h(0,"mat-option",32),p(1),u()),2&t){const e=n.$implicit;C("value",e),c(),S(e)}}function V2e(t,n){1&t&&me(0,B2e,2,2,"mat-option",32,Le),2&t&&ge(y(2).addAvailableTypes)}function H2e(t,n){if(1&t){const e=re();h(0,"div",13)(1,"div",19)(2,"form",20),F("ngSubmit",function(){return V(e),H(y().submitAddForm())}),h(3,"div",21)(4,"mat-form-field",22)(5,"mat-label"),p(6),_(7,"translate"),u(),L(8,"input",23),h(9,"mat-error"),x(10,N2e,2,3)(11,L2e,2,3),u()(),h(12,"mat-form-field",24)(13,"mat-label"),p(14),_(15,"translate"),u(),L(16,"input",25),u(),h(17,"mat-form-field",26)(18,"mat-label"),p(19),_(20,"translate"),u(),h(21,"mat-select",27),x(22,V2e,2,0),u()()(),h(23,"div",21)(24,"mat-checkbox",28),F("change",function(o){return V(e),H(y().setAddPersistent(o))}),p(25),_(26,"translate"),h(27,"mat-icon",29),_(28,"translate"),p(29,"help"),u()(),h(30,"button",30)(31,"mat-icon"),p(32,"add"),u(),p(33),_(34,"translate"),u(),h(35,"button",31),F("click",function(){return V(e),H(y().cancelAddForm())}),p(36),_(37,"translate"),u()()()()()}if(2&t){const e=y();c(2),C("formGroup",e.addForm),c(4),S(v(7,14,"transports.dialog.remote-key")),c(4),k(e.addForm.get("remoteKey").hasError("pattern")?11:10),c(4),S(v(15,16,"transports.dialog.label")),c(5),S(v(20,18,"transports.dialog.transport-type")),c(3),k(e.addAvailableTypes?22:-1),c(2),C("checked",e.addingPersistent),c(),D(" ",v(26,20,"transports.dialog.make-persistent")," "),c(2),C("inline",!0)("matTooltip",v(28,22,"transports.dialog.persistent-tooltip")),c(3),C("disabled",!e.addForm.valid||e.addBusy),c(3),D(" ",v(34,24,"transports.create")," "),c(2),C("disabled",e.addBusy),c(),D(" ",v(37,26,"common.cancel")," ")}}function U2e(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function z2e(t,n){1&t&&p(0," * ")}function j2e(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u(),x(2,z2e,1,0)),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow),c(),k(e.dataSorter.currentlySortingByLabel?2:-1)}}function $2e(t,n){1&t&&p(0," * ")}function W2e(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u(),x(2,$2e,1,0)),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow),c(),k(e.dataSorter.currentlySortingByLabel?2:-1)}}function G2e(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function q2e(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function K2e(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function Y2e(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=y(2);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function X2e(t,n){if(1&t){const e=re();h(0,"button",51),_(1,"translate"),F("click",function(){V(e);const o=y().$implicit;return H(y(2).changeIfPersistent([o],!1))}),h(2,"mat-icon",52),p(3,"star"),u()()}2&t&&(C("matTooltip",v(1,2,"transports.persistent-transport-button-tooltip")),c(2),C("inline",!0))}function Z2e(t,n){if(1&t){const e=re();h(0,"button",51),_(1,"translate"),F("click",function(){V(e);const o=y().$implicit;return H(y(2).changeIfPersistent([o],!0))}),h(2,"mat-icon",53),p(3,"star_outline"),u()()}2&t&&(C("matTooltip",v(1,2,"transports.non-persistent-transport-button-tooltip")),c(2),C("inline",!0))}function Q2e(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"transports.offline")))}function J2e(t,n){if(1&t){const e=re();h(0,"td")(1,"app-labeled-element-text",54),F("labelEdited",function(){return V(e),H(y(3).refreshData())}),u(),x(2,Q2e,3,3,"span"),u()}if(2&t){const e=y().$implicit,i=y(2);c(),C("id",on(e.id))("elementType",i.labeledElementTypes.Transport),c(),k(e.notFound?2:-1)}}function eEe(t,n){1&t&&(h(0,"td"),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"transports.offline")," "))}function tEe(t,n){if(1&t&&(h(0,"td"),p(1),_(2,"autoScale"),u()),2&t){const e=y().$implicit;c(),D(" ",v(2,1,e.sent)," ")}}function nEe(t,n){if(1&t&&(h(0,"td"),p(1),_(2,"autoScale"),u()),2&t){const e=y().$implicit;c(),D(" ",v(2,1,e.recv)," ")}}function iEe(t,n){1&t&&(h(0,"td"),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"transports.offline")," "))}function oEe(t,n){1&t&&(h(0,"td"),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"transports.offline")," "))}function rEe(t,n){1&t&&(p(0),_(1,"number")),2&t&&D(" ",ue(1,1,y(2).$implicit.latencyMs,"1.0-0")," ms ")}function sEe(t,n){1&t&&(h(0,"span",17),p(1,"-"),u())}function aEe(t,n){if(1&t&&(h(0,"td"),x(1,rEe,2,4),x(2,sEe,2,0,"span",17),u()),2&t){const e=y().$implicit;c(),k(e.latencyMs&&e.latencyMs>0?1:-1),c(),k(e.latencyMs&&0!==e.latencyMs?-1:2)}}function lEe(t,n){1&t&&(h(0,"td"),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"transports.offline")," "))}function cEe(t,n){if(1&t){const e=re();h(0,"button",55),_(1,"translate"),F("click",function(){V(e);const o=y().$implicit;return H(y(2).details(o))}),h(2,"mat-icon",37),p(3,"visibility"),u()()}2&t&&(C("matTooltip",v(1,2,"transports.details.title")),c(2),C("inline",!0))}function dEe(t,n){if(1&t){const e=re();h(0,"button",55),_(1,"translate"),F("click",function(){V(e);const o=y().$implicit;return H(y(2).delete(o))}),h(2,"mat-icon",37),p(3,"close"),u()()}2&t&&(C("matTooltip",v(1,2,"transports.delete")),c(2),C("inline",!0))}function uEe(t,n){if(1&t){const e=re();h(0,"tr",40)(1,"td",46)(2,"mat-checkbox",47),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(3,"td"),x(4,X2e,4,4,"button",48),x(5,Z2e,4,4,"button",48),u(),x(6,J2e,3,4,"td"),x(7,eEe,3,3,"td"),h(8,"td")(9,"app-labeled-element-text",49),F("labelEdited",function(){return V(e),H(y(2).refreshData())}),u()(),h(10,"td"),p(11),u(),x(12,tEe,3,3,"td"),x(13,nEe,3,3,"td"),x(14,iEe,3,3,"td"),x(15,oEe,3,3,"td"),x(16,aEe,3,2,"td"),x(17,lEe,3,3,"td"),h(18,"td",39),x(19,cEe,4,4,"button",50),x(20,dEe,4,4,"button",50),u()()}if(2&t){const e=n.$implicit,i=y(2);C("ngClass",ie(17,mH,e.notFound)),c(2),C("checked",i.selections.get(e.id)),c(2),k(e.isPersistent?4:-1),c(),k(e.isPersistent?-1:5),c(),k(e.notFound?-1:6),c(),k(e.notFound?7:-1),c(2),C("id",on(e.remotePk)),c(2),D(" ",e.type," "),c(),k(e.notFound?-1:12),c(),k(e.notFound?-1:13),c(),k(e.notFound?14:-1),c(),k(e.notFound?15:-1),c(),k(e.notFound?-1:16),c(),k(e.notFound?17:-1),c(2),k(e.notFound?-1:19),c(),k(e.notFound?-1:20)}}function hEe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.label")," ")}function fEe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"tables.inverted-order")," ")}function pEe(t,n){1&t&&(h(0,"div",58)(1,"div",58)(2,"mat-icon",63),p(3,"star"),u(),p(4,"\xa0 "),h(5,"span",64),p(6),_(7,"translate"),u()()()),2&t&&(c(2),C("inline",!0),c(4),S(v(7,2,"transports.persistent")))}function mEe(t,n){if(1&t){const e=re();h(0,"app-labeled-element-text",54),F("labelEdited",function(){return V(e),H(y(3).refreshData())}),u()}if(2&t){const e=y().$implicit,i=y(2);C("id",on(e.id))("elementType",i.labeledElementTypes.Transport)}}function gEe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"transports.offline")," ")}function _Ee(t,n){1&t&&(p(0),_(1,"autoScale")),2&t&&D(" ",v(1,1,y().$implicit.sent)," ")}function bEe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"transports.offline")," ")}function vEe(t,n){1&t&&(p(0),_(1,"autoScale")),2&t&&D(" ",v(1,1,y().$implicit.recv)," ")}function yEe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"transports.offline")," ")}function CEe(t,n){1&t&&(p(0),_(1,"number")),2&t&&D(" ",ue(1,1,y(2).$implicit.latencyMs,"1.0-0")," ms ")}function wEe(t,n){1&t&&p(0," - ")}function xEe(t,n){if(1&t&&(x(0,CEe,2,4),x(1,wEe,1,0)),2&t){const e=y().$implicit;k(e.latencyMs&&e.latencyMs>0?0:-1),c(),k(e.latencyMs&&0!==e.latencyMs?-1:1)}}function kEe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"transports.offline")," ")}function SEe(t,n){if(1&t){const e=re();h(0,"tr")(1,"td")(2,"div",56)(3,"div",57)(4,"mat-checkbox",47),F("change",function(){const o=V(e).$implicit;return H(y(2).changeSelection(o))}),u()(),h(5,"div",44),x(6,pEe,8,4,"div",58),h(7,"div",59)(8,"span",2),p(9),_(10,"translate"),u(),p(11,": "),x(12,mEe,1,3,"app-labeled-element-text",60),x(13,gEe,2,3),u(),h(14,"div",59)(15,"span",2),p(16),_(17,"translate"),u(),p(18,": "),h(19,"app-labeled-element-text",49),F("labelEdited",function(){return V(e),H(y(2).refreshData())}),u()(),h(20,"div",58)(21,"span",2),p(22),_(23,"translate"),u(),p(24),u(),h(25,"div",58)(26,"span",2),p(27),_(28,"translate"),u(),p(29,": "),x(30,_Ee,2,3),x(31,bEe,2,3),u(),h(32,"div",58)(33,"span",2),p(34),_(35,"translate"),u(),p(36,": "),x(37,vEe,2,3),x(38,yEe,2,3),u(),h(39,"div",58)(40,"span",2),p(41),_(42,"translate"),u(),p(43,": "),x(44,xEe,2,2),x(45,kEe,2,3),u()(),L(46,"div",61),h(47,"div",45)(48,"button",62),_(49,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(2);return o.stopPropagation(),H(s.showOptionsDialog(r))}),h(50,"mat-icon"),p(51),u()()()()()()}if(2&t){const e=n.$implicit,i=y(2);c(2),C("ngClass",ie(36,mH,e.notFound)),c(2),C("checked",i.selections.get(e.id)),c(2),k(e.isPersistent?6:-1),c(3),S(v(10,22,"transports.id")),c(3),k(e.notFound?-1:12),c(),k(e.notFound?13:-1),c(3),S(v(17,24,"transports.remote-node")),c(3),C("id",on(e.remotePk)),c(3),S(v(23,26,"transports.type")),c(2),D(": ",e.type," "),c(3),S(v(28,28,"common.uploaded")),c(3),k(e.notFound?-1:30),c(),k(e.notFound?31:-1),c(3),S(v(35,30,"common.downloaded")),c(3),k(e.notFound?-1:37),c(),k(e.notFound?38:-1),c(3),S(v(42,32,"transports.latency")),c(3),k(e.notFound?-1:44),c(),k(e.notFound?45:-1),c(3),C("matTooltip",v(49,34,"common.options")),c(3),S("add")}}function MEe(t,n){if(1&t){const e=re();h(0,"div",13)(1,"div",33)(2,"table",34)(3,"tr"),L(4,"th"),h(5,"th",35),_(6,"translate"),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.persistentSortData))}),h(7,"mat-icon",36),p(8,"star_outline"),u(),x(9,U2e,2,2,"mat-icon",37),u(),h(10,"th",38),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.idSortData))}),p(11),_(12,"translate"),x(13,j2e,3,3),u(),h(14,"th",38),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.remotePkSortData))}),p(15),_(16,"translate"),x(17,W2e,3,3),u(),h(18,"th",38),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.typeSortData))}),p(19),_(20,"translate"),x(21,G2e,2,2,"mat-icon",37),u(),h(22,"th",38),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.uploadedSortData))}),p(23),_(24,"translate"),x(25,q2e,2,2,"mat-icon",37),u(),h(26,"th",38),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.downloadedSortData))}),p(27),_(28,"translate"),x(29,K2e,2,2,"mat-icon",37),u(),h(30,"th",38),F("click",function(){V(e);const o=y();return H(o.dataSorter.changeSortingOrder(o.latencySortData))}),p(31),_(32,"translate"),x(33,Y2e,2,2,"mat-icon",37),u(),L(34,"th",39),u(),me(35,uEe,21,19,"tr",40,Le),u(),h(37,"table",41)(38,"tr",42),F("click",function(){return V(e),H(y().dataSorter.openSortingOrderModal())}),h(39,"td")(40,"div",43)(41,"div",44)(42,"div",2),p(43),_(44,"translate"),u(),h(45,"div"),p(46),_(47,"translate"),x(48,hEe,2,3),x(49,fEe,2,3),u()(),h(50,"div",45)(51,"mat-icon",37),p(52,"keyboard_arrow_down"),u()()()()(),me(53,SEe,52,38,"tr",null,Le),u()()()}if(2&t){const e=y();c(),C("ngClass",pt(40,M2e,e.showShortList_,!e.showShortList_)),c(),C("ngClass",ie(43,D2e,e.showShortList_)),c(3),C("matTooltip",v(6,22,"transports.persistent-tooltip")),c(4),k(e.dataSorter.currentSortingColumn===e.persistentSortData?9:-1),c(2),D(" ",v(12,24,"transports.id")," "),c(2),k(e.dataSorter.currentSortingColumn===e.idSortData?13:-1),c(2),D(" ",v(16,26,"transports.remote-node")," "),c(2),k(e.dataSorter.currentSortingColumn===e.remotePkSortData?17:-1),c(2),D(" ",v(20,28,"transports.type")," "),c(2),k(e.dataSorter.currentSortingColumn===e.typeSortData?21:-1),c(2),D(" ",v(24,30,"common.uploaded")," "),c(2),k(e.dataSorter.currentSortingColumn===e.uploadedSortData?25:-1),c(2),D(" ",v(28,32,"common.downloaded")," "),c(2),k(e.dataSorter.currentSortingColumn===e.downloadedSortData?29:-1),c(2),D(" ",v(32,34,"transports.latency")," "),c(2),k(e.dataSorter.currentSortingColumn===e.latencySortData?33:-1),c(2),ge(e.dataSource),c(2),C("ngClass",ie(45,T2e,e.showShortList_)),c(6),S(v(44,36,"tables.sorting-title")),c(3),D("",v(47,38,e.dataSorter.currentSortingColumn.label)," "),c(2),k(e.dataSorter.currentlySortingByLabel?48:-1),c(),k(e.dataSorter.sortingInReverseOrder?49:-1),c(2),C("inline",!0),c(2),ge(e.dataSource)}}function DEe(t,n){1&t&&(h(0,"span",67),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"transports.empty")))}function TEe(t,n){1&t&&(h(0,"span",67),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"transports.empty-with-filter")))}function EEe(t,n){if(1&t&&(h(0,"div",13)(1,"div",65)(2,"mat-icon",66),p(3,"warning"),u(),x(4,DEe,3,3,"span",67),x(5,TEe,3,3,"span",67),u()()),2&t){const e=y();c(2),C("inline",!0),c(2),k(0===e.allTransports.length?4:-1),c(),k(0!==e.allTransports.length?5:-1)}}let PEe=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter.setData(this.filteredTransports)}set node(e){const i=performance.now();console.log("[HV-DIAG] transport-list setter called, transports:",e.transports?.length,"persistentTransports:",e.persistentTransports?.length);const o=e.transports.map(s=>s.id).sort().join(",");if(o===this.lastTransportIds&&e.transports.length===this.lastTransportCount)return this.allTransports&&(e.transports.forEach(s=>{const a=this.allTransports.find(l=>l.id===s.id);a&&(a.sent=s.sent,a.recv=s.recv)}),this.cdr.markForCheck()),void console.log("[HV-DIAG] transport-list stats-only update took",(performance.now()-i).toFixed(1),"ms");console.log("[HV-DIAG] transport-list FULL reprocessing",e.transports.length,"transports"),this.lastTransportCount=e.transports.length,this.lastTransportIds=o,this.currentNode=e,this.allTransports=e.transports,this.nodePK=e.localPk;const r=new Map;e.persistentTransports.forEach(s=>r.set(this.getPersistentTransportID(s.pk,s.type),s)),this.allTransports.forEach(s=>{r.has(this.getPersistentTransportID(s.remotePk,s.type))?(s.isPersistent=!0,r.delete(this.getPersistentTransportID(s.remotePk,s.type))):s.isPersistent=!1}),r.forEach((s,a)=>{this.allTransports.push({id:this.getPersistentTransportID(s.pk,s.type),localPk:e.localPk,remotePk:s.pk,type:s.type,recv:0,sent:0,isPersistent:!0,notFound:!0})}),this.allTransports.forEach(s=>{s.id_label=Fc.getCompleteLabel(this.storageService,this.translateService,s.id),s.remote_pk_label=Fc.getCompleteLabel(this.storageService,this.translateService,s.remotePk)}),this.dataFilterer.setData(this.allTransports),this.cdr.markForCheck()}constructor(e,i,o,r,s,a,l,d,f,m){this.dialog=e,this.transportService=i,this.route=o,this.router=r,this.snackbarService=s,this.translateService=a,this.storageService=l,this.nodeService=d,this.cdr=f,this.formBuilder=m,this.listId="tr",this.persistentSortData=new Pt(["isPersistent"],"transports.persistent",lt.Boolean),this.idSortData=new Pt(["id"],"transports.id",lt.Text,["id_label"]),this.remotePkSortData=new Pt(["remotePk"],"transports.remote-node",lt.Text,["remote_pk_label"]),this.typeSortData=new Pt(["type"],"transports.type",lt.Text),this.uploadedSortData=new Pt(["sent"],"common.uploaded",lt.NumberReversed),this.downloadedSortData=new Pt(["recv"],"common.downloaded",lt.NumberReversed),this.latencySortData=new Pt(["latencyMs"],"transports.latency",lt.Number),this.selections=new Map,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.lastTransportCount=-1,this.lastTransportIds="",this.filterProperties=[{filterName:"transports.filter-dialog.persistent",keyNameInElementsArray:"isPersistent",type:Mn.Select,printableLabelsForValues:[{value:"",label:"transports.filter-dialog.persistent-options.any"},{value:"true",label:"transports.filter-dialog.persistent-options.persistent"},{value:"false",label:"transports.filter-dialog.persistent-options.non-persistent"}]},{filterName:"transports.filter-dialog.id",keyNameInElementsArray:"id",secondaryKeyNameInElementsArray:"id_label",type:Mn.TextInput,maxlength:36},{filterName:"transports.filter-dialog.remote-node",keyNameInElementsArray:"remotePk",secondaryKeyNameInElementsArray:"remote_pk_label",type:Mn.TextInput,maxlength:66}],this.labeledElementTypes=uo,this.showAddForm=!1,this.addingPersistent=!1,this.addAvailableTypes=null,this.addBusy=!1,this.operationSubscriptionsGroup=[],this.addForm=this.formBuilder.group({remoteKey:["",Se.compose([Se.required,Se.minLength(66),Se.maxLength(66),Se.pattern("^[0-9a-fA-F]+$")])],label:[""],type:["",Se.required]}),this.dataSorter=new wu(this.dialog,this.translateService,this.storageService,[this.persistentSortData,this.idSortData,this.remotePkSortData,this.typeSortData,this.uploadedSortData,this.downloadedSortData,this.latencySortData],1,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new xu(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(b=>{this.filteredTransports=b,this.dataSorter.setData(this.filteredTransports)}),this.navigationsSubscription=this.route.paramMap.subscribe(b=>{if(b.has("page")){let w=Number.parseInt(b.get("page"),10);(isNaN(w)||w<1)&&(w=1),this.currentPageInUrl=w,this.recalculateElementsToShow()}}),this.languageSubscription=this.translateService.onLangChange.subscribe(()=>{this.node=this.currentNode})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.languageSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose(),this.persistentTransportSubscription&&this.persistentTransportSubscription.unsubscribe(),this.addOperationSubscription&&this.addOperationSubscription.unsubscribe(),this.addTypesSubscription&&this.addTypesSubscription.unsubscribe()}changeSelection(e){this.selections.get(e.id)?this.selections.set(e.id,!1):this.selections.set(e.id,!0)}hasSelectedElements(){if(!this.selections)return!1;let e=!1;return this.selections.forEach(i=>{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}deleteSelected(){const e=[];this.selections.forEach((i,o)=>{i&&e.push(o)}),0!==e.length&&this.deleteRecursively(e,null)}toggleAddForm(){this.showAddForm=!this.showAddForm,this.showAddForm&&null===this.addAvailableTypes&&this.loadAddTypes(),this.showAddForm||this.resetAddForm()}cancelAddForm(){this.showAddForm=!1,this.resetAddForm()}setAddPersistent(e){this.addingPersistent=!!e.checked}submitAddForm(){if(!this.addForm.valid||this.addBusy)return;const e=this.addForm.get("remoteKey").value,i=this.addForm.get("type").value,o=this.addForm.get("label").value;this.addBusy=!0,this.addingPersistent?this.addOperationSubscription=this.transportService.getPersistentTransports(Me.getCurrentNodeKey()).subscribe(r=>{const s=r||[];s.some(l=>l.pk.toUpperCase()===e.toUpperCase()&&l.type.toUpperCase()===i.toUpperCase())?this.doCreateTransport(e,i,o,!0):(s.push({pk:e,type:i}),this.addOperationSubscription=this.transportService.savePersistentTransportsData(Me.getCurrentNodeKey(),s).subscribe(()=>{this.doCreateTransport(e,i,o,!0)},l=>this.onAddError(l)))},r=>this.onAddError(r)):this.doCreateTransport(e,i,o,!1)}doCreateTransport(e,i,o,r){this.addOperationSubscription=this.transportService.create(Me.getCurrentNodeKey(),e,i).subscribe(s=>{let a=!1;o&&(s&&s.id?this.storageService.saveLabel(s.id,o,uo.Transport):a=!0),this.addBusy=!1,this.cancelAddForm(),Me.refreshCurrentDisplayedData(),a?this.snackbarService.showWarning("transports.dialog.success-without-label"):this.snackbarService.showDone("transports.dialog.success")},s=>{r?(this.addBusy=!1,this.cancelAddForm(),Me.refreshCurrentDisplayedData(),this.snackbarService.showWarning("transports.dialog.only-persistent-created")):this.onAddError(s)})}onAddError(e){this.addBusy=!1,e=Ze(e),this.snackbarService.showError(e)}resetAddForm(){this.addForm.reset({remoteKey:"",label:"",type:this.addAvailableTypes&&this.addAvailableTypes[0]||""}),this.addingPersistent=!1,this.addBusy=!1}loadAddTypes(){this.addTypesSubscription=se(1).pipe(oi(0),Tt(()=>this.transportService.types(Me.getCurrentNodeKey()))).subscribe(e=>{e.sort((o,r)=>"stcp"===o.toLowerCase()?1:"stcp"===r.toLowerCase()?-1:o.localeCompare(r));let i=e.findIndex(o=>"dmsg"===o.toLowerCase());i=-1!==i?i:0,this.addAvailableTypes=e,this.addForm.get("type").setValue(e[i]||""),this.cdr.markForCheck()},e=>{e=Ze(e),this.snackbarService.showError(e),this.addAvailableTypes=[],this.cdr.markForCheck()})}showOptionsDialog(e){const i=[];i.push(e.isPersistent?{icon:"star_outline",label:"transports.make-non-persistent"}:{icon:"star",label:"transports.make-persistent"}),e.notFound||(i.push({icon:"visibility",label:"transports.details.title"}),i.push({icon:"close",label:"transports.delete"})),ho.openDialog(this.dialog,i,"common.options").afterClosed().subscribe(o=>{1===o?this.changeIfPersistent([e],!e.isPersistent):2===o?this.details(e):3===o&&this.delete(e)})}changeIfPersistentOfSelected(e){const i=[];this.allTransports.forEach(o=>{this.selections.has(o.id)&&this.selections.get(o.id)&&i.push(o)}),this.changeIfPersistent(i,e)}changeIfPersistent(e,i){e.length<1||(this.persistentTransportSubscription=this.transportService.getPersistentTransports(this.nodePK).subscribe(o=>{const r=o||[];let s;const a=new Map;if(e.forEach(l=>a.set(this.getPersistentTransportID(l.remotePk,l.type),l)),i)r.forEach(l=>{a.has(this.getPersistentTransportID(l.pk,l.type))&&a.delete(this.getPersistentTransportID(l.pk,l.type))}),s=0===a.size,s||a.forEach(l=>r.push({pk:l.remotePk,type:l.type}));else{s=!0;for(let l=0;l{Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("transports.changes-made")},l=>{l=Ze(l),this.snackbarService.showError(l)})},o=>{o=Ze(o),this.snackbarService.showError(o)}))}details(e){S2e.openDialog(this.dialog,e)}delete(e){this.operationSubscriptionsGroup.push(this.startDeleting(e.id).subscribe(()=>{Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("transports.deleted")},i=>{i=Ze(i),this.snackbarService.showError(i)}))}refreshData(){Me.refreshCurrentDisplayedData()}getPersistentTransportID(e,i){return e.toUpperCase()+i.toUpperCase()}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredTransports){this.numberOfPages=1,this.currentPage=1,this.transportsToShow=this.filteredTransports.slice();const e=new Map;this.transportsToShow.forEach(o=>{e.set(o.id,!0),this.selections.has(o.id)||this.selections.set(o.id,!1)});const i=[];this.selections.forEach((o,r)=>{e.has(r)||i.push(r)}),i.forEach(o=>{this.selections.delete(o)})}else this.transportsToShow=null,this.selections=new Map;this.dataSource=this.transportsToShow,this.cdr.markForCheck()}startDeleting(e){return this.transportService.delete(Me.getCurrentNodeKey(),e)}deleteRecursively(e,i){this.operationSubscriptionsGroup.push(this.startDeleting(e[e.length-1]).subscribe(()=>{e.pop(),0===e.length?(i&&i.close(),Me.refreshCurrentDisplayedData(),this.snackbarService.showDone("transports.deleted")):this.deleteRecursively(e,i)},o=>{Me.refreshCurrentDisplayedData(),o=Ze(o),i?i.componentInstance.showDone("confirmation.error-header-text",o.translatableErrorMsg):this.snackbarService.showError(o)}))}static{this.\u0275fac=function(i){return new(i||t)(O(Nt),O(hH),O(Li),O(yt),O(ot),O(Xo),O(ri),O(Yi),O(Dt),O(Si))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-transport-list"]],inputs:{showShortList:"showShortList",node:"node"},standalone:!1,decls:31,vars:34,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[3,"click","inline","matTooltip"],[1,"small-icon",3,"inline"],[3,"inline","matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[1,"rounded-elevated-box","mt-3"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline"],[1,"box-internal-container","small-node-list-margins"],[1,"inline-add-transport",3,"ngSubmit","formGroup"],[1,"add-row"],["appearance","outline",1,"field-pk"],["matInput","","formControlName","remoteKey","maxlength","66","placeholder","02abc..."],["appearance","outline",1,"field-md"],["matInput","","formControlName","label","maxlength","66"],["appearance","outline",1,"field-sm"],["formControlName","type","panelClass","skynet-select-panel"],["color","primary",3,"change","checked"],[1,"help-icon",3,"inline","matTooltip"],["mat-raised-button","","color","primary","type","submit",3,"disabled"],["mat-button","","type","button",3,"click","disabled"],[3,"value"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column","small-column",3,"click","matTooltip"],[1,"persistent-icon","grey-text"],[3,"inline"],[1,"sortable-column",3,"click"],[1,"actions"],[3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[1,"selection-col"],[3,"change","checked"],["mat-button","",1,"action-button","subtle-transparent-button",3,"matTooltip"],[3,"labelEdited","id"],["mat-button","",1,"action-button","transparent-button",3,"matTooltip"],["mat-button","",1,"action-button","subtle-transparent-button",3,"click","matTooltip"],[1,"persistent-icon","default-cursor",3,"inline"],[1,"persistent-icon","grey-text",3,"inline"],[3,"labelEdited","id","elementType"],["mat-button","",1,"action-button","transparent-button",3,"click","matTooltip"],[1,"list-item-container",3,"ngClass"],[1,"check-part"],[1,"list-row"],[1,"list-row","long-content"],[3,"id","elementType"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"persistent-icon",3,"inline"],[1,"yellow-clear-text","title"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,E2e,6,7,"span",3),x(3,A2e,6,3,"div",4),u(),h(4,"div",5)(5,"div",6)(6,"mat-icon",7),_(7,"translate"),F("click",function(){return o.toggleAddForm()}),p(8),u(),x(9,R2e,2,1,"mat-icon",8),x(10,F2e,2,2,"mat-icon",9),h(11,"mat-menu",10,0)(13,"div",11),F("click",function(){return o.changeAllSelections(!0)}),p(14),_(15,"translate"),u(),h(16,"div",11),F("click",function(){return o.changeAllSelections(!1)}),p(17),_(18,"translate"),u(),h(19,"div",12),F("click",function(){return o.changeIfPersistentOfSelected(!0)}),p(20),_(21,"translate"),u(),h(22,"div",12),F("click",function(){return o.changeIfPersistentOfSelected(!1)}),p(23),_(24,"translate"),u(),h(25,"div",12),F("click",function(){return o.deleteSelected()}),p(26),_(27,"translate"),u()()()()(),x(28,H2e,38,28,"div",13),x(29,MEe,55,47,"div",13),x(30,EEe,6,3,"div",13)),2&i&&(c(2),k(o.showShortList_?2:-1),c(),k(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?3:-1),c(3),C("inline",!0)("matTooltip",v(7,22,o.showAddForm?"common.cancel":"transports.create")),c(2),S(o.showAddForm?"remove":"add"),c(),k(o.allTransports&&o.allTransports.length>0?9:-1),c(),k(o.dataSource&&o.dataSource.length>0?10:-1),c(),C("overlapTrigger",!1),c(3),D(" ",v(15,24,"selection.select-all")," "),c(3),D(" ",v(18,26,"selection.unselect-all")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(21,28,"transports.make-selected-persistent")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(24,30,"transports.make-selected-non-persistent")," "),c(2),C("disabled",on(!o.hasSelectedElements())),c(),D(" ",v(27,32,"selection.delete-all")," "),c(2),k(o.showAddForm?28:-1),c(),k(o.dataSource&&o.dataSource.length>0?29:-1),c(),k(o.dataSource&&0!==o.dataSource.length?-1:30))},dependencies:[Ft,kn,Qt,Jt,xn,Bi,sn,_n,dn,ns,Aa,On,Ht,Yo,Ae,Et,os,Vs,Su,Na,is,Fo,Fc,Gl,we,dp],styles:[".overflow[_ngcontent-%COMP%]{display:block;width:100%;overflow-x:auto}.overflow[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{width:100%}.actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}.small-column[_ngcontent-%COMP%]{width:1px;text-align:center}.persistent-icon[_ngcontent-%COMP%]{font-size:14px!important;color:#d48b05}.offline[_ngcontent-%COMP%]{opacity:.35}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:8px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{flex:1 1 220px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] .field-pk[_ngcontent-%COMP%]{flex:2 1 360px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] .field-md[_ngcontent-%COMP%]{flex:1 1 180px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] .field-sm[_ngcontent-%COMP%]{flex:0 1 140px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-left:auto}.inline-add-transport[_ngcontent-%COMP%] .help-icon[_ngcontent-%COMP%]{margin-left:4px;opacity:.6;cursor:help}"],changeDetection:0})}}return t})();function IEe(t,n){1&t&&(h(0,"span"),p(1,", "),u())}function OEe(t,n){if(1&t&&(h(0,"span")(1,"span",11),p(2),u(),p(3,": "),h(4,"span",6),p(5),u(),x(6,IEe,2,0,"span"),u()),2&t){const e=n.$implicit,i=n.$index,o=n.$count;c(2),S(e.type),c(3),S(e.count),c(),k(i!==o-1?6:-1)}}function AEe(t,n){if(1&t&&(p(0," ("),me(1,OEe,7,3,"span",null,Le),p(3,") ")),2&t){const e=y(2);c(),ge(e.transportStats.byType)}}function REe(t,n){if(1&t){const e=re();h(0,"div",0)(1,"div",1)(2,"span",2),p(3),_(4,"translate"),u(),h(5,"span",3)(6,"span",4),p(7),_(8,"translate"),u(),h(9,"span",5)(10,"span",6),p(11),u(),x(12,AEe,4,0),u()(),h(13,"span",7)(14,"span",4),p(15),_(16,"translate"),u(),h(17,"mat-slide-toggle",8),F("change",function(){return V(e),H(y().changeTransportsConfig())}),u(),h(18,"mat-icon",9),_(19,"translate"),p(20,"info"),u()(),h(21,"span",7)(22,"span",4),p(23),_(24,"translate"),u(),h(25,"mat-slide-toggle",8),F("change",function(){return V(e),H(y().changePublicConfig())}),u(),h(26,"mat-icon",9),_(27,"translate"),p(28,"info"),u()()()(),L(29,"app-transport-list",10)}if(2&t){const e=y();c(3),S(v(4,14,"node.details.transports-info.title")),c(4),D("",v(8,16,"node.details.transports-info.total")," "),c(4),S(e.transportStats.total),c(),k(e.transportStats.byType.length>0?12:-1),c(3),S(v(16,18,"node.details.transports-info.autoconnect")),c(2),C("checked",!!e.node.autoconnectTransports),c(),C("inline",!0)("matTooltip",v(19,20,"node.details.transports-info.autoconnect-info")),c(5),S(v(24,22,"node.details.transports-info.is-public")),c(2),C("checked",!!e.isPublic),c(),C("inline",!0)("matTooltip",v(27,24,"node.details.transports-info.is-public-info")),c(3),C("node",e.node)("showShortList",!1)}}let FEe=(()=>{class t extends Lt{constructor(e,i,o){super(),this.apiService=e,this.transportService=i,this.snackbarService=o,this.transportStats={total:0,byType:[]},this.isPublic=!1}ngOnInit(){return this.dataSubscription=Me.currentNode.subscribe(e=>{this.node=e,this.transportStats=this.computeTransportStats(e),e&&this.fetchPublicStatus(e.localPk)}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription?.unsubscribe(),this.autoconnectSubscription?.unsubscribe(),this.publicToggleSubscription?.unsubscribe()}computeTransportStats(e){if(!e||!e.transports)return{total:0,byType:[]};const i={};for(const r of e.transports)i[r.type]=(i[r.type]||0)+1;const o=Object.entries(i).map(([r,s])=>({type:r,count:s})).sort((r,s)=>s.count-r.count);return{total:e.transports.length,byType:o}}fetchPublicStatus(e){this.apiService.get(`visors/${e}/public`).subscribe(i=>{this.isPublic=!(!i||!0!==i.is_public)},()=>{this.isPublic=!1})}changeTransportsConfig(){if(!this.node)return;const e=!this.node.autoconnectTransports;this.autoconnectSubscription=this.transportService.changeAutoconnectSetting(this.node.localPk,e).subscribe(()=>{this.snackbarService.showDone(e?"node.details.transports-info.enable-done":"node.details.transports-info.disable-done"),Me.refreshCurrentDisplayedData()},i=>{i=Ze(i),this.snackbarService.showError(i)})}changePublicConfig(){if(!this.node)return;const e=!this.isPublic;this.publicToggleSubscription=this.apiService.put(`visors/${this.node.localPk}/public`,{is_public:e}).subscribe(()=>{this.isPublic=e,this.snackbarService.showDone(e?"node.details.transports-info.public-enable-done":"node.details.transports-info.public-disable-done")},i=>{i=Ze(i),this.snackbarService.showError(i)})}static{this.\u0275fac=function(i){return new(i||t)(O(fi),O(hH),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-all-transports"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow","font-smaller"],[1,"section-title"],[1,"info-line"],[1,"title"],[1,"transport-stats"],[1,"transport-count"],[1,"info-line","toggle-line"],["color","primary",3,"change","checked"],[1,"info-tip",3,"inline","matTooltip"],[3,"node","showShortList"],[1,"transport-type"]],template:function(i,o){1&i&&x(0,REe,30,26),2&i&&k(o.node?0:-1)},dependencies:[Ae,Et,pH,PEe,we],encapsulation:2})}}return t})();const NEe=(t,n)=>n.date;function LEe(t,n){1&t&&(h(0,"a",23)(1,"mat-icon",24),_(2,"translate"),p(3," open_in_browser "),u()()),2&t&&(C("href","https://explorer.skycoin.com/app/address/"+y(2).rewardsAddress,$i),c(),C("inline",!0)("matTooltip",v(2,3,"node.details.rewards-info.open-in-explorer")))}function BEe(t,n){if(1&t&&(L(0,"app-copy-to-clipboard-text",22),x(1,LEe,4,5,"a",23)),2&t){const e=y();C("text",on(e.rewardsAddress)),c(),k(e.rewardsAddressIsXpub?-1:1)}}function VEe(t,n){1&t&&(p(0),_(1,"translate"),h(2,"mat-icon",25),_(3,"translate"),p(4,"info"),u()),2&t&&(D(" ",v(1,3,"node.details.rewards-info.not-registered")," "),c(2),C("inline",!0)("matTooltip",v(3,5,"node.details.rewards-info.not-registered-info")))}function HEe(t,n){if(1&t){const e=re();h(0,"form",26),F("ngSubmit",function(){return V(e),H(y().submitRewardAddress())}),h(1,"mat-form-field",27)(2,"mat-label"),p(3),_(4,"translate"),u(),L(5,"input",28),u(),h(6,"div",29)(7,"button",30),p(8),_(9,"translate"),u(),h(10,"button",31),F("click",function(){return V(e),H(y().toggleRewardForm())}),p(11),_(12,"translate"),u()()()}if(2&t){const e=y();C("formGroup",e.rewardForm),c(3),S(v(4,5,"node.details.rewards-info.rewards-address")),c(4),C("disabled",!e.rewardForm.valid),c(),D(" ",v(9,7,"common.save")," "),c(3),D(" ",v(12,9,"common.cancel")," ")}}function UEe(t,n){if(1&t&&(h(0,"pre",9),p(1),_(2,"translate"),u()),2&t){const e=y();c(),S(e.rewardRules||v(2,1,"common.loading"))}}function zEe(t,n){if(1&t&&(h(0,"span",11),p(1),u()),2&t){const e=y();c(),D("(",e.label,")")}}function jEe(t,n){if(1&t&&(h(0,"div",17)(1,"span",32),p(2),u(),h(3,"span",33),p(4),u()()),2&t){const e=y();c(2),D(" Total: ",e.total.toFixed(2)," SKY "),c(2),D(" (",e.days," days) ")}}function $Ee(t,n){1&t&&(h(0,"div",18),L(1,"mat-spinner",34),u())}function WEe(t,n){if(1&t&&(h(0,"div",19),p(1),u()),2&t){const e=y();c(),S(e.errorMsg)}}function GEe(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.amount.toFixed(6)," ")}function qEe(t,n){1&t&&(h(0,"span",36),p(1,"-"),u())}function KEe(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.share.toFixed(4),"% ")}function YEe(t,n){1&t&&(h(0,"span",36),p(1,"-"),u())}function XEe(t,n){if(1&t&&(h(0,"a",37),p(1),u()),2&t){const e=y().$implicit;C("href","https://explorer.skycoin.com/app/transaction/"+e.txid,$i),c(),D(" ",e.txid.substring(0,12),"... ")}}function ZEe(t,n){1&t&&(h(0,"span",36),p(1,"-"),u())}function QEe(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2),u(),h(3,"td"),x(4,GEe,1,1)(5,qEe,2,0,"span",36),u(),h(6,"td"),x(7,KEe,1,1)(8,YEe,2,0,"span",36),u(),h(9,"td")(10,"span"),p(11),u()(),h(12,"td"),x(13,XEe,2,2,"a",37)(14,ZEe,2,0,"span",36),u()()),2&t){const e=n.$implicit,i=y(2);Ge(i.statusClass(e)),c(2),S(i.formatDate(e.date)),c(2),k(e.amount>0?4:5),c(3),k(e.share>0?7:8),c(3),Ge("status-badge "+i.statusClass(e)),c(),S(i.statusText(e)),c(2),k(e.txid?13:14)}}function JEe(t,n){if(1&t&&(h(0,"table",20)(1,"tr")(2,"th"),p(3,"Date"),u(),h(4,"th"),p(5,"Amount (SKY)"),u(),h(6,"th"),p(7,"Share (%)"),u(),h(8,"th"),p(9,"Status"),u(),h(10,"th"),p(11,"Transaction"),u()(),me(12,QEe,15,9,"tr",35,NEe),u()),2&t){const e=y();c(12),ge(e.history)}}function ePe(t,n){1&t&&(h(0,"div",21),p(1," No reward data available for this visor. "),u())}let tPe=(()=>{class t{constructor(e,i,o,r,s,a,l){this.http=e,this.route=i,this.nodeComponent=o,this.storageService=r,this.nodeService=s,this.snackbarService=a,this.formBuilder=l,this.pk="",this.label="",this.rewardsAddress="",this.history=[],this.loading=!1,this.days=30,this.total=0,this.errorMsg="",this.showRewardForm=!1,this.showRewardRules=!1,this.rewardRules=null,this.rewardForm=this.formBuilder.group({address:["",Se.compose([Se.minLength(20),Se.maxLength(112)])]})}ngOnInit(){this.pk=this.nodeComponent.node?.localPk||this.route.snapshot.parent?.paramMap.get("key")||"";const e=this.storageService.getLabelInfo(this.pk);this.label=e?.label||"",this.nodeSub=Me.currentNode.subscribe(i=>{this.rewardsAddress=i?.rewardsAddress||""}),this.loadHistory()}ngOnDestroy(){this.nodeSub?.unsubscribe(),this.dataSub?.unsubscribe(),this.saveRewardsSubscription?.unsubscribe(),this.rewardRulesSubscription?.unsubscribe()}loadHistory(){this.pk&&(this.loading=!0,this.errorMsg="",this.dataSub=this.http.get(`/api/rewards/skycoin-rewards/visor/${this.pk}?days=${this.days}`).pipe(ii(e=>(this.errorMsg="Failed to load reward data",se({history:[]})))).subscribe(e=>{this.history=e?.history||[],this.total=this.history.reduce((i,o)=>i+(o.amount||0),0),this.loading=!1}))}changeDays(e){this.days=e,this.loadHistory()}formatDate(e){return new Date(e+"T00:00:00").toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}statusClass(e){return e.amount&&0!==e.amount?e.sent?"sent":"pending":"no-reward"}statusText(e){return e.amount&&0!==e.amount?e.sent?"Sent":"Pending":"No reward"}get rewardsAddressIsXpub(){return!!this.rewardsAddress&&this.rewardsAddress.startsWith("xpub")}toggleRewardForm(){this.showRewardForm=!this.showRewardForm,this.showRewardForm&&this.rewardForm.get("address").setValue(this.rewardsAddress||"")}submitRewardAddress(){if(!this.rewardForm.valid)return;const e=(this.rewardForm.get("address").value||"").trim(),i=e?this.nodeService.setRewardsAddress(this.pk,e):this.nodeService.deleteRewardsAddress(this.pk);this.saveRewardsSubscription=i.subscribe({next:()=>{this.snackbarService.showDone("rewards-address-config.done"),this.showRewardForm=!1,Me.refreshCurrentDisplayedData()},error:o=>{o=Ze(o),this.snackbarService.showError(o)}})}toggleRewardRules(){this.showRewardRules=!this.showRewardRules,this.showRewardRules&&null===this.rewardRules&&(this.rewardRulesSubscription=this.nodeService.getRewardRules().subscribe(e=>{this.rewardRules=e||""},()=>{this.rewardRules="",this.snackbarService.showError("common.loading-error")}))}static{this.\u0275fac=function(i){return new(i||t)(O(xa),O(Li),O(Me),O(ri),O(Yi),O(ot),O(Si))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-node-rewards"]],standalone:!1,decls:46,vars:33,consts:[[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow"],[1,"section-title"],[1,"info-line"],[1,"title"],["mat-icon-button","",1,"inline-edit-btn",3,"click","matTooltip"],[3,"inline"],[1,"inline-form",3,"formGroup"],[1,"info-line","collapsible-link",3,"click"],[1,"reward-rules"],[1,"d-flex","justify-content-between","align-items-center","mb-3"],[1,"label-text","ml-2"],[1,"d-flex","align-items-center"],[1,"mr-2",2,"font-size","0.85em","color","#ccc"],["mat-button","",3,"click"],[1,"pk-row","mb-3"],[2,"font-size","0.75em","color","#999"],[1,"total-row","mb-3"],[1,"d-flex","justify-content-center","py-4"],[1,"error-msg","py-2"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid"],[1,"py-4","text-center",2,"color","#999"],[1,"text-with-right-margin",3,"text"],["target","_blank","rel","noreferrer nofollow noopener",3,"href"],[1,"link-icon","transparent-button",3,"inline","matTooltip"],[3,"inline","matTooltip"],[1,"inline-form",3,"ngSubmit","formGroup"],["appearance","outline",1,"inline-form-field"],["matInput","","formControlName","address","maxlength","112","placeholder","2\u2026"],[1,"inline-form-actions"],["mat-raised-button","","color","primary","type","submit",3,"disabled"],["mat-button","","type","button",3,"click"],[2,"font-size","1.1em","font-weight","bold","color","#4caf50"],[2,"font-size","0.85em","color","#999","margin-left","12px"],["diameter","30"],[3,"class"],[2,"color","#666"],["target","_blank","rel","noopener",2,"font-size","0.8em","color","#3399ff",3,"href"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"span",2),p(3),_(4,"translate"),u(),h(5,"span",3)(6,"span",4),p(7),_(8,"translate"),u(),x(9,BEe,2,3),x(10,VEe,5,7),h(11,"button",5),_(12,"translate"),F("click",function(){return o.toggleRewardForm()}),h(13,"mat-icon",6),p(14),u()()(),x(15,HEe,13,11,"form",7),h(16,"span",8),F("click",function(){return o.toggleRewardRules()}),h(17,"mat-icon",6),p(18),u(),p(19),_(20,"translate"),u(),x(21,UEe,3,3,"pre",9),u()(),h(22,"div",0)(23,"div",1)(24,"div",10)(25,"div")(26,"span",4),p(27,"Reward History"),u(),x(28,zEe,2,1,"span",11),u(),h(29,"div",12)(30,"span",13),p(31,"Show:"),u(),h(32,"button",14),F("click",function(){return o.changeDays(7)}),p(33,"7d"),u(),h(34,"button",14),F("click",function(){return o.changeDays(30)}),p(35,"30d"),u(),h(36,"button",14),F("click",function(){return o.changeDays(90)}),p(37,"90d"),u()()(),h(38,"div",15)(39,"span",16),p(40),u()(),x(41,jEe,5,2,"div",17),x(42,$Ee,2,0,"div",18),x(43,WEe,2,1,"div",19),x(44,JEe,14,0,"table",20),x(45,ePe,2,0,"div",21),u()()),2&i&&(c(3),S(v(4,25,"node.details.rewards-info.title")),c(4),D("",v(8,27,"node.details.rewards-info.rewards-address")," "),c(2),k(o.rewardsAddress?9:-1),c(),k(o.rewardsAddress?-1:10),c(),C("matTooltip",v(12,29,o.rewardsAddress?"node.details.rewards-info.change-address-button":"node.details.rewards-info.set-address-button")),c(2),C("inline",!0),c(),S(o.showRewardForm?"close":"edit"),c(),k(o.showRewardForm?15:-1),c(2),C("inline",!0),c(),S(o.showRewardRules?"expand_more":"chevron_right"),c(),D(" ",v(20,31,"node.details.rewards-info.show-rules")," "),c(2),k(o.showRewardRules?21:-1),c(7),k(o.label?28:-1),c(4),ve("active-days",7===o.days),c(2),ve("active-days",30===o.days),c(2),ve("active-days",90===o.days),c(4),S(o.pk),c(),k(!o.loading&&o.history.length>0?41:-1),c(),k(o.loading?42:-1),c(),k(o.errorMsg?43:-1),c(),k(!o.loading&&o.history.length>0?44:-1),c(),k(o.loading||0!==o.history.length||o.errorMsg?-1:45))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,ns,On,Ht,Yo,Ae,Et,ci,cp,we],styles:[".title[_ngcontent-%COMP%]{font-size:1.1em;font-weight:700;color:#f8f9f9}.label-text[_ngcontent-%COMP%]{font-size:.9em;color:#aaa}.active-days[_ngcontent-%COMP%]{color:#4caf50!important;font-weight:700}.total-row[_ngcontent-%COMP%]{padding:8px 0;border-bottom:1px solid rgba(255,255,255,.1)}.error-msg[_ngcontent-%COMP%]{color:#f44336;text-align:center}.status-badge[_ngcontent-%COMP%]{padding:2px 8px;border-radius:4px;font-size:.8em}.status-badge.sent[_ngcontent-%COMP%]{background:#4caf5033;color:#4caf50}.status-badge.pending[_ngcontent-%COMP%]{background:#ffc10733;color:#ffc107}.status-badge.no-reward[_ngcontent-%COMP%]{color:#666}tr.sent[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-left:2px solid rgba(76,175,80,.3)}tr.pending[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-left:2px solid rgba(255,193,7,.3)}"]})}}return t})(),nPe=(()=>{class t{constructor(e){this.apiService=e}get(){return this.apiService.get("service-health")}static{this.\u0275fac=function(i){return new(i||t)(ce(fi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const iPe=()=>["nodes.services-health-title"],oPe=(t,n)=>n.reason;function rPe(t,n){1&t&&(h(0,"div",4),L(1,"mat-spinner",10),h(2,"span",11),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"services-health.loading")))}function sPe(t,n){if(1&t&&(h(0,"div",5)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",11),p(4),u()()),2&t){const e=y();c(4),S(e.error)}}function aPe(t,n){1&t&&(h(0,"mat-icon",18),p(1,"warning"),u(),h(2,"span"),p(3),_(4,"translate"),u()),2&t&&(c(3),S(v(4,1,"services-health.degraded")))}function lPe(t,n){1&t&&(h(0,"mat-icon",19),p(1,"check_circle"),u(),h(2,"span"),p(3),_(4,"translate"),u()),2&t&&(c(3),S(v(4,1,"services-health.all-ok")))}function cPe(t,n){if(1&t&&(h(0,"span",13),p(1),_(2,"translate"),_(3,"date"),u()),2&t){const e=y(2);c(),nt(" \u2014 ",v(2,2,"services-health.last-updated"),": ",ue(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function dPe(t,n){if(1&t&&(h(0,"code"),p(1),u()),2&t){const e=y().$implicit;c(),S(e.version)}}function uPe(t,n){1&t&&(h(0,"span",8),p(1,"\u2014"),u())}function hPe(t,n){if(1&t&&(h(0,"tr")(1,"td"),L(2,"span"),u(),h(3,"td")(4,"strong"),p(5),u()(),h(6,"td"),p(7),u(),h(8,"td"),p(9),u(),h(10,"td"),x(11,dPe,2,1,"code")(12,uPe,2,0,"span",8),u(),h(13,"td")(14,"code",8),p(15),u()()()),2&t){const e=n.$implicit,i=y(2);c(2),Ge(i.statusClass(e)),c(3),S(e.name),c(2),D(" ",e.status," "),c(),Ge(i.latencyClass(e)),c(),D(" ",e.latency_ms,"\xa0ms "),c(2),k(e.version?11:12),c(4),S(i.shortUrl(e.url))}}function fPe(t,n){if(1&t&&(h(0,"div",22)(1,"span",8),p(2),_(3,"translate"),u(),h(4,"code"),p(5),u()()),2&t){const e=y().$implicit;c(2),D("",v(3,2,"services-health.version"),":"),c(3),S(e.version)}}function pPe(t,n){if(1&t&&(h(0,"div",23),p(1),u()),2&t){const e=y().$implicit;c(),S(e.error)}}function mPe(t,n){if(1&t&&(h(0,"div",17)(1,"div",20),L(2,"span"),h(3,"strong",11),p(4),u(),h(5,"span",21),p(6),u()(),h(7,"div",22)(8,"span",8),p(9),_(10,"translate"),u(),p(11),u(),x(12,fPe,6,4,"div",22),h(13,"div",22)(14,"span",8),p(15),_(16,"translate"),u(),h(17,"code",8),p(18),u()(),x(19,pPe,2,1,"div",23),u()),2&t){const e=n.$implicit,i=y(2);c(2),Ge(i.statusClass(e)),c(2),S(e.name),c(),Ge(i.latencyClass(e)),c(),D("",e.latency_ms,"\xa0ms"),c(3),D("",v(10,12,"services-health.status"),":"),c(2),D(" ",e.status," "),c(),k(e.version?12:-1),c(3),D("",v(16,14,"services-health.endpoint"),":"),c(3),S(i.shortUrl(e.url)),c(),k(e.error?19:-1)}}function gPe(t,n){if(1&t&&(h(0,"div",12),x(1,aPe,5,3)(2,lPe,5,3),x(3,cPe,4,7,"span",13),u(),h(4,"table",14)(5,"tr"),L(6,"th",15),h(7,"th"),p(8),_(9,"translate"),u(),h(10,"th"),p(11),_(12,"translate"),u(),h(13,"th"),p(14),_(15,"translate"),u(),h(16,"th"),p(17),_(18,"translate"),u(),h(19,"th"),p(20),_(21,"translate"),u()(),me(22,hPe,16,9,"tr",null,wi().trackByName,!0),u(),h(24,"div",16),me(25,mPe,20,16,"div",17,wi().trackByName,!0),u()),2&t){const e=y();c(),k(e.anyDown()?1:2),c(2),k(e.lastUpdated?3:-1),c(5),S(v(9,7,"services-health.service")),c(3),S(v(12,9,"services-health.status")),c(3),S(v(15,11,"services-health.latency")),c(3),S(v(18,13,"services-health.version")),c(3),S(v(21,15,"services-health.endpoint")),c(2),ge(e.entries),c(3),ge(e.entries)}}function _Pe(t,n){1&t&&(h(0,"div",4),L(1,"mat-spinner",10),h(2,"span",11),p(3,"\u2026"),u()()),2&t&&(c(),C("diameter",14))}function bPe(t,n){1&t&&(h(0,"div",8),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"services-health.rsn-empty")))}function vPe(t,n){if(1&t&&(h(0,"span",28),p(1),_(2,"number"),u()),2&t){const e=y().$implicit;Ge(y().successClass(e.snapshot)),c(),D(" ",ue(2,3,e.snapshot.success_rate_pct,"1.0-1"),"% ")}}function yPe(t,n){if(1&t&&(h(0,"div",23),p(1),_(2,"translate"),u()),2&t){const e=y().$implicit;c(),nt("",v(2,2,"services-health.rsn-error"),": ",e.error)}}function CPe(t,n){if(1&t&&(h(0,"div")(1,"span",8),p(2),_(3,"translate"),u(),h(4,"span"),p(5),_(6,"date"),u()()),2&t){const e=y(2).$implicit;c(2),D("",v(3,2,"services-health.rsn-last-success"),":"),c(3),S(ue(6,4,e.snapshot.last_success_at,"HH:mm:ss"))}}function wPe(t,n){if(1&t&&(h(0,"div")(1,"span",8),p(2),_(3,"translate"),u(),h(4,"span"),p(5),_(6,"date"),u()()),2&t){const e=y(2).$implicit;c(2),D("",v(3,2,"services-health.rsn-last-failure"),":"),c(3),S(ue(6,4,e.snapshot.last_failure_at,"HH:mm:ss"))}}function xPe(t,n){if(1&t&&(h(0,"span",31),p(1),u()),2&t){const e=n.$implicit;c(),nt("",e.reason," (",e.count,")")}}function kPe(t,n){if(1&t&&(h(0,"div",30)(1,"span",8),p(2),_(3,"translate"),u(),me(4,xPe,2,2,"span",31,oPe),u()),2&t){const e=y(2).$implicit,i=y();c(2),D("",v(3,1,"services-health.rsn-failure-reasons"),":"),c(2),ge(i.topFailureReasons(e.snapshot))}}function SPe(t,n){if(1&t&&(h(0,"div",29)(1,"div")(2,"span",8),p(3),_(4,"translate"),u(),h(5,"strong"),p(6),u()(),h(7,"div")(8,"span",8),p(9),_(10,"translate"),u(),h(11,"strong"),p(12),u()(),h(13,"div")(14,"span",8),p(15),_(16,"translate"),u(),h(17,"strong"),p(18),u()(),h(19,"div")(20,"span",8),p(21),_(22,"translate"),u(),h(23,"strong"),p(24),u()(),h(25,"div")(26,"span",8),p(27),_(28,"translate"),u(),h(29,"strong"),p(30),u()(),h(31,"div")(32,"span",8),p(33),_(34,"translate"),u(),h(35,"strong"),p(36),u()(),x(37,CPe,7,7,"div"),x(38,wPe,7,7,"div"),u(),x(39,kPe,6,3,"div",30)),2&t){const e=y().$implicit,i=y();c(3),D("",v(4,15,"services-health.rsn-success"),":"),c(3),S(e.snapshot.successful||0),c(3),D("",v(10,17,"services-health.rsn-failed"),":"),c(3),S(e.snapshot.failed||0),c(3),D("",v(16,19,"services-health.rsn-active"),":"),c(3),S(e.snapshot.active_requests||0),c(3),D("",v(22,21,"services-health.rsn-latency-p50"),":"),c(3),D("",(null==e.snapshot.latency_ms?null:e.snapshot.latency_ms.p50_ms)||0," ms"),c(3),D("",v(28,23,"services-health.rsn-latency-p95"),":"),c(3),D("",(null==e.snapshot.latency_ms?null:e.snapshot.latency_ms.p95_ms)||0," ms"),c(3),D("",v(34,25,"services-health.rsn-latency-p99"),":"),c(3),D("",(null==e.snapshot.latency_ms?null:e.snapshot.latency_ms.p99_ms)||0," ms"),c(),k(e.snapshot.last_success_at?37:-1),c(),k(e.snapshot.last_failure_at?38:-1),c(),k(i.topFailureReasons(e.snapshot).length>0?39:-1)}}function MPe(t,n){if(1&t&&(h(0,"div",9)(1,"div",24),L(2,"span",25),h(3,"code",26),p(4),u(),x(5,vPe,3,6,"span",27),u(),x(6,yPe,3,4,"div",23),x(7,SPe,40,27),u()),2&t){const e=n.$implicit;c(2),C("ngClass",e.snapshot?"dot-green":"dot-red"),c(2),S(e.pk),c(),k(e.snapshot?5:-1),c(),k(e.error?6:-1),c(),k(e.snapshot?7:-1)}}let DPe=(()=>{class t extends Lt{constructor(e,i){super(),this.healthSvc=e,this.api=i,this.tabsData=[],this.entries=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.rsnStats=[],this.rsnLoading=!0,this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"schedule",label:"nodes.uptime-title",linkParts:["/nodes","uptime"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=ds(15e3).pipe(zn(0),wt(()=>this.healthSvc.get())).subscribe({next:e=>{this.entries=e||[],this.loading=!1,this.error=null,this.lastUpdated=new Date},error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch services health"}}),this.rsnSub=ds(3e4).pipe(zn(0),wt(()=>this.api.get("route-setup-nodes/stats"))).subscribe({next:e=>{this.rsnStats=Array.isArray(e)?e:[],this.rsnLoading=!1},error:()=>{this.rsnLoading=!1}}),super.ngOnInit()}ngOnDestroy(){this.sub?.unsubscribe(),this.rsnSub?.unsubscribe()}topFailureReasons(e){return e?.failures_by_reason?Object.entries(e.failures_by_reason).map(([i,o])=>({reason:i,count:o})).filter(i=>i.count>0).sort((i,o)=>o.count-i.count).slice(0,3):[]}successClass(e){const i=e?.success_rate_pct??0;return i>=90?"latency-fast":i>=70?"latency-medium":"latency-slow"}trackRSN(e,i){return i.pk}statusClass(e){const i=(e?.status||"").toUpperCase();return"OK"===i?"dot-green":"DOWN"===i?"dot-red":"dot-outline-gray"}anyDown(){return this.entries.some(e=>"OK"!==(e?.status||"").toUpperCase())}latencyClass(e){const i=e?.latency_ms??0;return i<500?"latency-fast":i<2e3?"latency-medium":"latency-slow"}shortUrl(e){if(!e)return"";try{return new URL(e).host}catch{return e}}trackByName(e,i){return i.name}static{this.\u0275fac=function(i){return new(i||t)(O(nPe),O(fi))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-services-health"]],standalone:!1,features:[_e],decls:15,vars:13,consts:[[1,"row"],[1,"col-12"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton"],[1,"content","col-12","mt-4.5"],[1,"loading-row"],[1,"error-row"],[1,"rsn-section","mt-4"],[1,"rsn-title"],[1,"dim"],[1,"rsn-card"],[3,"diameter"],[1,"ml-2"],[1,"summary-line"],[1,"last-updated"],[1,"responsive-table-translucid","d-none","d-md-table","mt-3"],[1,"small-column"],[1,"d-md-none","mt-3"],[1,"mobile-card"],[1,"warn"],[1,"ok"],[1,"mobile-header"],[1,"ml-auto"],[1,"mobile-row"],[1,"error-detail"],[1,"rsn-card-header"],[1,"dot",3,"ngClass"],[1,"rsn-pk","mono","small"],[1,"rsn-rate",3,"class"],[1,"rsn-rate"],[1,"rsn-grid"],[1,"rsn-failures"],[1,"rsn-fail-pill"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1),L(2,"app-top-bar",2),u(),h(3,"div",3),x(4,rPe,5,4,"div",4),x(5,sPe,5,1,"div",5),x(6,gPe,27,17),h(7,"div",6)(8,"h3",7),p(9),_(10,"translate"),u(),x(11,_Pe,4,1,"div",4),x(12,bPe,3,3,"div",8),me(13,MPe,8,5,"div",9,o.trackRSN,!0),u()()()),2&i&&(c(2),C("titleParts",vt(12,iPe))("tabsData",o.tabsData)("selectedTabIndex",6)("showUpdateButton",!1),c(2),k(o.loading&&0===o.entries.length?4:-1),c(),k(o.error&&0===o.entries.length?5:-1),c(),k(o.entries.length>0?6:-1),c(3),S(v(10,10,"services-health.rsn-section")),c(2),k(o.rsnLoading&&0===o.rsnStats.length?11:-1),c(),k(o.rsnLoading||0!==o.rsnStats.length?-1:12),c(),ge(o.rsnStats))},dependencies:[Ft,Ae,ci,tr,Gl,vr,we],styles:[".loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffbf;padding:24px 0}.error-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#f87171;padding:24px 0}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;margin-right:6px}.summary-line[_ngcontent-%COMP%] mat-icon.ok[_ngcontent-%COMP%]{color:#4ade80}.summary-line[_ngcontent-%COMP%] mat-icon.warn[_ngcontent-%COMP%]{color:#fbbf24}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.small-column[_ngcontent-%COMP%]{width:24px}.dim[_ngcontent-%COMP%]{color:#ffffff8c}.latency-fast[_ngcontent-%COMP%]{color:#4ade80}.latency-medium[_ngcontent-%COMP%]{color:#fbbf24}.latency-slow[_ngcontent-%COMP%]{color:#f87171}.error-detail[_ngcontent-%COMP%]{color:#f87171;font-size:.8em;margin-top:4px}.mobile-card[_ngcontent-%COMP%]{background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:12px;margin-bottom:10px}.mobile-card[_ngcontent-%COMP%] .mobile-header[_ngcontent-%COMP%]{display:flex;align-items:center;margin-bottom:8px;font-size:1em}.mobile-card[_ngcontent-%COMP%] .mobile-row[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffd9;padding:2px 0}.mobile-card[_ngcontent-%COMP%] .mobile-row[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:#ffffffd9}code[_ngcontent-%COMP%]{font-family:monospace;font-size:.9em}.rsn-section[_ngcontent-%COMP%] .rsn-title[_ngcontent-%COMP%]{font-size:1em;font-weight:600;color:#fffffff2;margin:0 0 10px}.rsn-section[_ngcontent-%COMP%] .rsn-card[_ngcontent-%COMP%]{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:10px 14px;margin-bottom:10px}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:50%;display:inline-block}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .dot-green[_ngcontent-%COMP%]{background:#4caf50}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .dot-red[_ngcontent-%COMP%]{background:#f44336}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .rsn-pk[_ngcontent-%COMP%]{font-family:monospace;font-size:11px;color:#ffffffb3;word-break:break-all;flex:1 1 auto;min-width:0}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .rsn-rate[_ngcontent-%COMP%]{font-weight:600;font-size:13px}.rsn-section[_ngcontent-%COMP%] .rsn-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px 16px;font-size:12px}.rsn-section[_ngcontent-%COMP%] .rsn-grid[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{margin-left:6px;color:#fffffff2}.rsn-section[_ngcontent-%COMP%] .rsn-failures[_ngcontent-%COMP%]{margin-top:8px;font-size:11px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.rsn-section[_ngcontent-%COMP%] .rsn-failures[_ngcontent-%COMP%] .rsn-fail-pill[_ngcontent-%COMP%]{background:#e5393526;border:1px solid rgba(229,57,53,.35);color:#ffc8c8f2;padding:1px 6px;border-radius:3px}"]})}}return t})();const TPe=()=>["nodes.network-title"],gH=(t,n)=>n.pk;function EPe(t,n){1&t&&(h(0,"div",4),L(1,"mat-spinner",7),h(2,"span",8),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"network-view.loading")))}function PPe(t,n){if(1&t&&(h(0,"div",5)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",8),p(4),u()()),2&t){const e=y();c(4),S(e.error)}}function IPe(t,n){if(1&t&&(h(0,"div",15),p(1),_(2,"translate"),_(3,"date"),u()),2&t){const e=y(2);c(),nt(" ",v(2,2,"network-view.last-updated"),": ",ue(3,4,e.lastUpdated,"mediumTime")," ")}}function OPe(t,n){if(1&t&&(h(0,"tr",32)(1,"td",36),p(2),u(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),u(),h(9,"td",31),p(10),u(),h(11,"td",31),p(12),u(),h(13,"td",31),p(14),u(),h(15,"td",31),p(16),u(),h(17,"td",31)(18,"strong"),p(19),u()(),h(20,"td"),p(21),u()()),2&t){const e=n.$implicit;C("ngClass",y(2).rowClass(e)),c(),C("matTooltip",e.pk),c(),S(e.pk),c(2),S(e.country||"-"),c(2),S(e.version||"-"),c(2),S(e.services||"-"),c(2),S(e.stcpr),c(2),S(e.sudph),c(2),S(e.dmsg),c(2),S(e.stcp),c(3),S(e.total),c(2),S(e.ut_status||"-")}}function APe(t,n){if(1&t&&(h(0,"div",34)(1,"div",37),p(2),u(),h(3,"div",38),p(4),u(),h(5,"div",39),p(6),h(7,"strong"),p(8),u(),p(9),u()()),2&t){const e=n.$implicit;C("ngClass",y(2).rowClass(e)),c(),C("matTooltip",e.pk),c(),S(e.pk),c(2),Fd(" ",e.country||"-"," \xb7 ",e.version||"-"," \xb7 ",e.services||"-"," "),c(2),Kh(" stcpr ",e.stcpr," \xb7 sudph ",e.sudph," \xb7 dmsg ",e.dmsg," \xb7 stcp ",e.stcp," \xb7 "),c(2),D("total ",e.total),c(),D(" \xb7 ",e.ut_status||"-"," ")}}function RPe(t,n){1&t&&(h(0,"p",35),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"network-view.empty")))}function FPe(t,n){if(1&t){const e=re();h(0,"div",6)(1,"div",9)(2,"div",10)(3,"div",11)(4,"span")(5,"strong"),p(6),u(),p(7," visors"),u(),L(8,"span",12),h(9,"span"),p(10),u(),L(11,"span",13),h(12,"span"),p(13),u(),L(14,"span",14),h(15,"span"),p(16),u()(),x(17,IPe,4,7,"div",15),h(18,"button",16),_(19,"translate"),F("click",function(){return V(e),H(y().refreshNow())}),h(20,"mat-icon",17),p(21,"refresh"),u()()(),h(22,"div",18)(23,"mat-form-field",19)(24,"mat-label"),p(25),_(26,"translate"),u(),h(27,"input",20),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.searchTerm,o)||(r.searchTerm=o),H(o)}),F("ngModelChange",function(){return V(e),H(y().applyFilters())}),u()(),h(28,"mat-form-field",21)(29,"mat-label"),p(30),_(31,"translate"),u(),h(32,"input",22),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.filterCountry,o)||(r.filterCountry=o),H(o)}),F("ngModelChange",function(){return V(e),H(y().applyFilters())}),u()(),h(33,"mat-form-field",21)(34,"mat-label"),p(35),_(36,"translate"),u(),h(37,"input",23),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.filterVersion,o)||(r.filterVersion=o),H(o)}),F("ngModelChange",function(){return V(e),H(y().applyFilters())}),u()(),h(38,"mat-form-field",21)(39,"mat-label"),p(40),_(41,"translate"),u(),h(42,"input",24),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.filterMinTransports,o)||(r.filterMinTransports=o),H(o)}),F("ngModelChange",function(){return V(e),H(y().applyFilters())}),u()(),h(43,"mat-checkbox",25),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.showOnlineOnly,o)||(r.showOnlineOnly=o),H(o)}),F("ngModelChange",function(){return V(e),H(y().applyFilters())}),p(44),_(45,"translate"),u()(),h(46,"div",26),L(47,"span",27),h(48,"span"),p(49),_(50,"translate"),u(),L(51,"span",28),h(52,"span"),p(53),_(54,"translate"),u(),L(55,"span",29),h(56,"span"),p(57),_(58,"translate"),u()(),h(59,"table",30)(60,"tr")(61,"th"),p(62),_(63,"translate"),u(),h(64,"th"),p(65),_(66,"translate"),u(),h(67,"th"),p(68),_(69,"translate"),u(),h(70,"th"),p(71),_(72,"translate"),u(),h(73,"th",31),p(74,"stcpr"),u(),h(75,"th",31),p(76,"sudph"),u(),h(77,"th",31),p(78,"dmsg"),u(),h(79,"th",31),p(80,"stcp"),u(),h(81,"th",31),p(82),_(83,"translate"),u(),h(84,"th"),p(85),_(86,"translate"),u()(),me(87,OPe,22,12,"tr",32,gH),u(),h(89,"div",33),me(90,APe,10,12,"div",34,gH),u(),x(92,RPe,3,3,"p",35),u()()}if(2&t){const e=y();c(6),S(e.totals.all),c(4),D("",e.totals.online," online"),c(3),D("",e.totals.offline," offline"),c(3),D("",e.totals.notInUT," not in UT"),c(),k(e.lastUpdated?17:-1),c(),C("matTooltip",v(19,27,"network-view.refresh")),c(2),C("inline",!0),c(5),S(v(26,29,"network-view.search")),c(2),Kt("ngModel",e.searchTerm),c(3),S(v(31,31,"network-view.country")),c(2),Kt("ngModel",e.filterCountry),c(3),S(v(36,33,"network-view.version")),c(2),Kt("ngModel",e.filterVersion),c(3),S(v(41,35,"network-view.min-transports")),c(2),Kt("ngModel",e.filterMinTransports),c(),Kt("ngModel",e.showOnlineOnly),c(),D(" ",v(45,37,"network-view.online-only")," "),c(5),S(v(50,39,"network-view.legend.offline")),c(4),S(v(54,41,"network-view.legend.not-in-ut")),c(4),S(v(58,43,"network-view.legend.low-transports")),c(5),S(v(63,45,"network-view.col.pk")),c(3),S(v(66,47,"network-view.col.country")),c(3),S(v(69,49,"network-view.col.version")),c(3),S(v(72,51,"network-view.col.services")),c(11),S(v(83,53,"network-view.col.total")),c(3),S(v(86,55,"network-view.col.status")),c(2),ge(e.filteredEntries),c(3),ge(e.filteredEntries),c(2),k(0===e.filteredEntries.length?92:-1)}}let NPe=(()=>{class t extends Lt{constructor(e){super(),this.nodeService=e,this.tabsData=[],this.entries=[],this.filteredEntries=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.filterCountry="",this.filterVersion="",this.filterMinTransports=null,this.showOnlineOnly=!0,this.searchTerm="",this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"schedule",label:"nodes.uptime-title",linkParts:["/nodes","uptime"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=ds(3e5).pipe(zn(0),wt(()=>this.nodeService.getNetworkView())).subscribe({next:e=>this.onResponse(e),error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch network view"}}),super.ngOnInit()}refreshNow(){this.loading=0===this.entries.length,this.nodeService.getNetworkView(!0).subscribe({next:e=>this.onResponse(e),error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch network view"}})}onResponse(e){this.entries=e?.entries||[],this.loading=!1,this.error=null,this.lastUpdated=new Date,this.applyFilters()}ngOnDestroy(){this.sub&&this.sub.unsubscribe()}applyFilters(){const e=(this.searchTerm||"").trim().toLowerCase(),i=(this.filterCountry||"").trim().toUpperCase(),o=(this.filterVersion||"").trim(),r=this.filterMinTransports||0;this.filteredEntries=this.entries.filter(s=>!(this.showOnlineOnly&&"online"!==(s.ut_status||"")||i&&(s.country||"").toUpperCase()!==i||o&&(s.version||"")!==o||r>0&&(s.total||0)0?6:-1))},dependencies:[Ft,Qt,Oa,Jt,Bi,gc,dn,ns,On,Yo,Ae,Et,gu,ci,Fo,tr,vr,we],styles:[".nv-header[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:16px;padding:8px 4px 4px}.nv-header[_ngcontent-%COMP%] .nv-totals[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:13px}.nv-header[_ngcontent-%COMP%] .nv-fetched[_ngcontent-%COMP%]{margin-left:auto;font-size:12px;opacity:.6}.nv-header[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:8px}.nv-header[_ngcontent-%COMP%] .dot-green[_ngcontent-%COMP%]{background:#4caf50}.nv-header[_ngcontent-%COMP%] .dot-red[_ngcontent-%COMP%]{background:#e53935}.nv-header[_ngcontent-%COMP%] .dot-outline-gray[_ngcontent-%COMP%]{border:1px solid rgba(255,255,255,.4)}.nv-filters[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:8px 4px;border-bottom:1px solid rgba(255,255,255,.06)}.nv-filters[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{flex:0 1 200px}.nv-filters[_ngcontent-%COMP%] .field-sm[_ngcontent-%COMP%]{flex:0 1 130px}.nv-filters[_ngcontent-%COMP%] .field-md[_ngcontent-%COMP%]{flex:1 1 280px}.nv-legend[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12px;padding:8px 4px;opacity:.8}.nv-legend[_ngcontent-%COMP%] .row-marker[_ngcontent-%COMP%]{display:inline-block;width:16px;height:12px;border-radius:2px;margin-left:6px}.responsive-table-translucid[_ngcontent-%COMP%] th.num[_ngcontent-%COMP%], .responsive-table-translucid[_ngcontent-%COMP%] td.num[_ngcontent-%COMP%]{text-align:right;font-variant-numeric:tabular-nums}.row-offline[_ngcontent-%COMP%]{color:#e53935d9!important}.row-not-in-ut[_ngcontent-%COMP%]{background:#e539351f!important;color:#ffffffe6!important}.row-low-transports[_ngcontent-%COMP%]{background:#ffa7261f!important;color:#ffdc96f2!important}.row-marker.row-offline[_ngcontent-%COMP%]{background:#e5393580}.row-marker.row-not-in-ut[_ngcontent-%COMP%]{background:#e5393540}.row-marker.row-low-transports[_ngcontent-%COMP%]{background:#ffa7264d}.nv-cards[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;padding:8px 0}.nv-card[_ngcontent-%COMP%]{border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:8px 10px}.nv-card[_ngcontent-%COMP%] .nv-card-pk[_ngcontent-%COMP%]{font-weight:600}.nv-card[_ngcontent-%COMP%] .nv-card-meta[_ngcontent-%COMP%]{opacity:.7;font-size:12px}.nv-card[_ngcontent-%COMP%] .nv-card-tps[_ngcontent-%COMP%]{font-size:12px;margin-top:2px;font-variant-numeric:tabular-nums}.nv-empty[_ngcontent-%COMP%]{text-align:center;opacity:.6;padding:24px}"]})}}return t})();const LPe=()=>["nodes.resources-title"],BPe=t=>({count:t}),VPe=(t,n)=>({"click-effect":t,"non-selectable":n}),_H=t=>["/nodes",t,"resources"];function HPe(t,n){1&t&&(h(0,"div",4),L(1,"mat-spinner",6),h(2,"span",7),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"multi-resources.loading")))}function UPe(t,n){if(1&t&&(h(0,"div",5)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",7),p(4),u()()),2&t){const e=y();c(4),S(e.error)}}function zPe(t,n){if(1&t&&(h(0,"span",10),p(1),_(2,"translate"),_(3,"date"),u()),2&t){const e=y(2);c(),nt(" \u2014 ",v(2,2,"multi-resources.last-updated"),": ",ue(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function jPe(t,n){if(1&t&&(h(0,"div",23),p(1),u()),2&t){const e=y().$implicit;c(),S(e.error)}}function $Pe(t,n){if(1&t&&(h(0,"div",26),p(1),u(),h(2,"div",26),p(3),u()),2&t){const e=y(2).$implicit;c(),S(e.node.ip),c(2),S(e.node.publicIp)}}function WPe(t,n){if(1&t&&(h(0,"div",26),p(1),u()),2&t){const e=y(2).$implicit;c(),S(e.node.publicIp)}}function GPe(t,n){if(1&t&&(h(0,"div",26),p(1),u()),2&t){const e=y(2).$implicit;c(),S(e.node.ip)}}function qPe(t,n){if(1&t&&(h(0,"div",26),p(1),u()),2&t){const e=y(2).$implicit;c(),Fd("",e.node.cityName?e.node.cityName+", ":"","",e.node.regionName?e.node.regionName+", ":"","",e.node.countryCode)}}function KPe(t,n){if(1&t&&(x(0,$Pe,4,2)(1,WPe,2,1,"div",26)(2,GPe,2,1,"div",26),x(3,qPe,2,3,"div",26)),2&t){const e=y().$implicit;k(e.node.ip&&e.node.publicIp&&e.node.ip!==e.node.publicIp?0:e.node.publicIp?1:e.node.ip?2:-1),c(3),k(e.node.countryCode?3:-1)}}function YPe(t,n){1&t&&(h(0,"span"),p(1,"-"),u())}function XPe(t,n){1&t&&(p(0),_(1,"number")),2&t&&D(" ",ue(1,1,y().$implicit.stats.cpu_percent,"1.0-1"),"% ")}function ZPe(t,n){1&t&&(h(0,"span",24),p(1,"-"),u())}function QPe(t,n){if(1&t&&(p(0),_(1,"number"),h(2,"div",27),p(3),u()),2&t){const e=y().$implicit,i=y(2);D(" ",ue(1,3,e.stats.mem_percent,"1.0-1"),"% "),c(3),nt("",i.fmtBytes(e.stats.mem_used)," / ",i.fmtBytes(e.stats.mem_total))}}function JPe(t,n){1&t&&(h(0,"span",24),p(1,"-"),u())}function eIe(t,n){1&t&&(p(0),_(1,"number")),2&t&&D(" ",ue(1,1,y().$implicit.stats.disk_percent,"1.0-1"),"% ")}function tIe(t,n){1&t&&(h(0,"span",24),p(1,"-"),u())}function nIe(t,n){1&t&&(h(0,"mat-icon",25),p(1,"chevron_right"),u()),2&t&&C("inline",!0)}function iIe(t,n){if(1&t&&(h(0,"a",18)(1,"td"),L(2,"span",21),u(),h(3,"td")(4,"div"),p(5),u(),h(6,"div",22),p(7),u(),x(8,jPe,2,1,"div",23),u(),h(9,"td"),x(10,KPe,4,2)(11,YPe,2,0,"span"),u(),h(12,"td",16),x(13,XPe,2,4)(14,ZPe,2,0,"span",24),u(),h(15,"td",16),x(16,QPe,4,6)(17,JPe,2,0,"span",24),u(),h(18,"td",16),x(19,eIe,2,4)(20,tIe,2,0,"span",24),u(),h(21,"td",16),p(22),u(),h(23,"td",16),p(24),u(),h(25,"td",16),p(26),u(),h(27,"td",17),x(28,nIe,2,1,"mat-icon",25),u()()),2&t){const e=n.$implicit,i=y(2);C("ngClass",pt(20,VPe,e.node.online,!e.node.online))("routerLink",e.node.online?ie(23,_H,e.node.localPk):null),c(2),C("ngClass",e.node.online?"dot-green":"dot-red"),c(3),S(e.node.label||e.node.localPk),c(2),S(e.node.localPk),c(),k(e.error?8:-1),c(2),k(e.node.publicIp||e.node.ip?10:11),c(2),Ge(i.pctClass(null==e.stats?null:e.stats.cpu_percent)),c(),k(void 0!==(null==e.stats?null:e.stats.cpu_percent)?13:14),c(2),Ge(i.pctClass(null==e.stats?null:e.stats.mem_percent)),c(),k(void 0!==(null==e.stats?null:e.stats.mem_percent)?16:17),c(2),Ge(i.pctClass(null==e.stats?null:e.stats.disk_percent)),c(),k(void 0!==(null==e.stats?null:e.stats.disk_percent)?19:20),c(3),S(i.formatRate(e.txRate)),c(2),S(i.formatRate(e.rxRate)),c(2),S(i.formatBytes(null==e.stats||null==e.stats.process?null:e.stats.process.mem_rss)),c(2),k(e.node.online?28:-1)}}function oIe(t,n){if(1&t&&(h(0,"div",23),p(1),u()),2&t){const e=y().$implicit;c(),S(e.error)}}function rIe(t,n){if(1&t&&(h(0,"div",31)(1,"div")(2,"span",24),p(3),_(4,"translate"),u(),h(5,"strong"),p(6),_(7,"number"),u()(),h(8,"div")(9,"span",24),p(10),_(11,"translate"),u(),h(12,"strong"),p(13),_(14,"number"),u()(),h(15,"div")(16,"span",24),p(17),_(18,"translate"),u(),h(19,"strong"),p(20),_(21,"number"),u()(),h(22,"div")(23,"span",24),p(24),_(25,"translate"),u(),h(26,"strong"),p(27),u()(),h(28,"div")(29,"span",24),p(30),_(31,"translate"),u(),h(32,"strong"),p(33),u()(),h(34,"div")(35,"span",24),p(36),_(37,"translate"),u(),h(38,"strong"),p(39),u()()()),2&t){const e=y().$implicit,i=y(2);c(3),D("",v(4,18,"multi-resources.cpu"),":"),c(2),Ge(i.pctClass(e.stats.cpu_percent)),c(),D("",ue(7,20,e.stats.cpu_percent,"1.0-1"),"%"),c(4),D("",v(11,23,"multi-resources.mem"),":"),c(2),Ge(i.pctClass(e.stats.mem_percent)),c(),D("",ue(14,25,e.stats.mem_percent,"1.0-1"),"%"),c(4),D("",v(18,28,"multi-resources.disk"),":"),c(2),Ge(i.pctClass(e.stats.disk_percent)),c(),D("",ue(21,30,e.stats.disk_percent,"1.0-1"),"%"),c(4),D("",v(25,33,"multi-resources.tx"),":"),c(3),S(i.formatRate(e.txRate)),c(3),D("",v(31,35,"multi-resources.rx"),":"),c(3),S(i.formatRate(e.rxRate)),c(3),D("",v(37,37,"multi-resources.proc-rss"),":"),c(3),S(i.formatBytes(null==e.stats.process?null:e.stats.process.mem_rss))}}function sIe(t,n){if(1&t&&(h(0,"a",20)(1,"div",28)(2,"div",29),L(3,"span",21),h(4,"strong",7),p(5),u()(),h(6,"div",30),p(7),u(),x(8,oIe,2,1,"div",23),x(9,rIe,40,39,"div",31),u()()),2&t){const e=n.$implicit;C("routerLink",e.node.online?ie(6,_H,e.node.localPk):null),c(3),C("ngClass",e.node.online?"dot-green":"dot-red"),c(2),S(e.node.label||e.node.localPk),c(2),S(e.node.localPk),c(),k(e.error?8:-1),c(),k(e.stats?9:-1)}}function aIe(t,n){if(1&t&&(h(0,"div",8)(1,"mat-icon"),p(2,"memory"),u(),h(3,"span",9),p(4),_(5,"translate"),u(),x(6,zPe,4,7,"span",10),u(),h(7,"div",11)(8,"div",12)(9,"table",13)(10,"tr"),L(11,"th",14),h(12,"th",15),p(13),_(14,"translate"),u(),h(15,"th"),p(16),_(17,"translate"),u(),h(18,"th",16),p(19),_(20,"translate"),u(),h(21,"th",16),p(22),_(23,"translate"),u(),h(24,"th",16),p(25),_(26,"translate"),u(),h(27,"th",16),p(28),_(29,"translate"),u(),h(30,"th",16),p(31),_(32,"translate"),u(),h(33,"th",16),p(34),_(35,"translate"),u(),L(36,"th",17),u(),me(37,iIe,29,25,"a",18,wi().trackRow,!0),u(),h(39,"div",19),me(40,sIe,10,8,"a",20,wi().trackRow,!0),u()()()),2&t){const e=y();c(4),S(ue(5,10,"multi-resources.summary",ie(29,BPe,e.rows.length))),c(2),k(e.lastUpdated?6:-1),c(7),S(v(14,13,"multi-resources.visor")),c(3),S(v(17,15,"nodes.ip-location")),c(3),S(v(20,17,"multi-resources.cpu")),c(3),S(v(23,19,"multi-resources.mem")),c(3),S(v(26,21,"multi-resources.disk")),c(3),S(v(29,23,"multi-resources.tx")),c(3),S(v(32,25,"multi-resources.rx")),c(3),S(v(35,27,"multi-resources.proc-rss")),c(3),ge(e.rows),c(3),ge(e.rows)}}let lIe=(()=>{class t extends Lt{constructor(e,i,o){super(),this.nodeService=e,this.api=i,this.cdr=o,this.tabsData=[],this.rows=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"schedule",label:"nodes.uptime-title",linkParts:["/nodes","uptime"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=ds(5e3).pipe(zn(0),wt(()=>this.nodeService.getNodes()),wt(e=>{const i=(e||[]).filter(r=>r.online);return 0===i.length?se({nodes:e||[],stats:[]}):du(i.map(r=>this.api.get(`visors/${r.localPk}/host-stats`).pipe(ii(s=>se({__error:s?.message||"failed"}))))).pipe(wt(r=>se({nodes:e||[],stats:r.map((s,a)=>({pk:i[a].localPk,stats:s&&!s.__error?s:void 0,error:s&&s.__error?s.__error:void 0}))})))})).subscribe({next:({nodes:e,stats:i})=>{this.mergeStats(e,i),this.loading=!1,this.error=null,this.lastUpdated=new Date,this.cdr.markForCheck()},error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch resources"}}),super.ngOnInit()}ngOnDestroy(){this.sub?.unsubscribe()}mergeStats(e,i){const o=new Map;i.forEach(l=>o.set(l.pk,{stats:l.stats,error:l.error}));const r=new Map;this.rows.forEach(l=>r.set(l.node.localPk,l));const s=Date.now(),a=e.map(l=>{const d=o.get(l.localPk),f=r.get(l.localPk),m={node:l,...d};if(d?.stats){const g=d.stats.net_bytes_sent||0,b=d.stats.net_bytes_recv||0;if(f?.lastSampleAt&&void 0!==f.prevSent&&void 0!==f.prevRecv){const w=(s-f.lastSampleAt)/1e3;if(w>0){const M=Math.max(0,(g-f.prevSent)/w),E=Math.max(0,(b-f.prevRecv)/w);m.txRate=M,m.rxRate=E}}m.prevSent=g,m.prevRecv=b,m.lastSampleAt=s}return m});a.sort((l,d)=>{const f=(l.node.label||"").toLowerCase(),m=(d.node.label||"").toLowerCase();return f!==m?f=90?"pct-bad":e>=70?"pct-warn":"pct-ok"}formatRate(e){if(null==e||e<0)return"-";const i=["B/s","KB/s","MB/s","GB/s"];let o=0,r=e;for(;r>=1024&&o=1024&&o0?6:-1))},dependencies:[Ft,es,Ae,ci,tr,Gl,vr,we],styles:[".loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffbf;padding:24px 0}.error-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#f87171;padding:24px 0}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-green[_ngcontent-%COMP%]{background:#4caf50}.dot-red[_ngcontent-%COMP%]{background:#f44336}.visor-link[_ngcontent-%COMP%]{color:#fffffff2;text-decoration:none}.visor-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.visor-pk[_ngcontent-%COMP%]{color:#ffffff8c;font-size:11px;word-break:break-all;font-family:monospace}.visor-err[_ngcontent-%COMP%]{color:#f87171;font-size:12px;margin-top:2px}.dim[_ngcontent-%COMP%]{color:#fff9}.small[_ngcontent-%COMP%]{font-size:.85em}.pct-ok[_ngcontent-%COMP%]{color:#4caf50;font-weight:500}.pct-warn[_ngcontent-%COMP%]{color:#ff9800;font-weight:500}.pct-bad[_ngcontent-%COMP%]{color:#f44336;font-weight:600}.pct-na[_ngcontent-%COMP%]{color:#ffffff80}.mobile-card[_ngcontent-%COMP%]{background:#ffffff0a;border-radius:4px;padding:12px;margin-bottom:10px}.mobile-card[_ngcontent-%COMP%] .mobile-header[_ngcontent-%COMP%]{display:flex;align-items:center}.mobile-card[_ngcontent-%COMP%] .mobile-pk[_ngcontent-%COMP%]{color:#ffffff8c;font-size:11px;word-break:break-all;font-family:monospace;margin:4px 0 6px}.mobile-card[_ngcontent-%COMP%] .mobile-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;font-size:12px}"]})}}return t})();const cIe=()=>["nodes.uptime-title"],dIe=t=>["/nodes",t,"uptime"],uIe=(t,n)=>n.left;function hIe(t,n){1&t&&(h(0,"div",9),L(1,"mat-spinner",13),h(2,"span",14),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"uptime.loading-fleet")))}function fIe(t,n){if(1&t&&(h(0,"div",10)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",14),p(4),u()()),2&t){const e=y();c(4),S(e.error)}}function pIe(t,n){1&t&&(h(0,"div",11),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"uptime.fleet-empty")))}function mIe(t,n){if(1&t&&(h(0,"div",12)(1,"mat-icon"),p(2,"schedule"),u(),h(3,"span",15),p(4),_(5,"translate"),_(6,"translate"),_(7,"date"),u()()),2&t){const e=y();c(4),Kh(" ",e.rows.length," ",v(5,4,"common.visors")," \xb7 ",v(6,6,"uptime.last-updated"),": ",ue(7,8,e.lastUpdated,"HH:mm:ss")," ")}}function gIe(t,n){if(1&t&&(h(0,"span",33),p(1),u()),2&t){const e=n.$implicit;Hl("left",e.left,"%"),c(),S(e.label)}}function _Ie(t,n){if(1&t&&(h(0,"div",26)(1,"span",28),p(2,"\xa0"),u(),h(3,"span",29),p(4,"\xa0"),u(),h(5,"div",30),me(6,gIe,2,3,"span",31,uIe),u(),h(8,"span",32),p(9,"\xa0"),u()()),2&t){const e=y(2);c(6),ge(e.ticks)}}function bIe(t,n){if(1&t&&(h(0,"a",37),p(1),u()),2&t){const e=y().$implicit;C("routerLink",ie(3,dIe,e.pk))("matTooltip",e.label||e.pk),c(),S(e.pk)}}function vIe(t,n){if(1&t&&(h(0,"span",38),p(1),u()),2&t){const e=y().$implicit;C("matTooltip",e.version||e.pk),c(),S(e.pk)}}function yIe(t,n){if(1&t&&L(0,"span",41),2&t){const e=n.$implicit,i=y(3);C("ngClass",i.blockClass(e))("matTooltip",i.blockTooltip(e))}}function CIe(t,n){if(1&t&&(h(0,"div",34)(1,"span",35),L(2,"span",36),_(3,"translate"),x(4,bIe,2,5,"a",37)(5,vIe,2,2,"span",38),u(),h(6,"span",39),_(7,"translate"),p(8),u(),h(9,"div",40),me(10,yIe,1,2,"span",41,wi().trackBlock,!0),u(),h(12,"span",42),_(13,"translate"),p(14),u()()),2&t){const e=n.$implicit,i=y(2);ve("row-offline",!e.online),c(2),ve("online",e.online)("offline",!e.online),C("matTooltip",v(3,14,e.online?"uptime.online":"uptime.offline")),c(2),k(e.managed?4:5),c(2),C("ngClass",i.pctClass(e.recentPct))("matTooltip",v(7,16,"uptime.today-pct")+": "+i.fmtPct(e.recentPct)),c(2),D(" ",i.fmtPct(e.recentPct)," "),c(2),ge(e.blocks),c(2),C("ngClass",i.pctClass(e.windowPct))("matTooltip",v(13,18,"uptime.window-avg")+": "+i.fmtPct(e.windowPct)),c(2),D(" ",i.fmtPct(e.windowPct)," ")}}function wIe(t,n){if(1&t&&(h(0,"div",16)(1,"span",17),p(2),_(3,"translate"),u(),h(4,"span",18),L(5,"span",19),p(6),_(7,"translate"),u(),h(8,"span",18),L(9,"span",20),p(10,"1\u20133"),u(),h(11,"span",18),L(12,"span",21),p(13,"4\u20136"),u(),h(14,"span",18),L(15,"span",22),p(16,"7\u20139"),u(),h(17,"span",18),L(18,"span",23),p(19),_(20,"translate"),u(),h(21,"span",18),L(22,"span",24),p(23),_(24,"translate"),u()(),h(25,"div",25),x(26,_Ie,10,0,"div",26),me(27,CIe,15,20,"div",27,wi().trackRow,!0),u()),2&t){const e=y();c(2),D("",v(3,5,"uptime.legend"),":"),c(4),S(v(7,7,"uptime.legend-down")),c(13),S(v(20,9,"uptime.legend-up")),c(4),S(v(24,11,"uptime.legend-future")),c(3),k(e.ticks.length>0?26:-1),c(),ge(e.rows)}}let kIe=(()=>{class t extends Lt{constructor(e,i,o){super(),this.nodeService=e,this.api=i,this.cdr=o,this.tabsData=[],this.rows=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.windowDays=7,this.filter="connected",this.ticks=[],this.totalBlocks=0,this.allRows=[],this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"schedule",label:"nodes.uptime-title",linkParts:["/nodes","uptime"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=ds(6e4).pipe(zn(0),wt(()=>this.fetchOnce())).subscribe(),super.ngOnInit()}ngOnDestroy(){this.sub?.unsubscribe()}setWindow(e){e!==this.windowDays&&(this.windowDays=e,this.refreshNow())}setFilter(e){e!==this.filter&&(this.filter=e,this.applyFilter())}refreshNow(){this.fetchOnce().subscribe()}fetchOnce(){return du({summaries:this.api.get(`network/visor-uptime?days=${this.windowDays}`).pipe(ln(Ls(45e3)),ii(e=>(this.error=e?.message||"Failed to fetch network uptime",this.loading=!1,this.cdr.markForCheck(),se([])))),nodes:this.nodeService.getNodes().pipe(ii(()=>se([])))}).pipe(wt(({summaries:e,nodes:i})=>(this.consume(e||[],i||[]),se(null))))}consume(e,i){const o={};for(const g of i)o[g.localPk]=g;const r=new Set;for(const g of e){for(const b of Object.keys(g.timeline||{}))r.add(b);for(const b of Object.keys(g.daily||{}))r.add(b)}const s=Array.from(r).sort(),a=(new Date).toISOString().slice(0,10),l=new Date,d=Math.floor((60*l.getUTCHours()+l.getUTCMinutes())/5),f=Math.floor(d/12),m=[];for(const g of e){const b=this.buildBlocks(g,s,a,d,f);let w=0,M=0;for(const q of b)q.future||(w+=q.count,M+=12);const E=M>0?w/M*100:0;let I=0;const A=g.daily||{};if(void 0!==A[a]){const q=parseFloat(A[a]);I=isNaN(q)?0:q}else{const q=Object.keys(A).sort().reverse();for(const Y of q){const ee=parseFloat(A[Y]);if(!isNaN(ee)){I=ee;break}}}const W=!!o[g.pk];m.push({pk:g.pk,online:g.on,version:g.version||"",blocks:b,windowPct:E,recentPct:I,managed:W,label:W&&o[g.pk].label||""})}this.applyTrimmed(m),m.sort((g,b)=>b.windowPct-g.windowPct),this.allRows=m,this.totalBlocks=m.length>0?m[0].blocks.length:0,this.ticks=this.buildTicks(this.totalBlocks),this.applyFilter(),this.loading=!1,this.error=null,this.lastUpdated=new Date,this.cdr.markForCheck()}buildBlocks(e,i,o,r,s){const a=[];for(const l of i){const d=e.timeline&&e.timeline[l]||"",f=d.length>=288?d.slice(0,288):d.padEnd(288," "),m=l===o;for(let g=0;g<24;g++){const b=12*g,w=b+12;let M=0;for(let A=b;As)E=!0,M=-1;else if(m&&g===s&&r{for(const l of e){const d=l.blocks[a];if(!d||d.future||d.count>0)return!1}return!0};let r=0;for(;r=48){let o=1;for(let r=24;re.managed):this.allRows.slice(),this.cdr.markForCheck()}fmtPct(e){return e>=99.95?"100%":e>0&&e<1?"<1%":e.toFixed(1)+"%"}pctClass(e){return e>=99?"up-good":e>=80?"up-mid":"up-bad"}blockClass(e){return e.future?"future":e.count<=0?"lvl0":e.count<=3?"lvl1":e.count<=6?"lvl2":e.count<=9?"lvl3":"lvl4"}blockTooltip(e){return e.future?`${e.label} \u2014 future`:e.count<0?`${e.label} \u2014 no data`:`${e.label} \u2014 ${e.count}/12 slots online`}trackRow(e,i){return i.pk}trackBlock(e,i){return e}static{this.\u0275fac=function(i){return new(i||t)(O(Yi),O(fi),O(Dt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-multi-visor-uptime"]],standalone:!1,features:[_e],decls:35,vars:38,consts:[[3,"titleParts","tabsData","selectedTabIndex"],[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow"],[1,"up-controls"],[1,"control-group"],[1,"control-label"],["mat-button","",3,"click"],["mat-stroked-button","",1,"refresh-btn",3,"click"],[3,"inline"],[1,"loading-row"],[1,"error-row"],[1,"up-empty"],[1,"summary-line"],[3,"diameter"],[1,"ml-2"],[1,"ml-1"],[1,"legend","small"],[1,"legend-label"],[1,"legend-item"],[1,"up-block","lvl0"],[1,"up-block","lvl1"],[1,"up-block","lvl2"],[1,"up-block","lvl3"],[1,"up-block","lvl4"],[1,"up-block","future"],[1,"fleet-graph"],[1,"up-row","tick-row"],[1,"up-row",3,"row-offline"],[1,"up-row-pk","small","dim"],[1,"up-row-today","small","dim"],[1,"up-row-bar","tick-bar"],[1,"tick",3,"left"],[1,"up-row-pct","small","dim"],[1,"tick"],[1,"up-row"],[1,"up-row-pk","mono","small"],[1,"dot",3,"matTooltip"],[3,"routerLink","matTooltip"],[3,"matTooltip"],[1,"up-row-today","mono","small",3,"ngClass","matTooltip"],[1,"up-row-bar"],[1,"up-block",3,"ngClass","matTooltip"],[1,"up-row-pct","mono","small",3,"ngClass","matTooltip"]],template:function(i,o){1&i&&(L(0,"app-top-bar",0),h(1,"div",1)(2,"div",2)(3,"div",3)(4,"div",4)(5,"span",5),p(6),_(7,"translate"),u(),h(8,"button",6),F("click",function(){return o.setWindow(1)}),p(9),_(10,"translate"),u(),h(11,"button",6),F("click",function(){return o.setWindow(7)}),p(12,"7d"),u(),h(13,"button",6),F("click",function(){return o.setWindow(30)}),p(14,"30d"),u()(),h(15,"div",4)(16,"span",5),p(17),_(18,"translate"),u(),h(19,"button",6),F("click",function(){return o.setFilter("connected")}),p(20),_(21,"translate"),u(),h(22,"button",6),F("click",function(){return o.setFilter("all")}),p(23),_(24,"translate"),u()(),h(25,"button",7),F("click",function(){return o.refreshNow()}),h(26,"mat-icon",8),p(27,"refresh"),u(),p(28),_(29,"translate"),u()(),x(30,hIe,5,4,"div",9),x(31,fIe,5,1,"div",10),x(32,pIe,3,3,"div",11),x(33,mIe,8,11,"div",12),x(34,wIe,29,13),u()()),2&i&&(C("titleParts",vt(37,cIe))("tabsData",o.tabsData)("selectedTabIndex",7),c(6),D("",v(7,25,"uptime.window"),":"),c(2),ve("active",1===o.windowDays),c(),S(v(10,27,"uptime.window-now")),c(2),ve("active",7===o.windowDays),c(2),ve("active",30===o.windowDays),c(4),D("",v(18,29,"uptime.fleet-filter"),":"),c(2),ve("active","connected"===o.filter),c(),S(v(21,31,"uptime.fleet-filter-connected")),c(2),ve("active","all"===o.filter),c(),S(v(24,33,"uptime.fleet-filter-all")),c(3),C("inline",!0),c(2),D(" ",v(29,35,"uptime.refresh")," "),c(2),k(o.loading&&0===o.rows.length?30:-1),c(),k(o.error&&0===o.rows.length?31:-1),c(),k(o.loading||o.error||0!==o.rows.length?-1:32),c(),k(o.lastUpdated&&o.rows.length>0?33:-1),c(),k(o.rows.length>0?34:-1))},dependencies:[Ft,es,Ht,Ae,Et,ci,tr,vr,we],styles:['.up-controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:12px}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] .control-label[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffa6}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{min-width:0;padding:0 12px!important;opacity:.6;color:#ffffffd9!important}.up-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{opacity:1;background:#2196f32e!important;color:#fff!important}.up-controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%]{margin-left:auto;color:#ffffffd9!important}.up-controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:inherit}.loading-row[_ngcontent-%COMP%], .error-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:12px}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;font-size:.9em;color:#ffffffb3;margin-bottom:8px}.summary-line[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{font-size:16px;height:16px;width:16px}.up-empty[_ngcontent-%COMP%]{padding:24px;text-align:center;color:#ffffff80;font-style:italic}.legend[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px;color:#ffffffa6}.legend[_ngcontent-%COMP%] .legend-label[_ngcontent-%COMP%]{font-weight:600;color:#ffffffbf}.legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px}.legend[_ngcontent-%COMP%] .up-block[_ngcontent-%COMP%]{display:inline-block;width:12px;height:10px;vertical-align:middle;border:1px solid rgba(0,0,0,.25);border-radius:1px}.fleet-graph[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1px;font-family:monospace}.up-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:1px 0}.up-row[_ngcontent-%COMP%] .up-row-pk[_ngcontent-%COMP%]{flex:0 0 auto;width:600px;max-width:38vw;color:#ffffffbf;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.up-row[_ngcontent-%COMP%] .up-row-pk[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:inherit;text-decoration:none}.up-row[_ngcontent-%COMP%] .up-row-pk[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.up-row[_ngcontent-%COMP%] .up-row-bar[_ngcontent-%COMP%]{flex:1;display:flex;height:14px;background:#0003;border-radius:2px;overflow:hidden;min-width:0}.up-row[_ngcontent-%COMP%] .up-row-today[_ngcontent-%COMP%]{flex:0 0 auto;width:56px;text-align:right;font-weight:600}.up-row[_ngcontent-%COMP%] .up-row-pct[_ngcontent-%COMP%]{flex:0 0 auto;width:56px;text-align:right}.up-row.tick-row[_ngcontent-%COMP%]{align-items:flex-end;padding:0}.up-row.tick-row[_ngcontent-%COMP%] .tick-bar[_ngcontent-%COMP%]{position:relative;height:14px;background:transparent;border-radius:0;overflow:visible}.up-row.tick-row[_ngcontent-%COMP%] .tick[_ngcontent-%COMP%]{position:absolute;bottom:0;transform:translate(-50%);font-size:.75em;color:#ffffff80;pointer-events:none;white-space:nowrap}.up-row.tick-row[_ngcontent-%COMP%] .tick[_ngcontent-%COMP%]:after{content:"";display:block;margin:0 auto;width:1px;height:4px;background:#ffffff4d}.up-row.row-offline[_ngcontent-%COMP%]{opacity:.6}.up-block[_ngcontent-%COMP%]{flex:1;min-width:1px;height:100%;border-right:1px solid rgba(0,0,0,.18)}.up-block[_ngcontent-%COMP%]:last-child{border-right:none}.up-block.lvl0[_ngcontent-%COMP%]{background:#e5393559}.up-block.lvl1[_ngcontent-%COMP%]{background:#4caf5040}.up-block.lvl2[_ngcontent-%COMP%]{background:#4caf5080}.up-block.lvl3[_ngcontent-%COMP%]{background:#4caf50bf}.up-block.lvl4[_ngcontent-%COMP%]{background:#4caf50}.up-block.future[_ngcontent-%COMP%]{background:#ffffff0a;background-image:repeating-linear-gradient(45deg,transparent,transparent 2px,rgba(255,255,255,.06) 2px,rgba(255,255,255,.06) 4px)}.dot[_ngcontent-%COMP%]{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:middle;box-shadow:0 0 0 1px #0006 inset}.dot.online[_ngcontent-%COMP%]{background:#4caf50;box-shadow:0 0 0 1px #0006 inset,0 0 4px #4caf50b3}.dot.offline[_ngcontent-%COMP%]{background:#e53935}.mono[_ngcontent-%COMP%]{font-family:monospace}.small[_ngcontent-%COMP%]{font-size:.85em}.dim[_ngcontent-%COMP%]{color:#ffffff8c}.up-good[_ngcontent-%COMP%]{color:#4caf50}.up-mid[_ngcontent-%COMP%]{color:#ff9800}.up-bad[_ngcontent-%COMP%]{color:#e53935}.ml-2[_ngcontent-%COMP%]{margin-left:8px}.ml-1[_ngcontent-%COMP%]{margin-left:4px}.mt-3[_ngcontent-%COMP%]{margin-top:12px}@media(max-width:1100px){.up-row[_ngcontent-%COMP%] .up-row-pk[_ngcontent-%COMP%]{width:280px;max-width:35vw}}']})}}return t})();const SIe=()=>["nodes.transports-title"],MIe=(t,n,e)=>({transports:t,bandwidth:n,days:e}),DIe=t=>({"nt-row-offline":t}),vH=t=>({"nt-type-offline":t}),TIe=t=>({"nt-child-offline":t});function EIe(t,n){if(1&t){const e=re();h(0,"div",5)(1,"span",6),p(2),_(3,"translate"),u(),h(4,"button",7),F("click",function(){return V(e),H(y().setHideEdges(!1))}),p(5),_(6,"translate"),u(),h(7,"button",7),F("click",function(){return V(e),H(y().setHideEdges(!0))}),p(8),_(9,"translate"),u()()}if(2&t){const e=y();c(2),D("",v(3,7,"network-transports.edges"),":"),c(2),ve("active",!e.hideEdges),c(),D(" ",v(6,9,"network-transports.edges-show")," "),c(2),ve("active",e.hideEdges),c(),D(" ",v(9,11,"network-transports.edges-hide")," ")}}function PIe(t,n){1&t&&(h(0,"div",10),L(1,"mat-spinner",12),h(2,"span",13),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"network-transports.loading")))}function IIe(t,n){if(1&t&&(h(0,"div",11)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",13),p(4),u()()),2&t){const e=y();c(4),S(e.error)}}function OIe(t,n){if(1&t&&(h(0,"span",16),p(1),_(2,"translate"),_(3,"date"),u()),2&t){const e=y(2);c(),nt(" \u2014 ",v(2,2,"network-transports.last-updated"),": ",ue(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function AIe(t,n){1&t&&(h(0,"th"),p(1),_(2,"translate"),u(),h(3,"th"),p(4),_(5,"translate"),u()),2&t&&(c(),S(v(2,2,"network-transports.edge-a")),c(3),S(v(5,4,"network-transports.edge-b")))}function RIe(t,n){if(1&t&&(h(0,"td",21),p(1),u(),h(2,"td",21),p(3),u()),2&t){const e=y().$implicit;c(),S(e.edge_a),c(2),S(e.edge_b)}}function FIe(t,n){if(1&t&&(h(0,"tr",20)(1,"td",21),p(2),u(),h(3,"td")(4,"span",22),p(5),u()(),x(6,RIe,4,2),h(7,"td",19),p(8),u(),h(9,"td",19),p(10),u(),h(11,"td",19)(12,"strong"),p(13),u()(),h(14,"td",23),p(15),u()()),2&t){const e=n.$implicit,i=y(3);C("ngClass",ie(10,DIe,!e.live)),c(2),S(e.id),c(2),C("ngClass",ie(12,vH,!e.live)),c(),S(e.type),c(),k(i.hideEdges?-1:6),c(2),S(i.fmtBytes(e.sent)),c(2),S(i.fmtBytes(e.recv)),c(3),S(i.fmtBytes(e.bandwidth)),c(),C("matTooltip",i.fmtLatencyFull(e.latency)),c(),S(i.fmtLatency(e.latency))}}function NIe(t,n){if(1&t&&(h(0,"table",17)(1,"tr")(2,"th"),p(3),_(4,"translate"),u(),h(5,"th"),p(6),_(7,"translate"),u(),x(8,AIe,6,6),h(9,"th",19),p(10),_(11,"translate"),u(),h(12,"th",19),p(13),_(14,"translate"),u(),h(15,"th",19),p(16),_(17,"translate"),u(),h(18,"th",19),p(19),_(20,"translate"),u()(),me(21,FIe,16,14,"tr",20,wi().trackTpId,!0),u()),2&t){const e=y(2);c(3),S(v(4,7,"network-transports.tp-id")),c(3),S(v(7,9,"network-transports.type")),c(2),k(e.hideEdges?-1:8),c(2),S(v(11,11,"network-transports.sent")),c(3),S(v(14,13,"network-transports.recv")),c(3),S(v(17,15,"network-transports.total")),c(3),S(v(20,17,"network-transports.latency")),c(2),ge(e.visibleByTransport)}}function LIe(t,n){if(1&t&&(h(0,"span",30),_(1,"translate"),p(2),u()),2&t){const e=y().$implicit;C("matTooltip",v(1,2,"network-transports.offline-count-tooltip")),c(2),D(" ",e.offlineCount," offline ")}}function BIe(t,n){if(1&t&&(h(0,"span",38),p(1),u()),2&t){const e=y().$implicit,i=y(5);C("matTooltip",i.fmtLatencyFull(e.latency)),c(),S(i.fmtLatency(e.latency))}}function VIe(t,n){if(1&t&&(h(0,"div",32)(1,"span",33),p(2),u(),h(3,"span",34),p(4),u(),h(5,"span",35),p(6),u(),h(7,"span",36),p(8,"\u2192"),u(),h(9,"span",37),p(10),u(),h(11,"span",29),p(12),u(),h(13,"span",29),p(14),u(),h(15,"span")(16,"strong"),p(17),u()(),x(18,BIe,2,2,"span",38),u()),2&t){const e=n.$implicit,i=n.$index,o=n.$count,r=y(5);C("ngClass",ie(10,TIe,!e.live)),c(2),S(i===o-1?"\u2514\u2500\u2500":"\u251c\u2500\u2500"),c(2),S(e.id),c(),C("ngClass",ie(12,vH,!e.live)),c(),S(e.type),c(4),S(e.remote),c(2),D("\u2191 ",r.fmtBytes(e.sent)),c(2),D("\u2193 ",r.fmtBytes(e.recv)),c(3),S(r.fmtBytes(e.bandwidth)),c(),k(e.latency&&e.latency.avg?18:-1)}}function HIe(t,n){if(1&t&&(h(0,"div",31),me(1,VIe,19,14,"div",32,wi().trackChildId,!0),u()),2&t){const e=y().$implicit;c(),ge(e.transports)}}function UIe(t,n){if(1&t){const e=re();h(0,"div",24)(1,"div",25),F("click",function(){const o=V(e).$implicit;return H(y(3).toggleVisor(o))}),h(2,"mat-icon",26),p(3),u(),h(4,"span",27),p(5),u(),h(6,"span",28)(7,"strong"),p(8),u()(),h(9,"span",29),p(10),u(),h(11,"span",29),p(12),u(),x(13,LIe,3,4,"span",30),u(),x(14,HIe,3,0,"div",31),u()}if(2&t){const e=n.$implicit,i=y(3);c(2),C("inline",!0),c(),S(e.expanded?"expand_more":"chevron_right"),c(2),S(e.pk),c(3),S(i.fmtBytes(e.bandwidth)),c(2),nt("\u2191 ",i.fmtBytes(e.sent)," \u2193 ",i.fmtBytes(e.recv)),c(2),D("\xb7 ",e.transports.length," tp"),c(),k(!i.hideOffline&&e.offlineCount>0?13:-1),c(),k(e.expanded?14:-1)}}function zIe(t,n){if(1&t&&(h(0,"div",18),me(1,UIe,15,9,"div",24,wi().trackVisorPk,!0),u()),2&t){const e=y(2);c(),ge(e.visibleByVisor)}}function jIe(t,n){if(1&t&&(h(0,"div",14)(1,"mat-icon"),p(2,"swap_horiz"),u(),h(3,"span",15),p(4),_(5,"translate"),u(),x(6,OIe,4,7,"span",16),u(),x(7,NIe,23,19,"table",17),x(8,zIe,3,0,"div",18)),2&t){const e=y();c(4),D(" ",ue(5,4,"network-transports.summary",EA(7,MIe,e.rawCount,e.fmtBytes(e.networkBandwidth),e.days))," "),c(2),k(e.lastUpdated?6:-1),c(),k("compact"===e.viewMode?7:-1),c(),k("tree"===e.viewMode?8:-1)}}let $Ie=(()=>{class t extends Lt{constructor(e,i){super(),this.api=e,this.cdr=i,this.tabsData=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.days=1,this.viewMode="compact",this.hideEdges=!1,this.hideOffline=!1,this.rawCount=0,this.networkBandwidth=0,this.byTransport=[],this.byVisor=[],this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"schedule",label:"nodes.uptime-title",linkParts:["/nodes","uptime"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=ds(3e5).pipe(zn(0),wt(()=>this.fetch())).subscribe(),super.ngOnInit()}ngOnDestroy(){this.sub?.unsubscribe()}refreshNow(){this.fetch().subscribe()}setDays(e){e!==this.days&&(this.days=e,this.fetch().subscribe())}setViewMode(e){this.viewMode=e}setHideEdges(e){this.hideEdges=e}setHideOffline(e){this.hideOffline=e}get visibleByTransport(){return this.hideOffline?this.byTransport.filter(e=>e.live):this.byTransport}get visibleByVisor(){return this.hideOffline?this.byVisor.map(e=>({...e,transports:e.transports.filter(i=>i.live)})).filter(e=>e.transports.length>0):this.byVisor}toggleVisor(e){e.expanded=!e.expanded}fetch(){return this.loading=0===this.byTransport.length&&0===this.byVisor.length,this.api.get(`network/transports?days=${this.days}`).pipe(ii(e=>(this.error=e?.message||"Failed to fetch transports",this.loading=!1,this.cdr.markForCheck(),se(null))),wt(e=>null===e?se(null):(this.consume(Array.isArray(e)?e:[]),se(e))))}consume(e){this.rawCount=e.length;let i=0;const o=[],r=new Map;for(const a of e){if(!a.edges||a.edges.length<2)continue;const[l,d]=this.verifiedBandwidth(a),f=l+d;if(i+=f,0===f&&!a.latency)continue;o.push({id:a.id,type:a.type,edge_a:a.edges[0],edge_b:a.edges[1],sent:l,recv:d,bandwidth:f,latency:a.latency,live:!!a.live});const m=r.get(a.edges[0])||this.newVisorNode(a.edges[0]);m.sent+=l,m.recv+=d,m.bandwidth+=f,a.live?m.liveCount++:m.offlineCount++,m.transports.push({id:a.id,type:a.type,remote:a.edges[1],sent:l,recv:d,bandwidth:f,latency:a.latency,live:!!a.live}),r.set(a.edges[0],m);const g=r.get(a.edges[1])||this.newVisorNode(a.edges[1]);g.sent+=d,g.recv+=l,g.bandwidth+=f,a.live?g.liveCount++:g.offlineCount++,g.transports.push({id:a.id,type:a.type,remote:a.edges[0],sent:d,recv:l,bandwidth:f,latency:a.latency,live:!!a.live}),r.set(a.edges[1],g)}o.sort((a,l)=>l.bandwidth-a.bandwidth);const s=Array.from(r.values()).sort((a,l)=>l.bandwidth-a.bandwidth);s.forEach(a=>a.transports.sort((l,d)=>d.bandwidth-l.bandwidth)),this.byTransport=o,this.byVisor=s,this.networkBandwidth=i,this.loading=!1,this.error=null,this.lastUpdated=new Date,this.cdr.markForCheck()}newVisorNode(e){return{pk:e,sent:0,recv:0,bandwidth:0,transports:[],liveCount:0,offlineCount:0,expanded:!1}}verifiedBandwidth(e){let i=0,o=0;for(const r of e.daily||[]){const s=!!r.a&&((r.a.sent||0)>0||(r.a.recv||0)>0),a=!!r.b&&((r.b.sent||0)>0||(r.b.recv||0)>0);s&&a?(i+=Math.min(r.a.sent||0,r.b.recv||0),o+=Math.min(r.a.recv||0,r.b.sent||0)):s?(i+=r.a.sent||0,o+=r.a.recv||0):a&&(i+=r.b.recv||0,o+=r.b.sent||0)}return[i,o]}fmtBytes(e){if(!e||e<0)return"-";const i=["B","KB","MB","GB","TB"];let o=0,r=e;for(;r>=1024&&o0||o.byVisor.length>0?47:-1))},dependencies:[Ft,Ht,Ae,Et,ci,tr,vr,we],styles:[".controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:12px;padding:10px 14px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:6px}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] .control-label[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffa6;margin-right:4px}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{min-width:0;padding:0 12px!important;opacity:.6;color:#ffffffd9!important}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{opacity:1;background:#2196f32e!important;color:#fff!important}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:inherit}.controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%]{margin-left:auto;color:#ffffffd9!important}.controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:inherit}.loading-row[_ngcontent-%COMP%], .error-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:24px 0}.error-row[_ngcontent-%COMP%]{color:#f87171}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.dim[_ngcontent-%COMP%]{color:#fff9}.small[_ngcontent-%COMP%]{font-size:.85em}.mono[_ngcontent-%COMP%]{font-family:monospace;word-break:break-all}.num[_ngcontent-%COMP%]{text-align:right}.nt-compact[_ngcontent-%COMP%]{table-layout:auto}.nt-compact[_ngcontent-%COMP%] td.mono[_ngcontent-%COMP%]{font-size:11px}.nt-compact[_ngcontent-%COMP%] th.num[_ngcontent-%COMP%], .nt-compact[_ngcontent-%COMP%] td.num[_ngcontent-%COMP%]{white-space:nowrap}.nt-compact[_ngcontent-%COMP%] tr.nt-row-offline[_ngcontent-%COMP%]{background:#e5393514;color:#ffb4b4f2}.nt-compact[_ngcontent-%COMP%] tr.nt-row-offline[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{box-shadow:inset 3px 0 #e53935b3}.nt-compact[_ngcontent-%COMP%] tr.nt-row-offline[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{opacity:.95}.nt-type-pill[_ngcontent-%COMP%]{display:inline-block;padding:1px 6px;border-radius:3px;font-size:11px;text-transform:lowercase;background:#2196f32e;border:1px solid rgba(33,150,243,.35);color:#ffffffe6}.nt-type-pill.nt-type-offline[_ngcontent-%COMP%]{background:#e539352e;border-color:#e5393566;color:#ffc8c8f2}.nt-offline-count[_ngcontent-%COMP%]{margin-left:4px;font-size:11px;color:#e53935d9;background:#e539351f;border:1px solid rgba(229,57,53,.3);border-radius:3px;padding:0 6px}.nt-tree[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px}.nt-visor[_ngcontent-%COMP%]{background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:4px}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:6px 10px;cursor:pointer;flex-wrap:wrap}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%]:hover{background:#ffffff0a}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .exp[_ngcontent-%COMP%]{color:#fff9}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .nt-pk[_ngcontent-%COMP%]{flex:1 1 320px;min-width:0;font-size:11px;color:#ffffffd9}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .nt-bw[_ngcontent-%COMP%]{font-size:13px}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .dim[_ngcontent-%COMP%]{font-size:12px}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%]{padding:4px 12px 8px 36px;display:flex;flex-direction:column;gap:4px}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;padding:2px 0}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-prefix[_ngcontent-%COMP%]{font-family:monospace;color:#ffffff73}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-tp-id[_ngcontent-%COMP%]{font-size:11px;color:#ffffffd9}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-tp-type[_ngcontent-%COMP%]{background:#2196f32e;border:1px solid rgba(33,150,243,.35);padding:0 6px;border-radius:3px;font-size:10px;text-transform:lowercase}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-tp-type.nt-type-offline[_ngcontent-%COMP%]{background:#e539352e;border-color:#e5393566;color:#ffc8c8f2}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-arrow[_ngcontent-%COMP%]{color:#ffffff73}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-tp-remote[_ngcontent-%COMP%]{font-size:11px;color:#ffffffb3}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child.nt-child-offline[_ngcontent-%COMP%]{opacity:.55;color:#ffc8c8b3}"]})}}return t})(),WIe=(()=>{class t{constructor(e){this.apiService=e}getSessions(e){return this.apiService.get(`visors/${e}/dmsg/sessions`)}connectAll(e){return this.apiService.post(`visors/${e}/dmsg/connect-all`)}setSessionsCount(e,i){return this.apiService.put(`visors/${e}/dmsg/sessions-count`,{count:i})}static{this.\u0275fac=function(i){return new(i||t)(ce(fi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function GIe(t,n){1&t&&(h(0,"div",1),L(1,"mat-spinner",3),h(2,"span",4),p(3),_(4,"translate"),u()()),2&t&&(c(),C("diameter",16),c(2),S(v(4,2,"dmsg-settings.loading")))}function qIe(t,n){if(1&t&&(h(0,"div",2)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",4),p(4),u()()),2&t){const e=y();c(4),S(e.error)}}function KIe(t,n){if(1&t&&(h(0,"span",7),p(1),_(2,"translate"),_(3,"date"),u()),2&t){const e=y(2);c(),nt(" \u2014 ",v(2,2,"dmsg-settings.last-updated"),": ",ue(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function YIe(t,n){1&t&&L(0,"mat-spinner",11),2&t&&C("diameter",14)}function XIe(t,n){1&t&&L(0,"mat-spinner",11),2&t&&C("diameter",14)}function ZIe(t,n){if(1&t&&(h(0,"div",19),p(1),_(2,"translate"),u()),2&t){const e=y(3);c(),nt(" ",v(2,2,"dmsg-settings.result-failed"),": ",e.objectKeys(e.lastActionResult.failed).length," ")}}function QIe(t,n){if(1&t&&(h(0,"div",15)(1,"span",18),p(2),u(),p(3),_(4,"translate"),_(5,"translate"),_(6,"translate"),x(7,ZIe,3,4,"div",19),u()),2&t){const e=y(2);c(2),D("",e.lastActionLabel,":"),c(),K0(" ",v(4,8,"dmsg-settings.result-total")," ",e.lastActionResult.total,", ",v(5,10,"dmsg-settings.result-already")," ",e.lastActionResult.already_connected,", ",v(6,12,"dmsg-settings.result-new")," ",e.lastActionResult.newly_connected," "),c(4),k(e.lastActionResult.failed&&e.objectKeys(e.lastActionResult.failed).length>0?7:-1)}}function JIe(t,n){if(1&t&&(h(0,"div",26),p(1),u()),2&t){const e=n.$implicit;c(),S(e)}}function eOe(t,n){if(1&t&&(h(0,"div",24),me(1,JIe,2,1,"div",26,wi().trackByPk,!0),u()),2&t){const e=y().$implicit;c(),ge(e.servers)}}function tOe(t,n){1&t&&(h(0,"div",25),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"dmsg-settings.no-sessions")))}function nOe(t,n){if(1&t&&(h(0,"div",16)(1,"div",20)(2,"span",21),p(3),u(),h(4,"span",22),p(5),_(6,"translate"),u()(),h(7,"div",23),p(8),u(),x(9,eOe,3,0,"div",24)(10,tOe,3,3,"div",25),u()),2&t){const e=n.$implicit,i=y(2);c(3),S(i.roleLabel(e.role)),c(2),nt("",e.count," ",v(6,5,"dmsg-settings.sessions")),c(3),S(e.pk),c(),k(e.servers&&e.servers.length>0?9:10)}}function iOe(t,n){1&t&&(h(0,"div",17)(1,"div",25),p(2),_(3,"translate"),u()()),2&t&&(c(2),S(v(3,1,"dmsg-settings.no-clients")))}function oOe(t,n){if(1&t){const e=re();h(0,"div",5)(1,"mat-icon"),p(2,"hub"),u(),h(3,"span",6),p(4),_(5,"translate"),u(),x(6,KIe,4,7,"span",7),u(),h(7,"div",8)(8,"div",9)(9,"button",10),F("click",function(){return V(e),H(y().connectAll())}),x(10,YIe,1,1,"mat-spinner",11),p(11),_(12,"translate"),u()(),h(13,"span",12),p(14,"|"),u(),h(15,"div",9)(16,"label",13),p(17),_(18,"translate"),u(),h(19,"input",14),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.sessionsCountInput,o)||(r.sessionsCountInput=o),H(o)}),u(),h(20,"button",10),F("click",function(){return V(e),H(y().applySessionsCount())}),x(21,XIe,1,1,"mat-spinner",11),p(22),_(23,"translate"),u()()(),x(24,QIe,8,14,"div",15),me(25,nOe,11,7,"div",16,wi().trackByRole,!0),x(27,iOe,4,3,"div",17)}if(2&t){const e=y();c(4),S(v(5,13,"dmsg-settings.summary")),c(2),k(e.lastUpdated?6:-1),c(3),C("disabled",e.connectAllInFlight||e.setCountInFlight),c(),k(e.connectAllInFlight?10:-1),c(),D(" ",v(12,15,"dmsg-settings.connect-all")," "),c(6),D("",v(18,17,"dmsg-settings.sessions-count-label"),":"),c(2),Kt("ngModel",e.sessionsCountInput),C("disabled",e.setCountInFlight||e.connectAllInFlight),c(),C("disabled",e.setCountInFlight||e.connectAllInFlight),c(),k(e.setCountInFlight?21:-1),c(),D(" ",v(23,19,"dmsg-settings.apply-count")," "),c(2),k(e.lastActionResult?24:-1),c(),ge(e.clientList()),c(2),k(0===e.clientList().length?27:-1)}}let rOe=(()=>{class t extends Lt{constructor(e,i){super(),this.dmsgSvc=e,this.snackbar=i,this.pk="",this.sessions=null,this.loading=!0,this.error=null,this.lastUpdated=null,this.sessionsCountInput=0,this.connectAllInFlight=!1,this.setCountInFlight=!1,this.lastActionResult=null,this.lastActionLabel=""}ngOnInit(){return this.nodeSub=Me.currentNode.subscribe(e=>{const i=!this.pk;this.pk=e?.localPk||"",i&&this.pk&&this.startPolling()}),super.ngOnInit()}ngOnDestroy(){this.nodeSub?.unsubscribe(),this.pollSub?.unsubscribe()}startPolling(){this.pollSub=ds(2e4).pipe(zn(0),wt(()=>this.dmsgSvc.getSessions(this.pk))).subscribe({next:e=>{this.sessions=e||{},this.loading=!1,this.error=null,this.lastUpdated=new Date},error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch dmsg sessions"}})}refresh(){this.pk&&this.dmsgSvc.getSessions(this.pk).subscribe({next:e=>{this.sessions=e||{},this.lastUpdated=new Date},error:()=>{}})}connectAll(){this.connectAllInFlight||!this.pk||(this.connectAllInFlight=!0,this.lastActionResult=null,this.dmsgSvc.connectAll(this.pk).subscribe({next:e=>{this.connectAllInFlight=!1,this.lastActionResult=e,this.lastActionLabel="Connect to all",this.snackbar.showDone(`Opened ${e.newly_connected} new session(s); already had ${e.already_connected}.`),this.refresh()},error:e=>{this.connectAllInFlight=!1,this.snackbar.showError(`connect-all failed: ${e?.message||"unknown error"}`)}}))}applySessionsCount(){if(!this.setCountInFlight&&this.pk){if(this.sessionsCountInput<0)return void this.snackbar.showError("Sessions count must be >= 0");this.setCountInFlight=!0,this.lastActionResult=null,this.dmsgSvc.setSessionsCount(this.pk,this.sessionsCountInput).subscribe({next:e=>{this.setCountInFlight=!1,this.lastActionResult=e,this.lastActionLabel=`Set sessions_count = ${this.sessionsCountInput}`,this.snackbar.showDone(`Persisted sessions_count=${this.sessionsCountInput}; opened ${e.newly_connected} new session(s).`),this.refresh()},error:e=>{this.setCountInFlight=!1,this.snackbar.showError(`set-sessions failed: ${e?.message||"unknown error"}`)}})}}clientList(){const e=[];return this.sessions&&(this.sessions.main&&e.push(this.sessions.main),this.sessions.route_setup&&e.push(this.sessions.route_setup),this.sessions.transport_setup&&e.push(this.sessions.transport_setup)),e}roleLabel(e){switch(e){case"main":return"Main visor";case"route_setup":return"Route Setup Node";case"transport_setup":return"Transport Setup Node";default:return e}}trackByRole(e,i){return i.role}trackByPk(e,i){return i}objectKeys(e){return e?Object.keys(e):[]}static{this.\u0275fac=function(i){return new(i||t)(O(WIe),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-dmsg-settings"]],standalone:!1,features:[_e],decls:4,vars:3,consts:[[1,"dmsg-tab-body"],[1,"loading-row"],[1,"error-row"],[3,"diameter"],[1,"ml-2"],[1,"summary-line"],[1,"ml-1"],[1,"last-updated"],[1,"actions","mt-3"],[1,"action-group"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"d-inline-block","mr-2",3,"diameter"],[1,"divider"],["for","sessions-count"],["id","sessions-count","type","number","min","0","max","99",3,"ngModelChange","ngModel","disabled"],[1,"action-result"],[1,"client-card"],[1,"client-card","missing"],[1,"result-label"],[1,"result-failed"],[1,"client-header"],[1,"role"],[1,"count"],[1,"client-pk"],[1,"server-list"],[1,"empty"],[1,"server"]],template:function(i,o){1&i&&(h(0,"div",0),x(1,GIe,5,4,"div",1),x(2,qIe,5,1,"div",2),x(3,oOe,28,21),u()),2&i&&(c(),k(o.loading&&!o.sessions?1:-1),c(),k(o.error&&!o.sessions?2:-1),c(),k(o.sessions?3:-1))},dependencies:[Qt,Oa,Jt,gc,hv,Ht,Ae,gu,ci,vr,we],styles:['@charset "UTF-8";.dmsg-tab-body[_ngcontent-%COMP%]{margin-top:1.5rem}.loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffbf;padding:24px 0}.error-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#f87171;padding:24px 0}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:16px 0 24px;padding:14px 16px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:6px}.actions[_ngcontent-%COMP%] .action-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.actions[_ngcontent-%COMP%] .action-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{color:#ffffffbf;font-size:.9em}.actions[_ngcontent-%COMP%] .action-group[_ngcontent-%COMP%] input[type=number][_ngcontent-%COMP%]{width:72px;background:#ffffff14;border:1px solid rgba(255,255,255,.15);color:#fff;padding:4px 8px;border-radius:4px;font-size:.95em}.actions[_ngcontent-%COMP%] .divider[_ngcontent-%COMP%]{color:#ffffff40;padding:0 6px}.action-result[_ngcontent-%COMP%]{margin:8px 0 20px;padding:10px 14px;background:#4ade8014;border-left:3px solid #4ade80;border-radius:4px;font-size:.9em;color:#ffffffe6}.action-result[_ngcontent-%COMP%] .result-label[_ngcontent-%COMP%]{font-weight:600;margin-right:8px}.action-result[_ngcontent-%COMP%] .result-failed[_ngcontent-%COMP%]{color:#f87171;margin-top:4px;font-size:.85em}.client-card[_ngcontent-%COMP%]{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:14px 16px;margin-bottom:14px}.client-card[_ngcontent-%COMP%] .client-header[_ngcontent-%COMP%]{display:flex;align-items:baseline;margin-bottom:10px;gap:10px}.client-card[_ngcontent-%COMP%] .client-header[_ngcontent-%COMP%] .role[_ngcontent-%COMP%]{font-size:1.1em;font-weight:600;color:#fff}.client-card[_ngcontent-%COMP%] .client-header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%]{color:#ffffffa6;font-size:.85em}.client-card[_ngcontent-%COMP%] .client-pk[_ngcontent-%COMP%]{font-family:monospace;font-size:.8em;color:#ffffff8c;margin-bottom:10px;word-break:break-all}.client-card[_ngcontent-%COMP%] .server-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:3px}.client-card[_ngcontent-%COMP%] .server-list[_ngcontent-%COMP%] .server[_ngcontent-%COMP%]{font-family:monospace;font-size:.82em;color:#ffffffd9;padding:2px 0}.client-card[_ngcontent-%COMP%] .server-list[_ngcontent-%COMP%] .server[_ngcontent-%COMP%]:before{content:"\\2022";margin-right:8px;color:#4ade80}.client-card[_ngcontent-%COMP%] .empty[_ngcontent-%COMP%]{color:#ffffff80;font-size:.9em;font-style:italic}.client-card.missing[_ngcontent-%COMP%]{opacity:.55}']})}}return t})();function sOe(t,n){if(1&t&&L(0,"app-node-app-list",0),2&t){const e=y();C("apps",e.apps)("showShortList",!1)("nodePK",e.nodePK)}}let aOe=(()=>{class t extends Lt{ngOnInit(){return this.dataSubscription=Me.currentNode.subscribe(e=>{this.nodePK=e.localPk,this.apps=e.apps}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})()}static{this.\u0275cmp=ae({type:t,selectors:[["app-all-apps"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[3,"apps","showShortList","nodePK"]],template:function(i,o){1&i&&x(0,sOe,1,3,"app-node-app-list",0),2&i&&k(o.apps?0:-1)},dependencies:[uH],encapsulation:2})}}return t})();const PM=t=>({time:t}),lOe=(t,n)=>({"latency-high":t,"latency-very-high":n}),cOe=(t,n)=>n.name;function dOe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),_(3,"translate"),u(),L(4,"app-copy-to-clipboard-text",8),u()),2&t){const e=y(2);c(2),D("",v(3,3,"node.details.node-info.public-ip")," "),c(2),C("text",on(e.node.publicIp))}}function uOe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),_(3,"translate"),u(),L(4,"app-copy-to-clipboard-text",8),u()),2&t){const e=y(2);c(2),D("",v(3,3,"node.details.node-info.ip")," "),c(2),C("text",on(e.node.ip))}}function hOe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&nt(" ",y(2).node.dmsgServers.length," ",v(1,2,"node.details.node-info.connected")," ")}function fOe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"node.details.node-info.no-dmsg-server")," ")}function pOe(t,n){if(1&t&&(h(0,"span",15),p(1),u()),2&t){const e=y().$implicit,i=y(3);C("ngClass",pt(2,lOe,e.latency>3e8,e.latency>8e8)),c(),D(" ",i.formatLatency(e.latency)," ")}}function mOe(t,n){if(1&t&&(h(0,"div",14),L(1,"app-copy-to-clipboard-text",8),x(2,pOe,2,5,"span",15),u()),2&t){const e=n.$implicit;c(),C("text",on(e.pk)),c(),k(e.latency>0?2:-1)}}function gOe(t,n){if(1&t&&(h(0,"div",9),me(1,mOe,3,3,"div",14,Le),u()),2&t){const e=y(2);c(),ge(e.node.dmsgServers)}}function _Oe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),_(3,"translate"),u(),p(4),u()),2&t){const e=y(2);c(2),D("",v(3,2,"node.details.node-info.skybian-version")," "),c(2),D(" ",e.node.skybianBuildVersion," ")}}function bOe(t,n){if(1&t&&(h(0,"mat-icon",10),_(1,"translate"),p(2," info "),u()),2&t){const e=y(2);C("inline",!0)("matTooltip",ue(1,2,"node.details.node-info.time.minutes",ie(5,PM,e.timeOnline.totalMinutes)))}}function vOe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),u(),p(3),u()),2&t){const e=n.$implicit;c(2),D("",e.name,": "),c(),D(" ",e.value," ")}}function yOe(t,n){1&t&&me(0,vOe,4,2,"span",3,cOe),2&t&&ge(y(3).ports)}function COe(t,n){if(1&t){const e=re();L(0,"div",11),h(1,"div",1)(2,"span",12),F("click",function(){V(e);const o=y(2);return H(o.showPorts=!o.showPorts)}),h(3,"mat-icon",13),p(4),u(),p(5),_(6,"translate"),h(7,"span",16),p(8),u()(),x(9,yOe,2,0),u()}if(2&t){const e=y(2);c(3),C("inline",!0),c(),S(e.showPorts?"expand_more":"chevron_right"),c(),D(" ",v(6,5,"node.details.ports.title")," "),c(3),D("(",e.ports.length,")"),c(),k(e.showPorts?9:-1)}}function wOe(t,n){if(1&t&&(h(0,"span",19),p(1),u()),2&t){const e=y(4);c(),S(e.configSaveMsg)}}function xOe(t,n){if(1&t){const e=re();h(0,"div",17)(1,"button",18),F("click",function(){return V(e),H(y(3).startEditConfig())}),h(2,"mat-icon",13),p(3,"edit"),u(),p(4),_(5,"translate"),u(),x(6,wOe,2,1,"span",19),u(),h(7,"pre",20),p(8),u()}if(2&t){const e=y(3);c(2),C("inline",!0),c(2),D(" ",v(5,4,"node.details.config.edit")," "),c(2),k(e.configSaveMsg?6:-1),c(2),S(e.rawConfig)}}function kOe(t,n){if(1&t&&(h(0,"div",24)(1,"mat-icon",13),p(2,"error_outline"),u(),p(3),u()),2&t){const e=y(4);c(),C("inline",!0),c(2),D(" ",e.configError," ")}}function SOe(t,n){if(1&t&&(h(0,"div",24)(1,"mat-icon",13),p(2,"error_outline"),u(),p(3),u()),2&t){const e=y(4);c(),C("inline",!0),c(2),D(" ",e.configSaveErr," ")}}function MOe(t,n){if(1&t){const e=re();h(0,"div",17)(1,"button",21),F("click",function(){return V(e),H(y(3).saveConfig())}),h(2,"mat-icon",13),p(3,"save"),u(),p(4),_(5,"translate"),_(6,"translate"),u(),h(7,"button",22),F("click",function(){return V(e),H(y(3).cancelEditConfig())}),p(8),_(9,"translate"),u(),h(10,"span",23),p(11),_(12,"translate"),u()(),x(13,kOe,4,2,"div",24),x(14,SOe,4,2,"div",24),h(15,"textarea",25),F("input",function(o){return V(e),H(y(3).onConfigDraftChange(o.target.value))}),u()}if(2&t){const e=y(3);c(),C("disabled",!!e.configError||e.configSaving),c(),C("inline",!0),c(2),D(" ",e.configSaving?v(5,10,"common.loading"):v(6,12,"node.details.config.save")," "),c(3),C("disabled",e.configSaving),c(),D(" ",v(9,14,"common.cancel")," "),c(3),D(" ",v(12,16,"node.details.config.restart-hint")," "),c(2),k(e.configError?13:-1),c(),k(e.configSaveErr?14:-1),c(),C("value",e.configDraft)("disabled",e.configSaving)}}function DOe(t,n){if(1&t&&(x(0,xOe,9,6),x(1,MOe,16,18)),2&t){const e=y(2);k(e.editingConfig?-1:0),c(),k(e.editingConfig?1:-1)}}function TOe(t,n){if(1&t){const e=re();h(0,"div",0)(1,"div",1)(2,"span",2),p(3),_(4,"translate"),u(),h(5,"span",3)(6,"span",4),p(7),_(8,"translate"),u(),h(9,"span",5),F("click",function(){return V(e),H(y().showEditLabelDialog())}),h(10,"span",6),p(11),u(),h(12,"mat-icon",7),p(13,"edit"),u()()(),h(14,"span",3)(15,"span",4),p(16),_(17,"translate"),u(),L(18,"app-copy-to-clipboard-text",8),u(),h(19,"span",3)(20,"span",4),p(21),_(22,"translate"),u(),p(23),_(24,"translate"),u(),x(25,dOe,5,5,"span",3),x(26,uOe,5,5,"span",3),h(27,"span",3)(28,"span",4),p(29),_(30,"translate"),u(),x(31,hOe,2,4),x(32,fOe,2,3),u(),x(33,gOe,3,0,"div",9),h(34,"span",3)(35,"span",4),p(36),_(37,"translate"),u(),p(38),_(39,"translate"),u(),h(40,"span",3)(41,"span",4),p(42),_(43,"translate"),u(),p(44),_(45,"translate"),u(),h(46,"span",3)(47,"span",4),p(48),_(49,"translate"),u(),p(50),_(51,"translate"),u(),h(52,"span",3)(53,"span",4),p(54),_(55,"translate"),u(),p(56),_(57,"translate"),u(),h(58,"span",3)(59,"span",4),p(60),_(61,"translate"),u(),p(62),_(63,"translate"),u(),x(64,_Oe,5,4,"span",3),h(65,"span",3)(66,"span",4),p(67),_(68,"translate"),u(),p(69),_(70,"translate"),x(71,bOe,3,7,"mat-icon",10),u()(),x(72,COe,10,7),L(73,"div",11),h(74,"div",1)(75,"span",12),F("click",function(){return V(e),H(y().onConfigToggle())}),h(76,"mat-icon",13),p(77),u(),p(78),_(79,"translate"),u(),x(80,DOe,2,2),u()()}if(2&t){const e=y();c(3),S(v(4,34,e.node.isHypervisor?"node.details.node-info.title-local":"node.details.node-info.title")),c(4),D("",v(8,36,"node.details.node-info.label")," "),c(4),S(e.node.label),c(),C("inline",!0),c(4),D("",v(17,38,"node.details.node-info.public-key")," "),c(2),C("text",on(e.node.localPk)),c(3),D("",v(22,40,"node.details.node-info.symmetic-nat")," "),c(2),D(" ",v(24,42,e.node.isSymmeticNat?"common.yes":"common.no")," "),c(2),k(e.node.isSymmeticNat?-1:25),c(),k(e.node.ip?26:-1),c(3),D("",v(30,44,"node.details.node-info.dmsg-servers")," "),c(2),k(e.node.dmsgServers&&e.node.dmsgServers.length>0?31:-1),c(),k(e.node.dmsgServers&&0!==e.node.dmsgServers.length?-1:32),c(),k(e.node.dmsgServers&&e.node.dmsgServers.length>0?33:-1),c(3),D("",v(37,46,"node.details.node-info.ping")," "),c(2),D(" ",ue(39,48,"common.time-in-ms",ie(74,PM,e.node.roundTripPing))," "),c(4),D("",v(43,51,"node.details.node-info.node-version")," "),c(2),D(" ",e.node.version?e.node.version:v(45,53,"common.unknown")," "),c(4),D("",v(49,55,"node.details.node-info.config-version")," "),c(2),D(" ",e.node.configVersion?e.node.configVersion:v(51,57,"common.unknown")," "),c(4),D("",v(55,59,"node.details.node-info.os")," "),c(2),D(" ",e.node.os?e.node.os:v(57,61,"common.unknown")," "),c(4),D("",v(61,63,"node.details.node-info.arch")," "),c(2),D(" ",e.node.arch?e.node.arch:v(63,65,"common.unknown")," "),c(2),k(e.node.skybianBuildVersion?64:-1),c(3),D("",v(68,67,"node.details.node-info.time.title")," "),c(2),D(" ",ue(70,69,"node.details.node-info.time."+e.timeOnline.translationVarName,ie(76,PM,e.timeOnline.elapsedTime))," "),c(2),k(e.timeOnline.totalMinutes>60?71:-1),c(),k(e.ports.length>0?72:-1),c(4),C("inline",!0),c(),S(e.showConfigSection?"expand_more":"chevron_right"),c(),D(" ",v(79,72,"node.details.config.title")," "),c(2),k(e.showConfigSection&&e.rawConfig?80:-1)}}let EOe=(()=>{class t{set nodeInfo(e){this.node=e,this.timeOnline=wv.getElapsedTime(e.secondsOnline),this.fetchPorts(e.localPk)}constructor(e,i,o,r){this.dialog=e,this.storageService=i,this.snackbarService=o,this.apiService=r,this.ports=[],this.showPorts=!1,this.rawConfig="",this.showConfigSection=!1,this.editingConfig=!1,this.configDraft="",this.configError="",this.configSaving=!1,this.configSaveMsg="",this.configSaveErr=""}ngOnDestroy(){}showEditLabelDialog(){let e=this.storageService.getLabelInfo(this.node.localPk);e||(e={id:this.node.localPk,label:"",identifiedElementType:uo.Node}),DS.openDialog(this.dialog,e).afterClosed().subscribe(i=>{i&&Me.refreshCurrentDisplayedData()})}hasDmsgServer(){return!(!this.node||0===this.node.dmsgServerPk.replace(/0/g,"").length)}formatLatency(e){const i=e/1e6;return i<10?i.toFixed(2)+"ms":Math.round(i)+"ms"}fetchPorts(e){this.apiService.get(`visors/${e}/ports`).subscribe(i=>{this.ports=i&&"object"==typeof i?Object.entries(i).map(([o,r])=>({name:o,value:JSON.stringify(r)})):[]},()=>{this.ports=[]})}onConfigToggle(){this.showConfigSection=!this.showConfigSection,this.showConfigSection&&!this.rawConfig&&this.apiService.get(`visors/${this.node.localPk}/runtime-config`).subscribe(e=>{this.rawConfig=JSON.stringify(e,null,2)},()=>{this.snackbarService.showError("common.loading-error")})}startEditConfig(){this.editingConfig=!0,this.configDraft=this.rawConfig,this.configError="",this.configSaveErr="",this.configSaveMsg=""}cancelEditConfig(){this.editingConfig=!1,this.configDraft="",this.configError="",this.configSaveErr=""}onConfigDraftChange(e){if(this.configDraft=e,this.configSaveMsg="",this.configSaveErr="",e.trim())try{JSON.parse(e),this.configError=""}catch(i){this.configError=i?.message||"Invalid JSON"}else this.configError="Config is empty"}saveConfig(){this.configError||this.configSaving||(this.configSaving=!0,this.configSaveErr="",this.configSaveMsg="",this.apiService.put(`visors/${this.node.localPk}/runtime-config`,this.configDraft,new Ro({requestType:uc.RawJson})).subscribe(e=>{this.configSaving=!1,this.rawConfig=this.configDraft,this.editingConfig=!1,this.configSaveMsg=e&&e.restart_required?"Saved. Restart the visor for changes to take effect.":"Saved."},e=>{this.configSaving=!1,this.configSaveErr=e?.originalError?.error?.error||e?.message||"Save failed"}))}static{this.\u0275fac=function(i){return new(i||t)(O(Nt),O(ri),O(ot),O(fi))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-node-info-content"]],inputs:{nodeInfo:"nodeInfo"},standalone:!1,decls:1,vars:1,consts:[[1,"font-smaller","d-flex","flex-column","mt-4.5"],[1,"d-flex","flex-column"],[1,"section-title"],[1,"info-line"],[1,"title"],[1,"highlight-internal-icon",3,"click"],[1,"text-with-small-right-margin"],[1,"edit-icon",3,"inline"],[3,"text"],[1,"dmsg-servers-list"],[3,"inline","matTooltip"],[1,"separator"],[1,"section-title","collapsible-header",2,"cursor","pointer",3,"click"],[3,"inline"],[1,"dmsg-server-item"],[1,"dmsg-latency",3,"ngClass"],[1,"count-badge"],[1,"config-actions"],["mat-stroked-button","",3,"click"],[1,"config-save-msg"],[1,"raw-config"],["mat-raised-button","","color","primary",3,"click","disabled"],["mat-button","",3,"click","disabled"],[1,"config-restart-hint","dim"],[1,"config-error"],["spellcheck","false",1,"raw-config","config-editor",3,"input","value","disabled"]],template:function(i,o){1&i&&x(0,TOe,81,78,"div",0),2&i&&k(o.node?0:-1)},dependencies:[Ft,Ht,Ae,Et,cp,we],styles:[".section-title[_ngcontent-%COMP%]{font-size:1rem;font-weight:700;text-transform:uppercase;color:#00d4ff;text-shadow:0 0 10px rgba(0,212,255,.5),0 0 20px rgba(0,212,255,.3);letter-spacing:1px;margin-bottom:8px}.info-table[_ngcontent-%COMP%]{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;align-items:baseline;margin-top:8px}.info-table[_ngcontent-%COMP%] .info-label[_ngcontent-%COMP%]{opacity:.7;white-space:nowrap;font-size:.9em}.info-table[_ngcontent-%COMP%] .info-value[_ngcontent-%COMP%]{word-break:break-word}.separator[_ngcontent-%COMP%]{width:100%;height:0px;margin:1rem 0;border-top:1px solid rgba(255,255,255,.15);opacity:.5}.config-button-container[_ngcontent-%COMP%]{margin-top:10px;margin-left:-4px}.dmsg-servers-list[_ngcontent-%COMP%]{margin-left:0;margin-top:8px;display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:#00d4ff0d;border-radius:6px;border-left:2px solid rgba(0,212,255,.3)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%]{font-family:Consolas,Monaco,Courier New,monospace;font-size:.82em;display:flex;align-items:center;gap:10px;padding:4px 0;color:#fffffff2;transition:all .2s ease}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%]:hover{color:#00d4ff;text-shadow:0 0 8px rgba(0,212,255,.4)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%] .dmsg-latency[_ngcontent-%COMP%]{color:#4ade80;font-weight:500;font-size:.95em;text-shadow:0 0 6px rgba(74,222,128,.3)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%] .dmsg-latency.latency-high[_ngcontent-%COMP%]{color:#fbbf24;text-shadow:0 0 6px rgba(251,191,36,.3)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%] .dmsg-latency.latency-very-high[_ngcontent-%COMP%]{color:#f87171;text-shadow:0 0 6px rgba(248,113,113,.3)}.glow-value[_ngcontent-%COMP%]{color:#e0f2fe;text-shadow:0 0 4px rgba(224,242,254,.2)}.status-online[_ngcontent-%COMP%]{color:#4ade80;text-shadow:0 0 8px rgba(74,222,128,.5)}.status-offline[_ngcontent-%COMP%]{color:#f87171;text-shadow:0 0 8px rgba(248,113,113,.5)}.raw-config[_ngcontent-%COMP%]{margin-top:10px;padding:12px;background:#0000004d;border:1px solid rgba(0,212,255,.2);border-radius:6px;font-family:Consolas,Monaco,Courier New,monospace;font-size:.8em;color:#ffffffe6;overflow-x:auto;max-height:400px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}textarea.raw-config.config-editor[_ngcontent-%COMP%]{display:block;width:100%;min-height:320px;resize:vertical;white-space:pre;word-break:normal;outline:none;caret-color:#fff}textarea.raw-config.config-editor[_ngcontent-%COMP%]:focus{border-color:#00d4ff99}textarea.raw-config.config-editor[_ngcontent-%COMP%]:disabled{opacity:.6}.config-actions[_ngcontent-%COMP%]{margin-top:8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.config-actions[_ngcontent-%COMP%] button.mat-mdc-button-base[_ngcontent-%COMP%]:not(:disabled):not(.mat-primary):not(.mat-accent):not(.mat-warn){color:#ffffffeb!important}.config-actions[_ngcontent-%COMP%] button.mat-mdc-button-base[_ngcontent-%COMP%]:not(:disabled):not(.mat-primary):not(.mat-accent):not(.mat-warn) .mat-icon[_ngcontent-%COMP%]{color:inherit}.config-actions[_ngcontent-%COMP%] button.mat-mdc-outlined-button[_ngcontent-%COMP%]:not(:disabled){border-color:#ffffff59!important}.config-actions[_ngcontent-%COMP%] .config-restart-hint[_ngcontent-%COMP%]{font-size:.85em;margin-left:auto}.config-actions[_ngcontent-%COMP%] .config-save-msg[_ngcontent-%COMP%]{color:#4caf50f2;font-size:.9em}.config-error[_ngcontent-%COMP%]{margin-top:6px;padding:8px 10px;background:#e539351f;border:1px solid rgba(229,57,53,.35);border-radius:4px;color:#ffc8c8f2;font-size:.85em;display:flex;align-items:center;gap:6px}.config-error[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{font-size:16px}.sub-health[_ngcontent-%COMP%]{padding-left:12px;font-size:.9em;color:#ffffffd9}.collapsible-header[_ngcontent-%COMP%]{display:flex;align-items:center;-webkit-user-select:none;user-select:none}.collapsible-header[_ngcontent-%COMP%]:hover{color:#a5b4fc}.collapsible-header[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:4px;font-size:18px;width:18px;height:18px}.collapsible-header[_ngcontent-%COMP%] .count-badge[_ngcontent-%COMP%]{margin-left:6px;color:#ffffff8c;font-weight:400;font-size:.85em}.transport-stats[_ngcontent-%COMP%]{color:#ffffffd9}.transport-stats[_ngcontent-%COMP%] .transport-type[_ngcontent-%COMP%]{color:#a5b4fc;font-weight:500}.transport-stats[_ngcontent-%COMP%] .transport-count[_ngcontent-%COMP%]{color:#4ade80;font-weight:600}.reward-rules[_ngcontent-%COMP%]{background:#00000040;padding:8px 10px;margin:6px 0;font-size:12px;max-height:360px;overflow:auto;white-space:pre-wrap;word-break:break-word}"]})}}return t})(),POe=(()=>{class t extends Lt{ngOnInit(){return this.nodeSubscription=Me.currentNode.subscribe(e=>{this.node=e}),super.ngOnInit()}ngOnDestroy(){this.nodeSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ft(t)))(o||t)}})()}static{this.\u0275cmp=ae({type:t,selectors:[["app-node-info"]],standalone:!1,features:[_e],decls:1,vars:1,consts:[[3,"nodeInfo"]],template:function(i,o){1&i&&L(0,"app-node-info-content",0),2&i&&C("nodeInfo",o.node)},dependencies:[EOe],encapsulation:2})}}return t})();const IOe=()=>[];function OOe(t,n){1&t&&(h(0,"div",6),L(1,"mat-spinner",7),u())}function AOe(t,n){1&t&&(h(0,"span"),p(1,"open"),u())}function ROe(t,n){1&t&&(h(0,"span"),p(1,"s"),u())}function FOe(t,n){if(1&t&&(h(0,"span"),p(1),rt(2,ROe,2,0,"span",5),u()),2&t){const e=y().$implicit;c(),D(" ",e.whitelist.length," PK"),c(),C("ngIf",1!==e.whitelist.length)}}function NOe(t,n){if(1&t){const e=re();h(0,"button",41),F("click",function(){V(e);const o=y(2).$implicit;return H(y(3).clearWhitelist(o))}),p(1," Clear "),u()}}function LOe(t,n){if(1&t){const e=re();h(0,"tr",32)(1,"td",33)(2,"div",34)(3,"p",35),p(4," Comma- or whitespace-separated public keys. Empty = accessible to all authenticated peers. "),u(),h(5,"mat-form-field",36)(6,"mat-label"),p(7),u(),h(8,"textarea",37),Yt("ngModelChange",function(o){V(e);const r=y(4);return nn(r.whitelistInput,o)||(r.whitelistInput=o),H(o)}),u()(),h(9,"div",38)(10,"button",22),F("click",function(){V(e);const o=y().$implicit;return H(y(3).saveWhitelist(o))}),h(11,"mat-icon"),p(12,"save"),u(),p(13," Save "),u(),rt(14,NOe,2,0,"button",39),h(15,"button",40),F("click",function(){return V(e),H(y(4).cancelEditWhitelist())}),p(16,"Cancel"),u()()()()()}if(2&t){const e=y().$implicit,i=y(3);c(7),D("Allowed PKs for port ",e.port),c(),Kt("ngModel",i.whitelistInput),c(6),C("ngIf",e.whitelist&&e.whitelist.length>0)}}function BOe(t,n){if(1&t){const e=re();zr(0),h(1,"tr")(2,"td",25),p(3),u(),h(4,"td",25),p(5),u(),h(6,"td"),p(7),u(),h(8,"td")(9,"mat-checkbox",26),F("change",function(){const o=V(e).$implicit;return H(y(3).toggleSkynet(o))}),u()(),h(10,"td")(11,"mat-checkbox",26),F("change",function(){const o=V(e).$implicit;return H(y(3).toggleDmsg(o))}),u()(),h(12,"td")(13,"mat-checkbox",26),F("change",function(){const o=V(e).$implicit;return H(y(3).toggleLanding(o))}),u()(),h(14,"td")(15,"button",27),F("click",function(){const o=V(e).$implicit;return H(y(3).startEditWhitelist(o))}),rt(16,AOe,2,0,"span",5)(17,FOe,3,2,"span",5),h(18,"mat-icon",28),p(19,"edit"),u()()(),h(20,"td",29)(21,"button",30),F("click",function(){const o=V(e).$implicit;return H(y(3).removePort(o.port))}),h(22,"mat-icon"),p(23,"close"),u()()()(),rt(24,LOe,17,3,"tr",31),pr()}if(2&t){const e=n.$implicit,i=y(3);c(3),S(e.port),c(2),S(e.proxy_addr||"localhost:"+(e.local_port||e.port)),c(2),S(e.label||"-"),c(2),C("checked",e.skynet),c(2),C("checked",e.dmsg),c(2),C("checked",e.show_on_landing),c(2),C("matTooltip",(e.whitelist||vt(10,IOe)).join(", ")||"Open to all peers"),c(),C("ngIf",!e.whitelist||0===e.whitelist.length),c(),C("ngIf",e.whitelist&&e.whitelist.length>0),c(7),C("ngIf",i.editingWhitelistPort===e.port)}}function VOe(t,n){if(1&t&&(h(0,"table",23)(1,"tr")(2,"th"),p(3,"Port"),u(),h(4,"th"),p(5,"Target"),u(),h(6,"th"),p(7,"Label"),u(),h(8,"th"),p(9,"Skynet"),u(),h(10,"th"),p(11,"DMSG"),u(),h(12,"th"),p(13,"Landing"),u(),h(14,"th"),p(15,"Whitelist"),u(),L(16,"th"),u(),rt(17,BOe,25,11,"ng-container",24),u()),2&t){const e=y(2);c(17),C("ngForOf",e.ports)}}function HOe(t,n){1&t&&(h(0,"p",42),p(1,"No ports forwarded."),u())}function UOe(t,n){if(1&t){const e=re();h(0,"div"),rt(1,VOe,18,1,"table",8)(2,HOe,2,0,"p",9),h(3,"div",10)(4,"div",11)(5,"mat-form-field",12)(6,"mat-label"),p(7,"Skynet Port"),u(),h(8,"input",13),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newPort,o)||(r.newPort=o),H(o)}),u()(),h(9,"mat-form-field",12)(10,"mat-label"),p(11,"Local Port"),u(),h(12,"input",14),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newLocalPort,o)||(r.newLocalPort=o),H(o)}),u()(),h(13,"mat-form-field",15)(14,"mat-label"),p(15,"Target Address"),u(),h(16,"input",16),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newProxyAddr,o)||(r.newProxyAddr=o),H(o)}),u()(),h(17,"mat-form-field",15)(18,"mat-label"),p(19,"Label"),u(),h(20,"input",17),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newLabel,o)||(r.newLabel=o),H(o)}),u()()(),h(21,"div",11)(22,"mat-form-field",18)(23,"mat-label"),p(24,"Description"),u(),h(25,"input",19),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newDesc,o)||(r.newDesc=o),H(o)}),u()(),h(26,"mat-form-field",18)(27,"mat-label"),p(28,"Whitelist (optional)"),u(),h(29,"textarea",20),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newWhitelist,o)||(r.newWhitelist=o),H(o)}),u()()(),h(30,"div",11)(31,"mat-checkbox",21),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newSkynet,o)||(r.newSkynet=o),H(o)}),p(32,"Skynet"),u(),h(33,"mat-checkbox",21),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newDmsg,o)||(r.newDmsg=o),H(o)}),p(34,"DMSG"),u(),h(35,"mat-checkbox",21),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.newShowLanding,o)||(r.newShowLanding=o),H(o)}),p(36,"Show on landing page"),u(),h(37,"button",22),F("click",function(){return V(e),H(y().addPort())}),h(38,"mat-icon"),p(39,"add"),u(),p(40," Forward "),u()(),h(41,"p",3),p(42," Target Address overrides Local Port \u2014 set it to forward to a host:port elsewhere on the LAN (e.g. "),h(43,"code"),p(44,"192.168.1.20:5432"),u(),p(45,") instead of localhost. Whitelist accepts comma- or whitespace-separated 66-char hex public keys; leave empty to allow all authenticated peers (you can edit the whitelist per-row later, on the table above). "),u()()()}if(2&t){const e=y();c(),C("ngIf",e.ports.length>0),c(),C("ngIf",0===e.ports.length),c(6),Kt("ngModel",e.newPort),c(4),Kt("ngModel",e.newLocalPort),c(4),Kt("ngModel",e.newProxyAddr),c(4),Kt("ngModel",e.newLabel),c(5),Kt("ngModel",e.newDesc),c(4),Kt("ngModel",e.newWhitelist),c(2),Kt("ngModel",e.newSkynet),c(2),Kt("ngModel",e.newDmsg),c(2),Kt("ngModel",e.newShowLanding)}}function zOe(t,n){1&t&&(h(0,"div",6),L(1,"mat-spinner",7),u())}function jOe(t,n){if(1&t){const e=re();h(0,"tr")(1,"td",25),p(2),u(),h(3,"td",49),p(4),u(),h(5,"td",25),p(6),u(),h(7,"td",25),p(8),u(),h(9,"td",29)(10,"button",50),F("click",function(){const o=V(e).$implicit;return H(y(3).disconnect(o.id))}),h(11,"mat-icon"),p(12,"close"),u()()()()}if(2&t){const e=n.$implicit;c(2),S(e.network||"skynet"),c(2),S(e.remotePK),c(2),S(e.remotePort),c(2),S(e.localPort)}}function $Oe(t,n){if(1&t&&(h(0,"table",23)(1,"tr")(2,"th"),p(3,"Network"),u(),h(4,"th"),p(5,"Remote PK"),u(),h(6,"th"),p(7,"Remote Port"),u(),h(8,"th"),p(9,"Local Port"),u(),L(10,"th"),u(),rt(11,jOe,13,4,"tr",24),u()),2&t){const e=y(2);c(11),C("ngForOf",e.forwards)}}function WOe(t,n){1&t&&(h(0,"p",42),p(1,"No active reverse proxies."),u())}function GOe(t,n){if(1&t){const e=re();h(0,"div"),rt(1,$Oe,12,1,"table",8)(2,WOe,2,0,"p",9),h(3,"div",11)(4,"mat-form-field",12)(5,"mat-label"),p(6,"Network"),u(),h(7,"mat-select",43),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.connectNetwork,o)||(r.connectNetwork=o),H(o)}),h(8,"mat-option",44),p(9,"skynet"),u(),h(10,"mat-option",45),p(11,"dmsg"),u()()(),h(12,"mat-form-field",46)(13,"mat-label"),p(14,"Remote Public Key"),u(),h(15,"input",47),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.connectPK,o)||(r.connectPK=o),H(o)}),u()()(),h(16,"div",11)(17,"mat-form-field",12)(18,"mat-label"),p(19,"Remote Port"),u(),h(20,"input",13),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.connectRemotePort,o)||(r.connectRemotePort=o),H(o)}),u()(),h(21,"mat-form-field",12)(22,"mat-label"),p(23,"Local Port"),u(),h(24,"input",48),Yt("ngModelChange",function(o){V(e);const r=y();return nn(r.connectLocalPort,o)||(r.connectLocalPort=o),H(o)}),u()(),h(25,"button",22),F("click",function(){return V(e),H(y().connect())}),h(26,"mat-icon"),p(27,"link"),u(),p(28," Connect "),u()()()}if(2&t){const e=y();c(),C("ngIf",e.forwards.length>0),c(),C("ngIf",0===e.forwards.length),c(5),Kt("ngModel",e.connectNetwork),c(8),Kt("ngModel",e.connectPK),c(5),Kt("ngModel",e.connectRemotePort),c(4),Kt("ngModel",e.connectLocalPort)}}let qOe=(()=>{class t extends Lt{constructor(e,i){super(),this.nodeService=e,this.snackbarService=i,this.ports=[],this.portsLoading=!0,this.newPort="",this.newLocalPort="",this.newProxyAddr="",this.newLabel="",this.newDesc="",this.newWhitelist="",this.newSkynet=!0,this.newDmsg=!0,this.newShowLanding=!0,this.editingWhitelistPort=null,this.whitelistInput="",this.forwards=[],this.forwardsLoading=!0,this.connectNetwork="skynet",this.connectPK="",this.connectRemotePort="",this.connectLocalPort="",this.nodeKey=""}ngOnInit(){return this.nodeKey=Me.getCurrentNodeKey(),this.loadPorts(),this.loadForwards(),super.ngOnInit()}ngOnDestroy(){this.portsSub&&this.portsSub.unsubscribe(),this.fwdsSub&&this.fwdsSub.unsubscribe()}loadPorts(){this.portsLoading=!0,this.portsSub=this.nodeService.getForwardedPorts(this.nodeKey).subscribe(e=>{this.ports=(e||[]).sort((i,o)=>i.port-o.port),this.portsLoading=!1},()=>{this.ports=[],this.portsLoading=!1})}addPort(){const e=parseInt(this.newPort,10);if(isNaN(e)||e<1||e>65535)return void this.snackbarService.showError("Enter a valid port (1-65535)");const i=this.newLocalPort?parseInt(this.newLocalPort,10):0,o=(this.newProxyAddr||"").trim();let r=[];const s=(this.newWhitelist||"").trim();if(""!==s){r=s.split(/[\s,]+/).map(l=>l.trim()).filter(l=>l.length>0);for(const l of r)if(66!==l.length||!/^[0-9a-fA-F]+$/.test(l))return void this.snackbarService.showError(`Invalid public key in whitelist: ${l}`)}this.nodeService.registerForwardedPort(this.nodeKey,{port:e,local_port:i||void 0,proxy_addr:o||void 0,label:this.newLabel,description:this.newDesc,show_on_landing:this.newShowLanding,skynet:this.newSkynet,dmsg:this.newDmsg,whitelist:r.length>0?r:void 0}).subscribe(()=>{this.newPort="",this.newLocalPort="",this.newProxyAddr="",this.newLabel="",this.newDesc="",this.newWhitelist="",this.snackbarService.showDone(`Port ${e} forwarded`),this.loadPorts()},l=>{this.snackbarService.showError(l?.error?.error||"Failed")})}removePort(e){this.nodeService.deregisterSkynetPort(this.nodeKey,e).subscribe(()=>{this.snackbarService.showDone(`Port ${e} removed`),this.loadPorts()},()=>{this.snackbarService.showError("Failed to remove port")})}toggleLanding(e){e.show_on_landing=!e.show_on_landing,this.nodeService.updateForwardedPort(this.nodeKey,e).subscribe(()=>{},()=>{this.snackbarService.showError("Failed to update"),this.loadPorts()})}toggleSkynet(e){e.skynet=!e.skynet,this.nodeService.updateForwardedPort(this.nodeKey,e).subscribe(()=>{},()=>{this.snackbarService.showError("Failed to update"),this.loadPorts()})}toggleDmsg(e){e.dmsg=!e.dmsg,this.nodeService.updateForwardedPort(this.nodeKey,e).subscribe(()=>{},()=>{this.snackbarService.showError("Failed to update"),this.loadPorts()})}startEditWhitelist(e){this.editingWhitelistPort=e.port,this.whitelistInput=(e.whitelist||[]).join(", ")}cancelEditWhitelist(){this.editingWhitelistPort=null,this.whitelistInput=""}saveWhitelist(e){const i=(this.whitelistInput||"").trim();let o=[];if(""!==i){o=i.split(/[\s,]+/).map(s=>s.trim()).filter(s=>s.length>0);for(const s of o)if(66!==s.length||!/^[0-9a-fA-F]+$/.test(s))return void this.snackbarService.showError(`Invalid public key: ${s}`)}const r={...e,whitelist:o};this.nodeService.updateForwardedPort(this.nodeKey,r).subscribe(()=>{this.snackbarService.showDone(0===o.length?`Whitelist cleared on port ${e.port}`:`Whitelist set on port ${e.port} (${o.length} PK${1===o.length?"":"s"})`),this.cancelEditWhitelist(),this.loadPorts()},s=>{this.snackbarService.showError(s?.error?.error||"Failed to update whitelist")})}clearWhitelist(e){const i={...e,whitelist:[]};this.nodeService.updateForwardedPort(this.nodeKey,i).subscribe(()=>{this.snackbarService.showDone(`Whitelist cleared on port ${e.port}`),this.cancelEditWhitelist(),this.loadPorts()},o=>{this.snackbarService.showError(o?.error?.error||"Failed to clear whitelist")})}loadForwards(){this.forwardsLoading=!0,this.fwdsSub=this.nodeService.getSkynetForwards(this.nodeKey).subscribe(e=>{if(this.forwards=[],e)for(const[i,o]of Object.entries(e))this.forwards.push({id:i,network:o.network||"skynet",remotePK:o.remote_pk||"",remotePort:o.remote_port||0,localPort:o.local_port||0});this.forwardsLoading=!1},()=>{this.forwards=[],this.forwardsLoading=!1})}connect(){const e=parseInt(this.connectRemotePort,10),i=parseInt(this.connectLocalPort,10);this.connectPK&&66===this.connectPK.length?isNaN(e)||e<1?this.snackbarService.showError("Enter a valid remote port"):isNaN(i)||i<1?this.snackbarService.showError("Enter a valid local port"):"skynet"===this.connectNetwork||"dmsg"===this.connectNetwork?this.nodeService.skynetConnect(this.nodeKey,this.connectNetwork,this.connectPK,e,i).subscribe(()=>{this.connectPK="",this.connectRemotePort="",this.connectLocalPort="",this.snackbarService.showDone(`Connected via ${this.connectNetwork}: remote ${e} \u2192 localhost:${i}`),this.loadForwards()},o=>{this.snackbarService.showError(o?.error?.error||"Failed")}):this.snackbarService.showError("Network must be skynet or dmsg"):this.snackbarService.showError("Enter a valid public key")}disconnect(e){this.nodeService.skynetDisconnect(this.nodeKey,e).subscribe(()=>{this.snackbarService.showDone("Disconnected"),this.loadForwards()},()=>{this.snackbarService.showError("Failed")})}static{this.\u0275fac=function(i){return new(i||t)(O(Yi),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-skynet"]],standalone:!1,features:[_e],decls:21,vars:4,consts:[[1,"container-elevated-translucid","mt-4.5","skynet-container"],[1,"section"],[1,"section-title"],[1,"section-desc"],["class","text-center py-2",4,"ngIf"],[4,"ngIf"],[1,"text-center","py-2"],["diameter","24",1,"mx-auto"],["class","data-table",4,"ngIf"],["class","empty-msg",4,"ngIf"],[1,"add-form"],[1,"add-row"],["appearance","outline",1,"field-sm"],["matInput","","placeholder","80","type","number",3,"ngModelChange","ngModel"],["matInput","","placeholder","3000","type","number",3,"ngModelChange","ngModel"],["appearance","outline",1,"field-md"],["matInput","","placeholder","192.168.1.20:5432",3,"ngModelChange","ngModel"],["matInput","","placeholder","My Service",3,"ngModelChange","ngModel"],["appearance","outline",1,"field-lg"],["matInput","","placeholder","Optional description",3,"ngModelChange","ngModel"],["matInput","","rows","2","placeholder","02abc..., 03def... (empty = open to all)",3,"ngModelChange","ngModel"],["color","primary",3,"ngModelChange","ngModel"],["mat-raised-button","","color","primary",3,"click"],[1,"data-table"],[4,"ngFor","ngForOf"],[1,"mono"],["color","primary",3,"change","checked"],["mat-button","",3,"click","matTooltip"],[1,"edit-icon"],[1,"action-col"],["mat-icon-button","","color","warn","matTooltip","Remove",3,"click"],["class","whitelist-edit-row",4,"ngIf"],[1,"whitelist-edit-row"],["colspan","8"],[1,"whitelist-edit"],[1,"whitelist-help"],["appearance","outline",1,"whitelist-input"],["matInput","","rows","3","placeholder","02abc..., 03def...",3,"ngModelChange","ngModel"],[1,"whitelist-actions"],["mat-stroked-button","",3,"click",4,"ngIf"],["mat-button","",3,"click"],["mat-stroked-button","",3,"click"],[1,"empty-msg"],["panelClass","skynet-select-panel",3,"ngModelChange","ngModel"],["value","skynet"],["value","dmsg"],["appearance","outline",1,"field-pk"],["matInput","","placeholder","02abc...",3,"ngModelChange","ngModel"],["matInput","","placeholder","9090","type","number",3,"ngModelChange","ngModel"],[1,"mono","small"],["mat-icon-button","","color","warn","matTooltip","Disconnect",3,"click"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"h4",2),p(3,"Forwarded Ports"),u(),h(4,"p",3),p(5," Expose local TCP ports over skynet and/or DMSG. "),u(),rt(6,OOe,2,0,"div",4)(7,UOe,46,11,"div",5),u(),h(8,"div",1)(9,"h4",2),p(10,"Reverse Proxy"),u(),h(11,"p",3),p(12," Map a remote visor's port to a local port. The Network selector picks the transport: "),h(13,"code"),p(14,"skynet"),u(),p(15," goes through the routing layer; "),h(16,"code"),p(17,"dmsg"),u(),p(18," opens a direct DMSG stream. A single forward uses one network at a time. "),u(),rt(19,zOe,2,0,"div",4)(20,GOe,29,6,"div",5),u()()),2&i&&(c(6),C("ngIf",o.portsLoading),c(),C("ngIf",!o.portsLoading),c(12),C("ngIf",o.forwardsLoading),c(),C("ngIf",!o.forwardsLoading))},dependencies:[zF,lf,Qt,Oa,Jt,dn,ns,On,Ht,Yo,Ae,Et,gu,Na,is,ci,Fo],styles:[".skynet-container[_ngcontent-%COMP%]{padding:20px;max-width:900px}.section[_ngcontent-%COMP%]{margin-bottom:28px}.section-title[_ngcontent-%COMP%]{font-size:16px;font-weight:500;margin-bottom:4px}.section-desc[_ngcontent-%COMP%]{color:#fff9;font-size:13px;margin-bottom:16px}.section-desc[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:#ffffff1a;padding:1px 4px;border-radius:3px;font-size:12px}.data-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;margin-bottom:16px}.data-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .data-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:8px 12px;text-align:left;border-bottom:1px solid rgba(255,255,255,.08)}.data-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{color:#ffffff80;font-weight:500;font-size:13px}.data-table[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%]{font-family:monospace}.data-table[_ngcontent-%COMP%] .small[_ngcontent-%COMP%]{font-size:12px;color:#ffffffb3;word-break:break-all}.data-table[_ngcontent-%COMP%] .action-col[_ngcontent-%COMP%]{width:48px;text-align:right}.empty-msg[_ngcontent-%COMP%]{color:#ffffff61;font-style:italic;margin-bottom:16px}.add-form[_ngcontent-%COMP%]{margin-top:8px}.add-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.field-sm[_ngcontent-%COMP%]{width:120px}.field-md[_ngcontent-%COMP%]{width:200px}.field-lg[_ngcontent-%COMP%]{width:300px}.field-pk[_ngcontent-%COMP%]{width:100%;max-width:580px}.edit-icon[_ngcontent-%COMP%]{font-size:14px;width:14px;height:14px;vertical-align:middle;margin-left:4px;opacity:.6}.whitelist-edit-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{background:#ffffff08;padding:12px 16px!important}.whitelist-edit[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.whitelist-help[_ngcontent-%COMP%]{margin:0;color:#fff9;font-size:12px}.whitelist-input[_ngcontent-%COMP%]{width:100%;max-width:720px}.whitelist-actions[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center}[_nghost-%COMP%] .mat-mdc-text-field-wrapper{background:#ffffff14!important}[_nghost-%COMP%] .mdc-text-field--outlined .mdc-notched-outline__leading, [_nghost-%COMP%] .mdc-text-field--outlined .mdc-notched-outline__notch, [_nghost-%COMP%] .mdc-text-field--outlined .mdc-notched-outline__trailing{border-color:#ffffff4d!important}[_nghost-%COMP%] .mat-mdc-input-element, [_nghost-%COMP%] .mdc-text-field__input{color:#fff!important;caret-color:#fff!important}[_nghost-%COMP%] .mdc-floating-label{color:#fff9!important}[_nghost-%COMP%] .mdc-label, [_nghost-%COMP%] .mdc-form-field>label, [_nghost-%COMP%] .mat-mdc-checkbox label{color:#ffffffde!important}"]})}}return t})();const KOe=()=>["settings.title","labels.title"];let YOe=(()=>{class t{constructor(e){this.router=e,this.tabsData=[],this.returnButtonText="settings.title",this.tabsData=[{icon:"view_headline",label:"labels.list-title",linkParts:[]}]}performAction(e){null===e&&this.router.navigate(["settings"])}static{this.\u0275fac=function(i){return new(i||t)(O(yt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-all-labels"]],standalone:!1,decls:5,vars:6,consts:[[1,"row"],[1,"col-12"],[3,"optionSelected","titleParts","tabsData","showUpdateButton","returnText"],[1,"content","col-12"],[3,"showShortList"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"app-top-bar",2),F("optionSelected",function(s){return o.performAction(s)}),u()(),h(3,"div",3),L(4,"app-label-list",4),u()()),2&i&&(c(2),C("titleParts",vt(5,KOe))("tabsData",o.tabsData)("showUpdateButton",!1)("returnText",o.returnButtonText),c(2),C("showShortList",!1))},dependencies:[tr,xV],encapsulation:2})}}return t})();const XOe=["firstInput"];function ZOe(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.server-list.add-server-dialog.pk-length-error")))}function QOe(t,n){1&t&&(h(0,"span"),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.server-list.add-server-dialog.pk-chars-error")))}let JOe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a,l,d){this.dialogRef=e,this.data=i,this.formBuilder=o,this.dialog=r,this.router=s,this.vpnClientService=a,this.vpnSavedDataService=l,this.snackbarService=d}ngOnInit(){this.form=this.formBuilder.group({pk:["",Se.compose([Se.required,Se.minLength(66),Se.maxLength(66),Se.pattern("^[0-9a-fA-F]+$")])],password:[""],name:[""],note:[""]}),setTimeout(()=>this.firstInput.nativeElement.focus())}process(){if(!this.form.valid)return;const e={pk:this.form.get("pk").value,name:this.form.get("name").value,note:this.form.get("note").value};pi.processServerChange(this.router,this.vpnClientService,this.vpnSavedDataService,this.snackbarService,this.dialog,this.dialogRef,this.data,null,null,e,this.form.get("password").value)}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Si),O(Nt),O(yt),O(wc),O(Cc),O(ot))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-add-vpn-server"]],viewQuery:function(i,o){if(1&i&&st(XOe,5),2&i){let r;fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:34,vars:22,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","pk","maxlength","66","matInput",""],["formControlName","password","type","password","matInput",""],["formControlName","name","maxlength","100","matInput",""],["formControlName","note","maxlength","100","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),_(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),_(7,"translate"),u(),L(8,"input",5,0),u(),h(10,"mat-error"),x(11,ZOe,3,3,"span")(12,QOe,3,3,"span"),u()(),h(13,"mat-form-field")(14,"div",3)(15,"label",4),p(16),_(17,"translate"),u(),L(18,"input",6),u()(),h(19,"mat-form-field")(20,"div",3)(21,"label",4),p(22),_(23,"translate"),u(),L(24,"input",7),u()(),h(25,"mat-form-field")(26,"div",3)(27,"label",4),p(28),_(29,"translate"),u(),L(30,"input",8),u()()(),h(31,"app-button",9),F("action",function(){return o.process()}),p(32),_(33,"translate"),u()()),2&i&&(C("headline",v(1,10,"vpn.server-list.add-server-dialog.title"))("dialog",o.dialogRef),c(2),C("formGroup",o.form),c(4),S(v(7,12,"vpn.server-list.add-server-dialog.pk-label")),c(5),k(o.form.get("pk").hasError("pattern")?12:11),c(5),S(v(17,14,"vpn.server-list.add-server-dialog.password-label")),c(6),S(v(23,16,"vpn.server-list.add-server-dialog.name-label")),c(6),S(v(29,18,"vpn.server-list.add-server-dialog.note-label")),c(3),C("disabled",!o.form.valid),c(),D(" ",v(33,20,"vpn.server-list.add-server-dialog.use-server-button")," "))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,Aa,On,Mi,Sn,we],encapsulation:2})}}return t})();class eAe{constructor(){this.countryCode="ZZ"}}let tAe=(()=>{class t{constructor(e){this.http=e,this.discoveryServiceUrl="https://sd.skycoin.com/api/services?type=vpn"}getServers(){return this.servers?se(this.servers):this.http.get(this.discoveryServiceUrl).pipe(lp(e=>e.pipe(oi(4e3))),De(e=>{const i=[];return e&&e.forEach(o=>{const r=new eAe,s=o.address.split(":");2===s.length&&(r.pk=s[0],r.location="",o.geo&&(o.geo.country&&(r.countryCode=o.geo.country),o.geo.region&&(r.location=o.geo.region)),r.name=s[0],r.note="",i.push(r))}),this.servers=i,i}))}static{this.\u0275fac=function(i){return new(i||t)(ce(xa))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const yH=()=>["vpn.title"],nAe=t=>({deactivated:t}),Jv=(t,n)=>["/vpn",t,"servers",n,1],iAe=t=>({"mb-3":t}),oAe=(t,n)=>({"public-pk-column":t,"history-pk-column":n}),rAe=t=>({"selectable click-effect":t}),sAe=(t,n)=>({custom:t,original:n}),aAe=(t,n)=>["/vpn",t,"servers",n];function lAe(t,n){1&t&&mr(0)}function cAe(t,n){if(1&t&&(h(0,"div",1)(1,"div",3),L(2,"app-top-bar",4),h(3,"div",5)(4,"div",6)(5,"div",7),rt(6,lAe,1,0,"ng-container",8),u()()()(),L(7,"app-loading-indicator",9),u()),2&t){const e=y(),i=Un(2);c(2),C("titleParts",vt(6,yH))("tabsData",e.tabsData)("selectedTabIndex",1)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),c(4),C("ngTemplateOutlet",i)}}function dAe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),_(3,"translate"),u()()),2&t&&(c(2),S(v(3,1,"vpn.server-list.tabs.public")))}function uAe(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),_(3,"translate"),u()()),2&t){const e=y(2);C("routerLink",pt(4,Jv,e.currentLocalPk,e.lists.Public)),c(2),S(v(3,2,"vpn.server-list.tabs.public"))}}function hAe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),_(3,"translate"),u()()),2&t&&(c(2),S(v(3,1,"vpn.server-list.tabs.history")))}function fAe(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),_(3,"translate"),u()()),2&t){const e=y(2);C("routerLink",pt(4,Jv,e.currentLocalPk,e.lists.History)),c(2),S(v(3,2,"vpn.server-list.tabs.history"))}}function pAe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),_(3,"translate"),u()()),2&t&&(c(2),S(v(3,1,"vpn.server-list.tabs.favorites")))}function mAe(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),_(3,"translate"),u()()),2&t){const e=y(2);C("routerLink",pt(4,Jv,e.currentLocalPk,e.lists.Favorites)),c(2),S(v(3,2,"vpn.server-list.tabs.favorites"))}}function gAe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),_(3,"translate"),u()()),2&t&&(c(2),S(v(3,1,"vpn.server-list.tabs.blocked")))}function _Ae(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),_(3,"translate"),u()()),2&t){const e=y(2);C("routerLink",pt(4,Jv,e.currentLocalPk,e.lists.Blocked)),c(2),S(v(3,2,"vpn.server-list.tabs.blocked"))}}function bAe(t,n){1&t&&L(0,"br")}function vAe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().$implicit.translatableValue)," ")}function yAe(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.value," ")}function CAe(t,n){if(1&t&&(h(0,"div",23)(1,"span"),p(2),_(3,"translate"),u(),x(4,vAe,2,3),x(5,yAe,1,1),u()),2&t){const e=n.$implicit;c(2),D("",v(3,3,e.filterName),": "),c(2),k(e.translatableValue?4:-1),c(),k(e.value?5:-1)}}function wAe(t,n){if(1&t){const e=re();h(0,"div",21),F("click",function(){return V(e),H(y(3).dataFilterer.removeFilters())}),h(1,"div",22)(2,"mat-icon",18),p(3,"search"),u(),p(4),_(5,"translate"),u(),me(6,CAe,6,5,"div",23,Le),u()}if(2&t){const e=y(3);c(2),C("inline",!0),c(2),D(" ",v(5,2,"vpn.server-list.current-filters")),c(2),ge(e.dataFilterer.currentFiltersTexts)}}function xAe(t,n){if(1&t&&(x(0,bAe,1,0,"br"),x(1,wAe,8,4,"div",20)),2&t){const e=y(2);k(e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0?0:-1),c(),k(e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0?1:-1)}}function kAe(t,n){if(1&t){const e=re();h(0,"div",10)(1,"div",11)(2,"div",12)(3,"div",13),x(4,dAe,4,3,"div",14),x(5,uAe,4,7,"a",15),x(6,hAe,4,3,"div",14),x(7,fAe,4,7,"a",15),x(8,pAe,4,3,"div",14),x(9,mAe,4,7,"a",15),x(10,gAe,4,3,"div",14),x(11,_Ae,4,7,"a",15),u()()()(),h(12,"div",16)(13,"div",11)(14,"div",12)(15,"div",13)(16,"div",17),_(17,"translate"),F("click",function(){V(e);const o=y();return H(o.dataFilterer?o.dataFilterer.changeFilters():null)}),h(18,"span")(19,"mat-icon",18),p(20,"search"),u()()()()()()(),h(21,"div",19)(22,"div",11)(23,"div",12)(24,"div",13)(25,"div",17),_(26,"translate"),F("click",function(){return V(e),H(y().enterManually())}),h(27,"span")(28,"mat-icon",18),p(29,"add"),u()()()()()()(),x(30,xAe,2,2)}if(2&t){const e=y();c(4),k(e.currentList===e.lists.Public?4:-1),c(),k(e.currentList!==e.lists.Public?5:-1),c(),k(e.currentList===e.lists.History?6:-1),c(),k(e.currentList!==e.lists.History?7:-1),c(),k(e.currentList===e.lists.Favorites?8:-1),c(),k(e.currentList!==e.lists.Favorites?9:-1),c(),k(e.currentList===e.lists.Blocked?10:-1),c(),k(e.currentList!==e.lists.Blocked?11:-1),c(),C("ngClass",ie(18,nAe,e.loading)),c(4),C("matTooltip",v(17,14,"filters.filter-info")),c(3),C("inline",!0),c(6),C("matTooltip",v(26,16,"vpn.server-list.add-manually-info")),c(3),C("inline",!0),c(2),k(e.dataFilterer?30:-1)}}function SAe(t,n){1&t&&mr(0)}function MAe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=y(5);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function DAe(t,n){if(1&t){const e=re();h(0,"th",41),_(1,"translate"),F("click",function(){V(e);const o=y(4);return H(o.dataSorter.changeSortingOrder(o.dateSortData))}),h(2,"div",34)(3,"div",35),p(4),_(5,"translate"),u(),x(6,MAe,2,2,"mat-icon",18),u()()}if(2&t){const e=y(4);C("matTooltip",v(1,3,"vpn.server-list.date-info")),c(4),D(" ",v(5,5,"vpn.server-list.date-small-table-label")," "),c(2),k(e.dataSorter.currentSortingColumn===e.dateSortData?6:-1)}}function TAe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function EAe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function PAe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function IAe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function OAe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=y(4);C("inline",!0),c(),S(e.dataSorter.sortingArrow)}}function AAe(t,n){if(1&t&&(h(0,"td",43),p(1),_(2,"date"),u()),2&t){const e=y().$implicit;c(),D(" ",ue(2,1,e.lastUsed,"yyyy/MM/dd, H:mm a")," ")}}function RAe(t,n){1&t&&p(0),2&t&&D(" ",y().$implicit.location," ")}function FAe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"vpn.server-list.unknown")," ")}function NAe(t,n){if(1&t&&(h(0,"mat-icon",55),_(1,"translate"),F("click",function(i){return i.stopPropagation()}),p(2,"info_outline"),u()),2&t){const e=y().$implicit,i=y(4);C("inline",!0)("matTooltip",ue(1,2,i.getNoteVar(e),pt(5,sAe,e.personalNote,e.note)))}}function LAe(t,n){if(1&t){const e=re();h(0,"tr",42),F("click",function(){const o=V(e).$implicit,r=y(4);return H(r.currentList!==r.lists.Blocked?r.selectServer(o):null)}),x(1,AAe,3,4,"td",43),h(2,"td",44)(3,"div",45),L(4,"div",46),u()(),h(5,"td",47),L(6,"app-vpn-server-name",48),u(),h(7,"td",49),x(8,RAe,1,1),x(9,FAe,2,3),u(),h(10,"td",50)(11,"app-copy-to-clipboard-text",51),F("click",function(o){return o.stopPropagation()}),u()(),h(12,"td",52),x(13,NAe,3,8,"mat-icon",53),u(),h(14,"td",39)(15,"button",54),_(16,"translate"),F("click",function(o){const r=V(e).$implicit,s=y(4);return o.stopPropagation(),H(s.openOptions(r))}),h(17,"mat-icon",18),p(18,"settings"),u()()()()}if(2&t){const e=n.$implicit,i=y(4);C("ngClass",ie(23,rAe,i.currentList!==i.lists.Blocked)),c(),k(i.currentList===i.lists.History?1:-1),c(3),ao("background-image: url('assets/img/big-flags/"+e.countryCode.toLocaleLowerCase()+".png');"),C("matTooltip",i.getCountryName(e.countryCode)),c(2),C("isCurrentServer",i.currentServer&&e.pk===i.currentServer.pk)("isFavorite",e.flag===i.serverFlags.Favorite&&i.currentList!==i.lists.Favorites)("isBlocked",e.flag===i.serverFlags.Blocked&&i.currentList!==i.lists.Blocked)("isInHistory",e.inHistory&&i.currentList!==i.lists.History)("hasPassword",e.usedWithPassword)("name",e.name)("pk",e.pk)("customName",e.customName)("defaultName","vpn.server-list.none"),c(2),k(e.location?8:-1),c(),k(e.location?-1:9),c(2),C("shortSimple",!0)("text",e.pk),c(2),k(e.note||e.personalNote?13:-1),c(2),C("matTooltip",v(16,21,"vpn.server-options.tooltip")),c(2),C("inline",!0)}}function BAe(t,n){if(1&t){const e=re();h(0,"table",30)(1,"tr"),x(2,DAe,7,7,"th",31),h(3,"th",32),_(4,"translate"),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.countrySortData))}),h(5,"mat-icon",18),p(6,"flag"),u(),x(7,TAe,2,2,"mat-icon",18),u(),h(8,"th",33),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.nameSortData))}),h(9,"div",34)(10,"div",35),p(11),_(12,"translate"),u(),x(13,EAe,2,2,"mat-icon",18),u()(),h(14,"th",36),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.locationSortData))}),h(15,"div",34)(16,"div",35),p(17),_(18,"translate"),u(),x(19,PAe,2,2,"mat-icon",18),u()(),h(20,"th",37),_(21,"translate"),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.pkSortData))}),h(22,"div",34)(23,"div",35),p(24),_(25,"translate"),u(),x(26,IAe,2,2,"mat-icon",18),u()(),h(27,"th",38),_(28,"translate"),F("click",function(){V(e);const o=y(3);return H(o.dataSorter.changeSortingOrder(o.noteSortData))}),h(29,"div",34)(30,"mat-icon",18),p(31,"info_outline"),u(),x(32,OAe,2,2,"mat-icon",18),u()(),L(33,"th",39),u(),me(34,LAe,19,25,"tr",40,Le),u()}if(2&t){const e=y(3);c(2),k(e.currentList===e.lists.History?2:-1),c(),C("matTooltip",v(4,15,"vpn.server-list.country-info")),c(2),C("inline",!0),c(2),k(e.dataSorter.currentSortingColumn===e.countrySortData?7:-1),c(4),D(" ",v(12,17,"vpn.server-list.name-small-table-label")," "),c(2),k(e.dataSorter.currentSortingColumn===e.nameSortData?13:-1),c(4),D(" ",v(18,19,"vpn.server-list.location-small-table-label")," "),c(2),k(e.dataSorter.currentSortingColumn===e.locationSortData?19:-1),c(),C("ngClass",pt(27,oAe,e.currentList===e.lists.Public,e.currentList===e.lists.History))("matTooltip",v(21,21,"vpn.server-list.public-key-info")),c(4),D(" ",v(25,23,"vpn.server-list.public-key-small-table-label")," "),c(2),k(e.dataSorter.currentSortingColumn===e.pkSortData?26:-1),c(),C("matTooltip",v(28,25,"vpn.server-list.note-info")),c(3),C("inline",!0),c(2),k(e.dataSorter.currentSortingColumn===e.noteSortData?32:-1),c(2),ge(e.dataSource)}}function VAe(t,n){if(1&t&&(h(0,"div",27)(1,"div",29),x(2,BAe,36,30,"table",30),u()()),2&t){const e=y(2);c(2),k(e.dataSource.length>0?2:-1)}}function HAe(t,n){if(1&t&&L(0,"app-paginator",28),2&t){const e=y(2);C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",pt(4,aAe,e.currentLocalPk,e.currentList))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function UAe(t,n){1&t&&(h(0,"span",58),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.server-list.empty-discovery")))}function zAe(t,n){1&t&&(h(0,"span",58),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.server-list.empty-history")))}function jAe(t,n){1&t&&(h(0,"span",58),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.server-list.empty-favorites")))}function $Ae(t,n){1&t&&(h(0,"span",58),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.server-list.empty-blocked")))}function WAe(t,n){1&t&&(h(0,"span",58),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.server-list.empty-with-filter")))}function GAe(t,n){if(1&t&&(h(0,"div",27)(1,"div",56)(2,"mat-icon",57),p(3,"warning"),u(),x(4,UAe,3,3,"span",58),x(5,zAe,3,3,"span",58),x(6,jAe,3,3,"span",58),x(7,$Ae,3,3,"span",58),x(8,WAe,3,3,"span",58),u()()),2&t){const e=y(2);c(2),C("inline",!0),c(2),k(0===e.allServers.length&&e.currentList===e.lists.Public?4:-1),c(),k(0===e.allServers.length&&e.currentList===e.lists.History?5:-1),c(),k(0===e.allServers.length&&e.currentList===e.lists.Favorites?6:-1),c(),k(0===e.allServers.length&&e.currentList===e.lists.Blocked?7:-1),c(),k(0!==e.allServers.length?8:-1)}}function qAe(t,n){if(1&t&&(h(0,"div",2)(1,"div",24),L(2,"app-top-bar",4),u(),h(3,"div",25)(4,"div",6)(5,"div",26),rt(6,SAe,1,0,"ng-container",8),u(),x(7,VAe,3,1,"div",27),x(8,HAe,1,7,"app-paginator",28),x(9,GAe,9,6,"div",27),u()()()),2&t){const e=y(),i=Un(2);c(2),C("titleParts",vt(10,yH))("tabsData",e.tabsData)("selectedTabIndex",1)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),c(3),C("ngClass",ie(11,iAe,!e.dataFilterer.currentFiltersTexts||e.dataFilterer.currentFiltersTexts.length<1)),c(),C("ngTemplateOutlet",i),c(),k(0!==e.dataSource.length?7:-1),c(),k(e.numberOfPages>1?8:-1),c(),k(0===e.dataSource.length?9:-1)}}var gi=function(t){return t.Public="public",t.History="history",t.Favorites="favorites",t.Blocked="blocked",t}(gi||{});let CH=(()=>{class t extends Lt{constructor(e,i,o,r,s,a,l,d,f){super(),this.dialog=e,this.router=i,this.translateService=o,this.route=r,this.vpnClientDiscoveryService=s,this.vpnClientService=a,this.vpnSavedDataService=l,this.snackbarService=d,this.storageService=f,this.persistentServerDataResponseKey="serv-dat-response",this.maxFullListElements=50,this.dateSortData=new Pt(["lastUsed"],"vpn.server-list.date-small-table-label",lt.NumberReversed),this.countrySortData=new Pt(["countryName"],"vpn.server-list.country-small-table-label",lt.Text),this.nameSortData=new Pt(["name"],"vpn.server-list.name-small-table-label",lt.Text),this.locationSortData=new Pt(["location"],"vpn.server-list.location-small-table-label",lt.Text),this.pkSortData=new Pt(["pk"],"vpn.server-list.public-key-small-table-label",lt.Text),this.noteSortData=new Pt(["note"],"vpn.server-list.note-small-table-label",lt.Text),this.loading=!0,this.loadingBackendData=!0,this.tabsData=pi.vpnTabsData,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.currentList=gi.Public,this.vpnRunning=!1,this.serverFlags=bn,this.lists=gi,this.initialLoadStarted=!1,this.navigationsSubscription=r.paramMap.subscribe(m=>{if(m.has("type")?m.get("type")===gi.Favorites?(this.currentList=gi.Favorites,this.listId="vfs"):m.get("type")===gi.Blocked?(this.currentList=gi.Blocked,this.listId="vbs"):m.get("type")===gi.History?(this.currentList=gi.History,this.listId="vhs"):(this.currentList=gi.Public,this.listId="vps"):(this.currentList=gi.Public,this.listId="vps"),pi.setDefaultTabForServerList(this.currentList),m.has("key")&&(this.currentLocalPk=m.get("key"),pi.changeCurrentPk(this.currentLocalPk),this.tabsData=pi.vpnTabsData),m.has("page")){let g=Number.parseInt(m.get("page"),10);(isNaN(g)||g<1)&&(g=1),this.currentPageInUrl=g,this.recalculateElementsToShow()}this.initialLoadStarted||(this.initialLoadStarted=!0,this.loadData(!0))}),this.currentServerSubscription=this.vpnSavedDataService.currentServerObservable.subscribe(m=>this.currentServer=m),this.backendDataSubscription=this.vpnClientService.backendState.subscribe(m=>{m&&(this.loadingBackendData=!1,this.vpnRunning=m.vpnClientAppData.running)})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.currentServerSubscription.unsubscribe(),this.backendDataSubscription.unsubscribe(),this.dataSortedSubscription&&this.dataSortedSubscription.unsubscribe(),this.dataFiltererSubscription&&this.dataFiltererSubscription.unsubscribe(),this.dataSubscription&&this.dataSubscription.unsubscribe(),this.dataFilterer&&this.dataFilterer.dispose(),this.dataSorter&&this.dataSorter.dispose()}enterManually(){JOe.openDialog(this.dialog,this.currentLocalPk)}getNoteVar(e){return e.note&&e.personalNote?"vpn.server-list.notes-info":!e.note&&e.personalNote?e.personalNote:e.note}selectServer(e){const i=this.vpnSavedDataService.getSavedVersion(e.pk,!0);if(this.snackbarService.closeCurrentIfTemporaryError(),i&&i.flag===bn.Blocked)this.snackbarService.showError("vpn.starting-blocked-server-error",{},!0);else{if(this.currentServer&&this.currentServer.pk===e.pk){if(this.vpnRunning)this.snackbarService.showWarning("vpn.server-change.already-selected-warning");else{const o=Ut.createConfirmationDialog(this.dialog,"vpn.server-change.start-same-server-confirmation");o.componentInstance.operationAccepted.subscribe(()=>{o.componentInstance.closeModal(),this.vpnClientService.start(),pi.redirectAfterServerChange(this.router,null,this.currentLocalPk)})}return}if(i&&i.usedWithPassword)return void uV.openDialog(this.dialog,!0).afterClosed().subscribe(o=>{o&&this.makeServerChange(e,"-"===o?null:o.substr(1))});this.makeServerChange(e,null)}}makeServerChange(e,i){pi.processServerChange(this.router,this.vpnClientService,this.vpnSavedDataService,this.snackbarService,this.dialog,null,this.currentLocalPk,e.originalLocalData,e.originalDiscoveryData,null,i)}openOptions(e){let i=this.vpnSavedDataService.getSavedVersion(e.pk,!0);i||(i=this.vpnSavedDataService.processFromDiscovery(e.originalDiscoveryData)),i?pi.openServerOptions(i,this.router,this.vpnSavedDataService,this.vpnClientService,this.snackbarService,this.dialog).subscribe(o=>{o&&this.processAllServers()}):this.snackbarService.showError("vpn.unexpedted-error")}loadData(e){if(this.currentList===gi.Public){const i=e?this.getLocalValue(this.persistentServerDataResponseKey):null;let o=this.vpnClientDiscoveryService.getServers();i&&(o=se(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{i||this.saveLocalValue(this.persistentServerDataResponseKey,JSON.stringify(r)),this.allServers=r.map(s=>({countryCode:s.countryCode,countryName:this.getCountryName(s.countryCode),name:s.name,customName:null,location:s.location,pk:s.pk,note:s.note,personalNote:null,originalDiscoveryData:s})),this.vpnSavedDataService.updateFromDiscovery(r),this.loading=!1,this.processAllServers(),i&&this.loadData(!1)})}else{let i;i=this.currentList===gi.History?this.vpnSavedDataService.history:this.currentList===gi.Favorites?this.vpnSavedDataService.favorites:this.vpnSavedDataService.blocked,this.dataSubscription=i.subscribe(o=>{const r=[];o.forEach(s=>{r.push({countryCode:s.countryCode,countryName:this.getCountryName(s.countryCode),name:s.name,customName:null,location:s.location,pk:s.pk,note:s.note,personalNote:null,lastUsed:s.lastUsed,inHistory:s.inHistory,flag:s.flag,originalLocalData:s})}),this.allServers=r,this.loading=!1,this.processAllServers()})}}processAllServers(){this.fillFilterPropertiesArray();const e=new Set;this.allServers.forEach((d,f)=>{e.add(d.countryCode);const m=this.vpnSavedDataService.getSavedVersion(d.pk,0===f);d.customName=m?m.customName:null,d.personalNote=m?m.personalNote:null,d.inHistory=!!m&&m.inHistory,d.flag=m?m.flag:bn.None,d.enteredManually=!!m&&m.enteredManually,d.usedWithPassword=!!m&&m.usedWithPassword});let i=[];e.forEach(d=>{i.push({label:this.getCountryName(d),value:d,image:"/assets/img/big-flags/"+d.toLowerCase()+".png"})}),i.sort((d,f)=>d.label.localeCompare(f.label)),i=[{label:"vpn.server-list.filter-dialog.country-options.any",value:""}].concat(i),this.filterProperties=[{filterName:"vpn.server-list.filter-dialog.country",keyNameInElementsArray:"countryCode",type:Mn.Select,printableLabelsForValues:i,printableLabelGeneralSettings:{defaultImage:"/assets/img/big-flags/unknown.png",imageWidth:20,imageHeight:15}}].concat(this.filterProperties);const r=[];let s,a,l;this.currentList===gi.Public?(r.push(this.countrySortData),r.push(this.nameSortData),r.push(this.locationSortData),r.push(this.pkSortData),r.push(this.noteSortData),s=0,a=1):(this.currentList===gi.History&&r.push(this.dateSortData),r.push(this.countrySortData),r.push(this.nameSortData),r.push(this.locationSortData),r.push(this.pkSortData),r.push(this.noteSortData),s=this.currentList===gi.History?0:1,a=this.currentList===gi.History?2:3),this.dataSorter=new wu(this.dialog,this.translateService,this.storageService,r,s,this.listId),this.dataSorter.setTieBreakerColumnIndex(a),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new xu(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(d=>{this.filteredServers=d,this.dataSorter.setData(this.filteredServers)}),l=this.currentList===gi.Public?this.allServers.filter(d=>d.flag!==bn.Blocked):this.allServers,this.dataFilterer.setData(l)}fillFilterPropertiesArray(){this.filterProperties=[{filterName:"vpn.server-list.filter-dialog.name",keyNameInElementsArray:"name",secondaryKeyNameInElementsArray:"customName",type:Mn.TextInput,maxlength:100},{filterName:"vpn.server-list.filter-dialog.location",keyNameInElementsArray:"location",type:Mn.TextInput,maxlength:100},{filterName:"vpn.server-list.filter-dialog.public-key",keyNameInElementsArray:"pk",type:Mn.TextInput,maxlength:100}]}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredServers){const e=this.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredServers.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.serversToShow=this.filteredServers.slice(i,i+e)}else this.serversToShow=null;this.dataSource=this.serversToShow}getCountryName(e){return rs[e.toUpperCase()]?rs[e.toUpperCase()]:e}static{this.\u0275fac=function(i){return new(i||t)(O(Nt),O(yt),O(Xo),O(Li),O(tAe),O(wc),O(Cc),O(ot),O(ri))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-vpn-server-list"]],standalone:!1,features:[_e],decls:4,vars:2,consts:[["topPart",""],[1,"d-flex","flex-column","h-100","w-100"],[1,"row"],[1,"loading-top-container"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton","localVpnKey"],[1,"main-container"],[1,"width-limiter"],[1,"center-container","mt-4.5"],[4,"ngTemplateOutlet"],[1,"h-100","loading-indicator"],[1,"option-bar-container"],[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","allow-overflow"],[1,"option-bar"],[1,"text-option","selected"],[1,"text-option",3,"routerLink"],[1,"option-bar-container","option-bar-margin",3,"ngClass"],[1,"icon-option",3,"click","matTooltip"],[3,"inline"],[1,"option-bar-container","option-bar-margin"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"transparent-50"],[1,"item"],[1,"col-12"],[1,"col-12","vpn-table-container"],[1,"center-container","mt-4.5",3,"ngClass"],[1,"rounded-elevated-box"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"box-internal-container"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table"],[1,"sortable-column","date-column","click-effect",3,"matTooltip"],[1,"sortable-column","flag-column","center","click-effect",3,"click","matTooltip"],[1,"sortable-column","name-column","click-effect",3,"click"],[1,"header-container"],[1,"header-text"],[1,"sortable-column","location-column","click-effect",3,"click"],[1,"sortable-column","pk-column","click-effect",3,"click","ngClass","matTooltip"],[1,"sortable-column","note-column","center","click-effect",3,"click","matTooltip"],[1,"actions"],[3,"ngClass"],[1,"sortable-column","date-column","click-effect",3,"click","matTooltip"],[3,"click","ngClass"],[1,"date-column"],[1,"flag-column","icon-fixer"],[1,"flag"],[3,"matTooltip"],[1,"name-column"],[3,"isCurrentServer","isFavorite","isBlocked","isInHistory","hasPassword","name","pk","customName","defaultName"],[1,"location-column"],[1,"pk-column","history-pk-column"],[1,"d-inline-block","w-100",3,"click","shortSimple","text"],[1,"center","note-column"],[1,"note-icon",3,"inline","matTooltip"],["mat-button","",1,"big-action-button","transparent-button","vpn-small-button",3,"click","matTooltip"],[1,"note-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","font-sm"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(x(0,cAe,8,7,"div",1),rt(1,kAe,31,20,"ng-template",null,0,Ul),x(3,qAe,10,13,"div",2)),2&i&&(k(o.loading||o.loadingBackendData?0:-1),c(3),k(o.loading||o.loadingBackendData?-1:3))},styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%], .note-column[_ngcontent-%COMP%], .pk-column[_ngcontent-%COMP%], .location-column[_ngcontent-%COMP%], .name-column[_ngcontent-%COMP%], .date-column[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}.center-container[_ngcontent-%COMP%]{text-align:center}.center-container[_ngcontent-%COMP%] app-paginator[_ngcontent-%COMP%]{display:inline-block}.loading-top-container[_ngcontent-%COMP%]{z-index:1}.loading-indicator[_ngcontent-%COMP%]{padding-top:30px;padding-bottom:20px}.deactivated[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.option-bar-container[_ngcontent-%COMP%]{display:inline-block}.option-bar-container[_ngcontent-%COMP%] .allow-overflow[_ngcontent-%COMP%]{overflow:visible}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%]{display:flex;margin:-17px}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > div[_ngcontent-%COMP%], .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{height:55px;line-height:55px;cursor:pointer;color:#fff;text-decoration:none;-webkit-user-select:none;user-select:none}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:hover, .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:#0003}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > .icon-option[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:inline-block}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > .icon-option[_ngcontent-%COMP%]:active span[_ngcontent-%COMP%], .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:active span[_ngcontent-%COMP%]{transform:scale(.95)}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .text-option[_ngcontent-%COMP%]{padding:0 40px;font-size:1rem}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .icon-option[_ngcontent-%COMP%]{width:55px;font-size:24px}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{background:#0000005c;cursor:unset!important}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]:hover{background:#0009}.option-bar-margin[_ngcontent-%COMP%]{margin-left:10px}.filter-label[_ngcontent-%COMP%]{font-size:.7rem;display:inline-block;padding:5px 10px;margin-bottom:7px}.filter-label[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{vertical-align:middle}table[_ngcontent-%COMP%]{width:100%}tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:2px 5px!important;font-size:12px!important;font-weight:400!important}tr[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{padding-left:5px!important;padding-right:5px!important}.date-column[_ngcontent-%COMP%]{width:150px}.name-column[_ngcontent-%COMP%]{max-width:0;width:20%}.location-column[_ngcontent-%COMP%]{max-width:0;min-width:72px}.pk-column[_ngcontent-%COMP%]{max-width:0;width:25%}.history-pk-column[_ngcontent-%COMP%]{width:20%!important}.icon-fixer[_ngcontent-%COMP%]{line-height:0px}.note-column[_ngcontent-%COMP%]{max-width:0;width:3%;min-width:60px}.note-column[_ngcontent-%COMP%] .note-icon[_ngcontent-%COMP%]{opacity:.55;font-size:16px!important;display:inline}.flag-column[_ngcontent-%COMP%]{width:1px;line-height:0px}.actions[_ngcontent-%COMP%]{width:1px}.header-container[_ngcontent-%COMP%]{max-width:100%;display:inline-flex}.header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%]{flex-grow:1}.flag[_ngcontent-%COMP%]{width:20px;height:15px;display:inline-block;margin-right:5px;background-image:url(/assets/img/big-flags/unknown.png);background-size:contain}.flag[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{width:20px;height:15px;background-size:contain}.center[_ngcontent-%COMP%]{text-align:center}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"]})}}return t})();const Rp=(t,n)=>({"small-text-icon":t,"big-text-icon":n});function KAe(t,n){if(1&t&&(h(0,"mat-icon",0),_(1,"translate"),p(2,"done"),u()),2&t){const e=y();C("ngClass",pt(5,Rp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",v(1,3,"vpn.server-conditions.selected-info"))}}function YAe(t,n){if(1&t&&(h(0,"mat-icon",1),_(1,"translate"),p(2,"clear"),u()),2&t){const e=y();C("ngClass",pt(5,Rp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",v(1,3,"vpn.server-conditions.blocked-info"))}}function XAe(t,n){if(1&t&&(h(0,"mat-icon",2),_(1,"translate"),p(2,"star"),u()),2&t){const e=y();C("ngClass",pt(5,Rp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",v(1,3,"vpn.server-conditions.favorite-info"))}}function ZAe(t,n){if(1&t&&(h(0,"mat-icon",0),_(1,"translate"),p(2,"history"),u()),2&t){const e=y();C("ngClass",pt(5,Rp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",v(1,3,"vpn.server-conditions.history-info"))}}function QAe(t,n){if(1&t&&(h(0,"mat-icon",0),_(1,"translate"),p(2,"lock_outlined"),u()),2&t){const e=y();C("ngClass",pt(5,Rp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",v(1,3,"vpn.server-conditions.has-password-info"))}}function JAe(t,n){if(1&t&&(p(0),h(1,"mat-icon",3),p(2,"fiber_manual_record"),u(),p(3)),2&t){const e=y();D(" ",e.customName," "),c(),C("inline",!0),c(2),D(" ",e.name,"\n")}}function eRe(t,n){1&t&&p(0),2&t&&D(" ",y().customName,"\n")}function tRe(t,n){1&t&&p(0),2&t&&D(" ",y().name,"\n")}function nRe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,y().defaultName),"\n")}let wH=(()=>{class t{constructor(){this.isCurrentServer=!1,this.isFavorite=!1,this.isBlocked=!1,this.isInHistory=!1,this.hasPassword=!1,this.name="",this.customName="",this.pk="",this.defaultName="",this.adjustIconsForBigText=!1}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=ae({type:t,selectors:[["app-vpn-server-name"]],inputs:{isCurrentServer:"isCurrentServer",isFavorite:"isFavorite",isBlocked:"isBlocked",isInHistory:"isInHistory",hasPassword:"hasPassword",name:"name",customName:"customName",pk:"pk",defaultName:"defaultName",adjustIconsForBigText:"adjustIconsForBigText"},standalone:!1,decls:9,vars:9,consts:[[1,"server-condition-icon",3,"ngClass","inline","matTooltip"],[1,"server-condition-icon","red-clear-text",3,"ngClass","inline","matTooltip"],[1,"server-condition-icon","yellow-clear-text",3,"ngClass","inline","matTooltip"],[1,"name-separator",3,"inline"]],template:function(i,o){1&i&&(x(0,KAe,3,8,"mat-icon",0),x(1,YAe,3,8,"mat-icon",1),x(2,XAe,3,8,"mat-icon",2),x(3,ZAe,3,8,"mat-icon",0),x(4,QAe,3,8,"mat-icon",0),x(5,JAe,4,3),x(6,eRe,1,1),x(7,tRe,1,1),x(8,nRe,2,3)),2&i&&(k(o.isCurrentServer?0:-1),c(),k(o.isBlocked?1:-1),c(),k(o.isFavorite?2:-1),c(),k(o.isInHistory?3:-1),c(),k(o.hasPassword?4:-1),c(),k(!o.customName||!o.name||o.pk&&o.name===o.pk?-1:5),c(),k((!o.name||o.pk&&o.name===o.pk)&&o.customName?6:-1),c(),k(!o.name||o.pk&&o.name===o.pk||o.customName?-1:7),c(),k(o.name&&(!o.pk||o.name!==o.pk)||o.customName?-1:8))},dependencies:[Ft,Ae,Et,we],styles:[".server-condition-icon[_ngcontent-%COMP%]{font-size:14px!important;line-height:14px!important;margin-right:3px;position:relative;width:14px!important;-webkit-user-select:none;user-select:none;cursor:default}.small-text-icon[_ngcontent-%COMP%]{top:2px}.big-text-icon[_ngcontent-%COMP%]{top:0}.name-separator[_ngcontent-%COMP%]{display:inline!important;font-size:8px!important;opacity:.5!important}"]})}}return t})();const xH=()=>["vpn.title"],kH=t=>({"disabled-button":t}),iRe=(t,n)=>({custom:t,original:n}),Ru=t=>({showValue:!0,showUnit:!0,showPerSecond:!0,limitDecimals:!0,useBits:t}),SH=t=>({showValue:!0,showUnit:!0,showPerSecond:!0,useBits:t}),MH=t=>({showValue:!0,showUnit:!0,useBits:t}),ey=t=>({time:t});function oRe(t,n){if(1&t&&(h(0,"div",0)(1,"div"),L(2,"app-top-bar",2),u(),L(3,"app-loading-indicator"),u()),2&t){const e=y();c(2),C("titleParts",vt(5,xH))("tabsData",e.tabsData)("selectedTabIndex",0)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk)}}function rRe(t,n){1&t&&L(0,"mat-spinner",22),2&t&&C("diameter",40)}function sRe(t,n){1&t&&(h(0,"mat-icon",23),p(1,"power_settings_new"),u()),2&t&&C("inline",!0)}function aRe(t,n){if(1&t){const e=re();h(0,"div",28),L(1,"div",29),u(),h(2,"div",30)(3,"div",31),L(4,"app-vpn-server-name",32),u(),h(5,"div",33),L(6,"app-copy-to-clipboard-text",34),u()(),h(7,"div",35),L(8,"div"),u(),h(9,"div",36)(10,"mat-icon",37),_(11,"translate"),F("click",function(){return V(e),H(y(3).openServerOptions())}),p(12,"settings"),u()()}if(2&t){const e=y(3);c(),ao("background-image: url('assets/img/big-flags/"+e.currentRemoteServer.countryCode.toLocaleLowerCase()+".png');"),C("matTooltip",e.getCountryName(e.currentRemoteServer.countryCode)),c(3),C("isFavorite",e.currentRemoteServer.flag===e.serverFlags.Favorite)("isBlocked",e.currentRemoteServer.flag===e.serverFlags.Blocked)("hasPassword",e.currentRemoteServer.usedWithPassword)("name",e.currentRemoteServer.name)("pk",e.currentRemoteServer.pk)("customName",e.currentRemoteServer.customName),c(2),C("shortSimple",!0)("text",e.currentRemoteServer.pk),c(4),C("inline",!0)("matTooltip",v(11,13,"vpn.server-options.tooltip"))}}function lRe(t,n){1&t&&(h(0,"div",25),p(1),_(2,"translate"),u()),2&t&&(c(),S(v(2,1,"vpn.status-page.no-server")))}function cRe(t,n){if(1&t&&(h(0,"div",26)(1,"mat-icon",23),p(2,"info_outline"),u(),p(3),_(4,"translate"),u()),2&t){const e=y(3);c(),C("inline",!0),c(2),D(" ",ue(4,2,e.getNoteVar(),pt(5,iRe,e.currentRemoteServer.personalNote,e.currentRemoteServer.note))," ")}}function dRe(t,n){if(1&t&&(h(0,"div",27)(1,"mat-icon",23),p(2,"cancel"),u(),p(3),_(4,"translate"),u()),2&t){const e=y(3);c(),C("inline",!0),c(2),nt(" ",v(4,3,"vpn.status-page.last-error")," ",e.backendState.vpnClientAppData.lastErrorMsg," ")}}function uRe(t,n){if(1&t){const e=re();h(0,"div",6)(1,"div",9)(2,"div",11),p(3),_(4,"translate"),u(),h(5,"div")(6,"div",18),F("click",function(){return V(e),H(y(2).start())}),h(7,"div",19),L(8,"div",20),u(),h(9,"div",19),L(10,"div",21),u(),x(11,rRe,1,1,"mat-spinner",22),x(12,sRe,2,1,"mat-icon",23),u()(),h(13,"div",24),x(14,aRe,13,15),x(15,lRe,3,3,"div",25),u(),h(16,"div"),x(17,cRe,5,8,"div",26),u(),h(18,"div"),x(19,dRe,5,5,"div",27),u()()()}if(2&t){const e=y(2);c(3),S(v(4,8,"vpn.status-page.start-title")),c(3),C("ngClass",ie(10,kH,e.showBusy)),c(5),k(e.showBusy?11:-1),c(),k(e.showBusy?-1:12),c(2),k(e.currentRemoteServer?14:-1),c(),k(e.currentRemoteServer?-1:15),c(2),k(e.currentRemoteServer&&(e.currentRemoteServer.note||e.currentRemoteServer.personalNote)?17:-1),c(2),k(e.backendState&&e.backendState.vpnClientAppData&&e.backendState.vpnClientAppData.lastErrorMsg?19:-1)}}function hRe(t,n){if(1&t&&(h(0,"div",44)(1,"mat-icon",23),p(2,"cancel"),u(),p(3),_(4,"translate"),u()),2&t){const e=y(3);c(),C("inline",!0),c(2),nt(" ",v(4,3,"vpn.status-page.last-error")," ",e.backendState.vpnClientAppData.connectionData.error," ")}}function fRe(t,n){1&t&&(h(0,"div"),L(1,"mat-spinner",22),u()),2&t&&(c(),C("diameter",24))}function pRe(t,n){1&t&&(h(0,"mat-icon",23),p(1,"power_settings_new"),u()),2&t&&C("inline",!0)}function mRe(t,n){if(1&t){const e=re();h(0,"div",7)(1,"div",9)(2,"div",38)(3,"div",39)(4,"mat-icon",23),p(5,"timer"),u(),h(6,"span"),p(7),u()()(),h(8,"div",40),p(9),_(10,"translate"),u(),h(11,"div",41)(12,"div",42),p(13),_(14,"translate"),u(),L(15,"div"),u(),h(16,"div",43),p(17),_(18,"translate"),u(),x(19,hRe,5,5,"div",44),h(20,"div",45)(21,"div",46),_(22,"translate"),h(23,"div",47),L(24,"app-line-chart",48),u(),h(25,"div",49)(26,"div",50)(27,"div",51),p(28),_(29,"autoScale"),u(),L(30,"div",52),u()(),h(31,"div",49)(32,"div",53)(33,"div",51),p(34),_(35,"autoScale"),u(),L(36,"div",52),u()(),h(37,"div",49)(38,"div",54)(39,"div",51),p(40),_(41,"autoScale"),u()()(),h(42,"div",55)(43,"mat-icon",56),p(44,"keyboard_backspace"),u(),h(45,"div",57),p(46),_(47,"autoScale"),u(),h(48,"div",58),p(49),_(50,"autoScale"),_(51,"translate"),u()()(),h(52,"div",46),_(53,"translate"),h(54,"div",47),L(55,"app-line-chart",48),u(),h(56,"div",59)(57,"div",50)(58,"div",51),p(59),_(60,"autoScale"),u(),L(61,"div",52),u()(),h(62,"div",49)(63,"div",53)(64,"div",51),p(65),_(66,"autoScale"),u(),L(67,"div",52),u()(),h(68,"div",49)(69,"div",54)(70,"div",51),p(71),_(72,"autoScale"),u()()(),h(73,"div",55)(74,"mat-icon",60),p(75,"keyboard_backspace"),u(),h(76,"div",57),p(77),_(78,"autoScale"),u(),h(79,"div",58),p(80),_(81,"autoScale"),_(82,"translate"),u()()()(),h(83,"div",61)(84,"div",62),_(85,"translate"),h(86,"div",47),L(87,"app-line-chart",63),u(),h(88,"div",59)(89,"div",50)(90,"div",51),p(91),_(92,"translate"),u(),L(93,"div",52),u()(),h(94,"div",49)(95,"div",53)(96,"div",51),p(97),_(98,"translate"),u(),L(99,"div",52),u()(),h(100,"div",49)(101,"div",54)(102,"div",51),p(103),_(104,"translate"),u()()(),h(105,"div",55)(106,"mat-icon",23),p(107,"swap_horiz"),u(),h(108,"div"),p(109),_(110,"translate"),u()()()(),h(111,"div",64),F("click",function(){return V(e),H(y(2).stop())}),h(112,"div",65)(113,"div",66),x(114,fRe,2,1,"div"),x(115,pRe,2,1,"mat-icon",23),h(116,"span"),p(117),_(118,"translate"),u()()()()()()}if(2&t){const e=y(2);c(4),C("inline",!0),c(3),S(e.connectionTimeString),c(2),S(v(10,58,"vpn.connection-info.state-title")),c(4),S(v(14,60,e.currentStateText)),c(2),Ge("state-line "+e.currentStateLineClass),c(2),S(v(18,62,e.currentStateText+"-info")),c(2),k(e.backendState&&e.backendState.vpnClientAppData&&e.backendState.vpnClientAppData.connectionData&&e.backendState.vpnClientAppData.connectionData.error?19:-1),c(2),C("matTooltip",v(22,64,"vpn.status-page.upload-info")),c(3),C("animated",!1)("data",e.sentHistory)("min",e.minUploadInGraph)("max",e.maxUploadInGraph),c(4),D(" ",ue(29,66,e.maxUploadInGraph,ie(118,Ru,e.showSpeedsInBits))," "),c(2),ao("margin-top: "+e.graphsTopInternalMargin+"px;"),c(4),D(" ",ue(35,69,e.midUploadInGraph,ie(120,Ru,e.showSpeedsInBits))," "),c(2),ao("margin-top: "+e.graphsTopInternalMargin/2+"px;"),c(4),D(" ",ue(41,72,e.minUploadInGraph,ie(122,Ru,e.showSpeedsInBits))," "),c(3),C("inline",!0),c(3),S(ue(47,75,e.uploadSpeed,ie(124,SH,e.showSpeedsInBits))),c(3),nt(" ",ue(50,78,e.totalUploaded,ie(126,MH,e.showTotalsInBits))," ",v(51,81,"vpn.status-page.total-data-label")," "),c(3),C("matTooltip",v(53,83,"vpn.status-page.download-info")),c(3),C("animated",!1)("data",e.receivedHistory)("min",e.minDownloadInGraph)("max",e.maxDownloadInGraph),c(4),D(" ",ue(60,85,e.maxDownloadInGraph,ie(128,Ru,e.showSpeedsInBits))," "),c(2),ao("margin-top: "+e.graphsTopInternalMargin+"px;"),c(4),D(" ",ue(66,88,e.midDownloadInGraph,ie(130,Ru,e.showSpeedsInBits))," "),c(2),ao("margin-top: "+e.graphsTopInternalMargin/2+"px;"),c(4),D(" ",ue(72,91,e.minDownloadInGraph,ie(132,Ru,e.showSpeedsInBits))," "),c(3),C("inline",!0),c(3),S(ue(78,94,e.downloadSpeed,ie(134,SH,e.showSpeedsInBits))),c(3),nt(" ",ue(81,97,e.totalDownloaded,ie(136,MH,e.showTotalsInBits))," ",v(82,100,"vpn.status-page.total-data-label")," "),c(4),C("matTooltip",v(85,102,"vpn.status-page.latency-info")),c(3),C("animated",!1)("data",e.latencyHistory)("min",e.minLatencyInGraph)("max",e.maxLatencyInGraph),c(4),D(" ",ue(92,104,"common."+e.getLatencyValueString(e.maxLatencyInGraph),ie(138,ey,e.getPrintableLatency(e.maxLatencyInGraph)))," "),c(2),ao("margin-top: "+e.graphsTopInternalMargin+"px;"),c(4),D(" ",ue(98,107,"common."+e.getLatencyValueString(e.midLatencyInGraph),ie(140,ey,e.getPrintableLatency(e.midLatencyInGraph)))," "),c(2),ao("margin-top: "+e.graphsTopInternalMargin/2+"px;"),c(4),D(" ",ue(104,110,"common."+e.getLatencyValueString(e.minLatencyInGraph),ie(142,ey,e.getPrintableLatency(e.minLatencyInGraph)))," "),c(3),C("inline",!0),c(3),S(ue(110,113,"common."+e.getLatencyValueString(e.latency),ie(144,ey,e.getPrintableLatency(e.latency)))),c(2),C("ngClass",ie(146,kH,e.showBusy)),c(3),k(e.showBusy?114:-1),c(),k(e.showBusy?-1:115),c(2),S(v(118,116,"vpn.status-page.disconnect"))}}function gRe(t,n){1&t&&p(0),2&t&&D(" ",y(3).currentIp," ")}function _Re(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"common.unknown")," ")}function bRe(t,n){1&t&&L(0,"mat-spinner",22),2&t&&C("diameter",20)}function vRe(t,n){1&t&&(h(0,"mat-icon",67),_(1,"translate"),p(2,"warning"),u()),2&t&&C("inline",!0)("matTooltip",v(1,2,"vpn.status-page.data.ip-problem-info"))}function yRe(t,n){if(1&t){const e=re();h(0,"mat-icon",69),_(1,"translate"),F("click",function(){return V(e),H(y(3).getIp())}),p(2,"refresh"),u()}2&t&&C("inline",!0)("matTooltip",v(1,2,"vpn.status-page.data.ip-refresh-info"))}function CRe(t,n){if(1&t&&(h(0,"div",12),x(1,gRe,1,1),x(2,_Re,2,3),x(3,bRe,1,1,"mat-spinner",22),x(4,vRe,3,4,"mat-icon",67),x(5,yRe,3,4,"mat-icon",68),u()),2&t){const e=y(2);c(),k(e.currentIp?1:-1),c(),k(e.currentIp||e.loadingCurrentIp?-1:2),c(),k(e.loadingCurrentIp?3:-1),c(),k(e.problemGettingIp?4:-1),c(),k(e.loadingCurrentIp?-1:5)}}function wRe(t,n){1&t&&(h(0,"div",12),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"vpn.status-page.data.unavailable")," "))}function xRe(t,n){1&t&&p(0),2&t&&D(" ",y(3).ipCountry," ")}function kRe(t,n){1&t&&(p(0),_(1,"translate")),2&t&&D(" ",v(1,1,"common.unknown")," ")}function SRe(t,n){1&t&&L(0,"mat-spinner",22),2&t&&C("diameter",20)}function MRe(t,n){1&t&&(h(0,"mat-icon",67),_(1,"translate"),p(2,"warning"),u()),2&t&&C("inline",!0)("matTooltip",v(1,2,"vpn.status-page.data.ip-country-problem-info"))}function DRe(t,n){if(1&t&&(h(0,"div",12),x(1,xRe,1,1),x(2,kRe,2,3),x(3,SRe,1,1,"mat-spinner",22),x(4,MRe,3,4,"mat-icon",67),u()),2&t){const e=y(2);c(),k(e.ipCountry?1:-1),c(),k(e.ipCountry||e.loadingCurrentIp?-1:2),c(),k(e.loadingCurrentIp?3:-1),c(),k(e.problemGettingIp?4:-1)}}function TRe(t,n){1&t&&(h(0,"div",12),p(1),_(2,"translate"),u()),2&t&&(c(),D(" ",v(2,1,"vpn.status-page.data.unavailable")," "))}function ERe(t,n){if(1&t){const e=re();h(0,"div")(1,"div",11),p(2),_(3,"translate"),u(),h(4,"div",12),L(5,"app-vpn-server-name",70),h(6,"mat-icon",69),_(7,"translate"),F("click",function(){return V(e),H(y(2).openServerOptions())}),p(8,"settings"),u()()()}if(2&t){const e=y(2);c(2),S(v(3,10,"vpn.status-page.data.server")),c(3),C("isFavorite",e.currentRemoteServer.flag===e.serverFlags.Favorite)("isBlocked",e.currentRemoteServer.flag===e.serverFlags.Blocked)("hasPassword",e.currentRemoteServer.usedWithPassword)("adjustIconsForBigText",!0)("name",e.currentRemoteServer.name)("pk",e.currentRemoteServer.pk)("customName",e.currentRemoteServer.customName),c(),C("inline",!0)("matTooltip",v(7,12,"vpn.server-options.tooltip"))}}function PRe(t,n){1&t&&L(0,"div",13)}function IRe(t,n){if(1&t&&(h(0,"div")(1,"div",11),p(2),_(3,"translate"),u(),h(4,"div",16),p(5),u()()),2&t){const e=y(2);c(2),S(v(3,2,"vpn.status-page.data.server-note")),c(3),D(" ",e.currentRemoteServer.personalNote," ")}}function ORe(t,n){1&t&&L(0,"div",13)}function ARe(t,n){if(1&t&&(h(0,"div")(1,"div",11),p(2),_(3,"translate"),u(),h(4,"div",16),p(5),u()()),2&t){const e=y(2);c(2),S(v(3,2,"vpn.status-page.data."+(e.currentRemoteServer.personalNote?"original-":"")+"server-note")),c(3),D(" ",e.currentRemoteServer.note," ")}}function RRe(t,n){1&t&&L(0,"div",13)}function FRe(t,n){if(1&t&&(h(0,"div")(1,"div",11),p(2),_(3,"translate"),u(),h(4,"div",16),L(5,"app-copy-to-clipboard-text",17),u()()),2&t){const e=y(2);c(2),S(v(3,2,"vpn.status-page.data.remote-pk")),c(3),C("text",e.currentRemoteServer.pk)}}function NRe(t,n){1&t&&L(0,"div",13)}function LRe(t,n){if(1&t&&(h(0,"div",1)(1,"div",3)(2,"div",4),L(3,"app-top-bar",2),u()(),h(4,"div",5),x(5,uRe,20,12,"div",6),x(6,mRe,119,148,"div",7),h(7,"div",8)(8,"div",9)(9,"div",10)(10,"div")(11,"div",11),p(12),_(13,"translate"),u(),x(14,CRe,6,5,"div",12),x(15,wRe,3,3,"div",12),u(),L(16,"div",13),h(17,"div")(18,"div",11),p(19),_(20,"translate"),u(),x(21,DRe,5,4,"div",12),x(22,TRe,3,3,"div",12),u(),L(23,"div",14)(24,"div",15)(25,"div",14),x(26,ERe,9,14,"div"),x(27,PRe,1,0,"div",13),x(28,IRe,6,4,"div"),x(29,ORe,1,0,"div",13),x(30,ARe,6,4,"div"),x(31,RRe,1,0,"div",13),x(32,FRe,6,4,"div"),x(33,NRe,1,0,"div",13),h(34,"div")(35,"div",11),p(36),_(37,"translate"),u(),h(38,"div",16),L(39,"app-copy-to-clipboard-text",17),u()()()()()()()),2&t){const e=y();c(3),C("titleParts",vt(29,xH))("tabsData",e.tabsData)("selectedTabIndex",0)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),c(2),k(e.showStarted?-1:5),c(),k(e.showStarted?6:-1),c(6),S(v(13,23,"vpn.status-page.data.ip")),c(2),k(e.ipInfoAllowed?14:-1),c(),k(e.ipInfoAllowed?-1:15),c(4),S(v(20,25,"vpn.status-page.data.country")),c(2),k(e.ipInfoAllowed?21:-1),c(),k(e.ipInfoAllowed?-1:22),c(4),k(e.showStarted&&e.currentRemoteServer?26:-1),c(),k(e.showStarted&&e.currentRemoteServer?27:-1),c(),k(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.personalNote?28:-1),c(),k(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.personalNote?29:-1),c(),k(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.note?30:-1),c(),k(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.note?31:-1),c(),k(e.showStarted&&e.currentRemoteServer?32:-1),c(),k(e.showStarted&&e.currentRemoteServer?33:-1),c(3),S(v(37,27,"vpn.status-page.data.local-pk")),c(3),C("text",e.currentLocalPk)}}let BRe=(()=>{class t extends Lt{constructor(e,i,o,r,s,a){super(),this.vpnClientService=e,this.vpnSavedDataService=i,this.snackbarService=o,this.route=r,this.dialog=s,this.router=a,this.persistentServerDataResponseKey="serv-dat-response",this.tabsData=pi.vpnTabsData,this.sentHistory=[0,0,0,0,0,0,0,0,0,0],this.receivedHistory=[0,0,0,0,0,0,0,0,0,0],this.latencyHistory=[0,0,0,0,0,0,0,0,0,0],this.minUploadInGraph=0,this.midUploadInGraph=0,this.maxUploadInGraph=0,this.minDownloadInGraph=0,this.midDownloadInGraph=0,this.maxDownloadInGraph=0,this.minLatencyInGraph=0,this.midLatencyInGraph=0,this.maxLatencyInGraph=0,this.graphsTopInternalMargin=Qv.topInternalMargin,this.connectionTimeString="00:00:00",this.calculatedSegs=-1,this.uploadSpeed=0,this.downloadSpeed=0,this.totalUploaded=0,this.totalDownloaded=0,this.latency=0,this.showSpeedsInBits=!0,this.showTotalsInBits=!1,this.loading=!0,this.showStartedLastValue=!1,this.showStarted=!1,this.lastAppState=null,this.showBusy=!1,this.stopRequested=!1,this.loadingCurrentIp=!0,this.problemGettingIp=!1,this.serverFlags=bn,this.ipInfoAllowed=this.vpnSavedDataService.getCheckIpSetting();const l=this.vpnSavedDataService.getDataUnitsSetting();l===er.OnlyBits?(this.showSpeedsInBits=!0,this.showTotalsInBits=!0):l===er.OnlyBytes?(this.showSpeedsInBits=!1,this.showTotalsInBits=!1):(this.showSpeedsInBits=!0,this.showTotalsInBits=!1)}ngOnInit(){return this.navigationsSubscription=this.route.paramMap.subscribe(e=>{e.has("key")&&(this.currentLocalPk=e.get("key"),pi.changeCurrentPk(this.currentLocalPk),this.tabsData=pi.vpnTabsData),setTimeout(()=>this.navigationsSubscription.unsubscribe()),this.startGettingData(!0),this.currentRemoteServerSubscription=this.vpnSavedDataService.currentServerObservable.subscribe(i=>{this.currentRemoteServer=i})}),super.ngOnInit()}startGettingData(e){const i=e?this.getLocalValue(this.persistentServerDataResponseKey):null;let o=this.vpnClientService.backendState;i&&(o=se(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{if(i||this.saveLocalValue(this.persistentServerDataResponseKey,JSON.stringify(r)),r&&r.serviceState!==Vi.PerformingInitialCheck){if(this.backendState=r,r.publicIp?(this.currentIp=r.publicIp,this.problemGettingIp=!1):this.currentIp=null,this.ipCountry=r.countryName?r.countryName:null,this.loadingCurrentIp=!1,this.showStarted=r.vpnClientAppData.running||r.vpnClientAppData.appState!==un.Stopped,this.showStartedLastValue!==this.showStarted){for(let s=0;s<10;s++)this.receivedHistory[s]=0,this.sentHistory[s]=0,this.latencyHistory[s]=0;this.updateGraphLimits(),this.uploadSpeed=0,this.downloadSpeed=0,this.totalUploaded=0,this.totalDownloaded=0,this.latency=0}if(this.lastAppState=r.vpnClientAppData.appState,this.showStartedLastValue=this.showStarted,this.stopRequested?this.showStarted||(this.stopRequested=!1,this.showBusy=r.busy):this.showBusy=r.busy,r.vpnClientAppData.connectionData){for(let s=0;s<10;s++)this.receivedHistory[s]=r.vpnClientAppData.connectionData.downloadSpeedHistory[s],this.sentHistory[s]=r.vpnClientAppData.connectionData.uploadSpeedHistory[s],this.latencyHistory[s]=r.vpnClientAppData.connectionData.latencyHistory[s];this.updateGraphLimits(),this.uploadSpeed=r.vpnClientAppData.connectionData.uploadSpeed,this.downloadSpeed=r.vpnClientAppData.connectionData.downloadSpeed,this.totalUploaded=r.vpnClientAppData.connectionData.totalUploaded,this.totalDownloaded=r.vpnClientAppData.connectionData.totalDownloaded,this.latency=r.vpnClientAppData.connectionData.latency}r.vpnClientAppData.running&&r.vpnClientAppData.appState===un.Running&&r.vpnClientAppData.connectionData&&r.vpnClientAppData.connectionData.connectionDuration?(-1===this.calculatedSegs||r.vpnClientAppData.connectionData.connectionDuration>this.calculatedSegs+2||r.vpnClientAppData.connectionData.connectionDuration{this.calculatedSegs+=1,this.refreshConnectionTimeString()})):this.timeUpdateSubscription&&(this.timeUpdateSubscription.unsubscribe(),this.timeUpdateSubscription=null,this.calculatedSegs=-1,this.connectionTimeString="00:00:00"),this.loading=!1}i&&this.startGettingData(!1)})}refreshConnectionTimeString(){const e=this.calculatedSegs%60,i=Math.floor(this.calculatedSegs/60),o=i%60,r=Math.floor(i/60);this.connectionTimeString=String(r).padStart(2,"0")+":"+String(o).padStart(2,"0")+":"+String(e).padStart(2,"0")}ngOnDestroy(){this.dataSubscription.unsubscribe(),this.navigationsSubscription.unsubscribe(),this.currentRemoteServerSubscription.unsubscribe(),this.closeOperationSubscription(),this.timeUpdateSubscription&&this.timeUpdateSubscription.unsubscribe()}start(){if(!this.currentRemoteServer)return this.router.navigate(["vpn",this.currentLocalPk,"servers"]),void setTimeout(()=>this.snackbarService.showWarning("vpn.status-page.select-server-warning"),100);this.currentRemoteServer.flag!==bn.Blocked?(this.showBusy=!0,this.vpnClientService.start()):this.snackbarService.showError("vpn.starting-blocked-server-error")}stop(){if(!this.backendState.vpnClientAppData.killswitch)return void this.finishStoppingVpn();const e=Ut.createConfirmationDialog(this.dialog,"vpn.status-page.disconnect-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.finishStoppingVpn()})}finishStoppingVpn(){this.stopRequested=!0,this.showBusy=!0,this.vpnClientService.stop()}openServerOptions(){pi.openServerOptions(this.currentRemoteServer,this.router,this.vpnSavedDataService,this.vpnClientService,this.snackbarService,this.dialog).subscribe()}getCountryName(e){return rs[e.toUpperCase()]?rs[e.toUpperCase()]:e}getNoteVar(){return this.currentRemoteServer.note&&this.currentRemoteServer.personalNote?"vpn.server-list.notes-info":!this.currentRemoteServer.note&&this.currentRemoteServer.personalNote?this.currentRemoteServer.personalNote:this.currentRemoteServer.note}getLatencyValueString(e){return pi.getLatencyValueString(e)}getPrintableLatency(e){return pi.getPrintableLatency(e)}get currentStateText(){return this.backendState.vpnClientAppData.appState===un.Stopped?"vpn.connection-info.state-disconnected":this.backendState.vpnClientAppData.appState===un.Connecting?"vpn.connection-info.state-connecting":this.backendState.vpnClientAppData.appState===un.Running?"vpn.connection-info.state-connected":this.backendState.vpnClientAppData.appState===un.ShuttingDown?"vpn.connection-info.state-disconnecting":this.backendState.vpnClientAppData.appState===un.Reconnecting?"vpn.connection-info.state-reconnecting":void 0}get currentStateLineClass(){return this.backendState.vpnClientAppData.appState===un.Stopped?"red-line":this.backendState.vpnClientAppData.appState===un.Connecting?"yellow-line":this.backendState.vpnClientAppData.appState===un.Running?"green-line":"yellow-line"}closeOperationSubscription(){this.operationSubscription&&this.operationSubscription.unsubscribe()}updateGraphLimits(){const e=this.calculateGraphLimits(this.sentHistory);this.minUploadInGraph=e[0],this.midUploadInGraph=e[1],this.maxUploadInGraph=e[2];const i=this.calculateGraphLimits(this.receivedHistory);this.minDownloadInGraph=i[0],this.midDownloadInGraph=i[1],this.maxDownloadInGraph=i[2];const o=this.calculateGraphLimits(this.latencyHistory);this.minLatencyInGraph=o[0],this.midLatencyInGraph=o[1],this.maxLatencyInGraph=o[2]}calculateGraphLimits(e){let o=0;return e.forEach(s=>{s>o&&(o=s)}),0===o&&(o+=1),[0,new vv(o).minus(0).dividedBy(2).plus(0).decimalPlaces(1).toNumber(),o]}getIp(){this.ipInfoAllowed&&(this.vpnClientService.updateData(),this.snackbarService.showDone("common.refreshed"))}static{this.\u0275fac=function(i){return new(i||t)(O(wc),O(Cc),O(ot),O(Li),O(Nt),O(yt))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-vpn-status"]],standalone:!1,features:[_e],decls:2,vars:2,consts:[[1,"d-flex","flex-column","h-100","w-100"],[1,"general-container"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton","localVpnKey"],[1,"row"],[1,"col-12"],[1,"row","flex-1"],[1,"col-7","column","left-area"],[1,"col-7","column","left-area-connected"],[1,"col-5","column","right-area"],[1,"column-container"],[1,"content-area"],[1,"title"],[1,"big-text"],[1,"margin"],[1,"big-margin"],[1,"separator"],[1,"small-text"],[3,"text"],[1,"start-button",3,"click","ngClass"],[1,"start-button-img-container"],[1,"start-button-img"],[1,"start-button-img","animated-button"],[3,"diameter"],[3,"inline"],[1,"current-server"],[1,"none"],[1,"lower-text","current-server-note"],[1,"lower-text","last-error"],[1,"flag"],[3,"matTooltip"],[1,"text-container"],[1,"top-line"],["defaultName","vpn.unnamed",3,"isFavorite","isBlocked","hasPassword","name","pk","customName"],[1,"bottom-line"],[3,"shortSimple","text"],[1,"icon-button-separator"],[1,"icon-button"],[1,"transparent-button","vpn-small-button",3,"click","inline","matTooltip"],[1,"time-container"],[1,"time-content"],[1,"state-title"],[1,"d-inline-block"],[1,"state-text"],[1,"state-explanation"],[1,"last-connected-error"],[1,"data-container"],[1,"rounded-elevated-box","data-box","big-box",3,"matTooltip"],[1,"chart-container"],["height","140","color","#00000080",3,"animated","data","min","max"],[1,"chart-label"],[1,"label-container","label-top"],[1,"label"],[1,"line"],[1,"label-container","label-mid"],[1,"label-container","label-bottom"],[1,"content"],[1,"upload",3,"inline"],[1,"speed"],[1,"total"],[1,"chart-label","top-chart-label"],[1,"download",3,"inline"],[1,"latency-container"],[1,"rounded-elevated-box","data-box","small-box",3,"matTooltip"],["height","50","color","#00000080",3,"animated","data","min","max"],[1,"disconnect-button",3,"click","ngClass"],[1,"disconnect-button-container"],[1,"d-inline-flex"],[1,"small-icon","blinking",3,"inline","matTooltip"],[1,"big-icon","transparent-button","vpn-small-button",3,"inline","matTooltip"],[1,"big-icon","transparent-button","vpn-small-button",3,"click","inline","matTooltip"],["defaultName","vpn.unnamed",3,"isFavorite","isBlocked","hasPassword","adjustIconsForBigText","name","pk","customName"]],template:function(i,o){1&i&&(x(0,oRe,4,6,"div",0),x(1,LRe,40,30,"div",1)),2&i&&(k(o.loading?0:-1),c(),k(o.loading?-1:1))},dependencies:[Ft,Ae,Et,ci,cp,Qv,Qr,tr,wH,we,dp],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .bottom-line[_ngcontent-%COMP%], .left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .top-line[_ngcontent-%COMP%], .left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .none[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}.general-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%}.column[_ngcontent-%COMP%]{height:100%;display:flex;align-items:center;padding-top:40px;padding-bottom:20px}.column[_ngcontent-%COMP%] .column-container[_ngcontent-%COMP%]{width:100%;text-align:center}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%]{background:#000000b3;border-radius:100px;font-size:.8rem;padding:8px 15px;display:inline-block}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%] .time-content[_ngcontent-%COMP%]{color:#bbb}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%] .time-content[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:10px}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%] .time-content[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{vertical-align:top}.left-area-connected[_ngcontent-%COMP%] .state-title[_ngcontent-%COMP%]{font-size:1rem;color:#bbb}.left-area-connected[_ngcontent-%COMP%] .state-text[_ngcontent-%COMP%]{font-size:2rem;text-transform:uppercase}.left-area-connected[_ngcontent-%COMP%] .state-line[_ngcontent-%COMP%]{height:1px;width:100%;margin-bottom:5px}.left-area-connected[_ngcontent-%COMP%] .green-line[_ngcontent-%COMP%]{background-color:#2ecc54}.left-area-connected[_ngcontent-%COMP%] .yellow-line[_ngcontent-%COMP%]{background-color:#d48b05}.left-area-connected[_ngcontent-%COMP%] .red-line[_ngcontent-%COMP%]{background-color:#da3439}.left-area-connected[_ngcontent-%COMP%] .state-explanation[_ngcontent-%COMP%]{font-size:.7rem}.left-area-connected[_ngcontent-%COMP%] .last-connected-error[_ngcontent-%COMP%]{margin-top:15px;font-size:.8rem;color:#ff393f}.left-area-connected[_ngcontent-%COMP%] .last-connected-error[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px;display:inline;-webkit-user-select:none;user-select:none}.left-area-connected[_ngcontent-%COMP%] .data-container[_ngcontent-%COMP%]{margin-top:20px}.left-area-connected[_ngcontent-%COMP%] .latency-container[_ngcontent-%COMP%]{margin-bottom:20px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%]{cursor:default;display:inline-block}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-container[_ngcontent-%COMP%]{height:0px;position:relative;top:-3px;left:-3px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%]{height:0px;text-align:left}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%]{position:relative;top:-3px;left:-3px;display:flex;margin-right:-6px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:.6rem;margin-left:5px;opacity:.2}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%] .line[_ngcontent-%COMP%]{height:1px;width:10px;background-color:#fff;flex-grow:1;opacity:.1;margin-left:10px;margin-right:5px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-top[_ngcontent-%COMP%]{align-items:flex-start}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-mid[_ngcontent-%COMP%]{align-items:center}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-bottom[_ngcontent-%COMP%]{align-items:flex-end;position:relative;top:-6px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%]{width:170px;height:140px;margin:5px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .chart-container[_ngcontent-%COMP%]{width:170px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]{width:170px;height:140px;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;padding-bottom:20px;position:relative;top:-3px;left:-3px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:25px;transform:rotate(-90deg);width:40px;height:40px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .download[_ngcontent-%COMP%]{transform:rotate(-90deg)}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .upload[_ngcontent-%COMP%]{transform:rotate(90deg)}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .speed[_ngcontent-%COMP%]{font-size:.875rem}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .total[_ngcontent-%COMP%]{font-size:.8rem;color:#bbb}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%]{height:140px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%]{width:352px;height:50px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .chart-container[_ngcontent-%COMP%]{width:352px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]{display:inline-flex;align-items:center;height:100%;font-size:.875rem;position:relative}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;height:25px;margin-right:5px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%]{height:50px}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%]{background:linear-gradient(#940000,#7b0000) no-repeat!important;box-shadow:5px 5px 7px #00000080;width:352px;font-size:24px;display:inline-block;border-radius:10px;overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%]:hover{background:linear-gradient(#a10000,#900000) no-repeat!important}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%]:active{transform:scale(.98);box-shadow:0 0 7px #00000080}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%]{background-image:url(/assets/img/background-pattern.png);padding:12px}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:10px;align-self:center}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%]{display:inline-block;position:relative;top:4px;margin-right:10px;align-self:center}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{position:relative;top:-2px;line-height:1.7}.left-area[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:700;text-align:center;text-transform:uppercase}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]{text-align:center;margin:10px 0;cursor:pointer;display:inline-block;width:140px;height:140px}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]:active mat-icon[_ngcontent-%COMP%]{transform:scale(.9)}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]:hover .start-button-img-container[_ngcontent-%COMP%]{opacity:1}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{text-shadow:0px 0px 5px white}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .start-button-img-container[_ngcontent-%COMP%]{width:0px;height:0px;opacity:.7}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .start-button-img-container[_ngcontent-%COMP%] .start-button-img[_ngcontent-%COMP%]{display:inline-block;background-image:url(/assets/img/start-button.png);background-size:contain;width:140px;height:140px}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .start-button-img-container[_ngcontent-%COMP%] .animated-button[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_button-animation 4s linear infinite;pointer-events:none}@keyframes _ngcontent-%COMP%_button-animation{0%{transform:scale(1.5);opacity:0}25%{transform:scale(1);opacity:.8}50%{transform:scale(1.5);opacity:0}to{transform:scale(1.5);opacity:0}}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{line-height:140px;font-size:50px;-webkit-user-select:none;user-select:none;text-shadow:0px 0px 2px white}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%]{display:inline-block;margin-top:50px;opacity:.5}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%]{display:inline-flex;background:#000000b3;border-radius:10px;padding:10px 15px;max-width:280px;text-align:left}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .none[_ngcontent-%COMP%]{font-size:.875rem}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .flag[_ngcontent-%COMP%]{background-image:url(/assets/img/big-flags/unknown.png);width:20px;height:15px;background-size:contain;align-self:center;flex-shrink:0;margin-right:12px}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .flag[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{width:20px;height:15px;background-size:contain}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{overflow:hidden}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .top-line[_ngcontent-%COMP%]{font-size:.875rem}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .bottom-line[_ngcontent-%COMP%]{font-size:.7rem;color:#bbb}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button-separator[_ngcontent-%COMP%]{display:flex;align-items:center}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button-separator[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{width:1px;height:30px;background:#ffffff26;margin-left:12px}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button[_ngcontent-%COMP%]{font-size:22px;line-height:1;display:flex;align-items:center;padding-left:12px}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{cursor:pointer}.left-area[_ngcontent-%COMP%] .lower-text[_ngcontent-%COMP%]{display:inline-block;max-width:280px;margin-top:10px}.left-area[_ngcontent-%COMP%] .lower-text[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px;display:inline;-webkit-user-select:none;user-select:none}.left-area[_ngcontent-%COMP%] .current-server-note[_ngcontent-%COMP%]{font-size:.8rem;color:#bbb}.left-area[_ngcontent-%COMP%] .last-error[_ngcontent-%COMP%]{font-size:.8rem;color:#ff393f}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%]{background:#3d67a226;padding:30px;text-align:left;max-width:420px;opacity:.95}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:.8rem;color:#bbb}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%]{font-size:1.25rem;overflow-wrap:break-word}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%]{display:inline-block;opacity:.5;margin-left:5px;position:relative;top:2px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] .small-icon[_ngcontent-%COMP%]{color:#d48b05;opacity:.7;font-size:.875rem;cursor:default;margin-left:5px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] .big-icon[_ngcontent-%COMP%]{font-size:1.125rem;margin-left:5px;position:relative;top:2px;line-height:1}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .small-text[_ngcontent-%COMP%]{font-size:.7rem;margin-top:1px;overflow-wrap:break-word}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .margin[_ngcontent-%COMP%]{height:12px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-margin[_ngcontent-%COMP%]{height:15px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .separator[_ngcontent-%COMP%]{height:1px;width:100%;background:#ffffff26}.disabled-button[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}"]})}}return t})(),IM=(()=>{class t{set lastError(e){this.lastErrorInternal=e}constructor(e){this.router=e}canActivate(e,i){return this.checkIfCanActivate()}canActivateChild(e,i){return this.checkIfCanActivate()}checkIfCanActivate(){return this.lastErrorInternal?(this.router.navigate(["vpn","unavailable"],{queryParams:{problem:this.lastErrorInternal}}),se(!1)):se(!0)}static{this.\u0275fac=function(i){return new(i||t)(ce(yt))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Ga=function(t){return t.UnableToConnectWithTheVpnClientApp="unavailable",t.NoLocalVisorPkProvided="pk",t.InvalidStorageState="storage",t.LocalVisorPkChangedDuringUsage="pkChange",t}(Ga||{});let VRe=(()=>{class t extends Lt{constructor(e,i,o){super(),this.route=e,this.vpnAuthGuardService=i,this.vpnClientService=o,this.problem=null,this.navigationsSubscription=this.route.queryParamMap.subscribe(r=>{this.problem=r.get("problem"),this.problem||(this.problem=Ga.UnableToConnectWithTheVpnClientApp),this.vpnAuthGuardService.lastError=this.problem,this.vpnClientService.stopContinuallyUpdatingData(),setTimeout(()=>this.navigationsSubscription.unsubscribe())})}getTitle(){return this.problem===Ga.NoLocalVisorPkProvided?"vpn.error-page.text-pk":this.problem===Ga.InvalidStorageState?"vpn.error-page.text-storage":this.problem===Ga.LocalVisorPkChangedDuringUsage?"vpn.error-page.text-pk-change":"vpn.error-page.text"}getInfo(){return this.problem===Ga.NoLocalVisorPkProvided?"vpn.error-page.more-info-pk":this.problem===Ga.InvalidStorageState?"vpn.error-page.more-info-storage":this.problem===Ga.LocalVisorPkChangedDuringUsage?"vpn.error-page.more-info-pk-change":"vpn.error-page.more-info"}static{this.\u0275fac=function(i){return new(i||t)(O(Li),O(IM),O(wc))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-vpn-error"]],standalone:!1,features:[_e],decls:12,vars:7,consts:[[1,"main-container"],[1,"text-container"],[1,"inner-container"],[1,"error-icon"],[3,"inline"],[1,"more-info"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3)(4,"mat-icon",4),p(5,"error_outline"),u()(),h(6,"div"),p(7),_(8,"translate"),u(),h(9,"div",5),p(10),_(11,"translate"),u()()()()),2&i&&(c(4),C("inline",!0),c(3),S(v(8,3,o.getTitle())),c(3),S(v(11,5,o.getInfo())))},dependencies:[Ae,we],styles:[".main-container[_ngcontent-%COMP%]{height:100%;display:flex}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{width:100%;align-self:center;text-align:center}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .inner-container[_ngcontent-%COMP%]{max-width:550px;display:inline-block;font-size:1.25rem}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .inner-container[_ngcontent-%COMP%] .error-icon[_ngcontent-%COMP%]{font-size:80px}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .inner-container[_ngcontent-%COMP%] .more-info[_ngcontent-%COMP%]{font-size:.8rem;opacity:.75;margin-top:10px}"]})}}return t})();const HRe=["button"],URe=["firstInput"],zRe=t=>({"element-disabled":t});let jRe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.formBuilder=o,this.snackbarService=r,this.routeService=s}ngOnInit(){this.form=this.formBuilder.group({min:[this.data.minHops,Se.compose([Se.required,Se.maxLength(3),Se.pattern("^[0-9]+$")])]}),setTimeout(()=>this.firstInput.nativeElement.focus())}ngOnDestroy(){this.operationSubscription&&this.operationSubscription.unsubscribe()}get disableDismiss(){return!!this.button&&this.button.isLoading}save(){!this.form.valid||this.operationSubscription||(this.button.showLoading(),this.operationSubscription=this.routeService.setMinHops(this.data.nodePk,Number.parseInt(this.form.get("min").value,10)).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)}))}onSuccess(e){this.dialogRef.close(!0),this.snackbarService.showDone("router-config.done")}onError(e){this.button.showError(),this.operationSubscription=null,e=Ze(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(Si),O(ot),O(RS))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-router-config"]],viewQuery:function(i,o){if(1&i&&st(HRe,5)(URe,5),2&i){let r;fe(r=pe())&&(o.button=r.first),fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:21,vars:22,consts:[["firstInput",""],["button",""],[3,"headline","dialog","disableDismiss"],[1,"info-container"],[3,"formGroup","ngClass"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","min","maxlength","3","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),_(1,"translate"),h(2,"div",3),p(3),_(4,"translate"),u(),h(5,"form",4)(6,"mat-form-field")(7,"div",5)(8,"label",6),p(9),_(10,"translate"),u(),L(11,"input",7,0),u(),h(13,"mat-error")(14,"span"),p(15),_(16,"translate"),u()()()(),h(17,"app-button",8,1),F("action",function(){return o.save()}),p(19),_(20,"translate"),u()()),2&i&&(C("headline",v(1,10,"router-config.title"))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),c(3),S(v(4,12,"router-config.info")),c(2),C("formGroup",o.form)("ngClass",ie(20,zRe,o.disableDismiss)),c(4),S(v(10,14,"router-config.min-hops")),c(6),S(v(16,16,"router-config.min-hops-error")),c(2),C("disabled",!o.form.valid),c(2),D(" ",v(20,18,"router-config.save-config-button")," "))},dependencies:[Ft,kn,Qt,Jt,xn,Bi,sn,_n,dn,Aa,On,Mi,Sn,we],styles:[".info-container[_ngcontent-%COMP%]{margin-bottom:10px}"]})}}return t})();const $Re=["button"],WRe=["firstInput"];let GRe=(()=>{class t{static openDialog(e,i){const o=new cn;return o.data=i,o.autoFocus=!1,o.width=at.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.dialogRef=e,this.data=i,this.formBuilder=o,this.snackbarService=r,this.appsService=s,this.vpnClientService=a}ngOnInit(){this.form=this.formBuilder.group({ip:[this.data.ip,Se.compose([Se.maxLength(15),this.validateIp.bind(this)])]}),setTimeout(()=>this.firstInput.nativeElement.focus())}ngOnDestroy(){this.operationSubscription&&this.operationSubscription.unsubscribe()}validateIp(){if(this.form){const e=this.form.get("ip").value;return Ut.checkIfIpValidOrEmpty(e)?null:{invalid:!0}}return null}save(){!this.form.valid||this.operationSubscription||(this.button.showLoading(),this.operationSubscription=this.appsService.changeAppSettings(this.data.nodePk,this.vpnClientService.vpnClientAppName,{dns:this.form.get("ip").value}).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)}))}onSuccess(e){this.dialogRef.close(!0),this.snackbarService.showDone("vpn.dns-config.done")}onError(e){this.button.showError(),this.operationSubscription=null,e=Ze(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(Zt),O(In),O(kB),O(ot),O(Hs),O(wc))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-vpn-dns-config"]],viewQuery:function(i,o){if(1&i&&st($Re,5)(WRe,5),2&i){let r;fe(r=pe())&&(o.button=r.first),fe(r=pe())&&(o.firstInput=r.first)}},standalone:!1,decls:14,vars:11,consts:[["firstInput",""],["button",""],[3,"headline"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","ip","maxlength","15","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),_(1,"translate"),h(2,"form",3)(3,"mat-form-field")(4,"div",4)(5,"label",5),p(6),_(7,"translate"),u(),L(8,"input",6,0),u()()(),h(10,"app-button",7,1),F("action",function(){return o.save()}),p(12),_(13,"translate"),u()()),2&i&&(C("headline",v(1,5,"vpn.dns-config.title")),c(2),C("formGroup",o.form),c(4),S(v(7,7,"vpn.dns-config.ip")),c(4),C("disabled",!o.form.valid),c(2),D(" ",v(13,9,"vpn.dns-config.save-config-button")," "))},dependencies:[kn,Qt,Jt,xn,Bi,sn,_n,dn,On,Mi,Sn,we],encapsulation:2})}}return t})();const qRe=["topBarLoading"],KRe=["topBarLoaded"],DH=()=>["vpn.title"];function YRe(t,n){if(1&t&&(h(0,"div",2)(1,"div"),L(2,"app-top-bar",4,0),u(),L(4,"app-loading-indicator",5),u()),2&t){const e=y();c(2),C("titleParts",vt(5,DH))("tabsData",e.tabsData)("selectedTabIndex",2)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk)}}function XRe(t,n){1&t&&L(0,"mat-spinner",17),2&t&&C("diameter",12)}function ZRe(t,n){if(1&t){const e=re();h(0,"div",3)(1,"div",6),L(2,"app-top-bar",4,1),u(),h(4,"div",7)(5,"div",8)(6,"div",9)(7,"div",10)(8,"table",11)(9,"tr")(10,"th",12)(11,"div",13)(12,"div",14),p(13),_(14,"translate"),u()()(),h(15,"th",12),p(16),_(17,"translate"),u()(),h(18,"tr",15),F("click",function(){return V(e),H(y().changeKillswitchOption())}),h(19,"td",12)(20,"div"),p(21),_(22,"translate"),h(23,"mat-icon",16),_(24,"translate"),p(25,"help"),u()()(),h(26,"td",12),L(27,"span"),p(28),_(29,"translate"),x(30,XRe,1,1,"mat-spinner",17),u()(),h(31,"tr",15),F("click",function(){return V(e),H(y().changeGetIpOption())}),h(32,"td",12)(33,"div"),p(34),_(35,"translate"),h(36,"mat-icon",16),_(37,"translate"),p(38,"help"),u()()(),h(39,"td",12),L(40,"span"),p(41),_(42,"translate"),u()(),h(43,"tr",15),F("click",function(){return V(e),H(y().changeDataUnits())}),h(44,"td",12)(45,"div"),p(46),_(47,"translate"),h(48,"mat-icon",16),_(49,"translate"),p(50,"help"),u()()(),h(51,"td",12),p(52),_(53,"translate"),u()(),h(54,"tr",15),F("click",function(){return V(e),H(y().changeHops())}),h(55,"td",12)(56,"div"),p(57),_(58,"translate"),h(59,"mat-icon",16),_(60,"translate"),p(61,"help"),u()()(),h(62,"td",12),p(63),u()(),h(64,"tr",15),F("click",function(){return V(e),H(y().changeDns())}),h(65,"td",12)(66,"div"),p(67),_(68,"translate"),h(69,"mat-icon",16),_(70,"translate"),p(71,"help"),u()()(),h(72,"td",12),p(73),_(74,"translate"),u()()()()()()()()}if(2&t){const e=y();c(2),C("titleParts",vt(64,DH))("tabsData",e.tabsData)("selectedTabIndex",2)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),c(11),D(" ",v(14,32,"vpn.settings-page.setting-small-table-label")," "),c(3),D(" ",v(17,34,"vpn.settings-page.value-small-table-label")," "),c(5),D(" ",v(22,36,"vpn.settings-page.killswitch")," "),c(2),C("inline",!0)("matTooltip",v(24,38,"vpn.settings-page.killswitch-info")),c(4),Ge(e.getStatusClass(e.backendData.vpnClientAppData.killswitch)),c(),D(" ",v(29,40,e.getStatusText(e.backendData.vpnClientAppData.killswitch))," "),c(2),k(e.working===e.workingOptions.Killswitch?30:-1),c(4),D(" ",v(35,42,"vpn.settings-page.get-ip")," "),c(2),C("inline",!0)("matTooltip",v(37,44,"vpn.settings-page.get-ip-info")),c(4),Ge(e.getStatusClass(e.getIpOption)),c(),D(" ",v(42,46,e.getStatusText(e.getIpOption))," "),c(5),D(" ",v(47,48,"vpn.settings-page.data-units")," "),c(2),C("inline",!0)("matTooltip",v(49,50,"vpn.settings-page.data-units-info")),c(4),D(" ",v(53,52,e.getUnitsOptionText(e.dataUnitsOption))," "),c(5),D(" ",v(58,54,"vpn.settings-page.minimum-hops")," "),c(2),C("inline",!0)("matTooltip",v(60,56,"vpn.settings-page.minimum-hops-info")),c(4),D(" ",e.backendData.vpnClientAppData.minHops," "),c(4),D(" ",v(68,58,"vpn.settings-page.dns")," "),c(2),C("inline",!0)("matTooltip",v(70,60,"vpn.settings-page.dns-info")),c(4),D(" ",e.backendData.vpnClientAppData.dns?e.backendData.vpnClientAppData.dns:v(74,62,"vpn.settings-page.setting-none")," ")}}var Nc=function(t){return t[t.None=0]="None",t[t.Killswitch=1]="Killswitch",t}(Nc||{});const QRe=[{path:"",component:Vhe},{path:"login",component:tV},{path:"nodes",canActivate:[Jf],canActivateChild:[Jf],children:[{path:"",redirectTo:"list/1",pathMatch:"full"},{path:"list",redirectTo:"list/1",pathMatch:"full"},{path:"list/:page",component:yV},{path:"dmsg",redirectTo:"rewards/1",pathMatch:"full"},{path:"dmsg/:page",redirectTo:"rewards/1"},{path:"rewards",redirectTo:"rewards/1",pathMatch:"full"},{path:"rewards/:page",component:yV},{path:"services-health",component:DPe},{path:"network",component:NPe},{path:"resources",component:lIe},{path:"uptime",component:kIe},{path:"transports",component:$Ie},{path:"dmsg-settings",redirectTo:"list/1"},{path:":key",component:Me,children:[{path:"",redirectTo:"info",pathMatch:"full"},{path:"info",component:POe},{path:"routing",component:gSe},{path:"apps",component:jDe},{path:"resources",component:oTe},{path:"chat",component:_Te},{path:"bandwidth",component:OTe},{path:"uptime",component:WTe},{path:"terminal",component:KTe},{path:"web-proxy",component:e2e},{path:"logs",component:m2e},{path:"dmsg",component:rOe},{path:"transports",component:FEe},{path:"transports/:page",redirectTo:"transports"},{path:"routes",redirectTo:"routing",pathMatch:"full"},{path:"routes/:page",redirectTo:"routing"},{path:"rewards",component:tPe},{path:"skynet",component:qOe},{path:"apps-list/:showOfficialApps/:page",component:aOe}]}]},{path:"settings",canActivate:[Jf],canActivateChild:[Jf],children:[{path:"",component:Yye},{path:"labels",redirectTo:"labels/1",pathMatch:"full"},{path:"labels/:page",component:YOe}]},{path:"vpnlogin/:key",component:tV},{path:"vpn",canActivate:[IM],canActivateChild:[IM],children:[{path:"unavailable",component:VRe},{path:":key",children:[{path:"status",component:BRe},{path:"servers",redirectTo:"servers/public/1",pathMatch:"full"},{path:"servers/:type/:page",component:CH},{path:"settings",component:(()=>{class t extends Lt{constructor(e,i,o,r,s,a){super(),this.vpnClientService=e,this.snackbarService=i,this.appsService=o,this.vpnSavedDataService=r,this.dialog=s,this.loading=!0,this.tabsData=pi.vpnTabsData,this.working=Nc.None,this.workingOptions=Nc,this.navigationsSubscription=a.paramMap.subscribe(l=>{l.has("key")&&(this.currentLocalPk=l.get("key"),pi.changeCurrentPk(this.currentLocalPk),this.tabsData=pi.vpnTabsData)}),this.dataSubscription=this.vpnClientService.backendState.subscribe(l=>{l&&l.serviceState!==Vi.PerformingInitialCheck&&(this.backendData=l,this.loading=!1)}),this.getIpOption=this.vpnSavedDataService.getCheckIpSetting(),this.dataUnitsOption=this.vpnSavedDataService.getDataUnitsSetting()}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.dataSubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()}getStatusClass(e){return!0===e?"dot-green":"dot-red"}getStatusText(e){return!0===e?"vpn.settings-page.setting-on":"vpn.settings-page.setting-off"}getUnitsOptionText(e){switch(e){case er.OnlyBits:return"vpn.settings-page.data-units-modal.only-bits";case er.OnlyBytes:return"vpn.settings-page.data-units-modal.only-bytes";default:return"vpn.settings-page.data-units-modal.bits-speed-and-bytes-volume"}}changeKillswitchOption(){if(this.working===Nc.None)if(this.backendData.vpnClientAppData.running){const e=Ut.createConfirmationDialog(this.dialog,"vpn.settings-page.change-while-connected-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.finishChangingKillswitchOption()})}else this.finishChangingKillswitchOption();else this.snackbarService.showWarning("vpn.settings-page.working-warning")}finishChangingKillswitchOption(){this.working=Nc.Killswitch,this.operationSubscription=this.appsService.changeAppSettings(this.currentLocalPk,this.vpnClientService.vpnClientAppName,{killswitch:!this.backendData.vpnClientAppData.killswitch}).subscribe(()=>{this.working=Nc.None,this.vpnClientService.updateData()},e=>{this.working=Nc.None,e=Ze(e),this.snackbarService.showError(e)})}changeGetIpOption(){this.getIpOption=!this.getIpOption,this.vpnSavedDataService.setCheckIpSetting(this.getIpOption)}changeDataUnits(){const e=[],i=[];Object.keys(er).forEach(o=>{const r={label:this.getUnitsOptionText(er[o])};this.dataUnitsOption===er[o]&&(r.icon="done"),e.push(r),i.push(er[o])}),ho.openDialog(this.dialog,e,"vpn.settings-page.data-units-modal.title").afterClosed().subscribe(o=>{o&&(this.dataUnitsOption=i[o-1],this.vpnSavedDataService.setDataUnitsSetting(this.dataUnitsOption),this.topBarLoading&&this.topBarLoading.updateVpnDataStatsUnit(),this.topBarLoaded&&this.topBarLoaded.updateVpnDataStatsUnit())})}changeHops(){jRe.openDialog(this.dialog,{nodePk:this.currentLocalPk,minHops:this.backendData.vpnClientAppData.minHops}).afterClosed().subscribe()}changeDns(){GRe.openDialog(this.dialog,{nodePk:this.currentLocalPk,ip:this.backendData.vpnClientAppData.dns}).afterClosed().subscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(wc),O(ot),O(Hs),O(Cc),O(Nt),O(Li))}}static{this.\u0275cmp=ae({type:t,selectors:[["app-vpn-settings-list"]],viewQuery:function(i,o){if(1&i&&st(qRe,5)(KRe,5),2&i){let r;fe(r=pe())&&(o.topBarLoading=r.first),fe(r=pe())&&(o.topBarLoaded=r.first)}},standalone:!1,features:[_e],decls:2,vars:2,consts:[["topBarLoading",""],["topBarLoaded",""],[1,"d-flex","flex-column","h-100","w-100"],[1,"row"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton","localVpnKey"],[1,"h-100"],[1,"col-12"],[1,"col-12","mt-4.5","vpn-table-container"],[1,"width-limiter"],[1,"rounded-elevated-box"],[1,"box-internal-container"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table"],[1,"data-column"],[1,"header-container"],[1,"header-text"],[1,"selectable",3,"click"],[1,"help-icon",3,"inline","matTooltip"],[3,"diameter"]],template:function(i,o){1&i&&(x(0,YRe,5,6,"div",2),x(1,ZRe,75,65,"div",3)),2&i&&(k(o.loading?0:-1),c(),k(o.loading?-1:1))},dependencies:[Ae,Et,ci,Qr,tr,we],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%], .data-column[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}table[_ngcontent-%COMP%]{width:100%}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-top:7px!important;padding-bottom:7px!important;font-size:12px!important;font-weight:400!important}.data-column[_ngcontent-%COMP%]{max-width:0;width:50%}.header-container[_ngcontent-%COMP%]{max-width:100%;display:inline-flex}.header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%]{flex-grow:1}mat-spinner[_ngcontent-%COMP%]{display:inline-block;opacity:.5;margin-left:2px;position:relative;top:2px}mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}"]})}}return t})()},{path:"**",redirectTo:"status"}]},{path:"**",redirectTo:"/vpn/unavailable?problem=pk"}]},{path:"**",redirectTo:""}];let JRe=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=tt({type:t})}static{this.\u0275inj=Je({imports:[x5.forRoot(QRe,{useHash:!0}),x5]})}}return t})(),tFe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ai]})}return t})(),nFe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[b4,ru,ai,Hf]})}return t})();class iFe{getTranslation(n){return Xn(Lc(995)(`./${n}.json`))}}let oFe=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=tt({type:t})}static{this.\u0275inj=Je({imports:[f5.forRoot({loader:{provide:Yf,useClass:iFe}}),f5]})}}return t})(),rFe=(()=>{class t{shouldDetach(e){return!1}store(e,i){}shouldAttach(e){return!1}retrieve(e){return null}shouldReuseRoute(e,i){return!1}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac})}}return t})();const sFe={disabled:!0};let aFe=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=tt({type:t,bootstrap:[Jr]})}static{this.\u0275inj=Je({providers:[ap,{provide:Y4,useValue:{duration:3e3,verticalPosition:"top"}},{provide:P4,useValue:{width:"600px",hasBackdrop:!0}},{provide:vS,useClass:wpe},{provide:LL,useClass:rFe},{provide:Fk,useValue:sFe},Pse(Zl(ka.LegacyInterceptors,[{provide:TN,useFactory:Cse},{provide:yf,useExisting:TN,multi:!0}]))],imports:[c3,gre,Vfe,JRe,oFe,Oue,due,pv,Spe,bMe,j4,Uue,nFe,qge,Bfe,tFe,Jme,nhe,vge,y2e]})}}return t})();(function DA(t,n,e){const i=t.\u0275cmp;i.directiveDefs=Rg(n,gI),i.pipeDefs=Rg(e,sr)})(CH,[Ft,Wd,es,Ht,Ae,Et,cp,Qr,Cv,tr,wH],[vr,we]),Cie().bootstrapModule(aFe,{applicationProviders:[function vee(t){const n=t?.scheduleInRootZone,e=function bee({ngZoneFactory:t,scheduleInRootZone:n}){return t??=()=>new Ce({...$R(),scheduleInRootZone:n}),[{provide:_m,useValue:!1},{provide:Ce,useFactory:t},{provide:fs,multi:!0,useFactory:()=>{const e=T(gee,{optional:!0});return()=>e.initialize()}},{provide:fs,multi:!0,useFactory:()=>{const e=T(yee);return()=>{e.initialize()}}},{provide:XD,useValue:n??WD}]}({ngZoneFactory:()=>{const i=$R(t);return i.scheduleInRootZone=n,i.shouldCoalesceEventChangeDetection&&Ci("NgZone_CoalesceEvent"),new Ce(i)},scheduleInRootZone:n});return Gu([{provide:_ee,useValue:!0},e])}()]}).catch(t=>console.log(t))},995(Fu,ty,Lc){var Rn={"./de.json":[229,[229]],"./de_base.json":[735,[735]],"./en.json":[473,[473]],"./es.json":[18,[18]],"./es_base.json":[434,[434]],"./pt.json":[750,[750]],"./pt_base.json":[718,[718]]};function us(Ka){if(!Lc.o(Rn,Ka))return Promise.resolve().then(()=>{var Pe=new Error("Cannot find module '"+Ka+"'");throw Pe.code="MODULE_NOT_FOUND",Pe});var Bc=Rn[Ka],Fn=Bc[0];return Lc.e(Bc[1][0]).then(()=>Lc.t(Fn,19))}us.keys=()=>Object.keys(Rn),us.id=995,Fu.exports=us}},Fu=>{Fu(Fu.s=29)}]); \ No newline at end of file diff --git a/static/skywire-manager-src/dist/main.9b3d1a64bbf5d827.js b/static/skywire-manager-src/dist/main.9b3d1a64bbf5d827.js deleted file mode 100644 index f1e10b56fd..0000000000 --- a/static/skywire-manager-src/dist/main.9b3d1a64bbf5d827.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkskywire_manager=self.webpackChunkskywire_manager||[]).push([[792],{398(Eu,Yv,Ec){"use strict";let An=null,os=!1,Ua=1;const Rn=Symbol("SIGNAL");function Te(t){const n=An;return An=t,n}const Ic={version:0,lastCleanEpoch:0,dirty:!1,producers:void 0,producersTail:void 0,consumers:void 0,consumersTail:void 0,recomputing:!1,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:"unknown",producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Pu(t){if(os)throw new Error("");if(null===An)return;An.consumerOnSignalRead(t);const n=An.producersTail;if(void 0!==n&&n.producer===t)return;let e;const i=An.recomputing;if(i&&(e=void 0!==n?n.nextProducer:An.producers,void 0!==e&&e.producer===t))return An.producersTail=e,void(e.lastReadVersion=t.version);const o=t.consumersTail;if(void 0!==o&&o.consumer===An&&(!i||function D6(t,n){const e=n.producersTail;if(void 0!==e){let i=n.producers;do{if(i===t)return!0;if(i===e)break;i=i.nextProducer}while(void 0!==i)}return!1}(o,An)))return;const r=Ac(An),s={producer:t,consumer:An,nextProducer:e,prevConsumer:o,lastReadVersion:t.version,nextConsumer:void 0};An.producersTail=s,void 0!==n?n.nextProducer=s:An.producers=s,r&&MD(t,s)}function Iu(t){if((!Ac(t)||t.dirty)&&(t.dirty||t.lastCleanEpoch!==Ua)){if(!t.producerMustRecompute(t)&&!Ip(t))return void Pp(t);t.producerRecomputeValue(t),Pp(t)}}function kD(t){if(void 0===t.consumers)return;const n=os;os=!0;try{for(let e=t.consumers;void 0!==e;e=e.nextConsumer){const i=e.consumer;i.dirty||x6(i)}}finally{os=n}}function DD(){return!1!==An?.consumerAllowSignalWrites}function x6(t){t.dirty=!0,kD(t),t.consumerMarkedDirty?.(t)}function Pp(t){t.dirty=!1,t.lastCleanEpoch=Ua}function Oc(t){return t&&function S6(t){t.producersTail=void 0,t.recomputing=!0}(t),Te(t)}function Ou(t,n){Te(n),t&&function k6(t){t.recomputing=!1;const n=t.producersTail;let e=void 0!==n?n.nextProducer:t.producers;if(void 0!==e){if(Ac(t))do{e=Zv(e)}while(void 0!==e);void 0!==n?n.nextProducer=void 0:t.producers=void 0}}(t)}function Ip(t){for(let n=t.producers;void 0!==n;n=n.nextProducer){const e=n.producer,i=n.lastReadVersion;if(i!==e.version||(Iu(e),i!==e.version))return!0}return!1}function Au(t){if(Ac(t)){let n=t.producers;for(;void 0!==n;)n=Zv(n)}t.producers=void 0,t.producersTail=void 0,t.consumers=void 0,t.consumersTail=void 0}function MD(t,n){const e=t.consumersTail,i=Ac(t);if(void 0!==e?(n.nextConsumer=e.nextConsumer,e.nextConsumer=n):(n.nextConsumer=void 0,t.consumers=n),n.prevConsumer=e,t.consumersTail=n,!i)for(let o=t.producers;void 0!==o;o=o.nextProducer)MD(o.producer,o)}function Zv(t){const n=t.producer,e=t.nextProducer,i=t.nextConsumer,o=t.prevConsumer;if(t.nextConsumer=void 0,t.prevConsumer=void 0,void 0!==i?i.prevConsumer=o:n.consumersTail=o,void 0!==o)o.nextConsumer=i;else if(n.consumers=i,!Ac(n)){let r=n.producers;for(;void 0!==r;)r=Zv(r)}return e}function Ac(t){return t.consumerIsAlwaysLive||void 0!==t.consumers}function Jv(t,n){return Object.is(t,n)}function TD(t,n){const e=Object.create(M6);e.computation=t,void 0!==n&&(e.equal=n);const i=()=>{if(Iu(e),Pu(e),e.value===rs)throw e.error;return e.value};return i[Rn]=e,i}const za=Symbol("UNSET"),Rc=Symbol("COMPUTING"),rs=Symbol("ERRORED"),M6={...Ic,value:za,dirty:!0,error:null,equal:Jv,kind:"computed",producerMustRecompute:t=>t.value===za||t.value===Rc,producerRecomputeValue(t){if(t.value===Rc)throw new Error("");const n=t.value;t.value=Rc;const e=Oc(t);let i,o=!1;try{i=t.computation(),Te(null),o=n!==za&&n!==rs&&i!==rs&&t.equal(n,i)}catch(r){i=rs,t.error=r}finally{Ou(t,e)}o?t.value=n:(t.value=i,t.version++)}};let ED=function T6(){throw new Error};function PD(t){ED(t)}function Ap(t,n){DD()||PD(t),t.equal(t.value,n)||(t.value=n,function O6(t){t.version++,function w6(){Ua++}(),kD(t)}(t))}function ID(t,n){DD()||PD(t),Ap(t,n(t.value))}const ey={...Ic,equal:Jv,value:void 0,kind:"signal"},A6={...Ic,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,kind:"effect"};function cn(t){return"function"==typeof t}function ty(t){const e=t(i=>{Error.call(i),i.stack=(new Error).stack});return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}const ny=ty(t=>function(e){t(this),this.message=e?`${e.length} errors occurred during unsubscription:\n${e.map((i,o)=>`${o+1}) ${i.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=e});function Rp(t,n){if(t){const e=t.indexOf(n);0<=e&&t.splice(e,1)}}class pt{constructor(n){this.initialTeardown=n,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let n;if(!this.closed){this.closed=!0;const{_parentage:e}=this;if(e)if(this._parentage=null,Array.isArray(e))for(const r of e)r.remove(this);else e.remove(this);const{initialTeardown:i}=this;if(cn(i))try{i()}catch(r){n=r instanceof ny?r.errors:[r]}const{_finalizers:o}=this;if(o){this._finalizers=null;for(const r of o)try{RD(r)}catch(s){n=n??[],s instanceof ny?n=[...n,...s.errors]:n.push(s)}}if(n)throw new ny(n)}}add(n){var e;if(n&&n!==this)if(this.closed)RD(n);else{if(n instanceof pt){if(n.closed||n._hasParent(this))return;n._addParent(this)}(this._finalizers=null!==(e=this._finalizers)&&void 0!==e?e:[]).push(n)}}_hasParent(n){const{_parentage:e}=this;return e===n||Array.isArray(e)&&e.includes(n)}_addParent(n){const{_parentage:e}=this;this._parentage=Array.isArray(e)?(e.push(n),e):e?[e,n]:n}_removeParent(n){const{_parentage:e}=this;e===n?this._parentage=null:Array.isArray(e)&&Rp(e,n)}remove(n){const{_finalizers:e}=this;e&&Rp(e,n),n instanceof pt&&n._removeParent(this)}}pt.EMPTY=(()=>{const t=new pt;return t.closed=!0,t})();const OD=pt.EMPTY;function AD(t){return t instanceof pt||t&&"closed"in t&&cn(t.remove)&&cn(t.add)&&cn(t.unsubscribe)}function RD(t){cn(t)?t():t.unsubscribe()}const $a={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Fp={setTimeout(t,n,...e){const{delegate:i}=Fp;return i?.setTimeout?i.setTimeout(t,n,...e):setTimeout(t,n,...e)},clearTimeout(t){const{delegate:n}=Fp;return(n?.clearTimeout||clearTimeout)(t)},delegate:void 0};function FD(t){Fp.setTimeout(()=>{const{onUnhandledError:n}=$a;if(!n)throw t;n(t)})}function Np(){}const F6=iy("C",void 0,void 0);function iy(t,n,e){return{kind:t,value:n,error:e}}let Wa=null;function Lp(t){if($a.useDeprecatedSynchronousErrorHandling){const n=!Wa;if(n&&(Wa={errorThrown:!1,error:null}),t(),n){const{errorThrown:e,error:i}=Wa;if(Wa=null,e)throw i}}else t()}class Bp extends pt{constructor(n){super(),this.isStopped=!1,n?(this.destination=n,AD(n)&&n.add(this)):this.destination=U6}static create(n,e,i){return new Ru(n,e,i)}next(n){this.isStopped?ry(function L6(t){return iy("N",t,void 0)}(n),this):this._next(n)}error(n){this.isStopped?ry(function N6(t){return iy("E",void 0,t)}(n),this):(this.isStopped=!0,this._error(n))}complete(){this.isStopped?ry(F6,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(n){this.destination.next(n)}_error(n){try{this.destination.error(n)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const V6=Function.prototype.bind;function oy(t,n){return V6.call(t,n)}class H6{constructor(n){this.partialObserver=n}next(n){const{partialObserver:e}=this;if(e.next)try{e.next(n)}catch(i){Vp(i)}}error(n){const{partialObserver:e}=this;if(e.error)try{e.error(n)}catch(i){Vp(i)}else Vp(n)}complete(){const{partialObserver:n}=this;if(n.complete)try{n.complete()}catch(e){Vp(e)}}}class Ru extends Bp{constructor(n,e,i){let o;if(super(),cn(n)||!n)o={next:n??void 0,error:e??void 0,complete:i??void 0};else{let r;this&&$a.useDeprecatedNextContext?(r=Object.create(n),r.unsubscribe=()=>this.unsubscribe(),o={next:n.next&&oy(n.next,r),error:n.error&&oy(n.error,r),complete:n.complete&&oy(n.complete,r)}):o=n}this.destination=new H6(o)}}function Vp(t){$a.useDeprecatedSynchronousErrorHandling?function B6(t){$a.useDeprecatedSynchronousErrorHandling&&Wa&&(Wa.errorThrown=!0,Wa.error=t)}(t):FD(t)}function ry(t,n){const{onStoppedNotification:e}=$a;e&&Fp.setTimeout(()=>e(t,n))}const U6={closed:!0,next:Np,error:function j6(t){throw t},complete:Np},sy="function"==typeof Symbol&&Symbol.observable||"@@observable";function Ga(t){return t}function ND(t){return 0===t.length?Ga:1===t.length?t[0]:function(e){return t.reduce((i,o)=>o(i),e)}}let Ft=(()=>{class t{constructor(e){e&&(this._subscribe=e)}lift(e){const i=new t;return i.source=this,i.operator=e,i}subscribe(e,i,o){const r=function W6(t){return t&&t instanceof Bp||function $6(t){return t&&cn(t.next)&&cn(t.error)&&cn(t.complete)}(t)&&AD(t)}(e)?e:new Ru(e,i,o);return Lp(()=>{const{operator:s,source:a}=this;r.add(s?s.call(r,a):a?this._subscribe(r):this._trySubscribe(r))}),r}_trySubscribe(e){try{return this._subscribe(e)}catch(i){e.error(i)}}forEach(e,i){return new(i=LD(i))((o,r)=>{const s=new Ru({next:a=>{try{e(a)}catch(l){r(l),s.unsubscribe()}},error:r,complete:o});this.subscribe(s)})}_subscribe(e){var i;return null===(i=this.source)||void 0===i?void 0:i.subscribe(e)}[sy](){return this}pipe(...e){return ND(e)(this)}toPromise(e){return new(e=LD(e))((i,o)=>{let r;this.subscribe(s=>r=s,s=>o(s),()=>i(r))})}}return t.create=n=>new t(n),t})();function LD(t){var n;return null!==(n=t??$a.Promise)&&void 0!==n?n:Promise}const G6=ty(t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let ly,me=(()=>{class t extends Ft{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(e){const i=new ay(this,this);return i.operator=e,i}_throwIfClosed(){if(this.closed)throw new G6}next(e){Lp(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(e)}})}error(e){Lp(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=e;const{observers:i}=this;for(;i.length;)i.shift().error(e)}})}complete(){Lp(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:e}=this;for(;e.length;)e.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0}_trySubscribe(e){return this._throwIfClosed(),super._trySubscribe(e)}_subscribe(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)}_innerSubscribe(e){const{hasError:i,isStopped:o,observers:r}=this;return i||o?OD:(this.currentObservers=null,r.push(e),new pt(()=>{this.currentObservers=null,Rp(r,e)}))}_checkFinalizedStatuses(e){const{hasError:i,thrownError:o,isStopped:r}=this;i?e.error(o):r&&e.complete()}asObservable(){const e=new Ft;return e.source=this,e}}return t.create=(n,e)=>new ay(n,e),t})();class ay extends me{constructor(n,e){super(),this.destination=n,this.source=e}next(n){var e,i;null===(i=null===(e=this.destination)||void 0===e?void 0:e.next)||void 0===i||i.call(e,n)}error(n){var e,i;null===(i=null===(e=this.destination)||void 0===e?void 0:e.error)||void 0===i||i.call(e,n)}complete(){var n,e;null===(e=null===(n=this.destination)||void 0===n?void 0:n.complete)||void 0===e||e.call(n)}_subscribe(n){var e,i;return null!==(i=null===(e=this.source)||void 0===e?void 0:e.subscribe(n))&&void 0!==i?i:OD}}class ki extends me{constructor(n){super(),this._value=n}get value(){return this.getValue()}_subscribe(n){const e=super._subscribe(n);return!e.closed&&n.next(this._value),e}getValue(){const{hasError:n,thrownError:e,_value:i}=this;if(n)throw e;return this._throwIfClosed(),i}next(n){super.next(this._value=n)}}function cy(){return ly}function $s(t){const n=ly;return ly=t,n}const q6=Symbol("NotFound");function dy(t){return t===q6||"\u0275NotFound"===t?.name}Error;const HD="https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss";class X extends Error{code;constructor(n,e){super(co(n,e)),this.code=n}}function co(t,n){return`${function Y6(t){return`NG0${Math.abs(t)}`}(t)}${n?": "+n:""}`}const Fn=globalThis;function Tt(t){for(let n in t)if(t[n]===Tt)return n;throw Error("")}function X6(t,n){for(const e in n)n.hasOwnProperty(e)&&!t.hasOwnProperty(e)&&(t[e]=n[e])}function Ws(t){if("string"==typeof t)return t;if(Array.isArray(t))return`[${t.map(Ws).join(", ")}]`;if(null==t)return""+t;const n=t.overriddenName||t.name;if(n)return`${n}`;const e=t.toString();if(null==e)return""+e;const i=e.indexOf("\n");return i>=0?e.slice(0,i):e}function uy(t,n){return t?n?`${t} ${n}`:t:n||""}const Z6=Tt({__forward_ref__:Tt});function Nt(t){return t.__forward_ref__=Nt,t}function qe(t){return jp(t)?t():t}function jp(t){return"function"==typeof t&&t.hasOwnProperty(Z6)&&t.__forward_ref__===Nt}function te(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function Je(t){return{providers:t.providers||[],imports:t.imports||[]}}function Up(t){return function oj(t,n){return t.hasOwnProperty(n)&&t[n]||null}(t,$p)}function zp(t){return t&&t.hasOwnProperty(hy)?t[hy]:null}const $p=Tt({\u0275prov:Tt}),hy=Tt({\u0275inj:Tt});class Z{_desc;ngMetadataName="InjectionToken";\u0275prov;constructor(n,e){this._desc=n,this.\u0275prov=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.\u0275prov=te({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function py(t){return t&&!!t.\u0275providers}const jD=Tt({\u0275cmp:Tt}),dj=Tt({\u0275dir:Tt}),uj=Tt({\u0275pipe:Tt}),UD=Tt({\u0275mod:Tt}),Ya=Tt({\u0275fac:Tt}),Fu=Tt({__NG_ELEMENT_ID__:Tt}),zD=Tt({__NG_ENV_ID__:Tt});function Er(t){return Gp(t),t[UD]||null}function xt(t){return Gp(t),t[jD]||null}function Zi(t){return Gp(t),t[dj]||null}function tr(t){return Gp(t),t[uj]||null}function Gp(t,n){if(null==t)throw new X(-919,!1)}function je(t){return"string"==typeof t?t:null==t?"":String(t)}const gy=Tt({ngErrorCode:Tt}),$D=Tt({ngErrorMessage:Tt}),Nu=Tt({ngTokenPath:Tt});function _y(t,n){return WD("",-200,n)}function by(t,n){throw new X(-201,!1)}function WD(t,n,e){const i=new X(n,t);return i[gy]=n,i[$D]=t,e&&(i[Nu]=e),i}let vy;function GD(){return vy}function uo(t){const n=vy;return vy=t,n}function qD(t,n,e){const i=Up(t);return i&&"root"==i.providedIn?void 0===i.value?i.value=i.factory():i.value:8&e?null:void 0!==n?n:void by()}const Xa={};class _j{injector;constructor(n){this.injector=n}retrieve(n,e){const i=Lu(e)||0;try{return this.injector.get(n,8&i?null:Xa,i)}catch(o){if(dy(o))return o;throw o}}}function bj(t,n=0){const e=cy();if(void 0===e)throw new X(-203,!1);if(null===e)return qD(t,void 0,n);{const i=function vj(t){return{optional:!!(8&t),host:!!(1&t),self:!!(2&t),skipSelf:!!(4&t)}}(n),o=e.retrieve(t,i);if(dy(o)){if(i.optional)return null;throw o}return o}}function ce(t,n=0){return(GD()||bj)(qe(t),n)}function D(t,n){return ce(t,Lu(n))}function Lu(t){return typeof t>"u"||"number"==typeof t?t:0|(t.optional&&8)|(t.host&&1)|(t.self&&2)|(t.skipSelf&&4)}function Cy(t){const n=[];for(let e=0;eArray.isArray(e)?Bc(e,n):n(e))}function YD(t,n,e){n>=t.length?t.push(e):t.splice(n,0,e)}function qp(t,n){return n>=t.length-1?t.pop():t.splice(n,1)[0]}function Yp(t,n,e){let i=Vu(t,n);return i>=0?t[1|i]=e:(i=~i,function ZD(t,n,e,i){let o=t.length;if(o==n)t.push(e,i);else if(1===o)t.push(i,t[0]),t[0]=e;else{for(o--,t.push(t[o-1],t[o]);o>n;)t[o]=t[o-2],o--;t[n]=e,t[n+1]=i}}(t,i,n,e)),i}function wy(t,n){const e=Vu(t,n);if(e>=0)return t[1|e]}function Vu(t,n){return function wj(t,n,e){let i=0,o=t.length>>e;for(;o!==i;){const r=i+(o-i>>1),s=t[r<n?o=r:i=r+1}return~(o<{e.push(s)};return Bc(n,s=>{const a=s;Zp(a,r,[],i)&&(o||=[],o.push(a))}),void 0!==o&&JD(o,r),e}function JD(t,n){for(let e=0;e{n(r,i)})}}function Zp(t,n,e,i){if(!(t=qe(t)))return!1;let o=null,r=zp(t);const s=!r&&xt(t);if(r||s){if(s&&!s.standalone)return!1;o=t}else{const l=t.ngModule;if(r=zp(l),!r)return!1;o=l}const a=i.has(o);if(s){if(a)return!1;if(i.add(o),s.dependencies){const l="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const c of l)Zp(c,n,e,i)}}else{if(!r)return!1;{if(null!=r.imports&&!a){let c;i.add(o),Bc(r.imports,f=>{Zp(f,n,e,i)&&(c||=[],c.push(f))}),void 0!==c&&JD(c,n)}if(!a){const c=Za(o)||(()=>new o);n({provide:o,useFactory:c,deps:Yt},o),n({provide:xy,useValue:o,multi:!0},o),n({provide:ss,useValue:()=>ce(o),multi:!0},o)}const l=r.providers;if(null!=l&&!a){const c=t;ky(l,f=>{n(f,c)})}}}return o!==t&&void 0!==t.providers}function ky(t,n){for(let e of t)py(e)&&(e=e.\u0275providers),Array.isArray(e)?ky(e,n):n(e)}const kj=Tt({provide:String,useValue:Tt});function Dy(t){return null!==t&&"object"==typeof t&&kj in t}function as(t){return"function"==typeof t}const My=new Z(""),Qp={},iM={};let Ty;function Jp(){return void 0===Ty&&(Ty=new Xp),Ty}class zn{}class Qa extends zn{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(n,e,i,o){super(),this.parent=e,this.source=i,this.scopes=o,Py(n,s=>this.processProvider(s)),this.records.set(QD,Vc(void 0,this)),o.has("environment")&&this.records.set(zn,Vc(void 0,this));const r=this.records.get(My);null!=r&&"string"==typeof r.value&&this.scopes.add(r.value),this.injectorDefTypes=new Set(this.get(xy,Yt,{self:!0}))}retrieve(n,e){const i=Lu(e)||0;try{return this.get(n,Xa,i)}catch(o){if(dy(o))return o;throw o}}destroy(){ju(this),this._destroyed=!0;const n=Te(null);try{for(const i of this._ngOnDestroyHooks)i.ngOnDestroy();const e=this._onDestroyHooks;this._onDestroyHooks=[];for(const i of e)i()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),Te(n)}}onDestroy(n){return ju(this),this._onDestroyHooks.push(n),()=>this.removeOnDestroy(n)}runInContext(n){ju(this);const e=$s(this),i=uo(void 0);try{return n()}finally{$s(e),uo(i)}}get(n,e=Xa,i){if(ju(this),n.hasOwnProperty(zD))return n[zD](this);const o=Lu(i),s=$s(this),a=uo(void 0);try{if(!(4&o)){let c=this.records.get(n);if(void 0===c){const f=function Pj(t){return"function"==typeof t||"object"==typeof t&&"InjectionToken"===t.ngMetadataName}(n)&&Up(n);c=f&&this.injectableDefInScope(f)?Vc(Ey(n),Qp):null,this.records.set(n,c)}if(null!=c)return this.hydrate(n,c,o)}return(2&o?Jp():this.parent).get(n,e=8&o&&e===Xa?null:e)}catch(l){const c=function mj(t){return t[gy]}(l);throw-200===c||-201===c?new X(c,null):l}finally{uo(a),$s(s)}}resolveInjectorInitializers(){const n=Te(null),e=$s(this),i=uo(void 0);try{const r=this.get(ss,Yt,{self:!0});for(const s of r)s()}finally{$s(e),uo(i),Te(n)}}toString(){return"R3Injector[...]"}processProvider(n){let e=as(n=qe(n))?n:qe(n&&n.provide);const i=function Mj(t){return Dy(t)?Vc(void 0,t.useValue):Vc(oM(t),Qp)}(n);if(!as(n)&&!0===n.multi){let o=this.records.get(e);o||(o=Vc(void 0,Qp,!0),o.factory=()=>Cy(o.multi),this.records.set(e,o)),e=n,o.multi.push(n)}this.records.set(e,i)}hydrate(n,e,i){const o=Te(null);try{if(e.value===iM)throw _y();return e.value===Qp&&(e.value=iM,e.value=e.factory(void 0,i)),"object"==typeof e.value&&e.value&&function Ej(t){return null!==t&&"object"==typeof t&&"function"==typeof t.ngOnDestroy}(e.value)&&this._ngOnDestroyHooks.add(e.value),e.value}finally{Te(o)}}injectableDefInScope(n){if(!n.providedIn)return!1;const e=qe(n.providedIn);return"string"==typeof e?"any"===e||this.scopes.has(e):this.injectorDefTypes.has(e)}removeOnDestroy(n){const e=this._onDestroyHooks.indexOf(n);-1!==e&&this._onDestroyHooks.splice(e,1)}}function Ey(t){const n=Up(t),e=null!==n?n.factory:Za(t);if(null!==e)return e;if(t instanceof Z)throw new X(-204,!1);if(t instanceof Function)return function Dj(t){if(t.length>0)throw new X(-204,!1);const e=function rj(t){return(t?.[$p]??null)||null}(t);return null!==e?()=>e.factory(t):()=>new t}(t);throw new X(-204,!1)}function oM(t,n,e){let i;if(as(t)){const o=qe(t);return Za(o)||Ey(o)}if(Dy(t))i=()=>qe(t.useValue);else if(function tM(t){return!(!t||!t.useFactory)}(t))i=()=>t.useFactory(...Cy(t.deps||[]));else if(function eM(t){return!(!t||!t.useExisting)}(t))i=(o,r)=>ce(qe(t.useExisting),void 0!==r&&8&r?8:void 0);else{const o=qe(t&&(t.useClass||t.provide));if(!function Tj(t){return!!t.deps}(t))return Za(o)||Ey(o);i=()=>new o(...Cy(t.deps))}return i}function ju(t){if(t.destroyed)throw new X(-205,!1)}function Vc(t,n,e=!1){return{factory:t,value:n,multi:e?[]:void 0}}function Py(t,n){for(const e of t)Array.isArray(e)?Py(e,n):e&&py(e)?Py(e.\u0275providers,n):n(e)}function Qi(t,n){let e;t instanceof Qa?(ju(t),e=t):e=new _j(t);const o=$s(e),r=uo(void 0);try{return n()}finally{$s(o),uo(r)}}function Iy(){return void 0!==GD()||null!=cy()}function Dn(t){return Array.isArray(t)&&"object"==typeof t[1]}function Ji(t){return Array.isArray(t)&&!0===t[1]}function sM(t){return!!(4&t.flags)}function Ir(t){return t.componentOffset>-1}function $c(t){return!(1&~t.flags)}function ir(t){return!!t.template}function Ks(t){return!!(512&t[2])}function us(t){return!(256&~t[2])}function gi(t){for(;Array.isArray(t);)t=t[0];return t}function Wc(t,n){return gi(n[t])}function Zn(t,n){return gi(n[t.index])}function Gc(t,n){return t.data[n]}function il(t,n){return t[n]}function eo(t,n){const e=n[t];return Dn(e)?e:e[0]}function Fy(t){return!(128&~t[2])}function Li(t,n){return null==n?null:t[n]}function hM(t){t[17]=0}function fM(t){1024&t[2]||(t[2]|=1024,Fy(t)&&qc(t))}function im(t){return!!(9216&t[2]||t[24]?.dirty)}function Ny(t){t[10].changeDetectionScheduler?.notify(8),64&t[2]&&(t[2]|=1024),im(t)&&qc(t)}function qc(t){t[10].changeDetectionScheduler?.notify(0);let n=hs(t);for(;null!==n&&!(8192&n[2])&&(n[2]|=8192,Fy(n));)n=hs(n)}function om(t,n){if(us(t))throw new X(911,!1);null===t[21]&&(t[21]=[]),t[21].push(n)}function hs(t){const n=t[3];return Ji(n)?n[3]:n}function mM(t){return t[7]??=[]}function gM(t){return t.cleanup??=[]}const Be={lFrame:IM(null),bindingsEnabled:!0,skipHydrationRootTNode:null};let Vy=!1;function _M(){Be.lFrame.elementDepthCount--}function Hy(){return Be.bindingsEnabled}function bM(){return null!==Be.skipHydrationRootTNode}function vM(t){return Be.skipHydrationRootTNode===t}function yM(){Be.skipHydrationRootTNode=null}function ne(){return Be.lFrame.lView}function ze(){return Be.lFrame.tView}function j(t){return Be.lFrame.contextLView=t,t[8]}function U(t){return Be.lFrame.contextLView=null,t}function Ve(){let t=CM();for(;null!==t&&64===t.type;)t=t.parent;return t}function CM(){return Be.lFrame.currentTNode}function fs(t,n){const e=Be.lFrame;e.currentTNode=t,e.isParent=n}function wM(){return Be.lFrame.isParent}function xM(){Be.lFrame.isParent=!1}function DM(){return Vy}function rm(t){const n=Vy;return Vy=t,n}function Bi(){const t=Be.lFrame;let n=t.bindingRootIndex;return-1===n&&(n=t.bindingRootIndex=t.tView.bindingStartIndex),n}function ps(){return Be.lFrame.bindingIndex}function ho(){return Be.lFrame.bindingIndex++}function ms(t){const n=Be.lFrame,e=n.bindingIndex;return n.bindingIndex=n.bindingIndex+t,e}function zj(t,n){const e=Be.lFrame;e.bindingIndex=e.bindingRootIndex=t,jy(n)}function jy(t){Be.lFrame.currentDirectiveIndex=t}function zy(){return Be.lFrame.currentQueryIndex}function sm(t){Be.lFrame.currentQueryIndex=t}function Wj(t){const n=t[1];return 2===n.type?n.declTNode:1===n.type?t[5]:null}function EM(t,n,e){if(4&e){let o=n,r=t;for(;!(o=o.parent,null!==o||1&e||(o=Wj(r),null===o||(r=r[14],10&o.type))););if(null===o)return!1;n=o,t=r}const i=Be.lFrame=PM();return i.currentTNode=n,i.lView=t,!0}function $y(t){const n=PM(),e=t[1];Be.lFrame=n,n.currentTNode=e.firstChild,n.lView=t,n.tView=e,n.contextLView=t,n.bindingIndex=e.bindingStartIndex,n.inI18n=!1}function PM(){const t=Be.lFrame,n=null===t?null:t.child;return null===n?IM(t):n}function IM(t){const n={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=n),n}function OM(){const t=Be.lFrame;return Be.lFrame=t.parent,t.currentTNode=null,t.lView=null,t}const AM=OM;function Wy(){const t=OM();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 Di(){return Be.lFrame.selectedIndex}function ol(t){Be.lFrame.selectedIndex=t}function or(){const t=Be.lFrame;return Gc(t.tView,t.selectedIndex)}function rl(){Be.lFrame.currentNamespace="svg"}function Gy(){!function Kj(){Be.lFrame.currentNamespace=null}()}let RM=!0;function am(){return RM}function $u(t){RM=t}function FM(t,n=null,e=null,i){const o=NM(t,n,e);return o.resolveInjectorInitializers(),o}function NM(t,n=null,e=null,i,o=new Set){const r=[e||Yt,Sj(t)];return new Qa(r,n||Jp(),null,o)}class He{static THROW_IF_NOT_FOUND=Xa;static NULL=new Xp;static create(n,e){if(Array.isArray(n))return FM({name:""},e,n);{const i=n.name??"";return FM({name:i},n.parent,n.providers)}}static \u0275prov=te({token:He,providedIn:"any",factory:()=>ce(QD)});static __NG_ELEMENT_ID__=-1}const et=new Z("");let rr=(()=>class t{static __NG_ELEMENT_ID__=Xj;static __NG_ENV_ID__=e=>e})();class LM extends rr{_lView;constructor(n){super(),this._lView=n}get destroyed(){return us(this._lView)}onDestroy(n){const e=this._lView;return om(e,n),()=>function Ly(t,n){if(null===t[21])return;const e=t[21].indexOf(n);-1!==e&&t[21].splice(e,1)}(e,n)}}function Xj(){return new LM(ne())}const BM=!1,Zj=new Z("");let Ys=(()=>{class t{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new ki(!1);debugTaskTracker=D(Zj,{optional:!0});get hasPendingTasks(){return!this.destroyed&&this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new Ft(e=>{e.next(!1),e.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);const e=this.taskId++;return this.pendingTasks.add(e),this.debugTaskTracker?.add(e),e}has(e){return this.pendingTasks.has(e)}remove(e){this.pendingTasks.delete(e),this.debugTaskTracker?.remove(e),0===this.pendingTasks.size&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})();const we=class Qj extends me{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(n=!1){super(),this.__isAsync=n,Iy()&&(this.destroyRef=D(rr,{optional:!0})??void 0,this.pendingTasks=D(Ys,{optional:!0})??void 0)}emit(n){const e=Te(null);try{super.next(n)}finally{Te(e)}}subscribe(n,e,i){let o=n,r=e||(()=>null),s=i;if(n&&"object"==typeof n){const l=n;o=l.next?.bind(l),r=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(r=this.wrapInTimeout(r),o&&(o=this.wrapInTimeout(o)),s&&(s=this.wrapInTimeout(s)));const a=super.subscribe({next:o,error:r,complete:s});return n instanceof pt&&n.add(a),a}wrapInTimeout(n){return e=>{const i=this.pendingTasks?.add();setTimeout(()=>{try{n(e)}finally{void 0!==i&&this.pendingTasks?.remove(i)}})}}};function lm(...t){}function VM(t){let n,e;function i(){t=lm;try{void 0!==e&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(e),void 0!==n&&clearTimeout(n)}catch{}}return n=setTimeout(()=>{t(),i()}),"function"==typeof requestAnimationFrame&&(e=requestAnimationFrame(()=>{t(),i()})),()=>i()}function Jj(t){return queueMicrotask(()=>t()),()=>{t=lm}}const qy="isAngularZone",cm=qy+"_ID";let eU=0;class _e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new we(!1);onMicrotaskEmpty=new we(!1);onStable=new we(!1);onError=new we(!1);constructor(n){const{enableLongStackTrace:e=!1,shouldCoalesceEventChangeDetection:i=!1,shouldCoalesceRunChangeDetection:o=!1,scheduleInRootZone:r=BM}=n;if(typeof Zone>"u")throw new X(908,!1);Zone.assertZonePatched();const s=this;s._nesting=0,s._outer=s._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(s._inner=s._inner.fork(new Zone.TaskTrackingZoneSpec)),e&&Zone.longStackTraceZoneSpec&&(s._inner=s._inner.fork(Zone.longStackTraceZoneSpec)),s.shouldCoalesceEventChangeDetection=!o&&i,s.shouldCoalesceRunChangeDetection=o,s.callbackScheduled=!1,s.scheduleInRootZone=r,function iU(t){const n=()=>{!function nU(t){function n(){VM(()=>{t.callbackScheduled=!1,Yy(t),t.isCheckStableRunning=!0,Ky(t),t.isCheckStableRunning=!1})}t.isCheckStableRunning||t.callbackScheduled||(t.callbackScheduled=!0,t.scheduleInRootZone?Zone.root.run(()=>{n()}):t._outer.run(()=>{n()}),Yy(t))}(t)},e=eU++;t._inner=t._inner.fork({name:"angular",properties:{[qy]:!0,[cm]:e,[cm+e]:!0},onInvokeTask:(i,o,r,s,a,l)=>{if(function rU(t){return UM(t,"__ignore_ng_zone__")}(l))return i.invokeTask(r,s,a,l);try{return HM(t),i.invokeTask(r,s,a,l)}finally{(t.shouldCoalesceEventChangeDetection&&"eventTask"===s.type||t.shouldCoalesceRunChangeDetection)&&n(),jM(t)}},onInvoke:(i,o,r,s,a,l,c)=>{try{return HM(t),i.invoke(r,s,a,l,c)}finally{t.shouldCoalesceRunChangeDetection&&!t.callbackScheduled&&!function sU(t){return UM(t,"__scheduler_tick__")}(l)&&n(),jM(t)}},onHasTask:(i,o,r,s)=>{i.hasTask(r,s),o===r&&("microTask"==s.change?(t._hasPendingMicrotasks=s.microTask,Yy(t),Ky(t)):"macroTask"==s.change&&(t.hasPendingMacrotasks=s.macroTask))},onHandleError:(i,o,r,s)=>(i.handleError(r,s),t.runOutsideAngular(()=>t.onError.emit(s)),!1)})}(s)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get(qy)}static assertInAngularZone(){if(!_e.isInAngularZone())throw new X(909,!1)}static assertNotInAngularZone(){if(_e.isInAngularZone())throw new X(909,!1)}run(n,e,i){return this._inner.run(n,e,i)}runTask(n,e,i,o){const r=this._inner,s=r.scheduleEventTask("NgZoneEvent: "+o,n,tU,lm,lm);try{return r.runTask(s,e,i)}finally{r.cancelTask(s)}}runGuarded(n,e,i){return this._inner.runGuarded(n,e,i)}runOutsideAngular(n){return this._outer.run(n)}}const tU={};function Ky(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 Yy(t){t.hasPendingMicrotasks=!!(t._hasPendingMicrotasks||(t.shouldCoalesceEventChangeDetection||t.shouldCoalesceRunChangeDetection)&&!0===t.callbackScheduled)}function HM(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function jM(t){t._nesting--,Ky(t)}class oU{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new we;onMicrotaskEmpty=new we;onStable=new we;onError=new we;run(n,e,i){return n.apply(e,i)}runGuarded(n,e,i){return n.apply(e,i)}runOutsideAngular(n){return n()}runTask(n,e,i,o){return n.apply(e,i)}}function UM(t,n){return!(!Array.isArray(t)||1!==t.length)&&!0===t[0]?.data?.[n]}class sl{_console=console;handleError(n){this._console.error("ERROR",n)}}const Or=new Z("",{factory:()=>{const t=D(_e),n=D(zn);let e;return i=>{t.runOutsideAngular(()=>{n.destroyed&&!e?setTimeout(()=>{throw i}):(e??=n.get(sl),e.handleError(i))})}}}),aU={provide:ss,useValue:()=>{D(sl,{optional:!0})},multi:!0};function yt(t,n){const[e,i,o]=function P6(t,n){const e=Object.create(ey);e.value=t,void 0!==n&&(e.equal=n);const i=()=>function I6(t){return Pu(t),t.value}(e);return i[Rn]=e,[i,s=>Ap(e,s),s=>ID(e,s)]}(t,n?.equal),r=e;return r.set=i,r.update=o,r.asReadonly=Xy.bind(r),r}function Xy(){const t=this[Rn];if(void 0===t.readonlyFn){const n=()=>this();n[Rn]=t,t.readonlyFn=n}return t.readonlyFn}let dm=(()=>class t{view;node;constructor(e,i){this.view=e,this.node=i}static __NG_ELEMENT_ID__=cU})();function cU(){return new dm(ne(),Ve())}class al{}const um=new Z("",{factory:()=>!0}),zM=new Z("");let hm=(()=>{class t{internalPendingTasks=D(Ys);scheduler=D(al);errorHandler=D(Or);add(){const e=this.internalPendingTasks.add();return()=>{this.internalPendingTasks.has(e)&&(this.scheduler.notify(11),this.internalPendingTasks.remove(e))}}run(e){const i=this.add();e().catch(this.errorHandler).finally(i)}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})(),$M=(()=>{class t{static \u0275prov=te({token:t,providedIn:"root",factory:()=>new dU})}return t})();class dU{dirtyEffectCount=0;queues=new Map;add(n){this.enqueue(n),this.schedule(n)}schedule(n){n.dirty&&this.dirtyEffectCount++}remove(n){const i=this.queues.get(n.zone);i.has(n)&&(i.delete(n),n.dirty&&this.dirtyEffectCount--)}enqueue(n){const e=n.zone;this.queues.has(e)||this.queues.set(e,new Set);const i=this.queues.get(e);i.has(n)||i.add(n)}flush(){for(;this.dirtyEffectCount>0;){let n=!1;for(const[e,i]of this.queues)n||=null===e?this.flushQueue(i):e.run(()=>this.flushQueue(i));n||(this.dirtyEffectCount=0)}}flushQueue(n){let e=!1;for(const i of n)i.dirty&&(this.dirtyEffectCount--,e=!0,i.run());return e}}class Zy{[Rn];constructor(n){this[Rn]=n}destroy(){this[Rn].destroy()}}function fm(t,n){const e=n?.injector??D(He);let o,i=!0!==n?.manualCleanup?e.get(rr):null;const r=e.get(dm,null,{optional:!0}),s=e.get(al);return null!==r?(o=function fU(t,n,e){const i=Object.create(hU);return i.view=t,i.zone=typeof Zone<"u"?Zone.current:null,i.notifier=n,i.fn=GM(i,e),t[23]??=new Set,t[23].add(i),i.consumerMarkedDirty(i),i}(r.view,s,t),i instanceof LM&&i._lView===r.view&&(i=null)):o=function pU(t,n,e){const i=Object.create(uU);return i.fn=GM(i,t),i.scheduler=n,i.notifier=e,i.zone=typeof Zone<"u"?Zone.current:null,i.scheduler.add(i),i.notifier.notify(12),i}(t,e.get($M),s),o.injector=e,null!==i&&(o.onDestroyFns=[i.onDestroy(()=>o.destroy())]),new Zy(o)}const WM={...A6,cleanupFns:void 0,zone:null,onDestroyFns:null,run(){const t=rm(!1);try{!function R6(t){if(t.dirty=!1,t.version>0&&!Ip(t))return;t.version++;const n=Oc(t);try{t.cleanup(),t.fn()}finally{Ou(t,n)}}(this)}finally{rm(t)}},cleanup(){if(!this.cleanupFns?.length)return;const t=Te(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],Te(t)}}},uU={...WM,consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(Au(this),null!==this.onDestroyFns)for(const t of this.onDestroyFns)t();this.cleanup(),this.scheduler.remove(this)}},hU={...WM,consumerMarkedDirty(){this.view[2]|=8192,qc(this.view),this.notifier.notify(13)},destroy(){if(Au(this),null!==this.onDestroyFns)for(const t of this.onDestroyFns)t();this.cleanup(),this.view[23]?.delete(this)}};function GM(t,n){return()=>{n(e=>(t.cleanupFns??=[]).push(e))}}let qM=null;function Xs(){return qM}class gU{}let pm=(()=>{class t{historyGo(e){throw new Error("")}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>D(bU),providedIn:"platform"})}return t})();const _U=new Z("");let bU=(()=>{class t extends pm{_location;_history;_doc=D(et);constructor(){super(),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Xs().getBaseHref(this._doc)}onPopState(e){const i=Xs().getGlobalEventTarget(this._doc,"window");return i.addEventListener("popstate",e,!1),()=>i.removeEventListener("popstate",e)}onHashChange(e){const i=Xs().getGlobalEventTarget(this._doc,"window");return i.addEventListener("hashchange",e,!1),()=>i.removeEventListener("hashchange",e)}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(e){this._location.pathname=e}pushState(e,i,o){this._history.pushState(e,i,o)}replaceState(e,i,o){this._history.replaceState(e,i,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(e=0){this._history.go(e)}getState(){return this._history.state}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>new t,providedIn:"platform"})}return t})();function KM(t,n){n=encodeURIComponent(n);for(const e of t.split(";")){const i=e.indexOf("="),[o,r]=-1==i?[e,""]:[e.slice(0,i),e.slice(i+1)];if(o.trim()===n)return decodeURIComponent(r)}return null}class YM{}const XM="browser";let ZM=(()=>{class t{static \u0275prov=te({token:t,providedIn:"root",factory:()=>new DU(D(et),window)})}return t})();class DU{document;window;offset=()=>[0,0];constructor(n,e){this.document=n,this.window=e}setOffset(n){this.offset=Array.isArray(n)?()=>n:n}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(n,e){this.window.scrollTo({...e,left:n[0],top:n[1]})}scrollToAnchor(n,e){const i=function MU(t,n){const e=t.getElementById(n)||t.getElementsByName(n)[0];if(e)return e;if("function"==typeof t.createTreeWalker&&t.body&&"function"==typeof t.body.attachShadow){const i=t.createTreeWalker(t.body,NodeFilter.SHOW_ELEMENT);let o=i.currentNode;for(;o;){const r=o.shadowRoot;if(r){const s=r.getElementById(n)||r.querySelector(`[name="${n}"]`);if(s)return s}o=i.nextNode()}}return null}(this.document,n);i&&(this.scrollToElement(i,e),i.focus())}setHistoryScrollRestoration(n){try{this.window.history.scrollRestoration=n}catch{console.warn(co(2400,!1))}}scrollToElement(n,e){const i=n.getBoundingClientRect(),o=i.left+this.window.pageXOffset,r=i.top+this.window.pageYOffset,s=this.offset();this.window.scrollTo({...e,left:o-s[0],top:r-s[1]})}}function lT(t,n,e,i,o,r,s){try{var a=t[r](s),l=a.value}catch(c){return void e(c)}a.done?n(l):Promise.resolve(l).then(i,o)}function Et(t){return function(){var n=this,e=arguments;return new Promise(function(i,o){var r=t.apply(n,e);function s(l){lT(r,i,o,s,a,"next",l)}function a(l){lT(r,i,o,s,a,"throw",l)}s(void 0)})}}function Mn(t){return n=>{if(function tz(t){return cn(t?.lift)}(n))return n.lift(function(e){try{return t(e,this)}catch(i){this.error(i)}});throw new TypeError("Unable to lift unknown Observable type")}}function dn(t,n,e,i,o){return new nz(t,n,e,i,o)}class nz extends Bp{constructor(n,e,i,o,r,s){super(n),this.onFinalize=r,this.shouldUnsubscribe=s,this._next=e?function(a){try{e(a)}catch(l){n.error(l)}}:super._next,this._error=o?function(a){try{o(a)}catch(l){n.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=i?function(){try{i()}catch(a){n.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var n;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:e}=this;super.unsubscribe(),!e&&(null===(n=this.onFinalize)||void 0===n||n.call(this))}}}function Se(t,n){return Mn((e,i)=>{let o=0;e.subscribe(dn(i,r=>{i.next(t.call(n,r,o++))}))})}function gs(t){return{toString:t}.toString()}function CT(t,n,e,i){null!==n?n.applyValueToInputSignal(n,i):t[e]=i}class Rz{previousValue;currentValue;firstChange;constructor(n,e,i){this.previousValue=n,this.currentValue=e,this.firstChange=i}isFirstChange(){return this.firstChange}}const _i=(()=>{const t=()=>wT;return t.ngInherit=!0,t})();function wT(t){return t.type.prototype.ngOnChanges&&(t.setInput=Nz),Fz}function Fz(){const t=ST(this),n=t?.current;if(n){const e=t.previous;if(e===Pr)t.previous=n;else for(let i in n)e[i]=n[i];t.current=null,this.ngOnChanges(n)}}function Nz(t,n,e,i,o){const r=this.declaredInputs[i],s=ST(t)||function Lz(t,n){return t[xT]=n}(t,{previous:Pr,current:null}),a=s.current||(s.current={}),l=s.previous,c=l[r];a[r]=new Rz(c&&c.currentValue,e,l===Pr),CT(t,n,o,e)}const xT="__ngSimpleChanges__";function ST(t){return t[xT]||null}const dl=[],Lt=function(t,n=null,e){for(let i=0;i=i)break}else n[l]<0&&(t[17]+=65536),(a>14>16&&(3&t[2])===n&&(t[2]+=16384,MT(a,r)):MT(a,r)}class Qu{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(n,e,i,o){this.factory=n,this.name=o,this.canSeeViewProviders=e,this.injectImpl=i}}function ET(t){return 3===t||4===t||6===t}function PT(t){return 64===t.charCodeAt(0)}function td(t,n){if(null!==n&&0!==n.length)if(null===t||0===t.length)t=n.slice();else{let e=-1;for(let i=0;in){s=r-1;break}}}for(;r>16}(t),i=n;for(;e>0;)i=i[14],e--;return i}let uC=!0;function Dm(t){const n=uC;return uC=t,n}let qz=0;const Rr={};function Mm(t,n){const e=RT(t,n);if(-1!==e)return e;const i=n[1];i.firstCreatePass&&(t.injectorIndex=n.length,hC(i.data,t),hC(n,null),hC(i.blueprint,null));const o=Tm(t,n),r=t.injectorIndex;if(dC(o)){const s=Ju(o),a=eh(o,n),l=a[1].data;for(let c=0;c<8;c++)n[r+c]=a[s+c]|l[s+c]}return n[r+8]=o,r}function hC(t,n){t.push(0,0,0,0,0,0,0,0,n)}function RT(t,n){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null===n[t.injectorIndex+8]?-1:t.injectorIndex}function Tm(t,n){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;let e=0,i=null,o=n;for(;null!==o;){if(i=jT(o),null===i)return-1;if(e++,o=o[14],-1!==i.injectorIndex)return i.injectorIndex|e<<16}return-1}function fC(t,n,e){!function Kz(t,n,e){let i;"string"==typeof e?i=e.charCodeAt(0)||0:e.hasOwnProperty(Fu)&&(i=e[Fu]),null==i&&(i=e[Fu]=qz++);const o=255&i;n.data[t+(o>>5)]|=1<=0?255&n:Qz:n}(e);if("function"==typeof r){if(!EM(n,t,i))return 1&i?FT(o,0,i):NT(n,e,i,o);try{let s;if(s=r(i),null!=s||8&i)return s;by()}finally{AM()}}else if("number"==typeof r){let s=null,a=RT(t,n),l=-1,c=1&i?n[15][5]:null;for((-1===a||4&i)&&(l=-1===a?Tm(t,n):n[a+8],-1!==l&&HT(i,!1)?(s=n[1],a=Ju(l),n=eh(l,n)):a=-1);-1!==a;){const f=n[1];if(VT(r,a,f.data)){const m=Xz(a,n,e,s,i,c);if(m!==Rr)return m}l=n[a+8],-1!==l&&HT(i,n[1].data[a+8]===c)&&VT(r,a,n)?(s=f,a=Ju(l),n=eh(l,n)):a=-1}}return o}function Xz(t,n,e,i,o,r){const s=n[1],a=s.data[t+8],f=Em(a,s,e,null==i?Ir(a)&&uC:i!=s&&!!(3&a.type),1&o&&r===a);return null!==f?th(n,s,f,a,o):Rr}function Em(t,n,e,i,o){const r=t.providerIndexes,s=n.data,a=1048575&r,l=t.directiveStart,f=r>>20,g=o?a+f:t.directiveEnd;for(let _=i?a:a+f;_=l&&w.type===e)return _}if(o){const _=s[l];if(_&&ir(_)&&_.type===e)return l}return null}function th(t,n,e,i,o){let r=t[e];const s=n.data;if(r instanceof Qu){const a=r;if(a.resolving)throw _y();const l=Dm(a.canSeeViewProviders);a.resolving=!0;const m=a.injectImpl?uo(a.injectImpl):null;EM(t,i,0);try{r=t[e]=a.factory(void 0,o,s,t,i),n.firstCreatePass&&e>=i.directiveStart&&function jz(t,n,e){const{ngOnChanges:i,ngOnInit:o,ngDoCheck:r}=n.type.prototype;if(i){const s=wT(n);(e.preOrderHooks??=[]).push(t,s),(e.preOrderCheckHooks??=[]).push(t,s)}o&&(e.preOrderHooks??=[]).push(0-t,o),r&&((e.preOrderHooks??=[]).push(t,r),(e.preOrderCheckHooks??=[]).push(t,r))}(e,s[e],n)}finally{null!==m&&uo(m),Dm(l),a.resolving=!1,AM()}}return r}function VT(t,n,e){return!!(e[n+(t>>5)]&1<{const n=t.prototype.constructor,e=n[Ya]||pC(n),i=Object.prototype;let o=Object.getPrototypeOf(t.prototype).constructor;for(;o&&o!==i;){const r=o[Ya]||pC(o);if(r&&r!==e)return r;o=Object.getPrototypeOf(o)}return r=>new r})}function pC(t){return jp(t)?()=>{const n=pC(qe(t));return n&&n()}:Za(t)}function jT(t){const n=t[1],e=n.type;return 2===e?n.declTNode:1===e?t[5]:null}function nh(t){return function Yz(t,n){if("class"===n)return t.classes;if("style"===n)return t.styles;const e=t.attrs;if(e){const i=e.length;let o=0;for(;oclass t{nativeElement;constructor(e){this.nativeElement=e}static __NG_ELEMENT_ID__=a7})();function GT(t){return t instanceof Re?t.nativeElement:t}function l7(){return this._results[Symbol.iterator]()}class id{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new me}constructor(n=!1){this._emitDistinctChangesOnly=n}get(n){return this._results[n]}map(n){return this._results.map(n)}filter(n){return this._results.filter(n)}find(n){return this._results.find(n)}reduce(n,e){return this._results.reduce(n,e)}forEach(n){this._results.forEach(n)}some(n){return this._results.some(n)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(n,e){this.dirty=!1;const i=function Ao(t){return t.flat(Number.POSITIVE_INFINITY)}(n);(this._changesDetected=!function Cj(t,n,e){if(t.length!==n.length)return!1;for(let i=0;iR7}),R7="ng",u2=new Z(""),wC=new Z("",{providedIn:"platform",factory:()=>"unknown"}),Rm=new Z(""),xC=new Z("",{factory:()=>D(et).body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null}),j7=new Z("",{factory:()=>!1}),W7=new Z("");function Vm(t){return!(32&~t.flags)}function V2(t,n){const e=t.contentQueries;if(null!==e){const i=Te(null);try{for(let o=0;ot,createScript:t=>t,createScriptURL:t=>t})}catch{}return Gm}()?.createHTML(t)||t}function G2(t){return function UC(){if(void 0===qm&&(qm=null,Fn.trustedTypes))try{qm=Fn.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return qm}()?.createScriptURL(t)||t}class hl{changingThisBreaksApplicationSecurity;constructor(n){this.changingThisBreaksApplicationSecurity=n}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${HD})`}}class C9 extends hl{getTypeName(){return"HTML"}}class w9 extends hl{getTypeName(){return"Style"}}class x9 extends hl{getTypeName(){return"Script"}}class S9 extends hl{getTypeName(){return"URL"}}class k9 extends hl{getTypeName(){return"ResourceURL"}}function Mo(t){return t instanceof hl?t.changingThisBreaksApplicationSecurity:t}function Fr(t,n){const e=function D9(t){return t instanceof hl&&t.getTypeName()||null}(t);if(null!=e&&e!==n){if("ResourceURL"===e&&"URL"===n)return!0;throw new Error(`Required a safe ${n}, got a ${e} (see ${HD})`)}return e===n}class O9{inertDocumentHelper;constructor(n){this.inertDocumentHelper=n}getInertBodyElement(n){n=""+n;try{const e=(new window.DOMParser).parseFromString(rd(n),"text/html").body;return null===e?this.inertDocumentHelper.getInertBodyElement(n):(e.firstChild?.remove(),e)}catch{return null}}}class A9{defaultDoc;inertDocument;constructor(n){this.defaultDoc=n,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(n){const e=this.inertDocument.createElement("template");return e.innerHTML=rd(n),e}}const F9=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function ch(t){return(t=String(t)).match(F9)?t:"unsafe:"+t}function Nr(t){const n={};for(const e of t.split(","))n[e]=!0;return n}function sd(...t){const n={};for(const e of t)for(const i in e)e.hasOwnProperty(i)&&(n[i]=!0);return n}const K2=Nr("area,br,col,hr,img,wbr"),Y2=Nr("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),X2=Nr("rp,rt"),zC=sd(K2,sd(Y2,Nr("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),sd(X2,Nr("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),sd(X2,Y2)),$C=Nr("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),WC=sd($C,Nr("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),Nr("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext")),N9=Nr("script,style,template");class L9{sanitizedSomething=!1;buf=[];sanitizeChildren(n){let e=n.firstChild,i=!0,o=[];for(;e;)if(e.nodeType===Node.ELEMENT_NODE?i=this.startElement(e):e.nodeType===Node.TEXT_NODE?this.chars(e.nodeValue):this.sanitizedSomething=!0,i&&e.firstChild)o.push(e),e=H9(e);else for(;e;){e.nodeType===Node.ELEMENT_NODE&&this.endElement(e);let r=V9(e);if(r){e=r;break}e=o.pop()}return this.buf.join("")}startElement(n){const e=Z2(n).toLowerCase();if(!zC.hasOwnProperty(e))return this.sanitizedSomething=!0,!N9.hasOwnProperty(e);this.buf.push("<"),this.buf.push(e);const i=n.attributes;for(let o=0;o"),!0}endElement(n){const e=Z2(n).toLowerCase();zC.hasOwnProperty(e)&&!K2.hasOwnProperty(e)&&(this.buf.push(""))}chars(n){this.buf.push(J2(n))}}function V9(t){const n=t.nextSibling;if(n&&t!==n.previousSibling)throw Q2(n);return n}function H9(t){const n=t.firstChild;if(n&&function B9(t,n){return(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}(t,n))throw Q2(n);return n}function Z2(t){const n=t.nodeName;return"string"==typeof n?n:"FORM"}function Q2(t){return new Error(`Failed to sanitize html because the element is clobbered: ${t.outerHTML}`)}const j9=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,U9=/([^\#-~ |!])/g;function J2(t){return t.replace(/&/g,"&").replace(j9,function(n){return"&#"+(1024*(n.charCodeAt(0)-55296)+(n.charCodeAt(1)-56320)+65536)+";"}).replace(U9,function(n){return"&#"+n.charCodeAt(0)+";"}).replace(//g,">")}let Km;function eE(t,n){let e=null;try{Km=Km||function q2(t){const n=new A9(t);return function R9(){try{return!!(new window.DOMParser).parseFromString(rd(""),"text/html")}catch{return!1}}()?new O9(n):n}(t);let i=n?String(n):"";e=Km.getInertBodyElement(i);let o=5,r=i;do{if(0===o)throw new Error("Failed to sanitize html because the input is unstable");o--,i=r,r=e.innerHTML,e=Km.getInertBodyElement(i)}while(i!==r);return rd((new L9).sanitizeChildren(qC(e)||e))}finally{if(e){const i=qC(e)||e;for(;i.firstChild;)i.firstChild.remove()}}}function qC(t){return"content"in t&&function z9(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}const $9=/^>|^->||--!>|)/g;function YC(t,n){return t.createComment(function tE(t){return t.replace($9,n=>n.replace(W9,"\u200b$1\u200b"))}(n))}function Ym(t,n,e){return t.createElement(n,e)}function fl(t,n,e,i,o){t.insertBefore(n,e,i,o)}function iE(t,n,e){t.appendChild(n,e)}function oE(t,n,e,i,o){null!==i?fl(t,n,e,i,o):iE(t,n,e)}function dh(t,n,e,i){t.removeChild(null,n,e,i)}function sE(t,n,e){const{mergedAttrs:i,classes:o,styles:r}=e;null!==i&&function Wz(t,n,e){let i=0;for(;i-1){let r;for(;++or?"":o[f+1].toLowerCase(),2&i&&c!==m){if(sr(i))return!1;s=!0}}}}else{if(!s&&!sr(i)&&!sr(l))return!1;if(s&&sr(l))continue;s=!1,i=l|1&i}}return sr(i)||s}function sr(t){return!(1&t)}function _$(t,n,e,i){if(null===n)return-1;let o=0;if(i||!e){let r=!1;for(;o-1)for(e++;e0?'="'+a+'"':"")+"]"}else 8&i?o+="."+s:4&i&&(o+=" "+s);else""!==o&&!sr(s)&&(n+=mE(r,o),o=""),i=s,r=r||!sr(i);e++}return""!==o&&(n+=mE(r,o)),n}const At={};function QC(t,n,e,i,o,r,s,a,l,c,f){const m=27+i,g=m+o,_=function k$(t,n){const e=[];for(let i=0;i{class t{impl=null;execute(){this.impl?.execute()}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})();const xE=[0,1,2,3];let SE=(()=>{class t{ngZone=D(_e);scheduler=D(al);errorHandler=D(sl,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){D(oa,{optional:!0})}execute(){const e=this.sequences.size>0;e&&Lt(ge.AfterRenderHooksStart),this.executing=!0;for(const i of xE)for(const o of this.sequences)if(!o.erroredOrDestroyed&&o.hooks[i])try{o.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>(0,o.hooks[i])(o.pipelinedValue),o.snapshot))}catch(r){o.erroredOrDestroyed=!0,this.errorHandler?.handleError(r)}this.executing=!1;for(const i of this.sequences)i.afterRun(),i.once&&(this.sequences.delete(i),i.destroy());for(const i of this.deferredRegistrations)this.sequences.add(i);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),e&&Lt(ge.AfterRenderHooksEnd)}register(e){const{view:i}=e;void 0!==i?((i[25]??=[]).push(e),qc(i),i[2]|=8192):this.executing?this.deferredRegistrations.add(e):this.addSequence(e)}addSequence(e){this.sequences.add(e),this.scheduler.notify(7)}unregister(e){this.executing&&this.sequences.has(e)?(e.erroredOrDestroyed=!0,e.pipelinedValue=void 0,e.once=!0):(this.sequences.delete(e),this.deferredRegistrations.delete(e))}maybeTrace(e,i){return i?i.run(d1.AFTER_NEXT_RENDER,e):e()}static \u0275prov=te({token:t,providedIn:"root",factory:()=>new t})}return t})();class kE{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(n,e,i,o,r,s=null){this.impl=n,this.hooks=e,this.view=i,this.once=o,this.snapshot=s,this.unregisterOnDestroy=r?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();const n=this.view?.[25];n&&(this.view[25]=n.filter(e=>e!==this))}}function Vi(t,n){const e=n?.injector??D(He);return vi("NgAfterNextRender"),function DE(t,n,e,i){const o=n.get(u1);o.impl??=n.get(SE);const r=n.get(oa,null,{optional:!0}),s=!0!==e?.manualCleanup?n.get(rr):null,a=n.get(dm,null,{optional:!0}),l=new kE(o.impl,function U$(t){return t instanceof Function?[void 0,void 0,t,void 0]:[t.earlyRead,t.write,t.mixedReadWrite,t.read]}(t),a?.view,i,s,r?.snapshot(null));return o.impl.register(l),l}(t,e,n,!0)}const og=new Z("",{factory:()=>({queue:new Set,isScheduled:!1,scheduler:null,injector:D(zn)})});function ME(t,n,e){const i=t.get(og);if(Array.isArray(n))for(const o of n)i.queue.add(o),e?.detachedLeaveAnimationFns?.push(o);else i.queue.add(n),e?.detachedLeaveAnimationFns?.push(n);i.scheduler&&i.scheduler(t)}function TE(t,n,e,i){const o=t?.[26]?.enter;null!==n&&o&&o.has(e.index)&&function h1(t,n){for(const[e,i]of n)ME(t,i.animateFns)}(i,o)}function cd(t,n,e,i,o,r,s,a){if(null!=o){let l,c=!1;Ji(o)?l=o:Dn(o)&&(c=!0,o=o[0]);const f=gi(o);0===t&&null!==i?(TE(a,i,r,e),null==s?iE(n,i,f):fl(n,i,f,s||null,!0)):1===t&&null!==i?(TE(a,i,r,e),fl(n,i,f,s||null,!0),function R$(t,n){const e=fh.get(t);if(!e||0===e.length)return;const i=n.parentNode,o=n.previousSibling;for(let r=e.length-1;r>=0;r--){const s=e[r],a=s.parentNode;s===n?(e.splice(r,1),o1.add(s),s.dispatchEvent(new CustomEvent("animationend",{detail:{cancel:!0}}))):(o&&s===o||a&&i&&a!==i)&&(e.splice(r,1),s.dispatchEvent(new CustomEvent("animationend",{detail:{cancel:!0}})),s.parentNode?.removeChild(s))}}(r,f)):2===t?(a?.[26]?.leave?.has(r.index)&&function s1(t,n){const e=fh.get(t);e?e.includes(n)||e.push(n):fh.set(t,[n])}(r,f),IE(a,r,e,m=>{o1.has(f)?o1.delete(f):dh(n,f,c,m)})):3===t&&IE(a,r,e,()=>{n.destroyNode(f)}),null!=l&&function Z$(t,n,e,i,o,r,s){const a=i[7];a!==gi(i)&&cd(n,t,e,r,a,o,s);for(let c=10;c=0?i[a]():i[-a].unsubscribe(),s+=2}else e[s].call(i[e[s+1]]);null!==i&&(n[7]=null);const o=n[21];if(null!==o){n[21]=null;for(let s=0;s{if(o.leave&&o.leave.has(n.index)){const s=o.leave.get(n.index),a=[];if(s){for(let l=0;l{t[26].running=void 0,bl.delete(t[19]),n(!0)}):n(!1)}(t,i)}else t&&bl.delete(t[19]),i(!1)},o)}function m1(t,n,e){return function OE(t,n,e){let i=n;for(;null!==i&&168&i.type;)i=(n=i).parent;if(null===i)return e[0];if(Ir(i)){const{encapsulation:o}=t.data[i.directiveStart+i.componentOffset];if(o===No.None||o===No.Emulated)return null}return Zn(i,e)}(t,n.parent,e)}function AE(t,n,e){return FE(t,n,e)}let FE=function RE(t,n,e){return 40&t.type?Zn(t,e):null};function _1(t,n,e,i){const o=m1(t,i,n),r=n[11],a=AE(i.parent||n[5],i,n);if(null!=o)if(Array.isArray(e))for(let l=0;l27&&_E(t,n,27,!1),Lt(s?ge.TemplateUpdateStart:ge.TemplateCreateStart,o,e),e(i,o)}finally{ol(r),Lt(s?ge.TemplateUpdateEnd:ge.TemplateCreateEnd,o,e)}}function ag(t,n,e){(function iW(t,n,e){const i=e.directiveStart,o=e.directiveEnd;Ir(e)&&function D$(t,n,e){const i=Zn(n,t),o=function gE(t){const n=t.tView;return null===n||n.incompleteFirstPass?t.tView=QC(1,null,t.template,t.decls,t.vars,t.directiveDefs,t.pipeDefs,t.viewQuery,t.schemas,t.consts,t.id):n}(e),r=t[10].rendererFactory,s=e1(t,Zm(t,o,null,JC(e),i,n,null,r.createRenderer(i,e),null,null,null));t[n.index]=s}(n,e,t.data[i+e.componentOffset]),t.firstCreatePass||Mm(e,n);const r=e.initialInputs;for(let s=i;snull;function y1(t,n,e,i,o,r){ug(t,n[1],n,e,i)?Ir(t)&&jE(n,t.index):(3&t.type&&(e=function nW(t){return"class"===t?"className":"for"===t?"htmlFor":"formaction"===t?"formAction":"innerHtml"===t?"innerHTML":"readonly"===t?"readOnly":"tabindex"===t?"tabIndex":t}(e)),C1(t,n,e,i,o,r))}function C1(t,n,e,i,o,r){if(3&t.type){const s=Zn(t,n);i=null!=r?r(i,t.value||"",e):i,o.setProperty(s,e,i)}}function jE(t,n){const e=eo(n,t);16&e[2]||(e[2]|=64)}function rW(t,n){null!==t.hostBindings&&t.hostBindings(1,n)}function w1(t,n){const e=t.directiveRegistry;let i=null;if(e)for(let o=0;o{qc(t.lView)},consumerOnSignalRead(){this.lView[24]=this}},bW={...Ic,consumerIsAlwaysLive:!0,kind:"template",consumerMarkedDirty:t=>{let n=hs(t.lView);for(;n&&!GE(n[1]);)n=hs(n);n&&fM(n)},consumerOnSignalRead(){this.lView[24]=this}};function GE(t){return 2!==t.type}function qE(t){if(null===t[23])return;let n=!0;for(;n;){let e=!1;for(const i of t[23])i.dirty&&(e=!0,null===i.zone||Zone.current===i.zone?i.run():i.zone.run(()=>i.run()));n=e&&!!(8192&t[2])}}function fg(t,n=0){const i=t[10].rendererFactory;i.begin?.();try{!function yW(t,n){const e=DM();try{rm(!0),S1(t,n);let i=0;for(;im(t);){if(100===i)throw new X(103,!1);i++,S1(t,1)}}finally{rm(e)}}(t,n)}finally{i.end?.()}}function KE(t,n,e,i){if(us(n))return;const o=n[2];$y(n);let a=!0,l=null,c=null;GE(t)?(c=function fW(t){return t[24]??function pW(t){const n=WE.pop()??Object.create(gW);return n.lView=t,n}(t)}(n),l=Oc(c)):null===function Xv(){return An}()?(a=!1,c=function _W(t){const n=t[24]??Object.create(bW);return n.lView=t,n}(n),l=Oc(c)):n[24]&&(Au(n[24]),n[24]=null);try{hM(n),function MM(t){return Be.lFrame.bindingIndex=t}(t.bindingStartIndex),null!==e&&VE(t,n,e,2,i);const f=!(3&~o);if(f){const _=t.preOrderCheckHooks;null!==_&&Sm(n,_,null)}else{const _=t.preOrderHooks;null!==_&&km(n,_,0,null),lC(n,0)}if(function CW(t){for(let n=n2(t);null!==n;n=i2(n)){if(!(2&n[2]))continue;const e=n[9];for(let i=0;i0&&(e[o-1][4]=n),i0&&(t[e-1][4]=i[4]);const r=qp(t,10+n);!function EE(t,n){PE(t,n),n[0]=null,n[5]=null}(i[1],i);const s=r[18];null!==s&&s.detachView(r[1]),i[3]=null,i[4]=null,i[2]&=-129}return i}function eP(t,n){const e=t[9],i=n[3];(Dn(i)||n[15]!==i[3][15])&&(t[2]|=2),null===e?t[9]=[n]:e.push(n)}class bh{_lView;_cdRefInjectingView;_appRef=null;_attachedToViewContainer=!1;exhaustive;get rootNodes(){const n=this._lView,e=n[1];return gh(e,n,e.firstChild,[])}constructor(n,e){this._lView=n,this._cdRefInjectingView=e}get context(){return this._lView[8]}set context(n){this._lView[8]=n}get destroyed(){return us(this._lView)}destroy(){if(this._appRef)this._appRef.detachView(this);else if(this._attachedToViewContainer){const n=this._lView[3];if(Ji(n)){const e=n[8],i=e?e.indexOf(this):-1;i>-1&&(_h(n,i),qp(e,i))}this._attachedToViewContainer=!1}mh(this._lView[1],this._lView)}onDestroy(n){om(this._lView,n)}markForCheck(){hd(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[2]&=-129}reattach(){Ny(this._lView),this._lView[2]|=128}detectChanges(){this._lView[2]|=1024,fg(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new X(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;const n=Ks(this._lView),e=this._lView[16];null!==e&&!n&&f1(e,this._lView),PE(this._lView[1],this._lView)}attachToAppRef(n){if(this._attachedToViewContainer)throw new X(902,!1);this._appRef=n;const e=Ks(this._lView),i=this._lView[16];null!==i&&!e&&eP(i,this._lView),Ny(this._lView)}}let Ti=(()=>class t{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=kW;constructor(e,i,o){this._declarationLView=e,this._declarationTContainer=i,this.elementRef=o}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,i){return this.createEmbeddedViewImpl(e,i)}createEmbeddedViewImpl(e,i,o){const r=ud(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:i,dehydratedView:o});return new bh(r)}})();function kW(){return pg(Ve(),ne())}function pg(t,n){return 4&t.type?new Ti(n,t,nd(t,n)):null}function Cl(t,n,e,i,o){let r=t.data[n];if(null===r)r=function E1(t,n,e,i,o){const r=CM(),s=wM(),l=t.data[n]=function RW(t,n,e,i,o,r){let s=n?n.injectorIndex:-1,a=0;return bM()&&(a|=128),{type:e,index:i,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:a,providerIndexes:0,value:o,attrs:r,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:n,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}(0,s?r:r&&r.parent,e,n,i,o);return function AW(t,n,e,i){null===t.firstChild&&(t.firstChild=n),null!==e&&(i?null==e.child&&null!==n.parent&&(e.child=n):null===e.next&&(e.next=n,n.prev=e))}(t,l,r,s),l}(t,n,e,i,o),function Uj(){return Be.lFrame.inI18n}()&&(r.flags|=32);else if(64&r.type){r.type=e,r.value=i,r.attrs=o;const s=function zu(){const t=Be.lFrame,n=t.currentTNode;return t.isParent?n:n.parent}();r.injectorIndex=null===s?-1:s.injectorIndex}return fs(r,!0),r}function vP(t,n){let e=0,i=t.firstChild;if(i){const o=t.data.r;for(;eclass t{destroyNode=null;static __NG_ELEMENT_ID__=()=>function bG(){const t=ne(),e=eo(Ve().index,t);return(Dn(e)?e:t)[11]}()})(),vG=(()=>{class t{static \u0275prov=te({token:t,providedIn:"root",factory:()=>null})}return t})();const L1={};class md{injector;parentInjector;constructor(n,e){this.injector=n,this.parentInjector=e}get(n,e,i){const o=this.injector.get(n,L1,i);return o!==L1||e===L1?o:this.parentInjector.get(n,e,i)}}function Sg(t,n,e){let i=e?t.styles:null,o=e?t.classes:null,r=0;if(null!==n)for(let s=0;s0&&(e.directiveToIndex=new Map);for(let g=0;g0;){const e=t[--n];if("number"==typeof e&&e<0)return e}return 0})(s)!=a&&s.push(a),s.push(e,i,r)}}(t,n,i,hh(t,e,o.hostVars,At),o)}function PG(t,n,e){if(e){if(n.exportAs)for(let i=0;il?a[l]:null}"string"==typeof s&&(r+=2)}return null}(n,e,r,t.index)),null!==f)(f.__ngLastListenerFn__||f).__ngNextListenerFn__=s,f.__ngLastListenerFn__=s,c=!0;else{const m=Zn(t,e),g=i?i(m):m,_=o.listen(g,r,a);(function FG(t){return t.startsWith("animation")||t.startsWith("transition")})(r)||RP(i?k=>i(gi(k[t.index])):t.index,n,e,r,a,_,!1)}return c}function RP(t,n,e,i,o,r,s){const a=n.firstCreatePass?gM(n):null,l=mM(e),c=l.length;l.push(o,r),a&&a.push(i,t,c,(c+1)*(s?-1:1))}function _d(t,n,e,i,o,r){const a=n[1],m=n[e][a.data[e].outputs[i]].subscribe(r);RP(t.index,a,n,o,r,m,!0)}const _s=Symbol("BINDING");function z1(t){return t.debugInfo?.className||t.type.name||null}class UP extends wg{ngModule;constructor(n){super(),this.ngModule=n}resolveComponentFactory(n){const e=xt(n);return new Th(e,this.ngModule)}}class Th extends kP{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=function qG(t){return Object.keys(t).map(n=>{const[e,i,o]=t[n],r={propName:e,templateName:n,isSignal:0!==(i&Qm.SignalBased)};return o&&(r.transform=o),r})}(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=function KG(t){return Object.keys(t).map(n=>({propName:t[n],templateName:n}))}(this.componentDef.outputs),this.cachedOutputs}constructor(n,e){super(),this.componentDef=n,this.ngModule=e,this.componentType=n.type,this.selector=function x$(t){return t.map(w$).join(",")}(n.selectors),this.ngContentSelectors=n.ngContentSelectors??[],this.isBoundToModule=!!e}create(n,e,i,o,r,s){Lt(ge.DynamicComponentStart);const a=Te(null);try{const l=this.componentDef,c=function YG(t,n,e){let i=n instanceof zn?n:n?.injector;return i&&null!==t.getStandaloneInjector&&(i=t.getStandaloneInjector(i)||i),i?new md(e,i):e}(l,o||this.ngModule,n),f=function XG(t){const n=t.get(Lo,null);if(null===n)throw new X(407,!1);return{rendererFactory:n,sanitizer:t.get(vG,null),changeDetectionScheduler:t.get(al,null),ngReflect:!1,tracingService:t.get(oa,null,{optional:!0})}}(c),m=f.tracingService;return m&&m.componentCreate?m.componentCreate(z1(l),()=>this.createComponentRef(f,c,e,i,r,s)):this.createComponentRef(f,c,e,i,r,s)}finally{Te(a)}}createComponentRef(n,e,i,o,r,s){const a=this.componentDef,l=function JG(t,n,e,i){const o=t?["ng-version","21.2.4"]:function S$(t){const n=[],e=[];let i=1,o=2;for(;i{if(1&e&&t)for(const i of t)i.create();if(2&e&&n)for(const i of n)i.update()}:null}(r,s),1,a,l,null,null,null,[o],null)}(o,a,s,r),c=n.rendererFactory.createRenderer(null,a),f=o?function J$(t,n,e,i){const r=i.get(j7,!1)||e===No.ShadowDom||e===No.ExperimentalIsolatedShadowDom,s=t.selectRootElement(n,r);return function eW(t){HE(t)}(s),s}(c,o,a.encapsulation,e):function ZG(t,n){const e=function QG(t){return(t.selectors[0][0]||"div").toLowerCase()}(t);return Ym(n,e,"svg"===e?"svg":"math"===e?"math":null)}(a,c),m=s?.some(zP)||r?.some(w=>"function"!=typeof w&&w.bindings.some(zP)),g=Zm(null,l,null,512|JC(a),null,null,n,c,e,null,null);g[27]=f,$y(g);let _=null;try{const w=V1(27,g,2,"#host",()=>l.directiveRegistry,!0,0);sE(c,f,w),po(f,g),ag(l,g,w),VC(l,w,g),H1(l,w),void 0!==i&&function nq(t,n,e){const i=t.projection=[];for(let o=0;oclass t{static __NG_ELEMENT_ID__=iq})();function iq(){return WP(Ve(),ne())}class $1 extends Ei{_lContainer;_hostTNode;_hostLView;constructor(n,e,i){super(),this._lContainer=n,this._hostTNode=e,this._hostLView=i}get element(){return nd(this._hostTNode,this._hostLView)}get injector(){return new Bn(this._hostTNode,this._hostLView)}get parentInjector(){const n=Tm(this._hostTNode,this._hostLView);if(dC(n)){const e=eh(n,this._hostLView),i=Ju(n);return new Bn(e[1].data[i+8],e)}return new Bn(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(n){const e=$P(this._lContainer);return null!==e&&e[n]||null}get length(){return this._lContainer.length-10}createEmbeddedView(n,e,i){let o,r;"number"==typeof i?o=i:null!=i&&(o=i.index,r=i.injector);const a=n.createEmbeddedViewImpl(e||{},r,null);return this.insertImpl(a,o,yl(this._hostTNode,null)),a}createComponent(n,e,i,o,r,s,a){const l=n&&!function Zu(t){return"function"==typeof t}(n);let c;if(l)c=e;else{const T=e||{};c=T.index,i=T.injector,o=T.projectableNodes,r=T.environmentInjector||T.ngModuleRef,s=T.directives,a=T.bindings}const f=l?n:new Th(xt(n)),m=i||this.parentInjector;if(!r&&null==f.ngModule){const I=(l?m:this.parentInjector).get(zn,null);I&&(r=I)}xt(f.componentType??{});const k=f.create(m,o,null,r,s,a);return this.insertImpl(k.hostView,c,yl(this._hostTNode,null)),k}insert(n,e){return this.insertImpl(n,e,!0)}insertImpl(n,e,i){const o=n._lView;if(function Nj(t){return Ji(t[3])}(o)){const a=this.indexOf(n);if(-1!==a)this.detach(a);else{const l=o[3],c=new $1(l,l[5],l[3]);c.detach(c.indexOf(n))}}const r=this._adjustIndex(e),s=this._lContainer;return fd(s,o,r,i),n.attachToViewContainerRef(),YD(W1(s),r,n),n}move(n,e){return this.insert(n,e)}indexOf(n){const e=$P(this._lContainer);return null!==e?e.indexOf(n):-1}remove(n){const e=this._adjustIndex(n,-1),i=_h(this._lContainer,e);i&&(qp(W1(this._lContainer),e),mh(i[1],i))}detach(n){const e=this._adjustIndex(n,-1),i=_h(this._lContainer,e);return i&&null!=qp(W1(this._lContainer),e)?new bh(i):null}_adjustIndex(n,e=0){return n??this.length+e}}function $P(t){return t[8]}function W1(t){return t[8]||(t[8]=[])}function WP(t,n){let e;const i=n[t.index];return Ji(i)?e=i:(e=QE(i,n,null,t),n[t.index]=e,e1(n,e)),GP(e,n,t,i),new $1(e,t,n)}let GP=function KP(t,n,e,i){if(t[7])return;let o;o=8&e.type?gi(i):function oq(t,n){const e=t[11],i=e.createComment(""),o=Zn(n,t),r=e.parentNode(o);return fl(e,r,i,e.nextSibling(o),!1),i}(n,e),t[7]=o};class q1{queryList;matches=null;constructor(n){this.queryList=n}clone(){return new q1(this.queryList)}setDirty(){this.queryList.setDirty()}}class K1{queries;constructor(n=[]){this.queries=n}createEmbeddedView(n){const e=n.queries;if(null!==e){const i=null!==n.contentQueries?n.contentQueries[0]:e.length,o=[];for(let r=0;rn.trim())}(n):n}}class Y1{queries;constructor(n=[]){this.queries=n}elementStart(n,e){for(let i=0;i0)i.push(s[a/2]);else{const c=r[a+1],f=n[-l];for(let m=10;m{i._dirtyCounter();const r=function pq(t,n){const e=t._lView,i=t._queryIndex;if(void 0===e||void 0===i||4&e[2])return n?void 0:Yt;const o=Q1(e,i),r=tI(e,i);return o.reset(r,GT),n?o.first:o._changesDetected||void 0===t._flatValue?t._flatValue=o.toArray():t._flatValue}(i,t);if(n&&void 0===r)throw new X(-951,!1);return r});return i=o[Rn],i._dirtyCounter=yt(0),i._flatValue=void 0,o}function nI(t){return e0(!0,!1)}function iI(t){return e0(!0,!0)}function oI(t,n){const e=t[Rn];e._lView=ne(),e._queryIndex=n,e._queryList=Q1(e._lView,n),e._queryList.onDirty(()=>e._dirtyCounter.update(i=>i+1))}let bs=class{},lI=class{};class o0 extends bs{ngModuleType;_parent;_bootstrapComponents=[];_r3Injector;instance;destroyCbs=[];componentFactoryResolver=new UP(this);constructor(n,e,i,o=!0){super(),this.ngModuleType=n,this._parent=e;const r=Er(n);this._bootstrapComponents=Lr(r.bootstrap),this._r3Injector=NM(n,e,[{provide:bs,useValue:this},{provide:wg,useValue:this.componentFactoryResolver},...i],Ws(n),new Set(["environment"])),o&&this.resolveInjectorInitializers()}resolveInjectorInitializers(){this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(this.ngModuleType)}get injector(){return this._r3Injector}destroy(){const n=this._r3Injector;!n.destroyed&&n.destroy(),this.destroyCbs.forEach(e=>e()),this.destroyCbs=null}onDestroy(n){this.destroyCbs.push(n)}}class cI extends lI{moduleType;constructor(n){super(),this.moduleType=n}create(n){return new o0(this.moduleType,n,[])}}class wq extends bs{injector;componentFactoryResolver=new UP(this);instance=null;constructor(n){super();const e=new Qa([...n.providers,{provide:bs,useValue:this},{provide:wg,useValue:this.componentFactoryResolver}],n.parent||Jp(),n.debugName,new Set(["environment"]));this.injector=e,n.runEnvironmentInitializers&&e.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(n){this.injector.onDestroy(n)}}function Mg(t,n,e=null){return new wq({providers:t,parent:n,debugName:e,runEnvironmentInitializers:!0}).injector}let xq=(()=>{class t{_injector;cachedInjectors=new Map;constructor(e){this._injector=e}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){const i=Sy(0,e.type),o=i.length>0?Mg([i],this._injector,""):null;this.cachedInjectors.set(e,o)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(const e of this.cachedInjectors.values())null!==e&&e.destroy()}finally{this.cachedInjectors.clear()}}static \u0275prov=te({token:t,providedIn:"environment",factory:()=>new t(ce(zn))})}return t})();function re(t){return gs(()=>{const n=uI(t),e={...n,decls:t.decls,vars:t.vars,template:t.template,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,onPush:t.changeDetection===Im.OnPush,directiveDefs:null,pipeDefs:null,dependencies:n.standalone&&t.dependencies||null,getStandaloneInjector:n.standalone?o=>o.get(xq).getOrCreateStandaloneInjector(e):null,getExternalStyles:null,signals:t.signals??!1,data:t.data||{},encapsulation:t.encapsulation||No.Emulated,styles:t.styles||Yt,_:null,schemas:t.schemas||null,tView:null,id:""};n.standalone&&vi("NgStandalone"),hI(e);const i=t.dependencies;return e.directiveDefs=Tg(i,dI),e.pipeDefs=Tg(i,tr),e.id=function Mq(t){let n=0;const i=[t.selectors,t.ngContentSelectors,t.hostVars,t.hostAttrs,"function"==typeof t.consts?"":t.consts,t.vars,t.decls,t.encapsulation,t.standalone,t.signals,t.exportAs,JSON.stringify(t.inputs),JSON.stringify(t.outputs),Object.getOwnPropertyNames(t.type.prototype),!!t.contentQueries,!!t.viewQuery];for(const r of i.join("|"))n=Math.imul(31,n)+r.charCodeAt(0)|0;return n+=2147483648,"c"+n}(e),e})}function dI(t){return xt(t)||Zi(t)}function tt(t){return gs(()=>({type:t.type,bootstrap:t.bootstrap||Yt,declarations:t.declarations||Yt,imports:t.imports||Yt,exports:t.exports||Yt,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}))}function Sq(t,n){if(null==t)return Pr;const e={};for(const i in t)if(t.hasOwnProperty(i)){const o=t[i];let r,s,a,l;Array.isArray(o)?(a=o[0],r=o[1],s=o[2]??r,l=o[3]||null):(r=o,s=o,a=Qm.None,l=null),e[r]=[i,a,l],n[r]=s}return e}function kq(t){if(null==t)return Pr;const n={};for(const e in t)t.hasOwnProperty(e)&&(n[t[e]]=e);return n}function de(t){return gs(()=>{const n=uI(t);return hI(n),n})}function Hi(t){return{type:t.type,name:t.name,factory:null,pure:!1!==t.pure,standalone:t.standalone??!0,onDestroy:t.type.prototype.ngOnDestroy||null}}function uI(t){const n={};return{type:t.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:n,inputConfig:t.inputs||Pr,exportAs:t.exportAs||null,standalone:t.standalone??!0,signals:!0===t.signals,selectors:t.selectors||Yt,viewQuery:t.viewQuery||null,features:t.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,inputs:Sq(t.inputs,n),outputs:kq(t.outputs),debugInfo:null}}function hI(t){t.features?.forEach(n=>n(t))}function Tg(t,n){return t?()=>{const e="function"==typeof t?t():t,i=[];for(const o of e){const r=n(o);null!==r&&i.push(r)}return i}:null}function fI(t){const n=e=>{const i=Array.isArray(t);null===e.hostDirectives?(e.resolveHostDirectives=Eq,e.hostDirectives=i?t.map(r0):[t]):i?e.hostDirectives.unshift(...t.map(r0)):e.hostDirectives.unshift(t)};return n.ngInherit=!0,n}function Eq(t){const n=[];let e=!1,i=null,o=null;for(let r=0;r=0;i--){const o=t[i];o.hostVars=n+=o.hostVars,o.hostAttrs=td(o.hostAttrs,e=td(e,o.hostAttrs))}}(i)}function Oq(t,n){for(const e in n.inputs){if(!n.inputs.hasOwnProperty(e)||t.inputs.hasOwnProperty(e))continue;const i=n.inputs[e];void 0!==i&&(t.inputs[e]=i,t.declaredInputs[e]=n.declaredInputs[e])}}function s0(t){return t===Pr?{}:t===Yt?[]:t}function Rq(t,n){const e=t.viewQuery;t.viewQuery=e?(i,o)=>{n(i,o),e(i,o)}:n}function Fq(t,n){const e=t.contentQueries;t.contentQueries=e?(i,o,r)=>{n(i,o,r),e(i,o,r)}:n}function Nq(t,n){const e=t.hostBindings;t.hostBindings=e?(i,o)=>{n(i,o),e(i,o)}:n}function bI(t,n,e,i,o,r,s,a){if(e.firstCreatePass){t.mergedAttrs=td(t.mergedAttrs,t.attrs);const f=t.tView=QC(2,t,o,r,s,e.directiveRegistry,e.pipeRegistry,null,e.schemas,e.consts,null);null!==e.queries&&(e.queries.template(e,t),f.queries=e.queries.embeddedTView(t))}a&&(t.flags|=a),fs(t,!1);const l=vI(e,n,t,i);am()&&_1(e,n,l,t),po(l,n);const c=QE(l,n,l,t);n[i+27]=c,e1(n,c)}function Dl(t,n,e,i,o,r,s,a,l,c,f){const m=e+27;let g;if(n.firstCreatePass){if(g=Cl(n,m,4,s||null,a||null),null!=c){const _=Li(n.consts,c);g.localNames=[];for(let w=0;w<_.length;w+=2)g.localNames.push(_[w],-1)}}else g=n.data[m];return bI(g,t,n,e,i,o,r,l),null!=c&&dd(t,g,f),g}function it(t,n,e,i,o,r,s,a){const l=ne(),c=ze();return function Lq(t,n,e,i,o,r,s,a,l,c,f){const m=e+27;let g;n.firstCreatePass?(g=Cl(n,m,4,s||null,a||null),Hy()&&MP(n,t,g,Li(n.consts,c),w1),kT(n,g)):g=n.data[m],bI(g,t,n,e,i,o,r,l),$c(g)&&ag(n,t,g),null!=c&&dd(t,g,f)}(l,c,t,n,e,i,o,Li(c.consts,r),void 0,s,a),it}function Eg(t,n,e,i,o,r,s,a){const l=ne(),c=ze();return Dl(l,c,t,n,e,i,o,Li(c.consts,r),void 0,s,a),Eg}let vI=function yI(t,n,e,i){return $u(!0),n[11].createComment("")};let AI=(()=>{class t{log(e){console.log(e)}warn(e){console.warn(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})();function El(t){return"function"==typeof t&&void 0!==t[Rn]}function FI(t){return El(t)&&"function"==typeof t.set}const XI=new Z(""),ZI=new Z("");let p0,f0=(()=>{class t{_ngZone;registry;_isZoneStable=!0;_callbacks=[];_taskTrackingZone=null;_destroyRef;constructor(e,i,o){this._ngZone=e,this.registry=i,Iy()&&(this._destroyRef=D(rr,{optional:!0})??void 0),p0||(function WK(t){p0=t}(o),o.addToWindow(i)),this._watchAngularEvents(),e.run(()=>{this._taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){const e=this._ngZone.onUnstable.subscribe({next:()=>{this._isZoneStable=!1}}),i=this._ngZone.runOutsideAngular(()=>this._ngZone.onStable.subscribe({next:()=>{_e.assertNotInAngularZone(),queueMicrotask(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}}));this._destroyRef?.onDestroy(()=>{e.unsubscribe(),i.unsubscribe()})}isStable(){return this._isZoneStable&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())queueMicrotask(()=>{for(;0!==this._callbacks.length;){let e=this._callbacks.pop();clearTimeout(e.timeoutId),e.doneCb()}});else{let e=this.getPendingTasks();this._callbacks=this._callbacks.filter(i=>!i.updateCb||!i.updateCb(e)||(clearTimeout(i.timeoutId),!1))}}getPendingTasks(){return this._taskTrackingZone?this._taskTrackingZone.macroTasks.map(e=>({source:e.source,creationLocation:e.creationLocation,data:e.data})):[]}addCallback(e,i,o){let r=-1;i&&i>0&&(r=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==r),e()},i)),this._callbacks.push({doneCb:e,timeoutId:r,updateCb:o})}whenStable(e,i,o){if(o&&!this._taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(e,i,o),this._runCallbacksIfReady()}registerApplication(e){this.registry.registerApplication(e,this)}unregisterApplication(e){this.registry.unregisterApplication(e)}findProviders(e,i,o){return[]}static \u0275fac=function(i){return new(i||t)(ce(_e),ce($K),ce(ZI))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),$K=(()=>{class t{_applications=new Map;registerApplication(e,i){this._applications.set(e,i)}unregisterApplication(e){this._applications.delete(e)}unregisterAllApplications(){this._applications.clear()}getTestability(e){return this._applications.get(e)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(e,i=!0){return p0?.findTestabilityInTree(this,e,i)??null}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})();function Rh(t){return!!t&&"function"==typeof t.then}function QI(t){return!!t&&"function"==typeof t.subscribe}const JI=new Z("");function eO(t){return Hu([{provide:JI,multi:!0,useValue:t}])}let tO=(()=>{class t{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((e,i)=>{this.resolve=e,this.reject=i});appInits=D(JI,{optional:!0})??[];injector=D(He);constructor(){}runInitializers(){if(this.initialized)return;const e=[];for(const o of this.appInits){const r=Qi(this.injector,o);if(Rh(r))e.push(r);else if(QI(r)){const s=new Promise((a,l)=>{r.subscribe({complete:a,error:l})});e.push(s)}}const i=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{i()}).catch(o=>{this.reject(o)}),0===e.length&&i(),this.initialized=!0}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const nO=new Z("");function iO(t,n){return Array.isArray(n)?n.reduce(iO,t):{...t,...n}}let lr=(()=>{class t{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=D(Or);afterRenderManager=D(u1);zonelessEnabled=D(um);rootEffectScheduler=D($M);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new me;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=D(Ys);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(Se(e=>!e))}constructor(){D(oa,{optional:!0})}whenStable(){let e;return new Promise(i=>{e=this.isStable.subscribe({next:o=>{o&&i()}})}).finally(()=>{e.unsubscribe()})}_injector=D(zn);_rendererFactory=null;get injector(){return this._injector}bootstrap(e,i){return this.bootstrapImpl(e,i)}bootstrapImpl(e,i,o=He.NULL){return this._injector.get(_e).run(()=>{Lt(ge.BootstrapComponentStart);const s=e instanceof kP;if(!this._injector.get(tO).done)throw new X(405,"");let l;l=s?e:this._injector.get(wg).resolveComponentFactory(e),this.componentTypes.push(l.componentType);const c=function qK(t){return t.isBoundToModule}(l)?void 0:this._injector.get(bs),m=l.create(o,[],i||l.selector,c),g=m.location.nativeElement,_=m.injector.get(XI,null);return _?.registerApplication(g),m.onDestroy(()=>{this.detachView(m.hostView),Lg(this.components,m),_?.unregisterApplication(g)}),this._loadComponent(m),Lt(ge.BootstrapComponentEnd,m),m})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){Lt(ge.ChangeDetectionStart),null!==this.tracingSnapshot?this.tracingSnapshot.run(d1.CHANGE_DETECTION,this.tickImpl):this.tickImpl()}tickImpl=()=>{if(this._runningTick)throw Lt(ge.ChangeDetectionEnd),new X(101,!1);const e=Te(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,Te(e),this.afterTick.next(),Lt(ge.ChangeDetectionEnd)}};synchronize(){null===this._rendererFactory&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(Lo,null,{optional:!0}));let e=0;for(;0!==this.dirtyFlags&&e++<10;){Lt(ge.ChangeDetectionSyncStart);try{this.synchronizeOnce()}finally{Lt(ge.ChangeDetectionSyncEnd)}}}synchronizeOnce(){16&this.dirtyFlags&&(this.dirtyFlags&=-17,this.rootEffectScheduler.flush());let e=!1;if(7&this.dirtyFlags){const i=!!(1&this.dirtyFlags);this.dirtyFlags&=-8,this.dirtyFlags|=8;for(let{_lView:o}of this.allViews)(i||im(o))&&(fg(o,i&&!this.zonelessEnabled?0:1),e=!0);if(this.dirtyFlags&=-5,this.syncDirtyFlagsWithViews(),23&this.dirtyFlags)return}e||(this._rendererFactory?.begin?.(),this._rendererFactory?.end?.()),8&this.dirtyFlags&&(this.dirtyFlags&=-9,this.afterRenderManager.execute()),this.syncDirtyFlagsWithViews()}syncDirtyFlagsWithViews(){this.allViews.some(({_lView:e})=>im(e))?this.dirtyFlags|=2:this.dirtyFlags&=-8}attachView(e){const i=e;this._views.push(i),i.attachToAppRef(this)}detachView(e){const i=e;Lg(this._views,i),i.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView);try{this.tick()}catch(o){this.internalErrorHandler(o)}this.components.push(e),this._injector.get(nO,[]).forEach(o=>o(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy())}finally{this._destroyed=!0,this._views=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>Lg(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new X(406,!1);const e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Lg(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}function y0(t,n){const e=ne();if(un(e,ho(),n)){const o=ze(),r=or();if(ug(r,o,e,t,n))Ir(r)&&jE(e,r.index);else{const a=Zn(r,e);lg(e[11],a,null,r.value,t,n,null)}}return y0}function $e(t,n,e,i){const o=ne();return un(o,ho(),n)&&(ze(),function sW(t,n,e,i,o,r){const s=Zn(t,n);lg(n[11],s,r,t.value,e,i,o)}(or(),o,t,n,e,i)),$e}function Br(){return ne()[15][8]}class FY{destroy(n){}updateValue(n,e){}swap(n,e){const i=Math.min(n,e),o=Math.max(n,e),r=this.detach(o);if(o-i>1){const s=this.detach(i);this.attach(i,r),this.attach(o,s)}else this.attach(i,r)}move(n,e){this.attach(e,this.detach(n))}}function w0(t,n,e,i,o){return t===e&&Object.is(n,i)?1:Object.is(o(t,n),o(e,i))?-1:0}function x0(t,n,e,i){return!(void 0===n||!n.has(i)||(t.attach(e,n.get(i)),n.delete(i),0))}function hO(t,n,e,i,o){if(x0(t,n,i,e(i,o)))t.updateValue(i,o);else{const r=t.create(i,o);t.attach(i,r)}}function fO(t,n,e,i){const o=new Set;for(let r=n;r<=e;r++)o.add(i(r,t.at(r)));return o}class pO{kvMap=new Map;_vMap=void 0;has(n){return this.kvMap.has(n)}delete(n){if(!this.has(n))return!1;const e=this.kvMap.get(n);return void 0!==this._vMap&&this._vMap.has(e)?(this.kvMap.set(n,this._vMap.get(e)),this._vMap.delete(e)):this.kvMap.delete(n),!0}get(n){return this.kvMap.get(n)}set(n,e){if(this.kvMap.has(n)){let i=this.kvMap.get(n);void 0===this._vMap&&(this._vMap=new Map);const o=this._vMap;for(;o.has(i);)i=o.get(i);o.set(i,e)}else this.kvMap.set(n,e)}forEach(n){for(let[e,i]of this.kvMap)if(n(i,e),void 0!==this._vMap){const o=this._vMap;for(;o.has(i);)i=o.get(i),n(i,e)}}}function x(t,n,e,i,o,r,s,a){vi("NgControlFlow");const l=ne(),c=ze();return Dl(l,c,t,n,e,i,o,Li(c.consts,r),256,s,a),S0}function S0(t,n,e,i,o,r,s,a){vi("NgControlFlow");const l=ne(),c=ze();return Dl(l,c,t,n,e,i,o,Li(c.consts,r),512,s,a),S0}function S(t,n){vi("NgControlFlow");const e=ne(),i=ho(),o=e[i]!==At?e[i]:-1,r=-1!==o?jg(e,27+o):void 0;if(un(e,i,t)){const a=Te(null);try{if(void 0!==r&&k1(r,0),-1!==t){const l=27+t,c=jg(e,l),f=k0(e[1],l),m=null;fd(c,ud(e,f,n,{dehydratedView:m}),0,yl(f,m))}}finally{Te(a)}}else if(void 0!==r){const a=JE(r,0);void 0!==a&&(a[8]=n)}}class LY{lContainer;$implicit;$index;constructor(n,e,i){this.lContainer=n,this.$implicit=e,this.$index=i}get $count(){return this.lContainer.length-10}}function mO(t){return t}function Fe(t,n){return n}class BY{hasEmptyBlock;trackByFn;liveCollection;constructor(n,e,i){this.hasEmptyBlock=n,this.trackByFn=e,this.liveCollection=i}}function ve(t,n,e,i,o,r,s,a,l,c,f,m,g){vi("NgControlFlow");const _=ne(),w=ze(),k=void 0!==l,T=ne(),I=a?s.bind(T[15][8]):s,R=new BY(k,I);T[27+t]=R,Dl(_,w,t+1,n,e,i,o,Li(w.consts,r),256),k&&Dl(_,w,t+2,l,c,f,m,Li(w.consts,g),512)}class VY extends FY{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(n,e,i){super(),this.lContainer=n,this.hostLView=e,this.templateTNode=i}get length(){return this.lContainer.length-10}at(n){return this.getLView(n)[8].$implicit}attach(n,e){const i=e[6];this.needsIndexUpdate||=n!==this.length,fd(this.lContainer,e,n,yl(this.templateTNode,i)),function HY(t,n){if(t.length<=10)return;const i=t[10+n],o=i?i[26]:void 0;i&&o&&o.detachedLeaveAnimationFns&&o.detachedLeaveAnimationFns.length>0&&(function z$(t,n){const e=t.get(og);if(n.detachedLeaveAnimationFns){for(const i of n.detachedLeaveAnimationFns)e.queue.delete(i);n.detachedLeaveAnimationFns=void 0}}(i[9],o),bl.delete(i[19]),o.detachedLeaveAnimationFns=void 0)}(this.lContainer,n)}detach(n){return this.needsIndexUpdate||=n!==this.length-1,function jY(t,n){if(t.length<=10)return;const i=t[10+n],o=i?i[26]:void 0;o&&o.leave&&o.leave.size>0&&(o.detachedLeaveAnimationFns=[])}(this.lContainer,n),function UY(t,n){return _h(t,n)}(this.lContainer,n)}create(n,e){return ud(this.hostLView,this.templateTNode,new LY(this.lContainer,e,n),{dehydratedView:null})}destroy(n){mh(n[1],n)}updateValue(n,e){this.getLView(n)[8].$implicit=e}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let n=0;n{t.destroy(c)})}(l,t,r.trackByFn,n),l.updateIndexes(),r.hasEmptyBlock){const c=ho(),f=0===l.length;if(un(i,c,f)){const m=e+2,g=jg(i,m);if(f){const _=k0(o,m),w=null;fd(g,ud(i,_,void 0,{dehydratedView:w}),0,yl(_,w))}else o.firstUpdatePass&&function vg(t){const n=t[6]??[],i=t[3][11],o=[];for(const r of n)void 0!==r.data.di?o.push(r):vP(r,i);t[6]=o}(g),k1(g,0)}}}finally{Te(n)}}function jg(t,n){return t[n]}function k0(t,n){return Gc(t,n)}function C(t,n,e){const i=ne();return un(i,ho(),n)&&(ze(),y1(or(),i,t,n,i[11],e)),C}function D0(t,n,e,i,o){ug(n,t,e,o?"class":"style",i)}function h(t,n,e,i){const o=ne(),r=o[1],s=t+27,a=r.firstCreatePass?V1(s,o,2,n,w1,Hy(),e,i):r.data[s];if(Ir(a)){const l=o[10].tracingService;if(l&&l.componentCreate)return l.componentCreate(z1(r.data[a.directiveStart+a.componentOffset]),()=>(gO(t,n,o,a,i),h))}return gO(t,n,o,a,i),h}function gO(t,n,e,i,o){if(cg(i,e,t,n,M0),$c(i)){const r=e[1];ag(r,e,i),VC(r,i,e)}null!=o&&dd(e,i)}function u(){const t=ze(),e=dg(Ve());return t.firstCreatePass&&H1(t,e),vM(e)&&yM(),_M(),null!=e.classesWithoutHost&&function zz(t){return!!(8&t.flags)}(e)&&D0(t,e,ne(),e.classesWithoutHost,!0),null!=e.stylesWithoutHost&&function $z(t){return!!(16&t.flags)}(e)&&D0(t,e,ne(),e.stylesWithoutHost,!1),u}function B(t,n,e,i){return h(t,n,e,i),u(),B}function vs(t,n,e,i){const o=ne(),r=o[1],s=t+27,a=r.firstCreatePass?function OP(t,n,e,i,o,r){const s=n.consts,l=Cl(n,t,e,i,Li(s,o));if(l.mergedAttrs=td(l.mergedAttrs,l.attrs),null!=r){const c=Li(s,r);l.localNames=[];for(let f=0;f($u(!0),Ym(n[11],i,function Yj(){return Be.lFrame.currentNamespace}()));function Vr(t,n,e){const i=ne(),o=i[1],r=t+27,s=o.firstCreatePass?V1(r,i,8,"ng-container",w1,Hy(),n,e):o.data[r];if(cg(s,i,t,"ng-container",E0),$c(s)){const a=i[1];ag(a,i,s),VC(a,s,i)}return null!=e&&dd(i,s),Vr}function cr(){const t=ze(),e=dg(Ve());return t.firstCreatePass&&H1(t,e),cr}function dr(t,n,e){return Vr(t,n,e),cr(),dr}let E0=(t,n,e,i,o)=>($u(!0),YC(n[11],""));function oe(){return ne()}function ur(t,n,e){const i=ne();return un(i,ho(),n)&&(ze(),C1(or(),i,t,n,i[11],e)),ur}const Nh=void 0;var qY=["en",[["a","p"],["AM","PM"]],[["AM","PM"]],[["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"]],Nh,[["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"]],Nh,[["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\u202fa","h:mm:ss\u202fa","h:mm:ss\u202fa z","h:mm:ss\u202fa zzzz"],["{1}, {0}",Nh,Nh,Nh],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function GY(t){const n=Math.floor(Math.abs(t)),e=t.toString().replace(/^[^.]*\.?/,"").length;return 1===n&&0===e?1:5}];let Sd={};function to(t){const n=function KY(t){return t.toLowerCase().replace(/_/g,"-")}(t);let e=CO(n);if(e)return e;const i=n.split("-")[0];if(e=CO(i),e)return e;if("en"===i)return qY;throw new X(701,!1)}function CO(t){return t in Sd||(Sd[t]=Fn.ng&&Fn.ng.common&&Fn.ng.common.locales&&Fn.ng.common.locales[t]),Sd[t]}var hn=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}(hn||{});const Ug="en-US";let wO=Ug;function F(t,n,e){const i=ne(),o=ze(),r=Ve();return O0(o,i,i[11],r,t,n,e),F}function qg(t,n,e){const i=ne(),o=ze(),r=Ve();return(3&r.type||e)&&U1(r,o,i,e,i[11],t,n,sa(r,i,n)),qg}function O0(t,n,e,i,o,r,s){let a=!0,l=null;if((3&i.type||s)&&(l??=sa(i,n,r),U1(i,t,n,s,e,o,r,l)&&(a=!1)),a){const c=i.outputs?.[o],f=i.hostDirectiveOutputs?.[o];if(f&&f.length)for(let m=0;m0;)n=n[14],t--;return n}(t,Be.lFrame.contextLView))[8]}(t)}function RX(t,n){let e=null;const i=function b$(t){const n=t.attrs;if(null!=n){const e=n.indexOf(5);if(!(1&e))return n[e+1]}return null}(t);for(let o=0;o>17&32767}function N0(t){return 2|t}function kd(t){return(131068&t)>>2}function L0(t,n){return-131069&t|n<<2}function B0(t){return 1|t}function UO(t,n,e,i){const o=t[e+1],r=null===n;let s=i?Al(o):kd(o),a=!1;for(;0!==s&&(!1===a||r);){const c=t[s+1];jX(t[s],n)&&(a=!0,t[s+1]=i?B0(c):N0(c)),s=i?Al(c):kd(c)}a&&(t[e+1]=i?N0(o):B0(o))}function jX(t,n){return null===t||null==n||(Array.isArray(t)?t[1]:t)===n||!(!Array.isArray(t)||"string"!=typeof n)&&Vu(t,n)>=0}const ri={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function zO(t){return t.substring(ri.key,ri.keyEnd)}function UX(t){return t.substring(ri.value,ri.valueEnd)}function $O(t,n){const e=ri.textEnd;return e===n?-1:(n=ri.keyEnd=function WX(t,n,e){for(;n32;)n++;return n}(t,ri.key=n,e),Dd(t,n,e))}function WO(t,n){const e=ri.textEnd;let i=ri.key=Dd(t,n,e);return e===i?-1:(i=ri.keyEnd=function GX(t,n,e){let i;for(;n=65&&(-33&i)<=90||i>=48&&i<=57);)n++;return n}(t,i,e),i=qO(t,i,e),i=ri.value=Dd(t,i,e),i=ri.valueEnd=function qX(t,n,e){let i=-1,o=-1,r=-1,s=n,a=s;for(;s32&&(a=s),r=o,o=i,i=-33&l}return a}(t,i,e),qO(t,i,e))}function GO(t){ri.key=0,ri.keyEnd=0,ri.value=0,ri.valueEnd=0,ri.textEnd=t.length}function Dd(t,n,e){for(;n=0;e=WO(n,e))JO(t,zO(n),UX(n))}function Ze(t){XO(tZ,YX,t,!0)}function YX(t,n){for(let e=function zX(t){return GO(t),$O(t,Dd(t,0,ri.textEnd))}(n);e>=0;e=$O(n,e))Yp(t,zO(n),!0)}function YO(t,n,e,i){const o=ne(),r=ze(),s=ms(2);r.firstUpdatePass&&QO(r,t,s,i),n!==At&&un(o,s,n)&&eA(r,r.data[Di()],o,o[11],t,o[s+1]=function iZ(t,n){return null==t||""===t||("string"==typeof n?t+=n:"object"==typeof t&&(t=Ws(Mo(t)))),t}(n,e),i,s)}function XO(t,n,e,i){const o=ze(),r=ms(2);o.firstUpdatePass&&QO(o,null,r,i);const s=ne();if(e!==At&&un(s,r,e)){const a=o.data[Di()];if(nA(a,i)&&!ZO(o,r)){let l=i?a.classesWithoutHost:a.stylesWithoutHost;null!==l&&(e=uy(l,e||"")),D0(o,a,s,e,i)}else!function nZ(t,n,e,i,o,r,s,a){o===At&&(o=Yt);let l=0,c=0,f=0=t.expandoStartIndex}function QO(t,n,e,i){const o=t.data;if(null===o[e+1]){const r=o[Di()],s=ZO(t,e);nA(r,i)&&null===n&&!s&&(n=!1),n=function XX(t,n,e,i){const o=function Uy(t){const n=Be.lFrame.currentDirectiveIndex;return-1===n?null:t[n]}(t);let r=i?n.residualClasses:n.residualStyles;if(null===o)0===(i?n.classBindings:n.styleBindings)&&(e=jh(e=V0(null,t,n,e,i),n.attrs,i),r=null);else{const s=n.directiveStylingLast;if(-1===s||t[s]!==o)if(e=V0(o,t,n,e,i),null===r){let l=function ZX(t,n,e){const i=e?n.classBindings:n.styleBindings;if(0!==kd(i))return t[Al(i)]}(t,n,i);void 0!==l&&Array.isArray(l)&&(l=V0(null,t,n,l[1],i),l=jh(l,n.attrs,i),function QX(t,n,e,i){t[Al(e?n.classBindings:n.styleBindings)]=i}(t,n,i,l))}else r=function JX(t,n,e){let i;const o=n.directiveEnd;for(let r=1+n.directiveStylingLast;r0)&&(c=!0)):f=e,o)if(0!==l){const g=Al(t[a+1]);t[i+1]=Kg(g,a),0!==g&&(t[g+1]=L0(t[g+1],i)),t[a+1]=function LX(t,n){return 131071&t|n<<17}(t[a+1],i)}else t[i+1]=Kg(a,0),0!==a&&(t[a+1]=L0(t[a+1],i)),a=i;else t[i+1]=Kg(l,0),0===a?a=i:t[l+1]=L0(t[l+1],i),l=i;c&&(t[i+1]=N0(t[i+1])),UO(t,f,i,!0),UO(t,f,i,!1),function HX(t,n,e,i,o){const r=o?t.residualClasses:t.residualStyles;null!=r&&"string"==typeof n&&Vu(r,n)>=0&&(e[i+1]=B0(e[i+1]))}(n,f,t,i,r),s=Kg(a,l),r?n.classBindings=s:n.styleBindings=s}(o,r,n,e,s,i)}}function V0(t,n,e,i,o){let r=null;const s=e.directiveEnd;let a=e.directiveStylingLast;for(-1===a?a=e.directiveStart:a++;a0;){const l=t[o],c=Array.isArray(l),f=c?l[1]:l,m=null===f;let g=e[o+1];g===At&&(g=m?Yt:void 0);let _=m?wy(g,i):f===i?g:void 0;if(c&&!Yg(_)&&(_=wy(l,i)),Yg(_)&&(a=_,s))return a;const w=t[o+1];o=s?Al(w):kd(w)}if(null!==n){let l=r?n.residualClasses:n.residualStyles;null!=l&&(a=wy(l,i))}return a}function Yg(t){return void 0!==t}function nA(t,n){return!!(t.flags&(n?8:16))}function p(t,n=""){const e=ne(),i=ze(),o=t+27,r=i.firstCreatePass?Cl(i,o,1,n,null):i.data[o],s=iA(i,e,r,n);e[o]=s,am()&&_1(i,e,s,r),fs(r,!1)}let iA=(t,n,e,i)=>($u(!0),function KC(t,n){return t.createText(n)}(n[11],i));function M(t){return E("",t),M}function E(t,n,e){const i=ne(),o=function rA(t,n,e,i=""){return un(t,ho(),e)?n+je(e)+i:At}(i,t,n,e);return o!==At&&Cs(i,Di(),o),E}function gt(t,n,e,i,o){const r=ne(),s=function sA(t,n,e,i,o,r=""){const a=Sl(t,ps(),e,o);return ms(2),a?n+je(e)+i+je(o)+r:At}(r,t,n,e,i,o);return s!==At&&Cs(r,Di(),s),gt}function Uh(t,n,e,i,o,r,s){const a=ne(),l=function aA(t,n,e,i,o,r,s,a=""){const c=Dg(t,ps(),e,o,s);return ms(3),c?n+je(e)+i+je(o)+r+je(s)+a:At}(a,t,n,e,i,o,r,s);return l!==At&&Cs(a,Di(),l),Uh}function Xg(t,n,e,i,o,r,s,a,l){const c=ne(),f=function lA(t,n,e,i,o,r,s,a,l,c=""){const m=Bo(t,ps(),e,o,s,l);return ms(4),m?n+je(e)+i+je(o)+r+je(s)+a+je(l)+c:At}(c,t,n,e,i,o,r,s,a,l);return f!==At&&Cs(c,Di(),f),Xg}function H0(t,n,e,i,o,r,s,a,l,c,f,m,g){const _=ne(),w=function dA(t,n,e,i,o,r,s,a,l,c,f,m,g,_=""){const w=ps();let k=Bo(t,w,e,o,s,l);return k=Sl(t,w+4,f,g)||k,ms(6),k?n+je(e)+i+je(o)+r+je(s)+a+je(l)+c+je(f)+m+je(g)+_:At}(_,t,n,e,i,o,r,s,a,l,c,f,m,g);return w!==At&&Cs(_,Di(),w),H0}function Cs(t,n,e){const i=Wc(n,t);!function nE(t,n,e){t.setValue(n,e)}(t[11],i,e)}function Ut(t,n,e){FI(n)&&(n=n());const i=ne();return un(i,ho(),n)&&(ze(),y1(or(),i,t,n,i[11],e)),Ut}function Zt(t,n){const e=FI(t);return e&&t.set(n),e}function zt(t,n){const e=ne(),i=ze(),o=Ve();return O0(i,e,e[11],o,t,n),zt}function Qt(t){return un(ne(),ho(),t)?je(t):At}function vA(t,n,e){const i=ze();i.firstCreatePass&&yA(n,i.data,i.blueprint,ir(t),e)}function yA(t,n,e,i,o){if(t=qe(t),Array.isArray(t))for(let r=0;r>20;if(as(t)||!t.multi){const _=new Qu(c,o,O,null),w=U0(l,n,o?f:f+g,m);-1===w?(fC(Mm(a,s),r,l),j0(r,t,n.length),n.push(l),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),e.push(_),s.push(_)):(e[w]=_,s[w]=_)}else{const _=U0(l,n,f+g,m),w=U0(l,n,f,f+g),T=w>=0&&e[w];if(o&&!T||!o&&!(_>=0&&e[_])){fC(Mm(a,s),r,l);const I=function yZ(t,n,e,i,o){const s=new Qu(t,e,O,null);return s.multi=[],s.index=n,s.componentProviders=0,CA(s,o,i&&!e),s}(o?vZ:bZ,e.length,o,i,c);!o&&T&&(e[w].providerFactory=I),j0(r,t,n.length,0),n.push(l),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),e.push(I),s.push(I)}else j0(r,t,_>-1?_:w,CA(e[o?w:_],c,!o&&i));!o&&i&&T&&e[w].componentProviders++}}}function j0(t,n,e,i){const o=as(n),r=function nM(t){return!!t.useClass}(n);if(o||r){const l=(r?qe(n.useClass):n).prototype.ngOnDestroy;if(l){const c=t.destroyHooks||(t.destroyHooks=[]);if(!o&&n.multi){const f=c.indexOf(e);-1===f?c.push(e,[i,l]):c[f+1].push(i,l)}else c.push(e,l)}}}function CA(t,n,e){return e&&t.componentProviders++,t.multi.push(n)-1}function U0(t,n,e,i){for(let o=e;o{e.providersResolver=(i,o)=>vA(i,o?o(t):t,!1),n&&(e.viewProvidersResolver=(i,o)=>vA(i,o?o(n):n,!0))}}function Ct(t,n){const e=Bi()+t,i=ne();return i[e]===At?ar(i,e,n()):function gd(t,n){return t[n]}(i,e)}function se(t,n,e){return kA(ne(),Bi(),t,n,e)}function _t(t,n,e,i){return DA(ne(),Bi(),t,n,e,i)}function SA(t,n,e,i,o){return function MA(t,n,e,i,o,r,s,a){const l=n+e;return Dg(t,l,o,r,s)?ar(t,l+3,a?i.call(a,o,r,s):i(o,r,s)):zh(t,l+3)}(ne(),Bi(),t,n,e,i,o)}function zh(t,n){const e=t[n];return e===At?void 0:e}function kA(t,n,e,i,o,r){const s=n+e;return un(t,s,o)?ar(t,s+1,r?i.call(r,o):i(o)):zh(t,s+1)}function DA(t,n,e,i,o,r,s){const a=n+e;return Sl(t,a,o,r)?ar(t,a+2,s?i.call(s,o,r):i(o,r)):zh(t,a+2)}function b(t,n){const e=ze();let i;const o=t+27;e.firstCreatePass?(i=function EZ(t,n){if(n)for(let e=n.length-1;e>=0;e--){const i=n[e];if(t===i.name)return i}}(n,e.pipeRegistry),e.data[o]=i,i.onDestroy&&(e.destroyHooks??=[]).push(o,i.onDestroy)):i=e.data[o];const r=i.factory||(i.factory=Za(i.type)),a=uo(O);try{const l=Dm(!1),c=r();return Dm(l),function Ry(t,n,e,i){e>=t.data.length&&(t.data[e]=null,t.blueprint[e]=null),n[e]=i}(e,ne(),o,c),c}finally{uo(a)}}function y(t,n,e){const i=t+27,o=ne(),r=il(o,i);return $h(o,i)?kA(o,Bi(),n,r.transform,e,r):r.transform(e)}function pe(t,n,e,i){const o=t+27,r=ne(),s=il(r,o);return $h(r,o)?DA(r,Bi(),n,s.transform,e,i,s):s.transform(e,i)}function $h(t,n){return t[1].data[n].pure}function Rl(t,n){return pg(t,n)}class sQ{ngModuleFactory;componentFactories;constructor(n,e){this.ngModuleFactory=n,this.componentFactories=e}}let aQ=(()=>{class t{compileModuleSync(e){return new cI(e)}compileModuleAsync(e){return Promise.resolve(this.compileModuleSync(e))}compileModuleAndAllComponentsSync(e){const i=this.compileModuleSync(e),r=Lr(Er(e).declarations).reduce((s,a)=>{const l=xt(a);return l&&s.push(new Th(l)),s},[]);return new sQ(i,r)}compileModuleAndAllComponentsAsync(e){return Promise.resolve(this.compileModuleAndAllComponentsSync(e))}clearCache(){}clearCacheFor(e){}getModuleId(e){}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),cQ=(()=>{class t{applicationErrorHandler=D(Or);appRef=D(lr);taskService=D(Ys);ngZone=D(_e);zonelessEnabled=D(um);tracing=D(oa,{optional:!0});zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new pt;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(cm):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(D(zM,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{const e=this.taskService.add();this.runningTick||(this.cleanup(),this.zonelessEnabled&&!this.appRef.includeAllTestViews)?(this.switchToMicrotaskScheduler(),this.taskService.remove(e)):this.taskService.remove(e)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{const e=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(e)})})}notify(e){if(!this.zonelessEnabled&&5===e)return;switch(e){case 0:case 6:case 13:this.appRef.dirtyFlags|=2;break;case 3:case 2:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 12:this.appRef.dirtyFlags|=16;break;case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;const i=this.useMicrotaskScheduler?Jj:VM;this.pendingRenderTaskId=this.taskService.add(),this.cancelScheduledCallback=this.scheduleInRootZone?Zone.root.run(()=>i(()=>this.tick())):this.ngZone.runOutsideAngular(()=>i(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||null!==this.pendingRenderTaskId||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(cm+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(0===this.appRef.dirtyFlags)return void this.cleanup();!this.zonelessEnabled&&7&this.appRef.dirtyFlags&&(this.appRef.dirtyFlags|=1);const e=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(i){this.applicationErrorHandler(i)}finally{this.taskService.remove(e),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,null!==this.pendingRenderTaskId){const e=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(e)}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const ua=new Z("",{factory:()=>D(ua,{optional:!0,skipSelf:!0})||function dQ(){return typeof $localize<"u"&&$localize.locale||Ug}()}),a_=Symbol("InputSignalNode#UNSET"),IR={...ey,transformFn:void 0,applyValueToInputSignal(t,n){Ap(t,n)}};function OR(t,n){const e=Object.create(IR);function i(){if(Pu(e),e.value===a_)throw new X(-950,null);return e.value}return e.value=t,e.transformFn=n?.transform,i[Rn]=e,i}class Yh{attributeName;constructor(n){this.attributeName=n}__NG_ELEMENT_ID__=()=>nh(this.attributeName);toString(){return`HostAttributeToken ${this.attributeName}`}}function AR(t,n){return OR(t,n)}const ree=(AR.required=function oee(t){return OR(a_,t)},AR);function RR(t,n){return nI()}const l_=(RR.required=function see(t,n){return iI()},RR);function FR(t,n){return nI()}const lee=(FR.required=function aee(t,n){return iI()},FR);let dee=(()=>{class t{zone=D(_e);changeDetectionScheduler=D(al);applicationRef=D(lr);applicationErrorHandler=D(Or);_onMicrotaskEmptySubscription;initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler.runningTick||this.zone.run(()=>{try{this.applicationRef.dirtyFlags|=1,this.applicationRef._tick()}catch(e){this.applicationErrorHandler(e)}})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const uee=new Z("",{factory:()=>!1});function VR(t){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:t?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:t?.runCoalescing??!1}}let pee=(()=>{class t{subscription=new pt;initialized=!1;zone=D(_e);pendingTasks=D(Ys);initialize(){if(this.initialized)return;this.initialized=!0;let e=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(e=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{_e.assertNotInAngularZone(),queueMicrotask(()=>{null!==e&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(e),e=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{_e.assertInAngularZone(),e??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const c_=new Z(""),bee=new Z("");function Xh(t){return!t.moduleRef}let UR;function zR(){UR=vee}function vee(t,n){const e=t.injector.get(lr);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(i=>e.bootstrap(i));else{if(!t.instance.ngDoBootstrap)throw new X(-403,!1);t.instance.ngDoBootstrap(e)}n.push(t)}let $R=(()=>{class t{_injector;_modules=[];_destroyListeners=[];_destroyed=!1;constructor(e){this._injector=e}bootstrapModuleFactory(e,i){const o=[[{provide:al,useExisting:cQ},{provide:_e,useClass:oU},{provide:um,useValue:!0}],...i?.applicationProviders??[],aU],r=function Cq(t,n,e){return new o0(t,n,e,!1)}(e.moduleType,this.injector,o);return zR(),function jR(t){const n=Xh(t)?t.r3Injector:t.moduleRef.injector,e=n.get(_e);return e.run(()=>{Xh(t)?t.r3Injector.resolveInjectorInitializers():t.moduleRef.resolveInjectorInitializers();const i=n.get(Or);let o;if(e.runOutsideAngular(()=>{o=e.onError.subscribe({next:i})}),Xh(t)){const r=()=>n.destroy(),s=t.platformInjector.get(c_);s.add(r),n.onDestroy(()=>{o.unsubscribe(),s.delete(r)})}else{const r=()=>t.moduleRef.destroy(),s=t.platformInjector.get(c_);s.add(r),t.moduleRef.onDestroy(()=>{Lg(t.allPlatformModules,t.moduleRef),o.unsubscribe(),s.delete(r)})}return function yee(t,n,e){try{const i=e();return Rh(i)?i.catch(o=>{throw n.runOutsideAngular(()=>t(o)),o}):i}catch(i){throw n.runOutsideAngular(()=>t(i)),i}}(i,e,()=>{const r=n.get(Ys),s=r.add(),a=n.get(tO);return a.runInitializers(),a.donePromise.then(()=>{if(function QY(t){"string"==typeof t&&(wO=t.toLowerCase().replace(/_/g,"-"))}(n.get(ua,Ug)||Ug),!n.get(bee,!0))return Xh(t)?n.get(lr):(t.allPlatformModules.push(t.moduleRef),t.moduleRef);if(Xh(t)){const f=n.get(lr);return void 0!==t.rootComponent&&f.bootstrap(t.rootComponent),f}return UR?.(t.moduleRef,t.allPlatformModules),t.moduleRef}).finally(()=>{r.remove(s)})})})}({moduleRef:r,allPlatformModules:this._modules,platformInjector:this.injector})}bootstrapModule(e,i=[]){const o=iO({},i);return zR(),function cee(t,n,e){const i=new cI(e);return Promise.resolve(i)}(0,0,e).then(r=>this.bootstrapModuleFactory(r,o))}onDestroy(e){this._destroyListeners.push(e)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new X(404,!1);this._modules.slice().forEach(i=>i.destroy()),this._destroyListeners.forEach(i=>i());const e=this._injector.get(c_,null);e&&(e.forEach(i=>i()),e.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}static \u0275fac=function(i){return new(i||t)(ce(He))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})(),Rd=null;function WR(t,n,e=[]){const i=`Platform: ${n}`,o=new Z(i);return(r=[])=>{let s=d_();if(!s){const a=[...e,...r,{provide:o,useValue:!0}];s=t?.(a)??function Cee(t){if(d_())throw new X(400,!1);(function GK(){!function E6(t){ED=t}(()=>{throw new X(600,"")})})(),Rd=t;const n=t.get($R);return function qR(t){const n=t.get(u2,null);Qi(t,()=>{n?.forEach(e=>e())})}(t),n}(function GR(t=[],n){return He.create({name:n,providers:[{provide:My,useValue:"platform"},{provide:c_,useValue:new Set([()=>Rd=null])},...t]})}(a,i))}return function wee(){const n=d_();if(!n)throw new X(-401,!1);return n}()}}function d_(){return Rd?.get($R)??null}let Jt=(()=>class t{static __NG_ELEMENT_ID__=Lee})();function Lee(t){return function Bee(t,n,e){if(Ir(t)&&!e){const i=eo(t.index,n);return new bh(i,i)}return 175&t.type?new bh(n[15],n):null}(Ve(),ne(),!(16&~t))}class tF{supports(n){return kg(n)}create(n){return new Hee(n)}}const Vee=(t,n)=>n;class Hee{length=0;collection;_linkedRecords=null;_unlinkedRecords=null;_previousItHead=null;_itHead=null;_itTail=null;_additionsHead=null;_additionsTail=null;_movesHead=null;_movesTail=null;_removalsHead=null;_removalsTail=null;_identityChangesHead=null;_identityChangesTail=null;_trackByFn;constructor(n){this._trackByFn=n||Vee}forEachItem(n){let e;for(e=this._itHead;null!==e;e=e._next)n(e)}forEachOperation(n){let e=this._itHead,i=this._removalsHead,o=0,r=null;for(;e||i;){const s=!i||e&&e.currentIndex{s=this._trackByFn(o,a),null!==e&&Object.is(e.trackById,s)?(i&&(e=this._verifyReinsertion(e,a,s,o)),Object.is(e.item,a)||this._addIdentityChange(e,a)):(e=this._mismatch(e,a,s,o),i=!0),e=e._next,o++}),this.length=o;return this._truncate(e),this.collection=n,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let n;for(n=this._previousItHead=this._itHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._additionsHead;null!==n;n=n._nextAdded)n.previousIndex=n.currentIndex;for(this._additionsHead=this._additionsTail=null,n=this._movesHead;null!==n;n=n._nextMoved)n.previousIndex=n.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(n,e,i,o){let r;return null===n?r=this._itTail:(r=n._prev,this._remove(n)),null!==(n=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null))?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._reinsertAfter(n,r,o)):null!==(n=null===this._linkedRecords?null:this._linkedRecords.get(i,o))?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._moveAfter(n,r,o)):n=this._addAfter(new jee(e,i),r,o),n}_verifyReinsertion(n,e,i,o){let r=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null);return null!==r?n=this._reinsertAfter(r,n._prev,o):n.currentIndex!=o&&(n.currentIndex=o,this._addToMoves(n,o)),n}_truncate(n){for(;null!==n;){const e=n._next;this._addToRemovals(this._unlink(n)),n=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(n,e,i){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(n);const o=n._prevRemoved,r=n._nextRemoved;return null===o?this._removalsHead=r:o._nextRemoved=r,null===r?this._removalsTail=o:r._prevRemoved=o,this._insertAfter(n,e,i),this._addToMoves(n,i),n}_moveAfter(n,e,i){return this._unlink(n),this._insertAfter(n,e,i),this._addToMoves(n,i),n}_addAfter(n,e,i){return this._insertAfter(n,e,i),this._additionsTail=null===this._additionsTail?this._additionsHead=n:this._additionsTail._nextAdded=n,n}_insertAfter(n,e,i){const o=null===e?this._itHead:e._next;return n._next=o,n._prev=e,null===o?this._itTail=n:o._prev=n,null===e?this._itHead=n:e._next=n,null===this._linkedRecords&&(this._linkedRecords=new nF),this._linkedRecords.put(n),n.currentIndex=i,n}_remove(n){return this._addToRemovals(this._unlink(n))}_unlink(n){null!==this._linkedRecords&&this._linkedRecords.remove(n);const e=n._prev,i=n._next;return null===e?this._itHead=i:e._next=i,null===i?this._itTail=e:i._prev=e,n}_addToMoves(n,e){return n.previousIndex===e||(this._movesTail=null===this._movesTail?this._movesHead=n:this._movesTail._nextMoved=n),n}_addToRemovals(n){return null===this._unlinkedRecords&&(this._unlinkedRecords=new nF),this._unlinkedRecords.put(n),n.currentIndex=null,n._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=n,n._prevRemoved=null):(n._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=n),n}_addIdentityChange(n,e){return n.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=n:this._identityChangesTail._nextIdentityChange=n,n}}class jee{item;trackById;currentIndex=null;previousIndex=null;_nextPrevious=null;_prev=null;_next=null;_prevDup=null;_nextDup=null;_prevRemoved=null;_nextRemoved=null;_nextAdded=null;_nextMoved=null;_nextIdentityChange=null;constructor(n,e){this.item=n,this.trackById=e}}class Uee{_head=null;_tail=null;add(n){null===this._head?(this._head=this._tail=n,n._nextDup=null,n._prevDup=null):(this._tail._nextDup=n,n._prevDup=this._tail,n._nextDup=null,this._tail=n)}get(n,e){let i;for(i=this._head;null!==i;i=i._nextDup)if((null===e||e<=i.currentIndex)&&Object.is(i.trackById,n))return i;return null}remove(n){const e=n._prevDup,i=n._nextDup;return null===e?this._head=i:e._nextDup=i,null===i?this._tail=e:i._prevDup=e,null===this._head}}class nF{map=new Map;put(n){const e=n.trackById;let i=this.map.get(e);i||(i=new Uee,this.map.set(e,i)),i.add(n)}get(n,e){const o=this.map.get(n);return o?o.get(n,e):null}remove(n){const e=n.trackById;return this.map.get(e).remove(n)&&this.map.delete(e),n}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function iF(t,n,e){const i=t.previousIndex;if(null===i)return i;let o=0;return e&&i{class t{factories;static \u0275prov=te({token:t,providedIn:"root",factory:rF});constructor(e){this.factories=e}static create(e,i){if(null!=i){const o=i.factories.slice();e=e.concat(o)}return new t(e)}static extend(e){return{provide:t,useFactory:()=>{const i=D(t,{optional:!0,skipSelf:!0});return t.create(e,i||rF())}}}find(e){const i=this.factories.find(o=>o.supports(e));if(null!=i)return i;throw new X(901,!1)}}return t})();const qee=WR(null,"core",[]);let Kee=(()=>{class t{constructor(e){}static \u0275fac=function(i){return new(i||t)(ce(lr))};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function De(t){return"boolean"==typeof t?t:null!=t&&"false"!==t}function hr(t,n=NaN){return isNaN(parseFloat(t))||isNaN(Number(t))?n:Number(t)}const sw=Symbol("NOT_SET"),mF=new Set,ate={...ey,kind:"afterRenderEffectPhase",consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,value:sw,cleanup:null,consumerMarkedDirty(){if(this.sequence.impl.executing){if(null===this.sequence.lastPhase||this.sequence.lastPhase(Pu(c),c.value),c.signal[Rn]=c,c.registerCleanupFn=f=>(c.cleanup??=new Set).add(f),this.nodes[a]=c,this.hooks[a]=f=>c.phaseFn(f)}}afterRun(){super.afterRun(),this.lastPhase=null}destroy(){if(null!==this.onDestroyFns)for(const n of this.onDestroyFns)n();super.destroy();for(const n of this.nodes)if(n)try{for(const e of n.cleanup??mF)e()}finally{Au(n)}}}function gF(t,n){const e=xt(t),i=n.elementInjector||Jp();return new Th(e).create(i,n.projectableNodes,n.hostElement,n.environmentInjector,n.directives,n.bindings)}function _F(t,n,e){const i=Object.create(mte);i.source=t,i.computation=n,null!=e&&(i.equal=e);const r=()=>{if(Iu(i),Pu(i),i.value===rs)throw i.error;return i.value};return r[Rn]=i,r}const mte={...Ic,value:za,dirty:!0,error:null,equal:Jv,kind:"linkedSignal",producerMustRecompute:t=>t.value===za||t.value===Rc,producerRecomputeValue(t){if(t.value===Rc)throw new Error("");const n=t.value;t.value=Rc;const e=Oc(t);let i;try{const o=t.source();i=t.computation(o,n===za||n===rs?void 0:{source:t.sourceValue,value:n}),t.sourceValue=o}catch(o){i=rs,t.error=o}finally{Ou(t,e)}n!==za&&i!==rs&&t.equal(n,i)?t.value=n:(t.value=i,t.version++)}};function nt(t){return function gte(t){const n=Te(null);try{return t()}finally{Te(n)}}(t)}function Ii(t,n){return TD(t,n?.equal)}const xte=t=>t;function yF(t,n){const e=t[Rn],i=t;return i.set=o=>function fte(t,n){Iu(t),Ap(t,n),Pp(t)}(e,o),i.update=o=>function pte(t,n){if(Iu(t),t.value===rs)throw t.error;ID(t,n),Pp(t)}(e,o),i.asReadonly=Xy.bind(t),i}function dw(t,n){return t?n?t.endsWith("/")?n.startsWith("/")?t+n.slice(1):t+n:n.startsWith("/")?t+n:`${t}/${n}`:t:n}function xF(t){const n=t.search(/#|\?|$/);return"/"===t[n-1]?t.slice(0,n-1)+t.slice(n):t}function ws(t){return t&&"?"!==t[0]?`?${t}`:t}Error,Error;let Bl=(()=>{class t{historyGo(e){throw new Error("")}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>D(kF),providedIn:"root"})}return t})();const SF=new Z("");let kF=(()=>{class t extends Bl{_platformLocation;_baseHref;_removeListenerFns=[];constructor(e,i){super(),this._platformLocation=e,this._baseHref=i??this._platformLocation.getBaseHrefFromDOM()??D(et).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}prepareExternalUrl(e){return dw(this._baseHref,e)}path(e=!1){const i=this._platformLocation.pathname+ws(this._platformLocation.search),o=this._platformLocation.hash;return o&&e?`${i}${o}`:i}pushState(e,i,o,r){const s=this.prepareExternalUrl(o+ws(r));this._platformLocation.pushState(e,i,s)}replaceState(e,i,o,r){const s=this.prepareExternalUrl(o+ws(r));this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static \u0275fac=function(i){return new(i||t)(ce(pm),ce(SF,8))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Fd=(()=>{class t{_subject=new me;_basePath;_locationStrategy;_urlChangeListeners=[];_urlChangeSubscription=null;constructor(e){this._locationStrategy=e;const i=this._locationStrategy.getBaseHref();this._basePath=function Rte(t){if(new RegExp("^(https?:)?//").test(t)){const[,e]=t.split(/\/\/[^\/]+/);return e}return t}(xF(DF(i))),this._locationStrategy.onPopState(o=>{this._subject.next({url:this.path(!0),pop:!0,state:o.state,type:o.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(e=!1){return this.normalize(this._locationStrategy.path(e))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(e,i=""){return this.path()==this.normalize(e+ws(i))}normalize(e){return t.stripTrailingSlash(function Ate(t,n){if(!t||!n.startsWith(t))return n;const e=n.substring(t.length);return""===e||["/",";","?","#"].includes(e[0])?e:n}(this._basePath,DF(e)))}prepareExternalUrl(e){return e&&"/"!==e[0]&&(e="/"+e),this._locationStrategy.prepareExternalUrl(e)}go(e,i="",o=null){this._locationStrategy.pushState(o,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+ws(i)),o)}replaceState(e,i="",o=null){this._locationStrategy.replaceState(o,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+ws(i)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(e=0){this._locationStrategy.historyGo?.(e)}onUrlChange(e){return this._urlChangeListeners.push(e),this._urlChangeSubscription??=this.subscribe(i=>{this._notifyUrlChangeListeners(i.url,i.state)}),()=>{const i=this._urlChangeListeners.indexOf(e);this._urlChangeListeners.splice(i,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(e="",i){this._urlChangeListeners.forEach(o=>o(e,i))}subscribe(e,i,o){return this._subject.subscribe({next:e,error:i??void 0,complete:o??void 0})}static normalizeQueryParams=ws;static joinWithSlash=dw;static stripTrailingSlash=xF;static \u0275fac=function(i){return new(i||t)(ce(Bl))};static \u0275prov=te({token:t,factory:()=>function Ote(){return new Fd(ce(Bl))}(),providedIn:"root"})}return t})();function DF(t){return t.replace(/\/index.html$/,"")}let Nte=(()=>{class t extends Bl{_platformLocation;_baseHref="";_removeListenerFns=[];constructor(e,i){super(),this._platformLocation=e,null!=i&&(this._baseHref=i)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}path(e=!1){const i=this._platformLocation.hash??"#";return i.length>0?i.substring(1):i}prepareExternalUrl(e){const i=dw(this._baseHref,e);return i.length>0?"#"+i:i}pushState(e,i,o,r){const s=this.prepareExternalUrl(o+ws(r))||this._platformLocation.pathname;this._platformLocation.pushState(e,i,s)}replaceState(e,i,o,r){const s=this.prepareExternalUrl(o+ws(r))||this._platformLocation.pathname;this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static \u0275fac=function(i){return new(i||t)(ce(pm),ce(SF,8))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();var g_=function(t){return t[t.Decimal=0]="Decimal",t[t.Percent=1]="Percent",t[t.Currency=2]="Currency",t[t.Scientific=3]="Scientific",t}(g_||{}),io=function(t){return t[t.Format=0]="Format",t[t.Standalone=1]="Standalone",t}(io||{}),en=function(t){return t[t.Narrow=0]="Narrow",t[t.Abbreviated=1]="Abbreviated",t[t.Wide=2]="Wide",t[t.Short=3]="Short",t}(en||{}),To=function(t){return t[t.Short=0]="Short",t[t.Medium=1]="Medium",t[t.Long=2]="Long",t[t.Full=3]="Full",t}(To||{});function __(t,n){return Ho(to(t)[hn.DateFormat],n)}function b_(t,n){return Ho(to(t)[hn.TimeFormat],n)}function v_(t,n){return Ho(to(t)[hn.DateTimeFormat],n)}function Vo(t,n){const e=to(t),i=e[hn.NumberSymbols][n];if(typeof i>"u"){if(12===n)return e[hn.NumberSymbols][0];if(13===n)return e[hn.NumberSymbols][1]}return i}function TF(t){if(!t[hn.ExtraData])throw new X(2303,!1)}function Ho(t,n){for(let e=n;e>-1;e--)if(typeof t[e]<"u")return t[e];throw new X(2304,!1)}function hw(t){const[n,e]=t.split(":");return{hours:+n,minutes:+e}}const Xte=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,y_={},Zte=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?: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}|c{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]*)/;function EF(t,n,e,i){let o=function sne(t){if(OF(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[o,r=1,s=1]=t.split("-").map(a=>+a);return C_(o,r-1,s)}const e=parseFloat(t);if(!isNaN(t-e))return new Date(e);let i;if(i=t.match(Xte))return function ane(t){const n=new Date(0);let e=0,i=0;const o=t[8]?n.setUTCFullYear:n.setFullYear,r=t[8]?n.setUTCHours:n.setHours;t[9]&&(e=Number(t[9]+t[10]),i=Number(t[9]+t[11])),o.call(n,Number(t[1]),Number(t[2])-1,Number(t[3]));const s=Number(t[4]||0)-e,a=Number(t[5]||0)-i,l=Number(t[6]||0),c=Math.floor(1e3*parseFloat("0."+(t[7]||0)));return r.call(n,s,a,l,c),n}(i)}const n=new Date(t);if(!OF(n))throw new X(2311,!1);return n}(t);n=xs(e,n)||n;let a,s=[];for(;n;){if(a=Zte.exec(n),!a){s.push(n);break}{s=s.concat(a.slice(1));const f=s.pop();if(!f)break;n=f}}let l=o.getTimezoneOffset();i&&(l=IF(i,l),o=function rne(t,n){const o=t.getTimezoneOffset();return function one(t,n){return(t=new Date(t.getTime())).setMinutes(t.getMinutes()+n),t}(t,-1*(IF(n,o)-o))}(o,i));let c="";return s.forEach(f=>{const m=function ine(t){if(pw[t])return pw[t];let n;switch(t){case"G":case"GG":case"GGG":n=rn(3,en.Abbreviated);break;case"GGGG":n=rn(3,en.Wide);break;case"GGGGG":n=rn(3,en.Narrow);break;case"y":n=ei(0,1,0,!1,!0);break;case"yy":n=ei(0,2,0,!0,!0);break;case"yyy":n=ei(0,3,0,!1,!0);break;case"yyyy":n=ei(0,4,0,!1,!0);break;case"Y":n=k_(1);break;case"YY":n=k_(2,!0);break;case"YYY":n=k_(3);break;case"YYYY":n=k_(4);break;case"M":case"L":n=ei(1,1,1);break;case"MM":case"LL":n=ei(1,2,1);break;case"MMM":n=rn(2,en.Abbreviated);break;case"MMMM":n=rn(2,en.Wide);break;case"MMMMM":n=rn(2,en.Narrow);break;case"LLL":n=rn(2,en.Abbreviated,io.Standalone);break;case"LLLL":n=rn(2,en.Wide,io.Standalone);break;case"LLLLL":n=rn(2,en.Narrow,io.Standalone);break;case"w":n=fw(1);break;case"ww":n=fw(2);break;case"W":n=fw(1,!0);break;case"d":n=ei(2,1);break;case"dd":n=ei(2,2);break;case"c":case"cc":n=ei(7,1);break;case"ccc":n=rn(1,en.Abbreviated,io.Standalone);break;case"cccc":n=rn(1,en.Wide,io.Standalone);break;case"ccccc":n=rn(1,en.Narrow,io.Standalone);break;case"cccccc":n=rn(1,en.Short,io.Standalone);break;case"E":case"EE":case"EEE":n=rn(1,en.Abbreviated);break;case"EEEE":n=rn(1,en.Wide);break;case"EEEEE":n=rn(1,en.Narrow);break;case"EEEEEE":n=rn(1,en.Short);break;case"a":case"aa":case"aaa":n=rn(0,en.Abbreviated);break;case"aaaa":n=rn(0,en.Wide);break;case"aaaaa":n=rn(0,en.Narrow);break;case"b":case"bb":case"bbb":n=rn(0,en.Abbreviated,io.Standalone,!0);break;case"bbbb":n=rn(0,en.Wide,io.Standalone,!0);break;case"bbbbb":n=rn(0,en.Narrow,io.Standalone,!0);break;case"B":case"BB":case"BBB":n=rn(0,en.Abbreviated,io.Format,!0);break;case"BBBB":n=rn(0,en.Wide,io.Format,!0);break;case"BBBBB":n=rn(0,en.Narrow,io.Format,!0);break;case"h":n=ei(3,1,-12);break;case"hh":n=ei(3,2,-12);break;case"H":n=ei(3,1);break;case"HH":n=ei(3,2);break;case"m":n=ei(4,1);break;case"mm":n=ei(4,2);break;case"s":n=ei(5,1);break;case"ss":n=ei(5,2);break;case"S":n=ei(6,1);break;case"SS":n=ei(6,2);break;case"SSS":n=ei(6,3);break;case"Z":case"ZZ":case"ZZZ":n=x_(0);break;case"ZZZZZ":n=x_(3);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":n=x_(1);break;case"OOOO":case"ZZZZ":case"zzzz":n=x_(2);break;default:return null}return pw[t]=n,n}(f);c+=m?m(o,e,l):"''"===f?"'":f.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),c}function C_(t,n,e){const i=new Date(0);return i.setFullYear(t,n,e),i.setHours(0,0,0),i}function xs(t,n){const e=function Bte(t){return to(t)[hn.LocaleId]}(t);if(y_[e]??={},y_[e][n])return y_[e][n];let i="";switch(n){case"shortDate":i=__(t,To.Short);break;case"mediumDate":i=__(t,To.Medium);break;case"longDate":i=__(t,To.Long);break;case"fullDate":i=__(t,To.Full);break;case"shortTime":i=b_(t,To.Short);break;case"mediumTime":i=b_(t,To.Medium);break;case"longTime":i=b_(t,To.Long);break;case"fullTime":i=b_(t,To.Full);break;case"short":const o=xs(t,"shortTime"),r=xs(t,"shortDate");i=w_(v_(t,To.Short),[o,r]);break;case"medium":const s=xs(t,"mediumTime"),a=xs(t,"mediumDate");i=w_(v_(t,To.Medium),[s,a]);break;case"long":const l=xs(t,"longTime"),c=xs(t,"longDate");i=w_(v_(t,To.Long),[l,c]);break;case"full":const f=xs(t,"fullTime"),m=xs(t,"fullDate");i=w_(v_(t,To.Full),[f,m])}return i&&(y_[e][n]=i),i}function w_(t,n){return n&&(t=t.replace(/\{([^}]+)}/g,function(e,i){return null!=n&&i in n?n[i]:e})),t}function fr(t,n,e="-",i,o){let r="";(t<0||o&&t<=0)&&(o?t=1-t:(t=-t,r=e));let s=String(t);for(;s.length0||a>-e)&&(a+=e),3===t)0===a&&-12===e&&(a=12);else if(6===t)return function Qte(t,n){return fr(t,3).substring(0,n)}(a,n);const l=Vo(s,5);return fr(a,n,l,i,o)}}function rn(t,n,e=io.Format,i=!1){return function(o,r){return function ene(t,n,e,i,o,r){switch(e){case 2:return function jte(t,n,e){const i=to(t),r=Ho([i[hn.MonthsFormat],i[hn.MonthsStandalone]],n);return Ho(r,e)}(n,o,i)[t.getMonth()];case 1:return function Hte(t,n,e){const i=to(t),r=Ho([i[hn.DaysFormat],i[hn.DaysStandalone]],n);return Ho(r,e)}(n,o,i)[t.getDay()];case 0:const s=t.getHours(),a=t.getMinutes();if(r){const c=function Wte(t){const n=to(t);return TF(n),(n[hn.ExtraData][2]||[]).map(i=>"string"==typeof i?hw(i):[hw(i[0]),hw(i[1])])}(n),f=function Gte(t,n,e){const i=to(t);TF(i);const r=Ho([i[hn.ExtraData][0],i[hn.ExtraData][1]],n)||[];return Ho(r,e)||[]}(n,o,i),m=c.findIndex(g=>{if(Array.isArray(g)){const[_,w]=g,k=s>=_.hours&&a>=_.minutes,T=s0?Math.floor(o/60):Math.ceil(o/60);switch(t){case 0:return(o>=0?"+":"")+fr(s,2,r)+fr(Math.abs(o%60),2,r);case 1:return"GMT"+(o>=0?"+":"")+fr(s,1,r);case 2:return"GMT"+(o>=0?"+":"")+fr(s,2,r)+":"+fr(Math.abs(o%60),2,r);case 3:return 0===i?"Z":(o>=0?"+":"")+fr(s,2,r)+":"+fr(Math.abs(o%60),2,r);default:throw new X(2310,!1)}}}function PF(t){const n=t.getDay(),e=0===n?-3:4-n;return C_(t.getFullYear(),t.getMonth(),t.getDate()+e)}function fw(t,n=!1){return function(e,i){let o;if(n){const r=new Date(e.getFullYear(),e.getMonth(),1).getDay()-1,s=e.getDate();o=1+Math.floor((s+r)/7)}else{const r=PF(e),s=function nne(t){const n=C_(t,0,1).getDay();return C_(t,0,1+(n<=4?4:11)-n)}(r.getFullYear()),a=r.getTime()-s.getTime();o=1+Math.round(a/6048e5)}return fr(o,t,Vo(i,5))}}function k_(t,n=!1){return function(e,i){return fr(PF(e).getFullYear(),t,Vo(i,5),n)}}const pw={};function IF(t,n){t=t.replace(/:/g,"");const e=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(e)?n:e}function OF(t){return t instanceof Date&&!isNaN(t.valueOf())}const lne=/^(\d+)?\.((\d+)(-(\d+))?)?$/;function bw(t){const n=parseInt(t);if(isNaN(n))throw new X(2305,!1);return n}const yw=/\s+/,NF=[];let $t=(()=>{class t{_ngEl;_renderer;initialClasses=NF;rawClass;stateMap=new Map;constructor(e,i){this._ngEl=e,this._renderer=i}set klass(e){this.initialClasses=null!=e?e.trim().split(yw):NF}set ngClass(e){this.rawClass="string"==typeof e?e.trim().split(yw):e}ngDoCheck(){for(const i of this.initialClasses)this._updateState(i,!0);const e=this.rawClass;if(Array.isArray(e)||e instanceof Set)for(const i of e)this._updateState(i,!0);else if(null!=e)for(const i of Object.keys(e))this._updateState(i,!!e[i]);this._applyStateDiff()}_updateState(e,i){const o=this.stateMap.get(e);void 0!==o?(o.enabled!==i&&(o.changed=!0,o.enabled=i),o.touched=!0):this.stateMap.set(e,{enabled:i,changed:!0,touched:!0})}_applyStateDiff(){for(const e of this.stateMap){const i=e[0],o=e[1];o.changed?(this._toggleClass(i,o.enabled),o.changed=!1):o.touched||(o.enabled&&this._toggleClass(i,!1),this.stateMap.delete(i)),o.touched=!1}}_toggleClass(e,i){(e=e.trim()).length>0&&e.split(yw).forEach(o=>{i?this._renderer.addClass(this._ngEl.nativeElement,o):this._renderer.removeClass(this._ngEl.nativeElement,o)})}static \u0275fac=function(i){return new(i||t)(O(Re),O(Qn))};static \u0275dir=de({type:t,selectors:[["","ngClass",""]],inputs:{klass:[0,"class","klass"],ngClass:"ngClass"}})}return t})();class Cne{$implicit;ngForOf;index;count;constructor(n,e,i,o){this.$implicit=n,this.ngForOf=e,this.index=i,this.count=o}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 LF=(()=>{class t{_viewContainer;_template;_differs;set ngForOf(e){this._ngForOf=e,this._ngForOfDirty=!0}set ngForTrackBy(e){this._trackByFn=e}get ngForTrackBy(){return this._trackByFn}_ngForOf=null;_ngForOfDirty=!0;_differ=null;_trackByFn;constructor(e,i,o){this._viewContainer=e,this._template=i,this._differs=o}set ngForTemplate(e){e&&(this._template=e)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const e=this._ngForOf;!this._differ&&e&&(this._differ=this._differs.find(e).create(this.ngForTrackBy))}if(this._differ){const e=this._differ.diff(this._ngForOf);e&&this._applyChanges(e)}}_applyChanges(e){const i=this._viewContainer;e.forEachOperation((o,r,s)=>{if(null==o.previousIndex)i.createEmbeddedView(this._template,new Cne(o.item,this._ngForOf,-1,-1),null===s?void 0:s);else if(null==s)i.remove(null===r?void 0:r);else if(null!==r){const a=i.get(r);i.move(a,s),BF(a,o)}});for(let o=0,r=i.length;o{BF(i.get(o.currentIndex),o)})}static ngTemplateContextGuard(e,i){return!0}static \u0275fac=function(i){return new(i||t)(O(Ei),O(Ti),O(h_))};static \u0275dir=de({type:t,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"}})}return t})();function BF(t,n){t.context.$implicit=n.item}let tf=(()=>{class t{_viewContainer;_context=new wne;_thenTemplateRef=null;_elseTemplateRef=null;_thenViewRef=null;_elseViewRef=null;constructor(e,i){this._viewContainer=e,this._thenTemplateRef=i}set ngIf(e){this._context.$implicit=this._context.ngIf=e,this._updateView()}set ngIfThen(e){VF(e),this._thenTemplateRef=e,this._thenViewRef=null,this._updateView()}set ngIfElse(e){VF(e),this._elseTemplateRef=e,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 ngIfUseIfTypeGuard;static ngTemplateGuard_ngIf;static ngTemplateContextGuard(e,i){return!0}static \u0275fac=function(i){return new(i||t)(O(Ei),O(Ti))};static \u0275dir=de({type:t,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"}})}return t})();class wne{$implicit=null;ngIf=null}function VF(t,n){if(t&&!t.createEmbeddedView)throw new X(2020,!1)}let Ld=(()=>{class t{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;injector=D(He);constructor(e){this._viewContainerRef=e}ngOnChanges(e){if(this._shouldRecreateView(e)){const i=this._viewContainerRef;if(this._viewRef&&i.remove(i.indexOf(this._viewRef)),!this.ngTemplateOutlet)return void(this._viewRef=null);const o=this._createContextForwardProxy();this._viewRef=i.createEmbeddedView(this.ngTemplateOutlet,o,{injector:this._getInjector()})}}_getInjector(){return"outlet"===this.ngTemplateOutletInjector?this.injector:this.ngTemplateOutletInjector??void 0}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,i,o)=>!!this.ngTemplateOutletContext&&Reflect.set(this.ngTemplateOutletContext,i,o),get:(e,i,o)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,i,o)}})}static \u0275fac=function(i){return new(i||t)(O(Ei))};static \u0275dir=de({type:t,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},features:[_i]})}return t})();function Ss(t,n){return new X(2100,!1)}const Lne=new Z(""),Bne=new Z("");let fa=(()=>{class t{locale;defaultTimezone;defaultOptions;constructor(e,i,o){this.locale=e,this.defaultTimezone=i,this.defaultOptions=o}transform(e,i,o,r){if(null==e||""===e||e!=e)return null;try{return EF(e,i??this.defaultOptions?.dateFormat??"mediumDate",r||this.locale,o??this.defaultOptions?.timezone??this.defaultTimezone??void 0)}catch(s){throw Ss()}}static \u0275fac=function(i){return new(i||t)(O(ua,16),O(Lne,24),O(Bne,24))};static \u0275pipe=Hi({name:"date",type:t,pure:!0})}return t})(),Vl=(()=>{class t{_locale;constructor(e){this._locale=e}transform(e,i,o){if(!function Sw(t){return!(null==t||""===t||t!=t)}(e))return null;o||=this._locale;try{return function pne(t,n,e){return function gw(t,n,e,i,o,r,s=!1){let a="",l=!1;if(isFinite(t)){let c=function gne(t){let i,o,r,s,a,n=Math.abs(t)+"",e=0;for((o=n.indexOf("."))>-1&&(n=n.replace(".","")),(r=n.search(/e/i))>0?(o<0&&(o=r),o+=+n.slice(r+1),n=n.substring(0,r)):o<0&&(o=n.length),r=0;"0"===n.charAt(r);r++);if(r===(a=n.length))i=[0],o=1;else{for(a--;"0"===n.charAt(a);)a--;for(o-=r,i=[],s=0;r<=a;r++,s++)i[s]=Number(n.charAt(r))}return o>22&&(i=i.splice(0,21),e=o-1,o=1),{digits:i,exponent:e,integerLen:o}}(t);s&&(c=function mne(t){if(0===t.digits[0])return t;const n=t.digits.length-t.integerLen;return t.exponent?t.exponent+=2:(0===n?t.digits.push(0,0):1===n&&t.digits.push(0),t.integerLen+=2),t}(c));let f=n.minInt,m=n.minFrac,g=n.maxFrac;if(r){const R=r.match(lne);if(null===R)throw new X(2306,!1);const W=R[1],Y=R[3],K=R[5];null!=W&&(f=bw(W)),null!=Y&&(m=bw(Y)),null!=K?g=bw(K):null!=Y&&m>g&&(g=m)}!function _ne(t,n,e){if(n>e)throw new X(2307,!1);let i=t.digits,o=i.length-t.integerLen;const r=Math.min(Math.max(n,o),e);let s=r+t.integerLen,a=i[s];if(s>0){i.splice(Math.max(t.integerLen,s));for(let m=s;m=5)if(s-1<0){for(let m=0;m>s;m--)i.unshift(0),t.integerLen++;i.unshift(1),t.integerLen++}else i[s-1]++;for(;o=c?w.pop():l=!1),g>=10?1:0},0);f&&(i.unshift(f),t.integerLen++)}(c,m,g);let _=c.digits,w=c.integerLen;const k=c.exponent;let T=[];for(l=_.every(R=>!R);w0?T=_.splice(w,_.length):(T=_,_=[0]);const I=[];for(_.length>=n.lgSize&&I.unshift(_.splice(-n.lgSize,_.length).join(""));_.length>n.gSize;)I.unshift(_.splice(-n.gSize,_.length).join(""));_.length&&I.unshift(_.join("")),a=I.join(Vo(e,i)),T.length&&(a+=Vo(e,o)+T.join("")),k&&(a+=Vo(e,6)+"+"+k)}else a=Vo(e,9);return a=t<0&&!l?n.negPre+a+n.negSuf:n.posPre+a+n.posSuf,a}(t,function _w(t,n="-"){const e={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},i=t.split(";"),o=i[0],r=i[1],s=-1!==o.indexOf(".")?o.split("."):[o.substring(0,o.lastIndexOf("0")+1),o.substring(o.lastIndexOf("0")+1)],a=s[0],l=s[1]||"";e.posPre=a.substring(0,a.indexOf("#"));for(let f=0;f{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();class UF{_doc;constructor(n){this._doc=n}manager}let Dw=(()=>{class t extends UF{constructor(e){super(e)}supports(e){return!0}addEventListener(e,i,o,r){return e.addEventListener(i,o,r),()=>this.removeEventListener(e,i,o,r)}removeEventListener(e,i,o,r){return e.removeEventListener(i,o,r)}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const Mw=new Z("");let zF=(()=>{class t{_zone;_plugins;_eventNameToPlugin=new Map;constructor(e,i){this._zone=i,e.forEach(s=>{s.manager=this});const o=e.filter(s=>!(s instanceof Dw));this._plugins=o.slice().reverse();const r=e.find(s=>s instanceof Dw);r&&this._plugins.push(r)}addEventListener(e,i,o,r){return this._findPluginFor(i).addEventListener(e,i,o,r)}getZone(){return this._zone}_findPluginFor(e){let i=this._eventNameToPlugin.get(e);if(i)return i;if(i=this._plugins.find(r=>r.supports(e)),!i)throw new X(5101,!1);return this._eventNameToPlugin.set(e,i),i}static \u0275fac=function(i){return new(i||t)(ce(Mw),ce(_e))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const Tw="ng-app-id";function $F(t){for(const n of t)n.remove()}function WF(t,n){const e=n.createElement("style");return e.textContent=t,e}function Ew(t,n){const e=n.createElement("link");return e.setAttribute("rel","stylesheet"),e.setAttribute("href",t),e}let GF=(()=>{class t{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(e,i,o,r={}){this.doc=e,this.appId=i,this.nonce=o,function Kne(t,n,e,i){const o=t.head?.querySelectorAll(`style[${Tw}="${n}"],link[${Tw}="${n}"]`);if(o)for(const r of o)r.removeAttribute(Tw),r instanceof HTMLLinkElement?i.set(r.href.slice(r.href.lastIndexOf("/")+1),{usage:0,elements:[r]}):r.textContent&&e.set(r.textContent,{usage:0,elements:[r]})}(e,i,this.inline,this.external),this.hosts.add(e.head)}addStyles(e,i){for(const o of e)this.addUsage(o,this.inline,WF);i?.forEach(o=>this.addUsage(o,this.external,Ew))}removeStyles(e,i){for(const o of e)this.removeUsage(o,this.inline);i?.forEach(o=>this.removeUsage(o,this.external))}addUsage(e,i,o){const r=i.get(e);r?r.usage++:i.set(e,{usage:1,elements:[...this.hosts].map(s=>this.addElement(s,o(e,this.doc)))})}removeUsage(e,i){const o=i.get(e);o&&(o.usage--,o.usage<=0&&($F(o.elements),i.delete(e)))}ngOnDestroy(){for(const[,{elements:e}]of[...this.inline,...this.external])$F(e);this.hosts.clear()}addHost(e){this.hosts.add(e);for(const[i,{elements:o}]of this.inline)o.push(this.addElement(e,WF(i,this.doc)));for(const[i,{elements:o}]of this.external)o.push(this.addElement(e,Ew(i,this.doc)))}removeHost(e){this.hosts.delete(e)}addElement(e,i){return this.nonce&&i.setAttribute("nonce",this.nonce),e.appendChild(i)}static \u0275fac=function(i){return new(i||t)(ce(et),ce(Js),ce(xC,8),ce(wC))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const Pw={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/",math:"http://www.w3.org/1998/Math/MathML"},Iw=/%COMP%/g,eie=new Z("",{factory:()=>!0});function KF(t,n){return n.map(e=>e.replace(Iw,t))}let Ow=(()=>{class t{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;constructor(e,i,o,r,s,a,l=null,c=null){this.eventManager=e,this.sharedStylesHost=i,this.appId=o,this.removeStylesOnCompDestroy=r,this.doc=s,this.ngZone=a,this.nonce=l,this.tracingService=c,this.defaultRenderer=new Aw(e,s,a,this.tracingService)}createRenderer(e,i){if(!e||!i)return this.defaultRenderer;const o=this.getOrCreateRenderer(e,i);return o instanceof ZF?o.applyToHost(e):o instanceof Rw&&o.applyStyles(),o}getOrCreateRenderer(e,i){const o=this.rendererByCompId;let r=o.get(i.id);if(!r){const s=this.doc,a=this.ngZone,l=this.eventManager,c=this.sharedStylesHost,f=this.removeStylesOnCompDestroy,m=this.tracingService;switch(i.encapsulation){case No.Emulated:r=new ZF(l,c,i,this.appId,f,s,a,m);break;case No.ShadowDom:return new XF(l,e,i,s,a,this.nonce,m,c);case No.ExperimentalIsolatedShadowDom:return new XF(l,e,i,s,a,this.nonce,m);default:r=new Rw(l,c,i,f,s,a,m)}o.set(i.id,r)}return r}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(e){this.rendererByCompId.delete(e)}static \u0275fac=function(i){return new(i||t)(ce(zF),ce(GF),ce(Js),ce(eie),ce(et),ce(_e),ce(xC),ce(oa,8))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class Aw{eventManager;doc;ngZone;tracingService;data=Object.create(null);throwOnSyntheticProps=!0;constructor(n,e,i,o){this.eventManager=n,this.doc=e,this.ngZone=i,this.tracingService=o}destroy(){}destroyNode=null;createElement(n,e){return e?this.doc.createElementNS(Pw[e]||e,n):this.doc.createElement(n)}createComment(n){return this.doc.createComment(n)}createText(n){return this.doc.createTextNode(n)}appendChild(n,e){(YF(n)?n.content:n).appendChild(e)}insertBefore(n,e,i){n&&(YF(n)?n.content:n).insertBefore(e,i)}removeChild(n,e){e.remove()}selectRootElement(n,e){let i="string"==typeof n?this.doc.querySelector(n):n;if(!i)throw new X(-5104,!1);return e||(i.textContent=""),i}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,e,i,o){if(o){e=o+":"+e;const r=Pw[o];r?n.setAttributeNS(r,e,i):n.setAttribute(e,i)}else n.setAttribute(e,i)}removeAttribute(n,e,i){if(i){const o=Pw[i];o?n.removeAttributeNS(o,e):n.removeAttribute(`${i}:${e}`)}else n.removeAttribute(e)}addClass(n,e){n.classList.add(e)}removeClass(n,e){n.classList.remove(e)}setStyle(n,e,i,o){o&(ia.DashCase|ia.Important)?n.style.setProperty(e,i,o&ia.Important?"important":""):n.style[e]=i}removeStyle(n,e,i){i&ia.DashCase?n.style.removeProperty(e):n.style[e]=""}setProperty(n,e,i){null!=n&&(n[e]=i)}setValue(n,e){n.nodeValue=e}listen(n,e,i,o){if("string"==typeof n&&!(n=Xs().getGlobalEventTarget(this.doc,n)))throw new X(5102,!1);let r=this.decoratePreventDefault(i);return this.tracingService?.wrapEventListener&&(r=this.tracingService.wrapEventListener(n,e,r)),this.eventManager.addEventListener(n,e,r,o)}decoratePreventDefault(n){return e=>{if("__ngUnwrap__"===e)return n;!1===n(e)&&e.preventDefault()}}}function YF(t){return"TEMPLATE"===t.tagName&&void 0!==t.content}class XF extends Aw{hostEl;sharedStylesHost;shadowRoot;constructor(n,e,i,o,r,s,a,l){super(n,o,r,a),this.hostEl=e,this.sharedStylesHost=l,this.shadowRoot=e.attachShadow({mode:"open"}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let c=i.styles;c=KF(i.id,c);for(const m of c){const g=document.createElement("style");s&&g.setAttribute("nonce",s),g.textContent=m,this.shadowRoot.appendChild(g)}const f=i.getExternalStyles?.();if(f)for(const m of f){const g=Ew(m,o);s&&g.setAttribute("nonce",s),this.shadowRoot.appendChild(g)}}nodeOrShadowRoot(n){return n===this.hostEl?this.shadowRoot:n}appendChild(n,e){return super.appendChild(this.nodeOrShadowRoot(n),e)}insertBefore(n,e,i){return super.insertBefore(this.nodeOrShadowRoot(n),e,i)}removeChild(n,e){return super.removeChild(null,e)}parentNode(n){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(n)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}}class Rw extends Aw{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(n,e,i,o,r,s,a,l){super(n,r,s,a),this.sharedStylesHost=e,this.removeStylesOnCompDestroy=o;let c=i.styles;this.styles=l?KF(l,c):c,this.styleUrls=i.getExternalStyles?.(l)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&0===bl.size&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}}class ZF extends Rw{contentAttr;hostAttr;constructor(n,e,i,o,r,s,a,l){const c=o+"-"+i.id;super(n,e,i,r,s,a,l,c),this.contentAttr=function tie(t){return"_ngcontent-%COMP%".replace(Iw,t)}(c),this.hostAttr=function nie(t){return"_nghost-%COMP%".replace(Iw,t)}(c)}applyToHost(n){this.applyStyles(),this.setAttribute(n,this.hostAttr,"")}createElement(n,e){const i=super.createElement(n,e);return super.setAttribute(i,this.contentAttr,""),i}}class Nw extends gU{supportsDOMEvents=!0;static makeCurrent(){!function mU(t){qM??=t}(new Nw)}onAndCancel(n,e,i,o){return n.addEventListener(e,i,o),()=>{n.removeEventListener(e,i,o)}}dispatchEvent(n,e){n.dispatchEvent(e)}remove(n){n.remove()}createElement(n,e){return(e=e||this.getDefaultDocument()).createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,e){return"window"===e?window:"document"===e?n:"body"===e?n.body:null}getBaseHref(n){const e=function rie(){return nf=nf||document.head.querySelector("base"),nf?nf.getAttribute("href"):null}();return null==e?null:function sie(t){return new URL(t,document.baseURI).pathname}(e)}resetBaseElement(){nf=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return KM(document.cookie,n)}}let nf=null,lie=(()=>{class t{build(){return new XMLHttpRequest}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const JF=["alt","control","meta","shift"],cie={"\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"},die={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey};let uie=(()=>{class t extends UF{constructor(e){super(e)}supports(e){return null!=t.parseEventName(e)}addEventListener(e,i,o,r){const s=t.parseEventName(i),a=t.eventCallback(s.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Xs().onAndCancel(e,s.domEventName,a,r))}static parseEventName(e){const i=e.toLowerCase().split("."),o=i.shift();if(0===i.length||"keydown"!==o&&"keyup"!==o)return null;const r=t._normalizeKey(i.pop());let s="",a=i.indexOf("code");if(a>-1&&(i.splice(a,1),s="code."),JF.forEach(c=>{const f=i.indexOf(c);f>-1&&(i.splice(f,1),s+=c+".")}),s+=r,0!=i.length||0===r.length)return null;const l={};return l.domEventName=o,l.fullKey=s,l}static matchEventFullKeyCode(e,i){let o=cie[e.key]||e.key,r="";return i.indexOf("code.")>-1&&(o=e.code,r="code."),!(null==o||!o)&&(o=o.toLowerCase()," "===o?o="space":"."===o&&(o="dot"),JF.forEach(s=>{s!==o&&(0,die[s])(e)&&(r+=s+".")}),r+=o,r===i)}static eventCallback(e,i,o){return r=>{t.matchEventFullKeyCode(r,e)&&o.runGuarded(()=>i(r))}}static _normalizeKey(e){return"esc"===e?"escape":e}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const mie=WR(qee,"browser",[{provide:wC,useValue:XM},{provide:u2,useValue:function hie(){Nw.makeCurrent()},multi:!0},{provide:et,useFactory:function pie(){return function A7(t){CC=t}(document),document}}]),nN=[{provide:ZI,useClass:class aie{addToWindow(n){Fn.getAngularTestability=(i,o=!0)=>{const r=n.findTestabilityInTree(i,o);if(null==r)throw new X(5103,!1);return r},Fn.getAllAngularTestabilities=()=>n.getAllTestabilities(),Fn.getAllAngularRootElements=()=>n.getAllRootElements(),Fn.frameworkStabilizers||(Fn.frameworkStabilizers=[]),Fn.frameworkStabilizers.push(i=>{const o=Fn.getAllAngularTestabilities();let r=o.length;const s=function(){r--,0==r&&i()};o.forEach(a=>{a.whenStable(s)})})}findTestabilityInTree(n,e,i){return null==e?null:n.getTestability(e)??(i?Xs().isShadowRoot(e)?this.findTestabilityInTree(n,e.host,!0):this.findTestabilityInTree(n,e.parentElement,!0):null)}}},{provide:XI,useClass:f0},{provide:f0,useClass:f0}],iN=[{provide:My,useValue:"root"},{provide:sl,useFactory:function fie(){return new sl}},{provide:Mw,useClass:Dw,multi:!0},{provide:Mw,useClass:uie,multi:!0},Ow,GF,zF,{provide:Lo,useExisting:Ow},{provide:YM,useClass:lie},[]];let oN=(()=>{class t{constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[...iN,...nN],imports:[qne,Kee]})}return t})();var Le=function(t){return t[t.State=0]="State",t[t.Transition=1]="Transition",t[t.Sequence=2]="Sequence",t[t.Group=3]="Group",t[t.Animate=4]="Animate",t[t.Keyframes=5]="Keyframes",t[t.Style=6]="Style",t[t.Trigger=7]="Trigger",t[t.Reference=8]="Reference",t[t.AnimateChild=9]="AnimateChild",t[t.AnimateRef=10]="AnimateRef",t[t.Query=11]="Query",t[t.Stagger=12]="Stagger",t}(Le||{});const ks="*";function rN(t){return{type:Le.Style,styles:t,offset:null}}class of{_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_originalOnDoneFns=[];_originalOnStartFns=[];_started=!1;_destroyed=!1;_finished=!1;_position=0;parentPlayer=null;totalTime;constructor(n=0,e=0){this.totalTime=n+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(n=>n()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(n){this._position=this.totalTime?n*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(n){const e="start"==n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}class sN{_onDoneFns=[];_onStartFns=[];_finished=!1;_started=!1;_destroyed=!1;_onDestroyFns=[];parentPlayer=null;totalTime=0;players;constructor(n){this.players=n;let e=0,i=0,o=0;const r=this.players.length;0==r?queueMicrotask(()=>this._onFinish()):this.players.forEach(s=>{s.onDone(()=>{++e==r&&this._onFinish()}),s.onDestroy(()=>{++i==r&&this._onDestroy()}),s.onStart(()=>{++o==r&&this._onStart()})}),this.totalTime=this.players.reduce((s,a)=>Math.max(s,a.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this.players.forEach(n=>n.init())}onStart(n){this._onStartFns.push(n)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(n=>n()),this._onStartFns=[])}onDone(n){this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(n=>n.play())}pause(){this.players.forEach(n=>n.pause())}restart(){this.players.forEach(n=>n.restart())}finish(){this._onFinish(),this.players.forEach(n=>n.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(n=>n.destroy()),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this.players.forEach(n=>n.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(n){const e=n*this.totalTime;this.players.forEach(i=>{const o=i.totalTime?Math.min(1,e/i.totalTime):1;i.setPosition(o)})}getPosition(){const n=this.players.reduce((e,i)=>null===e||i.totalTime>e.totalTime?i:e,null);return null!=n?n.getPosition():0}beforeDestroy(){this.players.forEach(n=>{n.beforeDestroy&&n.beforeDestroy()})}triggerCallback(n){const e="start"==n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}function lN(t){return new X(3e3,!1)}function Die(t){return new X(3002,!1)}function pa(t){switch(t.length){case 0:return new of;case 1:return t[0];default:return new sN(t)}}function cN(t,n,e=new Map,i=new Map){const o=[],r=[];let s=-1,a=null;if(n.forEach(l=>{const c=l.get("offset"),f=c==s,m=f&&a||new Map;l.forEach((g,_)=>{let w=_,k=g;if("offset"!==_)switch(w=t.normalizePropertyName(w,o),k){case"!":k=e.get(_);break;case ks:k=i.get(_);break;default:k=t.normalizeStyleValue(_,w,k,o)}m.set(w,k)}),f||r.push(m),a=m,s=c}),o.length)throw function Lie(){return new X(3502,!1)}();return r}function jw(t,n,e,i){switch(n){case"start":t.onStart(()=>i(e&&Uw(e,"start",t)));break;case"done":t.onDone(()=>i(e&&Uw(e,"done",t)));break;case"destroy":t.onDestroy(()=>i(e&&Uw(e,"destroy",t)))}}function Uw(t,n,e){const r=zw(t.element,t.triggerName,t.fromState,t.toState,n||t.phaseName,e.totalTime??t.totalTime,!!e.disabled),s=t._data;return null!=s&&(r._data=s),r}function zw(t,n,e,i,o="",r=0,s){return{element:t,triggerName:n,fromState:e,toState:i,phaseName:o,totalTime:r,disabled:!!s}}function Eo(t,n,e){let i=t.get(n);return i||t.set(n,i=e),i}function dN(t){const n=t.indexOf(":");return[t.substring(1,n),t.slice(n+1)]}const Yie=typeof document>"u"?null:document.documentElement;function $w(t){const n=t.parentNode||t.host||null;return n===Yie?null:n}let Hl=null,uN=!1;function hN(t,n){for(;n;){if(n===t)return!0;n=$w(n)}return!1}function fN(t,n,e){if(e)return Array.from(t.querySelectorAll(n));const i=t.querySelector(n);return i?[i]:[]}const mN="ng-enter",Ww="ng-leave",M_="ng-trigger",T_=".ng-trigger",gN="ng-animating",Gw=".ng-animating";function Ds(t){if("number"==typeof t)return t;const n=t.match(/^(-?[\.\d]+)(m?s)/);return!n||n.length<2?0:qw(parseFloat(n[1]),n[2])}function qw(t,n){return"s"===n?1e3*t:t}function E_(t,n,e){return t.hasOwnProperty("duration")?t:function noe(t,n,e){let i,o=0,r="";if("string"==typeof t){const s=t.match(toe);if(null===s)return n.push(lN()),{duration:0,delay:0,easing:""};i=qw(parseFloat(s[1]),s[2]);const a=s[3];null!=a&&(o=qw(parseFloat(a),s[4]));const l=s[5];l&&(r=l)}else i=t;if(!e){let s=!1,a=n.length;i<0&&(n.push(function _ie(){return new X(3100,!1)}()),s=!0),o<0&&(n.push(function bie(){return new X(3101,!1)}()),s=!0),s&&n.splice(a,0,lN())}return{duration:i,delay:o,easing:r}}(t,n,e)}const toe=/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i;function Hr(t,n,e){n.forEach((i,o)=>{const r=Yw(o);e&&!e.has(o)&&e.set(o,t.style[r]),t.style[r]=i})}function jl(t,n){n.forEach((e,i)=>{const o=Yw(i);t.style[o]=""})}function rf(t){return Array.isArray(t)?1==t.length?t[0]:function gie(t,n=null){return{type:Le.Sequence,steps:t,options:n}}(t):t}const Kw=new RegExp("{{\\s*(.+?)\\s*}}","g");function _N(t){let n=[];if("string"==typeof t){let e;for(;e=Kw.exec(t);)n.push(e[1]);Kw.lastIndex=0}return n}function sf(t,n,e){const i=`${t}`,o=i.replace(Kw,(r,s)=>{let a=n[s];return null==a&&(e.push(function yie(){return new X(3003,!1)}()),a=""),a.toString()});return o==i?t:o}const roe=/-+([a-z0-9])/g;function Yw(t){return t.replace(roe,(...n)=>n[1].toUpperCase())}function Po(t,n,e){switch(n.type){case Le.Trigger:return t.visitTrigger(n,e);case Le.State:return t.visitState(n,e);case Le.Transition:return t.visitTransition(n,e);case Le.Sequence:return t.visitSequence(n,e);case Le.Group:return t.visitGroup(n,e);case Le.Animate:return t.visitAnimate(n,e);case Le.Keyframes:return t.visitKeyframes(n,e);case Le.Style:return t.visitStyle(n,e);case Le.Reference:return t.visitReference(n,e);case Le.AnimateChild:return t.visitAnimateChild(n,e);case Le.AnimateRef:return t.visitAnimateRef(n,e);case Le.Query:return t.visitQuery(n,e);case Le.Stagger:return t.visitStagger(n,e);default:throw function Cie(){return new X(3004,!1)}()}}function Xw(t,n){return window.getComputedStyle(t)[n]}let Zw=(()=>{class t{validateStyleProperty(e){return function Zie(t){Hl||(Hl=function Qie(){return typeof document<"u"?document.body:null}()||{},uN=!!Hl.style&&"WebkitAppearance"in Hl.style);let n=!0;return Hl.style&&!function Xie(t){return"ebkit"==t.substring(1,6)}(t)&&(n=t in Hl.style,!n&&uN&&(n="Webkit"+t.charAt(0).toUpperCase()+t.slice(1)in Hl.style)),n}(e)}containsElement(e,i){return hN(e,i)}getParentElement(e){return $w(e)}query(e,i,o){return fN(e,i,o)}computeStyle(e,i,o){return o||""}animate(e,i,o,r,s,a=[],l){return new of(o,r)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class Qw{static NOOP=new Zw}class Jw{}const foe=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]);class vN extends Jw{normalizePropertyName(n,e){return Yw(n)}normalizeStyleValue(n,e,i,o){let r="";const s=i.toString().trim();if(foe.has(e)&&0!==i&&"0"!==i)if("number"==typeof i)r="px";else{const a=i.match(/^[+-]?[\d\.]+([a-z]*)$/);a&&0==a[1].length&&o.push(function wie(){return new X(3005,!1)}())}return s+r}}const I_=new Set(["true","1"]),O_=new Set(["false","0"]);function yN(t,n){const e=I_.has(t)||O_.has(t),i=I_.has(n)||O_.has(n);return(o,r)=>{let s="*"==t||t==o,a="*"==n||n==r;return!s&&e&&"boolean"==typeof o&&(s=o?I_.has(t):O_.has(t)),!a&&i&&"boolean"==typeof r&&(a=r?I_.has(n):O_.has(n)),s&&a}}const _oe=new RegExp("s*:selfs*,?","g");function tx(t,n,e,i){return new boe(t).build(n,e,i)}class boe{_driver;constructor(n){this._driver=n}build(n,e,i){const o=new Coe(e);return this._resetContextStyleTimingState(o),Po(this,rf(n),o)}_resetContextStyleTimingState(n){n.currentQuerySelector="",n.collectedStyles=new Map,n.collectedStyles.set("",new Map),n.currentTime=0}visitTrigger(n,e){let i=e.queryCount=0,o=e.depCount=0;const r=[],s=[];return"@"==n.name.charAt(0)&&e.errors.push(function xie(){return new X(3006,!1)}()),n.definitions.forEach(a=>{if(this._resetContextStyleTimingState(e),a.type==Le.State){const l=a,c=l.name;c.toString().split(/\s*,\s*/).forEach(f=>{l.name=f,r.push(this.visitState(l,e))}),l.name=c}else if(a.type==Le.Transition){const l=this.visitTransition(a,e);i+=l.queryCount,o+=l.depCount,s.push(l)}else e.errors.push(function Sie(){return new X(3007,!1)}())}),{type:Le.Trigger,name:n.name,states:r,transitions:s,queryCount:i,depCount:o,options:null}}visitState(n,e){const i=this.visitStyle(n.styles,e),o=n.options&&n.options.params||null;if(i.containsDynamicStyles){const r=new Set,s=o||{};i.styles.forEach(a=>{a instanceof Map&&a.forEach(l=>{_N(l).forEach(c=>{s.hasOwnProperty(c)||r.add(c)})})}),r.size&&e.errors.push(function kie(){return new X(3008,!1)}(0,r.values()))}return{type:Le.State,name:n.name,style:i,options:o?{params:o}:null}}visitTransition(n,e){e.queryCount=0,e.depCount=0;const i=Po(this,rf(n.animation),e),o=function poe(t,n){const e=[];return"string"==typeof t?t.split(/\s*,\s*/).forEach(i=>function moe(t,n,e){if(":"==t[0]){const l=function goe(t,n){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(e,i)=>parseFloat(i)>parseFloat(e);case":decrement":return(e,i)=>parseFloat(i) *"}}(t,e);if("function"==typeof l)return void n.push(l);t=l}const i=t.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(null==i||i.length<4)return e.push(function Rie(){return new X(3015,!1)}()),n;const o=i[1],r=i[2],s=i[3];n.push(yN(o,s)),"<"==r[0]&&("*"!=o||"*"!=s)&&n.push(yN(s,o))}(i,e,n)):e.push(t),e}(n.expr,e.errors);return{type:Le.Transition,matchers:o,animation:i,queryCount:e.queryCount,depCount:e.depCount,options:Ul(n.options)}}visitSequence(n,e){return{type:Le.Sequence,steps:n.steps.map(i=>Po(this,i,e)),options:Ul(n.options)}}visitGroup(n,e){const i=e.currentTime;let o=0;const r=n.steps.map(s=>{e.currentTime=i;const a=Po(this,s,e);return o=Math.max(o,e.currentTime),a});return e.currentTime=o,{type:Le.Group,steps:r,options:Ul(n.options)}}visitAnimate(n,e){const i=function xoe(t,n){if(t.hasOwnProperty("duration"))return t;if("number"==typeof t)return nx(E_(t,n).duration,0,"");const e=t;if(e.split(/\s+/).some(r=>"{"==r.charAt(0)&&"{"==r.charAt(1))){const r=nx(0,0,"");return r.dynamic=!0,r.strValue=e,r}const o=E_(e,n);return nx(o.duration,o.delay,o.easing)}(n.timings,e.errors);e.currentAnimateTimings=i;let o,r=n.styles?n.styles:rN({});if(r.type==Le.Keyframes)o=this.visitKeyframes(r,e);else{let s=n.styles,a=!1;if(!s){a=!0;const c={};i.easing&&(c.easing=i.easing),s=rN(c)}e.currentTime+=i.duration+i.delay;const l=this.visitStyle(s,e);l.isEmptyStep=a,o=l}return e.currentAnimateTimings=null,{type:Le.Animate,timings:i,style:o,options:null}}visitStyle(n,e){const i=this._makeStyleAst(n,e);return this._validateStyleAst(i,e),i}_makeStyleAst(n,e){const i=[],o=Array.isArray(n.styles)?n.styles:[n.styles];for(let a of o)"string"==typeof a?a===ks?i.push(a):e.errors.push(Die()):i.push(new Map(Object.entries(a)));let r=!1,s=null;return i.forEach(a=>{if(a instanceof Map&&(a.has("easing")&&(s=a.get("easing"),a.delete("easing")),!r))for(let l of a.values())if(l.toString().indexOf("{{")>=0){r=!0;break}}),{type:Le.Style,styles:i,easing:s,offset:n.offset,containsDynamicStyles:r,options:null}}_validateStyleAst(n,e){const i=e.currentAnimateTimings;let o=e.currentTime,r=e.currentTime;i&&r>0&&(r-=i.duration+i.delay),n.styles.forEach(s=>{"string"!=typeof s&&s.forEach((a,l)=>{const c=e.collectedStyles.get(e.currentQuerySelector),f=c.get(l);let m=!0;f&&(r!=o&&r>=f.startTime&&o<=f.endTime&&(e.errors.push(function Mie(){return new X(3010,!1)}()),m=!1),r=f.startTime),m&&c.set(l,{startTime:r,endTime:o}),e.options&&function ooe(t,n,e){const i=n.params||{},o=_N(t);o.length&&o.forEach(r=>{i.hasOwnProperty(r)||e.push(function vie(){return new X(3001,!1)}())})}(a,e.options,e.errors)})})}visitKeyframes(n,e){const i={type:Le.Keyframes,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push(function Tie(){return new X(3011,!1)}()),i;let r=0;const s=[];let a=!1,l=!1,c=0;const f=n.steps.map(I=>{const R=this._makeStyleAst(I,e);let W=null!=R.offset?R.offset:function woe(t){if("string"==typeof t)return null;let n=null;if(Array.isArray(t))t.forEach(e=>{if(e instanceof Map&&e.has("offset")){const i=e;n=parseFloat(i.get("offset")),i.delete("offset")}});else if(t instanceof Map&&t.has("offset")){const e=t;n=parseFloat(e.get("offset")),e.delete("offset")}return n}(R.styles),Y=0;return null!=W&&(r++,Y=R.offset=W),l=l||Y<0||Y>1,a=a||Y0&&r{const W=g>0?R==_?1:g*R:s[R],Y=W*T;e.currentTime=w+k.delay+Y,k.duration=Y,this._validateStyleAst(I,e),I.offset=W,i.styles.push(I)}),i}visitReference(n,e){return{type:Le.Reference,animation:Po(this,rf(n.animation),e),options:Ul(n.options)}}visitAnimateChild(n,e){return e.depCount++,{type:Le.AnimateChild,options:Ul(n.options)}}visitAnimateRef(n,e){return{type:Le.AnimateRef,animation:this.visitReference(n.animation,e),options:Ul(n.options)}}visitQuery(n,e){const i=e.currentQuerySelector,o=n.options||{};e.queryCount++,e.currentQuery=n;const[r,s]=function voe(t){const n=!!t.split(/\s*,\s*/).find(e=>":self"==e);return n&&(t=t.replace(_oe,"")),t=t.replace(/@\*/g,T_).replace(/@\w+/g,e=>T_+"-"+e.slice(1)).replace(/:animating/g,Gw),[t,n]}(n.selector);e.currentQuerySelector=i.length?i+" "+r:r,Eo(e.collectedStyles,e.currentQuerySelector,new Map);const a=Po(this,rf(n.animation),e);return e.currentQuery=null,e.currentQuerySelector=i,{type:Le.Query,selector:r,limit:o.limit||0,optional:!!o.optional,includeSelf:s,animation:a,originalSelector:n.selector,options:Ul(n.options)}}visitStagger(n,e){e.currentQuery||e.errors.push(function Oie(){return new X(3013,!1)}());const i="full"===n.timings?{duration:0,delay:0,easing:"full"}:E_(n.timings,e.errors,!0);return{type:Le.Stagger,animation:Po(this,rf(n.animation),e),timings:i,options:null}}}class Coe{errors;queryCount=0;depCount=0;currentTransition=null;currentQuery=null;currentQuerySelector=null;currentAnimateTimings=null;currentTime=0;collectedStyles=new Map;options=null;unsupportedCSSPropertiesFound=new Set;constructor(n){this.errors=n}}function Ul(t){return t?(t={...t}).params&&(t.params=function yoe(t){return t?{...t}:null}(t.params)):t={},t}function nx(t,n,e){return{duration:t,delay:n,easing:e}}function ix(t,n,e,i,o,r,s=null,a=!1){return{type:1,element:t,keyframes:n,preStyleProps:e,postStyleProps:i,duration:o,delay:r,totalTime:o+r,easing:s,subTimeline:a}}class A_{_map=new Map;get(n){return this._map.get(n)||[]}append(n,e){let i=this._map.get(n);i||this._map.set(n,i=[]),i.push(...e)}has(n){return this._map.has(n)}clear(){this._map.clear()}}const Doe=new RegExp(":enter","g"),Toe=new RegExp(":leave","g");function ox(t,n,e,i,o,r=new Map,s=new Map,a,l,c=[]){return(new Eoe).buildKeyframes(t,n,e,i,o,r,s,a,l,c)}class Eoe{buildKeyframes(n,e,i,o,r,s,a,l,c,f=[]){c=c||new A_;const m=new rx(n,e,c,o,r,f,[]);m.options=l;const g=l.delay?Ds(l.delay):0;m.currentTimeline.delayNextStep(g),m.currentTimeline.setStyles([s],null,m.errors,l),Po(this,i,m);const _=m.timelines.filter(w=>w.containsAnimation());if(_.length&&a.size){let w;for(let k=_.length-1;k>=0;k--){const T=_[k];if(T.element===e){w=T;break}}w&&!w.allowOnlyTimelineStyles()&&w.setStyles([a],null,m.errors,l)}return _.length?_.map(w=>w.buildKeyframes()):[ix(e,[],[],[],0,g,"",!1)]}visitTrigger(n,e){}visitState(n,e){}visitTransition(n,e){}visitAnimateChild(n,e){const i=e.subInstructions.get(e.element);if(i){const o=e.createSubContext(n.options),r=e.currentTimeline.currentTime,s=this._visitSubInstructions(i,o,o.options);r!=s&&e.transformIntoNewTimeline(s)}e.previousNode=n}visitAnimateRef(n,e){const i=e.createSubContext(n.options);i.transformIntoNewTimeline(),this._applyAnimationRefDelays([n.options,n.animation.options],e,i),this.visitReference(n.animation,i),e.transformIntoNewTimeline(i.currentTimeline.currentTime),e.previousNode=n}_applyAnimationRefDelays(n,e,i){for(const o of n){const r=o?.delay;if(r){const s="number"==typeof r?r:Ds(sf(r,o?.params??{},e.errors));i.delayNextStep(s)}}}_visitSubInstructions(n,e,i){let r=e.currentTimeline.currentTime;const s=null!=i.duration?Ds(i.duration):null,a=null!=i.delay?Ds(i.delay):null;return 0!==s&&n.forEach(l=>{const c=e.appendInstructionToTimeline(l,s,a);r=Math.max(r,c.duration+c.delay)}),r}visitReference(n,e){e.updateOptions(n.options,!0),Po(this,n.animation,e),e.previousNode=n}visitSequence(n,e){const i=e.subContextCount;let o=e;const r=n.options;if(r&&(r.params||r.delay)&&(o=e.createSubContext(r),o.transformIntoNewTimeline(),null!=r.delay)){o.previousNode.type==Le.Style&&(o.currentTimeline.snapshotCurrentStyles(),o.previousNode=R_);const s=Ds(r.delay);o.delayNextStep(s)}n.steps.length&&(n.steps.forEach(s=>Po(this,s,o)),o.currentTimeline.applyStylesToKeyframe(),o.subContextCount>i&&o.transformIntoNewTimeline()),e.previousNode=n}visitGroup(n,e){const i=[];let o=e.currentTimeline.currentTime;const r=n.options&&n.options.delay?Ds(n.options.delay):0;n.steps.forEach(s=>{const a=e.createSubContext(n.options);r&&a.delayNextStep(r),Po(this,s,a),o=Math.max(o,a.currentTimeline.currentTime),i.push(a.currentTimeline)}),i.forEach(s=>e.currentTimeline.mergeTimelineCollectedStyles(s)),e.transformIntoNewTimeline(o),e.previousNode=n}_visitTiming(n,e){if(n.dynamic){const i=n.strValue;return E_(e.params?sf(i,e.params,e.errors):i,e.errors)}return{duration:n.duration,delay:n.delay,easing:n.easing}}visitAnimate(n,e){const i=e.currentAnimateTimings=this._visitTiming(n.timings,e),o=e.currentTimeline;i.delay&&(e.incrementTime(i.delay),o.snapshotCurrentStyles());const r=n.style;r.type==Le.Keyframes?this.visitKeyframes(r,e):(e.incrementTime(i.duration),this.visitStyle(r,e),o.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=n}visitStyle(n,e){const i=e.currentTimeline,o=e.currentAnimateTimings;!o&&i.hasCurrentStyleProperties()&&i.forwardFrame();const r=o&&o.easing||n.easing;n.isEmptyStep?i.applyEmptyStep(r):i.setStyles(n.styles,r,e.errors,e.options),e.previousNode=n}visitKeyframes(n,e){const i=e.currentAnimateTimings,o=e.currentTimeline.duration,r=i.duration,a=e.createSubContext().currentTimeline;a.easing=i.easing,n.styles.forEach(l=>{a.forwardTime((l.offset||0)*r),a.setStyles(l.styles,l.easing,e.errors,e.options),a.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(a),e.transformIntoNewTimeline(o+r),e.previousNode=n}visitQuery(n,e){const i=e.currentTimeline.currentTime,o=n.options||{},r=o.delay?Ds(o.delay):0;r&&(e.previousNode.type===Le.Style||0==i&&e.currentTimeline.hasCurrentStyleProperties())&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=R_);let s=i;const a=e.invokeQuery(n.selector,n.originalSelector,n.limit,n.includeSelf,!!o.optional,e.errors);e.currentQueryTotal=a.length;let l=null;a.forEach((c,f)=>{e.currentQueryIndex=f;const m=e.createSubContext(n.options,c);r&&m.delayNextStep(r),c===e.element&&(l=m.currentTimeline),Po(this,n.animation,m),m.currentTimeline.applyStylesToKeyframe(),s=Math.max(s,m.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(s),l&&(e.currentTimeline.mergeTimelineCollectedStyles(l),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=n}visitStagger(n,e){const i=e.parentContext,o=e.currentTimeline,r=n.timings,s=Math.abs(r.duration),a=s*(e.currentQueryTotal-1);let l=s*e.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":l=a-l;break;case"full":l=i.currentStaggerTime}const f=e.currentTimeline;l&&f.delayNextStep(l);const m=f.currentTime;Po(this,n.animation,e),e.previousNode=n,i.currentStaggerTime=o.currentTime-m+(o.startTime-i.currentTimeline.startTime)}}const R_={};class rx{_driver;element;subInstructions;_enterClassName;_leaveClassName;errors;timelines;parentContext=null;currentTimeline;currentAnimateTimings=null;previousNode=R_;subContextCount=0;options={};currentQueryIndex=0;currentQueryTotal=0;currentStaggerTime=0;constructor(n,e,i,o,r,s,a,l){this._driver=n,this.element=e,this.subInstructions=i,this._enterClassName=o,this._leaveClassName=r,this.errors=s,this.timelines=a,this.currentTimeline=l||new F_(this._driver,e,0),a.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(n,e){if(!n)return;const i=n;let o=this.options;null!=i.duration&&(o.duration=Ds(i.duration)),null!=i.delay&&(o.delay=Ds(i.delay));const r=i.params;if(r){let s=o.params;s||(s=this.options.params={}),Object.keys(r).forEach(a=>{(!e||!s.hasOwnProperty(a))&&(s[a]=sf(r[a],s,this.errors))})}}_copyOptions(){const n={};if(this.options){const e=this.options.params;if(e){const i=n.params={};Object.keys(e).forEach(o=>{i[o]=e[o]})}}return n}createSubContext(n=null,e,i){const o=e||this.element,r=new rx(this._driver,o,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(o,i||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(n),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(n){return this.previousNode=R_,this.currentTimeline=this.currentTimeline.fork(this.element,n),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(n,e,i){const o={duration:e??n.duration,delay:this.currentTimeline.currentTime+(i??0)+n.delay,easing:""},r=new Poe(this._driver,n.element,n.keyframes,n.preStyleProps,n.postStyleProps,o,n.stretchStartingKeyframe);return this.timelines.push(r),o}incrementTime(n){this.currentTimeline.forwardTime(this.currentTimeline.duration+n)}delayNextStep(n){n>0&&this.currentTimeline.delayNextStep(n)}invokeQuery(n,e,i,o,r,s){let a=[];if(o&&a.push(this.element),n.length>0){n=(n=n.replace(Doe,"."+this._enterClassName)).replace(Toe,"."+this._leaveClassName);let c=this._driver.query(this.element,n,1!=i);0!==i&&(c=i<0?c.slice(c.length+i,c.length):c.slice(0,i)),a.push(...c)}return!r&&0==a.length&&s.push(function Aie(){return new X(3014,!1)}()),a}}class F_{_driver;element;startTime;_elementTimelineStylesLookup;duration=0;easing=null;_previousKeyframe=new Map;_currentKeyframe=new Map;_keyframes=new Map;_styleSummary=new Map;_localTimelineStyles=new Map;_globalTimelineStyles;_pendingStyles=new Map;_backFill=new Map;_currentEmptyStepKeyframe=null;constructor(n,e,i,o){this._driver=n,this.element=e,this.startTime=i,this._elementTimelineStylesLookup=o,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(n){const e=1===this._keyframes.size&&this._pendingStyles.size;this.duration||e?(this.forwardTime(this.currentTime+n),e&&this.snapshotCurrentStyles()):this.startTime+=n}fork(n,e){return this.applyStylesToKeyframe(),new F_(this._driver,n,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(n){this.applyStylesToKeyframe(),this.duration=n,this._loadKeyframe()}_updateStyle(n,e){this._localTimelineStyles.set(n,e),this._globalTimelineStyles.set(n,e),this._styleSummary.set(n,{time:this.currentTime,value:e})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(n){n&&this._previousKeyframe.set("easing",n);for(let[e,i]of this._globalTimelineStyles)this._backFill.set(e,i||ks),this._currentKeyframe.set(e,ks);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(n,e,i,o){e&&this._previousKeyframe.set("easing",e);const r=o&&o.params||{},s=function Ioe(t,n){const e=new Map;let i;return t.forEach(o=>{if("*"===o){i??=n.keys();for(let r of i)e.set(r,ks)}else for(let[r,s]of o)e.set(r,s)}),e}(n,this._globalTimelineStyles);for(let[a,l]of s){const c=sf(l,r,i);this._pendingStyles.set(a,c),this._localTimelineStyles.has(a)||this._backFill.set(a,this._globalTimelineStyles.get(a)??ks),this._updateStyle(a,c)}}applyStylesToKeyframe(){0!=this._pendingStyles.size&&(this._pendingStyles.forEach((n,e)=>{this._currentKeyframe.set(e,n)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((n,e)=>{this._currentKeyframe.has(e)||this._currentKeyframe.set(e,n)}))}snapshotCurrentStyles(){for(let[n,e]of this._localTimelineStyles)this._pendingStyles.set(n,e),this._updateStyle(n,e)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const n=[];for(let e in this._currentKeyframe)n.push(e);return n}mergeTimelineCollectedStyles(n){n._styleSummary.forEach((e,i)=>{const o=this._styleSummary.get(i);(!o||e.time>o.time)&&this._updateStyle(i,e.value)})}buildKeyframes(){this.applyStylesToKeyframe();const n=new Set,e=new Set,i=1===this._keyframes.size&&0===this.duration;let o=[];this._keyframes.forEach((a,l)=>{const c=new Map([...this._backFill,...a]);c.forEach((f,m)=>{"!"===f?n.add(m):f===ks&&e.add(m)}),i||c.set("offset",l/this.duration),o.push(c)});const r=[...n.values()],s=[...e.values()];if(i){const a=o[0],l=new Map(a);a.set("offset",0),l.set("offset",1),o=[a,l]}return ix(this.element,o,r,s,this.duration,this.startTime,this.easing,!1)}}class Poe extends F_{keyframes;preStyleProps;postStyleProps;_stretchStartingKeyframe;timings;constructor(n,e,i,o,r,s,a=!1){super(n,e,s.delay),this.keyframes=i,this.preStyleProps=o,this.postStyleProps=r,this._stretchStartingKeyframe=a,this.timings={duration:s.duration,delay:s.delay,easing:s.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let n=this.keyframes,{delay:e,duration:i,easing:o}=this.timings;if(this._stretchStartingKeyframe&&e){const r=[],s=i+e,a=e/s,l=new Map(n[0]);l.set("offset",0),r.push(l);const c=new Map(n[0]);c.set("offset",xN(a)),r.push(c);const f=n.length-1;for(let m=1;m<=f;m++){let g=new Map(n[m]);const _=g.get("offset");g.set("offset",xN((e+_*i)/s)),r.push(g)}i=s,e=0,o="",n=r}return ix(this.element,n,this.preStyleProps,this.postStyleProps,i,e,o,!0)}}function xN(t,n=3){const e=Math.pow(10,n-1);return Math.round(t*e)/e}function SN(t,n,e,i,o,r,s,a,l,c,f,m,g){return{type:0,element:t,triggerName:n,isRemovalTransition:o,fromState:e,fromStyles:r,toState:i,toStyles:s,timelines:a,queriedElements:l,preStyleProps:c,postStyleProps:f,totalTime:m,errors:g}}const sx={};class kN{_triggerName;ast;_stateStyles;constructor(n,e,i){this._triggerName=n,this.ast=e,this._stateStyles=i}match(n,e,i,o){return function Ooe(t,n,e,i,o){return t.some(r=>r(n,e,i,o))}(this.ast.matchers,n,e,i,o)}buildStyles(n,e,i){let o=this._stateStyles.get("*");return void 0!==n&&(o=this._stateStyles.get(n?.toString())||o),o?o.buildStyles(e,i):new Map}build(n,e,i,o,r,s,a,l,c,f){const m=[],g=this.ast.options&&this.ast.options.params||sx,w=this.buildStyles(i,a&&a.params||sx,m),k=l&&l.params||sx,T=this.buildStyles(o,k,m),I=new Set,R=new Map,W=new Map,Y="void"===o,K={params:DN(k,g),delay:this.ast.options?.delay},ee=f?[]:ox(n,e,this.ast.animation,r,s,w,T,K,c,m);let ie=0;return ee.forEach(P=>{ie=Math.max(P.duration+P.delay,ie)}),m.length?SN(e,this._triggerName,i,o,Y,w,T,[],[],R,W,ie,m):(ee.forEach(P=>{const A=P.element,L=Eo(R,A,new Set);P.preStyleProps.forEach(H=>L.add(H));const $=Eo(W,A,new Set);P.postStyleProps.forEach(H=>$.add(H)),A!==e&&I.add(A)}),SN(e,this._triggerName,i,o,Y,w,T,ee,[...I.values()],R,W,ie))}}function DN(t,n){const e={...n};return Object.entries(t).forEach(([i,o])=>{null!=o&&(e[i]=o)}),e}class Aoe{styles;defaultParams;normalizer;constructor(n,e,i){this.styles=n,this.defaultParams=e,this.normalizer=i}buildStyles(n,e){const i=new Map,o=DN(n,this.defaultParams);return this.styles.styles.forEach(r=>{"string"!=typeof r&&r.forEach((s,a)=>{s&&(s=sf(s,o,e));const l=this.normalizer.normalizePropertyName(a,e);s=this.normalizer.normalizeStyleValue(a,l,s,e),i.set(a,s)})}),i}}class Foe{name;ast;_normalizer;transitionFactories=[];fallbackTransition;states=new Map;constructor(n,e,i){this.name=n,this.ast=e,this._normalizer=i,e.states.forEach(o=>{this.states.set(o.name,new Aoe(o.style,o.options&&o.options.params||{},i))}),MN(this.states,"true","1"),MN(this.states,"false","0"),e.transitions.forEach(o=>{this.transitionFactories.push(new kN(n,o,this.states))}),this.fallbackTransition=function Noe(t,n){return new kN(t,{type:Le.Transition,animation:{type:Le.Sequence,steps:[],options:null},matchers:[(s,a)=>!0],options:null,queryCount:0,depCount:0},n)}(n,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(n,e,i,o){return this.transitionFactories.find(s=>s.match(n,e,i,o))||null}matchStyles(n,e,i){return this.fallbackTransition.buildStyles(n,e,i)}}function MN(t,n,e){t.has(n)?t.has(e)||t.set(e,t.get(n)):t.has(e)&&t.set(n,t.get(e))}const Loe=new A_;class Boe{bodyNode;_driver;_normalizer;_animations=new Map;_playersById=new Map;players=[];constructor(n,e,i){this.bodyNode=n,this._driver=e,this._normalizer=i}register(n,e){const i=[],r=tx(this._driver,e,i,[]);if(i.length)throw function Bie(){return new X(3503,!1)}();this._animations.set(n,r)}_buildPlayer(n,e,i){const o=n.element,r=cN(this._normalizer,n.keyframes,e,i);return this._driver.animate(o,r,n.duration,n.delay,n.easing,[],!0)}create(n,e,i={}){const o=[],r=this._animations.get(n);let s;const a=new Map;if(r?(s=ox(this._driver,e,r,mN,Ww,new Map,new Map,i,Loe,o),s.forEach(f=>{const m=Eo(a,f.element,new Map);f.postStyleProps.forEach(g=>m.set(g,null))})):(o.push(function Vie(){return new X(3300,!1)}()),s=[]),o.length)throw function Hie(){return new X(3504,!1)}();a.forEach((f,m)=>{f.forEach((g,_)=>{f.set(_,this._driver.computeStyle(m,_,ks))})});const c=pa(s.map(f=>{const m=a.get(f.element);return this._buildPlayer(f,new Map,m)}));return this._playersById.set(n,c),c.onDestroy(()=>this.destroy(n)),this.players.push(c),c}destroy(n){const e=this._getPlayer(n);e.destroy(),this._playersById.delete(n);const i=this.players.indexOf(e);i>=0&&this.players.splice(i,1)}_getPlayer(n){const e=this._playersById.get(n);if(!e)throw function jie(){return new X(3301,!1)}();return e}listen(n,e,i,o){const r=zw(e,"","","");return jw(this._getPlayer(n),i,r,o),()=>{}}command(n,e,i,o){if("register"==i)return void this.register(n,o[0]);if("create"==i)return void this.create(n,e,o[0]||{});const r=this._getPlayer(n);switch(i){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(o[0]));break;case"destroy":this.destroy(n)}}}const TN="ng-animate-queued",ax="ng-animate-disabled",zoe=[],EN={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},$oe={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},pr="__ng_removed";class lx{namespaceId;value;options;get params(){return this.options.params}constructor(n,e=""){this.namespaceId=e;const i=n&&n.hasOwnProperty("value");if(this.value=function Koe(t){return t??null}(i?n.value:n),i){const{value:r,...s}=n;this.options=s}else this.options={};this.options.params||(this.options.params={})}absorbOptions(n){const e=n.params;if(e){const i=this.options.params;Object.keys(e).forEach(o=>{null==i[o]&&(i[o]=e[o])})}}}const af="void",cx=new lx(af);class Woe{id;hostElement;_engine;players=[];_triggers=new Map;_queue=[];_elementListeners=new Map;_hostClassName;constructor(n,e,i){this.id=n,this.hostElement=e,this._engine=i,this._hostClassName="ng-tns-"+n,jo(e,this._hostClassName)}listen(n,e,i,o){if(!this._triggers.has(e))throw function Uie(){return new X(3302,!1)}();if(null==i||0==i.length)throw function zie(){return new X(3303,!1)}();if(!function Yoe(t){return"start"==t||"done"==t}(i))throw function $ie(){return new X(3400,!1)}();const r=Eo(this._elementListeners,n,[]),s={name:e,phase:i,callback:o};r.push(s);const a=Eo(this._engine.statesByElement,n,new Map);return a.has(e)||(jo(n,M_),jo(n,M_+"-"+e),a.set(e,cx)),()=>{this._engine.afterFlush(()=>{const l=r.indexOf(s);l>=0&&r.splice(l,1),this._triggers.has(e)||a.delete(e)})}}register(n,e){return!this._triggers.has(n)&&(this._triggers.set(n,e),!0)}_getTrigger(n){const e=this._triggers.get(n);if(!e)throw function Wie(){return new X(3401,!1)}();return e}trigger(n,e,i,o=!0){const r=this._getTrigger(e),s=new dx(this.id,e,n);let a=this._engine.statesByElement.get(n);a||(jo(n,M_),jo(n,M_+"-"+e),this._engine.statesByElement.set(n,a=new Map));let l=a.get(e);const c=new lx(i,this.id);if(!(i&&i.hasOwnProperty("value"))&&l&&c.absorbOptions(l.options),a.set(e,c),l||(l=cx),c.value!==af&&l.value===c.value){if(!function Qoe(t,n){const e=Object.keys(t),i=Object.keys(n);if(e.length!=i.length)return!1;for(let o=0;o{jl(n,T),Hr(n,I)})}return}const g=Eo(this._engine.playersByElement,n,[]);g.forEach(k=>{k.namespaceId==this.id&&k.triggerName==e&&k.queued&&k.destroy()});let _=r.matchTransition(l.value,c.value,n,c.params),w=!1;if(!_){if(!o)return;_=r.fallbackTransition,w=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:e,transition:_,fromState:l,toState:c,player:s,isFallbackTransition:w}),w||(jo(n,TN),s.onStart(()=>{Bd(n,TN)})),s.onDone(()=>{let k=this.players.indexOf(s);k>=0&&this.players.splice(k,1);const T=this._engine.playersByElement.get(n);if(T){let I=T.indexOf(s);I>=0&&T.splice(I,1)}}),this.players.push(s),g.push(s),s}deregister(n){this._triggers.delete(n),this._engine.statesByElement.forEach(e=>e.delete(n)),this._elementListeners.forEach((e,i)=>{this._elementListeners.set(i,e.filter(o=>o.name!=n))})}clearElementCache(n){this._engine.statesByElement.delete(n),this._elementListeners.delete(n);const e=this._engine.playersByElement.get(n);e&&(e.forEach(i=>i.destroy()),this._engine.playersByElement.delete(n))}_signalRemovalForInnerTriggers(n,e){const i=this._engine.driver.query(n,T_,!0);i.forEach(o=>{if(o[pr])return;const r=this._engine.fetchNamespacesByElement(o);r.size?r.forEach(s=>s.triggerLeaveAnimation(o,e,!1,!0)):this.clearElementCache(o)}),this._engine.afterFlushAnimationsDone(()=>i.forEach(o=>this.clearElementCache(o)))}triggerLeaveAnimation(n,e,i,o){const r=this._engine.statesByElement.get(n),s=new Map;if(r){const a=[];if(r.forEach((l,c)=>{if(s.set(c,l.value),this._triggers.has(c)){const f=this.trigger(n,c,af,o);f&&a.push(f)}}),a.length)return this._engine.markElementAsRemoved(this.id,n,!0,e,s),i&&pa(a).onDone(()=>this._engine.processLeaveNode(n)),!0}return!1}prepareLeaveAnimationListeners(n){const e=this._elementListeners.get(n),i=this._engine.statesByElement.get(n);if(e&&i){const o=new Set;e.forEach(r=>{const s=r.name;if(o.has(s))return;o.add(s);const l=this._triggers.get(s).fallbackTransition,c=i.get(s)||cx,f=new lx(af),m=new dx(this.id,s,n);this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:s,transition:l,fromState:c,toState:f,player:m,isFallbackTransition:!0})})}}removeNode(n,e){const i=this._engine;if(n.childElementCount&&this._signalRemovalForInnerTriggers(n,e),this.triggerLeaveAnimation(n,e,!0))return;let o=!1;if(i.totalAnimations){const r=i.players.length?i.playersByQueriedElement.get(n):[];if(r&&r.length)o=!0;else{let s=n;for(;s=s.parentNode;)if(i.statesByElement.get(s)){o=!0;break}}}if(this.prepareLeaveAnimationListeners(n),o)i.markElementAsRemoved(this.id,n,!1,e);else{const r=n[pr];(!r||r===EN)&&(i.afterFlush(()=>this.clearElementCache(n)),i.destroyInnerAnimations(n),i._onRemovalComplete(n,e))}}insertNode(n,e){jo(n,this._hostClassName)}drainQueuedTransitions(n){const e=[];return this._queue.forEach(i=>{const o=i.player;if(o.destroyed)return;const r=i.element,s=this._elementListeners.get(r);s&&s.forEach(a=>{if(a.name==i.triggerName){const l=zw(r,i.triggerName,i.fromState.value,i.toState.value);l._data=n,jw(i.player,a.phase,l,a.callback)}}),o.markedForDestroy?this._engine.afterFlush(()=>{o.destroy()}):e.push(i)}),this._queue=[],e.sort((i,o)=>{const r=i.transition.ast.depCount,s=o.transition.ast.depCount;return 0==r||0==s?r-s:this._engine.driver.containsElement(i.element,o.element)?1:-1})}destroy(n){this.players.forEach(e=>e.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,n)}}class Goe{bodyNode;driver;_normalizer;players=[];newHostElements=new Map;playersByElement=new Map;playersByQueriedElement=new Map;statesByElement=new Map;disabledNodes=new Set;totalAnimations=0;totalQueuedPlayers=0;_namespaceLookup={};_namespaceList=[];_flushFns=[];_whenQuietFns=[];namespacesByHostElement=new Map;collectedEnterElements=[];collectedLeaveElements=[];onRemovalComplete=(n,e)=>{};_onRemovalComplete(n,e){this.onRemovalComplete(n,e)}constructor(n,e,i){this.bodyNode=n,this.driver=e,this._normalizer=i}get queuedPlayers(){const n=[];return this._namespaceList.forEach(e=>{e.players.forEach(i=>{i.queued&&n.push(i)})}),n}createNamespace(n,e){const i=new Woe(n,e,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,e)?this._balanceNamespaceList(i,e):(this.newHostElements.set(e,i),this.collectEnterElement(e)),this._namespaceLookup[n]=i}_balanceNamespaceList(n,e){const i=this._namespaceList,o=this.namespacesByHostElement;if(i.length-1>=0){let s=!1,a=this.driver.getParentElement(e);for(;a;){const l=o.get(a);if(l){const c=i.indexOf(l);i.splice(c+1,0,n),s=!0;break}a=this.driver.getParentElement(a)}s||i.unshift(n)}else i.push(n);return o.set(e,n),n}register(n,e){let i=this._namespaceLookup[n];return i||(i=this.createNamespace(n,e)),i}registerTrigger(n,e,i){let o=this._namespaceLookup[n];o&&o.register(e,i)&&this.totalAnimations++}destroy(n,e){n&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{const i=this._fetchNamespace(n);this.namespacesByHostElement.delete(i.hostElement);const o=this._namespaceList.indexOf(i);o>=0&&this._namespaceList.splice(o,1),i.destroy(e),delete this._namespaceLookup[n]}))}_fetchNamespace(n){return this._namespaceLookup[n]}fetchNamespacesByElement(n){const e=new Set,i=this.statesByElement.get(n);if(i)for(let o of i.values())if(o.namespaceId){const r=this._fetchNamespace(o.namespaceId);r&&e.add(r)}return e}trigger(n,e,i,o){if(N_(e)){const r=this._fetchNamespace(n);if(r)return r.trigger(e,i,o),!0}return!1}insertNode(n,e,i,o){if(!N_(e))return;const r=e[pr];if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;const s=this.collectedLeaveElements.indexOf(e);s>=0&&this.collectedLeaveElements.splice(s,1)}if(n){const s=this._fetchNamespace(n);s&&s.insertNode(e,i)}o&&this.collectEnterElement(e)}collectEnterElement(n){this.collectedEnterElements.push(n)}markElementAsDisabled(n,e){e?this.disabledNodes.has(n)||(this.disabledNodes.add(n),jo(n,ax)):this.disabledNodes.has(n)&&(this.disabledNodes.delete(n),Bd(n,ax))}removeNode(n,e,i){if(N_(e)){const o=n?this._fetchNamespace(n):null;o?o.removeNode(e,i):this.markElementAsRemoved(n,e,!1,i);const r=this.namespacesByHostElement.get(e);r&&r.id!==n&&r.removeNode(e,i)}else this._onRemovalComplete(e,i)}markElementAsRemoved(n,e,i,o,r){this.collectedLeaveElements.push(e),e[pr]={namespaceId:n,setForRemoval:o,hasAnimation:i,removedBeforeQueried:!1,previousTriggersValues:r}}listen(n,e,i,o,r){return N_(e)?this._fetchNamespace(n).listen(e,i,o,r):()=>{}}_buildInstruction(n,e,i,o,r){return n.transition.build(this.driver,n.element,n.fromState.value,n.toState.value,i,o,n.fromState.options,n.toState.options,e,r)}destroyInnerAnimations(n){let e=this.driver.query(n,T_,!0);e.forEach(i=>this.destroyActiveAnimationsForElement(i)),0!=this.playersByQueriedElement.size&&(e=this.driver.query(n,Gw,!0),e.forEach(i=>this.finishActiveQueriedAnimationOnElement(i)))}destroyActiveAnimationsForElement(n){const e=this.playersByElement.get(n);e&&e.forEach(i=>{i.queued?i.markedForDestroy=!0:i.destroy()})}finishActiveQueriedAnimationOnElement(n){const e=this.playersByQueriedElement.get(n);e&&e.forEach(i=>i.finish())}whenRenderingDone(){return new Promise(n=>{if(this.players.length)return pa(this.players).onDone(()=>n());n()})}processLeaveNode(n){const e=n[pr];if(e&&e.setForRemoval){if(n[pr]=EN,e.namespaceId){this.destroyInnerAnimations(n);const i=this._fetchNamespace(e.namespaceId);i&&i.clearElementCache(n)}this._onRemovalComplete(n,e.setForRemoval)}n.classList?.contains(ax)&&this.markElementAsDisabled(n,!1),this.driver.query(n,".ng-animate-disabled",!0).forEach(i=>{this.markElementAsDisabled(i,!1)})}flush(n=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((i,o)=>this._balanceNamespaceList(i,o)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let i=0;ii()),this._flushFns=[],this._whenQuietFns.length){const i=this._whenQuietFns;this._whenQuietFns=[],e.length?pa(e).onDone(()=>{i.forEach(o=>o())}):i.forEach(o=>o())}}reportError(n){throw function Gie(){return new X(3402,!1)}()}_flushAnimations(n,e){const i=new A_,o=[],r=new Map,s=[],a=new Map,l=new Map,c=new Map,f=new Set;this.disabledNodes.forEach(N=>{f.add(N);const q=this.driver.query(N,".ng-animate-queued",!0);for(let z=0;z{const z=mN+k++;w.set(q,z),N.forEach(Q=>jo(Q,z))});const T=[],I=new Set,R=new Set;for(let N=0;NI.add(Q)):R.add(q))}const W=new Map,Y=ON(g,Array.from(I));Y.forEach((N,q)=>{const z=Ww+k++;W.set(q,z),N.forEach(Q=>jo(Q,z))}),n.push(()=>{_.forEach((N,q)=>{const z=w.get(q);N.forEach(Q=>Bd(Q,z))}),Y.forEach((N,q)=>{const z=W.get(q);N.forEach(Q=>Bd(Q,z))}),T.forEach(N=>{this.processLeaveNode(N)})});const K=[],ee=[];for(let N=this._namespaceList.length-1;N>=0;N--)this._namespaceList[N].drainQueuedTransitions(e).forEach(z=>{const Q=z.player,ue=z.element;if(K.push(Q),this.collectedEnterElements.length){const wt=ue[pr];if(wt&&wt.setForMove){if(wt.previousTriggersValues&&wt.previousTriggersValues.has(z.triggerName)){const Jo=wt.previousTriggersValues.get(z.triggerName),Xi=this.statesByElement.get(z.element);if(Xi&&Xi.has(z.triggerName)){const ja=Xi.get(z.triggerName);ja.value=Jo,Xi.set(z.triggerName,ja)}}return void Q.destroy()}}const Ce=!m||!this.driver.containsElement(m,ue),Ee=W.get(ue),ut=w.get(ue),Oe=this._buildInstruction(z,i,ut,Ee,Ce);if(Oe.errors&&Oe.errors.length)return void ee.push(Oe);if(Ce)return Q.onStart(()=>jl(ue,Oe.fromStyles)),Q.onDestroy(()=>Hr(ue,Oe.toStyles)),void o.push(Q);if(z.isFallbackTransition)return Q.onStart(()=>jl(ue,Oe.fromStyles)),Q.onDestroy(()=>Hr(ue,Oe.toStyles)),void o.push(Q);const Xe=[];Oe.timelines.forEach(wt=>{wt.stretchStartingKeyframe=!0,this.disabledNodes.has(wt.element)||Xe.push(wt)}),Oe.timelines=Xe,i.append(ue,Oe.timelines),s.push({instruction:Oe,player:Q,element:ue}),Oe.queriedElements.forEach(wt=>Eo(a,wt,[]).push(Q)),Oe.preStyleProps.forEach((wt,Jo)=>{if(wt.size){let Xi=l.get(Jo);Xi||l.set(Jo,Xi=new Set),wt.forEach((ja,xo)=>Xi.add(xo))}}),Oe.postStyleProps.forEach((wt,Jo)=>{let Xi=c.get(Jo);Xi||c.set(Jo,Xi=new Set),wt.forEach((ja,xo)=>Xi.add(xo))})});if(ee.length){const N=[];ee.forEach(q=>{N.push(function qie(){return new X(3505,!1)}())}),K.forEach(q=>q.destroy()),this.reportError(N)}const ie=new Map,P=new Map;s.forEach(N=>{const q=N.element;i.has(q)&&(P.set(q,q),this._beforeAnimationBuild(N.player.namespaceId,N.instruction,ie))}),o.forEach(N=>{const q=N.element;this._getPreviousPlayers(q,!1,N.namespaceId,N.triggerName,null).forEach(Q=>{Eo(ie,q,[]).push(Q),Q.destroy()})});const A=T.filter(N=>RN(N,l,c)),L=new Map;IN(L,this.driver,R,c,ks).forEach(N=>{RN(N,l,c)&&A.push(N)});const H=new Map;_.forEach((N,q)=>{IN(H,this.driver,new Set(N),l,"!")}),A.forEach(N=>{const q=L.get(N),z=H.get(N);L.set(N,new Map([...q?.entries()??[],...z?.entries()??[]]))});const G=[],J=[],V={};s.forEach(N=>{const{element:q,player:z,instruction:Q}=N;if(i.has(q)){if(f.has(q))return z.onDestroy(()=>Hr(q,Q.toStyles)),z.disabled=!0,z.overrideTotalTime(Q.totalTime),void o.push(z);let ue=V;if(P.size>1){let Ee=q;const ut=[];for(;Ee=Ee.parentNode;){const Oe=P.get(Ee);if(Oe){ue=Oe;break}ut.push(Ee)}ut.forEach(Oe=>P.set(Oe,ue))}const Ce=this._buildAnimation(z.namespaceId,Q,ie,r,H,L);if(z.setRealPlayer(Ce),ue===V)G.push(z);else{const Ee=this.playersByElement.get(ue);Ee&&Ee.length&&(z.parentPlayer=pa(Ee)),o.push(z)}}else jl(q,Q.fromStyles),z.onDestroy(()=>Hr(q,Q.toStyles)),J.push(z),f.has(q)&&o.push(z)}),J.forEach(N=>{const q=r.get(N.element);if(q&&q.length){const z=pa(q);N.setRealPlayer(z)}}),o.forEach(N=>{N.parentPlayer?N.syncPlayerEvents(N.parentPlayer):N.destroy()});for(let N=0;N!Ce.destroyed);ue.length?Xoe(this,q,ue):this.processLeaveNode(q)}return T.length=0,G.forEach(N=>{this.players.push(N),N.onDone(()=>{N.destroy();const q=this.players.indexOf(N);this.players.splice(q,1)}),N.play()}),G}afterFlush(n){this._flushFns.push(n)}afterFlushAnimationsDone(n){this._whenQuietFns.push(n)}_getPreviousPlayers(n,e,i,o,r){let s=[];if(e){const a=this.playersByQueriedElement.get(n);a&&(s=a)}else{const a=this.playersByElement.get(n);if(a){const l=!r||r==af;a.forEach(c=>{c.queued||!l&&c.triggerName!=o||s.push(c)})}}return(i||o)&&(s=s.filter(a=>!(i&&i!=a.namespaceId||o&&o!=a.triggerName))),s}_beforeAnimationBuild(n,e,i){const r=e.element,s=e.isRemovalTransition?void 0:n,a=e.isRemovalTransition?void 0:e.triggerName;for(const l of e.timelines){const c=l.element,f=c!==r,m=Eo(i,c,[]);this._getPreviousPlayers(c,f,s,a,e.toState).forEach(_=>{const w=_.getRealPlayer();w.beforeDestroy&&w.beforeDestroy(),_.destroy(),m.push(_)})}jl(r,e.fromStyles)}_buildAnimation(n,e,i,o,r,s){const a=e.triggerName,l=e.element,c=[],f=new Set,m=new Set,g=e.timelines.map(w=>{const k=w.element;f.add(k);const T=k[pr];if(T&&T.removedBeforeQueried)return new of(w.duration,w.delay);const I=k!==l,R=function Zoe(t){const n=[];return AN(t,n),n}((i.get(k)||zoe).map(ie=>ie.getRealPlayer())).filter(ie=>!!ie.element&&ie.element===k),W=r.get(k),Y=s.get(k),K=cN(this._normalizer,w.keyframes,W,Y),ee=this._buildPlayer(w,K,R);if(w.subTimeline&&o&&m.add(k),I){const ie=new dx(n,a,k);ie.setRealPlayer(ee),c.push(ie)}return ee});c.forEach(w=>{Eo(this.playersByQueriedElement,w.element,[]).push(w),w.onDone(()=>function qoe(t,n,e){let i=t.get(n);if(i){if(i.length){const o=i.indexOf(e);i.splice(o,1)}0==i.length&&t.delete(n)}return i}(this.playersByQueriedElement,w.element,w))}),f.forEach(w=>jo(w,gN));const _=pa(g);return _.onDestroy(()=>{f.forEach(w=>Bd(w,gN)),Hr(l,e.toStyles)}),m.forEach(w=>{Eo(o,w,[]).push(_)}),_}_buildPlayer(n,e,i){return e.length>0?this.driver.animate(n.element,e,n.duration,n.delay,n.easing,i):new of(n.duration,n.delay)}}class dx{namespaceId;triggerName;element;_player=new of;_containsRealPlayer=!1;_queuedCallbacks=new Map;destroyed=!1;parentPlayer=null;markedForDestroy=!1;disabled=!1;queued=!0;totalTime=0;constructor(n,e,i){this.namespaceId=n,this.triggerName=e,this.element=i}setRealPlayer(n){this._containsRealPlayer||(this._player=n,this._queuedCallbacks.forEach((e,i)=>{e.forEach(o=>jw(n,i,void 0,o))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(n.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(n){this.totalTime=n}syncPlayerEvents(n){const e=this._player;e.triggerCallback&&n.onStart(()=>e.triggerCallback("start")),n.onDone(()=>this.finish()),n.onDestroy(()=>this.destroy())}_queueEvent(n,e){Eo(this._queuedCallbacks,n,[]).push(e)}onDone(n){this.queued&&this._queueEvent("done",n),this._player.onDone(n)}onStart(n){this.queued&&this._queueEvent("start",n),this._player.onStart(n)}onDestroy(n){this.queued&&this._queueEvent("destroy",n),this._player.onDestroy(n)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(n){this.queued||this._player.setPosition(n)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(n){const e=this._player;e.triggerCallback&&e.triggerCallback(n)}}function N_(t){return t&&1===t.nodeType}function PN(t,n){const e=t.style.display;return t.style.display=n??"none",e}function IN(t,n,e,i,o){const r=[];e.forEach(l=>r.push(PN(l)));const s=[];i.forEach((l,c)=>{const f=new Map;l.forEach(m=>{const g=n.computeStyle(c,m,o);f.set(m,g),(!g||0==g.length)&&(c[pr]=$oe,s.push(c))}),t.set(c,f)});let a=0;return e.forEach(l=>PN(l,r[a++])),s}function ON(t,n){const e=new Map;if(t.forEach(a=>e.set(a,[])),0==n.length)return e;const o=new Set(n),r=new Map;function s(a){if(!a)return 1;let l=r.get(a);if(l)return l;const c=a.parentNode;return l=e.has(c)?c:o.has(c)?1:s(c),r.set(a,l),l}return n.forEach(a=>{const l=s(a);1!==l&&e.get(l).push(a)}),e}function jo(t,n){t.classList?.add(n)}function Bd(t,n){t.classList?.remove(n)}function Xoe(t,n,e){pa(e).onDone(()=>t.processLeaveNode(n))}function AN(t,n){for(let e=0;eo.add(r)):n.set(t,i),e.delete(t),!0}class lf{_driver;_normalizer;_transitionEngine;_timelineEngine;_triggerCache={};onRemovalComplete=(n,e)=>{};constructor(n,e,i){this._driver=e,this._normalizer=i,this._transitionEngine=new Goe(n.body,e,i),this._timelineEngine=new Boe(n.body,e,i),this._transitionEngine.onRemovalComplete=(o,r)=>this.onRemovalComplete(o,r)}registerTrigger(n,e,i,o,r){const s=n+"-"+o;let a=this._triggerCache[s];if(!a){const l=[],f=tx(this._driver,r,l,[]);if(l.length)throw function Nie(){return new X(3404,!1)}();a=function Roe(t,n,e){return new Foe(t,n,e)}(o,f,this._normalizer),this._triggerCache[s]=a}this._transitionEngine.registerTrigger(e,o,a)}register(n,e){this._transitionEngine.register(n,e)}destroy(n,e){this._transitionEngine.destroy(n,e)}onInsert(n,e,i,o){this._transitionEngine.insertNode(n,e,i,o)}onRemove(n,e,i){this._transitionEngine.removeNode(n,e,i)}disableAnimations(n,e){this._transitionEngine.markElementAsDisabled(n,e)}process(n,e,i,o){if("@"==i.charAt(0)){const[r,s]=dN(i);this._timelineEngine.command(r,e,s,o)}else this._transitionEngine.trigger(n,e,i,o)}listen(n,e,i,o,r){if("@"==i.charAt(0)){const[s,a]=dN(i);return this._timelineEngine.listen(s,e,a,r)}return this._transitionEngine.listen(n,e,i,o,r)}flush(n=-1){this._transitionEngine.flush(n)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(n){this._transitionEngine.afterFlushAnimationsDone(n)}}let ere=(()=>{class t{_element;_startStyles;_endStyles;static initialStylesByElement=new WeakMap;_state=0;_initialStyles;constructor(e,i,o){this._element=e,this._startStyles=i,this._endStyles=o;let r=t.initialStylesByElement.get(e);r||t.initialStylesByElement.set(e,r=new Map),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&Hr(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(Hr(this._element,this._initialStyles),this._endStyles&&(Hr(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(t.initialStylesByElement.delete(this._element),this._startStyles&&(jl(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(jl(this._element,this._endStyles),this._endStyles=null),Hr(this._element,this._initialStyles),this._state=3)}}return t})();function ux(t){let n=null;return t.forEach((e,i)=>{(function tre(t){return"display"===t||"position"===t})(i)&&(n=n||new Map,n.set(i,e))}),n}class FN{element;keyframes;options;_specialStyles;_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_duration;_delay;_initialized=!1;_finished=!1;_started=!1;_destroyed=!1;_finalKeyframe;_originalOnDoneFns=[];_originalOnStartFns=[];domPlayer=null;time=0;parentPlayer=null;currentSnapshot=new Map;constructor(n,e,i,o){this.element=n,this.keyframes=e,this.options=i,this._specialStyles=o,this._duration=i.duration,this._delay=i.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this._buildPlayer()&&this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return this.domPlayer;this._initialized=!0;const n=this.keyframes,e=this._triggerWebAnimation(this.element,n,this.options);if(!e)return this._onFinish(),null;this.domPlayer=e,this._finalKeyframe=n.length?n[n.length-1]:new Map;const i=()=>this._onFinish();return e.addEventListener("finish",i),this.onDestroy(()=>{e.removeEventListener("finish",i)}),e}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer?.pause()}_convertKeyframesToObject(n){const e=[];return n.forEach(i=>{e.push(Object.fromEntries(i))}),e}_triggerWebAnimation(n,e,i){const o=this._convertKeyframesToObject(e);try{return n.animate(o,i)}catch{return null}}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}play(){const n=this._buildPlayer();n&&(this.hasStarted()||(this._onStartFns.forEach(e=>e()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),n.play())}pause(){this.init(),this.domPlayer?.pause()}finish(){this.init(),this.domPlayer&&(this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish())}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer?.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}setPosition(n){this.domPlayer||this.init(),this.domPlayer&&(this.domPlayer.currentTime=n*this.time)}getPosition(){return this.domPlayer?+(this.domPlayer.currentTime??0)/this.time:this._initialized?1:0}get totalTime(){return this._delay+this._duration}beforeDestroy(){const n=new Map;this.hasStarted()&&this._finalKeyframe.forEach((i,o)=>{"offset"!==o&&n.set(o,this._finished?i:Xw(this.element,o))}),this.currentSnapshot=n}triggerCallback(n){const e="start"===n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}class NN{validateStyleProperty(n){return!0}validateAnimatableStyleProperty(n){return!0}containsElement(n,e){return hN(n,e)}getParentElement(n){return $w(n)}query(n,e,i){return fN(n,e,i)}computeStyle(n,e,i){return Xw(n,e)}animate(n,e,i,o,r,s=[]){const l={duration:i,delay:o,fill:0==o?"both":"forwards"};r&&(l.easing=r);const c=new Map,f=s.filter(_=>_ instanceof FN);(function soe(t,n){return 0===t||0===n})(i,o)&&f.forEach(_=>{_.currentSnapshot.forEach((w,k)=>c.set(k,w))});let m=function ioe(t){return t.length?t[0]instanceof Map?t:t.map(n=>new Map(Object.entries(n))):[]}(e).map(_=>new Map(_));m=function aoe(t,n,e){if(e.size&&n.length){let i=n[0],o=[];if(e.forEach((r,s)=>{i.has(s)||o.push(s),i.set(s,r)}),o.length)for(let r=1;rs.set(a,Xw(t,a)))}}return n}(n,m,c);const g=function Joe(t,n){let e=null,i=null;return Array.isArray(n)&&n.length?(e=ux(n[0]),n.length>1&&(i=ux(n[n.length-1]))):n instanceof Map&&(e=ux(n)),e||i?new ere(t,e,i):null}(n,m);return new FN(n,m,l,g)}}const LN="@.disabled";class BN{namespaceId;delegate;engine;_onDestroy;\u0275type=0;constructor(n,e,i,o){this.namespaceId=n,this.delegate=e,this.engine=i,this._onDestroy=o}get data(){return this.delegate.data}destroyNode(n){this.delegate.destroyNode?.(n)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(n,e){return this.delegate.createElement(n,e)}createComment(n){return this.delegate.createComment(n)}createText(n){return this.delegate.createText(n)}appendChild(n,e){this.delegate.appendChild(n,e),this.engine.onInsert(this.namespaceId,e,n,!1)}insertBefore(n,e,i,o=!0){this.delegate.insertBefore(n,e,i),this.engine.onInsert(this.namespaceId,e,n,o)}removeChild(n,e,i,o){o?this.delegate.removeChild(n,e,i,o):this.parentNode(e)&&this.engine.onRemove(this.namespaceId,e,this.delegate)}selectRootElement(n,e){return this.delegate.selectRootElement(n,e)}parentNode(n){return this.delegate.parentNode(n)}nextSibling(n){return this.delegate.nextSibling(n)}setAttribute(n,e,i,o){this.delegate.setAttribute(n,e,i,o)}removeAttribute(n,e,i){this.delegate.removeAttribute(n,e,i)}addClass(n,e){this.delegate.addClass(n,e)}removeClass(n,e){this.delegate.removeClass(n,e)}setStyle(n,e,i,o){this.delegate.setStyle(n,e,i,o)}removeStyle(n,e,i){this.delegate.removeStyle(n,e,i)}setProperty(n,e,i){"@"==e.charAt(0)&&e==LN?this.disableAnimations(n,!!i):this.delegate.setProperty(n,e,i)}setValue(n,e){this.delegate.setValue(n,e)}listen(n,e,i,o){return this.delegate.listen(n,e,i,o)}disableAnimations(n,e){this.engine.disableAnimations(n,e)}}class nre extends BN{factory;constructor(n,e,i,o,r){super(e,i,o,r),this.factory=n,this.namespaceId=e}setProperty(n,e,i){"@"==e.charAt(0)?"."==e.charAt(1)&&e==LN?this.disableAnimations(n,i=void 0===i||!!i):this.engine.process(this.namespaceId,n,e.slice(1),i):this.delegate.setProperty(n,e,i)}listen(n,e,i,o){if("@"==e.charAt(0)){const r=function ire(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}(n);let s=e.slice(1),a="";return"@"!=s.charAt(0)&&([s,a]=function ore(t){const n=t.indexOf(".");return[t.substring(0,n),t.slice(n+1)]}(s)),this.engine.listen(this.namespaceId,r,s,a,l=>{this.factory.scheduleListenerCallback(l._data||-1,i,l)})}return this.delegate.listen(n,e,i,o)}}class rre{delegate;engine;_zone;_currentId=0;_microtaskId=1;_animationCallbacksBuffer=[];_rendererCache=new Map;_cdRecurDepth=0;constructor(n,e,i){this.delegate=n,this.engine=e,this._zone=i,e.onRemovalComplete=(o,r)=>{r?.removeChild(null,o)}}createRenderer(n,e){const o=this.delegate.createRenderer(n,e);if(!n||!e?.data?.animation){const c=this._rendererCache;let f=c.get(o);return f||(f=new BN("",o,this.engine,()=>c.delete(o)),c.set(o,f)),f}const r=e.id,s=e.id+"-"+this._currentId;this._currentId++,this.engine.register(s,n);const a=c=>{Array.isArray(c)?c.forEach(a):this.engine.registerTrigger(r,s,n,c.name,c)};return e.data.animation.forEach(a),new nre(this,s,o,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(n,e,i){if(n>=0&&ne(i));const o=this._animationCallbacksBuffer;0==o.length&&queueMicrotask(()=>{this._zone.run(()=>{o.forEach(r=>{const[s,a]=r;s(a)}),this._animationCallbacksBuffer=[]})}),o.push([e,i])}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}componentReplaced(n){this.engine.flush(),this.delegate.componentReplaced?.(n)}}const VN=[{provide:Jw,useFactory:function lre(){return new vN}},{provide:lf,useClass:(()=>{class t extends lf{constructor(e,i,o){super(e,i,o)}ngOnDestroy(){this.flush()}static \u0275fac=function(i){return new(i||t)(ce(et),ce(Qw),ce(Jw))};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})()},{provide:Lo,useFactory:function cre(){return new rre(D(Ow),D(lf),D(_e))}}],HN=[{provide:Qw,useClass:Zw},{provide:Rm,useValue:"NoopAnimations"},...VN],hx=[{provide:Qw,useFactory:()=>new NN},{provide:Rm,useFactory:()=>"BrowserAnimations"},...VN];let dre=(()=>{class t{static withConfig(e){return{ngModule:t,providers:e.disableAnimations?HN:hx}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:hx,imports:[oN]})}return t})();function ma(t){return this instanceof ma?(this.v=t,this):new ma(t)}function $N(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=function gx(t){var n="function"==typeof Symbol&&Symbol.iterator,e=n&&t[n],i=0;if(e)return e.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),e={},i("next"),i("throw"),i("return"),e[Symbol.asyncIterator]=function(){return this},e);function i(r){e[r]=t[r]&&function(s){return new Promise(function(a,l){!function o(r,s,a,l){Promise.resolve(l).then(function(c){r({value:c,done:a})},s)}(a,l,(s=t[r](s)).done,s.value)})}}}"function"==typeof SuppressedError&&SuppressedError;const WN=t=>t&&"number"==typeof t.length&&"function"!=typeof t;function GN(t){return cn(t?.then)}function qN(t){return cn(t[sy])}function KN(t){return Symbol.asyncIterator&&cn(t?.[Symbol.asyncIterator])}function YN(t){return new TypeError(`You provided ${null!==t&&"object"==typeof t?"an invalid object":`'${t}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const XN=function Lre(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function ZN(t){return cn(t?.[XN])}function QN(t){return function zN(t,n,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o,i=e.apply(t,n||[]),r=[];return o=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",function s(_){return function(w){return Promise.resolve(w).then(_,m)}}),o[Symbol.asyncIterator]=function(){return this},o;function a(_,w){i[_]&&(o[_]=function(k){return new Promise(function(T,I){r.push([_,k,T,I])>1||l(_,k)})},w&&(o[_]=w(o[_])))}function l(_,w){try{!function c(_){_.value instanceof ma?Promise.resolve(_.value.v).then(f,m):g(r[0][2],_)}(i[_](w))}catch(k){g(r[0][3],k)}}function f(_){l("next",_)}function m(_){l("throw",_)}function g(_,w){_(w),r.shift(),r.length&&l(r[0][0],r[0][1])}}(this,arguments,function*(){const e=t.getReader();try{for(;;){const{value:i,done:o}=yield ma(e.read());if(o)return yield ma(void 0);yield yield ma(i)}}finally{e.releaseLock()}})}function JN(t){return cn(t?.getReader)}function ji(t){if(t instanceof Ft)return t;if(null!=t){if(qN(t))return function Bre(t){return new Ft(n=>{const e=t[sy]();if(cn(e.subscribe))return e.subscribe(n);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(t);if(WN(t))return function Vre(t){return new Ft(n=>{for(let e=0;e{t.then(e=>{n.closed||(n.next(e),n.complete())},e=>n.error(e)).then(null,FD)})}(t);if(KN(t))return eL(t);if(ZN(t))return function jre(t){return new Ft(n=>{for(const e of t)if(n.next(e),n.closed)return;n.complete()})}(t);if(JN(t))return function Ure(t){return eL(QN(t))}(t)}throw YN(t)}function eL(t){return new Ft(n=>{(function zre(t,n){var e,i,o,r;return function jN(t,n,e,i){return new(e||(e=Promise))(function(r,s){function a(f){try{c(i.next(f))}catch(m){s(m)}}function l(f){try{c(i.throw(f))}catch(m){s(m)}}function c(f){f.done?r(f.value):function o(r){return r instanceof e?r:new e(function(s){s(r)})}(f.value).then(a,l)}c((i=i.apply(t,n||[])).next())})}(this,void 0,void 0,function*(){try{for(e=$N(t);!(i=yield e.next()).done;)if(n.next(i.value),n.closed)return}catch(s){o={error:s}}finally{try{i&&!i.done&&(r=e.return)&&(yield r.call(e))}finally{if(o)throw o.error}}n.complete()})})(t,n).catch(e=>n.error(e))})}function tn(t,n){return Mn((e,i)=>{let o=null,r=0,s=!1;const a=()=>s&&!o&&i.complete();e.subscribe(dn(i,l=>{o?.unsubscribe();let c=0;const f=r++;ji(t(l,f)).subscribe(o=dn(i,m=>i.next(n?n(l,m,f,c++):m),()=>{o=null,a()}))},()=>{s=!0,a()}))})}function B_(t){return Mn((n,e)=>{try{n.subscribe(e)}finally{e.add(t)}})}function Ms(t,n,e,i=0,o=!1){const r=n.schedule(function(){e(),o?t.add(this.schedule(null,i)):this.unsubscribe()},i);if(t.add(r),!o)return r}function It(t,n,e=1/0){return cn(n)?It((i,o)=>Se((r,s)=>n(i,r,o,s))(ji(t(i,o))),e):("number"==typeof n&&(e=n),Mn((i,o)=>function $re(t,n,e,i,o,r,s,a){const l=[];let c=0,f=0,m=!1;const g=()=>{m&&!l.length&&!c&&n.complete()},_=k=>c{r&&n.next(k),c++;let T=!1;ji(e(k,f++)).subscribe(dn(n,I=>{o?.(I),r?_(I):n.next(I)},()=>{T=!0},void 0,()=>{if(T)try{for(c--;l.length&&cw(I)):w(I)}g()}catch(I){n.error(I)}}))};return t.subscribe(dn(n,_,()=>{m=!0,g()})),()=>{a?.()}}(i,o,t,e)))}function cf(t,n){return cn(n)?It(t,n,1):It(t,1)}function Tn(t,n){return Mn((e,i)=>{let o=0;e.subscribe(dn(i,r=>t.call(n,r,o++)&&i.next(r)))})}function tL(t,n=0){return Mn((e,i)=>{e.subscribe(dn(i,o=>Ms(i,t,()=>i.next(o),n),()=>Ms(i,t,()=>i.complete(),n),o=>Ms(i,t,()=>i.error(o),n)))})}function nL(t,n=0){return Mn((e,i)=>{i.add(t.schedule(()=>e.subscribe(i),n))})}function iL(t,n){if(!t)throw new Error("Iterable cannot be null");return new Ft(e=>{Ms(e,n,()=>{const i=t[Symbol.asyncIterator]();Ms(e,n,()=>{i.next().then(o=>{o.done?e.complete():e.next(o.value)})},0,!0)})})}function Kn(t,n){return n?function Xre(t,n){if(null!=t){if(qN(t))return function Wre(t,n){return ji(t).pipe(nL(n),tL(n))}(t,n);if(WN(t))return function qre(t,n){return new Ft(e=>{let i=0;return n.schedule(function(){i===t.length?e.complete():(e.next(t[i++]),e.closed||this.schedule())})})}(t,n);if(GN(t))return function Gre(t,n){return ji(t).pipe(nL(n),tL(n))}(t,n);if(KN(t))return iL(t,n);if(ZN(t))return function Kre(t,n){return new Ft(e=>{let i;return Ms(e,n,()=>{i=t[XN](),Ms(e,n,()=>{let o,r;try{({value:o,done:r}=i.next())}catch(s){return void e.error(s)}r?e.complete():e.next(o)},0,!0)}),()=>cn(i?.return)&&i.return()})}(t,n);if(JN(t))return function Yre(t,n){return iL(QN(t),n)}(t,n)}throw YN(t)}(t,n):ji(t)}function oL(t){return t&&cn(t.schedule)}function bx(t){return t[t.length-1]}function rL(t){return cn(bx(t))?t.pop():void 0}function df(t){return oL(bx(t))?t.pop():void 0}function ae(...t){return Kn(t,df(t))}class Uo{headers;normalizedNames=new Map;lazyInit;lazyUpdate=null;constructor(n){n?"string"==typeof n?this.lazyInit=()=>{this.headers=new Map,n.split("\n").forEach(e=>{const i=e.indexOf(":");if(i>0){const o=e.slice(0,i),r=e.slice(i+1).trim();this.addHeaderEntry(o,r)}})}:typeof Headers<"u"&&n instanceof Headers?(this.headers=new Map,n.forEach((e,i)=>{this.addHeaderEntry(i,e)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(n).forEach(([e,i])=>{this.setHeaderEntries(e,i)})}:this.headers=new Map}has(n){return this.init(),this.headers.has(n.toLowerCase())}get(n){this.init();const e=this.headers.get(n.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(n){return this.init(),this.headers.get(n.toLowerCase())||null}append(n,e){return this.clone({name:n,value:e,op:"a"})}set(n,e){return this.clone({name:n,value:e,op:"s"})}delete(n,e){return this.clone({name:n,value:e,op:"d"})}maybeSetNormalizedName(n,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,n)}init(){this.lazyInit&&(this.lazyInit instanceof Uo?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(n=>this.applyUpdate(n)),this.lazyUpdate=null))}copyFrom(n){n.init(),Array.from(n.headers.keys()).forEach(e=>{this.headers.set(e,n.headers.get(e)),this.normalizedNames.set(e,n.normalizedNames.get(e))})}clone(n){const e=new Uo;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof Uo?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([n]),e}applyUpdate(n){const e=n.name.toLowerCase();switch(n.op){case"a":case"s":let i=n.value;if("string"==typeof i&&(i=[i]),0===i.length)return;this.maybeSetNormalizedName(n.name,e);const o=("a"===n.op?this.headers.get(e):void 0)||[];o.push(...i),this.headers.set(e,o);break;case"d":const r=n.value;if(r){let s=this.headers.get(e);if(!s)return;s=s.filter(a=>-1===r.indexOf(a)),0===s.length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,s)}else this.headers.delete(e),this.normalizedNames.delete(e)}}addHeaderEntry(n,e){const i=n.toLowerCase();this.maybeSetNormalizedName(n,i),this.headers.has(i)?this.headers.get(i).push(e):this.headers.set(i,[e])}setHeaderEntries(n,e){const i=(Array.isArray(e)?e:[e]).map(r=>r.toString()),o=n.toLowerCase();this.headers.set(o,i),this.maybeSetNormalizedName(n,o)}forEach(n){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>n(this.normalizedNames.get(e),this.headers.get(e)))}}class Qre{map=new Map;set(n,e){return this.map.set(n,e),this}get(n){return this.map.has(n)||this.map.set(n,n.defaultValue()),this.map.get(n)}delete(n){return this.map.delete(n),this}has(n){return this.map.has(n)}keys(){return this.map.keys()}}class Jre{encodeKey(n){return aL(n)}encodeValue(n){return aL(n)}decodeKey(n){return decodeURIComponent(n)}decodeValue(n){return decodeURIComponent(n)}}const tse=/%(\d[a-f0-9])/gi,nse={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function aL(t){return encodeURIComponent(t).replace(tse,(n,e)=>nse[e]??n)}function V_(t){return`${t}`}class ga{map;encoder;updates=null;cloneFrom=null;constructor(n={}){if(this.encoder=n.encoder||new Jre,n.fromString){if(n.fromObject)throw new X(2805,!1);this.map=function ese(t,n){const e=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(o=>{const r=o.indexOf("="),[s,a]=-1==r?[n.decodeKey(o),""]:[n.decodeKey(o.slice(0,r)),n.decodeValue(o.slice(r+1))],l=e.get(s)||[];l.push(a),e.set(s,l)}),e}(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach(e=>{const i=n.fromObject[e],o=Array.isArray(i)?i.map(V_):[V_(i)];this.map.set(e,o)})):this.map=null}has(n){return this.init(),this.map.has(n)}get(n){this.init();const e=this.map.get(n);return e?e[0]:null}getAll(n){return this.init(),this.map.get(n)||null}keys(){return this.init(),Array.from(this.map.keys())}append(n,e){return this.clone({param:n,value:e,op:"a"})}appendAll(n){const e=[];return Object.keys(n).forEach(i=>{const o=n[i];Array.isArray(o)?o.forEach(r=>{e.push({param:i,value:r,op:"a"})}):e.push({param:i,value:o,op:"a"})}),this.clone(e)}set(n,e){return this.clone({param:n,value:e,op:"s"})}delete(n,e){return this.clone({param:n,value:e,op:"d"})}toString(){return this.init(),this.keys().map(n=>{const e=this.encoder.encodeKey(n);return this.map.get(n).map(i=>e+"="+this.encoder.encodeValue(i)).join("&")}).filter(n=>""!==n).join("&")}clone(n){const e=new ga({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat(n),e}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(n=>this.map.set(n,this.cloneFrom.map.get(n))),this.updates.forEach(n=>{switch(n.op){case"a":case"s":const e=("a"===n.op?this.map.get(n.param):void 0)||[];e.push(V_(n.value)),this.map.set(n.param,e);break;case"d":if(void 0===n.value){this.map.delete(n.param);break}{let i=this.map.get(n.param)||[];const o=i.indexOf(V_(n.value));-1!==o&&i.splice(o,1),i.length>0?this.map.set(n.param,i):this.map.delete(n.param)}}}),this.cloneFrom=this.updates=null)}}function lL(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function cL(t){return typeof Blob<"u"&&t instanceof Blob}function dL(t){return typeof FormData<"u"&&t instanceof FormData}const uf="Content-Type",uL="text/plain",hL="application/json",fL=`${hL}, ${uL}, */*`;class hf{url;body=null;headers;context;reportProgress=!1;withCredentials=!1;credentials;keepalive=!1;cache;priority;mode;redirect;referrer;integrity;referrerPolicy;responseType="json";method;params;urlWithParams;transferCache;timeout;constructor(n,e,i,o){let r;if(this.url=e,this.method=n.toUpperCase(),function ise(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||o?(this.body=void 0!==i?i:null,r=o):r=i,r){if(this.reportProgress=!!r.reportProgress,this.withCredentials=!!r.withCredentials,this.keepalive=!!r.keepalive,r.responseType&&(this.responseType=r.responseType),r.headers&&(this.headers=r.headers),r.context&&(this.context=r.context),r.params&&(this.params=r.params),r.priority&&(this.priority=r.priority),r.cache&&(this.cache=r.cache),r.credentials&&(this.credentials=r.credentials),"number"==typeof r.timeout){if(r.timeout<1||!Number.isInteger(r.timeout))throw new X(2822,"");this.timeout=r.timeout}r.mode&&(this.mode=r.mode),r.redirect&&(this.redirect=r.redirect),r.integrity&&(this.integrity=r.integrity),r.referrer&&(this.referrer=r.referrer),r.referrerPolicy&&(this.referrerPolicy=r.referrerPolicy),this.transferCache=r.transferCache}if(this.headers??=new Uo,this.context??=new Qre,this.params){const s=this.params.toString();if(0===s.length)this.urlWithParams=e;else{const a=e.indexOf("?");this.urlWithParams=e+(-1===a?"?":aee.set(ie,n.setHeaders[ie]),W)),n.setParams&&(Y=Object.keys(n.setParams).reduce((ee,ie)=>ee.set(ie,n.setParams[ie]),Y)),new hf(e,i,T,{params:Y,headers:W,context:K,reportProgress:R,responseType:o,withCredentials:I,transferCache:w,keepalive:r,cache:a,priority:s,timeout:k,mode:l,redirect:c,credentials:f,referrer:m,integrity:g,referrerPolicy:_})}}var _a=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}(_a||{});class vx{headers;status;statusText;url;ok;type;redirected;responseType;constructor(n,e=200,i="OK"){this.headers=n.headers||new Uo,this.status=void 0!==n.status?n.status:e,this.statusText=n.statusText||i,this.url=n.url||null,this.redirected=n.redirected,this.responseType=n.responseType,this.ok=this.status>=200&&this.status<300}}class j_ extends vx{constructor(n={}){super(n)}type=_a.ResponseHeader;clone(n={}){return new j_({headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}class ff extends vx{body;constructor(n={}){super(n),this.body=void 0!==n.body?n.body:null}type=_a.Response;clone(n={}){return new ff({body:void 0!==n.body?n.body:this.body,headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0,redirected:n.redirected??this.redirected,responseType:n.responseType??this.responseType})}}class zl extends vx{name="HttpErrorResponse";message;error;ok=!1;constructor(n){super(n,0,"Unknown Error"),this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${n.url||"(unknown url)"}`:`Http failure response for ${n.url||"(unknown url)"}: ${n.status} ${n.statusText}`,this.error=n.error||null}}const mL=new Z(""),dse=/^\)\]\}',?\n/;let gL=(()=>{class t{xhrFactory;tracingService=D(oa,{optional:!0});constructor(e){this.xhrFactory=e}maybePropagateTrace(e){return this.tracingService?.propagate?this.tracingService.propagate(e):e}handle(e){if("JSONP"===e.method)throw new X(-2800,!1);const i=this.xhrFactory;return ae(null).pipe(tn(()=>new Ft(r=>{const s=i.build();if(s.open(e.method,e.urlWithParams),e.withCredentials&&(s.withCredentials=!0),e.headers.forEach((T,I)=>s.setRequestHeader(T,I.join(","))),e.headers.has("Accept")||s.setRequestHeader("Accept",fL),!e.headers.has(uf)){const T=e.detectContentTypeHeader();null!==T&&s.setRequestHeader(uf,T)}if(e.timeout&&(s.timeout=e.timeout),e.responseType){const T=e.responseType.toLowerCase();s.responseType="json"!==T?T:"text"}const a=e.serializeBody();let l=null;const c=()=>{if(null!==l)return l;const T=s.statusText||"OK",I=new Uo(s.getAllResponseHeaders());return l=new j_({headers:I,status:s.status,statusText:T,url:s.responseURL||e.url}),l},f=this.maybePropagateTrace(()=>{let{headers:T,status:I,statusText:R,url:W}=c(),Y=null;204!==I&&(Y=typeof s.response>"u"?s.responseText:s.response),0===I&&(I=Y?200:0);let K=I>=200&&I<300;if("json"===e.responseType&&"string"==typeof Y){const ee=Y;Y=Y.replace(dse,"");try{Y=""!==Y?JSON.parse(Y):null}catch(ie){Y=ee,K&&(K=!1,Y={error:ie,text:Y})}}K?(r.next(new ff({body:Y,headers:T,status:I,statusText:R,url:W||void 0})),r.complete()):r.error(new zl({error:Y,headers:T,status:I,statusText:R,url:W||void 0}))}),m=this.maybePropagateTrace(T=>{const{url:I}=c(),R=new zl({error:T,status:s.status||0,statusText:s.statusText||"Unknown Error",url:I||void 0});r.error(R)});let g=m;e.timeout&&(g=this.maybePropagateTrace(T=>{const{url:I}=c(),R=new zl({error:new DOMException("Request timed out","TimeoutError"),status:s.status||0,statusText:s.statusText||"Request timeout",url:I||void 0});r.error(R)}));let _=!1;const w=this.maybePropagateTrace(T=>{_||(r.next(c()),_=!0);let I={type:_a.DownloadProgress,loaded:T.loaded};T.lengthComputable&&(I.total=T.total),"text"===e.responseType&&s.responseText&&(I.partialText=s.responseText),r.next(I)}),k=this.maybePropagateTrace(T=>{let I={type:_a.UploadProgress,loaded:T.loaded};T.lengthComputable&&(I.total=T.total),r.next(I)});return s.addEventListener("load",f),s.addEventListener("error",m),s.addEventListener("timeout",g),s.addEventListener("abort",m),e.reportProgress&&(s.addEventListener("progress",w),null!==a&&s.upload&&s.upload.addEventListener("progress",k)),s.send(a),r.next({type:_a.Sent}),()=>{s.removeEventListener("error",m),s.removeEventListener("abort",m),s.removeEventListener("load",f),s.removeEventListener("timeout",g),e.reportProgress&&(s.removeEventListener("progress",w),null!==a&&s.upload&&s.upload.removeEventListener("progress",k)),s.readyState!==s.DONE&&s.abort()}})))}static \u0275fac=function(i){return new(i||t)(ce(YM))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function _L(t,n){return n(t)}function use(t,n){return(e,i)=>n.intercept(e,{handle:o=>t(o,i)})}const fse=new Z(""),pf=new Z("",{factory:()=>[]}),pse=new Z(""),bL=new Z("",{factory:()=>!0});function mse(){let t=null;return(n,e)=>{null===t&&(t=(D(fse,{optional:!0})??[]).reduceRight(use,_L));const i=D(hm);if(D(bL)){const r=i.add();return t(n,e).pipe(B_(r))}return t(n,e)}}let U_=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(gL),o},providedIn:"root"})}return t})(),wx=(()=>{class t{backend;injector;chain=null;pendingTasks=D(hm);contributeToStability=D(bL);constructor(e,i){this.backend=e,this.injector=i}handle(e){if(null===this.chain){const i=Array.from(new Set([...this.injector.get(pf),...this.injector.get(pse,[])]));this.chain=i.reduceRight((o,r)=>function hse(t,n,e){return(i,o)=>Qi(e,()=>n(i,r=>t(r,o)))}(o,r,this.injector),_L)}if(this.contributeToStability){const i=this.pendingTasks.add();return this.chain(e,o=>this.backend.handle(o)).pipe(B_(i))}return this.chain(e,i=>this.backend.handle(i))}static \u0275fac=function(i){return new(i||t)(ce(U_),ce(zn))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),xx=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(wx),o},providedIn:"root"})}return t})();function Sx(t,n){return{body:n,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials,credentials:t.credentials,transferCache:t.transferCache,timeout:t.timeout,keepalive:t.keepalive,priority:t.priority,cache:t.cache,mode:t.mode,redirect:t.redirect,integrity:t.integrity,referrer:t.referrer,referrerPolicy:t.referrerPolicy}}let ba=(()=>{class t{handler;constructor(e){this.handler=e}request(e,i,o={}){let r;if(e instanceof hf)r=e;else{let l,c;l=o.headers instanceof Uo?o.headers:new Uo(o.headers),o.params&&(c=o.params instanceof ga?o.params:new ga({fromObject:o.params})),r=new hf(e,i,void 0!==o.body?o.body:null,{headers:l,context:o.context,params:c,reportProgress:o.reportProgress,responseType:o.responseType||"json",withCredentials:o.withCredentials,transferCache:o.transferCache,keepalive:o.keepalive,priority:o.priority,cache:o.cache,mode:o.mode,redirect:o.redirect,credentials:o.credentials,referrer:o.referrer,referrerPolicy:o.referrerPolicy,integrity:o.integrity,timeout:o.timeout})}const s=ae(r).pipe(cf(l=>this.handler.handle(l)));if(e instanceof hf||"events"===o.observe)return s;const a=s.pipe(Tn(l=>l instanceof ff));switch(o.observe||"body"){case"body":switch(r.responseType){case"arraybuffer":return a.pipe(Se(l=>{if(null!==l.body&&!(l.body instanceof ArrayBuffer))throw new X(2806,!1);return l.body}));case"blob":return a.pipe(Se(l=>{if(null!==l.body&&!(l.body instanceof Blob))throw new X(2807,!1);return l.body}));case"text":return a.pipe(Se(l=>{if(null!==l.body&&"string"!=typeof l.body)throw new X(2808,!1);return l.body}));default:return a.pipe(Se(l=>l.body))}case"response":return a;default:throw new X(2809,!1)}}delete(e,i={}){return this.request("DELETE",e,i)}get(e,i={}){return this.request("GET",e,i)}head(e,i={}){return this.request("HEAD",e,i)}jsonp(e,i){return this.request("JSONP",e,{params:(new ga).append(i,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(e,i={}){return this.request("OPTIONS",e,i)}patch(e,i,o={}){return this.request("PATCH",e,Sx(o,i))}post(e,i,o={}){return this.request("POST",e,Sx(o,i))}put(e,i,o={}){return this.request("PUT",e,Sx(o,i))}static \u0275fac=function(i){return new(i||t)(ce(xx))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const yL=new Z("",{factory:()=>!0}),CL=new Z("",{factory:()=>"XSRF-TOKEN"}),wL=new Z("",{factory:()=>"X-XSRF-TOKEN"});let Cse=(()=>{class t{cookieName=D(CL);doc=D(et);lastCookieString="";lastToken=null;parseCount=0;getToken(){const e=this.doc.cookie||"";return e!==this.lastCookieString&&(this.parseCount++,this.lastToken=KM(e,this.cookieName),this.lastCookieString=e),this.lastToken}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),wse=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(Cse),o},providedIn:"root"})}return t})();function xse(t,n){if(!D(yL)||"GET"===t.method||"HEAD"===t.method)return n(t);try{const o=D(pm).href,{origin:r}=new URL(o),{origin:s}=new URL(t.url,r);if(r!==s)return n(t)}catch{return n(t)}const e=D(wse).getToken(),i=D(wL);return null!=e&&!t.headers.has(i)&&(t=t.clone({headers:t.headers.set(i,e)})),n(t)}var va=function(t){return t[t.Interceptors=0]="Interceptors",t[t.LegacyInterceptors=1]="LegacyInterceptors",t[t.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",t[t.NoXsrfProtection=3]="NoXsrfProtection",t[t.JsonpSupport=4]="JsonpSupport",t[t.RequestsMadeViaParent=5]="RequestsMadeViaParent",t[t.Fetch=6]="Fetch",t}(va||{});function $l(t,n){return{\u0275kind:t,\u0275providers:n}}function Sse(...t){const n=[ba,wx,{provide:xx,useExisting:wx},{provide:U_,useFactory:()=>D(mL,{optional:!0})??D(gL)},{provide:pf,useValue:xse,multi:!0}];for(const e of t)n.push(...e.\u0275providers);return Hu(n)}const xL=new Z("");function jr(t){return!!t&&(t instanceof Ft||cn(t.lift)&&cn(t.subscribe))}const{isArray:Dse}=Array,{getPrototypeOf:Mse,prototype:Tse,keys:Ese}=Object;function SL(t){if(1===t.length){const n=t[0];if(Dse(n))return{args:n,keys:null};if(function Pse(t){return t&&"object"==typeof t&&Mse(t)===Tse}(n)){const e=Ese(n);return{args:e.map(i=>n[i]),keys:e}}}return{args:t,keys:null}}const{isArray:Ise}=Array;function kL(t){return Se(n=>function Ose(t,n){return Ise(n)?t(...n):t(n)}(t,n))}function DL(t,n){return t.reduce((e,i,o)=>(e[i]=n[o],e),{})}function kx(...t){const n=df(t),e=rL(t),{args:i,keys:o}=SL(t);if(0===i.length)return Kn([],n);const r=new Ft(function Ase(t,n,e=Ga){return i=>{ML(n,()=>{const{length:o}=t,r=new Array(o);let s=o,a=o;for(let l=0;l{const c=Kn(t[l],n);let f=!1;c.subscribe(dn(i,m=>{r[l]=m,f||(f=!0,a--),a||i.next(e(r.slice()))},()=>{--s||i.complete()}))},i)},i)}}(i,n,o?s=>DL(o,s):Ga));return e?r.pipe(kL(e)):r}function ML(t,n,e){t?Ms(e,t,n):n()}const Dx=ty(t=>function(){t(this),this.name="EmptyError",this.message="no elements in sequence"});function Vd(t=1/0){return It(Ga,t)}function Ts(...t){return function Rse(){return Vd(1)}()(Kn(t,df(t)))}function ya(t){return new Ft(n=>{ji(t()).subscribe(n)})}const Oi=new Ft(t=>t.complete());function mr(t,n){const e=cn(t)?t:()=>t,i=o=>o.error(e());return new Ft(n?o=>n.schedule(i,0,o):i)}function Cn(t){return t<=0?()=>Oi:Mn((n,e)=>{let i=0;n.subscribe(dn(e,o=>{++i<=t&&(e.next(o),t<=i&&e.complete())}))})}function Bse(t=Vse){return Mn((n,e)=>{let i=!1;n.subscribe(dn(e,o=>{i=!0,e.next(o)},()=>i?e.complete():e.error(t())))})}function Vse(){return new Dx}function Ur(t,n){const e=arguments.length>=2;return i=>i.pipe(t?Tn((o,r)=>t(o,r,i)):Ga,Cn(1),e?function Lse(t){return Mn((n,e)=>{let i=!1;n.subscribe(dn(e,o=>{i=!0,e.next(o)},()=>{i||e.next(t),e.complete()}))})}(n):Bse(()=>new Dx))}function si(...t){const n=df(t);return Mn((e,i)=>{(n?Ts(t,e,n):Ts(t,e)).subscribe(i)})}function fn(t){return Mn((n,e)=>{ji(t).subscribe(dn(e,()=>e.complete(),Np)),!e.closed&&n.subscribe(e)})}function ai(t,n,e){const i=cn(t)||n||e?{next:t,error:n,complete:e}:t;return i?Mn((o,r)=>{var s;null===(s=i.subscribe)||void 0===s||s.call(i);let a=!0;o.subscribe(dn(r,l=>{var c;null===(c=i.next)||void 0===c||c.call(i,l),r.next(l)},()=>{var l;a=!1,null===(l=i.complete)||void 0===l||l.call(i),r.complete()},l=>{var c;a=!1,null===(c=i.error)||void 0===c||c.call(i,l),r.error(l)},()=>{var l,c;a&&(null===(l=i.unsubscribe)||void 0===l||l.call(i)),null===(c=i.finalize)||void 0===c||c.call(i)}))}):Ga}function TL(t){return t<=0?()=>Oi:Mn((n,e)=>{let i=[];n.subscribe(dn(e,o=>{i.push(o),t{for(const o of i)e.next(o);e.complete()},void 0,()=>{i=null}))})}function Ui(t){return Mn((n,e)=>{let r,i=null,o=!1;i=n.subscribe(dn(e,void 0,void 0,s=>{r=ji(t(s,Ui(t)(n))),i?(i.unsubscribe(),i=null,r.subscribe(e)):o=!0})),o&&(i.unsubscribe(),i=null,r.subscribe(e))})}let Zse=(()=>{class t{_doc;constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Mx=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:function(i){let o=null;return o=i?new(i||t):ce(tae),o},providedIn:"root"})}return t})(),tae=(()=>{class t extends Mx{_doc;constructor(e){super(),this._doc=e}sanitize(e,i){if(null==i)return null;switch(e){case bi.NONE:return i;case bi.HTML:return Fr(i,"HTML")?Mo(i):eE(this._doc,String(i)).toString();case bi.STYLE:return Fr(i,"Style")?Mo(i):i;case bi.SCRIPT:if(Fr(i,"Script"))return Mo(i);throw new X(5200,!1);case bi.URL:return Fr(i,"URL")?Mo(i):ch(String(i));case bi.RESOURCE_URL:if(Fr(i,"ResourceURL"))return Mo(i);throw new X(5201,!1);default:throw new X(5202,!1)}}bypassSecurityTrustHtml(e){return function M9(t){return new C9(t)}(e)}bypassSecurityTrustStyle(e){return function T9(t){return new w9(t)}(e)}bypassSecurityTrustScript(e){return function E9(t){return new x9(t)}(e)}bypassSecurityTrustUrl(e){return function P9(t){return new S9(t)}(e)}bypassSecurityTrustResourceUrl(e){return function I9(t){return new k9(t)}(e)}static \u0275fac=function(i){return new(i||t)(ce(et))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Ke="primary",gf=Symbol("RouteTitle");class nae{params;constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){const e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){const e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function Hd(t){return new nae(t)}function Tx(t,n,e){for(let i=0;it.length||"full"===e.pathMatch&&(n.hasChildren()||i.lengtht.length||"full"===e.pathMatch&&n.hasChildren()&&"**"!==e.path)return null;const a={};return Tx(r,t.slice(0,r.length),a)&&Tx(s,t.slice(t.length-s.length),a)?{consumed:t,posParams:a}:null}function z_(t){return new Promise((n,e)=>{t.pipe(Ur()).subscribe({next:i=>n(i),error:i=>e(i)})})}function zr(t,n){const e=t?Ex(t):void 0,i=n?Ex(n):void 0;if(!e||!i||e.length!=i.length)return!1;let o;for(let r=0;ri[r]===o)}return t===n}function Wl(t){return jr(t)?t:Rh(t)?Kn(Promise.resolve(t)):ae(t)}function FL(t){return jr(t)?z_(t):Promise.resolve(t)}const sae={exact:function BL(t,n,e){if(!Gl(t.segments,n.segments)||!W_(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(const i in n.children)if(!t.children[i]||!BL(t.children[i],n.children[i],e))return!1;return!0},subset:VL},NL={exact:function lae(t,n){return zr(t,n)},subset:function cae(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>RL(t[e],n[e]))},ignored:()=>!0},LL={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},$_={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};function Px(t,n,e){return sae[e.paths](t.root,n.root,e.matrixParams)&&NL[e.queryParams](t.queryParams,n.queryParams)&&!("exact"===e.fragment&&t.fragment!==n.fragment)}function VL(t,n,e){return HL(t,n,n.segments,e)}function HL(t,n,e,i){if(t.segments.length>e.length){const o=t.segments.slice(0,e.length);return!(!Gl(o,e)||n.hasChildren()||!W_(o,e,i))}if(t.segments.length===e.length){if(!Gl(t.segments,e)||!W_(t.segments,e,i))return!1;for(const o in n.children)if(!t.children[o]||!VL(t.children[o],n.children[o],i))return!1;return!0}{const o=e.slice(0,t.segments.length),r=e.slice(t.segments.length);return!!(Gl(t.segments,o)&&W_(t.segments,o,i)&&t.children[Ke])&&HL(t.children[Ke],n,r,i)}}function W_(t,n,e){return n.every((i,o)=>NL[e](t[o].parameters,i.parameters))}class gr{root;queryParams;fragment;_queryParamMap;constructor(n=new Wt([],{}),e={},i=null){this.root=n,this.queryParams=e,this.fragment=i}get queryParamMap(){return this._queryParamMap??=Hd(this.queryParams),this._queryParamMap}toString(){return hae.serialize(this)}}class Wt{segments;children;parent=null;constructor(n,e){this.segments=n,this.children=e,Object.values(e).forEach(i=>i.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return G_(this)}}class _f{path;parameters;_parameterMap;constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=Hd(this.parameters),this._parameterMap}toString(){return zL(this)}}function Gl(t,n){return t.length===n.length&&t.every((e,i)=>e.path===n[i].path)}let jd=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>new bf,providedIn:"root"})}return t})();class bf{parse(n){const e=new xae(n);return new gr(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){const e=`/${vf(n.root,!0)}`,i=function mae(t){const n=Object.entries(t).map(([e,i])=>Array.isArray(i)?i.map(o=>`${q_(e)}=${q_(o)}`).join("&"):`${q_(e)}=${q_(i)}`).filter(e=>e);return n.length?`?${n.join("&")}`:""}(n.queryParams);return`${e}${i}${"string"==typeof n.fragment?`#${function fae(t){return encodeURI(t)}(n.fragment)}`:""}`}}const hae=new bf;function G_(t){return t.segments.map(n=>zL(n)).join("/")}function vf(t,n){if(!t.hasChildren())return G_(t);if(n){const e=t.children[Ke]?vf(t.children[Ke],!1):"",i=[];return Object.entries(t.children).forEach(([o,r])=>{o!==Ke&&i.push(`${o}:${vf(r,!1)}`)}),i.length>0?`${e}(${i.join("//")})`:e}{const e=function uae(t,n){let e=[];return Object.entries(t.children).forEach(([i,o])=>{i===Ke&&(e=e.concat(n(o,i)))}),Object.entries(t.children).forEach(([i,o])=>{i!==Ke&&(e=e.concat(n(o,i)))}),e}(t,(i,o)=>o===Ke?[vf(t.children[Ke],!1)]:[`${o}:${vf(i,!1)}`]);return 1===Object.keys(t.children).length&&null!=t.children[Ke]?`${G_(t)}/${e[0]}`:`${G_(t)}/(${e.join("//")})`}}function jL(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function q_(t){return jL(t).replace(/%3B/gi,";")}function Ix(t){return jL(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function K_(t){return decodeURIComponent(t)}function UL(t){return K_(t.replace(/\+/g,"%20"))}function zL(t){return`${Ix(t.path)}${function pae(t){return Object.entries(t).map(([n,e])=>`;${Ix(n)}=${Ix(e)}`).join("")}(t.parameters)}`}const gae=/^[^\/()?;#]+/;function Ox(t){const n=t.match(gae);return n?n[0]:""}const _ae=/^[^\/()?;=#]+/,vae=/^[^=?&#]+/,Cae=/^[^&#]+/;class xae{url;remaining;constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new Wt([],{}):new Wt([],this.parseChildren())}parseQueryParams(){const n={};if(this.consumeOptional("?"))do{this.parseQueryParam(n)}while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(n=0){if(n>50)throw new X(4010,!1);if(""===this.remaining)return{};this.consumeOptional("/");const e=[];for(this.peekStartsWith("(")||e.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),e.push(this.parseSegment());let i={};this.peekStartsWith("/(")&&(this.capture("/"),i=this.parseParens(!0,n));let o={};return this.peekStartsWith("(")&&(o=this.parseParens(!1,n)),(e.length>0||Object.keys(i).length>0)&&(o[Ke]=new Wt(e,i)),o}parseSegment(){const n=Ox(this.remaining);if(""===n&&this.peekStartsWith(";"))throw new X(4009,!1);return this.capture(n),new _f(K_(n),this.parseMatrixParams())}parseMatrixParams(){const n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){const e=function bae(t){const n=t.match(_ae);return n?n[0]:""}(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){const o=Ox(this.remaining);o&&(i=o,this.capture(i))}n[K_(e)]=K_(i)}parseQueryParam(n){const e=function yae(t){const n=t.match(vae);return n?n[0]:""}(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){const s=function wae(t){const n=t.match(Cae);return n?n[0]:""}(this.remaining);s&&(i=s,this.capture(i))}const o=UL(e),r=UL(i);if(n.hasOwnProperty(o)){let s=n[o];Array.isArray(s)||(s=[s],n[o]=s),s.push(r)}else n[o]=r}parseParens(n,e){const i={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const o=Ox(this.remaining),r=this.remaining[o.length];if("/"!==r&&")"!==r&&";"!==r)throw new X(4010,!1);let s;o.indexOf(":")>-1?(s=o.slice(0,o.indexOf(":")),this.capture(s),this.capture(":")):n&&(s=Ke);const a=this.parseChildren(e+1);i[s??Ke]=1===Object.keys(a).length&&a[Ke]?a[Ke]:new Wt([],a),this.consumeOptional("//")}return i}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return!!this.peekStartsWith(n)&&(this.remaining=this.remaining.substring(n.length),!0)}capture(n){if(!this.consumeOptional(n))throw new X(4011,!1)}}function $L(t){return t.segments.length>0?new Wt([],{[Ke]:t}):t}function WL(t){const n={};for(const[i,o]of Object.entries(t.children)){const r=WL(o);if(i===Ke&&0===r.segments.length&&r.hasChildren())for(const[s,a]of Object.entries(r.children))n[s]=a;else(r.segments.length>0||r.hasChildren())&&(n[i]=r)}return function Sae(t){if(1===t.numberOfChildren&&t.children[Ke]){const n=t.children[Ke];return new Wt(t.segments.concat(n.segments),n.children)}return t}(new Wt(t.segments,n))}function ql(t){return t instanceof gr}function GL(t){let n;const o=$L(function e(r){const s={};for(const l of r.children){const c=e(l);s[l.outlet]=c}const a=new Wt(r.url,s);return r===t&&(n=a),a}(t.root));return n??o}function qL(t,n,e,i,o){let r=t;for(;r.parent;)r=r.parent;if(0===n.length)return Ax(r,r,r,e,i,o);const s=function Dae(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new XL(!0,0,t);let n=0,e=!1;const i=t.reduce((o,r,s)=>{if("object"==typeof r&&null!=r){if(r.outlets){const a={};return Object.entries(r.outlets).forEach(([l,c])=>{a[l]="string"==typeof c?c.split("/"):c}),[...o,{outlets:a}]}if(r.segmentPath)return[...o,r.segmentPath]}return"string"!=typeof r?[...o,r]:0===s?(r.split("/").forEach((a,l)=>{0==l&&"."===a||(0==l&&""===a?e=!0:".."===a?n++:""!=a&&o.push(a))}),o):[...o,r]},[]);return new XL(e,n,i)}(n);if(s.toRoot())return Ax(r,r,new Wt([],{}),e,i,o);const a=function Mae(t,n,e){if(t.isAbsolute)return new X_(n,!0,0);if(!e)return new X_(n,!1,NaN);if(null===e.parent)return new X_(e,!0,0);const i=Y_(t.commands[0])?0:1;return function Tae(t,n,e){let i=t,o=n,r=e;for(;r>o;){if(r-=o,i=i.parent,!i)throw new X(4005,!1);o=i.segments.length}return new X_(i,!1,o-r)}(e,e.segments.length-1+i,t.numberOfDoubleDots)}(s,r,t),l=a.processChildren?Cf(a.segmentGroup,a.index,s.commands):ZL(a.segmentGroup,a.index,s.commands);return Ax(r,a.segmentGroup,l,e,i,o)}function Y_(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function yf(t){return"object"==typeof t&&null!=t&&t.outlets}function KL(t,n,e){t||="\u0275";const i=new gr;return i.queryParams={[t]:n},e.parse(e.serialize(i)).queryParams[t]}function Ax(t,n,e,i,o,r){const s={};for(const[c,f]of Object.entries(i??{}))s[c]=Array.isArray(f)?f.map(m=>KL(c,m,r)):KL(c,f,r);let a;a=t===n?e:YL(t,n,e);const l=$L(WL(a));return new gr(l,s,o)}function YL(t,n,e){const i={};return Object.entries(t.children).forEach(([o,r])=>{i[o]=r===n?e:YL(r,n,e)}),new Wt(t.segments,i)}class XL{isAbsolute;numberOfDoubleDots;commands;constructor(n,e,i){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=i,n&&i.length>0&&Y_(i[0]))throw new X(4003,!1);const o=i.find(yf);if(o&&o!==function rae(t){return t.length>0?t[t.length-1]:null}(i))throw new X(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class X_{segmentGroup;processChildren;index;constructor(n,e,i){this.segmentGroup=n,this.processChildren=e,this.index=i}}function ZL(t,n,e){if(t??=new Wt([],{}),0===t.segments.length&&t.hasChildren())return Cf(t,n,e);const i=function Pae(t,n,e){let i=0,o=n;const r={match:!1,pathIndex:0,commandIndex:0};for(;o=e.length)return r;const s=t.segments[o],a=e[i];if(yf(a))break;const l=`${a}`,c=i0&&void 0===l)break;if(l&&c&&"object"==typeof c&&void 0===c.outlets){if(!JL(l,c,s))return r;i+=2}else{if(!JL(l,{},s))return r;i++}o++}return{match:!0,pathIndex:o,commandIndex:i}}(t,n,e),o=e.slice(i.commandIndex);if(i.match&&i.pathIndexr!==Ke)&&t.children[Ke]&&1===t.numberOfChildren&&0===t.children[Ke].segments.length){const r=Cf(t.children[Ke],n,e);return new Wt(t.segments,r.children)}return Object.entries(i).forEach(([r,s])=>{"string"==typeof s&&(s=[s]),null!==s&&(o[r]=ZL(t.children[r],n,s))}),Object.entries(t.children).forEach(([r,s])=>{void 0===i[r]&&(o[r]=s)}),new Wt(t.segments,o)}}function Rx(t,n,e){const i=t.segments.slice(0,n);let o=0;for(;o{"string"==typeof i&&(i=[i]),null!==i&&(n[e]=Rx(new Wt([],{}),0,i))}),n}function QL(t){const n={};return Object.entries(t).forEach(([e,i])=>n[e]=`${i}`),n}function JL(t,n,e){return t==e.path&&zr(n,e.parameters)}const wf="imperative";var bt=function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t}(bt||{});class $r{id;url;constructor(n,e){this.id=n,this.url=e}}class Z_ extends $r{type=bt.NavigationStart;navigationTrigger;restoredState;constructor(n,e,i="imperative",o=null){super(n,e),this.navigationTrigger=i,this.restoredState=o}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class Wr extends $r{urlAfterRedirects;type=bt.NavigationEnd;constructor(n,e,i){super(n,e),this.urlAfterRedirects=i}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}var vo=function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t[t.Aborted=4]="Aborted",t}(vo||{}),Q_=function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t}(Q_||{});class wa extends $r{reason;code;type=bt.NavigationCancel;constructor(n,e,i,o){super(n,e),this.reason=i,this.code=o}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class Ud extends $r{reason;code;type=bt.NavigationSkipped;constructor(n,e,i,o){super(n,e),this.reason=i,this.code=o}}class Fx extends $r{error;target;type=bt.NavigationError;constructor(n,e,i,o){super(n,e),this.error=i,this.target=o}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class e3 extends $r{urlAfterRedirects;state;type=bt.RoutesRecognized;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Aae extends $r{urlAfterRedirects;state;type=bt.GuardsCheckStart;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Rae extends $r{urlAfterRedirects;state;shouldActivate;type=bt.GuardsCheckEnd;constructor(n,e,i,o,r){super(n,e),this.urlAfterRedirects=i,this.state=o,this.shouldActivate=r}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class Fae extends $r{urlAfterRedirects;state;type=bt.ResolveStart;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Nae extends $r{urlAfterRedirects;state;type=bt.ResolveEnd;constructor(n,e,i,o){super(n,e),this.urlAfterRedirects=i,this.state=o}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Lae{route;type=bt.RouteConfigLoadStart;constructor(n){this.route=n}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class Bae{route;type=bt.RouteConfigLoadEnd;constructor(n){this.route=n}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class Vae{snapshot;type=bt.ChildActivationStart;constructor(n){this.snapshot=n}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Hae{snapshot;type=bt.ChildActivationEnd;constructor(n){this.snapshot=n}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class jae{snapshot;type=bt.ActivationStart;constructor(n){this.snapshot=n}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Uae{snapshot;type=bt.ActivationEnd;constructor(n){this.snapshot=n}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class t3{routerEvent;position;anchor;scrollBehavior;type=bt.Scroll;constructor(n,e,i,o){this.routerEvent=n,this.position=e,this.anchor=i,this.scrollBehavior=o}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}class Nx{}class n3{}class J_{url;navigationBehaviorOptions;constructor(n,e){this.url=n,this.navigationBehaviorOptions=e}}class $ae{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return this.route?.snapshot._environmentInjector??this.rootInjector}constructor(n){this.rootInjector=n,this.children=new xf(this.rootInjector)}}let xf=(()=>{class t{rootInjector;contexts=new Map;constructor(e){this.rootInjector=e}onChildOutletCreated(e,i){const o=this.getOrCreateContext(e);o.outlet=i,this.contexts.set(e,o)}onChildOutletDestroyed(e){const i=this.getContext(e);i&&(i.outlet=null,i.attachRef=null)}onOutletDeactivated(){const e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let i=this.getContext(e);return i||(i=new $ae(this.rootInjector),this.contexts.set(e,i)),i}getContext(e){return this.contexts.get(e)||null}static \u0275fac=function(i){return new(i||t)(ce(zn))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class i3{_root;constructor(n){this._root=n}get root(){return this._root.value}parent(n){const e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){const e=Lx(n,this._root);return e?e.children.map(i=>i.value):[]}firstChild(n){const e=Lx(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){const e=Bx(n,this._root);return e.length<2?[]:e[e.length-2].children.map(o=>o.value).filter(o=>o!==n)}pathFromRoot(n){return Bx(n,this._root).map(e=>e.value)}}function Lx(t,n){if(t===n.value)return n;for(const e of n.children){const i=Lx(t,e);if(i)return i}return null}function Bx(t,n){if(t===n.value)return[n];for(const e of n.children){const i=Bx(t,e);if(i.length)return i.unshift(n),i}return[]}class _r{value;children;constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}}function zd(t){const n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}class o3 extends i3{snapshot;constructor(n,e){super(n),this.snapshot=e,jx(this,n)}toString(){return this.snapshot.toString()}}function r3(t,n){const e=function Wae(t,n){const s=new Hx([],{},{},"",{},Ke,t,null,{},n);return new s3("",new _r(s,[]))}(t,n),i=new ki([new _f("",{})]),o=new ki({}),r=new ki({}),s=new ki({}),a=new ki(""),l=new Ai(i,o,s,a,r,Ke,t,e.root);return l.snapshot=e.root,new o3(new _r(l,[]),e)}class Ai{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(n,e,i,o,r,s,a,l){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=i,this.fragmentSubject=o,this.dataSubject=r,this.outlet=s,this.component=a,this._futureSnapshot=l,this.title=this.dataSubject?.pipe(Se(c=>c[gf]))??ae(void 0),this.url=n,this.params=e,this.queryParams=i,this.fragment=o,this.data=r}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.params.pipe(Se(n=>Hd(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(Se(n=>Hd(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Vx(t,n,e="emptyOnly"){let i;const{routeConfig:o}=t;return i=null===n||"always"!==e&&""!==o?.path&&(n.component||n.routeConfig?.loadComponent)?{params:{...t.params},data:{...t.data},resolve:{...t.data,...t._resolvedData??{}}}:{params:{...n.params,...t.params},data:{...n.data,...t.data},resolve:{...t.data,...n.data,...o?.data,...t._resolvedData}},o&&l3(o)&&(i.resolve[gf]=o.title),i}class Hx{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;_environmentInjector;get title(){return this.data?.[gf]}constructor(n,e,i,o,r,s,a,l,c,f){this.url=n,this.params=e,this.queryParams=i,this.fragment=o,this.data=r,this.outlet=s,this.component=a,this.routeConfig=l,this._resolve=c,this._environmentInjector=f}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??=Hd(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=Hd(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(i=>i.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class s3 extends i3{url;constructor(n,e){super(e),this.url=n,jx(this,e)}toString(){return a3(this._root)}}function jx(t,n){n.value._routerState=t,n.children.forEach(e=>jx(t,e))}function a3(t){const n=t.children.length>0?` { ${t.children.map(a3).join(", ")} } `:"";return`${t.value}${n}`}function Ux(t){if(t.snapshot){const n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,zr(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),zr(n.params,e.params)||t.paramsSubject.next(e.params),function oae(t,n){if(t.length!==n.length)return!1;for(let e=0;ezr(e.parameters,n[i].parameters))}(t.url,n.url);return e&&!(!t.parent!=!n.parent)&&(!t.parent||zx(t.parent,n.parent))}function l3(t){return"string"==typeof t.title||null===t.title}const Gae=new Z("");let eb=(()=>{class t{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=Ke;activateEvents=new we;deactivateEvents=new we;attachEvents=new we;detachEvents=new we;routerOutletData=ree();parentContexts=D(xf);location=D(Ei);changeDetector=D(Jt);inputBinder=D(tb,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(e){if(e.name){const{firstChange:i,previousValue:o}=e.name;if(i)return;this.isTrackedInParentContexts(o)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(o)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new X(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new X(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new X(4012,!1);this.location.detach();const e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,i){this.activated=e,this._activatedRoute=i,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){const e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,i){if(this.isActivated)throw new X(4013,!1);this._activatedRoute=e;const o=this.location,s=e.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,l=new qae(e,a,o.injector,this.routerOutletData);this.activated=o.createComponent(s,{index:o.length,injector:l,environmentInjector:i}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["router-outlet"]],inputs:{name:"name",routerOutletData:[1,"routerOutletData"]},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],features:[_i]})}return t})();class qae{route;childContexts;parent;outletData;constructor(n,e,i,o){this.route=n,this.childContexts=e,this.parent=i,this.outletData=o}get(n,e){return n===Ai?this.route:n===xf?this.childContexts:n===Gae?this.outletData:this.parent.get(n,e)}}const tb=new Z("");let c3=(()=>{class t{outletDataSubscriptions=new Map;bindActivatedRouteToOutletComponent(e){this.unsubscribeFromRouteData(e),this.subscribeToRouteData(e)}unsubscribeFromRouteData(e){this.outletDataSubscriptions.get(e)?.unsubscribe(),this.outletDataSubscriptions.delete(e)}subscribeToRouteData(e){const{activatedRoute:i}=e,o=kx([i.queryParams,i.params,i.data]).pipe(tn(([r,s,a],l)=>(a={...r,...s,...a},0===l?ae(a):Promise.resolve(a)))).subscribe(r=>{if(!e.isActivated||!e.activatedComponentRef||e.activatedRoute!==i||null===i.component)return void this.unsubscribeFromRouteData(e);const s=function hte(t){const n=xt(t);if(!n)return null;const e=new Th(n);return{get selector(){return e.selector},get type(){return e.componentType},get inputs(){return e.inputs},get outputs(){return e.outputs},get ngContentSelectors(){return e.ngContentSelectors},get isStandalone(){return n.standalone},get isSignal(){return n.signals}}}(i.component);if(s)for(const{templateName:a}of s.inputs)e.activatedComponentRef.setInput(a,r[a]);else this.unsubscribeFromRouteData(e)});this.outletDataSubscriptions.set(e,o)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),d3=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["ng-component"]],exportAs:["emptyRouterOutlet"],decls:1,vars:0,template:function(i,o){1&i&&B(0,"router-outlet")},dependencies:[eb],encapsulation:2})}return t})();function $x(t){const n=t.children&&t.children.map($x),e=n?{...t,children:n}:{...t};return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==Ke&&(e.component=d3),e}function Sf(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){const i=e.value;i._futureSnapshot=n.value;const o=function Yae(t,n,e){return n.children.map(i=>{for(const o of e.children)if(t.shouldReuseRoute(i.value,o.value.snapshot))return Sf(t,i,o);return Sf(t,i)})}(t,n,e);return new _r(i,o)}{if(t.shouldAttach(n.value)){const r=t.retrieve(n.value);if(null!==r){const s=r.route;return s.value._futureSnapshot=n.value,s.children=n.children.map(a=>Sf(t,a)),s}}const i=function Xae(t){return new Ai(new ki(t.url),new ki(t.params),new ki(t.queryParams),new ki(t.fragment),new ki(t.data),t.outlet,t.component,t)}(n.value),o=n.children.map(r=>Sf(t,r));return new _r(i,o)}}class Wx{redirectTo;navigationBehaviorOptions;constructor(n,e){this.redirectTo=n,this.navigationBehaviorOptions=e}}const u3="ngNavigationCancelingError";function nb(t,n){const{redirectTo:e,navigationBehaviorOptions:i}=ql(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,o=h3(!1,vo.Redirect);return o.url=e,o.navigationBehaviorOptions=i,o}function h3(t,n){const e=new Error(`NavigationCancelingError: ${t||""}`);return e[u3]=!0,e.cancellationCode=n,e}function f3(t){return!!t&&t[u3]}class Qae{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(n,e,i,o,r){this.routeReuseStrategy=n,this.futureState=e,this.currState=i,this.forwardEvent=o,this.inputBindingEnabled=r}activate(n){const e=this.futureState._root,i=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,i,n),Ux(this.futureState.root),this.activateChildRoutes(e,i,n)}deactivateChildRoutes(n,e,i){const o=zd(e);n.children.forEach(r=>{const s=r.value.outlet;this.deactivateRoutes(r,o[s],i),delete o[s]}),Object.values(o).forEach(r=>{this.deactivateRouteAndItsChildren(r,i)})}deactivateRoutes(n,e,i){const o=n.value,r=e?e.value:null;if(o===r)if(o.component){const s=i.getContext(o.outlet);s&&this.deactivateChildRoutes(n,e,s.children)}else this.deactivateChildRoutes(n,e,i);else r&&this.deactivateRouteAndItsChildren(e,i)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){const i=e.getContext(n.value.outlet),o=i&&n.value.component?i.children:e,r=zd(n);for(const s of Object.values(r))this.deactivateRouteAndItsChildren(s,o);if(i&&i.outlet){const s=i.outlet.detach(),a=i.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:a})}}deactivateRouteAndOutlet(n,e){const i=e.getContext(n.value.outlet),o=i&&n.value.component?i.children:e,r=zd(n);for(const s of Object.values(r))this.deactivateRouteAndItsChildren(s,o);i&&(i.outlet&&(i.outlet.deactivate(),i.children.onOutletDeactivated()),i.attachRef=null,i.route=null)}activateChildRoutes(n,e,i){const o=zd(e);n.children.forEach(r=>{this.activateRoutes(r,o[r.value.outlet],i),this.forwardEvent(new Uae(r.value.snapshot))}),n.children.length&&this.forwardEvent(new Hae(n.value.snapshot))}activateRoutes(n,e,i){const o=n.value,r=e?e.value:null;if(Ux(o),o===r)if(o.component){const s=i.getOrCreateContext(o.outlet);this.activateChildRoutes(n,e,s.children)}else this.activateChildRoutes(n,e,i);else if(o.component){const s=i.getOrCreateContext(o.outlet);if(this.routeReuseStrategy.shouldAttach(o.snapshot)){const a=this.routeReuseStrategy.retrieve(o.snapshot);this.routeReuseStrategy.store(o.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),Ux(a.route.value),this.activateChildRoutes(n,null,s.children)}else s.attachRef=null,s.route=o,s.outlet&&s.outlet.activateWith(o,s.injector),this.activateChildRoutes(n,null,s.children)}else this.activateChildRoutes(n,null,i)}}class p3{path;route;constructor(n){this.path=n,this.route=this.path[this.path.length-1]}}class ib{component;route;constructor(n,e){this.component=n,this.route=e}}function Jae(t,n,e){const i=t._root;return kf(i,n?n._root:null,e,[i.value])}function $d(t,n){const e=Symbol(),i=n.get(t,e);return i===e?"function"!=typeof t||function ij(t){return null!==Up(t)}(t)?n.get(t):t:i}function kf(t,n,e,i,o={canDeactivateChecks:[],canActivateChecks:[]}){const r=zd(n);return t.children.forEach(s=>{(function tle(t,n,e,i,o={canDeactivateChecks:[],canActivateChecks:[]}){const r=t.value,s=n?n.value:null,a=e?e.getContext(t.value.outlet):null;if(s&&r.routeConfig===s.routeConfig){const l=function nle(t,n,e){if("function"==typeof e)return Qi(n._environmentInjector,()=>e(t,n));switch(e){case"pathParamsChange":return!Gl(t.url,n.url);case"pathParamsOrQueryParamsChange":return!Gl(t.url,n.url)||!zr(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!zx(t,n)||!zr(t.queryParams,n.queryParams);default:return!zx(t,n)}}(s,r,r.routeConfig.runGuardsAndResolvers);l?o.canActivateChecks.push(new p3(i)):(r.data=s.data,r._resolvedData=s._resolvedData),kf(t,n,r.component?a?a.children:null:e,i,o),l&&a&&a.outlet&&a.outlet.isActivated&&o.canDeactivateChecks.push(new ib(a.outlet.component,s))}else s&&Df(n,a,o),o.canActivateChecks.push(new p3(i)),kf(t,null,r.component?a?a.children:null:e,i,o)})(s,r[s.value.outlet],e,i.concat([s.value]),o),delete r[s.value.outlet]}),Object.entries(r).forEach(([s,a])=>Df(a,e.getContext(s),o)),o}function Df(t,n,e){const i=zd(t),o=t.value;Object.entries(i).forEach(([r,s])=>{Df(s,o.component?n?n.children.getContext(r):null:n,e)}),e.canDeactivateChecks.push(new ib(o.component&&n&&n.outlet&&n.outlet.isActivated?n.outlet.component:null,o))}function Mf(t){return"function"==typeof t}function m3(t){return t instanceof Dx||"EmptyError"===t?.name}const ob=Symbol("INITIAL_VALUE");function Wd(){return tn(t=>kx(t.map(n=>n.pipe(Cn(1),si(ob)))).pipe(Se(n=>{for(const e of n)if(!0!==e){if(e===ob)return ob;if(!1===e||cle(e))return e}return!0}),Tn(n=>n!==ob),Cn(1)))}function cle(t){return ql(t)||t instanceof Wx}function g3(t){return t.aborted?ae(void 0).pipe(Cn(1)):new Ft(n=>{const e=()=>{n.next(),n.complete()};return t.addEventListener("abort",e),()=>t.removeEventListener("abort",e)})}function _3(t){return fn(g3(t))}function b3(t){return function z6(...t){return ND(t)}(ai(n=>{if("boolean"!=typeof n)throw nb(0,n)}),Se(n=>!0===n))}class Es extends Error{segmentGroup;constructor(n){super(),this.segmentGroup=n||null,Object.setPrototypeOf(this,Es.prototype)}}class Tf extends Error{urlTree;constructor(n){super(),this.urlTree=n,Object.setPrototypeOf(this,Tf.prototype)}}function yle(t){throw new X(4e3,!1)}class wle{urlSerializer;urlTree;constructor(n,e){this.urlSerializer=n,this.urlTree=e}lineralizeSegments(n,e){return Et(function*(){let i=[],o=e.root;for(;;){if(i=i.concat(o.segments),0===o.numberOfChildren)return i;if(o.numberOfChildren>1||!o.children[Ke])throw yle();o=o.children[Ke]}})()}applyRedirectCommands(n,e,i,o,r){var s=this;return Et(function*(){const a=yield function xle(t,n,e){if("string"==typeof t)return Promise.resolve(t);const i=t;return z_(Wl(Qi(e,()=>i(n))))}(e,o,r);if(a instanceof gr)throw new Tf(a);const l=s.applyRedirectCreateUrlTree(a,s.urlSerializer.parse(a),n,i);if("/"===a[0])throw new Tf(l);return l})()}applyRedirectCreateUrlTree(n,e,i,o){const r=this.createSegmentGroup(n,e.root,i,o);return new gr(r,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){const i={};return Object.entries(n).forEach(([o,r])=>{if("string"==typeof r&&":"===r[0]){const a=r.substring(1);i[o]=e[a]}else i[o]=r}),i}createSegmentGroup(n,e,i,o){const r=this.createSegments(n,e.segments,i,o);let s={};return Object.entries(e.children).forEach(([a,l])=>{s[a]=this.createSegmentGroup(n,l,i,o)}),new Wt(r,s)}createSegments(n,e,i,o){return e.map(r=>":"===r.path[0]?this.findPosParam(n,r,o):this.findOrReturn(r,i))}findPosParam(n,e,i){const o=i[e.path.substring(1)];if(!o)throw new X(4001,!1);return o}findOrReturn(n,e){let i=0;for(const o of e){if(o.path===n.path)return e.splice(i),o;i++}return n}}function Gr(t){return t.outlet||Ke}function Tle(t,n){const e=t.filter(i=>Gr(i)===n);return e.push(...t.filter(i=>Gr(i)!==n)),e}const Gx={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function v3(t){return{routeConfig:t.routeConfig,url:t.url,params:t.params,queryParams:t.queryParams,fragment:t.fragment,data:t.data,outlet:t.outlet,title:t.title,paramMap:t.paramMap,queryParamMap:t.queryParamMap}}function Ele(t,n,e,i,o,r,s){const a=y3(t,n,e);if(!a.matched)return ae(a);const l=v3(r(a));return i=function Sle(t,n){return t.providers&&!t._injector&&(t._injector=Mg(t.providers,n,`Route: ${t.path}`)),t._injector??n}(n,i),function vle(t,n,e,i,o,r){const s=n.canMatch;return s&&0!==s.length?ae(s.map(l=>{const c=$d(l,t);return Wl(function lle(t){return t&&Mf(t.canMatch)}(c)?c.canMatch(n,e,o):Qi(t,()=>c(n,e,o))).pipe(_3(r))})).pipe(Wd(),b3()):ae(!0)}(i,n,e,0,l,s).pipe(Se(c=>!0===c?a:{...Gx}))}function y3(t,n,e){if(""===n.path)return"full"===n.pathMatch&&(t.hasChildren()||e.length>0)?{...Gx}:{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};const o=(n.matcher||iae)(e,t,n);if(!o)return{...Gx};const r={};Object.entries(o.posParams??{}).forEach(([a,l])=>{r[a]=l.path});const s=o.consumed.length>0?{...r,...o.consumed[o.consumed.length-1].parameters}:r;return{matched:!0,consumedSegments:o.consumed,remainingSegments:e.slice(o.consumed.length),parameters:s,positionalParamSegments:o.posParams??{}}}function C3(t,n,e,i){return e.length>0&&function Ole(t,n,e){return e.some(i=>rb(t,n,i)&&Gr(i)!==Ke)}(t,e,i)?{segmentGroup:new Wt(n,Ile(i,new Wt(e,t.children))),slicedSegments:[]}:0===e.length&&function Ale(t,n,e){return e.some(i=>rb(t,n,i))}(t,e,i)?{segmentGroup:new Wt(t.segments,Ple(t,e,i,t.children)),slicedSegments:e}:{segmentGroup:new Wt(t.segments,t.children),slicedSegments:e}}function Ple(t,n,e,i){const o={};for(const r of e)if(rb(t,n,r)&&!i[Gr(r)]){const s=new Wt([],{});o[Gr(r)]=s}return{...i,...o}}function Ile(t,n){const e={};e[Ke]=n;for(const i of t)if(""===i.path&&Gr(i)!==Ke){const o=new Wt([],{});e[Gr(i)]=o}return e}function rb(t,n,e){return(!(t.hasChildren()||n.length>0)||"full"!==e.pathMatch)&&""===e.path}class Fle{}function qx(){return(qx=Et(function*(t,n,e,i,o,r,s="emptyOnly",a){return new Ble(t,n,e,i,o,s,r,a).recognize()})).apply(this,arguments)}class Ble{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(n,e,i,o,r,s,a,l){this.injector=n,this.configLoader=e,this.rootComponentType=i,this.config=o,this.urlTree=r,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.abortSignal=l,this.applyRedirects=new wle(this.urlSerializer,this.urlTree)}noMatchError(n){return new X(4002,`'${n.segmentGroup}'`)}recognize(){var n=this;return Et(function*(){const e=C3(n.urlTree.root,[],[],n.config).segmentGroup,{children:i,rootSnapshot:o}=yield n.match(e),r=new _r(o,i),s=new s3("",r),a=function kae(t,n,e=null,i=null,o=new bf){return qL(GL(t),n,e,i,o)}(o,[],n.urlTree.queryParams,n.urlTree.fragment);return a.queryParams=n.urlTree.queryParams,s.url=n.urlSerializer.serialize(a),{state:s,tree:a}})()}match(n){var e=this;return Et(function*(){const i=new Hx([],Object.freeze({}),Object.freeze({...e.urlTree.queryParams}),e.urlTree.fragment,Object.freeze({}),Ke,e.rootComponentType,null,{},e.injector);try{return{children:yield e.processSegmentGroup(e.injector,e.config,n,Ke,i),rootSnapshot:i}}catch(o){if(o instanceof Tf)return e.urlTree=o.urlTree,e.match(o.urlTree.root);throw o instanceof Es?e.noMatchError(o):o}})()}processSegmentGroup(n,e,i,o,r){var s=this;return Et(function*(){if(0===i.segments.length&&i.hasChildren())return s.processChildren(n,e,i,r);const a=yield s.processSegment(n,e,i,i.segments,o,!0,r);return a instanceof _r?[a]:[]})()}processChildren(n,e,i,o){var r=this;return Et(function*(){const s=[];for(const c of Object.keys(i.children))"primary"===c?s.unshift(c):s.push(c);let a=[];for(const c of s){const f=i.children[c],m=Tle(e,c),g=yield r.processSegmentGroup(n,m,f,c,o);a.push(...g)}const l=w3(a);return function Vle(t){t.sort((n,e)=>n.value.outlet===Ke?-1:e.value.outlet===Ke?1:n.value.outlet.localeCompare(e.value.outlet))}(l),l})()}processSegment(n,e,i,o,r,s,a){var l=this;return Et(function*(){for(const c of e)try{return yield l.processSegmentAgainstRoute(c._injector??n,e,c,i,o,r,s,a)}catch(f){if(f instanceof Es||m3(f))continue;throw f}if(function Rle(t,n,e){return 0===n.length&&!t.children[e]}(i,o,r))return new Fle;throw new Es(i)})()}processSegmentAgainstRoute(n,e,i,o,r,s,a,l){var c=this;return Et(function*(){if(Gr(i)!==s&&(s===Ke||!rb(o,r,i)))throw new Es(o);if(void 0===i.redirectTo)return c.matchSegmentAgainstRoute(n,o,i,r,s,l);if(c.allowRedirects&&a)return c.expandSegmentAgainstRouteUsingRedirect(n,o,e,i,r,s,l);throw new Es(o)})()}expandSegmentAgainstRouteUsingRedirect(n,e,i,o,r,s,a){var l=this;return Et(function*(){const{matched:c,parameters:f,consumedSegments:m,positionalParamSegments:g,remainingSegments:_}=y3(e,o,r);if(!c)throw new Es(e);"string"==typeof o.redirectTo&&"/"===o.redirectTo[0]&&(l.absoluteRedirectCount++,l.absoluteRedirectCount>31&&(l.allowRedirects=!1));const w=l.createSnapshot(n,o,r,f,a);if(l.abortSignal.aborted)throw new Error(l.abortSignal.reason);const k=yield l.applyRedirects.applyRedirectCommands(m,o.redirectTo,g,v3(w),n),T=yield l.applyRedirects.lineralizeSegments(o,k);return l.processSegment(n,i,e,T.concat(_),s,!1,a)})()}createSnapshot(n,e,i,o,r){const s=new Hx(i,o,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,function jle(t){return t.data||{}}(e),Gr(e),e.component??e._loadedComponent??null,e,function Ule(t){return t.resolve||{}}(e),n),a=Vx(s,r,this.paramsInheritanceStrategy);return s.params=Object.freeze(a.params),s.data=Object.freeze(a.data),s}matchSegmentAgainstRoute(n,e,i,o,r,s){var a=this;return Et(function*(){if(a.abortSignal.aborted)throw new Error(a.abortSignal.reason);const c=yield z_(Ele(e,i,o,n,0,Y=>a.createSnapshot(n,i,Y.consumedSegments,Y.parameters,s),a.abortSignal));if("**"===i.path&&(e.children={}),!c?.matched)throw new Es(e);n=i._injector??n;const{routes:f}=yield a.getChildConfig(n,i,o),m=i._loadedInjector??n,{parameters:g,consumedSegments:_,remainingSegments:w}=c,k=a.createSnapshot(n,i,_,g,s),{segmentGroup:T,slicedSegments:I}=C3(e,_,w,f);if(0===I.length&&T.hasChildren()){const Y=yield a.processChildren(m,f,T,k);return new _r(k,Y)}if(0===f.length&&0===I.length)return new _r(k,[]);const R=Gr(i)===r,W=yield a.processSegment(m,f,T,I,R?Ke:r,!0,k);return new _r(k,W instanceof _r?[W]:[])})()}getChildConfig(n,e,i){var o=this;return Et(function*(){if(e.children)return{routes:e.children,injector:n};if(e.loadChildren){if(void 0!==e._loadedRoutes){const s=e._loadedNgModuleFactory;return s&&!e._loadedInjector&&(e._loadedInjector=s.create(n).injector),{routes:e._loadedRoutes,injector:e._loadedInjector}}if(o.abortSignal.aborted)throw new Error(o.abortSignal.reason);if(yield z_(function ble(t,n,e,i,o){const r=n.canLoad;return void 0===r||0===r.length?ae(!0):ae(r.map(a=>{const l=$d(a,t),f=Wl(function ole(t){return t&&Mf(t.canLoad)}(l)?l.canLoad(n,e):Qi(t,()=>l(n,e)));return o?f.pipe(_3(o)):f})).pipe(Wd(),b3())}(n,e,i,0,o.abortSignal))){const s=yield o.configLoader.loadChildren(n,e);return e._loadedRoutes=s.routes,e._loadedInjector=s.injector,e._loadedNgModuleFactory=s.factory,s}throw function Cle(){throw h3(!1,vo.GuardRejected)}()}return{routes:[],injector:n}})()}}function Hle(t){const n=t.value.routeConfig;return n&&""===n.path}function w3(t){const n=[],e=new Set;for(const i of t){if(!Hle(i)){n.push(i);continue}const o=n.find(r=>i.value.routeConfig===r.value.routeConfig);void 0!==o?(o.children.push(...i.children),e.add(o)):n.push(i)}for(const i of e){const o=w3(i.children);n.push(new _r(i.value,o))}return n.filter(i=>!e.has(i))}function x3(t){const n=t.children.map(e=>x3(e)).flat();return[t,...n]}function S3(t){return tn(n=>{const e=t(n);return e?Kn(e).pipe(Se(()=>n)):ae(n)})}let k3=(()=>{class t{buildTitle(e){let i,o=e.root;for(;void 0!==o;)i=this.getResolvedTitleForRoute(o)??i,o=o.children.find(r=>r.outlet===Ke);return i}getResolvedTitleForRoute(e){return e.data[gf]}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>D(Kle),providedIn:"root"})}return t})(),Kle=(()=>{class t extends k3{title;constructor(e){super(),this.title=e}updateTitle(e){const i=this.buildTitle(e);void 0!==i&&this.title.setTitle(i)}static \u0275fac=function(i){return new(i||t)(ce(Zse))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Gd=new Z("",{factory:()=>({})}),sb=new Z("");let Kx=(()=>{class t{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=D(aQ);loadComponent(e,i){var o=this;return Et(function*(){if(o.componentLoaders.get(i))return o.componentLoaders.get(i);if(i._loadedComponent)return Promise.resolve(i._loadedComponent);o.onLoadStartListener&&o.onLoadStartListener(i);const r=Et(function*(){try{const s=yield FL(Qi(e,()=>i.loadComponent())),a=yield M3(D3(s));return o.onLoadEndListener&&o.onLoadEndListener(i),i._loadedComponent=a,a}finally{o.componentLoaders.delete(i)}})();return o.componentLoaders.set(i,r),r})()}loadChildren(e,i){var o=this;if(this.childrenLoaders.get(i))return this.childrenLoaders.get(i);if(i._loadedRoutes)return Promise.resolve({routes:i._loadedRoutes,injector:i._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(i);const r=Et(function*(){try{const s=yield function Yle(t,n,e,i){return Yx.apply(this,arguments)}(i,o.compiler,e,o.onLoadEndListener);return i._loadedRoutes=s.routes,i._loadedInjector=s.injector,i._loadedNgModuleFactory=s.factory,s}finally{o.childrenLoaders.delete(i)}})();return this.childrenLoaders.set(i,r),r}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Yx(){return(Yx=Et(function*(t,n,e,i){const o=yield FL(Qi(e,()=>t.loadChildren())),r=yield M3(D3(o));let s;s=r instanceof lI||Array.isArray(r)?r:yield n.compileModuleAsync(r),i&&i(t);let a,l,f;return Array.isArray(s)?l=s:(a=s.create(e).injector,f=s,l=a.get(sb,[],{optional:!0,self:!0}).flat()),{routes:l.map($x),injector:a,factory:f}})).apply(this,arguments)}function D3(t){return function Xle(t){return t&&"object"==typeof t&&"default"in t}(t)?t.default:t}function M3(t){return Xx.apply(this,arguments)}function Xx(){return(Xx=Et(function*(t){return t})).apply(this,arguments)}let Zx=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>D(Zle),providedIn:"root"})}return t})(),Zle=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,i){return e}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const T3=new Z(""),E3=new Z("");function Qle(t,n,e){const i=t.get(E3),o=t.get(et);if(!o.startViewTransition||i.skipNextTransition)return i.skipNextTransition=!1,new Promise(c=>setTimeout(c));let r;const s=new Promise(c=>{r=c}),a=o.startViewTransition(()=>(r(),function Jle(t){return new Promise(n=>{Vi({read:()=>setTimeout(n)},{injector:t})})}(t)));a.updateCallbackDone.catch(c=>{}),a.ready.catch(c=>{}),a.finished.catch(c=>{});const{onViewTransitionCreated:l}=i;return l&&Qi(t,()=>l({transition:a,from:n,to:e})),s}const ece=()=>{},P3=new Z("");let Qx=(()=>{class t{currentNavigation=yt(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=yt(null);events=new me;transitionAbortWithErrorSubject=new me;configLoader=D(Kx);environmentInjector=D(zn);destroyRef=D(rr);urlSerializer=D(jd);rootContexts=D(xf);location=D(Fd);inputBindingEnabled=null!==D(tb,{optional:!0});titleStrategy=D(k3);options=D(Gd,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly";urlHandlingStrategy=D(Zx);createViewTransition=D(T3,{optional:!0});navigationErrorHandler=D(P3,{optional:!0});navigationId=0;get hasRequestedNavigation(){return 0!==this.navigationId}transitions;afterPreactivation=()=>ae(void 0);rootComponentType=null;destroyed=!1;constructor(){this.configLoader.onLoadEndListener=o=>this.events.next(new Bae(o)),this.configLoader.onLoadStartListener=o=>this.events.next(new Lae(o)),this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(e){const i=++this.navigationId;nt(()=>{this.transitions?.next({...e,extractedUrl:this.urlHandlingStrategy.extract(e.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:i,routesRecognizeHandler:{},beforeActivateHandler:{}})})}setupNavigations(e){return this.transitions=new ki(null),this.transitions.pipe(Tn(i=>null!==i),tn(i=>{let o=!1;const r=new AbortController,s=()=>!o&&this.currentTransition?.id===i.id;return ae(i).pipe(tn(a=>{if(this.navigationId>i.id)return this.cancelNavigationTransition(i,"",vo.SupersededByNewNavigation),Oi;this.currentTransition=i;const l=this.lastSuccessfulNavigation();this.currentNavigation.set({id:a.id,initialUrl:a.rawUrl,extractedUrl:a.extractedUrl,targetBrowserUrl:"string"==typeof a.extras.browserUrl?this.urlSerializer.parse(a.extras.browserUrl):a.extras.browserUrl,trigger:a.source,extras:a.extras,previousNavigation:l?{...l,previousNavigation:null}:null,abort:()=>r.abort(),routesRecognizeHandler:a.routesRecognizeHandler,beforeActivateHandler:a.beforeActivateHandler});const c=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl();if(!c&&"reload"!==(a.extras.onSameUrlNavigation??e.onSameUrlNavigation))return this.events.next(new Ud(a.id,this.urlSerializer.serialize(a.rawUrl),"",Q_.IgnoredSameUrlNavigation)),a.resolve(!1),Oi;if(this.urlHandlingStrategy.shouldProcessUrl(a.rawUrl))return ae(a).pipe(tn(m=>(this.events.next(new Z_(m.id,this.urlSerializer.serialize(m.extractedUrl),m.source,m.restoredState)),m.id!==this.navigationId?Oi:Promise.resolve(m))),function zle(t,n,e,i,o,r,s){return It(function(){var a=Et(function*(l){const{state:c,tree:f}=yield function Nle(t,n,e,i,o,r){return qx.apply(this,arguments)}(t,n,e,i,l.extractedUrl,o,r,s);return{...l,targetSnapshot:c,urlAfterRedirects:f}});return function(l){return a.apply(this,arguments)}}())}(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy,r.signal),ai(m=>{i.targetSnapshot=m.targetSnapshot,i.urlAfterRedirects=m.urlAfterRedirects,this.currentNavigation.update(g=>(g.finalUrl=m.urlAfterRedirects,g)),this.events.next(new n3)}),tn(m=>Kn(i.routesRecognizeHandler.deferredHandle??ae(void 0)).pipe(Se(()=>m))),ai(()=>{const m=new e3(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(m)}));if(c&&this.urlHandlingStrategy.shouldProcessUrl(a.currentRawUrl)){const{id:m,extractedUrl:g,source:_,restoredState:w,extras:k}=a,T=new Z_(m,this.urlSerializer.serialize(g),_,w);this.events.next(T);const I=r3(this.rootComponentType,this.environmentInjector).snapshot;return this.currentTransition=i={...a,targetSnapshot:I,urlAfterRedirects:g,extras:{...k,skipLocationChange:!1,replaceUrl:!1}},this.currentNavigation.update(R=>(R.finalUrl=g,R)),ae(i)}return this.events.next(new Ud(a.id,this.urlSerializer.serialize(a.extractedUrl),"",Q_.IgnoredByUrlHandlingStrategy)),a.resolve(!1),Oi}),Se(a=>{const l=new Aae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);return this.events.next(l),this.currentTransition=i={...a,guards:Jae(a.targetSnapshot,a.currentSnapshot,this.rootContexts)},i}),function dle(t){return It(n=>{const{targetSnapshot:e,currentSnapshot:i,guards:{canActivateChecks:o,canDeactivateChecks:r}}=n;return 0===r.length&&0===o.length?ae({...n,guardsResult:!0}):function ule(t,n,e){return Kn(t).pipe(It(i=>function _le(t,n,e,i){const o=n&&n.routeConfig?n.routeConfig.canDeactivate:null;return o&&0!==o.length?ae(o.map(s=>{const a=n._environmentInjector,l=$d(s,a);return Wl(function ale(t){return t&&Mf(t.canDeactivate)}(l)?l.canDeactivate(t,n,e,i):Qi(a,()=>l(t,n,e,i))).pipe(Ur())})).pipe(Wd()):ae(!0)}(i.component,i.route,e,n)),Ur(i=>!0!==i,!0))}(r,e,i).pipe(It(s=>s&&function ile(t){return"boolean"==typeof t}(s)?function hle(t,n,e){return Kn(n).pipe(cf(i=>Ts(function ple(t,n){return null!==t&&n&&n(new Vae(t)),ae(!0)}(i.route.parent,e),function fle(t,n){return null!==t&&n&&n(new jae(t)),ae(!0)}(i.route,e),function gle(t,n){const e=n[n.length-1],o=n.slice(0,n.length-1).reverse().map(r=>function ele(t){const n=t.routeConfig?t.routeConfig.canActivateChild:null;return n&&0!==n.length?{node:t,guards:n}:null}(r)).filter(r=>null!==r).map(r=>ya(()=>ae(r.guards.map(a=>{const l=r.node._environmentInjector,c=$d(a,l);return Wl(function sle(t){return t&&Mf(t.canActivateChild)}(c)?c.canActivateChild(e,t):Qi(l,()=>c(e,t))).pipe(Ur())})).pipe(Wd())));return ae(o).pipe(Wd())}(t,i.path),function mle(t,n){const e=n.routeConfig?n.routeConfig.canActivate:null;if(!e||0===e.length)return ae(!0);const i=e.map(o=>ya(()=>{const r=n._environmentInjector,s=$d(o,r);return Wl(function rle(t){return t&&Mf(t.canActivate)}(s)?s.canActivate(n,t):Qi(r,()=>s(n,t))).pipe(Ur())}));return ae(i).pipe(Wd())}(t,i.route))),Ur(i=>!0!==i,!0))}(e,o,t):ae(s)),Se(s=>({...n,guardsResult:s})))})}(a=>this.events.next(a)),tn(a=>{if(i.guardsResult=a.guardsResult,a.guardsResult&&"boolean"!=typeof a.guardsResult)throw nb(0,a.guardsResult);const l=new Rae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot,!!a.guardsResult);if(this.events.next(l),!s())return Oi;if(!a.guardsResult)return this.cancelNavigationTransition(a,"",vo.GuardRejected),Oi;if(0===a.guards.canActivateChecks.length)return ae(a);const c=new Fae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);if(this.events.next(c),!s())return Oi;let f=!1;return ae(a).pipe(function $le(t){return It(n=>{const{targetSnapshot:e,guards:{canActivateChecks:i}}=n;if(!i.length)return ae(n);const o=new Set(i.map(a=>a.route)),r=new Set;for(const a of o)if(!r.has(a))for(const l of x3(a))r.add(l);let s=0;return Kn(r).pipe(cf(a=>o.has(a)?function Wle(t,n,e){const i=t.routeConfig,o=t._resolve;return void 0!==i?.title&&!l3(i)&&(o[gf]=i.title),ya(()=>(t.data=Vx(t,t.parent,e).resolve,function Gle(t,n,e){const i=Ex(t);if(0===i.length)return ae({});const o={};return Kn(i).pipe(It(r=>function qle(t,n,e){const i=n._environmentInjector,o=$d(t,i);return Wl(o.resolve?o.resolve(n,e):Qi(i,()=>o(n,e)))}(t[r],n,e).pipe(Ur(),ai(s=>{if(s instanceof Wx)throw nb(new bf,s);o[r]=s}))),TL(1),Se(()=>o),Ui(r=>m3(r)?Oi:mr(r)))}(o,t,n).pipe(Se(r=>(t._resolvedData=r,t.data={...t.data,...r},null)))))}(a,e,t):(a.data=Vx(a,a.parent,t).resolve,ae(void 0))),ai(()=>s++),TL(1),It(a=>s===r.size?ae(n):Oi))})}(this.paramsInheritanceStrategy),ai({next:()=>{f=!0;const m=new Nae(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(m)},complete:()=>{f||this.cancelNavigationTransition(a,"",vo.NoDataFromResolver)}}))}),S3(a=>{const l=f=>{const m=[];f.routeConfig?._loadedComponent?f.component=f.routeConfig?._loadedComponent:f.routeConfig?.loadComponent&&m.push(this.configLoader.loadComponent(f._environmentInjector,f.routeConfig).then(_=>{f.component=_}));for(const g of f.children)m.push(...l(g));return m},c=l(a.targetSnapshot.root);return 0===c.length?ae(a):Kn(Promise.all(c).then(()=>a))}),S3(()=>this.afterPreactivation()),tn(()=>{const{currentSnapshot:a,targetSnapshot:l}=i,c=this.createViewTransition?.(this.environmentInjector,a.root,l.root);return c?Kn(c).pipe(Se(()=>i)):ae(i)}),Cn(1),tn(a=>{const l=function Kae(t,n,e){const i=Sf(t,n._root,e?e._root:void 0);return new o3(i,n)}(e.routeReuseStrategy,a.targetSnapshot,a.currentRouterState);this.currentTransition=i=a={...a,targetRouterState:l},this.currentNavigation.update(f=>(f.targetRouterState=l,f)),this.events.next(new Nx);const c=i.beforeActivateHandler.deferredHandle;return c?Kn(c.then(()=>a)):ae(a)}),ai(a=>{new Qae(e.routeReuseStrategy,i.targetRouterState,i.currentRouterState,l=>this.events.next(l),this.inputBindingEnabled).activate(this.rootContexts),s()&&(o=!0,this.currentNavigation.update(l=>(l.abort=ece,l)),this.lastSuccessfulNavigation.set(nt(this.currentNavigation)),this.events.next(new Wr(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects))),this.titleStrategy?.updateTitle(a.targetRouterState.snapshot),a.resolve(!0))}),fn(g3(r.signal).pipe(Tn(()=>!o&&!i.targetRouterState),ai(()=>{this.cancelNavigationTransition(i,r.signal.reason+"",vo.Aborted)}))),ai({complete:()=>{o=!0}}),fn(this.transitionAbortWithErrorSubject.pipe(ai(a=>{throw a}))),B_(()=>{r.abort(),o||this.cancelNavigationTransition(i,"",vo.SupersededByNewNavigation),this.currentTransition?.id===i.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),Ui(a=>{if(o=!0,this.destroyed)return i.resolve(!1),Oi;if(f3(a))this.events.next(new wa(i.id,this.urlSerializer.serialize(i.extractedUrl),a.message,a.cancellationCode)),function Zae(t){return f3(t)&&ql(t.url)}(a)?this.events.next(new J_(a.url,a.navigationBehaviorOptions)):i.resolve(!1);else{const l=new Fx(i.id,this.urlSerializer.serialize(i.extractedUrl),a,i.targetSnapshot??void 0);try{const c=Qi(this.environmentInjector,()=>this.navigationErrorHandler?.(l));if(!(c instanceof Wx))throw this.events.next(l),a;{const{message:f,cancellationCode:m}=nb(0,c);this.events.next(new wa(i.id,this.urlSerializer.serialize(i.extractedUrl),f,m)),this.events.next(new J_(c.redirectTo,c.navigationBehaviorOptions))}}catch(c){this.options.resolveNavigationPromiseOnError?i.resolve(!1):i.reject(c)}}return Oi}))}))}cancelNavigationTransition(e,i,o){const r=new wa(e.id,this.urlSerializer.serialize(e.extractedUrl),i,o);this.events.next(r),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){const e=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),i=nt(this.currentNavigation),o=i?.targetBrowserUrl??i?.extractedUrl;return e.toString()!==o?.toString()&&!i?.extras.skipLocationChange}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function tce(t){return t!==wf}const nce=new Z("");let O3=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>D(oce),providedIn:"root"})}return t})();class ice{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}shouldDestroyInjector(n){return!0}}let oce=(()=>{class t extends ice{static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),eS=(()=>{class t{urlSerializer=D(jd);options=D(Gd,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||"replace";location=D(Fd);urlHandlingStrategy=D(Zx);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";currentUrlTree=new gr;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:e,initialUrl:i,targetBrowserUrl:o}){const r=void 0!==e?this.urlHandlingStrategy.merge(e,i):i,s=o??r;return s instanceof gr?this.urlSerializer.serialize(s):s}commitTransition({targetRouterState:e,finalUrl:i,initialUrl:o}){i&&e?(this.currentUrlTree=i,this.rawUrlTree=this.urlHandlingStrategy.merge(i,o),this.routerState=e):this.rawUrlTree=o}routerState=r3(null,D(zn));getRouterState(){return this.routerState}_stateMemento=this.createStateMemento();get stateMemento(){return this._stateMemento}updateStateMemento(){this._stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}restoredState(){return this.location.getState()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:()=>D(rce),providedIn:"root"})}return t})(),rce=(()=>{class t extends eS{currentPageId=0;lastSuccessfulId=-1;get browserPageId(){return"computed"!==this.canceledNavigationResolution?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(i=>{"popstate"===i.type&&setTimeout(()=>{e(i.url,i.state,"popstate",{replaceUrl:!0})})})}handleRouterEvent(e,i){e instanceof Z_?this.updateStateMemento():e instanceof Ud?this.commitTransition(i):e instanceof e3?"eager"===this.urlUpdateStrategy&&(i.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(i),i)):e instanceof Nx?(this.commitTransition(i),"deferred"===this.urlUpdateStrategy&&!i.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(i),i)):e instanceof wa&&!function Oae(t){return t instanceof wa&&(t.code===vo.Redirect||t.code===vo.SupersededByNewNavigation)}(e)?this.restoreHistory(i):e instanceof Fx?this.restoreHistory(i,!0):e instanceof Wr&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,{extras:i,id:o}){const{replaceUrl:r,state:s}=i;if(this.location.isCurrentPathEqualTo(e)||r){const a=this.browserPageId,l={...s,...this.generateNgRouterState(o,a)};this.location.replaceState(e,"",l)}else{const a={...s,...this.generateNgRouterState(o,this.browserPageId+1)};this.location.go(e,"",a)}}restoreHistory(e,i=!1){if("computed"===this.canceledNavigationResolution){const r=this.currentPageId-this.browserPageId;0!==r?this.location.historyGo(r):this.getCurrentUrlTree()===e.finalUrl&&0===r&&(this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}else"replace"===this.canceledNavigationResolution&&(i&&this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}resetInternalState({finalUrl:e}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,i){return"computed"===this.canceledNavigationResolution?{navigationId:e,\u0275routerPageId:i}:{navigationId:e}}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function A3(t,n){t.events.pipe(Tn(e=>e instanceof Wr||e instanceof wa||e instanceof Fx||e instanceof Ud),Se(e=>e instanceof Wr||e instanceof Ud?0:e instanceof wa&&(e.code===vo.Redirect||e.code===vo.SupersededByNewNavigation)?2:1),Tn(e=>2!==e),Cn(1)).subscribe(()=>{n()})}let vt=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=D(AI);stateManager=D(eS);options=D(Gd,{optional:!0})||{};pendingTasks=D(Ys);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";navigationTransitions=D(Qx);urlSerializer=D(jd);location=D(Fd);urlHandlingStrategy=D(Zx);injector=D(zn);_events=new me;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=D(O3);injectorCleanup=D(nce,{optional:!0});onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore";config=D(sb,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!D(tb,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:e=>{}}),this.subscribeToNavigationEvents()}eventsSubscription=new pt;subscribeToNavigationEvents(){const e=this.navigationTransitions.events.subscribe(i=>{try{const o=this.navigationTransitions.currentTransition,r=nt(this.navigationTransitions.currentNavigation);if(null!==o&&null!==r)if(this.stateManager.handleRouterEvent(i,r),i instanceof wa&&i.code!==vo.Redirect&&i.code!==vo.SupersededByNewNavigation)this.navigated=!0;else if(i instanceof Wr)this.navigated=!0,this.injectorCleanup?.(this.routeReuseStrategy,this.routerState,this.config);else if(i instanceof J_){const s=i.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(i.url,o.currentRawUrl),l={scroll:o.extras.scroll,browserUrl:o.extras.browserUrl,info:o.extras.info,skipLocationChange:o.extras.skipLocationChange,replaceUrl:o.extras.replaceUrl||"eager"===this.urlUpdateStrategy||tce(o.source),...s};this.scheduleNavigation(a,wf,null,l,{resolve:o.resolve,reject:o.reject,promise:o.promise})}(function zae(t){return!(t instanceof Nx||t instanceof J_||t instanceof n3)})(i)&&this._events.next(i)}catch(o){this.navigationTransitions.transitionAbortWithErrorSubject.next(o)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),wf,this.stateManager.restoredState(),{replaceUrl:!0})}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,i,o,r)=>{this.navigateToSyncWithBrowser(e,o,i,r)})}navigateToSyncWithBrowser(e,i,o,r){const s=o?.navigationId?o:null;if(o){const l={...o};delete l.navigationId,delete l.\u0275routerPageId,0!==Object.keys(l).length&&(r.state=l)}const a=this.parseUrl(e);this.scheduleNavigation(a,i,s,r).catch(l=>{this.disposed||this.injector.get(Or)(l)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return nt(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map($x),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription?.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0,this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,i={}){const{relativeTo:o,queryParams:r,fragment:s,queryParamsHandling:a,preserveFragment:l}=i,c=l?this.currentUrlTree.fragment:s;let m,f=null;switch(a??this.options.defaultQueryParamsHandling){case"merge":f={...this.currentUrlTree.queryParams,...r};break;case"preserve":f=this.currentUrlTree.queryParams;break;default:f=r||null}null!==f&&(f=this.removeEmptyProps(f));try{m=GL(o?o.snapshot:this.routerState.snapshot.root)}catch{("string"!=typeof e[0]||"/"!==e[0][0])&&(e=[]),m=this.currentUrlTree.root}return qL(m,e,f,c??null,this.urlSerializer)}navigateByUrl(e,i={skipLocationChange:!1}){const o=ql(e)?e:this.parseUrl(e),r=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(r,wf,null,i)}navigate(e,i={skipLocationChange:!1}){return function sce(t){for(let n=0;n(null!=r&&(i[o]=r),i),{})}scheduleNavigation(e,i,o,r,s){if(this.disposed)return Promise.resolve(!1);let a,l,c;s?(a=s.resolve,l=s.reject,c=s.promise):c=new Promise((m,g)=>{a=m,l=g});const f=this.pendingTasks.add();return A3(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(f))}),this.navigationTransitions.handleNavigationRequest({source:i,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:r,resolve:a,reject:l,promise:c,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),c.catch(Promise.reject.bind(Promise))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class ace extends pt{constructor(n,e){super()}schedule(n,e=0){return this}}const ab={setInterval(t,n,...e){const{delegate:i}=ab;return i?.setInterval?i.setInterval(t,n,...e):setInterval(t,n,...e)},clearInterval(t){const{delegate:n}=ab;return(n?.clearInterval||clearInterval)(t)},delegate:void 0};class tS extends ace{constructor(n,e){super(n,e),this.scheduler=n,this.work=e,this.pending=!1}schedule(n,e=0){var i;if(this.closed)return this;this.state=n;const o=this.id,r=this.scheduler;return null!=o&&(this.id=this.recycleAsyncId(r,o,e)),this.pending=!0,this.delay=e,this.id=null!==(i=this.id)&&void 0!==i?i:this.requestAsyncId(r,this.id,e),this}requestAsyncId(n,e,i=0){return ab.setInterval(n.flush.bind(n,this),i)}recycleAsyncId(n,e,i=0){if(null!=i&&this.delay===i&&!1===this.pending)return e;null!=e&&ab.clearInterval(e)}execute(n,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const i=this._execute(n,e);if(i)return i;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(n,e){let o,i=!1;try{this.work(n)}catch(r){i=!0,o=r||new Error("Scheduled action threw falsy error")}if(i)return this.unsubscribe(),o}unsubscribe(){if(!this.closed){const{id:n,scheduler:e}=this,{actions:i}=e;this.work=this.state=this.scheduler=null,this.pending=!1,Rp(i,this),null!=n&&(this.id=this.recycleAsyncId(e,n,null)),this.delay=null,super.unsubscribe()}}}const nS={now:()=>(nS.delegate||Date).now(),delegate:void 0};class Ef{constructor(n,e=Ef.now){this.schedulerActionCtor=n,this.now=e}schedule(n,e=0,i){return new this.schedulerActionCtor(this,n).schedule(i,e)}}Ef.now=nS.now;class iS extends Ef{constructor(n,e=Ef.now){super(n,e),this.actions=[],this._active=!1}flush(n){const{actions:e}=this;if(this._active)return void e.push(n);let i;this._active=!0;do{if(i=n.execute(n.state,n.delay))break}while(n=e.shift());if(this._active=!1,i){for(;n=e.shift();)n.unsubscribe();throw i}}}const Pf=new iS(tS),lce=Pf;function R3(t,n){return n?e=>Ts(n.pipe(Cn(1),function cce(){return Mn((t,n)=>{t.subscribe(dn(n,Np))})}()),e.pipe(R3(t))):It((e,i)=>ji(t(e,i)).pipe(Cn(1),function dce(t){return Se(()=>t)}(e)))}function xa(t=0,n,e=lce){let i=-1;return null!=n&&(oL(n)?e=n:i=n),new Ft(o=>{let r=function uce(t){return t instanceof Date&&!isNaN(t)}(t)?+t-e.now():t;r<0&&(r=0);let s=0;return e.schedule(function(){o.closed||(o.next(s++),0<=i?this.schedule(void 0,i):o.complete())},r)})}function li(t,n=Pf){const e=xa(t,n);return R3(()=>e)}var lb=function(t){return t.NoConnection="NoConnection",t.Unknown="Unknown",t}(lb||{});class hce{}const F3="common.operation-error";function Qe(t){if(t&&t.type&&!t.srcElement)return t;const n=new hce;if(n.originalError=t,!t||"string"==typeof t)return n.originalServerErrorMsg=t||"",n.translatableErrorMsg=t||F3,n.type=lb.Unknown,n;n.originalServerErrorMsg=function pce(t){if(t){if("string"==typeof t._body)return t._body;if(t.originalServerErrorMsg&&"string"==typeof t.originalServerErrorMsg)return t.originalServerErrorMsg;if(t.error&&"string"==typeof t.error)return t.error;if(t.error&&t.error.error&&t.error.error.message)return t.error.error.message;if(t.error&&t.error.error&&"string"==typeof t.error.error)return t.error.error;if(t.message)return t.message;if(t._body&&t._body.error)return t._body.error;try{return JSON.parse(t._body).error}catch{}}return null}(t);return null!=t.status&&(0===t.status||504===t.status)&&(n.type=lb.NoConnection,n.translatableErrorMsg="common.no-connection-error"),n.type||(n.type=lb.Unknown,n.translatableErrorMsg=n.originalServerErrorMsg?function fce(t){if(!t||0===t.length)return t;if(-1!==t.indexOf('"error":'))try{t=JSON.parse(t).error}catch{}if(t.startsWith("400")||t.startsWith("403")){const e=t.split(" - ",2);t=2===e.length?e[1]:t}const n=(t=t.trim()).substr(0,1);return n.toUpperCase()!==n&&(t=n.toUpperCase()+t.substr(1,t.length-1)),!t.endsWith(".")&&!t.endsWith(",")&&!t.endsWith(":")&&!t.endsWith(";")&&!t.endsWith("?")&&!t.endsWith("!")&&(t+="."),t}(n.originalServerErrorMsg):F3),n}class oo extends me{constructor(n=1/0,e=1/0,i=nS){super(),this._bufferSize=n,this._windowTime=e,this._timestampProvider=i,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=e===1/0,this._bufferSize=Math.max(1,n),this._windowTime=Math.max(1,e)}next(n){const{isStopped:e,_buffer:i,_infiniteTimeWindow:o,_timestampProvider:r,_windowTime:s}=this;e||(i.push(n),!o&&i.push(r.now()+s)),this._trimBuffer(),super.next(n)}_subscribe(n){this._throwIfClosed(),this._trimBuffer();const e=this._innerSubscribe(n),{_infiniteTimeWindow:i,_buffer:o}=this,r=o.slice();for(let s=0;s{class t{constructor(){this.currentRefreshTimeSubject=new oo(1),this.savedLocalNodes=new Map,this.savedLabels=new Map,this.savedVisibleLocalNodes=new Set}initialize(e){this.storage=localStorage,this.hypervisorPk=e,this.migrateDataToHvStorage(),this.currentRefreshTime=parseInt(this.getDataForHv(cb),10)||10,this.currentRefreshTimeSubject.next(this.currentRefreshTime),this.getSavedLocalNodes().forEach(r=>{this.savedLocalNodes.set(r.publicKey,r),r.hidden||this.savedVisibleLocalNodes.add(r.publicKey)}),this.getSavedLabels().forEach(r=>this.savedLabels.set(r.id,r)),this.loadLegacyNodeData();const i=[];this.savedLocalNodes.forEach(r=>i.push(r));const o=[];this.savedLabels.forEach(r=>o.push(r)),this.saveLocalNodes(i),this.saveLabels(o)}getDataForHv(e){return this.storage.getItem(this.hypervisorPk+e)}setDataForHv(e,i){return this.storage.setItem(this.hypervisorPk+e,i)}migrateDataToHvStorage(){const e=this.storage.getItem(cb);if(e){const r=parseInt(e,10)||10;this.setRefreshTime(r),this.storage.removeItem(cb)}const i=this.storage.getItem(ub);if(i){const r=JSON.parse(i)||[];this.saveLocalNodes(r),this.storage.removeItem(ub)}const o=this.storage.getItem(db);if(o){const r=JSON.parse(o)||[];this.saveLabels(r),this.storage.removeItem(db)}}loadLegacyNodeData(){const e=JSON.parse(this.storage.getItem(N3))||[];if(e.length>0){const i=this.getSavedLocalNodes(),o=this.getSavedLabels();e.forEach(r=>{i.push({publicKey:r.publicKey,hidden:r.deleted,ip:null}),this.savedLocalNodes.set(r.publicKey,i[i.length-1]),r.deleted||this.savedVisibleLocalNodes.add(r.publicKey),o.push({id:r.publicKey,identifiedElementType:ro.Node,label:r.label}),this.savedLabels.set(r.publicKey,o[o.length-1])}),this.saveLocalNodes(i),this.saveLabels(o),this.storage.removeItem(N3)}}setRefreshTime(e){this.setDataForHv(cb,e.toString()),this.currentRefreshTime=e,this.currentRefreshTimeSubject.next(this.currentRefreshTime)}getRefreshTimeObservable(){return this.currentRefreshTimeSubject.asObservable()}getRefreshTime(){return this.currentRefreshTime}includeVisibleLocalNodes(e,i){this.changeLocalNodesHiddenProperty(e,i,!1)}setLocalNodesAsHidden(e,i){this.changeLocalNodesHiddenProperty(e,i,!0)}changeLocalNodesHiddenProperty(e,i,o){if(e.length!==i.length)throw new Error("Invalid params");const r=new Map,s=new Map;e.forEach((c,f)=>{r.set(c,i[f]),s.set(c,i[f])});let a=!1;const l=this.getSavedLocalNodes();l.forEach(c=>{r.has(c.publicKey)&&(s.has(c.publicKey)&&s.delete(c.publicKey),c.ip!==r.get(c.publicKey)&&(c.ip=r.get(c.publicKey),a=!0,this.savedLocalNodes.set(c.publicKey,c)),c.hidden!==o&&(c.hidden=o,a=!0,this.savedLocalNodes.set(c.publicKey,c),o?this.savedVisibleLocalNodes.delete(c.publicKey):this.savedVisibleLocalNodes.add(c.publicKey)))}),s.forEach((c,f)=>{a=!0;const m={publicKey:f,hidden:o,ip:c};l.push(m),this.savedLocalNodes.set(f,m),o?this.savedVisibleLocalNodes.delete(f):this.savedVisibleLocalNodes.add(f)}),a&&this.saveLocalNodes(l)}getSavedLocalNodes(){return JSON.parse(this.getDataForHv(ub))||[]}getSavedVisibleLocalNodes(){return this.savedVisibleLocalNodes}saveLocalNodes(e){this.setDataForHv(ub,JSON.stringify(e))}getSavedLabels(){return JSON.parse(this.getDataForHv(db))||[]}saveLabels(e){this.setDataForHv(db,JSON.stringify(e))}saveLabel(e,i,o){if(i){let r=!1;const s=this.getSavedLabels().map(a=>(a.id===e&&a.identifiedElementType===o&&(r=!0,a.label=i,this.savedLabels.set(a.id,{label:a.label,id:a.id,identifiedElementType:a.identifiedElementType})),a));if(r)this.saveLabels(s);else{const a={label:i,id:e,identifiedElementType:o};s.push(a),this.savedLabels.set(e,a),this.saveLabels(s)}}else{this.savedLabels.has(e)&&this.savedLabels.delete(e);let r=!1;const s=this.getSavedLabels().filter(a=>a.id!==e||(r=!0,!1));r&&this.saveLabels(s)}}getDefaultLabel(e){return e?e.ip?e.ip:e.localPk:""}getLabelInfo(e){return this.savedLabels.has(e)?this.savedLabels.get(e):null}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const oS={};class ni{_appId=D(Js);static _infix=`a${Math.floor(1e5*Math.random()).toString()}`;getId(n,e=!1){return"ng"!==this._appId&&(n+=this._appId),oS.hasOwnProperty(n)||(oS[n]=0),`${n}${e?ni._infix+"-":""}${oS[n]++}`}static \u0275fac=function(e){return new(e||ni)};static \u0275prov=te({token:ni,factory:ni.\u0275fac,providedIn:"root"})}const If={schedule(t){let n=requestAnimationFrame,e=cancelAnimationFrame;const{delegate:i}=If;i&&(n=i.requestAnimationFrame,e=i.cancelAnimationFrame);const o=n(r=>{e=void 0,t(r)});return new pt(()=>e?.(o))},requestAnimationFrame(...t){const{delegate:n}=If;return(n?.requestAnimationFrame||requestAnimationFrame)(...t)},cancelAnimationFrame(...t){const{delegate:n}=If;return(n?.cancelAnimationFrame||cancelAnimationFrame)(...t)},delegate:void 0};new class gce extends iS{flush(n){let e;this._active=!0,n?e=n.id:(e=this._scheduled,this._scheduled=void 0);const{actions:i}=this;let o;n=n||i.shift();do{if(o=n.execute(n.state,n.delay))break}while((n=i[0])&&n.id===e&&i.shift());if(this._active=!1,o){for(;(n=i[0])&&n.id===e&&i.shift();)n.unsubscribe();throw o}}}(class mce extends tS{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}requestAsyncId(n,e,i=0){return null!==i&&i>0?super.requestAsyncId(n,e,i):(n.actions.push(this),n._scheduled||(n._scheduled=If.requestAnimationFrame(()=>n.flush(void 0))))}recycleAsyncId(n,e,i=0){var o;if(null!=i?i>0:this.delay>0)return super.recycleAsyncId(n,e,i);const{actions:r}=n;null!=e&&e===n._scheduled&&(null===(o=r[r.length-1])||void 0===o?void 0:o.id)!==e&&(If.cancelAnimationFrame(e),n._scheduled=void 0)}});let rS,bce=1;const hb={};function L3(t){return t in hb&&(delete hb[t],!0)}const vce={setImmediate(t){const n=bce++;return hb[n]=!0,rS||(rS=Promise.resolve()),rS.then(()=>L3(n)&&t()),n},clearImmediate(t){L3(t)}},{setImmediate:yce,clearImmediate:Cce}=vce,fb={setImmediate(...t){const{delegate:n}=fb;return(n?.setImmediate||yce)(...t)},clearImmediate(t){const{delegate:n}=fb;return(n?.clearImmediate||Cce)(t)},delegate:void 0};new class xce extends iS{flush(n){this._active=!0;const e=this._scheduled;this._scheduled=void 0;const{actions:i}=this;let o;n=n||i.shift();do{if(o=n.execute(n.state,n.delay))break}while((n=i[0])&&n.id===e&&i.shift());if(this._active=!1,o){for(;(n=i[0])&&n.id===e&&i.shift();)n.unsubscribe();throw o}}}(class wce extends tS{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}requestAsyncId(n,e,i=0){return null!==i&&i>0?super.requestAsyncId(n,e,i):(n.actions.push(this),n._scheduled||(n._scheduled=fb.setImmediate(n.flush.bind(n,void 0))))}recycleAsyncId(n,e,i=0){var o;if(null!=i?i>0:this.delay>0)return super.recycleAsyncId(n,e,i);const{actions:r}=n;null!=e&&(null===(o=r[r.length-1])||void 0===o?void 0:o.id)!==e&&(fb.clearImmediate(e),n._scheduled===e&&(n._scheduled=void 0))}});function B3(t,n=Pf){return function kce(t){return Mn((n,e)=>{let i=!1,o=null,r=null,s=!1;const a=()=>{if(r?.unsubscribe(),r=null,i){i=!1;const c=o;o=null,e.next(c)}s&&e.complete()},l=()=>{r=null,s&&e.complete()};n.subscribe(dn(e,c=>{i=!0,o=c,r||ji(t(c)).subscribe(r=dn(e,a,l))},()=>{s=!0,(!i||!r||r.closed)&&e.complete()}))})}(()=>xa(t,n))}function Of(t,n=0){return function Dce(t){return!isNaN(parseFloat(t))&&!isNaN(Number(t))}(t)?Number(t):2===arguments.length?n:0}function Ps(t){return t instanceof Re?t.nativeElement:t}let sS;try{sS=typeof Intl<"u"&&Intl.v8BreakIterator}catch{sS=!1}let Yn=(()=>{class t{_platformId=D(wC);isBrowser=this._platformId?function kU(t){return t===XM}(this._platformId):"object"==typeof document&&!!document;EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent);TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent);BLINK=this.isBrowser&&!(!window.chrome&&!sS)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT;WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT;IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window);FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent);ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT;SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT;constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Mce=new Z("cdk-dir-doc",{providedIn:"root",factory:()=>D(et)}),Tce=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let br=(()=>{class t{get value(){return this.valueSignal()}valueSignal=yt("ltr");change=new we;constructor(){const e=D(Mce,{optional:!0});e&&this.valueSignal.set(function Ece(t){const n=t?.toLowerCase()||"";return"auto"===n&&typeof navigator<"u"&&navigator?.language?Tce.test(navigator.language)?"rtl":"ltr":"rtl"===n?"rtl":"ltr"}((e.body?e.body.dir:null)||(e.documentElement?e.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var qr=function(t){return t[t.NORMAL=0]="NORMAL",t[t.NEGATED=1]="NEGATED",t[t.INVERTED=2]="INVERTED",t}(qr||{});let pb,Kl;function V3(){if(null==Kl){if("object"!=typeof document||!document||"function"!=typeof Element||!Element)return Kl=!1,Kl;if(document.documentElement?.style&&"scrollBehavior"in document.documentElement.style)Kl=!0;else{const t=Element.prototype.scrollTo;Kl=!!t&&!/\{\s*\[native code\]\s*\}/.test(t.toString())}}return Kl}function Af(){if("object"!=typeof document||!document)return qr.NORMAL;if(null==pb){const t=document.createElement("div"),n=t.style;t.dir="rtl",n.width="1px",n.overflow="auto",n.visibility="hidden",n.pointerEvents="none",n.position="absolute";const e=document.createElement("div"),i=e.style;i.width="2px",i.height="1px",t.appendChild(e),document.body.appendChild(t),pb=qr.NORMAL,0===t.scrollLeft&&(t.scrollLeft=1,pb=0===t.scrollLeft?qr.NEGATED:qr.INVERTED),t.remove()}return pb}let aS,ii=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})(),mb=(()=>{class t{_ngZone=D(_e);_platform=D(Yn);_renderer=D(Lo).createRenderer(null,null);_cleanupGlobalListener;constructor(){}_scrolled=new me;_scrolledCount=0;scrollContainers=new Map;register(e){this.scrollContainers.has(e)||this.scrollContainers.set(e,e.elementScrolled().subscribe(()=>this._scrolled.next(e)))}deregister(e){const i=this.scrollContainers.get(e);i&&(i.unsubscribe(),this.scrollContainers.delete(e))}scrolled(e=20){return this._platform.isBrowser?new Ft(i=>{this._cleanupGlobalListener||(this._cleanupGlobalListener=this._ngZone.runOutsideAngular(()=>this._renderer.listen("document","scroll",()=>this._scrolled.next())));const o=e>0?this._scrolled.pipe(B3(e)).subscribe(i):this._scrolled.subscribe(i);return this._scrolledCount++,()=>{o.unsubscribe(),this._scrolledCount--,this._scrolledCount||(this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0)}}):ae()}ngOnDestroy(){this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0,this.scrollContainers.forEach((e,i)=>this.deregister(i)),this._scrolled.complete()}ancestorScrolled(e,i){const o=this.getAncestorScrollContainers(e);return this.scrolled(i).pipe(Tn(r=>!r||o.indexOf(r)>-1))}getAncestorScrollContainers(e){const i=[];return this.scrollContainers.forEach((o,r)=>{this._scrollableContainsElement(r,e)&&i.push(r)}),i}_scrollableContainsElement(e,i){let o=Ps(i),r=e.getElementRef().nativeElement;do{if(o==r)return!0}while(o=o.parentElement);return!1}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),H3=(()=>{class t{elementRef=D(Re);scrollDispatcher=D(mb);ngZone=D(_e);dir=D(br,{optional:!0});_scrollElement=this.elementRef.nativeElement;_destroyed=new me;_renderer=D(Qn);_cleanupScroll;_elementScrolled=new me;constructor(){}ngOnInit(){this._cleanupScroll=this.ngZone.runOutsideAngular(()=>this._renderer.listen(this._scrollElement,"scroll",e=>this._elementScrolled.next(e))),this.scrollDispatcher.register(this)}ngOnDestroy(){this._cleanupScroll?.(),this._elementScrolled.complete(),this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(e){const i=this.elementRef.nativeElement,o=this.dir&&"rtl"==this.dir.value;null==e.left&&(e.left=o?e.end:e.start),null==e.right&&(e.right=o?e.start:e.end),null!=e.bottom&&(e.top=i.scrollHeight-i.clientHeight-e.bottom),o&&Af()!=qr.NORMAL?(null!=e.left&&(e.right=i.scrollWidth-i.clientWidth-e.left),Af()==qr.INVERTED?e.left=e.right:Af()==qr.NEGATED&&(e.left=e.right?-e.right:e.right)):null!=e.right&&(e.left=i.scrollWidth-i.clientWidth-e.right),this._applyScrollToOptions(e)}_applyScrollToOptions(e){const i=this.elementRef.nativeElement;V3()?i.scrollTo(e):(null!=e.top&&(i.scrollTop=e.top),null!=e.left&&(i.scrollLeft=e.left))}measureScrollOffset(e){const i="left",o="right",r=this.elementRef.nativeElement;if("top"==e)return r.scrollTop;if("bottom"==e)return r.scrollHeight-r.clientHeight-r.scrollTop;const s=this.dir&&"rtl"==this.dir.value;return"start"==e?e=s?o:i:"end"==e&&(e=s?i:o),s&&Af()==qr.INVERTED?e==i?r.scrollWidth-r.clientWidth-r.scrollLeft:r.scrollLeft:s&&Af()==qr.NEGATED?e==i?r.scrollLeft+r.scrollWidth-r.clientWidth:-r.scrollLeft:e==i?r.scrollLeft:r.scrollWidth-r.clientWidth-r.scrollLeft}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]]})}return t})(),qd=(()=>{class t{_platform=D(Yn);_listeners;_viewportSize=null;_change=new me;_document=D(et);constructor(){const e=D(_e),i=D(Lo).createRenderer(null,null);e.runOutsideAngular(()=>{if(this._platform.isBrowser){const o=r=>this._change.next(r);this._listeners=[i.listen("window","resize",o),i.listen("window","orientationchange",o)]}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){this._listeners?.forEach(e=>e()),this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const e={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),e}getViewportRect(){const e=this.getViewportScrollPosition(),{width:i,height:o}=this.getViewportSize();return{top:e.top,left:e.left,bottom:e.top+o,right:e.left+i,height:o,width:i}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const e=this._document,i=this._getWindow(),o=e.documentElement,r=o.getBoundingClientRect();return{top:-r.top||e.body?.scrollTop||i.scrollY||o.scrollTop||0,left:-r.left||e.body?.scrollLeft||i.scrollX||o.scrollLeft||0}}change(e=20){return e>0?this._change.pipe(B3(e)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const e=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:e.innerWidth,height:e.innerHeight}:{width:0,height:0}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Rf=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})(),j3=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ii,Rf,ii,Rf]})}return t})();function lS(){let t=typeof document<"u"&&document?document.activeElement:null;for(;t&&t.shadowRoot;){const n=t.shadowRoot.activeElement;if(n===t)break;t=n}return t}function vr(t){return t.composedPath?t.composedPath()[0]:t.target}function U3(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}const gb=new WeakMap;let zo=(()=>{class t{_appRef;_injector=D(He);_environmentInjector=D(zn);load(e){const i=this._appRef=this._appRef||this._injector.get(lr);let o=gb.get(i);o||(o={loaders:new Set,refs:[]},gb.set(i,o),i.onDestroy(()=>{gb.get(i)?.refs.forEach(r=>r.destroy()),gb.delete(i)})),o.loaders.has(e)||(o.loaders.add(e),o.refs.push(gF(e,{environmentInjector:this._environmentInjector})))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function oi(t){return null==t?"":"string"==typeof t?t:`${t}px`}function _b(t){return Array.isArray(t)?t:[t]}class cS{_attachedHost=null;attach(n){return this._attachedHost=n,n.attach(this)}detach(){let n=this._attachedHost;null!=n&&(this._attachedHost=null,n.detach())}get isAttached(){return null!=this._attachedHost}setAttachedHost(n){this._attachedHost=n}}class Kd extends cS{component;viewContainerRef;injector;projectableNodes;bindings;constructor(n,e,i,o,r){super(),this.component=n,this.viewContainerRef=e,this.injector=i,this.projectableNodes=o,this.bindings=r||null}}class Yl extends cS{templateRef;viewContainerRef;context;injector;constructor(n,e,i,o){super(),this.templateRef=n,this.viewContainerRef=e,this.context=i,this.injector=o}get origin(){return this.templateRef.elementRef}attach(n,e=this.context){return this.context=e,super.attach(n)}detach(){return this.context=void 0,super.detach()}}class Nce extends cS{element;constructor(n){super(),this.element=n instanceof Re?n.nativeElement:n}}class bb{_attachedPortal=null;_disposeFn=null;_isDisposed=!1;hasAttached(){return!!this._attachedPortal}attach(n){return n instanceof Kd?(this._attachedPortal=n,this.attachComponentPortal(n)):n instanceof Yl?(this._attachedPortal=n,this.attachTemplatePortal(n)):this.attachDomPortal&&n instanceof Nce?(this._attachedPortal=n,this.attachDomPortal(n)):void 0}attachDomPortal=null;detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(n){this._disposeFn=n}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}class Lce extends bb{outletElement;_appRef;_defaultInjector;constructor(n,e,i){super(),this.outletElement=n,this._appRef=e,this._defaultInjector=i}attachComponentPortal(n){let e;if(n.viewContainerRef){const i=n.injector||n.viewContainerRef.injector,o=i.get(bs,null,{optional:!0})||void 0;e=n.viewContainerRef.createComponent(n.component,{index:n.viewContainerRef.length,injector:i,ngModuleRef:o,projectableNodes:n.projectableNodes||void 0,bindings:n.bindings||void 0}),this.setDisposeFn(()=>e.destroy())}else{const i=this._appRef,o=n.injector||this._defaultInjector||He.NULL,r=o.get(zn,i.injector);e=gF(n.component,{elementInjector:o,environmentInjector:r,projectableNodes:n.projectableNodes||void 0,bindings:n.bindings||void 0}),i.attachView(e.hostView),this.setDisposeFn(()=>{i.viewCount>0&&i.detachView(e.hostView),e.destroy()})}return this.outletElement.appendChild(this._getComponentRootNode(e)),this._attachedPortal=n,e}attachTemplatePortal(n){let e=n.viewContainerRef,i=e.createEmbeddedView(n.templateRef,n.context,{injector:n.injector});return i.rootNodes.forEach(o=>this.outletElement.appendChild(o)),i.detectChanges(),this.setDisposeFn(()=>{let o=e.indexOf(i);-1!==o&&e.remove(o)}),this._attachedPortal=n,i}attachDomPortal=n=>{const e=n.element,i=this.outletElement.ownerDocument.createComment("dom-portal");e.parentNode.insertBefore(i,e),this.outletElement.appendChild(e),this._attachedPortal=n,super.setDisposeFn(()=>{i.parentNode&&i.parentNode.replaceChild(e,i)})};dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(n){return n.hostView.rootNodes[0]}}let Bce=(()=>{class t extends Yl{constructor(){super(D(Ti),D(Ei))}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkPortal",""]],exportAs:["cdkPortal"],features:[be]})}return t})(),Xl=(()=>{class t extends bb{_moduleRef=D(bs,{optional:!0});_document=D(et);_viewContainerRef=D(Ei);_isInitialized=!1;_attachedRef=null;constructor(){super()}get portal(){return this._attachedPortal}set portal(e){this.hasAttached()&&!e&&!this._isInitialized||(this.hasAttached()&&super.detach(),e&&super.attach(e),this._attachedPortal=e||null)}attached=new we;get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(e){e.setAttachedHost(this);const i=null!=e.viewContainerRef?e.viewContainerRef:this._viewContainerRef,o=i.createComponent(e.component,{index:i.length,injector:e.injector||i.injector,projectableNodes:e.projectableNodes||void 0,ngModuleRef:this._moduleRef||void 0,bindings:e.bindings||void 0});return i!==this._viewContainerRef&&this._getRootNode().appendChild(o.hostView.rootNodes[0]),super.setDisposeFn(()=>o.destroy()),this._attachedPortal=e,this._attachedRef=o,this.attached.emit(o),o}attachTemplatePortal(e){e.setAttachedHost(this);const i=this._viewContainerRef.createEmbeddedView(e.templateRef,e.context,{injector:e.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=e,this._attachedRef=i,this.attached.emit(i),i}attachDomPortal=e=>{const i=e.element,o=this._document.createComment("dom-portal");e.setAttachedHost(this),i.parentNode.insertBefore(o,i),this._getRootNode().appendChild(i),this._attachedPortal=e,super.setDisposeFn(()=>{o.parentNode&&o.parentNode.replaceChild(i,o)})};_getRootNode(){const e=this._viewContainerRef.element.nativeElement;return e.nodeType===e.ELEMENT_NODE?e:e.parentNode}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:[0,"cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],features:[be]})}return t})(),Ff=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function yr(t,...n){return n.length?n.some(e=>t[e]):t.altKey||t.shiftKey||t.ctrlKey||t.metaKey}const $3=V3();function dS(t){return new Jce(t.get(qd),t.get(et))}class Jce{_viewportRuler;_previousHTMLStyles={top:"",left:""};_previousScrollPosition;_isEnabled=!1;_document;constructor(n,e){this._viewportRuler=n,this._document=e}attach(){}enable(){if(this._canBeEnabled()){const n=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=n.style.left||"",this._previousHTMLStyles.top=n.style.top||"",n.style.left=oi(-this._previousScrollPosition.left),n.style.top=oi(-this._previousScrollPosition.top),n.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){const n=this._document.documentElement,i=n.style,o=this._document.body.style,r=i.scrollBehavior||"",s=o.scrollBehavior||"";this._isEnabled=!1,i.left=this._previousHTMLStyles.left,i.top=this._previousHTMLStyles.top,n.classList.remove("cdk-global-scrollblock"),$3&&(i.scrollBehavior=o.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),$3&&(i.scrollBehavior=r,o.scrollBehavior=s)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;const e=this._document.documentElement,i=this._viewportRuler.getViewportSize();return e.scrollHeight>i.height||e.scrollWidth>i.width}}class tde{_scrollDispatcher;_ngZone;_viewportRuler;_config;_scrollSubscription=null;_overlayRef;_initialScrollPosition;constructor(n,e,i,o){this._scrollDispatcher=n,this._ngZone=e,this._viewportRuler=i,this._config=o}attach(n){this._overlayRef=n}enable(){if(this._scrollSubscription)return;const n=this._scrollDispatcher.scrolled(0).pipe(Tn(e=>!e||!this._overlayRef.overlayElement.contains(e.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=n.subscribe(()=>{const e=this._viewportRuler.getViewportScrollPosition().top;Math.abs(e-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=n.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}_detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}class uS{enable(){}disable(){}attach(){}}function hS(t,n){return n.some(e=>t.bottome.bottom||t.righte.right)}function W3(t,n){return n.some(e=>t.tope.bottom||t.lefte.right)}function Bf(t,n){return new nde(t.get(mb),t.get(qd),t.get(_e),n)}class nde{_scrollDispatcher;_viewportRuler;_ngZone;_config;_scrollSubscription=null;_overlayRef;constructor(n,e,i,o){this._scrollDispatcher=n,this._viewportRuler=e,this._ngZone=i,this._config=o}attach(n){this._overlayRef=n}enable(){this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){const e=this._overlayRef.overlayElement.getBoundingClientRect(),{width:i,height:o}=this._viewportRuler.getViewportSize();hS(e,[{width:i,height:o,bottom:o,right:i,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}}))}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}let ide=(()=>{class t{_injector=D(He);constructor(){}noop=()=>new uS;close=e=>function ede(t,n){return new tde(t.get(mb),t.get(_e),t.get(qd),n)}(this._injector,e);block=()=>dS(this._injector);reposition=e=>Bf(this._injector,e);static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class Vf{positionStrategy;scrollStrategy=new uS;panelClass="";hasBackdrop=!1;backdropClass="cdk-overlay-dark-backdrop";disableAnimations;width;height;minWidth;minHeight;maxWidth;maxHeight;direction;disposeOnNavigation=!1;usePopover;eventPredicate;constructor(n){if(n){const e=Object.keys(n);for(const i of e)void 0!==n[i]&&(this[i]=n[i])}}}class ode{connectionPair;scrollableViewProperties;constructor(n,e){this.connectionPair=n,this.scrollableViewProperties=e}}let G3=(()=>{class t{_attachedOverlays=[];_document=D(et);_isAttached=!1;constructor(){}ngOnDestroy(){this.detach()}add(e){this.remove(e),this._attachedOverlays.push(e)}remove(e){const i=this._attachedOverlays.indexOf(e);i>-1&&this._attachedOverlays.splice(i,1),0===this._attachedOverlays.length&&this.detach()}canReceiveEvent(e,i,o){return!(o.observers.length<1)&&(!e.eventPredicate||e.eventPredicate(i))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),rde=(()=>{class t extends G3{_ngZone=D(_e);_renderer=D(Lo).createRenderer(null,null);_cleanupKeydown;add(e){super.add(e),this._isAttached||(this._ngZone.runOutsideAngular(()=>{this._cleanupKeydown=this._renderer.listen("body","keydown",this._keydownListener)}),this._isAttached=!0)}detach(){this._isAttached&&(this._cleanupKeydown?.(),this._isAttached=!1)}_keydownListener=e=>{const i=this._attachedOverlays;for(let o=i.length-1;o>-1;o--){const r=i[o];if(this.canReceiveEvent(r,e,r._keydownEvents)){this._ngZone.run(()=>r._keydownEvents.next(e));break}}};static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),sde=(()=>{class t extends G3{_platform=D(Yn);_ngZone=D(_e);_renderer=D(Lo).createRenderer(null,null);_cursorOriginalValue;_cursorStyleIsSet=!1;_pointerDownEventTarget=null;_cleanups;add(e){if(super.add(e),!this._isAttached){const i=this._document.body,o={capture:!0},r=this._renderer;this._cleanups=this._ngZone.runOutsideAngular(()=>[r.listen(i,"pointerdown",this._pointerDownListener,o),r.listen(i,"click",this._clickListener,o),r.listen(i,"auxclick",this._clickListener,o),r.listen(i,"contextmenu",this._clickListener,o)]),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=i.style.cursor,i.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){this._isAttached&&(this._cleanups?.forEach(e=>e()),this._cleanups=void 0,this._platform.IOS&&this._cursorStyleIsSet&&(this._document.body.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1)}_pointerDownListener=e=>{this._pointerDownEventTarget=vr(e)};_clickListener=e=>{const i=vr(e),o="click"===e.type&&this._pointerDownEventTarget?this._pointerDownEventTarget:i;this._pointerDownEventTarget=null;const r=this._attachedOverlays.slice();for(let s=r.length-1;s>-1;s--){const a=r[s],l=a._outsidePointerEvents;if(a.hasAttached()&&this.canReceiveEvent(a,e,l)){if(q3(a.overlayElement,i)||q3(a.overlayElement,o))break;this._ngZone?this._ngZone.run(()=>l.next(e)):l.next(e)}}};static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function q3(t,n){const e=typeof ShadowRoot<"u"&&ShadowRoot;let i=n;for(;i;){if(i===t)return!0;i=e&&i instanceof ShadowRoot?i.host:i.parentNode}return!1}let K3=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["ng-component"]],hostAttrs:["cdk-overlay-style-loader",""],decls:0,vars:0,template:function(i,o){},styles:[".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed}@layer cdk-overlay{.cdk-overlay-container{z-index:1000}}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute}@layer cdk-overlay{.cdk-global-overlay-wrapper{z-index:1000}}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%}@layer cdk-overlay{.cdk-overlay-pane{z-index:1000}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);opacity:0;touch-action:manipulation}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}@layer cdk-overlay{.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px}@layer cdk-overlay{.cdk-overlay-connected-position-bounding-box{z-index:1000}}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.cdk-overlay-popover{background:none;border:none;padding:0;outline:0;overflow:visible;position:fixed;pointer-events:none;white-space:normal;color:inherit;text-decoration:none;width:100%;height:100%;inset:auto;top:0;left:0}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{position:fixed;z-index:auto}\n"],encapsulation:2,changeDetection:0})}return t})(),fS=(()=>{class t{_platform=D(Yn);_containerElement;_document=D(et);_styleLoader=D(zo);constructor(){}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._loadStyles(),this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const e="cdk-overlay-container";if(this._platform.isBrowser||U3()){const o=this._document.querySelectorAll(`.${e}[platform="server"], .${e}[platform="test"]`);for(let r=0;r{const n=this.element;clearTimeout(this._fallbackTimeout),this._cleanupTransitionEnd?.(),this._cleanupTransitionEnd=this._renderer.listen(n,"transitionend",this.dispose),this._fallbackTimeout=setTimeout(this.dispose,500),n.style.pointerEvents="none",n.classList.remove("cdk-overlay-backdrop-showing")})}dispose=()=>{clearTimeout(this._fallbackTimeout),this._cleanupClick?.(),this._cleanupTransitionEnd?.(),this._cleanupClick=this._cleanupTransitionEnd=this._fallbackTimeout=void 0,this.element.remove()}}function pS(t){return t&&1===t.nodeType}class Y3{_portalOutlet;_host;_pane;_config;_ngZone;_keyboardDispatcher;_document;_location;_outsideClickDispatcher;_animationsDisabled;_injector;_renderer;_backdropClick=new me;_attachments=new me;_detachments=new me;_positionStrategy;_scrollStrategy;_locationChanges=pt.EMPTY;_backdropRef=null;_detachContentMutationObserver;_detachContentAfterRenderRef;_disposed=!1;_previousHostParent;_keydownEvents=new me;_outsidePointerEvents=new me;_afterNextRenderRef;constructor(n,e,i,o,r,s,a,l,c,f=!1,m,g){this._portalOutlet=n,this._host=e,this._pane=i,this._config=o,this._ngZone=r,this._keyboardDispatcher=s,this._document=a,this._location=l,this._outsideClickDispatcher=c,this._animationsDisabled=f,this._injector=m,this._renderer=g,o.scrollStrategy&&(this._scrollStrategy=o.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=o.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropRef?.element||null}get hostElement(){return this._host}get eventPredicate(){return this._config?.eventPredicate||null}attach(n){if(this._disposed)return null;this._attachHost();const e=this._portalOutlet.attach(n);return this._positionStrategy?.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._afterNextRenderRef?.destroy(),this._afterNextRenderRef=Vi(()=>{this.hasAttached()&&this.updatePosition()},{injector:this._injector}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._completeDetachContent(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),"function"==typeof e?.onDestroy&&e.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),e}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();const n=this._portalOutlet.detach();return this._detachments.next(),this._completeDetachContent(),this._keyboardDispatcher.remove(this),this._detachContentWhenEmpty(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),n}dispose(){if(this._disposed)return;const n=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._backdropRef?.dispose(),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._afterNextRenderRef?.destroy(),this._previousHostParent=this._pane=this._host=this._backdropRef=null,n&&this._detachments.next(),this._detachments.complete(),this._completeDetachContent(),this._disposed=!0}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(n){n!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=n,this.hasAttached()&&(n.attach(this),this.updatePosition()))}updateSize(n){this._config={...this._config,...n},this._updateElementSize()}setDirection(n){this._config={...this._config,direction:n},this._updateElementDirection()}addPanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!0)}removePanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!1)}getDirection(){const n=this._config.direction;return n?"string"==typeof n?n:n.value:"ltr"}updateScrollStrategy(n){n!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=n,this.hasAttached()&&(n.attach(this),n.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;const n=this._pane.style;n.width=oi(this._config.width),n.height=oi(this._config.height),n.minWidth=oi(this._config.minWidth),n.minHeight=oi(this._config.minHeight),n.maxWidth=oi(this._config.maxWidth),n.maxHeight=oi(this._config.maxHeight)}_togglePointerEvents(n){this._pane.style.pointerEvents=n?"":"none"}_attachHost(){if(!this._host.parentElement){const n=this._config.usePopover?this._positionStrategy?.getPopoverInsertionPoint?.():null;pS(n)?n.after(this._host):"parent"===n?.type?n.element.appendChild(this._host):this._previousHostParent?.appendChild(this._host)}if(this._config.usePopover)try{this._host.showPopover()}catch{}}_attachBackdrop(){const n="cdk-overlay-backdrop-showing";this._backdropRef?.dispose(),this._backdropRef=new ade(this._document,this._renderer,this._ngZone,e=>{this._backdropClick.next(e)}),this._animationsDisabled&&this._backdropRef.element.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropRef.element,this._config.backdropClass,!0),this._config.usePopover?this._host.prepend(this._backdropRef.element):this._host.parentElement.insertBefore(this._backdropRef.element,this._host),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>this._backdropRef?.element.classList.add(n))}):this._backdropRef.element.classList.add(n)}_updateStackingOrder(){!this._config.usePopover&&this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){this._animationsDisabled?(this._backdropRef?.dispose(),this._backdropRef=null):this._backdropRef?.detach()}_toggleClasses(n,e,i){const o=_b(e||[]).filter(r=>!!r);o.length&&(i?n.classList.add(...o):n.classList.remove(...o))}_detachContentWhenEmpty(){let n=!1;try{this._detachContentAfterRenderRef=Vi(()=>{n=!0,this._detachContent()},{injector:this._injector})}catch(e){if(n)throw e;this._detachContent()}globalThis.MutationObserver&&this._pane&&(this._detachContentMutationObserver||=new globalThis.MutationObserver(()=>{this._detachContent()}),this._detachContentMutationObserver.observe(this._pane,{childList:!0}))}_detachContent(){(!this._pane||!this._host||0===this._pane.children.length)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),this._completeDetachContent())}_completeDetachContent(){this._detachContentAfterRenderRef?.destroy(),this._detachContentAfterRenderRef=void 0,this._detachContentMutationObserver?.disconnect()}_disposeScrollStrategy(){const n=this._scrollStrategy;n?.disable(),n?.detach?.()}}const X3="cdk-overlay-connected-position-bounding-box",lde=/([A-Za-z%]+)$/;function xb(t,n){return new cde(n,t.get(qd),t.get(et),t.get(Yn),t.get(fS))}class cde{_viewportRuler;_document;_platform;_overlayContainer;_overlayRef;_isInitialRender=!1;_lastBoundingBoxSize={width:0,height:0};_isPushed=!1;_canPush=!0;_growAfterOpen=!1;_hasFlexibleDimensions=!0;_positionLocked=!1;_originRect;_overlayRect;_viewportRect;_containerRect;_viewportMargin=0;_scrollables=[];_preferredPositions=[];_origin;_pane;_isDisposed=!1;_boundingBox=null;_lastPosition=null;_lastScrollVisibility=null;_positionChanges=new me;_resizeSubscription=pt.EMPTY;_offsetX=0;_offsetY=0;_transformOriginSelector;_appliedPanelClasses=[];_previousPushAmount=null;_popoverLocation="global";positionChanges=this._positionChanges;get positions(){return this._preferredPositions}constructor(n,e,i,o,r){this._viewportRuler=e,this._document=i,this._platform=o,this._overlayContainer=r,this.setOrigin(n)}attach(n){this._validatePositions(),n.hostElement.classList.add(X3),this._overlayRef=n,this._boundingBox=n.hostElement,this._pane=n.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition)return void this.reapplyLastPosition();this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._getContainerRect();const n=this._originRect,e=this._overlayRect,i=this._viewportRect,o=this._containerRect,r=[];let s;for(let a of this._preferredPositions){let l=this._getOriginPoint(n,o,a),c=this._getOverlayPoint(l,e,a),f=this._getOverlayFit(c,e,i,a);if(f.isCompletelyWithinViewport)return this._isPushed=!1,void this._applyPosition(a,l);this._canFitWithFlexibleDimensions(f,c,i)?r.push({position:a,origin:l,overlayRect:e,boundingBoxRect:this._calculateBoundingBoxRect(l,a)}):(!s||s.overlayFit.visibleAreal&&(l=f,a=c)}return this._isPushed=!1,void this._applyPosition(a.position,a.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(s.position,s.originPoint);this._applyPosition(s.position,s.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&Zl(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(X3),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;const n=this._lastPosition;n?(this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._getContainerRect(),this._applyPosition(n,this._getOriginPoint(this._originRect,this._containerRect,n))):this.apply()}withScrollableContainers(n){return this._scrollables=n,this}withPositions(n){return this._preferredPositions=n,-1===n.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(n){return this._viewportMargin=n,this}withFlexibleDimensions(n=!0){return this._hasFlexibleDimensions=n,this}withGrowAfterOpen(n=!0){return this._growAfterOpen=n,this}withPush(n=!0){return this._canPush=n,this}withLockedPosition(n=!0){return this._positionLocked=n,this}setOrigin(n){return this._origin=n,this}withDefaultOffsetX(n){return this._offsetX=n,this}withDefaultOffsetY(n){return this._offsetY=n,this}withTransformOriginOn(n){return this._transformOriginSelector=n,this}withPopoverLocation(n){return this._popoverLocation=n,this}getPopoverInsertionPoint(){return"global"===this._popoverLocation?null:"inline"!==this._popoverLocation?this._popoverLocation:this._origin instanceof Re?this._origin.nativeElement:pS(this._origin)?this._origin:null}_getOriginPoint(n,e,i){let o,r;if("center"==i.originX)o=n.left+n.width/2;else{const s=this._isRtl()?n.right:n.left,a=this._isRtl()?n.left:n.right;o="start"==i.originX?s:a}return e.left<0&&(o-=e.left),r="center"==i.originY?n.top+n.height/2:"top"==i.originY?n.top:n.bottom,e.top<0&&(r-=e.top),{x:o,y:r}}_getOverlayPoint(n,e,i){let o,r;return o="center"==i.overlayX?-e.width/2:"start"===i.overlayX?this._isRtl()?-e.width:0:this._isRtl()?0:-e.width,r="center"==i.overlayY?-e.height/2:"top"==i.overlayY?0:-e.height,{x:n.x+o,y:n.y+r}}_getOverlayFit(n,e,i,o){const r=Q3(e);let{x:s,y:a}=n,l=this._getOffset(o,"x"),c=this._getOffset(o,"y");l&&(s+=l),c&&(a+=c);let g=0-a,_=a+r.height-i.height,w=this._subtractOverflows(r.width,0-s,s+r.width-i.width),k=this._subtractOverflows(r.height,g,_),T=w*k;return{visibleArea:T,isCompletelyWithinViewport:r.width*r.height===T,fitsInViewportVertically:k===r.height,fitsInViewportHorizontally:w==r.width}}_canFitWithFlexibleDimensions(n,e,i){if(this._hasFlexibleDimensions){const o=i.bottom-e.y,r=i.right-e.x,s=Z3(this._overlayRef.getConfig().minHeight),a=Z3(this._overlayRef.getConfig().minWidth);return(n.fitsInViewportVertically||null!=s&&s<=o)&&(n.fitsInViewportHorizontally||null!=a&&a<=r)}return!1}_pushOverlayOnScreen(n,e,i){if(this._previousPushAmount&&this._positionLocked)return{x:n.x+this._previousPushAmount.x,y:n.y+this._previousPushAmount.y};const o=Q3(e),r=this._viewportRect,s=Math.max(n.x+o.width-r.width,0),a=Math.max(n.y+o.height-r.height,0),l=Math.max(r.top-i.top-n.y,0),c=Math.max(r.left-i.left-n.x,0);let f=0,m=0;return f=o.width<=r.width?c||-s:n.xw&&!this._isInitialRender&&!this._growAfterOpen&&(s=n.y-w/2)}const l="start"===e.overlayX&&!o||"end"===e.overlayX&&o;let f,m,g;if("end"===e.overlayX&&!o||"start"===e.overlayX&&o)g=i.width-n.x+this._getViewportMarginStart()+this._getViewportMarginEnd(),f=n.x-this._getViewportMarginStart();else if(l)m=n.x,f=i.right-n.x-this._getViewportMarginEnd();else{const _=Math.min(i.right-n.x+i.left,n.x),w=this._lastBoundingBoxSize.width;f=2*_,m=n.x-_,f>w&&!this._isInitialRender&&!this._growAfterOpen&&(m=n.x-w/2)}return{top:s,left:m,bottom:a,right:g,width:f,height:r}}_setBoundingBoxStyles(n,e){const i=this._calculateBoundingBoxRect(n,e);!this._isInitialRender&&!this._growAfterOpen&&(i.height=Math.min(i.height,this._lastBoundingBoxSize.height),i.width=Math.min(i.width,this._lastBoundingBoxSize.width));const o={};if(this._hasExactPosition())o.top=o.left="0",o.bottom=o.right="auto",o.maxHeight=o.maxWidth="",o.width=o.height="100%";else{const r=this._overlayRef.getConfig().maxHeight,s=this._overlayRef.getConfig().maxWidth;o.width=oi(i.width),o.height=oi(i.height),o.top=oi(i.top)||"auto",o.bottom=oi(i.bottom)||"auto",o.left=oi(i.left)||"auto",o.right=oi(i.right)||"auto",o.alignItems="center"===e.overlayX?"center":"end"===e.overlayX?"flex-end":"flex-start",o.justifyContent="center"===e.overlayY?"center":"bottom"===e.overlayY?"flex-end":"flex-start",r&&(o.maxHeight=oi(r)),s&&(o.maxWidth=oi(s))}this._lastBoundingBoxSize=i,Zl(this._boundingBox.style,o)}_resetBoundingBoxStyles(){Zl(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){Zl(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(n,e){const i={},o=this._hasExactPosition(),r=this._hasFlexibleDimensions,s=this._overlayRef.getConfig();if(o){const f=this._viewportRuler.getViewportScrollPosition();Zl(i,this._getExactOverlayY(e,n,f)),Zl(i,this._getExactOverlayX(e,n,f))}else i.position="static";let a="",l=this._getOffset(e,"x"),c=this._getOffset(e,"y");l&&(a+=`translateX(${l}px) `),c&&(a+=`translateY(${c}px)`),i.transform=a.trim(),s.maxHeight&&(o?i.maxHeight=oi(s.maxHeight):r&&(i.maxHeight="")),s.maxWidth&&(o?i.maxWidth=oi(s.maxWidth):r&&(i.maxWidth="")),Zl(this._pane.style,i)}_getExactOverlayY(n,e,i){let o={top:"",bottom:""},r=this._getOverlayPoint(e,this._overlayRect,n);return this._isPushed&&(r=this._pushOverlayOnScreen(r,this._overlayRect,i)),"bottom"===n.overlayY?o.bottom=this._document.documentElement.clientHeight-(r.y+this._overlayRect.height)+"px":o.top=oi(r.y),o}_getExactOverlayX(n,e,i){let s,o={left:"",right:""},r=this._getOverlayPoint(e,this._overlayRect,n);return this._isPushed&&(r=this._pushOverlayOnScreen(r,this._overlayRect,i)),s=this._isRtl()?"end"===n.overlayX?"left":"right":"end"===n.overlayX?"right":"left","right"===s?o.right=this._document.documentElement.clientWidth-(r.x+this._overlayRect.width)+"px":o.left=oi(r.x),o}_getScrollVisibility(){const n=this._getOriginRect(),e=this._pane.getBoundingClientRect(),i=this._scrollables.map(o=>o.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:W3(n,i),isOriginOutsideView:hS(n,i),isOverlayClipped:W3(e,i),isOverlayOutsideView:hS(e,i)}}_subtractOverflows(n,...e){return e.reduce((i,o)=>i-Math.max(o,0),n)}_getNarrowedViewportRect(){const n=this._document.documentElement.clientWidth,e=this._document.documentElement.clientHeight,i=this._viewportRuler.getViewportScrollPosition();return{top:i.top+this._getViewportMarginTop(),left:i.left+this._getViewportMarginStart(),right:i.left+n-this._getViewportMarginEnd(),bottom:i.top+e-this._getViewportMarginBottom(),width:n-this._getViewportMarginStart()-this._getViewportMarginEnd(),height:e-this._getViewportMarginTop()-this._getViewportMarginBottom()}}_isRtl(){return"rtl"===this._overlayRef.getDirection()}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(n,e){return"x"===e?null==n.offsetX?this._offsetX:n.offsetX:null==n.offsetY?this._offsetY:n.offsetY}_validatePositions(){}_addPanelClasses(n){this._pane&&_b(n).forEach(e=>{""!==e&&-1===this._appliedPanelClasses.indexOf(e)&&(this._appliedPanelClasses.push(e),this._pane.classList.add(e))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(n=>{this._pane.classList.remove(n)}),this._appliedPanelClasses=[])}_getViewportMarginStart(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.start??0}_getViewportMarginEnd(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.end??0}_getViewportMarginTop(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.top??0}_getViewportMarginBottom(){return"number"==typeof this._viewportMargin?this._viewportMargin:this._viewportMargin?.bottom??0}_getOriginRect(){const n=this._origin;if(n instanceof Re)return n.nativeElement.getBoundingClientRect();if(n instanceof Element)return n.getBoundingClientRect();const e=n.width||0,i=n.height||0;return{top:n.y,bottom:n.y+i,left:n.x,right:n.x+e,height:i,width:e}}_getContainerRect(){const n=this._overlayRef.getConfig().usePopover&&"global"!==this._popoverLocation,e=this._overlayContainer.getContainerElement();n&&(e.style.display="block");const i=e.getBoundingClientRect();return n&&(e.style.display=""),i}}function Zl(t,n){for(let e in n)n.hasOwnProperty(e)&&(t[e]=n[e]);return t}function Z3(t){if("number"!=typeof t&&null!=t){const[n,e]=t.split(lde);return e&&"px"!==e?null:parseFloat(n)}return t||null}function Q3(t){return{top:Math.floor(t.top),right:Math.floor(t.right),bottom:Math.floor(t.bottom),left:Math.floor(t.left),width:Math.floor(t.width),height:Math.floor(t.height)}}const J3="cdk-global-overlay-wrapper";function Sb(t){return new ude}class ude{_overlayRef;_cssPosition="static";_topOffset="";_bottomOffset="";_alignItems="";_xPosition="";_xOffset="";_width="";_height="";_isDisposed=!1;attach(n){const e=n.getConfig();this._overlayRef=n,this._width&&!e.width&&n.updateSize({width:this._width}),this._height&&!e.height&&n.updateSize({height:this._height}),n.hostElement.classList.add(J3),this._isDisposed=!1}top(n=""){return this._bottomOffset="",this._topOffset=n,this._alignItems="flex-start",this}left(n=""){return this._xOffset=n,this._xPosition="left",this}bottom(n=""){return this._topOffset="",this._bottomOffset=n,this._alignItems="flex-end",this}right(n=""){return this._xOffset=n,this._xPosition="right",this}start(n=""){return this._xOffset=n,this._xPosition="start",this}end(n=""){return this._xOffset=n,this._xPosition="end",this}width(n=""){return this._overlayRef?this._overlayRef.updateSize({width:n}):this._width=n,this}height(n=""){return this._overlayRef?this._overlayRef.updateSize({height:n}):this._height=n,this}centerHorizontally(n=""){return this.left(n),this._xPosition="center",this}centerVertically(n=""){return this.top(n),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;const n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement.style,i=this._overlayRef.getConfig(),{width:o,height:r,maxWidth:s,maxHeight:a}=i,l=!("100%"!==o&&"100vw"!==o||s&&"100%"!==s&&"100vw"!==s),c=!("100%"!==r&&"100vh"!==r||a&&"100%"!==a&&"100vh"!==a),f=this._xPosition,m=this._xOffset,g="rtl"===this._overlayRef.getConfig().direction;let _="",w="",k="";l?k="flex-start":"center"===f?(k="center",g?w=m:_=m):g?"left"===f||"end"===f?(k="flex-end",_=m):("right"===f||"start"===f)&&(k="flex-start",w=m):"left"===f||"start"===f?(k="flex-start",_=m):("right"===f||"end"===f)&&(k="flex-end",w=m),n.position=this._cssPosition,n.marginLeft=l?"0":_,n.marginTop=c?"0":this._topOffset,n.marginBottom=this._bottomOffset,n.marginRight=l?"0":w,e.justifyContent=k,e.alignItems=c?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;const n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement,i=e.style;e.classList.remove(J3),i.justifyContent=i.alignItems=n.marginTop=n.marginBottom=n.marginLeft=n.marginRight=n.position="",this._overlayRef=null,this._isDisposed=!0}}let hde=(()=>{class t{_injector=D(He);constructor(){}global(){return Sb()}flexibleConnectedTo(e){return xb(this._injector,e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const mS=new Z("OVERLAY_DEFAULT_CONFIG");function Xd(t,n){t.get(zo).load(K3);const e=t.get(fS),i=t.get(et),o=t.get(ni),r=t.get(lr),s=t.get(br),a=t.get(Qn,null,{optional:!0})||t.get(Lo).createRenderer(null,null),l=new Vf(n),c=t.get(mS,null,{optional:!0})?.usePopover??!0;l.direction=l.direction||s.value,l.usePopover="showPopover"in i.body&&(n?.usePopover??c);const f=i.createElement("div"),m=i.createElement("div");f.id=o.getId("cdk-overlay-"),f.classList.add("cdk-overlay-pane"),m.appendChild(f),l.usePopover&&(m.setAttribute("popover","manual"),m.classList.add("cdk-overlay-popover"));const g=l.usePopover?l.positionStrategy?.getPopoverInsertionPoint?.():null;return pS(g)?g.after(m):"parent"===g?.type?g.element.appendChild(m):e.getContainerElement().appendChild(m),new Y3(new Lce(f,r,t),m,f,l,t.get(_e),t.get(rde),i,t.get(Fd),t.get(sde),n?.disableAnimations??"NoopAnimations"===t.get(Rm,null,{optional:!0}),t.get(zn),a)}let fde=(()=>{class t{scrollStrategies=D(ide);_positionBuilder=D(hde);_injector=D(He);constructor(){}create(e){return Xd(this._injector,e)}position(){return this._positionBuilder}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const pde=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],mde=new Z("cdk-connected-overlay-scroll-strategy",{providedIn:"root",factory:()=>{const t=D(He);return()=>Bf(t)}});let kb=(()=>{class t{elementRef=D(Re);constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"]})}return t})();const gde=new Z("cdk-connected-overlay-default-config");let Db,e4=(()=>{class t{_dir=D(br,{optional:!0});_injector=D(He);_overlayRef;_templatePortal;_backdropSubscription=pt.EMPTY;_attachSubscription=pt.EMPTY;_detachSubscription=pt.EMPTY;_positionSubscription=pt.EMPTY;_offsetX;_offsetY;_position;_scrollStrategyFactory=D(mde);_ngZone=D(_e);origin;positions;positionStrategy;get offsetX(){return this._offsetX}set offsetX(e){this._offsetX=e,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(e){this._offsetY=e,this._position&&this._updatePositionStrategy(this._position)}width;height;minWidth;minHeight;backdropClass;panelClass;viewportMargin=0;scrollStrategy;open=!1;disableClose=!1;transformOriginSelector;hasBackdrop=!1;lockPosition=!1;flexibleDimensions=!1;growAfterOpen=!1;push=!1;disposeOnNavigation=!1;usePopover;matchWidth=!1;set _config(e){"string"!=typeof e&&this._assignConfig(e)}backdropClick=new we;positionChange=new we;attach=new we;detach=new we;overlayKeydown=new we;overlayOutsideClick=new we;constructor(){const e=D(Ti),i=D(Ei),o=D(gde,{optional:!0}),r=D(mS,{optional:!0});this.usePopover=!1===r?.usePopover?null:"global",this._templatePortal=new Yl(e,i),this.scrollStrategy=this._scrollStrategyFactory(),o&&this._assignConfig(o)}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef?.dispose()}ngOnChanges(e){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef?.updateSize({width:this._getWidth(),minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),e.origin&&this.open&&this._position.apply()),e.open&&(this.open?this.attachOverlay():this.detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=pde);const e=this._overlayRef=Xd(this._injector,this._buildConfig());this._attachSubscription=e.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=e.detachments().subscribe(()=>this.detach.emit()),e.keydownEvents().subscribe(i=>{this.overlayKeydown.next(i),27===i.keyCode&&!this.disableClose&&!yr(i)&&(i.preventDefault(),this.detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(i=>{const o=this._getOriginElement(),r=vr(i);(!o||o!==r&&!o.contains(r))&&this.overlayOutsideClick.next(i)})}_buildConfig(){const e=this._position=this.positionStrategy||this._createPositionStrategy(),i=new Vf({direction:this._dir||"ltr",positionStrategy:e,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop,disposeOnNavigation:this.disposeOnNavigation,usePopover:!!this.usePopover});return(this.height||0===this.height)&&(i.height=this.height),(this.minWidth||0===this.minWidth)&&(i.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(i.minHeight=this.minHeight),this.backdropClass&&(i.backdropClass=this.backdropClass),this.panelClass&&(i.panelClass=this.panelClass),i}_updatePositionStrategy(e){const i=this.positions.map(o=>({originX:o.originX,originY:o.originY,overlayX:o.overlayX,overlayY:o.overlayY,offsetX:o.offsetX||this.offsetX,offsetY:o.offsetY||this.offsetY,panelClass:o.panelClass||void 0}));return e.setOrigin(this._getOrigin()).withPositions(i).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector).withPopoverLocation(null===this.usePopover?"global":this.usePopover)}_createPositionStrategy(){const e=xb(this._injector,this._getOrigin());return this._updatePositionStrategy(e),e}_getOrigin(){return this.origin instanceof kb?this.origin.elementRef:this.origin}_getOriginElement(){return this.origin instanceof kb?this.origin.elementRef.nativeElement:this.origin instanceof Re?this.origin.nativeElement:typeof Element<"u"&&this.origin instanceof Element?this.origin:null}_getWidth(){return this.width?this.width:this.matchWidth?this._getOriginElement()?.getBoundingClientRect?.().width:void 0}attachOverlay(){this._overlayRef||this._createOverlay();const e=this._overlayRef;e.getConfig().hasBackdrop=this.hasBackdrop,e.updateSize({width:this._getWidth()}),e.hasAttached()||e.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=e.backdropClick().subscribe(i=>this.backdropClick.emit(i)):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(function Vce(t,n=!1){return Mn((e,i)=>{let o=0;e.subscribe(dn(i,r=>{const s=t(r,o++);(s||n)&&i.next(r),!s&&i.complete()}))})}(()=>this.positionChange.observers.length>0)).subscribe(i=>{this._ngZone.run(()=>this.positionChange.emit(i)),0===this.positionChange.observers.length&&this._positionSubscription.unsubscribe()})),this.open=!0}detachOverlay(){this._overlayRef?.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.open=!1}_assignConfig(e){this.origin=e.origin??this.origin,this.positions=e.positions??this.positions,this.positionStrategy=e.positionStrategy??this.positionStrategy,this.offsetX=e.offsetX??this.offsetX,this.offsetY=e.offsetY??this.offsetY,this.width=e.width??this.width,this.height=e.height??this.height,this.minWidth=e.minWidth??this.minWidth,this.minHeight=e.minHeight??this.minHeight,this.backdropClass=e.backdropClass??this.backdropClass,this.panelClass=e.panelClass??this.panelClass,this.viewportMargin=e.viewportMargin??this.viewportMargin,this.scrollStrategy=e.scrollStrategy??this.scrollStrategy,this.disableClose=e.disableClose??this.disableClose,this.transformOriginSelector=e.transformOriginSelector??this.transformOriginSelector,this.hasBackdrop=e.hasBackdrop??this.hasBackdrop,this.lockPosition=e.lockPosition??this.lockPosition,this.flexibleDimensions=e.flexibleDimensions??this.flexibleDimensions,this.growAfterOpen=e.growAfterOpen??this.growAfterOpen,this.push=e.push??this.push,this.disposeOnNavigation=e.disposeOnNavigation??this.disposeOnNavigation,this.usePopover=e.usePopover??this.usePopover,this.matchWidth=e.matchWidth??this.matchWidth}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:[0,"cdkConnectedOverlayOrigin","origin"],positions:[0,"cdkConnectedOverlayPositions","positions"],positionStrategy:[0,"cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:[0,"cdkConnectedOverlayOffsetX","offsetX"],offsetY:[0,"cdkConnectedOverlayOffsetY","offsetY"],width:[0,"cdkConnectedOverlayWidth","width"],height:[0,"cdkConnectedOverlayHeight","height"],minWidth:[0,"cdkConnectedOverlayMinWidth","minWidth"],minHeight:[0,"cdkConnectedOverlayMinHeight","minHeight"],backdropClass:[0,"cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:[0,"cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:[0,"cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:[0,"cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:[0,"cdkConnectedOverlayOpen","open"],disableClose:[0,"cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:[0,"cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:[2,"cdkConnectedOverlayHasBackdrop","hasBackdrop",De],lockPosition:[2,"cdkConnectedOverlayLockPosition","lockPosition",De],flexibleDimensions:[2,"cdkConnectedOverlayFlexibleDimensions","flexibleDimensions",De],growAfterOpen:[2,"cdkConnectedOverlayGrowAfterOpen","growAfterOpen",De],push:[2,"cdkConnectedOverlayPush","push",De],disposeOnNavigation:[2,"cdkConnectedOverlayDisposeOnNavigation","disposeOnNavigation",De],usePopover:[0,"cdkConnectedOverlayUsePopover","usePopover"],matchWidth:[2,"cdkConnectedOverlayMatchWidth","matchWidth",De],_config:[0,"cdkConnectedOverlay","_config"]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],features:[_i]})}return t})(),Zd=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[fde],imports:[ii,Ff,j3,j3]})}return t})(),gS=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["ng-component"]],exportAs:["cdkVisuallyHidden"],decls:0,vars:0,template:function(i,o){},styles:[".cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}\n"],encapsulation:2,changeDetection:0})}return t})();function Qd(t){return function _de(){if(void 0===Db&&(Db=null,typeof window<"u")){const t=window;void 0!==t.trustedTypes&&(Db=t.trustedTypes.createPolicy("angular#components",{createHTML:n=>n}))}return Db}()?.createHTML(t)||t}function _S(t){return Tn((n,e)=>t<=e)}function Mb(t,n=Pf){return Mn((e,i)=>{let o=null,r=null,s=null;const a=()=>{if(o){o.unsubscribe(),o=null;const c=r;r=null,i.next(c)}};function l(){const c=s+t,f=n.now();if(f{r=c,s=n.now(),o||(o=n.schedule(l,t),i.add(o))},()=>{a(),i.complete()},void 0,()=>{r=o=null}))})}const t4=new Set;let Ql,bS=(()=>{class t{_platform=D(Yn);_nonce=D(xC,{optional:!0});_matchMedia;constructor(){this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):yde}matchMedia(e){return(this._platform.WEBKIT||this._platform.BLINK)&&function vde(t,n){if(!t4.has(t))try{Ql||(Ql=document.createElement("style"),n&&Ql.setAttribute("nonce",n),Ql.setAttribute("type","text/css"),document.head.appendChild(Ql)),Ql.sheet&&(Ql.sheet.insertRule(`@media ${t} {body{ }}`,0),t4.add(t))}catch(e){console.error(e)}}(e,this._nonce),this._matchMedia(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function yde(t){return{matches:"all"===t||""===t,media:t,addListener:()=>{},removeListener:()=>{}}}let n4=(()=>{class t{_mediaMatcher=D(bS);_zone=D(_e);_queries=new Map;_destroySubject=new me;constructor(){}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(e){return i4(_b(e)).some(o=>this._registerQuery(o).mql.matches)}observe(e){let r=kx(i4(_b(e)).map(s=>this._registerQuery(s).observable));return r=Ts(r.pipe(Cn(1)),r.pipe(_S(1),Mb(0))),r.pipe(Se(s=>{const a={matches:!1,breakpoints:{}};return s.forEach(({matches:l,query:c})=>{a.matches=a.matches||l,a.breakpoints[c]=l}),a}))}_registerQuery(e){if(this._queries.has(e))return this._queries.get(e);const i=this._mediaMatcher.matchMedia(e),r={observable:new Ft(s=>{const a=l=>this._zone.run(()=>s.next(l));return i.addListener(a),()=>{i.removeListener(a)}}).pipe(si(i),Se(({matches:s})=>({query:e,matches:s})),fn(this._destroySubject)),mql:i};return this._queries.set(e,r),r}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function i4(t){return t.map(n=>n.split(",")).reduce((n,e)=>n.concat(e)).map(n=>n.trim())}let o4=(()=>{class t{create(e){return typeof MutationObserver>"u"?null:new MutationObserver(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),wde=(()=>{class t{_mutationObserverFactory=D(o4);_observedElements=new Map;_ngZone=D(_e);constructor(){}ngOnDestroy(){this._observedElements.forEach((e,i)=>this._cleanupObserver(i))}observe(e){const i=Ps(e);return new Ft(o=>{const s=this._observeElement(i).pipe(Se(a=>a.filter(l=>!function Cde(t){if("characterData"===t.type&&t.target instanceof Comment)return!0;if("childList"===t.type){for(let n=0;n!!a.length)).subscribe(a=>{this._ngZone.run(()=>{o.next(a)})});return()=>{s.unsubscribe(),this._unobserveElement(i)}})}_observeElement(e){return this._ngZone.runOutsideAngular(()=>{if(this._observedElements.has(e))this._observedElements.get(e).count++;else{const i=new me,o=this._mutationObserverFactory.create(r=>i.next(r));o&&o.observe(e,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(e,{observer:o,stream:i,count:1})}return this._observedElements.get(e).stream})}_unobserveElement(e){this._observedElements.has(e)&&(this._observedElements.get(e).count--,this._observedElements.get(e).count||this._cleanupObserver(e))}_cleanupObserver(e){if(this._observedElements.has(e)){const{observer:i,stream:o}=this._observedElements.get(e);i&&i.disconnect(),o.complete(),this._observedElements.delete(e)}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),xde=(()=>{class t{_contentObserver=D(wde);_elementRef=D(Re);event=new we;get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._disabled?this._unsubscribe():this._subscribe()}_disabled=!1;get debounce(){return this._debounce}set debounce(e){this._debounce=Of(e),this._subscribe()}_debounce;_currentSubscription=null;constructor(){}ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();const e=this._contentObserver.observe(this._elementRef);this._currentSubscription=(this.debounce?e.pipe(Mb(this.debounce)):e).subscribe(this.event)}_unsubscribe(){this._currentSubscription?.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkObserveContent",""]],inputs:{disabled:[2,"cdkObserveContentDisabled","disabled",De],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"]})}return t})(),r4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[o4]})}return t})(),s4=(()=>{class t{_platform=D(Yn);constructor(){}isDisabled(e){return e.hasAttribute("disabled")}isVisible(e){return function kde(t){return!!(t.offsetWidth||t.offsetHeight||"function"==typeof t.getClientRects&&t.getClientRects().length)}(e)&&"visible"===getComputedStyle(e).visibility}isTabbable(e){if(!this._platform.isBrowser)return!1;const i=function Sde(t){try{return t.frameElement}catch{return null}}(function Ade(t){return t.ownerDocument&&t.ownerDocument.defaultView||window}(e));if(i&&(-1===l4(i)||!this.isVisible(i)))return!1;let o=e.nodeName.toLowerCase(),r=l4(e);return e.hasAttribute("contenteditable")?-1!==r:!("iframe"===o||"object"===o||this._platform.WEBKIT&&this._platform.IOS&&!function Ide(t){let n=t.nodeName.toLowerCase(),e="input"===n&&t.type;return"text"===e||"password"===e||"select"===n||"textarea"===n}(e))&&("audio"===o?!!e.hasAttribute("controls")&&-1!==r:"video"===o?-1!==r&&(null!==r||this._platform.FIREFOX||e.hasAttribute("controls")):e.tabIndex>=0)}isFocusable(e,i){return function Ode(t){return!function Mde(t){return function Ede(t){return"input"==t.nodeName.toLowerCase()}(t)&&"hidden"==t.type}(t)&&(function Dde(t){let n=t.nodeName.toLowerCase();return"input"===n||"select"===n||"button"===n||"textarea"===n}(t)||function Tde(t){return function Pde(t){return"a"==t.nodeName.toLowerCase()}(t)&&t.hasAttribute("href")}(t)||t.hasAttribute("contenteditable")||a4(t))}(e)&&!this.isDisabled(e)&&(i?.ignoreVisibility||this.isVisible(e))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function a4(t){if(!t.hasAttribute("tabindex")||void 0===t.tabIndex)return!1;let n=t.getAttribute("tabindex");return!(!n||isNaN(parseInt(n,10)))}function l4(t){if(!a4(t))return null;const n=parseInt(t.getAttribute("tabindex")||"",10);return isNaN(n)?-1:n}class c4{_element;_checker;_ngZone;_document;_injector;_startAnchor=null;_endAnchor=null;_hasAttached=!1;startAnchorListener=()=>this.focusLastTabbableElement();endAnchorListener=()=>this.focusFirstTabbableElement();get enabled(){return this._enabled}set enabled(n){this._enabled=n,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}_enabled=!0;constructor(n,e,i,o,r=!1,s){this._element=n,this._checker=e,this._ngZone=i,this._document=o,this._injector=s,r||this.attachAnchors()}destroy(){const n=this._startAnchor,e=this._endAnchor;n&&(n.removeEventListener("focus",this.startAnchorListener),n.remove()),e&&(e.removeEventListener("focus",this.endAnchorListener),e.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return!!this._hasAttached||(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusInitialElement(n)))})}focusFirstTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusFirstTabbableElement(n)))})}focusLastTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusLastTabbableElement(n)))})}_getRegionBoundary(n){const e=this._element.querySelectorAll(`[cdk-focus-region-${n}], [cdkFocusRegion${n}], [cdk-focus-${n}]`);return"start"==n?e.length?e[0]:this._getFirstTabbableElement(this._element):e.length?e[e.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(n){const e=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(e){if(!this._checker.isFocusable(e)){const i=this._getFirstTabbableElement(e);return i?.focus(n),!!i}return e.focus(n),!0}return this.focusFirstTabbableElement(n)}focusFirstTabbableElement(n){const e=this._getRegionBoundary("start");return e&&e.focus(n),!!e}focusLastTabbableElement(n){const e=this._getRegionBoundary("end");return e&&e.focus(n),!!e}hasAttached(){return this._hasAttached}_getFirstTabbableElement(n){if(this._checker.isFocusable(n)&&this._checker.isTabbable(n))return n;const e=n.children;for(let i=0;i=0;i--){const o=e[i].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(e[i]):null;if(o)return o}return null}_createAnchor(){const n=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,n),n.classList.add("cdk-visually-hidden"),n.classList.add("cdk-focus-trap-anchor"),n.setAttribute("aria-hidden","true"),n}_toggleAnchorTabIndex(n,e){n?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}toggleAnchors(n){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}_executeOnStable(n){this._injector?Vi(n,{injector:this._injector}):setTimeout(n)}}let Rde=(()=>{class t{_checker=D(s4);_ngZone=D(_e);_document=D(et);_injector=D(He);constructor(){D(zo).load(gS)}create(e,i=!1){return new c4(e,this._checker,this._ngZone,this._document,i,this._injector)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Fde=new Z("liveAnnouncerElement",{providedIn:"root",factory:()=>null}),Nde=new Z("LIVE_ANNOUNCER_DEFAULT_OPTIONS");let Lde=0,d4=(()=>{class t{_ngZone=D(_e);_defaultOptions=D(Nde,{optional:!0});_liveElement;_document=D(et);_sanitizer=D(Mx);_previousTimeout;_currentPromise;_currentResolve;constructor(){const e=D(Fde,{optional:!0});this._liveElement=e||this._createLiveElement()}announce(e,...i){const o=this._defaultOptions;let r,s;return 1===i.length&&"number"==typeof i[0]?s=i[0]:[r,s]=i,this.clear(),clearTimeout(this._previousTimeout),r||(r=o&&o.politeness?o.politeness:"polite"),null==s&&o&&(s=o.duration),this._liveElement.setAttribute("aria-live",r),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular(()=>(this._currentPromise||(this._currentPromise=new Promise(a=>this._currentResolve=a)),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout(()=>{e&&"string"!=typeof e?function bde(t,n,e){const i=e.sanitize(bi.HTML,n);t.innerHTML=Qd(i||"")}(this._liveElement,e,this._sanitizer):this._liveElement.textContent=e,"number"==typeof s&&(this._previousTimeout=setTimeout(()=>this.clear(),s)),this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0},100),this._currentPromise))}clear(){this._liveElement&&(this._liveElement.textContent="")}ngOnDestroy(){clearTimeout(this._previousTimeout),this._liveElement?.remove(),this._liveElement=null,this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){const e="cdk-live-announcer-element",i=this._document.getElementsByClassName(e),o=this._document.createElement("div");for(let r=0;r .cdk-overlay-container [aria-modal="true"]');for(let o=0;o{class t{_platform=D(Yn);_hasCheckedHighContrastMode=!1;_document=D(et);_breakpointSubscription;constructor(){this._breakpointSubscription=D(n4).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return Jl.NONE;const e=this._document.createElement("div");e.style.backgroundColor="rgb(1,2,3)",e.style.position="absolute",this._document.body.appendChild(e);const i=this._document.defaultView||window,o=i&&i.getComputedStyle?i.getComputedStyle(e):null,r=(o&&o.backgroundColor||"").replace(/ /g,"");switch(e.remove(),r){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return Jl.WHITE_ON_BLACK;case"rgb(255,255,255)":case"rgb(255,250,239)":return Jl.BLACK_ON_WHITE}return Jl.NONE}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){const e=this._document.body.classList;e.remove(vS,u4,h4),this._hasCheckedHighContrastMode=!0;const i=this.getHighContrastMode();i===Jl.BLACK_ON_WHITE?e.add(vS,u4):i===Jl.WHITE_ON_BLACK&&e.add(vS,h4)}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),f4=(()=>{class t{constructor(){D(Bde)._applyBodyHighContrastModeCssClasses()}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[r4]})}return t})();function Hde(t,n){return t===n}function yS(t){return 0===t.buttons||0===t.detail}function CS(t){const n=t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0];return!(!n||-1!==n.identifier||null!=n.radiusX&&1!==n.radiusX||null!=n.radiusY&&1!==n.radiusY)}function wS(t){return function jde(){if(null==Hf&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>Hf=!0}))}finally{Hf=Hf||!1}return Hf}()?t:!!t.capture}const Ude=new Z("cdk-input-modality-detector-options"),zde={ignoreKeys:[18,17,224,91,16]},xS={passive:!0,capture:!0};let $de=(()=>{class t{_platform=D(Yn);_listenerCleanups;modalityDetected;modalityChanged;get mostRecentModality(){return this._modality.value}_mostRecentTarget=null;_modality=new ki(null);_options;_lastTouchMs=0;_onKeydown=e=>{this._options?.ignoreKeys?.some(i=>i===e.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=vr(e))};_onMousedown=e=>{Date.now()-this._lastTouchMs<650||(this._modality.next(yS(e)?"keyboard":"mouse"),this._mostRecentTarget=vr(e))};_onTouchstart=e=>{CS(e)?this._modality.next("keyboard"):(this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=vr(e))};constructor(){const e=D(_e),i=D(et),o=D(Ude,{optional:!0});if(this._options={...zde,...o},this.modalityDetected=this._modality.pipe(_S(1)),this.modalityChanged=this.modalityDetected.pipe(function Vde(t,n=Ga){return t=t??Hde,Mn((e,i)=>{let o,r=!0;e.subscribe(dn(i,s=>{const a=n(s);(r||!t(o,a))&&(r=!1,o=a,i.next(s))}))})}()),this._platform.isBrowser){const r=D(Lo).createRenderer(null,null);this._listenerCleanups=e.runOutsideAngular(()=>[r.listen(i,"keydown",this._onKeydown,xS),r.listen(i,"mousedown",this._onMousedown,xS),r.listen(i,"touchstart",this._onTouchstart,xS)])}}ngOnDestroy(){this._modality.complete(),this._listenerCleanups?.forEach(e=>e())}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Tb=function(t){return t[t.IMMEDIATE=0]="IMMEDIATE",t[t.EVENTUAL=1]="EVENTUAL",t}(Tb||{});const Wde=new Z("cdk-focus-monitor-default-options"),Eb=wS({passive:!0,capture:!0});let ec=(()=>{class t{_ngZone=D(_e);_platform=D(Yn);_inputModalityDetector=D($de);_origin=null;_lastFocusOrigin=null;_windowFocused=!1;_windowFocusTimeoutId;_originTimeoutId;_originFromTouchInteraction=!1;_elementInfo=new Map;_monitoredElementCount=0;_rootNodeFocusListenerCount=new Map;_detectionMode;_windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=setTimeout(()=>this._windowFocused=!1)};_document=D(et);_stopInputModalityDetector=new me;constructor(){const e=D(Wde,{optional:!0});this._detectionMode=e?.detectionMode||Tb.IMMEDIATE}_rootNodeFocusAndBlurListener=e=>{for(let o=vr(e);o;o=o.parentElement)"focus"===e.type?this._onFocus(e,o):this._onBlur(e,o)};monitor(e,i=!1){const o=Ps(e);if(!this._platform.isBrowser||1!==o.nodeType)return ae();const r=function Fce(t){if(function Rce(){if(null==aS){const t=typeof document<"u"?document.head:null;aS=!(!t||!t.createShadowRoot&&!t.attachShadow)}return aS}()){const n=t.getRootNode?t.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&n instanceof ShadowRoot)return n}return null}(o)||this._document,s=this._elementInfo.get(o);if(s)return i&&(s.checkChildren=!0),s.subject;const a={checkChildren:i,subject:new me,rootNode:r};return this._elementInfo.set(o,a),this._registerGlobalListeners(a),a.subject}stopMonitoring(e){const i=Ps(e),o=this._elementInfo.get(i);o&&(o.subject.complete(),this._setClasses(i),this._elementInfo.delete(i),this._removeGlobalListeners(o))}focusVia(e,i,o){const r=Ps(e);r===this._document.activeElement?this._getClosestElementsInfo(r).forEach(([a,l])=>this._originChanged(a,i,l)):(this._setOrigin(i),"function"==typeof r.focus&&r.focus(o))}ngOnDestroy(){this._elementInfo.forEach((e,i)=>this.stopMonitoring(i))}_getWindow(){return this._document.defaultView||window}_getFocusOrigin(e){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(e)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:e&&this._isLastInteractionFromInputLabel(e)?"mouse":"program"}_shouldBeAttributedToTouch(e){return this._detectionMode===Tb.EVENTUAL||!!e?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(e,i){e.classList.toggle("cdk-focused",!!i),e.classList.toggle("cdk-touch-focused","touch"===i),e.classList.toggle("cdk-keyboard-focused","keyboard"===i),e.classList.toggle("cdk-mouse-focused","mouse"===i),e.classList.toggle("cdk-program-focused","program"===i)}_setOrigin(e,i=!1){this._ngZone.runOutsideAngular(()=>{this._origin=e,this._originFromTouchInteraction="touch"===e&&i,this._detectionMode===Tb.IMMEDIATE&&(clearTimeout(this._originTimeoutId),this._originTimeoutId=setTimeout(()=>this._origin=null,this._originFromTouchInteraction?650:1))})}_onFocus(e,i){const o=this._elementInfo.get(i),r=vr(e);!o||!o.checkChildren&&i!==r||this._originChanged(i,this._getFocusOrigin(r),o)}_onBlur(e,i){const o=this._elementInfo.get(i);!o||o.checkChildren&&e.relatedTarget instanceof Node&&i.contains(e.relatedTarget)||(this._setClasses(i),this._emitOrigin(o,null))}_emitOrigin(e,i){e.subject.observers.length&&this._ngZone.run(()=>e.subject.next(i))}_registerGlobalListeners(e){if(!this._platform.isBrowser)return;const i=e.rootNode,o=this._rootNodeFocusListenerCount.get(i)||0;o||this._ngZone.runOutsideAngular(()=>{i.addEventListener("focus",this._rootNodeFocusAndBlurListener,Eb),i.addEventListener("blur",this._rootNodeFocusAndBlurListener,Eb)}),this._rootNodeFocusListenerCount.set(i,o+1),1===++this._monitoredElementCount&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(fn(this._stopInputModalityDetector)).subscribe(r=>{this._setOrigin(r,!0)}))}_removeGlobalListeners(e){const i=e.rootNode;if(this._rootNodeFocusListenerCount.has(i)){const o=this._rootNodeFocusListenerCount.get(i);o>1?this._rootNodeFocusListenerCount.set(i,o-1):(i.removeEventListener("focus",this._rootNodeFocusAndBlurListener,Eb),i.removeEventListener("blur",this._rootNodeFocusAndBlurListener,Eb),this._rootNodeFocusListenerCount.delete(i))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(e,i,o){this._setClasses(e,i),this._emitOrigin(o,i),this._lastFocusOrigin=i}_getClosestElementsInfo(e){const i=[];return this._elementInfo.forEach((o,r)=>{(r===e||o.checkChildren&&r.contains(e))&&i.push([r,o])}),i}_isLastInteractionFromInputLabel(e){const{_mostRecentTarget:i,mostRecentModality:o}=this._inputModalityDetector;if("mouse"!==o||!i||i===e||"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.disabled)return!1;const r=e.labels;if(r)for(let s=0;s{class t{_elementRef=D(Re);_focusMonitor=D(ec);_monitorSubscription;_focusOrigin=null;cdkFocusChange=new we;constructor(){}get focusOrigin(){return this._focusOrigin}ngAfterViewInit(){const e=this._elementRef.nativeElement;this._monitorSubscription=this._focusMonitor.monitor(e,1===e.nodeType&&e.hasAttribute("cdkMonitorSubtreeFocus")).subscribe(i=>{this._focusOrigin=i,this.cdkFocusChange.emit(i)})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._monitorSubscription?.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","cdkMonitorElementFocus",""],["","cdkMonitorSubtreeFocus",""]],outputs:{cdkFocusChange:"cdkFocusChange"},exportAs:["cdkMonitorFocus"]})}return t})();function qde(t,n){}class jf{viewContainerRef;injector;id;role="dialog";panelClass="";hasBackdrop=!0;backdropClass="";disableClose=!1;closePredicate;width="";height="";minWidth;minHeight;maxWidth;maxHeight;positionStrategy;data=null;direction;ariaDescribedBy=null;ariaLabelledBy=null;ariaLabel=null;ariaModal=!1;autoFocus="first-tabbable";restoreFocus=!0;scrollStrategy;closeOnNavigation=!0;closeOnDestroy=!0;closeOnOverlayDetachments=!0;disableAnimations=!1;providers;container;templateContext}let m4=(()=>{class t extends bb{_elementRef=D(Re);_focusTrapFactory=D(Rde);_config;_interactivityChecker=D(s4);_ngZone=D(_e);_focusMonitor=D(ec);_renderer=D(Qn);_changeDetectorRef=D(Jt);_injector=D(He);_platform=D(Yn);_document=D(et);_portalOutlet;_focusTrapped=new me;_focusTrap=null;_elementFocusedBeforeDialogWasOpened=null;_closeInteractionType=null;_ariaLabelledByQueue=[];_isDestroyed=!1;constructor(){super(),this._config=D(jf,{optional:!0})||new jf,this._config.ariaLabelledBy&&this._ariaLabelledByQueue.push(this._config.ariaLabelledBy)}_addAriaLabelledBy(e){this._ariaLabelledByQueue.push(e),this._changeDetectorRef.markForCheck()}_removeAriaLabelledBy(e){const i=this._ariaLabelledByQueue.indexOf(e);i>-1&&(this._ariaLabelledByQueue.splice(i,1),this._changeDetectorRef.markForCheck())}_contentAttached(){this._initializeFocusTrap(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._focusTrapped.complete(),this._isDestroyed=!0,this._restoreFocus()}attachComponentPortal(e){this._portalOutlet.hasAttached();const i=this._portalOutlet.attachComponentPortal(e);return this._contentAttached(),i}attachTemplatePortal(e){this._portalOutlet.hasAttached();const i=this._portalOutlet.attachTemplatePortal(e);return this._contentAttached(),i}attachDomPortal=e=>{this._portalOutlet.hasAttached();const i=this._portalOutlet.attachDomPortal(e);return this._contentAttached(),i};_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(e,i){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{const o=()=>{r(),s(),e.removeAttribute("tabindex")},r=this._renderer.listen(e,"blur",o),s=this._renderer.listen(e,"mousedown",o)})),e.focus(i)}_focusByCssSelector(e,i){let o=this._elementRef.nativeElement.querySelector(e);o&&this._forceFocus(o,i)}_trapFocus(e){this._isDestroyed||Vi(()=>{const i=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||i.focus(e);break;case!0:case"first-tabbable":this._focusTrap?.focusInitialElement(e)||this._focusDialogContainer(e);break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]',e);break;default:this._focusByCssSelector(this._config.autoFocus,e)}this._focusTrapped.next()},{injector:this._injector})}_restoreFocus(){const e=this._config.restoreFocus;let i=null;if("string"==typeof e?i=this._document.querySelector(e):"boolean"==typeof e?i=e?this._elementFocusedBeforeDialogWasOpened:null:e&&(i=e),this._config.restoreFocus&&i&&"function"==typeof i.focus){const o=lS(),r=this._elementRef.nativeElement;(!o||o===this._document.body||o===r||r.contains(o))&&(this._focusMonitor?(this._focusMonitor.focusVia(i,this._closeInteractionType),this._closeInteractionType=null):i.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(e){this._elementRef.nativeElement.focus?.(e)}_containsFocus(){const e=this._elementRef.nativeElement,i=lS();return e===i||e.contains(i)}_initializeFocusTrap(){this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=lS()))}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["cdk-dialog-container"]],viewQuery:function(i,o){if(1&i&&ot(Xl,7),2&i){let r;he(r=fe())&&(o._portalOutlet=r.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(i,o){2&i&&$e("id",o._config.id||null)("role",o._config.role)("aria-modal",o._config.ariaModal)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledByQueue[0])("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null)},features:[be],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(i,o){1&i&&it(0,qde,0,0,"ng-template",0)},dependencies:[Xl],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}\n"],encapsulation:2})}return t})();class SS{overlayRef;config;componentInstance=null;componentRef=null;containerInstance;disableClose;closed=new me;backdropClick;keydownEvents;outsidePointerEvents;id;_detachSubscription;constructor(n,e){this.overlayRef=n,this.config=e,this.disableClose=e.disableClose,this.backdropClick=n.backdropClick(),this.keydownEvents=n.keydownEvents(),this.outsidePointerEvents=n.outsidePointerEvents(),this.id=e.id,this.keydownEvents.subscribe(i=>{27===i.keyCode&&!this.disableClose&&!yr(i)&&(i.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{!this.disableClose&&this._canClose()?this.close(void 0,{focusOrigin:"mouse"}):this.containerInstance._recaptureFocus?.()}),this._detachSubscription=n.detachments().subscribe(()=>{!1!==e.closeOnOverlayDetachments&&this.close()})}close(n,e){if(this._canClose(n)){const i=this.closed;this.containerInstance._closeInteractionType=e?.focusOrigin||"program",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),i.next(n),i.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(n="",e=""){return this.overlayRef.updateSize({width:n,height:e}),this}addPanelClass(n){return this.overlayRef.addPanelClass(n),this}removePanelClass(n){return this.overlayRef.removePanelClass(n),this}_canClose(n){const e=this.config;return!!this.containerInstance&&(!e.closePredicate||e.closePredicate(n,e,this.componentInstance))}}const Kde=new Z("DialogScrollStrategy",{providedIn:"root",factory:()=>{const t=D(He);return()=>dS(t)}}),Yde=new Z("DialogData"),Xde=new Z("DefaultDialogConfig");function Zde(t){const n=yt(t),e=new we;return{valueSignal:n,get value(){return n()},change:e,ngOnDestroy(){e.complete()}}}let g4=(()=>{class t{_injector=D(He);_defaultOptions=D(Xde,{optional:!0});_parentDialog=D(t,{optional:!0,skipSelf:!0});_overlayContainer=D(fS);_idGenerator=D(ni);_openDialogsAtThisLevel=[];_afterAllClosedAtThisLevel=new me;_afterOpenedAtThisLevel=new me;_ariaHiddenElements=new Map;_scrollStrategy=D(Kde);get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}afterAllClosed=ya(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(si(void 0)));constructor(){}open(e,i){(i={...this._defaultOptions||new jf,...i}).id=i.id||this._idGenerator.getId("cdk-dialog-"),i.id&&this.getDialogById(i.id);const r=this._getOverlayConfig(i),s=Xd(this._injector,r),a=new SS(s,i),l=this._attachContainer(s,a,i);if(a.containerInstance=l,!this.openDialogs.length){const c=this._overlayContainer.getContainerElement();l._focusTrapped?l._focusTrapped.pipe(Cn(1)).subscribe(()=>{this._hideNonDialogContentFromAssistiveTechnology(c)}):this._hideNonDialogContentFromAssistiveTechnology(c)}return this._attachDialogContent(e,a,l,i),this.openDialogs.push(a),a.closed.subscribe(()=>this._removeOpenDialog(a,!0)),this.afterOpened.next(a),a}closeAll(){kS(this.openDialogs,e=>e.close())}getDialogById(e){return this.openDialogs.find(i=>i.id===e)}ngOnDestroy(){kS(this._openDialogsAtThisLevel,e=>{!1===e.config.closeOnDestroy&&this._removeOpenDialog(e,!1)}),kS(this._openDialogsAtThisLevel,e=>e.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(e){const i=new Vf({positionStrategy:e.positionStrategy||Sb().centerHorizontally().centerVertically(),scrollStrategy:e.scrollStrategy||this._scrollStrategy(),panelClass:e.panelClass,hasBackdrop:e.hasBackdrop,direction:e.direction,minWidth:e.minWidth,minHeight:e.minHeight,maxWidth:e.maxWidth,maxHeight:e.maxHeight,width:e.width,height:e.height,disposeOnNavigation:e.closeOnNavigation,disableAnimations:e.disableAnimations});return e.backdropClass&&(i.backdropClass=e.backdropClass),i}_attachContainer(e,i,o){const r=o.injector||o.viewContainerRef?.injector,s=[{provide:jf,useValue:o},{provide:SS,useValue:i},{provide:Y3,useValue:e}];let a;o.container?"function"==typeof o.container?a=o.container:(a=o.container.type,s.push(...o.container.providers(o))):a=m4;const l=new Kd(a,o.viewContainerRef,He.create({parent:r||this._injector,providers:s}));return e.attach(l).instance}_attachDialogContent(e,i,o,r){if(e instanceof Ti){const s=this._createInjector(r,i,o,void 0);let a={$implicit:r.data,dialogRef:i};r.templateContext&&(a={...a,..."function"==typeof r.templateContext?r.templateContext():r.templateContext}),o.attachTemplatePortal(new Yl(e,null,a,s))}else{const s=this._createInjector(r,i,o,this._injector),a=o.attachComponentPortal(new Kd(e,r.viewContainerRef,s));i.componentRef=a,i.componentInstance=a.instance}}_createInjector(e,i,o,r){const s=e.injector||e.viewContainerRef?.injector,a=[{provide:Yde,useValue:e.data},{provide:SS,useValue:i}];return e.providers&&("function"==typeof e.providers?a.push(...e.providers(i,e,o)):a.push(...e.providers)),e.direction&&(!s||!s.get(br,null,{optional:!0}))&&a.push({provide:br,useValue:Zde(e.direction)}),He.create({parent:s||r,providers:a})}_removeOpenDialog(e,i){const o=this.openDialogs.indexOf(e);o>-1&&(this.openDialogs.splice(o,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((r,s)=>{r?s.setAttribute("aria-hidden",r):s.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),i&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(e){if(e.parentElement){const i=e.parentElement.children;for(let o=i.length-1;o>-1;o--){const r=i[o];r!==e&&"SCRIPT"!==r.nodeName&&"STYLE"!==r.nodeName&&!r.hasAttribute("aria-live")&&!r.hasAttribute("popover")&&(this._ariaHiddenElements.set(r,r.getAttribute("aria-hidden")),r.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function kS(t,n){let e=t.length;for(;e--;)n(t[e])}let Qde=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[g4],imports:[Zd,Ff,f4,Ff]})}return t})();const Jde=new Z("MATERIAL_ANIMATIONS");let _4=null;function b4(){return D(Jde,{optional:!0})?.animationsDisabled||"NoopAnimations"===D(Rm,{optional:!0})?"di-disabled":(_4??=D(bS).matchMedia("(prefers-reduced-motion)").matches,_4?"reduced-motion":"enabled")}function ci(){return"enabled"!==b4()}function Cr(...t){const n=df(t),e=function Zre(t,n){return"number"==typeof bx(t)?t.pop():n}(t,1/0),i=t;return i.length?1===i.length?ji(i[0]):Vd(e)(Kn(i,n)):Oi}function eue(t,n){}class nn{viewContainerRef;injector;id;role="dialog";panelClass="";hasBackdrop=!0;backdropClass="";disableClose=!1;closePredicate;width="";height="";minWidth;minHeight;maxWidth;maxHeight;position;data=null;direction;ariaDescribedBy=null;ariaLabelledBy=null;ariaLabel=null;ariaModal=!1;autoFocus="first-tabbable";restoreFocus=!0;delayFocusTrap=!0;scrollStrategy;closeOnNavigation=!0;enterAnimationDuration;exitAnimationDuration}const DS="mdc-dialog--open",v4="mdc-dialog--opening",y4="mdc-dialog--closing";let C4=(()=>{class t extends m4{_animationStateChanged=new we;_animationsEnabled=!ci();_actionSectionCount=0;_hostElement=this._elementRef.nativeElement;_enterAnimationDuration=this._animationsEnabled?x4(this._config.enterAnimationDuration)??150:0;_exitAnimationDuration=this._animationsEnabled?x4(this._config.exitAnimationDuration)??75:0;_animationTimer=null;_contentAttached(){super._contentAttached(),this._startOpenAnimation()}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._enterAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(w4,`${this._enterAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(v4,DS)),this._waitForAnimationToComplete(this._enterAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(DS),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._exitAnimationDuration}),this._hostElement.classList.remove(DS),this._animationsEnabled?(this._hostElement.style.setProperty(w4,`${this._exitAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(y4)),this._waitForAnimationToComplete(this._exitAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_updateActionSectionCount(e){this._actionSectionCount+=e,this._changeDetectorRef.markForCheck()}_finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._enterAnimationDuration)};_finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._exitAnimationDuration})};_clearAnimationClasses(){this._hostElement.classList.remove(v4,y4)}_waitForAnimationToComplete(e,i){null!==this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(i,e)}_requestAnimationFrame(e){this._ngZone.runOutsideAngular(()=>{"function"==typeof requestAnimationFrame?requestAnimationFrame(e):e()})}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(e){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:e})}ngOnDestroy(){super.ngOnDestroy(),null!==this._animationTimer&&clearTimeout(this._animationTimer)}attachComponentPortal(e){const i=super.attachComponentPortal(e);return i.location.nativeElement.classList.add("mat-mdc-dialog-component-host"),i}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275cmp=re({type:t,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:10,hostBindings:function(i,o){2&i&&(ur("id",o._config.id),$e("aria-modal",o._config.ariaModal)("role",o._config.role)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledByQueue[0])("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null),Ie("_mat-animation-noopable",!o._animationsEnabled)("mat-mdc-dialog-container-with-actions",o._actionSectionCount>0))},features:[be],decls:3,vars:0,consts:[[1,"mat-mdc-dialog-inner-container","mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1),it(2,eue,0,0,"ng-template",2),u()())},dependencies:[Xl],styles:['.mat-mdc-dialog-container{width:100%;height:100%;display:block;box-sizing:border-box;max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;outline:0}.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-max-width, 560px);min-width:var(--mat-dialog-container-min-width, 280px)}@media(max-width: 599px){.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-small-max-width, calc(100vw - 32px))}}.mat-mdc-dialog-inner-container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;opacity:0;transition:opacity linear var(--mat-dialog-transition-duration, 0ms);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mdc-dialog--closing .mat-mdc-dialog-inner-container{transition:opacity 75ms linear;transform:none}.mdc-dialog--open .mat-mdc-dialog-inner-container{opacity:1}._mat-animation-noopable .mat-mdc-dialog-inner-container{transition:none}.mat-mdc-dialog-surface{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;width:100%;height:100%;position:relative;overflow-y:auto;outline:0;transform:scale(0.8);transition:transform var(--mat-dialog-transition-duration, 0ms) cubic-bezier(0, 0, 0.2, 1);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;box-shadow:var(--mat-dialog-container-elevation-shadow, none);border-radius:var(--mat-dialog-container-shape, var(--mat-sys-corner-extra-large, 4px));background-color:var(--mat-dialog-container-color, var(--mat-sys-surface, white))}[dir=rtl] .mat-mdc-dialog-surface{text-align:right}.mdc-dialog--open .mat-mdc-dialog-surface,.mdc-dialog--closing .mat-mdc-dialog-surface{transform:none}._mat-animation-noopable .mat-mdc-dialog-surface{transition:none}.mat-mdc-dialog-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mat-mdc-dialog-title{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:var(--mat-dialog-headline-padding, 6px 24px 13px)}.mat-mdc-dialog-title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mat-mdc-dialog-title{text-align:right}.mat-mdc-dialog-container .mat-mdc-dialog-title{color:var(--mat-dialog-subhead-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-dialog-subhead-font, var(--mat-sys-headline-small-font, inherit));line-height:var(--mat-dialog-subhead-line-height, var(--mat-sys-headline-small-line-height, 1.5rem));font-size:var(--mat-dialog-subhead-size, var(--mat-sys-headline-small-size, 1rem));font-weight:var(--mat-dialog-subhead-weight, var(--mat-sys-headline-small-weight, 400));letter-spacing:var(--mat-dialog-subhead-tracking, var(--mat-sys-headline-small-tracking, 0.03125em))}.mat-mdc-dialog-content{display:block;flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;max-height:65vh}.mat-mdc-dialog-content>:first-child{margin-top:0}.mat-mdc-dialog-content>:last-child{margin-bottom:0}.mat-mdc-dialog-container .mat-mdc-dialog-content{color:var(--mat-dialog-supporting-text-color, var(--mat-sys-on-surface-variant, rgba(0, 0, 0, 0.6)));font-family:var(--mat-dialog-supporting-text-font, var(--mat-sys-body-medium-font, inherit));line-height:var(--mat-dialog-supporting-text-line-height, var(--mat-sys-body-medium-line-height, 1.5rem));font-size:var(--mat-dialog-supporting-text-size, var(--mat-sys-body-medium-size, 1rem));font-weight:var(--mat-dialog-supporting-text-weight, var(--mat-sys-body-medium-weight, 400));letter-spacing:var(--mat-dialog-supporting-text-tracking, var(--mat-sys-body-medium-tracking, 0.03125em))}.mat-mdc-dialog-container .mat-mdc-dialog-content{padding:var(--mat-dialog-content-padding, 20px 24px)}.mat-mdc-dialog-container-with-actions .mat-mdc-dialog-content{padding:var(--mat-dialog-with-actions-content-padding, 20px 24px 0)}.mat-mdc-dialog-container .mat-mdc-dialog-title+.mat-mdc-dialog-content{padding-top:0}.mat-mdc-dialog-actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;box-sizing:border-box;min-height:52px;margin:0;border-top:1px solid rgba(0,0,0,0);padding:var(--mat-dialog-actions-padding, 16px 24px);justify-content:var(--mat-dialog-actions-alignment, flex-end)}@media(forced-colors: active){.mat-mdc-dialog-actions{border-top-color:CanvasText}}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-start,.mat-mdc-dialog-actions[align=start]{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}.mat-mdc-dialog-component-host{display:contents}\n'],encapsulation:2})}return t})();const w4="--mat-dialog-transition-duration";function x4(t){return null==t?null:"number"==typeof t?t:t.endsWith("ms")?Of(t.substring(0,t.length-2)):t.endsWith("s")?1e3*Of(t.substring(0,t.length-1)):"0"===t?0:null}var Pb=function(t){return t[t.OPEN=0]="OPEN",t[t.CLOSING=1]="CLOSING",t[t.CLOSED=2]="CLOSED",t}(Pb||{});class Bt{_ref;_config;_containerInstance;componentInstance;componentRef=null;disableClose;id;_afterOpened=new oo(1);_beforeClosed=new oo(1);_result;_closeFallbackTimeout;_state=Pb.OPEN;_closeInteractionType;constructor(n,e,i){this._ref=n,this._config=e,this._containerInstance=i,this.disableClose=e.disableClose,this.id=n.id,n.addPanelClass("mat-mdc-dialog-panel"),i._animationStateChanged.pipe(Tn(o=>"opened"===o.state),Cn(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),i._animationStateChanged.pipe(Tn(o=>"closed"===o.state),Cn(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),n.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),Cr(this.backdropClick(),this.keydownEvents().pipe(Tn(o=>27===o.keyCode&&!this.disableClose&&!yr(o)))).subscribe(o=>{this.disableClose||(o.preventDefault(),S4(this,"keydown"===o.type?"keyboard":"mouse"))})}close(n){const e=this._config.closePredicate;e&&!e(n,this._config,this.componentInstance)||(this._result=n,this._containerInstance._animationStateChanged.pipe(Tn(i=>"closing"===i.state),Cn(1)).subscribe(i=>{this._beforeClosed.next(n),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),i.totalTime+100)}),this._state=Pb.CLOSING,this._containerInstance._startExitAnimation())}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(n){let e=this._ref.config.positionStrategy;return n&&(n.left||n.right)?n.left?e.left(n.left):e.right(n.right):e.centerHorizontally(),n&&(n.top||n.bottom)?n.top?e.top(n.top):e.bottom(n.bottom):e.centerVertically(),this._ref.updatePosition(),this}updateSize(n="",e=""){return this._ref.updateSize(n,e),this}addPanelClass(n){return this._ref.addPanelClass(n),this}removePanelClass(n){return this._ref.removePanelClass(n),this}getState(){return this._state}_finishDialogClose(){this._state=Pb.CLOSED,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}}function S4(t,n,e){return t._closeInteractionType=n,t.close(e)}const En=new Z("MatMdcDialogData"),k4=new Z("mat-mdc-dialog-default-options"),iue=new Z("mat-mdc-dialog-scroll-strategy",{providedIn:"root",factory:()=>{const t=D(He);return()=>dS(t)}});let Ot=(()=>{class t{_defaultOptions=D(k4,{optional:!0});_scrollStrategy=D(iue);_parentDialog=D(t,{optional:!0,skipSelf:!0});_idGenerator=D(ni);_injector=D(He);_dialog=D(g4);_animationsDisabled=ci();_openDialogsAtThisLevel=[];_afterAllClosedAtThisLevel=new me;_afterOpenedAtThisLevel=new me;dialogConfigClass=nn;_dialogRefConstructor;_dialogContainerType;_dialogDataToken;get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}afterAllClosed=ya(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(si(void 0)));constructor(){this._dialogRefConstructor=Bt,this._dialogContainerType=C4,this._dialogDataToken=En}open(e,i){let o;(i={...this._defaultOptions||new nn,...i}).id=i.id||this._idGenerator.getId("mat-mdc-dialog-"),i.scrollStrategy=i.scrollStrategy||this._scrollStrategy();const r=this._dialog.open(e,{...i,positionStrategy:Sb().centerHorizontally().centerVertically(),disableClose:!0,closePredicate:void 0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,disableAnimations:this._animationsDisabled||"0"===i.enterAnimationDuration?.toLocaleString()||"0"===i.exitAnimationDuration?.toString(),container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:i},{provide:jf,useValue:i}]},templateContext:()=>({dialogRef:o}),providers:(s,a,l)=>(o=new this._dialogRefConstructor(s,i,l),o.updatePosition(i?.position),[{provide:this._dialogContainerType,useValue:l},{provide:this._dialogDataToken,useValue:a.data},{provide:this._dialogRefConstructor,useValue:o}])});return o.componentRef=r.componentRef,o.componentInstance=r.componentInstance,this.openDialogs.push(o),this.afterOpened.next(o),o.afterClosed().subscribe(()=>{const s=this.openDialogs.indexOf(o);s>-1&&(this.openDialogs.splice(s,1),this.openDialogs.length||this._getAfterAllClosed().next())}),o}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(e){return this.openDialogs.find(i=>i.id===e)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(e){let i=e.length;for(;i--;)e[i].close()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),D4=(()=>{class t{dialogRef=D(Bt,{optional:!0});_elementRef=D(Re);_dialog=D(Ot);ariaLabel;type="button";dialogResult;_matDialogClose;constructor(){}ngOnInit(){this.dialogRef||(this.dialogRef=E4(this._elementRef,this._dialog.openDialogs))}ngOnChanges(e){const i=e._matDialogClose||e._matDialogCloseResult;i&&(this.dialogResult=i.currentValue)}_onButtonClick(e){S4(this.dialogRef,0===e.screenX&&0===e.screenY?"keyboard":"mouse",this.dialogResult)}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(i,o){1&i&&F("click",function(s){return o._onButtonClick(s)}),2&i&&$e("aria-label",o.ariaLabel||null)("type",o.type)},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],type:"type",dialogResult:[0,"mat-dialog-close","dialogResult"],_matDialogClose:[0,"matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],features:[_i]})}return t})(),M4=(()=>{class t{_dialogRef=D(Bt,{optional:!0});_elementRef=D(Re);_dialog=D(Ot);constructor(){}ngOnInit(){this._dialogRef||(this._dialogRef=E4(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then(()=>{this._onAdd()})}ngOnDestroy(){this._dialogRef?._containerInstance&&Promise.resolve().then(()=>{this._onRemove()})}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t})}return t})(),MS=(()=>{class t extends M4{id=D(ni).getId("mat-mdc-dialog-title-");_onAdd(){this._dialogRef._containerInstance?._addAriaLabelledBy?.(this.id)}_onRemove(){this._dialogRef?._containerInstance?._removeAriaLabelledBy?.(this.id)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","mat-dialog-title",""],["","matDialogTitle",""]],hostAttrs:[1,"mat-mdc-dialog-title","mdc-dialog__title"],hostVars:1,hostBindings:function(i,o){2&i&&ur("id",o.id)},inputs:{id:"id"},exportAs:["matDialogTitle"],features:[be]})}return t})(),Jd=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-mdc-dialog-content","mdc-dialog__content"],features:[fI([H3])]})}return t})(),T4=(()=>{class t extends M4{align;_onAdd(){this._dialogRef._containerInstance?._updateActionSectionCount?.(1)}_onRemove(){this._dialogRef._containerInstance?._updateActionSectionCount?.(-1)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-mdc-dialog-actions","mdc-dialog__actions"],hostVars:6,hostBindings:function(i,o){2&i&&Ie("mat-mdc-dialog-actions-align-start","start"===o.align)("mat-mdc-dialog-actions-align-center","center"===o.align)("mat-mdc-dialog-actions-align-end","end"===o.align)},inputs:{align:"align"},features:[be]})}return t})();function E4(t,n){let e=t.nativeElement.parentElement;for(;e&&!e.classList.contains("mat-mdc-dialog-container");)e=e.parentElement;return e?n.find(i=>i.id===e.id):null}let oue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[Ot],imports:[Qde,Zd,Ff,ii]})}return t})();var $o=function(t){return t[t.FADING_IN=0]="FADING_IN",t[t.VISIBLE=1]="VISIBLE",t[t.FADING_OUT=2]="FADING_OUT",t[t.HIDDEN=3]="HIDDEN",t}($o||{});class rue{_renderer;element;config;_animationForciblyDisabledThroughCss;state=$o.HIDDEN;constructor(n,e,i,o=!1){this._renderer=n,this.element=e,this.config=i,this._animationForciblyDisabledThroughCss=o}fadeOut(){this._renderer.fadeOutRipple(this)}}const P4=wS({passive:!0,capture:!0});class sue{_events=new Map;addHandler(n,e,i,o){const r=this._events.get(e);if(r){const s=r.get(i);s?s.add(o):r.set(i,new Set([o]))}else this._events.set(e,new Map([[i,new Set([o])]])),n.runOutsideAngular(()=>{document.addEventListener(e,this._delegateEventHandler,P4)})}removeHandler(n,e,i){const o=this._events.get(n);if(!o)return;const r=o.get(e);r&&(r.delete(i),0===r.size&&o.delete(e),0===o.size&&(this._events.delete(n),document.removeEventListener(n,this._delegateEventHandler,P4)))}_delegateEventHandler=n=>{const e=vr(n);e&&this._events.get(n.type)?.forEach((i,o)=>{(o===e||o.contains(e))&&i.forEach(r=>r.handleEvent(n))})}}const Ib={enterDuration:225,exitDuration:150},I4=wS({passive:!0,capture:!0}),O4=["mousedown","touchstart"],A4=["mouseup","mouseleave","touchend","touchcancel"];let lue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["ng-component"]],hostAttrs:["mat-ripple-style-loader",""],decls:0,vars:0,template:function(i,o){},styles:[".mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0, 0, 0.2, 1);transform:scale3d(0, 0, 0);background-color:var(--mat-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface) 10%, transparent))}@media(forced-colors: active){.mat-ripple-element{display:none}}.cdk-drag-preview .mat-ripple-element,.cdk-drag-placeholder .mat-ripple-element{display:none}\n"],encapsulation:2,changeDetection:0})}return t})();class Uf{_target;_ngZone;_platform;_containerElement;_triggerElement=null;_isPointerDown=!1;_activeRipples=new Map;_mostRecentTransientRipple=null;_lastTouchStartEvent;_pointerUpEventsRegistered=!1;_containerRect=null;static _eventManager=new sue;constructor(n,e,i,o,r){this._target=n,this._ngZone=e,this._platform=o,o.isBrowser&&(this._containerElement=Ps(i)),r&&r.get(zo).load(lue)}fadeInRipple(n,e,i={}){const o=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),r={...Ib,...i.animation};i.centered&&(n=o.left+o.width/2,e=o.top+o.height/2);const s=i.radius||function cue(t,n,e){const i=Math.max(Math.abs(t-e.left),Math.abs(t-e.right)),o=Math.max(Math.abs(n-e.top),Math.abs(n-e.bottom));return Math.sqrt(i*i+o*o)}(n,e,o),a=n-o.left,l=e-o.top,c=r.enterDuration,f=document.createElement("div");f.classList.add("mat-ripple-element"),f.style.left=a-s+"px",f.style.top=l-s+"px",f.style.height=2*s+"px",f.style.width=2*s+"px",null!=i.color&&(f.style.backgroundColor=i.color),f.style.transitionDuration=`${c}ms`,this._containerElement.appendChild(f);const m=window.getComputedStyle(f),_=m.transitionDuration,w="none"===m.transitionProperty||"0s"===_||"0s, 0s"===_||0===o.width&&0===o.height,k=new rue(this,f,i,w);f.style.transform="scale3d(1, 1, 1)",k.state=$o.FADING_IN,i.persistent||(this._mostRecentTransientRipple=k);let T=null;return!w&&(c||r.exitDuration)&&this._ngZone.runOutsideAngular(()=>{const I=()=>{T&&(T.fallbackTimer=null),clearTimeout(W),this._finishRippleTransition(k)},R=()=>this._destroyRipple(k),W=setTimeout(R,c+100);f.addEventListener("transitionend",I),f.addEventListener("transitioncancel",R),T={onTransitionEnd:I,onTransitionCancel:R,fallbackTimer:W}}),this._activeRipples.set(k,T),(w||!c)&&this._finishRippleTransition(k),k}fadeOutRipple(n){if(n.state===$o.FADING_OUT||n.state===$o.HIDDEN)return;const e=n.element,i={...Ib,...n.config.animation};e.style.transitionDuration=`${i.exitDuration}ms`,e.style.opacity="0",n.state=$o.FADING_OUT,(n._animationForciblyDisabledThroughCss||!i.exitDuration)&&this._finishRippleTransition(n)}fadeOutAll(){this._getActiveRipples().forEach(n=>n.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(n=>{n.config.persistent||n.fadeOut()})}setupTriggerEvents(n){const e=Ps(n);!this._platform.isBrowser||!e||e===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=e,O4.forEach(i=>{Uf._eventManager.addHandler(this._ngZone,i,e,this)}))}handleEvent(n){"mousedown"===n.type?this._onMousedown(n):"touchstart"===n.type?this._onTouchStart(n):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{A4.forEach(e=>{this._triggerElement.addEventListener(e,this,I4)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(n){n.state===$o.FADING_IN?this._startFadeOutTransition(n):n.state===$o.FADING_OUT&&this._destroyRipple(n)}_startFadeOutTransition(n){const e=n===this._mostRecentTransientRipple,{persistent:i}=n.config;n.state=$o.VISIBLE,!i&&(!e||!this._isPointerDown)&&n.fadeOut()}_destroyRipple(n){const e=this._activeRipples.get(n)??null;this._activeRipples.delete(n),this._activeRipples.size||(this._containerRect=null),n===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),n.state=$o.HIDDEN,null!==e&&(n.element.removeEventListener("transitionend",e.onTransitionEnd),n.element.removeEventListener("transitioncancel",e.onTransitionCancel),null!==e.fallbackTimer&&clearTimeout(e.fallbackTimer)),n.element.remove()}_onMousedown(n){const e=yS(n),i=this._lastTouchStartEvent&&Date.now(){!n.config.persistent&&(n.state===$o.VISIBLE||n.config.terminateOnPointerUp&&n.state===$o.FADING_IN)&&n.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){const n=this._triggerElement;n&&(O4.forEach(e=>Uf._eventManager.removeHandler(e,n,this)),this._pointerUpEventsRegistered&&(A4.forEach(e=>n.removeEventListener(e,this,I4)),this._pointerUpEventsRegistered=!1))}}const TS=new Z("mat-ripple-global-options");let eu=(()=>{class t{_elementRef=D(Re);_animationsDisabled=ci();color;unbounded=!1;centered=!1;radius=0;animation;get disabled(){return this._disabled}set disabled(e){e&&this.fadeOutAllNonPersistent(),this._disabled=e,this._setupTriggerEventsIfEnabled()}_disabled=!1;get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(e){this._trigger=e,this._setupTriggerEventsIfEnabled()}_trigger;_rippleRenderer;_globalOptions;_isInitialized=!1;constructor(){const e=D(_e),i=D(Yn),o=D(TS,{optional:!0}),r=D(He);this._globalOptions=o||{},this._rippleRenderer=new Uf(this,e,this._elementRef,i,r)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:{...this._globalOptions.animation,...this._animationsDisabled?{enterDuration:0,exitDuration:0}:{},...this.animation},terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(e,i=0,o){return"number"==typeof e?this._rippleRenderer.fadeInRipple(e,i,{...this.rippleConfig,...o}):this._rippleRenderer.fadeInRipple(0,0,{...this.rippleConfig,...e})}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(i,o){2&i&&Ie("mat-ripple-unbounded",o.unbounded)},inputs:{color:[0,"matRippleColor","color"],unbounded:[0,"matRippleUnbounded","unbounded"],centered:[0,"matRippleCentered","centered"],radius:[0,"matRippleRadius","radius"],animation:[0,"matRippleAnimation","animation"],disabled:[0,"matRippleDisabled","disabled"],trigger:[0,"matRippleTrigger","trigger"]},exportAs:["matRipple"]})}return t})();const due={capture:!0},uue=["focus","mousedown","mouseenter","touchstart"],ES="mat-ripple-loader-uninitialized",PS="mat-ripple-loader-class-name",R4="mat-ripple-loader-centered",Ob="mat-ripple-loader-disabled";let hue=(()=>{class t{_document=D(et);_animationsDisabled=ci();_globalRippleOptions=D(TS,{optional:!0});_platform=D(Yn);_ngZone=D(_e);_injector=D(He);_eventCleanups;_hosts=new Map;constructor(){const e=D(Lo).createRenderer(null,null);this._eventCleanups=this._ngZone.runOutsideAngular(()=>uue.map(i=>e.listen(this._document,i,this._onInteraction,due)))}ngOnDestroy(){const e=this._hosts.keys();for(const i of e)this.destroyRipple(i);this._eventCleanups.forEach(i=>i())}configureRipple(e,i){e.setAttribute(ES,this._globalRippleOptions?.namespace??""),(i.className||!e.hasAttribute(PS))&&e.setAttribute(PS,i.className||""),i.centered&&e.setAttribute(R4,""),i.disabled&&e.setAttribute(Ob,"")}setDisabled(e,i){const o=this._hosts.get(e);o?(o.target.rippleDisabled=i,!i&&!o.hasSetUpEvents&&(o.hasSetUpEvents=!0,o.renderer.setupTriggerEvents(e))):i?e.setAttribute(Ob,""):e.removeAttribute(Ob)}_onInteraction=e=>{const i=vr(e);if(i instanceof HTMLElement){const o=i.closest(`[${ES}="${this._globalRippleOptions?.namespace??""}"]`);o&&this._createRipple(o)}};_createRipple(e){if(!this._document||this._hosts.has(e))return;e.querySelector(".mat-ripple")?.remove();const i=this._document.createElement("span");i.classList.add("mat-ripple",e.getAttribute(PS)),e.append(i);const o=this._globalRippleOptions,r=this._animationsDisabled?0:o?.animation?.enterDuration??Ib.enterDuration,s=this._animationsDisabled?0:o?.animation?.exitDuration??Ib.exitDuration,a={rippleDisabled:this._animationsDisabled||o?.disabled||e.hasAttribute(Ob),rippleConfig:{centered:e.hasAttribute(R4),terminateOnPointerUp:o?.terminateOnPointerUp,animation:{enterDuration:r,exitDuration:s}}},l=new Uf(a,this._ngZone,i,this._platform,this._injector),c=!a.rippleDisabled;c&&l.setupTriggerEvents(e),this._hosts.set(e,{target:a,renderer:l,hasSetUpEvents:c}),e.removeAttribute(ES)}destroyRipple(e){const i=this._hosts.get(e);i&&(i.renderer._removeTriggerEvents(),this._hosts.delete(e))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),tu=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["structural-styles"]],decls:0,vars:0,template:function(i,o){},styles:['.mat-focus-indicator{position:relative}.mat-focus-indicator::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border-width:var(--mat-focus-indicator-border-width, 3px);border-style:var(--mat-focus-indicator-border-style, solid);border-color:var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus-visible::before{content:""}@media(forced-colors: active){html{--mat-focus-indicator-display: block}}\n'],encapsulation:2,changeDetection:0})}return t})();const fue=["mat-icon-button",""],pue=["*"],mue=new Z("MAT_BUTTON_CONFIG");function F4(t){return null==t?void 0:hr(t)}let N4=(()=>{class t{_elementRef=D(Re);_ngZone=D(_e);_animationsDisabled=ci();_config=D(mue,{optional:!0});_focusMonitor=D(ec);_cleanupClick;_renderer=D(Qn);_rippleLoader=D(hue);_isAnchor;_isFab=!1;color;get disableRipple(){return this._disableRipple}set disableRipple(e){this._disableRipple=e,this._updateRippleDisabled()}_disableRipple=!1;get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._updateRippleDisabled()}_disabled=!1;ariaDisabled;disabledInteractive;tabIndex;set _tabindex(e){this.tabIndex=e}constructor(){D(zo).load(tu);const e=this._elementRef.nativeElement;this._isAnchor="A"===e.tagName,this.disabledInteractive=this._config?.disabledInteractive??!1,this.color=this._config?.color??null,this._rippleLoader?.configureRipple(e,{className:"mat-mdc-button-ripple"})}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0),this._isAnchor&&this._setupAsAnchor()}ngOnDestroy(){this._cleanupClick?.(),this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement)}focus(e="program",i){e?this._focusMonitor.focusVia(this._elementRef.nativeElement,e,i):this._elementRef.nativeElement.focus(i)}_getAriaDisabled(){return null!=this.ariaDisabled?this.ariaDisabled:this._isAnchor?this.disabled||null:!(!this.disabled||!this.disabledInteractive)||null}_getDisabledAttribute(){return!(this.disabledInteractive||!this.disabled)||null}_updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementRef.nativeElement,this.disableRipple||this.disabled)}_getTabIndex(){return this._isAnchor&&this.disabled&&!this.disabledInteractive?-1:this.tabIndex}_setupAsAnchor(){this._cleanupClick=this._ngZone.runOutsideAngular(()=>this._renderer.listen(this._elementRef.nativeElement,"click",e=>{this.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}))}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,hostAttrs:[1,"mat-mdc-button-base"],hostVars:13,hostBindings:function(i,o){2&i&&($e("disabled",o._getDisabledAttribute())("aria-disabled",o._getAriaDisabled())("tabindex",o._getTabIndex()),Ze(o.color?"mat-"+o.color:""),Ie("mat-mdc-button-disabled",o.disabled)("mat-mdc-button-disabled-interactive",o.disabledInteractive)("mat-unthemed",!o.color)("_mat-animation-noopable",o._animationsDisabled))},inputs:{color:"color",disableRipple:[2,"disableRipple","disableRipple",De],disabled:[2,"disabled","disabled",De],ariaDisabled:[2,"aria-disabled","ariaDisabled",De],disabledInteractive:[2,"disabledInteractive","disabledInteractive",De],tabIndex:[2,"tabIndex","tabIndex",F4],_tabindex:[2,"tabindex","_tabindex",F4]}})}return t})(),Wo=(()=>{class t extends N4{constructor(){super(),this._rippleLoader.configureRipple(this._elementRef.nativeElement,{centered:!0})}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["button","mat-icon-button",""],["a","mat-icon-button",""],["button","matIconButton",""],["a","matIconButton",""]],hostAttrs:[1,"mdc-icon-button","mat-mdc-icon-button"],exportAs:["matButton","matAnchor"],features:[be],attrs:fue,ngContentSelectors:pue,decls:4,vars:0,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(i,o){1&i&&(yi(),ca(0,"span",0),Pt(1),ca(2,"span",1)(3,"span",2))},styles:['.mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%));flex-shrink:0;text-align:center;width:var(--mat-icon-button-state-layer-size, 40px);height:var(--mat-icon-button-state-layer-size, 40px);padding:calc(calc(var(--mat-icon-button-state-layer-size, 40px) - var(--mat-icon-button-icon-size, 24px)) / 2);font-size:var(--mat-icon-button-icon-size, 24px);color:var(--mat-icon-button-icon-color, var(--mat-sys-on-surface-variant));-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-icon-button:focus-visible>.mat-focus-indicator::before{content:"";border-radius:inherit}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface-variant) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-icon-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-icon-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-icon-button-touch-target-size, 48px);display:var(--mat-icon-button-touch-target-display, block);left:50%;width:var(--mat-icon-button-touch-target-size, 48px);transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-icon-button-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mat-icon-button-icon-size, 24px);height:var(--mat-icon-button-icon-size, 24px);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%))}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}\n',"@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}\n"],encapsulation:2,changeDetection:0})}return t})(),IS=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ii]})}return t})();const gue=["matButton",""],_ue=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],bue=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"],L4=new Map([["text",["mat-mdc-button"]],["filled",["mdc-button--unelevated","mat-mdc-unelevated-button"]],["elevated",["mdc-button--raised","mat-mdc-raised-button"]],["outlined",["mdc-button--outlined","mat-mdc-outlined-button"]],["tonal",["mat-tonal-button"]]]);let Pn=(()=>{class t extends N4{get appearance(){return this._appearance}set appearance(e){this.setAppearance(e||this._config?.defaultAppearance||"text")}_appearance=null;constructor(){super();const e=function vue(t){return t.hasAttribute("mat-raised-button")?"elevated":t.hasAttribute("mat-stroked-button")?"outlined":t.hasAttribute("mat-flat-button")?"filled":t.hasAttribute("mat-button")?"text":null}(this._elementRef.nativeElement);e&&this.setAppearance(e)}setAppearance(e){if(e===this._appearance)return;const i=this._elementRef.nativeElement.classList,o=this._appearance?L4.get(this._appearance):null,r=L4.get(e);o&&i.remove(...o),i.add(...r),this._appearance=e}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["button","matButton",""],["a","matButton",""],["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""],["a","mat-button",""],["a","mat-raised-button",""],["a","mat-flat-button",""],["a","mat-stroked-button",""]],hostAttrs:[1,"mdc-button"],inputs:{appearance:[0,"matButton","appearance"]},exportAs:["matButton","matAnchor"],features:[be],attrs:gue,ngContentSelectors:bue,decls:7,vars:4,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(i,o){1&i&&(yi(_ue),ca(0,"span",0),Pt(1),vs(2,"span",1),Pt(3,1),Ol(),Pt(4,2),ca(5,"span",2)(6,"span",3)),2&i&&Ie("mdc-button__ripple",!o._isFab)("mdc-fab__ripple",o._isFab)},styles:['.mat-mdc-button-base{text-decoration:none}.mat-mdc-button-base .mat-icon{min-height:fit-content;flex-shrink:0}@media(hover: none){.mat-mdc-button-base:hover>span.mat-mdc-button-persistent-ripple::before{opacity:0}}.mdc-button{-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0);padding:0 8px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__label{position:relative}.mat-mdc-button{padding:0 var(--mat-button-text-horizontal-padding, 12px);height:var(--mat-button-text-container-height, 40px);font-family:var(--mat-button-text-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-text-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-text-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-text-label-text-transform);font-weight:var(--mat-button-text-label-text-weight, var(--mat-sys-label-large-weight))}.mat-mdc-button,.mat-mdc-button .mdc-button__ripple{border-radius:var(--mat-button-text-container-shape, var(--mat-sys-corner-full))}.mat-mdc-button:not(:disabled){color:var(--mat-button-text-label-text-color, var(--mat-sys-primary))}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-text-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-button-text-with-icon-horizontal-padding, 16px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-button-text-icon-spacing, 8px);margin-left:var(--mat-button-text-icon-offset, -4px)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-button-text-icon-offset, -4px);margin-left:var(--mat-button-text-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-text-icon-offset, -4px);margin-left:var(--mat-button-text-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-text-icon-spacing, 8px);margin-left:var(--mat-button-text-icon-offset, -4px)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-button-text-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-text-state-layer-color, var(--mat-sys-primary))}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-text-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-text-touch-target-size, 48px);display:var(--mat-button-text-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-unelevated-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-filled-container-height, 40px);font-family:var(--mat-button-filled-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-filled-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-filled-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-filled-label-text-transform);font-weight:var(--mat-button-filled-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-filled-horizontal-padding, 24px)}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-button-filled-icon-spacing, 8px);margin-left:var(--mat-button-filled-icon-offset, -8px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-button-filled-icon-offset, -8px);margin-left:var(--mat-button-filled-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-filled-icon-offset, -8px);margin-left:var(--mat-button-filled-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-filled-icon-spacing, 8px);margin-left:var(--mat-button-filled-icon-offset, -8px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-button-filled-ripple-color, color-mix(in srgb, var(--mat-sys-on-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-filled-state-layer-color, var(--mat-sys-on-primary))}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-filled-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-unelevated-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-unelevated-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-unelevated-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-filled-touch-target-size, 48px);display:var(--mat-button-filled-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mat-button-filled-label-text-color, var(--mat-sys-on-primary));background-color:var(--mat-button-filled-container-color, var(--mat-sys-primary))}.mat-mdc-unelevated-button,.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mat-button-filled-container-shape, var(--mat-sys-corner-full))}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-filled-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-filled-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);box-shadow:var(--mat-button-protected-container-elevation-shadow, var(--mat-sys-level1));height:var(--mat-button-protected-container-height, 40px);font-family:var(--mat-button-protected-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-protected-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-protected-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-protected-label-text-transform);font-weight:var(--mat-button-protected-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-protected-horizontal-padding, 24px)}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-button-protected-icon-spacing, 8px);margin-left:var(--mat-button-protected-icon-offset, -8px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-button-protected-icon-offset, -8px);margin-left:var(--mat-button-protected-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-protected-icon-offset, -8px);margin-left:var(--mat-button-protected-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-protected-icon-spacing, 8px);margin-left:var(--mat-button-protected-icon-offset, -8px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-button-protected-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-protected-state-layer-color, var(--mat-sys-primary))}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-protected-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-raised-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-raised-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-raised-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-protected-touch-target-size, 48px);display:var(--mat-button-protected-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-raised-button:not(:disabled){color:var(--mat-button-protected-label-text-color, var(--mat-sys-primary));background-color:var(--mat-button-protected-container-color, var(--mat-sys-surface))}.mat-mdc-raised-button,.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mat-button-protected-container-shape, var(--mat-sys-corner-full))}@media(hover: hover){.mat-mdc-raised-button:hover{box-shadow:var(--mat-button-protected-hover-container-elevation-shadow, var(--mat-sys-level2))}}.mat-mdc-raised-button:focus{box-shadow:var(--mat-button-protected-focus-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mat-button-protected-pressed-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-protected-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-protected-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mat-button-protected-disabled-container-elevation-shadow, var(--mat-sys-level0))}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-outlined-container-height, 40px);font-family:var(--mat-button-outlined-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-outlined-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-outlined-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-outlined-label-text-transform);font-weight:var(--mat-button-outlined-label-text-weight, var(--mat-sys-label-large-weight));border-radius:var(--mat-button-outlined-container-shape, var(--mat-sys-corner-full));border-width:var(--mat-button-outlined-outline-width, 1px);padding:0 var(--mat-button-outlined-horizontal-padding, 24px)}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-button-outlined-icon-spacing, 8px);margin-left:var(--mat-button-outlined-icon-offset, -8px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-button-outlined-icon-offset, -8px);margin-left:var(--mat-button-outlined-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-outlined-icon-offset, -8px);margin-left:var(--mat-button-outlined-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-outlined-icon-spacing, 8px);margin-left:var(--mat-button-outlined-icon-offset, -8px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-button-outlined-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-outlined-state-layer-color, var(--mat-sys-primary))}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-outlined-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-outlined-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-outlined-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-outlined-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-outlined-touch-target-size, 48px);display:var(--mat-button-outlined-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-outlined-button:not(:disabled){color:var(--mat-button-outlined-label-text-color, var(--mat-sys-primary));border-color:var(--mat-button-outlined-outline-color, var(--mat-sys-outline))}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-outlined-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:var(--mat-button-outlined-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-tonal-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-tonal-container-height, 40px);font-family:var(--mat-button-tonal-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-tonal-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-tonal-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-tonal-label-text-transform);font-weight:var(--mat-button-tonal-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-tonal-horizontal-padding, 24px)}.mat-tonal-button:not(:disabled){color:var(--mat-button-tonal-label-text-color, var(--mat-sys-on-secondary-container));background-color:var(--mat-button-tonal-container-color, var(--mat-sys-secondary-container))}.mat-tonal-button,.mat-tonal-button .mdc-button__ripple{border-radius:var(--mat-button-tonal-container-shape, var(--mat-sys-corner-full))}.mat-tonal-button[disabled],.mat-tonal-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-tonal-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-tonal-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-tonal-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-tonal-button>.mat-icon{margin-right:var(--mat-button-tonal-icon-spacing, 8px);margin-left:var(--mat-button-tonal-icon-offset, -8px)}[dir=rtl] .mat-tonal-button>.mat-icon{margin-right:var(--mat-button-tonal-icon-offset, -8px);margin-left:var(--mat-button-tonal-icon-spacing, 8px)}.mat-tonal-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-tonal-icon-offset, -8px);margin-left:var(--mat-button-tonal-icon-spacing, 8px)}[dir=rtl] .mat-tonal-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-tonal-icon-spacing, 8px);margin-left:var(--mat-button-tonal-icon-offset, -8px)}.mat-tonal-button .mat-ripple-element{background-color:var(--mat-button-tonal-ripple-color, color-mix(in srgb, var(--mat-sys-on-secondary-container) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-tonal-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-tonal-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-tonal-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-tonal-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-tonal-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-tonal-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-tonal-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-tonal-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-tonal-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-tonal-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-tonal-touch-target-size, 48px);display:var(--mat-button-tonal-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button,.mat-tonal-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before,.mat-tonal-button .mat-mdc-button-ripple,.mat-tonal-button .mat-mdc-button-persistent-ripple,.mat-tonal-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-tonal-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before,.mat-tonal-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-button .mat-icon,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-unelevated-button .mat-icon,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-raised-button .mat-icon,.mat-mdc-outlined-button .mdc-button__label,.mat-mdc-outlined-button .mat-icon,.mat-tonal-button .mdc-button__label,.mat-tonal-button .mat-icon{z-index:1;position:relative}.mat-mdc-button .mat-focus-indicator,.mat-mdc-unelevated-button .mat-focus-indicator,.mat-mdc-raised-button .mat-focus-indicator,.mat-mdc-outlined-button .mat-focus-indicator,.mat-tonal-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-unelevated-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-raised-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-outlined-button:focus-visible>.mat-focus-indicator::before,.mat-tonal-button:focus-visible>.mat-focus-indicator::before{content:"";border-radius:inherit}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable,.mat-tonal-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon,.mat-tonal-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px}.mat-mdc-unelevated-button .mat-focus-indicator::before,.mat-tonal-button .mat-focus-indicator::before,.mat-mdc-raised-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px)*-1)}\n',"@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}\n"],encapsulation:2,changeDetection:0})}return t})(),B4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[IS,ii]})}return t})();function wue(t,n){if(1&t){const e=oe();h(0,"div",1)(1,"button",2),F("click",function(){return j(e),U(v().action())}),p(2),u()()}if(2&t){const e=v();d(2),E(" ",e.data.action," ")}}const xue=["label"];function Sue(t,n){}const kue=Math.pow(2,31)-1;class Ab{_overlayRef;instance;containerInstance;_afterDismissed=new me;_afterOpened=new me;_onAction=new me;_durationTimeoutId;_dismissedByAction=!1;constructor(n,e){this._overlayRef=e,this.containerInstance=n,n._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(n){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(n,kue))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}}const OS=new Z("MatSnackBarData");class Rb{politeness="polite";announcementMessage="";viewContainerRef;duration=0;panelClass;direction;data=null;horizontalPosition="center";verticalPosition="bottom"}let V4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"]})}return t})(),H4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"]})}return t})(),j4=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"]})}return t})(),U4=(()=>{class t{snackBarRef=D(Ab);data=D(OS);constructor(){}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions",""],["matButton","","matSnackBarAction","",3,"click"]],template:function(i,o){1&i&&(h(0,"div",0),p(1),u(),x(2,wue,3,1,"div",1)),2&i&&(d(),E(" ",o.data.message,"\n"),d(),S(o.hasAction?2:-1))},dependencies:[Pn,V4,H4,j4],styles:[".mat-mdc-simple-snack-bar{display:flex}.mat-mdc-simple-snack-bar .mat-mdc-snack-bar-label{max-height:50vh;overflow:auto}\n"],encapsulation:2,changeDetection:0})}return t})();const AS="_mat-snack-bar-enter",RS="_mat-snack-bar-exit";let z4=(()=>{class t extends bb{_ngZone=D(_e);_elementRef=D(Re);_changeDetectorRef=D(Jt);_platform=D(Yn);_animationsDisabled=ci();snackBarConfig=D(Rb);_document=D(et);_trackedModals=new Set;_enterFallback;_exitFallback;_injector=D(He);_announceDelay=150;_announceTimeoutId;_destroyed=!1;_portalOutlet;_onAnnounce=new me;_onExit=new me;_onEnter=new me;_animationState="void";_live;_label;_role;_liveElementId=D(ni).getId("mat-snack-bar-container-live-");constructor(){super();const e=this.snackBarConfig;this._live="assertive"!==e.politeness||e.announcementMessage?"off"===e.politeness?"off":"polite":"assertive",this._platform.FIREFOX&&("polite"===this._live&&(this._role="status"),"assertive"===this._live&&(this._role="alert"))}attachComponentPortal(e){this._assertNotAttached();const i=this._portalOutlet.attachComponentPortal(e);return this._afterPortalAttached(),i}attachTemplatePortal(e){this._assertNotAttached();const i=this._portalOutlet.attachTemplatePortal(e);return this._afterPortalAttached(),i}attachDomPortal=e=>{this._assertNotAttached();const i=this._portalOutlet.attachDomPortal(e);return this._afterPortalAttached(),i};onAnimationEnd(e){e===RS?this._completeExit():e===AS&&(clearTimeout(this._enterFallback),this._ngZone.run(()=>{this._onEnter.next(),this._onEnter.complete()}))}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce(),this._animationsDisabled?Vi(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(AS)))},{injector:this._injector}):(clearTimeout(this._enterFallback),this._enterFallback=setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-snack-bar-fallback-visible"),this.onAnimationEnd(AS)},200)))}exit(){return this._destroyed?ae(void 0):(this._ngZone.run(()=>{this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._elementRef.nativeElement.setAttribute("mat-exit",""),clearTimeout(this._announceTimeoutId),this._animationsDisabled?Vi(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(RS)))},{injector:this._injector}):(clearTimeout(this._exitFallback),this._exitFallback=setTimeout(()=>this.onAnimationEnd(RS),200))}),this._onExit)}ngOnDestroy(){this._destroyed=!0,this._clearFromModals(),this._completeExit()}_completeExit(){clearTimeout(this._exitFallback),queueMicrotask(()=>{this._onExit.next(),this._onExit.complete()})}_afterPortalAttached(){const e=this._elementRef.nativeElement,i=this.snackBarConfig.panelClass;i&&(Array.isArray(i)?i.forEach(s=>e.classList.add(s)):e.classList.add(i)),this._exposeToModals();const o=this._label.nativeElement,r="mdc-snackbar__label";o.classList.toggle(r,!o.querySelector(`.${r}`))}_exposeToModals(){const e=this._liveElementId,i=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal="true"]');for(let o=0;o{const i=e.getAttribute("aria-owns");if(i){const o=i.replace(this._liveElementId,"").trim();o.length>0?e.setAttribute("aria-owns",o):e.removeAttribute("aria-owns")}}),this._trackedModals.clear()}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{if(this._destroyed)return;const e=this._elementRef.nativeElement,i=e.querySelector("[aria-hidden]"),o=e.querySelector("[aria-live]");if(i&&o){let r=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&i.contains(document.activeElement)&&(r=document.activeElement),i.removeAttribute("aria-hidden"),o.appendChild(i),r?.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-snack-bar-container"]],viewQuery:function(i,o){if(1&i&&ot(Xl,7)(xue,7),2&i){let r;he(r=fe())&&(o._portalOutlet=r.first),he(r=fe())&&(o._label=r.first)}},hostAttrs:[1,"mdc-snackbar","mat-mdc-snack-bar-container"],hostVars:6,hostBindings:function(i,o){1&i&&F("animationend",function(s){return o.onAnimationEnd(s.animationName)})("animationcancel",function(s){return o.onAnimationEnd(s.animationName)}),2&i&&Ie("mat-snack-bar-container-enter","visible"===o._animationState)("mat-snack-bar-container-exit","hidden"===o._animationState)("mat-snack-bar-container-animations-enabled",!o._animationsDisabled)},features:[be],decls:6,vars:3,consts:[["label",""],[1,"mdc-snackbar__surface","mat-mdc-snackbar-surface"],[1,"mat-mdc-snack-bar-label"],["aria-hidden","true"],["cdkPortalOutlet",""]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2,0)(3,"div",3),it(4,Sue,0,0,"ng-template",4),u(),B(5,"div"),u()()),2&i&&(d(5),$e("aria-live",o._live)("role",o._role)("id",o._liveElementId))},dependencies:[Xl],styles:["@keyframes _mat-snack-bar-enter{from{transform:scale(0.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes _mat-snack-bar-exit{from{opacity:1}to{opacity:0}}.mat-mdc-snack-bar-container{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:8px}.mat-mdc-snack-bar-handset .mat-mdc-snack-bar-container{width:100vw}.mat-snack-bar-container-animations-enabled{opacity:0}.mat-snack-bar-container-animations-enabled.mat-snack-bar-fallback-visible{opacity:1}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-enter{animation:_mat-snack-bar-enter 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-exit{animation:_mat-snack-bar-exit 75ms cubic-bezier(0.4, 0, 1, 1) forwards}.mat-mdc-snackbar-surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;padding-left:0;padding-right:8px}[dir=rtl] .mat-mdc-snackbar-surface{padding-right:0;padding-left:8px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{min-width:344px;max-width:672px}.mat-mdc-snack-bar-handset .mat-mdc-snackbar-surface{width:100%;min-width:0}@media(forced-colors: active){.mat-mdc-snackbar-surface{outline:solid 1px}}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{color:var(--mat-snack-bar-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-snack-bar-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-snack-bar-container-color, var(--mat-sys-inverse-surface))}.mdc-snackbar__label{width:100%;flex-grow:1;box-sizing:border-box;margin:0;padding:14px 8px 14px 16px}[dir=rtl] .mdc-snackbar__label{padding-left:8px;padding-right:16px}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-family:var(--mat-snack-bar-supporting-text-font, var(--mat-sys-body-medium-font));font-size:var(--mat-snack-bar-supporting-text-size, var(--mat-sys-body-medium-size));font-weight:var(--mat-snack-bar-supporting-text-weight, var(--mat-sys-body-medium-weight));line-height:var(--mat-snack-bar-supporting-text-line-height, var(--mat-sys-body-medium-line-height))}.mat-mdc-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled).mat-unthemed{color:var(--mat-snack-bar-button-color, var(--mat-sys-inverse-primary))}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){--mat-button-text-state-layer-color: currentColor;--mat-button-text-ripple-color: currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}\n"],encapsulation:2})}return t})();const $4=new Z("mat-snack-bar-default-options",{providedIn:"root",factory:()=>new Rb});let W4=(()=>{class t{_live=D(d4);_injector=D(He);_breakpointObserver=D(n4);_parentSnackBar=D(t,{optional:!0,skipSelf:!0});_defaultConfig=D($4);_animationsDisabled=ci();_snackBarRefAtThisLevel=null;simpleSnackBarComponent=U4;snackBarContainerComponent=z4;handsetCssClass="mat-mdc-snack-bar-handset";get _openedSnackBarRef(){const e=this._parentSnackBar;return e?e._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(e){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=e:this._snackBarRefAtThisLevel=e}constructor(){}openFromComponent(e,i){return this._attach(e,i)}openFromTemplate(e,i){return this._attach(e,i)}open(e,i="",o){const r={...this._defaultConfig,...o};return r.data={message:e,action:i},r.announcementMessage===e&&(r.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,r)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(e,i){const r=He.create({parent:i&&i.viewContainerRef&&i.viewContainerRef.injector||this._injector,providers:[{provide:Rb,useValue:i}]}),s=new Kd(this.snackBarContainerComponent,i.viewContainerRef,r),a=e.attach(s);return a.instance.snackBarConfig=i,a.instance}_attach(e,i){const o={...new Rb,...this._defaultConfig,...i},r=this._createOverlay(o),s=this._attachSnackBarContainer(r,o),a=new Ab(s,r);if(e instanceof Ti){const l=new Yl(e,null,{$implicit:o.data,snackBarRef:a});a.instance=s.attachTemplatePortal(l)}else{const l=this._createInjector(o,a),c=new Kd(e,void 0,l),f=s.attachComponentPortal(c);a.instance=f.instance}return this._breakpointObserver.observe("(max-width: 599.98px) and (orientation: portrait)").pipe(fn(r.detachments())).subscribe(l=>{r.overlayElement.classList.toggle(this.handsetCssClass,l.matches)}),o.announcementMessage&&s._onAnnounce.subscribe(()=>{this._live.announce(o.announcementMessage,o.politeness)}),this._animateSnackBar(a,o),this._openedSnackBarRef=a,this._openedSnackBarRef}_animateSnackBar(e,i){e.afterDismissed().subscribe(()=>{this._openedSnackBarRef==e&&(this._openedSnackBarRef=null),i.announcementMessage&&this._live.clear()}),i.duration&&i.duration>0&&e.afterOpened().subscribe(()=>e._dismissAfter(i.duration)),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{e.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):e.containerInstance.enter()}_createOverlay(e){const i=new Vf;i.direction=e.direction;const o=Sb(),r="rtl"===e.direction,s="left"===e.horizontalPosition||"start"===e.horizontalPosition&&!r||"end"===e.horizontalPosition&&r,a=!s&&"center"!==e.horizontalPosition;return s?o.left("0"):a?o.right("0"):o.centerHorizontally(),"top"===e.verticalPosition?o.top("0"):o.bottom("0"),i.positionStrategy=o,i.disableAnimations=this._animationsDisabled,Xd(this._injector,i)}_createInjector(e,i){return He.create({parent:e&&e.viewContainerRef&&e.viewContainerRef.injector||this._injector,providers:[{provide:Ab,useValue:i},{provide:OS,useValue:e.data}]})}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Due=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({providers:[W4],imports:[Zd,Ff,B4,U4,ii]})}return t})();function zf(...t){const n=rL(t),{args:e,keys:i}=SL(t),o=new Ft(r=>{const{length:s}=e;if(!s)return void r.complete();const a=new Array(s);let l=s,c=s;for(let f=0;f{m||(m=!0,c--),a[f]=g},()=>l--,void 0,()=>{(!l||!m)&&(c||r.next(i?DL(i,a):a),r.complete())}))}});return n?o.pipe(kL(n)):o}function G4(t={}){const{connector:n=()=>new me,resetOnError:e=!0,resetOnComplete:i=!0,resetOnRefCountZero:o=!0}=t;return r=>{let s,a,l,c=0,f=!1,m=!1;const g=()=>{a?.unsubscribe(),a=void 0},_=()=>{g(),s=l=void 0,f=m=!1},w=()=>{const k=s;_(),k?.unsubscribe()};return Mn((k,T)=>{c++,!m&&!f&&g();const I=l=l??n();T.add(()=>{c--,0===c&&!m&&!f&&(a=FS(w,o))}),I.subscribe(T),!s&&c>0&&(s=new Ru({next:R=>I.next(R),error:R=>{m=!0,g(),a=FS(_,e,R),I.error(R)},complete:()=>{f=!0,g(),a=FS(_,i),I.complete()}}),ji(k).subscribe(s))})(r)}}function FS(t,n,...e){if(!0===n)return void t();if(!1===n)return;const i=new Ru({next:()=>{i.unsubscribe(),t()}});return ji(n(...e)).subscribe(i)}function q4(t){return Error(`Unable to find icon with the name "${t}"`)}function K4(t){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${t}".`)}function Y4(t){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${t}".`)}class tc{url;svgText;options;svgElement=null;constructor(n,e,i){this.url=n,this.svgText=e,this.options=i}}let Tue=(()=>{class t{_httpClient;_sanitizer;_errorHandler;_document;_svgIconConfigs=new Map;_iconSetConfigs=new Map;_cachedIconsByUrl=new Map;_inProgressUrlFetches=new Map;_fontCssClassesByAlias=new Map;_resolvers=[];_defaultFontSetClass=["material-icons","mat-ligature-font"];constructor(e,i,o,r){this._httpClient=e,this._sanitizer=i,this._errorHandler=r,this._document=o}addSvgIcon(e,i,o){return this.addSvgIconInNamespace("",e,i,o)}addSvgIconLiteral(e,i,o){return this.addSvgIconLiteralInNamespace("",e,i,o)}addSvgIconInNamespace(e,i,o,r){return this._addSvgIconConfig(e,i,new tc(o,null,r))}addSvgIconResolver(e){return this._resolvers.push(e),this}addSvgIconLiteralInNamespace(e,i,o,r){const s=this._sanitizer.sanitize(bi.HTML,o);if(!s)throw Y4(o);const a=Qd(s);return this._addSvgIconConfig(e,i,new tc("",a,r))}addSvgIconSet(e,i){return this.addSvgIconSetInNamespace("",e,i)}addSvgIconSetLiteral(e,i){return this.addSvgIconSetLiteralInNamespace("",e,i)}addSvgIconSetInNamespace(e,i,o){return this._addSvgIconSetConfig(e,new tc(i,null,o))}addSvgIconSetLiteralInNamespace(e,i,o){const r=this._sanitizer.sanitize(bi.HTML,i);if(!r)throw Y4(i);const s=Qd(r);return this._addSvgIconSetConfig(e,new tc("",s,o))}registerFontClassAlias(e,i=e){return this._fontCssClassesByAlias.set(e,i),this}classNameForFontAlias(e){return this._fontCssClassesByAlias.get(e)||e}setDefaultFontSetClass(...e){return this._defaultFontSetClass=e,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(e){const i=this._sanitizer.sanitize(bi.RESOURCE_URL,e);if(!i)throw K4(e);const o=this._cachedIconsByUrl.get(i);return o?ae(Fb(o)):this._loadSvgIconFromConfig(new tc(e,null)).pipe(ai(r=>this._cachedIconsByUrl.set(i,r)),Se(r=>Fb(r)))}getNamedSvgIcon(e,i=""){const o=X4(i,e);let r=this._svgIconConfigs.get(o);if(r)return this._getSvgFromConfig(r);if(r=this._getIconConfigFromResolvers(i,e),r)return this._svgIconConfigs.set(o,r),this._getSvgFromConfig(r);const s=this._iconSetConfigs.get(i);return s?this._getSvgFromIconSetConfigs(e,s):mr(q4(o))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(e){return e.svgText?ae(Fb(this._svgElementFromConfig(e))):this._loadSvgIconFromConfig(e).pipe(Se(i=>Fb(i)))}_getSvgFromIconSetConfigs(e,i){const o=this._extractIconWithNameFromAnySet(e,i);return o?ae(o):zf(i.filter(s=>!s.svgText).map(s=>this._loadSvgIconSetFromConfig(s).pipe(Ui(a=>{const c=`Loading icon set URL: ${this._sanitizer.sanitize(bi.RESOURCE_URL,s.url)} failed: ${a.message}`;return this._errorHandler.handleError(new Error(c)),ae(null)})))).pipe(Se(()=>{const s=this._extractIconWithNameFromAnySet(e,i);if(!s)throw q4(e);return s}))}_extractIconWithNameFromAnySet(e,i){for(let o=i.length-1;o>=0;o--){const r=i[o];if(r.svgText&&r.svgText.toString().indexOf(e)>-1){const s=this._svgElementFromConfig(r),a=this._extractSvgIconFromSet(s,e,r.options);if(a)return a}}return null}_loadSvgIconFromConfig(e){return this._fetchIcon(e).pipe(ai(i=>e.svgText=i),Se(()=>this._svgElementFromConfig(e)))}_loadSvgIconSetFromConfig(e){return e.svgText?ae(null):this._fetchIcon(e).pipe(ai(i=>e.svgText=i))}_extractSvgIconFromSet(e,i,o){const r=e.querySelector(`[id="${i}"]`);if(!r)return null;const s=r.cloneNode(!0);if(s.removeAttribute("id"),"svg"===s.nodeName.toLowerCase())return this._setSvgAttributes(s,o);if("symbol"===s.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(s),o);const a=this._svgElementFromString(Qd(""));return a.appendChild(s),this._setSvgAttributes(a,o)}_svgElementFromString(e){const i=this._document.createElement("DIV");i.innerHTML=e;const o=i.querySelector("svg");if(!o)throw Error(" tag not found");return o}_toSvgElement(e){const i=this._svgElementFromString(Qd("")),o=e.attributes;for(let r=0;rQd(c)),B_(()=>this._inProgressUrlFetches.delete(s)),G4());return this._inProgressUrlFetches.set(s,l),l}_addSvgIconConfig(e,i,o){return this._svgIconConfigs.set(X4(e,i),o),this}_addSvgIconSetConfig(e,i){const o=this._iconSetConfigs.get(e);return o?o.push(i):this._iconSetConfigs.set(e,[i]),this}_svgElementFromConfig(e){if(!e.svgElement){const i=this._svgElementFromString(e.svgText);this._setSvgAttributes(i,e.options),e.svgElement=i}return e.svgElement}_getIconConfigFromResolvers(e,i){for(let o=0;o{const t=D(et),n=t?t.location:null;return{getPathname:()=>n?n.pathname+n.search:""}}}),Z4=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],Aue=Z4.map(t=>`[${t}]`).join(", "),Rue=/^url\(['"]?#(.*?)['"]?\)$/;let We=(()=>{class t{_elementRef=D(Re);_iconRegistry=D(Tue);_location=D(Oue);_errorHandler=D(sl);_defaultColor;get color(){return this._color||this._defaultColor}set color(e){this._color=e}_color;inline=!1;get svgIcon(){return this._svgIcon}set svgIcon(e){e!==this._svgIcon&&(e?this._updateSvgIcon(e):this._svgIcon&&this._clearSvgElement(),this._svgIcon=e)}_svgIcon;get fontSet(){return this._fontSet}set fontSet(e){const i=this._cleanupFontValue(e);i!==this._fontSet&&(this._fontSet=i,this._updateFontIconClasses())}_fontSet;get fontIcon(){return this._fontIcon}set fontIcon(e){const i=this._cleanupFontValue(e);i!==this._fontIcon&&(this._fontIcon=i,this._updateFontIconClasses())}_fontIcon;_previousFontSetClass=[];_previousFontIconClass;_svgName=null;_svgNamespace=null;_previousPath;_elementsWithExternalReferences;_currentIconFetch=pt.EMPTY;constructor(){const e=D(new Yh("aria-hidden"),{optional:!0}),i=D(Iue,{optional:!0});i&&(i.color&&(this.color=this._defaultColor=i.color),i.fontSet&&(this.fontSet=i.fontSet)),e||this._elementRef.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(e){if(!e)return["",""];const i=e.split(":");switch(i.length){case 1:return["",i[0]];case 2:return i;default:throw Error(`Invalid icon name: "${e}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const e=this._elementsWithExternalReferences;if(e&&e.size){const i=this._location.getPathname();i!==this._previousPath&&(this._previousPath=i,this._prependPathToReferences(i))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(e){this._clearSvgElement();const i=this._location.getPathname();this._previousPath=i,this._cacheChildrenWithExternalReferences(e),this._prependPathToReferences(i),this._elementRef.nativeElement.appendChild(e)}_clearSvgElement(){const e=this._elementRef.nativeElement;let i=e.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();i--;){const o=e.childNodes[i];(1!==o.nodeType||"svg"===o.nodeName.toLowerCase())&&o.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const e=this._elementRef.nativeElement,i=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(o=>o.length>0);this._previousFontSetClass.forEach(o=>e.classList.remove(o)),i.forEach(o=>e.classList.add(o)),this._previousFontSetClass=i,this.fontIcon!==this._previousFontIconClass&&!i.includes("mat-ligature-font")&&(this._previousFontIconClass&&e.classList.remove(this._previousFontIconClass),this.fontIcon&&e.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(e){return"string"==typeof e?e.trim().split(" ")[0]:e}_prependPathToReferences(e){const i=this._elementsWithExternalReferences;i&&i.forEach((o,r)=>{o.forEach(s=>{r.setAttribute(s.name,`url('${e}#${s.value}')`)})})}_cacheChildrenWithExternalReferences(e){const i=e.querySelectorAll(Aue),o=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let r=0;r{const a=i[r],l=a.getAttribute(s),c=l?l.match(Rue):null;if(c){let f=o.get(a);f||(f=[],o.set(a,f)),f.push({name:s,value:c[1]})}})}_updateSvgIcon(e){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),e){const[i,o]=this._splitIconName(e);i&&(this._svgNamespace=i),o&&(this._svgName=o),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(o,i).pipe(Cn(1)).subscribe(r=>this._setSvgElement(r),r=>{this._errorHandler.handleError(new Error(`Error retrieving icon ${i}:${o}! ${r.message}`))})}}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:10,hostBindings:function(i,o){2&i&&($e("data-mat-icon-type",o._usingFontIcon()?"font":"svg")("data-mat-icon-name",o._svgName||o.fontIcon)("data-mat-icon-namespace",o._svgNamespace||o.fontSet)("fontIcon",o._usingFontIcon()?o.fontIcon:null),Ze(o.color?"mat-"+o.color:""),Ie("mat-icon-inline",o.inline)("mat-icon-no-color","primary"!==o.color&&"accent"!==o.color&&"warn"!==o.color))},inputs:{color:"color",inline:[2,"inline","inline",De],svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],ngContentSelectors:Pue,decls:1,vars:0,template:function(i,o){1&i&&(yi(),Pt(0))},styles:["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color, inherit)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}\n"],encapsulation:2,changeDetection:0})}return t})(),Fue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ii]})}return t})();function NS(t,n,e){let i,o=!1;return t&&"object"==typeof t?({bufferSize:i=1/0,windowTime:n=1/0,refCount:o=!1,scheduler:e}=t):i=t??1/0,G4({connector:()=>new oo(i,n,e),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:o})}class LS{}let Q4=(()=>{class t{handle(e){return e.key}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class Nb{}let J4=(()=>{class t extends Nb{compile(e,i){return e}compileTranslations(e,i){return e}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();class $f{}let e5=(()=>{class t extends $f{getTranslation(e){return ae({})}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();function Lb(t,n){if(t===n)return!0;if(null===t||null===n)return!1;if(t!=t&&n!=n)return!0;const e=typeof t;let o;if(e==typeof n&&"object"==e)if(Array.isArray(t)){if(!Array.isArray(n))return!1;if((o=t.length)==n.length){for(let r=0;rVb(n));if(Kr(t)){const n={};return Object.keys(t).forEach(e=>{n[e]=Vb(t[e])}),n}return t}function BS(t,n){if(!Wf(t))return Vb(n);const e=Vb(t);return Wf(e)&&Wf(n)&&Object.keys(n).forEach(i=>{Kr(n[i])?i in t?e[i]=BS(t[i],n[i]):Object.assign(e,{[i]:n[i]}):Object.assign(e,{[i]:n[i]})}),e}function n5(t,n){const e=n.split(".");n="";do{n+=e.shift();const i=!e.length;if(Sa(t)){if(Kr(t)&&t5(t[n])&&(Kr(t[n])||nc(t[n])||i)){t=t[n],n="";continue}if(nc(t)){const o=parseInt(n,10);if(t5(t[o])&&(Kr(t[o])||nc(t[o])||i)){t=t[o],n="";continue}}}i?t=void 0:n+="."}while(e.length);return t}class Hb{}let i5=(()=>{class t extends Hb{templateMatcher=/{{\s?([^{}\s]*)\s?}}/g;interpolate(e,i){return Bb(e)?this.interpolateString(e,i):function Nue(t){return"function"==typeof t}(e)?this.interpolateFunction(e,i):void 0}interpolateFunction(e,i){return e(i)}interpolateString(e,i){return i?e.replace(this.templateMatcher,(o,r)=>{const s=this.getInterpolationReplacement(i,r);return void 0!==s?s:o}):e}getInterpolationReplacement(e,i){return this.formatValue(n5(e,i))}formatValue(e){return Bb(e)?e:"number"==typeof e||"boolean"==typeof e?e.toString():null===e?"null":nc(e)?e.join(", "):Wf(e)?"function"==typeof e.toString&&e.toString!==Object.prototype.toString?e.toString():JSON.stringify(e):void 0}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),VS=(()=>{class t{_onTranslationChange=new me;_onLangChange=new me;_onFallbackLangChange=new me;fallbackLang=null;currentLang;translations={};languages=[];getTranslations(e){return this.translations[e]}setTranslations(e,i,o){this.translations[e]=o&&this.hasTranslationFor(e)?BS(this.translations[e],i):i,this.addLanguages([e]),this._onTranslationChange.next({lang:e,translations:this.getTranslations(e)})}getLanguages(){return this.languages}getCurrentLang(){return this.currentLang}getFallbackLang(){return this.fallbackLang}setFallbackLang(e,i=!0){this.fallbackLang=e,i&&this._onFallbackLangChange.next({lang:e,translations:this.translations[e]})}setCurrentLang(e,i=!0){this.currentLang=e,i&&this._onLangChange.next({lang:e,translations:this.translations[e]})}get onTranslationChange(){return this._onTranslationChange.asObservable()}get onLangChange(){return this._onLangChange.asObservable()}get onFallbackLangChange(){return this._onFallbackLangChange.asObservable()}addLanguages(e){this.languages=Array.from(new Set([...this.languages,...e]))}hasTranslationFor(e){return typeof this.translations[e]<"u"}deleteTranslations(e){delete this.translations[e]}getTranslation(e){let i=this.getValue(this.currentLang,e);return void 0===i&&null!=this.fallbackLang&&this.fallbackLang!==this.currentLang&&(i=this.getValue(this.fallbackLang,e)),i}getValue(e,i){return n5(this.getTranslations(e),i)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();const HS=new Z("TRANSLATE_CONFIG"),Gf=t=>jr(t)?t:ae(t);let Go=(()=>{class t{loadingTranslations;pending=!1;_translationRequests={};lastUseLanguage=null;currentLoader=D($f);compiler=D(Nb);parser=D(Hb);missingTranslationHandler=D(LS);store=D(VS);extend=!1;get onTranslationChange(){return this.store.onTranslationChange}get onLangChange(){return this.store.onLangChange}get onFallbackLangChange(){return this.store.onFallbackLangChange}get onDefaultLangChange(){return this.store.onFallbackLangChange}constructor(){const e={extend:!1,fallbackLang:null,...D(HS,{optional:!0})};e.lang&&this.use(e.lang),e.fallbackLang&&this.setFallbackLang(e.fallbackLang),e.extend&&(this.extend=!0)}setFallbackLang(e){this.getFallbackLang()||this.store.setFallbackLang(e,!1);const i=this.loadOrExtendLanguage(e);return jr(i)?(i.pipe(Cn(1)).subscribe({next:()=>{this.store.setFallbackLang(e)},error:()=>{}}),i):(this.store.setFallbackLang(e),ae(this.store.getTranslations(e)))}use(e){this.lastUseLanguage=e,this.getCurrentLang()||this.store.setCurrentLang(e,!1);const i=this.loadOrExtendLanguage(e);return jr(i)?(i.pipe(Cn(1)).subscribe({next:()=>{this.changeLang(e)},error:()=>{}}),i):(this.changeLang(e),ae(this.store.getTranslations(e)))}loadOrExtendLanguage(e){if(!this.store.hasTranslationFor(e)||this.extend)return this._translationRequests[e]=this._translationRequests[e]||this.loadAndCompileTranslations(e),this._translationRequests[e]}changeLang(e){e===this.lastUseLanguage&&this.store.setCurrentLang(e)}getCurrentLang(){return this.store.getCurrentLang()}loadAndCompileTranslations(e){this.pending=!0;const i=this.currentLoader.getTranslation(e).pipe(NS(1),Cn(1));return this.loadingTranslations=i.pipe(Se(o=>this.compiler.compileTranslations(o,e)),NS(1),Cn(1)),this.loadingTranslations.subscribe({next:o=>{this.store.setTranslations(e,o,this.extend),this.pending=!1},error:o=>{this.pending=!1}}),i}setTranslation(e,i,o=!1){const r=this.compiler.compileTranslations(i,e);this.store.setTranslations(e,r,o||this.extend)}getLangs(){return this.store.getLanguages()}addLangs(e){this.store.addLanguages(e)}getParsedResultForKey(e,i){const o=this.getTextToInterpolate(e);if(Sa(o))return this.runInterpolation(o,i);const r=this.missingTranslationHandler.handle({key:e,translateService:this,...void 0!==i&&{interpolateParams:i}});return void 0!==r?r:e}getFallbackLang(){return this.store.getFallbackLang()}getTextToInterpolate(e){return this.store.getTranslation(e)}runInterpolation(e,i){if(Sa(e))return nc(e)?this.runInterpolationOnArray(e,i):Kr(e)?this.runInterpolationOnDict(e,i):this.parser.interpolate(e,i)}runInterpolationOnArray(e,i){return e.map(o=>this.runInterpolation(o,i))}runInterpolationOnDict(e,i){const o={};for(const r in e){const s=this.runInterpolation(e[r],i);void 0!==s&&(o[r]=s)}return o}getParsedResult(e,i){return e instanceof Array?this.getParsedResultForArray(e,i):this.getParsedResultForKey(e,i)}getParsedResultForArray(e,i){const o={};let r=!1;for(const a of e)o[a]=this.getParsedResultForKey(a,i),r=r||jr(o[a]);return r?zf(e.map(a=>Gf(o[a]))).pipe(Se(a=>{const l={};return a.forEach((c,f)=>{l[e[f]]=c}),l})):o}get(e,i){if(!Sa(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return this.pending?this.loadingTranslations.pipe(cf(()=>Gf(this.getParsedResult(e,i)))):Gf(this.getParsedResult(e,i))}getStreamOnTranslationChange(e,i){if(!Sa(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return Ts(ya(()=>this.get(e,i)),this.onTranslationChange.pipe(tn(()=>{const o=this.getParsedResult(e,i);return Gf(o)})))}stream(e,i){if(!Sa(e)||!e.length)throw new Error('Parameter "key" required');return Ts(ya(()=>this.get(e,i)),this.onLangChange.pipe(tn(()=>{const o=this.getParsedResult(e,i);return Gf(o)})))}instant(e,i){if(!Sa(e)||0===e.length)throw new Error('Parameter "key" is required and cannot be empty');const o=this.getParsedResult(e,i);return jr(o)?Array.isArray(e)?e.reduce((r,s)=>(r[s]=s,r),{}):e:o}set(e,i,o=this.getCurrentLang()){this.store.setTranslations(o,function Lue(t,n,e){return BS(t,function Bue(t,n){return t.split(".").reduceRight((e,i)=>({[i]:e}),n)}(n,e))}(this.store.getTranslations(o),e,Bb(i)?this.compiler.compile(i,o):this.compiler.compileTranslations(i,o)),!1)}reloadLang(e){return this.resetLang(e),this.loadAndCompileTranslations(e)}resetLang(e){delete this._translationRequests[e],this.store.deleteTranslations(e)}static getBrowserLang(){if(typeof window>"u"||!window.navigator)return;const e=this.getBrowserCultureLang();return e?e.split(/[-_]/)[0]:void 0}static getBrowserCultureLang(){if(!(typeof window>"u"||typeof window.navigator>"u"))return window.navigator.languages?window.navigator.languages[0]:window.navigator.language||window.navigator.browserLanguage||window.navigator.userLanguage}getBrowserLang(){return t.getBrowserLang()}getBrowserCultureLang(){return t.getBrowserCultureLang()}get defaultLang(){return this.getFallbackLang()}get currentLang(){return this.store.getCurrentLang()}get langs(){return this.store.getLanguages()}setDefaultLang(e){return this.setFallbackLang(e)}getDefaultLang(){return this.getFallbackLang()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),xe=(()=>{class t{translate=D(Go);_ref=D(Jt);value="";lastKey=null;lastParams=[];onTranslationChange;onLangChange;onFallbackLangChange;updateValue(e,i,o){const r=s=>{this.value=void 0!==s?s:e,this.lastKey=e,this._ref.markForCheck()};if(o){const s=this.translate.getParsedResult(e,i);jr(s)?s.subscribe(r):r(s)}this.translate.get(e,i).subscribe(r)}transform(e,...i){if(!e||!e.length)return e;if(Lb(e,this.lastKey)&&Lb(i,this.lastParams))return this.value;let o;if(Sa(i[0])&&i.length)if(Bb(i[0])&&i[0].length){const r=i[0].replace(/(')?([a-zA-Z0-9_]+)(')?(\s)?:/g,'"$2":').replace(/:(\s)?(')(.*?)(')/g,':"$3"');try{o=JSON.parse(r)}catch(s){throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${i[0]}`)}}else Kr(i[0])&&(o=i[0]);return this.lastKey=e,this.lastParams=i,this.updateValue(e,o),this._dispose(),this.onTranslationChange||(this.onTranslationChange=this.translate.onTranslationChange.subscribe(r=>{(this.lastKey&&r.lang===this.translate.getCurrentLang()||r.lang===this.translate.getFallbackLang())&&(this.lastKey=null,this.updateValue(e,o,r.translations))})),this.onLangChange||(this.onLangChange=this.translate.onLangChange.subscribe(r=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,o,r.translations))})),this.onFallbackLangChange||(this.onFallbackLangChange=this.translate.onFallbackLangChange.subscribe(()=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,o))})),this.value}_dispose(){typeof this.onTranslationChange<"u"&&(this.onTranslationChange.unsubscribe(),this.onTranslationChange=void 0),typeof this.onLangChange<"u"&&(this.onLangChange.unsubscribe(),this.onLangChange=void 0),typeof this.onFallbackLangChange<"u"&&(this.onFallbackLangChange.unsubscribe(),this.onFallbackLangChange=void 0)}ngOnDestroy(){this._dispose()}static \u0275fac=function(i){return new(i||t)};static \u0275pipe=Hi({name:"translate",type:t,pure:!1});static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();function o5(t){return{provide:$f,useClass:t}}function r5(t){return{provide:Nb,useClass:t}}function s5(t){return{provide:Hb,useClass:t}}function a5(t){return{provide:LS,useClass:t}}function jb(t={},n){const e=[];return t.loader&&e.push(t.loader),t.compiler&&e.push(t.compiler),t.parser&&e.push(t.parser),t.missingTranslationHandler&&e.push(t.missingTranslationHandler),n&&e.push(VS),(t.useDefaultLang||t.defaultLanguage)&&(console.warn("The `useDefaultLang` and `defaultLanguage` options are deprecated. Please use `fallbackLang` instead."),!0===t.useDefaultLang&&t.defaultLanguage&&(t.fallbackLang=t.defaultLanguage)),e.push({provide:HS,useValue:{fallbackLang:t.fallbackLang??null,lang:t.lang,extend:t.extend??!1}}),e.push({provide:Go,useClass:Go,deps:[VS,$f,Nb,Hb,LS,HS]}),e}let l5=(()=>{class t{static forRoot(e={}){return{ngModule:t,providers:[...jb({compiler:r5(J4),parser:s5(i5),loader:o5(e5),missingTranslationHandler:a5(Q4),...e},!0)]}}static forChild(e={}){return{ngModule:t,providers:[...jb(e,e.isolate??!1)]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function Vue(t,n){if(1&t&&(h(0,"div",0)(1,"mat-icon",5),p(2),u()()),2&t){const e=v();d(),C("inline",!0),d(),M(e.config.icon)}}function Hue(t,n){if(1&t&&(h(0,"div",2),p(1),b(2,"translate"),b(3,"translate"),u()),2&t){const e=v();d(),gt(" ",y(2,2,"common.error")," ",pe(3,4,e.config.smallText,e.config.smallTextTranslationParams)," ")}}var Ub=function(t){return t.Error="error",t.Done="done",t.Warning="warning",t}(Ub||{}),zb=function(t){return t.Red="red-background",t.Green="green-background",t.Yellow="yellow-background",t}(zb||{});let jue=(()=>{class t{constructor(e,i){this.snackbarRef=i,this.config=e}close(){this.snackbarRef.dismiss()}static{this.\u0275fac=function(i){return new(i||t)(O(OS),O(Ab))}}static{this.\u0275cmp=re({type:t,selectors:[["app-snack-bar"]],standalone:!1,decls:9,vars:8,consts:[[1,"icon-container"],[1,"text-container"],[1,"second-line"],[1,"close-button-separator"],[1,"close-button",3,"click"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"div"),x(1,Vue,3,2,"div",0),h(2,"div",1),p(3),b(4,"translate"),x(5,Hue,4,7,"div",2),u(),B(6,"div",3),h(7,"mat-icon",4),F("click",function(){return o.close()}),p(8,"close"),u()()),2&i&&(Ze("main-container "+o.config.color),d(),S(o.config.icon?1:-1),d(2),E(" ",pe(4,5,o.config.text,o.config.textTranslationParams)," "),d(2),S(o.config.smallText?5:-1))},dependencies:[We,xe],styles:['.cursor-pointer[_ngcontent-%COMP%], .close-button[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.main-container[_ngcontent-%COMP%]{width:100%;display:flex;color:#fff;padding:15px;border-radius:5px}.red-background[_ngcontent-%COMP%]{background-color:#ea0606}.green-background[_ngcontent-%COMP%]{background-color:#1fb11f}.yellow-background[_ngcontent-%COMP%]{background-color:#f90}.icon-container[_ngcontent-%COMP%]{margin-right:10px;position:relative;top:1px}.text-container[_ngcontent-%COMP%]{flex-grow:1;margin-right:10px;font-size:1rem;word-break:break-word}.text-container[_ngcontent-%COMP%] .second-line[_ngcontent-%COMP%]{font-size:.8rem;opacity:.9}.close-button-separator[_ngcontent-%COMP%]{width:1px;margin-right:10px;background-color:#0000004d}.close-button[_ngcontent-%COMP%]{opacity:.7}.close-button[_ngcontent-%COMP%]:hover{opacity:1}mat-icon[_ngcontent-%COMP%]{position:relative;top:1px;-webkit-user-select:none;user-select:none}']})}}return t})(),ct=(()=>{class t{constructor(e){this.snackBar=e,this.lastWasTemporaryError=!1}showError(e,i=null,o=!1,r=null,s=null){e=Qe(e),r=r?Qe(r):null,this.lastWasTemporaryError=o,this.show(e.translatableErrorMsg,i,r?r.translatableErrorMsg:null,s,Ub.Error,zb.Red,15e3)}showWarning(e,i=null){this.lastWasTemporaryError=!1,this.show(e,i,null,null,Ub.Warning,zb.Yellow,15e3)}showDone(e,i=null){this.lastWasTemporaryError=!1,this.show(e,i,null,null,Ub.Done,zb.Green,5e3)}closeCurrent(){this.snackBar.dismiss()}closeCurrentIfTemporaryError(){this.lastWasTemporaryError&&this.snackBar.dismiss()}show(e,i,o,r,s,a,l){this.snackBar.openFromComponent(jue,{duration:l,panelClass:"snackbar-container",data:{text:e,textTranslationParams:i,smallText:o,smallTextTranslationParams:r,icon:s,color:a}})}static{this.\u0275fac=function(i){return new(i||t)(ce(W4))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const rt={maxShortListElements:5,maxFullListElements:40,connectionRetryDelay:5e3,languages:[{code:"en",name:"English",iconName:"en.png"},{code:"es",name:"Espa\xf1ol",iconName:"es.png"},{code:"de",name:"Deutsch",iconName:"de.png"},{code:"pt",name:"Portugu\xeas (Brazil)",iconName:"pt.png"}],defaultLanguage:"en",smallModalWidth:"480px",mediumModalWidth:"640px",largeModalWidth:"900px",vpn:{hardcodedIpWhileDeveloping:!1}};class Uue{constructor(n){Object.assign(this,n)}}let $b=(()=>{class t{constructor(e){this.translate=e,this.currentLanguage=new oo(1),this.languages=new oo(1),this.storageKey="lang",this.languagesInternal=[],this.settingsLoaded=!1}loadLanguageSettings(){if(this.settingsLoaded)return;this.settingsLoaded=!0;const e=[];rt.languages.forEach(i=>{const o=new Uue(i);this.languagesInternal.push(o),e.push(o.code)}),this.languages.next(this.languagesInternal),this.translate.addLangs(e),this.translate.setDefaultLang(rt.defaultLanguage),this.translate.onLangChange.subscribe(i=>this.onLanguageChanged(i)),this.loadCurrentLanguage()}changeLanguage(e){this.translate.use(e)}onLanguageChanged(e){this.currentLanguage.next(this.languagesInternal.find(i=>i.code===e.lang)),localStorage.setItem(this.storageKey,e.lang)}loadCurrentLanguage(){let e=localStorage.getItem(this.storageKey);e=e||rt.defaultLanguage,setTimeout(()=>this.translate.use(e),16)}static{this.\u0275fac=function(i){return new(i||t)(ce(Go))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const zue={url:"",deserializer:t=>JSON.parse(t.data),serializer:t=>JSON.stringify(t)};class jS extends ay{constructor(n,e){if(super(),this._socket=null,n instanceof Ft)this.destination=e,this.source=n;else{const i=this._config=Object.assign({},zue);if(this._output=new me,"string"==typeof n)i.url=n;else for(const o in n)n.hasOwnProperty(o)&&(i[o]=n[o]);if(!i.WebSocketCtor&&WebSocket)i.WebSocketCtor=WebSocket;else if(!i.WebSocketCtor)throw new Error("no WebSocket constructor can be found");this.destination=new oo}}lift(n){const e=new jS(this._config,this.destination);return e.operator=n,e.source=this,e}_resetState(){this._socket=null,this.source||(this.destination=new oo),this._output=new me}multiplex(n,e,i){const o=this;return new Ft(r=>{try{o.next(n())}catch(a){r.error(a)}const s=o.subscribe({next:a=>{try{i(a)&&r.next(a)}catch(l){r.error(l)}},error:a=>r.error(a),complete:()=>r.complete()});return()=>{try{o.next(e())}catch(a){r.error(a)}s.unsubscribe()}})}_connectSocket(){const{WebSocketCtor:n,protocol:e,url:i,binaryType:o}=this._config,r=this._output;let s=null;try{s=e?new n(i,e):new n(i),this._socket=s,o&&(this._socket.binaryType=o)}catch(l){return void r.error(l)}const a=new pt(()=>{this._socket=null,s&&1===s.readyState&&s.close()});s.onopen=l=>{const{_socket:c}=this;if(!c)return s.close(),void this._resetState();const{openObserver:f}=this._config;f&&f.next(l);const m=this.destination;this.destination=Bp.create(g=>{if(1===s.readyState)try{const{serializer:_}=this._config;s.send(_(g))}catch(_){this.destination.error(_)}},g=>{const{closingObserver:_}=this._config;_&&_.next(void 0),g&&g.code?s.close(g.code,g.reason):r.error(new TypeError("WebSocketSubject.error must be called with an object with an error code, and an optional reason: { code: number, reason: string }")),this._resetState()},()=>{const{closingObserver:g}=this._config;g&&g.next(void 0),s.close(),this._resetState()}),m&&m instanceof oo&&a.add(m.subscribe(this.destination))},s.onerror=l=>{this._resetState(),r.error(l)},s.onclose=l=>{s===this._socket&&this._resetState();const{closeObserver:c}=this._config;c&&c.next(l),l.wasClean?r.complete():r.error(l)},s.onmessage=l=>{try{const{deserializer:c}=this._config;r.next(c(l))}catch(c){r.error(c)}}}_subscribe(n){const{source:e}=this;return e?e.subscribe(n):(this._socket||this._connectSocket(),this._output.subscribe(n),n.add(()=>{const{_socket:i}=this;0===this._output.observers.length&&(i&&(1===i.readyState||0===i.readyState)&&i.close(),this._resetState())}),n)}unsubscribe(){const{_socket:n}=this;n&&(1===n.readyState||0===n.readyState)&&n.close(),this._resetState(),super.unsubscribe()}}var qf=function(t){return t.Json="json",t.Text="text",t}(qf||{}),Wb=function(t){return t.Json="json",t}(Wb||{});class qo{constructor(n){this.responseType=qf.Json,this.requestType=Wb.Json,this.ignoreAuth=!1,Object.assign(this,n)}}let zi=(()=>{class t{constructor(e,i,o){this.http=e,this.router=i,this.ngZone=o,this.apiPrefix="api/",this.wsApiPrefix="api/"}get(e,i=null){return this.request("GET",e,{},i)}post(e,i={},o=null){return this.getCsrf().pipe(Ur(),It(r=>((o=o||new qo).csrfToken=r,this.request("POST",e,i,o))))}put(e,i={},o=null){return this.getCsrf().pipe(Ur(),It(r=>((o=o||new qo).csrfToken=r,this.request("PUT",e,i,o))))}delete(e,i=null){return this.getCsrf().pipe(Ur(),It(o=>((i=i||new qo).csrfToken=o,this.request("DELETE",e,{},i))))}getCsrf(){return this.get("csrf").pipe(Se(e=>e.csrf_token))}ws(e,i={}){const s=function Wue(t){return new jS(t)}((location.protocol.startsWith("https")?"wss://":"ws://")+location.host+"/"+this.wsApiPrefix+e);return s.next(i),s}request(e,i,o,r){return o=o||{},r=r||new qo,i.startsWith("/")&&(i=i.substr(1,i.length-1)),this.http.request(e,this.apiPrefix+i,{...this.getRequestOptions(r),responseType:r.responseType,withCredentials:!0,body:this.getPostBody(o,r)}).pipe(Se(s=>this.successHandler(s)),Ui(s=>this.errorHandler(s,r)))}getRequestOptions(e){const i={};return i.headers=new Uo,e.requestType===Wb.Json&&(i.headers=i.headers.append("Content-Type","application/json")),e.csrfToken&&(i.headers=i.headers.append("X-CSRF-Token",e.csrfToken)),i}getPostBody(e,i){if(i.requestType===Wb.Json)return JSON.stringify(e);const o=new FormData;return Object.keys(e).forEach(r=>o.append(r,e[r])),o}successHandler(e){if("string"==typeof e&&"manager token is null"===e)throw new Error(e);return e}errorHandler(e,i){if(!i.ignoreAuth){if(401===e.status){const o=i.vpnKeyForAuth?["vpnlogin",i.vpnKeyForAuth]:["login"];this.ngZone.run(()=>this.router.navigate(o,{replaceUrl:!0}))}if(e.error&&"string"==typeof e.error&&e.error.includes("change password")){const o=i.vpnKeyForAuth?["vpnlogin",i.vpnKeyForAuth]:["login"];this.ngZone.run(()=>this.router.navigate(o,{replaceUrl:!0}))}}return mr(Qe(e))}static{this.\u0275fac=function(i){return new(i||t)(ce(ba),ce(vt),ce(_e))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const Gue=["determinateSpinner"];function que(t,n){if(1&t&&(rl(),h(0,"svg",11),B(1,"circle",12),u()),2&t){const e=v();$e("viewBox",e._viewBox()),d(),Md("stroke-dasharray",e._strokeCircumference(),"px")("stroke-dashoffset",e._strokeCircumference()/2,"px")("stroke-width",e._circleStrokeWidth(),"%"),$e("r",e._circleRadius())}}const Kue=new Z("mat-progress-spinner-default-options",{providedIn:"root",factory:()=>({diameter:c5})}),c5=100;let so=(()=>{class t{_elementRef=D(Re);_noopAnimations;get color(){return this._color||this._defaultColor}set color(e){this._color=e}_color;_defaultColor="primary";_determinateCircle;constructor(){const e=D(Kue),i=b4(),o=this._elementRef.nativeElement;this._noopAnimations="di-disabled"===i&&!!e&&!e._forceAnimations,this.mode="mat-spinner"===o.nodeName.toLowerCase()?"indeterminate":"determinate",!this._noopAnimations&&"reduced-motion"===i&&o.classList.add("mat-progress-spinner-reduced-motion"),e&&(e.color&&(this.color=this._defaultColor=e.color),e.diameter&&(this.diameter=e.diameter),e.strokeWidth&&(this.strokeWidth=e.strokeWidth))}mode;get value(){return"determinate"===this.mode?this._value:0}set value(e){this._value=Math.max(0,Math.min(100,e||0))}_value=0;get diameter(){return this._diameter}set diameter(e){this._diameter=e||0}_diameter=c5;get strokeWidth(){return this._strokeWidth??this.diameter/10}set strokeWidth(e){this._strokeWidth=e||0}_strokeWidth;_circleRadius(){return(this.diameter-10)/2}_viewBox(){const e=2*this._circleRadius()+this.strokeWidth;return`0 0 ${e} ${e}`}_strokeCircumference(){return 2*Math.PI*this._circleRadius()}_strokeDashOffset(){return"determinate"===this.mode?this._strokeCircumference()*(100-this._value)/100:null}_circleStrokeWidth(){return this.strokeWidth/this.diameter*100}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-progress-spinner"],["mat-spinner"]],viewQuery:function(i,o){if(1&i&&ot(Gue,5),2&i){let r;he(r=fe())&&(o._determinateCircle=r.first)}},hostAttrs:["role","progressbar","tabindex","-1",1,"mat-mdc-progress-spinner","mdc-circular-progress"],hostVars:18,hostBindings:function(i,o){2&i&&($e("aria-valuemin",0)("aria-valuemax",100)("aria-valuenow","determinate"===o.mode?o.value:null)("mode",o.mode),Ze("mat-"+o.color),Md("width",o.diameter,"px")("height",o.diameter,"px")("--mat-progress-spinner-size",o.diameter+"px")("--mat-progress-spinner-active-indicator-width",o.diameter+"px"),Ie("_mat-animation-noopable",o._noopAnimations)("mdc-circular-progress--indeterminate","indeterminate"===o.mode))},inputs:{color:"color",mode:"mode",value:[2,"value","value",hr],diameter:[2,"diameter","diameter",hr],strokeWidth:[2,"strokeWidth","strokeWidth",hr]},exportAs:["matProgressSpinner"],decls:14,vars:11,consts:[["circle",""],["determinateSpinner",""],["aria-hidden","true",1,"mdc-circular-progress__determinate-container"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__determinate-circle-graphic"],["cx","50%","cy","50%",1,"mdc-circular-progress__determinate-circle"],["aria-hidden","true",1,"mdc-circular-progress__indeterminate-container"],[1,"mdc-circular-progress__spinner-layer"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-left"],[3,"ngTemplateOutlet"],[1,"mdc-circular-progress__gap-patch"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-right"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__indeterminate-circle-graphic"],["cx","50%","cy","50%"]],template:function(i,o){if(1&i&&(it(0,que,2,8,"ng-template",null,0,Rl),h(2,"div",2,1),rl(),h(4,"svg",3),B(5,"circle",4),u()(),Gy(),h(6,"div",5)(7,"div",6)(8,"div",7),dr(9,8),u(),h(10,"div",9),dr(11,8),u(),h(12,"div",10),dr(13,8),u()()()),2&i){const r=Hn(1);d(4),$e("viewBox",o._viewBox()),d(),Md("stroke-dasharray",o._strokeCircumference(),"px")("stroke-dashoffset",o._strokeDashOffset(),"px")("stroke-width",o._circleStrokeWidth(),"%"),$e("r",o._circleRadius()),d(4),C("ngTemplateOutlet",r),d(2),C("ngTemplateOutlet",r),d(2),C("ngTemplateOutlet",r)}},dependencies:[Ld],styles:[".mat-mdc-progress-spinner{--mat-progress-spinner-animation-multiplier: 1;display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity 250ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-progress-spinner circle{stroke-width:var(--mat-progress-spinner-active-indicator-width, 4px)}.mat-mdc-progress-spinner._mat-animation-noopable,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__determinate-circle{transition:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__spinner-layer,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container{animation:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container circle{stroke-dasharray:0 !important}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle{stroke:currentColor;stroke:CanvasText}}.mat-progress-spinner-reduced-motion{--mat-progress-spinner-animation-multiplier: 1.25}.mdc-circular-progress__determinate-container,.mdc-circular-progress__indeterminate-circle-graphic,.mdc-circular-progress__indeterminate-container,.mdc-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}.mdc-circular-progress__determinate-container{transform:rotate(-90deg)}.mdc-circular-progress--indeterminate .mdc-circular-progress__determinate-container{opacity:0}.mdc-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{opacity:1;animation:mdc-circular-progress-container-rotate calc(1568.2352941176ms*var(--mat-progress-spinner-animation-multiplier)) linear infinite}.mdc-circular-progress__determinate-circle-graphic,.mdc-circular-progress__indeterminate-circle-graphic{fill:rgba(0,0,0,0)}.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--mat-progress-spinner-active-indicator-color, var(--mat-sys-primary))}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}.mdc-circular-progress__determinate-circle{transition:stroke-dashoffset 500ms cubic-bezier(0, 0, 0.2, 1)}.mdc-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}.mdc-circular-progress__gap-patch .mdc-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.mdc-circular-progress__circle-clipper .mdc-circular-progress__indeterminate-circle-graphic{width:200%}.mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{left:-100%}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-left .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-left-spin calc(1333ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-right-spin calc(1333ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.mdc-circular-progress--indeterminate .mdc-circular-progress__spinner-layer{animation:mdc-circular-progress-spinner-layer-rotate calc(5332ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}@keyframes mdc-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes mdc-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}@keyframes mdc-circular-progress-left-spin{from{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes mdc-circular-progress-right-spin{from{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}\n"],encapsulation:2,changeDetection:0})}return t})(),Xue=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ii]})}return t})();const Zue=t=>({"white-theme":t});let Yr=(()=>{class t{constructor(){this.showWhite=!0}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=re({type:t,selectors:[["app-loading-indicator"]],inputs:{showWhite:"showWhite"},standalone:!1,decls:2,vars:4,consts:[[1,"container",3,"ngClass"],[3,"diameter"]],template:function(i,o){1&i&&(h(0,"div",0),B(1,"mat-spinner",1),u()),2&i&&(C("ngClass",se(2,Zue,o.showWhite)),d(),C("diameter",50))},dependencies:[$t,so],styles:["[_nghost-%COMP%]{width:100%;height:100%;display:flex}.container[_ngcontent-%COMP%]{width:100%;align-self:center;display:flex;flex-direction:column;align-items:center}.container[_ngcontent-%COMP%] > mat-spinner[_ngcontent-%COMP%]{opacity:.5}"]})}}return t})();const Que=t=>({background:t});function Jue(t,n){1&t&&(h(0,"div",0)(1,"div"),B(2,"img",5),h(3,"div"),p(4),b(5,"translate"),u()()()),2&t&&(d(4),M(y(5,1,"common.window-size-error")))}function ehe(t,n){1&t&&B(0,"router-outlet")}function the(t,n){1&t&&B(0,"app-loading-indicator",3)}function nhe(t,n){1&t&&(h(0,"div",4)(1,"span",6)(2,"mat-icon",7),p(3,"error_outline"),u(),p(4),b(5,"translate"),u()()),2&t&&(d(2),C("inline",!0),d(2),E(" ",y(5,2,"common.data-update-problems")," "))}let Xr=(()=>{class t{constructor(e,i,o,r,s,a){this.storage=e,this.snackbarService=r,this.languageService=s,this.apiService=a,this.inVpnClient=!1,this.inLoginPage=!1,this.hypervisorPkObtained=!1,this.pkErrorShown=!1,this.pkErrorsFound=0,this.showingDataProblemMsg=!1,t.currentInstance=this,o.afterOpened.subscribe(()=>r.closeCurrent()),history.scrollRestoration&&(history.scrollRestoration="manual"),i.events.subscribe(l=>{l instanceof Wr&&(r.closeCurrent(),o.closeAll())}),o.afterAllClosed.subscribe(()=>r.closeCurrentIfTemporaryError()),i.events.subscribe(l=>{if(this.inVpnClient=i.url.includes("/vpn/")||i.url.includes("vpnlogin"),l.url){const c=this.inLoginPage;this.inLoginPage=l.url.includes("login"),c&&!this.inLoginPage&&!this.hypervisorPkObtained&&this.checkHypervisorPk(0)}i.url.length>2&&(document.title=this.inVpnClient?"Skywire VPN":"Skywire Hypervisor")}),this.languageService.loadLanguageSettings(),this.checkHypervisorPk(0)}processLoginDone(){this.inLoginPage=!1,this.hypervisorPkObtained||this.checkHypervisorPk(0)}showDataProblemMsg(){this.showingDataProblemMsg=!0}hideDataProblemMsg(){this.showingDataProblemMsg=!1}checkHypervisorPk(e){this.obtainPkSubscription&&this.obtainPkSubscription.unsubscribe(),this.obtainPkSubscription=ae(1).pipe(li(e),It(()=>this.apiService.get("about"))).subscribe(i=>{i.public_key?(this.finishStartup(i.public_key),this.hypervisorPkObtained=!0):(this.pkErrorShown||(this.snackbarService.showError("start.loading-error",null,!0),this.pkErrorShown=!0),this.checkHypervisorPk(1e3))},i=>{if(this.pkErrorsFound+=1,this.pkErrorsFound>4&&!this.pkErrorShown){const o=Qe(i);this.snackbarService.showError("start.loading-error",null,!0,o),this.pkErrorShown=!0}!this.inLoginPage&&this.pkErrorsFound<30&&this.checkHypervisorPk(Math.min(1e3*this.pkErrorsFound,1e4))})}finishStartup(e){this.storage.initialize(e)}static{this.\u0275fac=function(i){return new(i||t)(O(ti),O(vt),O(Ot),O(ct),O($b),O(zi))}}static{this.\u0275cmp=re({type:t,selectors:[["app-root"]],standalone:!1,decls:6,vars:7,consts:[[1,"size-alert","d-md-none"],[1,"flex-1","content","container-fluid"],[3,"ngClass"],[1,"h-100"],[1,"connection-problem-container"],["src","assets/img/size-alert.png"],[1,"blinking"],[3,"inline"]],template:function(i,o){1&i&&(x(0,Jue,6,3,"div",0),h(1,"div",1),B(2,"div",2),x(3,ehe,1,0,"router-outlet"),x(4,the,1,0,"app-loading-indicator",3),u(),x(5,nhe,6,4,"div",4)),2&i&&(S(o.inVpnClient?0:-1),d(2),C("ngClass",se(5,Que,o.inVpnClient)),d(),S(o.hypervisorPkObtained||o.inLoginPage?3:-1),d(),S(o.hypervisorPkObtained||o.inLoginPage?-1:4),d(),S(o.showingDataProblemMsg?5:-1))},dependencies:[$t,eb,We,Yr,xe],styles:[".size-alert[_ngcontent-%COMP%]{background-color:#000000d9;position:fixed;top:0;left:0;width:100%;height:100%;z-index:10000;display:inline-flex;align-items:center;justify-content:center;text-align:center;color:#fff}.size-alert[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{margin:0 40px;max-width:400px}[_nghost-%COMP%]{display:flex;flex-direction:column;justify-content:space-between;min-height:100%;height:100%}.content[_ngcontent-%COMP%]{padding:20px!important}.background[_ngcontent-%COMP%]{background-image:url(/assets/img/map.png);background-size:cover;background-position:center;opacity:.1;width:100%;height:100%;top:0;left:0;position:fixed}.connection-problem-container[_ngcontent-%COMP%]{position:fixed;bottom:0;right:0;background-color:red;padding:0 10px 5px;font-size:10px;opacity:.75}.connection-problem-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:4px}"]})}}return t})(),mhe=(()=>{class t{router=D(vt);stateManager=D(eS);fragment=yt("");queryParams=yt({});path=yt("");serializer=D(jd);constructor(){this.updateState(),this.router.events?.subscribe(e=>{e instanceof Wr&&this.updateState()})}updateState(){const{fragment:e,root:i,queryParams:o}=this.stateManager.getCurrentUrlTree();this.fragment.set(e),this.queryParams.set(o),this.path.set(this.serializer.serialize(new gr(i)))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Is=(()=>{class t{router;route;tabIndexAttribute;renderer;el;locationStrategy;hrefAttributeValue=D(new Yh("href"),{optional:!0});reactiveHref=function lw(t,n){return yF("function"==typeof t?_F(t,xte,n?.equal):_F(t.source,t.computation,t.equal))}(()=>this.isAnchorElement?this.computeHref(this._urlTree()):this.hrefAttributeValue);get href(){return nt(this.reactiveHref)}set href(e){this.reactiveHref.set(e)}set target(e){this._target.set(e)}get target(){return nt(this._target)}_target=yt(void 0);set queryParams(e){this._queryParams.set(e)}get queryParams(){return nt(this._queryParams)}_queryParams=yt(void 0,{equal:()=>!1});set fragment(e){this._fragment.set(e)}get fragment(){return nt(this._fragment)}_fragment=yt(void 0);set queryParamsHandling(e){this._queryParamsHandling.set(e)}get queryParamsHandling(){return nt(this._queryParamsHandling)}_queryParamsHandling=yt(void 0);set state(e){this._state.set(e)}get state(){return nt(this._state)}_state=yt(void 0,{equal:()=>!1});set info(e){this._info.set(e)}get info(){return nt(this._info)}_info=yt(void 0,{equal:()=>!1});set relativeTo(e){this._relativeTo.set(e)}get relativeTo(){return nt(this._relativeTo)}_relativeTo=yt(void 0);set preserveFragment(e){this._preserveFragment.set(e)}get preserveFragment(){return nt(this._preserveFragment)}_preserveFragment=yt(!1);set skipLocationChange(e){this._skipLocationChange.set(e)}get skipLocationChange(){return nt(this._skipLocationChange)}_skipLocationChange=yt(!1);set replaceUrl(e){this._replaceUrl.set(e)}get replaceUrl(){return nt(this._replaceUrl)}_replaceUrl=yt(!1);isAnchorElement;onChanges=new me;applicationErrorHandler=D(Or);options=D(Gd,{optional:!0});reactiveRouterState=D(mhe);constructor(e,i,o,r,s,a){this.router=e,this.route=i,this.tabIndexAttribute=o,this.renderer=r,this.el=s,this.locationStrategy=a;const l=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement="a"===l||"area"===l||!("object"!=typeof customElements||!customElements.get(l)?.observedAttributes?.includes?.("href"))}setTabIndexIfNotOnNativeEl(e){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.onChanges.next(this)}routerLinkInput=yt(null);set routerLink(e){null==e?(this.routerLinkInput.set(null),this.setTabIndexIfNotOnNativeEl(null)):(ql(e)?this.routerLinkInput.set(e):this.routerLinkInput.set(Array.isArray(e)?e:[e]),this.setTabIndexIfNotOnNativeEl("0"))}onClick(e,i,o,r,s){const a=this._urlTree();if(null===a||this.isAnchorElement&&(0!==e||i||o||r||s||"string"==typeof this.target&&"_self"!=this.target))return!0;const l={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(a,l)?.catch(c=>{this.applicationErrorHandler(c)}),!this.isAnchorElement}ngOnDestroy(){}applyAttributeValue(e,i){const o=this.renderer,r=this.el.nativeElement;null!==i?o.setAttribute(r,e,i):o.removeAttribute(r,e)}_urlTree=Ii(()=>{this.reactiveRouterState.path(),this._preserveFragment()&&this.reactiveRouterState.fragment();const e=o=>"preserve"===o||"merge"===o;(e(this._queryParamsHandling())||e(this.options?.defaultQueryParamsHandling))&&this.reactiveRouterState.queryParams();const i=this.routerLinkInput();return null!==i&&this.router.createUrlTree?ql(i)?i:this.router.createUrlTree(i,{relativeTo:void 0!==this._relativeTo()?this._relativeTo():this.route,queryParams:this._queryParams(),fragment:this._fragment(),queryParamsHandling:this._queryParamsHandling(),preserveFragment:this._preserveFragment()}):null},{equal:(e,i)=>this.computeHref(e)===this.computeHref(i)});get urlTree(){return nt(this._urlTree)}computeHref(e){return null!==e&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e))??"":null}static \u0275fac=function(i){return new(i||t)(O(vt),O(Ai),nh("tabindex"),O(Qn),O(Re),O(Bl))};static \u0275dir=de({type:t,selectors:[["","routerLink",""]],hostVars:2,hostBindings:function(i,o){1&i&&F("click",function(s){return o.onClick(s.button,s.ctrlKey,s.shiftKey,s.altKey,s.metaKey)}),2&i&&$e("href",o.reactiveHref(),lE)("target",o._target())},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",De],skipLocationChange:[2,"skipLocationChange","skipLocationChange",De],replaceUrl:[2,"replaceUrl","replaceUrl",De],routerLink:"routerLink"},features:[_i]})}return t})();class h5{}let bhe=(()=>{class t{router;injector;preloadingStrategy;loader;subscription;constructor(e,i,o,r){this.router=e,this.injector=i,this.preloadingStrategy=o,this.loader=r}setUpPreloading(){this.subscription=this.router.events.pipe(Tn(e=>e instanceof Wr),cf(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription?.unsubscribe()}processRoutes(e,i){const o=[];for(const r of i){r.providers&&!r._injector&&(r._injector=Mg(r.providers,e,""));const s=r._injector??e;r._loadedNgModuleFactory&&!r._loadedInjector&&(r._loadedInjector=r._loadedNgModuleFactory.create(s).injector);const a=r._loadedInjector??s;(r.loadChildren&&!r._loadedRoutes&&void 0===r.canLoad||r.loadComponent&&!r._loadedComponent)&&o.push(this.preloadConfig(s,r)),(r.children||r._loadedRoutes)&&o.push(this.processRoutes(a,r.children??r._loadedRoutes))}return Kn(o).pipe(Vd())}preloadConfig(e,i){return this.preloadingStrategy.preload(i,()=>{if(e.destroyed)return ae(null);let o;o=i.loadChildren&&void 0===i.canLoad?Kn(this.loader.loadChildren(e,i)):ae(null);const r=o.pipe(It(s=>null===s?ae(void 0):(i._loadedRoutes=s.routes,i._loadedInjector=s.injector,i._loadedNgModuleFactory=s.factory,this.processRoutes(s.injector??e,s.routes))));return i.loadComponent&&!i._loadedComponent?Kn([r,this.loader.loadComponent(e,i)]).pipe(Vd()):r})}static \u0275fac=function(i){return new(i||t)(ce(vt),ce(zn),ce(h5),ce(Kx))};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const US=new Z("");let f5=(()=>{class t{options;routerEventsSubscription;scrollEventsSubscription;lastId=0;lastSource=wf;restoredId=0;store={};urlSerializer=D(jd);zone=D(_e);viewportScroller=D(ZM);transitions=D(Qx);constructor(e){this.options=e,this.options.scrollPositionRestoration||="disabled",this.options.anchorScrolling||="disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof Z_?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof Wr?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof Ud&&e.code===Q_.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{if(!(e instanceof t3)||"manual"===e.scrollBehavior)return;const i={behavior:"instant"};e.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0],i):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(e.position,i):e.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0])})}scheduleScrollEvent(e,i){var o=this;const r=nt(this.transitions.currentNavigation)?.extras.scroll;this.zone.runOutsideAngular(Et(function*(){yield new Promise(s=>{setTimeout(s),typeof requestAnimationFrame<"u"&&requestAnimationFrame(s)}),o.zone.run(()=>{o.transitions.events.next(new t3(e,"popstate"===o.lastSource?o.store[o.restoredId]:null,i,r))})}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static \u0275fac=function(i){B1()};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})();function Ko(t,n){return{\u0275kind:t,\u0275providers:n}}function m5(){const t=D(He);return n=>{const e=t.get(lr);if(n!==e.components[0])return;const i=t.get(vt),o=t.get(g5);1===t.get(zS)&&i.initialNavigation(),t.get(_5,null,{optional:!0})?.setUpPreloading(),t.get(US,null,{optional:!0})?.init(),i.resetRootComponentType(e.componentTypes[0]),o.closed||(o.next(),o.complete(),o.unsubscribe())}}const g5=new Z("",{factory:()=>new me}),zS=new Z("",{factory:()=>1}),_5=new Z("");function xhe(t){return Ko(0,[{provide:_5,useExisting:bhe},{provide:h5,useExisting:t}])}function khe(t){return vi("NgRouterViewTransitions"),Ko(9,[{provide:T3,useValue:Qle},{provide:E3,useValue:{skipNextTransition:!!t?.skipInitialTransition,...t}}])}const Dhe=[Fd,{provide:jd,useClass:bf},vt,xf,{provide:Ai,useFactory:function p5(){return D(vt).routerState.root}},Kx,[]];let b5=(()=>{class t{constructor(){}static forRoot(e,i){return{ngModule:t,providers:[Dhe,[],{provide:sb,multi:!0,useValue:e},[],i?.errorHandler?{provide:P3,useValue:i.errorHandler}:[],{provide:Gd,useValue:i||{}},i?.useHash?{provide:Bl,useClass:Nte}:{provide:Bl,useClass:kF},{provide:US,useFactory:()=>{const t=D(ZM),n=D(Gd);return n.scrollOffset&&t.setOffset(n.scrollOffset),new f5(n)}},i?.preloadingStrategy?xhe(i.preloadingStrategy).\u0275providers:[],i?.initialNavigation?Phe(i):[],i?.bindToComponentInputs?Ko(8,[c3,{provide:tb,useExisting:c3}]).\u0275providers:[],i?.enableViewTransitions?khe().\u0275providers:[],[{provide:v5,useFactory:m5},{provide:nO,multi:!0,useExisting:v5}]]}}static forChild(e){return{ngModule:t,providers:[{provide:sb,multi:!0,useValue:e}]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function Phe(t){return["disabled"===t.initialNavigation?Ko(3,[eO(()=>{D(vt).setUpLocationChangeListener()}),{provide:zS,useValue:2}]).\u0275providers:[],"enabledBlocking"===t.initialNavigation?Ko(2,[{provide:W7,useValue:!0},{provide:zS,useValue:0},eO(()=>{const n=D(He);return n.get(_U,Promise.resolve()).then(()=>new Promise(i=>{const o=n.get(vt),r=n.get(g5);A3(o,()=>{i(!0)}),n.get(Qx).afterPreactivation=()=>(i(!0),r.closed?ae(void 0):r),o.initialNavigation()}))})]).\u0275providers:[]]}const v5=new Z("");let Kf=(()=>{class t{set forceFail(e){this.forceFailInternal=e}constructor(e){this.router=e,this.forceFailInternal=!1}canActivate(e,i){return this.checkIfCanActivate()}canActivateChild(e,i){return this.checkIfCanActivate()}checkIfCanActivate(){return this.forceFailInternal?(this.router.navigate(["login"],{replaceUrl:!0}),ae(!1)):ae(!0)}static{this.\u0275fac=function(i){return new(i||t)(ce(vt))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var ka=function(t){return t[t.AuthDisabled=0]="AuthDisabled",t[t.Logged=1]="Logged",t[t.NotLogged=2]="NotLogged",t}(ka||{});let Yf=(()=>{class t{constructor(e,i,o){this.apiService=e,this.translateService=i,this.authGuardService=o}login(e){return this.apiService.post("login",{username:"admin",password:e},new qo({ignoreAuth:!0})).pipe(ai(i=>{if(!0!==i)throw new Error;this.authGuardService.forceFail=!1}))}checkLogin(){return this.apiService.get("user",new qo({ignoreAuth:!0})).pipe(Se(e=>e.username?ka.Logged:ka.AuthDisabled),Ui(e=>(e=Qe(e)).originalError&&401===e.originalError.status?(this.authGuardService.forceFail=!0,ae(ka.NotLogged)):mr(e)))}logout(){return this.apiService.post("logout",{}).pipe(ai(e=>{if(!0!==e)throw new Error;this.authGuardService.forceFail=!0}))}changePassword(e,i){return this.apiService.post("change-password",{old_password:e,new_password:i},new qo({responseType:qf.Text,ignoreAuth:!0})).pipe(Se(o=>{if("string"==typeof o&&"true"===o.trim())return!0;throw"Please do not change the default password."===o?new Error(this.translateService.instant("settings.password.errors.default-password")):new Error(this.translateService.instant("common.operation-error"))}),Ui(o=>((o=Qe(o)).originalError&&401===o.originalError.status&&(o.translatableErrorMsg="settings.password.errors.bad-old-password"),mr(o))))}initialConfig(e){return this.apiService.post("create-account",{username:"admin",password:e},new qo({responseType:qf.Text,ignoreAuth:!0})).pipe(Se(i=>{if("string"==typeof i&&"true"===i.trim())return!0;throw new Error(i)}),Ui(i=>((i=Qe(i)).originalError&&500===i.originalError.status&&(i.translatableErrorMsg="settings.password.initial-config.error"),mr(i))))}userExists(){return this.apiService.get("user-exists",new qo({ignoreAuth:!0})).pipe(Se(e=>!0===e.exists),Ui(()=>ae(!0)))}static{this.\u0275fac=function(i){return new(i||t)(ce(zi),ce(Go),ce(Kf))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();class Ohe{}class pn{constructor(){this.persistentScrollPosKey="scroll-pos"}static{this.mustCallNgOnInitSuper=Symbol("You must call super.ngOnInit.")}ngOnInit(){let n=this.getLocalValue(this.persistentScrollPosKey);n=n?n.value:"0",window.scrollTo(0,Number(n)),setTimeout(()=>window.scrollTo(0,Number(n)),1)}saveScrollPosition(n){this.saveLocalValue(this.persistentScrollPosKey,window.scrollY+"")}saveLocalValue(n,e){const i=window.history.state;i[n]=e,i[n+"_time"]=(new Date).getTime(),window.history.replaceState(i,"",window.location.pathname+window.location.hash)}getLocalValue(n){if(!window.history.state||void 0===window.history.state[n])return null;const e=new Ohe;return e.value=window.history.state[n],e.date=window.history.state[n+"_time"],e}static{this.\u0275fac=function(e){return new(e||pn)}}static{this.\u0275cmp=re({type:pn,selectors:[["app-page-base"]],hostBindings:function(e,i){1&e&&F("scroll",function(r){return i.saveScrollPosition(r)},XC)},standalone:!1,decls:0,vars:0,template:function(e,i){},encapsulation:2})}}let Ahe=(()=>{class t extends pn{constructor(e,i){super(),this.authService=e,this.router=i}ngOnInit(){return this.verificationSubscription=this.authService.checkLogin().subscribe(e=>{this.router.navigate(e!==ka.NotLogged?["nodes"]:["login"],{replaceUrl:!0})},()=>{this.router.navigate(["nodes"],{replaceUrl:!0})}),super.ngOnInit()}ngOnDestroy(){this.verificationSubscription.unsubscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(Yf),O(vt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-start"]],standalone:!1,features:[be],decls:2,vars:0,consts:[[1,"h-100","w-100"]],template:function(i,o){1&i&&(h(0,"div",0),B(1,"app-loading-indicator"),u())},dependencies:[Yr],encapsulation:2})}}return t})(),y5=(()=>{class t{_renderer;_elementRef;onChange=e=>{};onTouched=()=>{};constructor(e,i){this._renderer=e,this._elementRef=i}setProperty(e,i){this._renderer.setProperty(this._elementRef.nativeElement,e,i)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}static \u0275fac=function(i){return new(i||t)(O(Qn),O(Re))};static \u0275dir=de({type:t})}return t})(),ic=(()=>{class t extends y5{static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,features:[be]})}return t})();const Yo=new Z(""),Fhe={provide:Yo,useExisting:Nt(()=>Gt),multi:!0},Lhe=new Z("");let Gt=(()=>{class t extends y5{_compositionMode;_composing=!1;constructor(e,i,o){super(e,i),this._compositionMode=o,null==this._compositionMode&&(this._compositionMode=!function Nhe(){const t=Xs()?Xs().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}())}writeValue(e){this.setProperty("value",e??"")}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}static \u0275fac=function(i){return new(i||t)(O(Qn),O(Re),O(Lhe,8))};static \u0275dir=de({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(i,o){1&i&&F("input",function(s){return o._handleInput(s.target.value)})("blur",function(){return o.onTouched()})("compositionstart",function(){return o._compositionStart()})("compositionend",function(s){return o._compositionEnd(s.target.value)})},standalone:!1,features:[lt([Fhe]),be]})}return t})();function $S(t){return null==t||0===WS(t)}function WS(t){return null==t?null:Array.isArray(t)||"string"==typeof t?t.length:t instanceof Set?t.size:null}const Ci=new Z(""),Da=new Z(""),Bhe=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class Ne{static min(n){return w5(n)}static max(n){return x5(n)}static required(n){return function S5(t){return $S(t.value)?{required:!0}:null}(n)}static requiredTrue(n){return function k5(t){return!0===t.value?null:{required:!0}}(n)}static email(n){return function D5(t){return $S(t.value)||Bhe.test(t.value)?null:{email:!0}}(n)}static minLength(n){return function M5(t){return n=>{const e=n.value?.length??WS(n.value);return null===e||0===e?null:e{if($S(i.value))return null;const o=i.value;return n.test(o)?null:{pattern:{requiredPattern:e,actualValue:o}}}}(n)}static nullValidator(n){return null}static compose(n){return F5(n)}static composeAsync(n){return N5(n)}}function w5(t){return n=>{if(null==n.value||null==t)return null;const e=parseFloat(n.value);return!isNaN(e)&&e{if(null==n.value||null==t)return null;const e=parseFloat(n.value);return!isNaN(e)&&e>t?{max:{max:t,actual:n.value}}:null}}function T5(t){return n=>{const e=n.value?.length??WS(n.value);return null!==e&&e>t?{maxlength:{requiredLength:t,actualLength:e}}:null}}function Gb(t){return null}function P5(t){return null!=t}function I5(t){return Rh(t)?Kn(t):t}function O5(t){let n={};return t.forEach(e=>{n=null!=e?{...n,...e}:n}),0===Object.keys(n).length?null:n}function A5(t,n){return n.map(e=>e(t))}function R5(t){return t.map(n=>function Vhe(t){return!t.validate}(n)?n:e=>n.validate(e))}function F5(t){if(!t)return null;const n=t.filter(P5);return 0==n.length?null:function(e){return O5(A5(e,n))}}function GS(t){return null!=t?F5(R5(t)):null}function N5(t){if(!t)return null;const n=t.filter(P5);return 0==n.length?null:function(e){return zf(A5(e,n).map(I5)).pipe(Se(O5))}}function qS(t){return null!=t?N5(R5(t)):null}function L5(t,n){return null===t?[n]:Array.isArray(t)?[...t,n]:[t,n]}function B5(t){return t._rawValidators}function V5(t){return t._rawAsyncValidators}function KS(t){return t?Array.isArray(t)?t:[t]:[]}function qb(t,n){return Array.isArray(t)?t.includes(n):t===n}function H5(t,n){const e=KS(n);return KS(t).forEach(o=>{qb(e,o)||e.push(o)}),e}function j5(t,n){return KS(n).filter(e=>!qb(t,e))}class U5{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}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=GS(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=qS(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n=void 0){this.control?.reset(n)}hasError(n,e){return!!this.control&&this.control.hasError(n,e)}getError(n,e){return this.control?this.control.getError(n,e):null}}class $i extends U5{name;get formDirective(){return null}get path(){return null}}class Zr extends U5{_parent=null;name=null;valueAccessor=null}class z5{_cd;constructor(n){this._cd=n}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}}let qt=(()=>{class t extends z5{constructor(e){super(e)}static \u0275fac=function(i){return new(i||t)(O(Zr,2))};static \u0275dir=de({type:t,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(i,o){2&i&&Ie("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)},standalone:!1,features:[be]})}return t})(),wn=(()=>{class t extends z5{constructor(e){super(e)}static \u0275fac=function(i){return new(i||t)(O($i,10))};static \u0275dir=de({type:t,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["","formArray",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(i,o){2&i&&Ie("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)("ng-submitted",o.isSubmitted)},standalone:!1,features:[be]})}return t})();const Xf="VALID",Yb="INVALID",iu="PENDING",Zf="DISABLED";class ou{}class G5 extends ou{value;source;constructor(n,e){super(),this.value=n,this.source=e}}class ZS extends ou{pristine;source;constructor(n,e){super(),this.pristine=n,this.source=e}}class QS extends ou{touched;source;constructor(n,e){super(),this.touched=n,this.source=e}}class Xb extends ou{status;source;constructor(n,e){super(),this.status=n,this.source=e}}class q5 extends ou{source;constructor(n){super(),this.source=n}}class JS extends ou{source;constructor(n){super(),this.source=n}}function ek(t){return(Zb(t)?t.validators:t)||null}function tk(t,n){return(Zb(n)?n.asyncValidators:t)||null}function Zb(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}function K5(t,n,e){const i=t.controls;if(!(n?Object.keys(i):i).length)throw new X(1e3,"");if(!i[e])throw new X(1001,"")}function Y5(t,n,e){t._forEachChild((i,o)=>{if(void 0===e[o])throw new X(1002,"")})}class Qb{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(n,e){this._assignValidators(n),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(n){this._rawValidators=this._composedValidatorFn=n}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(n){this._rawAsyncValidators=this._composedAsyncValidatorFn=n}get parent(){return this._parent}get status(){return nt(this.statusReactive)}set status(n){nt(()=>this.statusReactive.set(n))}_status=Ii(()=>this.statusReactive());statusReactive=yt(void 0);get valid(){return this.status===Xf}get invalid(){return this.status===Yb}get pending(){return this.status==iu}get disabled(){return this.status===Zf}get enabled(){return this.status!==Zf}errors;get pristine(){return nt(this.pristineReactive)}set pristine(n){nt(()=>this.pristineReactive.set(n))}_pristine=Ii(()=>this.pristineReactive());pristineReactive=yt(!0);get dirty(){return!this.pristine}get touched(){return nt(this.touchedReactive)}set touched(n){nt(()=>this.touchedReactive.set(n))}_touched=Ii(()=>this.touchedReactive());touchedReactive=yt(!1);get untouched(){return!this.touched}_events=new me;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(n){this._assignValidators(n)}setAsyncValidators(n){this._assignAsyncValidators(n)}addValidators(n){this.setValidators(H5(n,this._rawValidators))}addAsyncValidators(n){this.setAsyncValidators(H5(n,this._rawAsyncValidators))}removeValidators(n){this.setValidators(j5(n,this._rawValidators))}removeAsyncValidators(n){this.setAsyncValidators(j5(n,this._rawAsyncValidators))}hasValidator(n){return qb(this._rawValidators,n)}hasAsyncValidator(n){return qb(this._rawAsyncValidators,n)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(n={}){const e=!1===this.touched;this.touched=!0;const i=n.sourceControl??this;n.onlySelf||this._parent?.markAsTouched({...n,sourceControl:i}),e&&!1!==n.emitEvent&&this._events.next(new QS(!0,i))}markAllAsDirty(n={}){this.markAsDirty({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsDirty(n))}markAllAsTouched(n={}){this.markAsTouched({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsTouched(n))}markAsUntouched(n={}){const e=!0===this.touched;this.touched=!1,this._pendingTouched=!1;const i=n.sourceControl??this;this._forEachChild(o=>{o.markAsUntouched({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:i})}),n.onlySelf||this._parent?._updateTouched(n,i),e&&!1!==n.emitEvent&&this._events.next(new QS(!1,i))}markAsDirty(n={}){const e=!0===this.pristine;this.pristine=!1;const i=n.sourceControl??this;n.onlySelf||this._parent?.markAsDirty({...n,sourceControl:i}),e&&!1!==n.emitEvent&&this._events.next(new ZS(!1,i))}markAsPristine(n={}){const e=!1===this.pristine;this.pristine=!0,this._pendingDirty=!1;const i=n.sourceControl??this;this._forEachChild(o=>{o.markAsPristine({onlySelf:!0,emitEvent:n.emitEvent})}),n.onlySelf||this._parent?._updatePristine(n,i),e&&!1!==n.emitEvent&&this._events.next(new ZS(!0,i))}markAsPending(n={}){this.status=iu;const e=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new Xb(this.status,e)),this.statusChanges.emit(this.status)),n.onlySelf||this._parent?.markAsPending({...n,sourceControl:e})}disable(n={}){const e=this._parentMarkedDirty(n.onlySelf);this.status=Zf,this.errors=null,this._forEachChild(o=>{o.disable({...n,onlySelf:!0})}),this._updateValue();const i=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new G5(this.value,i)),this._events.next(new Xb(this.status,i)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...n,skipPristineCheck:e},this),this._onDisabledChange.forEach(o=>o(!0))}enable(n={}){const e=this._parentMarkedDirty(n.onlySelf);this.status=Xf,this._forEachChild(i=>{i.enable({...n,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent}),this._updateAncestors({...n,skipPristineCheck:e},this),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(n,e){n.onlySelf||(this._parent?.updateValueAndValidity(n),n.skipPristineCheck||this._parent?._updatePristine({},e),this._parent?._updateTouched({},e))}setParent(n){this._parent=n}getRawValue(){return this.value}updateValueAndValidity(n={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){const i=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===Xf||this.status===iu)&&this._runAsyncValidator(i,n.emitEvent)}const e=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new G5(this.value,e)),this._events.next(new Xb(this.status,e)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),n.onlySelf||this._parent?.updateValueAndValidity({...n,sourceControl:e})}_updateTreeValidity(n={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(n)),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Zf:Xf}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(n,e){if(this.asyncValidator){this.status=iu,this._hasOwnPendingAsyncValidator={emitEvent:!1!==e,shouldHaveEmitted:!1!==n};const i=I5(this.asyncValidator(this));this._asyncValidationSubscription=i.subscribe(o=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(o,{emitEvent:e,shouldHaveEmitted:n})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();const n=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,n}return!1}setErrors(n,e={}){this.errors=n,this._updateControlsErrors(!1!==e.emitEvent,this,e.shouldHaveEmitted)}get(n){let e=n;return null==e||(Array.isArray(e)||(e=e.split(".")),0===e.length)?null:e.reduce((i,o)=>i&&i._find(o),this)}getError(n,e){const i=e?this.get(e):this;return i?.errors?i.errors[n]:null}hasError(n,e){return!!this.getError(n,e)}get root(){let n=this;for(;n._parent;)n=n._parent;return n}_updateControlsErrors(n,e,i){this.status=this._calculateStatus(),n&&this.statusChanges.emit(this.status),(n||i)&&this._events.next(new Xb(this.status,e)),this._parent&&this._parent._updateControlsErrors(n,e,i)}_initObservables(){this.valueChanges=new we,this.statusChanges=new we}_calculateStatus(){return this._allControlsDisabled()?Zf:this.errors?Yb:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(iu)?iu:this._anyControlsHaveStatus(Yb)?Yb:Xf}_anyControlsHaveStatus(n){return this._anyControls(e=>e.status===n)}_anyControlsDirty(){return this._anyControls(n=>n.dirty)}_anyControlsTouched(){return this._anyControls(n=>n.touched)}_updatePristine(n,e){const i=!this._anyControlsDirty(),o=this.pristine!==i;this.pristine=i,n.onlySelf||this._parent?._updatePristine(n,e),o&&this._events.next(new ZS(this.pristine,e))}_updateTouched(n={},e){this.touched=this._anyControlsTouched(),this._events.next(new QS(this.touched,e)),n.onlySelf||this._parent?._updateTouched(n,e)}_onDisabledChange=[];_registerOnCollectionChange(n){this._onCollectionChange=n}_setUpdateStrategy(n){Zb(n)&&null!=n.updateOn&&(this._updateOn=n.updateOn)}_parentMarkedDirty(n){return!n&&!!this._parent?.dirty&&!this._parent._anyControlsDirty()}_find(n){return null}_assignValidators(n){this._rawValidators=Array.isArray(n)?n.slice():n,this._composedValidatorFn=function Ghe(t){return Array.isArray(t)?GS(t):t||null}(this._rawValidators)}_assignAsyncValidators(n){this._rawAsyncValidators=Array.isArray(n)?n.slice():n,this._composedAsyncValidatorFn=function qhe(t){return Array.isArray(t)?qS(t):t||null}(this._rawAsyncValidators)}}class ru extends Qb{constructor(n,e,i){super(ek(e),tk(i,e)),this.controls=n,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;registerControl(n,e){return this.controls[n]?this.controls[n]:(this.controls[n]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(n,e,i={}){this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}removeControl(n,e={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(n,e,i={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],e&&this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}contains(n){return this.controls.hasOwnProperty(n)&&this.controls[n].enabled}setValue(n,e={}){Y5(this,0,n),Object.keys(n).forEach(i=>{K5(this,!0,i),this.controls[i].setValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(n,e={}){null!=n&&(Object.keys(n).forEach(i=>{const o=this.controls[i];o&&o.patchValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(n={},e={}){this._forEachChild((i,o)=>{i.reset(n?n[o]:null,{...e,onlySelf:!0})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e),!1!==e?.emitEvent&&this._events.next(new JS(this))}getRawValue(){return this._reduceChildren({},(n,e,i)=>(n[i]=e.getRawValue(),n))}_syncPendingControls(){let n=this._reduceChildren(!1,(e,i)=>!!i._syncPendingControls()||e);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){Object.keys(this.controls).forEach(e=>{const i=this.controls[e];i&&n(i,e)})}_setUpControls(){this._forEachChild(n=>{n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(n){for(const[e,i]of Object.entries(this.controls))if(this.contains(e)&&n(i))return!0;return!1}_reduceValue(){return this._reduceChildren({},(e,i,o)=>((i.enabled||this.disabled)&&(e[o]=i.value),e))}_reduceChildren(n,e){let i=n;return this._forEachChild((o,r)=>{i=e(i,o,r)}),i}_allControlsDisabled(){for(const n of Object.keys(this.controls))if(this.controls[n].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(n){return this.controls.hasOwnProperty(n)?this.controls[n]:null}}const nk=ru;class X5 extends ru{}const oc=new Z("",{factory:()=>Qf}),Qf="always";function Jb(t,n){return[...n.path,t]}function Jf(t,n,e=Qf){ik(t,n),n.valueAccessor.writeValue(t.value),(t.disabled||"always"===e)&&n.valueAccessor.setDisabledState?.(t.disabled),function Yhe(t,n){n.valueAccessor.registerOnChange(e=>{t._pendingValue=e,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&Z5(t,n)})}(t,n),function Zhe(t,n){const e=(i,o)=>{n.valueAccessor.writeValue(i),o&&n.viewToModelUpdate(i)};t.registerOnChange(e),n._registerOnDestroy(()=>{t._unregisterOnChange(e)})}(t,n),function Xhe(t,n){n.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&Z5(t,n),"submit"!==t.updateOn&&t.markAsTouched()})}(t,n),function Khe(t,n){if(n.valueAccessor.setDisabledState){const e=i=>{n.valueAccessor.setDisabledState(i)};t.registerOnDisabledChange(e),n._registerOnDestroy(()=>{t._unregisterOnDisabledChange(e)})}}(t,n)}function ev(t,n,e=!0){const i=()=>{};n?.valueAccessor?.registerOnChange(i),n?.valueAccessor?.registerOnTouched(i),nv(t,n),t&&(n._invokeOnDestroyCallbacks(),t._registerOnCollectionChange(()=>{}))}function tv(t,n){t.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(n)})}function ik(t,n){const e=B5(t);null!==n.validator?t.setValidators(L5(e,n.validator)):"function"==typeof e&&t.setValidators([e]);const i=V5(t);null!==n.asyncValidator?t.setAsyncValidators(L5(i,n.asyncValidator)):"function"==typeof i&&t.setAsyncValidators([i]);const o=()=>t.updateValueAndValidity();tv(n._rawValidators,o),tv(n._rawAsyncValidators,o)}function nv(t,n){let e=!1;if(null!==t){if(null!==n.validator){const o=B5(t);if(Array.isArray(o)&&o.length>0){const r=o.filter(s=>s!==n.validator);r.length!==o.length&&(e=!0,t.setValidators(r))}}if(null!==n.asyncValidator){const o=V5(t);if(Array.isArray(o)&&o.length>0){const r=o.filter(s=>s!==n.asyncValidator);r.length!==o.length&&(e=!0,t.setAsyncValidators(r))}}}const i=()=>{};return tv(n._rawValidators,i),tv(n._rawAsyncValidators,i),e}function Z5(t,n){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),n.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function Q5(t,n){ik(t,n)}function rk(t,n){if(!t.hasOwnProperty("model"))return!1;const e=t.model;return!!e.isFirstChange()||!Object.is(n,e.currentValue)}function J5(t,n){t._syncPendingControls(),n.forEach(e=>{const i=e.control;"submit"===i.updateOn&&i._pendingChange&&(e.viewToModelUpdate(i._pendingValue),i._pendingChange=!1)})}function sk(t,n){if(!n)return null;let e,i,o;return Array.isArray(n),n.forEach(r=>{r.constructor===Gt?e=r:function efe(t){return Object.getPrototypeOf(t.constructor)===ic}(r)?i=r:o=r}),o||i||e||null}const nfe={provide:$i,useExisting:Nt(()=>su)},ep=Promise.resolve();let su=(()=>{class t extends $i{callSetDisabledState;get submitted(){return nt(this.submittedReactive)}_submitted=Ii(()=>this.submittedReactive());submittedReactive=yt(!1);_directives=new Set;form;ngSubmit=new we;options;constructor(e,i,o){super(),this.callSetDisabledState=o,this.form=new ru({},GS(e),qS(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){ep.then(()=>{const i=this._findContainer(e.path);e.control=i.registerControl(e.name,e.control),Jf(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){ep.then(()=>{this._findContainer(e.path)?.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){ep.then(()=>{const i=this._findContainer(e.path),o=new ru({});Q5(o,e),i.registerControl(e.name,o),o.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){ep.then(()=>{this._findContainer(e.path)?.removeControl?.(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,i){ep.then(()=>{this.form.get(e.path).setValue(i)})}setValue(e){this.control.setValue(e)}onSubmit(e){return this.submittedReactive.set(!0),J5(this.form,this._directives),this.ngSubmit.emit(e),this.form._events.next(new q5(this.control)),"dialog"===e?.target?.method}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submittedReactive.set(!1)}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}static \u0275fac=function(i){return new(i||t)(O(Ci,10),O(Da,10),O(oc,8))};static \u0275dir=de({type:t,selectors:[["form",3,"ngNoForm","",3,"formGroup","",3,"formArray",""],["ng-form"],["","ngForm",""]],hostBindings:function(i,o){1&i&&F("submit",function(s){return o.onSubmit(s)})("reset",function(){return o.onReset()})},inputs:{options:[0,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[lt([nfe]),be]})}return t})();function eB(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}function tB(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}const au=class extends Qb{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(n=null,e,i){super(ek(e),tk(i,e)),this._applyFormState(n),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),Zb(e)&&(e.nonNullable||e.initialValueIsDefault)&&(this.defaultValue=tB(n)?n.value:n)}setValue(n,e={}){this.value=this._pendingValue=n,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(i=>i(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(n,e={}){this.setValue(n,e)}reset(n=this.defaultValue,e={}){this._applyFormState(n),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),e.overwriteDefaultValue&&(this.defaultValue=this.value),this._pendingChange=!1,!1!==e?.emitEvent&&this._events.next(new JS(this))}_updateValue(){}_anyControls(n){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(n){this._onChange.push(n)}_unregisterOnChange(n){eB(this._onChange,n)}registerOnDisabledChange(n){this._onDisabledChange.push(n)}_unregisterOnDisabledChange(n){eB(this._onDisabledChange,n)}_forEachChild(n){}_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(n){tB(n)?(this.value=this._pendingValue=n.value,n.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=n}},lu=au;let iv=(()=>{class t extends $i{_parent;ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective?.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return Jb(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,standalone:!1,features:[be]})}return t})();const afe={provide:Zr,useExisting:Nt(()=>cu)},nB=Promise.resolve();let cu=(()=>{class t extends Zr{_changeDetectorRef;callSetDisabledState;control=new au;static ngAcceptInputType_isDisabled;_registered=!1;viewModel;name="";isDisabled;model;options;update=new we;constructor(e,i,o,r,s,a){super(),this._changeDetectorRef=s,this.callSetDisabledState=a,this._parent=e,this._setValidators(i),this._setAsyncValidators(o),this.valueAccessor=sk(0,r)}ngOnChanges(e){if(this._checkForErrors(),!this._registered||"name"in e){if(this._registered&&(this._checkName(),this.formDirective)){const i=e.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in e&&this._updateDisabled(e),rk(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective?.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_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(){Jf(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(e){nB.then(()=>{this.control.setValue(e,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(e){const i=e.isDisabled.currentValue,o=0!==i&&De(i);nB.then(()=>{o&&!this.control.disabled?this.control.disable():!o&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(e){return this._parent?Jb(e,this._parent):[e]}static \u0275fac=function(i){return new(i||t)(O($i,9),O(Ci,10),O(Da,10),O(Yo,10),O(Jt,8),O(oc,8))};static \u0275dir=de({type:t,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],standalone:!1,features:[lt([afe]),be,_i]})}return t})(),xn=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""],standalone:!1})}return t})();const lfe={provide:Yo,useExisting:Nt(()=>rc),multi:!0};let rc=(()=>{class t extends ic{writeValue(e){this.setProperty("value",e??"")}registerOnChange(e){this.onChange=i=>{e(""==i?null:parseFloat(i))}}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(i,o){1&i&&F("input",function(s){return o.onChange(s.target.value)})("blur",function(){return o.onTouched()})},standalone:!1,features:[lt([lfe]),be]})}return t})();class rB extends Qb{constructor(n,e,i){super(ek(e),tk(i,e)),this.controls=n,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;at(n){return this.controls[this._adjustIndex(n)]}push(n,e={}){Array.isArray(n)?n.forEach(i=>{this.controls.push(i),this._registerControl(i)}):(this.controls.push(n),this._registerControl(n)),this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}insert(n,e,i={}){this.controls.splice(n,0,e),this._registerControl(e),this.updateValueAndValidity({emitEvent:i.emitEvent})}removeAt(n,e={}){let i=this._adjustIndex(n);i<0&&(i=0),this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),this.controls.splice(i,1),this.updateValueAndValidity({emitEvent:e.emitEvent})}setControl(n,e,i={}){let o=this._adjustIndex(n);o<0&&(o=0),this.controls[o]&&this.controls[o]._registerOnCollectionChange(()=>{}),this.controls.splice(o,1),e&&(this.controls.splice(o,0,e),this._registerControl(e)),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(n,e={}){Y5(this,0,n),n.forEach((i,o)=>{K5(this,!1,o),this.at(o).setValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(n,e={}){null!=n&&(n.forEach((i,o)=>{this.at(o)&&this.at(o).patchValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(n=[],e={}){this._forEachChild((i,o)=>{i.reset(n[o],{...e,onlySelf:!0})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e),!1!==e?.emitEvent&&this._events.next(new JS(this))}getRawValue(){return this.controls.map(n=>n.getRawValue())}clear(n={}){this.controls.length<1||(this._forEachChild(e=>e._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:n.emitEvent}))}_adjustIndex(n){return n<0?n+this.length:n}_syncPendingControls(){let n=this.controls.reduce((e,i)=>!!i._syncPendingControls()||e,!1);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){this.controls.forEach((e,i)=>{n(e,i)})}_updateValue(){this.value=this.controls.filter(n=>n.enabled||this.disabled).map(n=>n.value)}_anyControls(n){return this.controls.some(e=>e.enabled&&n(e))}_setUpControls(){this._forEachChild(n=>this._registerControl(n))}_allControlsDisabled(){for(const n of this.controls)if(n.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(n){n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)}_find(n){return this.at(n)??null}}let rv=(()=>{class t extends $i{callSetDisabledState;get submitted(){return nt(this._submittedReactive)}set submitted(e){this._submittedReactive.set(e)}_submitted=Ii(()=>this._submittedReactive());_submittedReactive=yt(!1);_oldForm;_onCollectionChange=()=>this._updateDomValue();directives=[];constructor(e,i,o){super(),this.callSetDisabledState=o,this._setValidators(e),this._setAsyncValidators(i)}ngOnChanges(e){this.onChanges(e)}ngOnDestroy(){this.onDestroy()}onChanges(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}onDestroy(){this.form&&(nv(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get path(){return[]}addControl(e){const i=this.form.get(e.path);return Jf(i,e,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),i}getControl(e){return this.form.get(e.path)}removeControl(e){ev(e.control||null,e,!1),function tfe(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}getFormArray(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}updateModel(e,i){this.form.get(e.path).setValue(i)}onReset(){this.resetForm()}resetForm(e=void 0,i={}){this.form.reset(e,i),this._submittedReactive.set(!1)}onSubmit(e){return this.submitted=!0,J5(this.form,this.directives),this.ngSubmit.emit(e),this.form._events.next(new q5(this.control)),"dialog"===e?.target?.method}_updateDomValue(){this.directives.forEach(e=>{const i=e.control,o=this.form.get(e.path);i!==o&&(ev(i||null,e),(t=>t instanceof au)(o)&&(Jf(o,e,this.callSetDisabledState),e.control=o))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){const i=this.form.get(e.path);Q5(i,e),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){const i=this.form?.get(e.path);i&&function Qhe(t,n){return nv(t,n)}(i,e)&&i.updateValueAndValidity({emitEvent:!1})}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm?._registerOnCollectionChange(()=>{})}_updateValidators(){ik(this.form,this),this._oldForm&&nv(this._oldForm,this)}_checkFormPresent(){}static \u0275fac=function(i){return new(i||t)(O(Ci,10),O(Da,10),O(oc,8))};static \u0275dir=de({type:t,features:[be,_i]})}return t})();const ak=new Z(""),pfe={provide:$i,useExisting:Nt(()=>sc)};let sc=(()=>{class t extends iv{name=null;constructor(e,i,o){super(),this._parent=e,this._setValidators(i),this._setAsyncValidators(o)}_checkParentType(){lB(this._parent)}static \u0275fac=function(i){return new(i||t)(O($i,13),O(Ci,10),O(Da,10))};static \u0275dir=de({type:t,selectors:[["","formGroupName",""]],inputs:{name:[0,"formGroupName","name"]},standalone:!1,features:[lt([pfe]),be]})}return t})();const mfe={provide:$i,useExisting:Nt(()=>du)};let du=(()=>{class t extends $i{_parent;name=null;constructor(e,i,o){super(),this._parent=e,this._setValidators(i),this._setAsyncValidators(o)}ngOnInit(){lB(this._parent),this.formDirective.addFormArray(this)}ngOnDestroy(){this.formDirective?.removeFormArray(this)}get control(){return this.formDirective.getFormArray(this)}get formDirective(){return this._parent?this._parent.formDirective:null}get path(){return Jb(null==this.name?this.name:this.name.toString(),this._parent)}static \u0275fac=function(i){return new(i||t)(O($i,13),O(Ci,10),O(Da,10))};static \u0275dir=de({type:t,selectors:[["","formArrayName",""]],inputs:{name:[0,"formArrayName","name"]},standalone:!1,features:[lt([mfe]),be]})}return t})();function lB(t){return!(t instanceof sc||t instanceof rv||t instanceof du)}const gfe={provide:Zr,useExisting:Nt(()=>mn)};let mn=(()=>{class t extends Zr{_ngModelWarningConfig;_added=!1;viewModel;control;name=null;set isDisabled(e){}model;update=new we;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(e,i,o,r,s){super(),this._ngModelWarningConfig=s,this._parent=e,this._setValidators(i),this._setAsyncValidators(o),this.valueAccessor=sk(0,r)}ngOnChanges(e){this._added||this._setUpControl(),rk(e,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective?.removeControl(this)}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}get path(){return Jb(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_setUpControl(){this.control=this.formDirective.addControl(this),this._added=!0}static \u0275fac=function(i){return new(i||t)(O($i,13),O(Ci,10),O(Da,10),O(Yo,10),O(ak,8))};static \u0275dir=de({type:t,selectors:[["","formControlName",""]],inputs:{name:[0,"formControlName","name"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},standalone:!1,features:[lt([gfe]),be,_i]})}return t})();const _fe={provide:$i,useExisting:Nt(()=>on)};let on=(()=>{class t extends rv{form=null;ngSubmit=new we;get control(){return this.form}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","formGroup",""]],hostBindings:function(i,o){1&i&&F("submit",function(s){return o.onSubmit(s)})("reset",function(){return o.onReset()})},inputs:{form:[0,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[lt([_fe]),be]})}return t})();function hB(t){return"number"==typeof t?t:parseFloat(t)}let ac=(()=>{class t{_validator=Gb;_onChange;_enabled;ngOnChanges(e){if(this.inputName in e){const i=this.normalizeInput(e[this.inputName].currentValue);this._enabled=this.enabled(i),this._validator=this._enabled?this.createValidator(i):Gb,this._onChange?.()}}validate(e){return this._validator(e)}registerOnValidatorChange(e){this._onChange=e}enabled(e){return null!=e}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,features:[_i]})}return t})();const Sfe={provide:Ci,useExisting:Nt(()=>sv),multi:!0};let sv=(()=>{class t extends ac{max;inputName="max";normalizeInput=e=>hB(e);createValidator=e=>x5(e);static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["input","type","number","max","","formControlName",""],["input","type","number","max","","formControl",""],["input","type","number","max","","ngModel",""]],hostVars:1,hostBindings:function(i,o){2&i&&$e("max",o._enabled?o.max:null)},inputs:{max:"max"},standalone:!1,features:[lt([Sfe]),be]})}return t})();const kfe={provide:Ci,useExisting:Nt(()=>tp),multi:!0};let tp=(()=>{class t extends ac{min;inputName="min";normalizeInput=e=>hB(e);createValidator=e=>w5(e);static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["input","type","number","min","","formControlName",""],["input","type","number","min","","formControl",""],["input","type","number","min","","ngModel",""]],hostVars:1,hostBindings:function(i,o){2&i&&$e("min",o._enabled?o.min:null)},inputs:{min:"min"},standalone:!1,features:[lt([kfe]),be]})}return t})();const Pfe={provide:Ci,useExisting:Nt(()=>wi),multi:!0};let wi=(()=>{class t extends ac{maxlength;inputName="maxlength";normalizeInput=e=>function uB(t){return"number"==typeof t?t:parseInt(t,10)}(e);createValidator=e=>T5(e);static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(i,o){2&i&&$e("maxlength",o._enabled?o.maxlength:null)},inputs:{maxlength:"maxlength"},standalone:!1,features:[lt([Pfe]),be]})}return t})(),_B=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();function bB(t){return!!t&&(void 0!==t.asyncValidators||void 0!==t.validators||void 0!==t.updateOn)}let vB=(()=>{class t{useNonNullable=!1;get nonNullable(){const e=new t;return e.useNonNullable=!0,e}group(e,i=null){const o=this._reduceControls(e);let r={};return bB(i)?r=i:null!==i&&(r.validators=i.validator,r.asyncValidators=i.asyncValidator),new ru(o,r)}record(e,i=null){const o=this._reduceControls(e);return new X5(o,i)}control(e,i,o){let r={};return this.useNonNullable?(bB(i)?r=i:(r.validators=i,r.asyncValidators=o),new au(e,{...r,nonNullable:!0})):new au(e,i,o)}array(e,i,o){const r=e.map(s=>this._createControl(s));return new rB(r,i,o)}_reduceControls(e){const i={};return Object.keys(e).forEach(o=>{i[o]=this._createControl(e[o])}),i}_createControl(e){return e instanceof au||e instanceof Qb?e:Array.isArray(e)?this.control(e[0],e.length>1?e[1]:null,e.length>2?e[2]:null):this.control(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),di=(()=>{class t extends vB{group(e,i=null){return super.group(e,i)}control(e,i,o){return super.control(e,i,o)}array(e,i,o){return super.array(e,i,o)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Ofe=(()=>{class t{static withConfig(e){return{ngModule:t,providers:[{provide:oc,useValue:e.callSetDisabledState??Qf}]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[_B]})}return t})(),Afe=(()=>{class t{static withConfig(e){return{ngModule:t,providers:[{provide:ak,useValue:e.warnOnNgModelWithFormControl??"always"},{provide:oc,useValue:e.callSetDisabledState??Qf}]}}static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[_B]})}return t})();function uu(t){return null!=t&&"false"!=`${t}`}class Ffe{_box;_destroyed=new me;_resizeSubject=new me;_resizeObserver;_elementObservables=new Map;constructor(n){this._box=n,typeof ResizeObserver<"u"&&(this._resizeObserver=new ResizeObserver(e=>this._resizeSubject.next(e)))}observe(n){return this._elementObservables.has(n)||this._elementObservables.set(n,new Ft(e=>{const i=this._resizeSubject.subscribe(e);return this._resizeObserver?.observe(n,{box:this._box}),()=>{this._resizeObserver?.unobserve(n),i.unsubscribe(),this._elementObservables.delete(n)}}).pipe(Tn(e=>e.some(i=>i.target===n)),NS({bufferSize:1,refCount:!0}),fn(this._destroyed))),this._elementObservables.get(n)}destroy(){this._destroyed.next(),this._destroyed.complete(),this._resizeSubject.complete(),this._elementObservables.clear()}}let yB=(()=>{class t{_cleanupErrorListener;_observers=new Map;_ngZone=D(_e);constructor(){}ngOnDestroy(){for(const[,e]of this._observers)e.destroy();this._observers.clear(),this._cleanupErrorListener?.()}observe(e,i){const o=i?.box||"content-box";return this._observers.has(o)||this._observers.set(o,new Ffe(o)),this._observers.get(o).observe(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Nfe=["notch"],Lfe=["matFormFieldNotchedOutline",""],Bfe=["*"],CB=["iconPrefixContainer"],wB=["textPrefixContainer"],xB=["iconSuffixContainer"],SB=["textSuffixContainer"],Vfe=["textField"],Hfe=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],jfe=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];function Ufe(t,n){1&t&&B(0,"span",21)}function zfe(t,n){if(1&t&&(h(0,"label",20),Pt(1,1),x(2,Ufe,1,0,"span",21),u()),2&t){const e=v(2);C("floating",e._shouldLabelFloat())("monitorResize",e._hasOutline())("id",e._labelId),$e("for",e._control.disableAutomaticLabeling?null:e._control.id),d(2),S(!e.hideRequiredMarker&&e._control.required?2:-1)}}function $fe(t,n){1&t&&x(0,zfe,3,5,"label",20),2&t&&S(v()._hasFloatingLabel()?0:-1)}function Wfe(t,n){1&t&&B(0,"div",7)}function Gfe(t,n){}function qfe(t,n){1&t&&it(0,Gfe,0,0,"ng-template",13),2&t&&(v(2),C("ngTemplateOutlet",Hn(1)))}function Kfe(t,n){if(1&t&&(h(0,"div",9),x(1,qfe,1,1,null,13),u()),2&t){const e=v();C("matFormFieldNotchedOutlineOpen",e._shouldLabelFloat()),d(),S(e._forceDisplayInfixLabel()?-1:1)}}function Yfe(t,n){1&t&&(h(0,"div",10,2),Pt(2,2),u())}function Xfe(t,n){1&t&&(h(0,"div",11,3),Pt(2,3),u())}function Zfe(t,n){}function Qfe(t,n){1&t&&it(0,Zfe,0,0,"ng-template",13),2&t&&(v(),C("ngTemplateOutlet",Hn(1)))}function Jfe(t,n){1&t&&(h(0,"div",14,4),Pt(2,4),u())}function epe(t,n){1&t&&(h(0,"div",15,5),Pt(2,5),u())}function tpe(t,n){1&t&&B(0,"div",16)}function npe(t,n){1&t&&(h(0,"div",18),Pt(1,6),u())}function ipe(t,n){if(1&t&&(h(0,"mat-hint",22),p(1),u()),2&t){const e=v(2);C("id",e._hintLabelId),d(),M(e.hintLabel)}}function ope(t,n){if(1&t&&(h(0,"div",19),x(1,ipe,2,2,"mat-hint",22),Pt(2,7),B(3,"div",23),Pt(4,8),u()),2&t){const e=v();d(),S(e.hintLabel?1:-1)}}let Os=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-label"]]})}return t})();const kB=new Z("MatError");let Ma=(()=>{class t{id=D(ni).getId("mat-mdc-error-");constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-error"],["","matError",""]],hostAttrs:[1,"mat-mdc-form-field-error","mat-mdc-form-field-bottom-align"],hostVars:1,hostBindings:function(i,o){2&i&&ur("id",o.id)},inputs:{id:"id"},features:[lt([{provide:kB,useExisting:t}])]})}return t})(),uk=(()=>{class t{align="start";id=D(ni).getId("mat-mdc-hint-");static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(i,o){2&i&&(ur("id",o.id),$e("align",null),Ie("mat-mdc-form-field-hint-end","end"===o.align))},inputs:{align:"align",id:"id"}})}return t})();const rpe=new Z("MatPrefix"),spe=new Z("MatSuffix"),DB=new Z("FloatingLabelParent");let MB=(()=>{class t{_elementRef=D(Re);get floating(){return this._floating}set floating(e){this._floating=e,this.monitorResize&&this._handleResize()}_floating=!1;get monitorResize(){return this._monitorResize}set monitorResize(e){this._monitorResize=e,this._monitorResize?this._subscribeToResize():this._resizeSubscription.unsubscribe()}_monitorResize=!1;_resizeObserver=D(yB);_ngZone=D(_e);_parent=D(DB);_resizeSubscription=new pt;constructor(){}ngOnDestroy(){this._resizeSubscription.unsubscribe()}getWidth(){return function ape(t){if(null!==t.offsetParent)return t.scrollWidth;const e=t.cloneNode(!0);e.style.setProperty("position","absolute"),e.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(e);const i=e.scrollWidth;return e.remove(),i}(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}_handleResize(){setTimeout(()=>this._parent._handleLabelResized())}_subscribeToResize(){this._resizeSubscription.unsubscribe(),this._ngZone.runOutsideAngular(()=>{this._resizeSubscription=this._resizeObserver.observe(this._elementRef.nativeElement,{box:"border-box"}).subscribe(()=>this._handleResize())})}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(i,o){2&i&&Ie("mdc-floating-label--float-above",o.floating)},inputs:{floating:"floating",monitorResize:"monitorResize"}})}return t})();const TB="mdc-line-ripple--active",av="mdc-line-ripple--deactivating";let EB=(()=>{class t{_elementRef=D(Re);_cleanupTransitionEnd;constructor(){const e=D(_e),i=D(Qn);e.runOutsideAngular(()=>{this._cleanupTransitionEnd=i.listen(this._elementRef.nativeElement,"transitionend",this._handleTransitionEnd)})}activate(){const e=this._elementRef.nativeElement.classList;e.remove(av),e.add(TB)}deactivate(){this._elementRef.nativeElement.classList.add(av)}_handleTransitionEnd=e=>{const i=this._elementRef.nativeElement.classList,o=i.contains(av);"opacity"===e.propertyName&&o&&i.remove(TB,av)};ngOnDestroy(){this._cleanupTransitionEnd()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"]})}return t})(),PB=(()=>{class t{_elementRef=D(Re);_ngZone=D(_e);open=!1;_notch;ngAfterViewInit(){const e=this._elementRef.nativeElement,i=e.querySelector(".mdc-floating-label");i?(e.classList.add("mdc-notched-outline--upgraded"),"function"==typeof requestAnimationFrame&&(i.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>i.style.transitionDuration="")}))):e.classList.add("mdc-notched-outline--no-label")}_setNotchWidth(e){this._notch.nativeElement.style.width=this.open&&e?`calc(${e}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`:""}_setMaxWidth(e){this._notch.nativeElement.style.setProperty("--mat-form-field-notch-max-width",`calc(100% - ${e}px)`)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["div","matFormFieldNotchedOutline",""]],viewQuery:function(i,o){if(1&i&&ot(Nfe,5),2&i){let r;he(r=fe())&&(o._notch=r.first)}},hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(i,o){2&i&&Ie("mdc-notched-outline--notched",o.open)},inputs:{open:[0,"matFormFieldNotchedOutlineOpen","open"]},attrs:Lfe,ngContentSelectors:Bfe,decls:5,vars:0,consts:[["notch",""],[1,"mat-mdc-notch-piece","mdc-notched-outline__leading"],[1,"mat-mdc-notch-piece","mdc-notched-outline__notch"],[1,"mat-mdc-notch-piece","mdc-notched-outline__trailing"]],template:function(i,o){1&i&&(yi(),ca(0,"div",1),vs(1,"div",2,0),Pt(3),Ol(),ca(4,"div",3))},encapsulation:2,changeDetection:0})}return t})(),hk=(()=>{class t{value=null;stateChanges;id;placeholder;ngControl=null;focused=!1;empty=!1;shouldLabelFloat=!1;required=!1;disabled=!1;errorState=!1;controlType;autofilled;userAriaDescribedBy;disableAutomaticLabeling;describedByIds;static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t})}return t})();const fk=new Z("MatFormField"),lpe=new Z("MAT_FORM_FIELD_DEFAULT_OPTIONS");let hu,sn=(()=>{class t{_elementRef=D(Re);_changeDetectorRef=D(Jt);_platform=D(Yn);_idGenerator=D(ni);_ngZone=D(_e);_defaults=D(lpe,{optional:!0});_currentDirection;_textField;_iconPrefixContainer;_textPrefixContainer;_iconSuffixContainer;_textSuffixContainer;_floatingLabel;_notchedOutline;_lineRipple;_iconPrefixContainerSignal=l_("iconPrefixContainer");_textPrefixContainerSignal=l_("textPrefixContainer");_iconSuffixContainerSignal=l_("iconSuffixContainer");_textSuffixContainerSignal=l_("textSuffixContainer");_prefixSuffixContainers=Ii(()=>[this._iconPrefixContainerSignal(),this._textPrefixContainerSignal(),this._iconSuffixContainerSignal(),this._textSuffixContainerSignal()].map(e=>e?.nativeElement).filter(e=>void 0!==e));_formFieldControl;_prefixChildren;_suffixChildren;_errorChildren;_hintChildren;_labelChild=lee(Os);get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(e){this._hideRequiredMarker=uu(e)}_hideRequiredMarker=!1;color="primary";get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||"auto"}set floatLabel(e){e!==this._floatLabel&&(this._floatLabel=e,this._changeDetectorRef.markForCheck())}_floatLabel;get appearance(){return this._appearanceSignal()}set appearance(e){this._appearanceSignal.set(e||this._defaults?.appearance||"fill")}_appearanceSignal=yt("fill");get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||"fixed"}set subscriptSizing(e){this._subscriptSizing=e||this._defaults?.subscriptSizing||"fixed"}_subscriptSizing=null;get hintLabel(){return this._hintLabel}set hintLabel(e){this._hintLabel=e,this._processHints()}_hintLabel="";_hasIconPrefix=!1;_hasTextPrefix=!1;_hasIconSuffix=!1;_hasTextSuffix=!1;_labelId=this._idGenerator.getId("mat-mdc-form-field-label-");_hintLabelId=this._idGenerator.getId("mat-mdc-hint-");_describedByIds;get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(e){this._explicitFormFieldControl=e}_destroyed=new me;_isFocused=null;_explicitFormFieldControl;_previousControl=null;_previousControlValidatorFn=null;_stateChanges;_valueChanges;_describedByChanges;_outlineLabelOffsetResizeObserver=null;_animationsDisabled=ci();constructor(){const e=this._defaults,i=D(br);e&&(e.appearance&&(this.appearance=e.appearance),this._hideRequiredMarker=!!e?.hideRequiredMarker,e.color&&(this.color=e.color)),fm(()=>this._currentDirection=i.valueSignal()),this._syncOutlineLabelOffset()}ngAfterViewInit(){this._updateFocusState(),this._animationsDisabled||this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-form-field-animations-enabled")},300)}),this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeSubscript(),this._initializePrefixAndSuffix()}ngAfterContentChecked(){this._assertFormFieldControl(),this._control!==this._previousControl&&(this._initializeControl(this._previousControl),this._control.ngControl&&this._control.ngControl.control&&(this._previousControlValidatorFn=this._control.ngControl.control.validator),this._previousControl=this._control),this._control.ngControl&&this._control.ngControl.control&&this._control.ngControl.control.validator!==this._previousControlValidatorFn&&this._changeDetectorRef.markForCheck()}ngOnDestroy(){this._outlineLabelOffsetResizeObserver?.disconnect(),this._stateChanges?.unsubscribe(),this._valueChanges?.unsubscribe(),this._describedByChanges?.unsubscribe(),this._destroyed.next(),this._destroyed.complete()}getLabelId=Ii(()=>this._hasFloatingLabel()?this._labelId:null);getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(e){const i=this._control,o="mat-mdc-form-field-type-";e&&this._elementRef.nativeElement.classList.remove(o+e.controlType),i.controlType&&this._elementRef.nativeElement.classList.add(o+i.controlType),this._stateChanges?.unsubscribe(),this._stateChanges=i.stateChanges.subscribe(()=>{this._updateFocusState(),this._changeDetectorRef.markForCheck()}),this._describedByChanges?.unsubscribe(),this._describedByChanges=i.stateChanges.pipe(si([void 0,void 0]),Se(()=>[i.errorState,i.userAriaDescribedBy]),function Rfe(){return Mn((t,n)=>{let e,i=!1;t.subscribe(dn(n,o=>{const r=e;e=o,i&&n.next([r,o]),i=!0}))})}(),Tn(([[r,s],[a,l]])=>r!==a||s!==l)).subscribe(()=>this._syncDescribedByIds()),this._valueChanges?.unsubscribe(),i.ngControl&&i.ngControl.valueChanges&&(this._valueChanges=i.ngControl.valueChanges.pipe(fn(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck()))}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(e=>!e._isText),this._hasTextPrefix=!!this._prefixChildren.find(e=>e._isText),this._hasIconSuffix=!!this._suffixChildren.find(e=>!e._isText),this._hasTextSuffix=!!this._suffixChildren.find(e=>e._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),Cr(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){}_updateFocusState(){const e=this._control.focused;e&&!this._isFocused?(this._isFocused=!0,this._lineRipple?.activate()):!e&&(this._isFocused||null===this._isFocused)&&(this._isFocused=!1,this._lineRipple?.deactivate()),this._elementRef.nativeElement.classList.toggle("mat-focused",e),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",e)}_syncOutlineLabelOffset(){!function cte(t,n){const e=n?.injector??D(He),i=e.get(al),o=e.get(u1),r=e.get(oa,null,{optional:!0});o.impl??=e.get(SE);let s=t;"function"==typeof s&&(s={mixedReadWrite:t});const a=e.get(dm,null,{optional:!0}),l=new lte(o.impl,[s.earlyRead,s.write,s.mixedReadWrite,s.read],a?.view,i,e,r?.snapshot(null));o.impl.register(l)}({earlyRead:()=>{if("outline"!==this._appearanceSignal())return this._outlineLabelOffsetResizeObserver?.disconnect(),null;if(globalThis.ResizeObserver){this._outlineLabelOffsetResizeObserver||=new globalThis.ResizeObserver(()=>{this._writeOutlinedLabelStyles(this._getOutlinedLabelOffset())});for(const e of this._prefixSuffixContainers())this._outlineLabelOffsetResizeObserver.observe(e,{box:"border-box"})}return this._getOutlinedLabelOffset()},write:e=>this._writeOutlinedLabelStyles(e())})}_shouldAlwaysFloat(){return"always"===this.floatLabel}_hasOutline(){return"outline"===this.appearance}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel=Ii(()=>!!this._labelChild());_shouldLabelFloat(){return!!this._hasFloatingLabel()&&(this._control.shouldLabelFloat||this._shouldAlwaysFloat())}_shouldForward(e){const i=this._control?this._control.ngControl:null;return i&&i[e]}_getSubscriptMessageType(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_handleLabelResized(){this._refreshOutlineNotchWidth()}_refreshOutlineNotchWidth(){this._hasOutline()&&this._floatingLabel&&this._shouldLabelFloat()?this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth()):this._notchedOutline?._setNotchWidth(0)}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){}_syncDescribedByIds(){if(this._control){let e=[];if(this._control.userAriaDescribedBy&&"string"==typeof this._control.userAriaDescribedBy&&e.push(...this._control.userAriaDescribedBy.split(" ")),"hint"===this._getSubscriptMessageType()){const r=this._hintChildren?this._hintChildren.find(a=>"start"===a.align):null,s=this._hintChildren?this._hintChildren.find(a=>"end"===a.align):null;r?e.push(r.id):this._hintLabel&&e.push(this._hintLabelId),s&&e.push(s.id)}else this._errorChildren&&e.push(...this._errorChildren.map(r=>r.id));const i=this._control.describedByIds;let o;if(i){const r=this._describedByIds||e;o=e.concat(i.filter(s=>s&&!r.includes(s)))}else o=e;this._control.setDescribedByIds(o),this._describedByIds=e}}_getOutlinedLabelOffset(){if(!this._hasOutline()||!this._floatingLabel)return null;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return["",null];if(!this._isAttachedToDom())return null;const e=this._iconPrefixContainer?.nativeElement,i=this._textPrefixContainer?.nativeElement,o=this._iconSuffixContainer?.nativeElement,r=this._textSuffixContainer?.nativeElement,s=e?.getBoundingClientRect().width??0,a=i?.getBoundingClientRect().width??0,l=o?.getBoundingClientRect().width??0,c=r?.getBoundingClientRect().width??0;return[`var(--mat-mdc-form-field-label-transform, translateY(-50%) translateX(calc(${"rtl"===this._currentDirection?"-1":"1"} * (${s+a}px + var(--mat-mdc-form-field-label-offset-x, 0px)))))`,s+a+l+c]}_writeOutlinedLabelStyles(e){if(null!==e){const[i,o]=e;this._floatingLabel&&(this._floatingLabel.element.style.transform=i),null!==o&&this._notchedOutline?._setMaxWidth(o)}}_isAttachedToDom(){const e=this._elementRef.nativeElement;if(e.getRootNode){const i=e.getRootNode();return i&&i!==e}return document.documentElement.contains(e)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-form-field"]],contentQueries:function(i,o,r){if(1&i&&(A0(r,o._labelChild,Os,5),ys(r,hk,5)(r,rpe,5)(r,spe,5)(r,kB,5)(r,uk,5)),2&i){let s;F0(),he(s=fe())&&(o._formFieldControl=s.first),he(s=fe())&&(o._prefixChildren=s),he(s=fe())&&(o._suffixChildren=s),he(s=fe())&&(o._errorChildren=s),he(s=fe())&&(o._hintChildren=s)}},viewQuery:function(i,o){if(1&i&&(R0(o._iconPrefixContainerSignal,CB,5)(o._textPrefixContainerSignal,wB,5)(o._iconSuffixContainerSignal,xB,5)(o._textSuffixContainerSignal,SB,5),ot(Vfe,5)(CB,5)(wB,5)(xB,5)(SB,5)(MB,5)(PB,5)(EB,5)),2&i){let r;F0(4),he(r=fe())&&(o._textField=r.first),he(r=fe())&&(o._iconPrefixContainer=r.first),he(r=fe())&&(o._textPrefixContainer=r.first),he(r=fe())&&(o._iconSuffixContainer=r.first),he(r=fe())&&(o._textSuffixContainer=r.first),he(r=fe())&&(o._floatingLabel=r.first),he(r=fe())&&(o._notchedOutline=r.first),he(r=fe())&&(o._lineRipple=r.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:38,hostBindings:function(i,o){2&i&&Ie("mat-mdc-form-field-label-always-float",o._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",o._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",o._hasIconSuffix)("mat-form-field-invalid",o._control.errorState)("mat-form-field-disabled",o._control.disabled)("mat-form-field-autofilled",o._control.autofilled)("mat-form-field-appearance-fill","fill"==o.appearance)("mat-form-field-appearance-outline","outline"==o.appearance)("mat-form-field-hide-placeholder",o._hasFloatingLabel()&&!o._shouldLabelFloat())("mat-primary","accent"!==o.color&&"warn"!==o.color)("mat-accent","accent"===o.color)("mat-warn","warn"===o.color)("ng-untouched",o._shouldForward("untouched"))("ng-touched",o._shouldForward("touched"))("ng-pristine",o._shouldForward("pristine"))("ng-dirty",o._shouldForward("dirty"))("ng-valid",o._shouldForward("valid"))("ng-invalid",o._shouldForward("invalid"))("ng-pending",o._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],features:[lt([{provide:fk,useExisting:t},{provide:DB,useExisting:t}])],ngContentSelectors:jfe,decls:18,vars:21,consts:[["labelTemplate",""],["textField",""],["iconPrefixContainer",""],["textPrefixContainer",""],["textSuffixContainer",""],["iconSuffixContainer",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],[1,"mat-mdc-form-field-focus-overlay"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen"],[1,"mat-mdc-form-field-icon-prefix"],[1,"mat-mdc-form-field-text-prefix"],[1,"mat-mdc-form-field-infix"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],["aria-atomic","true","aria-live","polite",1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align"],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],["matFormFieldFloatingLabel","",3,"floating","monitorResize","id"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[3,"id"],[1,"mat-mdc-form-field-hint-spacer"]],template:function(i,o){if(1&i&&(yi(Hfe),it(0,$fe,1,1,"ng-template",null,0,Rl),h(2,"div",6,1),F("click",function(s){return o._control.onContainerClick(s)}),x(4,Wfe,1,0,"div",7),h(5,"div",8),x(6,Kfe,2,2,"div",9),x(7,Yfe,3,0,"div",10),x(8,Xfe,3,0,"div",11),h(9,"div",12),x(10,Qfe,1,1,null,13),Pt(11),u(),x(12,Jfe,3,0,"div",14),x(13,epe,3,0,"div",15),u(),x(14,tpe,1,0,"div",16),u(),h(15,"div",17),x(16,npe,2,0,"div",18)(17,ope,5,1,"div",19),u()),2&i){let r;d(2),Ie("mdc-text-field--filled",!o._hasOutline())("mdc-text-field--outlined",o._hasOutline())("mdc-text-field--no-label",!o._hasFloatingLabel())("mdc-text-field--disabled",o._control.disabled)("mdc-text-field--invalid",o._control.errorState),d(2),S(o._hasOutline()||o._control.disabled?-1:4),d(2),S(o._hasOutline()?6:-1),d(),S(o._hasIconPrefix?7:-1),d(),S(o._hasTextPrefix?8:-1),d(2),S(!o._hasOutline()||o._forceDisplayInfixLabel()?10:-1),d(2),S(o._hasTextSuffix?12:-1),d(),S(o._hasIconSuffix?13:-1),d(),S(o._hasOutline()?-1:14),d(),Ie("mat-mdc-form-field-subscript-dynamic-size","dynamic"===o.subscriptSizing);const s=o._getSubscriptMessageType();d(),S("error"===(r=s)?16:"hint"===r?17:-1)}},dependencies:[MB,PB,Ld,EB,uk],styles:['.mdc-text-field{display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field__input{width:100%;min-width:0;border:none;border-radius:0;background:none;padding:0;-moz-appearance:none;-webkit-appearance:none;height:28px}.mdc-text-field__input::-webkit-calendar-picker-indicator,.mdc-text-field__input::-webkit-search-cancel-button{display:none}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}.mdc-text-field__input::placeholder{opacity:0}.mdc-text-field__input::-moz-placeholder{opacity:0}.mdc-text-field__input::-webkit-input-placeholder{opacity:0}.mdc-text-field__input:-ms-input-placeholder{opacity:0}.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-moz-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-webkit-input-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive:-ms-input-placeholder{opacity:0}.mdc-text-field--outlined .mdc-text-field__input,.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mat-form-field-filled-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mat-form-field-filled-caret-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-filled-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mat-form-field-outlined-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mat-form-field-outlined-caret-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-outlined-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mat-form-field-filled-error-caret-color, var(--mat-sys-error))}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mat-form-field-outlined-error-caret-color, var(--mat-sys-error))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mat-form-field-filled-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mat-form-field-outlined-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}}.mdc-text-field--filled{height:56px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));border-top-right-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mat-form-field-filled-container-color, var(--mat-sys-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mat-form-field-filled-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 4%, transparent))}.mdc-text-field--outlined{height:56px;overflow:visible;padding-right:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)));padding-left:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)) + 4px)}[dir=rtl] .mdc-text-field--outlined{padding-right:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)) + 4px);padding-left:max(16px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)))}.mdc-floating-label{position:absolute;left:0;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label{right:0;left:auto;transform-origin:right top;text-align:right}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:auto}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label{left:auto;right:4px}.mdc-text-field--filled .mdc-floating-label{left:16px;right:auto}[dir=rtl] .mdc-text-field--filled .mdc-floating-label{left:auto;right:16px}.mdc-text-field--disabled .mdc-floating-label{cursor:default}@media(forced-colors: active){.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mat-form-field-filled-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-filled-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mat-form-field-filled-hover-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label{color:var(--mat-form-field-filled-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mat-form-field-filled-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-filled-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mat-form-field-filled-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mat-form-field-filled-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-form-field-filled-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-form-field-filled-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-form-field-filled-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mat-form-field-outlined-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-outlined-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mat-form-field-outlined-hover-label-text-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label{color:var(--mat-form-field-outlined-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mat-form-field-outlined-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mat-form-field-outlined-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mat-form-field-outlined-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mat-form-field-outlined-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-form-field-outlined-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-form-field-outlined-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-form-field-outlined-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-floating-label--float-above{cursor:auto;transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1);font-size:.75rem}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0;content:"*"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline{text-align:right}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mat-mdc-notch-piece{box-sizing:border-box;height:100%;pointer-events:none;border:none;border-top:1px solid;border-bottom:1px solid}.mdc-text-field--focused .mat-mdc-notch-piece{border-width:2px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-outline-color, var(--mat-sys-outline));border-width:var(--mat-form-field-outlined-outline-width, 1px)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-hover-outline-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-focus-outline-color, var(--mat-sys-primary))}.mdc-text-field--outlined.mdc-text-field--disabled .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-notched-outline .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-hover-outline-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mat-form-field-outlined-error-focus-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mat-mdc-notch-piece{border-width:var(--mat-form-field-outlined-focus-outline-width, 2px)}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small)))}[dir=rtl] .mdc-notched-outline__leading{border-left:none;border-right:1px solid;border-bottom-left-radius:0;border-top-left-radius:0;border-top-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__trailing{flex-grow:1;border-left:none;border-right:1px solid;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}[dir=rtl] .mdc-notched-outline__trailing{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:min(var(--mat-form-field-notch-max-width, 100%),calc(100% - max(12px, var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))) * 2))}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{max-width:min(100%,calc(100% - max(12px, var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small))) * 2))}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{z-index:1;border-bottom-width:var(--mat-form-field-filled-active-indicator-height, 1px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-active-indicator-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-hover-active-indicator-color, var(--mat-sys-on-surface))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-disabled-active-indicator-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-error-active-indicator-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mat-form-field-filled-error-hover-active-indicator-color, var(--mat-sys-on-error-container))}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mat-form-field-filled-focus-active-indicator-height, 2px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mat-form-field-filled-focus-active-indicator-color, var(--mat-sys-primary))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mat-form-field-filled-error-focus-active-indicator-color, var(--mat-sys-error))}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-text-field--disabled{pointer-events:none}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all;will-change:auto}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto;will-change:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:var(--mat-form-field-container-height, 56px);padding-top:var(--mat-form-field-filled-with-label-container-padding-top, 24px);padding-bottom:var(--mat-form-field-filled-with-label-container-padding-bottom, 8px)}.mdc-text-field--outlined .mat-mdc-form-field-infix,.mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:var(--mat-form-field-container-vertical-padding, 16px);padding-bottom:var(--mat-form-field-container-vertical-padding, 16px)}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:calc(var(--mat-form-field-container-height, 56px)/2)}.mdc-text-field--filled .mat-mdc-floating-label{display:var(--mat-form-field-filled-label-display, block)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(calc(calc(6.75px + var(--mat-form-field-container-height, 56px) / 2) * -1)) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}@keyframes _mat-form-field-subscript-animation{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px;opacity:1;transform:translateY(0);animation:_mat-form-field-subscript-animation 0ms cubic-bezier(0.55, 0, 0.55, 0.2)}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block;color:var(--mat-form-field-error-text-color, var(--mat-sys-error))}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font, var(--mat-sys-body-small-font));line-height:var(--mat-form-field-subscript-text-line-height, var(--mat-sys-body-small-line-height));font-size:var(--mat-form-field-subscript-text-size, var(--mat-sys-body-small-size));letter-spacing:var(--mat-form-field-subscript-text-tracking, var(--mat-sys-body-small-tracking));font-weight:var(--mat-form-field-subscript-text-weight, var(--mat-sys-body-small-weight))}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none;background-color:var(--mat-form-field-state-layer-color, var(--mat-sys-on-surface))}.mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-focus-state-layer-opacity, 0)}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:var(--mat-form-field-select-option-text-color, var(--mat-sys-neutral10))}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:var(--mat-form-field-select-disabled-option-text-color, color-mix(in srgb, var(--mat-sys-neutral10) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none;color:var(--mat-form-field-enabled-select-arrow-color, var(--mat-sys-on-surface-variant))}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select.mat-focused .mat-mdc-form-field-infix::after{color:var(--mat-form-field-focus-select-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:var(--mat-form-field-disabled-select-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}@media(forced-colors: active){.mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}}@media(forced-colors: active){.mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-form-field-container-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-form-field-container-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-form-field-container-text-tracking, var(--mat-sys-body-large-tracking));font-weight:var(--mat-form-field-container-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size)*var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%;z-index:0}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px;box-sizing:content-box}.mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-leading-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-disabled-leading-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-trailing-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-disabled-trailing-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-invalid .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-trailing-icon-color, var(--mat-sys-error))}.mat-form-field-invalid:not(.mat-focused):not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-hover-trailing-icon-color, var(--mat-sys-on-error-container))}.mat-form-field-invalid.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-focus-trailing-icon-color, var(--mat-sys-error))}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field-infix:has(textarea[cols]){width:auto}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::-moz-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::-webkit-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field.mat-form-field-animations-enabled .mat-mdc-form-field-error-wrapper{animation-duration:300ms}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}\n'],encapsulation:2,changeDetection:0})}return t})();const AB=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function RB(){if(hu)return hu;if("object"!=typeof document||!document)return hu=new Set(AB),hu;let t=document.createElement("input");return hu=new Set(AB.filter(n=>(t.setAttribute("type",n),t.type===n))),hu}let upe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["ng-component"]],hostAttrs:["cdk-text-field-style-loader",""],decls:0,vars:0,template:function(i,o){},styles:["textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0 !important;box-sizing:content-box !important;height:auto !important;overflow:hidden !important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0 !important;box-sizing:content-box !important;height:0 !important}@keyframes cdk-text-field-autofill-start{/*!*/}@keyframes cdk-text-field-autofill-end{/*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}\n"],encapsulation:2,changeDetection:0})}return t})();const hpe={passive:!0};let fpe=(()=>{class t{_platform=D(Yn);_ngZone=D(_e);_renderer=D(Lo).createRenderer(null,null);_styleLoader=D(zo);_monitoredElements=new Map;constructor(){}monitor(e){if(!this._platform.isBrowser)return Oi;this._styleLoader.load(upe);const i=Ps(e),o=this._monitoredElements.get(i);if(o)return o.subject;const r=new me,s="cdk-text-field-autofilled",a=c=>{"cdk-text-field-autofill-start"!==c.animationName||i.classList.contains(s)?"cdk-text-field-autofill-end"===c.animationName&&i.classList.contains(s)&&(i.classList.remove(s),this._ngZone.run(()=>r.next({target:c.target,isAutofilled:!1}))):(i.classList.add(s),this._ngZone.run(()=>r.next({target:c.target,isAutofilled:!0})))},l=this._ngZone.runOutsideAngular(()=>(i.classList.add("cdk-text-field-autofill-monitored"),this._renderer.listen(i,"animationstart",a,hpe)));return this._monitoredElements.set(i,{subject:r,unlisten:l}),r}stopMonitoring(e){const i=Ps(e),o=this._monitoredElements.get(i);o&&(o.unlisten(),o.subject.complete(),i.classList.remove("cdk-text-field-autofill-monitored"),i.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(i))}ngOnDestroy(){this._monitoredElements.forEach((e,i)=>this.stopMonitoring(i))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),ppe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({})}return t})();const mpe=new Z("MAT_INPUT_VALUE_ACCESSOR");let gpe=(()=>{class t{isErrorState(e,i){return!!(e&&e.invalid&&(e.dirty||i&&i.submitted))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac})}return t})(),pk=(()=>{class t{isErrorState(e,i){return!!(e&&e.invalid&&(e.touched||i&&i.submitted))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class FB{_defaultMatcher;ngControl;_parentFormGroup;_parentForm;_stateChanges;errorState=!1;matcher;constructor(n,e,i,o,r){this._defaultMatcher=n,this.ngControl=e,this._parentFormGroup=i,this._parentForm=o,this._stateChanges=r}updateErrorState(){const n=this.errorState,e=this._parentFormGroup||this._parentForm,i=this.matcher||this._defaultMatcher,o=this.ngControl?this.ngControl.control:null,r=i?.isErrorState(o,e)??!1;r!==n&&(this.errorState=r,this._stateChanges.next())}}let lv=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[r4,sn,ii]})}return t})();const _pe=["button","checkbox","file","hidden","image","radio","range","reset","submit"],bpe=new Z("MAT_INPUT_CONFIG");let In=(()=>{class t{_elementRef=D(Re);_platform=D(Yn);ngControl=D(Zr,{optional:!0,self:!0});_autofillMonitor=D(fpe);_ngZone=D(_e);_formField=D(fk,{optional:!0});_renderer=D(Qn);_uid=D(ni).getId("mat-input-");_previousNativeValue;_inputValueAccessor;_signalBasedValueAccessor;_previousPlaceholder=null;_errorStateTracker;_config=D(bpe,{optional:!0});_cleanupIosKeyup;_cleanupWebkitWheel;_isServer=!1;_isNativeSelect=!1;_isTextarea=!1;_isInFormField=!1;focused=!1;stateChanges=new me;controlType="mat-input";autofilled=!1;get disabled(){return this._disabled}set disabled(e){this._disabled=uu(e),this.focused&&(this.focused=!1,this.stateChanges.next())}_disabled=!1;get id(){return this._id}set id(e){this._id=e||this._uid}_id;placeholder;name;get required(){return this._required??this.ngControl?.control?.hasValidator(Ne.required)??!1}set required(e){this._required=uu(e)}_required;get type(){return this._type}set type(e){this._type=e||"text",this._validateType(),!this._isTextarea&&RB().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}_type="text";get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}userAriaDescribedBy;get value(){return this._signalBasedValueAccessor?this._signalBasedValueAccessor.value():this._inputValueAccessor.value}set value(e){e!==this.value&&(this._signalBasedValueAccessor?this._signalBasedValueAccessor.value.set(e):this._inputValueAccessor.value=e,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(e){this._readonly=uu(e)}_readonly=!1;disabledInteractive;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}_neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(e=>RB().has(e));constructor(){const e=D(su,{optional:!0}),i=D(on,{optional:!0}),o=D(pk),r=D(mpe,{optional:!0,self:!0}),s=this._elementRef.nativeElement,a=s.nodeName.toLowerCase();r?El(r.value)?this._signalBasedValueAccessor=r:this._inputValueAccessor=r:this._inputValueAccessor=s,this._previousNativeValue=this.value,this.id=this.id,this._platform.IOS&&this._ngZone.runOutsideAngular(()=>{this._cleanupIosKeyup=this._renderer.listen(s,"keyup",this._iOSKeyupListener)}),this._errorStateTracker=new FB(o,this.ngControl,i,e,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect="select"===a,this._isTextarea="textarea"===a,this._isInFormField=!!this._formField,this.disabledInteractive=this._config?.disabledInteractive||!1,this._isNativeSelect&&(this.controlType=s.multiple?"mat-native-select-multiple":"mat-native-select"),this._signalBasedValueAccessor&&fm(()=>{this._signalBasedValueAccessor.value(),this.stateChanges.next()})}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._cleanupIosKeyup?.(),this._cleanupWebkitWheel?.()}ngDoCheck(){this.ngControl&&(this.updateErrorState(),null!==this.ngControl.disabled&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(e){this._elementRef.nativeElement.focus(e)}updateErrorState(){this._errorStateTracker.updateErrorState()}_focusChanged(e){if(e!==this.focused){if(!this._isNativeSelect&&e&&this.disabled&&this.disabledInteractive){const i=this._elementRef.nativeElement;"number"===i.type?(i.type="text",i.setSelectionRange(0,0),i.type="number"):i.setSelectionRange(0,0)}this.focused=e,this.stateChanges.next()}}_onInput(){}_dirtyCheckNativeValue(){const e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next())}_dirtyCheckPlaceholder(){const e=this._getPlaceholder();if(e!==this._previousPlaceholder){const i=this._elementRef.nativeElement;this._previousPlaceholder=e,e?i.setAttribute("placeholder",e):i.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){_pe.indexOf(this._type)}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return!(this._isNeverEmpty()||this._elementRef.nativeElement.value||this._isBadInput()||this.autofilled)}get shouldLabelFloat(){if(this._isNativeSelect){const e=this._elementRef.nativeElement,i=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&i&&i.label)}return this.focused&&!this.disabled||!this.empty}get describedByIds(){return this._elementRef.nativeElement.getAttribute("aria-describedby")?.split(" ")||[]}setDescribedByIds(e){const i=this._elementRef.nativeElement;e.length?i.setAttribute("aria-describedby",e.join(" ")):i.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){const e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}_iOSKeyupListener=e=>{const i=e.target;!i.value&&0===i.selectionStart&&0===i.selectionEnd&&(i.setSelectionRange(1,1),i.setSelectionRange(0,0))};_getReadonlyAttribute(){return this._isNativeSelect?null:this.readonly||this.disabled&&this.disabledInteractive?"true":null}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:21,hostBindings:function(i,o){1&i&&F("focus",function(){return o._focusChanged(!0)})("blur",function(){return o._focusChanged(!1)})("input",function(){return o._onInput()}),2&i&&(ur("id",o.id)("disabled",o.disabled&&!o.disabledInteractive)("required",o.required),$e("name",o.name||null)("readonly",o._getReadonlyAttribute())("aria-disabled",o.disabled&&o.disabledInteractive?"true":null)("aria-invalid",o.empty&&o.required?null:o.errorState)("aria-required",o.required)("id",o.id),Ie("mat-input-server",o._isServer)("mat-mdc-form-field-textarea-control",o._isInFormField&&o._isTextarea)("mat-mdc-form-field-input-control",o._isInFormField)("mat-mdc-input-disabled-interactive",o.disabledInteractive)("mdc-text-field__input",o._isInFormField)("mat-mdc-native-select-inline",o._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly",disabledInteractive:[2,"disabledInteractive","disabledInteractive",De]},exportAs:["matInput"],features:[lt([{provide:hk,useExisting:t}]),_i]})}return t})(),vpe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[lv,lv,ppe,ii]})}return t})();class NB{_letterKeyStream=new me;_items=[];_selectedItemIndex=-1;_pressedLetters=[];_skipPredicateFn;_selectedItem=new me;selectedItem=this._selectedItem;constructor(n,e){const i="number"==typeof e?.debounceInterval?e.debounceInterval:200;e?.skipPredicate&&(this._skipPredicateFn=e.skipPredicate),this.setItems(n),this._setupKeyHandler(i)}destroy(){this._pressedLetters=[],this._letterKeyStream.complete(),this._selectedItem.complete()}setCurrentSelectedItemIndex(n){this._selectedItemIndex=n}setItems(n){this._items=n}handleKey(n){const e=n.keyCode;n.key&&1===n.key.length?this._letterKeyStream.next(n.key.toLocaleUpperCase()):(e>=65&&e<=90||e>=48&&e<=57)&&this._letterKeyStream.next(String.fromCharCode(e))}isTyping(){return this._pressedLetters.length>0}reset(){this._pressedLetters=[]}_setupKeyHandler(n){this._letterKeyStream.pipe(ai(e=>this._pressedLetters.push(e)),Mb(n),Tn(()=>this._pressedLetters.length>0),Se(()=>this._pressedLetters.join("").toLocaleUpperCase())).subscribe(e=>{for(let i=1;io.trim()===e)&&(i.push(e),t.setAttribute(n,i.join(" ")))}function mk(t,n,e){const i=cv(t,n);e=e.trim();const o=i.filter(r=>r!==e);o.length?t.setAttribute(n,o.join(" ")):t.removeAttribute(n)}function cv(t,n){return t.getAttribute(n)?.match(/\S+/g)??[]}const HB="cdk-describedby-message",dv="cdk-describedby-host";let gk=0,xpe=(()=>{class t{_platform=D(Yn);_document=D(et);_messageRegistry=new Map;_messagesContainer=null;_id=""+gk++;constructor(){D(zo).load(gS),this._id=D(Js)+"-"+gk++}describe(e,i,o){if(!this._canBeDescribed(e,i))return;const r=_k(i,o);"string"!=typeof i?(jB(i,this._id),this._messageRegistry.set(r,{messageElement:i,referenceCount:0})):this._messageRegistry.has(r)||this._createMessageElement(i,o),this._isElementDescribedByMessage(e,r)||this._addMessageReference(e,r)}removeDescription(e,i,o){if(!i||!this._isElementNode(e))return;const r=_k(i,o);if(this._isElementDescribedByMessage(e,r)&&this._removeMessageReference(e,r),"string"==typeof i){const s=this._messageRegistry.get(r);s&&0===s.referenceCount&&this._deleteMessageElement(r)}0===this._messagesContainer?.childNodes.length&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){const e=this._document.querySelectorAll(`[${dv}="${this._id}"]`);for(let i=0;i0!=o.indexOf(HB));e.setAttribute("aria-describedby",i.join(" "))}_addMessageReference(e,i){const o=this._messageRegistry.get(i);VB(e,"aria-describedby",o.messageElement.id),e.setAttribute(dv,this._id),o.referenceCount++}_removeMessageReference(e,i){const o=this._messageRegistry.get(i);o.referenceCount--,mk(e,"aria-describedby",o.messageElement.id),e.removeAttribute(dv)}_isElementDescribedByMessage(e,i){const o=cv(e,"aria-describedby"),r=this._messageRegistry.get(i),s=r&&r.messageElement.id;return!!s&&-1!=o.indexOf(s)}_canBeDescribed(e,i){if(!this._isElementNode(e))return!1;if(i&&"object"==typeof i)return!0;const o=null==i?"":`${i}`.trim(),r=e.getAttribute("aria-label");return!(!o||r&&r.trim()===o)}_isElementNode(e){return e.nodeType===this._document.ELEMENT_NODE}static \u0275fac=function(i){return new(i||t)};static \u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function _k(t,n){return"string"==typeof t?`${n||""}/${t}`:t}function jB(t,n){t.id||(t.id=`${HB}-${n}-${gk++}`)}const kpe=["tooltip"],Mpe=new Z("mat-tooltip-scroll-strategy",{providedIn:"root",factory:()=>{const t=D(He);return()=>Bf(t,{scrollThrottle:20})}}),Tpe=new Z("mat-tooltip-default-options",{providedIn:"root",factory:()=>({showDelay:0,hideDelay:0,touchendHideDelay:1500})}),UB="tooltip-panel",Epe={passive:!0};let Kt=(()=>{class t{_elementRef=D(Re);_ngZone=D(_e);_platform=D(Yn);_ariaDescriber=D(xpe);_focusMonitor=D(ec);_dir=D(br);_injector=D(He);_viewContainerRef=D(Ei);_mediaMatcher=D(bS);_document=D(et);_renderer=D(Qn);_animationsDisabled=ci();_defaultOptions=D(Tpe,{optional:!0});_overlayRef=null;_tooltipInstance=null;_overlayPanelClass;_portal;_position="below";_positionAtOrigin=!1;_disabled=!1;_tooltipClass;_viewInitialized=!1;_pointerExitEventsInitialized=!1;_tooltipComponent=Rpe;_viewportMargin=8;_currentPosition;_cssClassPrefix="mat-mdc";_ariaDescriptionPending=!1;_dirSubscribed=!1;get position(){return this._position}set position(e){e!==this._position&&(this._position=e,this._overlayRef&&(this._updatePosition(this._overlayRef),this._tooltipInstance?.show(0),this._overlayRef.updatePosition()))}get positionAtOrigin(){return this._positionAtOrigin}set positionAtOrigin(e){this._positionAtOrigin=uu(e),this._detach(),this._overlayRef=null}get disabled(){return this._disabled}set disabled(e){const i=uu(e);this._disabled!==i&&(this._disabled=i,i?this.hide(0):this._setupPointerEnterEventsIfNeeded(),this._syncAriaDescription(this.message))}get showDelay(){return this._showDelay}set showDelay(e){this._showDelay=Of(e)}_showDelay;get hideDelay(){return this._hideDelay}set hideDelay(e){this._hideDelay=Of(e),this._tooltipInstance&&(this._tooltipInstance._mouseLeaveHideDelay=this._hideDelay)}_hideDelay;touchGestures="auto";get message(){return this._message}set message(e){const i=this._message;this._message=null!=e?String(e).trim():"",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEnterEventsIfNeeded(),this._updateTooltipMessage()),this._syncAriaDescription(i)}_message="";get tooltipClass(){return this._tooltipClass}set tooltipClass(e){this._tooltipClass=e,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}_eventCleanups=[];_touchstartTimeout=null;_destroyed=new me;_isDestroyed=!1;constructor(){const e=this._defaultOptions;e&&(this._showDelay=e.showDelay,this._hideDelay=e.hideDelay,e.position&&(this.position=e.position),e.positionAtOrigin&&(this.positionAtOrigin=e.positionAtOrigin),e.touchGestures&&(this.touchGestures=e.touchGestures),e.tooltipClass&&(this.tooltipClass=e.tooltipClass)),this._viewportMargin=8}ngAfterViewInit(){this._viewInitialized=!0,this._setupPointerEnterEventsIfNeeded(),this._focusMonitor.monitor(this._elementRef).pipe(fn(this._destroyed)).subscribe(e=>{e?"keyboard"===e&&this._ngZone.run(()=>this.show()):this._ngZone.run(()=>this.hide(0))})}ngOnDestroy(){const e=this._elementRef.nativeElement;this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),this._eventCleanups.forEach(i=>i()),this._eventCleanups.length=0,this._destroyed.next(),this._destroyed.complete(),this._isDestroyed=!0,this._ariaDescriber.removeDescription(e,this.message,"tooltip"),this._focusMonitor.stopMonitoring(e)}show(e=this.showDelay,i){if(this.disabled||!this.message||this._isTooltipVisible())return void this._tooltipInstance?._cancelPendingAnimations();const o=this._createOverlay(i);this._detach(),this._portal=this._portal||new Kd(this._tooltipComponent,this._viewContainerRef);const r=this._tooltipInstance=o.attach(this._portal).instance;r._triggerElement=this._elementRef.nativeElement,r._mouseLeaveHideDelay=this._hideDelay,r.afterHidden().pipe(fn(this._destroyed)).subscribe(()=>this._detach()),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),r.show(e)}hide(e=this.hideDelay){const i=this._tooltipInstance;i&&(i.isVisible()?i.hide(e):(i._cancelPendingAnimations(),this._detach()))}toggle(e){this._isTooltipVisible()?this.hide():this.show(void 0,e)}_isTooltipVisible(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}_createOverlay(e){if(this._overlayRef){const s=this._overlayRef.getConfig().positionStrategy;if((!this.positionAtOrigin||!e)&&s._origin instanceof Re)return this._overlayRef;this._detach()}const i=this._injector.get(mb).getAncestorScrollContainers(this._elementRef),o=`${this._cssClassPrefix}-${UB}`,r=xb(this._injector,this.positionAtOrigin&&e||this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(!1).withViewportMargin(this._viewportMargin).withScrollableContainers(i).withPopoverLocation("global");return r.positionChanges.pipe(fn(this._destroyed)).subscribe(s=>{this._updateCurrentPositionClass(s.connectionPair),this._tooltipInstance&&s.scrollableViewProperties.isOverlayClipped&&this._tooltipInstance.isVisible()&&this._ngZone.run(()=>this.hide(0))}),this._overlayRef=Xd(this._injector,{direction:this._dir,positionStrategy:r,panelClass:this._overlayPanelClass?[...this._overlayPanelClass,o]:o,scrollStrategy:this._injector.get(Mpe)(),disableAnimations:this._animationsDisabled,eventPredicate:this._overlayEventPredicate}),this._updatePosition(this._overlayRef),this._overlayRef.detachments().pipe(fn(this._destroyed)).subscribe(()=>this._detach()),this._overlayRef.outsidePointerEvents().pipe(fn(this._destroyed)).subscribe(()=>this._tooltipInstance?._handleBodyInteraction()),this._overlayRef.keydownEvents().pipe(fn(this._destroyed)).subscribe(s=>{s.preventDefault(),s.stopPropagation(),this._ngZone.run(()=>this.hide(0))}),this._defaultOptions?.disableTooltipInteractivity&&this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`),this._dirSubscribed||(this._dirSubscribed=!0,this._dir.change.pipe(fn(this._destroyed)).subscribe(()=>{this._overlayRef&&this._updatePosition(this._overlayRef)})),this._overlayRef}_detach(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}_updatePosition(e){const i=e.getConfig().positionStrategy,o=this._getOrigin(),r=this._getOverlayPosition();i.withPositions([this._addOffset({...o.main,...r.main}),this._addOffset({...o.fallback,...r.fallback})])}_addOffset(e){const o=!this._dir||"ltr"==this._dir.value;return"top"===e.originY?e.offsetY=-8:"bottom"===e.originY?e.offsetY=8:"start"===e.originX?e.offsetX=o?-8:8:"end"===e.originX&&(e.offsetX=o?8:-8),e}_getOrigin(){const e=!this._dir||"ltr"==this._dir.value,i=this.position;let o;"above"==i||"below"==i?o={originX:"center",originY:"above"==i?"top":"bottom"}:"before"==i||"left"==i&&e||"right"==i&&!e?o={originX:"start",originY:"center"}:("after"==i||"right"==i&&e||"left"==i&&!e)&&(o={originX:"end",originY:"center"});const{x:r,y:s}=this._invertPosition(o.originX,o.originY);return{main:o,fallback:{originX:r,originY:s}}}_getOverlayPosition(){const e=!this._dir||"ltr"==this._dir.value,i=this.position;let o;"above"==i?o={overlayX:"center",overlayY:"bottom"}:"below"==i?o={overlayX:"center",overlayY:"top"}:"before"==i||"left"==i&&e||"right"==i&&!e?o={overlayX:"end",overlayY:"center"}:("after"==i||"right"==i&&e||"left"==i&&!e)&&(o={overlayX:"start",overlayY:"center"});const{x:r,y:s}=this._invertPosition(o.overlayX,o.overlayY);return{main:o,fallback:{overlayX:r,overlayY:s}}}_updateTooltipMessage(){this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),Vi(()=>{this._tooltipInstance&&this._overlayRef.updatePosition()},{injector:this._injector}))}_setTooltipClass(e){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=e instanceof Set?Array.from(e):e,this._tooltipInstance._markForCheck())}_invertPosition(e,i){return"above"===this.position||"below"===this.position?"top"===i?i="bottom":"bottom"===i&&(i="top"):"end"===e?e="start":"start"===e&&(e="end"),{x:e,y:i}}_updateCurrentPositionClass(e){const{overlayY:i,originX:o,originY:r}=e;let s;if(s="center"===i?this._dir&&"rtl"===this._dir.value?"end"===o?"left":"right":"start"===o?"left":"right":"bottom"===i&&"top"===r?"above":"below",s!==this._currentPosition){const a=this._overlayRef;if(a){const l=`${this._cssClassPrefix}-${UB}-`;a.removePanelClass(l+this._currentPosition),a.addPanelClass(l+s)}this._currentPosition=s}}_setupPointerEnterEventsIfNeeded(){this._disabled||!this.message||!this._viewInitialized||this._eventCleanups.length||(this._isTouchPlatform()?"off"!==this.touchGestures&&(this._disableNativeGesturesIfNecessary(),this._addListener("touchstart",e=>{const i=e.targetTouches?.[0],o=i?{x:i.clientX,y:i.clientY}:void 0;this._setupPointerExitEventsIfNeeded(),this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this._touchstartTimeout=setTimeout(()=>{this._touchstartTimeout=null,this.show(void 0,o)},this._defaultOptions?.touchLongPressShowDelay??500)})):this._addListener("mouseenter",e=>{let i;this._setupPointerExitEventsIfNeeded(),void 0!==e.x&&void 0!==e.y&&(i=e),this.show(void 0,i)}))}_setupPointerExitEventsIfNeeded(){if(!this._pointerExitEventsInitialized)if(this._pointerExitEventsInitialized=!0,this._isTouchPlatform()){if("off"!==this.touchGestures){this._disableNativeGesturesIfNecessary();const e=()=>{this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this.hide(this._defaultOptions?.touchendHideDelay)};this._addListener("touchend",e),this._addListener("touchcancel",e)}}else this._addListener("mouseleave",e=>{const i=e.relatedTarget;(!i||!this._overlayRef?.overlayElement.contains(i))&&this.hide()}),this._addListener("wheel",e=>{if(this._isTooltipVisible()){const i=this._document.elementFromPoint(e.clientX,e.clientY),o=this._elementRef.nativeElement;i!==o&&!o.contains(i)&&this.hide()}})}_addListener(e,i){this._eventCleanups.push(this._renderer.listen(this._elementRef.nativeElement,e,i,Epe))}_isTouchPlatform(){return!(!this._platform.IOS&&!this._platform.ANDROID)||!!this._platform.isBrowser&&!!this._defaultOptions?.detectHoverCapability&&this._mediaMatcher.matchMedia("(any-hover: none)").matches}_disableNativeGesturesIfNecessary(){const e=this.touchGestures;if("off"!==e){const i=this._elementRef.nativeElement,o=i.style;("on"===e||"INPUT"!==i.nodeName&&"TEXTAREA"!==i.nodeName)&&(o.userSelect=o.msUserSelect=o.webkitUserSelect=o.MozUserSelect="none"),("on"===e||!i.draggable)&&(o.webkitUserDrag="none"),o.touchAction="none",o.webkitTapHighlightColor="transparent"}}_syncAriaDescription(e){this._ariaDescriptionPending||(this._ariaDescriptionPending=!0,this._ariaDescriber.removeDescription(this._elementRef.nativeElement,e,"tooltip"),this._isDestroyed||Vi({write:()=>{this._ariaDescriptionPending=!1,this.message&&!this.disabled&&this._ariaDescriber.describe(this._elementRef.nativeElement,this.message,"tooltip")}},{injector:this._injector}))}_overlayEventPredicate=e=>"keydown"!==e.type||this._isTooltipVisible()&&27===e.keyCode&&!yr(e);static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matTooltip",""]],hostAttrs:[1,"mat-mdc-tooltip-trigger"],hostVars:2,hostBindings:function(i,o){2&i&&Ie("mat-mdc-tooltip-disabled",o.disabled)},inputs:{position:[0,"matTooltipPosition","position"],positionAtOrigin:[0,"matTooltipPositionAtOrigin","positionAtOrigin"],disabled:[0,"matTooltipDisabled","disabled"],showDelay:[0,"matTooltipShowDelay","showDelay"],hideDelay:[0,"matTooltipHideDelay","hideDelay"],touchGestures:[0,"matTooltipTouchGestures","touchGestures"],message:[0,"matTooltip","message"],tooltipClass:[0,"matTooltipClass","tooltipClass"]},exportAs:["matTooltip"]})}return t})(),Rpe=(()=>{class t{_changeDetectorRef=D(Jt);_elementRef=D(Re);_isMultiline=!1;message;tooltipClass;_showTimeoutId;_hideTimeoutId;_triggerElement;_mouseLeaveHideDelay;_animationsDisabled=ci();_tooltip;_closeOnInteraction=!1;_isVisible=!1;_onHide=new me;_showAnimation="mat-mdc-tooltip-show";_hideAnimation="mat-mdc-tooltip-hide";constructor(){}show(e){null!=this._hideTimeoutId&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=setTimeout(()=>{this._toggleVisibility(!0),this._showTimeoutId=void 0},e)}hide(e){null!=this._showTimeoutId&&clearTimeout(this._showTimeoutId),this._hideTimeoutId=setTimeout(()=>{this._toggleVisibility(!1),this._hideTimeoutId=void 0},e)}afterHidden(){return this._onHide}isVisible(){return this._isVisible}ngOnDestroy(){this._cancelPendingAnimations(),this._onHide.complete(),this._triggerElement=null}_handleBodyInteraction(){this._closeOnInteraction&&this.hide(0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_handleMouseLeave({relatedTarget:e}){(!e||!this._triggerElement.contains(e))&&(this.isVisible()?this.hide(this._mouseLeaveHideDelay):this._finalizeAnimation(!1))}_onShow(){this._isMultiline=this._isTooltipMultiline(),this._markForCheck()}_isTooltipMultiline(){const e=this._elementRef.nativeElement.getBoundingClientRect();return e.height>24&&e.width>=200}_handleAnimationEnd({animationName:e}){(e===this._showAnimation||e===this._hideAnimation)&&this._finalizeAnimation(e===this._showAnimation)}_cancelPendingAnimations(){null!=this._showTimeoutId&&clearTimeout(this._showTimeoutId),null!=this._hideTimeoutId&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=this._hideTimeoutId=void 0}_finalizeAnimation(e){e?this._closeOnInteraction=!0:this.isVisible()||this._onHide.next()}_toggleVisibility(e){const i=this._tooltip.nativeElement,o=this._showAnimation,r=this._hideAnimation;if(i.classList.remove(e?r:o),i.classList.add(e?o:r),this._isVisible!==e&&(this._isVisible=e,this._changeDetectorRef.markForCheck()),e&&!this._animationsDisabled&&"function"==typeof getComputedStyle){const s=getComputedStyle(i);("0s"===s.getPropertyValue("animation-duration")||"none"===s.getPropertyValue("animation-name"))&&(this._animationsDisabled=!0)}e&&this._onShow(),this._animationsDisabled&&(i.classList.add("_mat-animation-noopable"),this._finalizeAnimation(e))}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-tooltip-component"]],viewQuery:function(i,o){if(1&i&&ot(kpe,7),2&i){let r;he(r=fe())&&(o._tooltip=r.first)}},hostAttrs:["aria-hidden","true"],hostBindings:function(i,o){1&i&&F("mouseleave",function(s){return o._handleMouseLeave(s)})},decls:4,vars:5,consts:[["tooltip",""],[1,"mdc-tooltip","mat-mdc-tooltip",3,"animationend"],[1,"mat-mdc-tooltip-surface","mdc-tooltip__surface"]],template:function(i,o){1&i&&(vs(0,"div",1,0),qg("animationend",function(s){return o._handleAnimationEnd(s)}),vs(2,"div",2),p(3),Ol()()),2&i&&(Ze(o.tooltipClass),Ie("mdc-tooltip--multiline",o._isMultiline),d(3),M(o.message))},styles:['.mat-mdc-tooltip{position:relative;transform:scale(0);display:inline-flex}.mat-mdc-tooltip::before{content:"";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-surface{word-break:normal;overflow-wrap:anywhere;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center;will-change:transform,opacity;background-color:var(--mat-tooltip-container-color, var(--mat-sys-inverse-surface));color:var(--mat-tooltip-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-tooltip-container-shape, var(--mat-sys-corner-extra-small));font-family:var(--mat-tooltip-supporting-text-font, var(--mat-sys-body-small-font));font-size:var(--mat-tooltip-supporting-text-size, var(--mat-sys-body-small-size));font-weight:var(--mat-tooltip-supporting-text-weight, var(--mat-sys-body-small-weight));line-height:var(--mat-tooltip-supporting-text-line-height, var(--mat-sys-body-small-line-height));letter-spacing:var(--mat-tooltip-supporting-text-tracking, var(--mat-sys-body-small-tracking))}.mat-mdc-tooltip-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:right}.mat-mdc-tooltip-panel{line-height:normal}.mat-mdc-tooltip-panel.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}\n'],encapsulation:2,changeDetection:0})}return t})();const Fpe=["button1"],Npe=["button2"],Lpe=["*"],Bpe=t=>({"for-dark-background":t});function Vpe(t,n){1&t&&B(0,"mat-spinner",3),2&t&&C("diameter",v().loadingSize)}function Hpe(t,n){1&t&&(h(0,"mat-icon"),p(1,"error_outline"),u())}var lc=function(t){return t[t.Normal=0]="Normal",t[t.Error=1]="Error",t[t.Loading=2]="Loading",t}(lc||{});let ui=(()=>{class t{constructor(){this.forDarkBackground=!1,this.disabled=!1,this.color="",this.loadingSize=20,this.action=new we,this.state=lc.Normal,this.buttonStates=lc}ngOnDestroy(){this.action.complete()}click(){this.disabled||(this.reset(),this.action.emit())}reset(e=!0){this.state=lc.Normal,e&&(this.disabled=!1)}focus(){this.button1&&this.button1.focus(),this.button2&&this.button2.focus()}showEnabled(){this.disabled=!1}showDisabled(){this.disabled=!0}showLoading(e=!0){this.state=lc.Loading,e&&(this.disabled=!0)}showError(e=!0){this.state=lc.Error,e&&(this.disabled=!1)}get isLoading(){return this.state===lc.Loading}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=re({type:t,selectors:[["app-button"]],viewQuery:function(i,o){if(1&i&&ot(Fpe,5)(Npe,5),2&i){let r;he(r=fe())&&(o.button1=r.first),he(r=fe())&&(o.button2=r.first)}},inputs:{forDarkBackground:"forDarkBackground",disabled:"disabled",color:"color",loadingSize:"loadingSize"},outputs:{action:"action"},standalone:!1,ngContentSelectors:Lpe,decls:6,vars:7,consts:[["button2",""],["mat-raised-button","",3,"click","disabled","color","ngClass"],[1,"d-flex"],[3,"diameter"]],template:function(i,o){1&i&&(yi(),h(0,"button",1,0),F("click",function(){return o.click()}),h(2,"div",2),x(3,Vpe,1,1,"mat-spinner",3),x(4,Hpe,2,0,"mat-icon"),Pt(5),u()()),2&i&&(C("disabled",o.disabled)("color",o.color)("ngClass",se(5,Bpe,o.forDarkBackground)),d(3),S(o.state===o.buttonStates.Loading?3:-1),d(),S(o.state===o.buttonStates.Error?4:-1))},dependencies:[$t,Pn,We,so],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], button[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px}button[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}mat-icon[_ngcontent-%COMP%], mat-spinner[_ngcontent-%COMP%]{display:inline-block;margin-right:15px}.for-dark-background[_ngcontent-%COMP%]:disabled{background-color:#000!important;color:#fff!important;opacity:.3}"]})}}return t})();const jpe=["button"],Upe=["firstInput"],zpe=t=>({"rounded-elevated-box":t}),zB=(t,n)=>({"white-form-field":t,"element-disabled":n}),$pe=(t,n)=>({"mt-2 app-button":t,"float-right":n}),Wpe=t=>({"element-disabled":t});function Gpe(t,n){if(1&t&&(h(0,"mat-form-field",6)(1,"div",7)(2,"label",8),p(3),b(4,"translate"),u(),B(5,"input",12),u(),h(6,"mat-error")(7,"span"),p(8),b(9,"translate"),u()()()),2&t){const e=v();C("ngClass",se(7,Wpe,e.working)),d(3),M(y(4,3,"settings.password.old-password")),d(5),M(y(9,5,"settings.password.errors.old-password-required"))}}let $B=(()=>{class t{constructor(e,i,o,r){this.authService=e,this.router=i,this.snackbarService=o,this.dialog=r,this.workingState=new we,this.forInitialConfig=!1}ngOnInit(){this.form=new nk({oldPassword:new lu("",this.forInitialConfig?null:Ne.required),newPassword:new lu("",Ne.compose([Ne.required,Ne.minLength(6),Ne.maxLength(64)])),newPasswordConfirmation:new lu("",[Ne.required,this.validatePasswords.bind(this)])}),this.formSubscription=this.form.controls.newPassword.valueChanges.subscribe(()=>this.form.controls.newPasswordConfirmation.updateValueAndValidity())}ngAfterViewInit(){this.forInitialConfig&&setTimeout(()=>this.firstInput.nativeElement.focus())}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe(),this.formSubscription.unsubscribe()}get working(){return!!this.button&&this.button.isLoading}changePassword(){this.form.valid&&!this.button.disabled&&(this.button.showLoading(),this.workingState.next(!0),this.subscription=this.forInitialConfig?this.authService.initialConfig(this.form.get("newPassword").value).subscribe(()=>{this.dialog.closeAll(),this.snackbarService.showDone("settings.password.initial-config.done"),this.workingState.next(!1)},e=>{this.button.showError(),e=Qe(e),this.snackbarService.showError(e,null,!0),this.workingState.next(!1)}):this.authService.changePassword(this.form.get("oldPassword").value,this.form.get("newPassword").value).subscribe(()=>{this.router.navigate(["nodes"]),this.snackbarService.showDone("settings.password.password-changed"),this.workingState.next(!1)},e=>{this.button.showError(),e=Qe(e),this.snackbarService.showError(e),this.workingState.next(!1)}))}validatePasswords(){return this.form&&this.form.get("newPassword").value!==this.form.get("newPasswordConfirmation").value?{invalid:!0}:null}static{this.\u0275fac=function(i){return new(i||t)(O(Yf),O(vt),O(ct),O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-password"]],viewQuery:function(i,o){if(1&i&&ot(jpe,5)(Upe,5),2&i){let r;he(r=fe())&&(o.button=r.first),he(r=fe())&&(o.firstInput=r.first)}},inputs:{forInitialConfig:"forInitialConfig"},outputs:{workingState:"workingState"},standalone:!1,decls:33,vars:40,consts:[["firstInput",""],["button",""],[3,"ngClass"],[1,"box-internal-container","overflow"],[1,"help-icon",3,"inline","matTooltip"],[3,"formGroup"],[1,"white-form-field",3,"ngClass"],[1,"field-container"],["for","remoteKey",1,"field-label"],["type","password","formControlName","newPassword","maxlength","64","matInput",""],["type","password","formControlName","newPasswordConfirmation","maxlength","64","matInput",""],["color","primary",3,"action","ngClass","disabled","forDarkBackground"],["type","password","formControlName","oldPassword","maxlength","64","matInput",""]],template:function(i,o){1&i&&(h(0,"div",2)(1,"div",3)(2,"div")(3,"mat-icon",4),b(4,"translate"),p(5," help "),u()(),h(6,"form",5),x(7,Gpe,10,9,"mat-form-field",6),h(8,"mat-form-field",2)(9,"div",7)(10,"label",8),p(11),b(12,"translate"),u(),B(13,"input",9,0),u(),h(15,"mat-error")(16,"span"),p(17),b(18,"translate"),u()()(),h(19,"mat-form-field",2)(20,"div",7)(21,"label",8),p(22),b(23,"translate"),u(),B(24,"input",10),u(),h(25,"mat-error")(26,"span"),p(27),b(28,"translate"),u()()(),h(29,"app-button",11,1),F("action",function(){return o.changePassword()}),p(31),b(32,"translate"),u()()()()),2&i&&(C("ngClass",se(29,zpe,!o.forInitialConfig)),d(2),Ze((o.forInitialConfig?"":"white-")+"form-help-icon-container"),d(),C("inline",!0)("matTooltip",y(4,17,o.forInitialConfig?"settings.password.initial-config-help":"settings.password.help")),d(3),C("formGroup",o.form),d(),S(o.forInitialConfig?-1:7),d(),C("ngClass",_t(31,zB,!o.forInitialConfig,o.working)),d(3),M(y(12,19,o.forInitialConfig?"settings.password.initial-config.password":"settings.password.new-password")),d(6),M(y(18,21,"settings.password.errors.new-password-error")),d(2),C("ngClass",_t(34,zB,!o.forInitialConfig,o.working)),d(3),M(y(23,23,o.forInitialConfig?"settings.password.initial-config.repeat-password":"settings.password.repeat-password")),d(5),M(y(28,25,"settings.password.errors.passwords-not-match")),d(2),C("ngClass",_t(37,$pe,!o.forInitialConfig,o.forInitialConfig))("disabled",!o.form.valid)("forDarkBackground",!o.forInitialConfig),d(2),E(" ",y(32,27,o.forInitialConfig?"settings.password.initial-config.set-password":"settings.change-password")," "))},dependencies:[$t,xn,Gt,qt,wn,wi,on,mn,sn,Ma,In,We,Kt,ui,xe],styles:[".help-icon[_ngcontent-%COMP%]{display:inline}mat-form-field[_ngcontent-%COMP%]{margin-right:32px}app-button[_ngcontent-%COMP%]{float:right;margin-right:32px}"]})}}return t})();const qpe=["*"],WB=t=>({"content-margin":t});function Kpe(t,n){1&t&&(h(0,"button",2)(1,"mat-icon"),p(2,"close"),u()())}function Ype(t,n){1&t&&dr(0)}function Xpe(t,n){if(1&t&&(h(0,"mat-dialog-content",4),it(1,Ype,1,0,"ng-container",5),u()),2&t){const e=v(),i=Hn(8);C("ngClass",se(2,WB,e.includeVerticalMargins)),d(),C("ngTemplateOutlet",i)}}function Zpe(t,n){1&t&&dr(0)}function Qpe(t,n){if(1&t&&(h(0,"div",4),it(1,Zpe,1,0,"ng-container",5),u()),2&t){const e=v(),i=Hn(8);C("ngClass",se(2,WB,e.includeVerticalMargins)),d(),C("ngTemplateOutlet",i)}}function Jpe(t,n){1&t&&Pt(0)}let gn=(()=>{class t{set dialog(e){e.disableClose=!0,this.dialogInternal=e}constructor(e){this.matDialog=e,this.includeScrollableArea=!0,this.includeVerticalMargins=!0}onKeyUp(){this.closePopup()}closePopup(){this.disableDismiss||this.matDialog.openDialogs[this.matDialog.openDialogs.length-1].id===this.dialogInternal.id&&this.dialogInternal.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-dialog"]],hostBindings:function(i,o){1&i&&F("keyup.esc",function(){return o.onKeyUp()},XC)},inputs:{headline:"headline",disableDismiss:"disableDismiss",includeScrollableArea:"includeScrollableArea",includeVerticalMargins:"includeVerticalMargins",dialog:"dialog"},standalone:!1,ngContentSelectors:qpe,decls:9,vars:4,consts:[["contentTemplate",""],["mat-dialog-title","",1,"header"],["mat-dialog-close","","mat-icon-button","",1,"grey-button-background"],[1,"header-separator"],[3,"ngClass"],[4,"ngTemplateOutlet"]],template:function(i,o){1&i&&(yi(),h(0,"div",1)(1,"span"),p(2),u(),x(3,Kpe,3,0,"button",2),u(),B(4,"div",3),x(5,Xpe,2,4,"mat-dialog-content",4),x(6,Qpe,2,4,"div",4),it(7,Jpe,1,0,"ng-template",null,0,Rl)),2&i&&(d(2),M(o.headline),d(),S(o.disableDismiss?-1:3),d(2),S(o.includeScrollableArea?5:-1),d(),S(o.includeScrollableArea?-1:6))},dependencies:[$t,Ld,D4,MS,Jd,Wo,We],styles:['.cursor-pointer[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}[_nghost-%COMP%]{color:#202226}.header[_ngcontent-%COMP%]{margin:-24px -24px 0;color:#215f9e;padding:0 14px 0 24px;font-size:1rem;text-transform:uppercase;font-weight:700;display:flex;align-items:center}.header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex-grow:1}@media(max-width:767px){.header[_ngcontent-%COMP%]{padding:0 2px 0 24px}}.header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{line-height:1rem;margin:18px 0}.header[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%]{color:#a6b2b2;width:32px;height:32px;line-height:20px;margin-left:10px;padding:0}@media(max-width:767px){.header[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%]{width:46px;height:46px}}.header-separator[_ngcontent-%COMP%]{height:1px;background-color:#215f9e33;margin-left:-12px;margin-right:-12px}.content-margin[_ngcontent-%COMP%]{padding-top:18px;padding-bottom:24px!important}']})}}return t})(),eme=(()=>{class t{static openDialog(e){const i=new nn;return i.autoFocus=!1,i.width=rt.smallModalWidth,e.open(t,i)}constructor(e){this.dialogRef=e,this.disableDismiss=!1}static{this.\u0275fac=function(i){return new(i||t)(O(Bt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-initial-setup"]],standalone:!1,decls:3,vars:6,consts:[[3,"headline","dialog","disableDismiss"],[3,"workingState","forInitialConfig"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),b(1,"translate"),h(2,"app-password",1),F("workingState",function(s){return o.disableDismiss=s}),u()()),2&i&&(C("headline",y(1,4,"settings.password.initial-config.title"))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),d(2),C("forInitialConfig",!0))},dependencies:[$B,gn,xe],encapsulation:2})}}return t})();var bk=function qB(t){var n,e,i,P,A,o=I.prototype={constructor:I,toString:null,valueOf:null},r=new I(1),s=20,a=4,l=-7,c=21,f=-1e7,m=1e7,g=!1,_=1,w=0,k={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xa0",suffix:""},T="0123456789abcdefghijklmnopqrstuvwxyz";function I(P,A){var L,$,H,G,J,V,N,q,z=this;if(!(z instanceof I))return new I(P,A);if(q=typeof P,null==A){if(W(P))return z.s=P.s,void(!P.c||P.e>m?z.c=z.e=null:P.e=10;J/=10,G++);return void(G>m?z.c=z.e=null:(z.e=G,z.c=[P]))}N=String(P)}else{if("string"==q){if(!tme.test(N=P))return i(z,N)}else{if("bigint"!=q)throw Error(yo+"Invalid argument: "+P);N=String(P)}z.s=45==N.charCodeAt(0)?(N=N.slice(1),-1):1}(G=N.indexOf("."))>-1&&(N=N.replace(".","")),(J=N.search(/e/i))>0?(G<0&&(G=J),G+=+N.slice(J+1),N=N.substring(0,J)):G<0&&(G=N.length)}else{if("string"!=q)throw Error(yo+"String expected: "+P);for(On(A,2,T.length,"Base"),z.s=45===(N=P).charCodeAt(0)?(N=N.slice(1),-1):1,L=T.slice(0,A),G=J=0,V=N.length;JG){G=V;continue}}else if(!H&&(N==N.toUpperCase()&&(N=N.toLowerCase())||N==N.toLowerCase()&&(N=N.toUpperCase()))){H=!0,J=-1,G=0;continue}return i(z,P,A)}(G=(N=e(N,A,10,z.s)).indexOf("."))>-1?N=N.replace(".",""):G=N.length}for(J=0;48===N.charCodeAt(J);J++);for(V=N.length;48===N.charCodeAt(--V););if(N=N.slice(J,++V))if(V-=J,(G=G-J-1)>m)z.c=z.e=null;else if(G=c)?hv(N,J):Ea(N,J,"0");else if(G=(P=ee(new I(P),A,L)).e,V=(N=Sr(P.c)).length,1==$||2==$&&(A<=G||G<=l)){for(;VJ),N=Ea(N,G,"0"),G+1>V){if(--A>0)for(N+=".";A--;N+="0");}else if((A+=G-V)>0)for(G+1==V&&(N+=".");A--;N+="0");return P.s<0&&H?"-"+N:N}function W(P){return P instanceof I||!!P&&!0===P._isBigNumber}function Y(P,A){for(var L,$,H=1,G=new I(P[0]);H=10;H/=10,$++);return(L=$+14*L-1)>m?P.c=P.e=null:L=10;V/=10,H++);if((G=A-H)<0)G+=14,N=Q[q=0],z=wr(N/ue[H-(J=A)-1]%10);else if((q=vk((G+1)/14))>=Q.length){if(!$)break e;for(;Q.length<=q;Q.push(0));N=z=0,H=1,J=(G%=14)-14+1}else{for(N=V=Q[q],H=1;V>=10;V/=10,H++);z=(J=(G%=14)-14+H)<0?0:wr(N/ue[H-J-1]%10)}if($=$||A<0||null!=Q[q+1]||(J<0?N:N%ue[H-J-1]),$=L<4?(z||$)&&(0==L||L==(P.s<0?3:2)):z>5||5==z&&(4==L||$||6==L&&(G>0?J>0?N/ue[H-J]:0:Q[q-1])%10&1||L==(P.s<0?8:7)),A<1||!Q[0])return Q.length=0,$?(Q[0]=ue[(14-(A-=P.e+1)%14)%14],P.e=-A||0):Q[0]=P.e=0,P;if(0==G?(Q.length=q,V=1,q--):(Q.length=q+1,V=ue[14-G],Q[q]=J>0?wr(N/ue[H-J]%ue[J])*V:0),$)for(;;){if(0==q){for(G=1,J=Q[0];J>=10;J/=10,G++);for(J=Q[0]+=V,V=1;J>=10;J/=10,V++);G!=V&&(P.e++,Q[0]==xr&&(Q[0]=1));break}if(Q[q]+=V,Q[q]!=xr)break;Q[q--]=0,V=1}for(G=Q.length;0===Q[--G];Q.pop());}P.e>m?P.c=P.e=null:P.e=c?hv(A,L):Ea(A,L,"0"),P.s<0?"-"+A:A)}return I.clone=qB,I.ROUND_UP=0,I.ROUND_DOWN=1,I.ROUND_CEIL=2,I.ROUND_FLOOR=3,I.ROUND_HALF_UP=4,I.ROUND_HALF_DOWN=5,I.ROUND_HALF_EVEN=6,I.ROUND_HALF_CEIL=7,I.ROUND_HALF_FLOOR=8,I.EUCLID=9,I.config=I.set=function(P){var A,L;if(null!=P){if("object"!=typeof P)throw Error(yo+"Object expected: "+P);if(P.hasOwnProperty(A="DECIMAL_PLACES")&&(On(L=P[A],0,xi,A),s=L),P.hasOwnProperty(A="ROUNDING_MODE")&&(On(L=P[A],0,8,A),a=L),P.hasOwnProperty(A="EXPONENTIAL_AT")&&((L=P[A])&&L.pop?(On(L[0],-xi,0,A),On(L[1],0,xi,A),l=L[0],c=L[1]):(On(L,-xi,xi,A),l=-(c=L<0?-L:L))),P.hasOwnProperty(A="RANGE"))if((L=P[A])&&L.pop)On(L[0],-xi,-1,A),On(L[1],1,xi,A),f=L[0],m=L[1];else{if(On(L,-xi,xi,A),!L)throw Error(yo+A+" cannot be zero: "+L);f=-(m=L<0?-L:L)}if(P.hasOwnProperty(A="CRYPTO")){if((L=P[A])!==!!L)throw Error(yo+A+" not true or false: "+L);if(L){if(!(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes)))throw g=!L,Error(yo+"crypto unavailable");g=L}else g=L}if(P.hasOwnProperty(A="MODULO_MODE")&&(On(L=P[A],0,9,A),_=L),P.hasOwnProperty(A="POW_PRECISION")&&(On(L=P[A],0,xi,A),w=L),P.hasOwnProperty(A="FORMAT")){if("object"!=typeof(L=P[A]))throw Error(yo+A+" not an object: "+L);k=L}if(P.hasOwnProperty(A="ALPHABET")){if("string"!=typeof(L=P[A])||/^.?$|[+\-.\s]|(.).*\1/.test(L))throw Error(yo+A+" invalid: "+L);T=L}}return{DECIMAL_PLACES:s,ROUNDING_MODE:a,EXPONENTIAL_AT:[l,c],RANGE:[f,m],CRYPTO:g,MODULO_MODE:_,POW_PRECISION:w,FORMAT:k,ALPHABET:T}},I.isBigNumber=function(P){if(!W(P))return!1;var A,L,$=P.c,H=P.e,G=P.s;if("[object Array]"!={}.toString.call($))return null===$&&null===H&&(null===G||1===G||-1===G);if(1!==G&&-1!==G||H<-xi||H>xi||H!==wr(H))return!1;if(0===$[0])return 0===H&&1===$.length;if((A=(H+1)%14)<1&&(A+=14),String($[0]).length!==A)return!1;for(A=0;A<$.length;A++)if((L=$[A])<0||L>=xr||L!==wr(L))return!1;return 0!==L},I.maximum=I.max=function(){return Y(arguments,-1)},I.minimum=I.min=function(){return Y(arguments,1)},I.random=(P=9007199254740992,A=Math.random()*P&2097151?function(){return wr(Math.random()*P)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(L){var $,H,G,J,V,N=0,q=[],z=new I(r);if(null==L?L=s:On(L,0,xi),J=vk(L/14),g)if(crypto.getRandomValues){for($=crypto.getRandomValues(new Uint32Array(J*=2));N>>11))>=9e15?(H=crypto.getRandomValues(new Uint32Array(2)),$[N]=H[0],$[N+1]=H[1]):(q.push(V%1e14),N+=2);N=J/2}else{if(!crypto.randomBytes)throw g=!1,Error(yo+"crypto unavailable");for($=crypto.randomBytes(J*=7);N=9e15?crypto.randomBytes(7).copy($,N):(q.push(V%1e14),N+=7);N=J/7}if(!g)for(;N=10;V/=10,N++);N<14&&(G-=14-N)}return z.e=G,z.c=q,z}),I.sum=function(){for(var P=1,A=arguments,L=new I(A[0]);PH-1&&(null==V[J+1]&&(V[J+1]=0),V[J+1]+=V[J]/H|0,V[J]%=H)}return V.reverse()}return function(L,$,H,G,J){var V,N,q,z,Q,ue,Ce,Ee,ut=L.indexOf("."),Oe=s,Xe=a;for(ut>=0&&(z=w,w=0,L=L.replace(".",""),ue=(Ee=new I($)).pow(L.length-ut),w=z,Ee.c=A(Ea(Sr(ue.c),ue.e,"0"),10,H,P),Ee.e=Ee.c.length),q=z=(Ce=A(L,$,H,J?(V=T,P):(V=P,T))).length;0==Ce[--z];Ce.pop());if(!Ce[0])return V.charAt(0);if(ut<0?--q:(ue.c=Ce,ue.e=q,ue.s=G,Ce=(ue=n(ue,Ee,Oe,Xe,H)).c,Q=ue.r,q=ue.e),ut=Ce[N=q+Oe+1],z=H/2,Q=Q||N<0||null!=Ce[N+1],Q=Xe<4?(null!=ut||Q)&&(0==Xe||Xe==(ue.s<0?3:2)):ut>z||ut==z&&(4==Xe||Q||6==Xe&&1&Ce[N-1]||Xe==(ue.s<0?8:7)),N<1||!Ce[0])L=Q?Ea(V.charAt(1),-Oe,V.charAt(0)):V.charAt(0);else{if(Ce.length=N,Q)for(--H;++Ce[--N]>H;)Ce[N]=0,N||(++q,Ce=[1].concat(Ce));for(z=Ce.length;!Ce[--z];);for(ut=0,L="";ut<=z;L+=V.charAt(Ce[ut++]));L=Ea(L,q,V.charAt(0))}return L}}(),n=function(){function P($,H,G){var J,V,N,q,z=0,Q=$.length,ue=H%Ta,Ce=H/Ta|0;for($=$.slice();Q--;)z=((V=ue*(N=$[Q]%Ta)+(J=Ce*N+(q=$[Q]/Ta|0)*ue)%Ta*Ta+z)/G|0)+(J/Ta|0)+Ce*q,$[Q]=V%G;return z&&($=[z].concat($)),$}function A($,H,G,J){var V,N;if(G!=J)N=G>J?1:-1;else for(V=N=0;VH[V]?1:-1;break}return N}function L($,H,G,J){for(var V=0;G--;)$[G]-=V,$[G]=(V=$[G]1;$.splice(0,1));}return function($,H,G,J,V){var N,q,z,Q,ue,Ce,Ee,ut,Oe,Xe,at,wt,Jo,Xi,ja,xo,Ep,er=$.s==H.s?1:-1,lo=$.c,Un=H.c;if(!(lo&&lo[0]&&Un&&Un[0]))return new I($.s&&H.s&&(lo?!Un||lo[0]!=Un[0]:Un)?lo&&0==lo[0]||!Un?0*er:er/0:NaN);for(Oe=(ut=new I(er)).c=[],er=G+(q=$.e-H.e)+1,V||(V=xr,q=Xo($.e/14)-Xo(H.e/14),er=er/14|0),z=0;Un[z]==(lo[z]||0);z++);if(Un[z]>(lo[z]||0)&&q--,er<0)Oe.push(1),Q=!0;else{for(Xi=lo.length,xo=Un.length,z=0,er+=2,(ue=wr(V/(Un[0]+1)))>1&&(Un=P(Un,ue,V),lo=P(lo,ue,V),xo=Un.length,Xi=lo.length),Jo=xo,at=(Xe=lo.slice(0,xo)).length;at=V/2&&ja++;do{if(ue=0,(N=A(Un,Xe,xo,at))<0){if(wt=Xe[0],xo!=at&&(wt=wt*V+(Xe[1]||0)),(ue=wr(wt/ja))>1)for(ue>=V&&(ue=V-1),Ee=(Ce=P(Un,ue,V)).length,at=Xe.length;1==A(Ce,Xe,Ee,at);)ue--,L(Ce,xo=10;er/=10,z++);ee(ut,G+(ut.e=z+14*q-1)+1,J,Q)}else ut.e=q,ut.r=+Q;return ut}}(),i=function(){var P=/^(-?)0([xbo])(?=\w[\w.]*$)/i,A=/^([^.]+)\.$/,L=/^\.([^.]+)$/,$=/^-?(Infinity|NaN)$/,H=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(G,J,V){var N,q=J.replace(H,"");if($.test(q))return G.s=isNaN(q)?null:q<0?-1:1,void(G.c=G.e=null);if(q=q.replace(P,function(z,Q,ue){return N="x"==(ue=ue.toLowerCase())?16:"b"==ue?2:8,V&&V!=N?z:Q}),V&&(N=V,q=q.replace(A,"$1").replace(L,"0.$1")),J!=q)return new I(q,N);throw Error(yo+"Not a"+(V?" base "+V:"")+" number: "+J)}}(),o.absoluteValue=o.abs=function(){var P=new I(this);return P.s<0&&(P.s=1),P},o.comparedTo=function(P,A){return cc(this,new I(P,A))},o.decimalPlaces=o.dp=function(P,A){var L,$,H,G=this;if(null!=P)return On(P,0,xi),null==A?A=a:On(A,0,8),ee(new I(G),P+G.e+1,A);if(!(L=G.c))return null;if($=14*((H=L.length-1)-Xo(this.e/14)),H=L[H])for(;H%10==0;H/=10,$--);return $<0&&($=0),$},o.dividedBy=o.div=function(P,A){return n(this,new I(P,A),s,a)},o.dividedToIntegerBy=o.idiv=function(P,A){return n(this,new I(P,A),0,1)},o.exponentiatedBy=o.pow=function(P,A){var L,$,H,G,V,N,q,z,Q=this;if((P=new I(P)).c&&!P.isInteger())throw Error(yo+"Exponent not an integer: "+ie(P));if(null!=A&&(A=new I(A)),V=P.e>14,!Q.c||!Q.c[0]||1==Q.c[0]&&!Q.e&&1==Q.c.length||!P.c||!P.c[0])return z=new I(Math.pow(+ie(Q),V?P.s*(2-uv(P)):+ie(P))),A?z.mod(A):z;if(N=P.s<0,A){if(A.c?!A.c[0]:!A.s)return new I(NaN);($=!N&&Q.isInteger()&&A.isInteger())&&(Q=Q.mod(A))}else{if(P.e>9&&(Q.e>0||Q.e<-1||(0==Q.e?Q.c[0]>1||V&&Q.c[1]>=24e7:Q.c[0]<8e13||V&&Q.c[0]<=9999975e7)))return G=Q.s<0&&uv(P)?-0:0,Q.e>-1&&(G=1/G),new I(N?1/G:G);w&&(G=vk(w/14+2))}for(V?(L=new I(.5),N&&(P.s=1),q=uv(P)):q=(H=Math.abs(+ie(P)))%2,z=new I(r);;){if(q){if(!(z=z.times(Q)).c)break;G?z.c.length>G&&(z.c.length=G):$&&(z=z.mod(A))}if(H){if(0===(H=wr(H/2)))break;q=H%2}else if(ee(P=P.times(L),P.e+1,1),P.e>14)q=uv(P);else{if(0===(H=+ie(P)))break;q=H%2}Q=Q.times(Q),G?Q.c&&Q.c.length>G&&(Q.c.length=G):$&&(Q=Q.mod(A))}return $?z:(N&&(z=r.div(z)),A?z.mod(A):G?ee(z,w,a,void 0):z)},o.integerValue=function(P){var A=new I(this);return null==P?P=a:On(P,0,8),ee(A,A.e+1,P)},o.isEqualTo=o.eq=function(P,A){return 0===cc(this,new I(P,A))},o.isFinite=function(){return!!this.c},o.isGreaterThan=o.gt=function(P,A){return cc(this,new I(P,A))>0},o.isGreaterThanOrEqualTo=o.gte=function(P,A){return 1===(A=cc(this,new I(P,A)))||0===A},o.isInteger=function(){return!!this.c&&Xo(this.e/14)>this.c.length-2},o.isLessThan=o.lt=function(P,A){return cc(this,new I(P,A))<0},o.isLessThanOrEqualTo=o.lte=function(P,A){return-1===(A=cc(this,new I(P,A)))||0===A},o.isNaN=function(){return!this.s},o.isNegative=function(){return this.s<0},o.isPositive=function(){return this.s>0},o.isZero=function(){return!!this.c&&0==this.c[0]},o.minus=function(P,A){var L,$,H,G,J=this,V=J.s;if(A=(P=new I(P,A)).s,!V||!A)return new I(NaN);if(V!=A)return P.s=-A,J.plus(P);var N=J.e/14,q=P.e/14,z=J.c,Q=P.c;if(!N||!q){if(!z||!Q)return z?(P.s=-A,P):new I(Q?J:NaN);if(!z[0]||!Q[0])return Q[0]?(P.s=-A,P):new I(z[0]?J:3==a?-0:0)}if(N=Xo(N),q=Xo(q),z=z.slice(),V=N-q){for((G=V<0)?(V=-V,H=z):(q=N,H=Q),H.reverse(),A=V;A--;H.push(0));H.reverse()}else for($=(G=(V=z.length)<(A=Q.length))?V:A,V=A=0;A<$;A++)if(z[A]!=Q[A]){G=z[A]0)for(;A--;z[L++]=0);for(A=xr-1;$>V;){if(z[--$]=0;){for(L=0,ue=wt[H]%Oe,Ce=wt[H]/Oe|0,G=H+(J=N);G>H;)L=((q=ue*(q=at[--J]%Oe)+(V=Ce*q+(z=at[J]/Oe|0)*ue)%Oe*Oe+Ee[G]+L)/ut|0)+(V/Oe|0)+Ce*z,Ee[G--]=q%ut;Ee[G]=L}return L?++$:Ee.splice(0,1),K(P,Ee,$)},o.negated=function(){var P=new I(this);return P.s=-P.s||null,P},o.plus=function(P,A){var L,$=this,H=$.s;if(A=(P=new I(P,A)).s,!H||!A)return new I(NaN);if(H!=A)return P.s=-A,$.minus(P);var G=$.e/14,J=P.e/14,V=$.c,N=P.c;if(!G||!J){if(!V||!N)return new I(H/0);if(!V[0]||!N[0])return N[0]?P:new I(V[0]?$:0*H)}if(G=Xo(G),J=Xo(J),V=V.slice(),H=G-J){for(H>0?(J=G,L=N):(H=-H,L=V),L.reverse();H--;L.push(0));L.reverse()}for((H=V.length)-(A=N.length)<0&&(L=N,N=V,V=L,A=H),H=0;A;)H=(V[--A]=V[A]+N[A]+H)/xr|0,V[A]=xr===V[A]?0:V[A]%xr;return H&&(V=[H].concat(V),++J),K(P,V,J)},o.precision=o.sd=function(P,A){var L,$,H,G=this;if(null!=P&&P!==!!P)return On(P,1,xi),null==A?A=a:On(A,0,8),ee(new I(G),P,A);if(!(L=G.c))return null;if($=14*(H=L.length-1)+1,H=L[H]){for(;H%10==0;H/=10,$--);for(H=L[0];H>=10;H/=10,$++);}return P&&G.e+1>$&&($=G.e+1),$},o.shiftedBy=function(P){return On(P,-GB,GB),this.times("1e"+P)},o.squareRoot=o.sqrt=function(){var P,A,L,$,H,G=this,J=G.c,V=G.s,N=G.e,q=s+4,z=new I("0.5");if(1!==V||!J||!J[0])return new I(!V||V<0&&(!J||J[0])?NaN:J?G:1/0);if(0==(V=Math.sqrt(+ie(G)))||V==1/0?(((A=Sr(J)).length+N)%2==0&&(A+="0"),V=Math.sqrt(+A),N=Xo((N+1)/2)-(N<0||N%2),L=new I(A=V==1/0?"5e"+N:(A=V.toExponential()).slice(0,A.indexOf("e")+1)+N)):L=new I(V+""),L.c[0])for((V=(N=L.e)+q)<3&&(V=0);;)if(L=z.times((H=L).plus(n(G,H,q,1))),Sr(H.c).slice(0,V)===(A=Sr(L.c)).slice(0,V)){if(L.e0&&Ee>0){for(z=Ce.substr(0,G=Ee%V||V);G0&&(z+=q+Ce.slice(G)),ue&&(z="-"+z)}$=Q?z+(L.decimalSeparator||"")+((N=+L.fractionGroupSize)?Q.replace(new RegExp("\\d{"+N+"}\\B","g"),"$&"+(L.fractionGroupSeparator||"")):Q):z}return(L.prefix||"")+$+(L.suffix||"")},o.toFraction=function(P){var A,L,$,H,G,J,V,N,q,z,Q,ue,Ce=this,Ee=Ce.c;if(null!=P&&(!(V=new I(P)).isInteger()&&(V.c||1!==V.s)||V.lt(r)))throw Error(yo+"Argument "+(V.isInteger()?"out of range: ":"not an integer: ")+ie(V));if(!Ee)return new I(Ce);for(A=new I(r),q=L=new I(r),$=N=new I(r),ue=Sr(Ee),G=A.e=ue.length-Ce.e-1,A.c[0]=yk[(J=G%14)<0?14+J:J],P=!P||V.comparedTo(A)>0?G>0?A:q:V,J=m,m=1/0,V=new I(ue),N.c[0]=0;z=n(V,A,0,1),1!=(H=L.plus(z.times($))).comparedTo(P);)L=$,$=H,q=N.plus(z.times(H=q)),N=H,A=V.minus(z.times(H=A)),V=H;return H=n(P.minus(L),$,0,1),N=N.plus(H.times(q)),L=L.plus(H.times($)),N.s=q.s=Ce.s,Q=n(q,$,G*=2,a).minus(Ce).abs().comparedTo(n(N,L,G,a).minus(Ce).abs())<1?[q,$]:[N,L],m=J,Q},o.toNumber=function(){return+ie(this)},o.toObject=function(){var P=this;return{c:P.c?P.c.slice():null,e:P.e,s:P.s}},o.toPrecision=function(P,A){return null!=P&&On(P,1,xi),R(this,P,A,2)},o.toString=function(P){var A,L=this,$=L.s,H=L.e;return null===H?$?(A="Infinity",$<0&&(A="-"+A)):A="NaN":(null==P?A=H<=l||H>=c?hv(Sr(L.c),H):Ea(Sr(L.c),H,"0"):(On(P,2,T.length,"Base"),A=e(Ea(Sr(L.c),H,"0"),10,P,$,!0)),$<0&&L.c[0]&&(A="-"+A)),A},o.valueOf=o.toJSON=function(){return ie(this)},o._isBigNumber=!0,null!=t&&I.set(t),I}(),tme=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,vk=Math.ceil,wr=Math.floor,yo="[BigNumber Error] ",xr=1e14,GB=9007199254740991,yk=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Ta=1e7,xi=1e9;function Xo(t){var n=0|t;return t>0||t===n?n:n-1}function Sr(t){for(var n,e,i=1,o=t.length,r=t[0]+"";ic^e?1:-1;for(a=(l=o.length)<(c=r.length)?l:c,s=0;sr[s]^e?1:-1;return l==c?0:l>c^e?1:-1}function On(t,n,e,i){if(te||t!==wr(t))throw Error(yo+(i||"Argument")+("number"==typeof t?te?" out of range: ":" not an integer: ":" not a primitive number: ")+String(t))}function uv(t){var n=t.c.length-1;return Xo(t.e/14)==n&&t.c[n]%2!=0}function hv(t,n){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(n<0?"e":"e+")+n}function Ea(t,n,e){var i,o;if(n<0){for(o=e+".";++n;o+=e);t=o+t}else if(++n>(i=t.length)){for(o=e,n-=i;--n;o+=e);t+=o}else n{class t{constructor(e,i){this.apiService=e,this.storageService=i}getNodes(){let e=[];return this.apiService.get("visors-summary").pipe(Se(i=>{i&&i.forEach(l=>{const c=new Ck;c.online=l.online,c.localPk=l.overview.local_pk,c.version=l.overview.build_info.version,c.configVersion=l.config_version,c.os=l.overview.build_info.os,c.arch=l.overview.build_info.arch,c.autoconnectTransports=l.public_autoconnect,c.isPublic=l.is_public,c.buildTag=l.build_tag?l.build_tag:"",c.rewardsAddress=l.reward_address,c.ip=l.overview&&l.overview.local_ip&&l.overview.local_ip.trim()?l.overview.local_ip:null,c.publicIp=l.overview&&l.overview.public_ip&&l.overview.public_ip.trim()?l.overview.public_ip:null,c.isSymmeticNat=l.overview.is_symmetic_nat,l.overview.country_code&&(c.countryCode=l.overview.country_code),l.overview.region_name&&(c.regionName=l.overview.region_name),l.overview.city_name&&(c.cityName=l.overview.city_name),l.overview.latitude&&(c.latitude=l.overview.latitude),l.overview.longitude&&(c.longitude=l.overview.longitude);const f=this.storageService.getLabelInfo(c.localPk);if(c.label=f&&f.label?f.label:this.storageService.getDefaultLabel(c),!c.online)return c.dmsgServerPk="",c.roundTripPing="",void e.push(c);c.health={servicesHealth:l.health.services_health,uptimeTrackerHealth:l.health.uptime_tracker_health,autoconnectHealth:l.health.autoconnect_health,transportabilityHealth:l.health.transportability_health},c.dmsgServerPk=l.dmsg_stats.server_public_key,c.connectedDmsgServers=l.connected_dmsg_servers||[],c.roundTripPing=this.nsToMs(l.dmsg_stats.round_trip),l.dmsg_servers&&Array.isArray(l.dmsg_servers)&&(c.dmsgServers=l.dmsg_servers.map(m=>({pk:m.pk,latency:m.latency||0}))),c.transports=[],l.overview.transports&&l.overview.transports.forEach(m=>{c.transports.push({id:m.id,localPk:m.local_pk,remotePk:m.remote_pk,type:m.type,recv:m.log?m.log.recv:0,sent:m.log?m.log.sent:0,latencyMs:m.latency_ms||0})}),c.apps=[],l.overview.apps&&l.overview.apps.forEach(m=>{c.apps.push({name:m.name,autostart:m.auto_start,port:m.port,status:m.status,detailedStatus:m.detailed_status,args:m.args})}),c.isHypervisor=l.is_hypervisor,e.push(c)});const o=new Map,r=[],s=[];e.forEach(l=>{o.set(l.localPk,l),l.online&&(r.push(l.localPk),s.push(l.ip))}),this.storageService.includeVisibleLocalNodes(r,s);const a=[];return this.storageService.getSavedLocalNodes().forEach(l=>{if(!o.has(l.publicKey)&&!l.hidden){const c=new Ck;c.localPk=l.publicKey;const f=this.storageService.getLabelInfo(l.publicKey);c.label=f&&f.label?f.label:this.storageService.getDefaultLabel(c),c.online=!1,c.dmsgServerPk="",c.roundTripPing="",a.push(c)}o.has(l.publicKey)&&!o.get(l.publicKey).online&&l.hidden&&o.delete(l.publicKey)}),e=[],o.forEach(l=>e.push(l)),e=e.concat(a),e}))}nsToMs(e){let i=new fv(e).dividedBy(1e6);return i=i.isLessThan(10)?i.decimalPlaces(2):i.decimalPlaces(0),i.toString(10)}getNode(e){return this.apiService.get(`visors/${e}/summary`).pipe(Se(i=>{const o=new Ck;o.localPk=i.overview.local_pk,o.version=i.overview.build_info.version,o.configVersion=i.config_version,o.os=i.overview.build_info.os,o.arch=i.overview.build_info.arch,o.secondsOnline=Math.floor(Number.parseFloat(i.uptime)),o.minHops=i.min_hops,o.buildTag=i.build_tag,o.skybianBuildVersion=i.skybian_build_version,o.connectedDmsgServers=i.connected_dmsg_servers||[],o.isSymmeticNat=i.overview.is_symmetic_nat,o.publicIp=i.overview.public_ip,o.autoconnectTransports=i.public_autoconnect,o.isPublic=i.is_public,o.rewardsAddress=i.reward_address,i.overview.country_code&&(o.countryCode=i.overview.country_code),i.overview.region_name&&(o.regionName=i.overview.region_name),i.overview.city_name&&(o.cityName=i.overview.city_name),i.overview.latitude&&(o.latitude=i.overview.latitude),i.overview.longitude&&(o.longitude=i.overview.longitude),o.ip=i.overview.local_ip&&i.overview.local_ip.trim()?i.overview.local_ip:null;const r=this.storageService.getLabelInfo(o.localPk);o.label=r&&r.label?r.label:this.storageService.getDefaultLabel(o),o.health={servicesHealth:i.health.services_health,uptimeTrackerHealth:i.health.uptime_tracker_health,autoconnectHealth:i.health.autoconnect_health,transportabilityHealth:i.health.transportability_health},o.transports=[],i.overview.transports&&i.overview.transports.forEach(a=>{o.transports.push({id:a.id,localPk:a.local_pk,remotePk:a.remote_pk,type:a.type,recv:a.log.recv,sent:a.log.sent,latencyMs:a.latency_ms||0})}),o.persistentTransports=[],i.persistent_transports&&i.persistent_transports.forEach(a=>{o.persistentTransports.push({pk:a.pk,type:a.type})}),o.routes=[],i.routes&&i.routes.forEach(a=>{o.routes.push({key:a.key,rule:a.rule}),a.rule_summary&&(o.routes[o.routes.length-1].ruleSummary={keepAlive:a.rule_summary.keep_alive,ruleType:a.rule_summary.rule_type,keyRouteId:a.rule_summary.key_route_id},a.rule_summary.app_fields&&a.rule_summary.app_fields.route_descriptor&&(o.routes[o.routes.length-1].appFields={routeDescriptor:{dstPk:a.rule_summary.app_fields.route_descriptor.dst_pk,dstPort:a.rule_summary.app_fields.route_descriptor.dst_port,srcPk:a.rule_summary.app_fields.route_descriptor.src_pk,srcPort:a.rule_summary.app_fields.route_descriptor.src_port}}),a.rule_summary.forward_fields&&(o.routes[o.routes.length-1].forwardFields={nextRid:a.rule_summary.forward_fields.next_rid,nextTid:a.rule_summary.forward_fields.next_tid},a.rule_summary.forward_fields.route_descriptor&&(o.routes[o.routes.length-1].forwardFields.routeDescriptor={dstPk:a.rule_summary.forward_fields.route_descriptor.dst_pk,dstPort:a.rule_summary.forward_fields.route_descriptor.dst_port,srcPk:a.rule_summary.forward_fields.route_descriptor.src_pk,srcPort:a.rule_summary.forward_fields.route_descriptor.src_port})),a.rule_summary.intermediary_forward_fields&&(o.routes[o.routes.length-1].intermediaryForwardFields={nextRid:a.rule_summary.intermediary_forward_fields.next_rid,nextTid:a.rule_summary.intermediary_forward_fields.next_tid}))}),o.apps=[],i.overview.apps&&i.overview.apps.forEach(a=>{o.apps.push({name:a.name,status:a.status,port:a.port,autostart:a.auto_start,detailedStatus:a.detailed_status,args:a.args})});let s=!1;return i.dmsg_stats&&(o.dmsgServerPk=i.dmsg_stats.server_public_key,o.roundTripPing=this.nsToMs(i.dmsg_stats.round_trip),s=!0),s||(o.dmsgServerPk="-",o.roundTripPing="-1"),i.dmsg_servers&&Array.isArray(i.dmsg_servers)&&(o.dmsgServers=i.dmsg_servers.map(a=>({pk:a.pk,latency:a.latency||0}))),o.isHypervisor=i.is_hypervisor,o}))}setRewardsAddress(e,i){return this.apiService.put(`visors/${e}/reward`,{reward_address:i})}getRewardsAddress(e){return this.apiService.get(`visors/${e}/reward`)}getRuntimeLogs(e){return this.apiService.get(`visors/${e}/runtime-logs`)}getRuntimeLogsSince(e,i){return this.apiService.get(`visors/${e}/runtime-logs?since=${i}`)}getRuntimeStats(e){return this.apiService.get(`visors/${e}/runtime-stats`)}getHostStats(e){return this.apiService.get(`visors/${e}/host-stats`)}getNetworkView(e=!1){return this.apiService.get("network-view"+(e?"?refresh=true":""))}getRewardRules(){return this.apiService.get("reward-rules",new qo({responseType:qf.Text}))}deleteRewardsAddress(e){return this.apiService.delete(`visors/${e}/reward`)}getProxies(e){return this.apiService.get(`visors/${e}/proxies`)}setProxyEnabled(e,i,o){return this.apiService.post(`visors/${e}/proxies/set`,{kind:i,enable:o})}setProxyUpstream(e,i,o){return this.apiService.post(`visors/${e}/proxies/upstream`,{kind:i,addr:o})}getSkynetPorts(e){return this.apiService.get(`visors/${e}/skynet-ports`)}registerSkynetPort(e,i){return this.apiService.post(`visors/${e}/skynet-ports/register`,{port:i})}deregisterSkynetPort(e,i){return this.apiService.post(`visors/${e}/skynet-ports/deregister`,{port:i})}getForwardedPorts(e){return this.apiService.get(`visors/${e}/forwarded-ports`)}registerForwardedPort(e,i){return this.apiService.post(`visors/${e}/forwarded-ports/register`,i)}updateForwardedPort(e,i){return this.apiService.post(`visors/${e}/forwarded-ports/update`,i)}getSkynetForwards(e){return this.apiService.get(`visors/${e}/skynet-forwards`)}skynetConnect(e,i,o,r,s){return this.apiService.post(`visors/${e}/skynet-forwards/connect`,{network:i,remote_pk:o,remote_port:r,local_port:s})}skynetDisconnect(e,i){return this.apiService.post(`visors/${e}/skynet-forwards/disconnect`,{id:i})}shutdown(e){return this.apiService.post(`visors/${e}/shutdown`)}checkIfUpdating(e){return this.apiService.get(`visors/${e}/update/ws/running`)}checkUpdate(e){let i="stable";return i=localStorage.getItem(dc.Channel)||i,this.apiService.get(`visors/${e}/update/available/${i}`)}update(e){const i={channel:"stable"};if(localStorage.getItem(dc.UseCustomSettings)){const r=localStorage.getItem(dc.Channel);r&&(i.channel=r);const s=localStorage.getItem(dc.Version);s&&(i.version=s);const a=localStorage.getItem(dc.ArchiveURL);a&&(i.archive_url=a);const l=localStorage.getItem(dc.ChecksumsURL);l&&(i.checksums_url=l)}return this.apiService.ws(`visors/${e}/update/ws`,i)}static{this.\u0275fac=function(i){return new(i||t)(ce(zi),ce(ti))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();class ime{}let KB=(()=>{class t{constructor(e,i){this.storageService=e,this.nodeService=i,this.dataSubject=new ki(null),this.lastEmitedData=new ime,this.firstCallToGetDataMade=!1,this.storageService.getRefreshTimeObservable().subscribe(o=>{this.dataRefreshDelay=1e3*o,this.forceRefresh()})}startRequestingData(){return this.firstCallToGetDataMade||this.getData(0),this.dataSubject.asObservable()}stopRequestingData(){this.updateSubscription&&(this.updateSubscription.unsubscribe(),this.firstCallToGetDataMade=!1)}getData(e){this.firstCallToGetDataMade=!0,this.updateSubscription&&this.updateSubscription.unsubscribe(),this.updateSubscription=ae(1).pipe(li(e),ai(()=>{this.lastEmitedData.updating=!0,this.dataSubject.next(this.lastEmitedData)}),li(120),It(()=>this.nodeService.getNodes())).subscribe(i=>{this.lastEmitedData={data:i,error:null,momentOfLastCorrectUpdate:Date.now(),updating:!1},this.dataSubject.next(this.lastEmitedData),this.getData(this.dataRefreshDelay)},i=>{i=Qe(i),this.lastEmitedData={data:this.lastEmitedData.data,error:i,momentOfLastCorrectUpdate:this.lastEmitedData.momentOfLastCorrectUpdate,updating:!1},this.dataSubject.next(this.lastEmitedData),this.getData(rt.connectionRetryDelay)})}forceRefresh(){this.getData(0)}static{this.\u0275fac=function(i){return new(i||t)(ce(ti),ce(Io))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function ome(t,n){if(1&t){const e=oe();h(0,"button",3),F("click",function(){const o=j(e).$implicit;return U(v().closePopup(o))}),B(1,"img",4),h(2,"div",5),p(3),u()()}if(2&t){const e=n.$implicit;d(),C("src","assets/img/lang/"+e.iconName,mo),d(2),M(e.name)}}let YB=(()=>{class t{static openDialog(e){const i=new nn;return i.autoFocus=!1,i.width=rt.mediumModalWidth,e.open(t,i)}constructor(e,i){this.dialogRef=e,this.languageService=i,this.languages=[]}ngOnInit(){this.subscription=this.languageService.languages.subscribe(e=>{this.languages=e})}ngOnDestroy(){this.subscription.unsubscribe()}closePopup(e=null){e&&this.languageService.changeLanguage(e.code),this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O($b))}}static{this.\u0275cmp=re({type:t,selectors:[["app-select-language"]],standalone:!1,decls:5,vars:4,consts:[[3,"headline","dialog"],[1,"options-container"],["mat-button","","color","accent",1,"grey-button-background"],["mat-button","","color","accent",1,"grey-button-background",3,"click"],[3,"src"],[1,"label"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),b(1,"translate"),h(2,"div",1),ve(3,ome,4,2,"button",2,Fe),u()()),2&i&&(C("headline",y(1,2,"language.title"))("dialog",o.dialogRef),d(3),ye(o.languages))},dependencies:[Pn,gn,xe],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}.options-container[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:118px;height:auto!important;margin:20px;font-size:.7rem;line-height:unset;padding:0!important;color:unset}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .mdc-button__label{width:100%}@media(max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:90px;font-size:.6rem;margin:6px}}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:64px;height:64px;margin:10px 0}@media(max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:48px;height:48px;margin:7px 0}}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{color:#202226!important;background-color:#ffffff40;padding:4px 10px}@media(max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{padding:4px 5px}}"]})}}return t})();function rme(t,n){1&t&&B(0,"img",1),2&t&&C("src","assets/img/lang/"+v().language.iconName,mo)}let sme=(()=>{class t{constructor(e,i){this.languageService=e,this.dialog=i}ngOnInit(){this.subscription=this.languageService.currentLanguage.subscribe(e=>{this.language=e})}ngOnDestroy(){this.subscription.unsubscribe()}openLanguageWindow(){YB.openDialog(this.dialog)}static{this.\u0275fac=function(i){return new(i||t)(O($b),O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-lang-button"]],standalone:!1,decls:3,vars:4,consts:[["mat-button","",1,"lang-button","subtle-transparent-button",3,"click","matTooltip"],[1,"flag",3,"src"]],template:function(i,o){1&i&&(h(0,"button",0),b(1,"translate"),F("click",function(){return o.openLanguageWindow()}),x(2,rme,1,1,"img",1),u()),2&i&&(C("matTooltip",y(1,2,"language.title")),d(2),S(o.language?2:-1))},dependencies:[Pn,Kt,xe],styles:[".lang-button[_ngcontent-%COMP%]{height:40px;background-color:#f8f9f9;border-radius:100%;padding:0;line-height:1;padding:0!important}.lang-button[_ngcontent-%COMP%] .flag[_ngcontent-%COMP%]{width:20px;height:20px}"]})}}return t})();const ame=t=>({"element-disabled":t});function lme(t,n){if(1&t){const e=oe();h(0,"div",8),F("click",function(){return j(e),U(v().configure())}),p(1),b(2,"translate"),u()}2&t&&(d(),M(y(2,1,"login.initial-config")))}let XB=(()=>{class t extends pn{constructor(e,i,o,r,s,a){super(),this.authService=e,this.router=i,this.snackbarService=o,this.dialog=r,this.route=s,this.multipleNodeDataService=a,this.loading=!1,this.isForVpn=!1,this.vpnKey="",this.userExists=!0}ngOnInit(){return this.multipleNodeDataService.stopRequestingData(),this.routeSubscription=this.route.paramMap.subscribe(e=>{this.vpnKey=e.get("key"),this.isForVpn=-1!==window.location.href.indexOf("vpnlogin"),this.verificationSubscription=this.authService.checkLogin().subscribe(i=>{i!==ka.NotLogged&&(Xr.currentInstance.processLoginDone(),setTimeout(()=>{this.router.navigate(this.isForVpn?["vpn",this.vpnKey,"status"]:["nodes"],{replaceUrl:!0})},5))})}),this.form=new nk({password:new lu("",Ne.required)}),this.authService.userExists().subscribe(e=>this.userExists=e,()=>this.userExists=!0),super.ngOnInit()}ngOnDestroy(){this.loginSubscription&&this.loginSubscription.unsubscribe(),this.verificationSubscription.unsubscribe(),this.routeSubscription.unsubscribe()}login(){!this.form.valid||this.loading||(this.loading=!0,this.loginSubscription=this.authService.login(this.form.get("password").value).subscribe(()=>this.onLoginSuccess(),e=>this.onLoginError(e)))}configure(){eme.openDialog(this.dialog)}onLoginSuccess(){Xr.currentInstance.processLoginDone(),setTimeout(()=>{this.router.navigate(this.isForVpn?["vpn",this.vpnKey,"status"]:["nodes"],{replaceUrl:!0})})}onLoginError(e){e=Qe(e),this.loading=!1,this.snackbarService.showError(e.originalError&&401===e.originalError.status?"login.incorrect-password":e.translatableErrorMsg)}static{this.\u0275fac=function(i){return new(i||t)(O(Yf),O(vt),O(ct),O(Ot),O(Ai),O(KB))}}static{this.\u0275cmp=re({type:t,selectors:[["app-login"]],standalone:!1,features:[be],decls:12,vars:9,consts:[[1,"w-100","h-100","d-flex","justify-content-center"],[1,"row","main-container"],["src","/assets/img/logo-v.png",1,"logo"],[1,"mt-5",3,"formGroup"],[1,"login-input",3,"ngClass"],["type","password","formControlName","password","autocomplete","off",3,"keydown.enter","placeholder"],[3,"click","disabled"],["class","config-link",3,"click",4,"ngIf"],[1,"config-link",3,"click"]],template:function(i,o){1&i&&(h(0,"div",0),B(1,"app-lang-button"),h(2,"div",1),B(3,"img",2),h(4,"form",3)(5,"div",4)(6,"input",5),b(7,"translate"),F("keydown.enter",function(){return o.login()}),u(),h(8,"button",6),F("click",function(){return o.login()}),h(9,"mat-icon"),p(10,"chevron_right"),u()()()(),it(11,lme,3,3,"div",7),u()()),2&i&&(d(4),C("formGroup",o.form),d(),C("ngClass",se(7,ame,o.loading)),d(),C("placeholder",y(7,5,"login.password")),d(2),C("disabled",!o.form.valid||o.loading),d(3),C("ngIf",!o.userExists))},dependencies:[$t,tf,xn,Gt,qt,wn,on,mn,We,sme,xe],styles:['.cursor-pointer[_ngcontent-%COMP%], .config-link[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}app-lang-button[_ngcontent-%COMP%]{position:fixed;right:10px;top:10px;z-index:10}.main-container[_ngcontent-%COMP%]{z-index:1;height:100%;flex-direction:column;align-items:center;justify-content:center}.logo[_ngcontent-%COMP%]{width:170px}.login-input[_ngcontent-%COMP%]{height:35px;width:300px;overflow:hidden;border-radius:10px;box-shadow:0 3px 8px #0000001a,0 6px 20px #0000001a;display:flex}.login-input[_ngcontent-%COMP%] input[type=password][_ngcontent-%COMP%]{background:#fff;width:calc(100% - 35px);height:100%;font-size:.875rem;border:none;padding-left:10px;padding-right:10px}.login-input[_ngcontent-%COMP%] input[type=password][_ngcontent-%COMP%]:focus{outline:none}.login-input[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{background:#fff;color:#202226;width:35px;height:35px;line-height:35px;border:none;display:flex;cursor:pointer;align-items:center}.login-input[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{color:#777}.config-link[_ngcontent-%COMP%]{color:#f8f9f9;font-size:.7rem;margin-top:20px}']})}}return t})();const cme=["firstInput"];let wk=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.formBuilder=o,this.storageService=r,this.snackbarService=s}ngOnInit(){this.form=this.formBuilder.group({label:[this.data.label]})}ngAfterViewInit(){setTimeout(()=>this.firstInput.nativeElement.focus())}save(){const e=this.form.get("label").value.trim();e!==this.data.label?(this.storageService.saveLabel(this.data.id,e,this.data.identifiedElementType),e?this.snackbarService.showDone("edit-label.done"):this.snackbarService.showWarning("edit-label.label-removed-warning"),this.dialogRef.close(!0)):this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(di),O(ti),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-edit-label"]],viewQuery:function(i,o){if(1&i&&ot(cme,5),2&i){let r;he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:11,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","label","maxlength","66","matInput",""],["color","primary",1,"float-right",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),b(7,"translate"),u(),B(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.save()}),p(11),b(12,"translate"),u()()),2&i&&(C("headline",y(1,5,"labeled-element.edit-label"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(4),M(y(7,7,"edit-label.label")),d(5),M(y(12,9,"common.save")))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,In,ui,gn,xe],encapsulation:2})}}return t})();const dme=["cancelButton"],ume=["confirmButton"];function hme(t,n){if(1&t&&(h(0,"div"),p(1),b(2,"translate"),u()),2&t){const e=n.$implicit;d(),E(" - ",y(2,1,e)," ")}}function fme(t,n){if(1&t&&(h(0,"div",4),ve(1,hme,3,3,"div",null,Fe),u()),2&t){const e=v();d(),ye(e.state!==e.confirmationStates.Done?e.data.list:e.doneList)}}function pme(t,n){if(1&t&&(h(0,"div",3),p(1),b(2,"translate"),u()),2&t){const e=v();d(),E(" ",y(2,1,e.data.lowerText)," ")}}function mme(t,n){if(1&t){const e=oe();h(0,"app-button",8,1),F("action",function(){return j(e),U(v().closeModal())}),p(2),b(3,"translate"),u()}if(2&t){const e=v();d(2),E(" ",y(3,1,e.data.cancelButtonText)," ")}}var mu=function(t){return t.Asking="Asking",t.Processing="Processing",t.Done="Done",t}(mu||{});let gme=(()=>{class t{constructor(e,i){this.dialogRef=e,this.data=i,this.disableDismiss=!1,this.state=mu.Asking,this.confirmationStates=mu,this.operationAccepted=new we,this.disableDismiss=!!i.disableDismiss,this.dialogRef.disableClose=this.disableDismiss}ngAfterViewInit(){this.data.cancelButtonText?setTimeout(()=>this.cancelButton.focus()):setTimeout(()=>this.confirmButton.focus())}ngOnDestroy(){this.operationAccepted.complete()}closeModal(){this.dialogRef.close()}sendOperationAcceptedEvent(){this.operationAccepted.emit()}showAsking(e){e&&(this.data=e),this.state=mu.Asking,this.confirmButton.reset(),this.disableDismiss=!1,this.dialogRef.disableClose=this.disableDismiss,this.cancelButton&&this.cancelButton.showEnabled()}showProcessing(){this.state=mu.Processing,this.disableDismiss=!0,this.confirmButton.showLoading(),this.cancelButton&&this.cancelButton.showDisabled()}showDone(e,i,o=null){this.doneTitle=e||this.data.headerText,this.doneText=i,this.doneList=o,this.confirmButton.reset(),setTimeout(()=>this.confirmButton.focus()),this.state=mu.Done,this.dialogRef.disableClose=!1,this.disableDismiss=!1}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En))}}static{this.\u0275cmp=re({type:t,selectors:[["app-confirmation"]],viewQuery:function(i,o){if(1&i&&ot(dme,5)(ume,5),2&i){let r;he(r=fe())&&(o.cancelButton=r.first),he(r=fe())&&(o.confirmButton=r.first)}},outputs:{operationAccepted:"operationAccepted"},standalone:!1,decls:13,vars:14,consts:[["confirmButton",""],["cancelButton",""],[3,"headline","dialog","disableDismiss"],[1,"text-container"],[1,"list-container"],[1,"buttons"],["color","accent"],["color","primary",3,"action"],["color","accent",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),b(1,"translate"),h(2,"div",3),p(3),b(4,"translate"),u(),x(5,fme,3,0,"div",4),x(6,pme,3,3,"div",3),h(7,"div",5),x(8,mme,4,3,"app-button",6),h(9,"app-button",7,0),F("action",function(){return o.state===o.confirmationStates.Asking?o.sendOperationAcceptedEvent():o.closeModal()}),p(11),b(12,"translate"),u()()()),2&i&&(C("headline",y(1,8,o.state!==o.confirmationStates.Done?o.data.headerText:o.doneTitle))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),d(3),E(" ",y(4,10,o.state!==o.confirmationStates.Done?o.data.text:o.doneText)," "),d(2),S(o.data.list&&o.state!==o.confirmationStates.Done||o.doneList&&o.state===o.confirmationStates.Done?5:-1),d(),S(o.data.lowerText&&o.state!==o.confirmationStates.Done?6:-1),d(2),S(o.data.cancelButtonText&&o.state!==o.confirmationStates.Done?8:-1),d(3),E(" ",y(12,12,o.state!==o.confirmationStates.Done?o.data.confirmButtonText:"confirmation.close")," "))},dependencies:[ui,gn,xe],styles:[".text-container[_ngcontent-%COMP%]{word-break:break-word}.list-container[_ngcontent-%COMP%]{font-size:14px;margin:10px;color:#215f9e;word-break:break-word}.buttons[_ngcontent-%COMP%]{margin-top:15px;text-align:right}.buttons[_ngcontent-%COMP%] app-button[_ngcontent-%COMP%]{margin-left:5px}"]})}}return t})();class Rt{static createConfirmationDialog(n,e){const i={text:e,headerText:"confirmation.header-text",confirmButtonText:"confirmation.confirm-button",cancelButtonText:"confirmation.cancel-button",disableDismiss:!1},o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,n.open(gme,o)}static checkIfTagIsUpdatable(n){return!(null==n||n.toUpperCase()==="Windows".toUpperCase()||n.toUpperCase()==="Win".toUpperCase()||n.toUpperCase()==="Mac".toUpperCase()||n.toUpperCase()==="Macos".toUpperCase()||n.toUpperCase()==="Mac OS".toUpperCase()||n.toUpperCase()==="Darwin".toUpperCase())}static checkIfTagCanOpenterminal(n){return!(null==n||n.toUpperCase()==="Windows".toUpperCase()||n.toUpperCase()==="Win".toUpperCase())}static checkIfIpValidOrEmpty(n){if(!n)return!0;const e=n.split(".");if(4!==e.length)return!1;for(const i of e){const o=Number.parseInt(i,10);if(isNaN(o)||o+""!==i||o<0||o>255)return!1}return!0}}function _me(t,n){if(1&t&&(h(0,"mat-icon",4),p(1),u()),2&t){const e=v().$implicit;C("inline",!0),d(),M(e.icon)}}function bme(t,n){if(1&t){const e=oe();h(0,"div",1)(1,"button",2),F("click",function(){const o=j(e).$index;return U(v().closePopup(o+1))}),h(2,"div",3),x(3,_me,2,2,"mat-icon",4),h(4,"span"),p(5),b(6,"translate"),u()()()()}if(2&t){const e=n.$implicit;d(3),S(e.icon?3:-1),d(2),M(y(6,2,e.label))}}let ao=(()=>{class t{static openDialog(e,i,o){const r=new nn;return r.data={options:i,title:o},r.autoFocus=!1,r.width=rt.smallModalWidth,e.open(t,r)}constructor(e,i){this.data=e,this.dialogRef=i}closePopup(e){this.dialogRef.close(e)}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-select-option"]],standalone:!1,decls:4,vars:5,consts:[[3,"headline","dialog","includeVerticalMargins"],[1,"options-list-button-container"],["mat-button","",1,"grey-button-background",3,"click"],[1,"internal-container"],[1,"icon",3,"inline"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),b(1,"translate"),ve(2,bme,7,4,"div",1,Fe),u()),2&i&&(C("headline",y(1,3,o.data.title))("dialog",o.dialogRef)("includeVerticalMargins",!1),d(2),ye(o.data.options))},dependencies:[Pn,We,gn,xe],styles:[".icon[_ngcontent-%COMP%]{font-size:14px;width:14px;line-height:1}.grey-button-background[_ngcontent-%COMP%]{justify-content:left!important;min-height:45px}"]})}}return t})();var Sn=function(t){return t.TextInput="TextInput",t.Select="Select",t}(Sn||{});class Dt{constructor(n,e,i,o){this.properties=n,this.label=e,this.sortingMode=i,this.labelProperties=o}get id(){return this.properties.join("")}}var st=function(t){return t.Text="Text",t.Number="Number",t.NumberReversed="NumberReversed",t.Boolean="Boolean",t}(st||{});class gu{get sortingArrow(){return this.sortReverse?"keyboard_arrow_up":"keyboard_arrow_down"}get currentSortingColumn(){return this.sortBy}get sortingInReverseOrder(){return this.sortReverse}get dataSorted(){return this.dataUpdatedSubject.asObservable()}get currentlySortingByLabel(){return this.sortByLabel}constructor(n,e,i,o,r,s){this.dialog=n,this.translateService=e,this.storageService=i,this.sortReverse=!1,this.sortByLabel=!1,this.tieBreakerColumnIndex=null,this.columnStorageKeyPrefix="col_",this.orderStorageKeyPrefix="order_",this.labelStorageKeyPrefix="label_",this.dataUpdatedSubject=new me,this.sortableColumns=o,this.id=s,this.defaultColumnIndex=r,this.sortBy=o[r];const a=this.storageService.getDataForHv(this.columnStorageKeyPrefix+s);if(a){const l=o.find(c=>c.id===a);l&&(this.sortBy=l)}this.sortReverse="true"===this.storageService.getDataForHv(this.orderStorageKeyPrefix+s),this.sortByLabel="true"===this.storageService.getDataForHv(this.labelStorageKeyPrefix+s)}dispose(){this.dataUpdatedSubject.complete()}setTieBreakerColumnIndex(n){this.tieBreakerColumnIndex=n}setData(n){this.data=n,this.sortData()}changeSortingOrder(n){if(this.sortBy===n||n.labelProperties)if(n.labelProperties){const e=[{label:this.translateService.instant("tables.sort-by-value")},{label:this.translateService.instant("tables.sort-by-value")+" "+this.translateService.instant("tables.inverted-order")},{label:this.translateService.instant("tables.sort-by-label")},{label:this.translateService.instant("tables.sort-by-label")+" "+this.translateService.instant("tables.inverted-order")}];ao.openDialog(this.dialog,e,"tables.title").afterClosed().subscribe(i=>{i&&this.changeSortingParams(n,i>2,i%2==0)})}else this.sortReverse=!this.sortReverse,this.storageService.setDataForHv(this.orderStorageKeyPrefix+this.id,String(this.sortReverse)),this.sortData();else this.changeSortingParams(n,!1,!1)}changeSortingParams(n,e,i){this.sortBy=n,this.sortByLabel=e,this.sortReverse=i,this.storageService.setDataForHv(this.columnStorageKeyPrefix+this.id,n.id),this.storageService.setDataForHv(this.orderStorageKeyPrefix+this.id,String(this.sortReverse)),this.storageService.setDataForHv(this.labelStorageKeyPrefix+this.id,String(this.sortByLabel)),this.sortData()}openSortingOrderModal(){const n=[],e=[];this.sortableColumns.forEach(i=>{const o=this.translateService.instant(i.label);n.push({label:o}),e.push({sortBy:i,sortReverse:!1,sortByLabel:!1}),n.push({label:o+" "+this.translateService.instant("tables.inverted-order")}),e.push({sortBy:i,sortReverse:!0,sortByLabel:!1}),i.labelProperties&&(n.push({label:o+" "+this.translateService.instant("tables.label")}),e.push({sortBy:i,sortReverse:!1,sortByLabel:!0}),n.push({label:o+" "+this.translateService.instant("tables.label")+" "+this.translateService.instant("tables.inverted-order")}),e.push({sortBy:i,sortReverse:!0,sortByLabel:!0}))}),ao.openDialog(this.dialog,n,"tables.title").afterClosed().subscribe(i=>{i&&this.changeSortingParams(e[i-1].sortBy,e[i-1].sortByLabel,e[i-1].sortReverse)})}sortData(){this.data&&(this.data.sort((n,e)=>{let i=this.getSortResponse(this.sortBy,n,e,!0);return 0===i&&null!==this.tieBreakerColumnIndex&&this.sortableColumns[this.tieBreakerColumnIndex]!==this.sortBy&&(i=this.getSortResponse(this.sortableColumns[this.tieBreakerColumnIndex],n,e,!1)),0===i&&this.sortableColumns[this.defaultColumnIndex]!==this.sortBy&&(i=this.getSortResponse(this.sortableColumns[this.defaultColumnIndex],n,e,!1)),i}),this.dataUpdatedSubject.next())}getSortResponse(n,e,i,o){let s=e,a=i;(this.sortByLabel&&o&&n.labelProperties?n.labelProperties:n.properties).forEach(f=>{s=s[f],a=a[f]});const l=this.sortByLabel&&o?st.Text:n.sortingMode;let c=0;return l===st.Text?c=this.sortReverse?a.localeCompare(s):s.localeCompare(a):l===st.NumberReversed?c=this.sortReverse?s-a:a-s:l===st.Number?c=this.sortReverse?a-s:s-a:l===st.Boolean&&(s&&!a?c=-1:!s&&a&&(c=1),c*=this.sortReverse?-1:1),c}}let Cme=(()=>{class t{_animationsDisabled=ci();state="unchecked";disabled=!1;appearance="full";constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:12,hostBindings:function(i,o){2&i&&Ie("mat-pseudo-checkbox-indeterminate","indeterminate"===o.state)("mat-pseudo-checkbox-checked","checked"===o.state)("mat-pseudo-checkbox-disabled",o.disabled)("mat-pseudo-checkbox-minimal","minimal"===o.appearance)("mat-pseudo-checkbox-full","full"===o.appearance)("_mat-animation-noopable",o._animationsDisabled)},inputs:{state:"state",disabled:"disabled",appearance:"appearance"},decls:0,vars:0,template:function(i,o){},styles:['.mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-minimal-selected-checkmark-color, var(--mat-sys-primary))}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full{border-color:var(--mat-pseudo-checkbox-full-unselected-icon-color, var(--mat-sys-on-surface-variant));border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-pseudo-checkbox-full-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-pseudo-checkbox-full-selected-icon-color, var(--mat-sys-primary));border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-full-selected-checkmark-color, var(--mat-sys-on-primary))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-pseudo-checkbox-full-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-full-disabled-selected-checkmark-color, var(--mat-sys-surface))}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}\n'],encapsulation:2,changeDetection:0})}return t})();const wme=["text"],xme=[[["mat-icon"]],"*"],Sme=["mat-icon","*"];function kme(t,n){if(1&t&&B(0,"mat-pseudo-checkbox",1),2&t){const e=v();C("disabled",e.disabled)("state",e.selected?"checked":"unchecked")}}function Dme(t,n){1&t&&B(0,"mat-pseudo-checkbox",3),2&t&&C("disabled",v().disabled)}function Mme(t,n){if(1&t&&(h(0,"span",4),p(1),u()),2&t){const e=v();d(),E("(",e.group.label,")")}}const ZB=new Z("MAT_OPTION_PARENT_COMPONENT"),QB=new Z("MatOptgroup");class Tme{source;isUserInput;constructor(n,e=!1){this.source=n,this.isUserInput=e}}let Qr=(()=>{class t{_element=D(Re);_changeDetectorRef=D(Jt);_parent=D(ZB,{optional:!0});group=D(QB,{optional:!0});_signalDisableRipple=!1;_selected=!1;_active=!1;_mostRecentViewValue="";get multiple(){return this._parent&&this._parent.multiple}get selected(){return this._selected}value;id=D(ni).getId("mat-option-");get disabled(){return this.group&&this.group.disabled||this._disabled()}set disabled(e){this._disabled.set(e)}_disabled=yt(!1);get disableRipple(){return this._signalDisableRipple?this._parent.disableRipple():!!this._parent?.disableRipple}get hideSingleSelectionIndicator(){return!(!this._parent||!this._parent.hideSingleSelectionIndicator)}onSelectionChange=new we;_text;_stateChanges=new me;constructor(){const e=D(zo);e.load(tu),e.load(gS),this._signalDisableRipple=!!this._parent&&El(this._parent.disableRipple)}get active(){return this._active}get viewValue(){return(this._text?.nativeElement.textContent||"").trim()}select(e=!0){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),e&&this._emitSelectionChangeEvent())}deselect(e=!0){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),e&&this._emitSelectionChangeEvent())}focus(e,i){const o=this._getHostElement();"function"==typeof o.focus&&o.focus(i)}setActiveStyles(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}setInactiveStyles(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}getLabel(){return this.viewValue}_handleKeydown(e){(13===e.keyCode||32===e.keyCode)&&!yr(e)&&(this._selectViaInteraction(),e.preventDefault())}_selectViaInteraction(){this.disabled||(this._selected=!this.multiple||!this._selected,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._element.nativeElement}ngAfterViewChecked(){if(this._selected){const e=this.viewValue;e!==this._mostRecentViewValue&&(this._mostRecentViewValue&&this._stateChanges.next(),this._mostRecentViewValue=e)}}ngOnDestroy(){this._stateChanges.complete()}_emitSelectionChangeEvent(e=!1){this.onSelectionChange.emit(new Tme(this,e))}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-option"]],viewQuery:function(i,o){if(1&i&&ot(wme,7),2&i){let r;he(r=fe())&&(o._text=r.first)}},hostAttrs:["role","option",1,"mat-mdc-option","mdc-list-item"],hostVars:11,hostBindings:function(i,o){1&i&&F("click",function(){return o._selectViaInteraction()})("keydown",function(s){return o._handleKeydown(s)}),2&i&&(ur("id",o.id),$e("aria-selected",o.selected)("aria-disabled",o.disabled.toString()),Ie("mdc-list-item--selected",o.selected)("mat-mdc-option-multiple",o.multiple)("mat-mdc-option-active",o.active)("mdc-list-item--disabled",o.disabled))},inputs:{value:"value",id:"id",disabled:[2,"disabled","disabled",De]},outputs:{onSelectionChange:"onSelectionChange"},exportAs:["matOption"],ngContentSelectors:Sme,decls:8,vars:5,consts:[["text",""],["aria-hidden","true",1,"mat-mdc-option-pseudo-checkbox",3,"disabled","state"],[1,"mdc-list-item__primary-text"],["state","checked","aria-hidden","true","appearance","minimal",1,"mat-mdc-option-pseudo-checkbox",3,"disabled"],[1,"cdk-visually-hidden"],["aria-hidden","true","mat-ripple","",1,"mat-mdc-option-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled"]],template:function(i,o){1&i&&(yi(xme),x(0,kme,1,2,"mat-pseudo-checkbox",1),Pt(1),h(2,"span",2,0),Pt(4,1),u(),x(5,Dme,1,1,"mat-pseudo-checkbox",3),x(6,Mme,2,1,"span",4),B(7,"div",5)),2&i&&(S(o.multiple?0:-1),d(5),S(o.multiple||!o.selected||o.hideSingleSelectionIndicator?-1:5),d(),S(o.group&&o.group._inert?6:-1),d(),C("matRippleTrigger",o._getHostElement())("matRippleDisabled",o.disabled||o.disableRipple))},dependencies:[Cme,eu],styles:['.mat-mdc-option{-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-option-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-option-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-option-label-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-option-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-option-label-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent));outline:0}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-active,.mat-mdc-option-multiple,:focus,:hover){background-color:var(--mat-option-selected-state-layer-color, var(--mat-sys-secondary-container))}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-active,.mat-mdc-option-multiple,:focus,:hover) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option.mdc-list-item{align-items:center;background:rgba(0,0,0,0)}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}@media(forced-colors: active){.mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{right:auto;left:16px}}.mat-mdc-option-multiple{--mat-list-list-item-selected-container-color: var(--mat-list-list-item-container-color, transparent)}.mat-mdc-option-active .mat-focus-indicator::before{content:""}\n'],encapsulation:2,changeDetection:0})}return t})();class JB{_items;_activeItemIndex=yt(-1);_activeItem=yt(null);_wrap=!1;_typeaheadSubscription=pt.EMPTY;_itemChangesSubscription;_vertical=!0;_horizontal=null;_allowedModifierKeys=[];_homeAndEnd=!1;_pageUpAndDown={enabled:!1,delta:10};_effectRef;_typeahead;_skipPredicateFn=n=>n.disabled;constructor(n,e){this._items=n,n instanceof id?this._itemChangesSubscription=n.changes.subscribe(i=>this._itemsChanged(i.toArray())):El(n)&&(this._effectRef=fm(()=>this._itemsChanged(n()),{injector:e}))}tabOut=new me;change=new me;skipPredicate(n){return this._skipPredicateFn=n,this}withWrap(n=!0){return this._wrap=n,this}withVerticalOrientation(n=!0){return this._vertical=n,this}withHorizontalOrientation(n){return this._horizontal=n,this}withAllowedModifierKeys(n){return this._allowedModifierKeys=n,this}withTypeAhead(n=200){this._typeaheadSubscription.unsubscribe();const e=this._getItemsArray();return this._typeahead=new NB(e,{debounceInterval:"number"==typeof n?n:void 0,skipPredicate:i=>this._skipPredicateFn(i)}),this._typeaheadSubscription=this._typeahead.selectedItem.subscribe(i=>{this.setActiveItem(i)}),this}cancelTypeahead(){return this._typeahead?.reset(),this}withHomeAndEnd(n=!0){return this._homeAndEnd=n,this}withPageUpDown(n=!0,e=10){return this._pageUpAndDown={enabled:n,delta:e},this}setActiveItem(n){const e=this._activeItem();this.updateActiveItem(n),this._activeItem()!==e&&this.change.next(this._activeItemIndex())}onKeydown(n){const e=n.keyCode,o=["altKey","ctrlKey","metaKey","shiftKey"].every(r=>!n[r]||this._allowedModifierKeys.indexOf(r)>-1);switch(e){case 9:return void this.tabOut.next();case 40:if(this._vertical&&o){this.setNextItemActive();break}return;case 38:if(this._vertical&&o){this.setPreviousItemActive();break}return;case 39:if(this._horizontal&&o){"rtl"===this._horizontal?this.setPreviousItemActive():this.setNextItemActive();break}return;case 37:if(this._horizontal&&o){"rtl"===this._horizontal?this.setNextItemActive():this.setPreviousItemActive();break}return;case 36:if(this._homeAndEnd&&o){this.setFirstItemActive();break}return;case 35:if(this._homeAndEnd&&o){this.setLastItemActive();break}return;case 33:if(this._pageUpAndDown.enabled&&o){const r=this._activeItemIndex()-this._pageUpAndDown.delta;this._setActiveItemByIndex(r>0?r:0,1);break}return;case 34:if(this._pageUpAndDown.enabled&&o){const r=this._activeItemIndex()+this._pageUpAndDown.delta,s=this._getItemsArray().length;this._setActiveItemByIndex(r-1&&i!==this._activeItemIndex()&&(this._activeItemIndex.set(i),this._typeahead?.setCurrentSelectedItemIndex(i))}}}class Ime extends JB{setActiveItem(n){this.activeItem&&this.activeItem.setInactiveStyles(),super.setActiveItem(n),this.activeItem&&this.activeItem.setActiveStyles()}}class Ome{_multiple;_emitChanges;compareWith;_selection=new Set;_deselectedToEmit=[];_selectedToEmit=[];_selected=null;get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}changed=new me;constructor(n=!1,e,i=!0,o){this._multiple=n,this._emitChanges=i,this.compareWith=o,e&&e.length&&(n?e.forEach(r=>this._markSelected(r)):this._markSelected(e[0]),this._selectedToEmit.length=0)}select(...n){this._verifyValueAssignment(n),n.forEach(i=>this._markSelected(i));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}deselect(...n){this._verifyValueAssignment(n),n.forEach(i=>this._unmarkSelected(i));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}setSelection(...n){this._verifyValueAssignment(n);const e=this.selected,i=new Set(n.map(r=>this._getConcreteValue(r)));n.forEach(r=>this._markSelected(r)),e.filter(r=>!i.has(this._getConcreteValue(r,i))).forEach(r=>this._unmarkSelected(r));const o=this._hasQueuedChanges();return this._emitChangeEvent(),o}toggle(n){return this.isSelected(n)?this.deselect(n):this.select(n)}clear(n=!0){this._unmarkAll();const e=this._hasQueuedChanges();return n&&this._emitChangeEvent(),e}isSelected(n){return this._selection.has(this._getConcreteValue(n))}isEmpty(){return 0===this._selection.size}hasValue(){return!this.isEmpty()}sort(n){this._multiple&&this.selected&&this._selected.sort(n)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(n){n=this._getConcreteValue(n),this.isSelected(n)||(this._multiple||this._unmarkAll(),this.isSelected(n)||this._selection.add(n),this._emitChanges&&this._selectedToEmit.push(n))}_unmarkSelected(n){n=this._getConcreteValue(n),this.isSelected(n)&&(this._selection.delete(n),this._emitChanges&&this._deselectedToEmit.push(n))}_unmarkAll(){this.isEmpty()||this._selection.forEach(n=>this._unmarkSelected(n))}_verifyValueAssignment(n){}_hasQueuedChanges(){return!(!this._deselectedToEmit.length&&!this._selectedToEmit.length)}_getConcreteValue(n,e){if(this.compareWith){e=e??this._selection;for(let i of e)if(this.compareWith(n,i))return i;return n}return n}}let Ame=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ii]})}return t})(),eV=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[IS,Ame,Qr,ii]})}return t})();const Rme=["trigger"],Fme=["panel"],Nme=[[["mat-select-trigger"]],"*"],Lme=["mat-select-trigger","*"];function Bme(t,n){if(1&t&&(h(0,"span",4),p(1),u()),2&t){const e=v();d(),M(e.placeholder)}}function Vme(t,n){1&t&&Pt(0)}function Hme(t,n){if(1&t&&(h(0,"span",11),p(1),u()),2&t){const e=v(2);d(),M(e.triggerValue)}}function jme(t,n){if(1&t&&(h(0,"span",5),x(1,Vme,1,0)(2,Hme,2,1,"span",11),u()),2&t){const e=v();d(),S(e.customTrigger?1:2)}}function Ume(t,n){if(1&t){const e=oe();h(0,"div",12,1),F("keydown",function(o){return j(e),U(v()._handleKeydown(o))}),Pt(2,1),u()}if(2&t){const e=v();Ze(e.panelClass),Ie("mat-select-panel-animations-enabled",!e._animationsDisabled)("mat-primary","primary"===(null==e._parentFormField?null:e._parentFormField.color))("mat-accent","accent"===(null==e._parentFormField?null:e._parentFormField.color))("mat-warn","warn"===(null==e._parentFormField?null:e._parentFormField.color))("mat-undefined",!(null!=e._parentFormField&&e._parentFormField.color)),$e("id",e.id+"-panel")("aria-multiselectable",e.multiple)("aria-label",e.ariaLabel||null)("aria-labelledby",e._getPanelAriaLabelledby())}}const zme=new Z("mat-select-scroll-strategy",{providedIn:"root",factory:()=>{const t=D(He);return()=>Bf(t)}}),$me=new Z("MAT_SELECT_CONFIG"),tV=new Z("MatSelectTrigger");class Wme{source;value;constructor(n,e){this.source=n,this.value=e}}let Pa=(()=>{class t{_viewportRuler=D(qd);_changeDetectorRef=D(Jt);_elementRef=D(Re);_dir=D(br,{optional:!0});_idGenerator=D(ni);_renderer=D(Qn);_parentFormField=D(fk,{optional:!0});ngControl=D(Zr,{self:!0,optional:!0});_liveAnnouncer=D(d4);_defaultOptions=D($me,{optional:!0});_animationsDisabled=ci();_popoverLocation;_initialized=new me;_cleanupDetach;options;optionGroups;customTrigger;_positions=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"}];_scrollOptionIntoView(e){const i=this.options.toArray()[e];if(i){const o=this.panel.nativeElement,r=function Eme(t,n,e){if(e.length){let i=n.toArray(),o=e.toArray(),r=0;for(let s=0;se+i?Math.max(0,t-i+n):e}(s.offsetTop,s.offsetHeight,o.scrollTop,o.offsetHeight)}}_positioningSettled(){this._scrollOptionIntoView(this._keyManager.activeItemIndex||0)}_getChangeEvent(e){return new Wme(this,e)}_scrollStrategyFactory=D(zme);_panelOpen=!1;_compareWith=(e,i)=>e===i;_uid=this._idGenerator.getId("mat-select-");_triggerAriaLabelledBy=null;_previousControl;_destroy=new me;_errorStateTracker;stateChanges=new me;disableAutomaticLabeling=!0;userAriaDescribedBy;_selectionModel;_keyManager;_preferredOverlayOrigin;_overlayWidth;_onChange=()=>{};_onTouched=()=>{};_valueId=this._idGenerator.getId("mat-select-value-");_scrollStrategy;_overlayPanelClass=this._defaultOptions?.overlayPanelClass||"";get focused(){return this._focused||this._panelOpen}_focused=!1;controlType="mat-select";trigger;panel;_overlayDir;panelClass;disabled=!1;get disableRipple(){return this._disableRipple()}set disableRipple(e){this._disableRipple.set(e)}_disableRipple=yt(!1);tabIndex=0;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._syncParentProperties()}_hideSingleSelectionIndicator=this._defaultOptions?.hideSingleSelectionIndicator??!1;get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.stateChanges.next()}_placeholder;get required(){return this._required??this.ngControl?.control?.hasValidator(Ne.required)??!1}set required(e){this._required=e,this.stateChanges.next()}_required;get multiple(){return this._multiple}set multiple(e){this._multiple=e}_multiple=!1;disableOptionCentering=this._defaultOptions?.disableOptionCentering??!1;get compareWith(){return this._compareWith}set compareWith(e){this._compareWith=e,this._selectionModel&&this._initializeSelection()}get value(){return this._value}set value(e){this._assignValue(e)&&this._onChange(e)}_value;ariaLabel="";ariaLabelledby;get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}typeaheadDebounceInterval;sortComparator;get id(){return this._id}set id(e){this._id=e||this._uid,this.stateChanges.next()}_id;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}panelWidth=this._defaultOptions&&typeof this._defaultOptions.panelWidth<"u"?this._defaultOptions.panelWidth:"auto";canSelectNullableOptions=this._defaultOptions?.canSelectNullableOptions??!1;optionSelectionChanges=ya(()=>{const e=this.options;return e?e.changes.pipe(si(e),tn(()=>Cr(...e.map(i=>i.onSelectionChange)))):this._initialized.pipe(tn(()=>this.optionSelectionChanges))});openedChange=new we;_openedStream=this.openedChange.pipe(Tn(e=>e),Se(()=>{}));_closedStream=this.openedChange.pipe(Tn(e=>!e),Se(()=>{}));selectionChange=new we;valueChange=new we;constructor(){const e=D(pk),i=D(su,{optional:!0}),o=D(on,{optional:!0}),r=D(new Yh("tabindex"),{optional:!0}),s=D(mS,{optional:!0});this.ngControl&&(this.ngControl.valueAccessor=this),null!=this._defaultOptions?.typeaheadDebounceInterval&&(this.typeaheadDebounceInterval=this._defaultOptions.typeaheadDebounceInterval),this._errorStateTracker=new FB(e,this.ngControl,o,i,this.stateChanges),this._scrollStrategy=this._scrollStrategyFactory(),this.tabIndex=null==r?0:parseInt(r)||0,this._popoverLocation=!1===s?.usePopover?null:"inline",this.id=this.id}ngOnInit(){this._selectionModel=new Ome(this.multiple),this.stateChanges.next(),this._viewportRuler.change().pipe(fn(this._destroy)).subscribe(()=>{this.panelOpen&&(this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._changeDetectorRef.detectChanges())})}ngAfterContentInit(){this._initialized.next(),this._initialized.complete(),this._initKeyManager(),this._selectionModel.changed.pipe(fn(this._destroy)).subscribe(e=>{e.added.forEach(i=>i.select()),e.removed.forEach(i=>i.deselect())}),this.options.changes.pipe(si(null),fn(this._destroy)).subscribe(()=>{this._resetOptions(),this._initializeSelection()})}ngDoCheck(){const e=this._getTriggerAriaLabelledby(),i=this.ngControl;if(e!==this._triggerAriaLabelledBy){const o=this._elementRef.nativeElement;this._triggerAriaLabelledBy=e,e?o.setAttribute("aria-labelledby",e):o.removeAttribute("aria-labelledby")}i&&(this._previousControl!==i.control&&(void 0!==this._previousControl&&null!==i.disabled&&i.disabled!==this.disabled&&(this.disabled=i.disabled),this._previousControl=i.control),this.updateErrorState())}ngOnChanges(e){(e.disabled||e.userAriaDescribedBy)&&this.stateChanges.next(),e.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this.typeaheadDebounceInterval),e.panelClass&&this.panelClass instanceof Set&&(this.panelClass=Array.from(this.panelClass))}ngOnDestroy(){this._cleanupDetach?.(),this._keyManager?.destroy(),this._destroy.next(),this._destroy.complete(),this.stateChanges.complete(),this._clearFromModal()}toggle(){this.panelOpen?this.close():this.open()}open(){this._canOpen()&&(this._parentFormField&&(this._preferredOverlayOrigin=this._parentFormField.getConnectedOverlayOrigin()),this._cleanupDetach?.(),this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._applyModalPanelOwnership(),this._panelOpen=!0,this._overlayDir.positionChange.pipe(Cn(1)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this._positioningSettled()}),this._overlayDir.attachOverlay(),this._keyManager.withHorizontalOrientation(null),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck(),this.stateChanges.next(),Promise.resolve().then(()=>this.openedChange.emit(!0)))}_trackedModal=null;_applyModalPanelOwnership(){const e=this._elementRef.nativeElement.closest('body > .cdk-overlay-container [aria-modal="true"]');if(!e)return;const i=`${this.id}-panel`;this._trackedModal&&mk(this._trackedModal,"aria-owns",i),VB(e,"aria-owns",i),this._trackedModal=e}_clearFromModal(){this._trackedModal&&(mk(this._trackedModal,"aria-owns",`${this.id}-panel`),this._trackedModal=null)}close(){this._panelOpen&&(this._panelOpen=!1,this._exitAndDetach(),this._keyManager.withHorizontalOrientation(this._isRtl()?"rtl":"ltr"),this._changeDetectorRef.markForCheck(),this._onTouched(),this.stateChanges.next(),Promise.resolve().then(()=>this.openedChange.emit(!1)))}_exitAndDetach(){if(this._animationsDisabled||!this.panel)return void this._detachOverlay();this._cleanupDetach?.(),this._cleanupDetach=()=>{i(),clearTimeout(o),this._cleanupDetach=void 0};const e=this.panel.nativeElement,i=this._renderer.listen(e,"animationend",r=>{"_mat-select-exit"===r.animationName&&(this._cleanupDetach?.(),this._detachOverlay())}),o=setTimeout(()=>{this._cleanupDetach?.(),this._detachOverlay()},200);e.classList.add("mat-select-panel-exit")}_detachOverlay(){this._overlayDir.detachOverlay(),this._changeDetectorRef.markForCheck()}writeValue(e){this._assignValue(e)}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}get panelOpen(){return this._panelOpen}get selected(){return this.multiple?this._selectionModel?.selected||[]:this._selectionModel?.selected[0]}get triggerValue(){if(this.empty)return"";if(this._multiple){const e=this._selectionModel.selected.map(i=>i.viewValue);return this._isRtl()&&e.reverse(),e.join(", ")}return this._selectionModel.selected[0].viewValue}updateErrorState(){this._errorStateTracker.updateErrorState()}_isRtl(){return!!this._dir&&"rtl"===this._dir.value}_handleKeydown(e){this.disabled||(this.panelOpen?this._handleOpenKeydown(e):this._handleClosedKeydown(e))}_handleClosedKeydown(e){const i=e.keyCode,o=40===i||38===i||37===i||39===i,r=13===i||32===i,s=this._keyManager;if(!s.isTyping()&&r&&!yr(e)||(this.multiple||e.altKey)&&o)e.preventDefault(),this.open();else if(!this.multiple){const a=this.selected;s.onKeydown(e);const l=this.selected;l&&a!==l&&this._liveAnnouncer.announce(l.viewValue,1e4)}}_handleOpenKeydown(e){const i=this._keyManager,o=e.keyCode,r=40===o||38===o,s=i.isTyping();if(r&&e.altKey)e.preventDefault(),this.close();else if(s||13!==o&&32!==o||!i.activeItem||yr(e))if(!s&&this._multiple&&65===o&&e.ctrlKey){e.preventDefault();const a=this.options.some(l=>!l.disabled&&!l.selected);this.options.forEach(l=>{l.disabled||(a?l.select():l.deselect())})}else{const a=i.activeItemIndex;i.onKeydown(e),this._multiple&&r&&e.shiftKey&&i.activeItem&&i.activeItemIndex!==a&&i.activeItem._selectViaInteraction()}else e.preventDefault(),i.activeItem._selectViaInteraction()}_handleOverlayKeydown(e){27===e.keyCode&&!yr(e)&&(e.preventDefault(),this.close())}_onFocus(){this.disabled||(this._focused=!0,this.stateChanges.next())}_onBlur(){this._focused=!1,this._keyManager?.cancelTypeahead(),!this.disabled&&!this.panelOpen&&(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}get empty(){return!this._selectionModel||this._selectionModel.isEmpty()}_initializeSelection(){Promise.resolve().then(()=>{this.ngControl&&(this._value=this.ngControl.value),this._setSelectionByValue(this._value),this.stateChanges.next()})}_setSelectionByValue(e){if(this.options.forEach(i=>i.setInactiveStyles()),this._selectionModel.clear(),this.multiple&&e)Array.isArray(e),e.forEach(i=>this._selectOptionByValue(i)),this._sortValues();else{const i=this._selectOptionByValue(e);i?this._keyManager.updateActiveItem(i):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}_selectOptionByValue(e){const i=this.options.find(o=>{if(this._selectionModel.isSelected(o))return!1;try{return(null!=o.value||this.canSelectNullableOptions)&&this._compareWith(o.value,e)}catch{return!1}});return i&&this._selectionModel.select(i),i}_assignValue(e){return!!(e!==this._value||this._multiple&&Array.isArray(e))&&(this.options&&this._setSelectionByValue(e),this._value=e,!0)}_skipPredicate=e=>!this.panelOpen&&e.disabled;_getOverlayWidth(e){return"auto"===this.panelWidth?(e instanceof kb?e.elementRef:e||this._elementRef).nativeElement.getBoundingClientRect().width:null===this.panelWidth?"":this.panelWidth}_syncParentProperties(){if(this.options)for(const e of this.options)e._changeDetectorRef.markForCheck()}_initKeyManager(){this._keyManager=new Ime(this.options).withTypeAhead(this.typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?"rtl":"ltr").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(["shiftKey"]).skipPredicate(this._skipPredicate),this._keyManager.tabOut.subscribe(()=>{this.panelOpen&&(!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction(),this.focus(),this.close())}),this._keyManager.change.subscribe(()=>{this._panelOpen&&this.panel?this._scrollOptionIntoView(this._keyManager.activeItemIndex||0):!this._panelOpen&&!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction()})}_resetOptions(){const e=Cr(this.options.changes,this._destroy);this.optionSelectionChanges.pipe(fn(e)).subscribe(i=>{this._onSelect(i.source,i.isUserInput),i.isUserInput&&!this.multiple&&this._panelOpen&&(this.close(),this.focus())}),Cr(...this.options.map(i=>i._stateChanges)).pipe(fn(e)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this.stateChanges.next()})}_onSelect(e,i){const o=this._selectionModel.isSelected(e);this.canSelectNullableOptions||null!=e.value||this._multiple?(o!==e.selected&&(e.selected?this._selectionModel.select(e):this._selectionModel.deselect(e)),i&&this._keyManager.setActiveItem(e),this.multiple&&(this._sortValues(),i&&this.focus())):(e.deselect(),this._selectionModel.clear(),null!=this.value&&this._propagateChanges(e.value)),o!==this._selectionModel.isSelected(e)&&this._propagateChanges(),this.stateChanges.next()}_sortValues(){if(this.multiple){const e=this.options.toArray();this._selectionModel.sort((i,o)=>this.sortComparator?this.sortComparator(i,o,e):e.indexOf(i)-e.indexOf(o)),this.stateChanges.next()}}_propagateChanges(e){let i;i=this.multiple?this.selected.map(o=>o.value):this.selected?this.selected.value:e,this._value=i,this.valueChange.emit(i),this._onChange(i),this.selectionChange.emit(this._getChangeEvent(i)),this._changeDetectorRef.markForCheck()}_highlightCorrectOption(){if(this._keyManager)if(this.empty){let e=-1;for(let i=0;i0&&!!this._overlayDir}focus(e){this._elementRef.nativeElement.focus(e)}_getPanelAriaLabelledby(){if(this.ariaLabel)return null;const e=this._parentFormField?.getLabelId()||null;return this.ariaLabelledby?(e?e+" ":"")+this.ariaLabelledby:e}_getAriaActiveDescendant(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}_getTriggerAriaLabelledby(){if(this.ariaLabel)return null;let e=this._parentFormField?.getLabelId()||"";return this.ariaLabelledby&&(e+=" "+this.ariaLabelledby),e||(e=this._valueId),e}get describedByIds(){return this._elementRef.nativeElement.getAttribute("aria-describedby")?.split(" ")||[]}setDescribedByIds(e){const i=this._elementRef.nativeElement;e.length?i.setAttribute("aria-describedby",e.join(" ")):i.removeAttribute("aria-describedby")}onContainerClick(e){const i=vr(e);i&&("MAT-OPTION"===i.tagName||i.classList.contains("cdk-overlay-backdrop")||i.closest(".mat-mdc-select-panel"))||(this.focus(),this.open())}get shouldLabelFloat(){return this.panelOpen||!this.empty||this.focused&&!!this.placeholder}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-select"]],contentQueries:function(i,o,r){if(1&i&&ys(r,tV,5)(r,Qr,5)(r,QB,5),2&i){let s;he(s=fe())&&(o.customTrigger=s.first),he(s=fe())&&(o.options=s),he(s=fe())&&(o.optionGroups=s)}},viewQuery:function(i,o){if(1&i&&ot(Rme,5)(Fme,5)(e4,5),2&i){let r;he(r=fe())&&(o.trigger=r.first),he(r=fe())&&(o.panel=r.first),he(r=fe())&&(o._overlayDir=r.first)}},hostAttrs:["role","combobox","aria-haspopup","listbox",1,"mat-mdc-select"],hostVars:21,hostBindings:function(i,o){1&i&&F("keydown",function(s){return o._handleKeydown(s)})("focus",function(){return o._onFocus()})("blur",function(){return o._onBlur()}),2&i&&($e("id",o.id)("tabindex",o.disabled?-1:o.tabIndex)("aria-controls",o.panelOpen?o.id+"-panel":null)("aria-expanded",o.panelOpen)("aria-label",o.ariaLabel||null)("aria-required",o.required.toString())("aria-disabled",o.disabled.toString())("aria-invalid",o.errorState)("aria-activedescendant",o._getAriaActiveDescendant()),Ie("mat-mdc-select-disabled",o.disabled)("mat-mdc-select-invalid",o.errorState)("mat-mdc-select-required",o.required)("mat-mdc-select-empty",o.empty)("mat-mdc-select-multiple",o.multiple)("mat-select-open",o.panelOpen))},inputs:{userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],panelClass:"panelClass",disabled:[2,"disabled","disabled",De],disableRipple:[2,"disableRipple","disableRipple",De],tabIndex:[2,"tabIndex","tabIndex",e=>null==e?0:hr(e)],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",De],placeholder:"placeholder",required:[2,"required","required",De],multiple:[2,"multiple","multiple",De],disableOptionCentering:[2,"disableOptionCentering","disableOptionCentering",De],compareWith:"compareWith",value:"value",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],errorStateMatcher:"errorStateMatcher",typeaheadDebounceInterval:[2,"typeaheadDebounceInterval","typeaheadDebounceInterval",hr],sortComparator:"sortComparator",id:"id",panelWidth:"panelWidth",canSelectNullableOptions:[2,"canSelectNullableOptions","canSelectNullableOptions",De]},outputs:{openedChange:"openedChange",_openedStream:"opened",_closedStream:"closed",selectionChange:"selectionChange",valueChange:"valueChange"},exportAs:["matSelect"],features:[lt([{provide:hk,useExisting:t},{provide:ZB,useExisting:t}]),_i],ngContentSelectors:Lme,decls:11,vars:10,consts:[["fallbackOverlayOrigin","cdkOverlayOrigin","trigger",""],["panel",""],["cdk-overlay-origin","",1,"mat-mdc-select-trigger",3,"click"],[1,"mat-mdc-select-value"],[1,"mat-mdc-select-placeholder","mat-mdc-select-min-line"],[1,"mat-mdc-select-value-text"],[1,"mat-mdc-select-arrow-wrapper"],[1,"mat-mdc-select-arrow"],["viewBox","0 0 24 24","width","24px","height","24px","focusable","false","aria-hidden","true"],["d","M7 10l5 5 5-5z"],["cdk-connected-overlay","","cdkConnectedOverlayHasBackdrop","","cdkConnectedOverlayBackdropClass","cdk-overlay-transparent-backdrop",3,"detach","backdropClick","overlayKeydown","cdkConnectedOverlayDisableClose","cdkConnectedOverlayPanelClass","cdkConnectedOverlayScrollStrategy","cdkConnectedOverlayOrigin","cdkConnectedOverlayPositions","cdkConnectedOverlayWidth","cdkConnectedOverlayFlexibleDimensions","cdkConnectedOverlayUsePopover"],[1,"mat-mdc-select-min-line"],["role","listbox","tabindex","-1",1,"mat-mdc-select-panel","mdc-menu-surface","mdc-menu-surface--open",3,"keydown"]],template:function(i,o){if(1&i&&(yi(Nme),h(0,"div",2,0),F("click",function(){return o.open()}),h(3,"div",3),x(4,Bme,2,1,"span",4)(5,jme,3,1,"span",5),u(),h(6,"div",6)(7,"div",7),rl(),h(8,"svg",8),B(9,"path",9),u()()()(),it(10,Ume,3,16,"ng-template",10),F("detach",function(){return o.close()})("backdropClick",function(){return o.close()})("overlayKeydown",function(s){return o._handleOverlayKeydown(s)})),2&i){const r=Hn(1);d(3),$e("id",o._valueId),d(),S(o.empty?4:5),d(6),C("cdkConnectedOverlayDisableClose",!0)("cdkConnectedOverlayPanelClass",o._overlayPanelClass)("cdkConnectedOverlayScrollStrategy",o._scrollStrategy)("cdkConnectedOverlayOrigin",o._preferredOverlayOrigin||r)("cdkConnectedOverlayPositions",o._positions)("cdkConnectedOverlayWidth",o._overlayWidth)("cdkConnectedOverlayFlexibleDimensions",!0)("cdkConnectedOverlayUsePopover",o._popoverLocation)}},dependencies:[kb,e4],styles:['@keyframes _mat-select-enter{from{opacity:0;transform:scaleY(0.8)}to{opacity:1;transform:none}}@keyframes _mat-select-exit{from{opacity:1}to{opacity:0}}.mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-sys-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-sys-body-large-tracking))}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-disabled .mat-mdc-select-placeholder{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color, var(--mat-sys-error))}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-select-open .mat-mdc-select-arrow{transform:rotate(180deg)}.mat-form-field-animations-enabled .mat-mdc-select-arrow{transition:transform 80ms linear}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}@media(forced-colors: active){.mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .mat-mdc-select-arrow svg{fill:GrayText}}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:relative;background-color:var(--mat-select-panel-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-select-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}.mat-select-panel-animations-enabled{animation:_mat-select-enter 120ms cubic-bezier(0, 0, 0.2, 1)}.mat-select-panel-animations-enabled.mat-select-panel-exit{animation:_mat-select-exit 100ms linear}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field:not(.mat-form-field-animations-enabled) .mat-mdc-select-placeholder,._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform, translateY(-8px))}\n'],encapsulation:2,changeDetection:0})}return t})(),Gme=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["mat-select-trigger"]],features:[lt([{provide:tV,useExisting:t}])]})}return t})(),qme=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[Zd,eV,ii,Rf,lv,eV]})}return t})();function Kme(t,n){if(1&t&&B(0,"input",6),2&t){const e=v().$implicit;C("formControlName",e.keyNameInFiltersObject)("maxlength",e.maxlength)}}function Yme(t,n){if(1&t&&(h(0,"div",10),B(1,"div",11),u()),2&t){const e=v().$implicit,i=v(2).$implicit;no("background-image: url('"+i.printableLabelGeneralSettings.defaultImage+"'); width: "+i.printableLabelGeneralSettings.imageWidth+"px; height: "+i.printableLabelGeneralSettings.imageHeight+"px;"),d(),no("background-image: url('"+e.image+"');")}}function Xme(t,n){if(1&t&&(h(0,"mat-option",8),x(1,Yme,2,4,"div",9),p(2),b(3,"translate"),u()),2&t){const e=n.$implicit,i=v(2).$implicit;C("value",e.value),d(),S(i.printableLabelGeneralSettings&&e.image?1:-1),d(),E(" ",y(3,3,e.label)," ")}}function Zme(t,n){if(1&t&&(h(0,"mat-select",7),ve(1,Xme,4,5,"mat-option",8,Fe),u()),2&t){const e=v().$implicit;C("formControlName",e.keyNameInFiltersObject),d(),ye(e.printableLabelsForValues)}}function Qme(t,n){if(1&t&&(h(0,"mat-form-field")(1,"div",4)(2,"label",5),p(3),b(4,"translate"),u(),x(5,Kme,1,2,"input",6),x(6,Zme,3,1,"mat-select",7),u()()),2&t){const e=n.$implicit,i=v();d(3),M(y(4,3,e.filterName)),d(2),S(e.type===i.filterFieldTypes.TextInput?5:-1),d(),S(e.type===i.filterFieldTypes.Select?6:-1)}}let Jme=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.data=e,this.dialogRef=i,this.formBuilder=o,this.filterFieldTypes=Sn}ngOnInit(){const e={};this.data.filterPropertiesList.forEach(i=>{e[i.keyNameInFiltersObject]=[this.data.currentFilters[i.keyNameInFiltersObject]]}),this.form=this.formBuilder.group(e)}apply(){const e={};this.data.filterPropertiesList.forEach(i=>{e[i.keyNameInFiltersObject]=this.form.get(i.keyNameInFiltersObject).value.trim()}),this.dialogRef.close(e)}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-filters-selection"]],standalone:!1,decls:9,vars:8,consts:[["button",""],[3,"headline","dialog"],[3,"formGroup"],["color","primary",1,"float-right",3,"action"],[1,"field-container"],["for","remoteKey",1,"field-label"],["matInput","",3,"formControlName","maxlength"],[3,"formControlName"],[3,"value"],[1,"image-container",3,"style"],[1,"image-container"],[1,"image"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2),ve(3,Qme,7,5,"mat-form-field",null,Fe),u(),h(5,"app-button",3,0),F("action",function(){return o.apply()}),p(7),b(8,"translate"),u()()),2&i&&(C("headline",y(1,4,"filters.filter-action"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(),ye(o.data.filterPropertiesList),d(4),E(" ",y(8,6,"common.ok")," "))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,In,Pa,Qr,ui,gn,xe],styles:[".image-container[_ngcontent-%COMP%]{display:inline-block;background-size:contain;margin-right:5px}.image-container[_ngcontent-%COMP%] .image[_ngcontent-%COMP%]{background-size:contain;width:100%;height:100%}"]})}}return t})();class _u{get currentFiltersTexts(){return this.currentFiltersTextsInternal}get currentUrlQueryParams(){return this.currentUrlQueryParamsInternal}get dataFiltered(){return this.dataUpdatedSubject.asObservable()}constructor(n,e,i,o,r){this.dialog=n,this.route=e,this.router=i,this.currentFiltersTextsInternal=[],this.dataUpdatedSubject=new me,this.filterPropertiesList=o,this.currentFilters={},this.filterPropertiesList.forEach(s=>{s.keyNameInFiltersObject=r+"_"+s.keyNameInElementsArray,this.currentFilters[s.keyNameInFiltersObject]=""}),this.navigationsSubscription=this.route.queryParamMap.subscribe(s=>{Object.keys(this.currentFilters).forEach(a=>{s.has(a)&&(this.currentFilters[a]=s.get(a))}),this.currentUrlQueryParamsInternal={},s.keys.forEach(a=>{this.currentUrlQueryParamsInternal[a]=s.get(a)}),this.filter()})}dispose(){this.dataUpdatedSubject.complete(),this.navigationsSubscription.unsubscribe()}setData(n){this.data=n,this.filter()}removeFilters(){const n=Rt.createConfirmationDialog(this.dialog,"filters.remove-confirmation");n.componentInstance.operationAccepted.subscribe(()=>{n.componentInstance.closeModal(),this.router.navigate([],{queryParams:{}})})}changeFilters(){Jme.openDialog(this.dialog,{filterPropertiesList:this.filterPropertiesList,currentFilters:this.currentFilters}).afterClosed().subscribe(e=>{e&&this.router.navigate([],{queryParams:e})})}filter(){if(this.data){let n,e=!1;Object.keys(this.currentFilters).forEach(i=>{this.currentFilters[i]&&(e=!0)}),e?(n=function vme(t,n,e){if(t){const i=[];return Object.keys(n).forEach(r=>{if(n[r])for(const s of e)if(s.keyNameInFiltersObject===r){i.push(s);break}}),t.filter(r=>{let s=!0;return i.forEach(a=>{const l=String(r[a.keyNameInElementsArray]).toLowerCase().includes(n[a.keyNameInFiltersObject].toLowerCase()),c=a.secondaryKeyNameInElementsArray&&String(r[a.secondaryKeyNameInElementsArray]).toLowerCase().includes(n[a.keyNameInFiltersObject].toLowerCase());!l&&!c&&(s=!1)}),s})}return null}(this.data,this.currentFilters,this.filterPropertiesList),this.updateCurrentFilters()):(n=this.data,this.updateCurrentFilters()),this.dataUpdatedSubject.next(n)}}updateCurrentFilters(){this.currentFiltersTextsInternal=function yme(t,n){const e=[];return n.forEach(i=>{if(t[i.keyNameInFiltersObject]){let o,r;i.printableLabelsForValues&&i.printableLabelsForValues.forEach(s=>{s.value===t[i.keyNameInFiltersObject]&&(r=s.label)}),r||(o=t[i.keyNameInFiltersObject]),e.push({filterName:i.filterName,translatableValue:r,value:o})}}),e}(this.currentFilters,this.filterPropertiesList)}}function ege(t,n){if(1&t){const e=oe();h(0,"div",3)(1,"div",4)(2,"div",5),p(3),u(),h(4,"div",6),p(5),u()(),h(6,"div",7)(7,"app-button",8),F("click",function(){const o=j(e).$implicit;return U(v(2).openTerminal(o.key))}),p(8),b(9,"translate"),u()()()}if(2&t){const e=n.$implicit;d(3),M(e.label),d(2),M(e.version),d(3),E(" ",y(9,3,"update-all.update-button")," ")}}function tge(t,n){if(1&t&&(h(0,"div",1),p(1),b(2,"translate"),u(),h(3,"div",2),ve(4,ege,10,5,"div",3,Fe),u()),2&t){const e=v();d(),E(" ",y(2,1,"update-all.updatable-list-text")," "),d(3),ye(e.updatableNodes)}}function nge(t,n){if(1&t&&(h(0,"div",6),p(1),u()),2&t){const e=v().$implicit;d(),M(e.tag)}}function ige(t,n){if(1&t&&(h(0,"div",3)(1,"div",4)(2,"div",5),p(3),u(),h(4,"div",6),p(5),u(),x(6,nge,2,1,"div",6),u()()),2&t){const e=n.$implicit;d(3),M(e.label),d(2),M(e.version),d(),S(e.tag?6:-1)}}function oge(t,n){if(1&t&&(h(0,"div",1),p(1),b(2,"translate"),u(),h(3,"div",2),ve(4,ige,7,3,"div",3,Fe),u()),2&t){const e=v();d(),E(" ",y(2,1,"update-all.non-updatable-list-text")," "),d(3),ye(e.nonUpdatableNodes)}}let rge=(()=>{class t{static openDialog(e,i,o){const r=new nn;return r.data=[i,o],r.autoFocus=!1,r.width=rt.smallModalWidth,e.open(t,r)}constructor(e,i){this.dialogRef=e,this.updatableNodes=i[0],this.nonUpdatableNodes=i[1]}openTerminal(e){const i=window.location.protocol,o=window.location.host.replace("localhost:4200","127.0.0.1:8000");window.open(i+"//"+o+"/pty/"+e+"?commands=update","_blank","noopener noreferrer")}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En))}}static{this.\u0275cmp=re({type:t,selectors:[["app-update-all"]],standalone:!1,decls:4,vars:6,consts:[[3,"headline","dialog"],[1,"text-container"],[1,"list-container"],[1,"list-element"],[1,"left-part"],[1,"name"],[1,"version"],[1,"right-part"],["color","primary",3,"click"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),b(1,"translate"),x(2,tge,6,3),x(3,oge,6,3),u()),2&i&&(C("headline",y(1,4,"update-all.title"))("dialog",o.dialogRef),d(2),S(o.updatableNodes&&o.updatableNodes.length>0?2:-1),d(),S(o.nonUpdatableNodes&&o.nonUpdatableNodes.length>0?3:-1))},dependencies:[ui,gn,xe],styles:[".text-container[_ngcontent-%COMP%]{word-break:break-word}.list-container[_ngcontent-%COMP%]{font-size:14px;margin:10px;color:#215f9e;word-break:break-word;line-height:1.2}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%]{display:flex;margin-bottom:10px}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%]{flex-grow:1;flex-shrink:1;align-self:center;margin-right:10px;min-width:0}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:575px){.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-size:.7rem}}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%] .version[_ngcontent-%COMP%]{font-size:.7rem;color:#777;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .right-part[_ngcontent-%COMP%]{flex-basis:0;flex-shrink:0}.list-container[_ngcontent-%COMP%] .details[_ngcontent-%COMP%]{color:#777}"]})}}return t})();const sge=["mat-internal-form-field",""],age=["*"];let nV=(()=>{class t{labelPosition="after";static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["div","mat-internal-form-field",""]],hostAttrs:[1,"mdc-form-field","mat-internal-form-field"],hostVars:2,hostBindings:function(i,o){2&i&&Ie("mdc-form-field--align-end","before"===o.labelPosition)},inputs:{labelPosition:"labelPosition"},attrs:sge,ngContentSelectors:age,decls:1,vars:0,template:function(i,o){1&i&&(yi(),Pt(0))},styles:[".mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-flex;align-items:center;vertical-align:middle}.mat-internal-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mat-internal-form-field>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end .mdc-form-field--align-end label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0}\n"],encapsulation:2,changeDetection:0})}return t})();const lge=["input"],cge=["label"],dge=["*"],xk={color:"accent",clickAction:"check-indeterminate",disabledInteractive:!1},uge=new Z("mat-checkbox-default-options",{providedIn:"root",factory:()=>xk});var Wi=function(t){return t[t.Init=0]="Init",t[t.Checked=1]="Checked",t[t.Unchecked=2]="Unchecked",t[t.Indeterminate=3]="Indeterminate",t}(Wi||{});class hge{source;checked}let kr=(()=>{class t{_elementRef=D(Re);_changeDetectorRef=D(Jt);_ngZone=D(_e);_animationsDisabled=ci();_options=D(uge,{optional:!0});focus(){this._inputElement.nativeElement.focus()}_createChangeEvent(e){const i=new hge;return i.source=this,i.checked=e,i}_getAnimationTargetElement(){return this._inputElement?.nativeElement}_animationClasses={uncheckedToChecked:"mdc-checkbox--anim-unchecked-checked",uncheckedToIndeterminate:"mdc-checkbox--anim-unchecked-indeterminate",checkedToUnchecked:"mdc-checkbox--anim-checked-unchecked",checkedToIndeterminate:"mdc-checkbox--anim-checked-indeterminate",indeterminateToChecked:"mdc-checkbox--anim-indeterminate-checked",indeterminateToUnchecked:"mdc-checkbox--anim-indeterminate-unchecked"};ariaLabel="";ariaLabelledby=null;ariaDescribedby;ariaExpanded;ariaControls;ariaOwns;_uniqueId;id;get inputId(){return`${this.id||this._uniqueId}-input`}required=!1;labelPosition="after";name=null;change=new we;indeterminateChange=new we;value;disableRipple=!1;_inputElement;_labelElement;tabIndex;color;disabledInteractive;_onTouched=()=>{};_currentAnimationClass="";_currentCheckState=Wi.Init;_controlValueAccessorChangeFn=()=>{};_validatorChangeFn=()=>{};constructor(){D(zo).load(tu);const e=D(new Yh("tabindex"),{optional:!0});this._options=this._options||xk,this.color=this._options.color||xk.color,this.tabIndex=null==e?0:parseInt(e)||0,this.id=this._uniqueId=D(ni).getId("mat-mdc-checkbox-"),this.disabledInteractive=this._options?.disabledInteractive??!1}ngOnChanges(e){e.required&&this._validatorChangeFn()}ngAfterViewInit(){this._syncIndeterminate(this.indeterminate)}get checked(){return this._checked}set checked(e){e!=this.checked&&(this._checked=e,this._changeDetectorRef.markForCheck())}_checked=!1;get disabled(){return this._disabled}set disabled(e){e!==this.disabled&&(this._disabled=e,this._changeDetectorRef.markForCheck())}_disabled=!1;get indeterminate(){return this._indeterminate()}set indeterminate(e){const i=e!=this._indeterminate();this._indeterminate.set(e),i&&(this._transitionCheckState(e?Wi.Indeterminate:this.checked?Wi.Checked:Wi.Unchecked),this.indeterminateChange.emit(e)),this._syncIndeterminate(e)}_indeterminate=yt(!1);_isRippleDisabled(){return this.disableRipple||this.disabled}_onLabelTextChange(){this._changeDetectorRef.detectChanges()}writeValue(e){this.checked=!!e}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}validate(e){return this.required&&!0!==e.value?{required:!0}:null}registerOnValidatorChange(e){this._validatorChangeFn=e}_transitionCheckState(e){let i=this._currentCheckState,o=this._getAnimationTargetElement();if(i!==e&&o&&(this._currentAnimationClass&&o.classList.remove(this._currentAnimationClass),this._currentAnimationClass=this._getAnimationClassForCheckStateTransition(i,e),this._currentCheckState=e,this._currentAnimationClass.length>0)){o.classList.add(this._currentAnimationClass);const r=this._currentAnimationClass;this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{o.classList.remove(r)},1e3)})}}_emitChangeEvent(){this._controlValueAccessorChangeFn(this.checked),this.change.emit(this._createChangeEvent(this.checked)),this._inputElement&&(this._inputElement.nativeElement.checked=this.checked)}toggle(){this.checked=!this.checked,this._controlValueAccessorChangeFn(this.checked)}_handleInputClick(){const e=this._options?.clickAction;this.disabled||"noop"===e?(this.disabled&&this.disabledInteractive||!this.disabled&&"noop"===e)&&(this._inputElement.nativeElement.checked=this.checked,this._inputElement.nativeElement.indeterminate=this.indeterminate):(this.indeterminate&&"check"!==e&&Promise.resolve().then(()=>{this._indeterminate.set(!1),this.indeterminateChange.emit(!1)}),this._checked=!this._checked,this._transitionCheckState(this._checked?Wi.Checked:Wi.Unchecked),this._emitChangeEvent())}_onInteractionEvent(e){e.stopPropagation()}_onBlur(){Promise.resolve().then(()=>{this._onTouched(),this._changeDetectorRef.markForCheck()})}_getAnimationClassForCheckStateTransition(e,i){if(this._animationsDisabled)return"";switch(e){case Wi.Init:if(i===Wi.Checked)return this._animationClasses.uncheckedToChecked;if(i==Wi.Indeterminate)return this._checked?this._animationClasses.checkedToIndeterminate:this._animationClasses.uncheckedToIndeterminate;break;case Wi.Unchecked:return i===Wi.Checked?this._animationClasses.uncheckedToChecked:this._animationClasses.uncheckedToIndeterminate;case Wi.Checked:return i===Wi.Unchecked?this._animationClasses.checkedToUnchecked:this._animationClasses.checkedToIndeterminate;case Wi.Indeterminate:return i===Wi.Checked?this._animationClasses.indeterminateToChecked:this._animationClasses.indeterminateToUnchecked}return""}_syncIndeterminate(e){const i=this._inputElement;i&&(i.nativeElement.indeterminate=e)}_onInputClick(){this._handleInputClick()}_onTouchTargetClick(){this._handleInputClick(),this.disabled||this._inputElement.nativeElement.focus()}_preventBubblingFromLabel(e){e.target&&this._labelElement.nativeElement.contains(e.target)&&e.stopPropagation()}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-checkbox"]],viewQuery:function(i,o){if(1&i&&ot(lge,5)(cge,5),2&i){let r;he(r=fe())&&(o._inputElement=r.first),he(r=fe())&&(o._labelElement=r.first)}},hostAttrs:[1,"mat-mdc-checkbox"],hostVars:16,hostBindings:function(i,o){2&i&&(ur("id",o.id),$e("tabindex",null)("aria-label",null)("aria-labelledby",null),Ze(o.color?"mat-"+o.color:"mat-accent"),Ie("_mat-animation-noopable",o._animationsDisabled)("mdc-checkbox--disabled",o.disabled)("mat-mdc-checkbox-disabled",o.disabled)("mat-mdc-checkbox-checked",o.checked)("mat-mdc-checkbox-disabled-interactive",o.disabledInteractive))},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],ariaExpanded:[2,"aria-expanded","ariaExpanded",De],ariaControls:[0,"aria-controls","ariaControls"],ariaOwns:[0,"aria-owns","ariaOwns"],id:"id",required:[2,"required","required",De],labelPosition:"labelPosition",name:"name",value:"value",disableRipple:[2,"disableRipple","disableRipple",De],tabIndex:[2,"tabIndex","tabIndex",e=>null==e?void 0:hr(e)],color:"color",disabledInteractive:[2,"disabledInteractive","disabledInteractive",De],checked:[2,"checked","checked",De],disabled:[2,"disabled","disabled",De],indeterminate:[2,"indeterminate","indeterminate",De]},outputs:{change:"change",indeterminateChange:"indeterminateChange"},exportAs:["matCheckbox"],features:[lt([{provide:Yo,useExisting:Nt(()=>t),multi:!0},{provide:Ci,useExisting:t,multi:!0}]),_i],ngContentSelectors:dge,decls:15,vars:23,consts:[["checkbox",""],["input",""],["label",""],["mat-internal-form-field","",3,"click","labelPosition"],[1,"mdc-checkbox"],["aria-hidden","true",1,"mat-mdc-checkbox-touch-target",3,"click"],["type","checkbox",1,"mdc-checkbox__native-control",3,"blur","click","change","checked","indeterminate","disabled","id","required","tabIndex"],["aria-hidden","true",1,"mdc-checkbox__ripple"],["aria-hidden","true",1,"mdc-checkbox__background"],["focusable","false","viewBox","0 0 24 24",1,"mdc-checkbox__checkmark"],["fill","none","d","M1.73,12.91 8.1,19.28 22.79,4.59",1,"mdc-checkbox__checkmark-path"],[1,"mdc-checkbox__mixedmark"],["mat-ripple","","aria-hidden","true",1,"mat-mdc-checkbox-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-label",3,"for"]],template:function(i,o){if(1&i&&(yi(),h(0,"div",3),F("click",function(s){return o._preventBubblingFromLabel(s)}),h(1,"div",4,0)(3,"div",5),F("click",function(){return o._onTouchTargetClick()}),u(),h(4,"input",6,1),F("blur",function(){return o._onBlur()})("click",function(){return o._onInputClick()})("change",function(s){return o._onInteractionEvent(s)}),u(),B(6,"div",7),h(7,"div",8),rl(),h(8,"svg",9),B(9,"path",10),u(),Gy(),B(10,"div",11),u(),B(11,"div",12),u(),h(12,"label",13,2),Pt(14),u()()),2&i){const r=Hn(2);C("labelPosition",o.labelPosition),d(4),Ie("mdc-checkbox--selected",o.checked),C("checked",o.checked)("indeterminate",o.indeterminate)("disabled",o.disabled&&!o.disabledInteractive)("id",o.inputId)("required",o.required)("tabIndex",o.disabled&&!o.disabledInteractive?-1:o.tabIndex),$e("aria-label",o.ariaLabel||null)("aria-labelledby",o.ariaLabelledby)("aria-describedby",o.ariaDescribedby)("aria-checked",o.indeterminate?"mixed":null)("aria-controls",o.ariaControls)("aria-disabled",!(!o.disabled||!o.disabledInteractive)||null)("aria-expanded",o.ariaExpanded)("aria-owns",o.ariaOwns)("name",o.name)("value",o.value),d(7),C("matRippleTrigger",r)("matRippleDisabled",o.disableRipple||o.disabled)("matRippleCentered",!0),d(),C("for",o.inputId)}},dependencies:[eu,nV],styles:['.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom;padding:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2);margin:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox:hover>.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity));background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:hover>.mat-mdc-checkbox-ripple>.mat-ripple-element{background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity));background-color:var(--mat-checkbox-unselected-focus-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-unselected-focus-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:active>.mdc-checkbox__native-control+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));background-color:var(--mat-checkbox-unselected-pressed-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:active>.mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-unselected-pressed-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity));background-color:var(--mat-checkbox-selected-hover-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-hover-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity));background-color:var(--mat-checkbox-selected-focus-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-focus-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:active>.mdc-checkbox__native-control:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));background-color:var(--mat-checkbox-selected-pressed-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:active>.mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-pressed-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control+.mdc-checkbox__ripple{background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1;width:var(--mat-checkbox-state-layer-size, 40px);height:var(--mat-checkbox-state-layer-size, 40px);top:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2);right:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2);left:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms cubic-bezier(0.4, 0, 0.6, 1);-webkit-print-color-adjust:exact;color-adjust:exact;border-color:var(--mat-checkbox-unselected-icon-color, var(--mat-sys-on-surface-variant));top:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2);left:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2)}.mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-icon-color, var(--mat-sys-primary))}.mdc-checkbox--disabled .mdc-checkbox__background{border-color:var(--mat-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox__native-control:disabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:disabled:indeterminate~.mdc-checkbox__background{background-color:var(--mat-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:rgba(0,0,0,0)}@media(forced-colors: active){.mdc-checkbox__native-control:disabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:disabled:indeterminate~.mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox:hover>.mdc-checkbox__native-control:not(:checked)~.mdc-checkbox__background,.mdc-checkbox:hover>.mdc-checkbox__native-control:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mat-checkbox-unselected-hover-icon-color, var(--mat-sys-on-surface));background-color:rgba(0,0,0,0)}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox:hover>.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-hover-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-hover-icon-color, var(--mat-sys-primary))}.mdc-checkbox__native-control:focus:focus:not(:checked)~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mat-checkbox-unselected-focus-icon-color, var(--mat-sys-on-surface))}.mdc-checkbox__native-control:focus:focus:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-focus-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-focus-icon-color, var(--mat-sys-primary))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox:hover>.mdc-checkbox__native-control~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__background{border-color:var(--mat-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox:hover>.mdc-checkbox__native-control~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{background-color:var(--mat-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:rgba(0,0,0,0)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms cubic-bezier(0.4, 0, 0.6, 1);color:var(--mat-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}@media(forced-colors: active){.mdc-checkbox__checkmark{color:CanvasText}}.mdc-checkbox--disabled .mdc-checkbox__checkmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:var(--mat-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__checkmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:GrayText}}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);border-color:var(--mat-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}@media(forced-colors: active){.mdc-checkbox__mixedmark{margin:0 1px}}.mdc-checkbox--disabled .mdc-checkbox__mixedmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__mixedmark{border-color:var(--mat-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__mixedmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__mixedmark{border-color:GrayText}}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__checkmark{transition:opacity 180ms cubic-bezier(0, 0, 0.2, 1),transform 180ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mat-mdc-checkbox{display:inline-block;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mat-mdc-checkbox-touch-target,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__native-control,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__ripple,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mat-mdc-checkbox-ripple::before,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__mixedmark{transition:none !important;animation:none !important}.mat-mdc-checkbox label{cursor:pointer}.mat-mdc-checkbox .mat-internal-form-field{color:var(--mat-checkbox-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-checkbox-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-checkbox-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-checkbox-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-checkbox-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-checkbox-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive{pointer-events:auto}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive input{cursor:default}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{cursor:default;color:var(--mat-checkbox-disabled-label-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:GrayText}}.mat-mdc-checkbox label:empty{display:none}.mat-mdc-checkbox .mdc-checkbox__ripple{opacity:0}.mat-mdc-checkbox .mat-mdc-checkbox-ripple,.mdc-checkbox__ripple{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-checkbox .mat-mdc-checkbox-ripple:not(:empty),.mdc-checkbox__ripple:not(:empty){transform:translateZ(0)}.mat-mdc-checkbox-ripple .mat-ripple-element{opacity:.1}.mat-mdc-checkbox-touch-target{position:absolute;top:50%;left:50%;height:var(--mat-checkbox-touch-target-size, 48px);width:var(--mat-checkbox-touch-target-size, 48px);transform:translate(-50%, -50%);display:var(--mat-checkbox-touch-target-display, block)}.mat-mdc-checkbox .mat-mdc-checkbox-ripple::before{border-radius:50%}.mdc-checkbox__native-control:focus-visible~.mat-focus-indicator::before{content:""}\n'],encapsulation:2,changeDetection:0})}return t})(),fge=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[kr,ii]})}return t})();const pge=["button"],mge=t=>({"element-disabled":t}),gge=t=>({"element-margin":t});function _ge(t,n){1&t&&(h(0,"span",17),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"bulk-rewards.checking")))}function bge(t,n){if(1&t&&(h(0,"span",18)(1,"span"),p(2),b(3,"translate"),u(),h(4,"span"),p(5),b(6,"translate"),u()()),2&t){const e=v(2).$implicit;d(2),E(" ",y(3,2,"bulk-rewards.error-checking")),d(3),E(" ",y(6,4,e.operationError))}}function vge(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v(2).$implicit;d(),E(" ",e.currentAddress)}}function yge(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"bulk-rewards.not-registered")))}function Cge(t,n){if(1&t&&(Vr(0,12),h(1,"mat-checkbox",13)(2,"div")(3,"div",14),p(4),u(),h(5,"div",15)(6,"span",16),p(7),b(8,"translate"),u(),x(9,_ge,3,3,"span",17),x(10,bge,7,6,"span",18),x(11,vge,2,1,"span"),x(12,yge,3,3,"span"),u()()(),cr()),2&t){const e=v(),i=e.$implicit;C("formGroupName",e.$index),d(4),E(" ",i.label," "),d(3),M(y(8,7,"bulk-rewards.current-address")),d(2),S(null!==i.currentAddress||i.operationError?-1:9),d(),S(i.operationError?10:-1),d(),S(i.currentAddress&&!i.operationError?11:-1),d(),S(""!==i.currentAddress||i.operationError?-1:12)}}function wge(t,n){1&t&&(h(0,"span",17),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"bulk-rewards.processing")))}function xge(t,n){if(1&t&&(h(0,"span",18)(1,"span"),p(2),b(3,"translate"),u(),h(4,"span"),p(5),b(6,"translate"),u()()),2&t){const e=v(2).$implicit;d(2),E(" ",y(3,2,"bulk-rewards.error-processing")),d(3),E(" ",y(6,4,e.operationError))}}function Sge(t,n){1&t&&(h(0,"span",22),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"bulk-rewards.done")))}function kge(t,n){if(1&t&&(h(0,"div",19),p(1,"-"),u(),h(2,"div",20),p(3),h(4,"div",21),x(5,wge,3,3,"span",17),x(6,xge,7,6,"span",18),x(7,Sge,3,3,"span",22),u()()),2&t){const e=v().$implicit;d(3),E(" ",e.label," "),d(2),S(e.processing&&!e.operationError?5:-1),d(),S(e.operationError?6:-1),d(),S(e.processing||e.operationError?-1:7)}}function Dge(t,n){if(1&t&&(h(0,"div",9),x(1,Cge,13,9,"ng-container",12),x(2,kge,8,4),u()),2&t){const e=v();C("ngClass",se(3,gge,e.processingStarted)),d(),S(e.processingStarted?-1:1),d(),S(e.processingStarted?2:-1)}}function Mge(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"bulk-rewards.perform-changes")," ")}function Tge(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"common.close")," ")}let Ege=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.nodeService=o,this.formBuilder=r,this.dialog=s,this.processingStarted=!1,this.processingFinished=!1,this.currentlyProcessed=0,this.form=r.group({address:["",Ne.compose([Ne.minLength(20),Ne.maxLength(112)])],nodes:r.array([])}),i.nodes.forEach(a=>{const l=this.formBuilder.group({selected:[!0]});this.form.get("nodes").push(l)}),this.startChecking()}formValid(){if(!this.processingStarted){if(!this.form.valid)return!1;let e=0;return this.form.get("nodes").controls.forEach((i,o)=>{i.get("selected")?.value&&(e+=1)}),e>0}return!0}get disableDismiss(){return this.processingStarted&&!this.processingFinished}startChecking(){this.nodesToEdit=[],this.data.nodes.forEach(e=>{this.nodesToEdit.push({key:e.key,label:e.label,currentAddress:null,operationError:"",processing:!1})}),this.operationSubscriptions=[],this.nodesToEdit.forEach((e,i)=>{this.operationSubscriptions.push(this.nodeService.getRewardsAddress(e.key).subscribe(o=>{this.nodesToEdit[i].currentAddress=o},o=>{this.nodesToEdit[i].operationError=o.translatableErrorMsg?o.translatableErrorMsg:o.originalServerErrorMsg}))})}checkBeforeProcessing(){if(this.form.valid)if(this.form.get("address").value)this.startProcessing();else{const i=Rt.createConfirmationDialog(this.dialog,"bulk-rewards.empty-warning");i.componentInstance.operationAccepted.subscribe(()=>{i.componentInstance.closeModal(),this.startProcessing()})}}startProcessing(){this.processingStarted=!0,this.button.showLoading(),this.closeoperationSubscriptions();const e=[];this.form.get("nodes").controls.forEach((o,r)=>{o.get("selected")?.value&&(this.nodesToEdit[r].operationError="",this.nodesToEdit[r].processing=!0,e.push(this.nodesToEdit[r]))}),this.nodesToEdit=e;const i=this.form.get("address").value;this.form.get("address").disable(),this.currentlyProcessed=0,this.operationSubscriptions=[],this.nodesToEdit.forEach((o,r)=>{let s=this.nodeService.setRewardsAddress(o.key,i);i||(s=this.nodeService.deleteRewardsAddress(o.key)),this.operationSubscriptions.push(ae(0).pipe(li(100),It(()=>s)).subscribe(a=>{this.nodesToEdit[r].processing=!1,this.currentlyProcessed+=1,this.currentlyProcessed===this.nodesToEdit.length&&(this.processingFinished=!0,this.button.reset())},a=>{this.nodesToEdit[r].processing=!1,this.nodesToEdit[r].operationError=a.translatableErrorMsg?a.translatableErrorMsg:a.originalServerErrorMsg,this.currentlyProcessed+=1,this.currentlyProcessed===this.nodesToEdit.length&&(this.processingFinished=!0,this.button.reset())}))})}ngOnDestroy(){this.closeoperationSubscriptions()}closeoperationSubscriptions(){this.operationSubscriptions&&this.operationSubscriptions.forEach(e=>e.unsubscribe())}closeModal(){this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(Io),O(di),O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-bulk-reward-address-changer"]],viewQuery:function(i,o){if(1&i&&ot(pge,5),2&i){let r;he(r=fe())&&(o.button=r.first)}},standalone:!1,decls:31,vars:27,consts:[["button",""],[3,"headline","dialog","disableDismiss"],[3,"formGroup"],[1,"text-container"],["href","https://github.com/skycoin/skywire/blob/develop/rewards/mainnet_rules.md","target","_blank","rel","noreferrer nofollow noopener"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","address","maxlength","112","matInput","",3,"ngClass"],["formArrayName","nodes",1,"list-container"],[1,"list-element",3,"ngClass"],[1,"buttons"],["type","mat-raised-button","color","primary",3,"action","disabled"],[3,"formGroupName"],["color","primary","formControlName","selected"],[1,"contents"],[1,"address","contents"],[1,"address-label"],[1,"blinking"],[1,"red-text"],[1,"left-area"],[1,"right-area","contents"],[1,"address"],[1,"green-text"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2)(3,"div",3)(4,"span"),p(5),b(6,"translate"),u(),h(7,"a",4),p(8),b(9,"translate"),u()(),h(10,"mat-form-field")(11,"div",5)(12,"label",6),p(13),b(14,"translate"),u(),B(15,"input",7),u(),h(16,"mat-error")(17,"span"),p(18),b(19,"translate"),u()()(),h(20,"div",3),p(21),b(22,"translate"),u(),h(23,"div",8),ve(24,Dge,3,5,"div",9,Fe),u()(),h(26,"div",10)(27,"app-button",11,0),F("action",function(){return o.processingStarted?o.closeModal():o.checkBeforeProcessing()}),x(29,Mge,2,3),x(30,Tge,2,3),u()()()),2&i&&(C("headline",y(1,13,"bulk-rewards.title"))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),d(2),C("formGroup",o.form),d(3),E("",y(6,15,"bulk-rewards.info")," "),d(3),E(" ",y(9,17,"bulk-rewards.more-info-link")," "),d(5),M(y(14,19,"rewards-address-config.address")),d(2),C("ngClass",se(25,mge,o.processingStarted)),d(3),M(y(19,21,"rewards-address-config.address-error")),d(3),E(" ",y(22,23,"bulk-rewards.select-visors")," "),d(3),ye(o.nodesToEdit),d(3),C("disabled",!o.formValid()),d(2),S(o.processingStarted?-1:29),d(),S(o.processingStarted?30:-1))},dependencies:[$t,xn,Gt,qt,wn,wi,on,mn,sc,du,sn,Ma,In,kr,ui,gn,xe],styles:[".text-container[_ngcontent-%COMP%]{word-break:break-word}mat-form-field[_ngcontent-%COMP%]{margin-top:10px}.list-container[_ngcontent-%COMP%]{font-size:14px;margin:10px;color:#215f9e;word-break:break-word}.list-container[_ngcontent-%COMP%] .element-margin[_ngcontent-%COMP%]{margin:15px 0}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%]{display:flex}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-area[_ngcontent-%COMP%]{width:12px;flex-grow:0;flex-shrink:0}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .right-area[_ngcontent-%COMP%]{flex-grow:1}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .contents[_ngcontent-%COMP%]{white-space:normal;line-height:1.2}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .address[_ngcontent-%COMP%]{font-size:.7rem;color:#777}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .address[_ngcontent-%COMP%] .address-label[_ngcontent-%COMP%]{opacity:.7}.buttons[_ngcontent-%COMP%]{margin-top:15px;text-align:right}.buttons[_ngcontent-%COMP%] app-button[_ngcontent-%COMP%]{margin-left:5px}"]})}}return t})(),np=(()=>{class t{constructor(e){this.dom=e}copy(e){let i=null;try{return i=this.dom.createElement("textarea"),i.style.height="0px",i.style.left="-100px",i.style.opacity="0",i.style.position="fixed",i.style.top="-100px",i.style.width="0px",this.dom.body.appendChild(i),i.value=e,i.select(),this.dom.execCommand("copy"),!0}catch{return!1}finally{i&&i.parentNode&&i.parentNode.removeChild(i)}}static{this.\u0275fac=function(i){return new(i||t)(ce(et))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac})}}return t})(),Pge=(()=>{class t{constructor(e){this.http=e,this.rewardSystemUrl="/api/rewards",this.rewardDataCache=new Map,this.cachedDates=[],this.fetching=!1}getLastNDays(e){const i=[];for(let o=0;o0}fetchRewardData(e){return this.hasCache()?ae(this.rewardDataCache):(this.fetching=!0,zf(e.map(o=>this.http.get(`${this.rewardSystemUrl}/skycoin-rewards/visor/${o}?days=7`).pipe(Se(r=>({pk:o,history:r&&r.history?r.history:[]})),Ui(()=>ae({pk:o,history:[]}))))).pipe(Se(o=>{const r=new Map;for(const{pk:s,history:a}of o){const l={pk:s,rewardAddress:"",dailyAmounts:{},dailySent:{},weekTotal:0};for(const c of a)c.date&&(l.dailyAmounts[c.date]=c.amount||0,l.dailySent[c.date]=c.sent||!1,l.weekTotal+=c.amount||0);r.set(s,l)}return this.rewardDataCache=r,this.cachedDates=this.getLastNDays(7),this.fetching=!1,r}),Ui(o=>(this.fetching=!1,ae(new Map)))))}clearCache(){this.rewardDataCache=new Map,this.cachedDates=[]}static{this.\u0275fac=function(i){return new(i||t)(ce(ba))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();class iV extends JB{_origin="program";setFocusOrigin(n){return this._origin=n,this}setActiveItem(n){super.setActiveItem(n),this.activeItem&&this.activeItem.focus(this._origin)}}const Ige=["mat-menu-item",""],Oge=[[["mat-icon"],["","matMenuItemIcon",""]],"*"],Age=["mat-icon, [matMenuItemIcon]","*"];function Rge(t,n){1&t&&(rl(),h(0,"svg",2),B(1,"polygon",3),u())}const Fge=["*"];function Nge(t,n){if(1&t){const e=oe();vs(0,"div",0),qg("click",function(){return j(e),U(v().closed.emit("click"))})("animationstart",function(o){return j(e),U(v()._onAnimationStart(o.animationName))})("animationend",function(o){return j(e),U(v()._onAnimationDone(o.animationName))})("animationcancel",function(o){return j(e),U(v()._onAnimationDone(o.animationName))}),vs(1,"div",1),Pt(2),Ol()()}if(2&t){const e=v();Ze(e._classList),Ie("mat-menu-panel-animations-disabled",e._animationsDisabled)("mat-menu-panel-exit-animation","void"===e._panelAnimationState)("mat-menu-panel-animating",e._isAnimating()),ur("id",e.panelId),$e("aria-label",e.ariaLabel||null)("aria-labelledby",e.ariaLabelledby||null)("aria-describedby",e.ariaDescribedby||null)}}const Sk=new Z("MAT_MENU_PANEL");let As=(()=>{class t{_elementRef=D(Re);_document=D(et);_focusMonitor=D(ec);_parentMenu=D(Sk,{optional:!0});_changeDetectorRef=D(Jt);role="menuitem";disabled=!1;disableRipple=!1;_hovered=new me;_focused=new me;_highlighted=!1;_triggersSubmenu=!1;constructor(){D(zo).load(tu),this._parentMenu?.addItem?.(this)}focus(e,i){this._focusMonitor&&e?this._focusMonitor.focusVia(this._getHostElement(),e,i):this._getHostElement().focus(i),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(e){this.disabled&&(e.preventDefault(),e.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){const e=this._elementRef.nativeElement.cloneNode(!0),i=e.querySelectorAll("mat-icon, .material-icons");for(let o=0;o({overlapTrigger:!1,xPosition:"after",yPosition:"below",backdropClass:"cdk-overlay-transparent-backdrop"})}),kk="_mat-menu-enter",pv="_mat-menu-exit";let Jr=(()=>{class t{_elementRef=D(Re);_changeDetectorRef=D(Jt);_injector=D(He);_keyManager;_xPosition;_yPosition;_firstItemFocusRef;_exitFallbackTimeout;_animationsDisabled=ci();_allItems;_directDescendantItems=new id;_classList={};_panelAnimationState="void";_animationDone=new me;_isAnimating=yt(!1);parentMenu;direction;overlayPanelClass;backdropClass;ariaLabel;ariaLabelledby;ariaDescribedby;get xPosition(){return this._xPosition}set xPosition(e){this._xPosition=e,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(e){this._yPosition=e,this.setPositionClasses()}templateRef;items;lazyContent;overlapTrigger=!1;hasBackdrop;set panelClass(e){const i=this._previousPanelClass,o={...this._classList};i&&i.length&&i.split(" ").forEach(r=>{o[r]=!1}),this._previousPanelClass=e,e&&e.length&&(e.split(" ").forEach(r=>{o[r]=!0}),this._elementRef.nativeElement.className=""),this._classList=o}_previousPanelClass;get classList(){return this.panelClass}set classList(e){this.panelClass=e}closed=new we;close=this.closed;panelId=D(ni).getId("mat-menu-panel-");constructor(){const e=D(Bge);this.overlayPanelClass=e.overlayPanelClass||"",this._xPosition=e.xPosition,this._yPosition=e.yPosition,this.backdropClass=e.backdropClass,this.overlapTrigger=e.overlapTrigger,this.hasBackdrop=e.hasBackdrop}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new iV(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit("tab")),this._directDescendantItems.changes.pipe(si(this._directDescendantItems),tn(e=>Cr(...e.map(i=>i._focused)))).subscribe(e=>this._keyManager.updateActiveItem(e)),this._directDescendantItems.changes.subscribe(e=>{const i=this._keyManager;if("enter"===this._panelAnimationState&&i.activeItem?._hasFocus()){const o=e.toArray(),r=Math.max(0,Math.min(o.length-1,i.activeItemIndex||0));o[r]&&!o[r].disabled?i.setActiveItem(r):i.setNextItemActive()}})}ngOnDestroy(){this._keyManager?.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),this._firstItemFocusRef?.destroy(),clearTimeout(this._exitFallbackTimeout)}_hovered(){return this._directDescendantItems.changes.pipe(si(this._directDescendantItems),tn(i=>Cr(...i.map(o=>o._hovered))))}addItem(e){}removeItem(e){}_handleKeydown(e){const i=e.keyCode,o=this._keyManager;switch(i){case 27:yr(e)||(e.preventDefault(),this.closed.emit("keydown"));break;case 37:this.parentMenu&&"ltr"===this.direction&&this.closed.emit("keydown");break;case 39:this.parentMenu&&"rtl"===this.direction&&this.closed.emit("keydown");break;default:return(38===i||40===i)&&o.setFocusOrigin("keyboard"),void o.onKeydown(e)}}focusFirstItem(e="program"){this._firstItemFocusRef?.destroy(),this._firstItemFocusRef=Vi(()=>{const i=this._resolvePanel();if(!i||!i.contains(document.activeElement)){const o=this._keyManager;o.setFocusOrigin(e).setFirstItemActive(),!o.activeItem&&i&&i.focus()}},{injector:this._injector})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(e){}setPositionClasses(e=this.xPosition,i=this.yPosition){this._classList={...this._classList,"mat-menu-before":"before"===e,"mat-menu-after":"after"===e,"mat-menu-above":"above"===i,"mat-menu-below":"below"===i},this._changeDetectorRef.markForCheck()}_onAnimationDone(e){const i=e===pv;(i||e===kk)&&(i&&(clearTimeout(this._exitFallbackTimeout),this._exitFallbackTimeout=void 0),this._animationDone.next(i?"void":"enter"),this._isAnimating.set(!1))}_onAnimationStart(e){(e===kk||e===pv)&&this._isAnimating.set(!0)}_setIsOpen(e){if(this._panelAnimationState=e?"enter":"void",e){if(0===this._keyManager.activeItemIndex){const i=this._resolvePanel();i&&(i.scrollTop=0)}}else this._animationsDisabled||(this._exitFallbackTimeout=setTimeout(()=>this._onAnimationDone(pv),200));this._animationsDisabled&&setTimeout(()=>{this._onAnimationDone(e?kk:pv)}),this._changeDetectorRef.markForCheck()}_updateDirectDescendants(){this._allItems.changes.pipe(si(this._allItems)).subscribe(e=>{this._directDescendantItems.reset(e.filter(i=>i._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}_resolvePanel(){let e=null;return this._directDescendantItems.length&&(e=this._directDescendantItems.first._getHostElement().closest('[role="menu"]')),e}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-menu"]],contentQueries:function(i,o,r){if(1&i&&ys(r,Lge,5)(r,As,5)(r,As,4),2&i){let s;he(s=fe())&&(o.lazyContent=s.first),he(s=fe())&&(o._allItems=s),he(s=fe())&&(o.items=s)}},viewQuery:function(i,o){if(1&i&&ot(Ti,5),2&i){let r;he(r=fe())&&(o.templateRef=r.first)}},hostVars:3,hostBindings:function(i,o){2&i&&$e("aria-label",null)("aria-labelledby",null)("aria-describedby",null)},inputs:{backdropClass:"backdropClass",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:[2,"overlapTrigger","overlapTrigger",De],hasBackdrop:[2,"hasBackdrop","hasBackdrop",e=>null==e?null:De(e)],panelClass:[0,"class","panelClass"],classList:"classList"},outputs:{closed:"closed",close:"close"},exportAs:["matMenu"],features:[lt([{provide:Sk,useExisting:t}])],ngContentSelectors:Fge,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-mdc-menu-panel",3,"click","animationstart","animationend","animationcancel","id"],[1,"mat-mdc-menu-content"]],template:function(i,o){1&i&&(yi(),Eg(0,Nge,3,12,"ng-template"))},styles:['mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-sys-label-large-weight))}@keyframes _mat-menu-enter{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:none}}@keyframes _mat-menu-exit{from{opacity:1}to{opacity:0}}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;box-sizing:border-box;outline:0;animation:_mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1);border-radius:var(--mat-menu-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-sys-surface-container));box-shadow:var(--mat-menu-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));will-change:transform,opacity}.mat-mdc-menu-panel.mat-menu-panel-exit-animation{animation:_mat-menu-exit 100ms 25ms linear forwards}.mat-mdc-menu-panel.mat-menu-panel-animations-disabled{animation:none}.mat-mdc-menu-panel.mat-menu-panel-animating{pointer-events:none}.mat-mdc-menu-panel.mat-menu-panel-animating:has(.mat-mdc-menu-content:empty){display:none}@media(forced-colors: active){.mat-mdc-menu-panel{outline:solid 1px}}.mat-mdc-menu-panel .mat-divider{border-top-color:var(--mat-menu-divider-color, var(--mat-sys-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing, 8px);margin-top:var(--mat-menu-divider-top-spacing, 8px)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px;padding-left:var(--mat-menu-item-leading-spacing, 12px);padding-right:var(--mat-menu-item-trailing-spacing, 12px);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-menu-item::-moz-focus-inner{border:0}[dir=rtl] .mat-mdc-menu-item{padding-left:var(--mat-menu-item-trailing-spacing, 12px);padding-right:var(--mat-menu-item-leading-spacing, 12px)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-trailing-spacing, 12px)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-trailing-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-leading-spacing, 12px)}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing, 12px);height:var(--mat-menu-item-icon-size, 24px);width:var(--mat-menu-item-icon-size, 24px)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing, 12px)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}@media(forced-colors: active){.mat-mdc-menu-item{margin-top:1px}}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size, 24px);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing, 12px)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing, 12px);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1);transform-origin:center}@media(forced-colors: active){.mat-mdc-menu-submenu-icon{fill:CanvasText}}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n'],encapsulation:2,changeDetection:0})}return t})();const Vge=new Z("mat-menu-scroll-strategy",{providedIn:"root",factory:()=>{const t=D(He);return()=>Bf(t)}}),bu=new WeakMap;let Hge=(()=>{class t{_canHaveBackdrop;_element=D(Re);_viewContainerRef=D(Ei);_menuItemInstance=D(As,{optional:!0,self:!0});_dir=D(br,{optional:!0});_focusMonitor=D(ec);_ngZone=D(_e);_injector=D(He);_scrollStrategy=D(Vge);_changeDetectorRef=D(Jt);_animationsDisabled=ci();_portal;_overlayRef=null;_menuOpen=!1;_closingActionsSubscription=pt.EMPTY;_menuCloseSubscription=pt.EMPTY;_pendingRemoval;_parentMaterialMenu;_parentInnerPadding;_openedBy=void 0;get _menu(){return this._menuInternal}set _menu(e){e!==this._menuInternal&&(this._menuInternal=e,this._menuCloseSubscription.unsubscribe(),e&&(this._menuCloseSubscription=e.close.subscribe(i=>{this._destroyMenu(i),("click"===i||"tab"===i)&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(i)})),this._menuItemInstance?._setTriggersSubmenu(this._triggersSubmenu()))}_menuInternal=null;constructor(e){this._canHaveBackdrop=e;const i=D(Sk,{optional:!0});this._parentMaterialMenu=i instanceof Jr?i:void 0}ngOnDestroy(){this._menu&&this._ownsMenu(this._menu)&&bu.delete(this._menu),this._pendingRemoval?.unsubscribe(),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null)}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this._menu)}_closeMenu(){this._menu?.close.emit()}_openMenu(e){if(this._triggerIsAriaDisabled())return;const i=this._menu;if(this._menuOpen||!i)return;this._pendingRemoval?.unsubscribe();const o=bu.get(i);bu.set(i,this),o&&o!==this&&o._closeMenu();const r=this._createOverlay(i),s=r.getConfig(),a=s.positionStrategy;this._setPosition(i,a),s.hasBackdrop=this._canHaveBackdrop?null==i.hasBackdrop?!this._triggersSubmenu():i.hasBackdrop:i.hasBackdrop??!1,r.hasAttached()||(r.attach(this._getPortal(i)),i.lazyContent?.attach(this.menuData)),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this._closeMenu()),i.parentMenu=this._triggersSubmenu()?this._parentMaterialMenu:void 0,i.direction=this.dir,e&&i.focusFirstItem(this._openedBy||"program"),this._setIsMenuOpen(!0),i instanceof Jr&&(i._setIsOpen(!0),i._directDescendantItems.changes.pipe(fn(i.close)).subscribe(()=>{a.withLockedPosition(!1).reapplyLastPosition(),a.withLockedPosition(!0)}))}focus(e,i){this._focusMonitor&&e?this._focusMonitor.focusVia(this._element,e,i):this._element.nativeElement.focus(i)}_destroyMenu(e){const i=this._overlayRef,o=this._menu;!i||!this.menuOpen||(this._closingActionsSubscription.unsubscribe(),this._pendingRemoval?.unsubscribe(),o instanceof Jr&&this._ownsMenu(o)?(this._pendingRemoval=o._animationDone.pipe(Cn(1)).subscribe(()=>{i.detach(),bu.has(o)||o.lazyContent?.detach()}),o._setIsOpen(!1)):(i.detach(),o?.lazyContent?.detach()),o&&this._ownsMenu(o)&&bu.delete(o),this.restoreFocus&&("keydown"===e||!this._openedBy||!this._triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,this._setIsMenuOpen(!1))}_setIsMenuOpen(e){e!==this._menuOpen&&(this._menuOpen=e,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this._triggersSubmenu()&&this._menuItemInstance._setHighlighted(e),this._changeDetectorRef.markForCheck())}_createOverlay(e){if(!this._overlayRef){const i=this._getOverlayConfig(e);this._subscribeToPositions(e,i.positionStrategy),this._overlayRef=Xd(this._injector,i),this._overlayRef.keydownEvents().subscribe(o=>{this._menu instanceof Jr&&this._menu._handleKeydown(o)})}return this._overlayRef}_getOverlayConfig(e){return new Vf({positionStrategy:xb(this._injector,this._getOverlayOrigin()).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:e.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:e.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir||"ltr",disableAnimations:this._animationsDisabled})}_subscribeToPositions(e,i){e.setPositionClasses&&i.positionChanges.subscribe(o=>{this._ngZone.run(()=>{e.setPositionClasses("start"===o.connectionPair.overlayX?"after":"before","top"===o.connectionPair.overlayY?"below":"above")})})}_setPosition(e,i){let[o,r]="before"===e.xPosition?["end","start"]:["start","end"],[s,a]="above"===e.yPosition?["bottom","top"]:["top","bottom"],[l,c]=[s,a],[f,m]=[o,r],g=0;if(this._triggersSubmenu()){if(m=o="before"===e.xPosition?"start":"end",r=f="end"===o?"start":"end",this._parentMaterialMenu){if(null==this._parentInnerPadding){const _=this._parentMaterialMenu.items.first;this._parentInnerPadding=_?_._getHostElement().offsetTop:0}g="bottom"===s?this._parentInnerPadding:-this._parentInnerPadding}}else e.overlapTrigger||(l="top"===s?"bottom":"top",c="top"===a?"bottom":"top");i.withPositions([{originX:o,originY:l,overlayX:f,overlayY:s,offsetY:g},{originX:r,originY:l,overlayX:m,overlayY:s,offsetY:g},{originX:o,originY:c,overlayX:f,overlayY:a,offsetY:-g},{originX:r,originY:c,overlayX:m,overlayY:a,offsetY:-g}])}_menuClosingActions(){const e=this._getOutsideClickStream(this._overlayRef),i=this._overlayRef.detachments();return Cr(e,this._parentMaterialMenu?this._parentMaterialMenu.closed:ae(),this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe(Tn(s=>this._menuOpen&&s!==this._menuItemInstance)):ae(),i)}_getPortal(e){return(!this._portal||this._portal.templateRef!==e.templateRef)&&(this._portal=new Yl(e.templateRef,this._viewContainerRef)),this._portal}_ownsMenu(e){return bu.get(e)===this}_triggerIsAriaDisabled(){return De(this._element.nativeElement.getAttribute("aria-disabled"))}static \u0275fac=function(i){B1()};static \u0275dir=de({type:t})}return t})(),vu=(()=>{class t extends Hge{_cleanupTouchstart;_hoverSubscription=pt.EMPTY;get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(e){this.menu=e}get menu(){return this._menu}set menu(e){this._menu=e}menuData;restoreFocus=!0;menuOpened=new we;onMenuOpen=this.menuOpened;menuClosed=new we;onMenuClose=this.menuClosed;constructor(){super(!0);const e=D(Qn);this._cleanupTouchstart=e.listen(this._element.nativeElement,"touchstart",i=>{CS(i)||(this._openedBy="touch")},{passive:!0})}triggersSubmenu(){return super._triggersSubmenu()}toggleMenu(){return this.menuOpen?this.closeMenu():this.openMenu()}openMenu(){this._openMenu(!0)}closeMenu(){this._closeMenu()}updatePosition(){this._overlayRef?.updatePosition()}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){super.ngOnDestroy(),this._cleanupTouchstart(),this._hoverSubscription.unsubscribe()}_getOverlayOrigin(){return this._element}_getOutsideClickStream(e){return e.backdropClick()}_handleMousedown(e){yS(e)||(this._openedBy=0===e.button?"mouse":void 0,this.triggersSubmenu()&&e.preventDefault())}_handleKeydown(e){const i=e.keyCode;(13===i||32===i)&&(this._openedBy="keyboard"),this.triggersSubmenu()&&(39===i&&"ltr"===this.dir||37===i&&"rtl"===this.dir)&&(this._openedBy="keyboard",this.openMenu())}_handleClick(e){this.triggersSubmenu()?(e.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){this.triggersSubmenu()&&this._parentMaterialMenu&&(this._hoverSubscription=this._parentMaterialMenu._hovered().subscribe(e=>{e===this._menuItemInstance&&!e.disabled&&"void"!==this._parentMaterialMenu?._panelAnimationState&&(this._openedBy="mouse",this._openMenu(!1))}))}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:[1,"mat-mdc-menu-trigger"],hostVars:3,hostBindings:function(i,o){1&i&&F("click",function(s){return o._handleClick(s)})("mousedown",function(s){return o._handleMousedown(s)})("keydown",function(s){return o._handleKeydown(s)}),2&i&&$e("aria-haspopup",o.menu?"menu":null)("aria-expanded",o.menuOpen)("aria-controls",o.menuOpen?null==o.menu?null:o.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:[0,"mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:[0,"matMenuTriggerFor","menu"],menuData:[0,"matMenuTriggerData","menuData"],restoreFocus:[0,"matMenuTriggerRestoreFocus","restoreFocus"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"},exportAs:["matMenuTrigger"],features:[be]})}return t})(),jge=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[IS,Zd,ii,Rf]})}return t})();const oV=()=>["1"],Ia=t=>[t],rV=t=>({number:t});function Uge(t,n){if(1&t&&(h(0,"a",4)(1,"mat-icon",10),p(2,"chevron_left"),u(),p(3),b(4,"translate"),u()),2&t){const e=v();C("routerLink",e.linkParts.concat(Ct(6,oV)))("queryParams",e.queryParams),d(),C("inline",!0),d(2),E(" ",y(4,4,"paginator.first")," ")}}function zge(t,n){if(1&t&&(h(0,"a",5)(1,"mat-icon",10),p(2,"chevron_left"),u(),h(3,"span",11),p(4),b(5,"translate"),u()()),2&t){const e=v();C("routerLink",e.linkParts.concat(Ct(6,oV)))("queryParams",e.queryParams),d(),C("inline",!0),d(3),M(y(5,4,"paginator.first"))}}function $ge(t,n){if(1&t&&(h(0,"a",4)(1,"div")(2,"mat-icon",10),p(3,"chevron_left"),u()()()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(3,Ia,(e.currentPage-1).toString())))("queryParams",e.queryParams),d(2),C("inline",!0)}}function Wge(t,n){if(1&t&&(h(0,"a",4),p(1),u()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(3,Ia,(e.currentPage-2).toString())))("queryParams",e.queryParams),d(),M(e.currentPage-2)}}function Gge(t,n){if(1&t&&(h(0,"a",6),p(1),u()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(3,Ia,(e.currentPage-1).toString())))("queryParams",e.queryParams),d(),M(e.currentPage-1)}}function qge(t,n){if(1&t&&(h(0,"a",6),p(1),u()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(3,Ia,(e.currentPage+1).toString())))("queryParams",e.queryParams),d(),M(e.currentPage+1)}}function Kge(t,n){if(1&t&&(h(0,"a",4),p(1),u()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(3,Ia,(e.currentPage+2).toString())))("queryParams",e.queryParams),d(),M(e.currentPage+2)}}function Yge(t,n){if(1&t&&(h(0,"a",4)(1,"div")(2,"mat-icon",10),p(3,"chevron_right"),u()()()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(3,Ia,(e.currentPage+1).toString())))("queryParams",e.queryParams),d(2),C("inline",!0)}}function Xge(t,n){if(1&t&&(h(0,"a",4),p(1),b(2,"translate"),h(3,"mat-icon",10),p(4,"chevron_right"),u()()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(6,Ia,e.numberOfPages.toString())))("queryParams",e.queryParams),d(),E(" ",y(2,4,"paginator.last")," "),d(2),C("inline",!0)}}function Zge(t,n){if(1&t&&(h(0,"a",5)(1,"mat-icon",10),p(2,"chevron_right"),u(),h(3,"span",11),p(4),b(5,"translate"),u()()),2&t){const e=v();C("routerLink",e.linkParts.concat(se(6,Ia,e.numberOfPages.toString())))("queryParams",e.queryParams),d(),C("inline",!0),d(3),M(y(5,4,"paginator.last"))}}function Qge(t,n){if(1&t&&(h(0,"div",8),p(1),b(2,"translate"),u()),2&t){const e=v();d(),M(pe(2,1,"paginator.total",se(4,rV,e.numberOfPages)))}}function Jge(t,n){if(1&t&&(h(0,"div",9),p(1),b(2,"translate"),u()),2&t){const e=v();d(),M(pe(2,1,"paginator.total",se(4,rV,e.numberOfPages)))}}let mv=(()=>{class t{constructor(e,i){this.dialog=e,this.router=i,this.linkParts=[""],this.queryParams={}}openSelectionDialog(){const e=[];for(let i=1;i<=this.numberOfPages;i++)e.push({label:i.toString()});ao.openDialog(this.dialog,e,"paginator.select-page-title").afterClosed().subscribe(i=>{i&&this.router.navigate(this.linkParts.concat([i.toString()]),{queryParams:this.queryParams})})}static{this.\u0275fac=function(i){return new(i||t)(O(Ot),O(vt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-paginator"]],inputs:{currentPage:"currentPage",numberOfPages:"numberOfPages",linkParts:"linkParts",queryParams:"queryParams"},standalone:!1,decls:21,vars:13,consts:[[1,"main-container"],[1,"d-inline-block","small-rounded-elevated-box","mt-3"],[1,"d-flex"],[1,"responsive-height","d-md-none"],[1,"d-none","d-md-flex",3,"routerLink","queryParams"],[1,"d-flex","d-md-none","flex-column",3,"routerLink","queryParams"],[3,"routerLink","queryParams"],[1,"selected",3,"click"],[1,"d-none","d-md-block","total-pages"],[1,"d-block","d-md-none","total-pages"],[3,"inline"],[1,"label"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3),p(4,"\xa0"),B(5,"br"),p(6,"\xa0"),u(),x(7,Uge,5,7,"a",4),x(8,zge,6,7,"a",5),x(9,$ge,4,5,"a",4),x(10,Wge,2,5,"a",4),x(11,Gge,2,5,"a",6),h(12,"a",7),F("click",function(){return o.openSelectionDialog()}),p(13),u(),x(14,qge,2,5,"a",6),x(15,Kge,2,5,"a",4),x(16,Yge,4,5,"a",4),x(17,Xge,5,8,"a",4),x(18,Zge,6,8,"a",5),u()(),x(19,Qge,3,6,"div",8),x(20,Jge,3,6,"div",9),u()),2&i&&(d(7),S(o.currentPage>3?7:-1),d(),S(o.currentPage>2?8:-1),d(),S(o.currentPage>1?9:-1),d(),S(o.currentPage>2?10:-1),d(),S(o.currentPage>1?11:-1),d(2),M(o.currentPage),d(),S(o.currentPage3?19:-1),d(),S(o.numberOfPages>2?20:-1))},dependencies:[Is,We,xe],styles:[".main-container[_ngcontent-%COMP%]{text-align:right}.main-container[_ngcontent-%COMP%] .responsive-height[_ngcontent-%COMP%]{padding:10px 0;width:0px}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:10px;border-right:rgba(255,255,255,.15) solid 1px;border-left:rgba(255,255,255,.15) solid 1px;min-width:40px;text-align:center;color:#f8f9f980;text-decoration:none;display:flex;align-items:center;justify-content:center}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:#0003}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:.7rem}.main-container[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{color:#f8f9f9;background:#0000005c;padding:10px 20px;cursor:pointer}.main-container[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]:hover{background:#0009}.main-container[_ngcontent-%COMP%] .total-pages[_ngcontent-%COMP%]{font-size:.6rem;margin-top:-3px;margin-right:4px}"]})}}return t})();function ip(t){return Mn((n,e)=>{let i,r,o=!1;const s=()=>{i=n.subscribe(dn(e,void 0,void 0,a=>{r||(r=new me,ji(t(r)).subscribe(dn(e,()=>i?s():o=!0))),r&&r.next(a)})),o&&(i.unsubscribe(),i=null,o=!1,s())};s()})}const es={AF:"Afghanistan",AX:"Aland Islands",AL:"Albania",DZ:"Algeria",AS:"American Samoa",AD:"Andorra",AO:"Angola",AI:"Anguilla",AQ:"Antarctica",AG:"Antigua and Barbuda",AR:"Argentina",AM:"Armenia",AW:"Aruba",AU:"Australia",AT:"Austria",AZ:"Azerbaijan",BS:"Bahamas",BH:"Bahrain",BD:"Bangladesh",BB:"Barbados",BY:"Belarus",BE:"Belgium",BZ:"Belize",BJ:"Benin",BM:"Bermuda",BT:"Bhutan",BO:"Bolivia",BA:"Bosnia and Herzegovina",BW:"Botswana",BV:"Bouvet Island",BR:"Brazil",IO:"British Indian Ocean Territory",BN:"Brunei Darussalam",BG:"Bulgaria",BF:"Burkina Faso",BI:"Burundi",KH:"Cambodia",CM:"Cameroon",CA:"Canada",CV:"Cape Verde",KY:"Cayman Islands",CF:"Central African Republic",TD:"Chad",CL:"Chile",CN:"China",CX:"Christmas Island",CC:"Cocos (Keeling) Islands",CO:"Colombia",KM:"Comoros",CG:"Congo",CD:"Congo, Democratic Republic",CK:"Cook Islands",CR:"Costa Rica",CI:"Cote D'Ivoire",HR:"Croatia",CU:"Cuba",CY:"Cyprus",CZ:"Czech Republic",DK:"Denmark",DJ:"Djibouti",DM:"Dominica",DO:"Dominican Republic",EC:"Ecuador",EG:"Egypt",SV:"El Salvador",GQ:"Equatorial Guinea",ER:"Eritrea",EE:"Estonia",ET:"Ethiopia",FK:"Falkland Islands (Malvinas)",FO:"Faroe Islands",FJ:"Fiji",FI:"Finland",FR:"France",GF:"French Guiana",PF:"French Polynesia",TF:"French Southern Territories",GA:"Gabon",GM:"Gambia",GE:"Georgia",DE:"Germany",GH:"Ghana",GI:"Gibraltar",GR:"Greece",GL:"Greenland",GD:"Grenada",GP:"Guadeloupe",GU:"Guam",GT:"Guatemala",GG:"Guernsey",GN:"Guinea",GW:"Guinea-Bissau",GY:"Guyana",HT:"Haiti",HM:"Heard Island and Mcdonald Islands",VA:"Holy See (Vatican City State)",HN:"Honduras",HK:"Hong Kong",HU:"Hungary",IS:"Iceland",IN:"India",ID:"Indonesia",IR:"Iran",IQ:"Iraq",IE:"Ireland",IM:"Isle of Man",IL:"Israel",IT:"Italy",JM:"Jamaica",JP:"Japan",JE:"Jersey",JO:"Jordan",KZ:"Kazakhstan",KE:"Kenya",KI:"Kiribati",KP:"Korea (North)",KR:"Korea (South)",XK:"Kosovo",KW:"Kuwait",KG:"Kyrgyzstan",LA:"Laos",LV:"Latvia",LB:"Lebanon",LS:"Lesotho",LR:"Liberia",LY:"Libyan Arab Jamahiriya",LI:"Liechtenstein",LT:"Lithuania",LU:"Luxembourg",MO:"Macao",MK:"Macedonia",MG:"Madagascar",MW:"Malawi",MY:"Malaysia",MV:"Maldives",ML:"Mali",MT:"Malta",MH:"Marshall Islands",MQ:"Martinique",MR:"Mauritania",MU:"Mauritius",YT:"Mayotte",MX:"Mexico",FM:"Micronesia",MD:"Moldova",MC:"Monaco",MN:"Mongolia",MS:"Montserrat",MA:"Morocco",MZ:"Mozambique",MM:"Myanmar",NA:"Namibia",NR:"Nauru",NP:"Nepal",NL:"Netherlands",AN:"Netherlands Antilles",NC:"New Caledonia",NZ:"New Zealand",NI:"Nicaragua",NE:"Niger",NG:"Nigeria",NU:"Niue",NF:"Norfolk Island",MP:"Northern Mariana Islands",NO:"Norway",OM:"Oman",PK:"Pakistan",PW:"Palau",PS:"Palestinian Territory, Occupied",PA:"Panama",PG:"Papua New Guinea",PY:"Paraguay",PE:"Peru",PH:"Philippines",PN:"Pitcairn",PL:"Poland",PT:"Portugal",PR:"Puerto Rico",QA:"Qatar",RE:"Reunion",RO:"Romania",RU:"Russian Federation",RW:"Rwanda",SH:"Saint Helena",KN:"Saint Kitts and Nevis",LC:"Saint Lucia",PM:"Saint Pierre and Miquelon",VC:"Saint Vincent and the Grenadines",WS:"Samoa",SM:"San Marino",ST:"Sao Tome and Principe",SA:"Saudi Arabia",SN:"Senegal",RS:"Serbia",ME:"Montenegro",SC:"Seychelles",SL:"Sierra Leone",SG:"Singapore",SK:"Slovakia",SI:"Slovenia",SB:"Solomon Islands",SO:"Somalia",ZA:"South Africa",GS:"South Georgia and the South Sandwich Islands",ES:"Spain",LK:"Sri Lanka",SD:"Sudan",SR:"Suriname",SJ:"Svalbard and Jan Mayen",SZ:"Swaziland",SE:"Sweden",CH:"Switzerland",SY:"Syrian Arab Republic",TW:"Taiwan, Province of China",TJ:"Tajikistan",TZ:"Tanzania",TH:"Thailand",TL:"Timor-Leste",TG:"Togo",TK:"Tokelau",TO:"Tonga",TT:"Trinidad and Tobago",TN:"Tunisia",TR:"Turkey",TM:"Turkmenistan",TC:"Turks and Caicos Islands",TV:"Tuvalu",UG:"Uganda",UA:"Ukraine",AE:"United Arab Emirates",GB:"United Kingdom",US:"United States",UM:"United States Minor Outlying Islands",UY:"Uruguay",UZ:"Uzbekistan",VU:"Vanuatu",VE:"Venezuela",VN:"Viet Nam",VG:"Virgin Islands, British",VI:"Virgin Islands, U.S.",WF:"Wallis and Futuna",EH:"Western Sahara",YE:"Yemen",ZM:"Zambia",ZW:"Zimbabwe",ZZ:"Unknown"};let Rs=(()=>{class t{constructor(e){this.apiService=e}changeAppState(e,i,o){return this.apiService.put(`visors/${e}/apps/${encodeURIComponent(i)}`,{status:o?1:0})}changeAppAutostart(e,i,o){return this.changeAppSettings(e,i,{autostart:o})}changeAppSettings(e,i,o){return this.apiService.put(`visors/${e}/apps/${encodeURIComponent(i)}`,o)}getLogMessages(e,i,o){const s=EF(-1!==o?Date.now()-864e5*o:0,"yyyy-MM-ddTHH:mm:ssZZZZZ","en-US");return this.apiService.get(this.getLogMessagesUrl(e,i)+`?since=${s}`).pipe(Se(a=>a.logs))}getLogMessagesUrl(e,i){return`visors/${e}/apps/${encodeURIComponent(i)}/logs`}static{this.\u0275fac=function(i){return new(i||t)(ce(zi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var _n=function(t){return t.None="None",t.Favorite="Favorite",t.Blocked="Blocked",t}(_n||{}),Zo=function(t){return t.BitsSpeedAndBytesVolume="BitsSpeedAndBytesVolume",t.OnlyBytes="OnlyBytes",t.OnlyBits="OnlyBits",t}(Zo||{});let uc=(()=>{class t{constructor(e,i){this.router=e,this.storageService=i,this.maxHistoryElements=30,this.savedServersStorageKey="VpnServers",this.checkIpSettingStorageKey="VpnGetIp",this.dataUnitsSettingStorageKey="VpnDataUnits",this.serversMap=new Map,this.savedDataVersion=0,this.currentServerSubject=new oo(1),this.historySubject=new oo(1),this.favoritesSubject=new oo(1),this.blockedSubject=new oo(1)}initialize(){this.migrateDataToHvStorage(),this.serversMap=new Map;const e=this.storageService.getDataForHv(this.savedServersStorageKey);if(e){const i=JSON.parse(e);i.serverList.forEach(o=>{this.serversMap.set(o.pk,o)}),this.savedDataVersion=i.version,i.selectedServerPk&&this.updateCurrentServerPk(i.selectedServerPk)}this.launchListEvents()}migrateDataToHvStorage(){const e=localStorage.getItem(this.savedServersStorageKey);e&&(this.storageService.setDataForHv(this.savedServersStorageKey,e),localStorage.removeItem(this.savedServersStorageKey));const i=localStorage.getItem(this.checkIpSettingStorageKey);i&&(this.storageService.setDataForHv(this.checkIpSettingStorageKey,i),localStorage.removeItem(this.checkIpSettingStorageKey));const o=localStorage.getItem(this.dataUnitsSettingStorageKey);o&&(this.storageService.setDataForHv(this.dataUnitsSettingStorageKey,o),localStorage.removeItem(this.dataUnitsSettingStorageKey))}get currentServer(){return this.serversMap.get(this.currentServerPk)}get currentServerObservable(){return this.currentServerSubject.asObservable()}get history(){return this.historySubject.asObservable()}get favorites(){return this.favoritesSubject.asObservable()}get blocked(){return this.blockedSubject.asObservable()}getSavedVersion(e,i){return i&&this.checkIfDataWasChanged(),this.serversMap.get(e)}getCheckIpSetting(){const e=this.storageService.getDataForHv(this.checkIpSettingStorageKey);return null==e||"false"!==e}setCheckIpSetting(e){this.storageService.setDataForHv(this.checkIpSettingStorageKey,e?"true":"false")}getDataUnitsSetting(){return this.storageService.getDataForHv(this.dataUnitsSettingStorageKey)??Zo.BitsSpeedAndBytesVolume}setDataUnitsSetting(e){this.storageService.setDataForHv(this.dataUnitsSettingStorageKey,e)}updateFromDiscovery(e){this.checkIfDataWasChanged(),e.forEach(i=>{if(this.serversMap.has(i.pk)){const o=this.serversMap.get(i.pk);o.countryCode=i.countryCode,o.name=i.name,o.location=i.location,o.note=i.note}}),this.saveData()}updateServer(e){this.serversMap.set(e.pk,e),this.cleanServers(),this.saveData()}processFromDiscovery(e){this.checkIfDataWasChanged();const i=this.serversMap.get(e.pk);return i?(i.countryCode=e.countryCode,i.name=e.name,i.location=e.location,i.note=e.note,this.saveData(),i):{countryCode:e.countryCode,name:e.name,customName:null,pk:e.pk,lastUsed:0,inHistory:!1,flag:_n.None,location:e.location,personalNote:null,note:e.note,enteredManually:!1,usedWithPassword:!1}}processFromManual(e){this.checkIfDataWasChanged();const i=this.serversMap.get(e.pk);return i?(i.customName=e.name,i.personalNote=e.note,i.enteredManually=!0,this.saveData(),i):{countryCode:"zz",name:"",customName:e.name,pk:e.pk,lastUsed:0,inHistory:!1,flag:_n.None,location:"",personalNote:e.note,note:"",enteredManually:!0,usedWithPassword:!1}}changeFlag(e,i){this.checkIfDataWasChanged();const o=this.serversMap.get(e.pk);o&&(e=o),e.flag!==i&&(e.flag=i,this.serversMap.has(e.pk)||this.serversMap.set(e.pk,e),this.cleanServers(),this.saveData())}removeFromHistory(e){this.checkIfDataWasChanged();const i=this.serversMap.get(e);!i||!i.inHistory||(i.inHistory=!1,this.cleanServers(),this.saveData())}modifyCurrentServer(e){this.checkIfDataWasChanged(),e.pk!==this.currentServerPk&&(this.serversMap.has(e.pk)||this.serversMap.set(e.pk,e),this.updateCurrentServerPk(e.pk),this.cleanServers(),this.saveData())}compareCurrentServer(e){if(this.checkIfDataWasChanged(),e){if(!this.currentServerPk||this.currentServerPk!==e){if(this.currentServerPk=e,!this.serversMap.get(e)){const o=this.processFromManual({pk:e});this.serversMap.set(o.pk,o),this.cleanServers()}this.saveData(),this.currentServerSubject.next(this.currentServer)}}else this.currentServerPk&&(this.currentServerPk=null,this.saveData(),this.currentServerSubject.next(this.currentServer))}updateHistory(){this.checkIfDataWasChanged(),this.currentServer.lastUsed=Date.now(),this.currentServer.inHistory=!0;let e=[];this.serversMap.forEach(o=>{o.inHistory&&e.push(o)}),e=e.sort((o,r)=>r.lastUsed-o.lastUsed);let i=0;e.forEach(o=>{i{!i.inHistory&&i.flag===_n.None&&i.pk!==this.currentServerPk&&!i.customName&&!i.personalNote&&e.push(i.pk)}),e.forEach(i=>{this.serversMap.delete(i)})}saveData(){let e=0;const i=this.storageService.getDataForHv(this.savedServersStorageKey);if(i&&(e=JSON.parse(i).version),e!==this.savedDataVersion)return void this.router.navigate(["vpn","unavailable"],{queryParams:{problem:"storage"}});this.savedDataVersion+=1;const o={version:this.savedDataVersion,serverList:Array.from(this.serversMap.values()),selectedServerPk:this.currentServerPk},r=JSON.stringify(o);this.storageService.setDataForHv(this.savedServersStorageKey,r),this.launchListEvents()}checkIfDataWasChanged(){let e=0;const i=this.storageService.getDataForHv(this.savedServersStorageKey);i&&(e=JSON.parse(i).version),e!==this.savedDataVersion&&this.initialize()}launchListEvents(){const e=[],i=[],o=[];this.serversMap.forEach(r=>{r.inHistory&&e.push(r),r.flag===_n.Favorite&&i.push(r),r.flag===_n.Blocked&&o.push(r)}),this.historySubject.next(e),this.favoritesSubject.next(i),this.blockedSubject.next(o)}updateCurrentServerPk(e){this.currentServerPk=e,this.currentServerSubject.next(this.currentServer)}static{this.\u0275fac=function(i){return new(i||t)(ce(vt),ce(ti))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var an=function(t){return t.Stopped="stopped",t.Connecting="Connecting",t.Running="Running",t.ShuttingDown="Shutting down",t.Reconnecting="Connection failed, reconnecting",t}(an||{});class e_e{constructor(){this.updateDate=Date.now()}}class t_e{}class n_e{constructor(){this.latency=0,this.uploadSpeed=0,this.downloadSpeed=0,this.totalUploaded=0,this.totalDownloaded=0,this.connectionDuration=0,this.error=""}}var Ri=function(t){return t[t.PerformingInitialCheck=1]="PerformingInitialCheck",t[t.Off=10]="Off",t[t.Starting=20]="Starting",t[t.Running=100]="Running",t[t.Disconnecting=200]="Disconnecting",t}(Ri||{}),Dr=function(t){return t[t.Busy=1]="Busy",t[t.Ok=2]="Ok",t[t.MustStop=3]="MustStop",t[t.SamePkRunning=4]="SamePkRunning",t[t.SamePkStopped=5]="SamePkStopped",t}(Dr||{});let hc=(()=>{class t{constructor(e,i,o,r,s,a,l){this.apiService=e,this.appsService=i,this.router=o,this.vpnSavedDataService=r,this.http=s,this.snackbarService=a,this.translateService=l,this.vpnClientAppName="vpn-client",this.standardWaitTime=2e3,this.stateSubject=new ki(null),this.errorSubject=new ki(!1),this.working=!0,this.requestedServer=null,this.requestedPassword=null,this.updatesStopped=!1,this.currentEventData=new e_e,this.currentEventData.busy=!0,this.lastServiceState=Ri.PerformingInitialCheck}initialize(e){e&&(this.nodeKey?e!==this.nodeKey?this.router.navigate(["vpn","unavailable"],{queryParams:{problem:"pkChange"}}):this.updatesStopped&&(this.updatesStopped=!1,this.updateData()):(this.nodeKey=e,this.vpnSavedDataService.initialize(),this.updateData()))}get backendState(){return this.stateSubject.asObservable()}get errorsConnecting(){return this.errorSubject.asObservable()}updateData(){this.continuallyUpdateData(0)}start(){return!this.working&&this.lastServiceState<20&&(this.changeAppState(!0),!0)}stop(){return!this.working&&this.lastServiceState>=20&&this.lastServiceState<200&&(this.changeAppState(!1),!0)}getIpData(){return this.http.request("GET",window.location.protocol+"//ip.skycoin.com/").pipe(ip(e=>Ts(e.pipe(li(this.standardWaitTime),Cn(4)),mr(""))),Se(e=>[e&&e.ip_address?e.ip_address:this.translateService.instant("common.unknown"),e&&e.country_name?e.country_name:this.translateService.instant("common.unknown")]))}changeServerUsingHistory(e,i){return this.requestedServer=e,this.requestedPassword=i,this.updateRequestedServerPasswordSetting(),this.changeServer()}changeServerUsingDiscovery(e,i){return this.requestedServer=this.vpnSavedDataService.processFromDiscovery(e),this.requestedPassword=i,this.updateRequestedServerPasswordSetting(),this.changeServer()}changeServerManually(e,i){return this.requestedServer=this.vpnSavedDataService.processFromManual(e),this.requestedPassword=i,this.updateRequestedServerPasswordSetting(),this.changeServer()}updateRequestedServerPasswordSetting(){this.requestedServer.usedWithPassword=!!this.requestedPassword&&""!==this.requestedPassword;const e=this.vpnSavedDataService.getSavedVersion(this.requestedServer.pk,!0);e&&(e.usedWithPassword=this.requestedServer.usedWithPassword,this.vpnSavedDataService.updateServer(e))}changeServer(){return!this.working&&(this.stop()||this.processServerChange(),!0)}checkNewPk(e){return this.working?Dr.Busy:this.lastServiceState!==Ri.Off?e===this.vpnSavedDataService.currentServer.pk?Dr.SamePkRunning:Dr.MustStop:this.vpnSavedDataService.currentServer&&e===this.vpnSavedDataService.currentServer.pk?Dr.SamePkStopped:Dr.Ok}processServerChange(){this.dataSubscription&&this.dataSubscription.unsubscribe();const e={pk:this.requestedServer.pk};e.passcode=this.requestedPassword?this.requestedPassword:"",this.stopContinuallyUpdatingData(),this.working=!0,this.sendUpdate(),this.dataSubscription=this.appsService.changeAppSettings(this.nodeKey,this.vpnClientAppName,e).subscribe(()=>{this.vpnSavedDataService.modifyCurrentServer(this.requestedServer),this.requestedServer=null,this.requestedPassword=null,this.working=!1,this.start()},i=>{i=Qe(i),this.snackbarService.showError("vpn.server-change.backend-error",null,!1,i.originalServerErrorMsg),this.working=!1,this.requestedServer=null,this.requestedPassword=null,this.sendUpdate(),this.updateData()})}changeAppState(e){if(this.working)return;this.stopContinuallyUpdatingData(),this.working=!0,this.sendUpdate();const i={status:1};e?(this.lastServiceState=Ri.Starting,this.connectionHistoryPk=null):(this.lastServiceState=Ri.Disconnecting,i.status=0),this.dataSubscription&&this.dataSubscription.unsubscribe(),this.dataSubscription=this.appsService.changeAppSettings(this.nodeKey,this.vpnClientAppName,i).pipe(Ui(o=>this.getVpnClientState().pipe(It(r=>{if(r){if(e&&r.running)return ae(!0);if(!e&&!r.running)return ae(!0)}return mr(o)}))),ip(o=>Ts(o.pipe(li(this.standardWaitTime),Cn(3)),o.pipe(It(r=>mr(r)))))).subscribe(o=>{this.working=!1;const r=this.processAppData(o);this.lastServiceState=r.running?Ri.Running:Ri.Off,this.currentEventData.vpnClientAppData=r,this.currentEventData.updateDate=Date.now(),this.sendUpdate(),this.updateData(),!e&&this.requestedServer&&this.processServerChange()},o=>{o=Qe(o),this.snackbarService.showError(this.lastServiceState===Ri.Starting?"vpn.status-page.problem-starting-error":this.lastServiceState===Ri.Disconnecting?"vpn.status-page.problem-stopping-error":"vpn.status-page.generic-problem-error",null,!1,o.originalServerErrorMsg),this.working=!1,this.sendUpdate(),this.updateData()})}continuallyUpdateData(e){if(this.working&&this.lastServiceState!==Ri.PerformingInitialCheck)return;this.continuousUpdateSubscription&&this.continuousUpdateSubscription.unsubscribe();let i=0;this.continuousUpdateSubscription=ae(0).pipe(li(e),It(()=>this.getVpnClientState()),ip(o=>o.pipe(It(r=>(this.errorSubject.next(!0),Xr.currentInstance.showDataProblemMsg(),(r=Qe(r)).originalError&&r.originalError.status&&401===r.originalError.status?mr(r):this.lastServiceState!==Ri.PerformingInitialCheck||i<4?(i+=1,ae(r).pipe(li(this.standardWaitTime))):mr(r)))))).subscribe(o=>{o?(this.errorSubject.next(!1),Xr.currentInstance.hideDataProblemMsg(),this.lastServiceState===Ri.PerformingInitialCheck&&(this.working=!1),this.vpnSavedDataService.compareCurrentServer(o.serverPk),this.lastServiceState=o.running?Ri.Running:Ri.Off,this.currentEventData.vpnClientAppData=o,this.currentEventData.updateDate=Date.now(),this.sendUpdate()):this.lastServiceState===Ri.PerformingInitialCheck&&(this.router.navigate(["vpn","unavailable"]),this.nodeKey=null,this.updatesStopped=!0),this.continuallyUpdateData(this.standardWaitTime)},o=>{(o=Qe(o)).originalError&&o.originalError.status&&401===o.originalError.status||(this.router.navigate(["vpn","unavailable"]),this.nodeKey=null),this.updatesStopped=!0})}stopContinuallyUpdatingData(){this.continuousUpdateSubscription&&this.continuousUpdateSubscription.unsubscribe()}getVpnClientState(){let e;const i=new qo;return i.vpnKeyForAuth=this.nodeKey,this.apiService.get(`visors/${this.nodeKey}/summary`,i).pipe(It(o=>{let r;if(o&&o.overview)if(this.visorPublicIp=o.overview.public_ip&&o.overview.public_ip.trim()?o.overview.public_ip:null,o.overview.country_code){this.visorCountryCode=o.overview.country_code;const s=es[o.overview.country_code.toUpperCase()];this.visorCountryName=s||o.overview.country_code}else this.visorCountryCode=null,this.visorCountryName=null;if(o&&o.overview&&o.overview.apps&&o.overview.apps.length>0&&o.overview.apps.forEach(s=>{s.name===this.vpnClientAppName&&(r=s)}),r&&(e=this.processAppData(r)),e.minHops=o.min_hops?o.min_hops:0,e&&e.running){const s=new qo;return s.vpnKeyForAuth=this.nodeKey,this.apiService.get(`visors/${this.nodeKey}/apps/${this.vpnClientAppName}/connections`,s)}return ae(null)}),Se(o=>{if(o&&o.length>0){const r=new n_e;o.forEach(s=>{r.latency+=s.latency/o.length,r.uploadSpeed+=s.upload_speed/o.length,r.downloadSpeed+=s.download_speed/o.length,r.totalUploaded+=s.bandwidth_sent,r.totalDownloaded+=s.bandwidth_received,s.error&&(r.error=s.error),s.connection_duration>r.connectionDuration&&(r.connectionDuration=s.connection_duration)}),(!this.connectionHistoryPk||this.connectionHistoryPk!==e.serverPk)&&(this.connectionHistoryPk=e.serverPk,this.uploadSpeedHistory=[0,0,0,0,0,0,0,0,0,0],this.downloadSpeedHistory=[0,0,0,0,0,0,0,0,0,0],this.latencyHistory=[0,0,0,0,0,0,0,0,0,0]),r.latency=Math.round(r.latency),r.uploadSpeed=Math.round(r.uploadSpeed),r.downloadSpeed=Math.round(r.downloadSpeed),r.totalUploaded=Math.round(r.totalUploaded),r.totalDownloaded=Math.round(r.totalDownloaded),this.uploadSpeedHistory.splice(0,1),this.uploadSpeedHistory.push(r.uploadSpeed),r.uploadSpeedHistory=this.uploadSpeedHistory,this.downloadSpeedHistory.splice(0,1),this.downloadSpeedHistory.push(r.downloadSpeed),r.downloadSpeedHistory=this.downloadSpeedHistory,this.latencyHistory.splice(0,1),this.latencyHistory.push(r.latency),r.latencyHistory=this.latencyHistory,e.connectionData=r}return e}))}processAppData(e){const i=new t_e;if(i.running=0!==e.status&&2!==e.status,i.connectionDuration=e.connection_duration,i.appState=an.Stopped,i.running?e.detailed_status===an.Connecting||3===e.status?i.appState=an.Connecting:e.detailed_status===an.Running?i.appState=an.Running:e.detailed_status===an.ShuttingDown?i.appState=an.ShuttingDown:e.detailed_status===an.Reconnecting&&(i.appState=an.Reconnecting):2===e.status&&(i.lastErrorMsg=e.detailed_status,i.lastErrorMsg||(i.lastErrorMsg=this.translateService.instant("vpn.status-page.unknown-error"))),i.killswitch=!1,e.args&&e.args.length>0)for(let o=0;o{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.formBuilder=o,this.snackbarService=r,this.vpnSavedDataService=s}ngOnInit(){this.form=this.formBuilder.group({value:[(this.data.editName?this.data.server.customName:this.data.server.personalNote)||""]}),setTimeout(()=>this.firstInput.nativeElement.focus())}process(){let e=this.vpnSavedDataService.getSavedVersion(this.data.server.pk,!0);e=e||this.data.server;const i=this.form.get("value").value;i!==(this.data.editName?this.data.server.customName:this.data.server.personalNote)?(this.data.editName?e.customName=i:e.personalNote=i,this.vpnSavedDataService.updateServer(e),this.snackbarService.showDone("vpn.server-options.edit-value.changes-made-confirmation"),this.dialogRef.close(!0)):this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(di),O(ct),O(uc))}}static{this.\u0275cmp=re({type:t,selectors:[["app-edit-vpn-server-value"]],viewQuery:function(i,o){if(1&i&&ot(i_e,5),2&i){let r;he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:11,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","value","maxlength","100","matInput",""],["color","primary",1,"float-right",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),b(7,"translate"),u(),B(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.process()}),p(11),b(12,"translate"),u()()),2&i&&(C("headline",y(1,5,"vpn.server-options.edit-value."+(o.data.editName?"name":"note")+"-title"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(4),M(y(7,7,"vpn.server-options.edit-value."+(o.data.editName?"name":"note")+"-label")),d(5),E(" ",y(12,9,"vpn.server-options.edit-value.apply-button")," "))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,In,ui,gn,xe],encapsulation:2})}}return t})();const r_e=["firstInput"];let sV=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.mediumModalWidth,e.open(t,o)}constructor(e,i,o){this.dialogRef=e,this.data=i,this.formBuilder=o}ngOnInit(){this.form=this.formBuilder.group({password:["",this.data?void 0:Ne.required]}),setTimeout(()=>this.firstInput.nativeElement.focus())}process(){this.dialogRef.close("-"+this.form.get("password").value)}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-enter-vpn-server-password"]],viewQuery:function(i,o){if(1&i&&ot(r_e,5),2&i){let r;he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:12,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","password","type","password","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),b(7,"translate"),u(),B(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.process()}),p(11),b(12,"translate"),u()()),2&i&&(C("headline",y(1,6,"vpn.server-list.password-dialog.title"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(4),M(y(7,8,"vpn.server-list.password-dialog.password"+(o.data?"-if-any":"")+"-label")),d(4),C("disabled",!o.form.valid),d(),E(" ",y(12,10,"vpn.server-list.password-dialog.continue-button")," "))},dependencies:[xn,Gt,qt,wn,on,mn,sn,In,ui,gn,xe],encapsulation:2})}}return t})(),hi=(()=>{class t{static{this.serverListTabStorageKey="ServerListTab"}static{this.currentPk=""}static changeCurrentPk(e){this.currentPk=e}static setDefaultTabForServerList(e){sessionStorage.setItem(t.serverListTabStorageKey,e)}static get vpnTabsData(){const e=sessionStorage.getItem(t.serverListTabStorageKey);return[{icon:"power_settings_new",label:"vpn.start",linkParts:["/vpn",this.currentPk,"status"]},{icon:"list",label:"vpn.servers",linkParts:e?["/vpn",this.currentPk,"servers",e,"1"]:["/vpn",this.currentPk,"servers"]},{icon:"settings",label:"vpn.settings",linkParts:["/vpn",this.currentPk,"settings"]}]}static getLatencyValueString(e){return e<1e3?"time-in-ms":"time-in-segs"}static getPrintableLatency(e){return e<1e3?e+"":(e/1e3).toFixed(1)}static processServerChange(e,i,o,r,s,a,l,c,f,m,g){let _;if(c&&(f||m)||f&&(c||m)||m&&(c||f))throw new Error("Invalid call");if(c)_=c.pk;else if(f)_=f.pk;else{if(!m)throw new Error("Invalid call");_=m.pk}const w=o.getSavedVersion(_,!0),k=w&&(g||w.usedWithPassword),T=i.checkNewPk(_);if(T!==Dr.Busy)if(T!==Dr.SamePkRunning||k){if(T===Dr.MustStop||T===Dr.SamePkRunning&&k){const I=Rt.createConfirmationDialog(s,"vpn.server-change.change-server-while-connected-confirmation");return void I.componentInstance.operationAccepted.subscribe(()=>{I.componentInstance.closeModal(),c?i.changeServerUsingHistory(c,g):f?i.changeServerUsingDiscovery(f,g):m&&i.changeServerManually(m,g),t.redirectAfterServerChange(e,a,l)})}if(T===Dr.SamePkStopped&&!k){const I=Rt.createConfirmationDialog(s,"vpn.server-change.start-same-server-confirmation");return void I.componentInstance.operationAccepted.subscribe(()=>{I.componentInstance.closeModal(),m&&w&&o.processFromManual(m),i.start(),t.redirectAfterServerChange(e,a,l)})}c?i.changeServerUsingHistory(c,g):f?i.changeServerUsingDiscovery(f,g):m&&i.changeServerManually(m,g),t.redirectAfterServerChange(e,a,l)}else r.showWarning("vpn.server-change.already-selected-warning");else r.showError("vpn.server-change.busy-error")}static redirectAfterServerChange(e,i,o){i&&i.close(),e.navigate(["vpn",o,"status"])}static openServerOptions(e,i,o,r,s,a){const l=[],c=[];return e.usedWithPassword?(l.push({icon:"lock_open",label:"vpn.server-options.connect-without-password"}),c.push(201),l.push({icon:"lock_outlined",label:"vpn.server-options.connect-using-another-password"}),c.push(202)):e.enteredManually&&(l.push({icon:"lock_outlined",label:"vpn.server-options.connect-using-password"}),c.push(202)),l.push({icon:"edit",label:"vpn.server-options.edit-name"}),c.push(101),l.push({icon:"subject",label:"vpn.server-options.edit-label"}),c.push(102),(!e||e.flag!==_n.Favorite)&&(l.push({icon:"star",label:"vpn.server-options.make-favorite"}),c.push(1)),e&&e.flag===_n.Favorite&&(l.push({icon:"star_outline",label:"vpn.server-options.remove-from-favorites"}),c.push(-1)),(!e||e.flag!==_n.Blocked)&&(l.push({icon:"pan_tool",label:"vpn.server-options.block"}),c.push(2)),e&&e.flag===_n.Blocked&&(l.push({icon:"thumb_up",label:"vpn.server-options.unblock"}),c.push(-2)),e&&e.inHistory&&(l.push({icon:"delete",label:"vpn.server-options.remove-from-history"}),c.push(-3)),ao.openDialog(a,l,"common.options").afterClosed().pipe(It(f=>{if(f){const m=o.getSavedVersion(e.pk,!0);if(e=m||e,c[f-=1]>200){if(201===c[f]){let g=!1;const _=Rt.createConfirmationDialog(a,"vpn.server-options.connect-without-password-confirmation");return _.componentInstance.operationAccepted.subscribe(()=>{g=!0,t.processServerChange(i,r,o,s,a,null,t.currentPk,e,null,null,null),_.componentInstance.closeModal()}),_.afterClosed().pipe(Se(()=>g))}return sV.openDialog(a,!1).afterClosed().pipe(Se(g=>!(!g||"-"===g||(t.processServerChange(i,r,o,s,a,null,t.currentPk,e,null,null,g.substr(1)),0))))}if(c[f]>100)return o_e.openDialog(a,{editName:101===c[f],server:e}).afterClosed();if(1===c[f])return t.makeFavorite(e,o,s,a);if(-1===c[f])return o.changeFlag(e,_n.None),s.showDone("vpn.server-options.remove-from-favorites-done"),ae(!0);if(2===c[f])return t.blockServer(e,o,r,s,a);if(-2===c[f])return o.changeFlag(e,_n.None),s.showDone("vpn.server-options.unblock-done"),ae(!0);if(-3===c[f])return t.removeFromHistory(e,o,s,a)}return ae(!1)}))}static removeFromHistory(e,i,o,r){let s=!1;const a=Rt.createConfirmationDialog(r,"vpn.server-options.remove-from-history-confirmation");return a.componentInstance.operationAccepted.subscribe(()=>{s=!0,i.removeFromHistory(e.pk),o.showDone("vpn.server-options.remove-from-history-done"),a.componentInstance.closeModal()}),a.afterClosed().pipe(Se(()=>s))}static makeFavorite(e,i,o,r){if(e.flag!==_n.Blocked)return i.changeFlag(e,_n.Favorite),o.showDone("vpn.server-options.make-favorite-done"),ae(!0);let s=!1;const a=Rt.createConfirmationDialog(r,"vpn.server-options.make-favorite-confirmation");return a.componentInstance.operationAccepted.subscribe(()=>{s=!0,i.changeFlag(e,_n.Favorite),o.showDone("vpn.server-options.make-favorite-done"),a.componentInstance.closeModal()}),a.afterClosed().pipe(Se(()=>s))}static blockServer(e,i,o,r,s){if(e.flag!==_n.Favorite&&(!i.currentServer||i.currentServer.pk!==e.pk))return i.changeFlag(e,_n.Blocked),r.showDone("vpn.server-options.block-done"),ae(!0);let a=!1;const l=i.currentServer&&i.currentServer.pk===e.pk;let c;c=e.flag!==_n.Favorite?"vpn.server-options.block-selected-confirmation":l?"vpn.server-options.block-selected-favorite-confirmation":"vpn.server-options.block-confirmation";const f=Rt.createConfirmationDialog(s,c);return f.componentInstance.operationAccepted.subscribe(()=>{a=!0,i.changeFlag(e,_n.Blocked),r.showDone("vpn.server-options.block-done"),l&&o.stop(),f.componentInstance.closeModal()}),f.afterClosed().pipe(Se(()=>a))}}return t})(),s_e=(()=>{class t{constructor(e){this.clipboardService=e,this.copyEvent=new we,this.errorEvent=new we,this.value=""}ngOnDestroy(){this.copyEvent.complete(),this.errorEvent.complete()}copyToClipboard(){this.clipboardService.copy(this.value)?this.copyEvent.emit(this.value):this.errorEvent.emit()}static{this.\u0275fac=function(i){return new(i||t)(O(np))}}static{this.\u0275dir=de({type:t,selectors:[["","clipboard",""]],hostBindings:function(i,o){1&i&&F("click",function(){return o.copyToClipboard()})},inputs:{value:[0,"clipboard","value"]},outputs:{copyEvent:"copyEvent",errorEvent:"errorEvent"},standalone:!1})}}return t})();const a_e=()=>({"tooltip-word-break":!0});function l_e(t,n){if(1&t&&(h(0,"span",1),p(1),u()),2&t){const e=v();d(),M(e.shortText)}}function c_e(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v();d(),M(e.text)}}let aV=(()=>{class t{constructor(){this.short=!1,this.showTooltip=!0,this.shortTextLength=5}get shortText(){if(this.text.length>2*this.shortTextLength){const e=this.text.length;return`${this.text.slice(0,this.shortTextLength)}...${this.text.slice(e-this.shortTextLength,e)}`}return this.text}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=re({type:t,selectors:[["app-truncated-text"]],inputs:{short:"short",showTooltip:"showTooltip",text:"text",shortTextLength:"shortTextLength"},standalone:!1,decls:3,vars:5,consts:[[1,"wrapper",3,"matTooltip","matTooltipClass"],[1,"nowrap"]],template:function(i,o){1&i&&(h(0,"div",0),x(1,l_e,2,1,"span",1),x(2,c_e,2,1,"span"),u()),2&i&&(C("matTooltip",o.short&&o.showTooltip?o.text:"")("matTooltipClass",Ct(4,a_e)),d(),S(o.short?1:-1),d(),S(o.short?-1:2))},dependencies:[Kt],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.nowrap[_ngcontent-%COMP%]{white-space:nowrap}.wrapper[_ngcontent-%COMP%]{display:inline}']})}}return t})();const d_e=t=>({text:t}),u_e=()=>({"tooltip-word-break":!0});function h_e(t,n){if(1&t&&(B(0,"app-truncated-text",2),h(1,"mat-icon",3),p(2,"filter_none"),u()),2&t){const e=v();C("short",e.short)("showTooltip",!1)("shortTextLength",e.shortTextLength)("text",e.text),d(),C("inline",!0)}}function f_e(t,n){if(1&t&&(h(0,"div",1)(1,"div",4),p(2),u(),h(3,"mat-icon",3),p(4,"filter_none"),u()()),2&t){const e=v();d(2),M(e.text),d(),C("inline",!0)}}let op=(()=>{class t{constructor(e){this.snackbarService=e,this.short=!1,this.shortSimple=!1,this.shortTextLength=5}onCopyToClipboardClicked(){this.snackbarService.showDone("copy.copied")}static{this.\u0275fac=function(i){return new(i||t)(O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-copy-to-clipboard-text"]],inputs:{text:"text",short:"short",shortSimple:"shortSimple",shortTextLength:"shortTextLength"},standalone:!1,decls:4,vars:11,consts:[[1,"wrapper","highlight-internal-icon",3,"copyEvent","clipboard","matTooltip","matTooltipClass"],[1,"d-flex"],[1,"text-margin",3,"short","showTooltip","shortTextLength","text"],[3,"inline"],[1,"single-line","text-margin"]],template:function(i,o){1&i&&(h(0,"div",0),b(1,"translate"),F("copyEvent",function(){return o.onCopyToClipboardClicked()}),x(2,h_e,3,5),x(3,f_e,5,2,"div",1),u()),2&i&&(C("clipboard",o.text)("matTooltip",pe(1,5,o.short||o.shortSimple?"copy.tooltip-with-text":"copy.tooltip",se(8,d_e,o.text)))("matTooltipClass",Ct(10,u_e)),d(2),S(o.shortSimple?-1:2),d(),S(o.shortSimple?3:-1))},dependencies:[We,Kt,s_e,aV,xe],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.wrapper[_ngcontent-%COMP%]{display:inline}.wrapper[_ngcontent-%COMP%] .text-margin[_ngcontent-%COMP%]{margin-right:5px}.wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:.6rem;-webkit-user-select:none;user-select:none;flex-shrink:0;display:inline!important}']})}}return t})();var fc=function(t){return t[t.Seconds=0]="Seconds",t[t.Minutes=1]="Minutes",t[t.Hours=2]="Hours",t[t.Days=3]="Days",t[t.Weeks=4]="Weeks",t}(fc||{});class p_e{}class gv{static getElapsedTime(n){const e=new p_e;e.timeRepresentation=fc.Seconds,e.totalMinutes=Math.floor(n/60).toString(),e.translationVarName="second";let i=1;n>=60&&n<3600?(e.timeRepresentation=fc.Minutes,i=60,e.translationVarName="minute"):n>=3600&&n<86400?(e.timeRepresentation=fc.Hours,i=3600,e.translationVarName="hour"):n>=86400&&n<604800?(e.timeRepresentation=fc.Days,i=86400,e.translationVarName="day"):n>=604800&&(e.timeRepresentation=fc.Weeks,i=604800,e.translationVarName="week");const o=Math.floor(n/i);return e.elapsedTime=o.toString(),(e.timeRepresentation===fc.Seconds||o>1)&&(e.translationVarName=e.translationVarName+"s"),e}}const m_e=t=>({"grey-button-background":t}),lV=t=>({time:t});function g_e(t,n){1&t&&B(0,"mat-spinner",2),2&t&&C("diameter",14)}function __e(t,n){1&t&&B(0,"mat-spinner",3),2&t&&C("diameter",18)}function b_e(t,n){1&t&&(h(0,"mat-icon",5),p(1,"refresh"),u()),2&t&&C("inline",!0)}function v_e(t,n){1&t&&(h(0,"mat-icon",6),p(1,"warning"),u()),2&t&&C("inline",!0)}function y_e(t,n){if(1&t&&(x(0,b_e,2,1,"mat-icon",5),x(1,v_e,2,1,"mat-icon",6)),2&t){const e=v();S(e.showAlert?-1:0),d(),S(e.showAlert?1:-1)}}function C_e(t,n){if(1&t&&(h(0,"span",4),p(1),b(2,"translate"),u()),2&t){const e=v();d(),M(pe(2,1,"refresh-button."+e.elapsedTime.translationVarName,se(4,lV,e.elapsedTime.elapsedTime)))}}let w_e=(()=>{class t{constructor(){this.refeshRate=-1}set secondsSinceLastUpdate(e){this.elapsedTime=gv.getElapsedTime(e)}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=re({type:t,selectors:[["app-refresh-button"]],inputs:{secondsSinceLastUpdate:"secondsSinceLastUpdate",showLoading:"showLoading",showAlert:"showAlert",refeshRate:"refeshRate"},standalone:!1,decls:7,vars:14,consts:[["mat-button","",1,"time-button","subtle-transparent-button","white-theme",3,"disabled","ngClass","matTooltip"],[1,"internal-container"],[1,"icon","d-none","d-md-inline-block",3,"diameter"],[1,"icon","d-md-none",3,"diameter"],[1,"d-none","d-md-inline"],[1,"icon",3,"inline"],[1,"icon","alert",3,"inline"]],template:function(i,o){1&i&&(h(0,"button",0),b(1,"translate"),h(2,"div",1),x(3,g_e,1,1,"mat-spinner",2),x(4,__e,1,1,"mat-spinner",3),x(5,y_e,2,2),x(6,C_e,3,6,"span",4),u()()),2&i&&(C("disabled",o.showLoading)("ngClass",se(10,m_e,!o.showLoading))("matTooltip",o.showAlert?pe(1,7,"refresh-button.error-tooltip",se(12,lV,o.refeshRate)):""),d(3),S(o.showLoading?3:-1),d(),S(o.showLoading?4:-1),d(),S(o.showLoading?-1:5),d(),S(o.elapsedTime?6:-1))},dependencies:[$t,Pn,We,Kt,so,xe],styles:[".time-button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px;height:40px}.time-button[disabled][_ngcontent-%COMP%]{opacity:.7!important;color:#f8f9f9}.time-button[disabled][_ngcontent-%COMP%] span[_ngcontent-%COMP%]{opacity:.7}.time-button[_ngcontent-%COMP%] .internal-container[_ngcontent-%COMP%]{display:flex;align-items:center}.time-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:16px;margin-right:5px;opacity:.5;display:inline-block}@media(max-width:767px){.time-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:22px;margin-right:0;opacity:.75}}.time-button[_ngcontent-%COMP%] .alert[_ngcontent-%COMP%]{color:orange;opacity:1}.time-button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:.6rem}"]})}}return t})(),rp=(()=>{class t{static{this.accumulatedMeasurements=["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}static{this.measurementsPerSec=["B/s","KB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"]}static{this.accumulatedMeasurementsInBits=["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"]}static{this.measurementsPerSecInBits=["b/s","Kb/s","Mb/s","Gb/s","Tb/s","Pb/s","Eb/s","Zb/s","Yb/s"]}transform(e,i){let r,o=!0;i?i.showPerSecond?i.useBits?(r=t.measurementsPerSecInBits,o=!1):r=t.measurementsPerSec:i.useBits?(r=t.accumulatedMeasurementsInBits,o=!1):r=t.accumulatedMeasurements:r=t.accumulatedMeasurements;let s=new bk(e);o||(s=s.multipliedBy(8));let a=r[0],l=0;for(;s.dividedBy(1024).isGreaterThan(1);)s=s.dividedBy(1024),l+=1,a=r[l];let c="";return(!i||i.showValue)&&(c=i&&i.limitDecimals?new bk(s).decimalPlaces(1).toString():s.toFixed(2)),(!i||i.showValue&&i.showUnit)&&(c+=" "),(!i||i.showUnit)&&(c+=a),c}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275pipe=Hi({name:"autoScale",type:t,pure:!0,standalone:!1})}}return t})();const cV=(t,n)=>({"d-lg-none":t,"d-none":n}),x_e=t=>({"normal-height":t}),S_e=(t,n)=>({"d-none d-lg-flex":t,"d-flex":n}),k_e=t=>({transparent:t}),D_e=(t,n)=>({"d-lg-none":t,"d-none d-md-inline-block":n}),Dk=(t,n)=>({"mouse-disabled":t,"grey-button-background":n}),M_e=t=>({"d-none":t}),T_e=(t,n)=>({"animation-container":t,"d-none":n}),E_e=t=>({time:t}),dV=t=>({showValue:!0,showUnit:!0,showPerSecond:!0,useBits:t});function P_e(t,n){if(1&t){const e=oe();h(0,"button",21),F("click",function(){return j(e),U(v().requestAction(null))}),h(1,"mat-icon"),p(2,"chevron_left"),u()()}}function I_e(t,n){if(1&t&&(h(0,"span",5),p(1),u()),2&t){const e=v();d(),M(e.pageHeaderLabel)}}function O_e(t,n){if(1&t&&(p(0),b(1,"translate")),2&t){const e=v();E(" ",y(1,1,e.titleParts[e.titleParts.length-1])," ")}}function A_e(t,n){1&t&&B(0,"img",6)}function R_e(t,n){if(1&t){const e=oe();h(0,"div",23),F("click",function(){const o=j(e).$implicit;return U(v(2).requestAction(o.actionName))}),h(1,"mat-icon",24),p(2),u(),p(3),b(4,"translate"),u()}if(2&t){const e=n.$implicit;C("disabled",e.disabled),d(),C("ngClass",se(6,k_e,e.disabled)),d(),M(e.icon),d(),E(" ",y(4,4,e.name)," ")}}function F_e(t,n){1&t&&B(0,"div",10)}function N_e(t,n){if(1&t&&(ve(0,R_e,5,8,"div",22,Fe),x(2,F_e,1,0,"div",10)),2&t){const e=v();ye(e.optionsData),d(2),S(e.returnText?2:-1)}}function L_e(t,n){1&t&&B(0,"div",10)}function B_e(t,n){1&t&&B(0,"img",26),2&t&&C("src","assets/img/lang/"+v(2).language.iconName,mo)}function V_e(t,n){if(1&t){const e=oe();h(0,"div",25),F("click",function(){return j(e),U(v().openLanguageWindow())}),x(1,B_e,1,1,"img",26),p(2),b(3,"translate"),u()}if(2&t){const e=v();d(),S(e.language?1:-1),d(),E(" ",y(3,2,e.language?e.language.name:"")," ")}}function H_e(t,n){if(1&t){const e=oe();h(0,"div",15)(1,"a",27),b(2,"translate"),F("click",function(){return j(e),U(v().requestAction(null))}),h(3,"mat-icon",28),p(4,"chevron_left"),u()()()}if(2&t){const e=v();d(),C("matTooltip",y(2,2,e.returnText)),d(2),C("inline",!0)}}function j_e(t,n){if(1&t&&(h(0,"span",31),p(1),u()),2&t){const e=v(3);d(),M(e.pageHeaderLabel)}}function U_e(t,n){1&t&&B(0,"app-copy-to-clipboard-text",32),2&t&&C("text",Qt(v(3).pageHeaderIdentifier))("short",!1)}function z_e(t,n){if(1&t&&(h(0,"span",29),x(1,j_e,2,1,"span",31),x(2,U_e,1,3,"app-copy-to-clipboard-text",32),u()),2&t){const e=v(2);d(),S(e.pageHeaderLabel?1:-1),d(),S(e.pageHeaderIdentifier?2:-1)}}function $_e(t,n){if(1&t&&(h(0,"span",30),p(1),b(2,"translate"),u()),2&t){const e=v(2);d(),E(" ",y(2,1,e.titleParts[e.titleParts.length-1])," ")}}function W_e(t,n){if(1&t&&x(0,z_e,3,2,"span",29)(1,$_e,3,3,"span",30),2&t){const e=v();S(e.pageHeaderLabel||e.pageHeaderIdentifier?0:1)}}function G_e(t,n){1&t&&B(0,"img",16)}function q_e(t,n){1&t&&B(0,"span",33)}function K_e(t,n){if(1&t&&(h(0,"a",34)(1,"mat-icon",28),p(2),u(),h(3,"span"),p(4),b(5,"translate"),u()()),2&t){const e=v().$implicit,i=v();C("href",e.externalUrl,mo)("ngClass",_t(7,Dk,i.disableMouse,!i.disableMouse)),d(),C("inline",!0),d(),M(e.icon),d(2),M(y(5,5,e.label))}}function Y_e(t,n){if(1&t&&(h(0,"a",35)(1,"mat-icon",28),p(2),u(),h(3,"span"),p(4),b(5,"translate"),u()()),2&t){const e=v(),i=e.$implicit,o=e.$index,r=v();C("disabled",o===r.selectedTabIndex)("routerLink",i.linkParts)("ngClass",_t(8,Dk,r.disableMouse,!r.disableMouse&&o!==r.selectedTabIndex)),d(),C("inline",!0),d(),M(i.icon),d(2),M(y(5,6,i.label))}}function X_e(t,n){if(1&t&&(x(0,q_e,1,0,"span",33),h(1,"div",24),x(2,K_e,6,10,"a",34),x(3,Y_e,6,11,"a",35),u()),2&t){const e=n.$implicit,i=n.$index,o=v();S(i>0&&o.tabsData[i-1].group!==e.group?0:-1),d(),C("ngClass",_t(4,D_e,e.onlyIfLessThanLg,1!==o.tabsData.length)),d(),S(e.externalUrl?2:-1),d(),S(e.externalUrl?-1:3)}}function Z_e(t,n){if(1&t){const e=oe();h(0,"div",18)(1,"button",36),F("click",function(){return j(e),U(v().openTabSelector())}),h(2,"div",37)(3,"mat-icon",28),p(4),u(),h(5,"span"),p(6),b(7,"translate"),u(),h(8,"mat-icon",28),p(9,"keyboard_arrow_down"),u()()()()}if(2&t){const e=v();C("ngClass",se(8,M_e,1===e.tabsData.length)),d(),C("ngClass",_t(10,Dk,e.disableMouse,!e.disableMouse)),d(2),C("inline",!0),d(),M(e.tabsData[e.selectedTabIndex].icon),d(2),M(y(7,6,e.tabsData[e.selectedTabIndex].label)),d(2),C("inline",!0)}}function Q_e(t,n){if(1&t){const e=oe();h(0,"app-refresh-button",41),F("click",function(){return j(e),U(v(2).sendRefreshEvent())}),u()}if(2&t){const e=v(2);C("secondsSinceLastUpdate",e.secondsSinceLastUpdate)("showLoading",e.showLoading)("showAlert",e.showAlert)("refeshRate",e.refeshRate)}}function J_e(t,n){if(1&t&&(h(0,"div",19),x(1,Q_e,1,4,"app-refresh-button",38),h(2,"button",39)(3,"div",40)(4,"mat-icon",28),p(5,"menu"),u()()()()),2&t){const e=v(),i=Hn(13);d(),S(e.showUpdateButton?1:-1),d(),C("matMenuTriggerFor",i),d(2),C("inline",!0)}}function ebe(t,n){if(1&t){const e=oe();h(0,"div",43)(1,"div",49),F("click",function(){return j(e),U(v(2).openLanguageWindow())}),B(2,"img",50),p(3),b(4,"translate"),u()()}if(2&t){const e=v(2);d(2),C("src","assets/img/lang/"+e.language.iconName,mo),d(),E(" ",y(4,2,e.language?e.language.name:"")," ")}}function tbe(t,n){1&t&&(h(0,"div",45),b(1,"translate"),h(2,"mat-icon",28),p(3,"warning"),u(),p(4),b(5,"translate"),u()),2&t&&(C("matTooltip",y(1,3,"vpn.connection-error.info")),d(2),C("inline",!0),d(2),E(" ",y(5,5,"vpn.connection-error.text")," "))}function nbe(t,n){1&t&&(h(0,"div",55)(1,"mat-icon",54),p(2,"brightness_1"),u()()),2&t&&(d(),C("inline",!0))}function ibe(t,n){if(1&t&&(h(0,"table",47)(1,"tr")(2,"td",51),b(3,"translate"),h(4,"div",24)(5,"div",52)(6,"div",53)(7,"mat-icon",54),p(8,"brightness_1"),u(),p(9),b(10,"translate"),u()()(),x(11,nbe,3,1,"div",55),h(12,"mat-icon",54),p(13,"brightness_1"),u(),p(14),b(15,"translate"),u(),h(16,"td",51),b(17,"translate"),h(18,"mat-icon",28),p(19,"swap_horiz"),u(),p(20),b(21,"translate"),u()(),h(22,"tr")(23,"td",51),b(24,"translate"),h(25,"mat-icon",28),p(26,"arrow_upward"),u(),p(27),b(28,"autoScale"),u(),h(29,"td",51),b(30,"translate"),h(31,"mat-icon",28),p(32,"arrow_downward"),u(),p(33),b(34,"autoScale"),u()()()),2&t){const e=v(2);d(2),Ze(e.vpnData.stateClass+" state-td"),C("matTooltip",y(3,18,e.vpnData.state+"-info")),d(2),C("ngClass",_t(39,T_e,e.showVpnStateAnimation,!e.showVpnStateAnimation)),d(3),C("inline",!0),d(2),E(" ",y(10,20,e.vpnData.state)," "),d(2),S(e.showVpnStateAnimatedDot?11:-1),d(),C("inline",!0),d(2),E(" ",y(15,22,e.vpnData.state)," "),d(2),C("matTooltip",y(17,24,"vpn.connection-info.latency-info")),d(2),C("inline",!0),d(2),E(" ",pe(21,26,"common."+e.getLatencyValueString(e.vpnData.latency),se(42,E_e,e.getPrintableLatency(e.vpnData.latency)))," "),d(3),C("matTooltip",y(24,29,"vpn.connection-info.upload-info")),d(2),C("inline",!0),d(2),E(" ",pe(28,31,e.vpnData.uploadSpeed,se(44,dV,e.showVpnDataStatsInBits))," "),d(2),C("matTooltip",y(30,34,"vpn.connection-info.download-info")),d(2),C("inline",!0),d(2),E(" ",pe(34,36,e.vpnData.downloadSpeed,se(46,dV,e.showVpnDataStatsInBits))," ")}}function obe(t,n){1&t&&B(0,"mat-spinner",48),2&t&&C("diameter",20)}function rbe(t,n){if(1&t&&(h(0,"div")(1,"div",42),x(2,ebe,5,4,"div",43),B(3,"div",44),x(4,tbe,6,7,"div",45),u(),h(5,"div",46),x(6,ibe,35,48,"table",47),x(7,obe,1,1,"mat-spinner",48),u()()),2&t){const e=v();d(2),S(!e.hideLanguageButton&&e.language?2:-1),d(2),S(e.errorsConnectingToVpn?4:-1),d(2),S(e.vpnData?6:-1),d(),S(e.vpnData?-1:7)}}function sbe(t,n){1&t&&(h(0,"div",20)(1,"div",56)(2,"mat-icon",28),p(3,"error_outline"),u(),p(4),b(5,"translate"),u(),h(6,"div",57),p(7),b(8,"translate"),u()()),2&t&&(d(2),C("inline",!0),d(2),E(" ",y(5,3,"vpn.remote-access-title")," "),d(3),E(" ",y(8,5,"vpn.remote-access-text")," "))}let Mr=(()=>{class t{set localVpnKey(e){this.localVpnKeyInternal=e,e?this.startGettingVpnInfo():this.stopGettingVpnInfo()}constructor(e,i,o,r,s){this.languageService=e,this.dialog=i,this.router=o,this.vpnClientService=r,this.vpnSavedDataService=s,this.disableMouse=!1,this.selectedTabIndex=0,this.refeshRate=-1,this.showUpdateButton=!0,this.localVpnKeyInternal="",this.refreshRequested=new we,this.optionSelected=new we,this.hideLanguageButton=!0,this.showVpnInfo=!1,this.initialVpnStateObtained=!1,this.lastVpnState="",this.showVpnStateAnimation=!1,this.showVpnStateAnimatedDot=!0,this.showVpnDataStatsInBits=!0,this.remoteAccess=!1,this.errorsConnectingToVpn=!1,this.langSubscriptionsGroup=[]}ngOnInit(){this.langSubscriptionsGroup.push(this.languageService.currentLanguage.subscribe(i=>{this.language=i})),this.langSubscriptionsGroup.push(this.languageService.languages.subscribe(i=>{this.hideLanguageButton=!(i.length>1)}));const e=window.location.hostname;!e.toLowerCase().includes("localhost")&&!e.toLowerCase().includes("127.0.0.1")&&(this.remoteAccess=!0)}ngOnDestroy(){this.langSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.refreshRequested.complete(),this.optionSelected.complete(),this.stopGettingVpnInfo()}startGettingVpnInfo(){this.showVpnInfo=!0,this.vpnClientService.initialize(this.localVpnKeyInternal),this.updateVpnDataStatsUnit(),this.vpnDataSubscription=this.vpnClientService.backendState.subscribe(e=>{e&&(this.vpnData={state:"",stateClass:"",latency:e.vpnClientAppData.connectionData?e.vpnClientAppData.connectionData.latency:0,downloadSpeed:e.vpnClientAppData.connectionData?e.vpnClientAppData.connectionData.downloadSpeed:0,uploadSpeed:e.vpnClientAppData.connectionData?e.vpnClientAppData.connectionData.uploadSpeed:0},e.vpnClientAppData.appState===an.Stopped?(this.vpnData.state="vpn.connection-info.state-disconnected",this.vpnData.stateClass="red-clear-text"):e.vpnClientAppData.appState===an.Connecting?(this.vpnData.state="vpn.connection-info.state-connecting",this.vpnData.stateClass="yellow-clear-text"):e.vpnClientAppData.appState===an.Running?(this.vpnData.state="vpn.connection-info.state-connected",this.vpnData.stateClass="green-clear-text"):e.vpnClientAppData.appState===an.ShuttingDown?(this.vpnData.state="vpn.connection-info.state-disconnecting",this.vpnData.stateClass="yellow-clear-text"):e.vpnClientAppData.appState===an.Reconnecting&&(this.vpnData.state="vpn.connection-info.state-reconnecting",this.vpnData.stateClass="yellow-clear-text"),this.initialVpnStateObtained?this.lastVpnState!==this.vpnData.state&&(this.lastVpnState=this.vpnData.state,this.showVpnStateAnimation=!1,this.showVpnStateChangeAnimationSubscription&&this.showVpnStateChangeAnimationSubscription.unsubscribe(),this.showVpnStateChangeAnimationSubscription=ae(0).pipe(li(1)).subscribe(()=>this.showVpnStateAnimation=!0)):(this.initialVpnStateObtained=!0,this.lastVpnState=this.vpnData.state),this.showVpnStateAnimatedDot=!1,this.showVpnStateAnimatedDotSubscription&&this.showVpnStateAnimatedDotSubscription.unsubscribe(),this.showVpnStateAnimatedDotSubscription=ae(0).pipe(li(1)).subscribe(()=>this.showVpnStateAnimatedDot=!0))}),this.errorsConnectingToVpnSubscription=this.vpnClientService.errorsConnecting.subscribe(e=>{this.errorsConnectingToVpn=e})}stopGettingVpnInfo(){this.showVpnInfo=!1,this.vpnDataSubscription&&this.vpnDataSubscription.unsubscribe(),this.errorsConnectingToVpnSubscription&&this.errorsConnectingToVpnSubscription.unsubscribe()}getLatencyValueString(e){return hi.getLatencyValueString(e)}getPrintableLatency(e){return hi.getPrintableLatency(e)}requestAction(e){this.optionSelected.emit(e)}openLanguageWindow(){YB.openDialog(this.dialog)}sendRefreshEvent(){this.refreshRequested.emit()}openTabSelector(){const e=[];this.tabsData.forEach(i=>{e.push({label:i.label,icon:i.icon})}),ao.openDialog(this.dialog,e,"tabs-window.title").afterClosed().subscribe(i=>{i&&(i-=1)!==this.selectedTabIndex&&this.router.navigate(this.tabsData[i].linkParts)})}updateVpnDataStatsUnit(){const e=this.vpnSavedDataService.getDataUnitsSetting();this.showVpnDataStatsInBits=e===Zo.BitsSpeedAndBytesVolume||e===Zo.OnlyBits}static{this.\u0275fac=function(i){return new(i||t)(O($b),O(Ot),O(vt),O(hc),O(uc))}}static{this.\u0275cmp=re({type:t,selectors:[["app-top-bar"]],inputs:{disableMouse:"disableMouse",titleParts:"titleParts",pageHeaderLabel:"pageHeaderLabel",pageHeaderIdentifier:"pageHeaderIdentifier",tabsData:"tabsData",selectedTabIndex:"selectedTabIndex",optionsData:"optionsData",returnText:"returnText",secondsSinceLastUpdate:"secondsSinceLastUpdate",showLoading:"showLoading",showAlert:"showAlert",refeshRate:"refeshRate",showUpdateButton:"showUpdateButton",localVpnKey:"localVpnKey"},outputs:{refreshRequested:"refreshRequested",optionSelected:"optionSelected"},standalone:!1,decls:30,vars:29,consts:[["menu","matMenu"],[1,"top-bar",3,"ngClass"],[1,"button-container"],["mat-icon-button","",1,"transparent-button"],[1,"logo-container"],[1,"page-header-label-mobile"],["src","/assets/img/logo-s.png"],["mat-icon-button","",1,"transparent-button",3,"matMenuTriggerFor"],[1,"top-bar-margin",3,"ngClass"],[3,"overlapTrigger"],[1,"menu-separator"],["mat-menu-item",""],[1,"main-container",3,"ngClass"],[1,"main-area"],[1,"title",3,"ngClass"],[1,"return-container"],["src","./assets/img/logo-vpn.png",1,"title-image"],[1,"lower-container"],[1,"d-md-none",3,"ngClass"],[1,"right-container"],[1,"remote-vpn-alert-container"],["mat-icon-button","",1,"transparent-button",3,"click"],["mat-menu-item","",3,"disabled"],["mat-menu-item","",3,"click","disabled"],[3,"ngClass"],["mat-menu-item","",3,"click"],[1,"flag",3,"src"],[1,"return-button","transparent-button",3,"click","matTooltip"],[3,"inline"],[1,"page-header"],[1,"title-text"],[1,"page-header-label"],[1,"page-header-id",3,"text","short"],["aria-hidden","true",1,"tab-group-separator","d-none","d-md-inline-block"],["mat-button","","target","_blank","rel","noreferrer nofollow noopener",1,"tab-button","white-theme",3,"href","ngClass"],["mat-button","",1,"tab-button","white-theme",3,"disabled","routerLink","ngClass"],["mat-button","",1,"tab-button","select-tab-button","white-theme",3,"click","ngClass"],[1,"d-flex"],[3,"secondsSinceLastUpdate","showLoading","showAlert","refeshRate"],["mat-button","",1,"menu-button","subtle-transparent-button","d-none","d-lg-block",3,"matMenuTriggerFor"],[1,"icon-container"],[3,"click","secondsSinceLastUpdate","showLoading","showAlert","refeshRate"],[1,"top-text-vpn-container"],[1,"languaje-button-vpn"],[1,"elements-separator"],[1,"connection-error-msg-vpn","blinking",3,"matTooltip"],[1,"vpn-info","vpn-dark-box-radius"],["cellspacing","0","cellpadding","0"],[3,"diameter"],[1,"text-container",3,"click"],[1,"language-flag",3,"src"],[3,"matTooltip"],[1,"internal-animation-container"],[1,"animation-area"],[1,"state-icon",3,"inline"],[1,"aminated-state-icon-container"],[1,"top-line"],[1,"bottom-line"]],template:function(i,o){if(1&i&&(h(0,"div",1)(1,"div",2),x(2,P_e,3,0,"button",3),u(),h(3,"div",4),x(4,I_e,2,1,"span",5)(5,O_e,2,3)(6,A_e,1,0,"img",6),u(),h(7,"div",2)(8,"button",7)(9,"mat-icon"),p(10,"menu"),u()()()(),B(11,"div",8),h(12,"mat-menu",9,0),x(14,N_e,3,1),x(15,L_e,1,0,"div",10),x(16,V_e,4,4,"div",11),u(),h(17,"div",12)(18,"div",13)(19,"div",14),x(20,H_e,5,4,"div",15),x(21,W_e,2,1),x(22,G_e,1,0,"img",16),u(),h(23,"div",17),ve(24,X_e,4,7,null,null,Fe),x(26,Z_e,10,13,"div",18),x(27,J_e,6,3,"div",19),u()(),x(28,rbe,8,4,"div"),u(),x(29,sbe,9,7,"div",20)),2&i){const r=Hn(13);C("ngClass",_t(18,cV,!o.showVpnInfo,o.showVpnInfo)),d(2),S(o.returnText?2:-1),d(2),S(o.pageHeaderLabel?4:o.titleParts&&o.titleParts.length>=2?5:6),d(4),C("matMenuTriggerFor",r),d(3),C("ngClass",_t(21,cV,!o.showVpnInfo,o.showVpnInfo)),d(),C("overlapTrigger",!1),d(2),S(o.optionsData&&o.optionsData.length>=1?14:-1),d(),S(!o.hideLanguageButton&&o.optionsData&&o.optionsData.length>=1?15:-1),d(),S(o.hideLanguageButton?-1:16),d(),C("ngClass",se(24,x_e,!o.showVpnInfo)),d(2),C("ngClass",_t(26,S_e,!o.showVpnInfo,o.showVpnInfo)),d(),S(o.returnText?20:-1),d(),S(o.showVpnInfo?-1:21),d(),S(o.showVpnInfo?22:-1),d(2),ye(o.tabsData),d(2),S(o.tabsData&&o.tabsData[o.selectedTabIndex]?26:-1),d(),S(o.showVpnInfo?-1:27),d(),S(o.showVpnInfo?28:-1),d(),S(o.showVpnInfo&&o.remoteAccess?29:-1)}},dependencies:[$t,Is,Pn,Wo,We,Kt,Jr,As,vu,so,op,w_e,xe,rp],styles:["@media(max-width:991px){.normal-height[_ngcontent-%COMP%]{height:55px!important}}.main-container[_ngcontent-%COMP%]{border-bottom:1px solid rgba(255,255,255,.15);padding-bottom:10px;margin-bottom:-5px;height:100px;display:flex}.main-container[_ngcontent-%COMP%] .main-area[_ngcontent-%COMP%]{flex-grow:1}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:.875rem;margin-bottom:15px;margin-left:5px;flex-direction:row;align-items:center}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .title-text[_ngcontent-%COMP%]{z-index:1}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .title-image[_ngcontent-%COMP%]{width:124px;height:21px}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .return-container[_ngcontent-%COMP%]{width:30px;position:relative;top:2px}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .return-container[_ngcontent-%COMP%] .return-button[_ngcontent-%COMP%]{line-height:1;font-size:25px;position:relative;top:2px;width:100%;margin-right:4px;cursor:pointer}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;align-items:center;gap:2px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-group-separator[_ngcontent-%COMP%]{width:1px;height:20px;background:#fff3;margin:0 8px;align-self:center}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{flex:0 0 auto;min-width:0}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px;opacity:.5;margin-right:0;text-decoration:none;height:40px;display:flex;align-items:center}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%]:hover{opacity:.75}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[disabled][_ngcontent-%COMP%]{opacity:1!important;color:#f8f9f9;background:#000000b3!important}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{margin-right:2px;opacity:.75;font-size:18px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:1rem;margin:0 4px;position:relative;top:-1px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .select-tab-button[_ngcontent-%COMP%]{opacity:.75!important}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .select-tab-button[_ngcontent-%COMP%]:hover{opacity:1!important}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%]{display:flex;align-items:center;margin-left:auto}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] app-refresh-button[_ngcontent-%COMP%]{align-self:flex-end}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%]{height:32px;width:32px;min-width:0px!important;background-color:#f8f9f9;border-radius:100%;padding:0!important;line-height:normal;color:#929292;font-size:20px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%] .icon-container[_ngcontent-%COMP%]{display:flex;place-content:center}.menu-separator[_ngcontent-%COMP%]{width:100%;height:1px;background-color:#0000001f}.flag[_ngcontent-%COMP%]{width:24px;margin-right:16px}.transparent[_ngcontent-%COMP%]{opacity:.5}.top-bar[_ngcontent-%COMP%]{position:fixed;z-index:10;width:100%;height:56px;background-color:#f8f9f9;top:0;left:0;right:0;color:#202226;display:flex}.top-bar[_ngcontent-%COMP%] .logo-container[_ngcontent-%COMP%]{flex-grow:1;display:flex;justify-content:center;align-items:center}.top-bar[_ngcontent-%COMP%] .logo-container[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{height:28px}.top-bar[_ngcontent-%COMP%] .button-container[_ngcontent-%COMP%]{flex-shrink:0;width:56px}.top-bar[_ngcontent-%COMP%] .button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:56px;height:56px}.top-bar-margin[_ngcontent-%COMP%]{margin-top:56px;flex-shrink:0}.vpn-info[_ngcontent-%COMP%]{font-size:.7rem;background:#000000b3;padding:15px 20px;align-self:center}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] .state-td[_ngcontent-%COMP%]{font-weight:700}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:2px 0;min-width:90px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:3px;font-size:12px;position:relative;top:1px;-webkit-user-select:none;user-select:none;width:auto;line-height:1}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .state-icon[_ngcontent-%COMP%]{transform:scale(.75)}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .aminated-state-icon-container[_ngcontent-%COMP%]{width:0px;height:0px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .aminated-state-icon-container[_ngcontent-%COMP%] .state-icon[_ngcontent-%COMP%]{height:auto;animation:_ngcontent-%COMP%_state-icon-animation 1s linear 1}@keyframes _ngcontent-%COMP%_state-icon-animation{0%{transform:perspective(1px) scale(1);opacity:.8}to{transform:scale(2);opacity:0}}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .animation-container[_ngcontent-%COMP%]{width:0px;height:0px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .animation-container[_ngcontent-%COMP%] .internal-animation-container[_ngcontent-%COMP%]{width:200px}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .animation-container[_ngcontent-%COMP%] .internal-animation-container[_ngcontent-%COMP%] .animation-area[_ngcontent-%COMP%]{display:inline-block;animation:_ngcontent-%COMP%_state-animation 1s linear 1;opacity:0}@keyframes _ngcontent-%COMP%_state-animation{0%{transform:scale(1);opacity:1}to{transform:scale(2.5);opacity:0}}.vpn-info[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-of-type{padding-right:30px}.vpn-info[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.top-text-vpn-container[_ngcontent-%COMP%]{display:flex;flex-direction:row-reverse;font-size:.6rem}.top-text-vpn-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:3px}.top-text-vpn-container[_ngcontent-%COMP%] .connection-error-msg-vpn[_ngcontent-%COMP%]{margin:-5px 5px 5px 10px;color:orange}.top-text-vpn-container[_ngcontent-%COMP%] .elements-separator[_ngcontent-%COMP%]{flex-grow:1}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%]{margin:-5px 10px 5px 0}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{cursor:pointer;display:inline;opacity:.8}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]:hover{opacity:1}.top-text-vpn-container[_ngcontent-%COMP%] .languaje-button-vpn[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .language-flag[_ngcontent-%COMP%]{width:11px;height:11px;margin-right:2px}.remote-vpn-alert-container[_ngcontent-%COMP%]{background-color:#da3439;margin:0 -21px;padding:10px 20px 15px;text-align:center}.remote-vpn-alert-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:14px}.remote-vpn-alert-container[_ngcontent-%COMP%] .top-line[_ngcontent-%COMP%]{font-size:1.25rem}.remote-vpn-alert-container[_ngcontent-%COMP%] .bottom-line[_ngcontent-%COMP%]{font-size:.8rem}.page-header[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;line-height:1.1;gap:2px;min-width:0}.page-header-label[_ngcontent-%COMP%]{font-size:18px;font-weight:500;letter-spacing:.2px}.page-header-id[_ngcontent-%COMP%]{display:inline-block;font-size:12px;opacity:.65;font-family:monospace;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-header-label-mobile[_ngcontent-%COMP%]{font-weight:500;font-size:14px}"]})}}return t})();const uV=()=>["start.title"],abe=t=>({"paginator-icons-fixer":t}),hV=()=>["/nodes","rewards"],fV=()=>["/nodes","list"],lbe=()=>({"click-effect":!0}),cbe=t=>["/nodes",t,"rewards"],dbe=(t,n)=>({"click-effect":t,"non-selectable":n}),pV=t=>["/nodes",t],ube=t=>({"selectable click-effect":t}),hbe=(t,n)=>n.type;function fbe(t,n){if(1&t&&(h(0,"div",1)(1,"div"),B(2,"app-top-bar",3),u(),B(3,"app-loading-indicator",4),u()),2&t){const e=v();d(2),C("titleParts",Ct(4,uV))("tabsData",e.tabsData)("selectedTabIndex",e.showRewardsInfo?1:0)("showUpdateButton",!1)}}function pbe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().$implicit.translatableValue)," ")}function mbe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.value," ")}function gbe(t,n){if(1&t&&(h(0,"div",19)(1,"span"),p(2),b(3,"translate"),u(),x(4,pbe,2,3),x(5,mbe,1,1),u()),2&t){const e=n.$implicit;d(2),E("",y(3,3,e.filterName),": "),d(2),S(e.translatableValue?4:-1),d(),S(e.value?5:-1)}}function _be(t,n){if(1&t){const e=oe();h(0,"div",18),F("click",function(){return j(e),U(v(2).dataFilterer.removeFilters())}),ve(1,gbe,6,5,"div",19,Fe),h(3,"div",20),p(4),b(5,"translate"),u()()}if(2&t){const e=v(2);d(),ye(e.dataFilterer.currentFiltersTexts),d(3),M(y(5,1,"filters.press-to-remove"))}}function bbe(t,n){if(1&t){const e=oe();h(0,"mat-icon",21),b(1,"translate"),F("click",function(){return j(e),U(v(2).dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",y(1,2,"filters.filter-action"))}function vbe(t,n){1&t&&(h(0,"mat-icon",13),p(1,"more_horiz"),u()),2&t&&(v(),C("matMenuTriggerFor",Hn(12)))}function ybe(t,n){if(1&t&&B(0,"app-paginator",16),2&t){const e=v(2);C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",e.showRewardsInfo?Ct(4,hV):Ct(5,fV))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function Cbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function wbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function xbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Sbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function kbe(t,n){if(1&t&&(h(0,"th",33),p(1),u()),2&t){const e=n.$implicit;d(),E(" ",e," ")}}function Dbe(t,n){1&t&&(ve(0,kbe,2,1,"th",33,Fe),h(2,"th",34),p(3),b(4,"translate"),u()),2&t&&(ye(v(4).rewardDateHeaders),d(3),E(" ",y(4,1,"nodes.reward-total")," "))}function Mbe(t,n){1&t&&(h(0,"th"),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"nodes.rewards-loading")," "))}function Tbe(t,n){1&t&&(h(0,"mat-icon",35),b(1,"translate"),p(2,"star"),u()),2&t&&C("inline",!0)("matTooltip",y(1,2,"nodes.hypervisor-info"))}function Ebe(t,n){if(1&t&&(h(0,"td",33)(1,"span",37),p(2),u()()),2&t){const e=n.$implicit,i=v(2).$implicit,o=v(4);d(),Ze(o.getRewardClass(i.localPk,e)),d(),M(o.getRewardAmount(i.localPk,e))}}function Pbe(t,n){if(1&t&&(ve(0,Ebe,3,3,"td",33,Fe),h(2,"td",34)(3,"span",40),p(4),u()()),2&t){const e=v().$implicit,i=v(4);ye(i.rewardDates),d(4),M(i.getWeekTotal(e.localPk))}}function Ibe(t,n){1&t&&(h(0,"td")(1,"span",37),p(2,"..."),u()())}function Obe(t,n){1&t&&(h(0,"button",39),b(1,"translate"),h(2,"mat-icon",27),p(3,"chevron_right"),u()()),2&t&&(C("matTooltip",y(1,2,"nodes.view-node")),d(2),C("inline",!0))}function Abe(t,n){if(1&t){const e=oe();h(0,"button",38),b(1,"translate"),F("click",function(o){j(e);const r=v().$implicit,s=v(4);return o.stopPropagation(),o.preventDefault(),U(s.deleteNode(r))}),h(2,"mat-icon"),p(3,"close"),u()()}2&t&&C("matTooltip",y(1,1,"nodes.delete-node"))}function Rbe(t,n){if(1&t){const e=oe();h(0,"a",32)(1,"td"),x(2,Tbe,3,4,"mat-icon",35),u(),h(3,"td"),B(4,"span",36),b(5,"translate"),u(),h(6,"td"),p(7),u(),h(8,"td"),p(9),u(),h(10,"td")(11,"span",37),p(12),u()(),x(13,Pbe,5,1),x(14,Ibe,3,0,"td"),h(15,"td",31)(16,"button",38),b(17,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(4);return o.stopPropagation(),o.preventDefault(),U(s.copyToClipboard(r))}),h(18,"mat-icon",27),p(19,"filter_none"),u()(),h(20,"button",38),b(21,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(4);return o.stopPropagation(),o.preventDefault(),U(s.showEditLabelDialog(r))}),h(22,"mat-icon",27),p(23,"short_text"),u()(),x(24,Obe,4,4,"button",39),x(25,Abe,4,3,"button",39),u()()}if(2&t){const e=n.$implicit,i=v(4);C("ngClass",Ct(23,lbe))("routerLink",se(24,cbe,e.localPk)),d(2),S(e.isHypervisor?2:-1),d(2),Ze(i.nodeStatusClass(e,!0)),C("matTooltip",y(5,17,i.nodeStatusText(e,!0))),d(3),E(" ",e.label," "),d(2),E(" ",e.localPk," "),d(3),M(i.getRewardAddress(e.localPk)),d(),S(i.rewardDataLoaded?13:-1),d(),S(i.rewardDataLoading?14:-1),d(2),C("matTooltip",y(17,19,"nodes.copy-key")),d(2),C("inline",!0),d(2),C("matTooltip",y(21,21,"labeled-element.edit-label")),d(2),C("inline",!0),d(2),S(e.online?24:-1),d(),S(e.online?-1:25)}}function Fbe(t,n){if(1&t){const e=oe();h(0,"table",23)(1,"tr")(2,"th",25),b(3,"translate"),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.hypervisorSortData))}),h(4,"mat-icon",26),p(5,"star_outline"),u(),x(6,Cbe,2,2,"mat-icon",27),u(),h(7,"th",25),b(8,"translate"),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.stateSortData))}),B(9,"span",28),x(10,wbe,2,2,"mat-icon",27),u(),h(11,"th",29),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.labelSortData))}),p(12),b(13,"translate"),x(14,xbe,2,2,"mat-icon",27),u(),h(15,"th",30),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.keySortData))}),p(16),b(17,"translate"),x(18,Sbe,2,2,"mat-icon",27),u(),h(19,"th"),p(20),b(21,"translate"),u(),x(22,Dbe,5,3),x(23,Mbe,3,3,"th"),B(24,"th",31),u(),ve(25,Rbe,26,26,"a",32,Fe),u()}if(2&t){const e=v(3);d(2),C("matTooltip",y(3,11,"nodes.hypervisor")),d(4),S(e.dataSorter.currentSortingColumn===e.hypervisorSortData?6:-1),d(),C("matTooltip",y(8,13,"nodes.state-tooltip")),d(3),S(e.dataSorter.currentSortingColumn===e.stateSortData?10:-1),d(2),E(" ",y(13,15,"nodes.label")," "),d(2),S(e.dataSorter.currentSortingColumn===e.labelSortData?14:-1),d(2),E(" ",y(17,17,"nodes.key")," "),d(2),S(e.dataSorter.currentSortingColumn===e.keySortData?18:-1),d(2),E(" ",y(21,19,"nodes.reward-address")," "),d(2),S(e.rewardDataLoaded?22:-1),d(),S(e.rewardDataLoading?23:-1),d(2),ye(e.dataSource)}}function Nbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Lbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Bbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Vbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Hbe(t,n){if(1&t&&(h(0,"mat-icon",27),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function jbe(t,n){1&t&&(h(0,"mat-icon",35),b(1,"translate"),p(2,"star"),u()),2&t&&C("inline",!0)("matTooltip",y(1,2,"nodes.hypervisor-info"))}function Ube(t,n){if(1&t&&(h(0,"div",37),p(1),u(),h(2,"div",37),p(3),u()),2&t){const e=v(2).$implicit;d(),M(e.ip),d(2),M(e.publicIp)}}function zbe(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=v(2).$implicit;d(),M(e.publicIp)}}function $be(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=v(2).$implicit;d(),M(e.ip)}}function Wbe(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=v(2).$implicit;d(),Uh("",e.cityName?e.cityName+", ":"","",e.regionName?e.regionName+", ":"","",e.countryCode)}}function Gbe(t,n){if(1&t&&(x(0,Ube,4,2)(1,zbe,2,1,"div",37)(2,$be,2,1,"div",37),x(3,Wbe,2,3,"div",37)),2&t){const e=v().$implicit;S(e.ip&&e.publicIp&&e.ip!==e.publicIp?0:e.publicIp?1:e.ip?2:-1),d(3),S(e.countryCode?3:-1)}}function qbe(t,n){1&t&&(h(0,"span"),p(1,"-"),u())}function Kbe(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=n.$implicit;d(),gt("",e.type,": ",e.count)}}function Ybe(t,n){if(1&t&&(ve(0,Kbe,2,2,"div",37,hbe),h(2,"div",37),p(3),u()),2&t){const e=v().$implicit;ye(v(4).getTransportCounts(e)),d(3),E("Total: ",e.transports.length)}}function Xbe(t,n){1&t&&(h(0,"span",37),p(1,"Total: 0"),u())}function Zbe(t,n){1&t&&(h(0,"span"),p(1,"-"),u())}function Qbe(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=v().$implicit;d(),M(e.version)}}function Jbe(t,n){if(1&t&&(h(0,"div",37),p(1),b(2,"translate"),u(),h(3,"div",37),p(4),b(5,"translate"),u()),2&t){const e=v().$implicit;d(),gt("",y(2,4,"nodes.visor-version"),": ",e.version||"-"),d(3),gt("",y(5,6,"nodes.config-label"),": ",e.configVersion||"-")}}function eve(t,n){if(1&t&&(h(0,"div",37),p(1),u()),2&t){const e=n.$implicit;d(),M(e)}}function tve(t,n){if(1&t&&ve(0,eve,2,1,"div",37,Fe),2&t){const e=v().$implicit;ye(v(4).getNodeServices(e))}}function nve(t,n){1&t&&(h(0,"span"),p(1,"-"),u())}function ive(t,n){1&t&&(h(0,"mat-icon",41),p(1,"check_circle"),u()),2&t&&C("matTooltip",v().$implicit.rewardsAddress)}function ove(t,n){1&t&&(h(0,"mat-icon",42),b(1,"translate"),p(2,"cancel"),u()),2&t&&C("matTooltip",y(1,1,"nodes.reward-not-set"))}function rve(t,n){1&t&&(h(0,"button",39),b(1,"translate"),h(2,"mat-icon",27),p(3,"chevron_right"),u()()),2&t&&(C("matTooltip",y(1,2,"nodes.view-node")),d(2),C("inline",!0))}function sve(t,n){if(1&t){const e=oe();h(0,"button",38),b(1,"translate"),F("click",function(o){j(e);const r=v().$implicit,s=v(4);return o.stopPropagation(),o.preventDefault(),U(s.deleteNode(r))}),h(2,"mat-icon"),p(3,"close"),u()()}2&t&&C("matTooltip",y(1,1,"nodes.delete-node"))}function ave(t,n){if(1&t){const e=oe();h(0,"a",32)(1,"td"),x(2,jbe,3,4,"mat-icon",35),u(),h(3,"td"),B(4,"span",36),b(5,"translate"),u(),h(6,"td"),p(7),u(),h(8,"td"),x(9,Gbe,4,2),x(10,qbe,2,0,"span"),u(),h(11,"td"),x(12,Ybe,4,1),x(13,Xbe,2,0,"span",37),x(14,Zbe,2,0,"span"),u(),h(15,"td"),p(16),u(),h(17,"td"),x(18,Qbe,2,1,"div",37)(19,Jbe,6,8),u(),h(20,"td"),x(21,tve,2,0),x(22,nve,2,0,"span"),u(),h(23,"td"),x(24,ive,2,1,"mat-icon",41),x(25,ove,3,3,"mat-icon",42),u(),h(26,"td",31)(27,"button",38),b(28,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(4);return o.stopPropagation(),o.preventDefault(),U(s.copyToClipboard(r))}),h(29,"mat-icon",27),p(30,"filter_none"),u()(),h(31,"button",38),b(32,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(4);return o.stopPropagation(),o.preventDefault(),U(s.showEditLabelDialog(r))}),h(33,"mat-icon",27),p(34,"short_text"),u()(),x(35,rve,4,4,"button",39),x(36,sve,4,3,"button",39),u()()}if(2&t){const e=n.$implicit,i=v(4);C("ngClass",_t(30,dbe,e.online,!e.online))("routerLink",e.online?se(33,pV,e.localPk):null),d(2),S(e.isHypervisor?2:-1),d(2),Ze(i.nodeStatusClass(e,!0)),C("matTooltip",y(5,24,i.nodeStatusText(e,!0))),d(3),E(" ",e.label," "),d(2),S(e.ip||e.publicIp||e.countryCode?9:-1),d(),S(e.ip||e.publicIp||e.countryCode?-1:10),d(2),S(e.transports&&e.transports.length>0?12:-1),d(),S(e.transports&&0===e.transports.length?13:-1),d(),S(e.transports?-1:14),d(2),E(" ",e.localPk," "),d(2),S(e.version&&e.configVersion&&e.version===e.configVersion?18:19),d(3),S(i.getNodeServices(e).length>0?21:-1),d(),S(0===i.getNodeServices(e).length?22:-1),d(2),S(e.rewardsAddress?24:-1),d(),S(e.rewardsAddress?-1:25),d(2),C("matTooltip",y(28,26,"nodes.copy-key")),d(2),C("inline",!0),d(2),C("matTooltip",y(32,28,"labeled-element.edit-label")),d(2),C("inline",!0),d(2),S(e.online?35:-1),d(),S(e.online?-1:36)}}function lve(t,n){if(1&t){const e=oe();h(0,"table",23)(1,"tr")(2,"th",25),b(3,"translate"),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.hypervisorSortData))}),h(4,"mat-icon",26),p(5,"star_outline"),u(),x(6,Nbe,2,2,"mat-icon",27),u(),h(7,"th",25),b(8,"translate"),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.stateSortData))}),B(9,"span",28),x(10,Lbe,2,2,"mat-icon",27),u(),h(11,"th",29),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.labelSortData))}),p(12),b(13,"translate"),x(14,Bbe,2,2,"mat-icon",27),u(),h(15,"th"),p(16),b(17,"translate"),u(),h(18,"th"),p(19),b(20,"translate"),u(),h(21,"th",30),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.keySortData))}),p(22),b(23,"translate"),x(24,Vbe,2,2,"mat-icon",27),u(),h(25,"th",30),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.versionSortData))}),p(26),b(27,"translate"),x(28,Hbe,2,2,"mat-icon",27),u(),h(29,"th"),p(30),b(31,"translate"),u(),h(32,"th"),p(33),b(34,"translate"),u(),B(35,"th",31),u(),ve(36,ave,37,35,"a",32,Fe),u()}if(2&t){const e=v(3);d(2),C("matTooltip",y(3,14,"nodes.hypervisor")),d(4),S(e.dataSorter.currentSortingColumn===e.hypervisorSortData?6:-1),d(),C("matTooltip",y(8,16,"nodes.state-tooltip")),d(3),S(e.dataSorter.currentSortingColumn===e.stateSortData?10:-1),d(2),E(" ",y(13,18,"nodes.label")," "),d(2),S(e.dataSorter.currentSortingColumn===e.labelSortData?14:-1),d(2),E(" ",y(17,20,"nodes.ip-location")," "),d(3),E(" ",y(20,22,"nodes.transports")," "),d(3),E(" ",y(23,24,"nodes.key")," "),d(2),S(e.dataSorter.currentSortingColumn===e.keySortData?24:-1),d(2),E(" ",y(27,26,"nodes.version")," "),d(2),S(e.dataSorter.currentSortingColumn===e.versionSortData?28:-1),d(2),E(" ",y(31,28,"nodes.services")," "),d(3),E(" ",y(34,30,"nodes.reward")," "),d(3),ye(e.dataSource)}}function cve(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.label")," ")}function dve(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.inverted-order")," ")}function uve(t,n){1&t&&(h(0,"div",49)(1,"mat-icon",53),p(2,"star"),u(),p(3,"\xa0 "),h(4,"span",54),p(5),b(6,"translate"),u()()),2&t&&(d(),C("inline",!0),d(4),M(y(6,2,"nodes.hypervisor")))}function hve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v(2).$implicit;d(),M(e.ip)}}function fve(t,n){1&t&&(h(0,"span"),p(1," / "),u())}function pve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v(2).$implicit;d(),M(e.publicIp)}}function mve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),b(3,"translate"),u(),p(4,": "),x(5,hve,2,1,"span"),x(6,fve,2,0,"span"),x(7,pve,2,1,"span"),u()),2&t){const e=v().$implicit;d(2),M(y(3,4,"nodes.ip")),d(3),S(e.ip?5:-1),d(),S(e.ip&&e.publicIp?6:-1),d(),S(e.publicIp?7:-1)}}function gve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v(2).$implicit;d(),E("",e.cityName,", ")}}function _ve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v(2).$implicit;d(),E("",e.regionName,", ")}}function bve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),b(3,"translate"),u(),p(4,": "),x(5,gve,2,1,"span"),x(6,_ve,2,1,"span"),p(7),u()),2&t){const e=v().$implicit;d(2),M(y(3,4,"nodes.location")),d(3),S(e.cityName?5:-1),d(),S(e.regionName?6:-1),d(),E("",e.countryCode," ")}}function vve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),b(3,"translate"),u(),p(4),u()),2&t){const e=v().$implicit;d(2),M(y(3,2,"nodes.version")),d(2),E(": ",e.version," ")}}function yve(t,n){if(1&t&&(h(0,"div",49)(1,"span",8),p(2),b(3,"translate"),u(),p(4),u()),2&t){const e=v().$implicit;d(2),M(y(3,2,"nodes.config-version")),d(2),E(": ",e.configVersion," ")}}function Cve(t,n){if(1&t){const e=oe();h(0,"a",47)(1,"tr",48)(2,"td",48)(3,"div",44)(4,"div",45),x(5,uve,7,4,"div",49),h(6,"div",49)(7,"span",8),p(8),b(9,"translate"),u(),p(10,": "),h(11,"span"),p(12),b(13,"translate"),u()(),h(14,"div",49)(15,"span",8),p(16),b(17,"translate"),u(),p(18),u(),x(19,mve,8,6,"div",49),x(20,bve,8,6,"div",49),h(21,"div",50)(22,"span",8),p(23),b(24,"translate"),u(),p(25),u(),x(26,vve,5,4,"div",49),x(27,yve,5,4,"div",49),u(),B(28,"div",51),h(29,"div",46)(30,"button",52),b(31,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(4);return o.stopPropagation(),o.preventDefault(),U(s.showOptionsDialog(r))}),h(32,"mat-icon"),p(33),u()()()()()()()}if(2&t){const e=n.$implicit,i=v(4);C("ngClass",se(27,ube,e.online))("routerLink",e.online?se(29,pV,e.localPk):null),d(5),S(e.isHypervisor?5:-1),d(3),M(y(9,17,"nodes.state")),d(3),Ze(i.nodeStatusClass(e,!1)+" title"),d(),M(y(13,19,i.nodeStatusText(e,!1))),d(4),M(y(17,21,"nodes.label")),d(2),E(": ",e.label," "),d(),S(e.ip||e.publicIp?19:-1),d(),S(e.countryCode?20:-1),d(3),M(y(24,23,"nodes.key")),d(2),E(": ",e.localPk," "),d(),S(e.version?26:-1),d(),S(e.configVersion?27:-1),d(3),C("matTooltip",y(31,25,"common.options")),d(3),M("add")}}function wve(t,n){if(1&t){const e=oe();h(0,"table",24)(1,"tr",43),F("click",function(){return j(e),U(v(3).dataSorter.openSortingOrderModal())}),h(2,"td")(3,"div",44)(4,"div",45)(5,"div",8),p(6),b(7,"translate"),u(),h(8,"div"),p(9),b(10,"translate"),x(11,cve,2,3),x(12,dve,2,3),u()(),h(13,"div",46)(14,"mat-icon",27),p(15,"keyboard_arrow_down"),u()()()()(),ve(16,Cve,34,31,"a",47,Fe),u()}if(2&t){const e=v(3);d(6),M(y(7,5,"tables.sorting-title")),d(3),E("",y(10,7,e.dataSorter.currentSortingColumn.label)," "),d(2),S(e.dataSorter.currentlySortingByLabel?11:-1),d(),S(e.dataSorter.sortingInReverseOrder?12:-1),d(2),C("inline",!0),d(2),ye(e.dataSource)}}function xve(t,n){if(1&t&&(h(0,"div",17)(1,"div",22),x(2,Fbe,27,21,"table",23),x(3,lve,38,32,"table",23),x(4,wve,18,9,"table",24),u()()),2&t){const e=v(2);d(2),S(e.showRewardsInfo&&e.dataSource.length>0?2:-1),d(),S(!e.showRewardsInfo&&e.dataSource.length>0?3:-1),d(),S(e.dataSource.length>0?4:-1)}}function Sve(t,n){if(1&t&&B(0,"app-paginator",16),2&t){const e=v(2);C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",e.showRewardsInfo?Ct(4,hV):Ct(5,fV))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function kve(t,n){1&t&&(h(0,"span",57),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"nodes.empty")))}function Dve(t,n){1&t&&(h(0,"span",57),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"nodes.empty-with-filter")))}function Mve(t,n){if(1&t&&(h(0,"div",17)(1,"div",55)(2,"mat-icon",56),p(3,"warning"),u(),x(4,kve,3,3,"span",57),x(5,Dve,3,3,"span",57),u()()),2&t){const e=v(2);d(2),C("inline",!0),d(2),S(0===e.allNodes.length?4:-1),d(),S(0!==e.allNodes.length?5:-1)}}function Tve(t,n){if(1&t){const e=oe();h(0,"div",2)(1,"div",5)(2,"app-top-bar",6),F("refreshRequested",function(){return j(e),U(v().forceDataRefresh(!0))})("optionSelected",function(o){return j(e),U(v().performAction(o))}),u()(),h(3,"div",5)(4,"div",7)(5,"div",8),x(6,_be,6,3,"div",9),u(),h(7,"div",10)(8,"div",11),x(9,bbe,3,4,"mat-icon",12),x(10,vbe,2,1,"mat-icon",13),h(11,"mat-menu",14,0)(13,"div",15),F("click",function(){return j(e),U(v().removeOffline())}),p(14),b(15,"translate"),u()()(),x(16,ybe,1,6,"app-paginator",16),u()(),x(17,xve,5,3,"div",17),x(18,Sve,1,6,"app-paginator",16),x(19,Mve,6,3,"div",17),u()()}if(2&t){const e=v();d(2),C("titleParts",Ct(22,uV))("tabsData",e.tabsData)("selectedTabIndex",e.showRewardsInfo?1:0)("secondsSinceLastUpdate",e.secondsSinceLastUpdate)("showLoading",e.updating)("showAlert",e.errorsUpdating)("refeshRate",e.storageService.getRefreshTime())("optionsData",e.options),d(2),C("ngClass",se(23,abe,e.numberOfPages>1)),d(2),S(e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0?6:-1),d(3),S(e.allNodes&&e.allNodes.length>0?9:-1),d(),S(e.dataSource.length>0?10:-1),d(),C("overlapTrigger",!1),d(2),C("disabled",Qt(!e.hasOfflineNodes)),d(),E(" ",y(15,20,"nodes.delete-all-offline")," "),d(2),S(e.numberOfPages>1?16:-1),d(),S(0!==e.dataSource.length?17:-1),d(),S(e.numberOfPages>1?18:-1),d(),S(0===e.dataSource.length?19:-1)}}let mV=(()=>{class t extends pn{constructor(e,i,o,r,s,a,l,c,f,m,g,_){super(),this.nodeService=e,this.multipleNodeDataService=i,this.router=o,this.dialog=r,this.authService=s,this.storageService=a,this.ngZone=l,this.snackbarService=c,this.clipboardService=f,this.translateService=m,this.rewardService=g,this.persistentServerDataResponseKey="serv-dat-response",this.nodesListId="nl",this.dmsgListId="dl",this.hypervisorSortData=new Dt(["isHypervisor"],"nodes.hypervisor",st.Boolean),this.stateSortData=new Dt(["online"],"nodes.state",st.Boolean),this.labelSortData=new Dt(["label"],"nodes.label",st.Text),this.keySortData=new Dt(["localPk"],"nodes.key",st.Text),this.versionSortData=new Dt(["version"],"nodes.version",st.Text),this.configVersionSortData=new Dt(["configVersion"],"nodes.config-version",st.Text),this.dmsgServerSortData=new Dt(["dmsgServerPk"],"nodes.dmsg-server",st.Text,["dmsgServerPk_label"]),this.pingSortData=new Dt(["roundTripPing"],"nodes.ping",st.Number),this.loading=!0,this.dataSource=[],this.tabsData=[],this.options=[],this.showDmsgInfo=!1,this.showRewardsInfo=!1,this.canLogOut=!0,this.rewardDataMap=new Map,this.rewardDates=[],this.rewardDateHeaders=[],this.rewardDataLoading=!1,this.rewardDataLoaded=!1,this.hasOfflineNodes=!1,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"nodes.filter-dialog.online",keyNameInElementsArray:"online",type:Sn.Select,printableLabelsForValues:[{value:"",label:"nodes.filter-dialog.online-options.any"},{value:"true",label:"nodes.filter-dialog.online-options.online"},{value:"false",label:"nodes.filter-dialog.online-options.offline"}]},{filterName:"nodes.filter-dialog.label",keyNameInElementsArray:"label",type:Sn.TextInput,maxlength:100},{filterName:"nodes.filter-dialog.key",keyNameInElementsArray:"localPk",type:Sn.TextInput,maxlength:66},{filterName:"nodes.filter-dialog.dmsg",keyNameInElementsArray:"dmsgServerPk",secondaryKeyNameInElementsArray:"dmsgServerPk_label",type:Sn.TextInput,maxlength:66}],this.secondsSinceLastUpdate=0,this.lastUpdate=Date.now(),this.updating=!1,this.errorsUpdating=!1,this.lastUpdateRequestedManually=!1,this.labeledElementTypes=ro,this.updateOptionsMenu(),this.authVerificationSubscription=this.authService.checkLogin().subscribe(T=>{this.canLogOut=T!==ka.AuthDisabled,this.updateOptionsMenu()}),this.showRewardsInfo=-1!==this.router.url.indexOf("rewards"),this.showDmsgInfo=!1,this.filterProperties.splice(this.filterProperties.length-1);const k=this.showRewardsInfo?"rl":this.nodesListId;this.dataSorter=new gu(this.dialog,this.translateService,this.storageService,[this.hypervisorSortData,this.stateSortData,this.labelSortData,this.keySortData,this.versionSortData,this.configVersionSortData],3,k),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new _u(this.dialog,_,this.router,this.filterProperties,k),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(T=>{this.filteredNodes=T,this.hasOfflineNodes=!1,this.filteredNodes.forEach(I=>{I.online||(this.hasOfflineNodes=!0)}),this.dataSorter.setData(this.filteredNodes)}),this.navigationsSubscription=_.paramMap.subscribe(T=>{if(T.has("page")){let I=Number.parseInt(T.get("page"),10);(isNaN(I)||I<1)&&(I=1),this.currentPageInUrl=I,this.recalculateElementsToShow()}}),this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}],this.languageSubscription=this.translateService.onLangChange.subscribe(()=>{this.multipleNodeDataService.forceRefresh()})}updateOptionsMenu(){this.options=[],this.options.push({name:"nodes.modify-rewards-all",actionName:"modifyRewardsAll",icon:"edit"}),this.canLogOut&&this.options.push({name:"common.logout",actionName:"logout",icon:"power_settings_new"})}ngOnInit(){return this.startGettingData(!0),this.ngZone.runOutsideAngular(()=>{this.updateTimeSubscription=xa(5e3,5e3).subscribe(()=>this.ngZone.run(()=>{this.secondsSinceLastUpdate=Math.floor((Date.now()-this.lastUpdate)/1e3)}))}),super.ngOnInit()}ngOnDestroy(){this.authVerificationSubscription.unsubscribe(),this.dataSubscription.unsubscribe(),this.updateTimeSubscription.unsubscribe(),this.navigationsSubscription.unsubscribe(),this.languageSubscription.unsubscribe(),this.updateSubscription&&this.updateSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose()}performAction(e){"logout"===e?this.logout():"updateAll"===e?this.updateAll():"modifyRewardsAll"===e&&this.changeRewardsToAll()}nodeStatusClass(e,i){return e.online?e.health&&e.health.servicesHealth===fu.Unhealthy?i?"dot-yellow blinking":"yellow-text":e.health&&e.health.servicesHealth===fu.Healthy?i?"dot-green":"green-text":i?"dot-outline-gray":"":i?"dot-red":"red-text"}nodeStatusText(e,i){return e.online?e.health&&e.health.servicesHealth===fu.Healthy?"node.statuses.online"+(i?"-tooltip":""):e.health&&e.health.servicesHealth===fu.Unhealthy?"node.statuses.partially-online"+(i?"-tooltip":""):e.health&&e.health.servicesHealth===fu.Connecting?"node.statuses.connecting"+(i?"-tooltip":""):"node.statuses.unknown"+(i?"-tooltip":""):"node.statuses.offline"+(i?"-tooltip":"")}forceDataRefresh(e=!1){e&&(this.lastUpdateRequestedManually=!0),this.multipleNodeDataService.forceRefresh()}startGettingData(e){const i=e?this.getLocalValue(this.persistentServerDataResponseKey):null;let o=this.multipleNodeDataService.startRequestingData();i&&(o=ae(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{i||this.saveLocalValue(this.persistentServerDataResponseKey,JSON.stringify(r)),this.updating=!r||r.updating,r&&!r.updating&&(r.data&&!r.error?(this.allNodes=r.data,this.dataFilterer.setData(this.allNodes),this.showRewardsInfo&&!this.rewardDataLoaded&&!this.rewardDataLoading&&this.loadRewardData(),this.loading=!1,this.snackbarService.closeCurrentIfTemporaryError(),this.lastUpdate=r.momentOfLastCorrectUpdate,this.secondsSinceLastUpdate=Math.floor((Date.now()-r.momentOfLastCorrectUpdate)/1e3),this.errorsUpdating=!1,Xr.currentInstance.hideDataProblemMsg(),this.lastUpdateRequestedManually&&(this.snackbarService.showDone("common.refreshed",null),this.lastUpdateRequestedManually=!1)):r.error&&(this.errorsUpdating||this.snackbarService.showError(this.loading?"common.loading-error":"nodes.error-load",null,!0,r.error),this.loading=!1,this.errorsUpdating=!0,Xr.currentInstance.showDataProblemMsg())),i&&this.startGettingData(!1)})}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredNodes){const e=rt.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredNodes.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.nodesToShow=this.filteredNodes.slice(i,i+e)}else this.nodesToShow=null;this.nodesToShow&&(this.dataSource=this.nodesToShow)}logout(){const e=Rt.createConfirmationDialog(this.dialog,"common.logout-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.authService.logout().subscribe(()=>this.router.navigate(["login"]),()=>this.snackbarService.showError("common.logout-error"))})}updateAll(){if(!this.dataSource||0===this.dataSource.length)return void this.snackbarService.showError("nodes.no-visors-to-update");const e=[],i=[];this.dataSource.forEach(o=>{if(o.online){const r={key:o.localPk,label:o.label,version:o.version,tag:o.buildTag};Rt.checkIfTagIsUpdatable(o.buildTag)?e.push(r):i.push(r)}}),rge.openDialog(this.dialog,e,i)}changeRewardsToAll(){if(!this.dataSource||0===this.dataSource.length)return void this.snackbarService.showError("nodes.no-visors-to-modify");const e=[];this.dataSource.forEach(o=>{o.online&&e.push({key:o.localPk,label:o.label})}),Ege.openDialog(this.dialog,{nodes:e})}recursivelyUpdateWallets(e,i,o=0){return this.nodeService.update(e[e.length-1]).pipe(Ui(()=>ae(null)),It(r=>(r&&r.updated&&!r.error?this.snackbarService.showDone(this.translateService.instant("nodes.update.done",{name:i[i.length-1]})):(this.snackbarService.showError(this.translateService.instant("nodes.update.update-error",{name:i[i.length-1]})),o+=1),e.pop(),i.pop(),e.length>=1?this.recursivelyUpdateWallets(e,i,o):ae(o))))}showOptionsDialog(e){const i=[{icon:"filter_none",label:"nodes.copy-key"}];i.push({icon:"short_text",label:"labeled-element.edit-label"}),e.online||i.push({icon:"close",label:"nodes.delete-node"}),ao.openDialog(this.dialog,i,"common.options").afterClosed().subscribe(o=>{1===o?this.copySpecificTextToClipboard(e.localPk):2===o?this.showEditLabelDialog(e):3===o&&this.deleteNode(e)})}copyToClipboard(e){this.copySpecificTextToClipboard(e.localPk)}copySpecificTextToClipboard(e){this.clipboardService.copy(e)&&this.snackbarService.showDone("copy.copied")}showEditLabelDialog(e){let i=this.storageService.getLabelInfo(e.localPk);i||(i={id:e.localPk,label:"",identifiedElementType:ro.Node}),wk.openDialog(this.dialog,i).afterClosed().subscribe(o=>{o&&this.forceDataRefresh()})}deleteNode(e){const i=Rt.createConfirmationDialog(this.dialog,"nodes.delete-node-confirmation");i.componentInstance.operationAccepted.subscribe(()=>{i.close(),this.storageService.setLocalNodesAsHidden([e.localPk],[e.ip]),this.forceDataRefresh(),this.snackbarService.showDone("nodes.deleted")})}getTransportCounts(e){if(!e.transports||0===e.transports.length)return[];const i={};return e.transports.forEach(o=>{const r=(o.type||"unknown").toUpperCase();i[r]=(i[r]||0)+1}),Object.keys(i).sort().map(o=>({type:o,count:i[o]}))}getNodeServices(e){const i=[];return e.apps&&e.apps.forEach(o=>{1===o.status&&("skysocks"===o.name?i.push("Proxy Server"):"vpn-server"===o.name&&i.push("VPN Server"))}),e.isPublic&&i.push("Public Visor"),e.autoconnectTransports&&i.push("Autoconnect"),i}loadRewardData(){if(!this.allNodes||0===this.allNodes.length)return;this.rewardDataLoading=!0;const e=this.allNodes.map(i=>i.localPk);this.rewardService.fetchRewardData(e).subscribe(i=>{this.rewardDataMap=i,this.rewardDates=this.rewardService.getCachedDates(),this.rewardDateHeaders=this.rewardDates.map(o=>this.rewardService.formatDateShort(o)),this.rewardDataLoading=!1,this.rewardDataLoaded=!0})}getRewardData(e){return this.rewardDataMap.get(e)||null}getRewardAmount(e,i){const o=this.rewardDataMap.get(e);return o&&o.dailyAmounts[i]&&0!==o.dailyAmounts[i]?o.dailyAmounts[i].toFixed(2):"-"}getRewardClass(e,i){const o=this.rewardDataMap.get(e);return o&&o.dailyAmounts[i]&&0!==o.dailyAmounts[i]?o.dailySent[i]?"reward-sent":"reward-pending":""}getWeekTotal(e){const i=this.rewardDataMap.get(e);return i&&0!==i.weekTotal?i.weekTotal.toFixed(2):"-"}getRewardAddress(e){const i=this.allNodes?.find(r=>r.localPk===e);if(i?.rewardsAddress)return i.rewardsAddress;const o=this.rewardDataMap.get(e);return o?.rewardAddress?o.rewardAddress:"-"}removeOffline(){let e="nodes.delete-all-offline-confirmation";this.dataFilterer.currentFiltersTexts&&this.dataFilterer.currentFiltersTexts.length>0&&(e="nodes.delete-all-filtered-offline-confirmation");const i=Rt.createConfirmationDialog(this.dialog,e);i.componentInstance.operationAccepted.subscribe(()=>{i.close();const o=[],r=[];this.filteredNodes.forEach(s=>{s.online||(o.push(s.localPk),r.push(s.ip))}),o.length>0&&(this.storageService.setLocalNodesAsHidden(o,r),this.forceDataRefresh(),1===o.length?this.snackbarService.showDone("nodes.deleted-singular"):this.snackbarService.showDone("nodes.deleted-plural",{number:o.length}))})}static{this.\u0275fac=function(i){return new(i||t)(O(Io),O(KB),O(vt),O(Ot),O(Yf),O(ti),O(_e),O(ct),O(np),O(Go),O(Pge),O(Ai))}}static{this.\u0275cmp=re({type:t,selectors:[["app-node-list"]],standalone:!1,features:[be],decls:2,vars:2,consts:[["selectionMenu","matMenu"],[1,"d-flex","flex-column","h-100","w-100"],[1,"row"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton"],[1,"h-100"],[1,"col-12"],[3,"refreshRequested","optionSelected","titleParts","tabsData","selectedTabIndex","secondsSinceLastUpdate","showLoading","showAlert","refeshRate","optionsData"],[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click","disabled"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow","full-node-list-margins"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none","nowrap"],[1,"sortable-column","small-column",3,"click","matTooltip"],[1,"hypervisor-icon","grey-text"],[3,"inline"],[1,"dot-outline-gray"],[1,"sortable-column","labels",3,"click"],[1,"sortable-column",3,"click"],[1,"actions"],[1,"selectable","link-row",3,"ngClass","routerLink"],[1,"reward-day-column"],[1,"reward-total-column"],[1,"hypervisor-icon",3,"inline","matTooltip"],[3,"matTooltip"],[2,"font-size","0.85em"],["mat-button","",1,"big-action-button","transparent-button",3,"click","matTooltip"],["mat-button","",1,"big-action-button","transparent-button",3,"matTooltip"],[2,"font-size","0.85em","font-weight","bold"],[2,"color","#4caf50","font-size","20px",3,"matTooltip"],[2,"color","#f44336","font-size","20px",3,"matTooltip"],[1,"selectable","click-effect",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[1,"link-row",3,"ngClass","routerLink"],[1,"d-block"],[1,"list-row"],[1,"list-row","long-content"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"hypervisor-icon",3,"inline"],[1,"yellow-clear-text","title"],[1,"box-internal-container","font-sm"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(x(0,fbe,4,5,"div",1),x(1,Tve,20,25,"div",2)),2&i&&(S(o.loading?0:-1),d(),S(o.loading?-1:1))},dependencies:[$t,Is,Pn,Wo,We,Kt,Jr,As,vu,Yr,mv,Mr,xe],styles:[".labels[_ngcontent-%COMP%]{width:15%}.actions[_ngcontent-%COMP%]{text-align:right;width:120px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}.hypervisor-icon[_ngcontent-%COMP%]{font-size:14px!important;line-height:14px!important;position:relative;top:2px;margin-left:2px;color:#d48b05}.small-column[_ngcontent-%COMP%]{width:1px}.non-selectable[_ngcontent-%COMP%]{cursor:not-allowed}.reward-day-column[_ngcontent-%COMP%]{text-align:center;white-space:nowrap;min-width:60px}.reward-total-column[_ngcontent-%COMP%]{text-align:center;white-space:nowrap;min-width:70px}.reward-sent[_ngcontent-%COMP%]{color:#4caf50}.reward-pending[_ngcontent-%COMP%]{color:#ff9800}"]})}}return t})();function Eve(t,n){1&t&&(h(0,"div",6),B(1,"mat-spinner",7),u())}function Pve(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2,".dmsg"),u(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),u()()),2&t){const e=v(4);d(3),Ze(e.proxyStatus.dmsg_web.running?"status-ok":"status-off"),d(),E(" ",e.proxyStatus.dmsg_web.running?"Yes":"No"," "),d(2),M(e.proxyStatus.dmsg_web.socks_addr||"-"),d(2),M(e.proxyStatus.dmsg_web.upstream_socks||"direct")}}function Ive(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2,".skynet"),u(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),u()()),2&t){const e=v(4);d(3),Ze(e.proxyStatus.skynet_web.running?"status-ok":"status-off"),d(),E(" ",e.proxyStatus.skynet_web.running?"Yes":"No"," "),d(2),M(e.proxyStatus.skynet_web.socks_addr||"-"),d(2),M(e.proxyStatus.skynet_web.upstream_socks||"direct")}}function Ove(t,n){if(1&t&&(h(0,"table",21)(1,"tr")(2,"th"),p(3,"Resolver"),u(),h(4,"th"),p(5,"Running"),u(),h(6,"th"),p(7,"SOCKS"),u(),h(8,"th"),p(9,"Upstream"),u()(),it(10,Pve,9,5,"tr",3)(11,Ive,9,5,"tr",3),u()),2&t){const e=v(3);d(10),C("ngIf",e.proxyStatus.dmsg_web),d(),C("ngIf",e.proxyStatus.skynet_web)}}function Ave(t,n){if(1&t&&(h(0,"div",19),it(1,Ove,12,2,"table",20),u()),2&t){const e=v(2);d(),C("ngIf",e.proxyStatus.dmsg_web||e.proxyStatus.skynet_web)}}function Rve(t,n){if(1&t){const e=oe();h(0,"div")(1,"h3",8),p(2,"Resolving Proxy"),u(),h(3,"p",9),p(4," Browse "),h(5,"strong"),p(6,".skynet"),u(),p(7," and "),h(8,"strong"),p(9,".dmsg"),u(),p(10," domains. Set an upstream SOCKS5 proxy to route all other traffic through skysocks. "),u(),it(11,Ave,2,1,"div",10),h(12,"div",11)(13,"div",12)(14,"mat-checkbox",13),F("change",function(o){j(e);const r=v();return r.form.get("skynetEnabled").setValue(o.checked),U(r.toggleProxy())}),p(15," Enable resolving proxy (.skynet + .dmsg) "),u()(),h(16,"form",14)(17,"div",15)(18,"mat-form-field",16)(19,"mat-label"),p(20,"Upstream SOCKS5 (e.g. 127.0.0.1:1080)"),u(),B(21,"input",17),u(),h(22,"button",18),F("click",function(){return j(e),U(v().setUpstream())}),p(23," Set "),u()()()()()}if(2&t){const e=v();d(11),C("ngIf",e.proxyStatus),d(3),C("checked",e.form.get("skynetEnabled").value)("disabled",e.loading),d(2),C("formGroup",e.form),d(6),C("disabled",e.loading)}}let Fve=(()=>{class t{constructor(e,i,o,r){this.dialogRef=e,this.data=i,this.nodeService=o,this.snackbarService=r,this.loading=!1,this.proxyStatus=null,this.skynetPorts=[],this.newPort="",this.form=new nk({skynetEnabled:new lu(!1),upstream:new lu("")}),this.loadStatus(),this.loadPorts()}loadStatus(){this.loading=!0,this.nodeService.getProxies(this.data.nodeKey).subscribe(e=>{this.proxyStatus=e,this.loading=!1;const i=e?.skynet_web?.running||!1,o=e?.skynet_web?.upstream_socks||"";this.form.get("skynetEnabled").setValue(i),this.form.get("upstream").setValue(o)},()=>{this.loading=!1})}loadPorts(){this.nodeService.getSkynetPorts(this.data.nodeKey).subscribe(e=>{this.skynetPorts=(e||[]).sort((i,o)=>i-o)},()=>{})}toggleProxy(){const e=this.form.get("skynetEnabled").value;this.loading=!0,this.nodeService.setProxyEnabled(this.data.nodeKey,"skynet",e).subscribe(()=>{this.nodeService.setProxyEnabled(this.data.nodeKey,"dmsg",e).subscribe(()=>{this.loading=!1,this.snackbarService.showDone(e?"Resolving proxy enabled":"Resolving proxy disabled"),this.loadStatus()},()=>{this.loading=!1})},()=>{this.loading=!1,this.snackbarService.showError("Failed to toggle proxy")})}setUpstream(){const e=this.form.get("upstream").value.trim();this.loading=!0,this.nodeService.setProxyUpstream(this.data.nodeKey,"skynet",e).subscribe(()=>{this.loading=!1,this.snackbarService.showDone(e?`Upstream set to ${e}`:"Upstream cleared"),this.loadStatus()},()=>{this.loading=!1,this.snackbarService.showError("Failed to set upstream")})}addPort(){const e=parseInt(this.newPort,10);isNaN(e)||e<1||e>65535?this.snackbarService.showError("Invalid port number"):this.nodeService.registerSkynetPort(this.data.nodeKey,e).subscribe(()=>{this.newPort="",this.snackbarService.showDone(`Port ${e} forwarded`),this.loadPorts()},i=>{this.snackbarService.showError(i?.error?.error||"Failed to register port")})}removePort(e){this.nodeService.deregisterSkynetPort(this.data.nodeKey,e).subscribe(()=>{this.snackbarService.showDone(`Port ${e} removed`),this.loadPorts()},()=>{this.snackbarService.showError("Failed to deregister port")})}close(){this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(Io),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-proxy-settings"]],standalone:!1,decls:9,vars:2,consts:[[1,"generic-dialog-container"],["mat-dialog-title",""],["class","text-center py-3",4,"ngIf"],[4,"ngIf"],["align","end"],["mat-button","",3,"click"],[1,"text-center","py-3"],["diameter","30",1,"mx-auto"],[1,"section-title"],[1,"help-text"],["class","proxy-status",4,"ngIf"],[1,"proxy-form"],[1,"form-row","toggle-row"],[3,"change","checked","disabled"],[3,"formGroup"],[1,"form-row","upstream-row"],["appearance","outline",1,"upstream-field"],["matInput","","formControlName","upstream","placeholder","127.0.0.1:1080"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"proxy-status"],["class","status-table",4,"ngIf"],[1,"status-table"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"h2",1),p(2,"Skynet Settings"),u(),h(3,"mat-dialog-content"),it(4,Eve,2,0,"div",2)(5,Rve,24,5,"div",3),u(),h(6,"mat-dialog-actions",4)(7,"button",5),F("click",function(){return o.close()}),p(8,"Close"),u()()()),2&i&&(d(4),C("ngIf",o.loading),d(),C("ngIf",!o.loading))},dependencies:[tf,xn,Gt,qt,wn,on,mn,MS,T4,Jd,sn,Os,In,Pn,so,kr],styles:[".section-title[_ngcontent-%COMP%]{font-size:15px;font-weight:500;margin:16px 0 4px;color:#000000de}.section-title[_ngcontent-%COMP%]:first-of-type{margin-top:0}.help-text[_ngcontent-%COMP%]{color:#0009;font-size:13px;margin-bottom:12px}.help-text[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:#0000000f;padding:1px 4px;border-radius:3px;font-size:12px}.status-table[_ngcontent-%COMP%]{width:100%;margin-bottom:12px;border-collapse:collapse}.status-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .status-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:5px 8px;text-align:left;border-bottom:1px solid rgba(0,0,0,.08);font-size:13px}.status-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{color:#00000080;font-weight:500}.status-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{color:#000000de}.status-table[_ngcontent-%COMP%] .status-ok[_ngcontent-%COMP%]{color:#4caf50;font-weight:500}.status-table[_ngcontent-%COMP%] .status-off[_ngcontent-%COMP%]{color:#00000061}.proxy-form[_ngcontent-%COMP%]{margin-top:8px;margin-bottom:8px}.form-row[_ngcontent-%COMP%]{margin-bottom:12px}.upstream-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.upstream-row[_ngcontent-%COMP%] .upstream-field[_ngcontent-%COMP%]{flex:1}.no-ports[_ngcontent-%COMP%]{color:#00000061;font-style:italic;font-size:13px}.port-list[_ngcontent-%COMP%]{margin-bottom:8px}.port-item[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border-bottom:1px solid rgba(0,0,0,.06)}.port-item[_ngcontent-%COMP%] .port-number[_ngcontent-%COMP%]{font-family:monospace;font-size:14px;font-weight:500}.add-port-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.add-port-row[_ngcontent-%COMP%] .port-field[_ngcontent-%COMP%]{width:120px}"]})}}return t})();const Nve=["content"],Mk=t=>({number:t}),Lve=t=>({count:t}),Bve=t=>({time:t});function Vve(t,n){if(1&t&&(h(0,"div",15),p(1),b(2,"translate"),u()),2&t){const e=v(2);d(),E(" ",pe(2,1,"node.logs.filter-ignored",se(4,Mk,e.logEntries.length-e.filteredLogEntries.length))," ")}}function Hve(t,n){if(1&t){const e=oe();h(0,"div",12),F("click",function(){return j(e),U(v().showFilters())}),h(1,"div",13)(2,"div")(3,"span"),p(4),b(5,"translate"),u(),h(6,"span",14),p(7),b(8,"translate"),u()(),x(9,Vve,3,6,"div",15),u(),B(10,"div",16),u()}if(2&t){const e=v();d(4),E("",y(5,3,"node.logs.selected-filter")," "),d(3),M(y(8,5,"node.logs."+e.levelDetails.get(e.currentMinimumLevel).levelFilterName)),d(2),S(e.logEntries.length>e.filteredLogEntries.length?9:-1)}}function jve(t,n){if(1&t&&(h(0,"div",3)(1,"mat-icon",17),p(2,"history"),u(),p(3),b(4,"translate"),u()),2&t){const e=v();d(),C("inline",!0),d(2),E(" ",pe(4,2,"node.logs.dropped",se(5,Lve,e.totalDropped))," ")}}function Uve(t,n){if(1&t&&(h(0,"div",4)(1,"a",18),p(2),b(3,"translate"),u()()),2&t){const e=v();d(),C("href",e.getFullLogsUrl(),mo),d(),E(" ",pe(3,2,"node.logs.view-rest",se(5,Mk,e.totalLogs))," ")}}function zve(t,n){1&t&&p(0," : ")}function $ve(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v().$implicit;d(),E(" ",e.msg," ")}}function Wve(t,n){if(1&t&&(h(0,"span",21),p(1),u(),h(2,"span"),p(3),u()),2&t){const e=n.$implicit;d(),E(" ",e.name," "),d(2),E(' ="',e.value,'" ')}}function Gve(t,n){if(1&t&&(h(0,"div",4)(1,"span",19),p(2),u(),h(3,"span"),p(4),u(),p(5," [ "),h(6,"span",19),p(7),u(),h(8,"span",20),p(9),u(),p(10," ]"),x(11,zve,1,0),x(12,$ve,2,1,"span"),ve(13,Wve,4,2,null,null,Fe),u()),2&t){const e=n.$implicit,i=v(2);d(2),E(" ",e.time," "),d(),Ze(i.levelDetails.get(e.level).colorClass),d(),E(" ",i.levelDetails.get(e.level).name," "),d(3),E(" ",e.func," "),d(2),E(" ",e._module," "),d(2),S(e.msg?11:-1),d(),S(e.msg?12:-1),d(),ye(e.extra)}}function qve(t,n){1&t&&ve(0,Gve,15,8,"div",4,Fe),2&t&&ye(v().filteredLogEntries)}function Kve(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"node.logs.view-all")," ")}function Yve(t,n){if(1&t&&(p(0),b(1,"translate")),2&t){const e=v(2);E(" ",pe(1,1,"node.logs.view-rest",se(4,Mk,e.totalLogs))," ")}}function Xve(t,n){if(1&t&&(h(0,"div",4)(1,"a",18),x(2,Kve,2,3),x(3,Yve,2,6),u()()),2&t){const e=v();d(),C("href",e.getFullLogsUrl(),mo),d(),S(e.hasMoreLogMessages?-1:2),d(),S(e.hasMoreLogMessages?3:-1)}}function Zve(t,n){1&t&&(h(0,"div",5),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"node.logs.no-logs")," "))}function Qve(t,n){1&t&&(h(0,"div",5),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"node.logs.no-logs-for-filter")," "))}function Jve(t,n){1&t&&B(0,"app-loading-indicator",6),2&t&&C("showWhite",!1)}function eye(t,n){if(1&t&&(h(0,"div",11)(1,"mat-icon",9),p(2,"refresh"),u(),h(3,"span"),p(4),b(5,"translate"),u()()),2&t){const e=v();d(),C("inline",!0),d(3),M(pe(5,2,"refresh-button."+e.elapsedTime.translationVarName,se(5,Bve,e.elapsedTime.elapsedTime)))}}var bn=function(t){return t[t.PanicLevel=0]="PanicLevel",t[t.FatalLevel=1]="FatalLevel",t[t.ErrorLevel=2]="ErrorLevel",t[t.WarnLevel=3]="WarnLevel",t[t.InfoLevel=4]="InfoLevel",t[t.DebugLevel=5]="DebugLevel",t[t.TraceLevel=6]="TraceLevel",t[t.Unknown=7]="Unknown",t}(bn||{});class tye{constructor(){this.extra=[]}}let nye=(()=>{class t{static openDialog(e){const i=new nn;return i.autoFocus=!1,i.width=rt.largeModalWidth,e.open(t,i)}constructor(e,i,o,r,s){this.dialogRef=e,this.nodeService=i,this.snackbarService=o,this.ngZone=r,this.dialog=s,this.levelDetails=new Map([[bn.PanicLevel,{name:"PANIC",colorClass:"panic-level-color",levelFilterName:"filter-panic",importance:8}],[bn.FatalLevel,{name:"FATAL",colorClass:"fatal-level-color",levelFilterName:"filter-faltal",importance:7}],[bn.ErrorLevel,{name:"ERROR",colorClass:"error-level-color",levelFilterName:"filter-error",importance:6}],[bn.WarnLevel,{name:"WARNING",colorClass:"warning-level-color",levelFilterName:"filter-warning",importance:5}],[bn.InfoLevel,{name:"INFO",colorClass:"info-level-color",levelFilterName:"filter-info",importance:4}],[bn.DebugLevel,{name:"DEBUG",colorClass:"debug-level-color",levelFilterName:"filter-debug",importance:3}],[bn.TraceLevel,{name:"TRACE",colorClass:"trace-level-color",levelFilterName:"filter-all",importance:2}],[bn.Unknown,{name:"UNKNOWN LOG",colorClass:"unknown-level-color",levelFilterName:"filter-all",importance:1}]]),this.currentMinimumLevel=bn.Unknown,this.loading=!0,this.LoadingMoment=0,this.liveTail=!0,this.livePollMs=2e3,this.logCursor=0,this.totalDropped=0,this.wasAtBottom=!0,this.maxElementsPerPage=1e3,this.logEntries=[],this.filteredLogEntries=[],this.hasMoreLogMessages=!1,this.totalLogs=0,this.shouldShowError=!0}ngOnInit(){this.loadData(0)}ngOnDestroy(){this.removeSubscription(),this.removeTimeSubscription()}showFilters(){const e=[{icon:"",label:"node.logs.filter-all"},{icon:"",label:"node.logs.filter-debug"},{icon:"",label:"node.logs.filter-info"},{icon:"",label:"node.logs.filter-warning"},{icon:"",label:"node.logs.filter-error"},{icon:"",label:"node.logs.filter-faltal"},{icon:"",label:"node.logs.filter-panic"}],i=[bn.Unknown,bn.DebugLevel,bn.InfoLevel,bn.WarnLevel,bn.ErrorLevel,bn.FatalLevel,bn.PanicLevel];for(let o=0;o<=i.length;o++)this.currentMinimumLevel===i[o]&&(e[o].icon="check");ao.openDialog(this.dialog,e,"node.logs.filter-title").afterClosed().subscribe(o=>{this.currentMinimumLevel=i[o-1],this.filter()})}loadData(e){this.removeSubscription(),this.captureScrollTailState(),this.loading=0===this.logEntries.length;const i=this.logCursor;this.subscription=ae(1).pipe(li(e),It(()=>this.nodeService.getRuntimeLogsSince(ke.getCurrentNodeKey(),i))).subscribe(o=>this.onLogsDeltaReceived(o),o=>this.onLogsError(o))}toggleLiveTail(){this.liveTail=!this.liveTail,this.liveTail?this.loadData(0):this.removeSubscription()}captureScrollTailState(){if(!this.content)return void(this.wasAtBottom=!0);const e=this.content.nativeElement;this.wasAtBottom=e.scrollHeight-e.scrollTop-e.clientHeight<40}removeSubscription(){this.subscription&&this.subscription.unsubscribe()}removeTimeSubscription(){this.timeUpdateSubscription&&this.timeUpdateSubscription.unsubscribe()}onLogsDeltaReceived(e){if(!e)return this.loading=!1,void this.scheduleNextPoll();const i=0===this.logCursor;this.logCursor="number"==typeof e.latest?e.latest:this.logCursor,"number"==typeof e.dropped&&e.dropped>0&&(this.totalDropped+=e.dropped);const o=Array.isArray(e.entries)?e.entries:[];if(0===o.length)return this.loading=!1,this.LoadingMoment=Date.now(),this.shouldShowError=!0,this.startUpdatingTime(),void this.scheduleNextPoll();const r=[];for(const s of o)try{r.push(JSON.parse(s))}catch{}i&&(this.logEntries=[]),this.appendParsedEntries(r),this.logEntries.length>this.maxElementsPerPage&&(this.logEntries=this.logEntries.slice(this.logEntries.length-this.maxElementsPerPage),this.hasMoreLogMessages=!0),this.totalLogs=this.logCursor,this.loading=!1,this.LoadingMoment=Date.now(),this.shouldShowError=!0,this.startUpdatingTime(),this.filter(),this.scheduleNextPoll()}scheduleNextPoll(){this.liveTail&&this.loadData(this.livePollMs)}appendParsedEntries(e){e.forEach(i=>{const o=new tye;o.time=i.time,o._module=i._module,o.msg=i.msg,o.func=i.func;const r=i.level?i.level.toLowerCase():"";if(o.level=r.includes("panic")?bn.PanicLevel:r.includes("fatal")?bn.FatalLevel:r.includes("error")?bn.ErrorLevel:r.includes("warn")?bn.WarnLevel:r.includes("info")?bn.InfoLevel:r.includes("debug")?bn.DebugLevel:r.includes("trace")?bn.TraceLevel:bn.Unknown,i.current_backoff){const a=Math.floor(i.current_backoff/1e9),l=Math.floor(a/60),c=Math.floor(a%60);o.extra.push(l?{name:"current_backoff",value:l+"m"+c+"s"}:{name:"current_backoff",value:c+"s"})}i.error&&o.extra.push({name:"error",value:i.error});const s=new Set;s.add("time"),s.add("_module"),s.add("msg"),s.add("func"),s.add("level"),s.add("current_backoff"),s.add("error"),s.add("log_line");for(const a in i)s.has(a)||o.extra.push({name:a,value:i[a]});this.logEntries.push(o)})}filter(){this.filteredLogEntries=[];const e=this.levelDetails.get(this.currentMinimumLevel).importance;this.logEntries.forEach(i=>{const o=this.levelDetails.get(i.level).importance;e<=o&&this.filteredLogEntries.push(i)}),this.wasAtBottom&&setTimeout(()=>{this.content&&(this.content.nativeElement.scrollTop=this.content.nativeElement.scrollHeight)})}startUpdatingTime(){this.elapsedTime=gv.getElapsedTime(Math.floor((Date.now()-this.LoadingMoment)/1e3)),this.removeTimeSubscription(),this.timeUpdateSubscription=xa(5e3,5e3).subscribe(()=>this.ngZone.run(()=>{this.elapsedTime=gv.getElapsedTime(Math.floor((Date.now()-this.LoadingMoment)/1e3))}))}getFullLogsUrl(){return window.location.origin+"/api/visors/"+ke.getCurrentNodeKey()+"/runtime-logs"}onLogsError(e){e=Qe(e),this.shouldShowError&&(this.snackbarService.showError("common.loading-error",null,!0,e),this.shouldShowError=!1),this.loadData(rt.connectionRetryDelay)}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(Io),O(ct),O(_e),O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-node-logs"]],viewQuery:function(i,o){if(1&i&&ot(Nve,5),2&i){let r;he(r=fe())&&(o.content=r.first)}},standalone:!1,decls:21,vars:20,consts:[["content",""],[3,"headline","includeVerticalMargins","includeScrollableArea","dialog"],[1,"top-dialog-button"],[1,"logs-dropped-banner"],[1,"log-entry"],[1,"log-empty-msg"],[3,"showWhite"],[1,"logs-footer"],[1,"live-tail-toggle","subtle-transparent-button",3,"click"],[1,"icon",3,"inline"],[1,"update-button","subtle-transparent-button",3,"click"],[1,"update-time"],[1,"top-dialog-button",3,"click"],[1,"top-dialog-button-content"],[1,"actual-value"],[1,"small"],[1,"top-dialog-button-margin"],[3,"inline"],["target","_blank",1,"view-raw-link",3,"href"],[1,"transparent"],[1,"module-color"],[1,"extra-data-color"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),x(2,Hve,11,7,"div",2),x(3,jve,5,7,"div",3),h(4,"mat-dialog-content",null,0),x(6,Uve,4,7,"div",4),x(7,qve,2,0),x(8,Xve,4,3,"div",4),x(9,Zve,3,3,"div",5),x(10,Qve,3,3,"div",5),x(11,Jve,1,1,"app-loading-indicator",6),h(12,"div",7)(13,"div",8),F("click",function(){return o.toggleLiveTail()}),h(14,"mat-icon",9),p(15),u(),h(16,"span"),p(17),b(18,"translate"),u()(),h(19,"div",10),F("click",function(){return o.loadData(0)}),x(20,eye,6,7,"div",11),u()()()()),2&i&&(C("headline",y(1,16,"node.logs.title"))("includeVerticalMargins",!1)("includeScrollableArea",!1)("dialog",o.dialogRef),d(2),S(!o.loading&&o.logEntries&&o.logEntries.length>0?2:-1),d(),S(o.totalDropped>0?3:-1),d(3),S(!o.loading&&o.hasMoreLogMessages?6:-1),d(),S(o.loading?-1:7),d(),S(!o.loading&&o.logEntries&&o.logEntries.length>0?8:-1),d(),S(o.loading||o.logEntries&&0!==o.logEntries.length?-1:9),d(),S(!o.loading&&o.logEntries&&o.logEntries.length>0&&o.filteredLogEntries.length<1?10:-1),d(),S(o.loading?11:-1),d(3),C("inline",!0),d(),M(o.liveTail?"pause":"play_arrow"),d(2),M(y(18,18,o.liveTail?"node.logs.live-on":"node.logs.live-off")),d(3),S(o.loading?-1:20))},dependencies:[Jd,We,gn,Yr,xe],styles:[".top-dialog-button[_ngcontent-%COMP%]{color:#777!important}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%]{text-align:center}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .actual-value[_ngcontent-%COMP%]{color:#202226}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .small[_ngcontent-%COMP%]{font-size:.6rem}.log-entry[_ngcontent-%COMP%]{margin-top:15px;word-break:break-word}.log-entry[_ngcontent-%COMP%] .transparent[_ngcontent-%COMP%]{color:#999}.log-entry[_ngcontent-%COMP%]:first-of-type{margin-top:0}.log-entry[_ngcontent-%COMP%]:last-of-type{margin-bottom:24px}.log-empty-msg[_ngcontent-%COMP%]{text-align:center}.view-raw-link[_ngcontent-%COMP%]{color:#215f9e}.update-button[_ngcontent-%COMP%]{display:flex;justify-content:center;cursor:pointer}.update-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:5px;margin-right:5px}.update-button[_ngcontent-%COMP%] .update-time[_ngcontent-%COMP%]{text-align:center;font-size:.7rem;color:#202226;margin:0 5px}.panic-level-color[_ngcontent-%COMP%], .fatal-level-color[_ngcontent-%COMP%]{color:red}.error-level-color[_ngcontent-%COMP%]{color:#d10000}.warning-level-color[_ngcontent-%COMP%]{color:#e27505}.info-level-color[_ngcontent-%COMP%]{color:#0d9519}.debug-level-color[_ngcontent-%COMP%]{color:#0065ff}.trace-level-color[_ngcontent-%COMP%]{color:#468cf5}.unknown-level-color[_ngcontent-%COMP%]{color:#e27505}.module-color[_ngcontent-%COMP%]{color:#a119fc}.extra-data-color[_ngcontent-%COMP%]{color:#ad8021}.logs-footer[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;border-top:1px solid rgba(255,255,255,.08)}.live-tail-toggle[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:13px}.live-tail-toggle[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:18px}.logs-dropped-banner[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding:6px 10px;background:#ffc80014;border-bottom:1px solid rgba(255,200,0,.2);font-size:12px;opacity:.9}.logs-dropped-banner[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px}"]})}}return t})();class gV{constructor(n,e){this.canBeUpdated=!1,this.canOpenTerminal=!1,this.options=[],this.dialog=n.get(Ot),this.router=n.get(vt),this.snackbarService=n.get(ct),this.nodeService=n.get(Io),this.storageService=n.get(ti),this.showingFullList=e,this.returnButtonText=e?"node.title":"nodes.title",this.updateOptions()}updateOptions(){this.options=[],this.canOpenTerminal&&this.options.push({name:"actions.menu.terminal",actionName:"terminal",icon:"laptop"}),this.options.push({name:"actions.menu.logs",actionName:"logs",icon:"subject"}),this.options.push({name:"actions.menu.proxy",actionName:"proxy",icon:"vpn_lock"}),this.options.push({name:"actions.menu.turn-off",actionName:"shutdown",icon:"power_settings_new"})}setCurrentNode(n){this.currentNode=n,this.canBeUpdated=!!Rt.checkIfTagIsUpdatable(n.buildTag),this.canOpenTerminal=Rt.checkIfTagCanOpenterminal(n.buildTag),this.updateOptions()}setCurrentNodeKey(n){this.currentNodeKey=n}performAction(n,e){"terminal"===n?this.terminal():"update"===n?this.update():"logs"===n?this.runtimeLogs():"proxy"===n?this.openProxySettings():"shutdown"===n?this.shutdown():null===n&&this.back()}dispose(){this.updateSubscription&&this.updateSubscription.unsubscribe(),this.shutdownSubscription&&this.shutdownSubscription.unsubscribe()}shutdown(){const n=Rt.createConfirmationDialog(this.dialog,"actions.turn-off.confirmation");n.componentInstance.operationAccepted.subscribe(()=>{n.componentInstance.showProcessing(),this.shutdownSubscription=this.nodeService.shutdown(this.currentNodeKey).subscribe(()=>{this.snackbarService.showDone("actions.turn-off.done"),n.close(),this.router.navigate(["nodes"])},e=>{e=Qe(e),n.componentInstance.showDone("confirmation.error-header-text",e.translatableErrorMsg)})})}update(){const n=Rt.createConfirmationDialog(this.dialog,"actions.update.confirmation");n.componentInstance.operationAccepted.subscribe(()=>{const e=window.location.protocol,i=window.location.host.replace("localhost:4200","127.0.0.1:8000");window.open(e+"//"+i+"/pty/"+this.currentNodeKey+"?commands=update","_blank","noopener noreferrer"),n.close()})}terminal(){const n=window.location.protocol,e=window.location.host.replace("localhost:4200","127.0.0.1:8000");window.open(n+"//"+e+"/pty/"+this.currentNodeKey,"_blank","noopener noreferrer")}runtimeLogs(){nye.openDialog(this.dialog)}openProxySettings(){this.dialog.open(Fve,{width:"550px",data:{nodeKey:this.currentNodeKey}})}back(){this.router.navigate(this.showingFullList?["nodes",this.currentNodeKey]:["nodes"])}}class iye{constructor(){this.trafficData=new oye}}class oye{constructor(){this.totalSent=0,this.totalReceived=0,this.sentHistory=[],this.receivedHistory=[]}}class rye{constructor(){this.lastEmitedData=new iye,this.dataSubject=new ki(null),this.whenUpdateWasScheduled=0,this.stopRequestedDate=-1,this.consecutiveErrors=0}}let sye=(()=>{class t{constructor(e,i){this.storageService=e,this.nodeService=i,this.maxTrafficHistorySlots=10,this.expirationTime=6e4,this.nodesMap=new Map,this.storageService.getRefreshTimeObservable().subscribe(o=>{this.dataRefreshDelay=1e3*o,this.nodesMap.forEach(r=>{this.forceSpecificNodeRefresh(r.pk)})}),this.checkForExpired()}checkForExpired(){setInterval(()=>{try{this.nodesMap.forEach(e=>{this.finishIfExpired(e)})}catch{}},5e3)}startRequestingData(e){let i=this.nodesMap.get(e);return i?i.stopRequestedDate=-1:(i=new rye,i.pk=e,this.nodesMap.set(e,i),this.startDataSubscription(0,i)),i.dataSubject.asObservable()}stopRequestingSpecificNode(e){const i=this.nodesMap.get(e);i&&(i.stopRequestedDate=Date.now())}startDataSubscription(e,i){i.updateSubscription&&i.updateSubscription.unsubscribe();let o=0;i.updateSubscription=ae(1).pipe(li(e),ai(()=>{i.lastEmitedData.updating=!0,i.dataSubject.next(i.lastEmitedData)}),li(120),ai(()=>{o=performance.now(),console.log("[HV-DIAG] fetching node data for",i.pk.substring(0,8)+"...")}),It(()=>this.nodeService.getNode(i.pk))).subscribe(r=>{console.log("[HV-DIAG] fetch completed in",(performance.now()-o).toFixed(0),"ms for",i.pk.substring(0,8)+"..."),i.consecutiveErrors=0,this.updateTrafficData(r.transports,i.lastEmitedData.trafficData,i.whenUpdateWasScheduled);let s=this.calculateRemainingTime(i.whenUpdateWasScheduled);s<1e3&&(i.whenUpdateWasScheduled=Date.now(),s=this.dataRefreshDelay),i.lastEmitedData={data:r,error:null,momentOfLastCorrectUpdate:Date.now(),updating:!1,trafficData:i.lastEmitedData.trafficData},i.dataSubject.next(i.lastEmitedData),this.startDataSubscription(s,i)},r=>{if(r=Qe(r),i.consecutiveErrors=(i.consecutiveErrors||0)+1,i.lastEmitedData={data:i.lastEmitedData.data,error:r,momentOfLastCorrectUpdate:i.lastEmitedData.momentOfLastCorrectUpdate,updating:!1,trafficData:i.lastEmitedData.trafficData},i.dataSubject.next(i.lastEmitedData),r.originalError&&400===r.originalError.status)i.dataSubject.complete(),i.updateSubscription.unsubscribe(),this.nodesMap.delete(i.pk);else{const a=Math.min(rt.connectionRetryDelay*Math.pow(2,i.consecutiveErrors-1),3e4);this.startDataSubscription(a,i)}})}calculateRemainingTime(e){if(e<1)return 0;let i=this.dataRefreshDelay-(Date.now()-e);return i<0&&(i=0),i}updateTrafficData(e,i,o){if(i.totalSent=0,i.totalReceived=0,e&&e.length>0&&(i.totalSent=e.reduce((r,s)=>r+s.sent,0),i.totalReceived=e.reduce((r,s)=>r+s.recv,0)),0===i.sentHistory.length)for(let r=0;rthis.maxTrafficHistorySlots&&(s=this.maxTrafficHistorySlots),0===s)i.sentHistory[i.sentHistory.length-1]=i.totalSent,i.receivedHistory[i.receivedHistory.length-1]=i.totalReceived;else for(let a=0;athis.maxTrafficHistorySlots&&(i.sentHistory.splice(0,i.sentHistory.length-this.maxTrafficHistorySlots),i.receivedHistory.splice(0,i.receivedHistory.length-this.maxTrafficHistorySlots))}}forceSpecificNodeRefresh(e){const i=this.nodesMap.get(e);i&&this.startDataSubscription(0,i)}finishIfExpired(e){e.stopRequestedDate>0&&Date.now()-e.stopRequestedDate>this.expirationTime&&(e.dataSubject.complete(),e.updateSubscription.unsubscribe(),this.nodesMap.delete(e.pk))}static{this.\u0275fac=function(i){return new(i||t)(ce(ti),ce(Io))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function aye(t,n){if(1&t){const e=oe();Vr(0),h(1,"div",2)(2,"div",3)(3,"app-top-bar",4),F("optionSelected",function(o){return j(e),U(v().performAction(o))})("refreshRequested",function(){return j(e),U(v().forceDataRefresh(!0))}),u()(),h(4,"div",3)(5,"div",5)(6,"div",6),B(7,"router-outlet"),u()()()(),cr()}if(2&t){const e=v();d(3),C("titleParts",e.titleParts)("pageHeaderLabel",e.headerLabel)("pageHeaderIdentifier",e.headerIdentifier)("tabsData",e.tabsData)("selectedTabIndex",e.selectedTabIndex)("secondsSinceLastUpdate",e.secondsSinceLastUpdate)("showLoading",e.updating)("showAlert",e.errorsUpdating)("refeshRate",e.storageService.getRefreshTime())("optionsData",e.nodeActionsHelper?e.nodeActionsHelper.options:null)("returnText",e.nodeActionsHelper?e.nodeActionsHelper.returnButtonText:"")}}function lye(t,n){1&t&&(Vr(0),B(1,"app-loading-indicator"),cr())}function cye(t,n){1&t&&(Vr(0),h(1,"div",10)(2,"div")(3,"mat-icon",11),p(4,"error"),u(),p(5),b(6,"translate"),u()(),cr()),2&t&&(d(3),C("inline",!0),d(2),E(" ",y(6,2,"node.not-found")," "))}function dye(t,n){if(1&t){const e=oe();Vr(0),h(1,"div",10)(2,"div")(3,"mat-icon",11),p(4,"error"),u(),p(5),b(6,"translate"),B(7,"br"),h(8,"button",12),F("click",function(){return j(e),U(v(2).retryLoading())}),p(9),b(10,"translate"),u()()(),cr()}2&t&&(d(3),C("inline",!0),d(2),E(" ",y(6,3,"node.error-load")," "),d(4),E(" ",y(10,5,"common.refresh")," "))}function uye(t,n){if(1&t){const e=oe();h(0,"div",7)(1,"div")(2,"app-top-bar",8),F("optionSelected",function(o){return j(e),U(v().performAction(o))}),u()(),it(3,lye,2,0,"ng-container",9)(4,cye,7,4,"ng-container",9)(5,dye,11,7,"ng-container",9),u()}if(2&t){const e=v();d(2),C("titleParts",e.titleParts)("pageHeaderLabel",e.headerLabel)("pageHeaderIdentifier",e.headerIdentifier)("tabsData",e.tabsData)("selectedTabIndex",e.selectedTabIndex)("showUpdateButton",!1)("optionsData",e.nodeActionsHelper?e.nodeActionsHelper.options:null)("returnText",e.nodeActionsHelper?e.nodeActionsHelper.returnButtonText:""),d(),C("ngIf",!e.notFound&&!e.loadFailed),d(),C("ngIf",e.notFound),d(),C("ngIf",e.loadFailed)}}let ke=(()=>{class t extends pn{static refreshCurrentDisplayedData(){t.currentInstanceInternal&&t.currentInstanceInternal.forceDataRefresh(!1)}static getCurrentNodeKey(){return t.currentNodeKey}static get currentNode(){return t.nodeSubject.asObservable()}static get currentTrafficData(){return t.trafficDataSubject.asObservable()}constructor(e,i,o,r,s,a,l,c){super(),this.storageService=e,this.singleNodeDataService=i,this.route=o,this.ngZone=r,this.snackbarService=s,this.injector=a,this.cdr=l,this.persistentDataResponseKey="serv-dat-response",this.nodeLoaded=!1,this.notFound=!1,this.titleParts=[],this.tabsData=[],this.selectedTabIndex=-1,this.headerLabel="",this.headerIdentifier="",this.showingFullList=!1,this.initialRouteEventFired=!1,this.secondsSinceLastUpdate=0,this.lastUpdate=Date.now(),this.updating=!1,this.errorsUpdating=!1,this.lastUpdateRequestedManually=!1,this.loadFailed=!1,this.consecutiveLoadErrors=0,this.instanceId="",t.nodeSubject=new oo(1),t.trafficDataSubject=new oo(1),t.currentInstanceInternal=this,this.instanceId=Math.random().toString(36).substring(7),console.log("[HV-DIAG] NodeComponent constructor, instance:",this.instanceId),this.navigationsSubscription=c.events.subscribe(f=>{f.urlAfterRedirects&&(this.lastUrl=f.urlAfterRedirects,this.processRouteUpdate(),this.initialRouteEventFired=!0)})}ngOnInit(){return this.ngZone.runOutsideAngular(()=>{this.updateTimeSubscription=xa(5e3,5e3).subscribe(()=>this.ngZone.run(()=>{this.secondsSinceLastUpdate=Math.floor((Date.now()-this.lastUpdate)/1e3)}))}),this.initSubscription=ae(0).pipe(li(500)).subscribe(()=>{this.initialRouteEventFired||(this.lastUrl=window.location.href,this.processRouteUpdate())}),super.ngOnInit()}processRouteUpdate(){console.log("[HV-DIAG] processRouteUpdate called, instance id:",this.instanceId),t.currentNodeKey=this.route.snapshot.params.key,this.nodeActionsHelper&&this.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),this.updateTabBar(),this.navigationsSubscription.unsubscribe(),this.startGettingData(!0)}refreshHeader(){if(!this.node)return this.headerLabel="",void(this.headerIdentifier="");const e=this.storageService.getLabelInfo(this.node.localPk);this.headerLabel=e&&e.label?e.label:this.node.label||(this.node.localPk?this.node.localPk.slice(0,8)+"\u2026":""),this.headerIdentifier=this.node.localPk||""}updateTabBar(){if(this.lastUrl&&(this.lastUrl.includes("/info")||this.lastUrl.includes("/routing")||this.lastUrl.includes("/transports")||this.lastUrl.includes("/rewards")||this.lastUrl.includes("/skynet")||this.lastUrl.includes("/resources")||this.lastUrl.includes("/chat")||this.lastUrl.includes("/dmsg")||this.lastUrl.includes("/apps")&&!this.lastUrl.includes("/apps-list")))this.titleParts=["nodes.title","node.title"],this.tabsData=[{icon:"info",label:"node.tabs.info",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"info"]:null},{icon:"shuffle",label:"node.tabs.routing",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"routing"]:null},{icon:"swap_horiz",label:"node.tabs.transports",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"transports"]:null},{icon:"apps",label:"node.tabs.apps",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"apps"]:null},{icon:"monetization_on",label:"node.tabs.rewards",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"rewards"]:null},{icon:"public",label:"node.tabs.skynet",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"skynet"]:null},{icon:"memory",label:"node.tabs.resources",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"resources"]:null},{icon:"forum",label:"node.tabs.chat",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"chat"]:null},{icon:"device_hub",label:"node.tabs.dmsg",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"dmsg"]:null}],this.selectedTabIndex=0,this.lastUrl.includes("/routing")&&(this.selectedTabIndex=1),this.lastUrl.includes("/transports")&&(this.selectedTabIndex=2),this.lastUrl.includes("/apps")&&!this.lastUrl.includes("/apps-list")&&(this.selectedTabIndex=3),this.lastUrl.includes("/rewards")&&(this.selectedTabIndex=4),this.lastUrl.includes("/skynet")&&(this.selectedTabIndex=5),this.lastUrl.includes("/resources")&&(this.selectedTabIndex=6),this.lastUrl.includes("/chat")&&(this.selectedTabIndex=7),this.lastUrl.includes("/dmsg")&&(this.selectedTabIndex=8),this.showingFullList=!1,this.nodeActionsHelper=new gV(this.injector,this.showingFullList),this.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),this.node&&this.nodeActionsHelper.setCurrentNode(this.node);else if(this.lastUrl&&this.lastUrl.includes("/apps-list")){this.showingFullList=!0,this.nodeActionsHelper=new gV(this.injector,this.showingFullList),this.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),this.node&&this.nodeActionsHelper.setCurrentNode(this.node);const e="apps.apps-list";this.titleParts=["nodes.title","node.title",e+".title"],this.tabsData=[{icon:"view_headline",label:e+".list-title",linkParts:[]}],this.selectedTabIndex=0}else this.titleParts=[],this.tabsData=[]}performAction(e){this.nodeActionsHelper.performAction(e,t.currentNodeKey)}forceDataRefresh(e=!1){e&&(this.lastUpdateRequestedManually=!0),this.singleNodeDataService.forceSpecificNodeRefresh(t.currentNodeKey)}retryLoading(){this.loadFailed=!1,this.consecutiveLoadErrors=0,this.startGettingData(!1)}startGettingData(e){const i=e?this.getLocalValue(this.persistentDataResponseKey):null;let o=this.singleNodeDataService.startRequestingData(t.currentNodeKey);i&&(o=ae(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{if(performance.now(),console.log("[HV-DIAG] data event received",{updating:r?.updating,hasData:!!r?.data,hasError:!!r?.error,transports:r?.data?.transports?.length??"n/a",routes:r?.data?.routes?.length??"n/a",apps:r?.data?.apps?.length??"n/a"}),!i){const a=performance.now();this.saveLocalValue(this.persistentDataResponseKey,JSON.stringify(r)),console.log("[HV-DIAG] saveLocalValue took",(performance.now()-a).toFixed(1),"ms")}if(this.updating=!r||r.updating,console.log("[HV-DIAG] updating:",this.updating,"node set:",!!this.node,"notFound:",this.notFound,"loadFailed:",this.loadFailed),r&&!r.updating)if(r.data&&!r.error){const a=performance.now();this.ngZone.run(()=>{this.node=r.data,this.trafficData=r.trafficData,this.nodeLoaded=!0,this.refreshHeader()}),console.log("[HV-DIAG] node assigned, instance:",this.instanceId,"nodeLoaded:",this.nodeLoaded,"node.localPk:",this.node?.localPk?.substring(0,8),"transports:",this.node?.transports?.length,"routes:",this.node?.routes?.length);try{t.nodeSubject.next(this.node)}catch(l){console.error("[HV-DIAG] ERROR in nodeSubject.next:",l)}t.trafficDataSubject.next(this.trafficData),this.nodeActionsHelper&&this.nodeActionsHelper.setCurrentNode(this.node),this.snackbarService.closeCurrentIfTemporaryError(),this.lastUpdate=r.momentOfLastCorrectUpdate,this.secondsSinceLastUpdate=Math.floor((Date.now()-r.momentOfLastCorrectUpdate)/1e3),this.errorsUpdating=!1,this.consecutiveLoadErrors=0,this.loadFailed=!1,Xr.currentInstance.hideDataProblemMsg(),console.log("[HV-DIAG] data processing took",(performance.now()-a).toFixed(1),"ms"),console.log("[HV-DIAG] AFTER ASSIGNMENT: this.node is",this.node?"SET":"NULL","this.notFound:",this.notFound,"this.loadFailed:",this.loadFailed),this.cdr.detectChanges(),this.lastUpdateRequestedManually&&(this.snackbarService.showDone("common.refreshed",null),this.lastUpdateRequestedManually=!1)}else if(r.error){if(r.error.originalError&&400===r.error.originalError.status)return void(this.notFound=!0);if(this.consecutiveLoadErrors++,!this.node&&this.consecutiveLoadErrors>=3)return this.loadFailed=!0,this.singleNodeDataService.stopRequestingSpecificNode(t.currentNodeKey),this.snackbarService.showError("common.loading-error",null,!0,r.error),void Xr.currentInstance.showDataProblemMsg();this.errorsUpdating||this.snackbarService.showError(this.node?"node.error-load":"common.loading-error",null,!0,r.error),this.errorsUpdating=!0,Xr.currentInstance.showDataProblemMsg()}i&&this.startGettingData(!1)})}ngOnDestroy(){console.log("[HV-DIAG] ngOnDestroy, instance:",this.instanceId),this.singleNodeDataService.stopRequestingSpecificNode(t.currentNodeKey),this.dataSubscription.unsubscribe(),this.updateTimeSubscription.unsubscribe(),this.navigationsSubscription.unsubscribe(),this.initSubscription.unsubscribe(),t.currentInstanceInternal=void 0,t.currentNodeKey=void 0,t.nodeSubject.complete(),t.nodeSubject=void 0,t.trafficDataSubject.complete(),t.trafficDataSubject=void 0,this.nodeActionsHelper.dispose()}static{this.\u0275fac=function(i){return new(i||t)(O(ti),O(sye),O(Ai),O(_e),O(ct),O(He),O(Jt),O(vt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-node"]],standalone:!1,features:[be],decls:3,vars:2,consts:[["loadingBlock",""],[4,"ngIf","ngIfElse"],[1,"row"],[1,"col-12"],[3,"optionSelected","refreshRequested","titleParts","pageHeaderLabel","pageHeaderIdentifier","tabsData","selectedTabIndex","secondsSinceLastUpdate","showLoading","showAlert","refeshRate","optionsData","returnText"],[1,"full-size-main-area"],[1,"d-flex","flex-column","h-100"],[1,"d-flex","flex-column","h-100","w-100"],[3,"optionSelected","titleParts","pageHeaderLabel","pageHeaderIdentifier","tabsData","selectedTabIndex","showUpdateButton","optionsData","returnText"],[4,"ngIf"],[1,"w-100","h-100","d-flex","not-found-label"],[3,"inline"],["mat-raised-button","","color","primary",2,"margin-top","16px",3,"click"]],template:function(i,o){if(1&i&&it(0,aye,8,11,"ng-container",1)(1,uye,6,11,"ng-template",null,0,Rl),2&i){const r=Hn(2);C("ngIf",o.nodeLoaded)("ngIfElse",r)}},dependencies:[tf,eb,Pn,We,Yr,Mr,xe],styles:[".not-found-label[_ngcontent-%COMP%]{align-items:center;justify-content:center;font-size:1rem;position:relative}.not-found-label[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:5px;font-size:22px;opacity:.5;margin-right:3px}.full-size-main-area[_ngcontent-%COMP%], .main-area[_ngcontent-%COMP%]{width:100%}@media(min-width:992px){.main-area[_ngcontent-%COMP%]{width:73%;padding-right:20px;float:left}}.right-bar[_ngcontent-%COMP%]{width:27%;float:right;display:none}@media(min-width:992px){.right-bar[_ngcontent-%COMP%]{display:block;width:27%;float:right}}"]})}}return t})();function hye(t,n){if(1&t&&(h(0,"mat-option",9),p(1),b(2,"translate"),u()),2&t){const e=n.$implicit;C("value",Qt(e)),d(),gt(" ",e," ",y(2,4,"settings.seconds")," ")}}let fye=(()=>{class t{constructor(e,i,o){this.formBuilder=e,this.storageService=i,this.snackbarService=o,this.timesList=["3","5","10","15","30","60","90","150","300"]}ngOnInit(){this.form=this.formBuilder.group({refreshRate:[this.storageService.getRefreshTime().toString()]}),this.subscription=this.form.get("refreshRate").valueChanges.subscribe(e=>{this.storageService.setRefreshTime(e),this.snackbarService.showDone("settings.refresh-rate-confirmation")})}ngOnDestroy(){this.subscription.unsubscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(di),O(ti),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-refresh-rate"]],standalone:!1,decls:15,vars:8,consts:[[1,"rounded-elevated-box"],[1,"box-internal-container","overflow"],[1,"white-form-help-icon-container"],[1,"help-icon",3,"inline","matTooltip"],[3,"formGroup"],[1,"white-form-field"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","refreshRate"],[3,"value"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"div",2)(3,"mat-icon",3),b(4,"translate"),p(5," help "),u()(),h(6,"form",4)(7,"mat-form-field",5)(8,"div",6)(9,"label",7),p(10),b(11,"translate"),u(),h(12,"mat-select",8),ve(13,hye,3,6,"mat-option",9,Fe),u()()()()()()),2&i&&(d(3),C("inline",!0)("matTooltip",y(4,4,"settings.refresh-rate-help")),d(3),C("formGroup",o.form),d(4),M(y(11,6,"settings.refresh-rate")),d(3),ye(o.timesList))},dependencies:[xn,qt,wn,on,mn,sn,We,Kt,Pa,Qr,xe],styles:[".help-icon[_ngcontent-%COMP%]{display:inline}mat-form-field[_ngcontent-%COMP%]{margin-right:32px}mat-form-field[_ngcontent-%COMP%] .mat-mdc-form-field-bottom-align{margin-bottom:0!important}"]})}}return t})();const pye=t=>({number:t});let _V=(()=>{class t{constructor(){this.numberOfElements=0,this.linkParts=[""],this.queryParams={}}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=re({type:t,selectors:[["app-view-all-link"]],inputs:{numberOfElements:"numberOfElements",linkParts:"linkParts",queryParams:"queryParams"},standalone:!1,decls:6,vars:9,consts:[[1,"main-container"],[3,"routerLink","queryParams"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"a",1),p(2),b(3,"translate"),h(4,"mat-icon",2),p(5,"chevron_right"),u()()()),2&i&&(d(),C("routerLink",o.linkParts)("queryParams",o.queryParams),d(),E(" ",pe(3,4,"view-all-link.label",se(7,pye,o.numberOfElements))," "),d(2),C("inline",!0))},dependencies:[Is,We,xe],styles:[".main-container[_ngcontent-%COMP%]{padding-top:20px;margin-bottom:4px;text-align:right;font-size:.875rem}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.main-container[_ngcontent-%COMP%]{margin:0;padding:16px}}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#f8f9f9;text-decoration:none}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}"]})}}return t})();const mye=t=>({"paginator-icons-fixer":t}),Tk=()=>["/settings","labels"],gye=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),_ye=t=>({"d-lg-none d-xl-table":t}),bye=t=>({"d-lg-table d-xl-none":t});function vye(t,n){1&t&&(h(0,"span",3),p(1),b(2,"translate"),h(3,"mat-icon",14),b(4,"translate"),p(5,"help"),u()()),2&t&&(d(),E(" ",y(2,3,"labels.title")," "),d(2),C("inline",!0)("matTooltip",y(4,5,"labels.info")))}function yye(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().$implicit.translatableValue)," ")}function Cye(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.value," ")}function wye(t,n){if(1&t&&(h(0,"div",16)(1,"span"),p(2),b(3,"translate"),u(),x(4,yye,2,3),x(5,Cye,1,1),u()),2&t){const e=n.$implicit;d(2),E("",y(3,3,e.filterName),": "),d(2),S(e.translatableValue?4:-1),d(),S(e.value?5:-1)}}function xye(t,n){if(1&t){const e=oe();h(0,"div",15),F("click",function(){return j(e),U(v().dataFilterer.removeFilters())}),ve(1,wye,6,5,"div",16,Fe),h(3,"div",17),p(4),b(5,"translate"),u()()}if(2&t){const e=v();d(),ye(e.dataFilterer.currentFiltersTexts),d(3),M(y(5,1,"filters.press-to-remove"))}}function Sye(t,n){if(1&t){const e=oe();h(0,"mat-icon",18),b(1,"translate"),F("click",function(){return j(e),U(v().dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",y(1,2,"filters.filter-action"))}function kye(t,n){if(1&t&&(h(0,"mat-icon",8),p(1,"more_horiz"),u()),2&t){v();const e=Hn(9);C("inline",!0)("matMenuTriggerFor",e)}}function Dye(t,n){if(1&t&&B(0,"app-paginator",12),2&t){const e=v();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",Ct(4,Tk))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function Mye(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Tye(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Eye(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function Pye(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td",30)(2,"mat-checkbox",31),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),b(9,"translate"),u(),h(10,"td",23)(11,"button",32),b(12,"translate"),F("click",function(){const o=j(e).$implicit;return U(v(2).delete(o.id))}),h(13,"mat-icon",22),p(14,"close"),u()()()()}if(2&t){const e=n.$implicit,i=v(2);d(2),C("checked",i.selections.get(e.id)),d(2),E(" ",e.label," "),d(2),E(" ",e.id," "),d(2),gt(" ",i.getLabelTypeIdentification(e)[0]," - ",y(9,7,i.getLabelTypeIdentification(e)[1])," "),d(3),C("matTooltip",y(12,9,"labels.delete")),d(2),C("inline",!0)}}function Iye(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.label")," ")}function Oye(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.inverted-order")," ")}function Aye(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td")(2,"div",26)(3,"div",33)(4,"mat-checkbox",31),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(5,"div",27)(6,"div",34)(7,"span",2),p(8),b(9,"translate"),u(),p(10),u(),h(11,"div",35)(12,"span",2),p(13),b(14,"translate"),u(),p(15),u(),h(16,"div",34)(17,"span",2),p(18),b(19,"translate"),u(),p(20),b(21,"translate"),u()(),B(22,"div",36),h(23,"div",28)(24,"button",37),b(25,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(2);return o.stopPropagation(),U(s.showOptionsDialog(r))}),h(26,"mat-icon"),p(27),u()()()()()()}if(2&t){const e=n.$implicit,i=v(2);d(4),C("checked",i.selections.get(e.id)),d(4),M(y(9,10,"labels.label")),d(2),E(": ",e.label," "),d(3),M(y(14,12,"labels.id")),d(2),E(": ",e.id," "),d(3),M(y(19,14,"labels.type")),d(2),gt(": ",i.getLabelTypeIdentification(e)[0]," - ",y(21,16,i.getLabelTypeIdentification(e)[1])," "),d(4),C("matTooltip",y(25,18,"common.options")),d(3),M("add")}}function Rye(t,n){if(1&t&&B(0,"app-view-all-link",29),2&t){const e=v(2);C("numberOfElements",e.filteredLabels.length)("linkParts",Ct(3,Tk))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function Fye(t,n){if(1&t){const e=oe();h(0,"div",13)(1,"div",19)(2,"table",20)(3,"tr"),B(4,"th"),h(5,"th",21),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.labelSortData))}),p(6),b(7,"translate"),x(8,Mye,2,2,"mat-icon",22),u(),h(9,"th",21),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.idSortData))}),p(10),b(11,"translate"),x(12,Tye,2,2,"mat-icon",22),u(),h(13,"th",21),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.typeSortData))}),p(14),b(15,"translate"),x(16,Eye,2,2,"mat-icon",22),u(),B(17,"th",23),u(),ve(18,Pye,15,11,"tr",null,Fe),u(),h(20,"table",24)(21,"tr",25),F("click",function(){return j(e),U(v().dataSorter.openSortingOrderModal())}),h(22,"td")(23,"div",26)(24,"div",27)(25,"div",2),p(26),b(27,"translate"),u(),h(28,"div"),p(29),b(30,"translate"),x(31,Iye,2,3),x(32,Oye,2,3),u()(),h(33,"div",28)(34,"mat-icon",22),p(35,"keyboard_arrow_down"),u()()()()(),ve(36,Aye,28,20,"tr",null,Fe),u(),x(38,Rye,1,4,"app-view-all-link",29),u()()}if(2&t){const e=v();d(),C("ngClass",_t(25,gye,e.showShortList_,!e.showShortList_)),d(),C("ngClass",se(28,_ye,e.showShortList_)),d(4),E(" ",y(7,15,"labels.label")," "),d(2),S(e.dataSorter.currentSortingColumn===e.labelSortData?8:-1),d(2),E(" ",y(11,17,"labels.id")," "),d(2),S(e.dataSorter.currentSortingColumn===e.idSortData?12:-1),d(2),E(" ",y(15,19,"labels.type")," "),d(2),S(e.dataSorter.currentSortingColumn===e.typeSortData?16:-1),d(2),ye(e.dataSource),d(2),C("ngClass",se(30,bye,e.showShortList_)),d(6),M(y(27,21,"tables.sorting-title")),d(3),E("",y(30,23,e.dataSorter.currentSortingColumn.label)," "),d(2),S(e.dataSorter.currentlySortingByLabel?31:-1),d(),S(e.dataSorter.sortingInReverseOrder?32:-1),d(2),C("inline",!0),d(2),ye(e.dataSource),d(2),S(e.showShortList_&&e.numberOfPages>1?38:-1)}}function Nye(t,n){1&t&&(h(0,"span",40),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"labels.empty")))}function Lye(t,n){1&t&&(h(0,"span",40),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"labels.empty-with-filter")))}function Bye(t,n){if(1&t&&(h(0,"div",13)(1,"div",38)(2,"mat-icon",39),p(3,"warning"),u(),x(4,Nye,3,3,"span",40),x(5,Lye,3,3,"span",40),u()()),2&t){const e=v();d(2),C("inline",!0),d(2),S(0===e.allLabels.length?4:-1),d(),S(0!==e.allLabels.length?5:-1)}}function Vye(t,n){if(1&t&&B(0,"app-paginator",12),2&t){const e=v();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",Ct(4,Tk))("queryParams",e.dataFilterer.currentUrlQueryParams)}}let bV=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter.setData(this.filteredLabels)}constructor(e,i,o,r,s,a){this.dialog=e,this.route=i,this.router=o,this.snackbarService=r,this.translateService=s,this.storageService=a,this.listId="ll",this.labelSortData=new Dt(["label"],"labels.label",st.Text),this.idSortData=new Dt(["id"],"labels.id",st.Text),this.typeSortData=new Dt(["identifiedElementType_sort"],"labels.type",st.Text),this.selections=new Map,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"labels.filter-dialog.label",keyNameInElementsArray:"label",type:Sn.TextInput,maxlength:100},{filterName:"labels.filter-dialog.id",keyNameInElementsArray:"id",type:Sn.TextInput,maxlength:66},{filterName:"labels.filter-dialog.type",keyNameInElementsArray:"identifiedElementType",type:Sn.Select,printableLabelsForValues:[{value:"",label:"labels.filter-dialog.type-options.any"},{value:ro.Node,label:"labels.filter-dialog.type-options.visor"},{value:ro.DmsgServer,label:"labels.filter-dialog.type-options.dmsg-server"},{value:ro.Transport,label:"labels.filter-dialog.type-options.transport"}]}],this.dataSorter=new gu(this.dialog,this.translateService,this.storageService,[this.labelSortData,this.idSortData,this.typeSortData],0,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new _u(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(c=>{this.filteredLabels=c,this.dataSorter.setData(this.filteredLabels)}),this.loadData(),this.navigationsSubscription=this.route.paramMap.subscribe(c=>{if(c.has("page")){let f=Number.parseInt(c.get("page"),10);(isNaN(f)||f<1)&&(f=1),this.currentPageInUrl=f,this.recalculateElementsToShow()}})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose()}loadData(){this.allLabels=this.storageService.getSavedLabels(),this.allLabels.forEach(e=>{e.identifiedElementType_sort=this.getLabelTypeIdentification(e)[0]}),this.dataFilterer.setData(this.allLabels)}getLabelTypeIdentification(e){return e.identifiedElementType===ro.Node?["1","labels.filter-dialog.type-options.visor"]:e.identifiedElementType===ro.DmsgServer?["2","labels.filter-dialog.type-options.dmsg-server"]:e.identifiedElementType===ro.Transport?["3","labels.filter-dialog.type-options.transport"]:void 0}changeSelection(e){this.selections.get(e.id)?this.selections.set(e.id,!1):this.selections.set(e.id,!0)}hasSelectedElements(){if(!this.selections)return!1;let e=!1;return this.selections.forEach(i=>{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}deleteSelected(){const e=Rt.createConfirmationDialog(this.dialog,"labels.delete-selected-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.close(),this.selections.forEach((i,o)=>{i&&this.storageService.saveLabel(o,"",null)}),this.snackbarService.showDone("labels.deleted"),this.loadData()})}showOptionsDialog(e){ao.openDialog(this.dialog,[{icon:"close",label:"labels.delete"}],"common.options").afterClosed().subscribe(o=>{1===o&&this.delete(e.id)})}delete(e){const i=Rt.createConfirmationDialog(this.dialog,"labels.delete-confirmation");i.componentInstance.operationAccepted.subscribe(()=>{i.close(),this.storageService.saveLabel(e,"",null),this.snackbarService.showDone("labels.deleted"),this.loadData()})}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredLabels){const e=this.showShortList_?rt.maxShortListElements:rt.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredLabels.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.labelsToShow=this.filteredLabels.slice(i,i+e);const r=new Map;this.labelsToShow.forEach(a=>{r.set(a.id,!0),this.selections.has(a.id)||this.selections.set(a.id,!1)});const s=[];this.selections.forEach((a,l)=>{r.has(l)||s.push(l)}),s.forEach(a=>{this.selections.delete(a)})}else this.labelsToShow=null,this.selections=new Map;this.dataSource=this.labelsToShow}static{this.\u0275fac=function(i){return new(i||t)(O(Ot),O(Ai),O(vt),O(ct),O(Go),O(ti))}}static{this.\u0275cmp=re({type:t,selectors:[["app-label-list"]],inputs:{showShortList:"showShortList"},standalone:!1,decls:23,vars:23,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"inline","matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"click"],[3,"inline"],[1,"actions"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[3,"numberOfElements","linkParts","queryParams"],[1,"selection-col"],[3,"change","checked"],["mat-button","",1,"action-button","transparent-button",3,"click","matTooltip"],[1,"check-part"],[1,"list-row"],[1,"list-row","long-content"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,vye,6,7,"span",3),x(3,xye,6,3,"div",4),u(),h(4,"div",5)(5,"div",6),x(6,Sye,3,4,"mat-icon",7),x(7,kye,2,2,"mat-icon",8),h(8,"mat-menu",9,0)(10,"div",10),F("click",function(){return o.changeAllSelections(!0)}),p(11),b(12,"translate"),u(),h(13,"div",10),F("click",function(){return o.changeAllSelections(!1)}),p(14),b(15,"translate"),u(),h(16,"div",11),F("click",function(){return o.deleteSelected()}),p(17),b(18,"translate"),u()()(),x(19,Dye,1,5,"app-paginator",12),u()(),x(20,Fye,39,32,"div",13),x(21,Bye,6,3,"div",13),x(22,Vye,1,5,"app-paginator",12)),2&i&&(C("ngClass",se(21,mye,!o.showShortList_&&o.numberOfPages>1&&o.dataSource)),d(2),S(o.showShortList_?2:-1),d(),S(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?3:-1),d(3),S(o.allLabels&&o.allLabels.length>0?6:-1),d(),S(o.dataSource&&o.dataSource.length>0?7:-1),d(),C("overlapTrigger",!1),d(3),E(" ",y(12,15,"selection.select-all")," "),d(3),E(" ",y(15,17,"selection.unselect-all")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(18,19,"selection.delete-all")," "),d(2),S(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?19:-1),d(),S(o.dataSource&&o.dataSource.length>0?20:-1),d(),S(o.dataSource&&0!==o.dataSource.length?-1:21),d(),S(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?22:-1))},dependencies:[$t,Pn,Wo,We,Kt,Jr,As,vu,kr,_V,mv,xe],styles:[".overflow[_ngcontent-%COMP%]{display:block;width:100%;overflow-x:auto}.overflow[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{width:100%}.actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"]})}}return t})();const Hye=()=>["start.title"];function jye(t,n){1&t&&B(0,"app-password")}function Uye(t,n){1&t&&(h(0,"div",5),B(1,"mat-spinner",7),p(2),b(3,"translate"),u()),2&t&&(d(),C("diameter",11),d(),E(" ",y(3,2,"settings.checking-auth")," "))}let zye=(()=>{class t extends pn{constructor(e,i,o,r){super(),this.authService=e,this.router=i,this.snackbarService=o,this.dialog=r,this.persistentAuthDataResponseKey="serv-aut-response",this.tabsData=[],this.options=[],this.waitBeforeShowingLoading=!0,this.authChecked=!1,this.authActive=!1,this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}],this.updateOptionsMenu()}ngOnInit(){return setTimeout(()=>{this.waitBeforeShowingLoading=!1},500),this.checkAuth(0,!0),super.ngOnInit()}checkAuth(e,i){const o=i?this.getLocalValue(this.persistentAuthDataResponseKey):null;let r=this.authService.checkLogin();o&&(r=ae(JSON.parse(o.value))),this.authSubscription=ae(1).pipe(li(e),It(()=>r)).subscribe(s=>{o||this.saveLocalValue(this.persistentAuthDataResponseKey,JSON.stringify(s)),this.authChecked=!0,this.authActive=s===ka.Logged,this.updateOptionsMenu(),o&&this.checkAuth(0,!1)},()=>{this.checkAuth(15e3,!1)})}ngOnDestroy(){this.authSubscription.unsubscribe()}updateOptionsMenu(){this.options=[],this.authActive&&(this.options=[{name:"common.logout",actionName:"logout",icon:"power_settings_new"}])}performAction(e){"logout"===e&&this.logout()}logout(){const e=Rt.createConfirmationDialog(this.dialog,"common.logout-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.authService.logout().subscribe(()=>this.router.navigate(["login"]),()=>this.snackbarService.showError("common.logout-error"))})}static{this.\u0275fac=function(i){return new(i||t)(O(Yf),O(vt),O(ct),O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-settings"]],standalone:!1,features:[be],decls:8,vars:9,consts:[[1,"row"],[1,"col-12"],[3,"optionSelected","titleParts","tabsData","selectedTabIndex","showUpdateButton","optionsData"],[1,"content","col-12","mt-4.5"],[1,"d-block","mb-4"],[1,"white-theme","checking-container"],[3,"showShortList"],[3,"diameter"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"app-top-bar",2),F("optionSelected",function(s){return o.performAction(s)}),u()(),h(3,"div",3),B(4,"app-refresh-rate",4),x(5,jye,1,0,"app-password"),x(6,Uye,4,4,"div",5),B(7,"app-label-list",6),u()()),2&i&&(d(2),C("titleParts",Ct(8,Hye))("tabsData",o.tabsData)("selectedTabIndex",7)("showUpdateButton",!1)("optionsData",o.options),d(3),S(o.authChecked&&o.authActive?5:-1),d(),S(o.authChecked||o.waitBeforeShowingLoading?-1:6),d(),C("showShortList",!0))},dependencies:[so,$B,fye,Mr,bV,xe],styles:[".checking-container[_ngcontent-%COMP%]{font-size:10px;opacity:.5}.checking-container[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%]{display:inline-block}.show-link[_ngcontent-%COMP%]{cursor:pointer;font-size:.8rem}"]})}}return t})(),Ek=(()=>{class t{constructor(e){this.apiService=e}get(e,i){return this.apiService.get(`visors/${e}/routes/${i}`)}delete(e,i){return this.apiService.delete(`visors/${e}/routes/${i}`)}setMinHops(e,i){return this.apiService.post(`visors/${e}/min-hops`,{min_hops:i})}static{this.\u0275fac=function(i){return new(i||t)(ce(zi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function yu(t){return t+.5|0}const Fs=(t,n,e)=>Math.max(Math.min(t,e),n);function sp(t){return Fs(yu(2.55*t),0,255)}function Oa(t){return Fs(yu(255*t),0,255)}function Ns(t){return Fs(yu(t/2.55)/100,0,1)}function vV(t){return Fs(yu(100*t),0,100)}const Qo={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pk=[..."0123456789ABCDEF"],$ye=t=>Pk[15&t],Wye=t=>Pk[(240&t)>>4]+Pk[15&t],_v=t=>(240&t)>>4==(15&t);const Xye=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function yV(t,n,e){const i=n*Math.min(e,1-e),o=(r,s=(r+t/30)%12)=>e-i*Math.max(Math.min(s-3,9-s,1),-1);return[o(0),o(8),o(4)]}function Zye(t,n,e){const i=(o,r=(o+t/60)%6)=>e-e*n*Math.max(Math.min(r,4-r,1),0);return[i(5),i(3),i(1)]}function Qye(t,n,e){const i=yV(t,1,.5);let o;for(n+e>1&&(o=1/(n+e),n*=o,e*=o),o=0;o<3;o++)i[o]*=1-n-e,i[o]+=n;return i}function Ik(t){const e=t.r/255,i=t.g/255,o=t.b/255,r=Math.max(e,i,o),s=Math.min(e,i,o),a=(r+s)/2;let l,c,f;return r!==s&&(f=r-s,c=a>.5?f/(2-r-s):f/(r+s),l=function Jye(t,n,e,i,o){return t===o?(n-e)/i+(nt<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Cu=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function vv(t,n,e){if(t){let i=Ik(t);i[n]=Math.max(0,Math.min(i[n]+i[n]*e,0===n?360:1)),i=Ak(i),t.r=i[0],t.g=i[1],t.b=i[2]}}function SV(t,n){return t&&Object.assign(n||{},t)}function kV(t){var n={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(n={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(n.a=Oa(t[3]))):(n=SV(t,{r:0,g:0,b:0,a:1})).a=Oa(n.a),n}function uCe(t){return"r"===t.charAt(0)?function lCe(t){const n=aCe.exec(t);let i,o,r,e=255;if(n){if(n[7]!==i){const s=+n[7];e=n[8]?sp(s):Fs(255*s,0,255)}return i=+n[1],o=+n[3],r=+n[5],i=255&(n[2]?sp(i):Fs(i,0,255)),o=255&(n[4]?sp(o):Fs(o,0,255)),r=255&(n[6]?sp(r):Fs(r,0,255)),{r:i,g:o,b:r,a:e}}}(t):function nCe(t){const n=Xye.exec(t);let i,e=255;if(!n)return;n[5]!==i&&(e=n[6]?sp(+n[5]):Oa(+n[5]));const o=CV(+n[2]),r=+n[3]/100,s=+n[4]/100;return i="hwb"===n[1]?function eCe(t,n,e){return Ok(Qye,t,n,e)}(o,r,s):"hsv"===n[1]?function tCe(t,n,e){return Ok(Zye,t,n,e)}(o,r,s):Ak(o,r,s),{r:i[0],g:i[1],b:i[2],a:e}}(t)}class wu{constructor(n){if(n instanceof wu)return n;const e=typeof n;let i;"object"===e?i=kV(n):"string"===e&&(i=function qye(t){var e,n=t.length;return"#"===t[0]&&(4===n||5===n?e={r:255&17*Qo[t[1]],g:255&17*Qo[t[2]],b:255&17*Qo[t[3]],a:5===n?17*Qo[t[4]]:255}:(7===n||9===n)&&(e={r:Qo[t[1]]<<4|Qo[t[2]],g:Qo[t[3]]<<4|Qo[t[4]],b:Qo[t[5]]<<4|Qo[t[6]],a:9===n?Qo[t[7]]<<4|Qo[t[8]]:255})),e}(n)||function sCe(t){bv||(bv=function rCe(){const t={},n=Object.keys(xV),e=Object.keys(wV);let i,o,r,s,a;for(i=0;i>16&255,r>>8&255,255&r]}return t}(),bv.transparent=[0,0,0,0]);const n=bv[t.toLowerCase()];return n&&{r:n[0],g:n[1],b:n[2],a:4===n.length?n[3]:255}}(n)||uCe(n)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var n=SV(this._rgb);return n&&(n.a=Ns(n.a)),n}set rgb(n){this._rgb=kV(n)}rgbString(){return this._valid?function cCe(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${Ns(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}(this._rgb):void 0}hexString(){return this._valid?function Yye(t){var n=(t=>_v(t.r)&&_v(t.g)&&_v(t.b)&&_v(t.a))(t)?$ye:Wye;return t?"#"+n(t.r)+n(t.g)+n(t.b)+((t,n)=>t<255?n(t):"")(t.a,n):void 0}(this._rgb):void 0}hslString(){return this._valid?function oCe(t){if(!t)return;const n=Ik(t),e=n[0],i=vV(n[1]),o=vV(n[2]);return t.a<255?`hsla(${e}, ${i}%, ${o}%, ${Ns(t.a)})`:`hsl(${e}, ${i}%, ${o}%)`}(this._rgb):void 0}mix(n,e){if(n){const i=this.rgb,o=n.rgb;let r;const s=e===r?.5:e,a=2*s-1,l=i.a-o.a,c=((a*l===-1?a:(a+l)/(1+a*l))+1)/2;r=1-c,i.r=255&c*i.r+r*o.r+.5,i.g=255&c*i.g+r*o.g+.5,i.b=255&c*i.b+r*o.b+.5,i.a=s*i.a+(1-s)*o.a,this.rgb=i}return this}interpolate(n,e){return n&&(this._rgb=function dCe(t,n,e){const i=Cu(Ns(t.r)),o=Cu(Ns(t.g)),r=Cu(Ns(t.b));return{r:Oa(Rk(i+e*(Cu(Ns(n.r))-i))),g:Oa(Rk(o+e*(Cu(Ns(n.g))-o))),b:Oa(Rk(r+e*(Cu(Ns(n.b))-r))),a:t.a+e*(n.a-t.a)}}(this._rgb,n._rgb,e)),this}clone(){return new wu(this.rgb)}alpha(n){return this._rgb.a=Oa(n),this}clearer(n){return this._rgb.a*=1-n,this}greyscale(){const n=this._rgb,e=yu(.3*n.r+.59*n.g+.11*n.b);return n.r=n.g=n.b=e,this}opaquer(n){return this._rgb.a*=1+n,this}negate(){const n=this._rgb;return n.r=255-n.r,n.g=255-n.g,n.b=255-n.b,this}lighten(n){return vv(this._rgb,2,n),this}darken(n){return vv(this._rgb,2,-n),this}saturate(n){return vv(this._rgb,1,n),this}desaturate(n){return vv(this._rgb,1,-n),this}rotate(n){return function iCe(t,n){var e=Ik(t);e[0]=CV(e[0]+n),e=Ak(e),t.r=e[0],t.g=e[1],t.b=e[2]}(this._rgb,n),this}}const hCe=(()=>{let t=0;return()=>t++})();function dt(t){return null==t}function vn(t){if(Array.isArray&&Array.isArray(t))return!0;const n=Object.prototype.toString.call(t);return"[object"===n.slice(0,7)&&"Array]"===n.slice(-6)}function ft(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function jn(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function Oo(t,n){return jn(t)?t:n}function Ge(t,n){return typeof t>"u"?n:t}function ln(t,n,e){if(t&&"function"==typeof t.call)return t.apply(e,n)}function Vt(t,n,e,i){let o,r,s;if(vn(t))if(r=t.length,i)for(o=r-1;o>=0;o--)n.call(e,t[o],o);else for(o=0;ot,x:t=>t.x,y:t=>t.y};function Aa(t,n){return(TV[n]||(TV[n]=function _Ce(t){const n=function gCe(t){const n=t.split("."),e=[];let i="";for(const o of n)i+=o,i.endsWith("\\")?i=i.slice(0,-1)+".":(e.push(i),i="");return e}(t);return e=>{for(const i of n){if(""===i)break;e=e&&e[i]}return e}}(n)))(t)}function Fk(t){return t.charAt(0).toUpperCase()+t.slice(1)}const cp=t=>typeof t<"u",Ra=t=>"function"==typeof t,EV=(t,n)=>{if(t.size!==n.size)return!1;for(const e of t)if(!n.has(e))return!1;return!0},Mt=Math.PI,yn=2*Mt,vCe=yn+Mt,wv=Number.POSITIVE_INFINITY,yCe=Mt/180,Xn=Mt/2,pc=Mt/4,PV=2*Mt/3,Fa=Math.log10,ts=Math.sign;function dp(t,n,e){return Math.abs(t-n)l&&c=Math.min(n,e)-i&&t<=Math.max(n,e)+i}function Bk(t,n,e){e=e||(s=>t[s]1;)r=o+i>>1,e(r)?o=r:i=r;return{lo:o,hi:i}}const Vs=(t,n,e,i)=>Bk(t,e,i?o=>{const r=t[o][n];return rt[o][n]Bk(t,e,i=>t[i][n]>=e),FV=["push","pop","shift","splice","unshift"];function NV(t,n){const e=t._chartjs;if(!e)return;const i=e.listeners,o=i.indexOf(n);-1!==o&&i.splice(o,1),!(i.length>0)&&(FV.forEach(r=>{delete t[r]}),delete t._chartjs)}const BV=typeof window>"u"?function(t){return t()}:window.requestAnimationFrame;function VV(t,n){let e=[],i=!1;return function(...o){e=o,i||(i=!0,BV.call(window,()=>{i=!1,t.apply(n,e)}))}}const qi=(t,n,e)=>"start"===t?n:"end"===t?e:(n+e)/2;const xv=t=>0===t||1===t,UV=(t,n,e)=>-Math.pow(2,10*(t-=1))*Math.sin((t-n)*yn/e),zV=(t,n,e)=>Math.pow(2,-10*t)*Math.sin((t-n)*yn/e)+1,hp={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*Xn),easeOutSine:t=>Math.sin(t*Xn),easeInOutSine:t=>-.5*(Math.cos(Mt*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>xv(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>xv(t)?t:UV(t,.075,.3),easeOutElastic:t=>xv(t)?t:zV(t,.075,.3),easeInOutElastic:t=>xv(t)?t:t<.5?.5*UV(2*t,.1125,.45):.5+.5*zV(2*t-1,.1125,.45),easeInBack:t=>t*t*(2.70158*t-1.70158),easeOutBack:t=>(t-=1)*t*(2.70158*t+1.70158)+1,easeInOutBack(t){let n=1.70158;return(t/=.5)<1?t*t*((1+(n*=1.525))*t-n)*.5:.5*((t-=2)*t*((1+(n*=1.525))*t+n)+2)},easeInBounce:t=>1-hp.easeOutBounce(1-t),easeOutBounce:t=>t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,easeInOutBounce:t=>t<.5?.5*hp.easeInBounce(2*t):.5*hp.easeOutBounce(2*t-1)+.5};function Hk(t){if(t&&"object"==typeof t){const n=t.toString();return"[object CanvasPattern]"===n||"[object CanvasGradient]"===n}return!1}function $V(t){return Hk(t)?t:new wu(t)}function jk(t){return Hk(t)?t:new wu(t).saturate(.5).darken(.1).hexString()}const ICe=["x","y","borderWidth","radius","tension"],OCe=["color","borderColor","backgroundColor"],WV=new Map;function fp(t,n,e){return function FCe(t,n){n=n||{};const e=t+JSON.stringify(n);let i=WV.get(e);return i||(i=new Intl.NumberFormat(t,n),WV.set(e,i)),i}(n,e).format(t)}const GV={values:t=>vn(t)?t:""+t,numeric(t,n,e){if(0===t)return"0";const i=this.chart.options.locale;let o,r=t;if(e.length>1){const c=Math.max(Math.abs(e[0].value),Math.abs(e[e.length-1].value));(c<1e-4||c>1e15)&&(o="scientific"),r=function NCe(t,n){let e=n.length>3?n[2].value-n[1].value:n[1].value-n[0].value;return Math.abs(e)>=1&&t!==Math.floor(t)&&(e=t-Math.floor(t)),e}(t,e)}const s=Fa(Math.abs(r)),a=isNaN(s)?1:Math.max(Math.min(-1*Math.floor(s),20),0),l={notation:o,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),fp(t,i,l)},logarithmic(t,n,e){if(0===t)return"0";const i=e[n].significand||t/Math.pow(10,Math.floor(Fa(t)));return[1,2,3,5,10,15].includes(i)||n>.8*e.length?GV.numeric.call(this,t,n,e):""}};var Sv={formatters:GV};const mc=Object.create(null),Uk=Object.create(null);function pp(t,n){if(!n)return t;const e=n.split(".");for(let i=0,o=e.length;ii.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(i,o)=>jk(o.backgroundColor),this.hoverBorderColor=(i,o)=>jk(o.borderColor),this.hoverColor=(i,o)=>jk(o.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(n),this.apply(e)}set(n,e){return zk(this,n,e)}get(n){return pp(this,n)}describe(n,e){return zk(Uk,n,e)}override(n,e){return zk(mc,n,e)}route(n,e,i,o){const r=pp(this,n),s=pp(this,i),a="_"+e;Object.defineProperties(r,{[a]:{value:r[e],writable:!0},[e]:{enumerable:!0,get(){const l=this[a],c=s[o];return ft(l)?Object.assign({},c,l):Ge(l,c)},set(l){this[a]=l}}})}apply(n){n.forEach(e=>e(this))}}var kn=new BCe({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function ACe(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:n=>"onProgress"!==n&&"onComplete"!==n&&"fn"!==n}),t.set("animations",{colors:{type:"color",properties:OCe},numbers:{type:"number",properties:ICe}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:n=>0|n}}}})},function RCe(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function LCe(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(n,e)=>e.lineWidth,tickColor:(n,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Sv.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:n=>!n.startsWith("before")&&!n.startsWith("after")&&"callback"!==n&&"parser"!==n,_indexable:n=>"borderDash"!==n&&"tickBorderDash"!==n&&"dash"!==n}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:n=>"backdropPadding"!==n&&"callback"!==n,_indexable:n=>"backdropPadding"!==n})}]);function kv(t,n,e,i,o){let r=n[o];return r||(r=n[o]=t.measureText(o).width,e.push(o)),r>i&&(i=r),i}function gc(t,n,e){const i=t.currentDevicePixelRatio,o=0!==e?Math.max(e/2,.5):0;return Math.round((n-o)*i)/i+o}function qV(t,n){!n&&!t||((n=n||t.getContext("2d")).save(),n.resetTransform(),n.clearRect(0,0,t.width,t.height),n.restore())}function $k(t,n,e,i){!function KV(t,n,e,i,o){let r,s,a,l,c,f,m,g;const _=n.pointStyle,w=n.rotation,k=n.radius;let T=(w||0)*yCe;if(_&&"object"==typeof _&&(r=_.toString(),"[object HTMLImageElement]"===r||"[object HTMLCanvasElement]"===r))return t.save(),t.translate(e,i),t.rotate(T),t.drawImage(_,-_.width/2,-_.height/2,_.width,_.height),void t.restore();if(!(isNaN(k)||k<=0)){switch(t.beginPath(),_){default:o?t.ellipse(e,i,o/2,k,0,0,yn):t.arc(e,i,k,0,yn),t.closePath();break;case"triangle":f=o?o/2:k,t.moveTo(e+Math.sin(T)*f,i-Math.cos(T)*k),T+=PV,t.lineTo(e+Math.sin(T)*f,i-Math.cos(T)*k),T+=PV,t.lineTo(e+Math.sin(T)*f,i-Math.cos(T)*k),t.closePath();break;case"rectRounded":c=.516*k,l=k-c,s=Math.cos(T+pc)*l,m=Math.cos(T+pc)*(o?o/2-c:l),a=Math.sin(T+pc)*l,g=Math.sin(T+pc)*(o?o/2-c:l),t.arc(e-m,i-a,c,T-Mt,T-Xn),t.arc(e+g,i-s,c,T-Xn,T),t.arc(e+m,i+a,c,T,T+Xn),t.arc(e-g,i+s,c,T+Xn,T+Mt),t.closePath();break;case"rect":if(!w){l=Math.SQRT1_2*k,f=o?o/2:l,t.rect(e-f,i-l,2*f,2*l);break}T+=pc;case"rectRot":m=Math.cos(T)*(o?o/2:k),s=Math.cos(T)*k,a=Math.sin(T)*k,g=Math.sin(T)*(o?o/2:k),t.moveTo(e-m,i-a),t.lineTo(e+g,i-s),t.lineTo(e+m,i+a),t.lineTo(e-g,i+s),t.closePath();break;case"crossRot":T+=pc;case"cross":m=Math.cos(T)*(o?o/2:k),s=Math.cos(T)*k,a=Math.sin(T)*k,g=Math.sin(T)*(o?o/2:k),t.moveTo(e-m,i-a),t.lineTo(e+m,i+a),t.moveTo(e+g,i-s),t.lineTo(e-g,i+s);break;case"star":m=Math.cos(T)*(o?o/2:k),s=Math.cos(T)*k,a=Math.sin(T)*k,g=Math.sin(T)*(o?o/2:k),t.moveTo(e-m,i-a),t.lineTo(e+m,i+a),t.moveTo(e+g,i-s),t.lineTo(e-g,i+s),T+=pc,m=Math.cos(T)*(o?o/2:k),s=Math.cos(T)*k,a=Math.sin(T)*k,g=Math.sin(T)*(o?o/2:k),t.moveTo(e-m,i-a),t.lineTo(e+m,i+a),t.moveTo(e+g,i-s),t.lineTo(e-g,i+s);break;case"line":s=o?o/2:Math.cos(T)*k,a=Math.sin(T)*k,t.moveTo(e-s,i-a),t.lineTo(e+s,i+a);break;case"dash":t.moveTo(e,i),t.lineTo(e+Math.cos(T)*(o?o/2:k),i+Math.sin(T)*k);break;case!1:t.closePath()}t.fill(),n.borderWidth>0&&t.stroke()}}(t,n,e,i,null)}function Hs(t,n,e){return e=e||.5,!n||t&&t.x>n.left-e&&t.xn.top-e&&t.y0&&""!==r.strokeColor;let l,c;for(t.save(),t.font=o.string,function zCe(t,n){n.translation&&t.translate(n.translation[0],n.translation[1]),dt(n.rotation)||t.rotate(n.rotation),n.color&&(t.fillStyle=n.color),n.textAlign&&(t.textAlign=n.textAlign),n.textBaseline&&(t.textBaseline=n.textBaseline)}(t,r),l=0;l+t||0;function YV(t){return function Wk(t,n){const e={},i=ft(n),o=i?Object.keys(n):n,r=ft(t)?i?s=>Ge(t[s],t[n[s]]):s=>t[s]:()=>t;for(const s of o)e[s]=YCe(r(s));return e}(t,{top:"y",right:"x",bottom:"y",left:"x"})}function Ki(t){const n=YV(t);return n.width=n.left+n.right,n.height=n.top+n.bottom,n}function fi(t,n){let e=Ge((t=t||{}).size,(n=n||kn.font).size);"string"==typeof e&&(e=parseInt(e,10));let i=Ge(t.style,n.style);i&&!(""+i).match(qCe)&&(console.warn('Invalid font style specified: "'+i+'"'),i=void 0);const o={family:Ge(t.family,n.family),lineHeight:KCe(Ge(t.lineHeight,n.lineHeight),e),size:e,style:i,weight:Ge(t.weight,n.weight),string:""};return o.string=function VCe(t){return!t||dt(t.size)||dt(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(o),o}function gp(t,n,e,i){let r,s,a,o=!0;for(r=0,s=t.length;rt[0]){const r=e||t;typeof i>"u"&&(i=e8("_fallback",t));const s={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:r,_fallback:i,_getTarget:o,override:a=>Gk([a,...t],n,r,i)};return new Proxy(s,{deleteProperty:(a,l)=>(delete a[l],delete a._keys,delete t[0][l],!0),get:(a,l)=>ZV(a,l,()=>function o1e(t,n,e,i){let o;for(const r of n)if(o=e8(ZCe(r,t),e),typeof o<"u")return qk(t,o)?Kk(e,i,t,o):o}(l,n,t,a)),getOwnPropertyDescriptor:(a,l)=>Reflect.getOwnPropertyDescriptor(a._scopes[0],l),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(a,l)=>t8(a).includes(l),ownKeys:a=>t8(a),set(a,l,c){const f=a._storage||(a._storage=o());return a[l]=f[l]=c,delete a._keys,!0}})}function Su(t,n,e,i){const o={_cacheable:!1,_proxy:t,_context:n,_subProxy:e,_stack:new Set,_descriptors:XV(t,i),setContext:r=>Su(t,r,e,i),override:r=>Su(t.override(r),n,e,i)};return new Proxy(o,{deleteProperty:(r,s)=>(delete r[s],delete t[s],!0),get:(r,s,a)=>ZV(r,s,()=>function QCe(t,n,e){const{_proxy:i,_context:o,_subProxy:r,_descriptors:s}=t;let a=i[n];return Ra(a)&&s.isScriptable(n)&&(a=function JCe(t,n,e,i){const{_proxy:o,_context:r,_subProxy:s,_stack:a}=e;if(a.has(t))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+t);a.add(t);let l=n(r,s||i);return a.delete(t),qk(t,l)&&(l=Kk(o._scopes,o,t,l)),l}(n,a,t,e)),vn(a)&&a.length&&(a=function e1e(t,n,e,i){const{_proxy:o,_context:r,_subProxy:s,_descriptors:a}=e;if(typeof r.index<"u"&&i(t))return n[r.index%n.length];if(ft(n[0])){const l=n,c=o._scopes.filter(f=>f!==l);n=[];for(const f of l){const m=Kk(c,o,t,f);n.push(Su(m,r,s&&s[t],a))}}return n}(n,a,t,s.isIndexable)),qk(n,a)&&(a=Su(a,o,r&&r[n],s)),a}(r,s,a)),getOwnPropertyDescriptor:(r,s)=>r._descriptors.allKeys?Reflect.has(t,s)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,s),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(r,s)=>Reflect.has(t,s),ownKeys:()=>Reflect.ownKeys(t),set:(r,s,a)=>(t[s]=a,delete r[s],!0)})}function XV(t,n={scriptable:!0,indexable:!0}){const{_scriptable:e=n.scriptable,_indexable:i=n.indexable,_allKeys:o=n.allKeys}=t;return{allKeys:o,scriptable:e,indexable:i,isScriptable:Ra(e)?e:()=>e,isIndexable:Ra(i)?i:()=>i}}const ZCe=(t,n)=>t?t+Fk(n):n,qk=(t,n)=>ft(n)&&"adapters"!==t&&(null===Object.getPrototypeOf(n)||n.constructor===Object);function ZV(t,n,e){if(Object.prototype.hasOwnProperty.call(t,n)||"constructor"===n)return t[n];const i=e();return t[n]=i,i}function QV(t,n,e){return Ra(t)?t(n,e):t}const t1e=(t,n)=>!0===t?n:"string"==typeof t?Aa(n,t):void 0;function n1e(t,n,e,i,o){for(const r of n){const s=t1e(e,r);if(s){t.add(s);const a=QV(s._fallback,e,o);if(typeof a<"u"&&a!==e&&a!==i)return a}else if(!1===s&&typeof i<"u"&&e!==i)return null}return!1}function Kk(t,n,e,i){const o=n._rootScopes,r=QV(n._fallback,e,i),s=[...t,...o],a=new Set;a.add(i);let l=JV(a,s,e,r||e,i);return!(null===l||typeof r<"u"&&r!==e&&(l=JV(a,s,r,l,i),null===l))&&Gk(Array.from(a),[""],o,r,()=>function i1e(t,n,e){const i=t._getTarget();n in i||(i[n]={});const o=i[n];return vn(o)&&ft(e)?e:o||{}}(n,e,i))}function JV(t,n,e,i,o){for(;e;)e=n1e(t,n,e,i,o);return e}function e8(t,n){for(const e of n){if(!e)continue;const i=e[t];if(typeof i<"u")return i}}function t8(t){let n=t._keys;return n||(n=t._keys=function r1e(t){const n=new Set;for(const e of t)for(const i of Object.keys(e).filter(o=>!o.startsWith("_")))n.add(i);return Array.from(n)}(t._scopes)),n}const s1e=Number.EPSILON||1e-14,ku=(t,n)=>n"x"===t?"y":"x";function a1e(t,n,e,i){const o=t.skip?n:t,r=n,s=e.skip?n:e,a=Lk(r,o),l=Lk(s,r);let c=a/(a+l),f=l/(a+l);c=isNaN(c)?0:c,f=isNaN(f)?0:f;const m=i*c,g=i*f;return{previous:{x:r.x-m*(s.x-o.x),y:r.y-m*(s.y-o.y)},next:{x:r.x+g*(s.x-o.x),y:r.y+g*(s.y-o.y)}}}function Tv(t,n,e){return Math.max(Math.min(t,e),n)}function h1e(t,n,e,i,o){let r,s,a,l;if(n.spanGaps&&(t=t.filter(c=>!c.skip)),"monotone"===n.cubicInterpolationMode)!function d1e(t,n="x"){const e=i8(n),i=t.length,o=Array(i).fill(0),r=Array(i);let s,a,l,c=ku(t,0);for(s=0;st.ownerDocument.defaultView.getComputedStyle(t,null),p1e=["top","right","bottom","left"];function vc(t,n,e){const i={};e=e?"-"+e:"";for(let o=0;o<4;o++){const r=p1e[o];i[r]=parseFloat(t[n+"-"+r+e])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}function yc(t,n){if("native"in t)return t;const{canvas:e,currentDevicePixelRatio:i}=n,o=Pv(e),r="border-box"===o.boxSizing,s=vc(o,"padding"),a=vc(o,"border","width"),{x:l,y:c,box:f}=function g1e(t,n){const e=t.touches,i=e&&e.length?e[0]:t,{offsetX:o,offsetY:r}=i;let a,l,s=!1;if(((t,n,e)=>(t>0||n>0)&&(!e||!e.shadowRoot))(o,r,t.target))a=o,l=r;else{const c=n.getBoundingClientRect();a=i.clientX-c.left,l=i.clientY-c.top,s=!0}return{x:a,y:l,box:s}}(t,e),m=s.left+(f&&a.left),g=s.top+(f&&a.top);let{width:_,height:w}=n;return r&&(_-=s.width+a.width,w-=s.height+a.height),{x:Math.round((l-m)/_*e.width/i),y:Math.round((c-g)/w*e.height/i)}}const La=t=>Math.round(10*t)/10;function o8(t,n,e){const i=n||1,o=La(t.height*i),r=La(t.width*i);t.height=La(t.height),t.width=La(t.width);const s=t.canvas;return s.style&&(e||!s.style.height&&!s.style.width)&&(s.style.height=`${t.height}px`,s.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==i||s.height!==o||s.width!==r)&&(t.currentDevicePixelRatio=i,s.height=o,s.width=r,t.ctx.setTransform(i,0,0,i,0,0),!0)}const v1e=function(){let t=!1;try{const n={get passive(){return t=!0,!1}};Yk()&&(window.addEventListener("test",null,n),window.removeEventListener("test",null,n))}catch{}return t}();function r8(t,n){const e=function f1e(t,n){return Pv(t).getPropertyValue(n)}(t,n),i=e&&e.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}function Cc(t,n,e,i){return{x:t.x+e*(n.x-t.x),y:t.y+e*(n.y-t.y)}}function y1e(t,n,e,i){return{x:t.x+e*(n.x-t.x),y:"middle"===i?e<.5?t.y:n.y:"after"===i?e<1?t.y:n.y:e>0?n.y:t.y}}function C1e(t,n,e,i){const o={x:t.cp2x,y:t.cp2y},r={x:n.cp1x,y:n.cp1y},s=Cc(t,o,e),a=Cc(o,r,e),l=Cc(r,n,e),c=Cc(s,a,e),f=Cc(a,l,e);return Cc(c,f,e)}function l8(t){return"angle"===t?{between:up,compare:SCe,normalize:Gi}:{between:Bs,compare:(n,e)=>n-e,normalize:n=>n}}function c8({start:t,end:n,count:e,loop:i,style:o}){return{start:t%e,end:n%e,loop:i&&(n-t+1)%e==0,style:o}}function d8(t,n,e){if(!e)return[t];const{property:i,start:o,end:r}=e,s=n.length,{compare:a,between:l,normalize:c}=l8(i),{start:f,end:m,loop:g,style:_}=function S1e(t,n,e){const{property:i,start:o,end:r}=e,{between:s,normalize:a}=l8(i),l=n.length;let g,_,{start:c,end:f,loop:m}=t;if(m){for(c+=l,f+=l,g=0,_=l;g<_&&s(a(n[c%l][i]),o,r);++g)c--,f--;c%=l,f%=l}return fk||l(o,W,I)&&0!==a(o,W),ie=()=>!k||0===a(r,I)||l(r,W,I);for(let P=f,A=f;P<=m;++P)R=n[P%s],!R.skip&&(I=c(R[i]),I!==W&&(k=l(I,o,r),null===T&&ee()&&(T=0===a(I,o)?P:A),null!==T&&ie()&&(w.push(c8({start:T,end:P,loop:g,count:s,style:_})),T=null),A=P,W=I));return null!==T&&w.push(c8({start:T,end:m,loop:g,count:s,style:_})),w}function u8(t,n){const e=[],i=t.segments;for(let o=0;oa({chart:n,initial:e.initial,numSteps:s,currentStep:Math.min(i-e.start,s)}))}_refresh(){this._request||(this._running=!0,this._request=BV.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(n=Date.now()){let e=0;this._charts.forEach((i,o)=>{if(!i.running||!i.items.length)return;const r=i.items;let l,s=r.length-1,a=!1;for(;s>=0;--s)l=r[s],l._active?(l._total>i.duration&&(i.duration=l._total),l.tick(n),a=!0):(r[s]=r[r.length-1],r.pop());a&&(o.draw(),this._notify(o,i,n,"progress")),r.length||(i.running=!1,this._notify(o,i,n,"complete"),i.initial=!1),e+=r.length}),this._lastDate=n,0===e&&(this._running=!1)}_getAnims(n){const e=this._charts;let i=e.get(n);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(n,i)),i}listen(n,e,i){this._getAnims(n).listeners[e].push(i)}add(n,e){!e||!e.length||this._getAnims(n).items.push(...e)}has(n){return this._getAnims(n).items.length>0}start(n){const e=this._charts.get(n);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((i,o)=>Math.max(i,o._duration),0),this._refresh())}running(n){if(!this._running)return!1;const e=this._charts.get(n);return!(!e||!e.running||!e.items.length)}stop(n){const e=this._charts.get(n);if(!e||!e.items.length)return;const i=e.items;let o=i.length-1;for(;o>=0;--o)i[o].cancel();e.items=[],this._notify(n,e,Date.now(),"complete")}remove(n){return this._charts.delete(n)}}var js=new I1e;const m8="transparent",O1e={boolean:(t,n,e)=>e>.5?n:t,color(t,n,e){const i=$V(t||m8),o=i.valid&&$V(n||m8);return o&&o.valid?o.mix(i,e).hexString():n},number:(t,n,e)=>t+(n-t)*e};class A1e{constructor(n,e,i,o){const r=e[i];o=gp([n.to,o,r,n.from]);const s=gp([n.from,r,o]);this._active=!0,this._fn=n.fn||O1e[n.type||typeof s],this._easing=hp[n.easing]||hp.linear,this._start=Math.floor(Date.now()+(n.delay||0)),this._duration=this._total=Math.floor(n.duration),this._loop=!!n.loop,this._target=e,this._prop=i,this._from=s,this._to=o,this._promises=void 0}active(){return this._active}update(n,e,i){if(this._active){this._notify(!1);const o=this._target[this._prop],r=i-this._start,s=this._duration-r;this._start=i,this._duration=Math.floor(Math.max(s,n.duration)),this._total+=r,this._loop=!!n.loop,this._to=gp([n.to,e,o,n.from]),this._from=gp([n.from,o,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(n){const e=n-this._start,i=this._duration,o=this._prop,r=this._from,s=this._loop,a=this._to;let l;if(this._active=r!==a&&(s||e1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[o]=this._fn(r,a,l))}wait(){const n=this._promises||(this._promises=[]);return new Promise((e,i)=>{n.push({res:e,rej:i})})}_notify(n){const e=n?"res":"rej",i=this._promises||[];for(let o=0;o{const r=n[o];if(!ft(r))return;const s={};for(const a of e)s[a]=r[a];(vn(r.properties)&&r.properties||[o]).forEach(a=>{(a===o||!i.has(a))&&i.set(a,s)})})}_animateOptions(n,e){const i=e.options,o=function F1e(t,n){if(!n)return;let e=t.options;if(e)return e.$shared&&(t.options=e=Object.assign({},e,{$shared:!1,$animations:{}})),e;t.options=n}(n,i);if(!o)return[];const r=this._createAnimations(o,i);return i.$shared&&function R1e(t,n){const e=[],i=Object.keys(n);for(let o=0;o{n.options=i},()=>{}),r}_createAnimations(n,e){const i=this._properties,o=[],r=n.$animations||(n.$animations={}),s=Object.keys(e),a=Date.now();let l;for(l=s.length-1;l>=0;--l){const c=s[l];if("$"===c.charAt(0))continue;if("options"===c){o.push(...this._animateOptions(n,e));continue}const f=e[c];let m=r[c];const g=i.get(c);if(m){if(g&&m.active()){m.update(g,f,a);continue}m.cancel()}g&&g.duration?(r[c]=m=new A1e(g,n,c,f),o.push(m)):n[c]=f}return o}update(n,e){if(0===this._properties.size)return void Object.assign(n,e);const i=this._createAnimations(n,e);return i.length?(js.add(this._chart,i),!0):void 0}}function _8(t,n){const e=t&&t.options||{},i=e.reverse,o=void 0===e.min?n:0,r=void 0===e.max?n:0;return{start:i?r:o,end:i?o:r}}function b8(t,n){const e=[],i=t._getSortedDatasetMetas(n);let o,r;for(o=0,r=i.length;o0||!e&&r<0)return o.index}return null}function C8(t,n){const{chart:e,_cachedMeta:i}=t,o=e._stacks||(e._stacks={}),{iScale:r,vScale:s,index:a}=i,l=r.axis,c=s.axis,f=function V1e(t,n,e){return`${t.id}.${n.id}.${e.stack||e.type}`}(r,s,i),m=n.length;let g;for(let _=0;_e[i].axis===n).shift()}function _p(t,n){const e=t.controller.index,i=t.vScale&&t.vScale.axis;if(i){n=n||t._parsed;for(const o of n){const r=o._stacks;if(!r||void 0===r[i]||void 0===r[i][e])return;delete r[i][e],void 0!==r[i]._visualValues&&void 0!==r[i]._visualValues[e]&&delete r[i]._visualValues[e]}}}const Jk=t=>"reset"===t||"none"===t,w8=(t,n)=>n?t:Object.assign({},t);let Ba=(()=>class t{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,i){this.chart=e,this._ctx=e.ctx,this.index=i,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=Zk(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(e){this.index!==e&&_p(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,i=this._cachedMeta,o=this.getDataset(),r=(g,_,w,k)=>"x"===g?_:"r"===g?k:w,s=i.xAxisID=Ge(o.xAxisID,Qk(e,"x")),a=i.yAxisID=Ge(o.yAxisID,Qk(e,"y")),l=i.rAxisID=Ge(o.rAxisID,Qk(e,"r")),c=i.indexAxis,f=i.iAxisID=r(c,s,a,l),m=i.vAxisID=r(c,a,s,l);i.xScale=this.getScaleForId(s),i.yScale=this.getScaleForId(a),i.rScale=this.getScaleForId(l),i.iScale=this.getScaleForId(f),i.vScale=this.getScaleForId(m)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const i=this._cachedMeta;return e===i.iScale?i.vScale:i.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&NV(this._data,this),e._stacked&&_p(e)}_dataCheck(){const e=this.getDataset(),i=e.data||(e.data=[]),o=this._data;if(ft(i))this._data=function B1e(t,n){const{iScale:e,vScale:i}=n,o="x"===e.axis?"x":"y",r="x"===i.axis?"x":"y",s=Object.keys(t),a=new Array(s.length);let l,c,f;for(l=0,c=s.length;l{const i="_onData"+Fk(e),o=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...r){const s=o.apply(this,r);return t._chartjs.listeners.forEach(a=>{"function"==typeof a[i]&&a[i](...r)}),s}})}))}(i,this),this._syncList=[],this._data=i}}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const i=this._cachedMeta,o=this.getDataset();let r=!1;this._dataCheck();const s=i._stacked;i._stacked=Zk(i.vScale,i),i.stack!==o.stack&&(r=!0,_p(i),i.stack=o.stack),this._resyncElements(e),(r||s!==i._stacked)&&(C8(this,i._parsed),i._stacked=Zk(i.vScale,i))}configure(){const e=this.chart.config,i=e.datasetScopeKeys(this._type),o=e.getOptionScopes(this.getDataset(),i,!0);this.options=e.createResolver(o,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,i){const{_cachedMeta:o,_data:r}=this,{iScale:s,_stacked:a}=o,l=s.axis;let m,g,_,c=0===e&&i===r.length||o._sorted,f=e>0&&o._parsed[e-1];if(!1===this._parsing)o._parsed=r,o._sorted=!0,_=r;else{_=vn(r[e])?this.parseArrayData(o,r,e,i):ft(r[e])?this.parseObjectData(o,r,e,i):this.parsePrimitiveData(o,r,e,i);const w=()=>null===g[l]||f&&g[l]t&&!n.hidden&&n._stacked&&{keys:b8(this.chart,!0),values:null})(i,o),f={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:m,max:g}=function H1e(t){const{min:n,max:e,minDefined:i,maxDefined:o}=t.getUserBounds();return{min:i?n:Number.NEGATIVE_INFINITY,max:o?e:Number.POSITIVE_INFINITY}}(l);let _,w;function k(){w=r[_];const T=w[l.axis];return!jn(w[e.axis])||m>T||g=0;--_)if(!k()){this.updateRangeFromParsed(f,e,w,c);break}return f}getAllParsedValues(e){const i=this._cachedMeta._parsed,o=[];let r,s,a;for(r=0,s=i.length;r=0&&ethis.getContext(o,r,i),g);return T.$shared&&(T.$shared=c,s[a]=Object.freeze(w8(T,c))),T}_resolveAnimations(e,i,o){const r=this.chart,s=this._cachedDataOpts,a=`animation-${i}`,l=s[a];if(l)return l;let c;if(!1!==r.options.animation){const m=this.chart.config,g=m.datasetAnimationScopeKeys(this._type,i),_=m.getOptionScopes(this.getDataset(),g);c=m.createResolver(_,this.getContext(e,o,i))}const f=new g8(r,c&&c.animations);return c&&c._cacheable&&(s[a]=Object.freeze(f)),f}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,i){return!i||Jk(e)||this.chart._animationsDisabled}_getSharedOptions(e,i){const o=this.resolveDataElementOptions(e,i),r=this._sharedOptions,s=this.getSharedOptions(o),a=this.includeOptions(i,s)||s!==r;return this.updateSharedOptions(s,i,o),{sharedOptions:s,includeOptions:a}}updateElement(e,i,o,r){Jk(r)?Object.assign(e,o):this._resolveAnimations(i,r).update(e,o)}updateSharedOptions(e,i,o){e&&!Jk(i)&&this._resolveAnimations(void 0,i).update(e,o)}_setStyle(e,i,o,r){e.active=r;const s=this.getStyle(i,r);this._resolveAnimations(i,o,r).update(e,{options:!r&&this.getSharedOptions(s)||s})}removeHoverStyle(e,i,o){this._setStyle(e,o,"active",!1)}setHoverStyle(e,i,o){this._setStyle(e,o,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const i=this._data,o=this._cachedMeta.data;for(const[l,c,f]of this._syncList)this[l](c,f);this._syncList=[];const r=o.length,s=i.length,a=Math.min(s,r);a&&this.parse(0,a),s>r?this._insertElements(r,s-r,e):s{for(f.length+=i,l=f.length-1;l>=a;l--)f[l]=f[l-i]};for(c(s),l=e;lclass t extends Ba{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(e){const i=this._cachedMeta,{dataset:o,data:r=[],_dataset:s}=i,a=this.chart._animationsDisabled;let{start:l,count:c}=function HV(t,n,e){const i=n.length;let o=0,r=i;if(t._sorted){const{iScale:s,vScale:a,_parsed:l}=t,c=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,f=s.axis,{min:m,max:g,minDefined:_,maxDefined:w}=s.getUserBounds();if(_){if(o=Math.min(Vs(l,f,m).lo,e?i:Vs(n,f,s.getPixelForValue(m)).lo),c){const k=l.slice(0,o+1).reverse().findIndex(T=>!dt(T[a.axis]));o-=Math.max(0,k)}o=Si(o,0,i-1)}if(w){let k=Math.max(Vs(l,s.axis,g,!0).hi+1,e?0:Vs(n,f,s.getPixelForValue(g),!0).hi+1);if(c){const T=l.slice(k-1).findIndex(I=>!dt(I[a.axis]));k+=Math.max(0,T)}r=Si(k,o,i)-o}else r=i-o}return{start:o,count:r}}(i,r,a);this._drawStart=l,this._drawCount=c,function jV(t){const{xScale:n,yScale:e,_scaleRanges:i}=t,o={xmin:n.min,xmax:n.max,ymin:e.min,ymax:e.max};if(!i)return t._scaleRanges=o,!0;const r=i.xmin!==n.min||i.xmax!==n.max||i.ymin!==e.min||i.ymax!==e.max;return Object.assign(i,o),r}(i)&&(l=0,c=r.length),o._chart=this.chart,o._datasetIndex=this.index,o._decimated=!!s._decimated,o.points=r;const f=this.resolveDatasetElementOptions(e);this.options.showLine||(f.borderWidth=0),f.segment=this.options.segment,this.updateElement(o,void 0,{animated:!a,options:f},e),this.updateElements(r,l,c,e)}updateElements(e,i,o,r){const s="reset"===r,{iScale:a,vScale:l,_stacked:c,_dataset:f}=this._cachedMeta,{sharedOptions:m,includeOptions:g}=this._getSharedOptions(i,r),_=a.axis,w=l.axis,{spanGaps:k,segment:T}=this.options,I=xu(k)?k:Number.POSITIVE_INFINITY,R=this.chart._animationsDisabled||s||"none"===r,W=i+o,Y=e.length;let K=i>0&&this.getParsed(i-1);for(let ee=0;ee=W){P.skip=!0;continue}const A=this.getParsed(ee),L=dt(A[w]),$=P[_]=a.getPixelForValue(A[_],ee),H=P[w]=s||L?l.getBasePixel():l.getPixelForValue(c?this.applyStack(l,A,c):A[w],ee);P.skip=isNaN($)||isNaN(H)||L,P.stop=ee>0&&Math.abs(A[_]-K[_])>I,T&&(P.parsed=A,P.raw=f.data[ee]),g&&(P.options=m||this.resolveDataElementOptions(ee,ie.active?"active":r)),R||this.updateElement(ie,ee,P,r),K=A}}getMaxOverflow(){const e=this._cachedMeta,i=e.dataset,o=i.options&&i.options.borderWidth||0,r=e.data||[];if(!r.length)return o;const s=r[0].size(this.resolveDataElementOptions(0)),a=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(o,s,a)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}})();function s0e(t,n,e,i){const{controller:o,data:r,_sorted:s}=t,a=o._cachedMeta.iScale,l=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null;if(a&&n===a.axis&&"r"!==n&&s&&r.length){const c=a._reversePixels?DCe:Vs;if(!i){const f=c(r,n,e);if(l){const{vScale:m}=o._cachedMeta,{_parsed:g}=t,_=g.slice(0,f.lo+1).reverse().findIndex(k=>!dt(k[m.axis]));f.lo-=Math.max(0,_);const w=g.slice(f.hi).findIndex(k=>!dt(k[m.axis]));f.hi+=Math.max(0,w)}return f}if(o._sharedOptions){const f=r[0],m="function"==typeof f.getRange&&f.getRange(n);if(m){const g=c(r,n,e-m),_=c(r,n,e+m);return{lo:g.lo,hi:_.hi}}}}return{lo:0,hi:r.length-1}}function bp(t,n,e,i,o){const r=t.getSortedVisibleDatasetMetas(),s=e[n];for(let a=0,l=r.length;a{l[s]&&l[s](n[e],o)&&(r.push({element:l,datasetIndex:c,index:f}),a=a||l.inRange(n.x,n.y,o))}),i&&!a?[]:r}var d0e={evaluateInteractionItems:bp,modes:{index(t,n,e,i){const o=yc(n,t),r=e.axis||"x",s=e.includeInvisible||!1,a=e.intersect?iD(t,o,r,i,s):oD(t,o,r,!1,i,s),l=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach(c=>{const f=a[0].index,m=c.data[f];m&&!m.skip&&l.push({element:m,datasetIndex:c.index,index:f})}),l):[]},dataset(t,n,e,i){const o=yc(n,t),r=e.axis||"xy",s=e.includeInvisible||!1;let a=e.intersect?iD(t,o,r,i,s):oD(t,o,r,!1,i,s);if(a.length>0){const l=a[0].datasetIndex,c=t.getDatasetMeta(l).data;a=[];for(let f=0;fiD(t,yc(n,t),e.axis||"xy",i,e.includeInvisible||!1),nearest:(t,n,e,i)=>oD(t,yc(n,t),e.axis||"xy",e.intersect,i,e.includeInvisible||!1),x:(t,n,e,i)=>E8(t,yc(n,t),"x",e.intersect,i),y:(t,n,e,i)=>E8(t,yc(n,t),"y",e.intersect,i)}};const P8=["left","top","right","bottom"];function vp(t,n){return t.filter(e=>e.pos===n)}function I8(t,n){return t.filter(e=>-1===P8.indexOf(e.pos)&&e.box.axis===n)}function yp(t,n){return t.sort((e,i)=>{const o=n?i:e,r=n?e:i;return o.weight===r.weight?o.index-r.index:o.weight-r.weight})}function O8(t,n,e,i){return Math.max(t[e],n[e])+Math.max(t[i],n[i])}function A8(t,n){t.top=Math.max(t.top,n.top),t.left=Math.max(t.left,n.left),t.bottom=Math.max(t.bottom,n.bottom),t.right=Math.max(t.right,n.right)}function m0e(t,n,e,i){const{pos:o,box:r}=e,s=t.maxPadding;if(!ft(o)){e.size&&(t[o]-=e.size);const m=i[e.stack]||{size:0,count:1};m.size=Math.max(m.size,e.horizontal?r.height:r.width),e.size=m.size/m.count,t[o]+=e.size}r.getPadding&&A8(s,r.getPadding());const a=Math.max(0,n.outerWidth-O8(s,t,"left","right")),l=Math.max(0,n.outerHeight-O8(s,t,"top","bottom")),c=a!==t.w,f=l!==t.h;return t.w=a,t.h=l,e.horizontal?{same:c,other:f}:{same:f,other:c}}function _0e(t,n){const e=n.maxPadding;return function i(o){const r={left:0,top:0,right:0,bottom:0};return o.forEach(s=>{r[s]=Math.max(n[s],e[s])}),r}(t?["left","right"]:["top","bottom"])}function Cp(t,n,e,i){const o=[];let r,s,a,l,c,f;for(r=0,s=t.length,c=0;rc.box.fullSize),!0),i=yp(vp(n,"left"),!0),o=yp(vp(n,"right")),r=yp(vp(n,"top"),!0),s=yp(vp(n,"bottom")),a=I8(n,"x"),l=I8(n,"y");return{fullSize:e,leftAndTop:i.concat(r),rightAndBottom:o.concat(l).concat(s).concat(a),chartArea:vp(n,"chartArea"),vertical:i.concat(o).concat(l),horizontal:r.concat(s).concat(a)}}(t.boxes),l=a.vertical,c=a.horizontal;Vt(t.boxes,k=>{"function"==typeof k.beforeLayout&&k.beforeLayout()});const f=l.reduce((k,T)=>T.box.options&&!1===T.box.options.display?k:k+1,0)||1,m=Object.freeze({outerWidth:n,outerHeight:e,padding:o,availableWidth:r,availableHeight:s,vBoxMaxWidth:r/2/f,hBoxMaxHeight:s/2}),g=Object.assign({},o);A8(g,Ki(i));const _=Object.assign({maxPadding:g,w:r,h:s,x:o.left,y:o.top},o),w=function f0e(t,n){const e=function h0e(t){const n={};for(const e of t){const{stack:i,pos:o,stackWeight:r}=e;if(!i||!P8.includes(o))continue;const s=n[i]||(n[i]={count:0,placed:0,weight:0,size:0});s.count++,s.weight+=r}return n}(t),{vBoxMaxWidth:i,hBoxMaxHeight:o}=n;let r,s,a;for(r=0,s=t.length;r{const T=k.box;Object.assign(T,t.chartArea),T.update(_.w,_.h,{left:0,top:0,right:0,bottom:0})})}};class F8{acquireContext(n,e){}releaseContext(n){return!1}addEventListener(n,e,i){}removeEventListener(n,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(n,e,i,o){return e=Math.max(0,e||n.width),i=i||n.height,{width:e,height:Math.max(0,o?Math.floor(e/o):i)}}isAttached(n){return!0}updateConfig(n){}}class b0e extends F8{acquireContext(n){return n&&n.getContext&&n.getContext("2d")||null}updateConfig(n){n.options.animation=!1}}const Av="$chartjs",v0e={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},N8=t=>null===t||""===t,L8=!!v1e&&{passive:!0};function w0e(t,n,e){t&&t.canvas&&t.canvas.removeEventListener(n,e,L8)}function Rv(t,n){for(const e of t)if(e===n||e.contains(n))return!0}function S0e(t,n,e){const i=t.canvas,o=new MutationObserver(r=>{let s=!1;for(const a of r)s=s||Rv(a.addedNodes,i),s=s&&!Rv(a.removedNodes,i);s&&e()});return o.observe(document,{childList:!0,subtree:!0}),o}function k0e(t,n,e){const i=t.canvas,o=new MutationObserver(r=>{let s=!1;for(const a of r)s=s||Rv(a.removedNodes,i),s=s&&!Rv(a.addedNodes,i);s&&e()});return o.observe(document,{childList:!0,subtree:!0}),o}const wp=new Map;let B8=0;function V8(){const t=window.devicePixelRatio;t!==B8&&(B8=t,wp.forEach((n,e)=>{e.currentDevicePixelRatio!==t&&n()}))}function T0e(t,n,e){const i=t.canvas,o=i&&Xk(i);if(!o)return;const r=VV((a,l)=>{const c=o.clientWidth;e(a,l),c{const l=a[0],c=l.contentRect.width,f=l.contentRect.height;0===c&&0===f||r(c,f)});return s.observe(o),function D0e(t,n){wp.size||window.addEventListener("resize",V8),wp.set(t,n)}(t,r),s}function rD(t,n,e){e&&e.disconnect(),"resize"===n&&function M0e(t){wp.delete(t),wp.size||window.removeEventListener("resize",V8)}(t)}function E0e(t,n,e){const i=t.canvas,o=VV(r=>{null!==t.ctx&&e(function x0e(t,n){const e=v0e[t.type]||t.type,{x:i,y:o}=yc(t,n);return{type:e,chart:n,native:t,x:void 0!==i?i:null,y:void 0!==o?o:null}}(r,t))},t);return function C0e(t,n,e){t&&t.addEventListener(n,e,L8)}(i,n,o),o}class P0e extends F8{acquireContext(n,e){const i=n&&n.getContext&&n.getContext("2d");return i&&i.canvas===n?(function y0e(t,n){const e=t.style,i=t.getAttribute("height"),o=t.getAttribute("width");if(t[Av]={initial:{height:i,width:o,style:{display:e.display,height:e.height,width:e.width}}},e.display=e.display||"block",e.boxSizing=e.boxSizing||"border-box",N8(o)){const r=r8(t,"width");void 0!==r&&(t.width=r)}if(N8(i))if(""===t.style.height)t.height=t.width/(n||2);else{const r=r8(t,"height");void 0!==r&&(t.height=r)}}(n,e),i):null}releaseContext(n){const e=n.canvas;if(!e[Av])return!1;const i=e[Av].initial;["height","width"].forEach(r=>{const s=i[r];dt(s)?e.removeAttribute(r):e.setAttribute(r,s)});const o=i.style||{};return Object.keys(o).forEach(r=>{e.style[r]=o[r]}),e.width=e.width,delete e[Av],!0}addEventListener(n,e,i){this.removeEventListener(n,e),(n.$proxies||(n.$proxies={}))[e]=({attach:S0e,detach:k0e,resize:T0e}[e]||E0e)(n,e,i)}removeEventListener(n,e){const i=n.$proxies||(n.$proxies={}),o=i[e];o&&(({attach:rD,detach:rD,resize:rD}[e]||w0e)(n,e,o),i[e]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(n,e,i,o){return function b1e(t,n,e,i){const o=Pv(t),r=vc(o,"margin"),s=Ev(o.maxWidth,t,"clientWidth")||wv,a=Ev(o.maxHeight,t,"clientHeight")||wv,l=function _1e(t,n,e){let i,o;if(void 0===n||void 0===e){const r=t&&Xk(t);if(r){const s=r.getBoundingClientRect(),a=Pv(r),l=vc(a,"border","width"),c=vc(a,"padding");n=s.width-c.width-l.width,e=s.height-c.height-l.height,i=Ev(a.maxWidth,r,"clientWidth"),o=Ev(a.maxHeight,r,"clientHeight")}else n=t.clientWidth,e=t.clientHeight}return{width:n,height:e,maxWidth:i||wv,maxHeight:o||wv}}(t,n,e);let{width:c,height:f}=l;if("content-box"===o.boxSizing){const g=vc(o,"border","width"),_=vc(o,"padding");c-=_.width+g.width,f-=_.height+g.height}return c=Math.max(0,c-r.width),f=Math.max(0,i?c/i:f-r.height),c=La(Math.min(c,s,l.maxWidth)),f=La(Math.min(f,a,l.maxHeight)),c&&!f&&(f=La(c/2)),(void 0!==n||void 0!==e)&&i&&l.height&&f>l.height&&(f=l.height,c=La(Math.floor(f*i))),{width:c,height:f}}(n,e,i,o)}isAttached(n){const e=n&&Xk(n);return!(!e||!e.isConnected)}}class Us{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(n){const{x:e,y:i}=this.getProps(["x","y"],n);return{x:e,y:i}}hasValue(){return xu(this.x)&&xu(this.y)}getProps(n,e){const i=this.$animations;if(!e||!i)return this;const o={};return n.forEach(r=>{o[r]=i[r]&&i[r].active()?i[r]._to:this[r]}),o}}function Fv(t,n,e,i,o){const r=Ge(i,0),s=Math.min(Ge(o,t.length),t.length);let l,c,f,a=0;for(e=Math.ceil(e),o&&(l=o-i,e=l/Math.floor(l/e)),f=r;f<0;)a++,f=Math.round(r+a*e);for(c=Math.max(r,0);c"top"===n||"left"===n?t[n]+e:t[n]-e,j8=(t,n)=>Math.min(n||t,t);function U8(t,n){const e=[],i=t.length/n,o=t.length;let r=0;for(;rs+a)))return l}function xp(t){return t.drawTicks?t.tickLength:0}function z8(t,n){if(!t.display)return 0;const e=fi(t.font,n),i=Ki(t.padding);return(vn(t.text)?t.text.length:1)*e.lineHeight+i.height}function z0e(t,n,e){let i=(t=>"start"===t?"left":"end"===t?"right":"center")(t);return(e&&"right"!==n||!e&&"right"===n)&&(i=(t=>"left"===t?"right":"right"===t?"left":t)(i)),i}class xc extends Us{constructor(n){super(),this.id=n.id,this.type=n.type,this.options=void 0,this.ctx=n.ctx,this.chart=n.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(n){this.options=n.setContext(this.getContext()),this.axis=n.axis,this._userMin=this.parse(n.min),this._userMax=this.parse(n.max),this._suggestedMin=this.parse(n.suggestedMin),this._suggestedMax=this.parse(n.suggestedMax)}parse(n,e){return n}getUserBounds(){let{_userMin:n,_userMax:e,_suggestedMin:i,_suggestedMax:o}=this;return n=Oo(n,Number.POSITIVE_INFINITY),e=Oo(e,Number.NEGATIVE_INFINITY),i=Oo(i,Number.POSITIVE_INFINITY),o=Oo(o,Number.NEGATIVE_INFINITY),{min:Oo(n,i),max:Oo(e,o),minDefined:jn(n),maxDefined:jn(e)}}getMinMax(n){let s,{min:e,max:i,minDefined:o,maxDefined:r}=this.getUserBounds();if(o&&r)return{min:e,max:i};const a=this.getMatchingVisibleMetas();for(let l=0,c=a.length;li?i:e,i=o&&e>i?e:i,{min:Oo(e,Oo(i,e)),max:Oo(i,Oo(e,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const n=this.chart.data;return this.options.labels||(this.isHorizontal()?n.xLabels:n.yLabels)||n.labels||[]}getLabelItems(n=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(n))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){ln(this.options.beforeUpdate,[this])}update(n,e,i){const{beginAtZero:o,grace:r,ticks:s}=this.options,a=s.sampleSize;this.beforeUpdate(),this.maxWidth=n,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=function XCe(t,n,e){const{min:i,max:o}=t,r=((t,n)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*n:+t)(n,(o-i)/2),s=(a,l)=>e&&0===a?0:a+l;return{min:s(i,-Math.abs(r)),max:s(o,r)}}(this,r,o),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=ao)return function N0e(t,n,e,i){let s,o=0,r=e[0];for(i=Math.ceil(i),s=0;so-r).pop(),n}(i);for(let s=0,a=r.length-1;so)return l}return Math.max(o,1)}(r,n,o);if(s>0){let m,g;const _=s>1?Math.round((l-a)/(s-1)):null;for(Fv(n,c,f,dt(_)?0:a-_,a),m=0,g=s-1;m=r||i<=1||!this.isHorizontal())return void(this.labelRotation=o);const f=this._getLabelSizes(),m=f.widest.width,g=f.highest.height,_=Si(this.chart.width-m,0,this.maxWidth);a=n.offset?this.maxWidth/i:_/(i-1),m+6>a&&(a=_/(i-(n.offset?.5:1)),l=this.maxHeight-xp(n.grid)-e.padding-z8(n.title,this.chart.options.font),c=Math.sqrt(m*m+g*g),s=function Nk(t){return t*(180/Mt)}(Math.min(Math.asin(Si((f.highest.height+6)/a,-1,1)),Math.asin(Si(l/c,-1,1))-Math.asin(Si(g/c,-1,1)))),s=Math.max(o,Math.min(r,s))),this.labelRotation=s}afterCalculateLabelRotation(){ln(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){ln(this.options.beforeFit,[this])}fit(){const n={width:0,height:0},{chart:e,options:{ticks:i,title:o,grid:r}}=this,s=this._isVisible(),a=this.isHorizontal();if(s){const l=z8(o,e.options.font);if(a?(n.width=this.maxWidth,n.height=xp(r)+l):(n.height=this.maxHeight,n.width=xp(r)+l),i.display&&this.ticks.length){const{first:c,last:f,widest:m,highest:g}=this._getLabelSizes(),_=2*i.padding,w=Tr(this.labelRotation),k=Math.cos(w),T=Math.sin(w);a?n.height=Math.min(this.maxHeight,n.height+(i.mirror?0:T*m.width+k*g.height)+_):n.width=Math.min(this.maxWidth,n.width+(i.mirror?0:k*m.width+T*g.height)+_),this._calculatePadding(c,f,T,k)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=n.height):(this.width=n.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(n,e,i,o){const{ticks:{align:r,padding:s},position:a}=this.options,l=0!==this.labelRotation,c="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const f=this.getPixelForTick(0)-this.left,m=this.right-this.getPixelForTick(this.ticks.length-1);let g=0,_=0;l?c?(g=o*n.width,_=i*e.height):(g=i*n.height,_=o*e.width):"start"===r?_=e.width:"end"===r?g=n.width:"inner"!==r&&(g=n.width/2,_=e.width/2),this.paddingLeft=Math.max((g-f+s)*this.width/(this.width-f),0),this.paddingRight=Math.max((_-m+s)*this.width/(this.width-m),0)}else{let f=e.height/2,m=n.height/2;"start"===r?(f=0,m=n.height):"end"===r&&(f=e.height,m=0),this.paddingTop=f+s,this.paddingBottom=m+s}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){ln(this.options.afterFit,[this])}isHorizontal(){const{axis:n,position:e}=this.options;return"top"===e||"bottom"===e||"x"===n}isFullSize(){return this.options.fullSize}_convertTicksToLabels(n){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(n),e=0,i=n.length;e{const i=e.gc,o=i.length/2;let r;if(o>n){for(r=0;r({width:s[A]||0,height:a[A]||0});return{first:P(0),last:P(e-1),widest:P(ee),highest:P(ie),widths:s,heights:a}}getLabelForValue(n){return n}getPixelForValue(n,e){return NaN}getValueForPixel(n){}getPixelForTick(n){const e=this.ticks;return n<0||n>e.length-1?null:this.getPixelForValue(e[n].value)}getPixelForDecimal(n){this._reversePixels&&(n=1-n);const e=this._startPixel+n*this._length;return function kCe(t){return Si(t,-32768,32767)}(this._alignToPixels?gc(this.chart,e,0):e)}getDecimalForPixel(n){const e=(n-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:n,max:e}=this;return n<0&&e<0?e:n>0&&e>0?n:0}getContext(n){const e=this.ticks||[];if(n>=0&&na*o?a/i:l/o:l*o0}_computeGridLineItems(n){const e=this.axis,i=this.chart,o=this.options,{grid:r,position:s,border:a}=o,l=r.offset,c=this.isHorizontal(),m=this.ticks.length+(l?1:0),g=xp(r),_=[],w=a.setContext(this.getContext()),k=w.display?w.width:0,T=k/2,I=function(N){return gc(i,N,k)};let R,W,Y,K,ee,ie,P,A,L,$,H,G;if("top"===s)R=I(this.bottom),ie=this.bottom-g,A=R-T,$=I(n.top)+T,G=n.bottom;else if("bottom"===s)R=I(this.top),$=n.top,G=I(n.bottom)-T,ie=R+T,A=this.top+g;else if("left"===s)R=I(this.right),ee=this.right-g,P=R-T,L=I(n.left)+T,H=n.right;else if("right"===s)R=I(this.left),L=n.left,H=I(n.right)-T,ee=R+T,P=this.left+g;else if("x"===e){if("center"===s)R=I((n.top+n.bottom)/2+.5);else if(ft(s)){const N=Object.keys(s)[0];R=I(this.chart.scales[N].getPixelForValue(s[N]))}$=n.top,G=n.bottom,ie=R+T,A=ie+g}else if("y"===e){if("center"===s)R=I((n.left+n.right)/2);else if(ft(s)){const N=Object.keys(s)[0];R=I(this.chart.scales[N].getPixelForValue(s[N]))}ee=R-T,P=ee-g,L=n.left,H=n.right}const J=Ge(o.ticks.maxTicksLimit,m),V=Math.max(1,Math.ceil(m/J));for(W=0;W0&&(at-=Oe/2)}Ce={left:at,top:Xe,width:Oe+Ee.width,height:ut+Ee.height,color:V.backdropColor}}T.push({label:Y,font:A,textOffset:H,options:{rotation:k,color:q,strokeColor:z,strokeWidth:Q,textAlign:ue,textBaseline:G,translation:[K,ee],backdrop:Ce}})}return T}_getXAxisLabelAlignment(){const{position:n,ticks:e}=this.options;if(-Tr(this.labelRotation))return"top"===n?"left":"right";let o="center";return"start"===e.align?o="left":"end"===e.align?o="right":"inner"===e.align&&(o="inner"),o}_getYAxisLabelAlignment(n){const{position:e,ticks:{crossAlign:i,mirror:o,padding:r}}=this.options,a=n+r,l=this._getLabelSizes().widest.width;let c,f;return"left"===e?o?(f=this.right+r,"near"===i?c="left":"center"===i?(c="center",f+=l/2):(c="right",f+=l)):(f=this.right-a,"near"===i?c="right":"center"===i?(c="center",f-=l/2):(c="left",f=this.left)):"right"===e?o?(f=this.left+r,"near"===i?c="right":"center"===i?(c="center",f-=l/2):(c="left",f-=l)):(f=this.left+a,"near"===i?c="left":"center"===i?(c="center",f+=l/2):(c="right",f=this.right)):c="right",{textAlign:c,x:f}}_computeLabelArea(){if(this.options.ticks.mirror)return;const n=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:n.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:n.width}:void 0}drawBackground(){const{ctx:n,options:{backgroundColor:e},left:i,top:o,width:r,height:s}=this;e&&(n.save(),n.fillStyle=e,n.fillRect(i,o,r,s),n.restore())}getLineWidthForValue(n){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const o=this.ticks.findIndex(r=>r.value===n);return o>=0?e.setContext(this.getContext(o)).lineWidth:0}drawGrid(n){const e=this.options.grid,i=this.ctx,o=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(n));let r,s;const a=(l,c,f)=>{!f.width||!f.color||(i.save(),i.lineWidth=f.width,i.strokeStyle=f.color,i.setLineDash(f.borderDash||[]),i.lineDashOffset=f.borderDashOffset,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(c.x,c.y),i.stroke(),i.restore())};if(e.display)for(r=0,s=o.length;r{this.drawBackground(),this.drawGrid(r),this.drawTitle()}},{z:o,draw:()=>{this.drawBorder()}},{z:e,draw:r=>{this.drawLabels(r)}}]:[{z:e,draw:r=>{this.draw(r)}}]}getMatchingVisibleMetas(n){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",o=[];let r,s;for(r=0,s=e.length;r{const i=e.split("."),o=i.pop(),r=[t].concat(i).join("."),s=n[e].split("."),a=s.pop(),l=s.join(".");kn.route(r,o,l,a)})}(n,t.defaultRoutes),t.descriptors&&kn.describe(n,t.descriptors)}(n,s,i),this.override&&kn.override(n.id,n.overrides)),s}get(n){return this.items[n]}unregister(n){const e=this.items,i=n.id,o=this.scope;i in e&&delete e[i],o&&i in kn[o]&&(delete kn[o][i],this.override&&delete mc[i])}}class K0e{constructor(){this.controllers=new Nv(Ba,"datasets",!0),this.elements=new Nv(Us,"elements"),this.plugins=new Nv(Object,"plugins"),this.scales=new Nv(xc,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...n){this._each("register",n)}remove(...n){this._each("unregister",n)}addControllers(...n){this._each("register",n,this.controllers)}addElements(...n){this._each("register",n,this.elements)}addPlugins(...n){this._each("register",n,this.plugins)}addScales(...n){this._each("register",n,this.scales)}getController(n){return this._get(n,this.controllers,"controller")}getElement(n){return this._get(n,this.elements,"element")}getPlugin(n){return this._get(n,this.plugins,"plugin")}getScale(n){return this._get(n,this.scales,"scale")}removeControllers(...n){this._each("unregister",n,this.controllers)}removeElements(...n){this._each("unregister",n,this.elements)}removePlugins(...n){this._each("unregister",n,this.plugins)}removeScales(...n){this._each("unregister",n,this.scales)}_each(n,e,i){[...e].forEach(o=>{const r=i||this._getRegistryForType(o);i||r.isForType(o)||r===this.plugins&&o.id?this._exec(n,r,o):Vt(o,s=>{const a=i||this._getRegistryForType(s);this._exec(n,a,s)})})}_exec(n,e,i){const o=Fk(n);ln(i["before"+o],[],i),e[n](i),ln(i["after"+o],[],i)}_getRegistryForType(n){for(let e=0;er.filter(a=>!s.some(l=>a.plugin.id===l.plugin.id));this._notify(o(e,i),n,"stop"),this._notify(o(i,e),n,"start")}}function Z0e(t,n){return n||!1!==t?!0===t?{}:t:null}function J0e(t,{plugin:n,local:e},i,o){const r=t.pluginScopeKeys(n),s=t.getOptionScopes(i,r);return e&&n.defaults&&s.push(n.defaults),t.createResolver(s,o,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function sD(t,n){return((n.datasets||{})[t]||{}).indexAxis||n.indexAxis||(kn.datasets[t]||{}).indexAxis||"x"}function $8(t){if("x"===t||"y"===t||"r"===t)return t}function nwe(t){return"top"===t||"bottom"===t?"x":"left"===t||"right"===t?"y":void 0}function aD(t,...n){if($8(t))return t;for(const e of n){const i=e.axis||nwe(e.position)||t.length>1&&$8(t[0].toLowerCase());if(i)return i}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function W8(t,n,e){if(e[n+"AxisID"]===t)return{axis:n}}function G8(t){const n=t.options||(t.options={});n.plugins=Ge(n.plugins,{}),n.scales=function owe(t,n){const e=mc[t.type]||{scales:{}},i=n.scales||{},o=sD(t.type,n),r=Object.create(null);return Object.keys(i).forEach(s=>{const a=i[s];if(!ft(a))return console.error(`Invalid scale configuration for scale: ${s}`);if(a._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${s}`);const l=aD(s,a,function iwe(t,n){if(n.data&&n.data.datasets){const e=n.data.datasets.filter(i=>i.xAxisID===t||i.yAxisID===t);if(e.length)return W8(t,"x",e[0])||W8(t,"y",e[0])}return{}}(s,t),kn.scales[a.type]),c=function twe(t,n){return t===n?"_index_":"_value_"}(l,o),f=e.scales||{};r[s]=lp(Object.create(null),[{axis:l},a,f[l],f[c]])}),t.data.datasets.forEach(s=>{const a=s.type||t.type,l=s.indexAxis||sD(a,n),f=(mc[a]||{}).scales||{};Object.keys(f).forEach(m=>{const g=function ewe(t,n){let e=t;return"_index_"===t?e=n:"_value_"===t&&(e="x"===n?"y":"x"),e}(m,l),_=s[g+"AxisID"]||g;r[_]=r[_]||Object.create(null),lp(r[_],[{axis:g},i[_],f[m]])})}),Object.keys(r).forEach(s=>{const a=r[s];lp(a,[kn.scales[a.type],kn.scale])}),r}(t,n)}function q8(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const K8=new Map,Y8=new Set;function Lv(t,n){let e=K8.get(t);return e||(e=n(),K8.set(t,e),Y8.add(e)),e}const Sp=(t,n,e)=>{const i=Aa(n,e);void 0!==i&&t.add(i)};class swe{constructor(n){this._config=function rwe(t){return(t=t||{}).data=q8(t.data),G8(t),t}(n),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(n){this._config.type=n}get data(){return this._config.data}set data(n){this._config.data=q8(n)}get options(){return this._config.options}set options(n){this._config.options=n}get plugins(){return this._config.plugins}update(){const n=this._config;this.clearCache(),G8(n)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(n){return Lv(n,()=>[[`datasets.${n}`,""]])}datasetAnimationScopeKeys(n,e){return Lv(`${n}.transition.${e}`,()=>[[`datasets.${n}.transitions.${e}`,`transitions.${e}`],[`datasets.${n}`,""]])}datasetElementScopeKeys(n,e){return Lv(`${n}-${e}`,()=>[[`datasets.${n}.elements.${e}`,`datasets.${n}`,`elements.${e}`,""]])}pluginScopeKeys(n){const e=n.id;return Lv(`${this.type}-plugin-${e}`,()=>[[`plugins.${e}`,...n.additionalOptionScopes||[]]])}_cachedScopes(n,e){const i=this._scopeCache;let o=i.get(n);return(!o||e)&&(o=new Map,i.set(n,o)),o}getOptionScopes(n,e,i){const{options:o,type:r}=this,s=this._cachedScopes(n,i),a=s.get(e);if(a)return a;const l=new Set;e.forEach(f=>{n&&(l.add(n),f.forEach(m=>Sp(l,n,m))),f.forEach(m=>Sp(l,o,m)),f.forEach(m=>Sp(l,mc[r]||{},m)),f.forEach(m=>Sp(l,kn,m)),f.forEach(m=>Sp(l,Uk,m))});const c=Array.from(l);return 0===c.length&&c.push(Object.create(null)),Y8.has(e)&&s.set(e,c),c}chartOptionScopes(){const{options:n,type:e}=this;return[n,mc[e]||{},kn.datasets[e]||{},{type:e},kn,Uk]}resolveNamedOptions(n,e,i,o=[""]){const r={$shared:!0},{resolver:s,subPrefixes:a}=X8(this._resolverCache,n,o);let l=s;(function lwe(t,n){const{isScriptable:e,isIndexable:i}=XV(t);for(const o of n){const r=e(o),s=i(o),a=(s||r)&&t[o];if(r&&(Ra(a)||awe(a))||s&&vn(a))return!0}return!1})(s,e)&&(r.$shared=!1,l=Su(s,i=Ra(i)?i():i,this.createResolver(n,i,a)));for(const c of e)r[c]=l[c];return r}createResolver(n,e,i=[""],o){const{resolver:r}=X8(this._resolverCache,n,i);return ft(e)?Su(r,e,void 0,o):r}}function X8(t,n,e){let i=t.get(n);i||(i=new Map,t.set(n,i));const o=e.join();let r=i.get(o);return r||(r={resolver:Gk(n,e),subPrefixes:e.filter(a=>!a.toLowerCase().includes("hover"))},i.set(o,r)),r}const awe=t=>ft(t)&&Object.getOwnPropertyNames(t).some(n=>Ra(t[n])),dwe=["top","bottom","left","right","chartArea"];function Z8(t,n){return"top"===t||"bottom"===t||-1===dwe.indexOf(t)&&"x"===n}function Q8(t,n){return function(e,i){return e[t]===i[t]?e[n]-i[n]:e[t]-i[t]}}function J8(t){const n=t.chart,e=n.options.animation;n.notifyPlugins("afterRender"),ln(e&&e.onComplete,[t],n)}function uwe(t){const n=t.chart,e=n.options.animation;ln(e&&e.onProgress,[t],n)}function eH(t){return Yk()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Bv={},tH=t=>{const n=eH(t);return Object.values(Bv).filter(e=>e.canvas===n).pop()};function hwe(t,n,e){const i=Object.keys(t);for(const o of i){const r=+o;if(r>=n){const s=t[o];delete t[o],(e>0||r>n)&&(t[r+e]=s)}}}let lD=(()=>class t{static defaults=kn;static instances=Bv;static overrides=mc;static registry=ns;static version="4.5.1";static getChart=tH;static register(...e){ns.add(...e),nH()}static unregister(...e){ns.remove(...e),nH()}constructor(e,i){const o=this.config=new swe(i),r=eH(e),s=tH(r);if(s)throw new Error("Canvas is already in use. Chart with ID '"+s.id+"' must be destroyed before the canvas with ID '"+s.canvas.id+"' can be reused.");const a=o.createResolver(o.chartOptionScopes(),this.getContext());this.platform=new(o.platform||function I0e(t){return!Yk()||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas?b0e:P0e}(r)),this.platform.updateConfig(o);const l=this.platform.acquireContext(r,a.aspectRatio),c=l&&l.canvas,f=c&&c.height,m=c&&c.width;this.id=hCe(),this.ctx=l,this.canvas=c,this.width=m,this.height=f,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Y0e,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=function ECe(t,n){let e;return function(...i){return n?(clearTimeout(e),e=setTimeout(t,n,i)):t.apply(this,i),n}}(g=>this.update(g),a.resizeDelay||0),this._dataChanges=[],Bv[this.id]=this,l&&c?(js.listen(this,"complete",J8),js.listen(this,"progress",uwe),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:i},width:o,height:r,_aspectRatio:s}=this;return dt(e)?i&&s?s:r?o/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return ns}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():o8(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return qV(this.canvas,this.ctx),this}stop(){return js.stop(this),this}resize(e,i){js.running(this)?this._resizeBeforeDraw={width:e,height:i}:this._resize(e,i)}_resize(e,i){const o=this.options,a=this.platform.getMaximumSize(this.canvas,e,i,o.maintainAspectRatio&&this.aspectRatio),l=o.devicePixelRatio||this.platform.getDevicePixelRatio(),c=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,o8(this,l,!0)&&(this.notifyPlugins("resize",{size:a}),ln(o.onResize,[this,a],this),this.attached&&this._doResize(c)&&this.render())}ensureScalesHaveIDs(){Vt(this.options.scales||{},(o,r)=>{o.id=r})}buildOrUpdateScales(){const e=this.options,i=e.scales,o=this.scales,r=Object.keys(o).reduce((a,l)=>(a[l]=!1,a),{});let s=[];i&&(s=s.concat(Object.keys(i).map(a=>{const l=i[a],c=aD(a,l),f="r"===c,m="x"===c;return{options:l,dposition:f?"chartArea":m?"bottom":"left",dtype:f?"radialLinear":m?"category":"linear"}}))),Vt(s,a=>{const l=a.options,c=l.id,f=aD(c,l),m=Ge(l.type,a.dtype);(void 0===l.position||Z8(l.position,f)!==Z8(a.dposition))&&(l.position=a.dposition),r[c]=!0;let g=null;c in o&&o[c].type===m?g=o[c]:(g=new(ns.getScale(m))({id:c,type:m,ctx:this.ctx,chart:this}),o[g.id]=g),g.init(l,e)}),Vt(r,(a,l)=>{a||delete o[l]}),Vt(o,a=>{Yi.configure(this,a,a.options),Yi.addBox(this,a)})}_updateMetasets(){const e=this._metasets,i=this.data.datasets.length,o=e.length;if(e.sort((r,s)=>r.index-s.index),o>i){for(let r=i;ri.length&&delete this._stacks,e.forEach((o,r)=>{0===i.filter(s=>s===o._dataset).length&&this._destroyDatasetMeta(r)})}buildOrUpdateControllers(){const e=[],i=this.data.datasets;let o,r;for(this._removeUnreferencedMetasets(),o=0,r=i.length;o{this.getDatasetMeta(i).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const i=this.config;i.update();const o=this._options=i.createResolver(i.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!o.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0}))return;const s=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let a=0;for(let f=0,m=this.data.datasets.length;f{f.reset()}),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(Q8("z","_idx"));const{_active:l,_lastEvent:c}=this;c?this._eventHandler(c,!0):l.length&&this._updateHoverStyles(l,l,!0),this.render()}_updateScales(){Vt(this.scales,e=>{Yi.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,i=new Set(Object.keys(this._listeners)),o=new Set(e.events);(!EV(i,o)||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,i=this._getUniformDataChanges()||[];for(const{method:o,start:r,count:s}of i)hwe(e,r,"_removeElements"===o?-s:s)}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const i=this.data.datasets.length,o=s=>new Set(e.filter(a=>a[0]===s).map((a,l)=>l+","+a.splice(1).join(","))),r=o(0);for(let s=1;ss.split(",")).map(s=>({method:s[1],start:+s[2],count:+s[3]}))}_updateLayout(e){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;Yi.update(this,this.width,this.height,e);const i=this.chartArea,o=i.width<=0||i.height<=0;this._layers=[],Vt(this.boxes,r=>{o&&"chartArea"===r.position||(r.configure&&r.configure(),this._layers.push(...r._layers()))},this),this._layers.forEach((r,s)=>{r._idx=s}),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})){for(let i=0,o=this.data.datasets.length;i=0;--i)this._drawDataset(e[i]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const i=this.ctx,o={meta:e,index:e.index,cancelable:!0},r=p8(this,e);!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(r&&Dv(i,r),e.controller.draw(),r&&Mv(i),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(e){return Hs(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,i,o,r){const s=d0e.modes[i];return"function"==typeof s?s(this,e,o,r):[]}getDatasetMeta(e){const i=this.data.datasets[e],o=this._metasets;let r=o.filter(s=>s&&s._dataset===i).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:i&&i.order||0,index:e,_dataset:i,_parsed:[],_sorted:!1},o.push(r)),r}getContext(){return this.$context||(this.$context=Na(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const i=this.data.datasets[e];if(!i)return!1;const o=this.getDatasetMeta(e);return"boolean"==typeof o.hidden?!o.hidden:!i.hidden}setDatasetVisibility(e,i){this.getDatasetMeta(e).hidden=!i}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,i,o){const r=o?"show":"hide",s=this.getDatasetMeta(e),a=s.controller._resolveAnimations(void 0,r);cp(i)?(s.data[i].hidden=!o,this.update()):(this.setDatasetVisibility(e,o),a.update(s,{visible:o}),this.update(l=>l.datasetIndex===e?r:void 0))}hide(e,i){this._updateVisibility(e,i,!1)}show(e,i){this._updateVisibility(e,i,!0)}_destroyDatasetMeta(e){const i=this._metasets[e];i&&i.controller&&i.controller._destroy(),delete this._metasets[e]}_stop(){let e,i;for(this.stop(),js.remove(this),e=0,i=this.data.datasets.length;e{i.addEventListener(this,s,a),e[s]=a},r=(s,a,l)=>{s.offsetX=a,s.offsetY=l,this._eventHandler(s)};Vt(this.options.events,s=>o(s,r))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,i=this.platform,o=(c,f)=>{i.addEventListener(this,c,f),e[c]=f},r=(c,f)=>{e[c]&&(i.removeEventListener(this,c,f),delete e[c])},s=(c,f)=>{this.canvas&&this.resize(c,f)};let a;const l=()=>{r("attach",l),this.attached=!0,this.resize(),o("resize",s),o("detach",a)};a=()=>{this.attached=!1,r("resize",s),this._stop(),this._resize(0,0),o("attach",l)},i.isAttached(this.canvas)?l():a()}unbindEvents(){Vt(this._listeners,(e,i)=>{this.platform.removeEventListener(this,i,e)}),this._listeners={},Vt(this._responsiveListeners,(e,i)=>{this.platform.removeEventListener(this,i,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,i,o){const r=o?"set":"remove";let s,a,l,c;for("dataset"===i&&(s=this.getDatasetMeta(e[0].datasetIndex),s.controller["_"+r+"DatasetHoverStyle"]()),l=0,c=e.length;l{const l=this.getDatasetMeta(s);if(!l)throw new Error("No dataset found at index "+s);return{datasetIndex:s,element:l.data[a],index:a}});!yv(o,i)&&(this._active=o,this._lastEvent=null,this._updateHoverStyles(o,i))}notifyPlugins(e,i,o){return this._plugins.notify(this,e,i,o)}isPluginEnabled(e){return 1===this._plugins._cache.filter(i=>i.plugin.id===e).length}_updateHoverStyles(e,i,o){const r=this.options.hover,s=(c,f)=>c.filter(m=>!f.some(g=>m.datasetIndex===g.datasetIndex&&m.index===g.index)),a=s(i,e),l=o?e:s(e,i);a.length&&this.updateHoverStyle(a,r.mode,!1),l.length&&r.mode&&this.updateHoverStyle(l,r.mode,!0)}_eventHandler(e,i){const o={event:e,replay:i,cancelable:!0,inChartArea:this.isPointInArea(e)},r=a=>(a.options.events||this.options.events).includes(e.native.type);if(!1===this.notifyPlugins("beforeEvent",o,r))return;const s=this._handleEvent(e,i,o.inChartArea);return o.cancelable=!1,this.notifyPlugins("afterEvent",o,r),(s||o.changed)&&this.render(),this}_handleEvent(e,i,o){const{_active:r=[],options:s}=this,l=this._getActiveElements(e,r,o,i),c=function bCe(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}(e),f=function fwe(t,n,e,i){return e&&"mouseout"!==t.type?i?n:t:null}(e,this._lastEvent,o,c);o&&(this._lastEvent=null,ln(s.onHover,[e,l,this],this),c&&ln(s.onClick,[e,l,this],this));const m=!yv(l,r);return(m||i)&&(this._active=l,this._updateHoverStyles(l,r,i)),this._lastEvent=f,m}_getActiveElements(e,i,o,r){if("mouseout"===e.type)return[];if(!o)return i;const s=this.options.hover;return this.getElementsAtEventForMode(e,s.mode,s,r)}})();function nH(){return Vt(lD.instances,t=>t._plugins.invalidate())}function iH(t,n,e=n){t.lineCap=Ge(e.borderCapStyle,n.borderCapStyle),t.setLineDash(Ge(e.borderDash,n.borderDash)),t.lineDashOffset=Ge(e.borderDashOffset,n.borderDashOffset),t.lineJoin=Ge(e.borderJoinStyle,n.borderJoinStyle),t.lineWidth=Ge(e.borderWidth,n.borderWidth),t.strokeStyle=Ge(e.borderColor,n.borderColor)}function Cwe(t,n,e){t.lineTo(e.x,e.y)}function oH(t,n,e={}){const i=t.length,{start:o=0,end:r=i-1}=e,{start:s,end:a}=n,l=Math.max(o,s),c=Math.min(r,a);return{count:i,start:l,loop:n.loop,ilen:ca&&r>a)?i+c-l:c-l}}function xwe(t,n,e,i){const{points:o,options:r}=n,{count:s,start:a,loop:l,ilen:c}=oH(o,e,i),f=function wwe(t){return t.stepped?jCe:t.tension||"monotone"===t.cubicInterpolationMode?UCe:Cwe}(r);let _,w,k,{move:m=!0,reverse:g}=i||{};for(_=0;_<=c;++_)w=o[(a+(g?c-_:_))%s],!w.skip&&(m?(t.moveTo(w.x,w.y),m=!1):f(t,k,w,g,r.stepped),k=w);return l&&(w=o[(a+(g?c:0))%s],f(t,k,w,g,r.stepped)),!!l}function Swe(t,n,e,i){const o=n.points,{count:r,start:s,ilen:a}=oH(o,e,i),{move:l=!0,reverse:c}=i||{};let g,_,w,k,T,I,f=0,m=0;const R=Y=>(s+(c?a-Y:Y))%r,W=()=>{k!==T&&(t.lineTo(f,T),t.lineTo(f,k),t.lineTo(f,I))};for(l&&(_=o[R(0)],t.moveTo(_.x,_.y)),g=0;g<=a;++g){if(_=o[R(g)],_.skip)continue;const Y=_.x,K=_.y,ee=0|Y;ee===w?(KT&&(T=K),f=(m*f+Y)/++m):(W(),t.lineTo(Y,K),w=ee,m=0,k=T=K),I=K}W()}function cD(t){const n=t.options;return t._decimated||t._loop||n.tension||"monotone"===n.cubicInterpolationMode||n.stepped||n.borderDash&&n.borderDash.length?xwe:Swe}const Twe="function"==typeof Path2D;let kp=(()=>class t extends Us{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:e=>"borderDash"!==e&&"fill"!==e};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,i){const o=this.options;!o.tension&&"monotone"!==o.cubicInterpolationMode||o.stepped||this._pointsUpdated||(h1e(this._points,o,e,o.spanGaps?this._loop:this._fullLoop,i),this._pointsUpdated=!0)}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=function M1e(t,n){const e=t.points,i=t.options.spanGaps,o=e.length;if(!o)return[];const r=!!t._loop,{start:s,end:a}=function k1e(t,n,e,i){let o=0,r=n-1;if(e&&!i)for(;oo&&t[r%n].skip;)r--;return r%=n,{start:o,end:r}}(e,o,r,i);return function h8(t,n,e,i){return i&&i.setContext&&e?function T1e(t,n,e,i){const o=t._chart.getContext(),r=f8(t.options),{_datasetIndex:s,options:{spanGaps:a}}=t,l=e.length,c=[];let f=r,m=n[0].start,g=m;function _(w,k,T,I){const R=a?-1:1;if(w!==k){for(w+=l;e[w%l].skip;)w-=R;for(;e[k%l].skip;)k+=R;w%l!==k%l&&(c.push({start:w%l,end:k%l,loop:T,style:I}),f=I,m=k%l)}}for(const w of n){m=a?m:w.start;let T,k=e[m%l];for(g=m+1;g<=w.end;g++){const I=e[g%l];T=f8(i.setContext(Na(o,{type:"segment",p0:k,p1:I,p0DataIndex:(g-1)%l,p1DataIndex:g%l,datasetIndex:s}))),E1e(T,f)&&_(m,g-1,w.loop,f),k=I,f=T}mclass t extends Us{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(e){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,e&&Object.assign(this,e)}inRange(e,i,o){const r=this.options,{x:s,y:a}=this.getProps(["x","y"],o);return Math.pow(e-s,2)+Math.pow(i-a,2)t;n--){const i=e[n];if(!isNaN(i.x)&&!isNaN(i.y))break}return n}function pH(t,n,e,i){return t&&n?i(t[e],n[e]):t?t[e]:n?n[e]:0}function mH(t,n){let e=[],i=!1;return vn(t)?(i=!0,e=t):e=function Ywe(t,n){const{x:e=null,y:i=null}=t||{},o=n.points,r=[];return n.segments.forEach(({start:s,end:a})=>{a=Hv(s,a,o);const l=o[s],c=o[a];null!==i?(r.push({x:l.x,y:i}),r.push({x:c.x,y:i})):null!==e&&(r.push({x:e,y:l.y}),r.push({x:e,y:c.y}))}),r}(t,n),e.length?new kp({points:e,options:{tension:0},_loop:i,_fullLoop:i}):null}function gH(t){return t&&!1!==t.fill}function Xwe(t,n,e){let o=t[n].fill;const r=[n];let s;if(!e)return o;for(;!1!==o&&-1===r.indexOf(o);){if(!jn(o))return o;if(s=t[o],!s)return!1;if(s.visible)return o;r.push(o),o=s.fill}return!1}function Zwe(t,n,e){const i=function txe(t){const n=t.options,e=n.fill;let i=Ge(e&&e.target,e);return void 0===i&&(i=!!n.backgroundColor),!1!==i&&null!==i&&(!0===i?"origin":i)}(t);if(ft(i))return!isNaN(i.value)&&i;let o=parseFloat(i);return jn(o)&&Math.floor(o)===o?function Qwe(t,n,e,i){return("-"===t||"+"===t)&&(e=n+e),!(e===n||e<0||e>=i)&&e}(i[0],n,o,e):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function oxe(t,n,e){const i=[];for(let o=0;o=0;--s){const a=o[s].$filler;a&&(a.line.updateControlPoints(r,a.axis),i&&a.fill&&pD(t.ctx,a,r))}},beforeDatasetsDraw(t,n,e){if("beforeDatasetsDraw"!==e.drawTime)return;const i=t.getSortedVisibleDatasetMetas();for(let o=i.length-1;o>=0;--o){const r=i[o].$filler;gH(r)&&pD(t.ctx,r,t.chartArea)}},beforeDatasetDraw(t,n,e){const i=n.meta.$filler;!gH(i)||"beforeDatasetDraw"!==e.drawTime||pD(t.ctx,i,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};function OH(t){const n=this.getLabels();return t>=0&&tclass t extends xc{static id="category";static defaults={ticks:{callback:OH}};constructor(e){super(e),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(e){const i=this._addedLabels;if(i.length){const o=this.getLabels();for(const{index:r,label:s}of i)o[r]===s&&o.splice(r,1);this._addedLabels=[]}super.init(e)}parse(e,i){if(dt(e))return null;const o=this.getLabels();return((t,n)=>null===t?null:Si(Math.round(t),0,n))(i=isFinite(i)&&o[i]===e?i:function Oxe(t,n,e,i){const o=t.indexOf(n);return-1===o?((t,n,e,i)=>("string"==typeof n?(e=t.push(n)-1,i.unshift({index:e,label:n})):isNaN(n)&&(e=null),e))(t,n,e,i):o!==t.lastIndexOf(n)?e:o}(o,e,Ge(i,e),this._addedLabels),o.length-1)}determineDataLimits(){const{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:o,max:r}=this.getMinMax(!0);"ticks"===this.options.bounds&&(e||(o=0),i||(r=this.getLabels().length-1)),this.min=o,this.max=r}buildTicks(){const e=this.min,i=this.max,o=this.options.offset,r=[];let s=this.getLabels();s=0===e&&i===s.length-1?s:s.slice(e,i+1),this._valueRange=Math.max(s.length-(o?0:1),1),this._startValue=this.min-(o?.5:0);for(let a=e;a<=i;a++)r.push({value:a});return r}getLabelForValue(e){return OH.call(this,e)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(e){return"number"!=typeof e&&(e=this.parse(e)),null===e?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getPixelForTick(e){const i=this.ticks;return e<0||e>i.length-1?null:this.getPixelForValue(i[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}})();function RH(t,n,{horizontal:e,minRotation:i}){const o=Tr(i),r=(e?Math.sin(o):Math.cos(o))||.001;return Math.min(n/r,.75*n*(""+t).length)}class zv extends xc{constructor(n){super(n),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(n,e){return dt(n)||("number"==typeof n||n instanceof Number)&&!isFinite(+n)?null:+n}handleTickRangeOptions(){const{beginAtZero:n}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:o,max:r}=this;const s=l=>o=e?o:l,a=l=>r=i?r:l;if(n){const l=ts(o),c=ts(r);l<0&&c<0?a(0):l>0&&c>0&&s(0)}if(o===r){let l=0===r?1:Math.abs(.05*r);a(r+l),n||s(o-l)}this.min=o,this.max=r}getTickLimit(){const n=this.options.ticks;let o,{maxTicksLimit:e,stepSize:i}=n;return i?(o=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,o>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${o} ticks. Limiting to 1000.`),o=1e3)):(o=this.computeTickLimit(),e=e||11),e&&(o=Math.min(e,o)),o}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const n=this.options,e=n.ticks;let i=this.getTickLimit();i=Math.max(2,i);const s=function Rxe(t,n){const e=[],{bounds:o,step:r,min:s,max:a,precision:l,count:c,maxTicks:f,maxDigits:m,includeBounds:g}=t,_=r||1,w=f-1,{min:k,max:T}=n,I=!dt(s),R=!dt(a),W=!dt(c),Y=(T-k)/(m+1);let ee,ie,P,A,K=IV((T-k)/w/_)*_;if(K<1e-14&&!I&&!R)return[{value:k},{value:T}];A=Math.ceil(T/K)-Math.floor(k/K),A>w&&(K=IV(A*K/w/_)*_),dt(l)||(ee=Math.pow(10,l),K=Math.ceil(K*ee)/ee),"ticks"===o?(ie=Math.floor(k/K)*K,P=Math.ceil(T/K)*K):(ie=k,P=T),I&&R&&r&&function xCe(t,n){const e=Math.round(t);return e-n<=t&&e+n>=t}((a-s)/r,K/1e3)?(A=Math.round(Math.min((a-s)/K,f)),K=(a-s)/A,ie=s,P=a):W?(ie=I?s:ie,P=R?a:P,A=c-1,K=(P-ie)/A):(A=(P-ie)/K,A=dp(A,Math.round(A),K/1e3)?Math.round(A):Math.ceil(A));const L=Math.max(AV(K),AV(ie));ee=Math.pow(10,dt(l)?L:l),ie=Math.round(ie*ee)/ee,P=Math.round(P*ee)/ee;let $=0;for(I&&(g&&ie!==s?(e.push({value:s}),iea)break;e.push({value:H})}return R&&g&&P!==a?e.length&&dp(e[e.length-1].value,a,RH(a,Y,t))?e[e.length-1].value=a:e.push({value:a}):(!R||P===a)&&e.push({value:P}),e}({maxTicks:i,bounds:n.bounds,min:n.min,max:n.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===n.bounds&&function OV(t,n,e){let i,o,r;for(i=0,o=t.length;i{class t{static{this.topInternalMargin=5}constructor(e){this.height=100,this.animated=!1,this.min=void 0,this.max=void 0,this.differ=e.find([]).create(null)}ngAfterViewInit(){this.chart=new lD(this.chartElement.nativeElement,{type:"line",data:{labels:Array.from(Array(this.data.length).keys()),datasets:[{data:this.data,backgroundColor:"rgba(10, 15, 22, 0.4)",borderColor:"rgba(10, 15, 22, 0.4)",borderWidth:1}]},options:{maintainAspectRatio:!1,events:[],plugins:{legend:{display:!1},tooltip:{enabled:!1}},scales:{y:{display:!1,suggestedMin:0},x:{display:!1}},elements:{point:{radius:0}},layout:{padding:{left:0,right:0,top:t.topInternalMargin,bottom:0}},animation:!!this.animated&&void 0}}),void 0!==this.min&&void 0!==this.max&&(this.updateMinAndMax(),this.chart.update())}ngDoCheck(){this.differ.diff(this.data)&&this.chart&&(void 0!==this.min&&void 0!==this.max&&this.updateMinAndMax(),this.animated?this.chart.update():this.chart.update("none"))}ngOnDestroy(){this.chart&&this.chart.destroy()}updateMinAndMax(){this.chart.options.scales.y.min=this.min,this.chart.options.scales.y.max=this.max}static{this.\u0275fac=function(i){return new(i||t)(O(h_))}}static{this.\u0275cmp=re({type:t,selectors:[["app-line-chart"]],viewQuery:function(i,o){if(1&i&&ot(iSe,5),2&i){let r;he(r=fe())&&(o.chartElement=r.first)}},inputs:{data:"data",height:"height",animated:"animated",min:"min",max:"max"},standalone:!1,decls:3,vars:2,consts:[["chart",""],[1,"chart-container"]],template:function(i,o){1&i&&(h(0,"div",1),B(1,"canvas",null,0),u()),2&i&&no("height: "+o.height+"px;")},styles:[".chart-container[_ngcontent-%COMP%]{position:relative;width:100%;overflow:hidden;border-radius:10px}"]})}}return t})();const WH=()=>({showValue:!0}),GH=()=>({showUnit:!0});function oSe(t,n){if(1&t&&(h(0,"div",0),B(1,"app-line-chart",1),h(2,"div",2)(3,"span",3),p(4),b(5,"translate"),u(),h(6,"span",4)(7,"span",5),p(8),b(9,"autoScale"),u(),h(10,"span",6),p(11),b(12,"autoScale"),u()()()()),2&t){const e=v();d(),C("data",e.trafficData.sentHistory),d(3),M(y(5,4,"common.uploaded")),d(4),M(pe(9,6,e.trafficData.totalSent,Ct(12,WH))),d(3),M(pe(12,9,e.trafficData.totalSent,Ct(13,GH)))}}function rSe(t,n){if(1&t&&(h(0,"div",0),B(1,"app-line-chart",1),h(2,"div",2)(3,"span",3),p(4),b(5,"translate"),u(),h(6,"span",4)(7,"span",5),p(8),b(9,"autoScale"),u(),h(10,"span",6),p(11),b(12,"autoScale"),u()()()()),2&t){const e=v();d(),C("data",e.trafficData.receivedHistory),d(3),M(y(5,4,"common.downloaded")),d(4),M(pe(9,6,e.trafficData.totalReceived,Ct(12,WH))),d(3),M(pe(12,9,e.trafficData.totalReceived,Ct(13,GH)))}}let sSe=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=re({type:t,selectors:[["app-charts"]],inputs:{trafficData:"trafficData"},standalone:!1,decls:2,vars:2,consts:[[1,"small-rounded-elevated-box","chart"],[3,"data"],[1,"info"],[1,"text"],[1,"rate"],[1,"value"],[1,"unit"]],template:function(i,o){1&i&&(x(0,oSe,13,14,"div",0),x(1,rSe,13,14,"div",0)),2&i&&(S(o.trafficData?0:-1),d(),S(o.trafficData?1:-1))},dependencies:[Gv,xe,rp],styles:[".chart[_ngcontent-%COMP%]{position:relative;margin-bottom:20px}.chart[_ngcontent-%COMP%]:last-child{margin-bottom:10px}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%]{position:absolute;bottom:0;left:0;display:flex;justify-content:space-between;align-items:flex-end;padding:10px;width:100%}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#f8f9f9}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.text[_ngcontent-%COMP%]{font-size:.8rem;text-transform:uppercase;font-weight:700}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.rate[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:700}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.rate[_ngcontent-%COMP%] .unit[_ngcontent-%COMP%]{font-size:.8rem;padding-left:5px}"]})}}return t})();function aSe(t,n){1&t&&(h(0,"div",4)(1,"mat-icon",2),p(2,"settings"),u(),p(3),b(4,"translate"),u()),2&t&&(d(),C("inline",!0),d(2),E("",y(4,2,"routes.details.specific-fields-titles.app")," "))}function lSe(t,n){1&t&&(h(0,"div",4)(1,"mat-icon",2),p(2,"swap_horiz"),u(),p(3),b(4,"translate"),u()),2&t&&(d(),C("inline",!0),d(2),E("",y(4,2,"routes.details.specific-fields-titles.forward")," "))}function cSe(t,n){1&t&&(h(0,"div",4)(1,"mat-icon",2),p(2,"arrow_forward"),u(),p(3),b(4,"translate"),u()),2&t&&(d(),C("inline",!0),d(2),E("",y(4,2,"routes.details.specific-fields-titles.intermediary-forward")," "))}function dSe(t,n){if(1&t&&(h(0,"div")(1,"div",3)(2,"span"),p(3),b(4,"translate"),u(),p(5),u(),h(6,"div",3)(7,"span"),p(8),b(9,"translate"),u(),p(10),u()()),2&t){const e=v(2);d(3),M(y(4,5,"routes.details.specific-fields.route-id")),d(2),E(" ",e.routeRule.forwardFields?e.routeRule.forwardFields.nextRid:e.routeRule.intermediaryForwardFields.nextRid," "),d(3),M(y(9,7,"routes.details.specific-fields.transport-id")),d(2),gt(" ",e.routeRule.forwardFields?e.routeRule.forwardFields.nextTid:e.routeRule.intermediaryForwardFields.nextTid," ",e.getLabel(e.routeRule.forwardFields?e.routeRule.forwardFields.nextTid:e.routeRule.intermediaryForwardFields.nextTid)," ")}}function uSe(t,n){if(1&t&&(h(0,"div")(1,"div",3)(2,"span"),p(3),b(4,"translate"),u(),p(5),u(),h(6,"div",3)(7,"span"),p(8),b(9,"translate"),u(),p(10),u(),h(11,"div",3)(12,"span"),p(13),b(14,"translate"),u(),p(15),u(),h(16,"div",3)(17,"span"),p(18),b(19,"translate"),u(),p(20),u()()),2&t){const e=v(2);d(3),M(y(4,10,"routes.details.specific-fields.destination-pk")),d(2),gt(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.dstPk:e.routeRule.forwardFields.routeDescriptor.dstPk," ",e.getLabel(e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.dstPk:e.routeRule.forwardFields.routeDescriptor.dstPk)," "),d(3),M(y(9,12,"routes.details.specific-fields.source-pk")),d(2),gt(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.srcPk:e.routeRule.forwardFields.routeDescriptor.srcPk," ",e.getLabel(e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.srcPk:e.routeRule.forwardFields.routeDescriptor.srcPk)," "),d(3),M(y(14,14,"routes.details.specific-fields.destination-port")),d(2),E(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.dstPort:e.routeRule.forwardFields.routeDescriptor.dstPort," "),d(3),M(y(19,16,"routes.details.specific-fields.source-port")),d(2),E(" ",e.routeRule.appFields?e.routeRule.appFields.routeDescriptor.srcPort:e.routeRule.forwardFields.routeDescriptor.srcPort," ")}}function hSe(t,n){if(1&t&&(h(0,"div")(1,"div",4)(2,"mat-icon",2),p(3,"list"),u(),p(4),b(5,"translate"),u(),h(6,"div",3)(7,"span"),p(8),b(9,"translate"),u(),p(10),u(),h(11,"div",3)(12,"span"),p(13),b(14,"translate"),u(),p(15),u(),h(16,"div",3)(17,"span"),p(18),b(19,"translate"),u(),p(20),u(),x(21,aSe,5,4,"div",4),x(22,lSe,5,4,"div",4),x(23,cSe,5,4,"div",4),x(24,dSe,11,9,"div"),x(25,uSe,21,18,"div"),u()),2&t){const e=v();d(2),C("inline",!0),d(2),E("",y(5,13,"routes.details.summary.title")," "),d(4),M(y(9,15,"routes.details.summary.keep-alive")),d(2),E(" ",e.routeRule.ruleSummary.keepAlive," "),d(3),M(y(14,17,"routes.details.summary.type")),d(2),E(" ",e.getRuleTypeName(e.routeRule.ruleSummary.ruleType)," "),d(3),M(y(19,19,"routes.details.summary.key-route-id")),d(2),E(" ",e.routeRule.ruleSummary.keyRouteId," "),d(),S(e.routeRule.appFields?21:-1),d(),S(e.routeRule.forwardFields?22:-1),d(),S(e.routeRule.intermediaryForwardFields?23:-1),d(),S(e.routeRule.forwardFields||e.routeRule.intermediaryForwardFields?24:-1),d(),S(e.routeRule.appFields&&e.routeRule.appFields.routeDescriptor||e.routeRule.forwardFields&&e.routeRule.forwardFields.routeDescriptor?25:-1)}}let fSe=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.largeModalWidth,e.open(t,o)}constructor(e,i,o){this.dialogRef=i,this.storageService=o,this.ruleTypes=new Map([[0,"App"],[1,"Forward"],[2,"Intermediary forward"]]),this.routeRule=e}getRuleTypeName(e){return this.ruleTypes.has(e)?this.ruleTypes.get(e):e.toString()}closePopup(){this.dialogRef.close()}getLabel(e){const i=this.storageService.getLabelInfo(e);return i?" ("+i.label+")":""}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt),O(ti))}}static{this.\u0275cmp=re({type:t,selectors:[["app-route-details"]],standalone:!1,decls:19,vars:17,consts:[[1,"info-dialog",3,"headline","dialog"],[1,"title","mt-0"],[3,"inline"],[1,"item"],[1,"title"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),b(1,"translate"),h(2,"div")(3,"div",1)(4,"mat-icon",2),p(5,"list"),u(),p(6),b(7,"translate"),u(),h(8,"div",3)(9,"span"),p(10),b(11,"translate"),u(),p(12),u(),h(13,"div",3)(14,"span"),p(15),b(16,"translate"),u(),p(17),u(),x(18,hSe,26,21,"div"),u()()),2&i&&(C("headline",y(1,9,"routes.details.title"))("dialog",o.dialogRef),d(4),C("inline",!0),d(2),E("",y(7,11,"routes.details.basic.title")," "),d(4),M(y(11,13,"routes.details.basic.key")),d(2),E(" ",o.routeRule.key," "),d(3),M(y(16,15,"routes.details.basic.rule")),d(2),E(" ",o.routeRule.rule," "),d(),S(o.routeRule.ruleSummary?18:-1))},dependencies:[We,gn,xe],encapsulation:2})}}return t})();const pSe=t=>({text:t}),mSe=()=>({"tooltip-word-break":!0});function gSe(t,n){if(1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t){const e=v();d(),E(" ",y(2,1,e.labelComponents.prefix)," ")}}function _Se(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v();d(),E(" ",e.labelComponents.prefixSeparator," ")}}function bSe(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v();d(),E(" ",e.labelComponents.label," ")}}function vSe(t,n){if(1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t){const e=v();d(),E(" ",y(2,1,e.labelComponents.translatableLabel)," ")}}class ySe{constructor(){this.prefix="",this.prefixSeparator="",this.label="",this.translatableLabel=""}}let kc=(()=>{class t{set id(e){this.idInternal=e,this.labelComponents=t.getLabelComponents(this.storageService,this.id)}get id(){return this.idInternal?this.idInternal:""}static getLabelComponents(e,i){let o;o=!!e.getSavedVisibleLocalNodes().has(i);const r=new ySe;return r.labelInfo=e.getLabelInfo(i),r.labelInfo&&r.labelInfo.label?(o&&(r.prefix="labeled-element.local-element",r.prefixSeparator=" - "),r.label=r.labelInfo.label):e.getSavedVisibleLocalNodes().has(i)?r.prefix="labeled-element.unnamed-local-visor":r.translatableLabel="labeled-element.unnamed-element",r}static getCompleteLabel(e,i,o){const r=t.getLabelComponents(e,o);return(r.prefix?i.instant(r.prefix):"")+r.prefixSeparator+r.label+(r.translatableLabel?i.instant(r.translatableLabel):"")}constructor(e,i,o,r,s){this.dialog=e,this.storageService=i,this.clipboardService=o,this.snackbarService=r,this.router=s,this.short=!1,this.shortTextLength=5,this.elementType=ro.Node,this.labelEdited=new we}ngOnDestroy(){this.labelEdited.complete()}processClick(){const e=[{icon:"filter_none",label:"labeled-element.copy"},{icon:"edit",label:"labeled-element.edit-label"}];this.labelComponents.labelInfo&&e.push({icon:"close",label:"labeled-element.remove-label"}),e.push({icon:"list",label:"labeled-element.view-all-labels"}),ao.openDialog(this.dialog,e,"common.options").afterClosed().subscribe(i=>{if(1===i)this.clipboardService.copy(this.id)&&this.snackbarService.showDone("copy.copied");else if(i>2)if(3===i&&this.labelComponents.labelInfo){const o=Rt.createConfirmationDialog(this.dialog,"labeled-element.remove-label-confirmation");o.componentInstance.operationAccepted.subscribe(()=>{o.componentInstance.closeModal(),this.storageService.saveLabel(this.id,null,this.elementType),this.snackbarService.showDone("edit-label.label-removed-warning"),this.labelEdited.emit()})}else this.router.navigate(["/settings","labels"]);else if(2===i){let o=this.labelComponents.labelInfo;o||(o={id:this.id,label:"",identifiedElementType:this.elementType}),wk.openDialog(this.dialog,o).afterClosed().subscribe(r=>{r&&this.labelEdited.emit()})}})}static{this.\u0275fac=function(i){return new(i||t)(O(Ot),O(ti),O(np),O(ct),O(vt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-labeled-element-text"]],inputs:{id:"id",short:"short",shortTextLength:"shortTextLength",elementType:"elementType"},outputs:{labelEdited:"labelEdited"},standalone:!1,decls:12,vars:17,consts:[[1,"wrapper","highlight-internal-icon",3,"click","matTooltip","matTooltipClass"],[1,"label"],[3,"short","showTooltip","shortTextLength","text"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"div",0),b(1,"translate"),F("click",function(s){return s.stopPropagation(),s.preventDefault(),o.processClick()}),h(2,"span",1),x(3,gSe,3,3,"span"),x(4,_Se,2,1,"span"),x(5,bSe,2,1,"span"),x(6,vSe,3,3,"span"),u(),B(7,"br")(8,"app-truncated-text",2),p(9," \xa0"),h(10,"mat-icon",3),p(11,"settings"),u()()),2&i&&(C("matTooltip",pe(1,11,o.short?"labeled-element.tooltip-with-text":"labeled-element.tooltip",se(14,pSe,o.id)))("matTooltipClass",Ct(16,mSe)),d(3),S(o.labelComponents&&o.labelComponents.prefix?3:-1),d(),S(o.labelComponents&&o.labelComponents.prefixSeparator?4:-1),d(),S(o.labelComponents&&o.labelComponents.label?5:-1),d(),S(o.labelComponents&&o.labelComponents.translatableLabel?6:-1),d(2),C("short",o.short)("showTooltip",!1)("shortTextLength",o.shortTextLength)("text",o.id),d(2),C("inline",!0))},dependencies:[We,Kt,aV,xe],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media(max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.wrapper[_ngcontent-%COMP%]{display:inline}.wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:.8rem;-webkit-user-select:none;user-select:none}.label[_ngcontent-%COMP%]{opacity:.7;font-size:.8rem}']})}}return t})();const CSe=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),wSe=t=>({"d-lg-none d-xl-table":t}),xSe=t=>({"d-lg-table d-xl-none":t});function SSe(t,n){1&t&&(h(0,"span",3),p(1),b(2,"translate"),h(3,"mat-icon",13),b(4,"translate"),p(5,"help"),u()()),2&t&&(d(),E(" ",y(2,3,"routes.title")," "),d(2),C("inline",!0)("matTooltip",y(4,5,"routes.info")))}function kSe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().$implicit.translatableValue)," ")}function DSe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.value," ")}function MSe(t,n){if(1&t&&(h(0,"div",15)(1,"span"),p(2),b(3,"translate"),u(),x(4,kSe,2,3),x(5,DSe,1,1),u()),2&t){const e=n.$implicit;d(2),E("",y(3,3,e.filterName),": "),d(2),S(e.translatableValue?4:-1),d(),S(e.value?5:-1)}}function TSe(t,n){if(1&t){const e=oe();h(0,"div",14),F("click",function(){return j(e),U(v().dataFilterer.removeFilters())}),ve(1,MSe,6,5,"div",15,Fe),h(3,"div",16),p(4),b(5,"translate"),u()()}if(2&t){const e=v();d(),ye(e.dataFilterer.currentFiltersTexts),d(3),M(y(5,1,"filters.press-to-remove"))}}function ESe(t,n){if(1&t){const e=oe();h(0,"mat-icon",17),b(1,"translate"),F("click",function(){return j(e),U(v().dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",y(1,2,"filters.filter-action"))}function PSe(t,n){1&t&&(h(0,"mat-icon",8),p(1,"more_horiz"),u()),2&t&&(v(),C("matMenuTriggerFor",Hn(9)))}function ISe(t,n){if(1&t&&(h(0,"mat-icon",21),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function OSe(t,n){if(1&t&&(h(0,"mat-icon",21),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function ASe(t,n){if(1&t&&(h(0,"mat-icon",21),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function RSe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.appFields.routeDescriptor.srcPort," ")}function FSe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.forwardFields.routeDescriptor.srcPort," ")}function NSe(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function LSe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.appFields.routeDescriptor.dstPort," ")}function BSe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.forwardFields.routeDescriptor.dstPort," ")}function VSe(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function HSe(t,n){if(1&t){const e=oe();h(0,"app-labeled-element-text",33),F("labelEdited",function(){return j(e),U(v(3).refreshData())}),u()}if(2&t){const e=v().$implicit,i=v(2);C("id",Qt(e.dst))("elementType",i.labeledElementTypes.Node)}}function jSe(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function USe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.forwardFields.nextRid," ")}function zSe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.intermediaryForwardFields.nextRid," ")}function $Se(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function WSe(t,n){if(1&t){const e=oe();h(0,"app-labeled-element-text",33),F("labelEdited",function(){return j(e),U(v(3).refreshData())}),u()}if(2&t){const e=v().$implicit,i=v(2);C("id",Qt(e.forwardFields.nextTid))("elementType",i.labeledElementTypes.Transport)}}function GSe(t,n){if(1&t){const e=oe();h(0,"app-labeled-element-text",33),F("labelEdited",function(){return j(e),U(v(3).refreshData())}),u()}if(2&t){const e=v().$implicit,i=v(2);C("id",Qt(e.intermediaryForwardFields.nextTid))("elementType",i.labeledElementTypes.Transport)}}function qSe(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function KSe(t,n){1&t&&(p(0),b(1,"number")),2&t&&E(" ",pe(1,1,v().$implicit.ruleSummary.keepAlive/1e9,"1.0-1"),"s ")}function YSe(t,n){1&t&&(h(0,"span",16),p(1,"-"),u())}function XSe(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td",28)(2,"mat-checkbox",29),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(3,"td",30),p(4),u(),h(5,"td"),p(6),u(),h(7,"td",30),x(8,RSe,1,1)(9,FSe,1,1)(10,NSe,2,0,"span",16),u(),h(11,"td",30),x(12,LSe,1,1)(13,BSe,1,1)(14,VSe,2,0,"span",16),u(),h(15,"td"),x(16,HSe,1,3,"app-labeled-element-text",31)(17,jSe,2,0,"span",16),u(),h(18,"td",30),x(19,USe,1,1)(20,zSe,1,1)(21,$Se,2,0,"span",16),u(),h(22,"td"),x(23,WSe,1,3,"app-labeled-element-text",31)(24,GSe,1,3,"app-labeled-element-text",31)(25,qSe,2,0,"span",16),u(),h(26,"td",30),x(27,KSe,2,4)(28,YSe,2,0,"span",16),u(),h(29,"td",22)(30,"button",32),b(31,"translate"),F("click",function(){const o=j(e).$implicit;return U(v(2).details(o))}),h(32,"mat-icon",21),p(33,"visibility"),u()(),h(34,"button",32),b(35,"translate"),F("click",function(){const o=j(e).$implicit;return U(v(2).delete(o.key))}),h(36,"mat-icon",21),p(37,"close"),u()()()()}if(2&t){const e=n.$implicit,i=v(2);d(2),C("checked",i.selections.get(e.key)),d(2),M(e.key),d(2),M(i.getTypeName(e.type)),d(2),S(null!=e.appFields&&e.appFields.routeDescriptor?8:null!=e.forwardFields&&e.forwardFields.routeDescriptor?9:10),d(4),S(null!=e.appFields&&e.appFields.routeDescriptor?12:null!=e.forwardFields&&e.forwardFields.routeDescriptor?13:14),d(4),S(e.appFields||e.forwardFields?16:17),d(3),S(null!=e.forwardFields&&e.forwardFields.nextRid||0===(null==e.forwardFields?null:e.forwardFields.nextRid)?19:null!=e.intermediaryForwardFields&&e.intermediaryForwardFields.nextRid||0===(null==e.intermediaryForwardFields?null:e.intermediaryForwardFields.nextRid)?20:21),d(4),S(null!=e.forwardFields&&e.forwardFields.nextTid?23:null!=e.intermediaryForwardFields&&e.intermediaryForwardFields.nextTid?24:25),d(4),S(null!=e.ruleSummary&&e.ruleSummary.keepAlive?27:28),d(3),C("matTooltip",y(31,13,"routes.details.title")),d(2),C("inline",!0),d(2),C("matTooltip",y(35,15,"routes.delete")),d(2),C("inline",!0)}}function ZSe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.label")," ")}function QSe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.inverted-order")," ")}function JSe(t,n){if(1&t){const e=oe();h(0,"div",35)(1,"span",2),p(2),b(3,"translate"),u(),p(4),u(),h(5,"div",35)(6,"span",2),p(7),b(8,"translate"),u(),p(9),u(),h(10,"div",35)(11,"span",2),p(12),b(13,"translate"),u(),p(14,": "),h(15,"app-labeled-element-text",33),F("labelEdited",function(){return j(e),U(v(3).refreshData())}),u()()}if(2&t){const e=v().$implicit,i=v(2);d(2),M(y(3,8,"routes.local-port")),d(2),E(": ",null==((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor))?null:((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor)).srcPort," "),d(3),M(y(8,10,"routes.remote-port")),d(2),E(": ",null==((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor))?null:((null==e.appFields?null:e.appFields.routeDescriptor)||(null==e.forwardFields?null:e.forwardFields.routeDescriptor)).dstPort," "),d(3),M(y(13,12,"routes.remote-pk")),d(3),C("id",Qt(e.dst))("elementType",i.labeledElementTypes.Node)}}function eke(t,n){if(1&t){const e=oe();h(0,"div",35)(1,"span",2),p(2),b(3,"translate"),u(),p(4),u(),h(5,"div",35)(6,"span",2),p(7),b(8,"translate"),u(),p(9,": "),h(10,"app-labeled-element-text",33),F("labelEdited",function(){return j(e),U(v(3).refreshData())}),u()()}if(2&t){const e=v().$implicit,i=v(2);d(2),M(y(3,6,"routes.next-rid")),d(2),E(": ",(null==e.forwardFields?null:e.forwardFields.nextRid)??(null==e.intermediaryForwardFields?null:e.intermediaryForwardFields.nextRid)," "),d(3),M(y(8,8,"routes.next-tp")),d(3),C("id",Qt((null==e.forwardFields?null:e.forwardFields.nextTid)||(null==e.intermediaryForwardFields?null:e.intermediaryForwardFields.nextTid)))("elementType",i.labeledElementTypes.Transport)}}function tke(t,n){if(1&t&&(h(0,"div",35)(1,"span",2),p(2),b(3,"translate"),u(),p(4),b(5,"number"),u()),2&t){const e=v().$implicit;d(2),M(y(3,2,"routes.keep-alive")),d(2),E(": ",pe(5,4,e.ruleSummary.keepAlive/1e9,"1.0-1"),"s ")}}function nke(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td")(2,"div",25)(3,"div",34)(4,"mat-checkbox",29),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(5,"div",26)(6,"div",35)(7,"span",2),p(8),b(9,"translate"),u(),p(10),u(),h(11,"div",35)(12,"span",2),p(13),b(14,"translate"),u(),p(15),u(),x(16,JSe,16,14),x(17,eke,11,10),x(18,tke,6,7,"div",35),u(),B(19,"div",36),h(20,"div",27)(21,"button",37),b(22,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(2);return o.stopPropagation(),U(s.showOptionsDialog(r))}),h(23,"mat-icon"),p(24),u()()()()()()}if(2&t){const e=n.$implicit,i=v(2);d(4),C("checked",i.selections.get(e.key)),d(4),M(y(9,10,"routes.key")),d(2),E(": ",e.key," "),d(3),M(y(14,12,"routes.type")),d(2),E(": ",i.getTypeName(e.type)," "),d(),S(null!=e.appFields&&e.appFields.routeDescriptor||null!=e.forwardFields&&e.forwardFields.routeDescriptor?16:-1),d(),S(null!=e.forwardFields&&e.forwardFields.nextTid||null!=e.intermediaryForwardFields&&e.intermediaryForwardFields.nextTid?17:-1),d(),S(null!=e.ruleSummary&&e.ruleSummary.keepAlive?18:-1),d(3),C("matTooltip",y(22,14,"common.options")),d(3),M("add")}}function ike(t,n){if(1&t){const e=oe();h(0,"div",12)(1,"div",18)(2,"table",19)(3,"tr"),B(4,"th"),h(5,"th",20),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.keySortData))}),p(6),b(7,"translate"),x(8,ISe,2,2,"mat-icon",21),u(),h(9,"th",20),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.typeSortData))}),p(10),b(11,"translate"),x(12,OSe,2,2,"mat-icon",21),u(),h(13,"th"),p(14),b(15,"translate"),u(),h(16,"th"),p(17),b(18,"translate"),u(),h(19,"th",20),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.destinationSortData))}),p(20),b(21,"translate"),x(22,ASe,2,2,"mat-icon",21),u(),h(23,"th"),p(24),b(25,"translate"),u(),h(26,"th"),p(27),b(28,"translate"),u(),h(29,"th"),p(30),b(31,"translate"),u(),B(32,"th",22),u(),ve(33,XSe,38,17,"tr",null,Fe),u(),h(35,"table",23)(36,"tr",24),F("click",function(){return j(e),U(v().dataSorter.openSortingOrderModal())}),h(37,"td")(38,"div",25)(39,"div",26)(40,"div",2),p(41),b(42,"translate"),u(),h(43,"div"),p(44),b(45,"translate"),x(46,ZSe,2,3),x(47,QSe,2,3),u()(),h(48,"div",27)(49,"mat-icon",21),p(50,"keyboard_arrow_down"),u()()()()(),ve(51,nke,25,16,"tr",null,Fe),u()()()}if(2&t){const e=v();d(),C("ngClass",_t(39,CSe,e.showShortList_,!e.showShortList_)),d(),C("ngClass",se(42,wSe,e.showShortList_)),d(4),E(" ",y(7,19,"routes.key")," "),d(2),S(e.dataSorter.currentSortingColumn===e.keySortData?8:-1),d(2),E(" ",y(11,21,"routes.type")," "),d(2),S(e.dataSorter.currentSortingColumn===e.typeSortData?12:-1),d(2),M(y(15,23,"routes.local-port")),d(3),M(y(18,25,"routes.remote-port")),d(3),E(" ",y(21,27,"routes.remote-pk")," "),d(2),S(e.dataSorter.currentSortingColumn===e.destinationSortData?22:-1),d(2),M(y(25,29,"routes.next-rid")),d(3),M(y(28,31,"routes.next-tp")),d(3),M(y(31,33,"routes.keep-alive")),d(3),ye(e.dataSource),d(2),C("ngClass",se(44,xSe,e.showShortList_)),d(6),M(y(42,35,"tables.sorting-title")),d(3),E("",y(45,37,e.dataSorter.currentSortingColumn.label)," "),d(2),S(e.dataSorter.currentlySortingByLabel?46:-1),d(),S(e.dataSorter.sortingInReverseOrder?47:-1),d(2),C("inline",!0),d(2),ye(e.dataSource)}}function oke(t,n){1&t&&(h(0,"span",40),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"routes.empty")))}function rke(t,n){1&t&&(h(0,"span",40),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"routes.empty-with-filter")))}function ske(t,n){if(1&t&&(h(0,"div",12)(1,"div",38)(2,"mat-icon",39),p(3,"warning"),u(),x(4,oke,3,3,"span",40),x(5,rke,3,3,"span",40),u()()),2&t){const e=v();d(2),C("inline",!0),d(2),S(0===e.allRoutes.length?4:-1),d(),S(0!==e.allRoutes.length?5:-1)}}let ake=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter.setData(this.filteredRoutes)}set routes(e){if(!e)return;const i=performance.now();console.log("[HV-DIAG] route-list setter called, routes:",e.length);const o=e.map(r=>r.key).sort().join(",");if(o===this.lastRouteKeys&&e.length===this.lastRouteCount)return this.cdr.markForCheck(),void console.log("[HV-DIAG] route-list skip (unchanged) took",(performance.now()-i).toFixed(1),"ms");console.log("[HV-DIAG] route-list FULL reprocessing",e.length,"routes"),this.lastRouteCount=e.length,this.lastRouteKeys=o,this.allRoutes=e,this.allRoutes.forEach(r=>{if(r.type=r.ruleSummary.ruleType||0===r.ruleSummary.ruleType?r.ruleSummary.ruleType:"",r.appFields||r.forwardFields){const s=r.appFields?r.appFields.routeDescriptor:r.forwardFields.routeDescriptor;r.src=s.srcPk,r.src_label=kc.getCompleteLabel(this.storageService,this.translateService,r.src),r.dst=s.dstPk,r.dst_label=kc.getCompleteLabel(this.storageService,this.translateService,r.dst)}else r.intermediaryForwardFields?(r.src="",r.src_label="",r.dst=r.intermediaryForwardFields.nextTid,r.dst_label=kc.getCompleteLabel(this.storageService,this.translateService,r.dst)):(r.src="",r.src_label="",r.dst="",r.dst_label="")}),this.dataFilterer.setData(this.allRoutes)}constructor(e,i,o,r,s,a,l,c){this.routeService=e,this.dialog=i,this.route=o,this.router=r,this.snackbarService=s,this.translateService=a,this.storageService=l,this.cdr=c,this.listId="rl",this.keySortData=new Dt(["key"],"routes.key",st.Number),this.typeSortData=new Dt(["type"],"routes.type",st.Number),this.sourceSortData=new Dt(["src"],"routes.source",st.Text,["src_label"]),this.destinationSortData=new Dt(["dst"],"routes.destination",st.Text,["dst_label"]),this.labeledElementTypes=ro,this.selections=new Map,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.lastRouteCount=-1,this.lastRouteKeys="",this.filterProperties=[{filterName:"routes.filter-dialog.key",keyNameInElementsArray:"key",type:Sn.TextInput,maxlength:8},{filterName:"routes.filter-dialog.source",keyNameInElementsArray:"src",secondaryKeyNameInElementsArray:"src_label",type:Sn.TextInput,maxlength:66},{filterName:"routes.filter-dialog.destination",keyNameInElementsArray:"dst",secondaryKeyNameInElementsArray:"dst_label",type:Sn.TextInput,maxlength:66}],this.ruleTypes=new Map([[0,"App"],[1,"Forward"],[2,"Int. forward"]]),this.operationSubscriptionsGroup=[],this.dataSorter=new gu(this.dialog,this.translateService,this.storageService,[this.keySortData,this.typeSortData,this.sourceSortData,this.destinationSortData],0,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()});const m={filterName:"routes.filter-dialog.type",keyNameInElementsArray:"type",type:Sn.Select,printableLabelsForValues:[{value:"",label:"routes.filter-dialog.any-type-option"}]};this.ruleTypes.forEach((g,_)=>{m.printableLabelsForValues.push({value:_+"",label:g})}),this.filterProperties=[m].concat(this.filterProperties),this.dataFilterer=new _u(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(g=>{this.filteredRoutes=g,this.dataSorter.setData(this.filteredRoutes)}),this.navigationsSubscription=this.route.paramMap.subscribe(g=>{if(g.has("page")){let _=Number.parseInt(g.get("page"),10);(isNaN(_)||_<1)&&(_=1),this.currentPageInUrl=_,this.recalculateElementsToShow()}})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.dataSortedSubscription.unsubscribe(),this.dataFiltererSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFilterer.dispose()}refreshData(){ke.refreshCurrentDisplayedData()}getTypeName(e){return this.ruleTypes.has(e)?this.ruleTypes.get(e):"Unknown"}changeSelection(e){this.selections.get(e.key)?this.selections.set(e.key,!1):this.selections.set(e.key,!0)}hasSelectedElements(){if(!this.selections)return!1;let e=!1;return this.selections.forEach(i=>{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}deleteSelected(){const e=[];this.selections.forEach((i,o)=>{i&&e.push(o)}),0!==e.length&&this.deleteRecursively(e,null)}showOptionsDialog(e){ao.openDialog(this.dialog,[{icon:"visibility",label:"routes.details.title"},{icon:"close",label:"routes.delete"}],"common.options").afterClosed().subscribe(o=>{1===o?this.details(e):2===o&&this.delete(e.key)})}details(e){fSe.openDialog(this.dialog,e)}delete(e){this.operationSubscriptionsGroup.push(this.startDeleting(e).subscribe(()=>{ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("routes.deleted")},i=>{i=Qe(i),this.snackbarService.showError(i)}))}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredRoutes){this.numberOfPages=1,this.currentPage=1,this.routesToShow=this.filteredRoutes.slice();const e=new Map;this.routesToShow.forEach(o=>{e.set(o.key,!0),this.selections.has(o.key)||this.selections.set(o.key,!1)});const i=[];this.selections.forEach((o,r)=>{e.has(r)||i.push(r)}),i.forEach(o=>{this.selections.delete(o)})}else this.routesToShow=null,this.selections=new Map;this.dataSource=this.routesToShow,this.cdr.markForCheck()}startDeleting(e){return this.routeService.delete(ke.getCurrentNodeKey(),e.toString())}deleteRecursively(e,i){this.operationSubscriptionsGroup.push(this.startDeleting(e[e.length-1]).subscribe(()=>{e.pop(),0===e.length?(i&&i.close(),ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("routes.deleted")):this.deleteRecursively(e,i)},o=>{ke.refreshCurrentDisplayedData(),o=Qe(o),i?i.componentInstance.showDone("confirmation.error-header-text",o.translatableErrorMsg):this.snackbarService.showError(o)}))}static{this.\u0275fac=function(i){return new(i||t)(O(Ek),O(Ot),O(Ai),O(vt),O(ct),O(Go),O(ti),O(Jt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-route-list"]],inputs:{nodePK:"nodePK",showShortList:"showShortList",routes:"routes"},standalone:!1,decls:21,vars:18,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[1,"rounded-elevated-box","mt-3"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"click"],[3,"inline"],[1,"actions"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[1,"selection-col"],[3,"change","checked"],[1,"mono"],[3,"id","elementType"],["mat-button","",1,"action-button","transparent-button",3,"click","matTooltip"],[3,"labelEdited","id","elementType"],[1,"check-part"],[1,"list-row","long-content"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,SSe,6,7,"span",3),x(3,TSe,6,3,"div",4),u(),h(4,"div",5)(5,"div",6),x(6,ESe,3,4,"mat-icon",7),x(7,PSe,2,1,"mat-icon",8),h(8,"mat-menu",9,0)(10,"div",10),F("click",function(){return o.changeAllSelections(!0)}),p(11),b(12,"translate"),u(),h(13,"div",10),F("click",function(){return o.changeAllSelections(!1)}),p(14),b(15,"translate"),u(),h(16,"div",11),F("click",function(){return o.deleteSelected()}),p(17),b(18,"translate"),u()()()()(),x(19,ike,53,46,"div",12),x(20,ske,6,3,"div",12)),2&i&&(d(2),S(o.showShortList_?2:-1),d(),S(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?3:-1),d(3),S(o.allRoutes&&o.allRoutes.length>0?6:-1),d(),S(o.dataSource&&o.dataSource.length>0?7:-1),d(),C("overlapTrigger",!1),d(3),E(" ",y(12,12,"selection.select-all")," "),d(3),E(" ",y(15,14,"selection.unselect-all")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(18,16,"selection.delete-all")," "),d(2),S(o.dataSource&&o.dataSource.length>0?19:-1),d(),S(o.dataSource&&0!==o.dataSource.length?-1:20))},dependencies:[$t,Pn,Wo,We,Kt,Jr,As,vu,kr,kc,Vl,xe],styles:[".actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"],changeDetection:0})}}return t})();function lke(t,n){if(1&t){const e=oe();h(0,"form",12),F("ngSubmit",function(){return j(e),U(v(2).submitRouterConfig())}),h(1,"mat-form-field",13)(2,"mat-label"),p(3),b(4,"translate"),u(),B(5,"input",14),u(),h(6,"div",15)(7,"button",16),p(8),b(9,"translate"),u(),h(10,"button",17),F("click",function(){return j(e),U(v(2).toggleRouterForm())}),p(11),b(12,"translate"),u()()()}if(2&t){const e=v(2);C("formGroup",e.routerForm),d(3),M(y(4,5,"node.details.router-info.min-hops")),d(4),C("disabled",!e.routerForm.valid),d(),E(" ",y(9,7,"common.save")," "),d(3),E(" ",y(12,9,"common.cancel")," ")}}function cke(t,n){if(1&t){const e=oe();h(0,"div",0)(1,"div",6)(2,"span",4),p(3),b(4,"translate"),u(),h(5,"span",7)(6,"span",8),p(7),b(8,"translate"),u(),p(9),h(10,"button",9),F("click",function(){return j(e),U(v().toggleRouterForm())}),h(11,"mat-icon",10),p(12),u()()(),x(13,lke,13,11,"form",11),u()()}if(2&t){const e=v();d(3),M(y(4,6,"node.details.router-info.title")),d(4),E("",y(8,8,"node.details.router-info.min-hops")," "),d(2),E(" ",e.node.minHops," "),d(2),C("inline",!0),d(),M(e.showRouterForm?"close":"edit"),d(),S(e.showRouterForm?13:-1)}}let dke=(()=>{class t extends pn{constructor(e,i,o){super(),this.formBuilder=e,this.routeService=i,this.snackbarService=o,this.showRouterForm=!1,this.routerForm=this.formBuilder.group({min:[1,Ne.compose([Ne.required,Ne.maxLength(3),Ne.pattern("^[0-9]+$")])]})}ngOnInit(){return this.dataSubscription=ke.currentNode.subscribe(e=>{this.nodePK=e.localPk,this.node=e,this.routes=e.routes}),this.trafficSubscription=ke.currentTrafficData.subscribe(e=>{this.trafficData=e}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription.unsubscribe(),this.trafficSubscription?.unsubscribe(),this.saveRouterSubscription?.unsubscribe()}toggleRouterForm(){this.showRouterForm=!this.showRouterForm,this.showRouterForm&&this.node&&this.routerForm.get("min").setValue(this.node.minHops)}submitRouterConfig(){if(!this.routerForm.valid||!this.node)return;const e=parseInt(this.routerForm.get("min").value,10);this.saveRouterSubscription=this.routeService.setMinHops(this.node.localPk,e).subscribe({next:()=>{this.snackbarService.showDone("router-config.done"),this.showRouterForm=!1,ke.refreshCurrentDisplayedData()},error:i=>{i=Qe(i),this.snackbarService.showError(i)}})}static{this.\u0275fac=function(i){return new(i||t)(O(di),O(Ek),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-routing"]],standalone:!1,features:[be],decls:8,vars:8,consts:[[1,"rounded-elevated-box","mt-3"],[3,"routes","showShortList","nodePK"],[1,"rounded-elevated-box","mt-3","traffic-box"],[1,"box-internal-container"],[1,"section-title"],[1,"d-flex","flex-column","justify-content-end","mt-3",3,"trafficData"],[1,"box-internal-container","overflow","font-smaller"],[1,"info-line"],[1,"title"],["mat-icon-button","",1,"inline-edit-btn",3,"click"],[3,"inline"],[1,"inline-form",3,"formGroup"],[1,"inline-form",3,"ngSubmit","formGroup"],["appearance","outline",1,"inline-form-field-sm"],["matInput","","type","number","formControlName","min","min","0","max","999"],[1,"inline-form-actions"],["mat-raised-button","","color","primary","type","submit",3,"disabled"],["mat-button","","type","button",3,"click"]],template:function(i,o){1&i&&(x(0,cke,14,10,"div",0),B(1,"app-route-list",1),h(2,"div",2)(3,"div",3)(4,"span",4),p(5),b(6,"translate"),u(),B(7,"app-charts",5),u()()),2&i&&(S(o.node?0:-1),d(),C("routes",o.routes)("showShortList",!0)("nodePK",o.nodePK),d(4),M(y(6,6,"node.details.node-traffic-data")),d(2),C("trafficData",o.trafficData))},dependencies:[xn,Gt,rc,qt,wn,tp,sv,on,mn,sn,Os,In,Pn,Wo,We,sSe,ake,xe],encapsulation:2})}}return t})();function uke(t,n){if(1&t&&(h(0,"mat-option",5),p(1),b(2,"translate"),u()),2&t){const e=n.$implicit;C("value",e.days),d(),M(y(2,2,e.text))}}let hke=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.data=e,this.dialogRef=i,this.formBuilder=o}ngOnInit(){this.filters=[{text:"apps.log.filter.7-days",days:7},{text:"apps.log.filter.1-month",days:30},{text:"apps.log.filter.3-months",days:90},{text:"apps.log.filter.6-months",days:180},{text:"apps.log.filter.1-year",days:365},{text:"apps.log.filter.all",days:-1}],this.form=this.formBuilder.group({filter:[this.data.days]}),this.formSubscription=this.form.get("filter").valueChanges.subscribe(e=>{this.dialogRef.close(this.filters.find(i=>i.days===e))})}ngOnDestroy(){this.formSubscription.unsubscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-log-filter"]],standalone:!1,decls:11,vars:8,consts:[[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","filter"],[3,"value"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),b(1,"translate"),h(2,"form",1)(3,"mat-form-field")(4,"div",2)(5,"label",3),p(6),b(7,"translate"),u(),h(8,"mat-select",4),ve(9,uke,3,4,"mat-option",5,Fe),u()()()()()),2&i&&(C("headline",y(1,4,"apps.log.filter.title"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(4),M(y(7,6,"apps.log.filter.filter")),d(3),ye(o.filters))},dependencies:[xn,qt,wn,on,mn,sn,Pa,Qr,gn,xe],styles:["mat-form-field[_ngcontent-%COMP%]{margin-bottom:-24px}"]})}}return t})();const fke=["content"],pke=t=>({totalLogs:t});function mke(t,n){if(1&t&&(h(0,"app-button",7)(1,"div",11),p(2),b(3,"translate"),u()()),2&t){const e=v();d(2),E(" ",pe(3,1,"apps.log.view-all",se(4,pke,e.totalLogs))," ")}}function gke(t,n){if(1&t&&(h(0,"div",8)(1,"span",12),p(2),u(),p(3),u()),2&t){const e=n.$implicit;d(2),E(" ",e.time," "),d(),E(" ",e.msg," ")}}function _ke(t,n){1&t&&(h(0,"div",9),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"apps.log.empty")," "))}function bke(t,n){1&t&&B(0,"app-loading-indicator",10),2&t&&C("showWhite",!1)}let vke=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.largeModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.dialogRef=i,this.appsService=o,this.dialog=r,this.snackbarService=s,this.apiService=a,this.logMessages=[],this.hasMoreLogMessages=!1,this.totalLogs=0,this.loading=!1,this.currentFilter={text:"apps.log.filter.7-days",days:7},this.shouldShowError=!0}ngOnInit(){this.loadData(0)}ngOnDestroy(){this.removeSubscription()}filter(){hke.openDialog(this.dialog,this.currentFilter).afterClosed().subscribe(e=>{e&&(this.currentFilter=e,this.logMessages=[],this.loadData(0))})}getLogsUrl(){return"/"+this.apiService.apiPrefix+this.appsService.getLogMessagesUrl(ke.getCurrentNodeKey(),this.data.name)}loadData(e){this.removeSubscription(),this.loading=!0,this.subscription=ae(1).pipe(li(e),It(()=>this.appsService.getLogMessages(ke.getCurrentNodeKey(),this.data.name,this.currentFilter.days))).subscribe(i=>this.onLogsReceived(i),i=>this.onLogsError(i))}removeSubscription(){this.subscription&&this.subscription.unsubscribe()}onLogsReceived(e=[]){this.loading=!1,this.shouldShowError=!0,this.snackbarService.closeCurrentIfTemporaryError();let i=0;this.hasMoreLogMessages=!1,this.totalLogs=e.length,e.forEach(o=>{if(i<5e3){const r=o.startsWith("[")?0:-1,s=-1!==r?o.indexOf("]"):-1;this.logMessages.push(-1!==r&&-1!==s?{time:o.substr(r,s+1),msg:o.substr(s+1)}:{time:"",msg:o})}else this.hasMoreLogMessages=!0;i+=1}),setTimeout(()=>{this.content.nativeElement.scrollTop=this.content.nativeElement.scrollHeight})}onLogsError(e){e=Qe(e),this.shouldShowError&&(this.snackbarService.showError("common.loading-error",null,!0,e),this.shouldShowError=!1),this.loadData(rt.connectionRetryDelay)}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt),O(Rs),O(Ot),O(ct),O(zi))}}static{this.\u0275cmp=re({type:t,selectors:[["app-log"]],viewQuery:function(i,o){if(1&i&&ot(fke,5),2&i){let r;he(r=fe())&&(o.content=r.first)}},standalone:!1,decls:20,vars:16,consts:[["content",""],[3,"headline","includeVerticalMargins","includeScrollableArea","dialog"],[1,"top-dialog-button",3,"click"],[1,"top-dialog-button-content"],[1,"actual-value"],[1,"top-dialog-button-margin"],["target","_blank",3,"href"],["color","primary",1,"full-logs-button"],[1,"app-log-message"],[1,"app-log-empty","mt-3"],[3,"showWhite"],[1,"text-container"],[1,"transparent"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"div",2),F("click",function(){return o.filter()}),h(3,"div",3)(4,"div")(5,"span"),p(6),b(7,"translate"),u(),h(8,"span",4),p(9),b(10,"translate"),u()()(),B(11,"div",5),u(),h(12,"mat-dialog-content",null,0)(14,"a",6),x(15,mke,4,6,"app-button",7),u(),ve(16,gke,4,2,"div",8,Fe),x(18,_ke,3,3,"div",9),x(19,bke,1,1,"app-loading-indicator",10),u()()),2&i&&(C("headline",y(1,10,"apps.log.title"))("includeVerticalMargins",!1)("includeScrollableArea",!1)("dialog",o.dialogRef),d(6),E("",y(7,12,"apps.log.filter-button")," "),d(3),M(y(10,14,o.currentFilter.text)),d(5),C("href",o.getLogsUrl(),mo),d(),S(o.hasMoreLogMessages?15:-1),d(),ye(o.logMessages),d(2),S(o.loading||o.logMessages&&0!==o.logMessages.length?-1:18),d(),S(o.loading?19:-1))},dependencies:[Jd,ui,gn,Yr,xe],styles:[".mat-mdc-dialog-content[_ngcontent-%COMP%]{font-size:.875rem}.app-log-message[_ngcontent-%COMP%]{margin-top:15px;word-break:break-word}.app-log-message[_ngcontent-%COMP%] .transparent[_ngcontent-%COMP%]{color:#999}.app-log-message[_ngcontent-%COMP%]:first-of-type{margin-top:0}.app-log-message[_ngcontent-%COMP%]:last-of-type{margin-bottom:24px}.top-dialog-button[_ngcontent-%COMP%]{color:#777!important}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%]{text-align:center}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .actual-value[_ngcontent-%COMP%]{color:#202226}.full-logs-button[_ngcontent-%COMP%] button{width:100%!important;display:block;text-align:center;margin-bottom:15px}.full-logs-button[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{width:100%}"]})}}return t})();const yke=["button"],Cke=["firstInput"],vD=t=>({"element-disabled":t});function wke(t,n){if(1&t&&(h(0,"mat-form-field",4)(1,"div",5)(2,"label",10),p(3),b(4,"translate"),u(),B(5,"input",11),u()()),2&t){const e=v();C("ngClass",se(4,vD,e.disableDismiss)),d(3),M(y(4,2,"apps.vpn-socks-server-settings.netifc"))}}function xke(t,n){if(1&t){const e=oe();h(0,"div",8)(1,"mat-checkbox",12),F("change",function(o){return j(e),U(v().setSecureMode(o))}),p(2),b(3,"translate"),h(4,"mat-icon",13),b(5,"translate"),p(6,"help"),u()()()}if(2&t){const e=v();d(),C("checked",e.secureMode)("ngClass",se(9,vD,e.disableDismiss)),d(),E(" ",y(3,5,"apps.vpn-socks-server-settings.secure-mode-check")," "),d(2),C("inline",!0)("matTooltip",y(5,7,"apps.vpn-socks-server-settings.secure-mode-info"))}}let Ske=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.appsService=i,this.formBuilder=o,this.dialogRef=r,this.snackbarService=s,this.dialog=a,this.configuringVpn=!1,this.secureMode=!1,-1!==e.name.toLocaleLowerCase().indexOf("vpn")&&(this.configuringVpn=!0)}ngOnInit(){if(this.form=this.formBuilder.group({whitelist:["",this.validateWhitelist.bind(this)],netifc:[""]}),this.data.args&&this.data.args.length>0)for(let e=0;ethis.firstInput.nativeElement.focus())}ngOnDestroy(){this.formSubscription&&this.formSubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()}get disableDismiss(){return!!this.button&&this.button.isLoading}setSecureMode(e){this.button.disabled||(this.secureMode=!!e.checked)}saveChanges(){if(!this.form.valid||this.button.disabled)return;const i=this.normalizedWhitelist()?"apps.vpn-socks-server-settings.set-whitelist-confirmation":"apps.vpn-socks-server-settings.clear-whitelist-confirmation",o=Rt.createConfirmationDialog(this.dialog,i);o.componentInstance.operationAccepted.subscribe(()=>{o.close(),this.continueSavingChanges()})}continueSavingChanges(){this.button.showLoading();const e={whitelist:this.normalizedWhitelist()};this.configuringVpn&&(e.secure=this.secureMode,e.netifc=this.form.get("netifc").value),this.operationSubscription=this.appsService.changeAppSettings(ke.getCurrentNodeKey(),this.data.name,e).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)})}normalizedWhitelist(){const e=(this.form.get("whitelist").value||"").trim();return""===e?"":e.split(/[\s,]+/).filter(i=>i.length>0).join(",")}onSuccess(){ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.vpn-socks-server-settings.changes-made"),this.dialogRef.close()}onError(e){this.button.showError(),e=Qe(e),this.snackbarService.showError(e)}validateWhitelist(e){const i=(e&&(e.value||"")).trim();if(""===i)return null;for(const o of i.split(/[\s,]+/))if(""!==o&&(66!==o.length||!/^[0-9a-fA-F]+$/.test(o)))return{invalid:!0};return null}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Rs),O(di),O(Bt),O(ct),O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-skysocks-settings"]],viewQuery:function(i,o){if(1&i&&ot(yke,5)(Cke,5),2&i){let r;he(r=fe())&&(o.button=r.first),he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:23,vars:24,consts:[["firstInput",""],["button",""],[3,"headline","dialog","disableDismiss"],[3,"formGroup"],[3,"ngClass"],[1,"field-container"],["for","whitelist",1,"field-label"],["id","whitelist","formControlName","whitelist","rows","3","matInput","","placeholder","02abc..., 03def..."],[1,"main-theme","settings-option"],["color","primary",1,"float-right",3,"action","disabled"],["for","remoteKey",1,"field-label"],["id","netifc","type","text","formControlName","netifc","matInput",""],["color","primary",3,"change","checked","ngClass"],[1,"help-icon",3,"inline","matTooltip"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),b(1,"translate"),h(2,"form",3)(3,"mat-form-field",4)(4,"div",5)(5,"label",6),p(6),b(7,"translate"),u(),B(8,"textarea",7,0),u(),h(10,"mat-hint"),p(11),b(12,"translate"),u(),h(13,"mat-error")(14,"span"),p(15),b(16,"translate"),u()()(),x(17,wke,6,6,"mat-form-field",4),x(18,xke,7,11,"div",8),u(),h(19,"app-button",9,1),F("action",function(){return o.saveChanges()}),p(21),b(22,"translate"),u()()),2&i&&(C("headline",y(1,12,"apps.vpn-socks-server-settings."+(o.configuringVpn?"vpn-title":"socks-title")))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),d(2),C("formGroup",o.form),d(),C("ngClass",se(22,vD,o.disableDismiss)),d(3),M(y(7,14,"apps.vpn-socks-server-settings.whitelist")),d(5),M(y(12,16,"apps.vpn-socks-server-settings.whitelist-help")),d(4),M(y(16,18,"apps.vpn-socks-server-settings.whitelist-invalid-pk")),d(2),S(o.configuringVpn?17:-1),d(),S(o.configuringVpn?18:-1),d(),C("disabled",!o.form.valid),d(2),E(" ",y(22,20,"apps.vpn-socks-server-settings.save")," "))},dependencies:[$t,xn,Gt,qt,wn,on,mn,sn,uk,Ma,In,We,Kt,kr,ui,gn,xe],styles:["mat-checkbox[_ngcontent-%COMP%]{margin-bottom:15px}"]})}}return t})();const kke=["firstInput"];let Dke=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i||"",o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.dialogRef=e,this.data=i,this.formBuilder=o}ngOnInit(){this.form=this.formBuilder.group({note:[this.data]}),setTimeout(()=>this.firstInput.nativeElement.focus())}finish(){const e=this.form.get("note").value.trim();this.dialogRef.close("-"+e)}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-edit-skysocks-client-note"]],viewQuery:function(i,o){if(1&i&&ot(kke,5),2&i){let r;he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:13,vars:11,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","note","maxlength","100","matInput",""],["color","primary","type","mat-raised-button",1,"float-right",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),b(7,"translate"),u(),B(8,"input",5,0),u()()(),h(10,"app-button",6),F("action",function(){return o.finish()}),p(11),b(12,"translate"),u()()),2&i&&(C("headline",y(1,5,"apps.vpn-socks-client-settings.change-note-dialog.title"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(4),M(y(7,7,"apps.vpn-socks-client-settings.change-note-dialog.note")),d(5),M(y(12,9,"common.save")))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,In,ui,gn,xe],encapsulation:2})}}return t})();function Mke(t,n){if(1&t&&p(0),2&t){const e=v().$implicit;E(" ",v(2).completeCountriesList[e.toUpperCase()]," ")}}function Tke(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.toUpperCase()," ")}function Eke(t,n){if(1&t&&(h(0,"mat-option",9)(1,"div",10),B(2,"div"),u(),x(3,Mke,1,1),x(4,Tke,1,1),u()),2&t){const e=n.$implicit,i=v(2);C("value",e.toUpperCase()),d(2),no("background-image: url('assets/img/flags/"+e.toLocaleLowerCase()+".png');"),d(),S(i.completeCountriesList[e.toUpperCase()]?3:-1),d(),S(i.completeCountriesList[e.toUpperCase()]?-1:4)}}function Pke(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"apps.vpn-socks-client-settings.filter-dialog.any-country")," ")}function Ike(t,n){if(1&t&&p(0),2&t){const e=v(3);E(" ",e.completeCountriesList[e.form.get("country").value]," ")}}function Oke(t,n){1&t&&p(0),2&t&&E(" ",v(3).form.get("country").value," ")}function Ake(t,n){if(1&t&&(h(0,"div",10),B(1,"div"),u(),x(2,Ike,1,1),x(3,Oke,1,1)),2&t){const e=v(2);d(),no("background-image: url('assets/img/flags/"+e.form.get("country").value.toLocaleLowerCase()+".png');"),d(),S(e.completeCountriesList[e.form.get("country").value]?2:-1),d(),S(e.completeCountriesList[e.form.get("country").value]?-1:3)}}function Rke(t,n){if(1&t&&(h(0,"mat-form-field")(1,"div",3)(2,"label",4),p(3),b(4,"translate"),u(),h(5,"mat-select",8)(6,"mat-option",9),p(7),b(8,"translate"),u(),ve(9,Eke,5,5,"mat-option",9,Fe),h(11,"mat-select-trigger"),x(12,Pke,2,3),x(13,Ake,4,4),u()()()()),2&t){const e=v();d(3),M(y(4,5,"apps.vpn-socks-client-settings.filter-dialog.country")),d(3),C("value","-"),d(),M(y(8,7,"apps.vpn-socks-client-settings.filter-dialog.any-country")),d(2),ye(e.data.availableCountries),d(3),S("-"===e.form.get("country").value?12:-1),d(),S("-"!==e.form.get("country").value?13:-1)}}class qH{constructor(){this.country="",this.location="",this.key=""}}let Fke=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o){this.data=e,this.dialogRef=i,this.formBuilder=o,this.completeCountriesList=es}ngOnInit(){this.form=this.formBuilder.group({country:[this.data.currentFilters.country?this.data.currentFilters.country:"-"],"location-text":[this.data.currentFilters.location],"key-text":[this.data.currentFilters.key]})}apply(){const e=new qH;let i=this.form.get("country").value.trim();"-"===i&&(i=""),e.country=i,e.location=this.form.get("location-text").value.trim(),e.key=this.form.get("key-text").value.trim(),this.dialogRef.close(e)}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-skysocks-client-filter"]],standalone:!1,decls:20,vars:15,consts:[["button",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","location-text","maxlength","100","matInput",""],["formControlName","key-text","maxlength","66","matInput",""],["type","mat-raised-button","color","primary",1,"float-right",3,"action"],["formControlName","country","id","country"],[3,"value"],[1,"flag-container"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2),x(3,Rke,14,9,"mat-form-field"),h(4,"mat-form-field")(5,"div",3)(6,"label",4),p(7),b(8,"translate"),u(),B(9,"input",5),u()(),h(10,"mat-form-field")(11,"div",3)(12,"label",4),p(13),b(14,"translate"),u(),B(15,"input",6),u()()(),h(16,"app-button",7,0),F("action",function(){return o.apply()}),p(18),b(19,"translate"),u()()),2&i&&(C("headline",y(1,7,"apps.vpn-socks-client-settings.filter-dialog.title"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(),S(o.data.availableCountries.length>0?3:-1),d(4),M(y(8,9,"apps.vpn-socks-client-settings.filter-dialog.location")),d(6),M(y(14,11,"apps.vpn-socks-client-settings.filter-dialog.pub-key")),d(5),E(" ",y(19,13,"apps.vpn-socks-client-settings.filter-dialog.apply")," "))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,In,Pa,Gme,Qr,ui,gn,xe],encapsulation:2})}}return t})();const Nke=["firstInput"];let Lke=(()=>{class t{static openDialog(e){const i=new nn;return i.autoFocus=!1,i.width=rt.smallModalWidth,e.open(t,i)}constructor(e,i){this.dialogRef=e,this.formBuilder=i}ngOnInit(){this.form=this.formBuilder.group({password:[""]}),setTimeout(()=>this.firstInput.nativeElement.focus())}finish(){const e=this.form.get("password").value;this.dialogRef.close("-"+e)}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-skysocks-client-password"]],viewQuery:function(i,o){if(1&i&&ot(Nke,5),2&i){let r;he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:16,vars:14,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"info"],[1,"field-container"],["for","remoteKey",1,"field-label"],["type","password","id","password","formControlName","password","maxlength","100","matInput",""],["color","primary","type","mat-raised-button",1,"float-right",3,"action"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2)(3,"div",3),p(4),b(5,"translate"),u(),h(6,"mat-form-field")(7,"div",4)(8,"label",5),p(9),b(10,"translate"),u(),B(11,"input",6,0),u()()(),h(13,"app-button",7),F("action",function(){return o.finish()}),p(14),b(15,"translate"),u()()),2&i&&(C("headline",y(1,6,"apps.vpn-socks-client-settings.password-dialog.title"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(2),M(y(5,8,"apps.vpn-socks-client-settings.password-dialog.info")),d(5),M(y(10,10,"apps.vpn-socks-client-settings.password-dialog.password")),d(5),E(" ",y(15,12,"apps.vpn-socks-client-settings.password-dialog.continue-button")," "))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,In,ui,gn,xe],styles:[".info[_ngcontent-%COMP%]{font-size:.7rem;margin-bottom:15px}"]})}}return t})(),Bke=(()=>{class t{constructor(e){this.http=e,this.discoveryServiceUrl="https://sd.skycoin.com/api/services?type="}getServices(e){const i=[];return this.http.get(this.discoveryServiceUrl+(e?"proxy":"vpn")).pipe(ip(o=>o.pipe(li(4e3))),Se(o=>(o||(o=[]),o.forEach(r=>{const s=new nme,a=r.address.split(":");2===a.length&&(s.address=r.address,s.pk=a[0],s.port=a[1],s.location="",r.geo&&(r.geo.country&&(s.country=r.geo.country,s.location+=es[r.geo.country.toUpperCase()]?es[r.geo.country.toUpperCase()]:r.geo.country),r.geo.region&&r.geo.country&&(s.location+=", "),r.geo.region&&(s.region=r.geo.region,s.location+=s.region)),i.push(s))}),i)))}static{this.\u0275fac=function(i){return new(i||t)(ce(ba))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const yD=["*"];function Vke(t,n){1&t&&Pt(0)}const Hke=["tabListContainer"],jke=["tabList"],Uke=["tabListInner"],zke=["nextPaginator"],$ke=["previousPaginator"],Wke=["content"];function Gke(t,n){}const qke=["tabBodyWrapper"],Kke=["tabHeader"];function Yke(t,n){}function Xke(t,n){1&t&&it(0,Yke,0,0,"ng-template",12),2&t&&C("cdkPortalOutlet",v().$implicit.templateLabel)}function Zke(t,n){1&t&&p(0),2&t&&M(v().$implicit.textLabel)}function Qke(t,n){if(1&t){const e=oe();h(0,"div",7,2),F("click",function(){const o=j(e),r=o.$implicit,s=o.$index,a=v(),l=Hn(1);return U(a._handleClick(r,l,s))})("cdkFocusChange",function(o){const r=j(e).$index;return U(v()._tabFocusChanged(o,r))}),B(2,"span",8)(3,"div",9),h(4,"span",10)(5,"span",11),x(6,Xke,1,1,null,12)(7,Zke,1,1),u()()()}if(2&t){const e=n.$implicit,i=n.$index,o=Hn(1),r=v();Ze(e.labelClass),Ie("mdc-tab--active",r.selectedIndex===i),C("id",r._getTabLabelId(e,i))("disabled",e.disabled)("fitInkBarToContent",r.fitInkBarToContent),$e("tabIndex",r._getTabIndex(i))("aria-posinset",i+1)("aria-setsize",r._tabs.length)("aria-controls",r._getTabContentId(i))("aria-selected",r.selectedIndex===i)("aria-label",e.ariaLabel||null)("aria-labelledby",!e.ariaLabel&&e.ariaLabelledby?e.ariaLabelledby:null),d(3),C("matRippleTrigger",o)("matRippleDisabled",e.disabled||r.disableRipple),d(3),S(e.templateLabel?6:7)}}function Jke(t,n){1&t&&Pt(0)}function eDe(t,n){if(1&t){const e=oe();h(0,"mat-tab-body",13),F("_onCentered",function(){return j(e),U(v()._removeTabBodyWrapperHeight())})("_onCentering",function(o){return j(e),U(v()._setTabBodyWrapperHeight(o))})("_beforeCentering",function(o){return j(e),U(v()._bodyCentered(o))}),u()}if(2&t){const e=n.$implicit,i=n.$index,o=v();Ze(e.bodyClass),C("id",o._getTabContentId(i))("content",e.content)("position",e.position)("animationDuration",o.animationDuration)("preserveContent",o.preserveContent),$e("tabindex",null!=o.contentTabIndex&&o.selectedIndex===i?o.contentTabIndex:null)("aria-labelledby",o._getTabLabelId(e,i))("aria-hidden",o.selectedIndex!==i)}}const tDe=new Z("MatTabContent");let nDe=(()=>{class t{template=D(Ti);constructor(){}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matTabContent",""]],features:[lt([{provide:tDe,useExisting:t}])]})}return t})();const iDe=new Z("MatTabLabel"),KH=new Z("MAT_TAB");let oDe=(()=>{class t extends Bce{_closestTab=D(KH,{optional:!0});static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","mat-tab-label",""],["","matTabLabel",""]],features:[lt([{provide:iDe,useExisting:t}]),be]})}return t})();const YH=new Z("MAT_TAB_GROUP");let XH=(()=>{class t{_viewContainerRef=D(Ei);_closestTabGroup=D(YH,{optional:!0});disabled=!1;get templateLabel(){return this._templateLabel}set templateLabel(e){this._setTemplateLabelInput(e)}_templateLabel;_explicitContent=void 0;_implicitContent;textLabel="";ariaLabel;ariaLabelledby;labelClass;bodyClass;id=null;_contentPortal=null;get content(){return this._contentPortal}_stateChanges=new me;position=null;origin=null;isActive=!1;constructor(){D(zo).load(tu)}ngOnChanges(e){(e.hasOwnProperty("textLabel")||e.hasOwnProperty("disabled"))&&this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}ngOnInit(){this._contentPortal=new Yl(this._explicitContent||this._implicitContent,this._viewContainerRef)}_setTemplateLabelInput(e){e&&e._closestTab===this&&(this._templateLabel=e)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-tab"]],contentQueries:function(i,o,r){if(1&i&&ys(r,oDe,5)(r,nDe,7,Ti),2&i){let s;he(s=fe())&&(o.templateLabel=s.first),he(s=fe())&&(o._explicitContent=s.first)}},viewQuery:function(i,o){if(1&i&&ot(Ti,7),2&i){let r;he(r=fe())&&(o._implicitContent=r.first)}},hostAttrs:["hidden",""],hostVars:1,hostBindings:function(i,o){2&i&&$e("id",null)},inputs:{disabled:[2,"disabled","disabled",De],textLabel:[0,"label","textLabel"],ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],labelClass:"labelClass",bodyClass:"bodyClass",id:"id"},exportAs:["matTab"],features:[lt([{provide:KH,useExisting:t}]),_i],ngContentSelectors:yD,decls:1,vars:0,template:function(i,o){1&i&&(yi(),Eg(0,Vke,1,0,"ng-template"))},encapsulation:2})}return t})();const CD="mdc-tab-indicator--active",ZH="mdc-tab-indicator--no-transition";class rDe{_items;_currentItem;constructor(n){this._items=n}hide(){this._items.forEach(n=>n.deactivateInkBar()),this._currentItem=void 0}alignToElement(n){const e=this._items.find(o=>o.elementRef.nativeElement===n),i=this._currentItem;if(e!==i&&(i?.deactivateInkBar(),e)){const o=i?.elementRef.nativeElement.getBoundingClientRect?.();e.activateInkBar(o),this._currentItem=e}}}let sDe=(()=>{class t{_elementRef=D(Re);_inkBarElement=null;_inkBarContentElement=null;_fitToContent=!1;get fitInkBarToContent(){return this._fitToContent}set fitInkBarToContent(e){this._fitToContent!==e&&(this._fitToContent=e,this._inkBarElement&&this._appendInkBarElement())}activateInkBar(e){const i=this._elementRef.nativeElement;if(!e||!i.getBoundingClientRect||!this._inkBarContentElement)return void i.classList.add(CD);const o=i.getBoundingClientRect(),r=e.width/o.width,s=e.left-o.left;i.classList.add(ZH),this._inkBarContentElement.style.setProperty("transform",`translateX(${s}px) scaleX(${r})`),i.getBoundingClientRect(),i.classList.remove(ZH),i.classList.add(CD),this._inkBarContentElement.style.setProperty("transform","")}deactivateInkBar(){this._elementRef.nativeElement.classList.remove(CD)}ngOnInit(){this._createInkBarElement()}ngOnDestroy(){this._inkBarElement?.remove(),this._inkBarElement=this._inkBarContentElement=null}_createInkBarElement(){const e=this._elementRef.nativeElement.ownerDocument||document,i=this._inkBarElement=e.createElement("span"),o=this._inkBarContentElement=e.createElement("span");i.className="mdc-tab-indicator",o.className="mdc-tab-indicator__content mdc-tab-indicator__content--underline",i.appendChild(this._inkBarContentElement),this._appendInkBarElement()}_appendInkBarElement(){(this._fitToContent?this._elementRef.nativeElement.querySelector(".mdc-tab__content"):this._elementRef.nativeElement).appendChild(this._inkBarElement)}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,inputs:{fitInkBarToContent:[2,"fitInkBarToContent","fitInkBarToContent",De]}})}return t})(),QH=(()=>{class t extends sDe{elementRef=D(Re);disabled=!1;focus(){this.elementRef.nativeElement.focus()}getOffsetLeft(){return this.elementRef.nativeElement.offsetLeft}getOffsetWidth(){return this.elementRef.nativeElement.offsetWidth}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275dir=de({type:t,selectors:[["","matTabLabelWrapper",""]],hostVars:3,hostBindings:function(i,o){2&i&&($e("aria-disabled",!!o.disabled),Ie("mat-mdc-tab-disabled",o.disabled))},inputs:{disabled:[2,"disabled","disabled",De]},features:[be]})}return t})();const JH={passive:!0};let cDe=(()=>{class t{_elementRef=D(Re);_changeDetectorRef=D(Jt);_viewportRuler=D(qd);_dir=D(br,{optional:!0});_ngZone=D(_e);_platform=D(Yn);_sharedResizeObserver=D(yB);_injector=D(He);_renderer=D(Qn);_animationsDisabled=ci();_eventCleanups;_scrollDistance=0;_selectedIndexChanged=!1;_destroyed=new me;_showPaginationControls=!1;_disableScrollAfter=!0;_disableScrollBefore=!0;_tabLabelCount;_scrollDistanceChanged=!1;_keyManager;_currentTextContent;_stopScrolling=new me;disablePagination=!1;get selectedIndex(){return this._selectedIndex}set selectedIndex(e){const i=isNaN(e)?0:e;this._selectedIndex!=i&&(this._selectedIndexChanged=!0,this._selectedIndex=i,this._keyManager&&this._keyManager.updateActiveItem(i))}_selectedIndex=0;selectFocusedIndex=new we;indexFocused=new we;constructor(){this._eventCleanups=this._ngZone.runOutsideAngular(()=>[this._renderer.listen(this._elementRef.nativeElement,"mouseleave",()=>this._stopInterval())])}ngAfterViewInit(){this._eventCleanups.push(this._renderer.listen(this._previousPaginator.nativeElement,"touchstart",()=>this._handlePaginatorPress("before"),JH),this._renderer.listen(this._nextPaginator.nativeElement,"touchstart",()=>this._handlePaginatorPress("after"),JH))}ngAfterContentInit(){const e=this._dir?this._dir.change:ae("ltr"),i=this._sharedResizeObserver.observe(this._elementRef.nativeElement).pipe(Mb(32),fn(this._destroyed)),o=this._viewportRuler.change(150).pipe(fn(this._destroyed)),r=()=>{this.updatePagination(),this._alignInkBarToSelectedTab()};this._keyManager=new iV(this._items).withHorizontalOrientation(this._getLayoutDirection()).withHomeAndEnd().withWrap().skipPredicate(()=>!1),this._keyManager.updateActiveItem(Math.max(this._selectedIndex,0)),Vi(r,{injector:this._injector}),Cr(e,o,i,this._items.changes,this._itemsResized()).pipe(fn(this._destroyed)).subscribe(()=>{this._ngZone.run(()=>{Promise.resolve().then(()=>{this._scrollDistance=Math.max(0,Math.min(this._getMaxScrollDistance(),this._scrollDistance)),r()})}),this._keyManager?.withHorizontalOrientation(this._getLayoutDirection())}),this._keyManager.change.subscribe(s=>{this.indexFocused.emit(s),this._setTabFocus(s)})}_itemsResized(){return"function"!=typeof ResizeObserver?Oi:this._items.changes.pipe(si(this._items),tn(e=>new Ft(i=>this._ngZone.runOutsideAngular(()=>{const o=new ResizeObserver(r=>i.next(r));return e.forEach(r=>o.observe(r.elementRef.nativeElement)),()=>{o.disconnect()}}))),_S(1),Tn(e=>e.some(i=>i.contentRect.width>0&&i.contentRect.height>0)))}ngAfterContentChecked(){this._tabLabelCount!=this._items.length&&(this.updatePagination(),this._tabLabelCount=this._items.length,this._changeDetectorRef.markForCheck()),this._selectedIndexChanged&&(this._scrollToLabel(this._selectedIndex),this._checkScrollingControls(),this._alignInkBarToSelectedTab(),this._selectedIndexChanged=!1,this._changeDetectorRef.markForCheck()),this._scrollDistanceChanged&&(this._updateTabScrollPosition(),this._scrollDistanceChanged=!1,this._changeDetectorRef.markForCheck())}ngOnDestroy(){this._eventCleanups.forEach(e=>e()),this._keyManager?.destroy(),this._destroyed.next(),this._destroyed.complete(),this._stopScrolling.complete()}_handleKeydown(e){if(!yr(e))switch(e.keyCode){case 13:case 32:if(this.focusIndex!==this.selectedIndex){const i=this._items.get(this.focusIndex);i&&!i.disabled&&(this.selectFocusedIndex.emit(this.focusIndex),this._itemSelected(e))}break;default:this._keyManager?.onKeydown(e)}}_onContentChanges(){const e=this._elementRef.nativeElement.textContent;e!==this._currentTextContent&&(this._currentTextContent=e||"",this._ngZone.run(()=>{this.updatePagination(),this._alignInkBarToSelectedTab(),this._changeDetectorRef.markForCheck()}))}updatePagination(){this._checkPaginationEnabled(),this._checkScrollingControls(),this._updateTabScrollPosition()}get focusIndex(){return this._keyManager?this._keyManager.activeItemIndex:0}set focusIndex(e){!this._isValidIndex(e)||this.focusIndex===e||!this._keyManager||this._keyManager.setActiveItem(e)}_isValidIndex(e){return!this._items||!!this._items.toArray()[e]}_setTabFocus(e){if(this._showPaginationControls&&this._scrollToLabel(e),this._items&&this._items.length){this._items.toArray()[e].focus();const i=this._tabListContainer.nativeElement;i.scrollLeft="ltr"==this._getLayoutDirection()?0:i.scrollWidth-i.offsetWidth}}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_updateTabScrollPosition(){if(this.disablePagination)return;const e=this.scrollDistance,i="ltr"===this._getLayoutDirection()?-e:e;this._tabList.nativeElement.style.transform=`translateX(${Math.round(i)}px)`,(this._platform.TRIDENT||this._platform.EDGE)&&(this._tabListContainer.nativeElement.scrollLeft=0)}get scrollDistance(){return this._scrollDistance}set scrollDistance(e){this._scrollTo(e)}_scrollHeader(e){return this._scrollTo(this._scrollDistance+("before"==e?-1:1)*this._tabListContainer.nativeElement.offsetWidth/3)}_handlePaginatorClick(e){this._stopInterval(),this._scrollHeader(e)}_scrollToLabel(e){if(this.disablePagination)return;const i=this._items?this._items.toArray()[e]:null;if(!i)return;const o=this._tabListContainer.nativeElement.offsetWidth,{offsetLeft:r,offsetWidth:s}=i.elementRef.nativeElement;let a,l;"ltr"==this._getLayoutDirection()?(a=r,l=a+s):(l=this._tabListInner.nativeElement.offsetWidth-r,a=l-s);const c=this.scrollDistance,f=this.scrollDistance+o;af&&(this.scrollDistance+=Math.min(l-f,a-c))}_checkPaginationEnabled(){if(this.disablePagination)this._showPaginationControls=!1;else{const o=this._tabListInner.nativeElement.scrollWidth-this._elementRef.nativeElement.offsetWidth>=5;o||(this.scrollDistance=0),o!==this._showPaginationControls&&(this._showPaginationControls=o,this._changeDetectorRef.markForCheck())}}_checkScrollingControls(){this.disablePagination?this._disableScrollAfter=this._disableScrollBefore=!0:(this._disableScrollBefore=0==this.scrollDistance,this._disableScrollAfter=this.scrollDistance==this._getMaxScrollDistance(),this._changeDetectorRef.markForCheck())}_getMaxScrollDistance(){return this._tabListInner.nativeElement.scrollWidth-this._tabListContainer.nativeElement.offsetWidth||0}_alignInkBarToSelectedTab(){const e=this._items&&this._items.length?this._items.toArray()[this.selectedIndex]:null,i=e?e.elementRef.nativeElement:null;i?this._inkBar.alignToElement(i):this._inkBar.hide()}_stopInterval(){this._stopScrolling.next()}_handlePaginatorPress(e,i){i&&null!=i.button&&0!==i.button||(this._stopInterval(),xa(650,100).pipe(fn(Cr(this._stopScrolling,this._destroyed))).subscribe(()=>{const{maxScrollDistance:o,distance:r}=this._scrollHeader(e);(0===r||r>=o)&&this._stopInterval()}))}_scrollTo(e){if(this.disablePagination)return{maxScrollDistance:0,distance:0};const i=this._getMaxScrollDistance();return this._scrollDistance=Math.max(0,Math.min(i,e)),this._scrollDistanceChanged=!0,this._checkScrollingControls(),{maxScrollDistance:i,distance:this._scrollDistance}}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,inputs:{disablePagination:[2,"disablePagination","disablePagination",De],selectedIndex:[2,"selectedIndex","selectedIndex",hr]},outputs:{selectFocusedIndex:"selectFocusedIndex",indexFocused:"indexFocused"}})}return t})(),dDe=(()=>{class t extends cDe{_items;_tabListContainer;_tabList;_tabListInner;_nextPaginator;_previousPaginator;_inkBar;ariaLabel;ariaLabelledby;disableRipple=!1;ngAfterContentInit(){this._inkBar=new rDe(this._items),super.ngAfterContentInit()}_itemSelected(e){e.preventDefault()}static \u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})();static \u0275cmp=re({type:t,selectors:[["mat-tab-header"]],contentQueries:function(i,o,r){if(1&i&&ys(r,QH,4),2&i){let s;he(s=fe())&&(o._items=s)}},viewQuery:function(i,o){if(1&i&&ot(Hke,7)(jke,7)(Uke,7)(zke,5)($ke,5),2&i){let r;he(r=fe())&&(o._tabListContainer=r.first),he(r=fe())&&(o._tabList=r.first),he(r=fe())&&(o._tabListInner=r.first),he(r=fe())&&(o._nextPaginator=r.first),he(r=fe())&&(o._previousPaginator=r.first)}},hostAttrs:[1,"mat-mdc-tab-header"],hostVars:4,hostBindings:function(i,o){2&i&&Ie("mat-mdc-tab-header-pagination-controls-enabled",o._showPaginationControls)("mat-mdc-tab-header-rtl","rtl"==o._getLayoutDirection())},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],disableRipple:[2,"disableRipple","disableRipple",De]},features:[be],ngContentSelectors:yD,decls:13,vars:10,consts:[["previousPaginator",""],["tabListContainer",""],["tabList",""],["tabListInner",""],["nextPaginator",""],["mat-ripple","",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-before",3,"click","mousedown","touchend","matRippleDisabled"],[1,"mat-mdc-tab-header-pagination-chevron"],[1,"mat-mdc-tab-label-container",3,"keydown"],["role","tablist",1,"mat-mdc-tab-list",3,"cdkObserveContent"],[1,"mat-mdc-tab-labels"],["mat-ripple","",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-after",3,"mousedown","click","touchend","matRippleDisabled"]],template:function(i,o){1&i&&(yi(),h(0,"div",5,0),F("click",function(){return o._handlePaginatorClick("before")})("mousedown",function(s){return o._handlePaginatorPress("before",s)})("touchend",function(){return o._stopInterval()}),B(2,"div",6),u(),h(3,"div",7,1),F("keydown",function(s){return o._handleKeydown(s)}),h(5,"div",8,2),F("cdkObserveContent",function(){return o._onContentChanges()}),h(7,"div",9,3),Pt(9),u()()(),h(10,"div",10,4),F("mousedown",function(s){return o._handlePaginatorPress("after",s)})("click",function(){return o._handlePaginatorClick("after")})("touchend",function(){return o._stopInterval()}),B(12,"div",6),u()),2&i&&(Ie("mat-mdc-tab-header-pagination-disabled",o._disableScrollBefore),C("matRippleDisabled",o._disableScrollBefore||o.disableRipple),d(3),Ie("_mat-animation-noopable",o._animationsDisabled),d(2),$e("aria-label",o.ariaLabel||null)("aria-labelledby",o.ariaLabelledby||null),d(5),Ie("mat-mdc-tab-header-pagination-disabled",o._disableScrollAfter),C("matRippleDisabled",o._disableScrollAfter||o.disableRipple))},dependencies:[eu,xde],styles:[".mat-mdc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mdc-tab-indicator .mdc-tab-indicator__content{transition-duration:var(--mat-tab-animation-duration, 250ms)}.mat-mdc-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;outline:0}.mat-mdc-tab-header-pagination::-moz-focus-inner{border:0}.mat-mdc-tab-header-pagination .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab-header-pagination-controls-enabled .mat-mdc-tab-header-pagination{display:flex}.mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after{padding-left:4px}.mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-pagination-after{padding-right:4px}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-mdc-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px;border-color:var(--mat-tab-pagination-icon-color, var(--mat-sys-on-surface))}.mat-mdc-tab-header-pagination-disabled{box-shadow:none;cursor:default;pointer-events:none}.mat-mdc-tab-header-pagination-disabled .mat-mdc-tab-header-pagination-chevron{opacity:.4}.mat-mdc-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-mdc-tab-list{transition:none}.mat-mdc-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1;border-bottom-style:solid;border-bottom-width:var(--mat-tab-divider-height, 1px);border-bottom-color:var(--mat-tab-divider-color, var(--mat-sys-surface-variant))}.mat-mdc-tab-group-inverted-header .mat-mdc-tab-label-container{border-bottom:none;border-top-style:solid;border-top-width:var(--mat-tab-divider-height, 1px);border-top-color:var(--mat-tab-divider-color, var(--mat-sys-surface-variant))}.mat-mdc-tab-labels{display:flex;flex:1 0 auto}[mat-align-tabs=center]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:flex-end}.cdk-drop-list .mat-mdc-tab-labels,.mat-mdc-tab-labels.cdk-drop-list{min-height:var(--mat-tab-container-height, 48px)}.mat-mdc-tab::before{margin:5px}@media(forced-colors: active){.mat-mdc-tab[aria-disabled=true]{color:GrayText}}\n"],encapsulation:2})}return t})();const uDe=new Z("MAT_TABS_CONFIG");let e6=(()=>{class t extends Xl{_host=D(wD);_ngZone=D(_e);_centeringSub=pt.EMPTY;_leavingSub=pt.EMPTY;constructor(){super()}ngOnInit(){super.ngOnInit(),this._centeringSub=this._host._beforeCentering.pipe(si(this._host._isCenterPosition())).subscribe(e=>{this._host._content&&e&&!this.hasAttached()&&this._ngZone.run(()=>{Promise.resolve().then(),this.attach(this._host._content)})}),this._leavingSub=this._host._afterLeavingCenter.subscribe(()=>{this._host.preserveContent||this._ngZone.run(()=>this.detach())})}ngOnDestroy(){super.ngOnDestroy(),this._centeringSub.unsubscribe(),this._leavingSub.unsubscribe()}static \u0275fac=function(i){return new(i||t)};static \u0275dir=de({type:t,selectors:[["","matTabBodyHost",""]],features:[be]})}return t})(),wD=(()=>{class t{_elementRef=D(Re);_dir=D(br,{optional:!0});_ngZone=D(_e);_injector=D(He);_renderer=D(Qn);_diAnimationsDisabled=ci();_eventCleanups;_initialized=!1;_fallbackTimer;_positionIndex;_dirChangeSubscription=pt.EMPTY;_position;_previousPosition;_onCentering=new we;_beforeCentering=new we;_afterLeavingCenter=new we;_onCentered=new we(!0);_portalHost;_contentElement;_content;animationDuration="500ms";preserveContent=!1;set position(e){this._positionIndex=e,this._computePositionAnimationState()}constructor(){if(this._dir){const e=D(Jt);this._dirChangeSubscription=this._dir.change.subscribe(i=>{this._computePositionAnimationState(i),e.markForCheck()})}}ngOnInit(){this._bindTransitionEvents(),"center"===this._position&&(this._setActiveClass(!0),Vi(()=>this._onCentering.emit(this._elementRef.nativeElement.clientHeight),{injector:this._injector})),this._initialized=!0}ngOnDestroy(){clearTimeout(this._fallbackTimer),this._eventCleanups?.forEach(e=>e()),this._dirChangeSubscription.unsubscribe()}_bindTransitionEvents(){this._ngZone.runOutsideAngular(()=>{const e=this._elementRef.nativeElement,i=o=>{o.target===this._contentElement?.nativeElement&&(this._elementRef.nativeElement.classList.remove("mat-tab-body-animating"),"transitionend"===o.type&&this._transitionDone())};this._eventCleanups=[this._renderer.listen(e,"transitionstart",o=>{o.target===this._contentElement?.nativeElement&&(this._elementRef.nativeElement.classList.add("mat-tab-body-animating"),this._transitionStarted())}),this._renderer.listen(e,"transitionend",i),this._renderer.listen(e,"transitioncancel",i)]})}_transitionStarted(){clearTimeout(this._fallbackTimer);const e="center"===this._position;this._beforeCentering.emit(e),e&&this._onCentering.emit(this._elementRef.nativeElement.clientHeight)}_transitionDone(){"center"===this._position?this._onCentered.emit():"center"===this._previousPosition&&this._afterLeavingCenter.emit()}_setActiveClass(e){this._elementRef.nativeElement.classList.toggle("mat-mdc-tab-body-active",e)}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_isCenterPosition(){return 0===this._positionIndex}_computePositionAnimationState(e=this._getLayoutDirection()){this._previousPosition=this._position,this._position=this._positionIndex<0?"ltr"==e?"left":"right":this._positionIndex>0?"ltr"==e?"right":"left":"center",this._animationsDisabled()?this._simulateTransitionEvents():this._initialized&&("center"===this._position||"center"===this._previousPosition)&&(clearTimeout(this._fallbackTimer),this._fallbackTimer=this._ngZone.runOutsideAngular(()=>setTimeout(()=>this._simulateTransitionEvents(),100)))}_simulateTransitionEvents(){this._transitionStarted(),Vi(()=>this._transitionDone(),{injector:this._injector})}_animationsDisabled(){return this._diAnimationsDisabled||"0ms"===this.animationDuration||"0s"===this.animationDuration}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-tab-body"]],viewQuery:function(i,o){if(1&i&&ot(e6,5)(Wke,5),2&i){let r;he(r=fe())&&(o._portalHost=r.first),he(r=fe())&&(o._contentElement=r.first)}},hostAttrs:[1,"mat-mdc-tab-body"],hostVars:1,hostBindings:function(i,o){2&i&&$e("inert","center"===o._position?null:"")},inputs:{_content:[0,"content","_content"],animationDuration:"animationDuration",preserveContent:"preserveContent",position:"position"},outputs:{_onCentering:"_onCentering",_beforeCentering:"_beforeCentering",_onCentered:"_onCentered"},decls:3,vars:6,consts:[["content",""],["cdkScrollable","",1,"mat-mdc-tab-body-content"],["matTabBodyHost",""]],template:function(i,o){1&i&&(h(0,"div",1,0),it(2,Gke,0,0,"ng-template",2),u()),2&i&&Ie("mat-tab-body-content-left","left"===o._position)("mat-tab-body-content-right","right"===o._position)("mat-tab-body-content-can-animate","center"===o._position||"center"===o._previousPosition)},dependencies:[e6,H3],styles:[".mat-mdc-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-mdc-tab-body.mat-mdc-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-mdc-tab-group.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body.mat-mdc-tab-body-active{overflow-y:hidden}.mat-mdc-tab-body-content{height:100%;overflow:auto;transform:none;visibility:hidden}.mat-tab-body-animating>.mat-mdc-tab-body-content,.mat-mdc-tab-body-active>.mat-mdc-tab-body-content{visibility:visible}.mat-tab-body-animating>.mat-mdc-tab-body-content{min-height:1px}.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body-content{overflow:hidden}.mat-tab-body-content-can-animate{transition:transform var(--mat-tab-animation-duration) 1ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable .mat-tab-body-content-can-animate{transition:none}.mat-tab-body-content-left{transform:translate3d(-100%, 0, 0)}.mat-tab-body-content-right{transform:translate3d(100%, 0, 0)}\n"],encapsulation:2})}return t})(),hDe=(()=>{class t{_elementRef=D(Re);_changeDetectorRef=D(Jt);_ngZone=D(_e);_tabsSubscription=pt.EMPTY;_tabLabelSubscription=pt.EMPTY;_tabBodySubscription=pt.EMPTY;_diAnimationsDisabled=ci();_allTabs;_tabBodies;_tabBodyWrapper;_tabHeader;_tabs=new id;_indexToSelect=0;_lastFocusedTabIndex=null;_tabBodyWrapperHeight=0;color;get fitInkBarToContent(){return this._fitInkBarToContent}set fitInkBarToContent(e){this._fitInkBarToContent=e,this._changeDetectorRef.markForCheck()}_fitInkBarToContent=!1;stretchTabs=!0;alignTabs=null;dynamicHeight=!1;get selectedIndex(){return this._selectedIndex}set selectedIndex(e){this._indexToSelect=isNaN(e)?null:e}_selectedIndex=null;headerPosition="above";get animationDuration(){return this._animationDuration}set animationDuration(e){const i=e+"";this._animationDuration=/^\d+$/.test(i)?e+"ms":i}_animationDuration;get contentTabIndex(){return this._contentTabIndex}set contentTabIndex(e){this._contentTabIndex=isNaN(e)?null:e}_contentTabIndex=null;disablePagination=!1;disableRipple=!1;preserveContent=!1;get backgroundColor(){return this._backgroundColor}set backgroundColor(e){const i=this._elementRef.nativeElement.classList;i.remove("mat-tabs-with-background",`mat-background-${this.backgroundColor}`),e&&i.add("mat-tabs-with-background",`mat-background-${e}`),this._backgroundColor=e}_backgroundColor;ariaLabel;ariaLabelledby;selectedIndexChange=new we;focusChange=new we;animationDone=new we;selectedTabChange=new we(!0);_groupId;_isServer=!D(Yn).isBrowser;constructor(){const e=D(uDe,{optional:!0});this._groupId=D(ni).getId("mat-tab-group-"),this.animationDuration=e&&e.animationDuration?e.animationDuration:"500ms",this.disablePagination=!(!e||null==e.disablePagination)&&e.disablePagination,this.dynamicHeight=!(!e||null==e.dynamicHeight)&&e.dynamicHeight,null!=e?.contentTabIndex&&(this.contentTabIndex=e.contentTabIndex),this.preserveContent=!!e?.preserveContent,this.fitInkBarToContent=!(!e||null==e.fitInkBarToContent)&&e.fitInkBarToContent,this.stretchTabs=!e||null==e.stretchTabs||e.stretchTabs,this.alignTabs=e&&null!=e.alignTabs?e.alignTabs:null}ngAfterContentChecked(){const e=this._indexToSelect=this._clampTabIndex(this._indexToSelect);if(this._selectedIndex!=e){const i=null==this._selectedIndex;if(!i){this.selectedTabChange.emit(this._createChangeEvent(e));const o=this._tabBodyWrapper.nativeElement;o.style.minHeight=o.clientHeight+"px"}Promise.resolve().then(()=>{this._tabs.forEach((o,r)=>o.isActive=r===e),i||(this.selectedIndexChange.emit(e),this._tabBodyWrapper.nativeElement.style.minHeight="")})}this._tabs.forEach((i,o)=>{i.position=o-e,null!=this._selectedIndex&&0==i.position&&!i.origin&&(i.origin=e-this._selectedIndex)}),this._selectedIndex!==e&&(this._selectedIndex=e,this._lastFocusedTabIndex=null,this._changeDetectorRef.markForCheck())}ngAfterContentInit(){this._subscribeToAllTabChanges(),this._subscribeToTabLabels(),this._tabsSubscription=this._tabs.changes.subscribe(()=>{const e=this._clampTabIndex(this._indexToSelect);if(e===this._selectedIndex){const i=this._tabs.toArray();let o;for(let r=0;r{i[e].isActive=!0,this.selectedTabChange.emit(this._createChangeEvent(e))})}this._changeDetectorRef.markForCheck()})}ngAfterViewInit(){this._tabBodySubscription=this._tabBodies.changes.subscribe(()=>this._bodyCentered(!0))}_subscribeToAllTabChanges(){this._allTabs.changes.pipe(si(this._allTabs)).subscribe(e=>{this._tabs.reset(e.filter(i=>i._closestTabGroup===this||!i._closestTabGroup)),this._tabs.notifyOnChanges()})}ngOnDestroy(){this._tabs.destroy(),this._tabsSubscription.unsubscribe(),this._tabLabelSubscription.unsubscribe(),this._tabBodySubscription.unsubscribe()}realignInkBar(){this._tabHeader&&this._tabHeader._alignInkBarToSelectedTab()}updatePagination(){this._tabHeader&&this._tabHeader.updatePagination()}focusTab(e){const i=this._tabHeader;i&&(i.focusIndex=e)}_focusChanged(e){this._lastFocusedTabIndex=e,this.focusChange.emit(this._createChangeEvent(e))}_createChangeEvent(e){const i=new fDe;return i.index=e,this._tabs&&this._tabs.length&&(i.tab=this._tabs.toArray()[e]),i}_subscribeToTabLabels(){this._tabLabelSubscription&&this._tabLabelSubscription.unsubscribe(),this._tabLabelSubscription=Cr(...this._tabs.map(e=>e._stateChanges)).subscribe(()=>this._changeDetectorRef.markForCheck())}_clampTabIndex(e){return Math.min(this._tabs.length-1,Math.max(e||0,0))}_getTabLabelId(e,i){return e.id||`${this._groupId}-label-${i}`}_getTabContentId(e){return`${this._groupId}-content-${e}`}_setTabBodyWrapperHeight(e){if(!this.dynamicHeight||!this._tabBodyWrapperHeight)return void(this._tabBodyWrapperHeight=e);const i=this._tabBodyWrapper.nativeElement;i.style.height=this._tabBodyWrapperHeight+"px",this._tabBodyWrapper.nativeElement.offsetHeight&&(i.style.height=e+"px")}_removeTabBodyWrapperHeight(){const e=this._tabBodyWrapper.nativeElement;this._tabBodyWrapperHeight=e.clientHeight,e.style.height="",this._ngZone.run(()=>this.animationDone.emit())}_handleClick(e,i,o){i.focusIndex=o,e.disabled||(this.selectedIndex=o)}_getTabIndex(e){return e===(this._lastFocusedTabIndex??this.selectedIndex)?0:-1}_tabFocusChanged(e,i){e&&"mouse"!==e&&"touch"!==e&&(this._tabHeader.focusIndex=i)}_bodyCentered(e){e&&this._tabBodies?.forEach((i,o)=>i._setActiveClass(o===this._selectedIndex))}_animationsDisabled(){return this._diAnimationsDisabled||"0"===this.animationDuration||"0ms"===this.animationDuration}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-tab-group"]],contentQueries:function(i,o,r){if(1&i&&ys(r,XH,5),2&i){let s;he(s=fe())&&(o._allTabs=s)}},viewQuery:function(i,o){if(1&i&&ot(qke,5)(Kke,5)(wD,5),2&i){let r;he(r=fe())&&(o._tabBodyWrapper=r.first),he(r=fe())&&(o._tabHeader=r.first),he(r=fe())&&(o._tabBodies=r)}},hostAttrs:[1,"mat-mdc-tab-group"],hostVars:11,hostBindings:function(i,o){2&i&&($e("mat-align-tabs",o.alignTabs),Ze("mat-"+(o.color||"primary")),Md("--mat-tab-animation-duration",o.animationDuration),Ie("mat-mdc-tab-group-dynamic-height",o.dynamicHeight)("mat-mdc-tab-group-inverted-header","below"===o.headerPosition)("mat-mdc-tab-group-stretch-tabs",o.stretchTabs))},inputs:{color:"color",fitInkBarToContent:[2,"fitInkBarToContent","fitInkBarToContent",De],stretchTabs:[2,"mat-stretch-tabs","stretchTabs",De],alignTabs:[0,"mat-align-tabs","alignTabs"],dynamicHeight:[2,"dynamicHeight","dynamicHeight",De],selectedIndex:[2,"selectedIndex","selectedIndex",hr],headerPosition:"headerPosition",animationDuration:"animationDuration",contentTabIndex:[2,"contentTabIndex","contentTabIndex",hr],disablePagination:[2,"disablePagination","disablePagination",De],disableRipple:[2,"disableRipple","disableRipple",De],preserveContent:[2,"preserveContent","preserveContent",De],backgroundColor:"backgroundColor",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"]},outputs:{selectedIndexChange:"selectedIndexChange",focusChange:"focusChange",animationDone:"animationDone",selectedTabChange:"selectedTabChange"},exportAs:["matTabGroup"],features:[lt([{provide:YH,useExisting:t}])],ngContentSelectors:yD,decls:9,vars:8,consts:[["tabHeader",""],["tabBodyWrapper",""],["tabNode",""],[3,"indexFocused","selectFocusedIndex","selectedIndex","disableRipple","disablePagination","aria-label","aria-labelledby"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-focus-indicator",3,"id","mdc-tab--active","class","disabled","fitInkBarToContent"],[1,"mat-mdc-tab-body-wrapper"],["role","tabpanel",3,"id","class","content","position","animationDuration","preserveContent"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-focus-indicator",3,"click","cdkFocusChange","id","disabled","fitInkBarToContent"],[1,"mdc-tab__ripple"],["mat-ripple","",1,"mat-mdc-tab-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mdc-tab__content"],[1,"mdc-tab__text-label"],[3,"cdkPortalOutlet"],["role","tabpanel",3,"_onCentered","_onCentering","_beforeCentering","id","content","position","animationDuration","preserveContent"]],template:function(i,o){1&i&&(yi(),h(0,"mat-tab-header",3,0),F("indexFocused",function(s){return o._focusChanged(s)})("selectFocusedIndex",function(s){return o.selectedIndex=s}),ve(2,Qke,8,17,"div",4,Fe),u(),x(4,Jke,1,0),h(5,"div",5,1),ve(7,eDe,1,10,"mat-tab-body",6,Fe),u()),2&i&&(C("selectedIndex",o.selectedIndex||0)("disableRipple",o.disableRipple)("disablePagination",o.disablePagination),y0("aria-label",o.ariaLabel)("aria-labelledby",o.ariaLabelledby),d(2),ye(o._tabs),d(2),S(o._isServer?4:-1),d(),Ie("_mat-animation-noopable",o._animationsDisabled()),d(2),ye(o._tabs))},dependencies:[dDe,QH,Gde,eu,Xl,wD],styles:['.mdc-tab{min-width:90px;padding:0 24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;z-index:1;touch-action:manipulation}.mdc-tab__content{display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__text-label{transition:150ms color linear;display:inline-block;line-height:1;z-index:2}.mdc-tab--active .mdc-tab__text-label{transition-delay:100ms}._mat-animation-noopable .mdc-tab__text-label{transition:none}.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator__content{transition:var(--mat-tab-animation-duration, 250ms) transform cubic-bezier(0.4, 0, 0.2, 1);transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:1}._mat-animation-noopable .mdc-tab-indicator__content,.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mat-mdc-tab-ripple.mat-mdc-tab-ripple{position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none}.mat-mdc-tab{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none;background:none;height:var(--mat-tab-container-height, 48px);font-family:var(--mat-tab-label-text-font, var(--mat-sys-title-small-font));font-size:var(--mat-tab-label-text-size, var(--mat-sys-title-small-size));letter-spacing:var(--mat-tab-label-text-tracking, var(--mat-sys-title-small-tracking));line-height:var(--mat-tab-label-text-line-height, var(--mat-sys-title-small-line-height));font-weight:var(--mat-tab-label-text-weight, var(--mat-sys-title-small-weight))}.mat-mdc-tab.mdc-tab{flex-grow:0}.mat-mdc-tab .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-indicator-color, var(--mat-sys-primary));border-top-width:var(--mat-tab-active-indicator-height, 2px);border-radius:var(--mat-tab-active-indicator-shape, 0)}.mat-mdc-tab:hover .mdc-tab__text-label{color:var(--mat-tab-inactive-hover-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab:focus .mdc-tab__text-label{color:var(--mat-tab-inactive-focus-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-active-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__ripple::before,.mat-mdc-tab.mdc-tab--active .mat-ripple-element{background-color:var(--mat-tab-active-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab__text-label{color:var(--mat-tab-active-hover-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-hover-indicator-color, var(--mat-sys-primary))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-active-focus-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-active-focus-indicator-color, var(--mat-sys-primary))}.mat-mdc-tab.mat-mdc-tab-disabled{opacity:.4;pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__content{pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple::before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element{background-color:var(--mat-tab-disabled-ripple-color, var(--mat-sys-on-surface-variant))}.mat-mdc-tab .mdc-tab__ripple::before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-inactive-label-text-color, var(--mat-sys-on-surface));display:inline-flex;align-items:center}.mat-mdc-tab .mdc-tab__content{position:relative;pointer-events:auto}.mat-mdc-tab:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-inactive-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-tab-group.mat-mdc-tab-group-stretch-tabs>.mat-mdc-tab-header .mat-mdc-tab{flex-grow:1}.mat-mdc-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-tab-background-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab__text-label{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-focus-indicator::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-focus-indicator::before{border-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab__ripple::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-foreground-color)}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header{flex-direction:column-reverse}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header .mdc-tab-indicator__content--underline{align-self:flex-start}.mat-mdc-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable{transition:none !important;animation:none !important}\n'],encapsulation:2})}return t})();class fDe{index;tab}let pDe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ii]})}return t})(),mDe=(()=>{class t{constructor(e){this.dialog=e,this.tabNames=[""],this.selectedTab=0,this.tabChanged=new we}ngOnDestroy(){this.tabChanged.complete()}showTabSelector(){const e=[];this.tabNames.forEach((i,o)=>{e.push({icon:o===this.selectedTab?"check":"",label:i})}),ao.openDialog(this.dialog,e,"node.logs.filter-title").afterClosed().subscribe(i=>{this.tabChanged.emit(i-1)})}static{this.\u0275fac=function(i){return new(i||t)(O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-tab-selector"]],inputs:{tabNames:"tabNames",selectedTab:"selectedTab"},outputs:{tabChanged:"tabChanged"},standalone:!1,decls:9,vars:4,consts:[[1,"top-dialog-button",3,"click"],[1,"top-dialog-button-content"],[1,"tab-name"],[1,"icon",3,"inline"],[1,"top-dialog-button-margin"]],template:function(i,o){1&i&&(h(0,"div",0),F("click",function(){return o.showTabSelector()}),h(1,"div",1)(2,"div",2)(3,"span"),p(4),b(5,"translate"),u()(),h(6,"mat-icon",3),p(7,"expand_more"),u()(),B(8,"div",4),u()),2&i&&(d(4),M(y(5,2,o.tabNames[o.selectedTab])),d(2),C("inline",!0))},dependencies:[We,xe],styles:[".top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%]{display:flex}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .tab-name[_ngcontent-%COMP%]{flex-grow:1;margin-right:10px;align-self:center}.top-dialog-button[_ngcontent-%COMP%] .top-dialog-button-content[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:20px;flex-shrink:0;align-self:center}"]})}}return t})();const gDe=["button"],_De=["settingsButton"],bDe=["firstInput"],vDe=["tabGroup"],Dc=t=>({"element-disabled":t}),t6=t=>({highlighted:t}),yDe=(t,n)=>({currentElementsRange:t,totalElements:n}),CDe=t=>({number:t});function wDe(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.vpn-socks-client-settings.remote-key-length-error")))}function xDe(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.vpn-socks-client-settings.remote-key-chars-error")))}function SDe(t,n){if(1&t&&(h(0,"mat-form-field",10)(1,"div",11)(2,"label",12),p(3),b(4,"translate"),u(),B(5,"input",20),u()()),2&t){const e=v();C("ngClass",se(4,Dc,e.disableDismiss)),d(3),M(y(4,2,"apps.vpn-socks-client-settings.password"))}}function kDe(t,n){1&t&&(h(0,"div",14)(1,"mat-icon",21),p(2,"warning"),u(),p(3),b(4,"translate"),u()),2&t&&(d(),C("inline",!0),d(2),E(" ",y(4,2,"apps.vpn-socks-client-settings.password-history-warning")," "))}function DDe(t,n){1&t&&B(0,"app-loading-indicator",16),2&t&&C("showWhite",!1)}function MDe(t,n){1&t&&(h(0,"div",17)(1,"mat-icon",21),p(2,"error"),u(),p(3),b(4,"translate"),u()),2&t&&(d(),C("inline",!0),d(2),E(" ",y(4,2,"apps.vpn-socks-client-settings.no-elements")," "))}function TDe(t,n){1&t&&(h(0,"div",25),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"apps.vpn-socks-client-settings.no-filter")," "))}function EDe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().$implicit[1])," ")}function PDe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit[2]," ")}function IDe(t,n){if(1&t&&(h(0,"div",25)(1,"span"),p(2),b(3,"translate"),u(),x(4,EDe,2,3),x(5,PDe,1,1),u()),2&t){const e=n.$implicit;d(2),E("",y(3,3,e[0])," "),d(2),S(e[1]?4:-1),d(),S(e[2]?5:-1)}}function ODe(t,n){1&t&&(h(0,"div",17)(1,"mat-icon",21),p(2,"error"),u(),p(3),b(4,"translate"),u()),2&t&&(d(),C("inline",!0),d(2),E(" ",y(4,2,"apps.vpn-socks-client-settings.no-elements-for-filters")," "))}function ADe(t,n){if(1&t&&(h(0,"span",10),p(1),u()),2&t){const e=n.$implicit;C("ngClass",se(2,t6,n.$index%2!=0)),d(),M(e)}}function RDe(t,n){if(1&t&&(h(0,"div",31),B(1,"div"),u()),2&t){const e=v(2).$implicit;d(),no("background-image: url('assets/img/flags/"+e.country.toLocaleLowerCase()+".png');")}}function FDe(t,n){if(1&t&&(h(0,"span",10),p(1),u()),2&t){const e=n.$implicit;C("ngClass",se(2,t6,n.$index%2!=0)),d(),M(e)}}function NDe(t,n){if(1&t&&(h(0,"div",25)(1,"span"),p(2),b(3,"translate"),u(),h(4,"span"),p(5,"\xa0 "),x(6,RDe,2,2,"div",31),ve(7,FDe,2,4,"span",10,Fe),u()()),2&t){const e=v().$implicit,i=v(2);d(2),M(y(3,2,"apps.vpn-socks-client-settings.location")),d(4),S(e.country?6:-1),d(),ye(i.getHighlightedTextParts(e.location,i.currentFilters.location))}}function LDe(t,n){if(1&t){const e=oe();h(0,"div",19)(1,"button",27),F("click",function(){const o=j(e).$implicit;return U(v(2).saveChanges(o.pk,null,!1,o.location))}),h(2,"div",28)(3,"div",25)(4,"span"),p(5),b(6,"translate"),u(),h(7,"span"),p(8,"\xa0"),ve(9,ADe,2,4,"span",10,Fe),u()(),x(11,NDe,9,4,"div",25),u()(),h(12,"button",29),b(13,"translate"),F("click",function(){const o=j(e).$implicit;return U(v(2).copyPk(o.pk))}),h(14,"mat-icon",30),p(15,"filter_none"),u()()()}if(2&t){const e=n.$implicit,i=v(2);d(),C("ngClass",se(9,Dc,i.disableDismiss)),d(4),M(y(6,5,"apps.vpn-socks-client-settings.key")),d(4),ye(i.getHighlightedTextParts(e.pk,i.currentFilters.key)),d(2),S(e.location?11:-1),d(),C("matTooltip",y(13,7,"apps.vpn-socks-client-settings.copy-pk-info")),d(2),C("inline",!0)}}function BDe(t,n){if(1&t){const e=oe();h(0,"button",22),F("click",function(){return j(e),U(v().changeFilters())}),h(1,"div",23)(2,"div",24)(3,"mat-icon",21),p(4,"filter_list"),u()(),h(5,"div"),x(6,TDe,3,3,"div",25),ve(7,IDe,6,5,"div",25,Fe),h(9,"div",26),p(10),b(11,"translate"),u()()()(),x(12,ODe,5,4,"div",17),ve(13,LDe,16,11,"div",19,Fe)}if(2&t){const e=v();d(3),C("inline",!0),d(3),S(0===e.currentFiltersTexts.length?6:-1),d(),ye(e.currentFiltersTexts),d(3),M(y(11,4,"apps.vpn-socks-client-settings.click-to-change")),d(2),S(0===e.filteredProxiesFromDiscovery.length?12:-1),d(),ye(e.proxiesFromDiscoveryToShow)}}function VDe(t,n){if(1&t){const e=oe();h(0,"div",18)(1,"span"),p(2),b(3,"translate"),u(),h(4,"button",32),F("click",function(){return j(e),U(v().goToPreviousPage())}),h(5,"mat-icon"),p(6,"chevron_left"),u()(),h(7,"button",32),F("click",function(){return j(e),U(v().goToNextPage())}),h(8,"mat-icon"),p(9,"chevron_right"),u()()()}if(2&t){const e=v();d(2),M(pe(3,1,"apps.vpn-socks-client-settings.pagination-info",_t(4,yDe,e.currentRange,e.filteredProxiesFromDiscovery.length)))}}function HDe(t,n){if(1&t&&(h(0,"div")(1,"div",17)(2,"mat-icon",21),p(3,"error"),u(),p(4),b(5,"translate"),u()()),2&t){const e=v();d(2),C("inline",!0),d(2),E(" ",pe(5,2,"apps.vpn-socks-client-settings.no-history",se(5,CDe,e.maxHistoryElements))," ")}}function jDe(t,n){1&t&&dr(0)}function UDe(t,n){1&t&&dr(0)}function zDe(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v(2).$implicit;d(),E(" ",e.note)}}function $De(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"apps.vpn-socks-client-settings.note-entered-manually")))}function WDe(t,n){if(1&t&&(h(0,"span"),p(1),u()),2&t){const e=v(4).$implicit;d(),E(" (",e.location,")")}}function GDe(t,n){if(1&t&&(h(0,"span"),p(1),b(2,"translate"),u(),x(3,WDe,2,1,"span")),2&t){const e=v(3).$implicit;d(),E(" ",y(2,2,"apps.vpn-socks-client-settings.note-obtained")),d(2),S(e.location?3:-1)}}function qDe(t,n){if(1&t&&(x(0,$De,3,3,"span"),x(1,GDe,4,4)),2&t){const e=v(2).$implicit;S(e.enteredManually?0:-1),d(),S(e.enteredManually?-1:1)}}function KDe(t,n){if(1&t&&(h(0,"div",37)(1,"div",38)(2,"div",25)(3,"span"),p(4),b(5,"translate"),u(),h(6,"span"),p(7),u()(),h(8,"div",25)(9,"span"),p(10),b(11,"translate"),u(),x(12,zDe,2,1,"span"),x(13,qDe,2,2),u()(),h(14,"div",39)(15,"div",40)(16,"mat-icon",21),p(17,"add"),u()()()()),2&t){const e=v().$implicit;d(4),M(y(5,6,"apps.vpn-socks-client-settings.key")),d(3),E(" ",e.key),d(3),M(y(11,8,"apps.vpn-socks-client-settings.note")),d(2),S(e.note?12:-1),d(),S(e.note?-1:13),d(3),C("inline",!0)}}function YDe(t,n){if(1&t){const e=oe();h(0,"div",19)(1,"button",33),F("click",function(){const o=j(e).$implicit;return U(v().useFromHistory(o))}),it(2,jDe,1,0,"ng-container",34),u(),h(3,"button",35),b(4,"translate"),F("click",function(){const o=j(e).$implicit;return U(v().changeNote(o))}),h(5,"mat-icon",30),p(6,"edit"),u()(),h(7,"button",35),b(8,"translate"),F("click",function(){const o=j(e).$implicit;return U(v().removeFromHistory(o.key))}),h(9,"mat-icon",30),p(10,"close"),u()(),h(11,"button",36),F("click",function(){const o=j(e).$implicit;return U(v().openHistoryOptions(o))}),it(12,UDe,1,0,"ng-container",34),u(),it(13,KDe,18,10,"ng-template",null,0,Rl),u()}if(2&t){const e=Hn(14),i=v();d(),C("ngClass",se(12,Dc,i.disableDismiss)),d(),C("ngTemplateOutlet",e),d(),C("matTooltip",y(4,8,"apps.vpn-socks-client-settings.change-note")),d(2),C("inline",!0),d(2),C("matTooltip",y(8,10,"apps.vpn-socks-client-settings.remove-entry")),d(2),C("inline",!0),d(2),C("ngClass",se(14,Dc,i.disableDismiss)),d(),C("ngTemplateOutlet",e)}}function XDe(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.vpn-socks-client-settings.dns-error")))}function ZDe(t,n){1&t&&(h(0,"div",45)(1,"mat-icon",21),p(2,"warning"),u(),p(3),b(4,"translate"),u()),2&t&&(d(),C("inline",!0),d(2),E(" ",y(4,2,"apps.vpn-socks-client-settings.settings-changed-alert")," "))}function QDe(t,n){if(1&t){const e=oe();h(0,"mat-tab",8),b(1,"translate"),h(2,"form",9)(3,"mat-form-field",10)(4,"div",11)(5,"label",12),p(6),b(7,"translate"),u(),B(8,"input",41),u(),h(9,"mat-error"),x(10,XDe,3,3,"span"),u()(),h(11,"div",42)(12,"mat-checkbox",43),p(13),b(14,"translate"),h(15,"mat-icon",44),b(16,"translate"),p(17,"help"),u()()(),x(18,ZDe,5,4,"div",45),h(19,"app-button",15,4),F("action",function(){return j(e),U(v().saveSettings())}),p(21),b(22,"translate"),u()()()}if(2&t){const e=v();C("label",y(1,12,e.tabLabels[3])),d(2),C("formGroup",e.settingsForm),d(),C("ngClass",se(22,Dc,e.disableDismiss)),d(3),M(y(7,14,"apps.vpn-socks-client-settings.dns")),d(4),S(e.settingsForm.get("dns").valid?-1:10),d(2),C("ngClass",se(24,Dc,e.disableDismiss)),d(),E(" ",y(14,16,"apps.vpn-socks-client-settings.killswitch-check")," "),d(2),C("inline",!0)("matTooltip",y(16,18,"apps.vpn-socks-client-settings.killswitch-info")),d(3),S(e.settingsChanged?18:-1),d(),C("disabled",!e.settingsForm.valid||!e.settingsChanged||e.working),d(2),E(" ",y(22,20,"apps.vpn-socks-client-settings.save-settings")," ")}}let JDe=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.largeModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a,l,c,f){this.data=e,this.dialogRef=i,this.appsService=o,this.formBuilder=r,this.snackbarService=s,this.dialog=a,this.proxyDiscoveryService=l,this.clipboardService=c,this.storageService=f,this.socksHistoryStorageKey="SkysocksClientHistory_",this.vpnHistoryStorageKey="VpnClientHistory_",this.maxHistoryElements=10,this.maxElementsPerPage=10,this.tabLabels=[],this.currentTab=0,this.countriesFromDiscovery=new Set,this.loadingFromDiscovery=!0,this.numberOfPages=1,this.currentPage=1,this.currentRange="1 - 1",this.currentFilters=new qH,this.currentFiltersTexts=[],this.configuringVpn=!1,this.initialKillswitchSetting=!1,this.initialDnsSetting="",this.working=!1,-1!==e.name.toLocaleLowerCase().indexOf("vpn")?(this.configuringVpn=!0,this.tabLabels=["apps.vpn-socks-client-settings.remote-visor-tab","apps.vpn-socks-client-settings.discovery-tab","apps.vpn-socks-client-settings.history-tab","apps.vpn-socks-client-settings.settings-tab"]):this.tabLabels=["apps.vpn-socks-client-settings.remote-visor-tab","apps.vpn-socks-client-settings.discovery-tab","apps.vpn-socks-client-settings.history-tab"]}ngOnInit(){this.migrateDataToHvStorage(),this.discoverySubscription=this.proxyDiscoveryService.getServices(!this.configuringVpn).subscribe(o=>{this.proxiesFromDiscovery=o,this.proxiesFromDiscovery.forEach(r=>{r.country&&this.countriesFromDiscovery.add(r.country.toUpperCase())}),this.filterProxies(),this.loadingFromDiscovery=!1});const e=this.storageService.getDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey);this.history=e?JSON.parse(e):[];let i="";if(this.data.args&&this.data.args.length>0)for(let o=0;othis.firstInput.nativeElement.focus())}ngOnDestroy(){this.discoverySubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()}migrateDataToHvStorage(){const e=localStorage.getItem(this.socksHistoryStorageKey);e&&(this.storageService.setDataForHv(this.socksHistoryStorageKey,e),localStorage.removeItem(this.socksHistoryStorageKey));const i=localStorage.getItem(this.vpnHistoryStorageKey);i&&(this.storageService.setDataForHv(this.vpnHistoryStorageKey,i),localStorage.removeItem(this.vpnHistoryStorageKey))}get disableDismiss(){return this.button&&this.button.isLoading||this.settingsButton&&this.settingsButton.isLoading}tabChangeRequested(e){this.tabGroup.selectedIndex=e}tabIdexChanged(){this.currentTab=this.tabGroup.selectedIndex}validateIp(){if(this.settingsForm){const e=this.settingsForm.get("dns").value;return Rt.checkIfIpValidOrEmpty(e)?null:{invalid:!0}}return null}get settingsChanged(){return this.initialKillswitchSetting!==this.settingsForm.get("killswitch").value||this.initialDnsSetting!==this.settingsForm.get("dns").value}changeFilters(){const e=[];this.countriesFromDiscovery.forEach(o=>e.push(o)),Fke.openDialog(this.dialog,{currentFilters:this.currentFilters,availableCountries:e}).afterClosed().subscribe(o=>{o&&(this.currentFilters=o,this.filterProxies())})}getHighlightedTextParts(e,i){if(!i)return[e];const o=e.toLowerCase(),r=i.toLowerCase();let s=!0,a=0;const l=[];for(;s;){const c=o.indexOf(r,a);-1===c?s=!1:(l.push(e.substring(a,c)),l.push(e.substring(c,c+i.length)),a=c+i.length)}return l.push(e.substring(a)),l}filterProxies(){this.filteredProxiesFromDiscovery=this.currentFilters.country||this.currentFilters.location||this.currentFilters.key?this.proxiesFromDiscovery.filter(e=>!(this.currentFilters.country&&(!e.country||!e.country.toUpperCase().includes(this.currentFilters.country.toUpperCase()))||this.currentFilters.location&&!e.location.toLowerCase().includes(this.currentFilters.location.toLowerCase())||this.currentFilters.key&&!e.address.toLowerCase().includes(this.currentFilters.key.toLowerCase()))):this.proxiesFromDiscovery,this.updateCurrentFilters(),this.updatePagination()}updateCurrentFilters(){if(this.currentFiltersTexts=[],this.currentFilters.country){const e=es[this.currentFilters.country.toUpperCase()]?es[this.currentFilters.country.toUpperCase()]:this.currentFilters.country.toUpperCase();this.currentFiltersTexts.push(["apps.vpn-socks-client-settings.filter-dialog.country","",e])}this.currentFilters.location&&this.currentFiltersTexts.push(["apps.vpn-socks-client-settings.filter-dialog.location","",this.currentFilters.location]),this.currentFilters.key&&this.currentFiltersTexts.push(["apps.vpn-socks-client-settings.filter-dialog.pub-key","",this.currentFilters.key])}updatePagination(){this.currentPage=1,this.numberOfPages=Math.ceil(this.filteredProxiesFromDiscovery.length/this.maxElementsPerPage),this.showCurrentPage()}goToNextPage(){this.currentPage>=this.numberOfPages||(this.currentPage+=1,this.showCurrentPage())}goToPreviousPage(){this.currentPage<=1||(this.currentPage-=1,this.showCurrentPage())}showCurrentPage(){this.proxiesFromDiscoveryToShow=this.filteredProxiesFromDiscovery.slice((this.currentPage-1)*this.maxElementsPerPage,this.currentPage*this.maxElementsPerPage),this.currentRange=(this.currentPage-1)*this.maxElementsPerPage+1+" - ",this.currentRange+=this.currentPage{1===o?this.useFromHistory(e):2===o?this.changeNote(e):3===o&&this.removeFromHistory(e.key)})}removeFromHistory(e){const o=Rt.createConfirmationDialog(this.dialog,"apps.vpn-socks-client-settings.remove-from-history-confirmation");o.componentInstance.operationAccepted.subscribe(()=>{this.history=this.history.filter(s=>s.key!==e);const r=JSON.stringify(this.history);this.storageService.setDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey,r),o.close()})}changeNote(e){Dke.openDialog(this.dialog,e.note).afterClosed().subscribe(i=>{if(i){i=i.substr(1,i.length-1),this.history.forEach(r=>{r.key===e.key&&(r.note=i)});const o=JSON.stringify(this.history);this.storageService.setDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey,o),i?this.snackbarService.showDone("apps.vpn-socks-client-settings.changes-made"):this.snackbarService.showWarning("apps.vpn-socks-client-settings.default-note-warning")}})}useFromHistory(e){e.hasPassword?Lke.openDialog(this.dialog).afterClosed().subscribe(i=>{i&&(i=i.substr(1,i.length-1),this.saveChanges(e.key,i,e.enteredManually,e.location,e.note))}):this.saveChanges(e.key,null,e.enteredManually,e.location,e.note)}saveChanges(e=null,i=null,o=null,r=null,s=null){if(!this.form.valid&&!e||this.working)return;o=!e||o,i=e?i:this.form.get("password").value,e=e||this.form.get("pk").value;const l=Rt.createConfirmationDialog(this.dialog,"apps.vpn-socks-client-settings.change-key-confirmation");l.componentInstance.operationAccepted.subscribe(()=>{l.close(),this.continueSavingChanges(e,i,o,r,s)})}saveSettings(){if(this.working)return;const e={killswitch:this.settingsForm.get("killswitch").value,dns:this.settingsForm.get("dns").value};this.settingsButton.showLoading(!1),this.button.showLoading(!1),this.working=!0,this.operationSubscription=this.appsService.changeAppSettings(ke.getCurrentNodeKey(),this.data.name,e).subscribe(()=>{this.initialKillswitchSetting=e.killswitch,this.initialDnsSetting=e.dns,this.snackbarService.showDone("apps.vpn-socks-client-settings.changes-made"),this.working=!1,this.settingsButton.reset(!1),this.button.reset(!1),ke.refreshCurrentDisplayedData()},i=>{this.working=!1,this.settingsButton.showError(!1),this.button.reset(!1),i=Qe(i),this.snackbarService.showError(i)})}copyPk(e){this.clipboardService.copy(e)?this.snackbarService.showDone("apps.vpn-socks-client-settings.copied-pk-info"):this.snackbarService.showError("apps.vpn-socks-client-settings.copy-pk-error")}continueSavingChanges(e,i,o,r,s){if(this.working)return;this.button.showLoading(!1),this.settingsButton&&this.settingsButton.showLoading(!1),this.working=!0;const a={pk:e};this.configuringVpn&&(a.passcode=i||""),this.operationSubscription=this.appsService.changeAppSettings(ke.getCurrentNodeKey(),this.data.name,a).subscribe(()=>this.onServerDataChangeSuccess(e,!!i,o,r,s),l=>this.onServerDataChangeError(l))}onServerDataChangeSuccess(e,i,o,r,s){this.history=this.history.filter(c=>c.key!==e);const a={key:e,enteredManually:o};if(i&&(a.hasPassword=i),r&&(a.location=r),s&&(a.note=s),this.history=[a].concat(this.history),this.history.length>this.maxHistoryElements){const c=this.history.length-this.maxHistoryElements;this.history.splice(this.history.length-c,c)}this.form.get("pk").setValue(e);const l=JSON.stringify(this.history);this.storageService.setDataForHv(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey,l),ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.vpn-socks-client-settings.changes-made"),this.working=!1,this.button.reset(!1),this.settingsButton&&this.settingsButton.reset(!1)}onServerDataChangeError(e){this.working=!1,this.button.showError(!1),this.settingsButton&&this.settingsButton.reset(!1),e=Qe(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt),O(Rs),O(di),O(ct),O(Ot),O(Bke),O(np),O(ti))}}static{this.\u0275cmp=re({type:t,selectors:[["app-skysocks-client-settings"]],viewQuery:function(i,o){if(1&i&&ot(gDe,5)(_De,5)(bDe,5)(vDe,5),2&i){let r;he(r=fe())&&(o.button=r.first),he(r=fe())&&(o.settingsButton=r.first),he(r=fe())&&(o.firstInput=r.first),he(r=fe())&&(o.tabGroup=r.first)}},standalone:!1,decls:38,vars:38,consts:[["content",""],["tabGroup",""],["firstInput",""],["button",""],["settingsButton",""],[3,"headline","dialog","disableDismiss","includeVerticalMargins","includeScrollableArea"],[3,"tabChanged","tabNames","selectedTab"],[3,"selectedIndexChange"],[3,"label"],[3,"formGroup"],[3,"ngClass"],[1,"field-container"],["for","remoteKey",1,"field-label"],["id","pk","formControlName","pk","maxlength","66","matInput",""],[1,"password-history-warning"],["color","primary",1,"float-right",3,"action","disabled"],[1,"loading-indicator",3,"showWhite"],[1,"info-text"],[1,"paginator"],[1,"d-flex"],["id","password","type","password","formControlName","password","maxlength","100","matInput",""],[3,"inline"],["mat-button","",1,"list-button","grey-button-background","w-100",3,"click"],[1,"filter-button-content"],[1,"icon-area"],[1,"item"],[1,"blue-part"],["mat-button","",1,"list-button","grey-button-background","w-100",3,"click","ngClass"],[1,"button-content"],["mat-button","",1,"list-button","grey-button-background",3,"click","matTooltip"],[1,"option-button-icon",3,"inline"],[1,"flag-container"],["mat-icon-button","",1,"hard-grey-button-background",3,"click"],["mat-button","",1,"list-button","grey-button-background","w-100","d-none","d-md-inline",3,"click","ngClass"],[4,"ngTemplateOutlet"],["mat-button","",1,"list-button","grey-button-background","d-none","d-md-inline",3,"click","matTooltip"],["mat-button","",1,"list-button","grey-button-background","w-100","d-md-none",3,"click","ngClass"],[1,"button-content","d-flex"],[1,"full-size-area"],[1,"options-container"],[1,"small-button","d-md-none"],["formControlName","dns","maxlength","15","matInput",""],[1,"main-theme","settings-option"],["color","primary","formControlName","killswitch",3,"ngClass"],[1,"help-icon",3,"inline","matTooltip"],[1,"settings-changed-warning"]],template:function(i,o){1&i&&(h(0,"app-dialog",5),b(1,"translate"),h(2,"app-tab-selector",6),F("tabChanged",function(s){return o.tabChangeRequested(s)}),u(),h(3,"mat-dialog-content",null,0)(5,"mat-tab-group",7,1),F("selectedIndexChange",function(){return o.tabIdexChanged()}),h(7,"mat-tab",8),b(8,"translate"),h(9,"form",9)(10,"mat-form-field",10)(11,"div",11)(12,"label",12),p(13),b(14,"translate"),u(),B(15,"input",13,2),u(),h(17,"mat-error"),x(18,wDe,3,3,"span")(19,xDe,3,3,"span"),u()(),x(20,SDe,6,6,"mat-form-field",10),x(21,kDe,5,4,"div",14),h(22,"app-button",15,3),F("action",function(){return o.saveChanges()}),p(24),b(25,"translate"),u()()(),h(26,"mat-tab",8),b(27,"translate"),x(28,DDe,1,1,"app-loading-indicator",16),x(29,MDe,5,4,"div",17),x(30,BDe,15,6),x(31,VDe,10,7,"div",18),u(),h(32,"mat-tab",8),b(33,"translate"),x(34,HDe,6,7,"div"),ve(35,YDe,15,16,"div",19,Fe),u(),x(37,QDe,23,26,"mat-tab",8),u()()()),2&i&&(C("headline",y(1,24,"apps.vpn-socks-client-settings."+(o.configuringVpn?"vpn-title":"socks-title")))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss)("includeVerticalMargins",!1)("includeScrollableArea",!1),d(2),C("tabNames",o.tabLabels)("selectedTab",o.currentTab),d(5),C("label",y(8,26,o.tabLabels[0])),d(2),C("formGroup",o.form),d(),C("ngClass",se(36,Dc,o.disableDismiss)),d(3),M(y(14,28,"apps.vpn-socks-client-settings.public-key")),d(5),S(o.form.get("pk").hasError("pattern")?19:18),d(2),S(o.configuringVpn?20:-1),d(),S(o.form&&o.form.get("password").value?21:-1),d(),C("disabled",!o.form.valid||o.working),d(2),E(" ",y(25,30,"apps.vpn-socks-client-settings.save")," "),d(2),C("label",y(27,32,o.tabLabels[1])),d(2),S(o.loadingFromDiscovery?28:-1),d(),S(o.loadingFromDiscovery||0!==o.proxiesFromDiscovery.length?-1:29),d(),S(!o.loadingFromDiscovery&&o.proxiesFromDiscovery.length>0?30:-1),d(),S(o.numberOfPages>1?31:-1),d(),C("label",y(33,34,o.tabLabels[2])),d(2),S(0===o.history.length?34:-1),d(),ye(o.history),d(2),S(o.configuringVpn?37:-1))},dependencies:[$t,Ld,xn,Gt,qt,wn,wi,on,mn,Jd,sn,Ma,In,XH,hDe,Pn,Wo,We,Kt,kr,ui,gn,Yr,mDe,xe],styles:["mat-tab-header{border-bottom:solid 1px rgba(0,0,0,.12)}@media(max-width:767px){ mat-tab-header{display:none!important}}app-tab-selector[_ngcontent-%COMP%]{display:none}@media(max-width:767px){app-tab-selector[_ngcontent-%COMP%]{display:block!important}}form[_ngcontent-%COMP%]{margin-top:15px}.info-text[_ngcontent-%COMP%]{margin-top:20px;margin-bottom:2px;text-align:center;color:#202226}.info-text[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:5px}.loading-indicator[_ngcontent-%COMP%]{height:100px}.password-history-warning[_ngcontent-%COMP%]{font-size:.7rem;opacity:.7;position:relative;top:-5px}.list-button[_ngcontent-%COMP%]{border-bottom:solid 1px rgba(0,0,0,.12);height:auto;justify-content:left}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%]{padding:15px 0;white-space:normal;line-height:1.3;color:#202226;text-align:left;display:flex;font-size:.8rem;word-break:break-word}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .icon-area[_ngcontent-%COMP%]{font-size:20px;margin-right:15px;color:#999;opacity:.4;align-self:center}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{margin:4px 0}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type{color:#999}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .blue-part[_ngcontent-%COMP%]{color:#215f9e}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%]{text-align:left;padding:15px 0;white-space:normal}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .full-size-area[_ngcontent-%COMP%]{flex-grow:1}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{line-height:1.3;margin:4px 0;font-size:.8rem;color:#202226;word-break:break-all}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]:first-of-type{color:#999}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .highlighted[_ngcontent-%COMP%]{background-color:#ff0}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .options-container[_ngcontent-%COMP%]{flex-shrink:0;margin-left:5px;text-align:right;line-height:1}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .options-container[_ngcontent-%COMP%] .small-button[_ngcontent-%COMP%]{width:24px;height:24px;line-height:14px;font-size:14px;margin-left:5px}.list-button[_ngcontent-%COMP%] .option-button-icon[_ngcontent-%COMP%]{font-size:14px;margin:0!important;overflow:visible!important}.paginator[_ngcontent-%COMP%]{float:right;margin-top:15px;display:flex;align-items:center}@media(max-width:767px){.paginator[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{font-size:.7rem}}.paginator[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-left:5px;display:flex}.settings-option[_ngcontent-%COMP%]{margin-top:20px}.settings-option[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{margin-bottom:15px}.settings-changed-warning[_ngcontent-%COMP%]{font-size:.7rem;opacity:.7;position:relative}"]})}}return t})();const eMe=["button"],tMe=t=>({name:t}),n6=t=>({"element-disabled":t}),i6=t=>({number:t});function nMe(t,n){if(1&t){const e=oe();Vr(0,4),h(1,"div",7)(2,"mat-form-field",8)(3,"div",9)(4,"label",10),p(5),b(6,"translate"),u(),B(7,"input",11),u()(),h(8,"mat-form-field",8)(9,"div",9)(10,"label",12),p(11),b(12,"translate"),u(),B(13,"input",13),u()(),h(14,"button",14),b(15,"translate"),F("click",function(){const o=j(e).$index;return U(v().removeSetting(o))}),h(16,"mat-icon",15),p(17,"close"),u()()(),cr()}if(2&t){const e=n.$index,i=v();d(),C("formGroupName",e),d(),C("ngClass",se(15,n6,i.disableDismiss)),d(3),M(pe(6,7,"apps.user-app-settings.name",se(17,i6,e+1))),d(3),C("ngClass",se(19,n6,i.disableDismiss)),d(3),M(pe(12,10,"apps.user-app-settings.value",se(21,i6,e+1))),d(3),C("matTooltip",y(15,13,"apps.user-app-settings.remove")),d(2),C("inline",!0)}}let iMe=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.appsService=i,this.formBuilder=o,this.dialogRef=r,this.snackbarService=s,this.dialog=a,this.appName="",this.appName=e.name}ngOnInit(){if(this.form=this.formBuilder.group({settings:this.formBuilder.array([])}),this.data.args&&this.data.args.length>0)for(let e=0;e{let s=r.get("name").value,a=r.get("value").value;s=s&&s.trim(),a=a&&a.trim(),s?(o[s]=a,i+=1):e=!0}),e||0===i){const s=Rt.createConfirmationDialog(this.dialog,"apps.user-app-settings."+(0===i?"empty-confirmation":"invalid-confirmation"));s.componentInstance.operationAccepted.subscribe(()=>{s.close(),this.continueSavingChanges(o)})}else this.continueSavingChanges(o)}continueSavingChanges(e){this.button.showLoading();const i={custom_setting:e};this.operationSubscription=this.appsService.changeAppSettings(ke.getCurrentNodeKey(),this.data.name,i).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)})}onSuccess(){ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.user-app-settings.changes-made"),this.dialogRef.close()}onError(e){this.button.showError(),e=Qe(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Rs),O(di),O(Bt),O(ct),O(Ot))}}static{this.\u0275cmp=re({type:t,selectors:[["app-user-app-settings"]],viewQuery:function(i,o){if(1&i&&ot(eMe,5),2&i){let r;he(r=fe())&&(o.button=r.first)}},standalone:!1,decls:16,vars:19,consts:[["button",""],[3,"headline","dialog","disableDismiss"],[1,"info-container"],[3,"formGroup"],["formArrayName","settings"],[1,"add-setting",3,"click"],["color","primary",1,"float-right",3,"action","disabled"],[1,"settings-row",3,"formGroupName"],[3,"ngClass"],[1,"field-container"],["for","name",1,"field-label"],["id","name","formControlName","name","matInput",""],["for","value",1,"field-label"],["id","value","formControlName","value","matInput",""],["mat-button","",1,"transparent-button",3,"click","matTooltip"],[3,"inline"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"div",2),p(3),b(4,"translate"),u(),h(5,"form",3),ve(6,nMe,18,23,"ng-container",4,Fe),u(),h(8,"div")(9,"a",5),F("click",function(){return o.addSetting()}),p(10),b(11,"translate"),u()(),h(12,"app-button",6,0),F("action",function(){return o.saveChanges()}),p(14),b(15,"translate"),u()()),2&i&&(C("headline",pe(1,8,"apps.user-app-settings.title",se(17,tMe,o.appName)))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),d(3),M(y(4,11,"apps.user-app-settings.info")),d(2),C("formGroup",o.form),d(),ye(o.settingsControls),d(4),E("+ ",y(11,13,"apps.user-app-settings.add")),d(2),C("disabled",!o.form.valid),d(2),E(" ",y(15,15,"apps.user-app-settings.save")," "))},dependencies:[$t,xn,Gt,qt,wn,on,mn,sc,du,sn,In,Pn,We,Kt,ui,gn,xe],styles:[".info-container[_ngcontent-%COMP%]{margin-bottom:10px}.settings-row[_ngcontent-%COMP%]{display:flex}mat-form-field[_ngcontent-%COMP%]{flex-grow:1;margin-right:10px}button[_ngcontent-%COMP%]{flex-shrink:0;width:50px;padding:0!important;align-self:center;border-radius:10px}button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin:0!important}.add-setting[_ngcontent-%COMP%]{color:#215f9e!important;cursor:pointer}"]})}}return t})();const oMe=["button"],o6=t=>({"element-disabled":t});let rMe=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.data=e,this.appsService=i,this.formBuilder=o,this.dialogRef=r,this.snackbarService=s,this.dialog=a}ngOnInit(){if(this.form=this.formBuilder.group({localhostOnly:[!0],port:["",Ne.compose([Ne.required,Ne.min(1025),Ne.max(65536)])]}),this.formSubscription=this.form.get("localhostOnly").valueChanges.subscribe(e=>{if(!e){this.form.get("localhostOnly").setValue(!0);const i=Rt.createConfirmationDialog(this.dialog,"apps.skychat-settings.non-localhost-confirmation");i.componentInstance.operationAccepted.subscribe(()=>{i.componentInstance.closeModal(),this.form.get("localhostOnly").setValue(!1,{emitEvent:!1})})}}),this.data.args&&this.data.args.length>0)for(let e=0;e({"paginator-icons-fixer":t}),r6=(t,n)=>["/nodes",t,"apps-list",n],aMe=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),lMe=t=>({"d-lg-none d-xl-table":t}),cMe=t=>({"d-lg-table d-xl-none":t}),s6=t=>({error:t}),dMe=(t,n)=>["/nodes",t,"apps-list",n,"1"];function uMe(t,n){1&t&&(h(0,"span",3),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.apps-list.title-official")))}function hMe(t,n){1&t&&(h(0,"span",3),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.apps-list.title-user")))}function fMe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().$implicit.translatableValue)," ")}function pMe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.value," ")}function mMe(t,n){if(1&t&&(h(0,"div",15)(1,"span"),p(2),b(3,"translate"),u(),x(4,fMe,2,3),x(5,pMe,1,1),u()),2&t){const e=n.$implicit;d(2),E("",y(3,3,e.filterName),": "),d(2),S(e.translatableValue?4:-1),d(),S(e.value?5:-1)}}function gMe(t,n){if(1&t){const e=oe();h(0,"div",14),F("click",function(){return j(e),U(v().dataFilterer.removeFilters())}),ve(1,mMe,6,5,"div",15,Fe),h(3,"div",16),p(4),b(5,"translate"),u()()}if(2&t){const e=v();d(),ye(e.dataFilterer.currentFiltersTexts),d(3),M(y(5,1,"filters.press-to-remove"))}}function _Me(t,n){if(1&t){const e=oe();h(0,"mat-icon",17),b(1,"translate"),F("click",function(){return j(e),U(v().dataFilterer.changeFilters())}),p(2,"filter_list"),u()}2&t&&C("inline",!0)("matTooltip",y(1,2,"filters.filter-action"))}function bMe(t,n){1&t&&(h(0,"mat-icon",8),p(1,"more_horiz"),u()),2&t&&(v(),C("matMenuTriggerFor",Hn(10)))}function vMe(t,n){if(1&t&&B(0,"app-paginator",12),2&t){const e=v();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",_t(4,r6,e.nodePK,e.showOfficialApps))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function yMe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function CMe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function wMe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function xMe(t,n){if(1&t&&(h(0,"mat-icon",22),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function SMe(t,n){if(1&t&&(B(0,"i",38),b(1,"translate")),2&t){const e=v().$implicit,i=v(2);Ze(i.getStateClass(e)),C("matTooltip",y(1,3,i.getStateTooltip(e)))}}function kMe(t,n){if(1&t&&(h(0,"mat-icon",34),b(1,"translate"),p(2,"warning"),u()),2&t){const e=v().$implicit;C("inline",!0)("matTooltip",pe(1,2,"apps.status-failed-tooltip",se(5,s6,e.detailedStatus?e.detailedStatus:"")))}}function DMe(t,n){if(1&t&&(h(0,"a",36)(1,"button",37),b(2,"translate"),h(3,"mat-icon",22),p(4,"open_in_browser"),u()()()),2&t){const e=v().$implicit;C("href",v(2).getLink(e),mo),d(),C("matTooltip",y(2,3,"apps.open")),d(2),C("inline",!0)}}function MMe(t,n){if(1&t){const e=oe();h(0,"button",35),b(1,"translate"),F("click",function(){j(e);const o=v().$implicit;return U(v(2).config(o))}),h(2,"mat-icon",22),p(3,"settings"),u()()}2&t&&(C("matTooltip",y(1,2,"apps.settings")),d(2),C("inline",!0))}function TMe(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td",31)(2,"mat-checkbox",32),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(3,"td"),x(4,SMe,2,5,"i",33),x(5,kMe,3,7,"mat-icon",34),u(),h(6,"td"),p(7),u(),h(8,"td"),p(9),u(),h(10,"td")(11,"button",35),b(12,"translate"),F("click",function(){const o=j(e).$implicit;return U(v(2).changeAppAutostart(o))}),h(13,"mat-icon",22),p(14),u()()(),h(15,"td",24),x(16,DMe,5,5,"a",36),x(17,MMe,4,4,"button",37),h(18,"button",35),b(19,"translate"),F("click",function(){const o=j(e).$implicit;return U(v(2).viewLogs(o))}),h(20,"mat-icon",22),p(21,"list"),u()(),h(22,"button",35),b(23,"translate"),F("click",function(){const o=j(e).$implicit;return U(v(2).changeAppState(o))}),h(24,"mat-icon",22),p(25),u()()()()}if(2&t){const e=n.$implicit,i=v(2);d(2),C("checked",i.selections.get(e.name)),d(2),S(2!==e.status?4:-1),d(),S(2===e.status?5:-1),d(2),E(" ",e.name," "),d(2),E(" ",e.port," "),d(2),C("matTooltip",y(12,15,e.autostart?"apps.apps-list.disable-autostart":"apps.apps-list.enable-autostart")),d(2),C("inline",!0),d(),M(e.autostart?"done":"close"),d(2),S(i.getLink(e)?16:-1),d(),S(i.appsWithoutConfig.has(e.name)?-1:17),d(),C("matTooltip",y(19,17,"apps.view-logs")),d(2),C("inline",!0),d(2),C("matTooltip",y(23,19,"apps."+(0===e.status||2===e.status?"start-app":"stop-app"))),d(2),C("inline",!0),d(),M(0===e.status||2===e.status?"play_arrow":"stop")}}function EMe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.label")," ")}function PMe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.inverted-order")," ")}function IMe(t,n){if(1&t&&(h(0,"a",43),F("click",function(i){return i.stopPropagation()}),h(1,"button",44),b(2,"translate"),h(3,"mat-icon"),p(4,"open_in_browser"),u()()()),2&t){const e=v().$implicit;C("href",v(2).getLink(e),mo),d(),C("matTooltip",y(2,2,"apps.open"))}}function OMe(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td")(2,"div",27)(3,"div",39)(4,"mat-checkbox",32),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(5,"div",28)(6,"div",40)(7,"span",2),p(8),b(9,"translate"),u(),p(10),u(),h(11,"div",40)(12,"span",2),p(13),b(14,"translate"),u(),p(15),u(),h(16,"div",40)(17,"span",2),p(18),b(19,"translate"),u(),p(20,": "),h(21,"span"),p(22),b(23,"translate"),u()(),h(24,"div",40)(25,"span",2),p(26),b(27,"translate"),u(),p(28,": "),h(29,"span"),p(30),b(31,"translate"),u()()(),B(32,"div",41),h(33,"div",29),x(34,IMe,5,4,"a",36),h(35,"button",42),b(36,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(2);return o.stopPropagation(),U(s.showOptionsDialog(r))}),h(37,"mat-icon"),p(38),u()()()()()()}if(2&t){const e=n.$implicit,i=v(2);d(4),C("checked",i.selections.get(e.name)),d(4),M(y(9,16,"apps.apps-list.app-name")),d(2),E(": ",e.name," "),d(3),M(y(14,18,"apps.apps-list.port")),d(2),E(": ",e.port," "),d(3),M(y(19,20,"apps.apps-list.state")),d(3),Ze(i.getSmallScreenStateClass(e)+" title"),d(),E(" ",pe(23,22,i.getSmallScreenStateTextVar(e),se(31,s6,e.detailedStatus?e.detailedStatus:""))," "),d(4),M(y(27,25,"apps.apps-list.auto-start")),d(3),Ze((e.autostart?"green-clear-text":"red-clear-text")+" title"),d(),E(" ",y(31,27,e.autostart?"apps.apps-list.autostart-enabled":"apps.apps-list.autostart-disabled")," "),d(4),S(i.getLink(e)?34:-1),d(),C("matTooltip",y(36,29,"common.options")),d(3),M("add")}}function AMe(t,n){if(1&t&&B(0,"app-view-all-link",30),2&t){const e=v(2);C("numberOfElements",e.filteredApps.length)("linkParts",_t(3,dMe,e.nodePK,e.showOfficialApps))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function RMe(t,n){if(1&t){const e=oe();h(0,"div",13)(1,"div",18)(2,"table",19)(3,"tr"),B(4,"th"),h(5,"th",20),b(6,"translate"),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.stateSortData))}),B(7,"span",21),x(8,yMe,2,2,"mat-icon",22),u(),h(9,"th",23),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.nameSortData))}),p(10),b(11,"translate"),x(12,CMe,2,2,"mat-icon",22),u(),h(13,"th",23),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.portSortData))}),p(14),b(15,"translate"),x(16,wMe,2,2,"mat-icon",22),u(),h(17,"th",23),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.autoStartSortData))}),p(18),b(19,"translate"),x(20,xMe,2,2,"mat-icon",22),u(),B(21,"th",24),u(),ve(22,TMe,26,21,"tr",null,Fe),u(),h(24,"table",25)(25,"tr",26),F("click",function(){return j(e),U(v().dataSorter.openSortingOrderModal())}),h(26,"td")(27,"div",27)(28,"div",28)(29,"div",2),p(30),b(31,"translate"),u(),h(32,"div"),p(33),b(34,"translate"),x(35,EMe,2,3),x(36,PMe,2,3),u()(),h(37,"div",29)(38,"mat-icon",22),p(39,"keyboard_arrow_down"),u()()()()(),ve(40,OMe,39,33,"tr",null,Fe),u(),x(42,AMe,1,6,"app-view-all-link",30),u()()}if(2&t){const e=v();d(),C("ngClass",_t(29,aMe,e.showShortList_,!e.showShortList_)),d(),C("ngClass",se(32,lMe,e.showShortList_)),d(3),C("matTooltip",y(6,17,"apps.apps-list.state-tooltip")),d(3),S(e.dataSorter.currentSortingColumn===e.stateSortData?8:-1),d(2),E(" ",y(11,19,"apps.apps-list.app-name")," "),d(2),S(e.dataSorter.currentSortingColumn===e.nameSortData?12:-1),d(2),E(" ",y(15,21,"apps.apps-list.port")," "),d(2),S(e.dataSorter.currentSortingColumn===e.portSortData?16:-1),d(2),E(" ",y(19,23,"apps.apps-list.auto-start")," "),d(2),S(e.dataSorter.currentSortingColumn===e.autoStartSortData?20:-1),d(2),ye(e.dataSource),d(2),C("ngClass",se(34,cMe,e.showShortList_)),d(6),M(y(31,25,"tables.sorting-title")),d(3),E("",y(34,27,e.dataSorter.currentSortingColumn.label)," "),d(2),S(e.dataSorter.currentlySortingByLabel?35:-1),d(),S(e.dataSorter.sortingInReverseOrder?36:-1),d(2),C("inline",!0),d(2),ye(e.dataSource),d(2),S(e.showShortList_&&e.numberOfPages>1?42:-1)}}function FMe(t,n){1&t&&(h(0,"span",47),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.apps-list.empty-official")))}function NMe(t,n){1&t&&(h(0,"span",47),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.apps-list.empty-user")))}function LMe(t,n){1&t&&(h(0,"span",47),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"apps.apps-list.empty-with-filter")))}function BMe(t,n){if(1&t&&(h(0,"div",13)(1,"div",45)(2,"mat-icon",46),p(3,"warning"),u(),x(4,FMe,3,3,"span",47),x(5,NMe,3,3,"span",47),x(6,LMe,3,3,"span",47),u()()),2&t){const e=v();d(2),C("inline",!0),d(2),S(0===e.allAppsForType.length&&e.showOfficialApps?4:-1),d(),S(0!==e.allAppsForType.length||e.showOfficialApps?-1:5),d(),S(0!==e.allAppsForType.length?6:-1)}}function VMe(t,n){if(1&t&&B(0,"app-paginator",12),2&t){const e=v();C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",_t(4,r6,e.nodePK,e.showOfficialApps))("queryParams",e.dataFilterer.currentUrlQueryParams)}}let a6=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter&&this.dataSorter.setData(this.filteredApps)}set apps(e){this.allApps=e||[],this.allApps&&(this.allAppsForType=[],this.allApps.forEach(i=>{(this.showOfficialApps&&this.officialAppsList.has(i.name)||!this.showOfficialApps&&!this.officialAppsList.has(i.name))&&this.allAppsForType.push(i)}),this.dataFilterer&&this.dataFilterer.setData(this.allAppsForType))}constructor(e,i,o,r,s,a,l){this.appsService=e,this.dialog=i,this.route=o,this.router=r,this.snackbarService=s,this.translateService=a,this.storageService=l,this.listIdForOfficialApps="op",this.listIdForUserApps="up",this.officialAppsList=new Set(["skychat","skysocks","skysocks-client","vpn-client","vpn-server"]),this.showOfficialApps=!0,this.stateSortData=new Dt(["status"],"apps.apps-list.state",st.NumberReversed),this.nameSortData=new Dt(["name"],"apps.apps-list.app-name",st.Text),this.portSortData=new Dt(["port"],"apps.apps-list.port",st.Number),this.autoStartSortData=new Dt(["autostart"],"apps.apps-list.auto-start",st.Boolean),this.selections=new Map,this.appsWithoutConfig=new Set,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"apps.apps-list.filter-dialog.state",keyNameInElementsArray:"status",type:Sn.Select,printableLabelsForValues:[{value:"",label:"apps.apps-list.filter-dialog.state-options.any"},{value:"1",label:"apps.apps-list.filter-dialog.state-options.running"},{value:"0",label:"apps.apps-list.filter-dialog.state-options.stopped"}]},{filterName:"apps.apps-list.filter-dialog.name",keyNameInElementsArray:"name",type:Sn.TextInput,maxlength:50},{filterName:"apps.apps-list.filter-dialog.port",keyNameInElementsArray:"port",type:Sn.TextInput,maxlength:8},{filterName:"apps.apps-list.filter-dialog.autostart",keyNameInElementsArray:"autostart",type:Sn.Select,printableLabelsForValues:[{value:"",label:"apps.apps-list.filter-dialog.autostart-options.any"},{value:"true",label:"apps.apps-list.filter-dialog.autostart-options.enabled"},{value:"false",label:"apps.apps-list.filter-dialog.autostart-options.disabled"}]}],this.refreshAgain=!1,this.operationSubscriptionsGroup=[],this.navigationsSubscription=this.route.paramMap.subscribe(c=>{if(c.has("showOfficialApps")&&(this.showOfficialApps=c.get("showOfficialApps").toUpperCase()==="true".toUpperCase()),c.has("page")){let f=Number.parseInt(c.get("page"),10);(isNaN(f)||f<1)&&(f=1),this.currentPageInUrl=f,this.recalculateElementsToShow()}})}ngOnInit(){const e=this.showOfficialApps?this.listIdForOfficialApps:this.listIdForUserApps;this.dataSorter=new gu(this.dialog,this.translateService,this.storageService,[this.stateSortData,this.nameSortData,this.portSortData,this.autoStartSortData],1,e),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataSorter&&this.dataSorter.setData(this.filteredApps),this.dataFilterer=new _u(this.dialog,this.route,this.router,this.filterProperties,e),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(o=>{this.filteredApps=o,this.dataSorter.setData(this.filteredApps)}),this.allAppsForType&&this.dataFilterer.setData(this.allAppsForType)}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.dataSortedSubscription.unsubscribe(),this.dataFiltererSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFilterer.dispose()}getLink(e){if("skychat"===e.name.toLocaleLowerCase()&&this.nodeIp&&0!==e.status&&2!==e.status){let i="8001",o="127.0.0.1";if(e.args)for(let r=0;r{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}changeStateOfSelected(e){const i=[];this.selections.forEach((o,r)=>{o&&(e&&(0===this.appsMap.get(r).status||2===this.appsMap.get(r).status)||!e&&0!==this.appsMap.get(r).status&&2!==this.appsMap.get(r).status)&&i.push(r)}),this.changeAppsValRecursively(i,!1,e)}changeAutostartOfSelected(e){const i=[];this.selections.forEach((o,r)=>{o&&(e&&!this.appsMap.get(r).autostart||!e&&this.appsMap.get(r).autostart)&&i.push(r)}),0!==i.length&&this.changeAppsValRecursively(i,!0,e,null)}showOptionsDialog(e){const i=[{icon:"list",label:"apps.view-logs"},{icon:0===e.status||2===e.status?"play_arrow":"stop",label:"apps."+(0===e.status||2===e.status?"start-app":"stop-app")},{icon:e.autostart?"close":"done",label:e.autostart?"apps.apps-list.disable-autostart":"apps.apps-list.enable-autostart"}];this.appsWithoutConfig.has(e.name)||i.push({icon:"settings",label:"apps.settings"}),ao.openDialog(this.dialog,i,"common.options").afterClosed().subscribe(o=>{1===o?this.viewLogs(e):2===o?this.changeAppState(e):3===o?this.changeAppAutostart(e):4===o&&this.config(e)})}changeAppState(e){this.changeSingleAppVal(this.startChangingAppState(e.name,0===e.status||2===e.status))}changeAppAutostart(e){this.changeSingleAppVal(this.startChangingAppAutostart(e.name,!e.autostart))}changeSingleAppVal(e,i=null){this.operationSubscriptionsGroup.push(e.subscribe(()=>{i&&i.close(),setTimeout(()=>{this.refreshAgain=!0,ke.refreshCurrentDisplayedData()},50),this.snackbarService.showDone("apps.operation-completed")},o=>{o=Qe(o),setTimeout(()=>{this.refreshAgain=!0,ke.refreshCurrentDisplayedData()},50),i?i.componentInstance.showDone("confirmation.error-header-text",o.translatableErrorMsg):this.snackbarService.showError(o)}))}viewLogs(e){0!==e.status&&2!==e.status?vke.openDialog(this.dialog,e):this.snackbarService.showError("apps.apps-list.unavailable-logs-error")}config(e){"skychat"===e.name?rMe.openDialog(this.dialog,e):"skysocks"===e.name||"vpn-server"===e.name?Ske.openDialog(this.dialog,e):"skysocks-client"===e.name||"vpn-client"===e.name?JDe.openDialog(this.dialog,e):iMe.openDialog(this.dialog,e)}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredApps){const e=this.showShortList_?rt.maxShortListElements:rt.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredApps.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.appsToShow=this.filteredApps.slice(i,i+e),this.appsMap=new Map,this.appsToShow.forEach(s=>{this.appsMap.set(s.name,s),this.selections.has(s.name)||this.selections.set(s.name,!1)});const r=[];this.selections.forEach((s,a)=>{this.appsMap.has(a)||r.push(a)}),r.forEach(s=>{this.selections.delete(s)})}else this.appsToShow=null,this.selections=new Map;this.dataSource=this.appsToShow,this.refreshAgain&&(this.refreshAgain=!1,setTimeout(()=>ke.refreshCurrentDisplayedData(),2e3))}startChangingAppState(e,i){return this.appsService.changeAppState(ke.getCurrentNodeKey(),e,i).pipe(Se(o=>(null!=o.status&&this.dataSource.forEach(r=>{r.name===e&&(r.status=o.status,r.detailedStatus=o.detailed_status)}),o)))}startChangingAppAutostart(e,i){return this.appsService.changeAppAutostart(ke.getCurrentNodeKey(),e,i)}changeAppsValRecursively(e,i,o,r=null){if(!e||0===e.length)return setTimeout(()=>ke.refreshCurrentDisplayedData(),50),this.snackbarService.showWarning("apps.operation-unnecessary"),void(r&&r.close());let s;s=i?this.startChangingAppAutostart(e[e.length-1],o):this.startChangingAppState(e[e.length-1],o),this.operationSubscriptionsGroup.push(s.subscribe(()=>{e.pop(),0===e.length?(r&&r.close(),setTimeout(()=>{this.refreshAgain=!0,ke.refreshCurrentDisplayedData()},50),this.snackbarService.showDone("apps.operation-completed")):this.changeAppsValRecursively(e,i,o,r)},a=>{a=Qe(a),setTimeout(()=>{this.refreshAgain=!0,ke.refreshCurrentDisplayedData()},50),r?r.componentInstance.showDone("confirmation.error-header-text",a.translatableErrorMsg):this.snackbarService.showError(a)}))}static{this.\u0275fac=function(i){return new(i||t)(O(Rs),O(Ot),O(Ai),O(vt),O(ct),O(Go),O(ti))}}static{this.\u0275cmp=re({type:t,selectors:[["app-node-app-list"]],inputs:{nodePK:"nodePK",nodeIp:"nodeIp",showOfficialApps:"showOfficialApps",showShortList:"showShortList",apps:"apps"},standalone:!1,decls:33,vars:39,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[1,"small-icon",3,"inline","matTooltip"],[3,"matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"click","matTooltip"],[1,"dot-outline-white"],[3,"inline"],[1,"sortable-column",3,"click"],[1,"actions"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[3,"numberOfElements","linkParts","queryParams"],[1,"selection-col"],[3,"change","checked"],[3,"class","matTooltip"],[1,"red-text",3,"inline","matTooltip"],["mat-button","",1,"big-action-button","transparent-button",3,"click","matTooltip"],["target","_blank","rel","noreferrer nofollow noopener",1,"skychat-link",3,"href"],["mat-button","",1,"big-action-button","transparent-button",3,"matTooltip"],[3,"matTooltip"],[1,"check-part"],[1,"list-row"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],["target","_blank","rel","noreferrer nofollow noopener",1,"skychat-link",3,"click","href"],["mat-icon-button","",1,"transparent-button",3,"matTooltip"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,uMe,3,3,"span",3),x(3,hMe,3,3,"span",3),x(4,gMe,6,3,"div",4),u(),h(5,"div",5)(6,"div",6),x(7,_Me,3,4,"mat-icon",7),x(8,bMe,2,1,"mat-icon",8),h(9,"mat-menu",9,0)(11,"div",10),F("click",function(){return o.changeAllSelections(!0)}),p(12),b(13,"translate"),u(),h(14,"div",10),F("click",function(){return o.changeAllSelections(!1)}),p(15),b(16,"translate"),u(),h(17,"div",11),F("click",function(){return o.changeStateOfSelected(!0)}),p(18),b(19,"translate"),u(),h(20,"div",11),F("click",function(){return o.changeStateOfSelected(!1)}),p(21),b(22,"translate"),u(),h(23,"div",11),F("click",function(){return o.changeAutostartOfSelected(!0)}),p(24),b(25,"translate"),u(),h(26,"div",11),F("click",function(){return o.changeAutostartOfSelected(!1)}),p(27),b(28,"translate"),u()()(),x(29,vMe,1,7,"app-paginator",12),u()(),x(30,RMe,43,36,"div",13),x(31,BMe,7,4,"div",13),x(32,VMe,1,7,"app-paginator",12)),2&i&&(C("ngClass",se(37,sMe,!o.showShortList_&&o.numberOfPages>1&&o.dataSource)),d(2),S(o.showShortList_&&o.showOfficialApps?2:-1),d(),S(o.showShortList_&&!o.showOfficialApps?3:-1),d(),S(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?4:-1),d(3),S(o.allAppsForType&&o.allAppsForType.length>0?7:-1),d(),S(o.dataSource&&o.dataSource.length>0?8:-1),d(),C("overlapTrigger",!1),d(3),E(" ",y(13,25,"selection.select-all")," "),d(3),E(" ",y(16,27,"selection.unselect-all")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(19,29,"selection.start-all")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(22,31,"selection.stop-all")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(25,33,"selection.enable-autostart-all")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(28,35,"selection.disable-autostart-all")," "),d(2),S(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?29:-1),d(),S(o.dataSource&&o.dataSource.length>0?30:-1),d(),S(o.dataSource&&0!==o.dataSource.length?-1:31),d(),S(!o.showShortList_&&o.numberOfPages>1&&o.dataSource?32:-1))},dependencies:[$t,Pn,Wo,We,Kt,Jr,As,vu,kr,_V,mv,xe],styles:[".actions[_ngcontent-%COMP%]{text-align:right;width:150px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}.skychat-link[_ngcontent-%COMP%]{color:#f8f9f9;text-decoration:none}.skychat-link[_ngcontent-%COMP%] .big-action-button[_ngcontent-%COMP%]{margin-right:5px}"]})}}return t})(),HMe=(()=>{class t extends pn{ngOnInit(){return this.dataSubscription=ke.currentNode.subscribe(e=>{this.nodePK=e.localPk,this.apps=e.apps,this.nodeIp=e.ip}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})()}static{this.\u0275cmp=re({type:t,selectors:[["app-apps"]],standalone:!1,features:[be],decls:2,vars:10,consts:[[3,"showOfficialApps","apps","showShortList","nodePK","nodeIp"]],template:function(i,o){1&i&&B(0,"app-node-app-list",0)(1,"app-node-app-list",0),2&i&&(C("showOfficialApps",!0)("apps",o.apps)("showShortList",!0)("nodePK",o.nodePK)("nodeIp",o.nodeIp),d(),C("showOfficialApps",!1)("apps",o.apps)("showShortList",!0)("nodePK",o.nodePK)("nodeIp",o.nodeIp))},dependencies:[a6],encapsulation:2})}}return t})();function jMe(t,n){if(1&t&&(h(0,"span",4),p(1),u()),2&t){const e=v();d(),Xg(" ",e.host.hostname," \xb7 ",e.host.platform||e.host.os," ",e.host.arch," \xb7 uptime ",e.fmtUptime(e.host.uptime_seconds)," ")}}function UMe(t,n){if(1&t&&(h(0,"div",13),p(1),b(2,"number"),u()),2&t){const e=v(3);d(),gt("",e.host.cpu_logical_count," cores \xb7 visor ",pe(2,2,e.procCPUPercent,"1.0-1"),"%")}}function zMe(t,n){if(1&t&&(h(0,"div",13),p(1),b(2,"number"),u()),2&t){const e=v(3);d(),Uh(" ",e.fmtBytes(e.host.mem_used)," / ",e.fmtBytes(e.host.mem_total)," \xb7 visor RSS ",pe(2,3,e.procMemRssMB,"1.0-0"),"M ")}}function $Me(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=v(3);d(),gt("",e.fmtBytes(e.host.disk_used)," / ",e.fmtBytes(e.host.disk_total)," on /")}}function WMe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=v(3);d(),gt(" fds ",e.host.process.num_fds||"-"," \xb7 conns ",e.host.process.open_conns||0," ")}}function GMe(t,n){if(1&t&&(h(0,"div",7)(1,"div",8)(2,"div",9)(3,"span",10),p(4),b(5,"translate"),u(),h(6,"span",11),p(7),b(8,"number"),u()(),B(9,"app-line-chart",12),x(10,UMe,3,5,"div",13),u(),h(11,"div",8)(12,"div",9)(13,"span",10),p(14),b(15,"translate"),u(),h(16,"span",11),p(17),b(18,"number"),u()(),B(19,"app-line-chart",12),x(20,zMe,3,6,"div",13),u(),h(21,"div",8)(22,"div",9)(23,"span",10),p(24),b(25,"translate"),u(),h(26,"span",11),p(27),b(28,"number"),u()(),B(29,"app-line-chart",12),x(30,$Me,2,2,"div",13),u(),h(31,"div",8)(32,"div",9)(33,"span",10),p(34),b(35,"translate"),u(),h(36,"span",11),p(37),u()(),B(38,"app-line-chart",14),h(39,"div",13),p(40),u()(),h(41,"div",8)(42,"div",9)(43,"span",10),p(44),b(45,"translate"),u(),h(46,"span",11),p(47),u()(),B(48,"app-line-chart",14),h(49,"div",13),p(50),u()(),h(51,"div",8)(52,"div",9)(53,"span",10),p(54),b(55,"translate"),u(),h(56,"span",11),p(57),u()(),B(58,"app-line-chart",14),x(59,WMe,2,2,"div",13),u()()),2&t){const e=v(2);d(4),M(y(5,36,"node.resource-monitor.cpu")),d(3),E("",e.host?pe(8,38,e.host.cpu_percent,"1.0-1"):"-","%"),d(2),C("data",e.cpuPctSeries)("min",0)("max",100)("height",60),d(),S(e.host?10:-1),d(4),M(y(15,41,"node.resource-monitor.memory")),d(3),E("",e.host?pe(18,43,e.host.mem_percent,"1.0-1"):"-","%"),d(2),C("data",e.memPctSeries)("min",0)("max",100)("height",60),d(),S(e.host?20:-1),d(4),M(y(25,46,"node.resource-monitor.disk")),d(3),E("",e.host&&e.host.disk_percent?pe(28,48,e.host.disk_percent,"1.0-1"):"-","%"),d(2),C("data",e.diskPctSeries)("min",0)("max",100)("height",60),d(),S(e.host&&e.host.disk_total?30:-1),d(4),M(y(35,51,"node.resource-monitor.net-rx")),d(3),M(e.fmtBps(e.netRxBpsSeries[e.netRxBpsSeries.length-1])),d(),C("data",e.netRxBpsSeries)("height",60),d(2),E("",e.host?e.fmtBytes(e.host.net_bytes_recv):"-"," total"),d(4),M(y(45,53,"node.resource-monitor.net-tx")),d(3),M(e.fmtBps(e.netTxBpsSeries[e.netTxBpsSeries.length-1])),d(),C("data",e.netTxBpsSeries)("height",60),d(2),E("",e.host?e.fmtBytes(e.host.net_bytes_sent):"-"," total"),d(4),M(y(55,55,"node.resource-monitor.threads")),d(3),M(e.host&&e.host.process?e.host.process.num_threads:"-"),d(),C("data",e.threadsSeries)("height",60),d(),S(e.host&&e.host.process?59:-1)}}function qMe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=v(3);d(),gt("heap_sys ",e.fmtBytes(e.proc.mem_heap_sys)," \xb7 sys ",e.fmtBytes(e.proc.mem_sys))}}function KMe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=v(3);d(),gt("GOMAXPROCS ",e.proc.gomaxprocs," \xb7 ",e.proc.go_version)}}function YMe(t,n){if(1&t&&(h(0,"div",13),p(1),u()),2&t){const e=v(3);d(),gt("total ",e.proc.num_gc," GCs \xb7 alloc ",e.fmtBytes(e.proc.mem_total_alloc)," since start")}}function XMe(t,n){if(1&t&&(h(0,"div",7)(1,"div",8)(2,"div",9)(3,"span",10),p(4),b(5,"translate"),u(),h(6,"span",11),p(7),b(8,"number"),u()(),B(9,"app-line-chart",14),x(10,qMe,2,2,"div",13),u(),h(11,"div",8)(12,"div",9)(13,"span",10),p(14),b(15,"translate"),u(),h(16,"span",11),p(17),u()(),B(18,"app-line-chart",14),x(19,KMe,2,2,"div",13),u(),h(20,"div",8)(21,"div",9)(22,"span",10),p(23),b(24,"translate"),u(),h(25,"span",11),p(26),u()(),B(27,"app-line-chart",14),x(28,YMe,2,2,"div",13),u()()),2&t){const e=v(2);d(4),M(y(5,15,"node.resource-monitor.heap")),d(3),E("",e.proc?pe(8,17,e.proc.mem_heap_alloc/1024/1024,"1.0-1"):"-","M"),d(2),C("data",e.heapMbSeries)("height",60),d(),S(e.proc?10:-1),d(4),M(y(15,20,"node.resource-monitor.goroutines")),d(3),M(e.proc?e.proc.num_goroutine:"-"),d(),C("data",e.goroutinesSeries)("height",60),d(),S(e.proc?19:-1),d(4),M(y(24,22,"node.resource-monitor.gc")),d(3),E("",e.gcSeries[e.gcSeries.length-1]||0,"/s"),d(),C("data",e.gcSeries)("height",60),d(),S(e.proc?28:-1)}}function ZMe(t,n){if(1&t){const e=oe();h(0,"div",5)(1,"span",6),F("click",function(){return j(e),U(v().setTab("host"))}),p(2),b(3,"translate"),u(),h(4,"span",6),F("click",function(){return j(e),U(v().setTab("process"))}),p(5),b(6,"translate"),u()(),x(7,GMe,60,57,"div",7),x(8,XMe,29,24,"div",7)}if(2&t){const e=v();d(),Ie("active","host"===e.activeTab),d(),E(" ",y(3,8,"node.resource-monitor.tab-host")," "),d(2),Ie("active","process"===e.activeTab),d(),E(" ",y(6,10,"node.resource-monitor.tab-process")," "),d(2),S("host"===e.activeTab?7:-1),d(),S("process"===e.activeTab?8:-1)}}let JMe=(()=>{class t{constructor(e,i){this.nodeService=e,this.cdr=i,this.openByDefault=!1,this.expanded=!1,this.activeTab="host",this.host=null,this.proc=null,this.procCPUPercent=0,this.procMemRssMB=0,this.cpuPctSeries=[],this.memPctSeries=[],this.diskPctSeries=[],this.netRxBpsSeries=[],this.netTxBpsSeries=[],this.goroutinesSeries=[],this.heapMbSeries=[],this.gcSeries=[],this.threadsSeries=[],this.prevNetRx=0,this.prevNetTx=0,this.prevGc=0,this.prevSampleAtMs=0,this.firstHostSample=!0,this.firstProcSample=!0}ngOnInit(){this.openByDefault&&(this.expanded=!0,this.startPolling())}ngOnDestroy(){this.stopPolling()}toggleExpanded(){this.expanded=!this.expanded,this.expanded?this.startPolling():this.stopPolling()}setTab(e){this.activeTab=e}fmtBytes(e){return null==e||isNaN(e)?"-":e>=1e9?(e/1e9).toFixed(1)+"G":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toFixed(0)+"B"}fmtBps(e){return null==e||isNaN(e)||e<0?"0B/s":this.fmtBytes(e)+"/s"}fmtUptime(e){if(!e)return"-";const i=Math.floor(e/86400),o=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return i>0?`${i}d ${o}h`:o>0?`${o}h ${r}m`:`${r}m`}startPolling(){this.stopPolling(),this.firstHostSample=!0,this.firstProcSample=!0,this.prevSampleAtMs=0,this.pollSub=xa(0,1e3).subscribe(()=>{this.pollHost(),this.pollProc()})}stopPolling(){this.pollSub&&(this.pollSub.unsubscribe(),this.pollSub=null),this.hostSub&&(this.hostSub.unsubscribe(),this.hostSub=null),this.procSub&&(this.procSub.unsubscribe(),this.procSub=null)}pollHost(){this.nodeKey&&(this.hostSub&&this.hostSub.unsubscribe(),this.hostSub=this.nodeService.getHostStats(this.nodeKey).subscribe(e=>this.onHostStats(e),()=>{}))}pollProc(){this.nodeKey&&(this.procSub&&this.procSub.unsubscribe(),this.procSub=this.nodeService.getRuntimeStats(this.nodeKey).subscribe(e=>this.onRuntimeStats(e),()=>{}))}onHostStats(e){this.host=e,this.procCPUPercent=e.process?e.process.cpu_percent:0,this.procMemRssMB=e.process?e.process.mem_rss/1024/1024:0;const i=Date.now();let o=(i-this.prevSampleAtMs)/1e3;if((o<=0||o>5)&&(o=1),this.prevSampleAtMs=i,this.push(this.cpuPctSeries,e.cpu_percent),this.push(this.memPctSeries,e.mem_percent),this.push(this.diskPctSeries,e.disk_percent||0),this.push(this.threadsSeries,e.process&&e.process.num_threads||0),this.firstHostSample)this.firstHostSample=!1;else{const r=Math.max(0,e.net_bytes_recv-this.prevNetRx)/o,s=Math.max(0,e.net_bytes_sent-this.prevNetTx)/o;this.push(this.netRxBpsSeries,r),this.push(this.netTxBpsSeries,s)}this.prevNetRx=e.net_bytes_recv,this.prevNetTx=e.net_bytes_sent,this.cdr.markForCheck()}onRuntimeStats(e){this.proc=e,this.push(this.goroutinesSeries,e.num_goroutine),this.push(this.heapMbSeries,e.mem_heap_alloc/1024/1024),this.firstProcSample?this.firstProcSample=!1:this.push(this.gcSeries,Math.max(0,e.num_gc-this.prevGc)),this.prevGc=e.num_gc,this.cdr.markForCheck()}push(e,i){e.push(i),e.length>60&&e.shift()}static{this.\u0275fac=function(i){return new(i||t)(O(Io),O(Jt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-resource-monitor"]],inputs:{nodeKey:"nodeKey",openByDefault:"openByDefault"},standalone:!1,decls:9,vars:7,consts:[[1,"resource-monitor","mt-3"],[1,"rm-header",3,"click"],[1,"rm-toggle-icon",3,"inline"],[1,"section-title"],[1,"rm-host-summary"],[1,"rm-tabs"],[1,"rm-tab",3,"click"],[1,"rm-grid"],[1,"rm-cell"],[1,"rm-cell-header"],[1,"rm-cell-label"],[1,"rm-cell-value"],[3,"data","min","max","height"],[1,"rm-cell-foot"],[3,"data","height"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1),F("click",function(){return o.toggleExpanded()}),h(2,"mat-icon",2),p(3),u(),h(4,"span",3),p(5),b(6,"translate"),u(),x(7,jMe,2,4,"span",4),u(),x(8,ZMe,9,12),u()),2&i&&(d(2),C("inline",!0),d(),M(o.expanded?"expand_less":"expand_more"),d(2),M(y(6,5,"node.resource-monitor.title")),d(2),S(o.host?7:-1),d(),S(o.expanded?8:-1))},dependencies:[We,Gv,Vl,xe],styles:[".resource-monitor[_ngcontent-%COMP%]{border-top:1px solid rgba(255,255,255,.08);padding-top:12px}.rm-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none;padding:4px 0}.rm-toggle-icon[_ngcontent-%COMP%]{font-size:22px}.rm-host-summary[_ngcontent-%COMP%]{margin-left:auto;opacity:.6;font-size:12px}.rm-tabs[_ngcontent-%COMP%]{display:flex;gap:16px;margin:8px 0 12px;font-size:13px}.rm-tab[_ngcontent-%COMP%]{cursor:pointer;padding:4px 8px;border-radius:4px;opacity:.6}.rm-tab.active[_ngcontent-%COMP%]{opacity:1;background:#ffffff0f}.rm-tab[_ngcontent-%COMP%]:hover{opacity:.9}.rm-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.rm-cell[_ngcontent-%COMP%]{background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:6px;padding:8px 10px;min-height:110px;display:flex;flex-direction:column}.rm-cell-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:2px}.rm-cell-label[_ngcontent-%COMP%]{font-size:11px;text-transform:uppercase;opacity:.7;letter-spacing:.5px}.rm-cell-value[_ngcontent-%COMP%]{font-size:14px;font-weight:500;font-variant-numeric:tabular-nums}.rm-cell-foot[_ngcontent-%COMP%]{margin-top:2px;font-size:11px;opacity:.5;font-variant-numeric:tabular-nums}"]})}}return t})();function eTe(t,n){1&t&&B(0,"app-resource-monitor",0),2&t&&C("nodeKey",v().node.localPk)("openByDefault",!0)}let tTe=(()=>{class t extends pn{ngOnInit(){return this.dataSubscription=ke.currentNode.subscribe(e=>{this.node=e}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription&&this.dataSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})()}static{this.\u0275cmp=re({type:t,selectors:[["app-node-resources"]],standalone:!1,features:[be],decls:1,vars:1,consts:[[3,"nodeKey","openByDefault"]],template:function(i,o){1&i&&x(0,eTe,1,2,"app-resource-monitor",0),2&i&&S(o.node?0:-1)},dependencies:[JMe],encapsulation:2})}}return t})();const nTe=["logEl"],iTe=t=>({active:t});function oTe(t,n){if(1&t&&(h(0,"span",8),p(1),u()),2&t){const e=v(2);d(),E("\xb7 ",e.errorText)}}function rTe(t,n){1&t&&(h(0,"span",9),p(1),b(2,"translate"),u()),2&t&&(d(),E("\xb7 ",y(2,1,"skychat.no-history")))}function sTe(t,n){if(1&t){const e=oe();h(0,"mat-form-field",34)(1,"mat-label"),p(2),b(3,"translate"),u(),h(4,"input",35),zt("ngModelChange",function(o){j(e);const r=v(3);return Zt(r.pwOld,o)||(r.pwOld=o),U(o)}),u()()}if(2&t){const e=v(3);d(2),M(y(3,2,"skychat.password.old")),d(2),Ut("ngModel",e.pwOld)}}function aTe(t,n){if(1&t){const e=oe();h(0,"button",39),F("click",function(){return j(e),U(v(3).clearPassword())}),p(1),b(2,"translate"),u()}if(2&t){const e=v(3);C("disabled",e.pwBusy||!e.pwOld),d(),E(" ",y(2,2,"skychat.password.clear")," ")}}function lTe(t,n){if(1&t){const e=oe();h(0,"div",13)(1,"div",33),p(2),b(3,"translate"),u(),x(4,sTe,5,4,"mat-form-field",34),h(5,"mat-form-field",34)(6,"mat-label"),p(7),b(8,"translate"),u(),h(9,"input",35),zt("ngModelChange",function(o){j(e);const r=v(2);return Zt(r.pwNew,o)||(r.pwNew=o),U(o)}),u()(),h(10,"mat-form-field",34)(11,"mat-label"),p(12),b(13,"translate"),u(),h(14,"input",35),zt("ngModelChange",function(o){j(e);const r=v(2);return Zt(r.pwConfirm,o)||(r.pwConfirm=o),U(o)}),u()(),h(15,"div",36)(16,"button",37),F("click",function(){return j(e),U(v(2).applyPassword())}),p(17),b(18,"translate"),u(),x(19,aTe,3,4,"button",38),u()()}if(2&t){const e=v(2);d(2),E(" ",y(3,9,e.pwIsSet?"skychat.password.help-set":"skychat.password.help-unset")," "),d(2),S(e.pwIsSet?4:-1),d(3),M(y(8,11,"skychat.password.new")),d(2),Ut("ngModel",e.pwNew),d(3),M(y(13,13,"skychat.password.confirm")),d(2),Ut("ngModel",e.pwConfirm),d(2),C("disabled",e.pwBusy||!e.pwNew),d(),E(" ",y(18,15,e.pwIsSet?"skychat.password.change":"skychat.password.set")," "),d(2),S(e.pwIsSet?19:-1)}}function cTe(t,n){1&t&&(h(0,"div",17),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"skychat.peers-empty")))}function dTe(t,n){if(1&t){const e=oe();h(0,"div",40),F("click",function(){const o=j(e).$implicit;return U(v(2).pickRecipient(o))}),h(1,"span",41),p(2),u()()}if(2&t){const e=n.$implicit,i=v(2);C("ngClass",se(3,iTe,i.toPK===e))("matTooltip",e),d(2),M(e)}}function uTe(t,n){1&t&&(h(0,"div",21),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"skychat.empty")))}function hTe(t,n){if(1&t){const e=oe();h(0,"div",22)(1,"div",42)(2,"span",43),F("click",function(){const o=j(e).$implicit;return U(v(2).pickRecipient(o.peer))}),p(3),u(),h(4,"span",44),p(5),b(6,"date"),u()(),h(7,"div",45),p(8),u()()}if(2&t){const e=n.$implicit;C("ngClass",e.direction),d(2),C("matTooltip",e.peer),d(),gt(" ","out"===e.direction?"\u2192":"\u2190"," ",e.peer," "),d(2),M(pe(6,6,e.ts,"mediumTime")),d(3),M(e.text)}}function fTe(t,n){if(1&t){const e=oe();h(0,"div",1)(1,"div",2)(2,"div",3),B(3,"span",4),h(4,"span",5),p(5),b(6,"translate"),u(),h(7,"span",6),p(8,"\xb7"),u(),h(9,"span",7),p(10),b(11,"translate"),b(12,"translate"),u(),x(13,oTe,2,1,"span",8),x(14,rTe,3,3,"span",9),B(15,"span",10),h(16,"button",11),F("click",function(){return j(e),U(v().togglePassword())}),h(17,"mat-icon",12),p(18),u(),p(19),b(20,"translate"),u()(),x(21,lTe,20,17,"div",13),h(22,"div",14)(23,"aside",15)(24,"div",16),p(25),b(26,"translate"),u(),x(27,cTe,3,3,"div",17),ve(28,dTe,3,5,"div",18,Fe),u(),h(30,"section",19)(31,"div",20,0),x(33,uTe,3,3,"div",21),ve(34,hTe,9,9,"div",22,mO),u(),h(36,"div",23)(37,"mat-form-field",24)(38,"mat-label"),p(39),b(40,"translate"),u(),h(41,"input",25),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.toPK,o)||(r.toPK=o),U(o)}),u()(),h(42,"mat-form-field",26)(43,"mat-label"),p(44),b(45,"translate"),u(),h(46,"mat-select",27),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.network,o)||(r.network=o),U(o)}),h(47,"mat-option",28),p(48,"skynet"),u(),h(49,"mat-option",29),p(50,"dmsg"),u()()()(),h(51,"div",23)(52,"mat-form-field",30)(53,"mat-label"),p(54),b(55,"translate"),u(),h(56,"textarea",31),b(57,"translate"),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.message,o)||(r.message=o),U(o)}),F("keydown.enter",function(o){j(e);const r=v();return U(o.ctrlKey&&r.send())}),u()(),h(58,"button",32),F("click",function(){return j(e),U(v().send())}),h(59,"mat-icon"),p(60,"send"),u(),p(61),b(62,"translate"),u()()()()()()}if(2&t){const e=v();d(3),C("ngClass",e.connected?"dot-green":"dot-outline-gray"),d(2),M(y(6,21,"skychat.title")),d(5),M(e.connected?y(11,23,"skychat.connected"):y(12,25,"skychat.disconnected")),d(3),S(e.errorText?13:-1),d(),S(e.historyAvailable?-1:14),d(3),C("inline",!0),d(),M(e.pwIsSet?"lock":"lock_open"),d(),E(" ",y(20,27,e.pwOpen?"skychat.password.hide":e.pwIsSet?"skychat.password.change":"skychat.password.set")," "),d(2),S(e.pwOpen?21:-1),d(4),M(y(26,29,"skychat.peers")),d(2),S(0===e.peers.length?27:-1),d(),ye(e.peers),d(5),S(0===e.messages.length?33:-1),d(),ye(e.messages),d(5),M(y(40,31,"skychat.to")),d(2),Ut("ngModel",e.toPK),d(3),M(y(45,33,"skychat.network")),d(2),Ut("ngModel",e.network),d(8),M(y(55,35,"skychat.message")),d(2),Ut("ngModel",e.message),C("placeholder",y(57,37,"skychat.placeholder")),d(2),C("disabled",e.sending||!e.message.trim()||!e.toPK.trim()),d(3),E(" ",y(62,39,"skychat.send")," ")}}let pTe=(()=>{class t extends pn{get peers(){const e=[],i=new Set;for(let o=this.messages.length-1;o>=0;o--){const r=this.messages[o].peer;!r||i.has(r)||(i.add(r),e.push(r))}return e}constructor(e,i,o){super(),this.api=e,this.snackbar=i,this.cdr=o,this.toPK="",this.message="",this.network="skynet",this.sending=!1,this.messages=[],this.connected=!1,this.errorText="",this.historyAvailable=!0,this.wasAtBottom=!0,this.es=null,this.pwOpen=!1,this.pwIsSet=!1,this.pwOld="",this.pwNew="",this.pwConfirm="",this.pwBusy=!1}ngOnInit(){return this.nodeSub=ke.currentNode.subscribe(e=>{const i=!this.node;this.node=e,i&&(this.connectSSE(),this.tryLoadPeers(),this.refreshPasswordState())}),super.ngOnInit()}ngOnDestroy(){this.nodeSub&&this.nodeSub.unsubscribe(),this.disconnectSSE()}ngAfterViewChecked(){if(this.wasAtBottom&&this.logEl){const e=this.logEl.nativeElement;e.scrollTop=e.scrollHeight}}proxyUrl(e){return`/api/visors/${this.node.localPk}/skychat/proxy/${e.replace(/^\/+/,"")}`}connectSSE(){if(this.node&&!this.es)try{this.es=new EventSource(this.proxyUrl("sse")),this.es.onopen=()=>{this.connected=!0,this.errorText="",this.cdr.markForCheck()},this.es.onerror=()=>{this.connected=!1,this.errorText="Disconnected \u2014 retrying\u2026",this.cdr.markForCheck()},this.es.onmessage=e=>this.handleSSE(e.data)}catch(e){this.errorText=`SSE setup failed: ${e?.message||e}`}}disconnectSSE(){this.es&&(this.es.close(),this.es=null)}handleSSE(e){let i=null;try{i=JSON.parse(e)}catch{}if(!i||"object"!=typeof i)return;const o={peer:i.sender||i.from||"",direction:"in",text:"string"==typeof i.message?i.message:i.text||"",ts:Date.now()};!o.peer||!o.text||(this.captureScroll(),this.messages.push(o),this.messages.length>500&&this.messages.shift(),this.cdr.markForCheck())}send(){var e=this;if(this.sending)return;const i=this.toPK.trim(),o=this.message.trim();if(i&&o){if(66!==i.length||!/^[0-9a-fA-F]+$/.test(i))return void this.snackbar.showError("Recipient must be a 66-char hex public key");this.sending=!0,fetch(this.proxyUrl("message"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({recipient:i,message:o,network:this.network})}).then(function(){var r=Et(function*(s){if(!s.ok){const a=yield s.text();throw new Error(a||`HTTP ${s.status}`)}e.captureScroll(),e.messages.push({peer:i,direction:"out",text:o,ts:Date.now()}),e.messages.length>500&&e.messages.shift(),e.message="",e.cdr.markForCheck()});return function(s){return r.apply(this,arguments)}}()).catch(r=>{this.snackbar.showError(r?.message||String(r))}).finally(()=>{this.sending=!1,this.cdr.markForCheck()})}}tryLoadPeers(){var e=this;!this.node||!this.historyAvailable||fetch(this.proxyUrl("history?limit=100")).then(function(){var i=Et(function*(o){if(503===o.status)return e.historyAvailable=!1,null;if(!o.ok)throw new Error(`HTTP ${o.status}`);return o.json()});return function(o){return i.apply(this,arguments)}}()).then(i=>{if(!Array.isArray(i))return;const o=i.map(r=>({peer:r.peer||r.sender||"",direction:"out"===r.direction?"out":"in",text:r.message||r.text||"",ts:r.timestamp||r.ts||Date.now()})).filter(r=>r.peer&&r.text);this.messages=o.concat(this.messages),this.cdr.markForCheck()}).catch(()=>{})}pickRecipient(e){this.toPK=e}captureScroll(){if(!this.logEl)return void(this.wasAtBottom=!0);const e=this.logEl.nativeElement;this.wasAtBottom=e.scrollHeight-e.scrollTop-e.clientHeight<40}togglePassword(){this.pwOpen=!this.pwOpen,this.pwOpen?this.refreshPasswordState():this.resetPasswordForm()}refreshPasswordState(){this.node&&this.api.get(`visors/${this.node.localPk}/skychat/password`).subscribe(e=>{this.pwIsSet=!(!e||!e.set),this.cdr.markForCheck()},()=>{})}resetPasswordForm(){this.pwOld="",this.pwNew="",this.pwConfirm=""}validateNewPassword(){return this.pwNew.length<6||this.pwNew.length>64?"skychat.password.errors.length":this.pwNew!==this.pwConfirm?"skychat.password.errors.mismatch":null}applyPassword(){if(!this.node||this.pwBusy)return;const e=this.validateNewPassword();e?this.snackbar.showError(e):(this.pwBusy=!0,this.api.put(`visors/${this.node.localPk}/skychat/password`,{old_password:this.pwIsSet?this.pwOld:"",new_password:this.pwNew}).subscribe(()=>{this.pwBusy=!1,this.pwIsSet=!0,this.resetPasswordForm(),this.snackbar.showDone("skychat.password.saved"),this.cdr.markForCheck()},i=>{this.pwBusy=!1,this.snackbar.showError(i?.originalError?.error?.error||i?.message||String(i)),this.cdr.markForCheck()}))}clearPassword(){if(this.node&&!this.pwBusy&&this.pwIsSet){if(!this.pwOld)return void this.snackbar.showError("skychat.password.errors.old-required");this.pwBusy=!0,this.api.delete(`visors/${this.node.localPk}/skychat/password?old_password=${encodeURIComponent(this.pwOld)}`).subscribe(()=>{this.pwBusy=!1,this.pwIsSet=!1,this.resetPasswordForm(),this.snackbar.showDone("skychat.password.cleared"),this.cdr.markForCheck()},e=>{this.pwBusy=!1,this.snackbar.showError(e?.originalError?.error?.error||e?.message||String(e)),this.cdr.markForCheck()})}}static{this.\u0275fac=function(i){return new(i||t)(O(zi),O(ct),O(Jt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-skychat"]],viewQuery:function(i,o){if(1&i&&ot(nTe,5),2&i){let r;he(r=fe())&&(o.logEl=r.first)}},standalone:!1,features:[be],decls:1,vars:1,consts:[["logEl",""],[1,"rounded-elevated-box","mt-3","skychat-box"],[1,"box-internal-container","sc-shell"],[1,"sc-status"],[1,"dot",3,"ngClass"],[1,"status-text"],[1,"status-sep"],[1,"status-conn"],[1,"error"],[1,"hint"],[1,"sc-status-spacer"],["mat-button","","type","button",1,"sc-password-toggle",3,"click"],[1,"lock-icon",3,"inline"],[1,"sc-password"],[1,"sc-body"],[1,"sc-sidebar"],[1,"sc-sidebar-title"],[1,"sc-sidebar-empty"],[1,"sc-peer",3,"ngClass","matTooltip"],[1,"sc-chat"],[1,"sc-log"],[1,"sc-empty"],[1,"sc-msg",3,"ngClass"],[1,"sc-composer"],["appearance","outline",1,"field-pk"],["matInput","","placeholder","02abc\u2026",3,"ngModelChange","ngModel"],["appearance","outline",1,"field-sm"],["panelClass","skynet-select-panel",3,"ngModelChange","ngModel"],["value","skynet"],["value","dmsg"],["appearance","outline",1,"field-msg"],["matInput","","rows","2",3,"ngModelChange","keydown.enter","ngModel","placeholder"],["mat-raised-button","","color","primary",1,"send-btn",3,"click","disabled"],[1,"sc-password-help"],["appearance","outline",1,"field-pw"],["matInput","","type","password","maxlength","64",3,"ngModelChange","ngModel"],[1,"sc-password-actions"],["mat-raised-button","","color","primary",3,"click","disabled"],["mat-stroked-button","","color","warn",3,"disabled"],["mat-stroked-button","","color","warn",3,"click","disabled"],[1,"sc-peer",3,"click","ngClass","matTooltip"],[1,"peer-pk","mono","small"],[1,"sc-msg-meta"],[1,"peer","mono","small",3,"click","matTooltip"],[1,"ts"],[1,"sc-msg-text"]],template:function(i,o){1&i&&x(0,fTe,63,41,"div",1),2&i&&S(o.node?0:-1)},dependencies:[$t,Gt,qt,wi,sn,Os,In,Pn,We,Kt,cu,Pa,Qr,fa,xe],styles:[".skychat-box[_ngcontent-%COMP%]{display:flex;flex-direction:column}.sc-shell[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.sc-status[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:13px;padding:6px 4px}.sc-status[_ngcontent-%COMP%] .status-text[_ngcontent-%COMP%]{font-weight:600;font-size:14px}.sc-status[_ngcontent-%COMP%] .status-sep[_ngcontent-%COMP%]{opacity:.5}.sc-status[_ngcontent-%COMP%] .status-conn[_ngcontent-%COMP%]{font-weight:500}.sc-status[_ngcontent-%COMP%] .error[_ngcontent-%COMP%]{opacity:.85;color:#e53935e6}.sc-status[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{opacity:.6}.sc-status[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{display:inline-block;width:8px;height:8px;border-radius:50%}.sc-status[_ngcontent-%COMP%] .dot-green[_ngcontent-%COMP%]{background:#4caf50}.sc-status[_ngcontent-%COMP%] .dot-outline-gray[_ngcontent-%COMP%]{border:1px solid rgba(255,255,255,.4)}.sc-status[_ngcontent-%COMP%] .sc-status-spacer[_ngcontent-%COMP%]{flex:1 1 auto}.sc-status[_ngcontent-%COMP%] .sc-password-toggle[_ngcontent-%COMP%]{font-size:12px;line-height:1.2}.sc-status[_ngcontent-%COMP%] .sc-password-toggle[_ngcontent-%COMP%] .lock-icon[_ngcontent-%COMP%]{font-size:16px;vertical-align:middle;margin-right:4px}.sc-password[_ngcontent-%COMP%]{margin:8px 0 4px;padding:12px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:6px;display:flex;flex-wrap:wrap;gap:12px 16px;align-items:flex-end}.sc-password[_ngcontent-%COMP%] .sc-password-help[_ngcontent-%COMP%]{flex:1 1 100%;font-size:12px;opacity:.75;margin-bottom:4px}.sc-password[_ngcontent-%COMP%] .field-pw[_ngcontent-%COMP%]{flex:1 1 200px;min-width:180px}.sc-password[_ngcontent-%COMP%] .sc-password-actions[_ngcontent-%COMP%]{flex:1 1 100%;display:flex;gap:8px;justify-content:flex-end}.sc-body[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:stretch}.sc-sidebar[_ngcontent-%COMP%]{flex:0 0 220px;max-width:240px;display:flex;flex-direction:column;gap:4px;padding:8px;background:#0000002e;border:1px solid rgba(255,255,255,.06);border-radius:6px;overflow-y:auto;max-height:60vh}.sc-sidebar[_ngcontent-%COMP%] .sc-sidebar-title[_ngcontent-%COMP%]{font-size:11px;text-transform:uppercase;letter-spacing:.5px;opacity:.6;padding:2px 4px 6px}.sc-sidebar[_ngcontent-%COMP%] .sc-sidebar-empty[_ngcontent-%COMP%]{padding:8px 4px;font-size:12px;opacity:.5}.sc-sidebar[_ngcontent-%COMP%] .sc-peer[_ngcontent-%COMP%]{cursor:pointer;padding:6px 8px;border-radius:4px;border:1px solid transparent;background:#ffffff08}.sc-sidebar[_ngcontent-%COMP%] .sc-peer[_ngcontent-%COMP%]:hover{background:#ffffff0f}.sc-sidebar[_ngcontent-%COMP%] .sc-peer.active[_ngcontent-%COMP%]{background:#2196f32e;border-color:#2196f373}.sc-sidebar[_ngcontent-%COMP%] .sc-peer[_ngcontent-%COMP%] .peer-pk[_ngcontent-%COMP%]{display:block;word-break:break-all;line-height:1.25;font-size:10px}@media(max-width:720px){.sc-body[_ngcontent-%COMP%]{flex-direction:column}.sc-sidebar[_ngcontent-%COMP%]{flex:0 0 auto;max-width:none;max-height:140px}}.sc-chat[_ngcontent-%COMP%]{flex:1 1 auto;display:flex;flex-direction:column;min-width:0}.sc-log[_ngcontent-%COMP%]{background:#0000002e;border:1px solid rgba(255,255,255,.06);border-radius:6px;padding:8px;height:50vh;min-height:320px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.sc-empty[_ngcontent-%COMP%]{margin:auto;opacity:.5;font-size:13px}.sc-msg[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border-radius:6px;background:#ffffff08;max-width:80%}.sc-msg.in[_ngcontent-%COMP%]{align-self:flex-start}.sc-msg.out[_ngcontent-%COMP%]{align-self:flex-end;background:#2196f32e}.sc-msg-meta[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center;font-size:11px;opacity:.7;flex-wrap:wrap}.sc-msg-meta[_ngcontent-%COMP%] .peer[_ngcontent-%COMP%]{cursor:pointer;-webkit-text-decoration:underline dotted transparent;text-decoration:underline dotted transparent;word-break:break-all}.sc-msg-meta[_ngcontent-%COMP%] .peer[_ngcontent-%COMP%]:hover{text-decoration-color:currentColor}.sc-msg-text[_ngcontent-%COMP%]{white-space:pre-wrap;word-break:break-word;font-size:13px}.sc-composer[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:flex-start;margin-top:8px}.sc-composer[_ngcontent-%COMP%] .field-pk[_ngcontent-%COMP%]{flex:1 1 360px}.sc-composer[_ngcontent-%COMP%] .field-sm[_ngcontent-%COMP%]{flex:0 1 130px}.sc-composer[_ngcontent-%COMP%] .field-msg[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0}.sc-composer[_ngcontent-%COMP%] .send-btn[_ngcontent-%COMP%]{flex:0 0 auto;align-self:center;height:56px;white-space:nowrap}"]})}}return t})(),l6=(()=>{class t{constructor(e){this.apiService=e}create(e,i,o){const r={remote_pk:i};return o&&(r.transport_type=o),this.apiService.post(`visors/${e}/transports`,r)}delete(e,i){return this.apiService.delete(`visors/${e}/transports/${i}`)}savePersistentTransportsData(e,i){return this.apiService.put(`visors/${e}/persistent-transports`,i)}getPersistentTransports(e){return this.apiService.get(`visors/${e}/persistent-transports`)}types(e){return this.apiService.get(`visors/${e}/transport-types`)}changeAutoconnectSetting(e,i){const o={};return o.public_autoconnect=i,this.apiService.put(`visors/${e}/public-autoconnect`,o)}static{this.\u0275fac=function(i){return new(i||t)(ce(zi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const mTe=["switch"],gTe=["*"];function _Te(t,n){1&t&&(h(0,"span",11),rl(),h(1,"svg",13),B(2,"path",14),u(),h(3,"svg",15),B(4,"path",16),u()())}const bTe=new Z("mat-slide-toggle-default-options",{providedIn:"root",factory:()=>({disableToggleValue:!1,hideIcon:!1,disabledInteractive:!1})});class c6{source;checked;constructor(n,e){this.source=n,this.checked=e}}let d6=(()=>{class t{_elementRef=D(Re);_focusMonitor=D(ec);_changeDetectorRef=D(Jt);defaults=D(bTe);_onChange=e=>{};_onTouched=()=>{};_validatorOnChange=()=>{};_uniqueId;_checked=!1;_createChangeEvent(e){return new c6(this,e)}_labelId;get buttonId(){return`${this.id||this._uniqueId}-button`}_switchElement;focus(){this._switchElement.nativeElement.focus()}_noopAnimations=ci();_focused=!1;name=null;id;labelPosition="after";ariaLabel=null;ariaLabelledby=null;ariaDescribedby;required=!1;color;disabled=!1;disableRipple=!1;tabIndex=0;get checked(){return this._checked}set checked(e){this._checked=e,this._changeDetectorRef.markForCheck()}hideIcon;disabledInteractive;change=new we;toggleChange=new we;get inputId(){return`${this.id||this._uniqueId}-input`}constructor(){D(zo).load(tu);const e=D(new Yh("tabindex"),{optional:!0}),i=this.defaults;this.tabIndex=null==e?0:parseInt(e)||0,this.color=i.color||"accent",this.id=this._uniqueId=D(ni).getId("mat-mdc-slide-toggle-"),this.hideIcon=i.hideIcon??!1,this.disabledInteractive=i.disabledInteractive??!1,this._labelId=this._uniqueId+"-label"}ngAfterContentInit(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{"keyboard"===e||"program"===e?(this._focused=!0,this._changeDetectorRef.markForCheck()):e||Promise.resolve().then(()=>{this._focused=!1,this._onTouched(),this._changeDetectorRef.markForCheck()})})}ngOnChanges(e){e.required&&this._validatorOnChange()}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}writeValue(e){this.checked=!!e}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}validate(e){return this.required&&!0!==e.value?{required:!0}:null}registerOnValidatorChange(e){this._validatorOnChange=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck()}toggle(){this.checked=!this.checked,this._onChange(this.checked)}_emitChangeEvent(){this._onChange(this.checked),this.change.emit(this._createChangeEvent(this.checked))}_handleClick(){this.disabled||(this.toggleChange.emit(),this.defaults.disableToggleValue||(this.checked=!this.checked,this._onChange(this.checked),this.change.emit(new c6(this,this.checked))))}_getAriaLabelledBy(){return this.ariaLabelledby?this.ariaLabelledby:this.ariaLabel?null:this._labelId}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=re({type:t,selectors:[["mat-slide-toggle"]],viewQuery:function(i,o){if(1&i&&ot(mTe,5),2&i){let r;he(r=fe())&&(o._switchElement=r.first)}},hostAttrs:[1,"mat-mdc-slide-toggle"],hostVars:13,hostBindings:function(i,o){2&i&&(ur("id",o.id),$e("tabindex",null)("aria-label",null)("name",null)("aria-labelledby",null),Ze(o.color?"mat-"+o.color:""),Ie("mat-mdc-slide-toggle-focused",o._focused)("mat-mdc-slide-toggle-checked",o.checked)("_mat-animation-noopable",o._noopAnimations))},inputs:{name:"name",id:"id",labelPosition:"labelPosition",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],required:[2,"required","required",De],color:"color",disabled:[2,"disabled","disabled",De],disableRipple:[2,"disableRipple","disableRipple",De],tabIndex:[2,"tabIndex","tabIndex",e=>null==e?0:hr(e)],checked:[2,"checked","checked",De],hideIcon:[2,"hideIcon","hideIcon",De],disabledInteractive:[2,"disabledInteractive","disabledInteractive",De]},outputs:{change:"change",toggleChange:"toggleChange"},exportAs:["matSlideToggle"],features:[lt([{provide:Yo,useExisting:Nt(()=>t),multi:!0},{provide:Ci,useExisting:t,multi:!0}]),_i],ngContentSelectors:gTe,decls:14,vars:27,consts:[["switch",""],["mat-internal-form-field","",3,"labelPosition"],["role","switch","type","button",1,"mdc-switch",3,"click","tabIndex","disabled"],[1,"mat-mdc-slide-toggle-touch-target"],[1,"mdc-switch__track"],[1,"mdc-switch__handle-track"],[1,"mdc-switch__handle"],[1,"mdc-switch__shadow"],[1,"mdc-elevation-overlay"],[1,"mdc-switch__ripple"],["mat-ripple","",1,"mat-mdc-slide-toggle-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-switch__icons"],[1,"mdc-label",3,"click","for"],["viewBox","0 0 24 24","aria-hidden","true",1,"mdc-switch__icon","mdc-switch__icon--on"],["d","M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z"],["viewBox","0 0 24 24","aria-hidden","true",1,"mdc-switch__icon","mdc-switch__icon--off"],["d","M20 13H4v-2h16v2z"]],template:function(i,o){if(1&i&&(yi(),h(0,"div",1)(1,"button",2,0),F("click",function(){return o._handleClick()}),B(3,"div",3)(4,"span",4),h(5,"span",5)(6,"span",6)(7,"span",7),B(8,"span",8),u(),h(9,"span",9),B(10,"span",10),u(),x(11,_Te,5,0,"span",11),u()()(),h(12,"label",12),F("click",function(s){return s.stopPropagation()}),Pt(13),u()()),2&i){const r=Hn(2);C("labelPosition",o.labelPosition),d(),Ie("mdc-switch--selected",o.checked)("mdc-switch--unselected",!o.checked)("mdc-switch--checked",o.checked)("mdc-switch--disabled",o.disabled)("mat-mdc-slide-toggle-disabled-interactive",o.disabledInteractive),C("tabIndex",o.disabled&&!o.disabledInteractive?-1:o.tabIndex)("disabled",o.disabled&&!o.disabledInteractive),$e("id",o.buttonId)("name",o.name)("aria-label",o.ariaLabel)("aria-labelledby",o._getAriaLabelledBy())("aria-describedby",o.ariaDescribedby)("aria-required",o.required||null)("aria-checked",o.checked)("aria-disabled",o.disabled&&o.disabledInteractive?"true":null),d(9),C("matRippleTrigger",r)("matRippleDisabled",o.disableRipple||o.disabled)("matRippleCentered",!0),d(),S(o.hideIcon?-1:11),d(),C("for",o.buttonId),$e("id",o._labelId)}},dependencies:[eu,nV],styles:['.mdc-switch{align-items:center;background:none;border:none;cursor:pointer;display:inline-flex;flex-shrink:0;margin:0;outline:none;overflow:visible;padding:0;position:relative;width:var(--mat-slide-toggle-track-width, 52px)}.mdc-switch.mdc-switch--disabled{cursor:default;pointer-events:none}.mdc-switch.mat-mdc-slide-toggle-disabled-interactive{pointer-events:auto}.mdc-switch__track{overflow:hidden;position:relative;width:100%;height:var(--mat-slide-toggle-track-height, 32px);border-radius:var(--mat-slide-toggle-track-shape, var(--mat-sys-corner-full))}.mdc-switch--disabled.mdc-switch .mdc-switch__track{opacity:var(--mat-slide-toggle-disabled-track-opacity, 0.12)}.mdc-switch__track::before,.mdc-switch__track::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";height:100%;left:0;position:absolute;width:100%;border-width:var(--mat-slide-toggle-track-outline-width, 2px);border-color:var(--mat-slide-toggle-track-outline-color, var(--mat-sys-outline))}.mdc-switch--selected .mdc-switch__track::before,.mdc-switch--selected .mdc-switch__track::after{border-width:var(--mat-slide-toggle-selected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-selected-track-outline-color, transparent)}.mdc-switch--disabled .mdc-switch__track::before,.mdc-switch--disabled .mdc-switch__track::after{border-width:var(--mat-slide-toggle-disabled-unselected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-disabled-unselected-track-outline-color, var(--mat-sys-on-surface))}@media(forced-colors: active){.mdc-switch__track{border-color:currentColor}}.mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0);background:var(--mat-slide-toggle-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch--selected .mdc-switch__track::before{transform:translateX(-100%)}.mdc-switch--selected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-hover-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-focus-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:active .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-pressed-track-color, var(--mat-sys-surface-variant))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::before,.mdc-switch.mdc-switch--disabled .mdc-switch__track::before{background:var(--mat-slide-toggle-disabled-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch__track::after{transform:translateX(-100%);background:var(--mat-slide-toggle-selected-track-color, var(--mat-sys-primary))}[dir=rtl] .mdc-switch__track::after{transform:translateX(100%)}.mdc-switch--selected .mdc-switch__track::after{transform:translateX(0)}.mdc-switch--selected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-hover-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-focus-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:active .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-pressed-track-color, var(--mat-sys-primary))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::after,.mdc-switch.mdc-switch--disabled .mdc-switch__track::after{background:var(--mat-slide-toggle-disabled-selected-track-color, var(--mat-sys-on-surface))}.mdc-switch__handle-track{height:100%;pointer-events:none;position:absolute;top:0;transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);left:0;right:auto;transform:translateX(0);width:calc(100% - var(--mat-slide-toggle-handle-width))}[dir=rtl] .mdc-switch__handle-track{left:auto;right:0}.mdc-switch--selected .mdc-switch__handle-track{transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__handle-track{transform:translateX(-100%)}.mdc-switch__handle{display:flex;pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);left:0;right:auto;transition:width 75ms cubic-bezier(0.4, 0, 0.2, 1),height 75ms cubic-bezier(0.4, 0, 0.2, 1),margin 75ms cubic-bezier(0.4, 0, 0.2, 1);width:var(--mat-slide-toggle-handle-width);height:var(--mat-slide-toggle-handle-height);border-radius:var(--mat-slide-toggle-handle-shape, var(--mat-sys-corner-full))}[dir=rtl] .mdc-switch__handle{left:auto;right:0}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle{width:var(--mat-slide-toggle-unselected-handle-size, 16px);height:var(--mat-slide-toggle-unselected-handle-size, 16px);margin:var(--mat-slide-toggle-unselected-handle-horizontal-margin, 0 8px)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-unselected-with-icon-handle-horizontal-margin, 0 4px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle{width:var(--mat-slide-toggle-selected-handle-size, 24px);height:var(--mat-slide-toggle-selected-handle-size, 24px);margin:var(--mat-slide-toggle-selected-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-selected-with-icon-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch__handle:has(.mdc-switch__icons){width:var(--mat-slide-toggle-with-icon-handle-size, 24px);height:var(--mat-slide-toggle-with-icon-handle-size, 24px)}.mat-mdc-slide-toggle .mdc-switch:active:not(.mdc-switch--disabled) .mdc-switch__handle{width:var(--mat-slide-toggle-pressed-handle-size, 28px);height:var(--mat-slide-toggle-pressed-handle-size, 28px)}.mat-mdc-slide-toggle .mdc-switch--selected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-selected-pressed-handle-horizontal-margin, 0 22px)}.mat-mdc-slide-toggle .mdc-switch--unselected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-unselected-pressed-handle-horizontal-margin, 0 2px)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-selected-handle-opacity, 1)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-unselected-handle-opacity, 0.38)}.mdc-switch__handle::before,.mdc-switch__handle::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";width:100%;height:100%;left:0;position:absolute;top:0;transition:background-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1),border-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);z-index:-1}@media(forced-colors: active){.mdc-switch__handle::before,.mdc-switch__handle::after{border-color:currentColor}}.mdc-switch--selected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-handle-color, var(--mat-sys-on-primary))}.mdc-switch--selected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-hover-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-focus-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-pressed-handle-color, var(--mat-sys-primary-container))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:hover:not(:focus):not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:focus:not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:active .mdc-switch__handle::after,.mdc-switch--selected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-selected-handle-color, var(--mat-sys-surface))}.mdc-switch--unselected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-handle-color, var(--mat-sys-outline))}.mdc-switch--unselected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-hover-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-focus-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-pressed-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-unselected-handle-color, var(--mat-sys-on-surface))}.mdc-switch__handle::before{background:var(--mat-slide-toggle-handle-surface-color)}.mdc-switch__shadow{border-radius:inherit;bottom:0;left:0;position:absolute;right:0;top:0}.mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-handle-elevation-shadow)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__shadow,.mdc-switch.mdc-switch--disabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-disabled-handle-elevation-shadow)}.mdc-switch__ripple{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);z-index:-1;width:var(--mat-slide-toggle-state-layer-size, 40px);height:var(--mat-slide-toggle-state-layer-size, 40px)}.mdc-switch__ripple::after{content:"";opacity:0}.mdc-switch--disabled .mdc-switch__ripple::after{display:none}.mat-mdc-slide-toggle-disabled-interactive .mdc-switch__ripple::after{display:block}.mdc-switch:hover .mdc-switch__ripple::after{transition:75ms opacity cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:focus .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:active .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:hover:not(:focus) .mdc-switch__ripple::after,.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-hover-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-focus-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--unselected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-pressed-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-hover-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--selected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-focus-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--selected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-pressed-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch__icons{position:relative;height:100%;width:100%;z-index:1;transform:translateZ(0)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-unselected-icon-opacity, 0.38)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-selected-icon-opacity, 0.38)}.mdc-switch__icon{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;opacity:0;transition:opacity 30ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-switch--unselected .mdc-switch__icon{width:var(--mat-slide-toggle-unselected-icon-size, 16px);height:var(--mat-slide-toggle-unselected-icon-size, 16px);fill:var(--mat-slide-toggle-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__icon{width:var(--mat-slide-toggle-selected-icon-size, 16px);height:var(--mat-slide-toggle-selected-icon-size, 16px);fill:var(--mat-slide-toggle-selected-icon-color, var(--mat-sys-on-primary-container))}.mdc-switch--selected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-selected-icon-color, var(--mat-sys-on-surface))}.mdc-switch--selected .mdc-switch__icon--on,.mdc-switch--unselected .mdc-switch__icon--off{opacity:1;transition:opacity 45ms 30ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle{-webkit-user-select:none;user-select:none;display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple,.mat-mdc-slide-toggle .mdc-switch__ripple::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple:not(:empty),.mat-mdc-slide-toggle .mdc-switch__ripple::after:not(:empty){transform:translateZ(0)}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mat-focus-indicator::before{content:""}.mat-mdc-slide-toggle .mat-internal-form-field{color:var(--mat-slide-toggle-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-slide-toggle-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-slide-toggle-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-slide-toggle-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-slide-toggle-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-slide-toggle-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-slide-toggle .mat-ripple-element{opacity:.12}.mat-mdc-slide-toggle .mat-focus-indicator::before{border-radius:50%}.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle-track,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__icon,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::after,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::after{transition:none}.mat-mdc-slide-toggle .mdc-switch:enabled+.mdc-label{cursor:pointer}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:var(--mat-slide-toggle-disabled-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-slide-toggle label:empty{display:none}.mat-mdc-slide-toggle-touch-target{position:absolute;top:50%;left:50%;height:var(--mat-slide-toggle-touch-target-size, 48px);width:100%;transform:translate(-50%, -50%);display:var(--mat-slide-toggle-touch-target-display, block)}[dir=rtl] .mat-mdc-slide-toggle-touch-target{left:auto;right:50%;transform:translate(50%, -50%)}\n'],encapsulation:2,changeDetection:0})}return t})(),vTe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[d6,ii]})}return t})();function yTe(t,n){1&t&&(p(0),b(1,"translate"),h(2,"mat-icon",5),b(3,"translate"),p(4,"help"),u()),2&t&&(E(" ",y(1,3,"common.yes")," "),d(2),C("inline",!0)("matTooltip",y(3,5,"transports.persistent-transport-tooltip")))}function CTe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"common.no")," ")}function wTe(t,n){1&t&&(p(0),b(1,"number")),2&t&&E(" ",pe(1,1,v().data.latencyMs,"1.0-0")," ms ")}function xTe(t,n){1&t&&p(0," - ")}let STe=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.largeModalWidth,e.open(t,o)}constructor(e,i){this.data=e,this.dialogRef=i}static{this.\u0275fac=function(i){return new(i||t)(O(En),O(Bt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-transport-details"]],standalone:!1,decls:57,vars:50,consts:[[1,"info-dialog",3,"headline","dialog"],[1,"title","mt-0"],[3,"inline"],[1,"item"],[1,"title"],[1,"help-icon","d-none","d-md-inline",3,"inline","matTooltip"]],template:function(i,o){1&i&&(h(0,"app-dialog",0),b(1,"translate"),h(2,"div")(3,"div",1)(4,"mat-icon",2),p(5,"list"),u(),p(6),b(7,"translate"),u(),h(8,"div",3)(9,"span"),p(10),b(11,"translate"),u(),x(12,yTe,5,7),x(13,CTe,2,3),u(),h(14,"div",3)(15,"span"),p(16),b(17,"translate"),u(),p(18),u(),h(19,"div",3)(20,"span"),p(21),b(22,"translate"),u(),p(23),u(),h(24,"div",3)(25,"span"),p(26),b(27,"translate"),u(),p(28),u(),h(29,"div",3)(30,"span"),p(31),b(32,"translate"),u(),p(33),u(),h(34,"div",4)(35,"mat-icon",2),p(36,"import_export"),u(),p(37),b(38,"translate"),u(),h(39,"div",3)(40,"span"),p(41),b(42,"translate"),u(),p(43),b(44,"autoScale"),u(),h(45,"div",3)(46,"span"),p(47),b(48,"translate"),u(),p(49),b(50,"autoScale"),u(),h(51,"div",3)(52,"span"),p(53),b(54,"translate"),u(),x(55,wTe,2,4),x(56,xTe,1,0),u()()()),2&i&&(C("headline",y(1,24,"transports.details.title"))("dialog",o.dialogRef),d(4),C("inline",!0),d(2),E("",y(7,26,"transports.details.basic.title")," "),d(4),M(y(11,28,"transports.details.basic.persistent")),d(2),S(o.data.isPersistent?12:-1),d(),S(o.data.isPersistent?-1:13),d(3),M(y(17,30,"transports.details.basic.id")),d(2),E(" ",o.data.id," "),d(3),M(y(22,32,"transports.details.basic.local-pk")),d(2),E(" ",o.data.localPk," "),d(3),M(y(27,34,"transports.details.basic.remote-pk")),d(2),E(" ",o.data.remotePk," "),d(3),M(y(32,36,"transports.details.basic.type")),d(2),E(" ",o.data.type," "),d(2),C("inline",!0),d(2),E("",y(38,38,"transports.details.data.title")," "),d(4),M(y(42,40,"transports.details.data.uploaded")),d(2),E(" ",y(44,42,o.data.sent)," "),d(4),M(y(48,44,"transports.details.data.downloaded")),d(2),E(" ",y(50,46,o.data.recv)," "),d(4),M(y(54,48,"transports.latency")),d(2),S(o.data.latencyMs&&o.data.latencyMs>0?55:-1),d(),S(o.data.latencyMs&&0!==o.data.latencyMs?-1:56))},dependencies:[We,Kt,gn,Vl,xe,rp],styles:[".help-icon[_ngcontent-%COMP%]{opacity:.5;font-size:14px;cursor:default}"]})}}return t})();const kTe=(t,n)=>({"small-node-list-margins":t,"full-node-list-margins":n}),DTe=t=>({"d-lg-none d-xl-table":t}),MTe=t=>({"d-lg-table d-xl-none":t}),u6=t=>({offline:t});function TTe(t,n){1&t&&(h(0,"span",3),p(1),b(2,"translate"),h(3,"mat-icon",14),b(4,"translate"),p(5,"help"),u()()),2&t&&(d(),E(" ",y(2,3,"transports.title")," "),d(2),C("inline",!0)("matTooltip",y(4,5,"transports.info")))}function ETe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().$implicit.translatableValue)," ")}function PTe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.value," ")}function ITe(t,n){if(1&t&&(h(0,"div",16)(1,"span"),p(2),b(3,"translate"),u(),x(4,ETe,2,3),x(5,PTe,1,1),u()),2&t){const e=n.$implicit;d(2),E("",y(3,3,e.filterName),": "),d(2),S(e.translatableValue?4:-1),d(),S(e.value?5:-1)}}function OTe(t,n){if(1&t){const e=oe();h(0,"div",15),F("click",function(){return j(e),U(v().dataFilterer.removeFilters())}),ve(1,ITe,6,5,"div",16,Fe),h(3,"div",17),p(4),b(5,"translate"),u()()}if(2&t){const e=v();d(),ye(e.dataFilterer.currentFiltersTexts),d(3),M(y(5,1,"filters.press-to-remove"))}}function ATe(t,n){if(1&t){const e=oe();h(0,"mat-icon",18),F("click",function(){return j(e),U(v().dataFilterer.changeFilters())}),p(1,"filter_list"),u()}2&t&&C("inline",!0)}function RTe(t,n){if(1&t&&(h(0,"mat-icon",9),p(1,"more_horiz"),u()),2&t){v();const e=Hn(12);C("inline",!0)("matMenuTriggerFor",e)}}function FTe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"transports.dialog.errors.remote-key-length-error")," ")}function NTe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"transports.dialog.errors.remote-key-chars-error")," ")}function LTe(t,n){if(1&t&&(h(0,"mat-option",32),p(1),u()),2&t){const e=n.$implicit;C("value",e),d(),M(e)}}function BTe(t,n){1&t&&ve(0,LTe,2,2,"mat-option",32,Fe),2&t&&ye(v(2).addAvailableTypes)}function VTe(t,n){if(1&t){const e=oe();h(0,"div",13)(1,"div",19)(2,"form",20),F("ngSubmit",function(){return j(e),U(v().submitAddForm())}),h(3,"div",21)(4,"mat-form-field",22)(5,"mat-label"),p(6),b(7,"translate"),u(),B(8,"input",23),h(9,"mat-error"),x(10,FTe,2,3)(11,NTe,2,3),u()(),h(12,"mat-form-field",24)(13,"mat-label"),p(14),b(15,"translate"),u(),B(16,"input",25),u(),h(17,"mat-form-field",26)(18,"mat-label"),p(19),b(20,"translate"),u(),h(21,"mat-select",27),x(22,BTe,2,0),u()()(),h(23,"div",21)(24,"mat-checkbox",28),F("change",function(o){return j(e),U(v().setAddPersistent(o))}),p(25),b(26,"translate"),h(27,"mat-icon",29),b(28,"translate"),p(29,"help"),u()(),h(30,"button",30)(31,"mat-icon"),p(32,"add"),u(),p(33),b(34,"translate"),u(),h(35,"button",31),F("click",function(){return j(e),U(v().cancelAddForm())}),p(36),b(37,"translate"),u()()()()()}if(2&t){const e=v();d(2),C("formGroup",e.addForm),d(4),M(y(7,14,"transports.dialog.remote-key")),d(4),S(e.addForm.get("remoteKey").hasError("pattern")?11:10),d(4),M(y(15,16,"transports.dialog.label")),d(5),M(y(20,18,"transports.dialog.transport-type")),d(3),S(e.addAvailableTypes?22:-1),d(2),C("checked",e.addingPersistent),d(),E(" ",y(26,20,"transports.dialog.make-persistent")," "),d(2),C("inline",!0)("matTooltip",y(28,22,"transports.dialog.persistent-tooltip")),d(3),C("disabled",!e.addForm.valid||e.addBusy),d(3),E(" ",y(34,24,"transports.create")," "),d(2),C("disabled",e.addBusy),d(),E(" ",y(37,26,"common.cancel")," ")}}function HTe(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function jTe(t,n){1&t&&p(0," * ")}function UTe(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u(),x(2,jTe,1,0)),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow),d(),S(e.dataSorter.currentlySortingByLabel?2:-1)}}function zTe(t,n){1&t&&p(0," * ")}function $Te(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u(),x(2,zTe,1,0)),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow),d(),S(e.dataSorter.currentlySortingByLabel?2:-1)}}function WTe(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function GTe(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function qTe(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function KTe(t,n){if(1&t&&(h(0,"mat-icon",37),p(1),u()),2&t){const e=v(2);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function YTe(t,n){if(1&t){const e=oe();h(0,"button",51),b(1,"translate"),F("click",function(){j(e);const o=v().$implicit;return U(v(2).changeIfPersistent([o],!1))}),h(2,"mat-icon",52),p(3,"star"),u()()}2&t&&(C("matTooltip",y(1,2,"transports.persistent-transport-button-tooltip")),d(2),C("inline",!0))}function XTe(t,n){if(1&t){const e=oe();h(0,"button",51),b(1,"translate"),F("click",function(){j(e);const o=v().$implicit;return U(v(2).changeIfPersistent([o],!0))}),h(2,"mat-icon",53),p(3,"star_outline"),u()()}2&t&&(C("matTooltip",y(1,2,"transports.non-persistent-transport-button-tooltip")),d(2),C("inline",!0))}function ZTe(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"transports.offline")))}function QTe(t,n){if(1&t){const e=oe();h(0,"td")(1,"app-labeled-element-text",54),F("labelEdited",function(){return j(e),U(v(3).refreshData())}),u(),x(2,ZTe,3,3,"span"),u()}if(2&t){const e=v().$implicit,i=v(2);d(),C("id",Qt(e.id))("elementType",i.labeledElementTypes.Transport),d(),S(e.notFound?2:-1)}}function JTe(t,n){1&t&&(h(0,"td"),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"transports.offline")," "))}function e2e(t,n){if(1&t&&(h(0,"td"),p(1),b(2,"autoScale"),u()),2&t){const e=v().$implicit;d(),E(" ",y(2,1,e.sent)," ")}}function t2e(t,n){if(1&t&&(h(0,"td"),p(1),b(2,"autoScale"),u()),2&t){const e=v().$implicit;d(),E(" ",y(2,1,e.recv)," ")}}function n2e(t,n){1&t&&(h(0,"td"),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"transports.offline")," "))}function i2e(t,n){1&t&&(h(0,"td"),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"transports.offline")," "))}function o2e(t,n){1&t&&(p(0),b(1,"number")),2&t&&E(" ",pe(1,1,v(2).$implicit.latencyMs,"1.0-0")," ms ")}function r2e(t,n){1&t&&(h(0,"span",17),p(1,"-"),u())}function s2e(t,n){if(1&t&&(h(0,"td"),x(1,o2e,2,4),x(2,r2e,2,0,"span",17),u()),2&t){const e=v().$implicit;d(),S(e.latencyMs&&e.latencyMs>0?1:-1),d(),S(e.latencyMs&&0!==e.latencyMs?-1:2)}}function a2e(t,n){1&t&&(h(0,"td"),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"transports.offline")," "))}function l2e(t,n){if(1&t){const e=oe();h(0,"button",55),b(1,"translate"),F("click",function(){j(e);const o=v().$implicit;return U(v(2).details(o))}),h(2,"mat-icon",37),p(3,"visibility"),u()()}2&t&&(C("matTooltip",y(1,2,"transports.details.title")),d(2),C("inline",!0))}function c2e(t,n){if(1&t){const e=oe();h(0,"button",55),b(1,"translate"),F("click",function(){j(e);const o=v().$implicit;return U(v(2).delete(o))}),h(2,"mat-icon",37),p(3,"close"),u()()}2&t&&(C("matTooltip",y(1,2,"transports.delete")),d(2),C("inline",!0))}function d2e(t,n){if(1&t){const e=oe();h(0,"tr",40)(1,"td",46)(2,"mat-checkbox",47),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(3,"td"),x(4,YTe,4,4,"button",48),x(5,XTe,4,4,"button",48),u(),x(6,QTe,3,4,"td"),x(7,JTe,3,3,"td"),h(8,"td")(9,"app-labeled-element-text",49),F("labelEdited",function(){return j(e),U(v(2).refreshData())}),u()(),h(10,"td"),p(11),u(),x(12,e2e,3,3,"td"),x(13,t2e,3,3,"td"),x(14,n2e,3,3,"td"),x(15,i2e,3,3,"td"),x(16,s2e,3,2,"td"),x(17,a2e,3,3,"td"),h(18,"td",39),x(19,l2e,4,4,"button",50),x(20,c2e,4,4,"button",50),u()()}if(2&t){const e=n.$implicit,i=v(2);C("ngClass",se(17,u6,e.notFound)),d(2),C("checked",i.selections.get(e.id)),d(2),S(e.isPersistent?4:-1),d(),S(e.isPersistent?-1:5),d(),S(e.notFound?-1:6),d(),S(e.notFound?7:-1),d(2),C("id",Qt(e.remotePk)),d(2),E(" ",e.type," "),d(),S(e.notFound?-1:12),d(),S(e.notFound?-1:13),d(),S(e.notFound?14:-1),d(),S(e.notFound?15:-1),d(),S(e.notFound?-1:16),d(),S(e.notFound?17:-1),d(2),S(e.notFound?-1:19),d(),S(e.notFound?-1:20)}}function u2e(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.label")," ")}function h2e(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"tables.inverted-order")," ")}function f2e(t,n){1&t&&(h(0,"div",58)(1,"div",58)(2,"mat-icon",63),p(3,"star"),u(),p(4,"\xa0 "),h(5,"span",64),p(6),b(7,"translate"),u()()()),2&t&&(d(2),C("inline",!0),d(4),M(y(7,2,"transports.persistent")))}function p2e(t,n){if(1&t){const e=oe();h(0,"app-labeled-element-text",54),F("labelEdited",function(){return j(e),U(v(3).refreshData())}),u()}if(2&t){const e=v().$implicit,i=v(2);C("id",Qt(e.id))("elementType",i.labeledElementTypes.Transport)}}function m2e(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"transports.offline")," ")}function g2e(t,n){1&t&&(p(0),b(1,"autoScale")),2&t&&E(" ",y(1,1,v().$implicit.sent)," ")}function _2e(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"transports.offline")," ")}function b2e(t,n){1&t&&(p(0),b(1,"autoScale")),2&t&&E(" ",y(1,1,v().$implicit.recv)," ")}function v2e(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"transports.offline")," ")}function y2e(t,n){1&t&&(p(0),b(1,"number")),2&t&&E(" ",pe(1,1,v(2).$implicit.latencyMs,"1.0-0")," ms ")}function C2e(t,n){1&t&&p(0," - ")}function w2e(t,n){if(1&t&&(x(0,y2e,2,4),x(1,C2e,1,0)),2&t){const e=v().$implicit;S(e.latencyMs&&e.latencyMs>0?0:-1),d(),S(e.latencyMs&&0!==e.latencyMs?-1:1)}}function x2e(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"transports.offline")," ")}function S2e(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td")(2,"div",56)(3,"div",57)(4,"mat-checkbox",47),F("change",function(){const o=j(e).$implicit;return U(v(2).changeSelection(o))}),u()(),h(5,"div",44),x(6,f2e,8,4,"div",58),h(7,"div",59)(8,"span",2),p(9),b(10,"translate"),u(),p(11,": "),x(12,p2e,1,3,"app-labeled-element-text",60),x(13,m2e,2,3),u(),h(14,"div",59)(15,"span",2),p(16),b(17,"translate"),u(),p(18,": "),h(19,"app-labeled-element-text",49),F("labelEdited",function(){return j(e),U(v(2).refreshData())}),u()(),h(20,"div",58)(21,"span",2),p(22),b(23,"translate"),u(),p(24),u(),h(25,"div",58)(26,"span",2),p(27),b(28,"translate"),u(),p(29,": "),x(30,g2e,2,3),x(31,_2e,2,3),u(),h(32,"div",58)(33,"span",2),p(34),b(35,"translate"),u(),p(36,": "),x(37,b2e,2,3),x(38,v2e,2,3),u(),h(39,"div",58)(40,"span",2),p(41),b(42,"translate"),u(),p(43,": "),x(44,w2e,2,2),x(45,x2e,2,3),u()(),B(46,"div",61),h(47,"div",45)(48,"button",62),b(49,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(2);return o.stopPropagation(),U(s.showOptionsDialog(r))}),h(50,"mat-icon"),p(51),u()()()()()()}if(2&t){const e=n.$implicit,i=v(2);d(2),C("ngClass",se(36,u6,e.notFound)),d(2),C("checked",i.selections.get(e.id)),d(2),S(e.isPersistent?6:-1),d(3),M(y(10,22,"transports.id")),d(3),S(e.notFound?-1:12),d(),S(e.notFound?13:-1),d(3),M(y(17,24,"transports.remote-node")),d(3),C("id",Qt(e.remotePk)),d(3),M(y(23,26,"transports.type")),d(2),E(": ",e.type," "),d(3),M(y(28,28,"common.uploaded")),d(3),S(e.notFound?-1:30),d(),S(e.notFound?31:-1),d(3),M(y(35,30,"common.downloaded")),d(3),S(e.notFound?-1:37),d(),S(e.notFound?38:-1),d(3),M(y(42,32,"transports.latency")),d(3),S(e.notFound?-1:44),d(),S(e.notFound?45:-1),d(3),C("matTooltip",y(49,34,"common.options")),d(3),M("add")}}function k2e(t,n){if(1&t){const e=oe();h(0,"div",13)(1,"div",33)(2,"table",34)(3,"tr"),B(4,"th"),h(5,"th",35),b(6,"translate"),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.persistentSortData))}),h(7,"mat-icon",36),p(8,"star_outline"),u(),x(9,HTe,2,2,"mat-icon",37),u(),h(10,"th",38),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.idSortData))}),p(11),b(12,"translate"),x(13,UTe,3,3),u(),h(14,"th",38),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.remotePkSortData))}),p(15),b(16,"translate"),x(17,$Te,3,3),u(),h(18,"th",38),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.typeSortData))}),p(19),b(20,"translate"),x(21,WTe,2,2,"mat-icon",37),u(),h(22,"th",38),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.uploadedSortData))}),p(23),b(24,"translate"),x(25,GTe,2,2,"mat-icon",37),u(),h(26,"th",38),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.downloadedSortData))}),p(27),b(28,"translate"),x(29,qTe,2,2,"mat-icon",37),u(),h(30,"th",38),F("click",function(){j(e);const o=v();return U(o.dataSorter.changeSortingOrder(o.latencySortData))}),p(31),b(32,"translate"),x(33,KTe,2,2,"mat-icon",37),u(),B(34,"th",39),u(),ve(35,d2e,21,19,"tr",40,Fe),u(),h(37,"table",41)(38,"tr",42),F("click",function(){return j(e),U(v().dataSorter.openSortingOrderModal())}),h(39,"td")(40,"div",43)(41,"div",44)(42,"div",2),p(43),b(44,"translate"),u(),h(45,"div"),p(46),b(47,"translate"),x(48,u2e,2,3),x(49,h2e,2,3),u()(),h(50,"div",45)(51,"mat-icon",37),p(52,"keyboard_arrow_down"),u()()()()(),ve(53,S2e,52,38,"tr",null,Fe),u()()()}if(2&t){const e=v();d(),C("ngClass",_t(40,kTe,e.showShortList_,!e.showShortList_)),d(),C("ngClass",se(43,DTe,e.showShortList_)),d(3),C("matTooltip",y(6,22,"transports.persistent-tooltip")),d(4),S(e.dataSorter.currentSortingColumn===e.persistentSortData?9:-1),d(2),E(" ",y(12,24,"transports.id")," "),d(2),S(e.dataSorter.currentSortingColumn===e.idSortData?13:-1),d(2),E(" ",y(16,26,"transports.remote-node")," "),d(2),S(e.dataSorter.currentSortingColumn===e.remotePkSortData?17:-1),d(2),E(" ",y(20,28,"transports.type")," "),d(2),S(e.dataSorter.currentSortingColumn===e.typeSortData?21:-1),d(2),E(" ",y(24,30,"common.uploaded")," "),d(2),S(e.dataSorter.currentSortingColumn===e.uploadedSortData?25:-1),d(2),E(" ",y(28,32,"common.downloaded")," "),d(2),S(e.dataSorter.currentSortingColumn===e.downloadedSortData?29:-1),d(2),E(" ",y(32,34,"transports.latency")," "),d(2),S(e.dataSorter.currentSortingColumn===e.latencySortData?33:-1),d(2),ye(e.dataSource),d(2),C("ngClass",se(45,MTe,e.showShortList_)),d(6),M(y(44,36,"tables.sorting-title")),d(3),E("",y(47,38,e.dataSorter.currentSortingColumn.label)," "),d(2),S(e.dataSorter.currentlySortingByLabel?48:-1),d(),S(e.dataSorter.sortingInReverseOrder?49:-1),d(2),C("inline",!0),d(2),ye(e.dataSource)}}function D2e(t,n){1&t&&(h(0,"span",67),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"transports.empty")))}function M2e(t,n){1&t&&(h(0,"span",67),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"transports.empty-with-filter")))}function T2e(t,n){if(1&t&&(h(0,"div",13)(1,"div",65)(2,"mat-icon",66),p(3,"warning"),u(),x(4,D2e,3,3,"span",67),x(5,M2e,3,3,"span",67),u()()),2&t){const e=v();d(2),C("inline",!0),d(2),S(0===e.allTransports.length?4:-1),d(),S(0!==e.allTransports.length?5:-1)}}let E2e=(()=>{class t{set showShortList(e){this.showShortList_=e,this.dataSorter.setData(this.filteredTransports)}set node(e){const i=performance.now();console.log("[HV-DIAG] transport-list setter called, transports:",e.transports?.length,"persistentTransports:",e.persistentTransports?.length);const o=e.transports.map(s=>s.id).sort().join(",");if(o===this.lastTransportIds&&e.transports.length===this.lastTransportCount)return this.allTransports&&(e.transports.forEach(s=>{const a=this.allTransports.find(l=>l.id===s.id);a&&(a.sent=s.sent,a.recv=s.recv)}),this.cdr.markForCheck()),void console.log("[HV-DIAG] transport-list stats-only update took",(performance.now()-i).toFixed(1),"ms");console.log("[HV-DIAG] transport-list FULL reprocessing",e.transports.length,"transports"),this.lastTransportCount=e.transports.length,this.lastTransportIds=o,this.currentNode=e,this.allTransports=e.transports,this.nodePK=e.localPk;const r=new Map;e.persistentTransports.forEach(s=>r.set(this.getPersistentTransportID(s.pk,s.type),s)),this.allTransports.forEach(s=>{r.has(this.getPersistentTransportID(s.remotePk,s.type))?(s.isPersistent=!0,r.delete(this.getPersistentTransportID(s.remotePk,s.type))):s.isPersistent=!1}),r.forEach((s,a)=>{this.allTransports.push({id:this.getPersistentTransportID(s.pk,s.type),localPk:e.localPk,remotePk:s.pk,type:s.type,recv:0,sent:0,isPersistent:!0,notFound:!0})}),this.allTransports.forEach(s=>{s.id_label=kc.getCompleteLabel(this.storageService,this.translateService,s.id),s.remote_pk_label=kc.getCompleteLabel(this.storageService,this.translateService,s.remotePk)}),this.dataFilterer.setData(this.allTransports),this.cdr.markForCheck()}constructor(e,i,o,r,s,a,l,c,f,m){this.dialog=e,this.transportService=i,this.route=o,this.router=r,this.snackbarService=s,this.translateService=a,this.storageService=l,this.nodeService=c,this.cdr=f,this.formBuilder=m,this.listId="tr",this.persistentSortData=new Dt(["isPersistent"],"transports.persistent",st.Boolean),this.idSortData=new Dt(["id"],"transports.id",st.Text,["id_label"]),this.remotePkSortData=new Dt(["remotePk"],"transports.remote-node",st.Text,["remote_pk_label"]),this.typeSortData=new Dt(["type"],"transports.type",st.Text),this.uploadedSortData=new Dt(["sent"],"common.uploaded",st.NumberReversed),this.downloadedSortData=new Dt(["recv"],"common.downloaded",st.NumberReversed),this.latencySortData=new Dt(["latencyMs"],"transports.latency",st.Number),this.selections=new Map,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.lastTransportCount=-1,this.lastTransportIds="",this.filterProperties=[{filterName:"transports.filter-dialog.persistent",keyNameInElementsArray:"isPersistent",type:Sn.Select,printableLabelsForValues:[{value:"",label:"transports.filter-dialog.persistent-options.any"},{value:"true",label:"transports.filter-dialog.persistent-options.persistent"},{value:"false",label:"transports.filter-dialog.persistent-options.non-persistent"}]},{filterName:"transports.filter-dialog.id",keyNameInElementsArray:"id",secondaryKeyNameInElementsArray:"id_label",type:Sn.TextInput,maxlength:36},{filterName:"transports.filter-dialog.remote-node",keyNameInElementsArray:"remotePk",secondaryKeyNameInElementsArray:"remote_pk_label",type:Sn.TextInput,maxlength:66}],this.labeledElementTypes=ro,this.showAddForm=!1,this.addingPersistent=!1,this.addAvailableTypes=null,this.addBusy=!1,this.operationSubscriptionsGroup=[],this.addForm=this.formBuilder.group({remoteKey:["",Ne.compose([Ne.required,Ne.minLength(66),Ne.maxLength(66),Ne.pattern("^[0-9a-fA-F]+$")])],label:[""],type:["",Ne.required]}),this.dataSorter=new gu(this.dialog,this.translateService,this.storageService,[this.persistentSortData,this.idSortData,this.remotePkSortData,this.typeSortData,this.uploadedSortData,this.downloadedSortData,this.latencySortData],1,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new _u(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(_=>{this.filteredTransports=_,this.dataSorter.setData(this.filteredTransports)}),this.navigationsSubscription=this.route.paramMap.subscribe(_=>{if(_.has("page")){let w=Number.parseInt(_.get("page"),10);(isNaN(w)||w<1)&&(w=1),this.currentPageInUrl=w,this.recalculateElementsToShow()}}),this.languageSubscription=this.translateService.onLangChange.subscribe(()=>{this.node=this.currentNode})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach(e=>e.unsubscribe()),this.languageSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose(),this.persistentTransportSubscription&&this.persistentTransportSubscription.unsubscribe(),this.addOperationSubscription&&this.addOperationSubscription.unsubscribe(),this.addTypesSubscription&&this.addTypesSubscription.unsubscribe()}changeSelection(e){this.selections.get(e.id)?this.selections.set(e.id,!1):this.selections.set(e.id,!0)}hasSelectedElements(){if(!this.selections)return!1;let e=!1;return this.selections.forEach(i=>{i&&(e=!0)}),e}changeAllSelections(e){this.selections.forEach((i,o)=>{this.selections.set(o,e)})}deleteSelected(){const e=[];this.selections.forEach((i,o)=>{i&&e.push(o)}),0!==e.length&&this.deleteRecursively(e,null)}toggleAddForm(){this.showAddForm=!this.showAddForm,this.showAddForm&&null===this.addAvailableTypes&&this.loadAddTypes(),this.showAddForm||this.resetAddForm()}cancelAddForm(){this.showAddForm=!1,this.resetAddForm()}setAddPersistent(e){this.addingPersistent=!!e.checked}submitAddForm(){if(!this.addForm.valid||this.addBusy)return;const e=this.addForm.get("remoteKey").value,i=this.addForm.get("type").value,o=this.addForm.get("label").value;this.addBusy=!0,this.addingPersistent?this.addOperationSubscription=this.transportService.getPersistentTransports(ke.getCurrentNodeKey()).subscribe(r=>{const s=r||[];s.some(l=>l.pk.toUpperCase()===e.toUpperCase()&&l.type.toUpperCase()===i.toUpperCase())?this.doCreateTransport(e,i,o,!0):(s.push({pk:e,type:i}),this.addOperationSubscription=this.transportService.savePersistentTransportsData(ke.getCurrentNodeKey(),s).subscribe(()=>{this.doCreateTransport(e,i,o,!0)},l=>this.onAddError(l)))},r=>this.onAddError(r)):this.doCreateTransport(e,i,o,!1)}doCreateTransport(e,i,o,r){this.addOperationSubscription=this.transportService.create(ke.getCurrentNodeKey(),e,i).subscribe(s=>{let a=!1;o&&(s&&s.id?this.storageService.saveLabel(s.id,o,ro.Transport):a=!0),this.addBusy=!1,this.cancelAddForm(),ke.refreshCurrentDisplayedData(),a?this.snackbarService.showWarning("transports.dialog.success-without-label"):this.snackbarService.showDone("transports.dialog.success")},s=>{r?(this.addBusy=!1,this.cancelAddForm(),ke.refreshCurrentDisplayedData(),this.snackbarService.showWarning("transports.dialog.only-persistent-created")):this.onAddError(s)})}onAddError(e){this.addBusy=!1,e=Qe(e),this.snackbarService.showError(e)}resetAddForm(){this.addForm.reset({remoteKey:"",label:"",type:this.addAvailableTypes&&this.addAvailableTypes[0]||""}),this.addingPersistent=!1,this.addBusy=!1}loadAddTypes(){this.addTypesSubscription=ae(1).pipe(li(0),It(()=>this.transportService.types(ke.getCurrentNodeKey()))).subscribe(e=>{e.sort((o,r)=>"stcp"===o.toLowerCase()?1:"stcp"===r.toLowerCase()?-1:o.localeCompare(r));let i=e.findIndex(o=>"dmsg"===o.toLowerCase());i=-1!==i?i:0,this.addAvailableTypes=e,this.addForm.get("type").setValue(e[i]||""),this.cdr.markForCheck()},e=>{e=Qe(e),this.snackbarService.showError(e),this.addAvailableTypes=[],this.cdr.markForCheck()})}showOptionsDialog(e){const i=[];i.push(e.isPersistent?{icon:"star_outline",label:"transports.make-non-persistent"}:{icon:"star",label:"transports.make-persistent"}),e.notFound||(i.push({icon:"visibility",label:"transports.details.title"}),i.push({icon:"close",label:"transports.delete"})),ao.openDialog(this.dialog,i,"common.options").afterClosed().subscribe(o=>{1===o?this.changeIfPersistent([e],!e.isPersistent):2===o?this.details(e):3===o&&this.delete(e)})}changeIfPersistentOfSelected(e){const i=[];this.allTransports.forEach(o=>{this.selections.has(o.id)&&this.selections.get(o.id)&&i.push(o)}),this.changeIfPersistent(i,e)}changeIfPersistent(e,i){e.length<1||(this.persistentTransportSubscription=this.transportService.getPersistentTransports(this.nodePK).subscribe(o=>{const r=o||[];let s;const a=new Map;if(e.forEach(l=>a.set(this.getPersistentTransportID(l.remotePk,l.type),l)),i)r.forEach(l=>{a.has(this.getPersistentTransportID(l.pk,l.type))&&a.delete(this.getPersistentTransportID(l.pk,l.type))}),s=0===a.size,s||a.forEach(l=>r.push({pk:l.remotePk,type:l.type}));else{s=!0;for(let l=0;l{ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("transports.changes-made")},l=>{l=Qe(l),this.snackbarService.showError(l)})},o=>{o=Qe(o),this.snackbarService.showError(o)}))}details(e){STe.openDialog(this.dialog,e)}delete(e){this.operationSubscriptionsGroup.push(this.startDeleting(e.id).subscribe(()=>{ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("transports.deleted")},i=>{i=Qe(i),this.snackbarService.showError(i)}))}refreshData(){ke.refreshCurrentDisplayedData()}getPersistentTransportID(e,i){return e.toUpperCase()+i.toUpperCase()}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredTransports){this.numberOfPages=1,this.currentPage=1,this.transportsToShow=this.filteredTransports.slice();const e=new Map;this.transportsToShow.forEach(o=>{e.set(o.id,!0),this.selections.has(o.id)||this.selections.set(o.id,!1)});const i=[];this.selections.forEach((o,r)=>{e.has(r)||i.push(r)}),i.forEach(o=>{this.selections.delete(o)})}else this.transportsToShow=null,this.selections=new Map;this.dataSource=this.transportsToShow,this.cdr.markForCheck()}startDeleting(e){return this.transportService.delete(ke.getCurrentNodeKey(),e)}deleteRecursively(e,i){this.operationSubscriptionsGroup.push(this.startDeleting(e[e.length-1]).subscribe(()=>{e.pop(),0===e.length?(i&&i.close(),ke.refreshCurrentDisplayedData(),this.snackbarService.showDone("transports.deleted")):this.deleteRecursively(e,i)},o=>{ke.refreshCurrentDisplayedData(),o=Qe(o),i?i.componentInstance.showDone("confirmation.error-header-text",o.translatableErrorMsg):this.snackbarService.showError(o)}))}static{this.\u0275fac=function(i){return new(i||t)(O(Ot),O(l6),O(Ai),O(vt),O(ct),O(Go),O(ti),O(Io),O(Jt),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-transport-list"]],inputs:{showShortList:"showShortList",node:"node"},standalone:!1,decls:31,vars:34,consts:[["selectionMenu","matMenu"],[1,"generic-title-container","mt-4.5","d-flex"],[1,"title"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"options"],[1,"options-container"],[3,"click","inline","matTooltip"],[1,"small-icon",3,"inline"],[3,"inline","matMenuTriggerFor"],[3,"overlapTrigger"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"click","disabled"],[1,"rounded-elevated-box","mt-3"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"item"],[1,"transparent-50"],[1,"small-icon",3,"click","inline"],[1,"box-internal-container","small-node-list-margins"],[1,"inline-add-transport",3,"ngSubmit","formGroup"],[1,"add-row"],["appearance","outline",1,"field-pk"],["matInput","","formControlName","remoteKey","maxlength","66","placeholder","02abc..."],["appearance","outline",1,"field-md"],["matInput","","formControlName","label","maxlength","66"],["appearance","outline",1,"field-sm"],["formControlName","type","panelClass","skynet-select-panel"],["color","primary",3,"change","checked"],[1,"help-icon",3,"inline","matTooltip"],["mat-raised-button","","color","primary","type","submit",3,"disabled"],["mat-button","","type","button",3,"click","disabled"],[3,"value"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column","small-column",3,"click","matTooltip"],[1,"persistent-icon","grey-text"],[3,"inline"],[1,"sortable-column",3,"click"],[1,"actions"],[3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[1,"selection-col"],[3,"change","checked"],["mat-button","",1,"action-button","subtle-transparent-button",3,"matTooltip"],[3,"labelEdited","id"],["mat-button","",1,"action-button","transparent-button",3,"matTooltip"],["mat-button","",1,"action-button","subtle-transparent-button",3,"click","matTooltip"],[1,"persistent-icon","default-cursor",3,"inline"],[1,"persistent-icon","grey-text",3,"inline"],[3,"labelEdited","id","elementType"],["mat-button","",1,"action-button","transparent-button",3,"click","matTooltip"],[1,"list-item-container",3,"ngClass"],[1,"check-part"],[1,"list-row"],[1,"list-row","long-content"],[3,"id","elementType"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"click","matTooltip"],[1,"persistent-icon",3,"inline"],[1,"yellow-clear-text","title"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(h(0,"div",1)(1,"div",2),x(2,TTe,6,7,"span",3),x(3,OTe,6,3,"div",4),u(),h(4,"div",5)(5,"div",6)(6,"mat-icon",7),b(7,"translate"),F("click",function(){return o.toggleAddForm()}),p(8),u(),x(9,ATe,2,1,"mat-icon",8),x(10,RTe,2,2,"mat-icon",9),h(11,"mat-menu",10,0)(13,"div",11),F("click",function(){return o.changeAllSelections(!0)}),p(14),b(15,"translate"),u(),h(16,"div",11),F("click",function(){return o.changeAllSelections(!1)}),p(17),b(18,"translate"),u(),h(19,"div",12),F("click",function(){return o.changeIfPersistentOfSelected(!0)}),p(20),b(21,"translate"),u(),h(22,"div",12),F("click",function(){return o.changeIfPersistentOfSelected(!1)}),p(23),b(24,"translate"),u(),h(25,"div",12),F("click",function(){return o.deleteSelected()}),p(26),b(27,"translate"),u()()()()(),x(28,VTe,38,28,"div",13),x(29,k2e,55,47,"div",13),x(30,T2e,6,3,"div",13)),2&i&&(d(2),S(o.showShortList_?2:-1),d(),S(o.dataFilterer.currentFiltersTexts&&o.dataFilterer.currentFiltersTexts.length>0?3:-1),d(3),C("inline",!0)("matTooltip",y(7,22,o.showAddForm?"common.cancel":"transports.create")),d(2),M(o.showAddForm?"remove":"add"),d(),S(o.allTransports&&o.allTransports.length>0?9:-1),d(),S(o.dataSource&&o.dataSource.length>0?10:-1),d(),C("overlapTrigger",!1),d(3),E(" ",y(15,24,"selection.select-all")," "),d(3),E(" ",y(18,26,"selection.unselect-all")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(21,28,"transports.make-selected-persistent")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(24,30,"transports.make-selected-non-persistent")," "),d(2),C("disabled",Qt(!o.hasSelectedElements())),d(),E(" ",y(27,32,"selection.delete-all")," "),d(2),S(o.showAddForm?28:-1),d(),S(o.dataSource&&o.dataSource.length>0?29:-1),d(),S(o.dataSource&&0!==o.dataSource.length?-1:30))},dependencies:[$t,xn,Gt,qt,wn,wi,on,mn,sn,Os,Ma,In,Pn,Wo,We,Kt,Jr,As,vu,Pa,Qr,kr,kc,Vl,xe,rp],styles:[".overflow[_ngcontent-%COMP%]{display:block;width:100%;overflow-x:auto}.overflow[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{width:100%}.actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}.small-column[_ngcontent-%COMP%]{width:1px;text-align:center}.persistent-icon[_ngcontent-%COMP%]{font-size:14px!important;color:#d48b05}.offline[_ngcontent-%COMP%]{opacity:.35}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:8px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{flex:1 1 220px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] .field-pk[_ngcontent-%COMP%]{flex:2 1 360px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] .field-md[_ngcontent-%COMP%]{flex:1 1 180px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] .field-sm[_ngcontent-%COMP%]{flex:0 1 140px}.inline-add-transport[_ngcontent-%COMP%] .add-row[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-left:auto}.inline-add-transport[_ngcontent-%COMP%] .help-icon[_ngcontent-%COMP%]{margin-left:4px;opacity:.6;cursor:help}"],changeDetection:0})}}return t})();function P2e(t,n){1&t&&(h(0,"span"),p(1,", "),u())}function I2e(t,n){if(1&t&&(h(0,"span")(1,"span",11),p(2),u(),p(3,": "),h(4,"span",6),p(5),u(),x(6,P2e,2,0,"span"),u()),2&t){const e=n.$implicit,i=n.$index,o=n.$count;d(2),M(e.type),d(3),M(e.count),d(),S(i!==o-1?6:-1)}}function O2e(t,n){if(1&t&&(p(0," ("),ve(1,I2e,7,3,"span",null,Fe),p(3,") ")),2&t){const e=v(2);d(),ye(e.transportStats.byType)}}function A2e(t,n){if(1&t){const e=oe();h(0,"div",0)(1,"div",1)(2,"span",2),p(3),b(4,"translate"),u(),h(5,"span",3)(6,"span",4),p(7),b(8,"translate"),u(),h(9,"span",5)(10,"span",6),p(11),u(),x(12,O2e,4,0),u()(),h(13,"span",7)(14,"span",4),p(15),b(16,"translate"),u(),h(17,"mat-slide-toggle",8),F("change",function(){return j(e),U(v().changeTransportsConfig())}),u(),h(18,"mat-icon",9),b(19,"translate"),p(20,"info"),u()(),h(21,"span",7)(22,"span",4),p(23),b(24,"translate"),u(),h(25,"mat-slide-toggle",8),F("change",function(){return j(e),U(v().changePublicConfig())}),u(),h(26,"mat-icon",9),b(27,"translate"),p(28,"info"),u()()()(),B(29,"app-transport-list",10)}if(2&t){const e=v();d(3),M(y(4,14,"node.details.transports-info.title")),d(4),E("",y(8,16,"node.details.transports-info.total")," "),d(4),M(e.transportStats.total),d(),S(e.transportStats.byType.length>0?12:-1),d(3),M(y(16,18,"node.details.transports-info.autoconnect")),d(2),C("checked",!!e.node.autoconnectTransports),d(),C("inline",!0)("matTooltip",y(19,20,"node.details.transports-info.autoconnect-info")),d(5),M(y(24,22,"node.details.transports-info.is-public")),d(2),C("checked",!!e.isPublic),d(),C("inline",!0)("matTooltip",y(27,24,"node.details.transports-info.is-public-info")),d(3),C("node",e.node)("showShortList",!1)}}let R2e=(()=>{class t extends pn{constructor(e,i,o){super(),this.apiService=e,this.transportService=i,this.snackbarService=o,this.transportStats={total:0,byType:[]},this.isPublic=!1}ngOnInit(){return this.dataSubscription=ke.currentNode.subscribe(e=>{this.node=e,this.transportStats=this.computeTransportStats(e),e&&this.fetchPublicStatus(e.localPk)}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription?.unsubscribe(),this.autoconnectSubscription?.unsubscribe(),this.publicToggleSubscription?.unsubscribe()}computeTransportStats(e){if(!e||!e.transports)return{total:0,byType:[]};const i={};for(const r of e.transports)i[r.type]=(i[r.type]||0)+1;const o=Object.entries(i).map(([r,s])=>({type:r,count:s})).sort((r,s)=>s.count-r.count);return{total:e.transports.length,byType:o}}fetchPublicStatus(e){this.apiService.get(`visors/${e}/public`).subscribe(i=>{this.isPublic=!(!i||!0!==i.is_public)},()=>{this.isPublic=!1})}changeTransportsConfig(){if(!this.node)return;const e=!this.node.autoconnectTransports;this.autoconnectSubscription=this.transportService.changeAutoconnectSetting(this.node.localPk,e).subscribe(()=>{this.snackbarService.showDone(e?"node.details.transports-info.enable-done":"node.details.transports-info.disable-done"),ke.refreshCurrentDisplayedData()},i=>{i=Qe(i),this.snackbarService.showError(i)})}changePublicConfig(){if(!this.node)return;const e=!this.isPublic;this.publicToggleSubscription=this.apiService.put(`visors/${this.node.localPk}/public`,{is_public:e}).subscribe(()=>{this.isPublic=e,this.snackbarService.showDone(e?"node.details.transports-info.public-enable-done":"node.details.transports-info.public-disable-done")},i=>{i=Qe(i),this.snackbarService.showError(i)})}static{this.\u0275fac=function(i){return new(i||t)(O(zi),O(l6),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-all-transports"]],standalone:!1,features:[be],decls:1,vars:1,consts:[[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow","font-smaller"],[1,"section-title"],[1,"info-line"],[1,"title"],[1,"transport-stats"],[1,"transport-count"],[1,"info-line","toggle-line"],["color","primary",3,"change","checked"],[1,"info-tip",3,"inline","matTooltip"],[3,"node","showShortList"],[1,"transport-type"]],template:function(i,o){1&i&&x(0,A2e,30,26),2&i&&S(o.node?0:-1)},dependencies:[We,Kt,d6,E2e,xe],encapsulation:2})}}return t})();const F2e=(t,n)=>n.date;function N2e(t,n){1&t&&(h(0,"a",23)(1,"mat-icon",24),b(2,"translate"),p(3," open_in_browser "),u()()),2&t&&(C("href","https://explorer.skycoin.com/app/address/"+v(2).rewardsAddress,mo),d(),C("inline",!0)("matTooltip",y(2,3,"node.details.rewards-info.open-in-explorer")))}function L2e(t,n){if(1&t&&(B(0,"app-copy-to-clipboard-text",22),x(1,N2e,4,5,"a",23)),2&t){const e=v();C("text",Qt(e.rewardsAddress)),d(),S(e.rewardsAddressIsXpub?-1:1)}}function B2e(t,n){1&t&&(p(0),b(1,"translate"),h(2,"mat-icon",25),b(3,"translate"),p(4,"info"),u()),2&t&&(E(" ",y(1,3,"node.details.rewards-info.not-registered")," "),d(2),C("inline",!0)("matTooltip",y(3,5,"node.details.rewards-info.not-registered-info")))}function V2e(t,n){if(1&t){const e=oe();h(0,"form",26),F("ngSubmit",function(){return j(e),U(v().submitRewardAddress())}),h(1,"mat-form-field",27)(2,"mat-label"),p(3),b(4,"translate"),u(),B(5,"input",28),u(),h(6,"div",29)(7,"button",30),p(8),b(9,"translate"),u(),h(10,"button",31),F("click",function(){return j(e),U(v().toggleRewardForm())}),p(11),b(12,"translate"),u()()()}if(2&t){const e=v();C("formGroup",e.rewardForm),d(3),M(y(4,5,"node.details.rewards-info.rewards-address")),d(4),C("disabled",!e.rewardForm.valid),d(),E(" ",y(9,7,"common.save")," "),d(3),E(" ",y(12,9,"common.cancel")," ")}}function H2e(t,n){if(1&t&&(h(0,"pre",9),p(1),b(2,"translate"),u()),2&t){const e=v();d(),M(e.rewardRules||y(2,1,"common.loading"))}}function j2e(t,n){if(1&t&&(h(0,"span",11),p(1),u()),2&t){const e=v();d(),E("(",e.label,")")}}function U2e(t,n){if(1&t&&(h(0,"div",17)(1,"span",32),p(2),u(),h(3,"span",33),p(4),u()()),2&t){const e=v();d(2),E(" Total: ",e.total.toFixed(2)," SKY "),d(2),E(" (",e.days," days) ")}}function z2e(t,n){1&t&&(h(0,"div",18),B(1,"mat-spinner",34),u())}function $2e(t,n){if(1&t&&(h(0,"div",19),p(1),u()),2&t){const e=v();d(),M(e.errorMsg)}}function W2e(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.amount.toFixed(6)," ")}function G2e(t,n){1&t&&(h(0,"span",36),p(1,"-"),u())}function q2e(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.share.toFixed(4),"% ")}function K2e(t,n){1&t&&(h(0,"span",36),p(1,"-"),u())}function Y2e(t,n){if(1&t&&(h(0,"a",37),p(1),u()),2&t){const e=v().$implicit;C("href","https://explorer.skycoin.com/app/transaction/"+e.txid,mo),d(),E(" ",e.txid.substring(0,12),"... ")}}function X2e(t,n){1&t&&(h(0,"span",36),p(1,"-"),u())}function Z2e(t,n){if(1&t&&(h(0,"tr")(1,"td"),p(2),u(),h(3,"td"),x(4,W2e,1,1)(5,G2e,2,0,"span",36),u(),h(6,"td"),x(7,q2e,1,1)(8,K2e,2,0,"span",36),u(),h(9,"td")(10,"span"),p(11),u()(),h(12,"td"),x(13,Y2e,2,2,"a",37)(14,X2e,2,0,"span",36),u()()),2&t){const e=n.$implicit,i=v(2);Ze(i.statusClass(e)),d(2),M(i.formatDate(e.date)),d(2),S(e.amount>0?4:5),d(3),S(e.share>0?7:8),d(3),Ze("status-badge "+i.statusClass(e)),d(),M(i.statusText(e)),d(2),S(e.txid?13:14)}}function Q2e(t,n){if(1&t&&(h(0,"table",20)(1,"tr")(2,"th"),p(3,"Date"),u(),h(4,"th"),p(5,"Amount (SKY)"),u(),h(6,"th"),p(7,"Share (%)"),u(),h(8,"th"),p(9,"Status"),u(),h(10,"th"),p(11,"Transaction"),u()(),ve(12,Z2e,15,9,"tr",35,F2e),u()),2&t){const e=v();d(12),ye(e.history)}}function J2e(t,n){1&t&&(h(0,"div",21),p(1," No reward data available for this visor. "),u())}let eEe=(()=>{class t{constructor(e,i,o,r,s,a,l){this.http=e,this.route=i,this.nodeComponent=o,this.storageService=r,this.nodeService=s,this.snackbarService=a,this.formBuilder=l,this.pk="",this.label="",this.rewardsAddress="",this.history=[],this.loading=!1,this.days=30,this.total=0,this.errorMsg="",this.showRewardForm=!1,this.showRewardRules=!1,this.rewardRules=null,this.rewardForm=this.formBuilder.group({address:["",Ne.compose([Ne.minLength(20),Ne.maxLength(112)])]})}ngOnInit(){this.pk=this.nodeComponent.node?.localPk||this.route.snapshot.parent?.paramMap.get("key")||"";const e=this.storageService.getLabelInfo(this.pk);this.label=e?.label||"",this.nodeSub=ke.currentNode.subscribe(i=>{this.rewardsAddress=i?.rewardsAddress||""}),this.loadHistory()}ngOnDestroy(){this.nodeSub?.unsubscribe(),this.dataSub?.unsubscribe(),this.saveRewardsSubscription?.unsubscribe(),this.rewardRulesSubscription?.unsubscribe()}loadHistory(){this.pk&&(this.loading=!0,this.errorMsg="",this.dataSub=this.http.get(`/api/rewards/skycoin-rewards/visor/${this.pk}?days=${this.days}`).pipe(Ui(e=>(this.errorMsg="Failed to load reward data",ae({history:[]})))).subscribe(e=>{this.history=e?.history||[],this.total=this.history.reduce((i,o)=>i+(o.amount||0),0),this.loading=!1}))}changeDays(e){this.days=e,this.loadHistory()}formatDate(e){return new Date(e+"T00:00:00").toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}statusClass(e){return e.amount&&0!==e.amount?e.sent?"sent":"pending":"no-reward"}statusText(e){return e.amount&&0!==e.amount?e.sent?"Sent":"Pending":"No reward"}get rewardsAddressIsXpub(){return!!this.rewardsAddress&&this.rewardsAddress.startsWith("xpub")}toggleRewardForm(){this.showRewardForm=!this.showRewardForm,this.showRewardForm&&this.rewardForm.get("address").setValue(this.rewardsAddress||"")}submitRewardAddress(){if(!this.rewardForm.valid)return;const e=(this.rewardForm.get("address").value||"").trim(),i=e?this.nodeService.setRewardsAddress(this.pk,e):this.nodeService.deleteRewardsAddress(this.pk);this.saveRewardsSubscription=i.subscribe({next:()=>{this.snackbarService.showDone("rewards-address-config.done"),this.showRewardForm=!1,ke.refreshCurrentDisplayedData()},error:o=>{o=Qe(o),this.snackbarService.showError(o)}})}toggleRewardRules(){this.showRewardRules=!this.showRewardRules,this.showRewardRules&&null===this.rewardRules&&(this.rewardRulesSubscription=this.nodeService.getRewardRules().subscribe(e=>{this.rewardRules=e||""},()=>{this.rewardRules="",this.snackbarService.showError("common.loading-error")}))}static{this.\u0275fac=function(i){return new(i||t)(O(ba),O(Ai),O(ke),O(ti),O(Io),O(ct),O(di))}}static{this.\u0275cmp=re({type:t,selectors:[["app-node-rewards"]],standalone:!1,decls:46,vars:33,consts:[[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow"],[1,"section-title"],[1,"info-line"],[1,"title"],["mat-icon-button","",1,"inline-edit-btn",3,"click","matTooltip"],[3,"inline"],[1,"inline-form",3,"formGroup"],[1,"info-line","collapsible-link",3,"click"],[1,"reward-rules"],[1,"d-flex","justify-content-between","align-items-center","mb-3"],[1,"label-text","ml-2"],[1,"d-flex","align-items-center"],[1,"mr-2",2,"font-size","0.85em","color","#ccc"],["mat-button","",3,"click"],[1,"pk-row","mb-3"],[2,"font-size","0.75em","color","#999"],[1,"total-row","mb-3"],[1,"d-flex","justify-content-center","py-4"],[1,"error-msg","py-2"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid"],[1,"py-4","text-center",2,"color","#999"],[1,"text-with-right-margin",3,"text"],["target","_blank","rel","noreferrer nofollow noopener",3,"href"],[1,"link-icon","transparent-button",3,"inline","matTooltip"],[3,"inline","matTooltip"],[1,"inline-form",3,"ngSubmit","formGroup"],["appearance","outline",1,"inline-form-field"],["matInput","","formControlName","address","maxlength","112","placeholder","2\u2026"],[1,"inline-form-actions"],["mat-raised-button","","color","primary","type","submit",3,"disabled"],["mat-button","","type","button",3,"click"],[2,"font-size","1.1em","font-weight","bold","color","#4caf50"],[2,"font-size","0.85em","color","#999","margin-left","12px"],["diameter","30"],[3,"class"],[2,"color","#666"],["target","_blank","rel","noopener",2,"font-size","0.8em","color","#3399ff",3,"href"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"span",2),p(3),b(4,"translate"),u(),h(5,"span",3)(6,"span",4),p(7),b(8,"translate"),u(),x(9,L2e,2,3),x(10,B2e,5,7),h(11,"button",5),b(12,"translate"),F("click",function(){return o.toggleRewardForm()}),h(13,"mat-icon",6),p(14),u()()(),x(15,V2e,13,11,"form",7),h(16,"span",8),F("click",function(){return o.toggleRewardRules()}),h(17,"mat-icon",6),p(18),u(),p(19),b(20,"translate"),u(),x(21,H2e,3,3,"pre",9),u()(),h(22,"div",0)(23,"div",1)(24,"div",10)(25,"div")(26,"span",4),p(27,"Reward History"),u(),x(28,j2e,2,1,"span",11),u(),h(29,"div",12)(30,"span",13),p(31,"Show:"),u(),h(32,"button",14),F("click",function(){return o.changeDays(7)}),p(33,"7d"),u(),h(34,"button",14),F("click",function(){return o.changeDays(30)}),p(35,"30d"),u(),h(36,"button",14),F("click",function(){return o.changeDays(90)}),p(37,"90d"),u()()(),h(38,"div",15)(39,"span",16),p(40),u()(),x(41,U2e,5,2,"div",17),x(42,z2e,2,0,"div",18),x(43,$2e,2,1,"div",19),x(44,Q2e,14,0,"table",20),x(45,J2e,2,0,"div",21),u()()),2&i&&(d(3),M(y(4,25,"node.details.rewards-info.title")),d(4),E("",y(8,27,"node.details.rewards-info.rewards-address")," "),d(2),S(o.rewardsAddress?9:-1),d(),S(o.rewardsAddress?-1:10),d(),C("matTooltip",y(12,29,o.rewardsAddress?"node.details.rewards-info.change-address-button":"node.details.rewards-info.set-address-button")),d(2),C("inline",!0),d(),M(o.showRewardForm?"close":"edit"),d(),S(o.showRewardForm?15:-1),d(2),C("inline",!0),d(),M(o.showRewardRules?"expand_more":"chevron_right"),d(),E(" ",y(20,31,"node.details.rewards-info.show-rules")," "),d(2),S(o.showRewardRules?21:-1),d(7),S(o.label?28:-1),d(4),Ie("active-days",7===o.days),d(2),Ie("active-days",30===o.days),d(2),Ie("active-days",90===o.days),d(4),M(o.pk),d(),S(!o.loading&&o.history.length>0?41:-1),d(),S(o.loading?42:-1),d(),S(o.errorMsg?43:-1),d(),S(!o.loading&&o.history.length>0?44:-1),d(),S(o.loading||0!==o.history.length||o.errorMsg?-1:45))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,Os,In,Pn,Wo,We,Kt,so,op,xe],styles:[".title[_ngcontent-%COMP%]{font-size:1.1em;font-weight:700;color:#f8f9f9}.label-text[_ngcontent-%COMP%]{font-size:.9em;color:#aaa}.active-days[_ngcontent-%COMP%]{color:#4caf50!important;font-weight:700}.total-row[_ngcontent-%COMP%]{padding:8px 0;border-bottom:1px solid rgba(255,255,255,.1)}.error-msg[_ngcontent-%COMP%]{color:#f44336;text-align:center}.status-badge[_ngcontent-%COMP%]{padding:2px 8px;border-radius:4px;font-size:.8em}.status-badge.sent[_ngcontent-%COMP%]{background:#4caf5033;color:#4caf50}.status-badge.pending[_ngcontent-%COMP%]{background:#ffc10733;color:#ffc107}.status-badge.no-reward[_ngcontent-%COMP%]{color:#666}tr.sent[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-left:2px solid rgba(76,175,80,.3)}tr.pending[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-left:2px solid rgba(255,193,7,.3)}"]})}}return t})();function Mc(t=0,n=Pf){return t<0&&(t=0),xa(t,t,n)}let tEe=(()=>{class t{constructor(e){this.apiService=e}get(){return this.apiService.get("service-health")}static{this.\u0275fac=function(i){return new(i||t)(ce(zi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const nEe=()=>["nodes.services-health-title"],iEe=(t,n)=>n.reason;function oEe(t,n){1&t&&(h(0,"div",4),B(1,"mat-spinner",10),h(2,"span",11),p(3),b(4,"translate"),u()()),2&t&&(d(),C("diameter",16),d(2),M(y(4,2,"services-health.loading")))}function rEe(t,n){if(1&t&&(h(0,"div",5)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",11),p(4),u()()),2&t){const e=v();d(4),M(e.error)}}function sEe(t,n){1&t&&(h(0,"mat-icon",18),p(1,"warning"),u(),h(2,"span"),p(3),b(4,"translate"),u()),2&t&&(d(3),M(y(4,1,"services-health.degraded")))}function aEe(t,n){1&t&&(h(0,"mat-icon",19),p(1,"check_circle"),u(),h(2,"span"),p(3),b(4,"translate"),u()),2&t&&(d(3),M(y(4,1,"services-health.all-ok")))}function lEe(t,n){if(1&t&&(h(0,"span",13),p(1),b(2,"translate"),b(3,"date"),u()),2&t){const e=v(2);d(),gt(" \u2014 ",y(2,2,"services-health.last-updated"),": ",pe(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function cEe(t,n){if(1&t&&(h(0,"code"),p(1),u()),2&t){const e=v().$implicit;d(),M(e.version)}}function dEe(t,n){1&t&&(h(0,"span",8),p(1,"\u2014"),u())}function uEe(t,n){if(1&t&&(h(0,"tr")(1,"td"),B(2,"span"),u(),h(3,"td")(4,"strong"),p(5),u()(),h(6,"td"),p(7),u(),h(8,"td"),p(9),u(),h(10,"td"),x(11,cEe,2,1,"code")(12,dEe,2,0,"span",8),u(),h(13,"td")(14,"code",8),p(15),u()()()),2&t){const e=n.$implicit,i=v(2);d(2),Ze(i.statusClass(e)),d(3),M(e.name),d(2),E(" ",e.status," "),d(),Ze(i.latencyClass(e)),d(),E(" ",e.latency_ms,"\xa0ms "),d(2),S(e.version?11:12),d(4),M(i.shortUrl(e.url))}}function hEe(t,n){if(1&t&&(h(0,"div",22)(1,"span",8),p(2),b(3,"translate"),u(),h(4,"code"),p(5),u()()),2&t){const e=v().$implicit;d(2),E("",y(3,2,"services-health.version"),":"),d(3),M(e.version)}}function fEe(t,n){if(1&t&&(h(0,"div",23),p(1),u()),2&t){const e=v().$implicit;d(),M(e.error)}}function pEe(t,n){if(1&t&&(h(0,"div",17)(1,"div",20),B(2,"span"),h(3,"strong",11),p(4),u(),h(5,"span",21),p(6),u()(),h(7,"div",22)(8,"span",8),p(9),b(10,"translate"),u(),p(11),u(),x(12,hEe,6,4,"div",22),h(13,"div",22)(14,"span",8),p(15),b(16,"translate"),u(),h(17,"code",8),p(18),u()(),x(19,fEe,2,1,"div",23),u()),2&t){const e=n.$implicit,i=v(2);d(2),Ze(i.statusClass(e)),d(2),M(e.name),d(),Ze(i.latencyClass(e)),d(),E("",e.latency_ms,"\xa0ms"),d(3),E("",y(10,12,"services-health.status"),":"),d(2),E(" ",e.status," "),d(),S(e.version?12:-1),d(3),E("",y(16,14,"services-health.endpoint"),":"),d(3),M(i.shortUrl(e.url)),d(),S(e.error?19:-1)}}function mEe(t,n){if(1&t&&(h(0,"div",12),x(1,sEe,5,3)(2,aEe,5,3),x(3,lEe,4,7,"span",13),u(),h(4,"table",14)(5,"tr"),B(6,"th",15),h(7,"th"),p(8),b(9,"translate"),u(),h(10,"th"),p(11),b(12,"translate"),u(),h(13,"th"),p(14),b(15,"translate"),u(),h(16,"th"),p(17),b(18,"translate"),u(),h(19,"th"),p(20),b(21,"translate"),u()(),ve(22,uEe,16,9,"tr",null,Br().trackByName,!0),u(),h(24,"div",16),ve(25,pEe,20,16,"div",17,Br().trackByName,!0),u()),2&t){const e=v();d(),S(e.anyDown()?1:2),d(2),S(e.lastUpdated?3:-1),d(5),M(y(9,7,"services-health.service")),d(3),M(y(12,9,"services-health.status")),d(3),M(y(15,11,"services-health.latency")),d(3),M(y(18,13,"services-health.version")),d(3),M(y(21,15,"services-health.endpoint")),d(2),ye(e.entries),d(3),ye(e.entries)}}function gEe(t,n){1&t&&(h(0,"div",4),B(1,"mat-spinner",10),h(2,"span",11),p(3,"\u2026"),u()()),2&t&&(d(),C("diameter",14))}function _Ee(t,n){1&t&&(h(0,"div",8),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"services-health.rsn-empty")))}function bEe(t,n){if(1&t&&(h(0,"span",28),p(1),b(2,"number"),u()),2&t){const e=v().$implicit;Ze(v().successClass(e.snapshot)),d(),E(" ",pe(2,3,e.snapshot.success_rate_pct,"1.0-1"),"% ")}}function vEe(t,n){if(1&t&&(h(0,"div",23),p(1),b(2,"translate"),u()),2&t){const e=v().$implicit;d(),gt("",y(2,2,"services-health.rsn-error"),": ",e.error)}}function yEe(t,n){if(1&t&&(h(0,"div")(1,"span",8),p(2),b(3,"translate"),u(),h(4,"span"),p(5),b(6,"date"),u()()),2&t){const e=v(2).$implicit;d(2),E("",y(3,2,"services-health.rsn-last-success"),":"),d(3),M(pe(6,4,e.snapshot.last_success_at,"HH:mm:ss"))}}function CEe(t,n){if(1&t&&(h(0,"div")(1,"span",8),p(2),b(3,"translate"),u(),h(4,"span"),p(5),b(6,"date"),u()()),2&t){const e=v(2).$implicit;d(2),E("",y(3,2,"services-health.rsn-last-failure"),":"),d(3),M(pe(6,4,e.snapshot.last_failure_at,"HH:mm:ss"))}}function wEe(t,n){if(1&t&&(h(0,"span",31),p(1),u()),2&t){const e=n.$implicit;d(),gt("",e.reason," (",e.count,")")}}function xEe(t,n){if(1&t&&(h(0,"div",30)(1,"span",8),p(2),b(3,"translate"),u(),ve(4,wEe,2,2,"span",31,iEe),u()),2&t){const e=v(2).$implicit,i=v();d(2),E("",y(3,1,"services-health.rsn-failure-reasons"),":"),d(2),ye(i.topFailureReasons(e.snapshot))}}function SEe(t,n){if(1&t&&(h(0,"div",29)(1,"div")(2,"span",8),p(3),b(4,"translate"),u(),h(5,"strong"),p(6),u()(),h(7,"div")(8,"span",8),p(9),b(10,"translate"),u(),h(11,"strong"),p(12),u()(),h(13,"div")(14,"span",8),p(15),b(16,"translate"),u(),h(17,"strong"),p(18),u()(),h(19,"div")(20,"span",8),p(21),b(22,"translate"),u(),h(23,"strong"),p(24),u()(),h(25,"div")(26,"span",8),p(27),b(28,"translate"),u(),h(29,"strong"),p(30),u()(),h(31,"div")(32,"span",8),p(33),b(34,"translate"),u(),h(35,"strong"),p(36),u()(),x(37,yEe,7,7,"div"),x(38,CEe,7,7,"div"),u(),x(39,xEe,6,3,"div",30)),2&t){const e=v().$implicit,i=v();d(3),E("",y(4,15,"services-health.rsn-success"),":"),d(3),M(e.snapshot.successful||0),d(3),E("",y(10,17,"services-health.rsn-failed"),":"),d(3),M(e.snapshot.failed||0),d(3),E("",y(16,19,"services-health.rsn-active"),":"),d(3),M(e.snapshot.active_requests||0),d(3),E("",y(22,21,"services-health.rsn-latency-p50"),":"),d(3),E("",(null==e.snapshot.latency_ms?null:e.snapshot.latency_ms.p50_ms)||0," ms"),d(3),E("",y(28,23,"services-health.rsn-latency-p95"),":"),d(3),E("",(null==e.snapshot.latency_ms?null:e.snapshot.latency_ms.p95_ms)||0," ms"),d(3),E("",y(34,25,"services-health.rsn-latency-p99"),":"),d(3),E("",(null==e.snapshot.latency_ms?null:e.snapshot.latency_ms.p99_ms)||0," ms"),d(),S(e.snapshot.last_success_at?37:-1),d(),S(e.snapshot.last_failure_at?38:-1),d(),S(i.topFailureReasons(e.snapshot).length>0?39:-1)}}function kEe(t,n){if(1&t&&(h(0,"div",9)(1,"div",24),B(2,"span",25),h(3,"code",26),p(4),u(),x(5,bEe,3,6,"span",27),u(),x(6,vEe,3,4,"div",23),x(7,SEe,40,27),u()),2&t){const e=n.$implicit;d(2),C("ngClass",e.snapshot?"dot-green":"dot-red"),d(2),M(e.pk),d(),S(e.snapshot?5:-1),d(),S(e.error?6:-1),d(),S(e.snapshot?7:-1)}}let DEe=(()=>{class t extends pn{constructor(e,i){super(),this.healthSvc=e,this.api=i,this.tabsData=[],this.entries=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.rsnStats=[],this.rsnLoading=!0,this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=Mc(15e3).pipe(si(0),tn(()=>this.healthSvc.get())).subscribe({next:e=>{this.entries=e||[],this.loading=!1,this.error=null,this.lastUpdated=new Date},error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch services health"}}),this.rsnSub=Mc(3e4).pipe(si(0),tn(()=>this.api.get("route-setup-nodes/stats"))).subscribe({next:e=>{this.rsnStats=Array.isArray(e)?e:[],this.rsnLoading=!1},error:()=>{this.rsnLoading=!1}}),super.ngOnInit()}ngOnDestroy(){this.sub?.unsubscribe(),this.rsnSub?.unsubscribe()}topFailureReasons(e){return e?.failures_by_reason?Object.entries(e.failures_by_reason).map(([i,o])=>({reason:i,count:o})).filter(i=>i.count>0).sort((i,o)=>o.count-i.count).slice(0,3):[]}successClass(e){const i=e?.success_rate_pct??0;return i>=90?"latency-fast":i>=70?"latency-medium":"latency-slow"}trackRSN(e,i){return i.pk}statusClass(e){const i=(e?.status||"").toUpperCase();return"OK"===i?"dot-green":"DOWN"===i?"dot-red":"dot-outline-gray"}anyDown(){return this.entries.some(e=>"OK"!==(e?.status||"").toUpperCase())}latencyClass(e){const i=e?.latency_ms??0;return i<500?"latency-fast":i<2e3?"latency-medium":"latency-slow"}shortUrl(e){if(!e)return"";try{return new URL(e).host}catch{return e}}trackByName(e,i){return i.name}static{this.\u0275fac=function(i){return new(i||t)(O(tEe),O(zi))}}static{this.\u0275cmp=re({type:t,selectors:[["app-services-health"]],standalone:!1,features:[be],decls:15,vars:13,consts:[[1,"row"],[1,"col-12"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton"],[1,"content","col-12","mt-4.5"],[1,"loading-row"],[1,"error-row"],[1,"rsn-section","mt-4"],[1,"rsn-title"],[1,"dim"],[1,"rsn-card"],[3,"diameter"],[1,"ml-2"],[1,"summary-line"],[1,"last-updated"],[1,"responsive-table-translucid","d-none","d-md-table","mt-3"],[1,"small-column"],[1,"d-md-none","mt-3"],[1,"mobile-card"],[1,"warn"],[1,"ok"],[1,"mobile-header"],[1,"ml-auto"],[1,"mobile-row"],[1,"error-detail"],[1,"rsn-card-header"],[1,"dot",3,"ngClass"],[1,"rsn-pk","mono","small"],[1,"rsn-rate",3,"class"],[1,"rsn-rate"],[1,"rsn-grid"],[1,"rsn-failures"],[1,"rsn-fail-pill"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1),B(2,"app-top-bar",2),u(),h(3,"div",3),x(4,oEe,5,4,"div",4),x(5,rEe,5,1,"div",5),x(6,mEe,27,17),h(7,"div",6)(8,"h3",7),p(9),b(10,"translate"),u(),x(11,gEe,4,1,"div",4),x(12,_Ee,3,3,"div",8),ve(13,kEe,8,5,"div",9,o.trackRSN,!0),u()()()),2&i&&(d(2),C("titleParts",Ct(12,nEe))("tabsData",o.tabsData)("selectedTabIndex",6)("showUpdateButton",!1),d(2),S(o.loading&&0===o.entries.length?4:-1),d(),S(o.error&&0===o.entries.length?5:-1),d(),S(o.entries.length>0?6:-1),d(3),M(y(10,10,"services-health.rsn-section")),d(2),S(o.rsnLoading&&0===o.rsnStats.length?11:-1),d(),S(o.rsnLoading||0!==o.rsnStats.length?-1:12),d(),ye(o.rsnStats))},dependencies:[$t,We,so,Mr,Vl,fa,xe],styles:[".loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffbf;padding:24px 0}.error-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#f87171;padding:24px 0}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;margin-right:6px}.summary-line[_ngcontent-%COMP%] mat-icon.ok[_ngcontent-%COMP%]{color:#4ade80}.summary-line[_ngcontent-%COMP%] mat-icon.warn[_ngcontent-%COMP%]{color:#fbbf24}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.small-column[_ngcontent-%COMP%]{width:24px}.dim[_ngcontent-%COMP%]{color:#ffffff8c}.latency-fast[_ngcontent-%COMP%]{color:#4ade80}.latency-medium[_ngcontent-%COMP%]{color:#fbbf24}.latency-slow[_ngcontent-%COMP%]{color:#f87171}.error-detail[_ngcontent-%COMP%]{color:#f87171;font-size:.8em;margin-top:4px}.mobile-card[_ngcontent-%COMP%]{background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:12px;margin-bottom:10px}.mobile-card[_ngcontent-%COMP%] .mobile-header[_ngcontent-%COMP%]{display:flex;align-items:center;margin-bottom:8px;font-size:1em}.mobile-card[_ngcontent-%COMP%] .mobile-row[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffd9;padding:2px 0}.mobile-card[_ngcontent-%COMP%] .mobile-row[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:#ffffffd9}code[_ngcontent-%COMP%]{font-family:monospace;font-size:.9em}.rsn-section[_ngcontent-%COMP%] .rsn-title[_ngcontent-%COMP%]{font-size:1em;font-weight:600;color:#fffffff2;margin:0 0 10px}.rsn-section[_ngcontent-%COMP%] .rsn-card[_ngcontent-%COMP%]{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:10px 14px;margin-bottom:10px}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:50%;display:inline-block}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .dot-green[_ngcontent-%COMP%]{background:#4caf50}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .dot-red[_ngcontent-%COMP%]{background:#f44336}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .rsn-pk[_ngcontent-%COMP%]{font-family:monospace;font-size:11px;color:#ffffffb3;word-break:break-all;flex:1 1 auto;min-width:0}.rsn-section[_ngcontent-%COMP%] .rsn-card-header[_ngcontent-%COMP%] .rsn-rate[_ngcontent-%COMP%]{font-weight:600;font-size:13px}.rsn-section[_ngcontent-%COMP%] .rsn-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px 16px;font-size:12px}.rsn-section[_ngcontent-%COMP%] .rsn-grid[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{margin-left:6px;color:#fffffff2}.rsn-section[_ngcontent-%COMP%] .rsn-failures[_ngcontent-%COMP%]{margin-top:8px;font-size:11px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.rsn-section[_ngcontent-%COMP%] .rsn-failures[_ngcontent-%COMP%] .rsn-fail-pill[_ngcontent-%COMP%]{background:#e5393526;border:1px solid rgba(229,57,53,.35);color:#ffc8c8f2;padding:1px 6px;border-radius:3px}"]})}}return t})();const MEe=()=>["nodes.network-title"],h6=(t,n)=>n.pk;function TEe(t,n){1&t&&(h(0,"div",4),B(1,"mat-spinner",7),h(2,"span",8),p(3),b(4,"translate"),u()()),2&t&&(d(),C("diameter",16),d(2),M(y(4,2,"network-view.loading")))}function EEe(t,n){if(1&t&&(h(0,"div",5)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",8),p(4),u()()),2&t){const e=v();d(4),M(e.error)}}function PEe(t,n){if(1&t&&(h(0,"div",15),p(1),b(2,"translate"),b(3,"date"),u()),2&t){const e=v(2);d(),gt(" ",y(2,2,"network-view.last-updated"),": ",pe(3,4,e.lastUpdated,"mediumTime")," ")}}function IEe(t,n){if(1&t&&(h(0,"tr",32)(1,"td",36),p(2),u(),h(3,"td"),p(4),u(),h(5,"td"),p(6),u(),h(7,"td"),p(8),u(),h(9,"td",31),p(10),u(),h(11,"td",31),p(12),u(),h(13,"td",31),p(14),u(),h(15,"td",31),p(16),u(),h(17,"td",31)(18,"strong"),p(19),u()(),h(20,"td"),p(21),u()()),2&t){const e=n.$implicit;C("ngClass",v(2).rowClass(e)),d(),C("matTooltip",e.pk),d(),M(e.pk),d(2),M(e.country||"-"),d(2),M(e.version||"-"),d(2),M(e.services||"-"),d(2),M(e.stcpr),d(2),M(e.sudph),d(2),M(e.dmsg),d(2),M(e.stcp),d(3),M(e.total),d(2),M(e.ut_status||"-")}}function OEe(t,n){if(1&t&&(h(0,"div",34)(1,"div",37),p(2),u(),h(3,"div",38),p(4),u(),h(5,"div",39),p(6),h(7,"strong"),p(8),u(),p(9),u()()),2&t){const e=n.$implicit;C("ngClass",v(2).rowClass(e)),d(),C("matTooltip",e.pk),d(),M(e.pk),d(2),Uh(" ",e.country||"-"," \xb7 ",e.version||"-"," \xb7 ",e.services||"-"," "),d(2),Xg(" stcpr ",e.stcpr," \xb7 sudph ",e.sudph," \xb7 dmsg ",e.dmsg," \xb7 stcp ",e.stcp," \xb7 "),d(2),E("total ",e.total),d(),E(" \xb7 ",e.ut_status||"-"," ")}}function AEe(t,n){1&t&&(h(0,"p",35),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"network-view.empty")))}function REe(t,n){if(1&t){const e=oe();h(0,"div",6)(1,"div",9)(2,"div",10)(3,"div",11)(4,"span")(5,"strong"),p(6),u(),p(7," visors"),u(),B(8,"span",12),h(9,"span"),p(10),u(),B(11,"span",13),h(12,"span"),p(13),u(),B(14,"span",14),h(15,"span"),p(16),u()(),x(17,PEe,4,7,"div",15),h(18,"button",16),b(19,"translate"),F("click",function(){return j(e),U(v().refreshNow())}),h(20,"mat-icon",17),p(21,"refresh"),u()()(),h(22,"div",18)(23,"mat-form-field",19)(24,"mat-label"),p(25),b(26,"translate"),u(),h(27,"input",20),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.searchTerm,o)||(r.searchTerm=o),U(o)}),F("ngModelChange",function(){return j(e),U(v().applyFilters())}),u()(),h(28,"mat-form-field",21)(29,"mat-label"),p(30),b(31,"translate"),u(),h(32,"input",22),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.filterCountry,o)||(r.filterCountry=o),U(o)}),F("ngModelChange",function(){return j(e),U(v().applyFilters())}),u()(),h(33,"mat-form-field",21)(34,"mat-label"),p(35),b(36,"translate"),u(),h(37,"input",23),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.filterVersion,o)||(r.filterVersion=o),U(o)}),F("ngModelChange",function(){return j(e),U(v().applyFilters())}),u()(),h(38,"mat-form-field",21)(39,"mat-label"),p(40),b(41,"translate"),u(),h(42,"input",24),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.filterMinTransports,o)||(r.filterMinTransports=o),U(o)}),F("ngModelChange",function(){return j(e),U(v().applyFilters())}),u()(),h(43,"mat-checkbox",25),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.showOnlineOnly,o)||(r.showOnlineOnly=o),U(o)}),F("ngModelChange",function(){return j(e),U(v().applyFilters())}),p(44),b(45,"translate"),u()(),h(46,"div",26),B(47,"span",27),h(48,"span"),p(49),b(50,"translate"),u(),B(51,"span",28),h(52,"span"),p(53),b(54,"translate"),u(),B(55,"span",29),h(56,"span"),p(57),b(58,"translate"),u()(),h(59,"table",30)(60,"tr")(61,"th"),p(62),b(63,"translate"),u(),h(64,"th"),p(65),b(66,"translate"),u(),h(67,"th"),p(68),b(69,"translate"),u(),h(70,"th"),p(71),b(72,"translate"),u(),h(73,"th",31),p(74,"stcpr"),u(),h(75,"th",31),p(76,"sudph"),u(),h(77,"th",31),p(78,"dmsg"),u(),h(79,"th",31),p(80,"stcp"),u(),h(81,"th",31),p(82),b(83,"translate"),u(),h(84,"th"),p(85),b(86,"translate"),u()(),ve(87,IEe,22,12,"tr",32,h6),u(),h(89,"div",33),ve(90,OEe,10,12,"div",34,h6),u(),x(92,AEe,3,3,"p",35),u()()}if(2&t){const e=v();d(6),M(e.totals.all),d(4),E("",e.totals.online," online"),d(3),E("",e.totals.offline," offline"),d(3),E("",e.totals.notInUT," not in UT"),d(),S(e.lastUpdated?17:-1),d(),C("matTooltip",y(19,27,"network-view.refresh")),d(2),C("inline",!0),d(5),M(y(26,29,"network-view.search")),d(2),Ut("ngModel",e.searchTerm),d(3),M(y(31,31,"network-view.country")),d(2),Ut("ngModel",e.filterCountry),d(3),M(y(36,33,"network-view.version")),d(2),Ut("ngModel",e.filterVersion),d(3),M(y(41,35,"network-view.min-transports")),d(2),Ut("ngModel",e.filterMinTransports),d(),Ut("ngModel",e.showOnlineOnly),d(),E(" ",y(45,37,"network-view.online-only")," "),d(5),M(y(50,39,"network-view.legend.offline")),d(4),M(y(54,41,"network-view.legend.not-in-ut")),d(4),M(y(58,43,"network-view.legend.low-transports")),d(5),M(y(63,45,"network-view.col.pk")),d(3),M(y(66,47,"network-view.col.country")),d(3),M(y(69,49,"network-view.col.version")),d(3),M(y(72,51,"network-view.col.services")),d(11),M(y(83,53,"network-view.col.total")),d(3),M(y(86,55,"network-view.col.status")),d(2),ye(e.filteredEntries),d(3),ye(e.filteredEntries),d(2),S(0===e.filteredEntries.length?92:-1)}}let FEe=(()=>{class t extends pn{constructor(e){super(),this.nodeService=e,this.tabsData=[],this.entries=[],this.filteredEntries=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.filterCountry="",this.filterVersion="",this.filterMinTransports=null,this.showOnlineOnly=!0,this.searchTerm="",this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=Mc(3e5).pipe(si(0),tn(()=>this.nodeService.getNetworkView())).subscribe({next:e=>this.onResponse(e),error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch network view"}}),super.ngOnInit()}refreshNow(){this.loading=0===this.entries.length,this.nodeService.getNetworkView(!0).subscribe({next:e=>this.onResponse(e),error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch network view"}})}onResponse(e){this.entries=e?.entries||[],this.loading=!1,this.error=null,this.lastUpdated=new Date,this.applyFilters()}ngOnDestroy(){this.sub&&this.sub.unsubscribe()}applyFilters(){const e=(this.searchTerm||"").trim().toLowerCase(),i=(this.filterCountry||"").trim().toUpperCase(),o=(this.filterVersion||"").trim(),r=this.filterMinTransports||0;this.filteredEntries=this.entries.filter(s=>!(this.showOnlineOnly&&"online"!==(s.ut_status||"")||i&&(s.country||"").toUpperCase()!==i||o&&(s.version||"")!==o||r>0&&(s.total||0)0?6:-1))},dependencies:[$t,Gt,rc,qt,wi,tp,sn,Os,In,Wo,We,Kt,cu,so,kr,Mr,fa,xe],styles:[".nv-header[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:16px;padding:8px 4px 4px}.nv-header[_ngcontent-%COMP%] .nv-totals[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:13px}.nv-header[_ngcontent-%COMP%] .nv-fetched[_ngcontent-%COMP%]{margin-left:auto;font-size:12px;opacity:.6}.nv-header[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:8px}.nv-header[_ngcontent-%COMP%] .dot-green[_ngcontent-%COMP%]{background:#4caf50}.nv-header[_ngcontent-%COMP%] .dot-red[_ngcontent-%COMP%]{background:#e53935}.nv-header[_ngcontent-%COMP%] .dot-outline-gray[_ngcontent-%COMP%]{border:1px solid rgba(255,255,255,.4)}.nv-filters[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:8px 4px;border-bottom:1px solid rgba(255,255,255,.06)}.nv-filters[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{flex:0 1 200px}.nv-filters[_ngcontent-%COMP%] .field-sm[_ngcontent-%COMP%]{flex:0 1 130px}.nv-filters[_ngcontent-%COMP%] .field-md[_ngcontent-%COMP%]{flex:1 1 280px}.nv-legend[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12px;padding:8px 4px;opacity:.8}.nv-legend[_ngcontent-%COMP%] .row-marker[_ngcontent-%COMP%]{display:inline-block;width:16px;height:12px;border-radius:2px;margin-left:6px}.responsive-table-translucid[_ngcontent-%COMP%] th.num[_ngcontent-%COMP%], .responsive-table-translucid[_ngcontent-%COMP%] td.num[_ngcontent-%COMP%]{text-align:right;font-variant-numeric:tabular-nums}.row-offline[_ngcontent-%COMP%]{color:#e53935d9!important}.row-not-in-ut[_ngcontent-%COMP%]{background:#e539351f!important;color:#ffffffe6!important}.row-low-transports[_ngcontent-%COMP%]{background:#ffa7261f!important;color:#ffdc96f2!important}.row-marker.row-offline[_ngcontent-%COMP%]{background:#e5393580}.row-marker.row-not-in-ut[_ngcontent-%COMP%]{background:#e5393540}.row-marker.row-low-transports[_ngcontent-%COMP%]{background:#ffa7264d}.nv-cards[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;padding:8px 0}.nv-card[_ngcontent-%COMP%]{border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:8px 10px}.nv-card[_ngcontent-%COMP%] .nv-card-pk[_ngcontent-%COMP%]{font-weight:600}.nv-card[_ngcontent-%COMP%] .nv-card-meta[_ngcontent-%COMP%]{opacity:.7;font-size:12px}.nv-card[_ngcontent-%COMP%] .nv-card-tps[_ngcontent-%COMP%]{font-size:12px;margin-top:2px;font-variant-numeric:tabular-nums}.nv-empty[_ngcontent-%COMP%]{text-align:center;opacity:.6;padding:24px}"]})}}return t})();const NEe=()=>["nodes.resources-title"],LEe=t=>({count:t}),f6=t=>["/nodes",t,"resources"];function BEe(t,n){1&t&&(h(0,"div",4),B(1,"mat-spinner",6),h(2,"span",7),p(3),b(4,"translate"),u()()),2&t&&(d(),C("diameter",16),d(2),M(y(4,2,"multi-resources.loading")))}function VEe(t,n){if(1&t&&(h(0,"div",5)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",7),p(4),u()()),2&t){const e=v();d(4),M(e.error)}}function HEe(t,n){if(1&t&&(h(0,"span",10),p(1),b(2,"translate"),b(3,"date"),u()),2&t){const e=v(2);d(),gt(" \u2014 ",y(2,2,"multi-resources.last-updated"),": ",pe(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function jEe(t,n){if(1&t&&(h(0,"div",17),p(1),u()),2&t){const e=v().$implicit;d(),M(e.error)}}function UEe(t,n){1&t&&(p(0),b(1,"number")),2&t&&E(" ",pe(1,1,v().$implicit.stats.cpu_percent,"1.0-1"),"% ")}function zEe(t,n){1&t&&(h(0,"span",18),p(1,"-"),u())}function $Ee(t,n){if(1&t&&(p(0),b(1,"number"),h(2,"span",19),p(3),u()),2&t){const e=v().$implicit,i=v(2);E(" ",pe(1,3,e.stats.mem_percent,"1.0-1"),"% "),d(3),gt("(",i.formatBytes(e.stats.mem_used)," / ",i.formatBytes(e.stats.mem_total),")")}}function WEe(t,n){1&t&&(h(0,"span",18),p(1,"-"),u())}function GEe(t,n){1&t&&(p(0),b(1,"number")),2&t&&E(" ",pe(1,1,v().$implicit.stats.disk_percent,"1.0-1"),"% ")}function qEe(t,n){1&t&&(h(0,"span",18),p(1,"-"),u())}function KEe(t,n){if(1&t&&(h(0,"tr")(1,"td"),B(2,"span",14),u(),h(3,"td")(4,"a",15)(5,"strong"),p(6),u()(),h(7,"div",16),p(8),u(),x(9,jEe,2,1,"div",17),u(),h(10,"td"),x(11,UEe,2,4)(12,zEe,2,0,"span",18),u(),h(13,"td"),x(14,$Ee,4,6)(15,WEe,2,0,"span",18),u(),h(16,"td"),x(17,GEe,2,4)(18,qEe,2,0,"span",18),u(),h(19,"td"),p(20),u(),h(21,"td"),p(22),u(),h(23,"td"),p(24),u()()),2&t){const e=n.$implicit,i=v(2);d(2),C("ngClass",e.node.online?"dot-green":"dot-red"),d(2),C("routerLink",se(17,f6,e.node.localPk)),d(2),M(e.node.label||e.node.localPk),d(2),M(e.node.localPk),d(),S(e.error?9:-1),d(),Ze(i.pctClass(null==e.stats?null:e.stats.cpu_percent)),d(),S(void 0!==(null==e.stats?null:e.stats.cpu_percent)?11:12),d(2),Ze(i.pctClass(null==e.stats?null:e.stats.mem_percent)),d(),S(void 0!==(null==e.stats?null:e.stats.mem_percent)?14:15),d(2),Ze(i.pctClass(null==e.stats?null:e.stats.disk_percent)),d(),S(void 0!==(null==e.stats?null:e.stats.disk_percent)?17:18),d(3),M(i.formatRate(e.txRate)),d(2),M(i.formatRate(e.rxRate)),d(2),M(i.formatBytes(null==e.stats||null==e.stats.process?null:e.stats.process.mem_rss))}}function YEe(t,n){if(1&t&&(h(0,"div",17),p(1),u()),2&t){const e=v().$implicit;d(),M(e.error)}}function XEe(t,n){if(1&t&&(h(0,"div",23)(1,"div")(2,"span",18),p(3),b(4,"translate"),u(),h(5,"strong"),p(6),b(7,"number"),u()(),h(8,"div")(9,"span",18),p(10),b(11,"translate"),u(),h(12,"strong"),p(13),b(14,"number"),u()(),h(15,"div")(16,"span",18),p(17),b(18,"translate"),u(),h(19,"strong"),p(20),b(21,"number"),u()(),h(22,"div")(23,"span",18),p(24),b(25,"translate"),u(),h(26,"strong"),p(27),u()(),h(28,"div")(29,"span",18),p(30),b(31,"translate"),u(),h(32,"strong"),p(33),u()(),h(34,"div")(35,"span",18),p(36),b(37,"translate"),u(),h(38,"strong"),p(39),u()()()),2&t){const e=v().$implicit,i=v(2);d(3),E("",y(4,18,"multi-resources.cpu"),":"),d(2),Ze(i.pctClass(e.stats.cpu_percent)),d(),E("",pe(7,20,e.stats.cpu_percent,"1.0-1"),"%"),d(4),E("",y(11,23,"multi-resources.mem"),":"),d(2),Ze(i.pctClass(e.stats.mem_percent)),d(),E("",pe(14,25,e.stats.mem_percent,"1.0-1"),"%"),d(4),E("",y(18,28,"multi-resources.disk"),":"),d(2),Ze(i.pctClass(e.stats.disk_percent)),d(),E("",pe(21,30,e.stats.disk_percent,"1.0-1"),"%"),d(4),E("",y(25,33,"multi-resources.tx"),":"),d(3),M(i.formatRate(e.txRate)),d(3),E("",y(31,35,"multi-resources.rx"),":"),d(3),M(i.formatRate(e.rxRate)),d(3),E("",y(37,37,"multi-resources.proc-rss"),":"),d(3),M(i.formatBytes(null==e.stats.process?null:e.stats.process.mem_rss))}}function ZEe(t,n){if(1&t&&(h(0,"div",13)(1,"div",20),B(2,"span",14),h(3,"a",21)(4,"strong"),p(5),u()()(),h(6,"div",22),p(7),u(),x(8,YEe,2,1,"div",17),x(9,XEe,40,39,"div",23),u()),2&t){const e=n.$implicit;d(2),C("ngClass",e.node.online?"dot-green":"dot-red"),d(),C("routerLink",se(6,f6,e.node.localPk)),d(2),M(e.node.label||e.node.localPk),d(2),M(e.node.localPk),d(),S(e.error?8:-1),d(),S(e.stats?9:-1)}}function QEe(t,n){if(1&t&&(h(0,"div",8)(1,"mat-icon"),p(2,"memory"),u(),h(3,"span",9),p(4),b(5,"translate"),u(),x(6,HEe,4,7,"span",10),u(),h(7,"table",11)(8,"tr"),B(9,"th"),h(10,"th"),p(11),b(12,"translate"),u(),h(13,"th"),p(14),b(15,"translate"),u(),h(16,"th"),p(17),b(18,"translate"),u(),h(19,"th"),p(20),b(21,"translate"),u(),h(22,"th"),p(23),b(24,"translate"),u(),h(25,"th"),p(26),b(27,"translate"),u(),h(28,"th"),p(29),b(30,"translate"),u()(),ve(31,KEe,25,19,"tr",null,Br().trackRow,!0),u(),h(33,"div",12),ve(34,ZEe,10,8,"div",13,Br().trackRow,!0),u()),2&t){const e=v();d(4),M(pe(5,9,"multi-resources.summary",se(26,LEe,e.rows.length))),d(2),S(e.lastUpdated?6:-1),d(5),M(y(12,12,"multi-resources.visor")),d(3),M(y(15,14,"multi-resources.cpu")),d(3),M(y(18,16,"multi-resources.mem")),d(3),M(y(21,18,"multi-resources.disk")),d(3),M(y(24,20,"multi-resources.tx")),d(3),M(y(27,22,"multi-resources.rx")),d(3),M(y(30,24,"multi-resources.proc-rss")),d(2),ye(e.rows),d(3),ye(e.rows)}}let JEe=(()=>{class t extends pn{constructor(e,i,o){super(),this.nodeService=e,this.api=i,this.cdr=o,this.tabsData=[],this.rows=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=Mc(5e3).pipe(si(0),tn(()=>this.nodeService.getNodes()),tn(e=>{const i=(e||[]).filter(r=>r.online);return 0===i.length?ae({nodes:e||[],stats:[]}):zf(i.map(r=>this.api.get(`visors/${r.localPk}/host-stats`).pipe(Ui(s=>ae({__error:s?.message||"failed"}))))).pipe(tn(r=>ae({nodes:e||[],stats:r.map((s,a)=>({pk:i[a].localPk,stats:s&&!s.__error?s:void 0,error:s&&s.__error?s.__error:void 0}))})))})).subscribe({next:({nodes:e,stats:i})=>{this.mergeStats(e,i),this.loading=!1,this.error=null,this.lastUpdated=new Date,this.cdr.markForCheck()},error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch resources"}}),super.ngOnInit()}ngOnDestroy(){this.sub?.unsubscribe()}mergeStats(e,i){const o=new Map;i.forEach(a=>o.set(a.pk,{stats:a.stats,error:a.error}));const r=new Map;this.rows.forEach(a=>r.set(a.node.localPk,a));const s=Date.now();this.rows=e.map(a=>{const l=o.get(a.localPk),c=r.get(a.localPk),f={node:a,...l};if(l?.stats){const m=l.stats.net_bytes_sent||0,g=l.stats.net_bytes_recv||0;if(c?.lastSampleAt&&void 0!==c.prevSent&&void 0!==c.prevRecv){const _=(s-c.lastSampleAt)/1e3;if(_>0){const w=Math.max(0,(m-c.prevSent)/_),k=Math.max(0,(g-c.prevRecv)/_);f.txRate=w,f.rxRate=k}}f.prevSent=m,f.prevRecv=g,f.lastSampleAt=s}return f})}pctClass(e){return null==e?"pct-na":e>=90?"pct-bad":e>=70?"pct-warn":"pct-ok"}formatRate(e){if(null==e||e<0)return"-";const i=["B/s","KB/s","MB/s","GB/s"];let o=0,r=e;for(;r>=1024&&o=1024&&o0?6:-1))},dependencies:[$t,Is,We,so,Mr,Vl,fa,xe],styles:[".loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffbf;padding:24px 0}.error-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#f87171;padding:24px 0}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-green[_ngcontent-%COMP%]{background:#4caf50}.dot-red[_ngcontent-%COMP%]{background:#f44336}.visor-link[_ngcontent-%COMP%]{color:#fffffff2;text-decoration:none}.visor-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.visor-pk[_ngcontent-%COMP%]{color:#ffffff8c;font-size:11px;word-break:break-all;font-family:monospace}.visor-err[_ngcontent-%COMP%]{color:#f87171;font-size:12px;margin-top:2px}.dim[_ngcontent-%COMP%]{color:#fff9}.small[_ngcontent-%COMP%]{font-size:.85em}.pct-ok[_ngcontent-%COMP%]{color:#4caf50;font-weight:500}.pct-warn[_ngcontent-%COMP%]{color:#ff9800;font-weight:500}.pct-bad[_ngcontent-%COMP%]{color:#f44336;font-weight:600}.pct-na[_ngcontent-%COMP%]{color:#ffffff80}.mobile-card[_ngcontent-%COMP%]{background:#ffffff0a;border-radius:4px;padding:12px;margin-bottom:10px}.mobile-card[_ngcontent-%COMP%] .mobile-header[_ngcontent-%COMP%]{display:flex;align-items:center}.mobile-card[_ngcontent-%COMP%] .mobile-pk[_ngcontent-%COMP%]{color:#ffffff8c;font-size:11px;word-break:break-all;font-family:monospace;margin:4px 0 6px}.mobile-card[_ngcontent-%COMP%] .mobile-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;font-size:12px}"]})}}return t})();const ePe=()=>["nodes.transports-title"],tPe=(t,n,e)=>({transports:t,bandwidth:n,days:e});function nPe(t,n){1&t&&(h(0,"div",10),B(1,"mat-spinner",12),h(2,"span",13),p(3),b(4,"translate"),u()()),2&t&&(d(),C("diameter",16),d(2),M(y(4,2,"network-transports.loading")))}function iPe(t,n){if(1&t&&(h(0,"div",11)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",13),p(4),u()()),2&t){const e=v();d(4),M(e.error)}}function oPe(t,n){if(1&t&&(h(0,"span",16),p(1),b(2,"translate"),b(3,"date"),u()),2&t){const e=v(2);d(),gt(" \u2014 ",y(2,2,"network-transports.last-updated"),": ",pe(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function rPe(t,n){if(1&t&&(h(0,"tr")(1,"td",20),p(2),u(),h(3,"td"),p(4),u(),h(5,"td",20),p(6),u(),h(7,"td",20),p(8),u(),h(9,"td",19),p(10),u(),h(11,"td",19),p(12),u(),h(13,"td",19)(14,"strong"),p(15),u()(),h(16,"td",21),p(17),u()()),2&t){const e=n.$implicit,i=v(3);d(2),M(e.id),d(2),M(e.type),d(2),M(e.edge_a),d(2),M(e.edge_b),d(2),M(i.fmtBytes(e.sent)),d(2),M(i.fmtBytes(e.recv)),d(3),M(i.fmtBytes(e.bandwidth)),d(),C("matTooltip",i.fmtLatencyFull(e.latency)),d(),M(i.fmtLatency(e.latency))}}function sPe(t,n){if(1&t&&(h(0,"table",17)(1,"tr")(2,"th"),p(3),b(4,"translate"),u(),h(5,"th"),p(6),b(7,"translate"),u(),h(8,"th"),p(9),b(10,"translate"),u(),h(11,"th"),p(12),b(13,"translate"),u(),h(14,"th",19),p(15),b(16,"translate"),u(),h(17,"th",19),p(18),b(19,"translate"),u(),h(20,"th",19),p(21),b(22,"translate"),u(),h(23,"th",19),p(24),b(25,"translate"),u()(),ve(26,rPe,18,9,"tr",null,Br().trackTpId,!0),u()),2&t){const e=v(2);d(3),M(y(4,8,"network-transports.tp-id")),d(3),M(y(7,10,"network-transports.type")),d(3),M(y(10,12,"network-transports.edge-a")),d(3),M(y(13,14,"network-transports.edge-b")),d(3),M(y(16,16,"network-transports.sent")),d(3),M(y(19,18,"network-transports.recv")),d(3),M(y(22,20,"network-transports.total")),d(3),M(y(25,22,"network-transports.latency")),d(2),ye(e.byTransport)}}function aPe(t,n){if(1&t&&(h(0,"span",35),p(1),u()),2&t){const e=v().$implicit,i=v(5);C("matTooltip",i.fmtLatencyFull(e.latency)),d(),M(i.fmtLatency(e.latency))}}function lPe(t,n){if(1&t&&(h(0,"div",29)(1,"span",30),p(2),u(),h(3,"span",31),p(4),u(),h(5,"span",32),p(6),u(),h(7,"span",33),p(8,"\u2192"),u(),h(9,"span",34),p(10),u(),h(11,"span",27),p(12),u(),h(13,"span",27),p(14),u(),h(15,"span")(16,"strong"),p(17),u()(),x(18,aPe,2,2,"span",35),u()),2&t){const e=n.$implicit,i=n.$index,o=n.$count,r=v(5);d(2),M(i===o-1?"\u2514\u2500\u2500":"\u251c\u2500\u2500"),d(2),M(e.id),d(2),M(e.type),d(4),M(e.remote),d(2),E("\u2191 ",r.fmtBytes(e.sent)),d(2),E("\u2193 ",r.fmtBytes(e.recv)),d(3),M(r.fmtBytes(e.bandwidth)),d(),S(e.latency&&e.latency.avg?18:-1)}}function cPe(t,n){if(1&t&&(h(0,"div",28),ve(1,lPe,19,8,"div",29,Br().trackChildId,!0),u()),2&t){const e=v().$implicit;d(),ye(e.transports)}}function dPe(t,n){if(1&t){const e=oe();h(0,"div",22)(1,"div",23),F("click",function(){const o=j(e).$implicit;return U(v(3).toggleVisor(o))}),h(2,"mat-icon",24),p(3),u(),h(4,"span",25),p(5),u(),h(6,"span",26)(7,"strong"),p(8),u()(),h(9,"span",27),p(10),u(),h(11,"span",27),p(12),u()(),x(13,cPe,3,0,"div",28),u()}if(2&t){const e=n.$implicit,i=v(3);d(2),C("inline",!0),d(),M(e.expanded?"expand_more":"chevron_right"),d(2),M(e.pk),d(3),M(i.fmtBytes(e.bandwidth)),d(2),gt("\u2191 ",i.fmtBytes(e.sent)," \u2193 ",i.fmtBytes(e.recv)),d(2),E("\xb7 ",e.transports.length," tp"),d(),S(e.expanded?13:-1)}}function uPe(t,n){if(1&t&&(h(0,"div",18),ve(1,dPe,14,8,"div",22,Br().trackVisorPk,!0),u()),2&t){const e=v(2);d(),ye(e.byVisor)}}function hPe(t,n){if(1&t&&(h(0,"div",14)(1,"mat-icon"),p(2,"swap_horiz"),u(),h(3,"span",15),p(4),b(5,"translate"),u(),x(6,oPe,4,7,"span",16),u(),x(7,sPe,28,24,"table",17),x(8,uPe,3,0,"div",18)),2&t){const e=v();d(4),E(" ",pe(5,4,"network-transports.summary",SA(7,tPe,e.rawCount,e.fmtBytes(e.networkBandwidth),e.days))," "),d(2),S(e.lastUpdated?6:-1),d(),S("compact"===e.viewMode?7:-1),d(),S("tree"===e.viewMode?8:-1)}}let fPe=(()=>{class t extends pn{constructor(e,i){super(),this.api=e,this.cdr=i,this.tabsData=[],this.loading=!0,this.error=null,this.lastUpdated=null,this.days=1,this.viewMode="compact",this.rawCount=0,this.networkBandwidth=0,this.byTransport=[],this.byVisor=[],this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"],group:"local"},{icon:"monetization_on",label:"nodes.rewards-title",linkParts:["/nodes","rewards"],group:"local"},{icon:"memory",label:"nodes.resources-title",linkParts:["/nodes","resources"],group:"local"},{icon:"swap_horiz",label:"nodes.transports-title",linkParts:["/nodes","transports"],group:"network"},{icon:"public",label:"nodes.network-title",linkParts:["/nodes","network"],group:"network"},{icon:"bubble_chart",label:"node.details.tpviz.title",linkParts:[],externalUrl:"/tp-viz/",group:"network"},{icon:"check_circle",label:"nodes.services-health-title",linkParts:["/nodes","services-health"],group:"network"},{icon:"settings",label:"settings.title",linkParts:["/settings"]}]}ngOnInit(){return this.sub=Mc(3e5).pipe(si(0),tn(()=>this.fetch())).subscribe(),super.ngOnInit()}ngOnDestroy(){this.sub?.unsubscribe()}refreshNow(){this.fetch().subscribe()}setDays(e){e!==this.days&&(this.days=e,this.fetch().subscribe())}setViewMode(e){this.viewMode=e}toggleVisor(e){e.expanded=!e.expanded}fetch(){return this.loading=0===this.byTransport.length&&0===this.byVisor.length,this.api.get(`network/transports?days=${this.days}`).pipe(Ui(e=>(this.error=e?.message||"Failed to fetch transports",this.loading=!1,this.cdr.markForCheck(),ae(null))),tn(e=>null===e?ae(null):(this.consume(Array.isArray(e)?e:[]),ae(e))))}consume(e){this.rawCount=e.length;let i=0;const o=[],r=new Map;for(const a of e){if(!a.edges||a.edges.length<2)continue;const[l,c]=this.verifiedBandwidth(a),f=l+c;if(i+=f,0===f&&!a.latency)continue;o.push({id:a.id,type:a.type,edge_a:a.edges[0],edge_b:a.edges[1],sent:l,recv:c,bandwidth:f,latency:a.latency});const m=r.get(a.edges[0])||this.newVisorNode(a.edges[0]);m.sent+=l,m.recv+=c,m.bandwidth+=f,m.transports.push({id:a.id,type:a.type,remote:a.edges[1],sent:l,recv:c,bandwidth:f,latency:a.latency}),r.set(a.edges[0],m);const g=r.get(a.edges[1])||this.newVisorNode(a.edges[1]);g.sent+=c,g.recv+=l,g.bandwidth+=f,g.transports.push({id:a.id,type:a.type,remote:a.edges[0],sent:c,recv:l,bandwidth:f,latency:a.latency}),r.set(a.edges[1],g)}o.sort((a,l)=>l.bandwidth-a.bandwidth);const s=Array.from(r.values()).sort((a,l)=>l.bandwidth-a.bandwidth);s.forEach(a=>a.transports.sort((l,c)=>c.bandwidth-l.bandwidth)),this.byTransport=o,this.byVisor=s,this.networkBandwidth=i,this.loading=!1,this.error=null,this.lastUpdated=new Date,this.cdr.markForCheck()}newVisorNode(e){return{pk:e,sent:0,recv:0,bandwidth:0,transports:[],expanded:!1}}verifiedBandwidth(e){let i=0,o=0;for(const r of e.daily||[]){const s=!!r.a&&((r.a.sent||0)>0||(r.a.recv||0)>0),a=!!r.b&&((r.b.sent||0)>0||(r.b.recv||0)>0);s&&a?(i+=Math.min(r.a.sent||0,r.b.recv||0),o+=Math.min(r.a.recv||0,r.b.sent||0)):s?(i+=r.a.sent||0,o+=r.a.recv||0):a&&(i+=r.b.recv||0,o+=r.b.sent||0)}return[i,o]}fmtBytes(e){if(!e||e<0)return"-";const i=["B","KB","MB","GB","TB"];let o=0,r=e;for(;r>=1024&&o0||o.byVisor.length>0?36:-1))},dependencies:[Pn,We,Kt,so,Mr,fa,xe],styles:[".controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:12px;padding:10px 14px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:6px}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] .control-label[_ngcontent-%COMP%]{font-size:.85em;color:#ffffffa6;margin-right:4px}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{min-width:0;padding:0 12px!important;opacity:.6}.controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{opacity:1;background:#2196f32e!important;color:#fff}.controls[_ngcontent-%COMP%] .refresh-btn[_ngcontent-%COMP%]{margin-left:auto}.loading-row[_ngcontent-%COMP%], .error-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:24px 0}.error-row[_ngcontent-%COMP%]{color:#f87171}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.dim[_ngcontent-%COMP%]{color:#fff9}.small[_ngcontent-%COMP%]{font-size:.85em}.mono[_ngcontent-%COMP%]{font-family:monospace;word-break:break-all}.num[_ngcontent-%COMP%]{text-align:right}.nt-compact[_ngcontent-%COMP%]{table-layout:auto}.nt-compact[_ngcontent-%COMP%] td.mono[_ngcontent-%COMP%]{font-size:11px}.nt-compact[_ngcontent-%COMP%] th.num[_ngcontent-%COMP%], .nt-compact[_ngcontent-%COMP%] td.num[_ngcontent-%COMP%]{white-space:nowrap}.nt-tree[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px}.nt-visor[_ngcontent-%COMP%]{background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:4px}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:6px 10px;cursor:pointer;flex-wrap:wrap}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%]:hover{background:#ffffff0a}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .exp[_ngcontent-%COMP%]{color:#fff9}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .nt-pk[_ngcontent-%COMP%]{flex:1 1 320px;min-width:0;font-size:11px;color:#ffffffd9}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .nt-bw[_ngcontent-%COMP%]{font-size:13px}.nt-visor[_ngcontent-%COMP%] .nt-visor-row[_ngcontent-%COMP%] .dim[_ngcontent-%COMP%]{font-size:12px}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%]{padding:4px 12px 8px 36px;display:flex;flex-direction:column;gap:4px}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;padding:2px 0}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-prefix[_ngcontent-%COMP%]{font-family:monospace;color:#ffffff73}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-tp-id[_ngcontent-%COMP%]{font-size:11px;color:#ffffffd9}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-tp-type[_ngcontent-%COMP%]{background:#2196f32e;border:1px solid rgba(33,150,243,.35);padding:0 6px;border-radius:3px;font-size:10px;text-transform:lowercase}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-arrow[_ngcontent-%COMP%]{color:#ffffff73}.nt-visor[_ngcontent-%COMP%] .nt-children[_ngcontent-%COMP%] .nt-child[_ngcontent-%COMP%] .nt-tp-remote[_ngcontent-%COMP%]{font-size:11px;color:#ffffffb3}"]})}}return t})(),pPe=(()=>{class t{constructor(e){this.apiService=e}getSessions(e){return this.apiService.get(`visors/${e}/dmsg/sessions`)}connectAll(e){return this.apiService.post(`visors/${e}/dmsg/connect-all`)}setSessionsCount(e,i){return this.apiService.put(`visors/${e}/dmsg/sessions-count`,{count:i})}static{this.\u0275fac=function(i){return new(i||t)(ce(zi))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function mPe(t,n){1&t&&(h(0,"div",1),B(1,"mat-spinner",3),h(2,"span",4),p(3),b(4,"translate"),u()()),2&t&&(d(),C("diameter",16),d(2),M(y(4,2,"dmsg-settings.loading")))}function gPe(t,n){if(1&t&&(h(0,"div",2)(1,"mat-icon"),p(2,"error_outline"),u(),h(3,"span",4),p(4),u()()),2&t){const e=v();d(4),M(e.error)}}function _Pe(t,n){if(1&t&&(h(0,"span",7),p(1),b(2,"translate"),b(3,"date"),u()),2&t){const e=v(2);d(),gt(" \u2014 ",y(2,2,"dmsg-settings.last-updated"),": ",pe(3,4,e.lastUpdated,"HH:mm:ss")," ")}}function bPe(t,n){1&t&&B(0,"mat-spinner",11),2&t&&C("diameter",14)}function vPe(t,n){1&t&&B(0,"mat-spinner",11),2&t&&C("diameter",14)}function yPe(t,n){if(1&t&&(h(0,"div",19),p(1),b(2,"translate"),u()),2&t){const e=v(3);d(),gt(" ",y(2,2,"dmsg-settings.result-failed"),": ",e.objectKeys(e.lastActionResult.failed).length," ")}}function CPe(t,n){if(1&t&&(h(0,"div",15)(1,"span",18),p(2),u(),p(3),b(4,"translate"),b(5,"translate"),b(6,"translate"),x(7,yPe,3,4,"div",19),u()),2&t){const e=v(2);d(2),E("",e.lastActionLabel,":"),d(),H0(" ",y(4,8,"dmsg-settings.result-total")," ",e.lastActionResult.total,", ",y(5,10,"dmsg-settings.result-already")," ",e.lastActionResult.already_connected,", ",y(6,12,"dmsg-settings.result-new")," ",e.lastActionResult.newly_connected," "),d(4),S(e.lastActionResult.failed&&e.objectKeys(e.lastActionResult.failed).length>0?7:-1)}}function wPe(t,n){if(1&t&&(h(0,"div",26),p(1),u()),2&t){const e=n.$implicit;d(),M(e)}}function xPe(t,n){if(1&t&&(h(0,"div",24),ve(1,wPe,2,1,"div",26,Br().trackByPk,!0),u()),2&t){const e=v().$implicit;d(),ye(e.servers)}}function SPe(t,n){1&t&&(h(0,"div",25),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"dmsg-settings.no-sessions")))}function kPe(t,n){if(1&t&&(h(0,"div",16)(1,"div",20)(2,"span",21),p(3),u(),h(4,"span",22),p(5),b(6,"translate"),u()(),h(7,"div",23),p(8),u(),x(9,xPe,3,0,"div",24)(10,SPe,3,3,"div",25),u()),2&t){const e=n.$implicit,i=v(2);d(3),M(i.roleLabel(e.role)),d(2),gt("",e.count," ",y(6,5,"dmsg-settings.sessions")),d(3),M(e.pk),d(),S(e.servers&&e.servers.length>0?9:10)}}function DPe(t,n){1&t&&(h(0,"div",17)(1,"div",25),p(2),b(3,"translate"),u()()),2&t&&(d(2),M(y(3,1,"dmsg-settings.no-clients")))}function MPe(t,n){if(1&t){const e=oe();h(0,"div",5)(1,"mat-icon"),p(2,"hub"),u(),h(3,"span",6),p(4),b(5,"translate"),u(),x(6,_Pe,4,7,"span",7),u(),h(7,"div",8)(8,"div",9)(9,"button",10),F("click",function(){return j(e),U(v().connectAll())}),x(10,bPe,1,1,"mat-spinner",11),p(11),b(12,"translate"),u()(),h(13,"span",12),p(14,"|"),u(),h(15,"div",9)(16,"label",13),p(17),b(18,"translate"),u(),h(19,"input",14),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.sessionsCountInput,o)||(r.sessionsCountInput=o),U(o)}),u(),h(20,"button",10),F("click",function(){return j(e),U(v().applySessionsCount())}),x(21,vPe,1,1,"mat-spinner",11),p(22),b(23,"translate"),u()()(),x(24,CPe,8,14,"div",15),ve(25,kPe,11,7,"div",16,Br().trackByRole,!0),x(27,DPe,4,3,"div",17)}if(2&t){const e=v();d(4),M(y(5,13,"dmsg-settings.summary")),d(2),S(e.lastUpdated?6:-1),d(3),C("disabled",e.connectAllInFlight||e.setCountInFlight),d(),S(e.connectAllInFlight?10:-1),d(),E(" ",y(12,15,"dmsg-settings.connect-all")," "),d(6),E("",y(18,17,"dmsg-settings.sessions-count-label"),":"),d(2),Ut("ngModel",e.sessionsCountInput),C("disabled",e.setCountInFlight||e.connectAllInFlight),d(),C("disabled",e.setCountInFlight||e.connectAllInFlight),d(),S(e.setCountInFlight?21:-1),d(),E(" ",y(23,19,"dmsg-settings.apply-count")," "),d(2),S(e.lastActionResult?24:-1),d(),ye(e.clientList()),d(2),S(0===e.clientList().length?27:-1)}}let TPe=(()=>{class t extends pn{constructor(e,i){super(),this.dmsgSvc=e,this.snackbar=i,this.pk="",this.sessions=null,this.loading=!0,this.error=null,this.lastUpdated=null,this.sessionsCountInput=0,this.connectAllInFlight=!1,this.setCountInFlight=!1,this.lastActionResult=null,this.lastActionLabel=""}ngOnInit(){return this.nodeSub=ke.currentNode.subscribe(e=>{const i=!this.pk;this.pk=e?.localPk||"",i&&this.pk&&this.startPolling()}),super.ngOnInit()}ngOnDestroy(){this.nodeSub?.unsubscribe(),this.pollSub?.unsubscribe()}startPolling(){this.pollSub=Mc(2e4).pipe(si(0),tn(()=>this.dmsgSvc.getSessions(this.pk))).subscribe({next:e=>{this.sessions=e||{},this.loading=!1,this.error=null,this.lastUpdated=new Date},error:e=>{this.loading=!1,this.error=e?.message||"Failed to fetch dmsg sessions"}})}refresh(){this.pk&&this.dmsgSvc.getSessions(this.pk).subscribe({next:e=>{this.sessions=e||{},this.lastUpdated=new Date},error:()=>{}})}connectAll(){this.connectAllInFlight||!this.pk||(this.connectAllInFlight=!0,this.lastActionResult=null,this.dmsgSvc.connectAll(this.pk).subscribe({next:e=>{this.connectAllInFlight=!1,this.lastActionResult=e,this.lastActionLabel="Connect to all",this.snackbar.showDone(`Opened ${e.newly_connected} new session(s); already had ${e.already_connected}.`),this.refresh()},error:e=>{this.connectAllInFlight=!1,this.snackbar.showError(`connect-all failed: ${e?.message||"unknown error"}`)}}))}applySessionsCount(){if(!this.setCountInFlight&&this.pk){if(this.sessionsCountInput<0)return void this.snackbar.showError("Sessions count must be >= 0");this.setCountInFlight=!0,this.lastActionResult=null,this.dmsgSvc.setSessionsCount(this.pk,this.sessionsCountInput).subscribe({next:e=>{this.setCountInFlight=!1,this.lastActionResult=e,this.lastActionLabel=`Set sessions_count = ${this.sessionsCountInput}`,this.snackbar.showDone(`Persisted sessions_count=${this.sessionsCountInput}; opened ${e.newly_connected} new session(s).`),this.refresh()},error:e=>{this.setCountInFlight=!1,this.snackbar.showError(`set-sessions failed: ${e?.message||"unknown error"}`)}})}}clientList(){const e=[];return this.sessions&&(this.sessions.main&&e.push(this.sessions.main),this.sessions.route_setup&&e.push(this.sessions.route_setup),this.sessions.transport_setup&&e.push(this.sessions.transport_setup)),e}roleLabel(e){switch(e){case"main":return"Main visor";case"route_setup":return"Route Setup Node";case"transport_setup":return"Transport Setup Node";default:return e}}trackByRole(e,i){return i.role}trackByPk(e,i){return i}objectKeys(e){return e?Object.keys(e):[]}static{this.\u0275fac=function(i){return new(i||t)(O(pPe),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-dmsg-settings"]],standalone:!1,features:[be],decls:4,vars:3,consts:[[1,"dmsg-tab-body"],[1,"loading-row"],[1,"error-row"],[3,"diameter"],[1,"ml-2"],[1,"summary-line"],[1,"ml-1"],[1,"last-updated"],[1,"actions","mt-3"],[1,"action-group"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"d-inline-block","mr-2",3,"diameter"],[1,"divider"],["for","sessions-count"],["id","sessions-count","type","number","min","0","max","99",3,"ngModelChange","ngModel","disabled"],[1,"action-result"],[1,"client-card"],[1,"client-card","missing"],[1,"result-label"],[1,"result-failed"],[1,"client-header"],[1,"role"],[1,"count"],[1,"client-pk"],[1,"server-list"],[1,"empty"],[1,"server"]],template:function(i,o){1&i&&(h(0,"div",0),x(1,mPe,5,4,"div",1),x(2,gPe,5,1,"div",2),x(3,MPe,28,21),u()),2&i&&(d(),S(o.loading&&!o.sessions?1:-1),d(),S(o.error&&!o.sessions?2:-1),d(),S(o.sessions?3:-1))},dependencies:[Gt,rc,qt,tp,sv,Pn,We,cu,so,fa,xe],styles:['@charset "UTF-8";.dmsg-tab-body[_ngcontent-%COMP%]{margin-top:1.5rem}.loading-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffbf;padding:24px 0}.error-row[_ngcontent-%COMP%]{display:flex;align-items:center;color:#f87171;padding:24px 0}.summary-line[_ngcontent-%COMP%]{display:flex;align-items:center;color:#ffffffe6;font-size:.95em}.summary-line[_ngcontent-%COMP%] .last-updated[_ngcontent-%COMP%]{color:#ffffff8c;font-size:.85em;margin-left:8px}.actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:16px 0 24px;padding:14px 16px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:6px}.actions[_ngcontent-%COMP%] .action-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.actions[_ngcontent-%COMP%] .action-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{color:#ffffffbf;font-size:.9em}.actions[_ngcontent-%COMP%] .action-group[_ngcontent-%COMP%] input[type=number][_ngcontent-%COMP%]{width:72px;background:#ffffff14;border:1px solid rgba(255,255,255,.15);color:#fff;padding:4px 8px;border-radius:4px;font-size:.95em}.actions[_ngcontent-%COMP%] .divider[_ngcontent-%COMP%]{color:#ffffff40;padding:0 6px}.action-result[_ngcontent-%COMP%]{margin:8px 0 20px;padding:10px 14px;background:#4ade8014;border-left:3px solid #4ade80;border-radius:4px;font-size:.9em;color:#ffffffe6}.action-result[_ngcontent-%COMP%] .result-label[_ngcontent-%COMP%]{font-weight:600;margin-right:8px}.action-result[_ngcontent-%COMP%] .result-failed[_ngcontent-%COMP%]{color:#f87171;margin-top:4px;font-size:.85em}.client-card[_ngcontent-%COMP%]{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:14px 16px;margin-bottom:14px}.client-card[_ngcontent-%COMP%] .client-header[_ngcontent-%COMP%]{display:flex;align-items:baseline;margin-bottom:10px;gap:10px}.client-card[_ngcontent-%COMP%] .client-header[_ngcontent-%COMP%] .role[_ngcontent-%COMP%]{font-size:1.1em;font-weight:600;color:#fff}.client-card[_ngcontent-%COMP%] .client-header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%]{color:#ffffffa6;font-size:.85em}.client-card[_ngcontent-%COMP%] .client-pk[_ngcontent-%COMP%]{font-family:monospace;font-size:.8em;color:#ffffff8c;margin-bottom:10px;word-break:break-all}.client-card[_ngcontent-%COMP%] .server-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:3px}.client-card[_ngcontent-%COMP%] .server-list[_ngcontent-%COMP%] .server[_ngcontent-%COMP%]{font-family:monospace;font-size:.82em;color:#ffffffd9;padding:2px 0}.client-card[_ngcontent-%COMP%] .server-list[_ngcontent-%COMP%] .server[_ngcontent-%COMP%]:before{content:"\\2022";margin-right:8px;color:#4ade80}.client-card[_ngcontent-%COMP%] .empty[_ngcontent-%COMP%]{color:#ffffff80;font-size:.9em;font-style:italic}.client-card.missing[_ngcontent-%COMP%]{opacity:.55}']})}}return t})();function EPe(t,n){if(1&t&&B(0,"app-node-app-list",0),2&t){const e=v();C("apps",e.apps)("showShortList",!1)("nodePK",e.nodePK)}}let PPe=(()=>{class t extends pn{ngOnInit(){return this.dataSubscription=ke.currentNode.subscribe(e=>{this.nodePK=e.localPk,this.apps=e.apps}),super.ngOnInit()}ngOnDestroy(){this.dataSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})()}static{this.\u0275cmp=re({type:t,selectors:[["app-all-apps"]],standalone:!1,features:[be],decls:1,vars:1,consts:[[3,"apps","showShortList","nodePK"]],template:function(i,o){1&i&&x(0,EPe,1,3,"app-node-app-list",0),2&i&&S(o.apps?0:-1)},dependencies:[a6],encapsulation:2})}}return t})();const xD=t=>({time:t}),IPe=(t,n)=>({"latency-high":t,"latency-very-high":n}),OPe=(t,n)=>n.name;function APe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),b(3,"translate"),u(),B(4,"app-copy-to-clipboard-text",8),u()),2&t){const e=v(2);d(2),E("",y(3,3,"node.details.node-info.public-ip")," "),d(2),C("text",Qt(e.node.publicIp))}}function RPe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),b(3,"translate"),u(),B(4,"app-copy-to-clipboard-text",8),u()),2&t){const e=v(2);d(2),E("",y(3,3,"node.details.node-info.ip")," "),d(2),C("text",Qt(e.node.ip))}}function FPe(t,n){1&t&&(p(0),b(1,"translate")),2&t&>(" ",v(2).node.dmsgServers.length," ",y(1,2,"node.details.node-info.connected")," ")}function NPe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"node.details.node-info.no-dmsg-server")," ")}function LPe(t,n){if(1&t&&(h(0,"span",16),p(1),u()),2&t){const e=v().$implicit,i=v(3);C("ngClass",_t(2,IPe,e.latency>3e8,e.latency>8e8)),d(),E(" ",i.formatLatency(e.latency)," ")}}function BPe(t,n){if(1&t&&(h(0,"div",15),B(1,"app-copy-to-clipboard-text",8),x(2,LPe,2,5,"span",16),u()),2&t){const e=n.$implicit;d(),C("text",Qt(e.pk)),d(),S(e.latency>0?2:-1)}}function VPe(t,n){if(1&t&&(h(0,"div",9),ve(1,BPe,3,3,"div",15,Fe),u()),2&t){const e=v(2);d(),ye(e.node.dmsgServers)}}function HPe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),b(3,"translate"),u(),p(4),u()),2&t){const e=v(2);d(2),E("",y(3,2,"node.details.node-info.skybian-version")," "),d(2),E(" ",e.node.skybianBuildVersion," ")}}function jPe(t,n){if(1&t&&(h(0,"mat-icon",10),b(1,"translate"),p(2," info "),u()),2&t){const e=v(2);C("inline",!0)("matTooltip",pe(1,2,"node.details.node-info.time.minutes",se(5,xD,e.timeOnline.totalMinutes)))}}function UPe(t,n){if(1&t&&(h(0,"span",3)(1,"span",4),p(2),u(),p(3),u()),2&t){const e=n.$implicit;d(2),E("",e.name,": "),d(),E(" ",e.value," ")}}function zPe(t,n){1&t&&ve(0,UPe,4,2,"span",3,OPe),2&t&&ye(v(3).ports)}function $Pe(t,n){if(1&t){const e=oe();B(0,"div",11),h(1,"div",1)(2,"span",12),F("click",function(){j(e);const o=v(2);return U(o.showPorts=!o.showPorts)}),h(3,"mat-icon",13),p(4),u(),p(5),b(6,"translate"),h(7,"span",17),p(8),u()(),x(9,zPe,2,0),u()}if(2&t){const e=v(2);d(3),C("inline",!0),d(),M(e.showPorts?"expand_more":"chevron_right"),d(),E(" ",y(6,5,"node.details.ports.title")," "),d(3),E("(",e.ports.length,")"),d(),S(e.showPorts?9:-1)}}function WPe(t,n){if(1&t&&(h(0,"pre",14),p(1),u()),2&t){const e=v(2);d(),M(e.rawConfig)}}function GPe(t,n){if(1&t){const e=oe();h(0,"div",0)(1,"div",1)(2,"span",2),p(3),b(4,"translate"),u(),h(5,"span",3)(6,"span",4),p(7),b(8,"translate"),u(),h(9,"span",5),F("click",function(){return j(e),U(v().showEditLabelDialog())}),h(10,"span",6),p(11),u(),h(12,"mat-icon",7),p(13,"edit"),u()()(),h(14,"span",3)(15,"span",4),p(16),b(17,"translate"),u(),B(18,"app-copy-to-clipboard-text",8),u(),h(19,"span",3)(20,"span",4),p(21),b(22,"translate"),u(),p(23),b(24,"translate"),u(),x(25,APe,5,5,"span",3),x(26,RPe,5,5,"span",3),h(27,"span",3)(28,"span",4),p(29),b(30,"translate"),u(),x(31,FPe,2,4),x(32,NPe,2,3),u(),x(33,VPe,3,0,"div",9),h(34,"span",3)(35,"span",4),p(36),b(37,"translate"),u(),p(38),b(39,"translate"),u(),h(40,"span",3)(41,"span",4),p(42),b(43,"translate"),u(),p(44),b(45,"translate"),u(),h(46,"span",3)(47,"span",4),p(48),b(49,"translate"),u(),p(50),b(51,"translate"),u(),h(52,"span",3)(53,"span",4),p(54),b(55,"translate"),u(),p(56),b(57,"translate"),u(),h(58,"span",3)(59,"span",4),p(60),b(61,"translate"),u(),p(62),b(63,"translate"),u(),x(64,HPe,5,4,"span",3),h(65,"span",3)(66,"span",4),p(67),b(68,"translate"),u(),p(69),b(70,"translate"),x(71,jPe,3,7,"mat-icon",10),u()(),x(72,$Pe,10,7),B(73,"div",11),h(74,"div",1)(75,"span",12),F("click",function(){return j(e),U(v().onConfigToggle())}),h(76,"mat-icon",13),p(77),u(),p(78),b(79,"translate"),u(),x(80,WPe,2,1,"pre",14),u()()}if(2&t){const e=v();d(3),M(y(4,34,e.node.isHypervisor?"node.details.node-info.title-local":"node.details.node-info.title")),d(4),E("",y(8,36,"node.details.node-info.label")," "),d(4),M(e.node.label),d(),C("inline",!0),d(4),E("",y(17,38,"node.details.node-info.public-key")," "),d(2),C("text",Qt(e.node.localPk)),d(3),E("",y(22,40,"node.details.node-info.symmetic-nat")," "),d(2),E(" ",y(24,42,e.node.isSymmeticNat?"common.yes":"common.no")," "),d(2),S(e.node.isSymmeticNat?-1:25),d(),S(e.node.ip?26:-1),d(3),E("",y(30,44,"node.details.node-info.dmsg-servers")," "),d(2),S(e.node.dmsgServers&&e.node.dmsgServers.length>0?31:-1),d(),S(e.node.dmsgServers&&0!==e.node.dmsgServers.length?-1:32),d(),S(e.node.dmsgServers&&e.node.dmsgServers.length>0?33:-1),d(3),E("",y(37,46,"node.details.node-info.ping")," "),d(2),E(" ",pe(39,48,"common.time-in-ms",se(74,xD,e.node.roundTripPing))," "),d(4),E("",y(43,51,"node.details.node-info.node-version")," "),d(2),E(" ",e.node.version?e.node.version:y(45,53,"common.unknown")," "),d(4),E("",y(49,55,"node.details.node-info.config-version")," "),d(2),E(" ",e.node.configVersion?e.node.configVersion:y(51,57,"common.unknown")," "),d(4),E("",y(55,59,"node.details.node-info.os")," "),d(2),E(" ",e.node.os?e.node.os:y(57,61,"common.unknown")," "),d(4),E("",y(61,63,"node.details.node-info.arch")," "),d(2),E(" ",e.node.arch?e.node.arch:y(63,65,"common.unknown")," "),d(2),S(e.node.skybianBuildVersion?64:-1),d(3),E("",y(68,67,"node.details.node-info.time.title")," "),d(2),E(" ",pe(70,69,"node.details.node-info.time."+e.timeOnline.translationVarName,se(76,xD,e.timeOnline.elapsedTime))," "),d(2),S(e.timeOnline.totalMinutes>60?71:-1),d(),S(e.ports.length>0?72:-1),d(4),C("inline",!0),d(),M(e.showConfigSection?"expand_more":"chevron_right"),d(),E(" ",y(79,72,"node.details.config.title")," "),d(2),S(e.showConfigSection&&e.rawConfig?80:-1)}}let qPe=(()=>{class t{set nodeInfo(e){this.node=e,this.timeOnline=gv.getElapsedTime(e.secondsOnline),this.fetchPorts(e.localPk)}constructor(e,i,o,r){this.dialog=e,this.storageService=i,this.snackbarService=o,this.apiService=r,this.ports=[],this.showPorts=!1,this.rawConfig="",this.showConfigSection=!1}ngOnDestroy(){}showEditLabelDialog(){let e=this.storageService.getLabelInfo(this.node.localPk);e||(e={id:this.node.localPk,label:"",identifiedElementType:ro.Node}),wk.openDialog(this.dialog,e).afterClosed().subscribe(i=>{i&&ke.refreshCurrentDisplayedData()})}hasDmsgServer(){return!(!this.node||0===this.node.dmsgServerPk.replace(/0/g,"").length)}formatLatency(e){const i=e/1e6;return i<10?i.toFixed(2)+"ms":Math.round(i)+"ms"}fetchPorts(e){this.apiService.get(`visors/${e}/ports`).subscribe(i=>{this.ports=i&&"object"==typeof i?Object.entries(i).map(([o,r])=>({name:o,value:JSON.stringify(r)})):[]},()=>{this.ports=[]})}onConfigToggle(){this.showConfigSection=!this.showConfigSection,this.showConfigSection&&!this.rawConfig&&this.apiService.get(`visors/${this.node.localPk}/runtime-config`).subscribe(e=>{this.rawConfig=JSON.stringify(e,null,2)},()=>{this.snackbarService.showError("common.loading-error")})}static{this.\u0275fac=function(i){return new(i||t)(O(Ot),O(ti),O(ct),O(zi))}}static{this.\u0275cmp=re({type:t,selectors:[["app-node-info-content"]],inputs:{nodeInfo:"nodeInfo"},standalone:!1,decls:1,vars:1,consts:[[1,"font-smaller","d-flex","flex-column","mt-4.5"],[1,"d-flex","flex-column"],[1,"section-title"],[1,"info-line"],[1,"title"],[1,"highlight-internal-icon",3,"click"],[1,"text-with-small-right-margin"],[1,"edit-icon",3,"inline"],[3,"text"],[1,"dmsg-servers-list"],[3,"inline","matTooltip"],[1,"separator"],[1,"section-title","collapsible-header",2,"cursor","pointer",3,"click"],[3,"inline"],[1,"raw-config"],[1,"dmsg-server-item"],[1,"dmsg-latency",3,"ngClass"],[1,"count-badge"]],template:function(i,o){1&i&&x(0,GPe,81,78,"div",0),2&i&&S(o.node?0:-1)},dependencies:[$t,We,Kt,op,xe],styles:[".section-title[_ngcontent-%COMP%]{font-size:1rem;font-weight:700;text-transform:uppercase;color:#00d4ff;text-shadow:0 0 10px rgba(0,212,255,.5),0 0 20px rgba(0,212,255,.3);letter-spacing:1px;margin-bottom:8px}.info-table[_ngcontent-%COMP%]{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;align-items:baseline;margin-top:8px}.info-table[_ngcontent-%COMP%] .info-label[_ngcontent-%COMP%]{opacity:.7;white-space:nowrap;font-size:.9em}.info-table[_ngcontent-%COMP%] .info-value[_ngcontent-%COMP%]{word-break:break-word}.info-line[_ngcontent-%COMP%]{word-break:break-word;margin-top:7px;display:flex;align-items:baseline;gap:6px}.info-line[_ngcontent-%COMP%] .text-with-right-margin[_ngcontent-%COMP%]{margin-right:5px}.info-line[_ngcontent-%COMP%] .text-with-small-right-margin[_ngcontent-%COMP%]{margin-right:3px}.info-line[_ngcontent-%COMP%] .link-icon[_ngcontent-%COMP%]{font-size:20px;line-height:1;color:#fff!important;cursor:pointer}.info-line[_ngcontent-%COMP%] .edit-icon[_ngcontent-%COMP%]{display:inline!important}.info-line[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:3px;-webkit-user-select:none;user-select:none}.info-line[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{margin-left:7px}.info-line[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{opacity:.7;white-space:nowrap;min-width:120px;font-size:.9em}.separator[_ngcontent-%COMP%]{width:100%;height:0px;margin:1rem 0;border-top:1px solid rgba(255,255,255,.15);opacity:.5}.config-button-container[_ngcontent-%COMP%]{margin-top:10px;margin-left:-4px}.dmsg-servers-list[_ngcontent-%COMP%]{margin-left:0;margin-top:8px;display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:#00d4ff0d;border-radius:6px;border-left:2px solid rgba(0,212,255,.3)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%]{font-family:Consolas,Monaco,Courier New,monospace;font-size:.82em;display:flex;align-items:center;gap:10px;padding:4px 0;color:#fffffff2;transition:all .2s ease}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%]:hover{color:#00d4ff;text-shadow:0 0 8px rgba(0,212,255,.4)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%] .dmsg-latency[_ngcontent-%COMP%]{color:#4ade80;font-weight:500;font-size:.95em;text-shadow:0 0 6px rgba(74,222,128,.3)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%] .dmsg-latency.latency-high[_ngcontent-%COMP%]{color:#fbbf24;text-shadow:0 0 6px rgba(251,191,36,.3)}.dmsg-servers-list[_ngcontent-%COMP%] .dmsg-server-item[_ngcontent-%COMP%] .dmsg-latency.latency-very-high[_ngcontent-%COMP%]{color:#f87171;text-shadow:0 0 6px rgba(248,113,113,.3)}.glow-value[_ngcontent-%COMP%]{color:#e0f2fe;text-shadow:0 0 4px rgba(224,242,254,.2)}.status-online[_ngcontent-%COMP%]{color:#4ade80;text-shadow:0 0 8px rgba(74,222,128,.5)}.status-offline[_ngcontent-%COMP%]{color:#f87171;text-shadow:0 0 8px rgba(248,113,113,.5)}.raw-config[_ngcontent-%COMP%]{margin-top:10px;padding:12px;background:#0000004d;border:1px solid rgba(0,212,255,.2);border-radius:6px;font-family:Consolas,Monaco,Courier New,monospace;font-size:.8em;color:#ffffffe6;overflow-x:auto;max-height:400px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.sub-health[_ngcontent-%COMP%]{padding-left:12px;font-size:.9em;color:#ffffffd9}.collapsible-header[_ngcontent-%COMP%]{display:flex;align-items:center;-webkit-user-select:none;user-select:none}.collapsible-header[_ngcontent-%COMP%]:hover{color:#a5b4fc}.collapsible-header[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:4px;font-size:18px;width:18px;height:18px}.collapsible-header[_ngcontent-%COMP%] .count-badge[_ngcontent-%COMP%]{margin-left:6px;color:#ffffff8c;font-weight:400;font-size:.85em}.transport-stats[_ngcontent-%COMP%]{color:#ffffffd9}.transport-stats[_ngcontent-%COMP%] .transport-type[_ngcontent-%COMP%]{color:#a5b4fc;font-weight:500}.transport-stats[_ngcontent-%COMP%] .transport-count[_ngcontent-%COMP%]{color:#4ade80;font-weight:600}.inline-edit-btn[_ngcontent-%COMP%]{margin-left:4px;height:24px;width:24px;line-height:24px;opacity:.7}.inline-edit-btn[_ngcontent-%COMP%]:hover{opacity:1}.toggle-line[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.toggle-line[_ngcontent-%COMP%] .info-tip[_ngcontent-%COMP%]{opacity:.5;font-size:16px;cursor:help}.inline-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;margin-top:6px;margin-bottom:6px}.inline-form[_ngcontent-%COMP%] .inline-form-field[_ngcontent-%COMP%]{width:100%}.inline-form[_ngcontent-%COMP%] .inline-form-field-sm[_ngcontent-%COMP%]{width:120px}.inline-form[_ngcontent-%COMP%] .inline-form-actions[_ngcontent-%COMP%]{display:flex;gap:8px}.collapsible-link[_ngcontent-%COMP%]{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:4px;margin-top:6px;opacity:.8}.collapsible-link[_ngcontent-%COMP%]:hover{opacity:1}.reward-rules[_ngcontent-%COMP%]{background:#00000040;padding:8px 10px;margin:6px 0;font-size:12px;max-height:360px;overflow:auto;white-space:pre-wrap;word-break:break-word}"]})}}return t})(),KPe=(()=>{class t extends pn{ngOnInit(){return this.nodeSubscription=ke.currentNode.subscribe(e=>{this.node=e}),super.ngOnInit()}ngOnDestroy(){this.nodeSubscription.unsubscribe()}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=ht(t)))(o||t)}})()}static{this.\u0275cmp=re({type:t,selectors:[["app-node-info"]],standalone:!1,features:[be],decls:1,vars:1,consts:[[3,"nodeInfo"]],template:function(i,o){1&i&&B(0,"app-node-info-content",0),2&i&&C("nodeInfo",o.node)},dependencies:[qPe],encapsulation:2})}}return t})();const YPe=()=>[];function XPe(t,n){1&t&&(h(0,"div",6),B(1,"mat-spinner",7),u())}function ZPe(t,n){1&t&&(h(0,"span"),p(1,"open"),u())}function QPe(t,n){1&t&&(h(0,"span"),p(1,"s"),u())}function JPe(t,n){if(1&t&&(h(0,"span"),p(1),it(2,QPe,2,0,"span",5),u()),2&t){const e=v().$implicit;d(),E(" ",e.whitelist.length," PK"),d(),C("ngIf",1!==e.whitelist.length)}}function eIe(t,n){if(1&t){const e=oe();h(0,"button",41),F("click",function(){j(e);const o=v(2).$implicit;return U(v(3).clearWhitelist(o))}),p(1," Clear "),u()}}function tIe(t,n){if(1&t){const e=oe();h(0,"tr",32)(1,"td",33)(2,"div",34)(3,"p",35),p(4," Comma- or whitespace-separated public keys. Empty = accessible to all authenticated peers. "),u(),h(5,"mat-form-field",36)(6,"mat-label"),p(7),u(),h(8,"textarea",37),zt("ngModelChange",function(o){j(e);const r=v(4);return Zt(r.whitelistInput,o)||(r.whitelistInput=o),U(o)}),u()(),h(9,"div",38)(10,"button",22),F("click",function(){j(e);const o=v().$implicit;return U(v(3).saveWhitelist(o))}),h(11,"mat-icon"),p(12,"save"),u(),p(13," Save "),u(),it(14,eIe,2,0,"button",39),h(15,"button",40),F("click",function(){return j(e),U(v(4).cancelEditWhitelist())}),p(16,"Cancel"),u()()()()()}if(2&t){const e=v().$implicit,i=v(3);d(7),E("Allowed PKs for port ",e.port),d(),Ut("ngModel",i.whitelistInput),d(6),C("ngIf",e.whitelist&&e.whitelist.length>0)}}function nIe(t,n){if(1&t){const e=oe();Vr(0),h(1,"tr")(2,"td",25),p(3),u(),h(4,"td",25),p(5),u(),h(6,"td"),p(7),u(),h(8,"td")(9,"mat-checkbox",26),F("change",function(){const o=j(e).$implicit;return U(v(3).toggleSkynet(o))}),u()(),h(10,"td")(11,"mat-checkbox",26),F("change",function(){const o=j(e).$implicit;return U(v(3).toggleDmsg(o))}),u()(),h(12,"td")(13,"mat-checkbox",26),F("change",function(){const o=j(e).$implicit;return U(v(3).toggleLanding(o))}),u()(),h(14,"td")(15,"button",27),F("click",function(){const o=j(e).$implicit;return U(v(3).startEditWhitelist(o))}),it(16,ZPe,2,0,"span",5)(17,JPe,3,2,"span",5),h(18,"mat-icon",28),p(19,"edit"),u()()(),h(20,"td",29)(21,"button",30),F("click",function(){const o=j(e).$implicit;return U(v(3).removePort(o.port))}),h(22,"mat-icon"),p(23,"close"),u()()()(),it(24,tIe,17,3,"tr",31),cr()}if(2&t){const e=n.$implicit,i=v(3);d(3),M(e.port),d(2),M(e.proxy_addr||"localhost:"+(e.local_port||e.port)),d(2),M(e.label||"-"),d(2),C("checked",e.skynet),d(2),C("checked",e.dmsg),d(2),C("checked",e.show_on_landing),d(2),C("matTooltip",(e.whitelist||Ct(10,YPe)).join(", ")||"Open to all peers"),d(),C("ngIf",!e.whitelist||0===e.whitelist.length),d(),C("ngIf",e.whitelist&&e.whitelist.length>0),d(7),C("ngIf",i.editingWhitelistPort===e.port)}}function iIe(t,n){if(1&t&&(h(0,"table",23)(1,"tr")(2,"th"),p(3,"Port"),u(),h(4,"th"),p(5,"Target"),u(),h(6,"th"),p(7,"Label"),u(),h(8,"th"),p(9,"Skynet"),u(),h(10,"th"),p(11,"DMSG"),u(),h(12,"th"),p(13,"Landing"),u(),h(14,"th"),p(15,"Whitelist"),u(),B(16,"th"),u(),it(17,nIe,25,11,"ng-container",24),u()),2&t){const e=v(2);d(17),C("ngForOf",e.ports)}}function oIe(t,n){1&t&&(h(0,"p",42),p(1,"No ports forwarded."),u())}function rIe(t,n){if(1&t){const e=oe();h(0,"div"),it(1,iIe,18,1,"table",8)(2,oIe,2,0,"p",9),h(3,"div",10)(4,"div",11)(5,"mat-form-field",12)(6,"mat-label"),p(7,"Skynet Port"),u(),h(8,"input",13),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newPort,o)||(r.newPort=o),U(o)}),u()(),h(9,"mat-form-field",12)(10,"mat-label"),p(11,"Local Port"),u(),h(12,"input",14),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newLocalPort,o)||(r.newLocalPort=o),U(o)}),u()(),h(13,"mat-form-field",15)(14,"mat-label"),p(15,"Target Address"),u(),h(16,"input",16),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newProxyAddr,o)||(r.newProxyAddr=o),U(o)}),u()(),h(17,"mat-form-field",15)(18,"mat-label"),p(19,"Label"),u(),h(20,"input",17),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newLabel,o)||(r.newLabel=o),U(o)}),u()()(),h(21,"div",11)(22,"mat-form-field",18)(23,"mat-label"),p(24,"Description"),u(),h(25,"input",19),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newDesc,o)||(r.newDesc=o),U(o)}),u()(),h(26,"mat-form-field",18)(27,"mat-label"),p(28,"Whitelist (optional)"),u(),h(29,"textarea",20),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newWhitelist,o)||(r.newWhitelist=o),U(o)}),u()()(),h(30,"div",11)(31,"mat-checkbox",21),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newSkynet,o)||(r.newSkynet=o),U(o)}),p(32,"Skynet"),u(),h(33,"mat-checkbox",21),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newDmsg,o)||(r.newDmsg=o),U(o)}),p(34,"DMSG"),u(),h(35,"mat-checkbox",21),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.newShowLanding,o)||(r.newShowLanding=o),U(o)}),p(36,"Show on landing page"),u(),h(37,"button",22),F("click",function(){return j(e),U(v().addPort())}),h(38,"mat-icon"),p(39,"add"),u(),p(40," Forward "),u()(),h(41,"p",3),p(42," Target Address overrides Local Port \u2014 set it to forward to a host:port elsewhere on the LAN (e.g. "),h(43,"code"),p(44,"192.168.1.20:5432"),u(),p(45,") instead of localhost. Whitelist accepts comma- or whitespace-separated 66-char hex public keys; leave empty to allow all authenticated peers (you can edit the whitelist per-row later, on the table above). "),u()()()}if(2&t){const e=v();d(),C("ngIf",e.ports.length>0),d(),C("ngIf",0===e.ports.length),d(6),Ut("ngModel",e.newPort),d(4),Ut("ngModel",e.newLocalPort),d(4),Ut("ngModel",e.newProxyAddr),d(4),Ut("ngModel",e.newLabel),d(5),Ut("ngModel",e.newDesc),d(4),Ut("ngModel",e.newWhitelist),d(2),Ut("ngModel",e.newSkynet),d(2),Ut("ngModel",e.newDmsg),d(2),Ut("ngModel",e.newShowLanding)}}function sIe(t,n){1&t&&(h(0,"div",6),B(1,"mat-spinner",7),u())}function aIe(t,n){if(1&t){const e=oe();h(0,"tr")(1,"td",25),p(2),u(),h(3,"td",49),p(4),u(),h(5,"td",25),p(6),u(),h(7,"td",25),p(8),u(),h(9,"td",29)(10,"button",50),F("click",function(){const o=j(e).$implicit;return U(v(3).disconnect(o.id))}),h(11,"mat-icon"),p(12,"close"),u()()()()}if(2&t){const e=n.$implicit;d(2),M(e.network||"skynet"),d(2),M(e.remotePK),d(2),M(e.remotePort),d(2),M(e.localPort)}}function lIe(t,n){if(1&t&&(h(0,"table",23)(1,"tr")(2,"th"),p(3,"Network"),u(),h(4,"th"),p(5,"Remote PK"),u(),h(6,"th"),p(7,"Remote Port"),u(),h(8,"th"),p(9,"Local Port"),u(),B(10,"th"),u(),it(11,aIe,13,4,"tr",24),u()),2&t){const e=v(2);d(11),C("ngForOf",e.forwards)}}function cIe(t,n){1&t&&(h(0,"p",42),p(1,"No active reverse proxies."),u())}function dIe(t,n){if(1&t){const e=oe();h(0,"div"),it(1,lIe,12,1,"table",8)(2,cIe,2,0,"p",9),h(3,"div",11)(4,"mat-form-field",12)(5,"mat-label"),p(6,"Network"),u(),h(7,"mat-select",43),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.connectNetwork,o)||(r.connectNetwork=o),U(o)}),h(8,"mat-option",44),p(9,"skynet"),u(),h(10,"mat-option",45),p(11,"dmsg"),u()()(),h(12,"mat-form-field",46)(13,"mat-label"),p(14,"Remote Public Key"),u(),h(15,"input",47),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.connectPK,o)||(r.connectPK=o),U(o)}),u()()(),h(16,"div",11)(17,"mat-form-field",12)(18,"mat-label"),p(19,"Remote Port"),u(),h(20,"input",13),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.connectRemotePort,o)||(r.connectRemotePort=o),U(o)}),u()(),h(21,"mat-form-field",12)(22,"mat-label"),p(23,"Local Port"),u(),h(24,"input",48),zt("ngModelChange",function(o){j(e);const r=v();return Zt(r.connectLocalPort,o)||(r.connectLocalPort=o),U(o)}),u()(),h(25,"button",22),F("click",function(){return j(e),U(v().connect())}),h(26,"mat-icon"),p(27,"link"),u(),p(28," Connect "),u()()()}if(2&t){const e=v();d(),C("ngIf",e.forwards.length>0),d(),C("ngIf",0===e.forwards.length),d(5),Ut("ngModel",e.connectNetwork),d(8),Ut("ngModel",e.connectPK),d(5),Ut("ngModel",e.connectRemotePort),d(4),Ut("ngModel",e.connectLocalPort)}}let uIe=(()=>{class t extends pn{constructor(e,i){super(),this.nodeService=e,this.snackbarService=i,this.ports=[],this.portsLoading=!0,this.newPort="",this.newLocalPort="",this.newProxyAddr="",this.newLabel="",this.newDesc="",this.newWhitelist="",this.newSkynet=!0,this.newDmsg=!0,this.newShowLanding=!0,this.editingWhitelistPort=null,this.whitelistInput="",this.forwards=[],this.forwardsLoading=!0,this.connectNetwork="skynet",this.connectPK="",this.connectRemotePort="",this.connectLocalPort="",this.nodeKey=""}ngOnInit(){return this.nodeKey=ke.getCurrentNodeKey(),this.loadPorts(),this.loadForwards(),super.ngOnInit()}ngOnDestroy(){this.portsSub&&this.portsSub.unsubscribe(),this.fwdsSub&&this.fwdsSub.unsubscribe()}loadPorts(){this.portsLoading=!0,this.portsSub=this.nodeService.getForwardedPorts(this.nodeKey).subscribe(e=>{this.ports=(e||[]).sort((i,o)=>i.port-o.port),this.portsLoading=!1},()=>{this.ports=[],this.portsLoading=!1})}addPort(){const e=parseInt(this.newPort,10);if(isNaN(e)||e<1||e>65535)return void this.snackbarService.showError("Enter a valid port (1-65535)");const i=this.newLocalPort?parseInt(this.newLocalPort,10):0,o=(this.newProxyAddr||"").trim();let r=[];const s=(this.newWhitelist||"").trim();if(""!==s){r=s.split(/[\s,]+/).map(l=>l.trim()).filter(l=>l.length>0);for(const l of r)if(66!==l.length||!/^[0-9a-fA-F]+$/.test(l))return void this.snackbarService.showError(`Invalid public key in whitelist: ${l}`)}this.nodeService.registerForwardedPort(this.nodeKey,{port:e,local_port:i||void 0,proxy_addr:o||void 0,label:this.newLabel,description:this.newDesc,show_on_landing:this.newShowLanding,skynet:this.newSkynet,dmsg:this.newDmsg,whitelist:r.length>0?r:void 0}).subscribe(()=>{this.newPort="",this.newLocalPort="",this.newProxyAddr="",this.newLabel="",this.newDesc="",this.newWhitelist="",this.snackbarService.showDone(`Port ${e} forwarded`),this.loadPorts()},l=>{this.snackbarService.showError(l?.error?.error||"Failed")})}removePort(e){this.nodeService.deregisterSkynetPort(this.nodeKey,e).subscribe(()=>{this.snackbarService.showDone(`Port ${e} removed`),this.loadPorts()},()=>{this.snackbarService.showError("Failed to remove port")})}toggleLanding(e){e.show_on_landing=!e.show_on_landing,this.nodeService.updateForwardedPort(this.nodeKey,e).subscribe(()=>{},()=>{this.snackbarService.showError("Failed to update"),this.loadPorts()})}toggleSkynet(e){e.skynet=!e.skynet,this.nodeService.updateForwardedPort(this.nodeKey,e).subscribe(()=>{},()=>{this.snackbarService.showError("Failed to update"),this.loadPorts()})}toggleDmsg(e){e.dmsg=!e.dmsg,this.nodeService.updateForwardedPort(this.nodeKey,e).subscribe(()=>{},()=>{this.snackbarService.showError("Failed to update"),this.loadPorts()})}startEditWhitelist(e){this.editingWhitelistPort=e.port,this.whitelistInput=(e.whitelist||[]).join(", ")}cancelEditWhitelist(){this.editingWhitelistPort=null,this.whitelistInput=""}saveWhitelist(e){const i=(this.whitelistInput||"").trim();let o=[];if(""!==i){o=i.split(/[\s,]+/).map(s=>s.trim()).filter(s=>s.length>0);for(const s of o)if(66!==s.length||!/^[0-9a-fA-F]+$/.test(s))return void this.snackbarService.showError(`Invalid public key: ${s}`)}const r={...e,whitelist:o};this.nodeService.updateForwardedPort(this.nodeKey,r).subscribe(()=>{this.snackbarService.showDone(0===o.length?`Whitelist cleared on port ${e.port}`:`Whitelist set on port ${e.port} (${o.length} PK${1===o.length?"":"s"})`),this.cancelEditWhitelist(),this.loadPorts()},s=>{this.snackbarService.showError(s?.error?.error||"Failed to update whitelist")})}clearWhitelist(e){const i={...e,whitelist:[]};this.nodeService.updateForwardedPort(this.nodeKey,i).subscribe(()=>{this.snackbarService.showDone(`Whitelist cleared on port ${e.port}`),this.cancelEditWhitelist(),this.loadPorts()},o=>{this.snackbarService.showError(o?.error?.error||"Failed to clear whitelist")})}loadForwards(){this.forwardsLoading=!0,this.fwdsSub=this.nodeService.getSkynetForwards(this.nodeKey).subscribe(e=>{if(this.forwards=[],e)for(const[i,o]of Object.entries(e))this.forwards.push({id:i,network:o.network||"skynet",remotePK:o.remote_pk||"",remotePort:o.remote_port||0,localPort:o.local_port||0});this.forwardsLoading=!1},()=>{this.forwards=[],this.forwardsLoading=!1})}connect(){const e=parseInt(this.connectRemotePort,10),i=parseInt(this.connectLocalPort,10);this.connectPK&&66===this.connectPK.length?isNaN(e)||e<1?this.snackbarService.showError("Enter a valid remote port"):isNaN(i)||i<1?this.snackbarService.showError("Enter a valid local port"):"skynet"===this.connectNetwork||"dmsg"===this.connectNetwork?this.nodeService.skynetConnect(this.nodeKey,this.connectNetwork,this.connectPK,e,i).subscribe(()=>{this.connectPK="",this.connectRemotePort="",this.connectLocalPort="",this.snackbarService.showDone(`Connected via ${this.connectNetwork}: remote ${e} \u2192 localhost:${i}`),this.loadForwards()},o=>{this.snackbarService.showError(o?.error?.error||"Failed")}):this.snackbarService.showError("Network must be skynet or dmsg"):this.snackbarService.showError("Enter a valid public key")}disconnect(e){this.nodeService.skynetDisconnect(this.nodeKey,e).subscribe(()=>{this.snackbarService.showDone("Disconnected"),this.loadForwards()},()=>{this.snackbarService.showError("Failed")})}static{this.\u0275fac=function(i){return new(i||t)(O(Io),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-skynet"]],standalone:!1,features:[be],decls:21,vars:4,consts:[[1,"container-elevated-translucid","mt-4.5","skynet-container"],[1,"section"],[1,"section-title"],[1,"section-desc"],["class","text-center py-2",4,"ngIf"],[4,"ngIf"],[1,"text-center","py-2"],["diameter","24",1,"mx-auto"],["class","data-table",4,"ngIf"],["class","empty-msg",4,"ngIf"],[1,"add-form"],[1,"add-row"],["appearance","outline",1,"field-sm"],["matInput","","placeholder","80","type","number",3,"ngModelChange","ngModel"],["matInput","","placeholder","3000","type","number",3,"ngModelChange","ngModel"],["appearance","outline",1,"field-md"],["matInput","","placeholder","192.168.1.20:5432",3,"ngModelChange","ngModel"],["matInput","","placeholder","My Service",3,"ngModelChange","ngModel"],["appearance","outline",1,"field-lg"],["matInput","","placeholder","Optional description",3,"ngModelChange","ngModel"],["matInput","","rows","2","placeholder","02abc..., 03def... (empty = open to all)",3,"ngModelChange","ngModel"],["color","primary",3,"ngModelChange","ngModel"],["mat-raised-button","","color","primary",3,"click"],[1,"data-table"],[4,"ngFor","ngForOf"],[1,"mono"],["color","primary",3,"change","checked"],["mat-button","",3,"click","matTooltip"],[1,"edit-icon"],[1,"action-col"],["mat-icon-button","","color","warn","matTooltip","Remove",3,"click"],["class","whitelist-edit-row",4,"ngIf"],[1,"whitelist-edit-row"],["colspan","8"],[1,"whitelist-edit"],[1,"whitelist-help"],["appearance","outline",1,"whitelist-input"],["matInput","","rows","3","placeholder","02abc..., 03def...",3,"ngModelChange","ngModel"],[1,"whitelist-actions"],["mat-stroked-button","",3,"click",4,"ngIf"],["mat-button","",3,"click"],["mat-stroked-button","",3,"click"],[1,"empty-msg"],["panelClass","skynet-select-panel",3,"ngModelChange","ngModel"],["value","skynet"],["value","dmsg"],["appearance","outline",1,"field-pk"],["matInput","","placeholder","02abc...",3,"ngModelChange","ngModel"],["matInput","","placeholder","9090","type","number",3,"ngModelChange","ngModel"],[1,"mono","small"],["mat-icon-button","","color","warn","matTooltip","Disconnect",3,"click"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"h4",2),p(3,"Forwarded Ports"),u(),h(4,"p",3),p(5," Expose local TCP ports over skynet and/or DMSG. "),u(),it(6,XPe,2,0,"div",4)(7,rIe,46,11,"div",5),u(),h(8,"div",1)(9,"h4",2),p(10,"Reverse Proxy"),u(),h(11,"p",3),p(12," Map a remote visor's port to a local port. The Network selector picks the transport: "),h(13,"code"),p(14,"skynet"),u(),p(15," goes through the routing layer; "),h(16,"code"),p(17,"dmsg"),u(),p(18," opens a direct DMSG stream. A single forward uses one network at a time. "),u(),it(19,sIe,2,0,"div",4)(20,dIe,29,6,"div",5),u()()),2&i&&(d(6),C("ngIf",o.portsLoading),d(),C("ngIf",!o.portsLoading),d(12),C("ngIf",o.forwardsLoading),d(),C("ngIf",!o.forwardsLoading))},dependencies:[LF,tf,Gt,rc,qt,sn,Os,In,Pn,Wo,We,Kt,cu,Pa,Qr,so,kr],styles:[".skynet-container[_ngcontent-%COMP%]{padding:20px;max-width:900px}.section[_ngcontent-%COMP%]{margin-bottom:28px}.section-title[_ngcontent-%COMP%]{font-size:16px;font-weight:500;margin-bottom:4px}.section-desc[_ngcontent-%COMP%]{color:#fff9;font-size:13px;margin-bottom:16px}.section-desc[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:#ffffff1a;padding:1px 4px;border-radius:3px;font-size:12px}.data-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;margin-bottom:16px}.data-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .data-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:8px 12px;text-align:left;border-bottom:1px solid rgba(255,255,255,.08)}.data-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{color:#ffffff80;font-weight:500;font-size:13px}.data-table[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%]{font-family:monospace}.data-table[_ngcontent-%COMP%] .small[_ngcontent-%COMP%]{font-size:12px;color:#ffffffb3;word-break:break-all}.data-table[_ngcontent-%COMP%] .action-col[_ngcontent-%COMP%]{width:48px;text-align:right}.empty-msg[_ngcontent-%COMP%]{color:#ffffff61;font-style:italic;margin-bottom:16px}.add-form[_ngcontent-%COMP%]{margin-top:8px}.add-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.field-sm[_ngcontent-%COMP%]{width:120px}.field-md[_ngcontent-%COMP%]{width:200px}.field-lg[_ngcontent-%COMP%]{width:300px}.field-pk[_ngcontent-%COMP%]{width:100%;max-width:580px}.edit-icon[_ngcontent-%COMP%]{font-size:14px;width:14px;height:14px;vertical-align:middle;margin-left:4px;opacity:.6}.whitelist-edit-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{background:#ffffff08;padding:12px 16px!important}.whitelist-edit[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.whitelist-help[_ngcontent-%COMP%]{margin:0;color:#fff9;font-size:12px}.whitelist-input[_ngcontent-%COMP%]{width:100%;max-width:720px}.whitelist-actions[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center}[_nghost-%COMP%] .mat-mdc-text-field-wrapper{background:#ffffff14!important}[_nghost-%COMP%] .mdc-text-field--outlined .mdc-notched-outline__leading, [_nghost-%COMP%] .mdc-text-field--outlined .mdc-notched-outline__notch, [_nghost-%COMP%] .mdc-text-field--outlined .mdc-notched-outline__trailing{border-color:#ffffff4d!important}[_nghost-%COMP%] .mat-mdc-input-element, [_nghost-%COMP%] .mdc-text-field__input{color:#fff!important;caret-color:#fff!important}[_nghost-%COMP%] .mdc-floating-label{color:#fff9!important}[_nghost-%COMP%] .mdc-label, [_nghost-%COMP%] .mdc-form-field>label, [_nghost-%COMP%] .mat-mdc-checkbox label{color:#ffffffde!important}"]})}}return t})();const hIe=()=>["settings.title","labels.title"];let fIe=(()=>{class t{constructor(e){this.router=e,this.tabsData=[],this.returnButtonText="settings.title",this.tabsData=[{icon:"view_headline",label:"labels.list-title",linkParts:[]}]}performAction(e){null===e&&this.router.navigate(["settings"])}static{this.\u0275fac=function(i){return new(i||t)(O(vt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-all-labels"]],standalone:!1,decls:5,vars:6,consts:[[1,"row"],[1,"col-12"],[3,"optionSelected","titleParts","tabsData","showUpdateButton","returnText"],[1,"content","col-12"],[3,"showShortList"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"app-top-bar",2),F("optionSelected",function(s){return o.performAction(s)}),u()(),h(3,"div",3),B(4,"app-label-list",4),u()()),2&i&&(d(2),C("titleParts",Ct(5,hIe))("tabsData",o.tabsData)("showUpdateButton",!1)("returnText",o.returnButtonText),d(2),C("showShortList",!1))},dependencies:[Mr,bV],encapsulation:2})}}return t})();const pIe=["firstInput"];function mIe(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.server-list.add-server-dialog.pk-length-error")))}function gIe(t,n){1&t&&(h(0,"span"),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.server-list.add-server-dialog.pk-chars-error")))}let _Ie=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.mediumModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a,l,c){this.dialogRef=e,this.data=i,this.formBuilder=o,this.dialog=r,this.router=s,this.vpnClientService=a,this.vpnSavedDataService=l,this.snackbarService=c}ngOnInit(){this.form=this.formBuilder.group({pk:["",Ne.compose([Ne.required,Ne.minLength(66),Ne.maxLength(66),Ne.pattern("^[0-9a-fA-F]+$")])],password:[""],name:[""],note:[""]}),setTimeout(()=>this.firstInput.nativeElement.focus())}process(){if(!this.form.valid)return;const e={pk:this.form.get("pk").value,name:this.form.get("name").value,note:this.form.get("note").value};hi.processServerChange(this.router,this.vpnClientService,this.vpnSavedDataService,this.snackbarService,this.dialog,this.dialogRef,this.data,null,null,e,this.form.get("password").value)}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(di),O(Ot),O(vt),O(hc),O(uc),O(ct))}}static{this.\u0275cmp=re({type:t,selectors:[["app-add-vpn-server"]],viewQuery:function(i,o){if(1&i&&ot(pIe,5),2&i){let r;he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:34,vars:22,consts:[["firstInput",""],[3,"headline","dialog"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","pk","maxlength","66","matInput",""],["formControlName","password","type","password","matInput",""],["formControlName","name","maxlength","100","matInput",""],["formControlName","note","maxlength","100","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",1),b(1,"translate"),h(2,"form",2)(3,"mat-form-field")(4,"div",3)(5,"label",4),p(6),b(7,"translate"),u(),B(8,"input",5,0),u(),h(10,"mat-error"),x(11,mIe,3,3,"span")(12,gIe,3,3,"span"),u()(),h(13,"mat-form-field")(14,"div",3)(15,"label",4),p(16),b(17,"translate"),u(),B(18,"input",6),u()(),h(19,"mat-form-field")(20,"div",3)(21,"label",4),p(22),b(23,"translate"),u(),B(24,"input",7),u()(),h(25,"mat-form-field")(26,"div",3)(27,"label",4),p(28),b(29,"translate"),u(),B(30,"input",8),u()()(),h(31,"app-button",9),F("action",function(){return o.process()}),p(32),b(33,"translate"),u()()),2&i&&(C("headline",y(1,10,"vpn.server-list.add-server-dialog.title"))("dialog",o.dialogRef),d(2),C("formGroup",o.form),d(4),M(y(7,12,"vpn.server-list.add-server-dialog.pk-label")),d(5),S(o.form.get("pk").hasError("pattern")?12:11),d(5),M(y(17,14,"vpn.server-list.add-server-dialog.password-label")),d(6),M(y(23,16,"vpn.server-list.add-server-dialog.name-label")),d(6),M(y(29,18,"vpn.server-list.add-server-dialog.note-label")),d(3),C("disabled",!o.form.valid),d(),E(" ",y(33,20,"vpn.server-list.add-server-dialog.use-server-button")," "))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,Ma,In,ui,gn,xe],encapsulation:2})}}return t})();class bIe{constructor(){this.countryCode="ZZ"}}let vIe=(()=>{class t{constructor(e){this.http=e,this.discoveryServiceUrl="https://sd.skycoin.com/api/services?type=vpn"}getServers(){return this.servers?ae(this.servers):this.http.get(this.discoveryServiceUrl).pipe(ip(e=>e.pipe(li(4e3))),Se(e=>{const i=[];return e&&e.forEach(o=>{const r=new bIe,s=o.address.split(":");2===s.length&&(r.pk=s[0],r.location="",o.geo&&(o.geo.country&&(r.countryCode=o.geo.country),o.geo.region&&(r.location=o.geo.region)),r.name=s[0],r.note="",i.push(r))}),this.servers=i,i}))}static{this.\u0275fac=function(i){return new(i||t)(ce(ba))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();const p6=()=>["vpn.title"],yIe=t=>({deactivated:t}),qv=(t,n)=>["/vpn",t,"servers",n,1],CIe=t=>({"mb-3":t}),wIe=(t,n)=>({"public-pk-column":t,"history-pk-column":n}),xIe=t=>({"selectable click-effect":t}),SIe=(t,n)=>({custom:t,original:n}),kIe=(t,n)=>["/vpn",t,"servers",n];function DIe(t,n){1&t&&dr(0)}function MIe(t,n){if(1&t&&(h(0,"div",1)(1,"div",3),B(2,"app-top-bar",4),h(3,"div",5)(4,"div",6)(5,"div",7),it(6,DIe,1,0,"ng-container",8),u()()()(),B(7,"app-loading-indicator",9),u()),2&t){const e=v(),i=Hn(2);d(2),C("titleParts",Ct(6,p6))("tabsData",e.tabsData)("selectedTabIndex",1)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),d(4),C("ngTemplateOutlet",i)}}function TIe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),b(3,"translate"),u()()),2&t&&(d(2),M(y(3,1,"vpn.server-list.tabs.public")))}function EIe(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),b(3,"translate"),u()()),2&t){const e=v(2);C("routerLink",_t(4,qv,e.currentLocalPk,e.lists.Public)),d(2),M(y(3,2,"vpn.server-list.tabs.public"))}}function PIe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),b(3,"translate"),u()()),2&t&&(d(2),M(y(3,1,"vpn.server-list.tabs.history")))}function IIe(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),b(3,"translate"),u()()),2&t){const e=v(2);C("routerLink",_t(4,qv,e.currentLocalPk,e.lists.History)),d(2),M(y(3,2,"vpn.server-list.tabs.history"))}}function OIe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),b(3,"translate"),u()()),2&t&&(d(2),M(y(3,1,"vpn.server-list.tabs.favorites")))}function AIe(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),b(3,"translate"),u()()),2&t){const e=v(2);C("routerLink",_t(4,qv,e.currentLocalPk,e.lists.Favorites)),d(2),M(y(3,2,"vpn.server-list.tabs.favorites"))}}function RIe(t,n){1&t&&(h(0,"div",14)(1,"span"),p(2),b(3,"translate"),u()()),2&t&&(d(2),M(y(3,1,"vpn.server-list.tabs.blocked")))}function FIe(t,n){if(1&t&&(h(0,"a",15)(1,"span"),p(2),b(3,"translate"),u()()),2&t){const e=v(2);C("routerLink",_t(4,qv,e.currentLocalPk,e.lists.Blocked)),d(2),M(y(3,2,"vpn.server-list.tabs.blocked"))}}function NIe(t,n){1&t&&B(0,"br")}function LIe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().$implicit.translatableValue)," ")}function BIe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.value," ")}function VIe(t,n){if(1&t&&(h(0,"div",23)(1,"span"),p(2),b(3,"translate"),u(),x(4,LIe,2,3),x(5,BIe,1,1),u()),2&t){const e=n.$implicit;d(2),E("",y(3,3,e.filterName),": "),d(2),S(e.translatableValue?4:-1),d(),S(e.value?5:-1)}}function HIe(t,n){if(1&t){const e=oe();h(0,"div",21),F("click",function(){return j(e),U(v(3).dataFilterer.removeFilters())}),h(1,"div",22)(2,"mat-icon",18),p(3,"search"),u(),p(4),b(5,"translate"),u(),ve(6,VIe,6,5,"div",23,Fe),u()}if(2&t){const e=v(3);d(2),C("inline",!0),d(2),E(" ",y(5,2,"vpn.server-list.current-filters")),d(2),ye(e.dataFilterer.currentFiltersTexts)}}function jIe(t,n){if(1&t&&(x(0,NIe,1,0,"br"),x(1,HIe,8,4,"div",20)),2&t){const e=v(2);S(e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0?0:-1),d(),S(e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0?1:-1)}}function UIe(t,n){if(1&t){const e=oe();h(0,"div",10)(1,"div",11)(2,"div",12)(3,"div",13),x(4,TIe,4,3,"div",14),x(5,EIe,4,7,"a",15),x(6,PIe,4,3,"div",14),x(7,IIe,4,7,"a",15),x(8,OIe,4,3,"div",14),x(9,AIe,4,7,"a",15),x(10,RIe,4,3,"div",14),x(11,FIe,4,7,"a",15),u()()()(),h(12,"div",16)(13,"div",11)(14,"div",12)(15,"div",13)(16,"div",17),b(17,"translate"),F("click",function(){j(e);const o=v();return U(o.dataFilterer?o.dataFilterer.changeFilters():null)}),h(18,"span")(19,"mat-icon",18),p(20,"search"),u()()()()()()(),h(21,"div",19)(22,"div",11)(23,"div",12)(24,"div",13)(25,"div",17),b(26,"translate"),F("click",function(){return j(e),U(v().enterManually())}),h(27,"span")(28,"mat-icon",18),p(29,"add"),u()()()()()()(),x(30,jIe,2,2)}if(2&t){const e=v();d(4),S(e.currentList===e.lists.Public?4:-1),d(),S(e.currentList!==e.lists.Public?5:-1),d(),S(e.currentList===e.lists.History?6:-1),d(),S(e.currentList!==e.lists.History?7:-1),d(),S(e.currentList===e.lists.Favorites?8:-1),d(),S(e.currentList!==e.lists.Favorites?9:-1),d(),S(e.currentList===e.lists.Blocked?10:-1),d(),S(e.currentList!==e.lists.Blocked?11:-1),d(),C("ngClass",se(18,yIe,e.loading)),d(4),C("matTooltip",y(17,14,"filters.filter-info")),d(3),C("inline",!0),d(6),C("matTooltip",y(26,16,"vpn.server-list.add-manually-info")),d(3),C("inline",!0),d(2),S(e.dataFilterer?30:-1)}}function zIe(t,n){1&t&&dr(0)}function $Ie(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=v(5);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function WIe(t,n){if(1&t){const e=oe();h(0,"th",41),b(1,"translate"),F("click",function(){j(e);const o=v(4);return U(o.dataSorter.changeSortingOrder(o.dateSortData))}),h(2,"div",34)(3,"div",35),p(4),b(5,"translate"),u(),x(6,$Ie,2,2,"mat-icon",18),u()()}if(2&t){const e=v(4);C("matTooltip",y(1,3,"vpn.server-list.date-info")),d(4),E(" ",y(5,5,"vpn.server-list.date-small-table-label")," "),d(2),S(e.dataSorter.currentSortingColumn===e.dateSortData?6:-1)}}function GIe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function qIe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function KIe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function YIe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function XIe(t,n){if(1&t&&(h(0,"mat-icon",18),p(1),u()),2&t){const e=v(4);C("inline",!0),d(),M(e.dataSorter.sortingArrow)}}function ZIe(t,n){if(1&t&&(h(0,"td",43),p(1),b(2,"date"),u()),2&t){const e=v().$implicit;d(),E(" ",pe(2,1,e.lastUsed,"yyyy/MM/dd, H:mm a")," ")}}function QIe(t,n){1&t&&p(0),2&t&&E(" ",v().$implicit.location," ")}function JIe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"vpn.server-list.unknown")," ")}function eOe(t,n){if(1&t&&(h(0,"mat-icon",55),b(1,"translate"),F("click",function(i){return i.stopPropagation()}),p(2,"info_outline"),u()),2&t){const e=v().$implicit,i=v(4);C("inline",!0)("matTooltip",pe(1,2,i.getNoteVar(e),_t(5,SIe,e.personalNote,e.note)))}}function tOe(t,n){if(1&t){const e=oe();h(0,"tr",42),F("click",function(){const o=j(e).$implicit,r=v(4);return U(r.currentList!==r.lists.Blocked?r.selectServer(o):null)}),x(1,ZIe,3,4,"td",43),h(2,"td",44)(3,"div",45),B(4,"div",46),u()(),h(5,"td",47),B(6,"app-vpn-server-name",48),u(),h(7,"td",49),x(8,QIe,1,1),x(9,JIe,2,3),u(),h(10,"td",50)(11,"app-copy-to-clipboard-text",51),F("click",function(o){return o.stopPropagation()}),u()(),h(12,"td",52),x(13,eOe,3,8,"mat-icon",53),u(),h(14,"td",39)(15,"button",54),b(16,"translate"),F("click",function(o){const r=j(e).$implicit,s=v(4);return o.stopPropagation(),U(s.openOptions(r))}),h(17,"mat-icon",18),p(18,"settings"),u()()()()}if(2&t){const e=n.$implicit,i=v(4);C("ngClass",se(23,xIe,i.currentList!==i.lists.Blocked)),d(),S(i.currentList===i.lists.History?1:-1),d(3),no("background-image: url('assets/img/big-flags/"+e.countryCode.toLocaleLowerCase()+".png');"),C("matTooltip",i.getCountryName(e.countryCode)),d(2),C("isCurrentServer",i.currentServer&&e.pk===i.currentServer.pk)("isFavorite",e.flag===i.serverFlags.Favorite&&i.currentList!==i.lists.Favorites)("isBlocked",e.flag===i.serverFlags.Blocked&&i.currentList!==i.lists.Blocked)("isInHistory",e.inHistory&&i.currentList!==i.lists.History)("hasPassword",e.usedWithPassword)("name",e.name)("pk",e.pk)("customName",e.customName)("defaultName","vpn.server-list.none"),d(2),S(e.location?8:-1),d(),S(e.location?-1:9),d(2),C("shortSimple",!0)("text",e.pk),d(2),S(e.note||e.personalNote?13:-1),d(2),C("matTooltip",y(16,21,"vpn.server-options.tooltip")),d(2),C("inline",!0)}}function nOe(t,n){if(1&t){const e=oe();h(0,"table",30)(1,"tr"),x(2,WIe,7,7,"th",31),h(3,"th",32),b(4,"translate"),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.countrySortData))}),h(5,"mat-icon",18),p(6,"flag"),u(),x(7,GIe,2,2,"mat-icon",18),u(),h(8,"th",33),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.nameSortData))}),h(9,"div",34)(10,"div",35),p(11),b(12,"translate"),u(),x(13,qIe,2,2,"mat-icon",18),u()(),h(14,"th",36),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.locationSortData))}),h(15,"div",34)(16,"div",35),p(17),b(18,"translate"),u(),x(19,KIe,2,2,"mat-icon",18),u()(),h(20,"th",37),b(21,"translate"),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.pkSortData))}),h(22,"div",34)(23,"div",35),p(24),b(25,"translate"),u(),x(26,YIe,2,2,"mat-icon",18),u()(),h(27,"th",38),b(28,"translate"),F("click",function(){j(e);const o=v(3);return U(o.dataSorter.changeSortingOrder(o.noteSortData))}),h(29,"div",34)(30,"mat-icon",18),p(31,"info_outline"),u(),x(32,XIe,2,2,"mat-icon",18),u()(),B(33,"th",39),u(),ve(34,tOe,19,25,"tr",40,Fe),u()}if(2&t){const e=v(3);d(2),S(e.currentList===e.lists.History?2:-1),d(),C("matTooltip",y(4,15,"vpn.server-list.country-info")),d(2),C("inline",!0),d(2),S(e.dataSorter.currentSortingColumn===e.countrySortData?7:-1),d(4),E(" ",y(12,17,"vpn.server-list.name-small-table-label")," "),d(2),S(e.dataSorter.currentSortingColumn===e.nameSortData?13:-1),d(4),E(" ",y(18,19,"vpn.server-list.location-small-table-label")," "),d(2),S(e.dataSorter.currentSortingColumn===e.locationSortData?19:-1),d(),C("ngClass",_t(27,wIe,e.currentList===e.lists.Public,e.currentList===e.lists.History))("matTooltip",y(21,21,"vpn.server-list.public-key-info")),d(4),E(" ",y(25,23,"vpn.server-list.public-key-small-table-label")," "),d(2),S(e.dataSorter.currentSortingColumn===e.pkSortData?26:-1),d(),C("matTooltip",y(28,25,"vpn.server-list.note-info")),d(3),C("inline",!0),d(2),S(e.dataSorter.currentSortingColumn===e.noteSortData?32:-1),d(2),ye(e.dataSource)}}function iOe(t,n){if(1&t&&(h(0,"div",27)(1,"div",29),x(2,nOe,36,30,"table",30),u()()),2&t){const e=v(2);d(2),S(e.dataSource.length>0?2:-1)}}function oOe(t,n){if(1&t&&B(0,"app-paginator",28),2&t){const e=v(2);C("currentPage",e.currentPage)("numberOfPages",e.numberOfPages)("linkParts",_t(4,kIe,e.currentLocalPk,e.currentList))("queryParams",e.dataFilterer.currentUrlQueryParams)}}function rOe(t,n){1&t&&(h(0,"span",58),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.server-list.empty-discovery")))}function sOe(t,n){1&t&&(h(0,"span",58),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.server-list.empty-history")))}function aOe(t,n){1&t&&(h(0,"span",58),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.server-list.empty-favorites")))}function lOe(t,n){1&t&&(h(0,"span",58),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.server-list.empty-blocked")))}function cOe(t,n){1&t&&(h(0,"span",58),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.server-list.empty-with-filter")))}function dOe(t,n){if(1&t&&(h(0,"div",27)(1,"div",56)(2,"mat-icon",57),p(3,"warning"),u(),x(4,rOe,3,3,"span",58),x(5,sOe,3,3,"span",58),x(6,aOe,3,3,"span",58),x(7,lOe,3,3,"span",58),x(8,cOe,3,3,"span",58),u()()),2&t){const e=v(2);d(2),C("inline",!0),d(2),S(0===e.allServers.length&&e.currentList===e.lists.Public?4:-1),d(),S(0===e.allServers.length&&e.currentList===e.lists.History?5:-1),d(),S(0===e.allServers.length&&e.currentList===e.lists.Favorites?6:-1),d(),S(0===e.allServers.length&&e.currentList===e.lists.Blocked?7:-1),d(),S(0!==e.allServers.length?8:-1)}}function uOe(t,n){if(1&t&&(h(0,"div",2)(1,"div",24),B(2,"app-top-bar",4),u(),h(3,"div",25)(4,"div",6)(5,"div",26),it(6,zIe,1,0,"ng-container",8),u(),x(7,iOe,3,1,"div",27),x(8,oOe,1,7,"app-paginator",28),x(9,dOe,9,6,"div",27),u()()()),2&t){const e=v(),i=Hn(2);d(2),C("titleParts",Ct(10,p6))("tabsData",e.tabsData)("selectedTabIndex",1)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),d(3),C("ngClass",se(11,CIe,!e.dataFilterer.currentFiltersTexts||e.dataFilterer.currentFiltersTexts.length<1)),d(),C("ngTemplateOutlet",i),d(),S(0!==e.dataSource.length?7:-1),d(),S(e.numberOfPages>1?8:-1),d(),S(0===e.dataSource.length?9:-1)}}var pi=function(t){return t.Public="public",t.History="history",t.Favorites="favorites",t.Blocked="blocked",t}(pi||{});let m6=(()=>{class t extends pn{constructor(e,i,o,r,s,a,l,c,f){super(),this.dialog=e,this.router=i,this.translateService=o,this.route=r,this.vpnClientDiscoveryService=s,this.vpnClientService=a,this.vpnSavedDataService=l,this.snackbarService=c,this.storageService=f,this.persistentServerDataResponseKey="serv-dat-response",this.maxFullListElements=50,this.dateSortData=new Dt(["lastUsed"],"vpn.server-list.date-small-table-label",st.NumberReversed),this.countrySortData=new Dt(["countryName"],"vpn.server-list.country-small-table-label",st.Text),this.nameSortData=new Dt(["name"],"vpn.server-list.name-small-table-label",st.Text),this.locationSortData=new Dt(["location"],"vpn.server-list.location-small-table-label",st.Text),this.pkSortData=new Dt(["pk"],"vpn.server-list.public-key-small-table-label",st.Text),this.noteSortData=new Dt(["note"],"vpn.server-list.note-small-table-label",st.Text),this.loading=!0,this.loadingBackendData=!0,this.tabsData=hi.vpnTabsData,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.currentList=pi.Public,this.vpnRunning=!1,this.serverFlags=_n,this.lists=pi,this.initialLoadStarted=!1,this.navigationsSubscription=r.paramMap.subscribe(m=>{if(m.has("type")?m.get("type")===pi.Favorites?(this.currentList=pi.Favorites,this.listId="vfs"):m.get("type")===pi.Blocked?(this.currentList=pi.Blocked,this.listId="vbs"):m.get("type")===pi.History?(this.currentList=pi.History,this.listId="vhs"):(this.currentList=pi.Public,this.listId="vps"):(this.currentList=pi.Public,this.listId="vps"),hi.setDefaultTabForServerList(this.currentList),m.has("key")&&(this.currentLocalPk=m.get("key"),hi.changeCurrentPk(this.currentLocalPk),this.tabsData=hi.vpnTabsData),m.has("page")){let g=Number.parseInt(m.get("page"),10);(isNaN(g)||g<1)&&(g=1),this.currentPageInUrl=g,this.recalculateElementsToShow()}this.initialLoadStarted||(this.initialLoadStarted=!0,this.loadData(!0))}),this.currentServerSubscription=this.vpnSavedDataService.currentServerObservable.subscribe(m=>this.currentServer=m),this.backendDataSubscription=this.vpnClientService.backendState.subscribe(m=>{m&&(this.loadingBackendData=!1,this.vpnRunning=m.vpnClientAppData.running)})}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.currentServerSubscription.unsubscribe(),this.backendDataSubscription.unsubscribe(),this.dataSortedSubscription&&this.dataSortedSubscription.unsubscribe(),this.dataFiltererSubscription&&this.dataFiltererSubscription.unsubscribe(),this.dataSubscription&&this.dataSubscription.unsubscribe(),this.dataFilterer&&this.dataFilterer.dispose(),this.dataSorter&&this.dataSorter.dispose()}enterManually(){_Ie.openDialog(this.dialog,this.currentLocalPk)}getNoteVar(e){return e.note&&e.personalNote?"vpn.server-list.notes-info":!e.note&&e.personalNote?e.personalNote:e.note}selectServer(e){const i=this.vpnSavedDataService.getSavedVersion(e.pk,!0);if(this.snackbarService.closeCurrentIfTemporaryError(),i&&i.flag===_n.Blocked)this.snackbarService.showError("vpn.starting-blocked-server-error",{},!0);else{if(this.currentServer&&this.currentServer.pk===e.pk){if(this.vpnRunning)this.snackbarService.showWarning("vpn.server-change.already-selected-warning");else{const o=Rt.createConfirmationDialog(this.dialog,"vpn.server-change.start-same-server-confirmation");o.componentInstance.operationAccepted.subscribe(()=>{o.componentInstance.closeModal(),this.vpnClientService.start(),hi.redirectAfterServerChange(this.router,null,this.currentLocalPk)})}return}if(i&&i.usedWithPassword)return void sV.openDialog(this.dialog,!0).afterClosed().subscribe(o=>{o&&this.makeServerChange(e,"-"===o?null:o.substr(1))});this.makeServerChange(e,null)}}makeServerChange(e,i){hi.processServerChange(this.router,this.vpnClientService,this.vpnSavedDataService,this.snackbarService,this.dialog,null,this.currentLocalPk,e.originalLocalData,e.originalDiscoveryData,null,i)}openOptions(e){let i=this.vpnSavedDataService.getSavedVersion(e.pk,!0);i||(i=this.vpnSavedDataService.processFromDiscovery(e.originalDiscoveryData)),i?hi.openServerOptions(i,this.router,this.vpnSavedDataService,this.vpnClientService,this.snackbarService,this.dialog).subscribe(o=>{o&&this.processAllServers()}):this.snackbarService.showError("vpn.unexpedted-error")}loadData(e){if(this.currentList===pi.Public){const i=e?this.getLocalValue(this.persistentServerDataResponseKey):null;let o=this.vpnClientDiscoveryService.getServers();i&&(o=ae(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{i||this.saveLocalValue(this.persistentServerDataResponseKey,JSON.stringify(r)),this.allServers=r.map(s=>({countryCode:s.countryCode,countryName:this.getCountryName(s.countryCode),name:s.name,customName:null,location:s.location,pk:s.pk,note:s.note,personalNote:null,originalDiscoveryData:s})),this.vpnSavedDataService.updateFromDiscovery(r),this.loading=!1,this.processAllServers(),i&&this.loadData(!1)})}else{let i;i=this.currentList===pi.History?this.vpnSavedDataService.history:this.currentList===pi.Favorites?this.vpnSavedDataService.favorites:this.vpnSavedDataService.blocked,this.dataSubscription=i.subscribe(o=>{const r=[];o.forEach(s=>{r.push({countryCode:s.countryCode,countryName:this.getCountryName(s.countryCode),name:s.name,customName:null,location:s.location,pk:s.pk,note:s.note,personalNote:null,lastUsed:s.lastUsed,inHistory:s.inHistory,flag:s.flag,originalLocalData:s})}),this.allServers=r,this.loading=!1,this.processAllServers()})}}processAllServers(){this.fillFilterPropertiesArray();const e=new Set;this.allServers.forEach((c,f)=>{e.add(c.countryCode);const m=this.vpnSavedDataService.getSavedVersion(c.pk,0===f);c.customName=m?m.customName:null,c.personalNote=m?m.personalNote:null,c.inHistory=!!m&&m.inHistory,c.flag=m?m.flag:_n.None,c.enteredManually=!!m&&m.enteredManually,c.usedWithPassword=!!m&&m.usedWithPassword});let i=[];e.forEach(c=>{i.push({label:this.getCountryName(c),value:c,image:"/assets/img/big-flags/"+c.toLowerCase()+".png"})}),i.sort((c,f)=>c.label.localeCompare(f.label)),i=[{label:"vpn.server-list.filter-dialog.country-options.any",value:""}].concat(i),this.filterProperties=[{filterName:"vpn.server-list.filter-dialog.country",keyNameInElementsArray:"countryCode",type:Sn.Select,printableLabelsForValues:i,printableLabelGeneralSettings:{defaultImage:"/assets/img/big-flags/unknown.png",imageWidth:20,imageHeight:15}}].concat(this.filterProperties);const r=[];let s,a,l;this.currentList===pi.Public?(r.push(this.countrySortData),r.push(this.nameSortData),r.push(this.locationSortData),r.push(this.pkSortData),r.push(this.noteSortData),s=0,a=1):(this.currentList===pi.History&&r.push(this.dateSortData),r.push(this.countrySortData),r.push(this.nameSortData),r.push(this.locationSortData),r.push(this.pkSortData),r.push(this.noteSortData),s=this.currentList===pi.History?0:1,a=this.currentList===pi.History?2:3),this.dataSorter=new gu(this.dialog,this.translateService,this.storageService,r,s,this.listId),this.dataSorter.setTieBreakerColumnIndex(a),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe(()=>{this.recalculateElementsToShow()}),this.dataFilterer=new _u(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe(c=>{this.filteredServers=c,this.dataSorter.setData(this.filteredServers)}),l=this.currentList===pi.Public?this.allServers.filter(c=>c.flag!==_n.Blocked):this.allServers,this.dataFilterer.setData(l)}fillFilterPropertiesArray(){this.filterProperties=[{filterName:"vpn.server-list.filter-dialog.name",keyNameInElementsArray:"name",secondaryKeyNameInElementsArray:"customName",type:Sn.TextInput,maxlength:100},{filterName:"vpn.server-list.filter-dialog.location",keyNameInElementsArray:"location",type:Sn.TextInput,maxlength:100},{filterName:"vpn.server-list.filter-dialog.public-key",keyNameInElementsArray:"pk",type:Sn.TextInput,maxlength:100}]}recalculateElementsToShow(){if(this.currentPage=this.currentPageInUrl,this.filteredServers){const e=this.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredServers.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);const i=e*(this.currentPage-1);this.serversToShow=this.filteredServers.slice(i,i+e)}else this.serversToShow=null;this.dataSource=this.serversToShow}getCountryName(e){return es[e.toUpperCase()]?es[e.toUpperCase()]:e}static{this.\u0275fac=function(i){return new(i||t)(O(Ot),O(vt),O(Go),O(Ai),O(vIe),O(hc),O(uc),O(ct),O(ti))}}static{this.\u0275cmp=re({type:t,selectors:[["app-vpn-server-list"]],standalone:!1,features:[be],decls:4,vars:2,consts:[["topPart",""],[1,"d-flex","flex-column","h-100","w-100"],[1,"row"],[1,"loading-top-container"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton","localVpnKey"],[1,"main-container"],[1,"width-limiter"],[1,"center-container","mt-4.5"],[4,"ngTemplateOutlet"],[1,"h-100","loading-indicator"],[1,"option-bar-container"],[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","allow-overflow"],[1,"option-bar"],[1,"text-option","selected"],[1,"text-option",3,"routerLink"],[1,"option-bar-container","option-bar-margin",3,"ngClass"],[1,"icon-option",3,"click","matTooltip"],[3,"inline"],[1,"option-bar-container","option-bar-margin"],[1,"filter-label","subtle-transparent-button","cursor-pointer"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],[1,"transparent-50"],[1,"item"],[1,"col-12"],[1,"col-12","vpn-table-container"],[1,"center-container","mt-4.5",3,"ngClass"],[1,"rounded-elevated-box"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"box-internal-container"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table"],[1,"sortable-column","date-column","click-effect",3,"matTooltip"],[1,"sortable-column","flag-column","center","click-effect",3,"click","matTooltip"],[1,"sortable-column","name-column","click-effect",3,"click"],[1,"header-container"],[1,"header-text"],[1,"sortable-column","location-column","click-effect",3,"click"],[1,"sortable-column","pk-column","click-effect",3,"click","ngClass","matTooltip"],[1,"sortable-column","note-column","center","click-effect",3,"click","matTooltip"],[1,"actions"],[3,"ngClass"],[1,"sortable-column","date-column","click-effect",3,"click","matTooltip"],[3,"click","ngClass"],[1,"date-column"],[1,"flag-column","icon-fixer"],[1,"flag"],[3,"matTooltip"],[1,"name-column"],[3,"isCurrentServer","isFavorite","isBlocked","isInHistory","hasPassword","name","pk","customName","defaultName"],[1,"location-column"],[1,"pk-column","history-pk-column"],[1,"d-inline-block","w-100",3,"click","shortSimple","text"],[1,"center","note-column"],[1,"note-icon",3,"inline","matTooltip"],["mat-button","",1,"big-action-button","transparent-button","vpn-small-button",3,"click","matTooltip"],[1,"note-icon",3,"click","inline","matTooltip"],[1,"box-internal-container","font-sm"],[1,"alert-icon",3,"inline"],[1,"font-sm"]],template:function(i,o){1&i&&(x(0,MIe,8,7,"div",1),it(1,UIe,31,20,"ng-template",null,0,Rl),x(3,uOe,10,13,"div",2)),2&i&&(S(o.loading||o.loadingBackendData?0:-1),d(3),S(o.loading||o.loadingBackendData?-1:3))},styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%], .note-column[_ngcontent-%COMP%], .pk-column[_ngcontent-%COMP%], .location-column[_ngcontent-%COMP%], .name-column[_ngcontent-%COMP%], .date-column[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}.center-container[_ngcontent-%COMP%]{text-align:center}.center-container[_ngcontent-%COMP%] app-paginator[_ngcontent-%COMP%]{display:inline-block}.loading-top-container[_ngcontent-%COMP%]{z-index:1}.loading-indicator[_ngcontent-%COMP%]{padding-top:30px;padding-bottom:20px}.deactivated[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.option-bar-container[_ngcontent-%COMP%]{display:inline-block}.option-bar-container[_ngcontent-%COMP%] .allow-overflow[_ngcontent-%COMP%]{overflow:visible}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%]{display:flex;margin:-17px}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > div[_ngcontent-%COMP%], .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{height:55px;line-height:55px;cursor:pointer;color:#fff;text-decoration:none;-webkit-user-select:none;user-select:none}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:hover, .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:#0003}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > .icon-option[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:inline-block}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] > .icon-option[_ngcontent-%COMP%]:active span[_ngcontent-%COMP%], .option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:active span[_ngcontent-%COMP%]{transform:scale(.95)}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .text-option[_ngcontent-%COMP%]{padding:0 40px;font-size:1rem}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .icon-option[_ngcontent-%COMP%]{width:55px;font-size:24px}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{background:#0000005c;cursor:unset!important}.option-bar-container[_ngcontent-%COMP%] .option-bar[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]:hover{background:#0009}.option-bar-margin[_ngcontent-%COMP%]{margin-left:10px}.filter-label[_ngcontent-%COMP%]{font-size:.7rem;display:inline-block;padding:5px 10px;margin-bottom:7px}.filter-label[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{vertical-align:middle}table[_ngcontent-%COMP%]{width:100%}tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:2px 5px!important;font-size:12px!important;font-weight:400!important}tr[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{padding-left:5px!important;padding-right:5px!important}.date-column[_ngcontent-%COMP%]{width:150px}.name-column[_ngcontent-%COMP%]{max-width:0;width:20%}.location-column[_ngcontent-%COMP%]{max-width:0;min-width:72px}.pk-column[_ngcontent-%COMP%]{max-width:0;width:25%}.history-pk-column[_ngcontent-%COMP%]{width:20%!important}.icon-fixer[_ngcontent-%COMP%]{line-height:0px}.note-column[_ngcontent-%COMP%]{max-width:0;width:3%;min-width:60px}.note-column[_ngcontent-%COMP%] .note-icon[_ngcontent-%COMP%]{opacity:.55;font-size:16px!important;display:inline}.flag-column[_ngcontent-%COMP%]{width:1px;line-height:0px}.actions[_ngcontent-%COMP%]{width:1px}.header-container[_ngcontent-%COMP%]{max-width:100%;display:inline-flex}.header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%]{flex-grow:1}.flag[_ngcontent-%COMP%]{width:20px;height:15px;display:inline-block;margin-right:5px;background-image:url(/assets/img/big-flags/unknown.png);background-size:contain}.flag[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{width:20px;height:15px;background-size:contain}.center[_ngcontent-%COMP%]{text-align:center}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"]})}}return t})();const Tp=(t,n)=>({"small-text-icon":t,"big-text-icon":n});function hOe(t,n){if(1&t&&(h(0,"mat-icon",0),b(1,"translate"),p(2,"done"),u()),2&t){const e=v();C("ngClass",_t(5,Tp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",y(1,3,"vpn.server-conditions.selected-info"))}}function fOe(t,n){if(1&t&&(h(0,"mat-icon",1),b(1,"translate"),p(2,"clear"),u()),2&t){const e=v();C("ngClass",_t(5,Tp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",y(1,3,"vpn.server-conditions.blocked-info"))}}function pOe(t,n){if(1&t&&(h(0,"mat-icon",2),b(1,"translate"),p(2,"star"),u()),2&t){const e=v();C("ngClass",_t(5,Tp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",y(1,3,"vpn.server-conditions.favorite-info"))}}function mOe(t,n){if(1&t&&(h(0,"mat-icon",0),b(1,"translate"),p(2,"history"),u()),2&t){const e=v();C("ngClass",_t(5,Tp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",y(1,3,"vpn.server-conditions.history-info"))}}function gOe(t,n){if(1&t&&(h(0,"mat-icon",0),b(1,"translate"),p(2,"lock_outlined"),u()),2&t){const e=v();C("ngClass",_t(5,Tp,!e.adjustIconsForBigText,e.adjustIconsForBigText))("inline",!0)("matTooltip",y(1,3,"vpn.server-conditions.has-password-info"))}}function _Oe(t,n){if(1&t&&(p(0),h(1,"mat-icon",3),p(2,"fiber_manual_record"),u(),p(3)),2&t){const e=v();E(" ",e.customName," "),d(),C("inline",!0),d(2),E(" ",e.name,"\n")}}function bOe(t,n){1&t&&p(0),2&t&&E(" ",v().customName,"\n")}function vOe(t,n){1&t&&p(0),2&t&&E(" ",v().name,"\n")}function yOe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,v().defaultName),"\n")}let g6=(()=>{class t{constructor(){this.isCurrentServer=!1,this.isFavorite=!1,this.isBlocked=!1,this.isInHistory=!1,this.hasPassword=!1,this.name="",this.customName="",this.pk="",this.defaultName="",this.adjustIconsForBigText=!1}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=re({type:t,selectors:[["app-vpn-server-name"]],inputs:{isCurrentServer:"isCurrentServer",isFavorite:"isFavorite",isBlocked:"isBlocked",isInHistory:"isInHistory",hasPassword:"hasPassword",name:"name",customName:"customName",pk:"pk",defaultName:"defaultName",adjustIconsForBigText:"adjustIconsForBigText"},standalone:!1,decls:9,vars:9,consts:[[1,"server-condition-icon",3,"ngClass","inline","matTooltip"],[1,"server-condition-icon","red-clear-text",3,"ngClass","inline","matTooltip"],[1,"server-condition-icon","yellow-clear-text",3,"ngClass","inline","matTooltip"],[1,"name-separator",3,"inline"]],template:function(i,o){1&i&&(x(0,hOe,3,8,"mat-icon",0),x(1,fOe,3,8,"mat-icon",1),x(2,pOe,3,8,"mat-icon",2),x(3,mOe,3,8,"mat-icon",0),x(4,gOe,3,8,"mat-icon",0),x(5,_Oe,4,3),x(6,bOe,1,1),x(7,vOe,1,1),x(8,yOe,2,3)),2&i&&(S(o.isCurrentServer?0:-1),d(),S(o.isBlocked?1:-1),d(),S(o.isFavorite?2:-1),d(),S(o.isInHistory?3:-1),d(),S(o.hasPassword?4:-1),d(),S(!o.customName||!o.name||o.pk&&o.name===o.pk?-1:5),d(),S((!o.name||o.pk&&o.name===o.pk)&&o.customName?6:-1),d(),S(!o.name||o.pk&&o.name===o.pk||o.customName?-1:7),d(),S(o.name&&(!o.pk||o.name!==o.pk)||o.customName?-1:8))},dependencies:[$t,We,Kt,xe],styles:[".server-condition-icon[_ngcontent-%COMP%]{font-size:14px!important;line-height:14px!important;margin-right:3px;position:relative;width:14px!important;-webkit-user-select:none;user-select:none;cursor:default}.small-text-icon[_ngcontent-%COMP%]{top:2px}.big-text-icon[_ngcontent-%COMP%]{top:0}.name-separator[_ngcontent-%COMP%]{display:inline!important;font-size:8px!important;opacity:.5!important}"]})}}return t})();const _6=()=>["vpn.title"],b6=t=>({"disabled-button":t}),COe=(t,n)=>({custom:t,original:n}),Tu=t=>({showValue:!0,showUnit:!0,showPerSecond:!0,limitDecimals:!0,useBits:t}),v6=t=>({showValue:!0,showUnit:!0,showPerSecond:!0,useBits:t}),y6=t=>({showValue:!0,showUnit:!0,useBits:t}),Kv=t=>({time:t});function wOe(t,n){if(1&t&&(h(0,"div",0)(1,"div"),B(2,"app-top-bar",2),u(),B(3,"app-loading-indicator"),u()),2&t){const e=v();d(2),C("titleParts",Ct(5,_6))("tabsData",e.tabsData)("selectedTabIndex",0)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk)}}function xOe(t,n){1&t&&B(0,"mat-spinner",22),2&t&&C("diameter",40)}function SOe(t,n){1&t&&(h(0,"mat-icon",23),p(1,"power_settings_new"),u()),2&t&&C("inline",!0)}function kOe(t,n){if(1&t){const e=oe();h(0,"div",28),B(1,"div",29),u(),h(2,"div",30)(3,"div",31),B(4,"app-vpn-server-name",32),u(),h(5,"div",33),B(6,"app-copy-to-clipboard-text",34),u()(),h(7,"div",35),B(8,"div"),u(),h(9,"div",36)(10,"mat-icon",37),b(11,"translate"),F("click",function(){return j(e),U(v(3).openServerOptions())}),p(12,"settings"),u()()}if(2&t){const e=v(3);d(),no("background-image: url('assets/img/big-flags/"+e.currentRemoteServer.countryCode.toLocaleLowerCase()+".png');"),C("matTooltip",e.getCountryName(e.currentRemoteServer.countryCode)),d(3),C("isFavorite",e.currentRemoteServer.flag===e.serverFlags.Favorite)("isBlocked",e.currentRemoteServer.flag===e.serverFlags.Blocked)("hasPassword",e.currentRemoteServer.usedWithPassword)("name",e.currentRemoteServer.name)("pk",e.currentRemoteServer.pk)("customName",e.currentRemoteServer.customName),d(2),C("shortSimple",!0)("text",e.currentRemoteServer.pk),d(4),C("inline",!0)("matTooltip",y(11,13,"vpn.server-options.tooltip"))}}function DOe(t,n){1&t&&(h(0,"div",25),p(1),b(2,"translate"),u()),2&t&&(d(),M(y(2,1,"vpn.status-page.no-server")))}function MOe(t,n){if(1&t&&(h(0,"div",26)(1,"mat-icon",23),p(2,"info_outline"),u(),p(3),b(4,"translate"),u()),2&t){const e=v(3);d(),C("inline",!0),d(2),E(" ",pe(4,2,e.getNoteVar(),_t(5,COe,e.currentRemoteServer.personalNote,e.currentRemoteServer.note))," ")}}function TOe(t,n){if(1&t&&(h(0,"div",27)(1,"mat-icon",23),p(2,"cancel"),u(),p(3),b(4,"translate"),u()),2&t){const e=v(3);d(),C("inline",!0),d(2),gt(" ",y(4,3,"vpn.status-page.last-error")," ",e.backendState.vpnClientAppData.lastErrorMsg," ")}}function EOe(t,n){if(1&t){const e=oe();h(0,"div",6)(1,"div",9)(2,"div",11),p(3),b(4,"translate"),u(),h(5,"div")(6,"div",18),F("click",function(){return j(e),U(v(2).start())}),h(7,"div",19),B(8,"div",20),u(),h(9,"div",19),B(10,"div",21),u(),x(11,xOe,1,1,"mat-spinner",22),x(12,SOe,2,1,"mat-icon",23),u()(),h(13,"div",24),x(14,kOe,13,15),x(15,DOe,3,3,"div",25),u(),h(16,"div"),x(17,MOe,5,8,"div",26),u(),h(18,"div"),x(19,TOe,5,5,"div",27),u()()()}if(2&t){const e=v(2);d(3),M(y(4,8,"vpn.status-page.start-title")),d(3),C("ngClass",se(10,b6,e.showBusy)),d(5),S(e.showBusy?11:-1),d(),S(e.showBusy?-1:12),d(2),S(e.currentRemoteServer?14:-1),d(),S(e.currentRemoteServer?-1:15),d(2),S(e.currentRemoteServer&&(e.currentRemoteServer.note||e.currentRemoteServer.personalNote)?17:-1),d(2),S(e.backendState&&e.backendState.vpnClientAppData&&e.backendState.vpnClientAppData.lastErrorMsg?19:-1)}}function POe(t,n){if(1&t&&(h(0,"div",44)(1,"mat-icon",23),p(2,"cancel"),u(),p(3),b(4,"translate"),u()),2&t){const e=v(3);d(),C("inline",!0),d(2),gt(" ",y(4,3,"vpn.status-page.last-error")," ",e.backendState.vpnClientAppData.connectionData.error," ")}}function IOe(t,n){1&t&&(h(0,"div"),B(1,"mat-spinner",22),u()),2&t&&(d(),C("diameter",24))}function OOe(t,n){1&t&&(h(0,"mat-icon",23),p(1,"power_settings_new"),u()),2&t&&C("inline",!0)}function AOe(t,n){if(1&t){const e=oe();h(0,"div",7)(1,"div",9)(2,"div",38)(3,"div",39)(4,"mat-icon",23),p(5,"timer"),u(),h(6,"span"),p(7),u()()(),h(8,"div",40),p(9),b(10,"translate"),u(),h(11,"div",41)(12,"div",42),p(13),b(14,"translate"),u(),B(15,"div"),u(),h(16,"div",43),p(17),b(18,"translate"),u(),x(19,POe,5,5,"div",44),h(20,"div",45)(21,"div",46),b(22,"translate"),h(23,"div",47),B(24,"app-line-chart",48),u(),h(25,"div",49)(26,"div",50)(27,"div",51),p(28),b(29,"autoScale"),u(),B(30,"div",52),u()(),h(31,"div",49)(32,"div",53)(33,"div",51),p(34),b(35,"autoScale"),u(),B(36,"div",52),u()(),h(37,"div",49)(38,"div",54)(39,"div",51),p(40),b(41,"autoScale"),u()()(),h(42,"div",55)(43,"mat-icon",56),p(44,"keyboard_backspace"),u(),h(45,"div",57),p(46),b(47,"autoScale"),u(),h(48,"div",58),p(49),b(50,"autoScale"),b(51,"translate"),u()()(),h(52,"div",46),b(53,"translate"),h(54,"div",47),B(55,"app-line-chart",48),u(),h(56,"div",59)(57,"div",50)(58,"div",51),p(59),b(60,"autoScale"),u(),B(61,"div",52),u()(),h(62,"div",49)(63,"div",53)(64,"div",51),p(65),b(66,"autoScale"),u(),B(67,"div",52),u()(),h(68,"div",49)(69,"div",54)(70,"div",51),p(71),b(72,"autoScale"),u()()(),h(73,"div",55)(74,"mat-icon",60),p(75,"keyboard_backspace"),u(),h(76,"div",57),p(77),b(78,"autoScale"),u(),h(79,"div",58),p(80),b(81,"autoScale"),b(82,"translate"),u()()()(),h(83,"div",61)(84,"div",62),b(85,"translate"),h(86,"div",47),B(87,"app-line-chart",63),u(),h(88,"div",59)(89,"div",50)(90,"div",51),p(91),b(92,"translate"),u(),B(93,"div",52),u()(),h(94,"div",49)(95,"div",53)(96,"div",51),p(97),b(98,"translate"),u(),B(99,"div",52),u()(),h(100,"div",49)(101,"div",54)(102,"div",51),p(103),b(104,"translate"),u()()(),h(105,"div",55)(106,"mat-icon",23),p(107,"swap_horiz"),u(),h(108,"div"),p(109),b(110,"translate"),u()()()(),h(111,"div",64),F("click",function(){return j(e),U(v(2).stop())}),h(112,"div",65)(113,"div",66),x(114,IOe,2,1,"div"),x(115,OOe,2,1,"mat-icon",23),h(116,"span"),p(117),b(118,"translate"),u()()()()()()}if(2&t){const e=v(2);d(4),C("inline",!0),d(3),M(e.connectionTimeString),d(2),M(y(10,58,"vpn.connection-info.state-title")),d(4),M(y(14,60,e.currentStateText)),d(2),Ze("state-line "+e.currentStateLineClass),d(2),M(y(18,62,e.currentStateText+"-info")),d(2),S(e.backendState&&e.backendState.vpnClientAppData&&e.backendState.vpnClientAppData.connectionData&&e.backendState.vpnClientAppData.connectionData.error?19:-1),d(2),C("matTooltip",y(22,64,"vpn.status-page.upload-info")),d(3),C("animated",!1)("data",e.sentHistory)("min",e.minUploadInGraph)("max",e.maxUploadInGraph),d(4),E(" ",pe(29,66,e.maxUploadInGraph,se(118,Tu,e.showSpeedsInBits))," "),d(2),no("margin-top: "+e.graphsTopInternalMargin+"px;"),d(4),E(" ",pe(35,69,e.midUploadInGraph,se(120,Tu,e.showSpeedsInBits))," "),d(2),no("margin-top: "+e.graphsTopInternalMargin/2+"px;"),d(4),E(" ",pe(41,72,e.minUploadInGraph,se(122,Tu,e.showSpeedsInBits))," "),d(3),C("inline",!0),d(3),M(pe(47,75,e.uploadSpeed,se(124,v6,e.showSpeedsInBits))),d(3),gt(" ",pe(50,78,e.totalUploaded,se(126,y6,e.showTotalsInBits))," ",y(51,81,"vpn.status-page.total-data-label")," "),d(3),C("matTooltip",y(53,83,"vpn.status-page.download-info")),d(3),C("animated",!1)("data",e.receivedHistory)("min",e.minDownloadInGraph)("max",e.maxDownloadInGraph),d(4),E(" ",pe(60,85,e.maxDownloadInGraph,se(128,Tu,e.showSpeedsInBits))," "),d(2),no("margin-top: "+e.graphsTopInternalMargin+"px;"),d(4),E(" ",pe(66,88,e.midDownloadInGraph,se(130,Tu,e.showSpeedsInBits))," "),d(2),no("margin-top: "+e.graphsTopInternalMargin/2+"px;"),d(4),E(" ",pe(72,91,e.minDownloadInGraph,se(132,Tu,e.showSpeedsInBits))," "),d(3),C("inline",!0),d(3),M(pe(78,94,e.downloadSpeed,se(134,v6,e.showSpeedsInBits))),d(3),gt(" ",pe(81,97,e.totalDownloaded,se(136,y6,e.showTotalsInBits))," ",y(82,100,"vpn.status-page.total-data-label")," "),d(4),C("matTooltip",y(85,102,"vpn.status-page.latency-info")),d(3),C("animated",!1)("data",e.latencyHistory)("min",e.minLatencyInGraph)("max",e.maxLatencyInGraph),d(4),E(" ",pe(92,104,"common."+e.getLatencyValueString(e.maxLatencyInGraph),se(138,Kv,e.getPrintableLatency(e.maxLatencyInGraph)))," "),d(2),no("margin-top: "+e.graphsTopInternalMargin+"px;"),d(4),E(" ",pe(98,107,"common."+e.getLatencyValueString(e.midLatencyInGraph),se(140,Kv,e.getPrintableLatency(e.midLatencyInGraph)))," "),d(2),no("margin-top: "+e.graphsTopInternalMargin/2+"px;"),d(4),E(" ",pe(104,110,"common."+e.getLatencyValueString(e.minLatencyInGraph),se(142,Kv,e.getPrintableLatency(e.minLatencyInGraph)))," "),d(3),C("inline",!0),d(3),M(pe(110,113,"common."+e.getLatencyValueString(e.latency),se(144,Kv,e.getPrintableLatency(e.latency)))),d(2),C("ngClass",se(146,b6,e.showBusy)),d(3),S(e.showBusy?114:-1),d(),S(e.showBusy?-1:115),d(2),M(y(118,116,"vpn.status-page.disconnect"))}}function ROe(t,n){1&t&&p(0),2&t&&E(" ",v(3).currentIp," ")}function FOe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"common.unknown")," ")}function NOe(t,n){1&t&&B(0,"mat-spinner",22),2&t&&C("diameter",20)}function LOe(t,n){1&t&&(h(0,"mat-icon",67),b(1,"translate"),p(2,"warning"),u()),2&t&&C("inline",!0)("matTooltip",y(1,2,"vpn.status-page.data.ip-problem-info"))}function BOe(t,n){if(1&t){const e=oe();h(0,"mat-icon",69),b(1,"translate"),F("click",function(){return j(e),U(v(3).getIp())}),p(2,"refresh"),u()}2&t&&C("inline",!0)("matTooltip",y(1,2,"vpn.status-page.data.ip-refresh-info"))}function VOe(t,n){if(1&t&&(h(0,"div",12),x(1,ROe,1,1),x(2,FOe,2,3),x(3,NOe,1,1,"mat-spinner",22),x(4,LOe,3,4,"mat-icon",67),x(5,BOe,3,4,"mat-icon",68),u()),2&t){const e=v(2);d(),S(e.currentIp?1:-1),d(),S(e.currentIp||e.loadingCurrentIp?-1:2),d(),S(e.loadingCurrentIp?3:-1),d(),S(e.problemGettingIp?4:-1),d(),S(e.loadingCurrentIp?-1:5)}}function HOe(t,n){1&t&&(h(0,"div",12),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"vpn.status-page.data.unavailable")," "))}function jOe(t,n){1&t&&p(0),2&t&&E(" ",v(3).ipCountry," ")}function UOe(t,n){1&t&&(p(0),b(1,"translate")),2&t&&E(" ",y(1,1,"common.unknown")," ")}function zOe(t,n){1&t&&B(0,"mat-spinner",22),2&t&&C("diameter",20)}function $Oe(t,n){1&t&&(h(0,"mat-icon",67),b(1,"translate"),p(2,"warning"),u()),2&t&&C("inline",!0)("matTooltip",y(1,2,"vpn.status-page.data.ip-country-problem-info"))}function WOe(t,n){if(1&t&&(h(0,"div",12),x(1,jOe,1,1),x(2,UOe,2,3),x(3,zOe,1,1,"mat-spinner",22),x(4,$Oe,3,4,"mat-icon",67),u()),2&t){const e=v(2);d(),S(e.ipCountry?1:-1),d(),S(e.ipCountry||e.loadingCurrentIp?-1:2),d(),S(e.loadingCurrentIp?3:-1),d(),S(e.problemGettingIp?4:-1)}}function GOe(t,n){1&t&&(h(0,"div",12),p(1),b(2,"translate"),u()),2&t&&(d(),E(" ",y(2,1,"vpn.status-page.data.unavailable")," "))}function qOe(t,n){if(1&t){const e=oe();h(0,"div")(1,"div",11),p(2),b(3,"translate"),u(),h(4,"div",12),B(5,"app-vpn-server-name",70),h(6,"mat-icon",69),b(7,"translate"),F("click",function(){return j(e),U(v(2).openServerOptions())}),p(8,"settings"),u()()()}if(2&t){const e=v(2);d(2),M(y(3,10,"vpn.status-page.data.server")),d(3),C("isFavorite",e.currentRemoteServer.flag===e.serverFlags.Favorite)("isBlocked",e.currentRemoteServer.flag===e.serverFlags.Blocked)("hasPassword",e.currentRemoteServer.usedWithPassword)("adjustIconsForBigText",!0)("name",e.currentRemoteServer.name)("pk",e.currentRemoteServer.pk)("customName",e.currentRemoteServer.customName),d(),C("inline",!0)("matTooltip",y(7,12,"vpn.server-options.tooltip"))}}function KOe(t,n){1&t&&B(0,"div",13)}function YOe(t,n){if(1&t&&(h(0,"div")(1,"div",11),p(2),b(3,"translate"),u(),h(4,"div",16),p(5),u()()),2&t){const e=v(2);d(2),M(y(3,2,"vpn.status-page.data.server-note")),d(3),E(" ",e.currentRemoteServer.personalNote," ")}}function XOe(t,n){1&t&&B(0,"div",13)}function ZOe(t,n){if(1&t&&(h(0,"div")(1,"div",11),p(2),b(3,"translate"),u(),h(4,"div",16),p(5),u()()),2&t){const e=v(2);d(2),M(y(3,2,"vpn.status-page.data."+(e.currentRemoteServer.personalNote?"original-":"")+"server-note")),d(3),E(" ",e.currentRemoteServer.note," ")}}function QOe(t,n){1&t&&B(0,"div",13)}function JOe(t,n){if(1&t&&(h(0,"div")(1,"div",11),p(2),b(3,"translate"),u(),h(4,"div",16),B(5,"app-copy-to-clipboard-text",17),u()()),2&t){const e=v(2);d(2),M(y(3,2,"vpn.status-page.data.remote-pk")),d(3),C("text",e.currentRemoteServer.pk)}}function eAe(t,n){1&t&&B(0,"div",13)}function tAe(t,n){if(1&t&&(h(0,"div",1)(1,"div",3)(2,"div",4),B(3,"app-top-bar",2),u()(),h(4,"div",5),x(5,EOe,20,12,"div",6),x(6,AOe,119,148,"div",7),h(7,"div",8)(8,"div",9)(9,"div",10)(10,"div")(11,"div",11),p(12),b(13,"translate"),u(),x(14,VOe,6,5,"div",12),x(15,HOe,3,3,"div",12),u(),B(16,"div",13),h(17,"div")(18,"div",11),p(19),b(20,"translate"),u(),x(21,WOe,5,4,"div",12),x(22,GOe,3,3,"div",12),u(),B(23,"div",14)(24,"div",15)(25,"div",14),x(26,qOe,9,14,"div"),x(27,KOe,1,0,"div",13),x(28,YOe,6,4,"div"),x(29,XOe,1,0,"div",13),x(30,ZOe,6,4,"div"),x(31,QOe,1,0,"div",13),x(32,JOe,6,4,"div"),x(33,eAe,1,0,"div",13),h(34,"div")(35,"div",11),p(36),b(37,"translate"),u(),h(38,"div",16),B(39,"app-copy-to-clipboard-text",17),u()()()()()()()),2&t){const e=v();d(3),C("titleParts",Ct(29,_6))("tabsData",e.tabsData)("selectedTabIndex",0)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),d(2),S(e.showStarted?-1:5),d(),S(e.showStarted?6:-1),d(6),M(y(13,23,"vpn.status-page.data.ip")),d(2),S(e.ipInfoAllowed?14:-1),d(),S(e.ipInfoAllowed?-1:15),d(4),M(y(20,25,"vpn.status-page.data.country")),d(2),S(e.ipInfoAllowed?21:-1),d(),S(e.ipInfoAllowed?-1:22),d(4),S(e.showStarted&&e.currentRemoteServer?26:-1),d(),S(e.showStarted&&e.currentRemoteServer?27:-1),d(),S(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.personalNote?28:-1),d(),S(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.personalNote?29:-1),d(),S(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.note?30:-1),d(),S(e.showStarted&&e.currentRemoteServer&&e.currentRemoteServer.note?31:-1),d(),S(e.showStarted&&e.currentRemoteServer?32:-1),d(),S(e.showStarted&&e.currentRemoteServer?33:-1),d(3),M(y(37,27,"vpn.status-page.data.local-pk")),d(3),C("text",e.currentLocalPk)}}let nAe=(()=>{class t extends pn{constructor(e,i,o,r,s,a){super(),this.vpnClientService=e,this.vpnSavedDataService=i,this.snackbarService=o,this.route=r,this.dialog=s,this.router=a,this.persistentServerDataResponseKey="serv-dat-response",this.tabsData=hi.vpnTabsData,this.sentHistory=[0,0,0,0,0,0,0,0,0,0],this.receivedHistory=[0,0,0,0,0,0,0,0,0,0],this.latencyHistory=[0,0,0,0,0,0,0,0,0,0],this.minUploadInGraph=0,this.midUploadInGraph=0,this.maxUploadInGraph=0,this.minDownloadInGraph=0,this.midDownloadInGraph=0,this.maxDownloadInGraph=0,this.minLatencyInGraph=0,this.midLatencyInGraph=0,this.maxLatencyInGraph=0,this.graphsTopInternalMargin=Gv.topInternalMargin,this.connectionTimeString="00:00:00",this.calculatedSegs=-1,this.uploadSpeed=0,this.downloadSpeed=0,this.totalUploaded=0,this.totalDownloaded=0,this.latency=0,this.showSpeedsInBits=!0,this.showTotalsInBits=!1,this.loading=!0,this.showStartedLastValue=!1,this.showStarted=!1,this.lastAppState=null,this.showBusy=!1,this.stopRequested=!1,this.loadingCurrentIp=!0,this.problemGettingIp=!1,this.serverFlags=_n,this.ipInfoAllowed=this.vpnSavedDataService.getCheckIpSetting();const l=this.vpnSavedDataService.getDataUnitsSetting();l===Zo.OnlyBits?(this.showSpeedsInBits=!0,this.showTotalsInBits=!0):l===Zo.OnlyBytes?(this.showSpeedsInBits=!1,this.showTotalsInBits=!1):(this.showSpeedsInBits=!0,this.showTotalsInBits=!1)}ngOnInit(){return this.navigationsSubscription=this.route.paramMap.subscribe(e=>{e.has("key")&&(this.currentLocalPk=e.get("key"),hi.changeCurrentPk(this.currentLocalPk),this.tabsData=hi.vpnTabsData),setTimeout(()=>this.navigationsSubscription.unsubscribe()),this.startGettingData(!0),this.currentRemoteServerSubscription=this.vpnSavedDataService.currentServerObservable.subscribe(i=>{this.currentRemoteServer=i})}),super.ngOnInit()}startGettingData(e){const i=e?this.getLocalValue(this.persistentServerDataResponseKey):null;let o=this.vpnClientService.backendState;i&&(o=ae(JSON.parse(i.value))),this.dataSubscription=o.subscribe(r=>{if(i||this.saveLocalValue(this.persistentServerDataResponseKey,JSON.stringify(r)),r&&r.serviceState!==Ri.PerformingInitialCheck){if(this.backendState=r,r.publicIp?(this.currentIp=r.publicIp,this.problemGettingIp=!1):this.currentIp=null,this.ipCountry=r.countryName?r.countryName:null,this.loadingCurrentIp=!1,this.showStarted=r.vpnClientAppData.running||r.vpnClientAppData.appState!==an.Stopped,this.showStartedLastValue!==this.showStarted){for(let s=0;s<10;s++)this.receivedHistory[s]=0,this.sentHistory[s]=0,this.latencyHistory[s]=0;this.updateGraphLimits(),this.uploadSpeed=0,this.downloadSpeed=0,this.totalUploaded=0,this.totalDownloaded=0,this.latency=0}if(this.lastAppState=r.vpnClientAppData.appState,this.showStartedLastValue=this.showStarted,this.stopRequested?this.showStarted||(this.stopRequested=!1,this.showBusy=r.busy):this.showBusy=r.busy,r.vpnClientAppData.connectionData){for(let s=0;s<10;s++)this.receivedHistory[s]=r.vpnClientAppData.connectionData.downloadSpeedHistory[s],this.sentHistory[s]=r.vpnClientAppData.connectionData.uploadSpeedHistory[s],this.latencyHistory[s]=r.vpnClientAppData.connectionData.latencyHistory[s];this.updateGraphLimits(),this.uploadSpeed=r.vpnClientAppData.connectionData.uploadSpeed,this.downloadSpeed=r.vpnClientAppData.connectionData.downloadSpeed,this.totalUploaded=r.vpnClientAppData.connectionData.totalUploaded,this.totalDownloaded=r.vpnClientAppData.connectionData.totalDownloaded,this.latency=r.vpnClientAppData.connectionData.latency}r.vpnClientAppData.running&&r.vpnClientAppData.appState===an.Running&&r.vpnClientAppData.connectionData&&r.vpnClientAppData.connectionData.connectionDuration?(-1===this.calculatedSegs||r.vpnClientAppData.connectionData.connectionDuration>this.calculatedSegs+2||r.vpnClientAppData.connectionData.connectionDuration{this.calculatedSegs+=1,this.refreshConnectionTimeString()})):this.timeUpdateSubscription&&(this.timeUpdateSubscription.unsubscribe(),this.timeUpdateSubscription=null,this.calculatedSegs=-1,this.connectionTimeString="00:00:00"),this.loading=!1}i&&this.startGettingData(!1)})}refreshConnectionTimeString(){const e=this.calculatedSegs%60,i=Math.floor(this.calculatedSegs/60),o=i%60,r=Math.floor(i/60);this.connectionTimeString=String(r).padStart(2,"0")+":"+String(o).padStart(2,"0")+":"+String(e).padStart(2,"0")}ngOnDestroy(){this.dataSubscription.unsubscribe(),this.navigationsSubscription.unsubscribe(),this.currentRemoteServerSubscription.unsubscribe(),this.closeOperationSubscription(),this.timeUpdateSubscription&&this.timeUpdateSubscription.unsubscribe()}start(){if(!this.currentRemoteServer)return this.router.navigate(["vpn",this.currentLocalPk,"servers"]),void setTimeout(()=>this.snackbarService.showWarning("vpn.status-page.select-server-warning"),100);this.currentRemoteServer.flag!==_n.Blocked?(this.showBusy=!0,this.vpnClientService.start()):this.snackbarService.showError("vpn.starting-blocked-server-error")}stop(){if(!this.backendState.vpnClientAppData.killswitch)return void this.finishStoppingVpn();const e=Rt.createConfirmationDialog(this.dialog,"vpn.status-page.disconnect-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.finishStoppingVpn()})}finishStoppingVpn(){this.stopRequested=!0,this.showBusy=!0,this.vpnClientService.stop()}openServerOptions(){hi.openServerOptions(this.currentRemoteServer,this.router,this.vpnSavedDataService,this.vpnClientService,this.snackbarService,this.dialog).subscribe()}getCountryName(e){return es[e.toUpperCase()]?es[e.toUpperCase()]:e}getNoteVar(){return this.currentRemoteServer.note&&this.currentRemoteServer.personalNote?"vpn.server-list.notes-info":!this.currentRemoteServer.note&&this.currentRemoteServer.personalNote?this.currentRemoteServer.personalNote:this.currentRemoteServer.note}getLatencyValueString(e){return hi.getLatencyValueString(e)}getPrintableLatency(e){return hi.getPrintableLatency(e)}get currentStateText(){return this.backendState.vpnClientAppData.appState===an.Stopped?"vpn.connection-info.state-disconnected":this.backendState.vpnClientAppData.appState===an.Connecting?"vpn.connection-info.state-connecting":this.backendState.vpnClientAppData.appState===an.Running?"vpn.connection-info.state-connected":this.backendState.vpnClientAppData.appState===an.ShuttingDown?"vpn.connection-info.state-disconnecting":this.backendState.vpnClientAppData.appState===an.Reconnecting?"vpn.connection-info.state-reconnecting":void 0}get currentStateLineClass(){return this.backendState.vpnClientAppData.appState===an.Stopped?"red-line":this.backendState.vpnClientAppData.appState===an.Connecting?"yellow-line":this.backendState.vpnClientAppData.appState===an.Running?"green-line":"yellow-line"}closeOperationSubscription(){this.operationSubscription&&this.operationSubscription.unsubscribe()}updateGraphLimits(){const e=this.calculateGraphLimits(this.sentHistory);this.minUploadInGraph=e[0],this.midUploadInGraph=e[1],this.maxUploadInGraph=e[2];const i=this.calculateGraphLimits(this.receivedHistory);this.minDownloadInGraph=i[0],this.midDownloadInGraph=i[1],this.maxDownloadInGraph=i[2];const o=this.calculateGraphLimits(this.latencyHistory);this.minLatencyInGraph=o[0],this.midLatencyInGraph=o[1],this.maxLatencyInGraph=o[2]}calculateGraphLimits(e){let o=0;return e.forEach(s=>{s>o&&(o=s)}),0===o&&(o+=1),[0,new fv(o).minus(0).dividedBy(2).plus(0).decimalPlaces(1).toNumber(),o]}getIp(){this.ipInfoAllowed&&(this.vpnClientService.updateData(),this.snackbarService.showDone("common.refreshed"))}static{this.\u0275fac=function(i){return new(i||t)(O(hc),O(uc),O(ct),O(Ai),O(Ot),O(vt))}}static{this.\u0275cmp=re({type:t,selectors:[["app-vpn-status"]],standalone:!1,features:[be],decls:2,vars:2,consts:[[1,"d-flex","flex-column","h-100","w-100"],[1,"general-container"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton","localVpnKey"],[1,"row"],[1,"col-12"],[1,"row","flex-1"],[1,"col-7","column","left-area"],[1,"col-7","column","left-area-connected"],[1,"col-5","column","right-area"],[1,"column-container"],[1,"content-area"],[1,"title"],[1,"big-text"],[1,"margin"],[1,"big-margin"],[1,"separator"],[1,"small-text"],[3,"text"],[1,"start-button",3,"click","ngClass"],[1,"start-button-img-container"],[1,"start-button-img"],[1,"start-button-img","animated-button"],[3,"diameter"],[3,"inline"],[1,"current-server"],[1,"none"],[1,"lower-text","current-server-note"],[1,"lower-text","last-error"],[1,"flag"],[3,"matTooltip"],[1,"text-container"],[1,"top-line"],["defaultName","vpn.unnamed",3,"isFavorite","isBlocked","hasPassword","name","pk","customName"],[1,"bottom-line"],[3,"shortSimple","text"],[1,"icon-button-separator"],[1,"icon-button"],[1,"transparent-button","vpn-small-button",3,"click","inline","matTooltip"],[1,"time-container"],[1,"time-content"],[1,"state-title"],[1,"d-inline-block"],[1,"state-text"],[1,"state-explanation"],[1,"last-connected-error"],[1,"data-container"],[1,"rounded-elevated-box","data-box","big-box",3,"matTooltip"],[1,"chart-container"],["height","140","color","#00000080",3,"animated","data","min","max"],[1,"chart-label"],[1,"label-container","label-top"],[1,"label"],[1,"line"],[1,"label-container","label-mid"],[1,"label-container","label-bottom"],[1,"content"],[1,"upload",3,"inline"],[1,"speed"],[1,"total"],[1,"chart-label","top-chart-label"],[1,"download",3,"inline"],[1,"latency-container"],[1,"rounded-elevated-box","data-box","small-box",3,"matTooltip"],["height","50","color","#00000080",3,"animated","data","min","max"],[1,"disconnect-button",3,"click","ngClass"],[1,"disconnect-button-container"],[1,"d-inline-flex"],[1,"small-icon","blinking",3,"inline","matTooltip"],[1,"big-icon","transparent-button","vpn-small-button",3,"inline","matTooltip"],[1,"big-icon","transparent-button","vpn-small-button",3,"click","inline","matTooltip"],["defaultName","vpn.unnamed",3,"isFavorite","isBlocked","hasPassword","adjustIconsForBigText","name","pk","customName"]],template:function(i,o){1&i&&(x(0,wOe,4,6,"div",0),x(1,tAe,40,30,"div",1)),2&i&&(S(o.loading?0:-1),d(),S(o.loading?-1:1))},dependencies:[$t,We,Kt,so,op,Gv,Yr,Mr,g6,xe,rp],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .bottom-line[_ngcontent-%COMP%], .left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .top-line[_ngcontent-%COMP%], .left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .none[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}.general-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%}.column[_ngcontent-%COMP%]{height:100%;display:flex;align-items:center;padding-top:40px;padding-bottom:20px}.column[_ngcontent-%COMP%] .column-container[_ngcontent-%COMP%]{width:100%;text-align:center}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%]{background:#000000b3;border-radius:100px;font-size:.8rem;padding:8px 15px;display:inline-block}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%] .time-content[_ngcontent-%COMP%]{color:#bbb}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%] .time-content[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:10px}.left-area-connected[_ngcontent-%COMP%] .time-container[_ngcontent-%COMP%] .time-content[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{vertical-align:top}.left-area-connected[_ngcontent-%COMP%] .state-title[_ngcontent-%COMP%]{font-size:1rem;color:#bbb}.left-area-connected[_ngcontent-%COMP%] .state-text[_ngcontent-%COMP%]{font-size:2rem;text-transform:uppercase}.left-area-connected[_ngcontent-%COMP%] .state-line[_ngcontent-%COMP%]{height:1px;width:100%;margin-bottom:5px}.left-area-connected[_ngcontent-%COMP%] .green-line[_ngcontent-%COMP%]{background-color:#2ecc54}.left-area-connected[_ngcontent-%COMP%] .yellow-line[_ngcontent-%COMP%]{background-color:#d48b05}.left-area-connected[_ngcontent-%COMP%] .red-line[_ngcontent-%COMP%]{background-color:#da3439}.left-area-connected[_ngcontent-%COMP%] .state-explanation[_ngcontent-%COMP%]{font-size:.7rem}.left-area-connected[_ngcontent-%COMP%] .last-connected-error[_ngcontent-%COMP%]{margin-top:15px;font-size:.8rem;color:#ff393f}.left-area-connected[_ngcontent-%COMP%] .last-connected-error[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px;display:inline;-webkit-user-select:none;user-select:none}.left-area-connected[_ngcontent-%COMP%] .data-container[_ngcontent-%COMP%]{margin-top:20px}.left-area-connected[_ngcontent-%COMP%] .latency-container[_ngcontent-%COMP%]{margin-bottom:20px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%]{cursor:default;display:inline-block}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-container[_ngcontent-%COMP%]{height:0px;position:relative;top:-3px;left:-3px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%]{height:0px;text-align:left}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%]{position:relative;top:-3px;left:-3px;display:flex;margin-right:-6px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:.6rem;margin-left:5px;opacity:.2}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%] .line[_ngcontent-%COMP%]{height:1px;width:10px;background-color:#fff;flex-grow:1;opacity:.1;margin-left:10px;margin-right:5px}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-top[_ngcontent-%COMP%]{align-items:flex-start}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-mid[_ngcontent-%COMP%]{align-items:center}.left-area-connected[_ngcontent-%COMP%] .data-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-bottom[_ngcontent-%COMP%]{align-items:flex-end;position:relative;top:-6px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%]{width:170px;height:140px;margin:5px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .chart-container[_ngcontent-%COMP%]{width:170px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]{width:170px;height:140px;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;padding-bottom:20px;position:relative;top:-3px;left:-3px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:25px;transform:rotate(-90deg);width:40px;height:40px}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .download[_ngcontent-%COMP%]{transform:rotate(-90deg)}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .upload[_ngcontent-%COMP%]{transform:rotate(90deg)}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .speed[_ngcontent-%COMP%]{font-size:.875rem}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .total[_ngcontent-%COMP%]{font-size:.8rem;color:#bbb}.left-area-connected[_ngcontent-%COMP%] .big-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%]{height:140px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%]{width:352px;height:50px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .chart-container[_ngcontent-%COMP%]{width:352px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]{display:inline-flex;align-items:center;height:100%;font-size:.875rem;position:relative}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;height:25px;margin-right:5px}.left-area-connected[_ngcontent-%COMP%] .small-box[_ngcontent-%COMP%] .chart-label[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%]{height:50px}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%]{background:linear-gradient(#940000,#7b0000) no-repeat!important;box-shadow:5px 5px 7px #00000080;width:352px;font-size:24px;display:inline-block;border-radius:10px;overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%]:hover{background:linear-gradient(#a10000,#900000) no-repeat!important}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%]:active{transform:scale(.98);box-shadow:0 0 7px #00000080}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%]{background-image:url(/assets/img/background-pattern.png);padding:12px}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:10px;align-self:center}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%]{display:inline-block;position:relative;top:4px;margin-right:10px;align-self:center}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.left-area-connected[_ngcontent-%COMP%] .disconnect-button[_ngcontent-%COMP%] .disconnect-button-container[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{position:relative;top:-2px;line-height:1.7}.left-area[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:700;text-align:center;text-transform:uppercase}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]{text-align:center;margin:10px 0;cursor:pointer;display:inline-block;width:140px;height:140px}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]:active mat-icon[_ngcontent-%COMP%]{transform:scale(.9)}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]:hover .start-button-img-container[_ngcontent-%COMP%]{opacity:1}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{text-shadow:0px 0px 5px white}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .start-button-img-container[_ngcontent-%COMP%]{width:0px;height:0px;opacity:.7}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .start-button-img-container[_ngcontent-%COMP%] .start-button-img[_ngcontent-%COMP%]{display:inline-block;background-image:url(/assets/img/start-button.png);background-size:contain;width:140px;height:140px}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .start-button-img-container[_ngcontent-%COMP%] .animated-button[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_button-animation 4s linear infinite;pointer-events:none}@keyframes _ngcontent-%COMP%_button-animation{0%{transform:scale(1.5);opacity:0}25%{transform:scale(1);opacity:.8}50%{transform:scale(1.5);opacity:0}to{transform:scale(1.5);opacity:0}}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{line-height:140px;font-size:50px;-webkit-user-select:none;user-select:none;text-shadow:0px 0px 2px white}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%]{display:inline-block;margin-top:50px;opacity:.5}.left-area[_ngcontent-%COMP%] .start-button[_ngcontent-%COMP%] .mat-mdc-progress-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%]{display:inline-flex;background:#000000b3;border-radius:10px;padding:10px 15px;max-width:280px;text-align:left}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .none[_ngcontent-%COMP%]{font-size:.875rem}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .flag[_ngcontent-%COMP%]{background-image:url(/assets/img/big-flags/unknown.png);width:20px;height:15px;background-size:contain;align-self:center;flex-shrink:0;margin-right:12px}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .flag[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{width:20px;height:15px;background-size:contain}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{overflow:hidden}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .top-line[_ngcontent-%COMP%]{font-size:.875rem}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .bottom-line[_ngcontent-%COMP%]{font-size:.7rem;color:#bbb}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button-separator[_ngcontent-%COMP%]{display:flex;align-items:center}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button-separator[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{width:1px;height:30px;background:#ffffff26;margin-left:12px}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button[_ngcontent-%COMP%]{font-size:22px;line-height:1;display:flex;align-items:center;padding-left:12px}.left-area[_ngcontent-%COMP%] .current-server[_ngcontent-%COMP%] .icon-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{cursor:pointer}.left-area[_ngcontent-%COMP%] .lower-text[_ngcontent-%COMP%]{display:inline-block;max-width:280px;margin-top:10px}.left-area[_ngcontent-%COMP%] .lower-text[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px;display:inline;-webkit-user-select:none;user-select:none}.left-area[_ngcontent-%COMP%] .current-server-note[_ngcontent-%COMP%]{font-size:.8rem;color:#bbb}.left-area[_ngcontent-%COMP%] .last-error[_ngcontent-%COMP%]{font-size:.8rem;color:#ff393f}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%]{background:#3d67a226;padding:30px;text-align:left;max-width:420px;opacity:.95}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:.8rem;color:#bbb}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%]{font-size:1.25rem;overflow-wrap:break-word}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%]{display:inline-block;opacity:.5;margin-left:5px;position:relative;top:2px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] .small-icon[_ngcontent-%COMP%]{color:#d48b05;opacity:.7;font-size:.875rem;cursor:default;margin-left:5px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-text[_ngcontent-%COMP%] .big-icon[_ngcontent-%COMP%]{font-size:1.125rem;margin-left:5px;position:relative;top:2px;line-height:1}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .small-text[_ngcontent-%COMP%]{font-size:.7rem;margin-top:1px;overflow-wrap:break-word}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .margin[_ngcontent-%COMP%]{height:12px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .big-margin[_ngcontent-%COMP%]{height:15px}.right-area[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] .separator[_ngcontent-%COMP%]{height:1px;width:100%;background:#ffffff26}.disabled-button[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}"]})}}return t})(),SD=(()=>{class t{set lastError(e){this.lastErrorInternal=e}constructor(e){this.router=e}canActivate(e,i){return this.checkIfCanActivate()}canActivateChild(e,i){return this.checkIfCanActivate()}checkIfCanActivate(){return this.lastErrorInternal?(this.router.navigate(["vpn","unavailable"],{queryParams:{problem:this.lastErrorInternal}}),ae(!1)):ae(!0)}static{this.\u0275fac=function(i){return new(i||t)(ce(vt))}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Ha=function(t){return t.UnableToConnectWithTheVpnClientApp="unavailable",t.NoLocalVisorPkProvided="pk",t.InvalidStorageState="storage",t.LocalVisorPkChangedDuringUsage="pkChange",t}(Ha||{});let iAe=(()=>{class t extends pn{constructor(e,i,o){super(),this.route=e,this.vpnAuthGuardService=i,this.vpnClientService=o,this.problem=null,this.navigationsSubscription=this.route.queryParamMap.subscribe(r=>{this.problem=r.get("problem"),this.problem||(this.problem=Ha.UnableToConnectWithTheVpnClientApp),this.vpnAuthGuardService.lastError=this.problem,this.vpnClientService.stopContinuallyUpdatingData(),setTimeout(()=>this.navigationsSubscription.unsubscribe())})}getTitle(){return this.problem===Ha.NoLocalVisorPkProvided?"vpn.error-page.text-pk":this.problem===Ha.InvalidStorageState?"vpn.error-page.text-storage":this.problem===Ha.LocalVisorPkChangedDuringUsage?"vpn.error-page.text-pk-change":"vpn.error-page.text"}getInfo(){return this.problem===Ha.NoLocalVisorPkProvided?"vpn.error-page.more-info-pk":this.problem===Ha.InvalidStorageState?"vpn.error-page.more-info-storage":this.problem===Ha.LocalVisorPkChangedDuringUsage?"vpn.error-page.more-info-pk-change":"vpn.error-page.more-info"}static{this.\u0275fac=function(i){return new(i||t)(O(Ai),O(SD),O(hc))}}static{this.\u0275cmp=re({type:t,selectors:[["app-vpn-error"]],standalone:!1,features:[be],decls:12,vars:7,consts:[[1,"main-container"],[1,"text-container"],[1,"inner-container"],[1,"error-icon"],[3,"inline"],[1,"more-info"]],template:function(i,o){1&i&&(h(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3)(4,"mat-icon",4),p(5,"error_outline"),u()(),h(6,"div"),p(7),b(8,"translate"),u(),h(9,"div",5),p(10),b(11,"translate"),u()()()()),2&i&&(d(4),C("inline",!0),d(3),M(y(8,3,o.getTitle())),d(3),M(y(11,5,o.getInfo())))},dependencies:[We,xe],styles:[".main-container[_ngcontent-%COMP%]{height:100%;display:flex}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%]{width:100%;align-self:center;text-align:center}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .inner-container[_ngcontent-%COMP%]{max-width:550px;display:inline-block;font-size:1.25rem}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .inner-container[_ngcontent-%COMP%] .error-icon[_ngcontent-%COMP%]{font-size:80px}.main-container[_ngcontent-%COMP%] .text-container[_ngcontent-%COMP%] .inner-container[_ngcontent-%COMP%] .more-info[_ngcontent-%COMP%]{font-size:.8rem;opacity:.75;margin-top:10px}"]})}}return t})();const oAe=["button"],rAe=["firstInput"],sAe=t=>({"element-disabled":t});let aAe=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s){this.dialogRef=e,this.data=i,this.formBuilder=o,this.snackbarService=r,this.routeService=s}ngOnInit(){this.form=this.formBuilder.group({min:[this.data.minHops,Ne.compose([Ne.required,Ne.maxLength(3),Ne.pattern("^[0-9]+$")])]}),setTimeout(()=>this.firstInput.nativeElement.focus())}ngOnDestroy(){this.operationSubscription&&this.operationSubscription.unsubscribe()}get disableDismiss(){return!!this.button&&this.button.isLoading}save(){!this.form.valid||this.operationSubscription||(this.button.showLoading(),this.operationSubscription=this.routeService.setMinHops(this.data.nodePk,Number.parseInt(this.form.get("min").value,10)).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)}))}onSuccess(e){this.dialogRef.close(!0),this.snackbarService.showDone("router-config.done")}onError(e){this.button.showError(),this.operationSubscription=null,e=Qe(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(di),O(ct),O(Ek))}}static{this.\u0275cmp=re({type:t,selectors:[["app-router-config"]],viewQuery:function(i,o){if(1&i&&ot(oAe,5)(rAe,5),2&i){let r;he(r=fe())&&(o.button=r.first),he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:21,vars:22,consts:[["firstInput",""],["button",""],[3,"headline","dialog","disableDismiss"],[1,"info-container"],[3,"formGroup","ngClass"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","min","maxlength","3","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),b(1,"translate"),h(2,"div",3),p(3),b(4,"translate"),u(),h(5,"form",4)(6,"mat-form-field")(7,"div",5)(8,"label",6),p(9),b(10,"translate"),u(),B(11,"input",7,0),u(),h(13,"mat-error")(14,"span"),p(15),b(16,"translate"),u()()()(),h(17,"app-button",8,1),F("action",function(){return o.save()}),p(19),b(20,"translate"),u()()),2&i&&(C("headline",y(1,10,"router-config.title"))("dialog",o.dialogRef)("disableDismiss",o.disableDismiss),d(3),M(y(4,12,"router-config.info")),d(2),C("formGroup",o.form)("ngClass",se(20,sAe,o.disableDismiss)),d(4),M(y(10,14,"router-config.min-hops")),d(6),M(y(16,16,"router-config.min-hops-error")),d(2),C("disabled",!o.form.valid),d(2),E(" ",y(20,18,"router-config.save-config-button")," "))},dependencies:[$t,xn,Gt,qt,wn,wi,on,mn,sn,Ma,In,ui,gn,xe],styles:[".info-container[_ngcontent-%COMP%]{margin-bottom:10px}"]})}}return t})();const lAe=["button"],cAe=["firstInput"];let dAe=(()=>{class t{static openDialog(e,i){const o=new nn;return o.data=i,o.autoFocus=!1,o.width=rt.smallModalWidth,e.open(t,o)}constructor(e,i,o,r,s,a){this.dialogRef=e,this.data=i,this.formBuilder=o,this.snackbarService=r,this.appsService=s,this.vpnClientService=a}ngOnInit(){this.form=this.formBuilder.group({ip:[this.data.ip,Ne.compose([Ne.maxLength(15),this.validateIp.bind(this)])]}),setTimeout(()=>this.firstInput.nativeElement.focus())}ngOnDestroy(){this.operationSubscription&&this.operationSubscription.unsubscribe()}validateIp(){if(this.form){const e=this.form.get("ip").value;return Rt.checkIfIpValidOrEmpty(e)?null:{invalid:!0}}return null}save(){!this.form.valid||this.operationSubscription||(this.button.showLoading(),this.operationSubscription=this.appsService.changeAppSettings(this.data.nodePk,this.vpnClientService.vpnClientAppName,{dns:this.form.get("ip").value}).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)}))}onSuccess(e){this.dialogRef.close(!0),this.snackbarService.showDone("vpn.dns-config.done")}onError(e){this.button.showError(),this.operationSubscription=null,e=Qe(e),this.snackbarService.showError(e)}static{this.\u0275fac=function(i){return new(i||t)(O(Bt),O(En),O(vB),O(ct),O(Rs),O(hc))}}static{this.\u0275cmp=re({type:t,selectors:[["app-vpn-dns-config"]],viewQuery:function(i,o){if(1&i&&ot(lAe,5)(cAe,5),2&i){let r;he(r=fe())&&(o.button=r.first),he(r=fe())&&(o.firstInput=r.first)}},standalone:!1,decls:14,vars:11,consts:[["firstInput",""],["button",""],[3,"headline"],[3,"formGroup"],[1,"field-container"],["for","remoteKey",1,"field-label"],["formControlName","ip","maxlength","15","matInput",""],["color","primary",1,"float-right",3,"action","disabled"]],template:function(i,o){1&i&&(h(0,"app-dialog",2),b(1,"translate"),h(2,"form",3)(3,"mat-form-field")(4,"div",4)(5,"label",5),p(6),b(7,"translate"),u(),B(8,"input",6,0),u()()(),h(10,"app-button",7,1),F("action",function(){return o.save()}),p(12),b(13,"translate"),u()()),2&i&&(C("headline",y(1,5,"vpn.dns-config.title")),d(2),C("formGroup",o.form),d(4),M(y(7,7,"vpn.dns-config.ip")),d(4),C("disabled",!o.form.valid),d(2),E(" ",y(13,9,"vpn.dns-config.save-config-button")," "))},dependencies:[xn,Gt,qt,wn,wi,on,mn,sn,In,ui,gn,xe],encapsulation:2})}}return t})();const uAe=["topBarLoading"],hAe=["topBarLoaded"],C6=()=>["vpn.title"];function fAe(t,n){if(1&t&&(h(0,"div",2)(1,"div"),B(2,"app-top-bar",4,0),u(),B(4,"app-loading-indicator",5),u()),2&t){const e=v();d(2),C("titleParts",Ct(5,C6))("tabsData",e.tabsData)("selectedTabIndex",2)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk)}}function pAe(t,n){1&t&&B(0,"mat-spinner",17),2&t&&C("diameter",12)}function mAe(t,n){if(1&t){const e=oe();h(0,"div",3)(1,"div",6),B(2,"app-top-bar",4,1),u(),h(4,"div",7)(5,"div",8)(6,"div",9)(7,"div",10)(8,"table",11)(9,"tr")(10,"th",12)(11,"div",13)(12,"div",14),p(13),b(14,"translate"),u()()(),h(15,"th",12),p(16),b(17,"translate"),u()(),h(18,"tr",15),F("click",function(){return j(e),U(v().changeKillswitchOption())}),h(19,"td",12)(20,"div"),p(21),b(22,"translate"),h(23,"mat-icon",16),b(24,"translate"),p(25,"help"),u()()(),h(26,"td",12),B(27,"span"),p(28),b(29,"translate"),x(30,pAe,1,1,"mat-spinner",17),u()(),h(31,"tr",15),F("click",function(){return j(e),U(v().changeGetIpOption())}),h(32,"td",12)(33,"div"),p(34),b(35,"translate"),h(36,"mat-icon",16),b(37,"translate"),p(38,"help"),u()()(),h(39,"td",12),B(40,"span"),p(41),b(42,"translate"),u()(),h(43,"tr",15),F("click",function(){return j(e),U(v().changeDataUnits())}),h(44,"td",12)(45,"div"),p(46),b(47,"translate"),h(48,"mat-icon",16),b(49,"translate"),p(50,"help"),u()()(),h(51,"td",12),p(52),b(53,"translate"),u()(),h(54,"tr",15),F("click",function(){return j(e),U(v().changeHops())}),h(55,"td",12)(56,"div"),p(57),b(58,"translate"),h(59,"mat-icon",16),b(60,"translate"),p(61,"help"),u()()(),h(62,"td",12),p(63),u()(),h(64,"tr",15),F("click",function(){return j(e),U(v().changeDns())}),h(65,"td",12)(66,"div"),p(67),b(68,"translate"),h(69,"mat-icon",16),b(70,"translate"),p(71,"help"),u()()(),h(72,"td",12),p(73),b(74,"translate"),u()()()()()()()()}if(2&t){const e=v();d(2),C("titleParts",Ct(64,C6))("tabsData",e.tabsData)("selectedTabIndex",2)("showUpdateButton",!1)("localVpnKey",e.currentLocalPk),d(11),E(" ",y(14,32,"vpn.settings-page.setting-small-table-label")," "),d(3),E(" ",y(17,34,"vpn.settings-page.value-small-table-label")," "),d(5),E(" ",y(22,36,"vpn.settings-page.killswitch")," "),d(2),C("inline",!0)("matTooltip",y(24,38,"vpn.settings-page.killswitch-info")),d(4),Ze(e.getStatusClass(e.backendData.vpnClientAppData.killswitch)),d(),E(" ",y(29,40,e.getStatusText(e.backendData.vpnClientAppData.killswitch))," "),d(2),S(e.working===e.workingOptions.Killswitch?30:-1),d(4),E(" ",y(35,42,"vpn.settings-page.get-ip")," "),d(2),C("inline",!0)("matTooltip",y(37,44,"vpn.settings-page.get-ip-info")),d(4),Ze(e.getStatusClass(e.getIpOption)),d(),E(" ",y(42,46,e.getStatusText(e.getIpOption))," "),d(5),E(" ",y(47,48,"vpn.settings-page.data-units")," "),d(2),C("inline",!0)("matTooltip",y(49,50,"vpn.settings-page.data-units-info")),d(4),E(" ",y(53,52,e.getUnitsOptionText(e.dataUnitsOption))," "),d(5),E(" ",y(58,54,"vpn.settings-page.minimum-hops")," "),d(2),C("inline",!0)("matTooltip",y(60,56,"vpn.settings-page.minimum-hops-info")),d(4),E(" ",e.backendData.vpnClientAppData.minHops," "),d(4),E(" ",y(68,58,"vpn.settings-page.dns")," "),d(2),C("inline",!0)("matTooltip",y(70,60,"vpn.settings-page.dns-info")),d(4),E(" ",e.backendData.vpnClientAppData.dns?e.backendData.vpnClientAppData.dns:y(74,62,"vpn.settings-page.setting-none")," ")}}var Tc=function(t){return t[t.None=0]="None",t[t.Killswitch=1]="Killswitch",t}(Tc||{});const gAe=[{path:"",component:Ahe},{path:"login",component:XB},{path:"nodes",canActivate:[Kf],canActivateChild:[Kf],children:[{path:"",redirectTo:"list/1",pathMatch:"full"},{path:"list",redirectTo:"list/1",pathMatch:"full"},{path:"list/:page",component:mV},{path:"dmsg",redirectTo:"rewards/1",pathMatch:"full"},{path:"dmsg/:page",redirectTo:"rewards/1"},{path:"rewards",redirectTo:"rewards/1",pathMatch:"full"},{path:"rewards/:page",component:mV},{path:"services-health",component:DEe},{path:"network",component:FEe},{path:"resources",component:JEe},{path:"transports",component:fPe},{path:"dmsg-settings",redirectTo:"list/1"},{path:":key",component:ke,children:[{path:"",redirectTo:"info",pathMatch:"full"},{path:"info",component:KPe},{path:"routing",component:dke},{path:"apps",component:HMe},{path:"resources",component:tTe},{path:"chat",component:pTe},{path:"dmsg",component:TPe},{path:"transports",component:R2e},{path:"transports/:page",redirectTo:"transports"},{path:"routes",redirectTo:"routing",pathMatch:"full"},{path:"routes/:page",redirectTo:"routing"},{path:"rewards",component:eEe},{path:"skynet",component:uIe},{path:"apps-list/:showOfficialApps/:page",component:PPe}]}]},{path:"settings",canActivate:[Kf],canActivateChild:[Kf],children:[{path:"",component:zye},{path:"labels",redirectTo:"labels/1",pathMatch:"full"},{path:"labels/:page",component:fIe}]},{path:"vpnlogin/:key",component:XB},{path:"vpn",canActivate:[SD],canActivateChild:[SD],children:[{path:"unavailable",component:iAe},{path:":key",children:[{path:"status",component:nAe},{path:"servers",redirectTo:"servers/public/1",pathMatch:"full"},{path:"servers/:type/:page",component:m6},{path:"settings",component:(()=>{class t extends pn{constructor(e,i,o,r,s,a){super(),this.vpnClientService=e,this.snackbarService=i,this.appsService=o,this.vpnSavedDataService=r,this.dialog=s,this.loading=!0,this.tabsData=hi.vpnTabsData,this.working=Tc.None,this.workingOptions=Tc,this.navigationsSubscription=a.paramMap.subscribe(l=>{l.has("key")&&(this.currentLocalPk=l.get("key"),hi.changeCurrentPk(this.currentLocalPk),this.tabsData=hi.vpnTabsData)}),this.dataSubscription=this.vpnClientService.backendState.subscribe(l=>{l&&l.serviceState!==Ri.PerformingInitialCheck&&(this.backendData=l,this.loading=!1)}),this.getIpOption=this.vpnSavedDataService.getCheckIpSetting(),this.dataUnitsOption=this.vpnSavedDataService.getDataUnitsSetting()}ngOnDestroy(){this.navigationsSubscription.unsubscribe(),this.dataSubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()}getStatusClass(e){return!0===e?"dot-green":"dot-red"}getStatusText(e){return!0===e?"vpn.settings-page.setting-on":"vpn.settings-page.setting-off"}getUnitsOptionText(e){switch(e){case Zo.OnlyBits:return"vpn.settings-page.data-units-modal.only-bits";case Zo.OnlyBytes:return"vpn.settings-page.data-units-modal.only-bytes";default:return"vpn.settings-page.data-units-modal.bits-speed-and-bytes-volume"}}changeKillswitchOption(){if(this.working===Tc.None)if(this.backendData.vpnClientAppData.running){const e=Rt.createConfirmationDialog(this.dialog,"vpn.settings-page.change-while-connected-confirmation");e.componentInstance.operationAccepted.subscribe(()=>{e.componentInstance.closeModal(),this.finishChangingKillswitchOption()})}else this.finishChangingKillswitchOption();else this.snackbarService.showWarning("vpn.settings-page.working-warning")}finishChangingKillswitchOption(){this.working=Tc.Killswitch,this.operationSubscription=this.appsService.changeAppSettings(this.currentLocalPk,this.vpnClientService.vpnClientAppName,{killswitch:!this.backendData.vpnClientAppData.killswitch}).subscribe(()=>{this.working=Tc.None,this.vpnClientService.updateData()},e=>{this.working=Tc.None,e=Qe(e),this.snackbarService.showError(e)})}changeGetIpOption(){this.getIpOption=!this.getIpOption,this.vpnSavedDataService.setCheckIpSetting(this.getIpOption)}changeDataUnits(){const e=[],i=[];Object.keys(Zo).forEach(o=>{const r={label:this.getUnitsOptionText(Zo[o])};this.dataUnitsOption===Zo[o]&&(r.icon="done"),e.push(r),i.push(Zo[o])}),ao.openDialog(this.dialog,e,"vpn.settings-page.data-units-modal.title").afterClosed().subscribe(o=>{o&&(this.dataUnitsOption=i[o-1],this.vpnSavedDataService.setDataUnitsSetting(this.dataUnitsOption),this.topBarLoading&&this.topBarLoading.updateVpnDataStatsUnit(),this.topBarLoaded&&this.topBarLoaded.updateVpnDataStatsUnit())})}changeHops(){aAe.openDialog(this.dialog,{nodePk:this.currentLocalPk,minHops:this.backendData.vpnClientAppData.minHops}).afterClosed().subscribe()}changeDns(){dAe.openDialog(this.dialog,{nodePk:this.currentLocalPk,ip:this.backendData.vpnClientAppData.dns}).afterClosed().subscribe()}static{this.\u0275fac=function(i){return new(i||t)(O(hc),O(ct),O(Rs),O(uc),O(Ot),O(Ai))}}static{this.\u0275cmp=re({type:t,selectors:[["app-vpn-settings-list"]],viewQuery:function(i,o){if(1&i&&ot(uAe,5)(hAe,5),2&i){let r;he(r=fe())&&(o.topBarLoading=r.first),he(r=fe())&&(o.topBarLoaded=r.first)}},standalone:!1,features:[be],decls:2,vars:2,consts:[["topBarLoading",""],["topBarLoaded",""],[1,"d-flex","flex-column","h-100","w-100"],[1,"row"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton","localVpnKey"],[1,"h-100"],[1,"col-12"],[1,"col-12","mt-4.5","vpn-table-container"],[1,"width-limiter"],[1,"rounded-elevated-box"],[1,"box-internal-container"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table"],[1,"data-column"],[1,"header-container"],[1,"header-text"],[1,"selectable",3,"click"],[1,"help-icon",3,"inline","matTooltip"],[3,"diameter"]],template:function(i,o){1&i&&(x(0,fAe,5,6,"div",2),x(1,mAe,75,65,"div",3)),2&i&&(S(o.loading?0:-1),d(),S(o.loading?-1:1))},dependencies:[We,Kt,so,Yr,Mr,xe],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important;font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important;font-weight:lighter!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], .header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%], .data-column[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.green-clear-text[_ngcontent-%COMP%]{color:#84c826}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.yellow-clear-text[_ngcontent-%COMP%]{color:orange}.red-text[_ngcontent-%COMP%]{color:#da3439}.red-clear-text[_ngcontent-%COMP%]{color:#ff393f}.grey-text[_ngcontent-%COMP%]{color:#777!important}table[_ngcontent-%COMP%]{width:100%}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-top:7px!important;padding-bottom:7px!important;font-size:12px!important;font-weight:400!important}.data-column[_ngcontent-%COMP%]{max-width:0;width:50%}.header-container[_ngcontent-%COMP%]{max-width:100%;display:inline-flex}.header-container[_ngcontent-%COMP%] .header-text[_ngcontent-%COMP%]{flex-grow:1}mat-spinner[_ngcontent-%COMP%]{display:inline-block;opacity:.5;margin-left:2px;position:relative;top:2px}mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}"]})}}return t})()},{path:"**",redirectTo:"status"}]},{path:"**",redirectTo:"/vpn/unavailable?problem=pk"}]},{path:"**",redirectTo:""}];let _Ae=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=tt({type:t})}static{this.\u0275inj=Je({imports:[b5.forRoot(gAe,{useHash:!0}),b5]})}}return t})(),vAe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[ii]})}return t})(),yAe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Je({imports:[f4,Zd,ii,Rf]})}return t})();class CAe{getTranslation(n){return Kn(Ec(995)(`./${n}.json`))}}let wAe=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=tt({type:t})}static{this.\u0275inj=Je({imports:[l5.forRoot({loader:{provide:$f,useClass:CAe}}),l5]})}}return t})(),xAe=(()=>{class t{shouldDetach(e){return!1}store(e,i){}shouldAttach(e){return!1}retrieve(e){return null}shouldReuseRoute(e,i){return!1}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=te({token:t,factory:t.\u0275fac})}}return t})();const SAe={disabled:!0};let kAe=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=tt({type:t,bootstrap:[Xr]})}static{this.\u0275inj=Je({providers:[np,{provide:$4,useValue:{duration:3e3,verticalPosition:"top"}},{provide:k4,useValue:{width:"600px",hasBackdrop:!0}},{provide:pk,useClass:gpe},{provide:O3,useClass:xAe},{provide:TS,useValue:SAe},Sse($l(va.LegacyInterceptors,[{provide:xL,useFactory:mse},{provide:pf,useExisting:xL,multi:!0}]))],imports:[oN,dre,Afe,_Ae,wAe,Due,oue,lv,vpe,pDe,B4,Fue,yAe,jge,Ofe,vAe,qme,Xue,fge,vTe]})}}return t})();(function wA(t,n,e){const i=t.\u0275cmp;i.directiveDefs=Tg(n,dI),i.pipeDefs=Tg(e,tr)})(m6,[$t,Ld,Is,Pn,We,Kt,op,Yr,mv,Mr,g6],[fa,xe]),mie().bootstrapModule(kAe,{applicationProviders:[function fee(t){const n=t?.scheduleInRootZone,e=function hee({ngZoneFactory:t,scheduleInRootZone:n}){return t??=()=>new _e({...VR(),scheduleInRootZone:n}),[{provide:um,useValue:!1},{provide:_e,useFactory:t},{provide:ss,multi:!0,useFactory:()=>{const e=D(dee,{optional:!0});return()=>e.initialize()}},{provide:ss,multi:!0,useFactory:()=>{const e=D(pee);return()=>{e.initialize()}}},{provide:zM,useValue:n??BM}]}({ngZoneFactory:()=>{const i=VR(t);return i.scheduleInRootZone=n,i.shouldCoalesceEventChangeDetection&&vi("NgZone_CoalesceEvent"),new _e(i)},scheduleInRootZone:n});return Hu([{provide:uee,useValue:!0},e])}()]}).catch(t=>console.log(t))},995(Eu,Yv,Ec){var An={"./de.json":[229,[229]],"./de_base.json":[735,[735]],"./en.json":[473,[473]],"./es.json":[18,[18]],"./es_base.json":[434,[434]],"./pt.json":[750,[750]],"./pt_base.json":[718,[718]]};function os(Ua){if(!Ec.o(An,Ua))return Promise.resolve().then(()=>{var Te=new Error("Cannot find module '"+Ua+"'");throw Te.code="MODULE_NOT_FOUND",Te});var Pc=An[Ua],Rn=Pc[0];return Ec.e(Pc[1][0]).then(()=>Ec.t(Rn,19))}os.keys=()=>Object.keys(An),os.id=995,Eu.exports=os}},Eu=>{Eu(Eu.s=398)}]); \ No newline at end of file diff --git a/pkg/visor/static/runtime.5f5290bb093e7f9b.js b/static/skywire-manager-src/dist/runtime.e180a7a1f57101c3.js similarity index 65% rename from pkg/visor/static/runtime.5f5290bb093e7f9b.js rename to static/skywire-manager-src/dist/runtime.e180a7a1f57101c3.js index e9b59d6e88..ce966c02f7 100644 --- a/pkg/visor/static/runtime.5f5290bb093e7f9b.js +++ b/static/skywire-manager-src/dist/runtime.e180a7a1f57101c3.js @@ -1 +1 @@ -(()=>{"use strict";var e,g={},v={};function r(e){var n=v[e];if(void 0!==n)return n.exports;var t=v[e]={exports:{}};return g[e](t,t.exports,r),t.exports}r.m=g,e=[],r.O=(n,t,f,i)=>{if(!t){var a=1/0;for(o=0;o=i)&&Object.keys(r.O).every(b=>r.O[b](t[d]))?t.splice(d--,1):(c=!1,i0&&e[o-1][2]>i;o--)e[o]=e[o-1];e[o]=[t,f,i]},r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},(()=>{var n,e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__;r.t=function(t,f){if(1&f&&(t=this(t)),8&f||"object"==typeof t&&t&&(4&f&&t.__esModule||16&f&&"function"==typeof t.then))return t;var i=Object.create(null);r.r(i);var o={};n=n||[null,e({}),e([]),e(e)];for(var a=2&f&&t;("object"==typeof a||"function"==typeof a)&&!~n.indexOf(a);a=e(a))Object.getOwnPropertyNames(a).forEach(c=>o[c]=()=>t[c]);return o.default=()=>t,r.d(i,o),i}})(),r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((n,t)=>(r.f[t](e,n),n),[])),r.u=e=>e+"."+{18:"b642409e5ce7396b",229:"c28b198c7e8c3360",434:"1689f9ef170dbe39",473:"112ef2b987479257",718:"f6f4ca927aabc898",735:"1d822507e38df57b",750:"320ee2a84d46217c"}[e]+".js",r.miniCssF=e=>{},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={},n="skywire-manager:";r.l=(t,f,i,o)=>{if(e[t])e[t].push(f);else{var a,c;if(void 0!==i)for(var d=document.getElementsByTagName("script"),s=0;s{a.onerror=a.onload=null,clearTimeout(p);var _=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),_&&_.forEach(m=>m(b)),y)return y(b)},p=setTimeout(l.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=l.bind(null,a.onerror),a.onload=l.bind(null,a.onload),c&&document.head.appendChild(a)}}})(),r.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:n=>n},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="",(()=>{var e={121:0};r.f.j=(f,i)=>{var o=r.o(e,f)?e[f]:void 0;if(0!==o)if(o)i.push(o[2]);else if(121!=f){var a=new Promise((u,l)=>o=e[f]=[u,l]);i.push(o[2]=a);var c=r.p+r.u(f),d=new Error;r.l(c,u=>{if(r.o(e,f)&&(0!==(o=e[f])&&(e[f]=void 0),o)){var l=u&&("load"===u.type?"missing":u.type),p=u&&u.target&&u.target.src;d.message="Loading chunk "+f+" failed.\n("+l+": "+p+")",d.name="ChunkLoadError",d.type=l,d.request=p,o[1](d)}},"chunk-"+f,f)}else e[f]=0},r.O.j=f=>0===e[f];var n=(f,i)=>{var d,s,[o,a,c]=i,u=0;if(o.some(p=>0!==e[p])){for(d in a)r.o(a,d)&&(r.m[d]=a[d]);if(c)var l=c(r)}for(f&&f(i);u{"use strict";var e,g={},v={};function r(e){var n=v[e];if(void 0!==n)return n.exports;var t=v[e]={exports:{}};return g[e](t,t.exports,r),t.exports}r.m=g,e=[],r.O=(n,t,f,i)=>{if(!t){var a=1/0;for(o=0;o=i)&&Object.keys(r.O).every(b=>r.O[b](t[d]))?t.splice(d--,1):(l=!1,i0&&e[o-1][2]>i;o--)e[o]=e[o-1];e[o]=[t,f,i]},r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},(()=>{var n,e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__;r.t=function(t,f){if(1&f&&(t=this(t)),8&f||"object"==typeof t&&t&&(4&f&&t.__esModule||16&f&&"function"==typeof t.then))return t;var i=Object.create(null);r.r(i);var o={};n=n||[null,e({}),e([]),e(e)];for(var a=2&f&&t;("object"==typeof a||"function"==typeof a)&&!~n.indexOf(a);a=e(a))Object.getOwnPropertyNames(a).forEach(l=>o[l]=()=>t[l]);return o.default=()=>t,r.d(i,o),i}})(),r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((n,t)=>(r.f[t](e,n),n),[])),r.u=e=>e+"."+{18:"b642409e5ce7396b",229:"c28b198c7e8c3360",434:"1689f9ef170dbe39",473:"fe39a7ded331ced8",718:"f6f4ca927aabc898",735:"1d822507e38df57b",750:"320ee2a84d46217c"}[e]+".js",r.miniCssF=e=>{},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={},n="skywire-manager:";r.l=(t,f,i,o)=>{if(e[t])e[t].push(f);else{var a,l;if(void 0!==i)for(var d=document.getElementsByTagName("script"),s=0;s{a.onerror=a.onload=null,clearTimeout(p);var _=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),_&&_.forEach(m=>m(b)),y)return y(b)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=c.bind(null,a.onerror),a.onload=c.bind(null,a.onload),l&&document.head.appendChild(a)}}})(),r.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:n=>n},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="",(()=>{var e={121:0};r.f.j=(f,i)=>{var o=r.o(e,f)?e[f]:void 0;if(0!==o)if(o)i.push(o[2]);else if(121!=f){var a=new Promise((u,c)=>o=e[f]=[u,c]);i.push(o[2]=a);var l=r.p+r.u(f),d=new Error;r.l(l,u=>{if(r.o(e,f)&&(0!==(o=e[f])&&(e[f]=void 0),o)){var c=u&&("load"===u.type?"missing":u.type),p=u&&u.target&&u.target.src;d.message="Loading chunk "+f+" failed.\n("+c+": "+p+")",d.name="ChunkLoadError",d.type=c,d.request=p,o[1](d)}},"chunk-"+f,f)}else e[f]=0},r.O.j=f=>0===e[f];var n=(f,i)=>{var d,s,[o,a,l]=i,u=0;if(o.some(p=>0!==e[p])){for(d in a)r.o(a,d)&&(r.m[d]=a[d]);if(l)var c=l(r)}for(f&&f(i);umat-icon,.generic-title-container .icon-button{opacity:.85}.subtle-transparent-button:hover,.generic-title-container .options .options-container>mat-icon:hover,.generic-title-container .icon-button:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins{padding:0!important}}@media(max-width:767px){.full-node-list-margins{padding:0!important}}@font-face{font-family:Skycoin;font-style:normal;font-weight:300;src:url(/assets/fonts/skycoin/skycoin-light-webfont.woff2) format("woff2"),url(/assets/fonts/skycoin/skycoin-light-webfont.woff) format("woff")}@font-face{font-family:Skycoin;font-style:normal;font-weight:400;src:url(/assets/fonts/skycoin/skycoin-regular-webfont.woff2) format("woff2"),url(/assets/fonts/skycoin/skycoin-regular-webfont.woff) format("woff")}@font-face{font-family:Skycoin;font-style:normal;font-weight:700;src:url(/assets/fonts/skycoin/skycoin-bold-webfont.woff2) format("woff2"),url(/assets/fonts/skycoin/skycoin-bold-webfont.woff) format("woff")}span{overflow-wrap:break-word}.font-sm{font-size:.875rem!important;font-weight:lighter!important}.font-smaller{font-size:.8rem!important;font-weight:lighter!important}.uppercase{text-transform:uppercase}.single-line,.options-list-button-container button .internal-container{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text{color:#2ecc54}.green-clear-text{color:#84c826}.yellow-text{color:#d48b05}.yellow-clear-text{color:orange}.red-text{color:#da3439}.red-clear-text{color:#ff393f}.grey-text{color:#777!important}.dot-green{height:10px;width:10px;background-color:#2ecc54;border-radius:50%;display:inline-block}.dot-green.sm{height:7px;width:7px}.dot-red{height:10px;width:10px;background-color:#da3439;border-radius:50%;display:inline-block}.dot-red.sm{height:7px;width:7px}.dot-yellow{height:10px;width:10px;background-color:#d48b05;border-radius:50%;display:inline-block}.dot-yellow.sm{height:7px;width:7px}.dot-outline-white{height:10px;width:10px;border-radius:50%;border:solid 1px #F8F9F9;display:inline-block}.dot-outline-white.sm{height:7px;width:7px}.dot-outline-gray{height:10px;width:10px;border-radius:50%;border:solid 1px #777;display:inline-block}.dot-outline-gray.sm{height:7px;width:7px}.mat-mdc-menu-panel{border-radius:10px!important;max-width:none!important}.mat-mdc-menu-item{width:auto!important}.mat-mdc-menu-item mat-icon{opacity:.5}.responsive-table-translucid{background:transparent!important;margin-left:auto;margin-right:auto;border-collapse:separate!important;width:100%;word-break:break-all;color:#f8f9f9!important}.responsive-table-translucid td,.responsive-table-translucid th{color:#f8f9f9!important;padding:12px 10px;border-bottom:1px solid rgba(255,255,255,.15)}.responsive-table-translucid th{font-size:.875rem!important;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:48px}.responsive-table-translucid td{font-size:.8rem!important;font-weight:lighter!important}.responsive-table-translucid tr .sortable-column mat-icon{display:inline;position:relative;top:2px}.responsive-table-translucid .link-row{display:table-row;text-decoration:none}.responsive-table-translucid .link-row:hover{text-decoration:none}.responsive-table-translucid td{vertical-align:middle}.responsive-table-translucid .selection-col{width:30px;padding-top:0;padding-bottom:0}.responsive-table-translucid .selection-col .mat-mdc-checkbox{vertical-align:super}.responsive-table-translucid .action-button,.responsive-table-translucid .big-action-button{width:28px!important;height:28px!important;line-height:16px;font-size:16px;margin-right:5px;padding:0!important;color:#fff!important;min-width:0!important}.responsive-table-translucid .action-button:last-child,.responsive-table-translucid .big-action-button:last-child{margin-right:0}.responsive-table-translucid .action-button .mat-icon,.responsive-table-translucid .big-action-button .mat-icon{margin-right:0!important}.responsive-table-translucid .big-action-button{line-height:18px;font-size:18px}.responsive-table-translucid .selectable,.responsive-table-translucid tr .sortable-column{cursor:pointer}.responsive-table-translucid .selectable:hover,.responsive-table-translucid tr .sortable-column:hover{background:#0003}.responsive-table-translucid .click-effect:active{background:#0006!important}.responsive-table-translucid mat-checkbox>label{margin-bottom:0}.responsive-table-translucid mat-checkbox .mdc-checkbox__background{box-sizing:border-box;width:18px;height:18px;background:#0000004d!important;border-radius:6px;border-width:2px;border-color:#00000080}.responsive-table-translucid mat-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background{background-color:#0000004d!important;border-color:#00000080!important}.responsive-table-translucid mat-checkbox svg{color:#fff!important}.responsive-table-translucid .list-item-container{display:flex;padding:10px 0 10px 15px}.responsive-table-translucid .list-item-container .check-part{width:50px;flex-shrink:0;margin-left:-20px}.responsive-table-translucid .list-item-container .left-part{flex-grow:1}.responsive-table-translucid .list-item-container .left-part .list-row{margin-bottom:5px;word-break:break-word}.responsive-table-translucid .list-item-container .left-part .list-row:last-of-type{margin-bottom:0}.responsive-table-translucid .list-item-container .left-part .long-content{word-break:break-all}.responsive-table-translucid .list-item-container .margin-part{width:5px;height:5px;flex-shrink:0}.responsive-table-translucid .list-item-container .right-part{width:60px;text-align:center;flex-shrink:0}.responsive-table-translucid .list-item-container .right-part button{width:60px;height:60px}.responsive-table-translucid .list-item-container .right-part mat-icon{display:inline;font-size:20px}.responsive-table-translucid .title{font-size:.875rem!important;font-weight:700}@media(min-width:768px){.generic-title-container{padding-right:5px}}@media(max-width:767px){.generic-title-container{margin-right:-15px}}.generic-title-container .title{margin-right:auto;font-size:1rem;font-weight:700}@media(min-width:768px){.generic-title-container .title{margin-left:1.25rem!important}}.generic-title-container .title .filter-label{font-size:.7rem;font-weight:lighter}.generic-title-container .title .help{opacity:.5;font-size:14px;cursor:default}.generic-title-container .icon-button{display:flex;line-height:18px!important;margin-right:15px;background:#f8f9f9;color:#154b6c;border-radius:1000px;cursor:pointer;padding:1px 7px;font-weight:400;border:0;font-size:.8rem;align-items:center}.generic-title-container .icon-button mat-icon{margin-right:2px;font-size:18px;height:auto;width:auto}@media(max-width:767px){.generic-title-container .icon-button{padding:1px 10px;line-height:24px!important;font-size:.875rem!important}.generic-title-container .icon-button mat-icon{margin-right:3px;font-size:22px}}.generic-title-container .options{text-align:right}.generic-title-container .options .options-container{text-align:right;display:inline-flex}.generic-title-container .options .options-container>mat-icon{width:18px!important;height:18px!important;line-height:18px!important;font-size:18px!important;margin-right:15px;background:#f8f9f9;color:#154b6c;border-radius:1000px;cursor:pointer}@media(max-width:767px){.generic-title-container .options .options-container>mat-icon{width:24px!important;height:24px!important;line-height:24px!important;font-size:24px!important}}.generic-title-container .options .options-container .small-icon{font-size:14px!important;text-align:center}.paginator-icons-fixer{margin-right:0!important}mat-form-field{display:block!important}.white-form-field{color:#f8f9f9}.white-form-field .mat-mdc-select-value,.white-form-field .mat-mdc-select-arrow{color:#f8f9f9!important}.white-form-field .mdc-line-ripple:before{border-bottom-color:#f8f9f980!important}.white-form-field input{color:#f8f9f9!important}.white-form-field .mat-mdc-input-element{caret-color:#f8f9f9}.form-help-icon-container,.white-form-help-icon-container{height:0px;text-align:right;color:#215f9e}.white-form-help-icon-container{color:#f8f9f9cc}.element-disabled{pointer-events:none!important;opacity:.5!important}.app-background{width:100%;height:100%;top:0;left:0;position:fixed;background:linear-gradient(#060a10,#0a1421) no-repeat fixed!important;box-shadow:inset 0 0 200px #608dcd40;z-index:-1}.no-gradient-for-elevated-box{box-shadow:5px 5px 7px #00000059!important}.elevated-box,.rounded-elevated-box,.small-rounded-elevated-box{background-image:url(/assets/img/background-pattern.png);box-shadow:inset 0 0 55px #35578666,5px 5px 7px #00000059;border:rgba(156,197,255,.33) solid 1px}.rounded-elevated-box,.small-rounded-elevated-box{width:100%;border-radius:10px;overflow:hidden;padding:3px}.rounded-elevated-box .box-internal-container,.small-rounded-elevated-box .box-internal-container{border-radius:10px;padding:12px;border:rgba(156,197,255,.1155) solid 1px;overflow:hidden}.small-rounded-elevated-box{width:unset;padding:0;box-shadow:inset 0 0 20px #35578666,5px 5px 7px #00000059}.mat-mdc-dialog-surface{border-radius:10px!important;background-image:url(/assets/img/modal-background-pattern.png)!important;box-shadow:inset 0 0 100px #ffffff80,5px 5px 15px #000!important;background-color:#e0e5ec!important;overflow:hidden;padding:24px!important}.mat-mdc-dialog-content{font-family:Skycoin!important;margin:0 -24px -24px!important;padding:24px!important;color:#202226!important;line-height:1.5!important}app-dialog app-loading-indicator{margin-top:32px;margin-bottom:24px}.options-list-button-container{margin:0 -24px}.options-list-button-container button{width:100%}.options-list-button-container button .internal-container{text-align:left;padding:5px 7px}.options-list-button-container button mat-icon{margin-right:10px;position:relative;top:2px;opacity:.5}.options-list-button-container:first-of-type{margin-top:-24px!important}.options-list-button-container:last-of-type{margin-bottom:-24px!important}.info-dialog{word-break:break-all;font-size:.875rem;color:#202226}.info-dialog .title{margin-bottom:2px;font-size:1rem;margin-top:25px;color:#215f9e;display:flex}.info-dialog .title mat-icon{margin-right:5px;position:relative;top:2px}.info-dialog .item{margin-top:2px}.info-dialog .item span{color:#999}.top-dialog-button{margin-left:-24px;margin-right:-24px;font-size:.8rem;background-color:#d9deeb;color:#202226;cursor:pointer}.top-dialog-button:hover{background-color:#cfd5e6}.top-dialog-button .top-dialog-button-content{padding:10px 24px}.top-dialog-button .top-dialog-button-margin{height:1px;background-color:#215f9e33;margin:0 12px}.vpn-small-button{cursor:pointer;-webkit-user-select:none;user-select:none}.vpn-small-button:active{transform:scale(.9)}.vpn-dark-box-radius{border-radius:10px}.vpn-table-container{text-align:center}.vpn-table-container .width-limiter{width:inherit;max-width:1250px;display:inline-block;text-align:initial}*,*:before,*:after{box-sizing:border-box}@media(prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(32,34,38,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media(min-width:1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media(min-width:1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media(min-width:1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media(min-width:1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;line-height:inherit;font-size:calc(1.275rem + .3vw)}@media(min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale(1)}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: .5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #F8F9F9;--bs-list-group-active-bg: #0d6efd;--bs-list-group-active-border-color: #0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:not(.active):hover,.list-group-item-action:not(.active):focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:not(.active):active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width:1300px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-green{--bs-list-group-color: var(--bs-green-text-emphasis);--bs-list-group-bg: var(--bs-green-bg-subtle);--bs-list-group-border-color: var(--bs-green-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-green-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-green-border-subtle);--bs-list-group-active-color: var(--bs-green-bg-subtle);--bs-list-group-active-bg: var(--bs-green-text-emphasis);--bs-list-group-active-border-color: var(--bs-green-text-emphasis)}.list-group-item-red{--bs-list-group-color: var(--bs-red-text-emphasis);--bs-list-group-bg: var(--bs-red-bg-subtle);--bs-list-group-border-color: var(--bs-red-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-red-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-red-border-subtle);--bs-list-group-active-color: var(--bs-red-bg-subtle);--bs-list-group-active-bg: var(--bs-red-text-emphasis);--bs-list-group-active-border-color: var(--bs-red-text-emphasis)}.list-group-item-yellow{--bs-list-group-color: var(--bs-yellow-text-emphasis);--bs-list-group-bg: var(--bs-yellow-bg-subtle);--bs-list-group-border-color: var(--bs-yellow-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-yellow-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-yellow-border-subtle);--bs-list-group-active-color: var(--bs-yellow-bg-subtle);--bs-list-group-active-bg: var(--bs-yellow-text-emphasis);--bs-list-group-active-border-color: var(--bs-yellow-text-emphasis)}.list-group-item-translucid-hover{--bs-list-group-color: var(--bs-translucid-hover-text-emphasis);--bs-list-group-bg: var(--bs-translucid-hover-bg-subtle);--bs-list-group-border-color: var(--bs-translucid-hover-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-translucid-hover-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-translucid-hover-border-subtle);--bs-list-group-active-color: var(--bs-translucid-hover-bg-subtle);--bs-list-group-active-bg: var(--bs-translucid-hover-text-emphasis);--bs-list-group-active-border-color: var(--bs-translucid-hover-text-emphasis)}.list-group-item-translucid-hover-hard{--bs-list-group-color: var(--bs-translucid-hover-hard-text-emphasis);--bs-list-group-bg: var(--bs-translucid-hover-hard-bg-subtle);--bs-list-group-border-color: var(--bs-translucid-hover-hard-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-translucid-hover-hard-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-translucid-hover-hard-border-subtle);--bs-list-group-active-color: var(--bs-translucid-hover-hard-bg-subtle);--bs-list-group-active-bg: var(--bs-translucid-hover-hard-text-emphasis);--bs-list-group-active-border-color: var(--bs-translucid-hover-hard-text-emphasis)}.list-group-item-white{--bs-list-group-color: var(--bs-white-text-emphasis);--bs-list-group-bg: var(--bs-white-bg-subtle);--bs-list-group-border-color: var(--bs-white-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-white-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-white-border-subtle);--bs-list-group-active-color: var(--bs-white-bg-subtle);--bs-list-group-active-bg: var(--bs-white-text-emphasis);--bs-list-group-active-border-color: var(--bs-white-text-emphasis)}.list-group-item-light-gray{--bs-list-group-color: var(--bs-light-gray-text-emphasis);--bs-list-group-bg: var(--bs-light-gray-bg-subtle);--bs-list-group-border-color: var(--bs-light-gray-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-gray-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-gray-border-subtle);--bs-list-group-active-color: var(--bs-light-gray-bg-subtle);--bs-list-group-active-bg: var(--bs-light-gray-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-gray-text-emphasis)}.lead{font-size:1.25rem;font-weight:300}.display-1{font-weight:300;line-height:1.2;font-size:calc(1.625rem + 4.5vw)}@media(min-width:1200px){.display-1{font-size:5rem}}.display-2{font-weight:300;line-height:1.2;font-size:calc(1.575rem + 3.9vw)}@media(min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-weight:300;line-height:1.2;font-size:calc(1.525rem + 3.3vw)}@media(min-width:1200px){.display-3{font-size:4rem}}.display-4{font-weight:300;line-height:1.2;font-size:calc(1.475rem + 2.7vw)}@media(min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-weight:300;line-height:1.2;font-size:calc(1.425rem + 2.1vw)}@media(min-width:1200px){.display-5{font-size:3rem}}.display-6{font-weight:300;line-height:1.2;font-size:calc(1.375rem + 1.5vw)}@media(min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}/*! +@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(MaterialIcons-Regular.1e50f5c2ffa6aba4.eot);src:local("Material Icons"),local("MaterialIcons-Regular"),url(MaterialIcons-Regular.7ea2023eeca07427.woff2) format("woff2"),url(MaterialIcons-Regular.db852539204b1a34.woff) format("woff"),url(MaterialIcons-Regular.196fa4a92dd6fa73.ttf) format("truetype")}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga"}@charset "UTF-8";.cursor-pointer,.highlight-internal-icon{cursor:pointer}.reactivate-mouse{touch-action:initial!important;-webkit-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled{pointer-events:none}.clearfix:after{content:"";display:block;clear:both}.mt-4\.5{margin-top:2rem!important}.highlight-internal-icon mat-icon{opacity:.5}.highlight-internal-icon:hover mat-icon{opacity:.8}.transparent-button{opacity:.5}.transparent-button:hover{opacity:1}.subtle-transparent-button,.generic-title-container .options .options-container>mat-icon,.generic-title-container .icon-button{opacity:.85}.subtle-transparent-button:hover,.generic-title-container .options .options-container>mat-icon:hover,.generic-title-container .icon-button:hover{opacity:1}@media(max-width:767px),(min-width:992px)and (max-width:1299px){.small-node-list-margins{padding:0!important}}@media(max-width:767px){.full-node-list-margins{padding:0!important}}@font-face{font-family:Skycoin;font-style:normal;font-weight:300;src:url(/assets/fonts/skycoin/skycoin-light-webfont.woff2) format("woff2"),url(/assets/fonts/skycoin/skycoin-light-webfont.woff) format("woff")}@font-face{font-family:Skycoin;font-style:normal;font-weight:400;src:url(/assets/fonts/skycoin/skycoin-regular-webfont.woff2) format("woff2"),url(/assets/fonts/skycoin/skycoin-regular-webfont.woff) format("woff")}@font-face{font-family:Skycoin;font-style:normal;font-weight:700;src:url(/assets/fonts/skycoin/skycoin-bold-webfont.woff2) format("woff2"),url(/assets/fonts/skycoin/skycoin-bold-webfont.woff) format("woff")}span{overflow-wrap:break-word}.font-sm{font-size:.875rem!important;font-weight:lighter!important}.font-smaller{font-size:.8rem!important;font-weight:lighter!important}.uppercase{text-transform:uppercase}.single-line,.options-list-button-container button .internal-container{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text{color:#2ecc54}.green-clear-text{color:#84c826}.yellow-text{color:#d48b05}.yellow-clear-text{color:orange}.red-text{color:#da3439}.red-clear-text{color:#ff393f}.grey-text{color:#777!important}.dot-green{height:10px;width:10px;background-color:#2ecc54;border-radius:50%;display:inline-block}.dot-green.sm{height:7px;width:7px}.dot-red{height:10px;width:10px;background-color:#da3439;border-radius:50%;display:inline-block}.dot-red.sm{height:7px;width:7px}.dot-yellow{height:10px;width:10px;background-color:#d48b05;border-radius:50%;display:inline-block}.dot-yellow.sm{height:7px;width:7px}.dot-outline-white{height:10px;width:10px;border-radius:50%;border:solid 1px #F8F9F9;display:inline-block}.dot-outline-white.sm{height:7px;width:7px}.dot-outline-gray{height:10px;width:10px;border-radius:50%;border:solid 1px #777;display:inline-block}.dot-outline-gray.sm{height:7px;width:7px}.mat-mdc-menu-panel{border-radius:10px!important;max-width:none!important}.mat-mdc-menu-item{width:auto!important}.mat-mdc-menu-item mat-icon{opacity:.5}.responsive-table-translucid{background:transparent!important;margin-left:auto;margin-right:auto;border-collapse:separate!important;width:100%;word-break:break-all;color:#f8f9f9!important}.responsive-table-translucid td,.responsive-table-translucid th{color:#f8f9f9!important;padding:12px 10px;border-bottom:1px solid rgba(255,255,255,.15)}.responsive-table-translucid th{font-size:.875rem!important;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:48px}.responsive-table-translucid td{font-size:.8rem!important;font-weight:lighter!important}.responsive-table-translucid tr .sortable-column mat-icon{display:inline;position:relative;top:2px}.responsive-table-translucid .link-row{display:table-row;text-decoration:none}.responsive-table-translucid .link-row:hover{text-decoration:none}.responsive-table-translucid td{vertical-align:middle}.responsive-table-translucid .selection-col{width:30px;padding-top:0;padding-bottom:0}.responsive-table-translucid .selection-col .mat-mdc-checkbox{vertical-align:super}.responsive-table-translucid .action-button,.responsive-table-translucid .big-action-button{width:28px!important;height:28px!important;line-height:16px;font-size:16px;margin-right:5px;padding:0!important;color:#fff!important;min-width:0!important}.responsive-table-translucid .action-button:last-child,.responsive-table-translucid .big-action-button:last-child{margin-right:0}.responsive-table-translucid .action-button .mat-icon,.responsive-table-translucid .big-action-button .mat-icon{margin-right:0!important}.responsive-table-translucid .big-action-button{line-height:18px;font-size:18px}.responsive-table-translucid .selectable,.responsive-table-translucid tr .sortable-column{cursor:pointer}.responsive-table-translucid .selectable:hover,.responsive-table-translucid tr .sortable-column:hover{background:#0003}.responsive-table-translucid .click-effect:active{background:#0006!important}.responsive-table-translucid mat-checkbox>label{margin-bottom:0}.responsive-table-translucid mat-checkbox .mdc-checkbox__background{box-sizing:border-box;width:18px;height:18px;background:#0000004d!important;border-radius:6px;border-width:2px;border-color:#00000080}.responsive-table-translucid mat-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background{background-color:#0000004d!important;border-color:#00000080!important}.responsive-table-translucid mat-checkbox svg{color:#fff!important}.responsive-table-translucid .list-item-container{display:flex;padding:10px 0 10px 15px}.responsive-table-translucid .list-item-container .check-part{width:50px;flex-shrink:0;margin-left:-20px}.responsive-table-translucid .list-item-container .left-part{flex-grow:1}.responsive-table-translucid .list-item-container .left-part .list-row{margin-bottom:5px;word-break:break-word}.responsive-table-translucid .list-item-container .left-part .list-row:last-of-type{margin-bottom:0}.responsive-table-translucid .list-item-container .left-part .long-content{word-break:break-all}.responsive-table-translucid .list-item-container .margin-part{width:5px;height:5px;flex-shrink:0}.responsive-table-translucid .list-item-container .right-part{width:60px;text-align:center;flex-shrink:0}.responsive-table-translucid .list-item-container .right-part button{width:60px;height:60px}.responsive-table-translucid .list-item-container .right-part mat-icon{display:inline;font-size:20px}.responsive-table-translucid .title{font-size:.875rem!important;font-weight:700}@media(min-width:768px){.generic-title-container{padding-right:5px}}@media(max-width:767px){.generic-title-container{margin-right:-15px}}.generic-title-container .title{margin-right:auto;font-size:1rem;font-weight:700}@media(min-width:768px){.generic-title-container .title{margin-left:1.25rem!important}}.generic-title-container .title .filter-label{font-size:.7rem;font-weight:lighter}.generic-title-container .title .help{opacity:.5;font-size:14px;cursor:default}.generic-title-container .icon-button{display:flex;line-height:18px!important;margin-right:15px;background:#f8f9f9;color:#154b6c;border-radius:1000px;cursor:pointer;padding:1px 7px;font-weight:400;border:0;font-size:.8rem;align-items:center}.generic-title-container .icon-button mat-icon{margin-right:2px;font-size:18px;height:auto;width:auto}@media(max-width:767px){.generic-title-container .icon-button{padding:1px 10px;line-height:24px!important;font-size:.875rem!important}.generic-title-container .icon-button mat-icon{margin-right:3px;font-size:22px}}.generic-title-container .options{text-align:right}.generic-title-container .options .options-container{text-align:right;display:inline-flex}.generic-title-container .options .options-container>mat-icon{width:18px!important;height:18px!important;line-height:18px!important;font-size:18px!important;margin-right:15px;background:#f8f9f9;color:#154b6c;border-radius:1000px;cursor:pointer}@media(max-width:767px){.generic-title-container .options .options-container>mat-icon{width:24px!important;height:24px!important;line-height:24px!important;font-size:24px!important}}.generic-title-container .options .options-container .small-icon{font-size:14px!important;text-align:center}.paginator-icons-fixer{margin-right:0!important}mat-form-field{display:block!important}.white-form-field{color:#f8f9f9}.white-form-field .mat-mdc-select-value,.white-form-field .mat-mdc-select-arrow{color:#f8f9f9!important}.white-form-field .mdc-line-ripple:before{border-bottom-color:#f8f9f980!important}.white-form-field input{color:#f8f9f9!important}.white-form-field .mat-mdc-input-element{caret-color:#f8f9f9}.form-help-icon-container,.white-form-help-icon-container{height:0px;text-align:right;color:#215f9e}.white-form-help-icon-container{color:#f8f9f9cc}.element-disabled{pointer-events:none!important;opacity:.5!important}.info-line{word-break:break-word;margin-top:7px;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.info-line .text-with-right-margin{margin-right:5px}.info-line .text-with-small-right-margin{margin-right:3px}.info-line .link-icon{font-size:20px;line-height:1;color:#fff!important;cursor:pointer}.info-line .edit-icon{display:inline!important}.info-line mat-icon{position:relative;top:3px;-webkit-user-select:none;user-select:none}.info-line i{margin-left:7px}.info-line .title{opacity:.7;white-space:nowrap;min-width:120px;font-size:.9em}.toggle-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.toggle-line .info-tip{opacity:.5;font-size:16px;cursor:help}.collapsible-link{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:4px;margin-top:6px;opacity:.85}.collapsible-link:hover{opacity:1}.collapsible-header{display:inline-flex!important;align-items:center;gap:6px}.inline-edit-btn{margin-left:4px;height:24px;width:24px;line-height:24px;opacity:.7}.inline-edit-btn:hover{opacity:1}.inline-form{display:flex;flex-direction:column;gap:8px;margin-top:6px;margin-bottom:6px}.inline-form .inline-form-field{width:100%}.inline-form .inline-form-field-sm{width:120px}.inline-form .inline-form-actions{display:flex;gap:8px;flex-wrap:wrap}.section-title{font-size:.95em;font-weight:500;color:#ffffffeb;display:block;margin-bottom:4px}.app-background{width:100%;height:100%;top:0;left:0;position:fixed;background:linear-gradient(#060a10,#0a1421) no-repeat fixed!important;box-shadow:inset 0 0 200px #608dcd40;z-index:-1}.no-gradient-for-elevated-box{box-shadow:5px 5px 7px #00000059!important}.elevated-box,.rounded-elevated-box,.small-rounded-elevated-box{background-image:url(/assets/img/background-pattern.png);box-shadow:inset 0 0 55px #35578666,5px 5px 7px #00000059;border:rgba(156,197,255,.33) solid 1px}.rounded-elevated-box,.small-rounded-elevated-box{width:100%;border-radius:10px;overflow:hidden;padding:3px}.rounded-elevated-box .box-internal-container,.small-rounded-elevated-box .box-internal-container{border-radius:10px;padding:12px;border:rgba(156,197,255,.1155) solid 1px;overflow:hidden}.small-rounded-elevated-box{width:unset;padding:0;box-shadow:inset 0 0 20px #35578666,5px 5px 7px #00000059}.mat-mdc-dialog-surface{border-radius:10px!important;background-image:url(/assets/img/modal-background-pattern.png)!important;box-shadow:inset 0 0 100px #ffffff80,5px 5px 15px #000!important;background-color:#e0e5ec!important;overflow:hidden;padding:24px!important}.mat-mdc-dialog-content{font-family:Skycoin!important;margin:0 -24px -24px!important;padding:24px!important;color:#202226!important;line-height:1.5!important}app-dialog app-loading-indicator{margin-top:32px;margin-bottom:24px}.options-list-button-container{margin:0 -24px}.options-list-button-container button{width:100%}.options-list-button-container button .internal-container{text-align:left;padding:5px 7px}.options-list-button-container button mat-icon{margin-right:10px;position:relative;top:2px;opacity:.5}.options-list-button-container:first-of-type{margin-top:-24px!important}.options-list-button-container:last-of-type{margin-bottom:-24px!important}.info-dialog{word-break:break-all;font-size:.875rem;color:#202226}.info-dialog .title{margin-bottom:2px;font-size:1rem;margin-top:25px;color:#215f9e;display:flex}.info-dialog .title mat-icon{margin-right:5px;position:relative;top:2px}.info-dialog .item{margin-top:2px}.info-dialog .item span{color:#999}.top-dialog-button{margin-left:-24px;margin-right:-24px;font-size:.8rem;background-color:#d9deeb;color:#202226;cursor:pointer}.top-dialog-button:hover{background-color:#cfd5e6}.top-dialog-button .top-dialog-button-content{padding:10px 24px}.top-dialog-button .top-dialog-button-margin{height:1px;background-color:#215f9e33;margin:0 12px}.vpn-small-button{cursor:pointer;-webkit-user-select:none;user-select:none}.vpn-small-button:active{transform:scale(.9)}.vpn-dark-box-radius{border-radius:10px}.vpn-table-container{text-align:center}.vpn-table-container .width-limiter{width:inherit;max-width:1250px;display:inline-block;text-align:initial}*,*:before,*:after{box-sizing:border-box}@media(prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(32,34,38,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media(min-width:1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media(min-width:1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media(min-width:1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media(min-width:1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;line-height:inherit;font-size:calc(1.275rem + .3vw)}@media(min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale(1)}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: .5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #F8F9F9;--bs-list-group-active-bg: #0d6efd;--bs-list-group-active-border-color: #0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:not(.active):hover,.list-group-item-action:not(.active):focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:not(.active):active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width:1300px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-green{--bs-list-group-color: var(--bs-green-text-emphasis);--bs-list-group-bg: var(--bs-green-bg-subtle);--bs-list-group-border-color: var(--bs-green-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-green-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-green-border-subtle);--bs-list-group-active-color: var(--bs-green-bg-subtle);--bs-list-group-active-bg: var(--bs-green-text-emphasis);--bs-list-group-active-border-color: var(--bs-green-text-emphasis)}.list-group-item-red{--bs-list-group-color: var(--bs-red-text-emphasis);--bs-list-group-bg: var(--bs-red-bg-subtle);--bs-list-group-border-color: var(--bs-red-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-red-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-red-border-subtle);--bs-list-group-active-color: var(--bs-red-bg-subtle);--bs-list-group-active-bg: var(--bs-red-text-emphasis);--bs-list-group-active-border-color: var(--bs-red-text-emphasis)}.list-group-item-yellow{--bs-list-group-color: var(--bs-yellow-text-emphasis);--bs-list-group-bg: var(--bs-yellow-bg-subtle);--bs-list-group-border-color: var(--bs-yellow-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-yellow-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-yellow-border-subtle);--bs-list-group-active-color: var(--bs-yellow-bg-subtle);--bs-list-group-active-bg: var(--bs-yellow-text-emphasis);--bs-list-group-active-border-color: var(--bs-yellow-text-emphasis)}.list-group-item-translucid-hover{--bs-list-group-color: var(--bs-translucid-hover-text-emphasis);--bs-list-group-bg: var(--bs-translucid-hover-bg-subtle);--bs-list-group-border-color: var(--bs-translucid-hover-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-translucid-hover-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-translucid-hover-border-subtle);--bs-list-group-active-color: var(--bs-translucid-hover-bg-subtle);--bs-list-group-active-bg: var(--bs-translucid-hover-text-emphasis);--bs-list-group-active-border-color: var(--bs-translucid-hover-text-emphasis)}.list-group-item-translucid-hover-hard{--bs-list-group-color: var(--bs-translucid-hover-hard-text-emphasis);--bs-list-group-bg: var(--bs-translucid-hover-hard-bg-subtle);--bs-list-group-border-color: var(--bs-translucid-hover-hard-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-translucid-hover-hard-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-translucid-hover-hard-border-subtle);--bs-list-group-active-color: var(--bs-translucid-hover-hard-bg-subtle);--bs-list-group-active-bg: var(--bs-translucid-hover-hard-text-emphasis);--bs-list-group-active-border-color: var(--bs-translucid-hover-hard-text-emphasis)}.list-group-item-white{--bs-list-group-color: var(--bs-white-text-emphasis);--bs-list-group-bg: var(--bs-white-bg-subtle);--bs-list-group-border-color: var(--bs-white-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-white-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-white-border-subtle);--bs-list-group-active-color: var(--bs-white-bg-subtle);--bs-list-group-active-bg: var(--bs-white-text-emphasis);--bs-list-group-active-border-color: var(--bs-white-text-emphasis)}.list-group-item-light-gray{--bs-list-group-color: var(--bs-light-gray-text-emphasis);--bs-list-group-bg: var(--bs-light-gray-bg-subtle);--bs-list-group-border-color: var(--bs-light-gray-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-gray-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-gray-border-subtle);--bs-list-group-active-color: var(--bs-light-gray-bg-subtle);--bs-list-group-active-bg: var(--bs-light-gray-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-gray-text-emphasis)}.lead{font-size:1.25rem;font-weight:300}.display-1{font-weight:300;line-height:1.2;font-size:calc(1.625rem + 4.5vw)}@media(min-width:1200px){.display-1{font-size:5rem}}.display-2{font-weight:300;line-height:1.2;font-size:calc(1.575rem + 3.9vw)}@media(min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-weight:300;line-height:1.2;font-size:calc(1.525rem + 3.3vw)}@media(min-width:1200px){.display-3{font-size:4rem}}.display-4{font-weight:300;line-height:1.2;font-size:calc(1.475rem + 2.7vw)}@media(min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-weight:300;line-height:1.2;font-size:calc(1.425rem + 2.1vw)}@media(min-width:1200px){.display-5{font-size:3rem}}.display-6{font-weight:300;line-height:1.2;font-size:calc(1.375rem + 1.5vw)}@media(min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}/*! * Bootstrap Grid v5.3.8 (https://getbootstrap.com/) * Copyright 2011-2025 The Bootstrap Authors * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) diff --git a/static/skywire-manager-src/src/app/app-routing.module.ts b/static/skywire-manager-src/src/app/app-routing.module.ts index 27833b9ea9..300fcb894a 100644 --- a/static/skywire-manager-src/src/app/app-routing.module.ts +++ b/static/skywire-manager-src/src/app/app-routing.module.ts @@ -11,12 +11,18 @@ import { RoutingComponent } from './components/pages/node/routing/routing.compon import { AppsComponent } from './components/pages/node/apps/apps.component'; import { NodeResourcesComponent } from './components/pages/node/node-resources/node-resources.component'; import { SkychatComponent } from './components/pages/node/skychat/skychat.component'; +import { BandwidthComponent } from './components/pages/node/bandwidth/bandwidth.component'; +import { UptimeComponent } from './components/pages/node/uptime/uptime.component'; +import { TerminalComponent } from './components/pages/node/terminal/terminal.component'; +import { WebProxyComponent } from './components/pages/node/web-proxy/web-proxy.component'; +import { LogsComponent } from './components/pages/node/logs/logs.component'; import { AllTransportsComponent } from './components/pages/node/routing/all-transports/all-transports.component'; import { AllRoutesComponent } from './components/pages/node/routing/all-routes/all-routes.component'; import { NodeRewardsComponent } from './components/pages/node/rewards/node-rewards.component'; import { ServicesHealthComponent } from './components/pages/services-health/services-health.component'; import { NetworkViewComponent } from './components/pages/network-view/network-view.component'; import { MultiVisorResourcesComponent } from './components/pages/multi-visor-resources/multi-visor-resources.component'; +import { MultiVisorUptimeComponent } from './components/pages/multi-visor-uptime/multi-visor-uptime.component'; import { NetworkTransportsComponent } from './components/pages/network-transports/network-transports.component'; import { DmsgSettingsComponent } from './components/pages/dmsg-settings/dmsg-settings.component'; import { AllAppsComponent } from './components/pages/node/apps/all-apps/all-apps.component'; @@ -87,6 +93,10 @@ const routes: Routes = [ path: 'resources', component: MultiVisorResourcesComponent }, + { + path: 'uptime', + component: MultiVisorUptimeComponent + }, { path: 'transports', component: NetworkTransportsComponent @@ -127,6 +137,26 @@ const routes: Routes = [ path: 'chat', component: SkychatComponent }, + { + path: 'bandwidth', + component: BandwidthComponent + }, + { + path: 'uptime', + component: UptimeComponent + }, + { + path: 'terminal', + component: TerminalComponent + }, + { + path: 'web-proxy', + component: WebProxyComponent + }, + { + path: 'logs', + component: LogsComponent + }, { path: 'dmsg', component: DmsgSettingsComponent diff --git a/static/skywire-manager-src/src/app/app.module.ts b/static/skywire-manager-src/src/app/app.module.ts index 1610807259..16f3397102 100644 --- a/static/skywire-manager-src/src/app/app.module.ts +++ b/static/skywire-manager-src/src/app/app.module.ts @@ -74,8 +74,14 @@ import { NodeInfoContentComponent } from './components/pages/node/node-info/node import { ResourceMonitorComponent } from './components/pages/node/resource-monitor/resource-monitor.component'; import { NodeResourcesComponent } from './components/pages/node/node-resources/node-resources.component'; import { SkychatComponent } from './components/pages/node/skychat/skychat.component'; +import { BandwidthComponent } from './components/pages/node/bandwidth/bandwidth.component'; +import { UptimeComponent } from './components/pages/node/uptime/uptime.component'; +import { TerminalComponent } from './components/pages/node/terminal/terminal.component'; +import { WebProxyComponent } from './components/pages/node/web-proxy/web-proxy.component'; +import { LogsComponent } from './components/pages/node/logs/logs.component'; import { NetworkViewComponent } from './components/pages/network-view/network-view.component'; import { MultiVisorResourcesComponent } from './components/pages/multi-visor-resources/multi-visor-resources.component'; +import { MultiVisorUptimeComponent } from './components/pages/multi-visor-uptime/multi-visor-uptime.component'; import { NetworkTransportsComponent } from './components/pages/network-transports/network-transports.component'; import { NodeInfoComponent } from './components/pages/node/node-info/node-info.component'; import { SelectOptionComponent } from './components/layout/select-option/select-option.component'; @@ -171,8 +177,14 @@ const globalRippleConfig: RippleGlobalOptions = { ResourceMonitorComponent, NodeResourcesComponent, SkychatComponent, + BandwidthComponent, + UptimeComponent, + TerminalComponent, + WebProxyComponent, + LogsComponent, NetworkViewComponent, MultiVisorResourcesComponent, + MultiVisorUptimeComponent, NetworkTransportsComponent, NodeInfoComponent, SelectOptionComponent, diff --git a/static/skywire-manager-src/src/app/components/pages/multi-visor-resources/multi-visor-resources.component.html b/static/skywire-manager-src/src/app/components/pages/multi-visor-resources/multi-visor-resources.component.html index 230d6685fe..694aa60e65 100644 --- a/static/skywire-manager-src/src/app/components/pages/multi-visor-resources/multi-visor-resources.component.html +++ b/static/skywire-manager-src/src/app/components/pages/multi-visor-resources/multi-visor-resources.component.html @@ -34,87 +34,110 @@ } - - - - - - - - - - - - @for (r of rows; track trackRow($index, r)) { + +
+
{{ 'multi-resources.visor' | translate }}{{ 'multi-resources.cpu' | translate }}{{ 'multi-resources.mem' | translate }}{{ 'multi-resources.disk' | translate }}{{ 'multi-resources.tx' | translate }}{{ 'multi-resources.rx' | translate }}{{ 'multi-resources.proc-rss' | translate }}
- - - - - - - - + + + + + + + + + + - } -
- - - - {{ r.node.label || r.node.localPk }} - -
{{ r.node.localPk }}
- @if (r.error) { -
{{ r.error }}
- } -
- @if (r.stats?.cpu_percent !== undefined) { - {{ r.stats.cpu_percent | number: '1.0-1' }}% - } @else { - - - } - - @if (r.stats?.mem_percent !== undefined) { - {{ r.stats.mem_percent | number: '1.0-1' }}% - ({{ formatBytes(r.stats.mem_used) }} / {{ formatBytes(r.stats.mem_total) }}) - } @else { - - - } - - @if (r.stats?.disk_percent !== undefined) { - {{ r.stats.disk_percent | number: '1.0-1' }}% - } @else { - - - } - {{ formatRate(r.txRate) }}{{ formatRate(r.rxRate) }}{{ formatBytes(r.stats?.process?.mem_rss) }}{{ 'multi-resources.visor' | translate }}{{ 'nodes.ip-location' | translate }}{{ 'multi-resources.cpu' | translate }}{{ 'multi-resources.mem' | translate }}{{ 'multi-resources.disk' | translate }}{{ 'multi-resources.tx' | translate }}{{ 'multi-resources.rx' | translate }}{{ 'multi-resources.proc-rss' | translate }}
+ @for (r of rows; track trackRow($index, r)) { + + + + + +
{{ r.node.label || r.node.localPk }}
+
{{ r.node.localPk }}
+ @if (r.error) { +
{{ r.error }}
+ } + + + @if (r.node.publicIp || r.node.ip) { + @if (r.node.ip && r.node.publicIp && r.node.ip !== r.node.publicIp) { +
{{ r.node.ip }}
+
{{ r.node.publicIp }}
+ } @else if (r.node.publicIp) { +
{{ r.node.publicIp }}
+ } @else if (r.node.ip) { +
{{ r.node.ip }}
+ } + @if (r.node.countryCode) { +
{{ r.node.cityName ? r.node.cityName + ', ' : '' }}{{ r.node.regionName ? r.node.regionName + ', ' : '' }}{{ r.node.countryCode }}
+ } + } @else { + - + } + + + @if (r.stats?.cpu_percent !== undefined) { + {{ r.stats.cpu_percent | number: '1.0-1' }}% + } @else { - } + + + @if (r.stats?.mem_percent !== undefined) { + {{ r.stats.mem_percent | number: '1.0-1' }}% +
{{ fmtBytes(r.stats.mem_used) }} / {{ fmtBytes(r.stats.mem_total) }}
+ } @else { - } + + + @if (r.stats?.disk_percent !== undefined) { + {{ r.stats.disk_percent | number: '1.0-1' }}% + } @else { - } + + {{ formatRate(r.txRate) }} + {{ formatRate(r.rxRate) }} + {{ formatBytes(r.stats?.process?.mem_rss) }} + + @if (r.node.online) { + chevron_right + } + +
+ } + - -
- @for (r of rows; track trackRow($index, r)) { -
- -
{{ r.node.localPk }}
- @if (r.error) { -
{{ r.error }}
- } - @if (r.stats) { -
-
{{ 'multi-resources.cpu' | translate }}: {{ r.stats.cpu_percent | number: '1.0-1' }}%
-
{{ 'multi-resources.mem' | translate }}: {{ r.stats.mem_percent | number: '1.0-1' }}%
-
{{ 'multi-resources.disk' | translate }}: {{ r.stats.disk_percent | number: '1.0-1' }}%
-
{{ 'multi-resources.tx' | translate }}: {{ formatRate(r.txRate) }}
-
{{ 'multi-resources.rx' | translate }}: {{ formatRate(r.rxRate) }}
-
{{ 'multi-resources.proc-rss' | translate }}: {{ formatBytes(r.stats.process?.mem_rss) }}
+ + - } -
+ + } +
+
} diff --git a/static/skywire-manager-src/src/app/components/pages/multi-visor-resources/multi-visor-resources.component.ts b/static/skywire-manager-src/src/app/components/pages/multi-visor-resources/multi-visor-resources.component.ts index a854a87f7c..fe4553c918 100644 --- a/static/skywire-manager-src/src/app/components/pages/multi-visor-resources/multi-visor-resources.component.ts +++ b/static/skywire-manager-src/src/app/components/pages/multi-visor-resources/multi-visor-resources.component.ts @@ -137,7 +137,7 @@ export class MultiVisorResourcesComponent extends PageBaseComponent implements O this.rows.forEach((r) => prevByPk.set(r.node.localPk, r)); const now = Date.now(); - this.rows = nodes.map((node) => { + const next = nodes.map((node) => { const fresh = byPk.get(node.localPk); const prev = prevByPk.get(node.localPk); const row: VisorRow = { node, ...fresh }; @@ -159,6 +159,16 @@ export class MultiVisorResourcesComponent extends PageBaseComponent implements O } return row; }); + // Stable-sort by label (case-insensitive), falling back to PK so + // rows don't shuffle between polls when getNodes() returns a + // different order from one tick to the next. + next.sort((a, b) => { + const la = (a.node.label || '').toLowerCase(); + const lb = (b.node.label || '').toLowerCase(); + if (la !== lb) { return la < lb ? -1 : 1; } + return a.node.localPk < b.node.localPk ? -1 : 1; + }); + this.rows = next; } /** Color class buckets — same thresholds as per-visor monitor. */ diff --git a/static/skywire-manager-src/src/app/components/pages/multi-visor-uptime/multi-visor-uptime.component.html b/static/skywire-manager-src/src/app/components/pages/multi-visor-uptime/multi-visor-uptime.component.html new file mode 100644 index 0000000000..212d6f1a97 --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/multi-visor-uptime/multi-visor-uptime.component.html @@ -0,0 +1,109 @@ + + +
+
+
+
+ {{ 'uptime.window' | translate }}: + + + +
+
+ {{ 'uptime.fleet-filter' | translate }}: + + +
+ +
+ + @if (loading && rows.length === 0) { +
+ + {{ 'uptime.loading-fleet' | translate }} +
+ } + + @if (error && rows.length === 0) { +
+ error_outline + {{ error }} +
+ } + + @if (!loading && !error && rows.length === 0) { +
{{ 'uptime.fleet-empty' | translate }}
+ } + + @if (lastUpdated && rows.length > 0) { +
+ schedule + + {{ rows.length }} {{ 'common.visors' | translate }} · {{ 'uptime.last-updated' | translate }}: {{ lastUpdated | date: 'HH:mm:ss' }} + +
+ } + + @if (rows.length > 0) { +
+ {{ 'uptime.legend' | translate }}: + {{ 'uptime.legend-down' | translate }} + 1–3 + 4–6 + 7–9 + {{ 'uptime.legend-up' | translate }} + {{ 'uptime.legend-future' | translate }} +
+ +
+ @if (ticks.length > 0) { +
+   +   +
+ @for (t of ticks; track t.left) { + {{ t.label }} + } +
+   +
+ } + + @for (r of rows; track trackRow($index, r)) { +
+ + + @if (r.managed) { + {{ r.pk }} + } @else { + {{ r.pk }} + } + + + {{ fmtPct(r.recentPct) }} + +
+ @for (b of r.blocks; track trackBlock($index, b)) { + + } +
+ + {{ fmtPct(r.windowPct) }} + +
+ } +
+ } +
+
diff --git a/static/skywire-manager-src/src/app/components/pages/multi-visor-uptime/multi-visor-uptime.component.scss b/static/skywire-manager-src/src/app/components/pages/multi-visor-uptime/multi-visor-uptime.component.scss new file mode 100644 index 0000000000..fa244c71cb --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/multi-visor-uptime/multi-visor-uptime.component.scss @@ -0,0 +1,240 @@ +@import "variables"; + +.up-controls { + display: flex; + align-items: center; + gap: 16px; + flex-wrap: wrap; + margin-bottom: 12px; + + .control-group { + display: flex; + align-items: center; + gap: 4px; + flex-wrap: wrap; + + .control-label { + font-size: 0.85em; + color: rgba(255, 255, 255, 0.65); + } + + button { + min-width: 0; + padding: 0 12px !important; + opacity: 0.6; + color: rgba(255, 255, 255, 0.85) !important; + + &.active { + opacity: 1; + background: rgba(33, 150, 243, 0.18) !important; + color: #fff !important; + } + } + } + + .refresh-btn { + margin-left: auto; + color: rgba(255, 255, 255, 0.85) !important; + .mat-icon { color: inherit; } + } +} + +.loading-row, .error-row { + display: flex; + align-items: center; + padding: 12px; +} + +.summary-line { + display: flex; + align-items: center; + font-size: 0.9em; + color: rgba(255, 255, 255, 0.7); + margin-bottom: 8px; + .mat-icon { font-size: 16px; height: 16px; width: 16px; } +} + +.up-empty { + padding: 24px; + text-align: center; + color: rgba(255, 255, 255, 0.5); + font-style: italic; +} + +.legend { + display: flex; + align-items: center; + gap: 12px; + flex-wrap: wrap; + margin-bottom: 8px; + color: rgba(255, 255, 255, 0.65); + + .legend-label { + font-weight: 600; + color: rgba(255, 255, 255, 0.75); + } + .legend-item { + display: inline-flex; + align-items: center; + gap: 4px; + } + .up-block { + display: inline-block; + width: 12px; + height: 10px; + vertical-align: middle; + border: 1px solid rgba(0, 0, 0, 0.25); + border-radius: 1px; + } +} + +.fleet-graph { + display: flex; + flex-direction: column; + gap: 1px; + font-family: monospace; +} + +.up-row { + display: flex; + align-items: center; + gap: 8px; + padding: 1px 0; + + .up-row-pk { + flex: 0 0 auto; + width: 600px; + max-width: 38vw; + color: rgba(255, 255, 255, 0.75); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + + a { + color: inherit; + text-decoration: none; + &:hover { text-decoration: underline; } + } + } + + .up-row-bar { + flex: 1; + display: flex; + height: 14px; + background: rgba(0, 0, 0, 0.2); + border-radius: 2px; + overflow: hidden; + min-width: 0; + } + + .up-row-today { + flex: 0 0 auto; + width: 56px; + text-align: right; + font-weight: 600; + } + + .up-row-pct { + flex: 0 0 auto; + width: 56px; + text-align: right; + } + + // The tick-row inherits .up-row spacing so the labels above line up + // exactly with the bar grid below. + &.tick-row { + align-items: flex-end; + padding: 0; + .tick-bar { + position: relative; + height: 14px; + background: transparent; + border-radius: 0; + overflow: visible; + } + .tick { + position: absolute; + bottom: 0; + transform: translateX(-50%); + font-size: 0.75em; + color: rgba(255, 255, 255, 0.5); + pointer-events: none; + white-space: nowrap; + + &::after { + content: ''; + display: block; + margin: 0 auto; + width: 1px; + height: 4px; + background: rgba(255, 255, 255, 0.3); + } + } + } + + &.row-offline { opacity: 0.6; } +} + +.up-block { + flex: 1; + min-width: 1px; + height: 100%; + border-right: 1px solid rgba(0, 0, 0, 0.18); + + &:last-child { border-right: none; } + + // Density gradient for online-slot count within an hour. + &.lvl0 { background: rgba(229, 57, 53, 0.35); } + &.lvl1 { background: rgba(76, 175, 80, 0.25); } + &.lvl2 { background: rgba(76, 175, 80, 0.5); } + &.lvl3 { background: rgba(76, 175, 80, 0.75); } + &.lvl4 { background: #4caf50; } + + // Future hours — neutral hatched band, never red. + &.future { + background: rgba(255, 255, 255, 0.04); + background-image: repeating-linear-gradient( + 45deg, + transparent, + transparent 2px, + rgba(255, 255, 255, 0.06) 2px, + rgba(255, 255, 255, 0.06) 4px + ); + } +} + +.dot { + display: inline-block; + width: 9px; + height: 9px; + border-radius: 50%; + margin-right: 6px; + vertical-align: middle; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.4) inset; + &.online { + background: #4caf50; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.4) inset, 0 0 4px rgba(76, 175, 80, 0.7); + } + &.offline { + background: #e53935; + } +} + +.mono { font-family: monospace; } +.small { font-size: 0.85em; } +.dim { color: rgba(255, 255, 255, 0.55); } + +.up-good { color: #4caf50; } +.up-mid { color: #ff9800; } +.up-bad { color: #e53935; } + +.ml-2 { margin-left: 8px; } +.ml-1 { margin-left: 4px; } +.mt-3 { margin-top: 12px; } + +@media (max-width: 1100px) { + .up-row .up-row-pk { + width: 280px; + max-width: 35vw; + } +} diff --git a/static/skywire-manager-src/src/app/components/pages/multi-visor-uptime/multi-visor-uptime.component.ts b/static/skywire-manager-src/src/app/components/pages/multi-visor-uptime/multi-visor-uptime.component.ts new file mode 100644 index 0000000000..b0e9725bf4 --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/multi-visor-uptime/multi-visor-uptime.component.ts @@ -0,0 +1,376 @@ +import { Component, OnDestroy, OnInit, ChangeDetectorRef } from '@angular/core'; +import { Subscription, interval, startWith, of, forkJoin, timer } from 'rxjs'; +import { switchMap, catchError, takeUntil } from 'rxjs/operators'; + +import { TabButtonData } from '../../layout/top-bar/top-bar.component'; +import { PageBaseComponent } from 'src/app/utils/page-base'; +import { homeTabsData } from 'src/app/utils/home-tabs'; +import { NodeService } from 'src/app/services/node.service'; +import { ApiService } from 'src/app/services/api.service'; +import { Node } from 'src/app/app.datatypes'; + +/** + * Network-wide Uptime tab. Source of truth: TPD's integrated uptime + * tracker, surfaced through `/api/network/visor-uptime` (CXO + * subscriber → DMSG-HTTP → HTTP fallback chain on the visor side). + * + * Render shape matches `skywire cli ut tpd graph` (default mode): + * one line per visor, " ". Each bar is the + * visor's full available timeline drawn as 24 hour blocks per day, + * shaded by online-slot count within the hour: + * + * 0 slots → blank (gap) + * 1–3 → faint (mostly down) + * 4–6 → mid (intermittent) + * 7–9 → dense (mostly up) + * 10–12 → full (solid up) + * + * Today's trailing hours that haven't happened yet render as the + * future-cell style — explicitly distinct from "offline" so a + * partial today doesn't read as downtime. + * + * The CLI version trims shared leading/trailing whitespace globally + * across all bars (the period when no visor had data yet, and the + * unfilled hours past "now"); we do the same so the bars line up + * and the window doesn't waste a third of its width on dead space. + */ + +interface VisorSummary { + pk: string; + on: boolean; + version?: string; + daily?: { [date: string]: string }; + timeline?: { [date: string]: string }; +} + +// One column of a visor's bar — either a real hour block (slot >= 0) +// or a future placeholder (slot < 0) for trailing today-hours. +interface BarBlock { + // 0..12 — number of online slots within the hour. -1 means future. + count: number; + // Tooltip-only date+hour, e.g. "2026-05-03 14:00 UTC". + label: string; + future: boolean; +} + +interface VisorRow { + pk: string; + online: boolean; + version: string; + blocks: BarBlock[]; + // Window-aggregate: percentage of *known* (non-future) slots that + // were online across all days in the response. + windowPct: number; + // Most-recent-day percentage — prefer TPD's daily field, fall back + // to a derive-from-bitmap when the daily map is missing. + recentPct: number; + // True when this row is also a hypervisor-managed visor. + managed: boolean; + label?: string; +} + +type WindowDays = 1 | 7 | 30; +type FleetFilter = 'connected' | 'all'; + +const HOURS_PER_DAY = 24; +const SLOTS_PER_HOUR = 12; +const SLOTS_PER_DAY = HOURS_PER_DAY * SLOTS_PER_HOUR; +// Hard upper bound for the network/visor-uptime fetch. The handler's +// CXO/DMSG-HTTP/HTTP fallback chain can take ~3s (CXO timeout) + +// ~15s (DMSG-HTTP) + ~15s (HTTP) in the worst case when TPD is +// unhealthy. 45s gives every step a chance to fail and surface a +// real error instead of leaving the spinner up forever. +const FETCH_TIMEOUT_MS = 45000; + +@Component({ + selector: 'app-multi-visor-uptime', + templateUrl: './multi-visor-uptime.component.html', + styleUrls: ['./multi-visor-uptime.component.scss'], + standalone: false, +}) +export class MultiVisorUptimeComponent extends PageBaseComponent implements OnInit, OnDestroy { + tabsData: TabButtonData[] = []; + rows: VisorRow[] = []; + loading = true; + error: string | null = null; + lastUpdated: Date | null = null; + windowDays: WindowDays = 7; + // Default to "connected" — the operator's own fleet is the + // primary use case; "all" stays one click away for spotting + // stragglers TPD knows about that this hypervisor doesn't. + filter: FleetFilter = 'connected'; + // Hour-tick row drawn above the bars when there's anything to show. + // Same contents for every row, so we render once at the top. + ticks: { label: string; left: number }[] = []; + totalBlocks = 0; + + private allRows: VisorRow[] = []; + private sub: Subscription; + + constructor( + private nodeService: NodeService, + private api: ApiService, + private cdr: ChangeDetectorRef, + ) { + super(); + this.tabsData = homeTabsData(); + } + + ngOnInit() { + // 60s cadence — matches the TPD publisher's recompute tick. + this.sub = interval(60000).pipe( + startWith(0), + switchMap(() => this.fetchOnce()), + ).subscribe(); + return super.ngOnInit(); + } + + ngOnDestroy(): void { + this.sub?.unsubscribe(); + } + + setWindow(d: WindowDays) { + if (d === this.windowDays) { return; } + this.windowDays = d; + this.refreshNow(); + } + + setFilter(f: FleetFilter) { + if (f === this.filter) { return; } + this.filter = f; + this.applyFilter(); + } + + refreshNow() { + this.fetchOnce().subscribe(); + } + + private fetchOnce() { + return forkJoin({ + summaries: this.api.get(`network/visor-uptime?days=${this.windowDays}`).pipe( + // Bound the wait — a stuck TPD shouldn't park the spinner. + takeUntil(timer(FETCH_TIMEOUT_MS)), + catchError((err) => { + this.error = err?.message || 'Failed to fetch network uptime'; + this.loading = false; + this.cdr.markForCheck(); + return of([]); + }), + ), + nodes: this.nodeService.getNodes().pipe(catchError(() => of([] as Node[]))), + }).pipe( + switchMap(({ summaries, nodes }) => { + this.consume((summaries as VisorSummary[]) || [], nodes || []); + return of(null); + }), + ); + } + + private consume(summaries: VisorSummary[], nodes: Node[]) { + const managedByPk: { [pk: string]: Node } = {}; + for (const n of nodes) { managedByPk[n.localPk] = n; } + + // Union of all dates the server returned, sorted ascending so + // bars read left-to-right oldest → newest like the CLI. + const dateSet = new Set(); + for (const s of summaries) { + for (const d of Object.keys(s.timeline || {})) { dateSet.add(d); } + for (const d of Object.keys(s.daily || {})) { dateSet.add(d); } + } + const dates = Array.from(dateSet).sort(); + + // Slot index inside today's day where "now" falls. + const todayKey = new Date().toISOString().slice(0, 10); + const now = new Date(); + const nowSlot = Math.floor((now.getUTCHours() * 60 + now.getUTCMinutes()) / 5); + const nowHour = Math.floor(nowSlot / SLOTS_PER_HOUR); + + const out: VisorRow[] = []; + for (const s of summaries) { + const blocks = this.buildBlocks(s, dates, todayKey, nowSlot, nowHour); + + // Window aggregate from the non-future hours. + let online = 0; + let known = 0; + for (const b of blocks) { + if (b.future) { continue; } + // Each block has up to SLOTS_PER_HOUR underlying samples. + online += b.count; + known += SLOTS_PER_HOUR; + } + const windowPct = known > 0 ? (online / known) * 100 : 0; + + // Most-recent-day percentage. Prefer the TPD-reported daily% + // field; fall back to deriving from today's bitmap if missing. + let recentPct = 0; + const dailyMap = s.daily || {}; + if (dailyMap[todayKey] !== undefined) { + const v = parseFloat(dailyMap[todayKey]); + recentPct = isNaN(v) ? 0 : v; + } else { + const sorted = Object.keys(dailyMap).sort().reverse(); + for (const d of sorted) { + const v = parseFloat(dailyMap[d]); + if (!isNaN(v)) { recentPct = v; break; } + } + } + + const managed = !!managedByPk[s.pk]; + out.push({ + pk: s.pk, + online: s.on, + version: s.version || '', + blocks, + windowPct, + recentPct, + managed, + label: managed ? (managedByPk[s.pk].label || '') : '', + }); + } + + // Trim shared leading + trailing empty hours globally so every + // bar lines up. CLI does the same — when no one has data for the + // earliest hours of the window, those columns are dead width. + this.applyTrimmed(out); + + out.sort((a, b) => b.windowPct - a.windowPct); + this.allRows = out; + this.totalBlocks = out.length > 0 ? out[0].blocks.length : 0; + this.ticks = this.buildTicks(this.totalBlocks); + this.applyFilter(); + this.loading = false; + this.error = null; + this.lastUpdated = new Date(); + this.cdr.markForCheck(); + } + + private buildBlocks( + s: VisorSummary, + dates: string[], + todayKey: string, + nowSlot: number, + nowHour: number, + ): BarBlock[] { + const out: BarBlock[] = []; + for (const date of dates) { + const ascii = (s.timeline && s.timeline[date]) || ''; + const padded = ascii.length >= SLOTS_PER_DAY + ? ascii.slice(0, SLOTS_PER_DAY) + : ascii.padEnd(SLOTS_PER_DAY, ' '); + const isToday = date === todayKey; + for (let h = 0; h < HOURS_PER_DAY; h++) { + const blockStart = h * SLOTS_PER_HOUR; + const blockEnd = blockStart + SLOTS_PER_HOUR; + let count = 0; + for (let i = blockStart; i < blockEnd; i++) { + if (padded.charAt(i) === '.') { count++; } + } + let future = false; + if (isToday && h > nowHour) { + // Hour entirely in the future. + future = true; + count = -1; + } else if (isToday && h === nowHour && nowSlot < blockEnd) { + // Mixed: count only the slots up to nowSlot. + count = 0; + for (let i = blockStart; i < Math.min(blockEnd, nowSlot); i++) { + if (padded.charAt(i) === '.') { count++; } + } + } + const label = `${date} ${this.fmtHour(h)} UTC`; + out.push({ count, future, label }); + } + } + return out; + } + + private fmtHour(h: number): string { + return h.toString().padStart(2, '0') + ':00'; + } + + // Trim columns that are empty (count=0 AND not future) for every + // row in the dataset, on both ends. Mirrors the CLI's + // printSingleLineTimelines behaviour. + private applyTrimmed(rows: VisorRow[]) { + if (rows.length === 0) { return; } + const len = rows[0].blocks.length; + if (len === 0) { return; } + + const sharedEmpty = (idx: number): boolean => { + for (const r of rows) { + const b = r.blocks[idx]; + if (!b) { return false; } + if (b.future) { return false; } + if (b.count > 0) { return false; } + } + return true; + }; + + let lead = 0; + while (lead < len && sharedEmpty(lead)) { lead++; } + let trail = 0; + while (trail < len - lead && sharedEmpty(len - 1 - trail)) { trail++; } + + if (lead === 0 && trail === 0) { return; } + for (const r of rows) { + r.blocks = r.blocks.slice(lead, len - trail); + } + } + + // Build tick positions — every 24 blocks (one per day boundary) + // until the dataset ends, plus a final "now" marker. + private buildTicks(totalBlocks: number): { label: string; left: number }[] { + if (totalBlocks <= 0) { return []; } + const out: { label: string; left: number }[] = []; + // Every-24 is "1d" boundary; only label when total >= 48 to avoid clutter. + if (totalBlocks >= 48) { + let day = 1; + for (let i = 24; i < totalBlocks; i += 24) { + out.push({ label: `+${day}d`, left: (i / totalBlocks) * 100 }); + day++; + } + } + return out; + } + + private applyFilter() { + if (this.filter === 'connected') { + this.rows = this.allRows.filter((r) => r.managed); + } else { + this.rows = this.allRows.slice(); + } + this.cdr.markForCheck(); + } + + fmtPct(p: number): string { + if (p >= 99.95) { return '100%'; } + if (p > 0 && p < 1) { return '<1%'; } + return p.toFixed(1) + '%'; + } + + pctClass(p: number): string { + if (p >= 99) { return 'up-good'; } + if (p >= 80) { return 'up-mid'; } + return 'up-bad'; + } + + // Map an online-slots-per-hour count (0..12) to one of five density + // classes. Same threshold layout the CLI uses for unicode block art. + blockClass(b: BarBlock): string { + if (b.future) { return 'future'; } + if (b.count <= 0) { return 'lvl0'; } + if (b.count <= 3) { return 'lvl1'; } + if (b.count <= 6) { return 'lvl2'; } + if (b.count <= 9) { return 'lvl3'; } + return 'lvl4'; + } + + blockTooltip(b: BarBlock): string { + if (b.future) { return `${b.label} — future`; } + if (b.count < 0) { return `${b.label} — no data`; } + return `${b.label} — ${b.count}/12 slots online`; + } + + trackRow(_: number, r: VisorRow): string { return r.pk; } + trackBlock(i: number, _b: BarBlock): number { return i; } +} diff --git a/static/skywire-manager-src/src/app/components/pages/network-transports/network-transports.component.html b/static/skywire-manager-src/src/app/components/pages/network-transports/network-transports.component.html index a6cee9c0f6..601eae6cd3 100644 --- a/static/skywire-manager-src/src/app/components/pages/network-transports/network-transports.component.html +++ b/static/skywire-manager-src/src/app/components/pages/network-transports/network-transports.component.html @@ -24,10 +24,30 @@ {{ 'network-transports.view-compact' | translate }} + @if (viewMode === 'compact') { +
+ {{ 'network-transports.edges' | translate }}: + + +
+ } +
+ {{ 'network-transports.offline' | translate }}: + + +
+ + + + + + + @if (loading && rows.length === 0) { +
+ + {{ 'bandwidth.loading' | translate }} +
+ } + + @if (error && rows.length === 0) { +
+ error_outline + {{ error }} +
+ } + + @if (rows.length > 0) { +
+ swap_vert + + {{ rows.length }} {{ 'bandwidth.transports' | translate }} · + {{ fmtBytes(totalNetworkBw) }} {{ 'bandwidth.total' | translate }} + ({{ windowDays === 1 ? ('bandwidth.window-now' | translate) : windowDays + 'd' }}) + + @if (fetchedAt) { + — {{ 'bandwidth.last-updated' | translate }}: {{ fetchedAt | date: 'HH:mm:ss' }} + } +
+ } + + @if (rows.length === 0 && !loading && !error) { +
{{ 'bandwidth.empty' | translate }}
+ } + + @for (r of rows; track trackRow($index, r)) { +
+
+ {{ r.expanded ? 'expand_more' : 'chevron_right' }} + {{ r.type || '-' }} + {{ r.id }} + → {{ remotePK(r) }} + + {{ fmtBytes(r.totalBw) }} + ↑ {{ fmtBytes(r.totalSent) }} ↓ {{ fmtBytes(r.totalRecv) }} + + @if (r.current?.latency_avg_ms) { + + {{ fmtLatency(r.current.latency_avg_ms) }} + + } +
+ @if (r.expanded) { +
+ + @if (r.current) { +
+
{{ 'bandwidth.current-snapshot' | translate }}
+
+
{{ 'bandwidth.sent' | translate }}: {{ fmtBytes(r.current.sent_bytes) }}
+
{{ 'bandwidth.recv' | translate }}: {{ fmtBytes(r.current.recv_bytes) }}
+
{{ 'bandwidth.latency-current' | translate }}: {{ fmtLatencyTriple(r.current) }}
+ @if (r.current.sampled_at) { +
{{ 'bandwidth.sampled-at' | translate }}: {{ r.current.sampled_at | date: 'HH:mm:ss' }}
+ } +
+
+ } + + + @if (r.daily && r.daily.length > 0) { +
+
{{ 'bandwidth.daily-history' | translate }}
+ + + + + + + + + + @for (d of r.daily; track trackDay($index, d)) { + + + + + + + + + } +
{{ 'bandwidth.date' | translate }}{{ 'bandwidth.sent' | translate }}{{ 'bandwidth.recv' | translate }}{{ 'bandwidth.total' | translate }}{{ 'bandwidth.latency-min-avg-max' | translate }}{{ 'bandwidth.samples' | translate }}
{{ d.date }}{{ fmtBytes(d.sent_bytes) }}{{ fmtBytes(d.recv_bytes) }}{{ fmtBytes((d.sent_bytes || 0) + (d.recv_bytes || 0)) }}{{ fmtLatencyTriple(d) }}{{ d.samples || 0 }}
+
+ } @else { +
+
{{ 'bandwidth.no-history' | translate }}
+
+ } +
+ } +
+ } + + +} diff --git a/static/skywire-manager-src/src/app/components/pages/node/bandwidth/bandwidth.component.scss b/static/skywire-manager-src/src/app/components/pages/node/bandwidth/bandwidth.component.scss new file mode 100644 index 0000000000..5fc4315b6a --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/node/bandwidth/bandwidth.component.scss @@ -0,0 +1,159 @@ +@import "variables"; + +.bw-controls { + display: flex; + align-items: center; + gap: 12px; + flex-wrap: wrap; + margin-bottom: 12px; + + .control-group { + display: flex; + align-items: center; + gap: 4px; + + .control-label { + font-size: 0.85em; + color: rgba(255, 255, 255, 0.65); + } + + button { + min-width: 0; + padding: 0 12px !important; + opacity: 0.6; + color: rgba(255, 255, 255, 0.85) !important; + &.active { + opacity: 1; + background: rgba(33, 150, 243, 0.18) !important; + color: #fff !important; + } + } + } + + .refresh-btn { + margin-left: auto; + color: rgba(255, 255, 255, 0.85) !important; + .mat-icon { color: inherit; } + } +} + +.loading-row, +.error-row { + display: flex; + align-items: center; + padding: 16px 0; +} +.error-row { color: #f87171; } + +.summary-line { + display: flex; + align-items: center; + color: rgba(255, 255, 255, 0.9); + font-size: 0.95em; + margin-bottom: 8px; + + .last-updated { + color: rgba(255, 255, 255, 0.55); + font-size: 0.85em; + margin-left: 8px; + } +} + +.bw-empty { + padding: 24px 0; + color: rgba(255, 255, 255, 0.6); + text-align: center; +} + +.dim { color: rgba(255, 255, 255, 0.6); } +.small { font-size: 0.85em; } +.mono { font-family: monospace; word-break: break-all; } + +.bw-row { + background: rgba(255, 255, 255, 0.03); + border: 1px solid rgba(255, 255, 255, 0.06); + border-radius: 4px; + margin-bottom: 6px; + + &.expanded { border-color: rgba(33, 150, 243, 0.3); } +} + +.bw-row-head { + display: flex; + align-items: center; + gap: 10px; + padding: 8px 12px; + cursor: pointer; + flex-wrap: wrap; + + &:hover { background: rgba(255, 255, 255, 0.04); } + + .bw-exp { color: rgba(255, 255, 255, 0.6); } + + .bw-type-pill { + display: inline-block; + padding: 1px 6px; + border-radius: 3px; + background: rgba(33, 150, 243, 0.18); + border: 1px solid rgba(33, 150, 243, 0.35); + font-size: 11px; + text-transform: lowercase; + } + + .bw-tp-id { + flex: 0 1 320px; + min-width: 0; + font-size: 11px; + color: rgba(255, 255, 255, 0.85); + } + + .bw-remote { + flex: 1 1 auto; + min-width: 0; + font-size: 11px; + color: rgba(255, 255, 255, 0.7); + } + + .bw-totals { + display: flex; + align-items: baseline; + gap: 8px; + font-size: 13px; + flex: 0 0 auto; + } + + .bw-latency { + font-size: 12px; + flex: 0 0 auto; + } +} + +.bw-row-body { + padding: 4px 16px 12px 36px; + border-top: 1px solid rgba(255, 255, 255, 0.05); +} + +.bw-section { + margin-top: 10px; + + .bw-section-title { + font-size: 11px; + text-transform: uppercase; + letter-spacing: 0.5px; + color: rgba(255, 255, 255, 0.55); + margin-bottom: 6px; + } +} + +.bw-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); + gap: 6px 16px; + font-size: 12px; + strong { margin-left: 4px; color: rgba(255, 255, 255, 0.95); } +} + +.bw-daily { + th, td { font-size: 12px; } + td.num, th.num { text-align: right; white-space: nowrap; } +} diff --git a/static/skywire-manager-src/src/app/components/pages/node/bandwidth/bandwidth.component.ts b/static/skywire-manager-src/src/app/components/pages/node/bandwidth/bandwidth.component.ts new file mode 100644 index 0000000000..fc7ed6dba5 --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/node/bandwidth/bandwidth.component.ts @@ -0,0 +1,218 @@ +import { Component, OnDestroy, OnInit, ChangeDetectorRef } from '@angular/core'; +import { Subscription, interval, startWith } from 'rxjs'; +import { switchMap, catchError } from 'rxjs/operators'; +import { of } from 'rxjs'; + +import { Node } from '../../../../app.datatypes'; +import { NodeComponent } from '../node.component'; +import { PageBaseComponent } from 'src/app/utils/page-base'; +import { ApiService } from 'src/app/services/api.service'; + +/** + * Per-visor Bandwidth tab. Reads from the visor's local bbolt + * stats store (pkg/visor/stats) — no TPD round-trip required. + * + * The visor's stats tracker samples every transport on a 10s tick + * (configurable) and persists current snapshot + per-day rollups + * with a 30-day retention window. This tab renders the current + * snapshot on top + an expandable per-transport daily history. + */ + +interface LiveSnapshot { + sent_bytes?: number; + recv_bytes?: number; + latency_min_ms?: number; + latency_max_ms?: number; + latency_avg_ms?: number; + sampled_at?: string; +} +interface DailyRollup { + date: string; + sent_bytes?: number; + recv_bytes?: number; + latency_min_ms?: number; + latency_max_ms?: number; + latency_avg_ms?: number; + samples?: number; +} +interface TransportRecord { + id: string; + edges?: string[]; + type?: string; + label?: string; + first_seen?: string; + last_seen?: string; + current?: LiveSnapshot; + daily?: DailyRollup[]; +} + +interface Resp { + transports?: TransportRecord[]; + fetched_at?: string; +} + +interface Row extends TransportRecord { + expanded: boolean; + totalSent: number; + totalRecv: number; + totalBw: number; +} + +type WindowDays = 1 | 7 | 30; + +@Component({ + selector: 'app-bandwidth', + templateUrl: './bandwidth.component.html', + styleUrls: ['./bandwidth.component.scss'], + standalone: false, +}) +export class BandwidthComponent extends PageBaseComponent implements OnInit, OnDestroy { + node: Node; + rows: Row[] = []; + loading = true; + error: string | null = null; + fetchedAt: Date | null = null; + windowDays: WindowDays = 7; + + private nodeSub: Subscription; + private pollSub: Subscription; + + constructor(private api: ApiService, private cdr: ChangeDetectorRef) { + super(); + } + + ngOnInit() { + this.nodeSub = NodeComponent.currentNode.subscribe((node: Node) => { + const wasUnset = !this.node; + this.node = node; + if (wasUnset && node) { this.startPolling(); } + }); + return super.ngOnInit(); + } + + ngOnDestroy(): void { + this.nodeSub?.unsubscribe(); + this.pollSub?.unsubscribe(); + } + + setWindow(d: WindowDays) { + if (d === this.windowDays) { return; } + this.windowDays = d; + this.recompute(); + } + + refreshNow() { + if (!this.node) { return; } + this.fetchOnce().subscribe(); + } + + toggleRow(r: Row) { r.expanded = !r.expanded; } + + private startPolling() { + // 30s cadence — local store updates on the visor's 10s sampler, + // so 30s catches changes promptly without flooding the RPC. + this.pollSub = interval(30000).pipe( + startWith(0), + switchMap(() => this.fetchOnce()), + ).subscribe(); + } + + private fetchOnce() { + return this.api.get(`visors/${this.node.localPk}/local-transport-stats`).pipe( + catchError((err) => { + this.error = err?.message || 'Failed to fetch bandwidth'; + this.loading = false; + this.cdr.markForCheck(); + return of(null); + }), + switchMap((resp: Resp | null) => { + if (resp) { + this.consume(resp); + } + return of(resp); + }), + ); + } + + private consume(resp: Resp) { + const tps = (resp.transports || []) as TransportRecord[]; + this.rows = tps.map((t) => this.toRow(t)); + this.recompute(); + this.fetchedAt = resp.fetched_at ? new Date(resp.fetched_at) : new Date(); + this.loading = false; + this.error = null; + this.cdr.markForCheck(); + } + + private toRow(t: TransportRecord): Row { + return { ...t, expanded: false, totalSent: 0, totalRecv: 0, totalBw: 0 }; + } + + /** Recompute totals based on the current windowDays selection. + * Day 1 = current snapshot only; Day 7/30 = sum of last N days. */ + private recompute() { + const cutoff = new Date(); + cutoff.setUTCDate(cutoff.getUTCDate() - this.windowDays); + const cutoffStr = cutoff.toISOString().slice(0, 10); + + for (const r of this.rows) { + let sent = 0, recv = 0; + if (this.windowDays === 1) { + sent = r.current?.sent_bytes || 0; + recv = r.current?.recv_bytes || 0; + } else { + for (const d of r.daily || []) { + if (d.date >= cutoffStr) { + sent += d.sent_bytes || 0; + recv += d.recv_bytes || 0; + } + } + } + r.totalSent = sent; + r.totalRecv = recv; + r.totalBw = sent + recv; + } + // Re-sort rows by total bandwidth descending so the busiest + // float to the top whenever the window changes. + this.rows.sort((a, b) => b.totalBw - a.totalBw); + } + + /** Aggregate bandwidth across all transports for the current window. */ + get totalNetworkBw(): number { + return this.rows.reduce((sum, r) => sum + r.totalBw, 0); + } + + /** Format bytes → human readable. */ + fmtBytes(b?: number): string { + if (b === undefined || b === null) { return '-'; } + if (b === 0) { return '0 B'; } + const u = ['B', 'KB', 'MB', 'GB', 'TB']; + let i = 0; let v = b; + while (v >= 1024 && i < u.length - 1) { v /= 1024; i++; } + return v < 10 ? v.toFixed(1) + ' ' + u[i] : Math.round(v) + ' ' + u[i]; + } + + /** Latency ms → "X.Xms" or "Xms". */ + fmtLatency(ms?: number): string { + if (!ms) { return '-'; } + if (ms < 10) { return ms.toFixed(2) + ' ms'; } + return Math.round(ms) + ' ms'; + } + + fmtLatencyTriple(d?: { latency_min_ms?: number, latency_max_ms?: number, latency_avg_ms?: number }): string { + if (!d || !d.latency_avg_ms) { return '-'; } + const min = d.latency_min_ms ?? 0; + const max = d.latency_max_ms ?? 0; + const avg = d.latency_avg_ms; + return `${this.fmtLatency(min)} / ${this.fmtLatency(avg)} / ${this.fmtLatency(max)}`; + } + + /** Remote PK from the edges array — picks the one that isn't us. */ + remotePK(r: Row): string { + if (!r.edges || !this.node) { return ''; } + return r.edges.find((e) => e !== this.node.localPk) || r.edges[0] || ''; + } + + trackRow(_: number, r: Row): string { return r.id; } + trackDay(_: number, d: DailyRollup): string { return d.date; } +} diff --git a/static/skywire-manager-src/src/app/components/pages/node/logs/logs.component.html b/static/skywire-manager-src/src/app/components/pages/node/logs/logs.component.html new file mode 100644 index 0000000000..c525eec33a --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/node/logs/logs.component.html @@ -0,0 +1,65 @@ +@if (node) { +
+
+
+
+ {{ 'logs.filter' | translate }}: + @for (l of levels; track l.level) { + + } +
+
+ + + open_in_new + {{ 'logs.open-raw' | translate }} + +
+
+ + @if (totalDropped > 0) { +
+ history + {{ 'logs.dropped' | translate:{ count: totalDropped } }} +
+ } + + @if (loading && logEntries.length === 0) { +
+ + {{ 'logs.loading' | translate }} +
+ } + + @if (filteredLogEntries.length === 0 && !loading) { +
{{ 'logs.empty' | translate }}
+ } + +
+ @if (hasMoreLogMessages) { +
+ + {{ 'logs.view-rest' | translate:{number: totalLogs} }} + +
+ } + @for (entry of filteredLogEntries; track trackEntry($index, entry)) { +
+ {{ entry.time }} + {{ levelName(entry.level) }} + @if (entry.func) { [{{ entry.func }}] } + {{ entry.msg }} + @for (kv of entry.extra; track kv.name) { + {{ kv.name }}={{ kv.value }} + } +
+ } +
+
+
+} diff --git a/static/skywire-manager-src/src/app/components/pages/node/logs/logs.component.scss b/static/skywire-manager-src/src/app/components/pages/node/logs/logs.component.scss new file mode 100644 index 0000000000..54e0e36d4d --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/node/logs/logs.component.scss @@ -0,0 +1,114 @@ +.dim { color: rgba(255, 255, 255, 0.6); } + +.logs-box { display: flex; flex-direction: column; } +.logs-shell { display: flex; flex-direction: column; gap: 8px; } + +.logs-controls { + display: flex; + align-items: center; + gap: 12px; + flex-wrap: wrap; + padding-bottom: 4px; + border-bottom: 1px solid rgba(255, 255, 255, 0.06); +} + +.logs-filter-row, +.logs-action-row { + display: flex; + align-items: center; + gap: 4px; + flex-wrap: wrap; +} + +.logs-action-row { margin-left: auto; gap: 8px; } + +.logs-controls button { + min-width: 0; + padding: 0 10px !important; + opacity: 0.65; + color: rgba(255, 255, 255, 0.85) !important; + &.active { + opacity: 1; + background: rgba(33, 150, 243, 0.18) !important; + color: #fff !important; + } +} + +.control-label { + margin-right: 4px; + font-size: 0.85em; +} + +.logs-raw-link { + color: rgba(255, 255, 255, 0.85); + text-decoration: none; + display: inline-flex; + align-items: center; + gap: 4px; + font-size: 0.9em; + + &:hover { text-decoration: underline; } + .mat-icon { font-size: 16px; } +} + +.logs-dropped-banner { + background: rgba(229, 57, 53, 0.12); + border: 1px solid rgba(229, 57, 53, 0.35); + color: rgba(255, 200, 200, 0.95); + padding: 6px 10px; + border-radius: 4px; + font-size: 0.85em; + display: flex; + align-items: center; + gap: 6px; +} + +.loading-row { + display: flex; + align-items: center; + padding: 16px 0; +} + +.logs-empty { + padding: 24px 0; + text-align: center; + color: rgba(255, 255, 255, 0.5); +} + +.logs-list { + background: rgba(0, 0, 0, 0.25); + border: 1px solid rgba(255, 255, 255, 0.06); + border-radius: 6px; + font-family: 'Consolas', 'Monaco', 'Courier New', monospace; + font-size: 0.78em; + height: 65vh; + min-height: 400px; + overflow-y: auto; + padding: 8px 12px; +} + +.log-entry { + white-space: pre-wrap; + word-break: break-word; + padding: 1px 0; + line-height: 1.4; + + .le-time { margin-right: 6px; } + .le-level { + display: inline-block; + min-width: 50px; + margin-right: 6px; + font-weight: 600; + } + .le-func { margin-right: 6px; } + .le-msg { color: rgba(255, 255, 255, 0.92); } + .le-extra { font-size: 0.92em; } +} + +.lvl-fatal { color: #ff6b6b; } +.lvl-error { color: #f44336; } +.lvl-warn { color: #ff9800; } +.lvl-info { color: #4caf50; } +.lvl-debug { color: #03a9f4; } +.lvl-trace { color: rgba(255, 255, 255, 0.55); } +.lvl-unknown { color: rgba(255, 255, 255, 0.7); } diff --git a/static/skywire-manager-src/src/app/components/pages/node/logs/logs.component.ts b/static/skywire-manager-src/src/app/components/pages/node/logs/logs.component.ts new file mode 100644 index 0000000000..1141eb5d7a --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/node/logs/logs.component.ts @@ -0,0 +1,257 @@ +import { Component, OnDestroy, OnInit, ViewChild, ElementRef, NgZone, ChangeDetectorRef } from '@angular/core'; +import { Subscription, delay, mergeMap, of } from 'rxjs'; + +import { Node } from '../../../../app.datatypes'; +import { NodeComponent } from '../node.component'; +import { PageBaseComponent } from 'src/app/utils/page-base'; +import { AppConfig } from 'src/app/app.config'; +import { NodeService } from 'src/app/services/node.service'; +import { SnackbarService } from 'src/app/services/snackbar.service'; +import { OperationError } from 'src/app/utils/operation-error'; +import { processServiceError } from 'src/app/utils/errors'; +import { environment } from 'src/environments/environment'; + +/** + * Per-visor "Logs" tab — the runtime-log viewer that used to be a + * MatDialog opened from the actions menu. Promoted to a real tab so + * it lives next to the other diagnostics surfaces (Resources, + * Terminal, Bandwidth) instead of hiding behind the destructive- + * action menu by the shut-down button. + * + * Reuses the existing diff-streaming endpoint + * GET /api/visors//runtime-logs/since= + * which returns: + * { entries: string[] // each is a JSON-encoded log line + * latest: number, // new cursor value + * dropped: number } // entries we missed (ring wrapped) + */ + +enum Level { + Panic = 8, + Fatal = 7, + Error = 6, + Warn = 5, + Info = 4, + Debug = 3, + Trace = 2, + Unknown = 1, +} + +interface LogEntry { + time: string; + level: Level; + msg: string; + func?: string; + module?: string; + extra: { name: string, value: string }[]; +} + +@Component({ + selector: 'app-logs', + templateUrl: './logs.component.html', + styleUrls: ['./logs.component.scss'], + standalone: false, +}) +export class LogsComponent extends PageBaseComponent implements OnInit, OnDestroy { + @ViewChild('content') content: ElementRef; + + node: Node; + loading = true; + liveTail = true; + livePollMs = 2000; + totalDropped = 0; + totalLogs = 0; + hasMoreLogMessages = false; + + // Importance threshold for the visible filter. Lower = more verbose. + minLevel = Level.Unknown; + levels = [ + { level: Level.Unknown, label: 'All', cls: '' }, + { level: Level.Debug, label: 'Debug+', cls: '' }, + { level: Level.Info, label: 'Info+', cls: '' }, + { level: Level.Warn, label: 'Warn+', cls: '' }, + { level: Level.Error, label: 'Error+', cls: '' }, + { level: Level.Fatal, label: 'Fatal+', cls: '' }, + { level: Level.Panic, label: 'Panic', cls: '' }, + ]; + + logEntries: LogEntry[] = []; + filteredLogEntries: LogEntry[] = []; + maxBufferEntries = 1000; + + private logCursor = 0; + private wasAtBottom = true; + private subscription: Subscription; + private nodeSub: Subscription; + private shouldShowError = true; + + constructor( + private nodeService: NodeService, + private snackbar: SnackbarService, + private ngZone: NgZone, + private cdr: ChangeDetectorRef, + ) { super(); } + + ngOnInit() { + this.nodeSub = NodeComponent.currentNode.subscribe((node: Node) => { + const wasUnset = !this.node; + this.node = node; + if (wasUnset && node) { this.loadData(0); } + }); + return super.ngOnInit(); + } + + ngOnDestroy(): void { + this.nodeSub?.unsubscribe(); + this.subscription?.unsubscribe(); + } + + setLevel(l: Level) { + this.minLevel = l; + this.applyFilter(); + } + + toggleLiveTail() { + this.liveTail = !this.liveTail; + if (this.liveTail) { this.loadData(0); } else { this.subscription?.unsubscribe(); } + } + + fullLogsUrl(): string { + if (!this.node) { return ''; } + const apiPrefix = !environment.production && location.protocol.indexOf('http:') !== -1 ? 'http-api' : 'api'; + return window.location.origin + '/' + apiPrefix + '/visors/' + this.node.localPk + '/runtime-logs'; + } + + private loadData(delayMs: number) { + if (!this.node) { return; } + this.subscription?.unsubscribe(); + this.captureScrollTailState(); + this.loading = this.logEntries.length === 0; + const cursor = this.logCursor; + + this.subscription = of(1).pipe( + delay(delayMs), + mergeMap(() => this.nodeService.getRuntimeLogsSince(this.node.localPk, cursor)), + ).subscribe( + (delta: any) => this.onDelta(delta), + (err: OperationError) => this.onError(err), + ); + } + + private onDelta(delta: any) { + if (!delta) { this.loading = false; this.scheduleNext(); return; } + const isInitial = this.logCursor === 0; + this.logCursor = (typeof delta.latest === 'number') ? delta.latest : this.logCursor; + if (typeof delta.dropped === 'number' && delta.dropped > 0) { this.totalDropped += delta.dropped; } + + const raws: string[] = Array.isArray(delta.entries) ? delta.entries : []; + const parsed: any[] = []; + for (const r of raws) { + try { parsed.push(JSON.parse(r)); } catch { /* skip malformed */ } + } + if (isInitial) { this.logEntries = []; } + this.appendParsed(parsed); + + if (this.logEntries.length > this.maxBufferEntries) { + this.logEntries = this.logEntries.slice(this.logEntries.length - this.maxBufferEntries); + this.hasMoreLogMessages = true; + } + this.totalLogs = this.logCursor; + this.loading = false; + this.shouldShowError = true; + this.applyFilter(); + this.cdr.markForCheck(); + this.scheduleNext(); + } + + private appendParsed(rows: any[]) { + for (const e of rows) { + const entry: LogEntry = { + time: e.time, + level: this.parseLevel(e.level), + msg: e.msg, + func: e.func, + module: e._module, + extra: [], + }; + if (e.error) { entry.extra.push({ name: 'error', value: e.error }); } + const known = new Set(['time', '_module', 'msg', 'func', 'level', 'log_line', 'error']); + for (const k in e) { + if (!known.has(k)) { entry.extra.push({ name: k, value: e[k] }); } + } + this.logEntries.push(entry); + } + } + + private parseLevel(s: string): Level { + const lc = (s || '').toLowerCase(); + if (lc.includes('panic')) { return Level.Panic; } + if (lc.includes('fatal')) { return Level.Fatal; } + if (lc.includes('error')) { return Level.Error; } + if (lc.includes('warn')) { return Level.Warn; } + if (lc.includes('info')) { return Level.Info; } + if (lc.includes('debug')) { return Level.Debug; } + if (lc.includes('trace')) { return Level.Trace; } + return Level.Unknown; + } + + private applyFilter() { + this.filteredLogEntries = this.logEntries.filter((e) => e.level >= this.minLevel); + if (this.wasAtBottom) { + setTimeout(() => { + if (this.content) { + const el = this.content.nativeElement as HTMLElement; + el.scrollTop = el.scrollHeight; + } + }); + } + } + + private captureScrollTailState() { + if (!this.content) { this.wasAtBottom = true; return; } + const el = this.content.nativeElement as HTMLElement; + this.wasAtBottom = (el.scrollHeight - el.scrollTop - el.clientHeight) < 40; + } + + private scheduleNext() { + if (this.liveTail) { this.ngZone.run(() => this.loadData(this.livePollMs)); } + } + + private onError(err: OperationError) { + err = processServiceError(err); + if (this.shouldShowError) { + this.snackbar.showError('common.loading-error', null, true, err); + this.shouldShowError = false; + } + this.loadData(AppConfig.connectionRetryDelay); + } + + levelClass(l: Level): string { + switch (l) { + case Level.Panic: + case Level.Fatal: + return 'lvl-fatal'; + case Level.Error: return 'lvl-error'; + case Level.Warn: return 'lvl-warn'; + case Level.Info: return 'lvl-info'; + case Level.Debug: return 'lvl-debug'; + case Level.Trace: return 'lvl-trace'; + default: return 'lvl-unknown'; + } + } + + levelName(l: Level): string { + switch (l) { + case Level.Panic: return 'PANIC'; + case Level.Fatal: return 'FATAL'; + case Level.Error: return 'ERROR'; + case Level.Warn: return 'WARN'; + case Level.Info: return 'INFO'; + case Level.Debug: return 'DEBUG'; + case Level.Trace: return 'TRACE'; + default: return 'LOG'; + } + } + + trackEntry(_: number, e: LogEntry) { return e; } +} diff --git a/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.html b/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.html index 9df88eb2e3..104b75b8d9 100644 --- a/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.html +++ b/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.html @@ -123,7 +123,52 @@ {{ 'node.details.config.title' | translate }} @if (showConfigSection && rawConfig) { -
{{ rawConfig }}
+ + @if (!editingConfig) { +
+ + @if (configSaveMsg) { + {{ configSaveMsg }} + } +
+
{{ rawConfig }}
+ } + + @if (editingConfig) { +
+ + + + {{ 'node.details.config.restart-hint' | translate }} + +
+ @if (configError) { +
+ error_outline + {{ configError }} +
+ } + @if (configSaveErr) { +
+ error_outline + {{ configSaveErr }} +
+ } + + } } diff --git a/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.scss b/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.scss index 5ce9fc6466..b9194018e6 100644 --- a/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.scss +++ b/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.scss @@ -28,49 +28,10 @@ } } -.info-line { - word-break: break-word; - margin-top: 7px; - display: flex; - align-items: baseline; - gap: 6px; - - .text-with-right-margin { - margin-right: 5px; - } - - .text-with-small-right-margin { - margin-right: 3px; - } - - .link-icon { - font-size: 20px; - line-height: 1; - color: white !important; - cursor: pointer; - } - - .edit-icon { - display: inline !important; - } - - mat-icon { - position: relative; - top: 3px; - user-select: none; - } - - i { - margin-left: 7px; - } - - .title { - opacity: 0.7; - white-space: nowrap; - min-width: 120px; - font-size: 0.9em; - } -} +// .info-line / .toggle-line / .inline-edit-btn / .inline-form +// styles moved to assets/scss/_forms.scss so they apply globally +// (Rewards / Routing / Transports tabs reuse the same classes +// after the page restructure split). .separator { width: 100%; @@ -147,7 +108,8 @@ text-shadow: 0 0 8px rgba(248, 113, 113, 0.5); } -// Raw config viewer +// Raw config viewer (and editor textarea reuses the same styling +// so the read/edit visual states stay aligned). .raw-config { margin-top: 10px; padding: 12px; @@ -164,6 +126,64 @@ word-break: break-all; } +textarea.raw-config.config-editor { + display: block; + width: 100%; + min-height: 320px; + resize: vertical; + white-space: pre; // preserve leading spaces so JSON indents + word-break: normal; + outline: none; + caret-color: #fff; + + &:focus { border-color: rgba(0, 212, 255, 0.6); } + &:disabled { opacity: 0.6; } +} + +.config-actions { + margin-top: 8px; + display: flex; + align-items: center; + gap: 8px; + flex-wrap: wrap; + + // Global .mat-mdc-button:not(:disabled) { color: $black } in + // styles.scss makes mat-stroked-button + mat-button render as + // black-on-dark — invisible. Force readable color on all buttons + // inside the runtime-config control row. + button.mat-mdc-button-base:not(:disabled):not(.mat-primary):not(.mat-accent):not(.mat-warn) { + color: rgba(255, 255, 255, 0.92) !important; + .mat-icon { color: inherit; } + } + button.mat-mdc-outlined-button:not(:disabled) { + border-color: rgba(255, 255, 255, 0.35) !important; + } + + .config-restart-hint { + font-size: 0.85em; + margin-left: auto; + } + .config-save-msg { + color: rgba(76, 175, 80, 0.95); + font-size: 0.9em; + } +} + +.config-error { + margin-top: 6px; + padding: 8px 10px; + background: rgba(229, 57, 53, 0.12); + border: 1px solid rgba(229, 57, 53, 0.35); + border-radius: 4px; + color: rgba(255, 200, 200, 0.95); + font-size: 0.85em; + display: flex; + align-items: center; + gap: 6px; + + .mat-icon { font-size: 16px; } +} + // Per-subsystem health lines (indented under the aggregate "Services" line). .sub-health { padding-left: 12px; @@ -212,52 +232,11 @@ } -// Inline edit + form helpers (replaces several modal dialogs). -.inline-edit-btn { - margin-left: 4px; - height: 24px; - width: 24px; - line-height: 24px; - opacity: 0.7; - &:hover { opacity: 1; } -} - -.toggle-line { - display: flex; - align-items: center; - gap: 8px; - .info-tip { - opacity: 0.5; - font-size: 16px; - cursor: help; - } -} - -.inline-form { - display: flex; - flex-direction: column; - gap: 8px; - margin-top: 6px; - margin-bottom: 6px; - - .inline-form-field { width: 100%; } - .inline-form-field-sm { width: 120px; } - .inline-form-actions { - display: flex; - gap: 8px; - } -} - -.collapsible-link { - cursor: pointer; - user-select: none; - display: flex; - align-items: center; - gap: 4px; - margin-top: 6px; - opacity: 0.8; - &:hover { opacity: 1; } -} +// .inline-edit-btn / .toggle-line / .inline-form / .collapsible-* +// styles moved to assets/scss/_forms.scss (see comment above +// .info-line). Removed from this component-scoped sheet so the +// global rules apply uniformly across Info / Rewards / Routing / +// Transports tabs. .reward-rules { background: rgba(0, 0, 0, 0.25); diff --git a/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.ts b/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.ts index 5af970fb85..e4c7375d66 100644 --- a/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.ts +++ b/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.ts @@ -8,7 +8,7 @@ import { NodeComponent } from '../../node.component'; import TimeUtils, { ElapsedTime } from 'src/app/utils/timeUtils'; import { LabeledElementTypes, StorageService } from 'src/app/services/storage.service'; import { SnackbarService } from 'src/app/services/snackbar.service'; -import { ApiService } from 'src/app/services/api.service'; +import { ApiService, RequestOptions, RequestTypes } from 'src/app/services/api.service'; /** * Shows the basic info of a node. The reward-address management, @@ -39,6 +39,14 @@ export class NodeInfoContentComponent implements OnDestroy { // Collapsible Runtime Configuration section (matches Ports pattern). showConfigSection = false; + // Edit-mode state for the runtime-config editor. + editingConfig = false; + configDraft = ''; + configError = ''; // client-side parse error + configSaving = false; + configSaveMsg = ''; // success message (e.g. "saved; restart required") + configSaveErr = ''; // server-side save error + constructor( private dialog: MatDialog, public storageService: StorageService, @@ -111,4 +119,68 @@ export class NodeInfoContentComponent implements OnDestroy { ); } } + + /** Enter edit mode: copy the rendered config into the draft + * buffer so the user starts from the live state. */ + startEditConfig() { + this.editingConfig = true; + this.configDraft = this.rawConfig; + this.configError = ''; + this.configSaveErr = ''; + this.configSaveMsg = ''; + } + + /** Exit edit mode without saving. Discards the draft. */ + cancelEditConfig() { + this.editingConfig = false; + this.configDraft = ''; + this.configError = ''; + this.configSaveErr = ''; + } + + /** Live JSON validation as the user types. Empty error string + * means the draft parses cleanly. */ + onConfigDraftChange(next: string) { + this.configDraft = next; + this.configSaveMsg = ''; + this.configSaveErr = ''; + if (!next.trim()) { + this.configError = 'Config is empty'; + return; + } + try { + JSON.parse(next); + this.configError = ''; + } catch (e: any) { + this.configError = e?.message || 'Invalid JSON'; + } + } + + /** PUT the draft to the visor. Server validates again + * (strict decode + SK/PK consistency); on success we update + * rawConfig so the read-only pre re-renders the saved state. */ + saveConfig() { + if (this.configError || this.configSaving) { return; } + this.configSaving = true; + this.configSaveErr = ''; + this.configSaveMsg = ''; + this.apiService.put( + `visors/${this.node.localPk}/runtime-config`, + this.configDraft, + new RequestOptions({ requestType: RequestTypes.RawJson }), + ).subscribe( + (resp: any) => { + this.configSaving = false; + this.rawConfig = this.configDraft; + this.editingConfig = false; + this.configSaveMsg = (resp && resp.restart_required) + ? 'Saved. Restart the visor for changes to take effect.' + : 'Saved.'; + }, + (err: any) => { + this.configSaving = false; + this.configSaveErr = err?.originalError?.error?.error || err?.message || 'Save failed'; + }, + ); + } } diff --git a/static/skywire-manager-src/src/app/components/pages/node/node.component.ts b/static/skywire-manager-src/src/app/components/pages/node/node.component.ts index 12d9b48a0b..f835f1f286 100644 --- a/static/skywire-manager-src/src/app/components/pages/node/node.component.ts +++ b/static/skywire-manager-src/src/app/components/pages/node/node.component.ts @@ -211,9 +211,14 @@ export class NodeComponent extends PageBaseComponent implements OnInit, OnDestro this.lastUrl && (this.lastUrl.includes('/info') || this.lastUrl.includes('/routing') || this.lastUrl.includes('/transports') || + this.lastUrl.includes('/bandwidth') || + this.lastUrl.includes('/uptime') || this.lastUrl.includes('/rewards') || this.lastUrl.includes('/skynet') || + this.lastUrl.includes('/web-proxy') || this.lastUrl.includes('/resources') || + this.lastUrl.includes('/terminal') || + this.lastUrl.includes('/logs') || this.lastUrl.includes('/chat') || this.lastUrl.includes('/dmsg') || (this.lastUrl.includes('/apps') && !this.lastUrl.includes('/apps-list')))) { @@ -239,11 +244,26 @@ export class NodeComponent extends PageBaseComponent implements OnInit, OnDestro label: 'node.tabs.transports', linkParts: NodeComponent.currentNodeKey ? ['/nodes', NodeComponent.currentNodeKey, 'transports'] : null, }, + { + icon: 'equalizer', + label: 'node.tabs.bandwidth', + linkParts: NodeComponent.currentNodeKey ? ['/nodes', NodeComponent.currentNodeKey, 'bandwidth'] : null, + }, + { + icon: 'schedule', + label: 'node.tabs.uptime', + linkParts: NodeComponent.currentNodeKey ? ['/nodes', NodeComponent.currentNodeKey, 'uptime'] : null, + }, { icon: 'apps', label: 'node.tabs.apps', linkParts: NodeComponent.currentNodeKey ? ['/nodes', NodeComponent.currentNodeKey, 'apps'] : null, }, + { + icon: 'forum', + label: 'node.tabs.chat', + linkParts: NodeComponent.currentNodeKey ? ['/nodes', NodeComponent.currentNodeKey, 'chat'] : null, + }, { icon: 'monetization_on', label: 'node.tabs.rewards', @@ -254,15 +274,25 @@ export class NodeComponent extends PageBaseComponent implements OnInit, OnDestro label: 'node.tabs.skynet', linkParts: NodeComponent.currentNodeKey ? ['/nodes', NodeComponent.currentNodeKey, 'skynet'] : null, }, + { + icon: 'language', + label: 'node.tabs.web-proxy', + linkParts: NodeComponent.currentNodeKey ? ['/nodes', NodeComponent.currentNodeKey, 'web-proxy'] : null, + }, { icon: 'memory', label: 'node.tabs.resources', linkParts: NodeComponent.currentNodeKey ? ['/nodes', NodeComponent.currentNodeKey, 'resources'] : null, }, { - icon: 'forum', - label: 'node.tabs.chat', - linkParts: NodeComponent.currentNodeKey ? ['/nodes', NodeComponent.currentNodeKey, 'chat'] : null, + icon: 'terminal', + label: 'node.tabs.terminal', + linkParts: NodeComponent.currentNodeKey ? ['/nodes', NodeComponent.currentNodeKey, 'terminal'] : null, + }, + { + icon: 'description', + label: 'node.tabs.logs', + linkParts: NodeComponent.currentNodeKey ? ['/nodes', NodeComponent.currentNodeKey, 'logs'] : null, }, { icon: 'device_hub', @@ -280,24 +310,42 @@ export class NodeComponent extends PageBaseComponent implements OnInit, OnDestro if (this.lastUrl.includes('/transports')) { this.selectedTabIndex = 2; } - if (this.lastUrl.includes('/apps') && !this.lastUrl.includes('/apps-list')) { + if (this.lastUrl.includes('/bandwidth')) { this.selectedTabIndex = 3; } - if (this.lastUrl.includes('/rewards')) { + if (this.lastUrl.includes('/uptime')) { this.selectedTabIndex = 4; } - if (this.lastUrl.includes('/skynet')) { + if (this.lastUrl.includes('/apps') && !this.lastUrl.includes('/apps-list')) { this.selectedTabIndex = 5; } - if (this.lastUrl.includes('/resources')) { + if (this.lastUrl.includes('/chat')) { this.selectedTabIndex = 6; } - if (this.lastUrl.includes('/chat')) { + if (this.lastUrl.includes('/rewards')) { this.selectedTabIndex = 7; } - if (this.lastUrl.includes('/dmsg')) { + // /skynet matches BOTH the skynet tab and would otherwise also + // match a hypothetical /skynet-foo path; check after web-proxy + // since /web-proxy must take precedence on its own URL. + if (this.lastUrl.includes('/skynet')) { this.selectedTabIndex = 8; } + if (this.lastUrl.includes('/web-proxy')) { + this.selectedTabIndex = 9; + } + if (this.lastUrl.includes('/resources')) { + this.selectedTabIndex = 10; + } + if (this.lastUrl.includes('/terminal')) { + this.selectedTabIndex = 11; + } + if (this.lastUrl.includes('/logs')) { + this.selectedTabIndex = 12; + } + if (this.lastUrl.includes('/dmsg')) { + this.selectedTabIndex = 13; + } // Inform that the current subpage is not for showing a full list. this.showingFullList = false; diff --git a/static/skywire-manager-src/src/app/components/pages/node/terminal/terminal.component.html b/static/skywire-manager-src/src/app/components/pages/node/terminal/terminal.component.html new file mode 100644 index 0000000000..e0aae29665 --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/node/terminal/terminal.component.html @@ -0,0 +1,16 @@ +@if (node) { +
+
+
+ {{ 'terminal.help' | translate }} + +
+ @if (iframeUrl) { + + } +
+
+} diff --git a/static/skywire-manager-src/src/app/components/pages/node/terminal/terminal.component.scss b/static/skywire-manager-src/src/app/components/pages/node/terminal/terminal.component.scss new file mode 100644 index 0000000000..d6579211be --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/node/terminal/terminal.component.scss @@ -0,0 +1,36 @@ +.term-box { + display: flex; + flex-direction: column; +} + +.term-shell { + display: flex; + flex-direction: column; + gap: 8px; + padding-bottom: 4px; +} + +.term-controls { + display: flex; + align-items: center; + gap: 12px; + padding: 4px 0; + + .dim { color: rgba(255, 255, 255, 0.6); } + .small { font-size: 0.85em; } + + .term-fullscreen { + margin-left: auto; + color: rgba(255, 255, 255, 0.85) !important; + .mat-icon { color: inherit; } + } +} + +.term-frame { + width: 100%; + height: 70vh; + min-height: 420px; + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 6px; + background: #000; +} diff --git a/static/skywire-manager-src/src/app/components/pages/node/terminal/terminal.component.ts b/static/skywire-manager-src/src/app/components/pages/node/terminal/terminal.component.ts new file mode 100644 index 0000000000..baa97123c4 --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/node/terminal/terminal.component.ts @@ -0,0 +1,64 @@ +import { Component, OnDestroy, OnInit } from '@angular/core'; +import { Subscription } from 'rxjs'; +import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser'; + +import { Node } from '../../../../app.datatypes'; +import { NodeComponent } from '../node.component'; +import { PageBaseComponent } from 'src/app/utils/page-base'; + +/** + * Per-visor Terminal tab. Iframes the dmsgpty UI that the + * hypervisor already serves at /pty/ (that route handles both + * the HTML page and the WebSocket upgrade for terminal I/O), so + * the tab is essentially a thin frame wrapper plus an "open in a + * new window" link for full-screen use. + * + * The /pty/ route works for both the local visor (CLI socket) + * and remote visors (DMSG) — same UX either way. + */ +@Component({ + selector: 'app-terminal', + templateUrl: './terminal.component.html', + styleUrls: ['./terminal.component.scss'], + standalone: false, +}) +export class TerminalComponent extends PageBaseComponent implements OnInit, OnDestroy { + node: Node; + iframeUrl: SafeResourceUrl | null = null; + fullWindowUrl = ''; + // Last PK we built the iframe URL for. NodeComponent.currentNode + // emits on every polling refresh (~every few seconds); rebuilding + // the SafeResourceUrl on each tick produces a fresh object that + // Angular's change detection treats as a new src — the iframe + // reloads, killing the websocket and the active shell session. + // Only rebuild when the visor PK actually changes. + private boundPk = ''; + + private nodeSub: Subscription; + + constructor(private sanitizer: DomSanitizer) { super(); } + + ngOnInit() { + this.nodeSub = NodeComponent.currentNode.subscribe((node: Node) => { + this.node = node; + if (node && node.localPk && node.localPk !== this.boundPk) { + const url = '/pty/' + node.localPk; + this.iframeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(url); + // Same-origin so window.location.origin is fine; the + // hypervisor handler answers /pty/ on the same port. + this.fullWindowUrl = window.location.origin + url; + this.boundPk = node.localPk; + } + }); + return super.ngOnInit(); + } + + ngOnDestroy(): void { + this.nodeSub?.unsubscribe(); + } + + openFullWindow() { + if (!this.fullWindowUrl) { return; } + window.open(this.fullWindowUrl, '_blank', 'noopener noreferrer'); + } +} diff --git a/static/skywire-manager-src/src/app/components/pages/node/uptime/uptime.component.html b/static/skywire-manager-src/src/app/components/pages/node/uptime/uptime.component.html new file mode 100644 index 0000000000..77fca6116e --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/node/uptime/uptime.component.html @@ -0,0 +1,79 @@ +@if (node) { +
+
+
+
+ {{ 'uptime.window' | translate }}: + + + +
+ +
+ + @if (loading && days.length === 0) { +
+ + {{ 'uptime.loading' | translate }} +
+ } + + @if (error && days.length === 0) { +
+ error_outline + {{ error }} +
+ } + + @if (days.length === 0 && !loading && !error) { +
{{ 'uptime.empty' | translate }}
+ } + + @if (days.length > 0) { +
+ {{ 'uptime.window-avg' | translate }}: + @for (s of summary; track s.name) { + + {{ tierLabel(s.name) | translate }} + {{ fmtPct(s.pct) }} + + } + @if (fetchedAt) { + — {{ 'uptime.last-updated' | translate }}: {{ fetchedAt | date: 'HH:mm:ss' }} + } +
+ } + + @for (d of days; track trackDay($index, d)) { +
+
+ {{ d.date }} + @if (d.isToday) { + {{ 'uptime.today' | translate }} + } +
+ @for (t of d.tiers; track trackTier($index, t)) { +
+ {{ tierLabel(t.name) | translate }} +
+ @for (c of t.cells; track trackCell($index, c)) { + + } +
+ + {{ t.empty ? '–' : fmtPct(t.pct) }} + +
+ } +
+ } +
+
+} diff --git a/static/skywire-manager-src/src/app/components/pages/node/uptime/uptime.component.scss b/static/skywire-manager-src/src/app/components/pages/node/uptime/uptime.component.scss new file mode 100644 index 0000000000..baba163c17 --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/node/uptime/uptime.component.scss @@ -0,0 +1,182 @@ +@import "variables"; + +.up-controls { + display: flex; + align-items: center; + gap: 12px; + flex-wrap: wrap; + margin-bottom: 12px; + + .control-group { + display: flex; + align-items: center; + gap: 4px; + + .control-label { + font-size: 0.85em; + color: rgba(255, 255, 255, 0.65); + } + + button { + min-width: 0; + padding: 0 12px !important; + opacity: 0.6; + color: rgba(255, 255, 255, 0.85) !important; + + &.active { + opacity: 1; + background: rgba(33, 150, 243, 0.18) !important; + color: #fff !important; + } + } + } + + .refresh-btn { + margin-left: auto; + color: rgba(255, 255, 255, 0.85) !important; + .mat-icon { color: inherit; } + } +} + +.loading-row, .error-row { + display: flex; + align-items: center; + padding: 12px; +} + +.up-empty { + padding: 24px; + text-align: center; + color: rgba(255, 255, 255, 0.5); + font-style: italic; +} + +.summary-strip { + display: flex; + align-items: center; + gap: 16px; + flex-wrap: wrap; + padding: 8px 12px; + margin-bottom: 12px; + background: rgba(255, 255, 255, 0.04); + border-radius: 4px; + + .summary-label { + font-size: 0.85em; + color: rgba(255, 255, 255, 0.65); + } + + .summary-tier { + display: flex; + align-items: baseline; + gap: 6px; + + .summary-tier-name { + font-size: 0.85em; + color: rgba(255, 255, 255, 0.75); + } + .summary-tier-pct { + font-size: 0.95em; + font-weight: 600; + } + } + + .last-updated { + margin-left: auto; + } +} + +.up-day-block { + margin-bottom: 12px; + background: rgba(255, 255, 255, 0.03); + border-radius: 4px; + padding: 8px 12px; +} + +.up-day-head { + display: flex; + align-items: baseline; + gap: 12px; + padding-bottom: 6px; + border-bottom: 1px solid rgba(255, 255, 255, 0.08); + margin-bottom: 6px; + + .up-day-date { + font-weight: 600; + color: #fff; + font-size: 0.95em; + } + .up-day-today { + color: rgba(33, 150, 243, 0.85); + text-transform: uppercase; + letter-spacing: 0.05em; + } +} + +.up-tier-line { + display: flex; + align-items: center; + gap: 8px; + padding: 2px 0; + + .up-tier-name { + flex: 0 0 auto; + width: 80px; + color: rgba(255, 255, 255, 0.7); + text-transform: capitalize; + cursor: help; + } + + .up-bar { + flex: 1; + display: flex; + height: 12px; + background: rgba(0, 0, 0, 0.25); + border-radius: 2px; + overflow: hidden; + min-width: 0; + } + + .up-cell { + flex: 1; + min-width: 1px; + height: 100%; + border-right: 1px solid rgba(0, 0, 0, 0.18); + + &.on { background: #4caf50; } + &.off { background: rgba(229, 57, 53, 0.4); } + // Future slots — neutral, no claim about uptime; rendered as a + // soft hatched/dim band so today's incomplete bar reads as + // "not yet" rather than "down". + &.future { + background: rgba(255, 255, 255, 0.04); + // a subtle diagonal pattern signals the cell hasn't happened. + background-image: repeating-linear-gradient( + 45deg, + transparent, + transparent 2px, + rgba(255, 255, 255, 0.06) 2px, + rgba(255, 255, 255, 0.06) 4px + ); + } + &:last-child { border-right: none; } + } + + .up-pct { + flex: 0 0 auto; + width: 56px; + text-align: right; + } +} + +.mono { font-family: monospace; } +.small { font-size: 0.85em; } +.dim { color: rgba(255, 255, 255, 0.55); } + +.up-good { color: #4caf50; } +.up-mid { color: #ff9800; } +.up-bad { color: #e53935; } + +.ml-2 { margin-left: 8px; } +.ml-1 { margin-left: 4px; } +.mt-3 { margin-top: 12px; } diff --git a/static/skywire-manager-src/src/app/components/pages/node/uptime/uptime.component.ts b/static/skywire-manager-src/src/app/components/pages/node/uptime/uptime.component.ts new file mode 100644 index 0000000000..447475bbd1 --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/node/uptime/uptime.component.ts @@ -0,0 +1,256 @@ +import { Component, OnDestroy, OnInit, ChangeDetectorRef } from '@angular/core'; +import { Subscription, interval, startWith, of } from 'rxjs'; +import { switchMap, catchError } from 'rxjs/operators'; + +import { Node } from '../../../../app.datatypes'; +import { NodeComponent } from '../node.component'; +import { PageBaseComponent } from 'src/app/utils/page-base'; +import { ApiService } from 'src/app/services/api.service'; + +/** + * Per-visor Uptime tab. Reads from the visor's local bbolt stats + * store via the LocalUptimeStats RPC, mirroring `/stats/uptime` on + * the visor's logserver. + * + * Layout: one row per UTC day (newest first), with the three tiers + * — process / dmsg / skynet — rendered as adjacent ribbons under a + * shared date header. Each ribbon has 288 cells at 5-minute slot + * resolution; "future" slots on today's row are explicitly distinct + * from "offline" so an empty bar on today doesn't read as downtime. + * + * Tier semantics: + * process — visor process is up (the local sampler ticked). + * dmsg — dmsg client connected to a server. + * skynet — visor has ≥ 2 live transports (matches TPD's + * "skynet online" criterion: a visor is skynet-routable + * only when it has at least two transports for traffic + * to actually flow through). + */ + +interface UptimeResp { + tiers?: { [tier: string]: { [date: string]: string } }; + since?: string; + until?: string; + fetched_at?: string; +} + +interface DayCell { + state: 'on' | 'off' | 'future'; + slot: number; +} + +interface TierLine { + name: string; + cells: DayCell[]; + // Percentage online out of *known* slots only (excludes future slots). + pct: number; + // True when this tier had no data recorded for this day at all. + empty: boolean; +} + +interface DayBlock { + date: string; + // True when this is today's UTC date — used to mark trailing + // slots as "future" instead of "offline". + isToday: boolean; + tiers: TierLine[]; +} + +const TIER_ORDER = ['process', 'dmsg', 'skynet']; + +type WindowDays = 1 | 7 | 30; + +@Component({ + selector: 'app-uptime', + templateUrl: './uptime.component.html', + styleUrls: ['./uptime.component.scss'], + standalone: false, +}) +export class UptimeComponent extends PageBaseComponent implements OnInit, OnDestroy { + node: Node; + days: DayBlock[] = []; + loading = true; + error: string | null = null; + fetchedAt: Date | null = null; + windowDays: WindowDays = 7; + + // Per-tier window averages (across visible past + completed slots + // of today). Kept in render order so the summary strip stays + // tier-aligned with the day blocks below. + summary: { name: string; pct: number }[] = []; + + private nodeSub: Subscription; + private pollSub: Subscription; + + constructor(private api: ApiService, private cdr: ChangeDetectorRef) { super(); } + + ngOnInit() { + this.nodeSub = NodeComponent.currentNode.subscribe((node: Node) => { + const wasUnset = !this.node; + this.node = node; + if (wasUnset && node) { this.startPolling(); } + }); + return super.ngOnInit(); + } + + ngOnDestroy(): void { + this.nodeSub?.unsubscribe(); + this.pollSub?.unsubscribe(); + } + + setWindow(d: WindowDays) { + if (d === this.windowDays) { return; } + this.windowDays = d; + this.refreshNow(); + } + + refreshNow() { + if (!this.node) { return; } + this.fetchOnce().subscribe(); + } + + private startPolling() { + // 60s cadence: tier bitmaps tick on the visor's 5-minute sampler, + // so polling faster wastes RPC; slower delays "now" by too much. + this.pollSub = interval(60000).pipe( + startWith(0), + switchMap(() => this.fetchOnce()), + ).subscribe(); + } + + private fetchOnce() { + const until = new Date(); + const since = new Date(until.getTime() - this.windowDays * 86400 * 1000); + const qs = `?since=${since.toISOString()}&until=${until.toISOString()}`; + return this.api.get(`visors/${this.node.localPk}/local-uptime-stats${qs}`).pipe( + catchError((err) => { + this.error = err?.message || 'Failed to fetch uptime'; + this.loading = false; + this.cdr.markForCheck(); + return of(null); + }), + switchMap((resp: UptimeResp | null) => { + if (resp) { this.consume(resp); } + return of(resp); + }), + ); + } + + private consume(resp: UptimeResp) { + const tiers = resp.tiers || {}; + const todayKey = new Date().toISOString().slice(0, 10); + // Slot index inside today's day where "now" falls. Cells at or + // beyond this are future, regardless of the tier's bitmap. + const now = new Date(); + const nowSlot = Math.floor((now.getUTCHours() * 60 + now.getUTCMinutes()) / 5); + + // Collect every date that any tier reported. + const dateSet = new Set(); + for (const name of TIER_ORDER) { + const days = tiers[name]; + if (!days) { continue; } + for (const d of Object.keys(days)) { dateSet.add(d); } + } + const sortedDates = Array.from(dateSet).sort().reverse(); // newest first + + const out: DayBlock[] = []; + // Per-tier accumulators for the summary strip. + const onlineByTier: { [name: string]: number } = {}; + const knownByTier: { [name: string]: number } = {}; + + for (const date of sortedDates) { + const isToday = date === todayKey; + const tierLines: TierLine[] = []; + for (const name of TIER_ORDER) { + const ascii = (tiers[name] && tiers[name][date]) || ''; + const cells = this.buildCells(ascii, isToday, nowSlot); + let online = 0; + let known = 0; + for (const c of cells) { + if (c.state === 'future') { continue; } + known++; + if (c.state === 'on') { online++; } + } + tierLines.push({ + name, + cells, + pct: known > 0 ? (online / known) * 100 : 0, + empty: !ascii, + }); + onlineByTier[name] = (onlineByTier[name] || 0) + online; + knownByTier[name] = (knownByTier[name] || 0) + known; + } + out.push({ date, isToday, tiers: tierLines }); + } + + this.days = out; + this.summary = TIER_ORDER.map((name) => ({ + name, + pct: knownByTier[name] > 0 ? (onlineByTier[name] / knownByTier[name]) * 100 : 0, + })); + this.fetchedAt = resp.fetched_at ? new Date(resp.fetched_at) : new Date(); + this.loading = false; + this.error = null; + this.cdr.markForCheck(); + } + + private buildCells(ascii: string, isToday: boolean, nowSlot: number): DayCell[] { + const expected = 288; + let s = ascii || ''; + if (s.length < expected) { s = s.padEnd(expected, ' '); } + if (s.length > expected) { s = s.slice(0, expected); } + const cells: DayCell[] = new Array(expected); + for (let i = 0; i < expected; i++) { + let state: DayCell['state']; + if (isToday && i >= nowSlot) { + // Don't conflate future slots with offline — the bitmap + // will read ' ' for them simply because they haven't + // happened yet, which says nothing about reachability. + state = 'future'; + } else { + state = s.charAt(i) === '.' ? 'on' : 'off'; + } + cells[i] = { state, slot: i }; + } + return cells; + } + + fmtSlot(slot: number): string { + const minutes = slot * 5; + const hh = Math.floor(minutes / 60).toString().padStart(2, '0'); + const mm = (minutes % 60).toString().padStart(2, '0'); + return `${hh}:${mm}`; + } + + cellTooltip(c: DayCell): string { + const start = this.fmtSlot(c.slot); + const end = this.fmtSlot(Math.min(c.slot + 1, 288)); + let label: string; + switch (c.state) { + case 'on': label = 'online'; break; + case 'off': label = 'offline'; break; + default: label = 'future'; + } + return `${start}–${end} UTC: ${label}`; + } + + fmtPct(p: number): string { + if (p >= 99.95) { return '100%'; } + if (p > 0 && p < 1) { return '<1%'; } + return p.toFixed(1) + '%'; + } + + pctClass(p: number, empty: boolean = false): string { + if (empty) { return 'dim'; } + if (p >= 99) { return 'up-good'; } + if (p >= 80) { return 'up-mid'; } + return 'up-bad'; + } + + tierLabel(name: string): string { return 'uptime.tier-' + name; } + tierInfo(name: string): string { return 'uptime.tier-' + name + '-info'; } + + trackDay(_: number, d: DayBlock): string { return d.date; } + trackTier(_: number, t: TierLine): string { return t.name; } + trackCell(_: number, c: DayCell): number { return c.slot; } +} diff --git a/static/skywire-manager-src/src/app/components/pages/node/web-proxy/web-proxy.component.html b/static/skywire-manager-src/src/app/components/pages/node/web-proxy/web-proxy.component.html new file mode 100644 index 0000000000..2afbc8c76b --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/node/web-proxy/web-proxy.component.html @@ -0,0 +1,70 @@ +@if (node) { +
+
+ {{ 'web-proxy.title' | translate }} +

{{ 'web-proxy.help' | translate }}

+ + @if (loading && !proxyStatus) { +
+ + {{ 'web-proxy.loading' | translate }} +
+ } + + @if (proxyStatus && (proxyStatus.dmsg_web || proxyStatus.skynet_web)) { + + + + + + + + @if (proxyStatus.dmsg_web) { + + + + + + + } + @if (proxyStatus.skynet_web) { + + + + + + + } +
{{ 'web-proxy.resolver' | translate }}{{ 'web-proxy.running' | translate }}{{ 'web-proxy.socks-addr' | translate }}{{ 'web-proxy.upstream' | translate }}
.dmsg + {{ proxyStatus.dmsg_web.running ? 'Yes' : 'No' }} + {{ proxyStatus.dmsg_web.socks_addr || '-' }}{{ proxyStatus.dmsg_web.upstream_socks || 'direct' }}
.skynet + {{ proxyStatus.skynet_web.running ? 'Yes' : 'No' }} + {{ proxyStatus.skynet_web.socks_addr || '-' }}{{ proxyStatus.skynet_web.upstream_socks || 'direct' }}
+ } + +
+ + {{ 'web-proxy.enable' | translate }} + + +
+ + {{ 'web-proxy.upstream-label' | translate }} + + + +
+ + +
+
+
+} diff --git a/static/skywire-manager-src/src/app/components/pages/node/web-proxy/web-proxy.component.scss b/static/skywire-manager-src/src/app/components/pages/node/web-proxy/web-proxy.component.scss new file mode 100644 index 0000000000..5c81fa8d05 --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/node/web-proxy/web-proxy.component.scss @@ -0,0 +1,42 @@ +.dim { color: rgba(255, 255, 255, 0.6); } +.small { font-size: 0.85em; } +.mono { font-family: monospace; word-break: break-all; } + +.wp-help { + margin: 4px 0 12px; +} + +.loading-row { + display: flex; + align-items: center; + padding: 12px 0; +} + +.wp-status { + margin-bottom: 16px; + + td.mono { font-size: 11px; } + .wp-ok { color: #4caf50; } + .wp-off { color: rgba(255, 255, 255, 0.6); } +} + +.wp-controls { + display: flex; + flex-direction: column; + gap: 12px; + align-items: flex-start; + + .wp-upstream { + display: flex; + align-items: baseline; + gap: 12px; + flex-wrap: wrap; + } + + .wp-upstream-field { flex: 1 1 320px; min-width: 220px; } + + .wp-refresh { + color: rgba(255, 255, 255, 0.85) !important; + .mat-icon { color: inherit; } + } +} diff --git a/static/skywire-manager-src/src/app/components/pages/node/web-proxy/web-proxy.component.ts b/static/skywire-manager-src/src/app/components/pages/node/web-proxy/web-proxy.component.ts new file mode 100644 index 0000000000..5ed099fce3 --- /dev/null +++ b/static/skywire-manager-src/src/app/components/pages/node/web-proxy/web-proxy.component.ts @@ -0,0 +1,113 @@ +import { Component, OnDestroy, OnInit, ChangeDetectorRef } from '@angular/core'; +import { UntypedFormControl, UntypedFormGroup } from '@angular/forms'; +import { Subscription } from 'rxjs'; + +import { Node } from '../../../../app.datatypes'; +import { NodeComponent } from '../node.component'; +import { PageBaseComponent } from 'src/app/utils/page-base'; +import { NodeService } from 'src/app/services/node.service'; +import { SnackbarService } from 'src/app/services/snackbar.service'; + +/** + * Per-visor "Web Proxy" tab — controls the visor's embedded + * resolving proxy (.skynet + .dmsg domain resolution). Was a + * MatDialog opened from the actions menu next to the shut-down + * button; promoted to a tab so it sits with the other per-visor + * configuration surfaces and isn't gated behind a destructive- + * action menu. + * + * Mirrors the previous ProxySettingsComponent feature set: enable + * toggle (which flips both .skynet and .dmsg resolvers in lock- + * step) + an upstream SOCKS5 address for non-resolved traffic. + */ +@Component({ + selector: 'app-web-proxy', + templateUrl: './web-proxy.component.html', + styleUrls: ['./web-proxy.component.scss'], + standalone: false, +}) +export class WebProxyComponent extends PageBaseComponent implements OnInit, OnDestroy { + node: Node; + form: UntypedFormGroup; + loading = false; + proxyStatus: any = null; + + private nodeSub: Subscription; + + constructor( + private nodeService: NodeService, + private snackbar: SnackbarService, + private cdr: ChangeDetectorRef, + ) { + super(); + this.form = new UntypedFormGroup({ + skynetEnabled: new UntypedFormControl(false), + upstream: new UntypedFormControl(''), + }); + } + + ngOnInit() { + this.nodeSub = NodeComponent.currentNode.subscribe((node: Node) => { + const wasUnset = !this.node; + this.node = node; + if (wasUnset && node) { this.loadStatus(); } + }); + return super.ngOnInit(); + } + + ngOnDestroy(): void { + this.nodeSub?.unsubscribe(); + } + + loadStatus() { + if (!this.node) { return; } + this.loading = true; + this.nodeService.getProxies(this.node.localPk).subscribe( + (status: any) => { + this.proxyStatus = status; + this.loading = false; + const skynetRunning = status?.skynet_web?.running || false; + const upstream = status?.skynet_web?.upstream_socks || ''; + this.form.get('skynetEnabled').setValue(skynetRunning); + this.form.get('upstream').setValue(upstream); + this.cdr.markForCheck(); + }, + () => { this.loading = false; this.cdr.markForCheck(); }, + ); + } + + toggleProxy() { + if (!this.node) { return; } + const enable = this.form.get('skynetEnabled').value; + this.loading = true; + this.nodeService.setProxyEnabled(this.node.localPk, 'skynet', enable).subscribe( + () => { + this.nodeService.setProxyEnabled(this.node.localPk, 'dmsg', enable).subscribe( + () => { + this.loading = false; + this.snackbar.showDone(enable ? 'Resolving proxy enabled' : 'Resolving proxy disabled'); + this.loadStatus(); + }, + () => { this.loading = false; }, + ); + }, + () => { this.loading = false; this.snackbar.showError('Failed to toggle proxy'); }, + ); + } + + setUpstream() { + if (!this.node) { return; } + const addr = (this.form.get('upstream').value || '').trim(); + this.loading = true; + this.nodeService.setProxyUpstream(this.node.localPk, 'skynet', addr).subscribe( + () => { + this.loading = false; + this.snackbar.showDone(addr ? `Upstream set to ${addr}` : 'Upstream cleared'); + this.loadStatus(); + }, + () => { this.loading = false; this.snackbar.showError('Failed to set upstream'); }, + ); + } + + refresh() { this.loadStatus(); } +} diff --git a/static/skywire-manager-src/src/app/services/api.service.ts b/static/skywire-manager-src/src/app/services/api.service.ts index 6a5f7fe279..230a3dbf01 100644 --- a/static/skywire-manager-src/src/app/services/api.service.ts +++ b/static/skywire-manager-src/src/app/services/api.service.ts @@ -14,6 +14,11 @@ export enum ResponseTypes { export enum RequestTypes { Json = 'json', + // RawJson sends the body as-is (must already be a JSON-encoded + // string). Avoids the double JSON.stringify the default Json mode + // would do — useful when the caller wants the user's exact bytes + // preserved on the wire (e.g. the runtime-config editor). + RawJson = 'raw-json', } export class RequestOptions { @@ -156,7 +161,7 @@ export class ApiService { requestOptions.headers = new HttpHeaders(); - if (options.requestType === RequestTypes.Json) { + if (options.requestType === RequestTypes.Json || options.requestType === RequestTypes.RawJson) { requestOptions.headers = requestOptions.headers.append('Content-Type', 'application/json'); } @@ -171,6 +176,10 @@ export class ApiService { * Encode the content to send it to the backend. */ private getPostBody(body: any, options: RequestOptions) { + if (options.requestType === RequestTypes.RawJson) { + // Caller is responsible for handing us a JSON-encoded string. + return typeof body === 'string' ? body : JSON.stringify(body); + } if (options.requestType === RequestTypes.Json) { return JSON.stringify(body); } diff --git a/static/skywire-manager-src/src/app/utils/home-tabs.ts b/static/skywire-manager-src/src/app/utils/home-tabs.ts index 2a54257261..a22dfabd83 100644 --- a/static/skywire-manager-src/src/app/utils/home-tabs.ts +++ b/static/skywire-manager-src/src/app/utils/home-tabs.ts @@ -3,8 +3,9 @@ import { TabButtonData } from '../components/layout/top-bar/top-bar.component'; /** * Single source of truth for the home top-bar's tab strip. * Used by every home-level page (node-list, network-view, - * network-transports, multi-visor-resources, services-health, - * settings) so the order and grouping stay consistent. + * network-transports, multi-visor-resources, multi-visor-uptime, + * services-health, settings) so the order and grouping stay + * consistent. * * The `group` field drives the visual separator in the top-bar * between local-hypervisor tabs and network-wide tabs. @@ -16,8 +17,9 @@ import { TabButtonData } from '../components/layout/top-bar/top-bar.component'; * 3 Transports * 4 Network * 5 Network Visualizer - * 6 Deployment - * 7 Settings + * 6 Services Health + * 7 Uptime + * 8 Settings */ export const HOME_TAB_INDEX = { visorList: 0, @@ -26,8 +28,9 @@ export const HOME_TAB_INDEX = { transports: 3, network: 4, tpviz: 5, - deployment: 6, - settings: 7, + servicesHealth: 6, + uptime: 7, + settings: 8, }; export function homeTabsData(): TabButtonData[] { @@ -41,6 +44,7 @@ export function homeTabsData(): TabButtonData[] { { icon: 'public', label: 'nodes.network-title', linkParts: ['/nodes', 'network'], group: 'network' }, { icon: 'bubble_chart', label: 'node.details.tpviz.title', linkParts: [], externalUrl: '/tp-viz/', group: 'network' }, { icon: 'check_circle', label: 'nodes.services-health-title', linkParts: ['/nodes', 'services-health'], group: 'network' }, + { icon: 'schedule', label: 'nodes.uptime-title', linkParts: ['/nodes', 'uptime'], group: 'network' }, // --- meta --- { icon: 'settings', label: 'settings.title', linkParts: ['/settings'] }, ]; diff --git a/static/skywire-manager-src/src/assets/i18n/en.json b/static/skywire-manager-src/src/assets/i18n/en.json index ea49412e4f..528dcd9871 100644 --- a/static/skywire-manager-src/src/assets/i18n/en.json +++ b/static/skywire-manager-src/src/assets/i18n/en.json @@ -22,7 +22,8 @@ "unknown": "Unknown", "close": "Close", "window-size-error": "The window is too narrow for the content.", - "data-update-problems": "Problem updating the data." + "data-update-problems": "Problem updating the data.", + "visors": "visors" }, "labeled-element": { @@ -221,7 +222,10 @@ }, "config": { "view-button": "View Config", - "title": "Runtime Configuration" + "title": "Runtime Configuration", + "edit": "Edit", + "save": "Save", + "restart-hint": "Visor must be restarted for changes to take effect." }, "tpviz": { "title": "Network Visualizer", @@ -234,9 +238,14 @@ "apps": "Apps", "routing": "Routing", "transports": "Transports", + "bandwidth": "Bandwidth", + "uptime": "Uptime", "rewards": "Rewards", "skynet": "Skynet", + "web-proxy": "Web Proxy", "resources": "Resources", + "terminal": "Terminal", + "logs": "Logs", "chat": "Skychat", "dmsg": "DMSG" }, @@ -271,6 +280,7 @@ "network-title": "Network", "resources-title": "Resources", "transports-title": "Transports", + "uptime-title": "Uptime", "dmsg-settings-title": "DMSG settings", "reward-address": "Reward Address", "reward-total": "Week Total", @@ -340,6 +350,13 @@ "view": "View", "view-compact": "Compact", "view-tree": "Tree", + "edges": "Edges", + "edges-show": "Show", + "edges-hide": "Hide", + "offline": "Offline", + "offline-show": "Show", + "offline-hide": "Hide", + "offline-count-tooltip": "Number of this visor's transports that TPD currently considers offline", "refresh": "Refresh", "tp-id": "Transport ID", "type": "Type", @@ -391,6 +408,91 @@ "rsn-error": "Unreachable" }, + "terminal": { + "help": "Live shell on the visor (dmsgpty). Ctrl+D or type \"exit\" to close.", + "open-fullscreen": "Open in new window" + }, + + "web-proxy": { + "title": "Resolving Proxy", + "help": "Browse .skynet and .dmsg domains. Optionally route all other traffic through an upstream SOCKS5 proxy (e.g. skysocks).", + "loading": "Reading proxy state…", + "resolver": "Resolver", + "running": "Running", + "socks-addr": "SOCKS", + "upstream": "Upstream", + "enable": "Enable resolving proxy (.skynet + .dmsg)", + "upstream-label": "Upstream SOCKS5 (e.g. 127.0.0.1:1080)", + "set": "Set", + "refresh": "Refresh" + }, + + "logs": { + "loading": "Loading runtime logs…", + "empty": "No log entries match the current filter.", + "filter": "Filter", + "pause": "Pause", + "resume": "Resume", + "open-raw": "Open raw logs", + "view-rest": "View all {{number}} entries in raw format >", + "dropped": "Skipped {{count}} older entries that aged out of the visor's runtime buffer." + }, + + "bandwidth": { + "loading": "Reading local transport stats…", + "empty": "No transport bandwidth recorded yet.", + "transports": "transports", + "total": "total", + "last-updated": "fetched", + "window": "Window", + "window-now": "Now", + "refresh": "Refresh", + "current-snapshot": "Current snapshot", + "daily-history": "Daily history", + "no-history": "No daily rollups recorded yet.", + "date": "Date", + "sent": "Sent", + "recv": "Recv", + "samples": "Samples", + "latency-current": "Latency (min/avg/max)", + "latency-min-avg-max": "Lat min/avg/max", + "sampled-at": "Sampled at" + }, + + "uptime": { + "loading": "Reading local uptime bitmaps…", + "empty": "No uptime data recorded yet.", + "tiers": "tiers", + "today": "today", + "window-avg": "Window avg", + "last-updated": "fetched", + "window": "Window", + "window-now": "Today", + "refresh": "Refresh", + "tier-process": "Process", + "tier-process-info": "Visor process up — local sampler ticked.", + "tier-dmsg": "DMSG", + "tier-dmsg-info": "DMSG client has at least one server session.", + "tier-skynet": "Skynet", + "tier-skynet-info": "≥ 2 live transports — visor is routable through Skynet (matches TPD's 'skynet online' criterion).", + "online": "online", + "offline": "offline", + "legend": "Legend", + "legend-down": "down", + "legend-up": "up", + "legend-future": "future", + "loading-fleet": "Reading TPD uptime feed…", + "fleet-empty": "No connected visors reporting uptime.", + "fleet-filter": "Filter", + "fleet-filter-connected": "Only connected to this hypervisor", + "fleet-filter-all": "All visible visors", + "fleet-visor": "Visor", + "fleet-process": "Process %", + "fleet-dmsg": "DMSG %", + "fleet-skynet": "Skynet %", + "today-pct": "Today %" + }, + "skychat": { "title": "Skychat", "connected": "Connected", @@ -673,8 +775,31 @@ }, "skychat-settings": { "title": "Skychat Settings", + "listener-section": "Listener", "localhost-only": "Allow access from the local machine only", - "port": "Port", + "port": "Port (--port routing)", + "skynet": "Listen on Skynet (--skynet)", + "skynet-info": "Accept connections via the Skynet network. Disable to be reachable only on DMSG.", + "dmsg": "Listen on DMSG (--dmsg)", + "dmsg-info": "Accept connections via the DMSG network. Disable to be reachable only on Skynet.", + "persistence-section": "Persistence", + "persistence-help": "When enabled, skychat stores message history in a local BoltDB. All limits below have safe defaults; leave a field empty to use the binary's default.", + "persist-enable": "Enable persistence (--persist)", + "persist-max-size": "Max message size, bytes (--persist-max-size)", + "persist-max-size-hint": "Default 4096", + "persist-per-peer-rate": "Per-peer rate, msgs/min (--persist-per-peer-rate)", + "persist-per-peer-rate-hint": "Default 20", + "persist-per-peer-cap": "Per-peer cap, msgs (--persist-per-peer-cap)", + "persist-per-peer-cap-hint": "FIFO eviction; default 500", + "persist-total-cap": "Total cap, MB (--persist-total-cap)", + "persist-total-cap-hint": "Default 10", + "persist-ttl": "TTL, days (--persist-ttl)", + "persist-ttl-hint": "0 disables sweep; default 30", + "persist-seed": "SSE seed count (--persist-seed)", + "persist-seed-hint": "Recent messages sent to new SSE clients; 0 disables. Default 50", + "pairing-section": "Pairing", + "pair-enable": "Enable CXO pair feeds (--pair-enable)", + "pair-enable-info": "Per-partner CXO pair feeds + handshake (HTTP /pair endpoints).", "save": "Save", "changes-made": "The changes have been made.", "port-error": "Must be a valid number between 1025 and 65536.", @@ -738,6 +863,15 @@ "settings-changed-alert": " The changes have not been saved yet.", "save-settings": "Save settings", + "addr": "Listener address (--addr)", + "addr-hint": "Where the SOCKS5 server listens locally (default: 127.0.0.1:1080)", + "http": "HTTP proxy address (--http)", + "http-hint": "When set, also expose an HTTP-CONNECT proxy on this address", + "tries": "Connection retries (--tries)", + "tries-hint": "Number of attempts before giving up (default: 3)", + "retry-time": "Retry delay seconds (--retry-time)", + "retry-time-hint": "Wait between retry attempts (default: 5)", + "change-note-dialog": { "title": "Change Note", "note": "Note" diff --git a/static/skywire-manager-src/src/assets/scss/_forms.scss b/static/skywire-manager-src/src/assets/scss/_forms.scss index a3466753e7..2e895bce6c 100644 --- a/static/skywire-manager-src/src/assets/scss/_forms.scss +++ b/static/skywire-manager-src/src/assets/scss/_forms.scss @@ -40,3 +40,110 @@ mat-form-field { pointer-events: none !important; opacity: 0.5 !important; } + +// ---- Inline edit / info-line layout helpers --------------------- +// These were originally scoped to the Info-tab component but are +// reused by the Rewards, Routing, and Transports tabs after that +// page-restructure split. Lift them into the global form helpers +// so all four tabs lay out consistently. + +.info-line { + word-break: break-word; + margin-top: 7px; + display: flex; + align-items: baseline; + gap: 6px; + // Wrap on narrow widths so the title + value + edit button don't + // collide when the value is long (e.g. a 66-char PK + edit btn). + flex-wrap: wrap; + + .text-with-right-margin { margin-right: 5px; } + .text-with-small-right-margin { margin-right: 3px; } + + .link-icon { + font-size: 20px; + line-height: 1; + color: white !important; + cursor: pointer; + } + + .edit-icon { display: inline !important; } + + mat-icon { + position: relative; + top: 3px; + user-select: none; + } + + i { margin-left: 7px; } + + .title { + opacity: 0.7; + white-space: nowrap; + min-width: 120px; + font-size: 0.9em; + } +} + +.toggle-line { + display: flex; + align-items: center; + gap: 8px; + flex-wrap: wrap; + + .info-tip { + opacity: 0.5; + font-size: 16px; + cursor: help; + } +} + +.collapsible-link { + cursor: pointer; + user-select: none; + display: flex; + align-items: center; + gap: 4px; + margin-top: 6px; + opacity: 0.85; + &:hover { opacity: 1; } +} + +.collapsible-header { + display: inline-flex !important; + align-items: center; + gap: 6px; +} + +.inline-edit-btn { + margin-left: 4px; + height: 24px; + width: 24px; + line-height: 24px; + opacity: 0.7; + &:hover { opacity: 1; } +} + +.inline-form { + display: flex; + flex-direction: column; + gap: 8px; + margin-top: 6px; + margin-bottom: 6px; + + .inline-form-field { width: 100%; } + .inline-form-field-sm { width: 120px; } + .inline-form-actions { + display: flex; + gap: 8px; + flex-wrap: wrap; + } +} + +.section-title { + font-size: 0.95em; + font-weight: 500; + color: rgba(255, 255, 255, 0.92); + display: block; + margin-bottom: 4px; +}