From 62e4d493bff3e795a6bf72bddfcb7577007e9978 Mon Sep 17 00:00:00 2001 From: erKam Date: Sat, 7 Nov 2026 21:07:49 +0000 Subject: [PATCH 1/7] feat(ui): remember scroll, treegrid routes, shared states, sortable tables The panel lost its place on every tab switch, the route config had no tree semantics, each page hand-rolled its loading and error states, and the live lists moved under the reader with no way to stop them. - Each tab keeps its scroll position, and six pages keep their selection, in sessionStorage per view and page (memory when storage is blocked). - The router Config view is a treegrid with aria-level, aria-expanded, a roving tab stop and arrow keys to move, expand and collapse. - A shared app-state component for loading, error with Retry, empty and no-match with Clear filters, used across thirteen pages. - Pause and Follow newest on the HTTP timeline, the store change log and the router Navigations view. - Sortable headers with aria-sort on the HTTP call table and the source route config table. Refs #370 --- app/src/__tests__/app-shell.test.ts | 39 ++ app/src/__tests__/app-state.test.ts | 83 +++ app/src/__tests__/live-feed.test.ts | 115 ++++ app/src/__tests__/network-live-sort.test.ts | 165 ++++++ app/src/__tests__/page-conventions.test.ts | 49 ++ .../__tests__/route-timeline-clear.test.ts | 2 +- app/src/__tests__/route-tree-treegrid.test.ts | 162 +++++ app/src/__tests__/sort-header.test.ts | 162 +++++ app/src/__tests__/store-inspector.test.ts | 50 +- app/src/__tests__/timeline.test.ts | 12 + app/src/__tests__/view-memory.test.ts | 121 ++++ app/src/app.ts | 25 +- app/src/pages/audit-inspector.ts | 28 +- app/src/pages/capacitor-inspector.ts | 21 +- app/src/pages/errors-inspector.ts | 20 +- app/src/pages/forms-inspector.ts | 3 + app/src/pages/live-route.ts | 23 +- app/src/pages/network-inspector.ts | 67 ++- app/src/pages/plugins-inspector.ts | 20 +- app/src/pages/query-inspector.ts | 34 +- app/src/pages/route-inspector.ts | 56 +- app/src/pages/route-lint.ts | 13 +- app/src/pages/route-timeline.ts | 61 +- app/src/pages/route-tree.ts | 236 ++++++-- app/src/pages/store-inspector.ts | 62 +- app/src/pages/timeline.ts | 31 +- app/src/test-setup.ts | 12 + app/src/ui/app-state.ts | 184 ++++++ app/src/ui/live-feed.ts | 278 +++++++++ app/src/ui/sort-header.ts | 140 +++++ app/src/view-memory.ts | 94 +++ .../content/getting-started/popup-and-hub.md | 2 + .../docs/src/content/inspectors/ngrx-store.md | 2 + apps/docs/src/content/inspectors/router.md | 6 +- apps/docs/src/content/inspectors/ssr-http.md | 6 +- ...=> browser-agent-rpc-KH4HHvHf-CfawV4BR.js} | 2 +- .../{index-dxIK5fBB.js => index-BvfP7itL.js} | 554 ++++++++++++++---- extension/ui/index.html | 2 +- packages/devtools/CHANGELOG.md | 5 + 39 files changed, 2634 insertions(+), 313 deletions(-) create mode 100644 app/src/__tests__/app-state.test.ts create mode 100644 app/src/__tests__/live-feed.test.ts create mode 100644 app/src/__tests__/network-live-sort.test.ts create mode 100644 app/src/__tests__/route-tree-treegrid.test.ts create mode 100644 app/src/__tests__/sort-header.test.ts create mode 100644 app/src/__tests__/view-memory.test.ts create mode 100644 app/src/ui/app-state.ts create mode 100644 app/src/ui/live-feed.ts create mode 100644 app/src/ui/sort-header.ts create mode 100644 app/src/view-memory.ts rename extension/ui/assets/{browser-agent-rpc-KH4HHvHf-BjQp5LKx.js => browser-agent-rpc-KH4HHvHf-CfawV4BR.js} (95%) rename extension/ui/assets/{index-dxIK5fBB.js => index-BvfP7itL.js} (55%) diff --git a/app/src/__tests__/app-shell.test.ts b/app/src/__tests__/app-shell.test.ts index d4909a9f..f1311806 100644 --- a/app/src/__tests__/app-shell.test.ts +++ b/app/src/__tests__/app-shell.test.ts @@ -321,6 +321,45 @@ describe('App tab bar', () => { }); }); +describe('App scroll memory', () => { + it('brings each tab back to where it was scrolled', async () => { + connection.answers = [true]; + const fixture = TestBed.createComponent(App); + document.body.appendChild(host(fixture)); + await settle(fixture); + + const main = host(fixture).querySelector('main')!; + // jsdom has no layout, so scrollTop is a plain value here. + let top = 0; + Object.defineProperty(main, 'scrollTop', { + configurable: true, + get: () => top, + set: (value: number) => (top = value), + }); + const buttons = () => [...host(fixture).querySelectorAll('nav button')]; + // An earlier test can leave another tab in the URL. + buttons()[0].click(); + await settle(fixture); + + main.scrollTop = 240; + main.dispatchEvent(new Event('scroll')); + buttons()[1].click(); + await settle(fixture); + expect(main.scrollTop).toBe(0); + + main.scrollTop = 80; + main.dispatchEvent(new Event('scroll')); + buttons()[0].click(); + await settle(fixture); + expect(main.scrollTop).toBe(240); + + buttons()[1].click(); + await settle(fixture); + expect(main.scrollTop).toBe(80); + fixture.destroy(); + }); +}); + describe('App counts launcher setting', () => { it('sends the stored counts launcher to the popup once the panel connects', async () => { localStorage.setItem('pangular-pref:pill', 'true'); diff --git a/app/src/__tests__/app-state.test.ts b/app/src/__tests__/app-state.test.ts new file mode 100644 index 00000000..f8016fff --- /dev/null +++ b/app/src/__tests__/app-state.test.ts @@ -0,0 +1,83 @@ +import { Component, signal } from '@angular/core'; +import { TestBed } from '@angular/core/testing'; +import { afterEach, describe, expect, it } from 'vitest'; +import { AppState, type StateKind } from '../ui/app-state'; + +@Component({ + imports: [AppState], + template: ` + + Can't read the data. +

Check that the dev server is running.

+
+ `, +}) +class Host { + readonly kind = signal('loading'); + readonly retrying = signal(false); + retries = 0; + clears = 0; +} + +async function mount(kind: StateKind) { + const fixture = TestBed.createComponent(Host); + fixture.componentInstance.kind.set(kind); + document.body.append(fixture.nativeElement as HTMLElement); + await fixture.whenStable(); + const state = (fixture.nativeElement as HTMLElement).querySelector('app-state')!; + return { fixture, state }; +} + +const buttons = (state: Element) => [...state.querySelectorAll('button')]; + +afterEach(() => { + document.body.innerHTML = ''; +}); + +describe('app-state', () => { + it('is a status with a spinner while loading, and has no button', async () => { + const { state } = await mount('loading'); + expect(state.getAttribute('role')).toBe('status'); + expect(state.getAttribute('data-kind')).toBe('loading'); + expect(state.querySelector('.spinner')?.getAttribute('aria-hidden')).toBe('true'); + expect(buttons(state)).toEqual([]); + }); + + it('is an alert with Retry on an error, and holds Retry while one runs', async () => { + const { fixture, state } = await mount('error'); + expect(state.getAttribute('role')).toBe('alert'); + expect(state.querySelector('.message')!.textContent!.trim()).toBe("Can't read the data."); + expect(state.querySelector('[detail]')!.textContent).toContain('dev server'); + const [retry] = buttons(state); + expect(retry.textContent!.trim()).toBe('Retry'); + retry.click(); + expect(fixture.componentInstance.retries).toBe(1); + + fixture.componentInstance.retrying.set(true); + await fixture.whenStable(); + expect(retry.textContent!.trim()).toBe('Retrying…'); + expect(retry.getAttribute('aria-disabled')).toBe('true'); + retry.click(); + expect(fixture.componentInstance.retries).toBe(1); + }); + + it('is a status that explains how to get data when empty', async () => { + const { state } = await mount('empty'); + expect(state.getAttribute('role')).toBe('status'); + expect(buttons(state)).toEqual([]); + }); + + it('offers Clear filters on no match, and is not a live region', async () => { + const { fixture, state } = await mount('no-match'); + expect(state.hasAttribute('role')).toBe(false); + const [clear] = buttons(state); + expect(clear.textContent!.trim()).toBe('Clear filters'); + clear.click(); + expect(fixture.componentInstance.clears).toBe(1); + }); +}); diff --git a/app/src/__tests__/live-feed.test.ts b/app/src/__tests__/live-feed.test.ts new file mode 100644 index 00000000..2c5d561c --- /dev/null +++ b/app/src/__tests__/live-feed.test.ts @@ -0,0 +1,115 @@ +import { Injector, runInInjectionContext, signal } from '@angular/core'; +import { TestBed, type ComponentFixture } from '@angular/core/testing'; +import type { DevframeRpcClient } from 'devframe/client'; +import { afterEach, beforeEach, describe, expect, it } from 'vitest'; +import { RouteTimeline } from '../pages/route-timeline'; +import type { NavigationRecord, RouterPage } from '../pages/router-types'; +import { LiveFeed } from '../ui/live-feed'; + +interface Entry { + id: number; +} + +function feed(scope = signal('p1')) { + const source = signal([{ id: 1 }, { id: 2 }]); + const live = runInInjectionContext(TestBed.inject(Injector), () => { + return new LiveFeed({ + name: 'test', + source, + key: (entry) => entry.id, + newest: 'last', + scope, + }); + }); + return { source, live, scope }; +} + +beforeEach(() => localStorage.clear()); +afterEach(() => { + document.body.innerHTML = ''; + TestBed.resetTestingModule(); +}); + +describe('LiveFeed', () => { + it('passes the live list through until it is paused', () => { + const { source, live } = feed(); + expect(live.items()).toEqual([{ id: 1 }, { id: 2 }]); + source.set([{ id: 1 }, { id: 2 }, { id: 3 }]); + expect(live.items().length).toBe(3); + expect(live.newestKey()).toBe(3); + expect(live.paused()).toBe(false); + expect(live.pending()).toBe(0); + }); + + it('holds the entries while paused, counts the new ones and shows them on resume', () => { + const { source, live } = feed(); + live.pause(); + source.set([{ id: 2 }, { id: 3 }, { id: 4 }]); + expect(live.items()).toEqual([{ id: 1 }, { id: 2 }]); + expect(live.pending()).toBe(2); + live.toggle(); + expect(live.paused()).toBe(false); + expect(live.items()).toEqual([{ id: 2 }, { id: 3 }, { id: 4 }]); + }); + + it('stays paused on another page, holding that page’s entries', () => { + const { source, live, scope } = feed(); + live.pause(); + source.set([{ id: 9 }]); + scope.set('p2'); + expect(live.paused()).toBe(true); + expect(live.items()).toEqual([{ id: 9 }]); + source.set([{ id: 9 }, { id: 10 }]); + expect(live.pending()).toBe(1); + }); + + it('saves Follow newest per feed', () => { + const { live } = feed(); + expect(live.follow()).toBe(false); + live.setFollow(true); + expect(localStorage.getItem('pangular-pref:follow:test')).toBe('true'); + expect(feed().live.follow()).toBe(true); + }); +}); + +describe('the router timeline live controls', () => { + function nav(id: number, url: string): NavigationRecord { + return { id, url, trigger: 'imperative', startedAt: id, endedAt: id + 1, outcome: 'succeeded' }; + } + function page(navigations: NavigationRecord[]): RouterPage { + return { pageId: 'p1', reportedAt: 1, snapshot: null, navigations }; + } + async function settle(fixture: ComponentFixture) { + for (let i = 0; i < 3; i++) { + await new Promise((resolve) => setTimeout(resolve)); + await fixture.whenStable(); + } + } + const client = { + connectionMeta: {}, + scope: () => ({ rpc: { call: () => Promise.resolve(null) } }), + } as unknown as DevframeRpcClient; + + it('holds the navigations while paused and shows the held count', async () => { + const fixture = TestBed.createComponent(RouteTimeline); + fixture.componentRef.setInput('page', page([nav(1, '/a'), nav(2, '/b')])); + fixture.componentRef.setInput('rpc', client); + document.body.append(fixture.nativeElement as HTMLElement); + await settle(fixture); + const root = fixture.nativeElement as HTMLElement; + const urls = () => [...root.querySelectorAll('.navs .head .url')].map((e) => e.textContent); + expect(urls()).toEqual(['/b', '/a']); + + const pause = root.querySelector('app-live-controls button')!; + pause.click(); + fixture.componentRef.setInput('page', page([nav(1, '/a'), nav(2, '/b'), nav(3, '/c')])); + await settle(fixture); + expect(urls()).toEqual(['/b', '/a']); + expect(root.querySelector('.pending')!.textContent!.trim()).toBe('1 new'); + expect(pause.getAttribute('aria-describedby')).toBe(root.querySelector('.pending')!.id); + + pause.click(); + await settle(fixture); + expect(urls()).toEqual(['/c', '/b', '/a']); + }); +}); diff --git a/app/src/__tests__/network-live-sort.test.ts b/app/src/__tests__/network-live-sort.test.ts new file mode 100644 index 00000000..7916f996 --- /dev/null +++ b/app/src/__tests__/network-live-sort.test.ts @@ -0,0 +1,165 @@ +import { TestBed, type ComponentFixture } from '@angular/core/testing'; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('../rpc', () => ({ + rpcCall: async (_rpc: unknown, _name: string, ...args: unknown[]) => args[0], +})); + +const { NetworkInspector } = await import('../pages/network-inspector'); + +type Inspector = InstanceType; +type Call = ReturnType[number]; + +let fixture: ComponentFixture; +const host = () => fixture.nativeElement as HTMLElement; + +function call(id: string, extra: Partial): Call { + return { + id, + url: `http://localhost/api/${id}`, + method: 'GET', + status: 200, + durationMs: 1, + side: 'server', + cacheHit: false, + faulted: false, + at: 1000, + ...extra, + }; +} + +const calls = [ + call('a', { status: 500, durationMs: 30, at: 3000, method: 'POST' }), + call('b', { status: 200, durationMs: 10, at: 2000 }), + call('c', { status: 404, durationMs: 20, at: 1000, method: 'DELETE' }), +]; + +async function settle() { + for (let i = 0; i < 2; i++) { + await fixture.whenStable(); + await new Promise((resolve) => setTimeout(resolve)); + } + await fixture.whenStable(); +} + +async function mount() { + fixture = TestBed.createComponent(NetworkInspector); + document.body.append(fixture.nativeElement); + fixture.componentInstance.serverCalls.set(calls); + await settle(); + return fixture.componentInstance; +} + +const order = () => + [...host().querySelectorAll('button[data-call-id]')].map( + (b) => b.dataset['callId'], + ); +const header = (name: string) => + [...host().querySelectorAll('th')].find( + (th) => th.textContent!.trim() === name, + )!; +const pause = () => + [...host().querySelectorAll('app-live-controls button')].find( + (b) => b.textContent!.trim() === 'Pause', + )!; + +beforeAll(() => { + Element.prototype.scrollIntoView ??= () => {}; +}); +beforeEach(() => localStorage.clear()); +afterEach(() => { + fixture?.destroy(); + TestBed.resetTestingModule(); + document.body.innerHTML = ''; +}); + +describe('the network call table headers', () => { + it('sort by status, then the other way, then back to newest first', async () => { + await mount(); + expect(order()).toEqual(['a', 'b', 'c']); + const status = header('Status'); + expect(status.hasAttribute('aria-sort')).toBe(false); + + status.querySelector('button')!.click(); + await settle(); + expect(status.getAttribute('aria-sort')).toBe('ascending'); + expect(order()).toEqual(['b', 'c', 'a']); + + status.querySelector('button')!.click(); + await settle(); + expect(status.getAttribute('aria-sort')).toBe('descending'); + expect(order()).toEqual(['a', 'c', 'b']); + + status.querySelector('button')!.click(); + await settle(); + expect(status.hasAttribute('aria-sort')).toBe(false); + expect(order()).toEqual(['a', 'b', 'c']); + }); + + it('sort by time and by method, one column at a time', async () => { + await mount(); + header('Time').querySelector('button')!.click(); + await settle(); + expect(order()).toEqual(['b', 'c', 'a']); + + header('Method').querySelector('button')!.click(); + await settle(); + expect(header('Time').hasAttribute('aria-sort')).toBe(false); + expect(header('Method').getAttribute('aria-sort')).toBe('ascending'); + expect(order()).toEqual(['c', 'b', 'a']); + }); +}); + +describe('the network live controls', () => { + it('hold the table while paused and count the calls that arrive', async () => { + const inspector = await mount(); + const button = pause(); + expect(button.getAttribute('aria-pressed')).toBe('false'); + button.click(); + await settle(); + expect(button.getAttribute('aria-pressed')).toBe('true'); + expect(host().querySelector('app-live-controls [role="status"]')!.textContent).toBe( + 'Paused. New calls wait until you resume.', + ); + + inspector.serverCalls.set([call('d', { at: 4000 }), ...calls]); + await settle(); + expect(order()).toEqual(['a', 'b', 'c']); + expect(host().querySelector('.pending')!.textContent!.trim()).toBe('1 new'); + + button.click(); + await settle(); + expect(order()).toEqual(['d', 'a', 'b', 'c']); + expect(host().querySelector('.pending')).toBeNull(); + expect(host().querySelector('app-live-controls [role="status"]')!.textContent).toBe( + 'Resumed with 1 new calls.', + ); + }); + + it('keeps the newest call in view while Follow newest is on, and remembers the choice', async () => { + const inspector = await mount(); + const wrap = host().querySelector('.table-wrap')!; + let top = 0; + Object.defineProperty(wrap, 'scrollTop', { + configurable: true, + get: () => top, + set: (value: number) => (top = value), + }); + const follow = host().querySelector('app-live-controls input')!; + expect(follow.checked).toBe(false); + + top = 120; + inspector.serverCalls.set([call('d', { at: 4000 }), ...calls]); + await settle(); + expect(top).toBe(120); + + follow.click(); + await settle(); + expect(top).toBe(0); + top = 120; + inspector.serverCalls.set([call('e', { at: 5000 }), call('d', { at: 4000 }), ...calls]); + await settle(); + expect(top).toBe(0); + expect(localStorage.getItem('pangular-pref:follow:network')).toBe('true'); + }); +}); diff --git a/app/src/__tests__/page-conventions.test.ts b/app/src/__tests__/page-conventions.test.ts index 6936bfd0..f7376534 100644 --- a/app/src/__tests__/page-conventions.test.ts +++ b/app/src/__tests__/page-conventions.test.ts @@ -61,3 +61,52 @@ describe('pages with a splitter', () => { expect(page('store-inspector.ts')).toContain("storedPaneSize('store-log', 300)"); }); }); + +describe('pages use the shared state component', () => { + it('has no hand-written Retry alert left in the pages that moved to app-state', async () => { + const sources = await pageSources(); + const moved = [ + 'timeline.ts', + 'errors-inspector.ts', + 'capacitor-inspector.ts', + 'plugins-inspector.ts', + 'audit-inspector.ts', + 'query-inspector.ts', + 'store-inspector.ts', + 'network-inspector.ts', + 'live-route.ts', + 'route-lint.ts', + 'route-tree.ts', + 'route-timeline.ts', + 'route-inspector.ts', + ]; + for (const file of moved) { + const source = sources.get(file) ?? ''; + expect(source, file).toContain('\s*(Retry|Try again)\s*<\/button>/); + expect(source, file).not.toMatch(/class="state"[^>]*role="status"/); + } + }); + + it('gives every error state a Retry', async () => { + const states = [...(await pageSources())].flatMap(([file, source]) => + [...source.matchAll(/]*kind="error"[^>]*>/g)].map((match) => ({ + file, + tag: match[0], + })), + ); + expect(states.length).toBeGreaterThan(10); + for (const { file, tag } of states) expect(tag, file).toMatch(/\(retry\)=/); + }); + + it('gives every no-match state a Clear filters action', async () => { + const states = [...(await pageSources())].flatMap(([file, source]) => + [...source.matchAll(/]*kind="no-match"[^>]*>/g)].map((match) => ({ + file, + tag: match[0], + })), + ); + expect(states.length).toBeGreaterThan(3); + for (const { file, tag } of states) expect(tag, file).toMatch(/\(clear\)=/); + }); +}); diff --git a/app/src/__tests__/route-timeline-clear.test.ts b/app/src/__tests__/route-timeline-clear.test.ts index 9bf54c96..d4cbd43f 100644 --- a/app/src/__tests__/route-timeline-clear.test.ts +++ b/app/src/__tests__/route-timeline-clear.test.ts @@ -57,7 +57,7 @@ function clearButton(fixture: ComponentFixture): HTMLButtonElement { function status(fixture: ComponentFixture): string { return ( [...el(fixture).querySelectorAll('[role="status"]')] - .find((e) => !e.closest('app-search-field')) + .find((e) => !e.closest('app-search-field, app-live-controls')) ?.textContent?.trim() ?? '' ); } diff --git a/app/src/__tests__/route-tree-treegrid.test.ts b/app/src/__tests__/route-tree-treegrid.test.ts new file mode 100644 index 00000000..b9eb1c0d --- /dev/null +++ b/app/src/__tests__/route-tree-treegrid.test.ts @@ -0,0 +1,162 @@ +import { TestBed, type ComponentFixture } from '@angular/core/testing'; +import type { DevframeRpcClient } from 'devframe/client'; +import { afterEach, describe, expect, it } from 'vitest'; +import { RouteTree } from '../pages/route-tree'; +import type { RouteNode, RouterPage } from '../pages/router-types'; + +const client = { + connectionMeta: {}, + scope: () => ({ rpc: { call: () => Promise.reject(new Error('offline')) } }), +} as unknown as DevframeRpcClient; + +const config: RouteNode[] = [ + { + id: 'users', + path: 'users', + fullPath: 'users', + kind: 'component', + component: 'Users', + children: [ + { + id: 'user', + path: ':id', + fullPath: 'users/:id', + kind: 'component', + component: 'User', + children: [{ id: 'edit', path: 'edit', fullPath: 'users/:id/edit', kind: 'component' }], + }, + ], + }, + { id: 'about', path: 'about', fullPath: 'about', kind: 'component', component: 'About' }, +]; + +function page(): RouterPage { + return { pageId: 'p1', reportedAt: 1, snapshot: null, navigations: [], config }; +} + +async function settle(fixture: ComponentFixture) { + for (let i = 0; i < 3; i++) { + await new Promise((resolve) => setTimeout(resolve)); + await fixture.whenStable(); + } +} + +async function mount() { + const fixture = TestBed.createComponent(RouteTree); + fixture.componentRef.setInput('page', page()); + fixture.componentRef.setInput('rpc', client); + document.body.append(fixture.nativeElement as HTMLElement); + await settle(fixture); + return fixture; +} + +const root = (fixture: ComponentFixture) => fixture.nativeElement as HTMLElement; +const rows = (fixture: ComponentFixture) => [ + ...root(fixture).querySelectorAll('tr.tree-row'), +]; +const ids = (fixture: ComponentFixture) => rows(fixture).map((row) => row.dataset['id']); +const focusedId = () => (document.activeElement as HTMLElement | null)?.dataset['id']; + +async function press(fixture: ComponentFixture, key: string) { + document.activeElement!.dispatchEvent( + new KeyboardEvent('keydown', { key, bubbles: true, cancelable: true }), + ); + await settle(fixture); +} + +afterEach(() => { + document.body.innerHTML = ''; +}); + +describe('RouteTree as a treegrid', () => { + it('names the levels, the expanded state and one tab stop', async () => { + const fixture = await mount(); + const grid = root(fixture).querySelector('table')!; + expect(grid.getAttribute('role')).toBe('treegrid'); + expect(grid.getAttribute('aria-label')).toBe('Routes'); + expect(rows(fixture).map((row) => row.getAttribute('aria-level'))).toEqual([ + '1', + '2', + '3', + '1', + ]); + expect(rows(fixture).map((row) => row.getAttribute('aria-expanded'))).toEqual([ + 'true', + 'true', + null, + null, + ]); + expect(rows(fixture).map((row) => row.tabIndex)).toEqual([0, -1, -1, -1]); + expect(rows(fixture)[0].querySelector('td')!.getAttribute('role')).toBe('gridcell'); + expect(root(fixture).querySelector('th')!.getAttribute('role')).toBe('columnheader'); + }); + + it('moves with the arrow keys, Home and End, and keeps the tab stop on the focused row', async () => { + const fixture = await mount(); + rows(fixture)[0].focus(); + await press(fixture, 'ArrowDown'); + expect(focusedId()).toBe('user'); + await press(fixture, 'End'); + expect(focusedId()).toBe('about'); + await press(fixture, 'Home'); + expect(focusedId()).toBe('users'); + await press(fixture, 'ArrowUp'); + expect(focusedId()).toBe('users'); + await press(fixture, 'ArrowDown'); + expect(rows(fixture).map((row) => row.tabIndex)).toEqual([-1, 0, -1, -1]); + }); + + it('collapses with Left, walks to the parent, and expands with Right', async () => { + const fixture = await mount(); + rows(fixture)[1].focus(); + await press(fixture, 'ArrowLeft'); + expect(ids(fixture)).toEqual(['users', 'user', 'about']); + expect(rows(fixture)[1].getAttribute('aria-expanded')).toBe('false'); + expect(focusedId()).toBe('user'); + + await press(fixture, 'ArrowLeft'); + expect(focusedId()).toBe('users'); + await press(fixture, 'ArrowLeft'); + expect(ids(fixture)).toEqual(['users', 'about']); + expect(rows(fixture)[0].getAttribute('aria-expanded')).toBe('false'); + + await press(fixture, 'ArrowRight'); + expect(ids(fixture)).toEqual(['users', 'user', 'about']); + expect(focusedId()).toBe('users'); + await press(fixture, 'ArrowRight'); + expect(focusedId()).toBe('user'); + await press(fixture, 'ArrowRight'); + expect(ids(fixture)).toEqual(['users', 'user', 'edit', 'about']); + }); + + it('toggles a branch from its arrow and keeps the route count', async () => { + const fixture = await mount(); + rows(fixture)[0].querySelector('.twisty')!.click(); + await settle(fixture); + expect(ids(fixture)).toEqual(['users', 'about']); + expect(root(fixture).querySelector('.summary')!.textContent).toContain('4 routes.'); + }); + + it('flattens the tree while a filter is on', async () => { + const fixture = await mount(); + rows(fixture)[0].querySelector('.twisty')!.click(); + await settle(fixture); + const input = root(fixture).querySelector('.filter input')!; + input.value = 'edit'; + input.dispatchEvent(new Event('input')); + await settle(fixture); + expect(ids(fixture)).toEqual(['edit']); + expect(rows(fixture)[0].getAttribute('aria-expanded')).toBeNull(); + expect(rows(fixture)[0].getAttribute('aria-level')).toBe('3'); + }); + + it('leaves keys typed into a row field alone', async () => { + const fixture = await mount(); + const row = rows(fixture)[0]; + const button = row.querySelector('button')!; + button.focus(); + button.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true })); + await settle(fixture); + expect(document.activeElement).toBe(button); + }); +}); diff --git a/app/src/__tests__/sort-header.test.ts b/app/src/__tests__/sort-header.test.ts new file mode 100644 index 00000000..ffeb560f --- /dev/null +++ b/app/src/__tests__/sort-header.test.ts @@ -0,0 +1,162 @@ +import { Component, signal } from '@angular/core'; +import { TestBed, type ComponentFixture } from '@angular/core/testing'; +import type { DevframeRpcClient } from 'devframe/client'; +import { afterEach, describe, expect, it } from 'vitest'; +import { RouteInspector } from '../pages/route-inspector'; +import type { SourceRoute } from '../pages/router-types'; +import { SortHeader, nextSort, sortRows, type SortState } from '../ui/sort-header'; + +describe('nextSort and sortRows', () => { + it('cycles ascending, descending and the original order', () => { + const first = nextSort(null, 'name'); + expect(first).toEqual({ column: 'name', direction: 'ascending' }); + const second = nextSort(first, 'name'); + expect(second).toEqual({ column: 'name', direction: 'descending' }); + expect(nextSort(second, 'name')).toBeNull(); + expect(nextSort(second, 'size')).toEqual({ column: 'size', direction: 'ascending' }); + }); + + it('sorts numbers as numbers and text naturally, keeps ties stable and missing keys last', () => { + const rows = [ + { id: 'a', name: 'item 10', size: 3 }, + { id: 'b', name: 'item 2', size: undefined }, + { id: 'c', name: 'Item 1', size: 3 }, + { id: 'd', name: '', size: 1 }, + ]; + const keys = { + name: (r: (typeof rows)[number]) => r.name, + size: (r: (typeof rows)[number]) => r.size, + }; + const ids = (sort: SortState | null) => sortRows(rows, sort, keys).map((r) => r.id); + expect(ids(null)).toEqual(['a', 'b', 'c', 'd']); + expect(ids({ column: 'name', direction: 'ascending' })).toEqual(['c', 'b', 'a', 'd']); + expect(ids({ column: 'name', direction: 'descending' })).toEqual(['a', 'b', 'c', 'd']); + expect(ids({ column: 'size', direction: 'ascending' })).toEqual(['d', 'a', 'c', 'b']); + expect(ids({ column: 'size', direction: 'descending' })).toEqual(['a', 'c', 'd', 'b']); + }); +}); + +@Component({ + imports: [SortHeader], + template: ` + + + + + + + +
NameSize
+ `, +}) +class Host { + readonly sort = signal(null); +} + +afterEach(() => { + document.body.innerHTML = ''; +}); + +describe('SortHeader', () => { + it('is a button inside the header, and sets aria-sort only on the sorted column', async () => { + const fixture = TestBed.createComponent(Host); + await fixture.whenStable(); + const [name, size] = [...(fixture.nativeElement as HTMLElement).querySelectorAll('th')]; + const button = name.querySelector('button')!; + expect(button.getAttribute('type')).toBe('button'); + expect(button.textContent!.trim()).toBe('Name'); + expect(name.hasAttribute('aria-sort')).toBe(false); + + button.click(); + await fixture.whenStable(); + expect(name.getAttribute('aria-sort')).toBe('ascending'); + expect(size.hasAttribute('aria-sort')).toBe(false); + expect(fixture.componentInstance.sort()).toEqual({ column: 'name', direction: 'ascending' }); + + size.querySelector('button')!.click(); + await fixture.whenStable(); + expect(name.hasAttribute('aria-sort')).toBe(false); + expect(size.getAttribute('aria-sort')).toBe('ascending'); + }); +}); + +describe('the source route config table', () => { + const routes: SourceRoute[] = [ + { + path: 'b', + fullPath: '/b', + kind: 'page', + component: 'B', + file: 'b.routes.ts', + line: 9, + hasChildren: false, + }, + { + path: 'a', + fullPath: '/a', + kind: 'page', + title: 'Alpha', + file: 'a.routes.ts', + line: 30, + hasChildren: false, + }, + { + path: 'c', + fullPath: '/c', + kind: 'page', + component: 'A', + file: 'a.routes.ts', + line: 4, + hasChildren: false, + }, + ]; + + async function mount() { + const client = { + connectionMeta: {}, + scope: () => ({ + rpc: { + call: (name: string) => + name === 'get-routes' ? Promise.resolve(routes) : new Promise(() => {}), + sharedState: () => new Promise(() => {}), + }, + }), + } as unknown as DevframeRpcClient; + const fixture = TestBed.createComponent(RouteInspector); + fixture.componentRef.setInput('rpc', client); + document.body.append(fixture.nativeElement as HTMLElement); + for (let i = 0; i < 3; i++) { + await new Promise((resolve) => setTimeout(resolve)); + await fixture.whenStable(); + } + return fixture; + } + + const table = (fixture: ComponentFixture) => + (fixture.nativeElement as HTMLElement).querySelector('.config table')!; + const paths = (fixture: ComponentFixture) => + [...table(fixture).querySelectorAll('tbody td.path')].map( + (td) => td.textContent!.trim().split(/\s/)[0], + ); + const header = (fixture: ComponentFixture, name: string) => + [...table(fixture).querySelectorAll('th')].find((th) => th.textContent!.trim() === name)!; + + it('sorts by path, target and file from the headers', async () => { + const fixture = await mount(); + expect(paths(fixture)).toEqual(['/b', '/a', '/c']); + expect(header(fixture, 'Guards and resolvers').querySelector('button')).toBeNull(); + + header(fixture, 'Path').querySelector('button')!.click(); + await fixture.whenStable(); + expect(paths(fixture)).toEqual(['/a', '/b', '/c']); + expect(header(fixture, 'Path').getAttribute('aria-sort')).toBe('ascending'); + + header(fixture, 'Component / Target').querySelector('button')!.click(); + await fixture.whenStable(); + expect(paths(fixture)).toEqual(['/c', '/b', '/a']); + + header(fixture, 'Declared in').querySelector('button')!.click(); + await fixture.whenStable(); + expect(paths(fixture)).toEqual(['/c', '/a', '/b']); + }); +}); diff --git a/app/src/__tests__/store-inspector.test.ts b/app/src/__tests__/store-inspector.test.ts index 12a0fb3f..39351b1d 100644 --- a/app/src/__tests__/store-inspector.test.ts +++ b/app/src/__tests__/store-inspector.test.ts @@ -444,14 +444,58 @@ describe('StoreInspector before the shared state arrives', () => { await settle(fixture); const text = () => (fixture.nativeElement as HTMLElement).textContent ?? ''; - const status = (fixture.nativeElement as HTMLElement).querySelector('.empty[role="status"]'); - expect(status?.textContent).toContain('Loading…'); + const status = (fixture.nativeElement as HTMLElement).querySelector( + 'app-state[data-kind="loading"][role="status"]', + ); + expect(status?.textContent).toContain('Loading the live stores…'); expect(text()).not.toContain('No page is reporting store state yet.'); value = { pages: [] }; push(value); await settle(fixture); - expect(text()).not.toContain('Loading…'); + expect(text()).not.toContain('Loading the live stores…'); expect(text()).toContain('No page is reporting store state yet.'); }); }); + +describe('StoreInspector live controls', () => { + it('holds the action log while paused and shows the new actions on resume', async () => { + let push: (next: unknown) => void = () => {}; + const rpc = { + call: () => Promise.resolve([]), + callEvent: () => Promise.resolve(), + sharedState: (key: string) => + key === 'ngrx-store' + ? Promise.resolve({ + value: () => ({ pages: [pageWith([entry(1), entry(2)])] }), + on: (_: string, listener: (next: unknown) => void) => { + push = listener; + return () => {}; + }, + }) + : Promise.reject(new Error('unknown state')), + }; + const client = { connectionMeta: {}, scope: () => ({ rpc }) } as unknown as DevframeRpcClient; + const fixture = TestBed.createComponent(StoreInspector); + fixture.componentRef.setInput('rpc', client); + document.body.append(root(fixture)); + await settle(fixture); + const seqs = () => + [...root(fixture).querySelectorAll('.log-item .seq')].map((e) => e.textContent!.trim()); + expect(seqs()).toEqual(['#2', '#1']); + + const pause = root(fixture).querySelector('app-live-controls button')!; + expect( + root(fixture).querySelector('app-live-controls [role="group"]')!.getAttribute('aria-label'), + ).toBe('Live actions'); + pause.click(); + push({ pages: [pageWith([entry(1), entry(2), entry(3)])] }); + await settle(fixture); + expect(seqs()).toEqual(['#2', '#1']); + expect(root(fixture).querySelector('.pending')!.textContent!.trim()).toBe('1 new'); + + pause.click(); + await settle(fixture); + expect(seqs()).toEqual(['#3', '#2', '#1']); + }); +}); diff --git a/app/src/__tests__/timeline.test.ts b/app/src/__tests__/timeline.test.ts index dc235ab7..d9b2aae6 100644 --- a/app/src/__tests__/timeline.test.ts +++ b/app/src/__tests__/timeline.test.ts @@ -411,6 +411,18 @@ describe('the Timeline tab', () => { expect(labels.some((label) => label.startsWith('NgRx'))).toBe(false); }); + it('keeps the selected event when the tab is opened again', async () => { + const fixture = await mount(wire(sources())); + rows(fixture)[1].click(); + await settle(fixture); + const key = rows(fixture)[1].dataset['key']; + fixture.destroy(); + + const again = await mount(wire(sources())); + const selected = rows(again).find((row) => row.getAttribute('aria-current') === 'true'); + expect(selected?.dataset['key']).toBe(key); + }); + it('moves through the list with the arrow keys and opens an event in its tab', async () => { const fixture = await mount(wire(sources())); const opened: unknown[] = []; diff --git a/app/src/__tests__/view-memory.test.ts b/app/src/__tests__/view-memory.test.ts new file mode 100644 index 00000000..f68bdcad --- /dev/null +++ b/app/src/__tests__/view-memory.test.ts @@ -0,0 +1,121 @@ +import { Component, signal } from '@angular/core'; +import { TestBed } from '@angular/core/testing'; +import { afterEach, describe, expect, it, vi } from 'vitest'; +import { ViewMemory, rememberSelection, restoreScroll } from '../view-memory'; + +@Component({ selector: 'app-picker', template: '' }) +class Picker { + readonly selected = signal(null); + constructor() { + rememberSelection('picker', this.selected); + } +} + +afterEach(() => { + vi.unstubAllGlobals(); + vi.restoreAllMocks(); + TestBed.resetTestingModule(); +}); + +describe('ViewMemory', () => { + it('keeps values per view in sessionStorage', () => { + const memory = TestBed.inject(ViewMemory); + let view = 'angular'; + memory.useView(() => view); + memory.write('network:selection', 'c7'); + expect(memory.read('network:selection')).toBe('c7'); + expect(Object.keys(sessionStorage).some((key) => key.includes('angular'))).toBe(true); + + view = 'analog'; + expect(memory.read('network:selection')).toBeUndefined(); + + view = 'angular'; + memory.write('network:selection', null); + expect(memory.read('network:selection')).toBeUndefined(); + }); + + it('falls back to memory when storage is blocked', () => { + const memory = TestBed.inject(ViewMemory); + vi.spyOn(Storage.prototype, 'setItem').mockImplementation(() => { + throw new Error('blocked'); + }); + vi.spyOn(Storage.prototype, 'getItem').mockImplementation(() => { + throw new Error('blocked'); + }); + memory.write('timeline:scroll', 120); + expect(memory.read('timeline:scroll')).toBe(120); + }); +}); + +describe('rememberSelection', () => { + it('gives a page its last selection back when it is created again', async () => { + const first = TestBed.createComponent(Picker); + expect(first.componentInstance.selected()).toBeNull(); + first.componentInstance.selected.set('row-3'); + await first.whenStable(); + first.destroy(); + + const again = TestBed.createComponent(Picker); + expect(again.componentInstance.selected()).toBe('row-3'); + + again.componentInstance.selected.set(null); + await again.whenStable(); + again.destroy(); + expect(TestBed.createComponent(Picker).componentInstance.selected()).toBeNull(); + }); +}); + +describe('restoreScroll', () => { + function scroller(max: () => number) { + const el = document.createElement('div'); + let top = 0; + Object.defineProperty(el, 'scrollTop', { + configurable: true, + get: () => top, + set: (value: number) => (top = Math.max(0, Math.min(value, max()))), + }); + return el; + } + + function frames() { + const queue: FrameRequestCallback[] = []; + vi.stubGlobal('requestAnimationFrame', (callback: FrameRequestCallback) => { + queue.push(callback); + return queue.length; + }); + vi.stubGlobal('cancelAnimationFrame', () => {}); + return () => queue.shift()?.(0); + } + + it('waits for the content to grow until it reaches the saved position', () => { + const tick = frames(); + let height = 100; + const el = scroller(() => height); + restoreScroll(el, 300); + expect(el.scrollTop).toBe(100); + height = 200; + tick(); + expect(el.scrollTop).toBe(200); + height = 1000; + tick(); + expect(el.scrollTop).toBe(300); + }); + + it('stops as soon as the user scrolls', () => { + const tick = frames(); + let height = 100; + const el = scroller(() => height); + restoreScroll(el, 300); + el.dispatchEvent(new Event('wheel')); + height = 1000; + tick(); + expect(el.scrollTop).toBe(100); + }); + + it('goes to the top for a tab with no saved position', () => { + const el = scroller(() => 1000); + el.scrollTop = 500; + restoreScroll(el, 0); + expect(el.scrollTop).toBe(0); + }); +}); diff --git a/app/src/app.ts b/app/src/app.ts index 95c0449a..9ee434aa 100644 --- a/app/src/app.ts +++ b/app/src/app.ts @@ -51,6 +51,7 @@ import { panelAuth } from './auth-token'; import { AuthCode } from './ui/auth-code'; import { clearHighlightsOnHide, forgetDevframeConnection, panelCacheOptions, rpcTry } from './rpc'; import { EditorOpener } from './ui/source-link'; +import { ViewMemory, restoreScroll } from './view-memory'; import { viewAccent } from './view-accents'; import { HUB_ALL_TOOLS, @@ -483,7 +484,7 @@ function readView(): View | null { -
+

{{ backgroundNote() }}

{{ connectedNote() }}

@if (tab() === 'settings') { @@ -1218,9 +1219,25 @@ export class App implements OnInit, OnDestroy { private readonly themeService = inject(ThemeService); private navObserver?: ResizeObserver; readonly navFade = signal({ start: false, end: false }); + private readonly memory = inject(ViewMemory); + private stopScrollRestore: (() => void) | null = null; constructor() { inject(EditorOpener).use(this.rpc); + this.memory.useView(() => this.tabScope()); + // Each tab comes back where it was scrolled to, after a switch and after a reload. + afterRenderEffect(() => { + const tab = this.tab(); + const main = this.main()?.nativeElement; + if (!main || !this.rpc()) return; + untracked(() => { + this.stopScrollRestore?.(); + this.stopScrollRestore = restoreScroll( + main, + this.memory.read(`${tab}:scroll`) ?? 0, + ); + }); + }); afterNextRender(() => { const nav = this.nav()?.nativeElement; if (!nav || typeof ResizeObserver === 'undefined') return; @@ -1826,6 +1843,12 @@ export class App implements OnInit, OnDestroy { return this.view() ?? 'panel'; } + /** Saves the scroll position of the tab shown. */ + rememberScroll() { + const main = this.main()?.nativeElement; + if (main) this.memory.write(`${this.tab()}:scroll`, Math.round(main.scrollTop)); + } + private async watchAngularNative(client: DevframeRpcClient) { try { const state = await client.scope('pangular').rpc.sharedState('component-tree'); diff --git a/app/src/pages/audit-inspector.ts b/app/src/pages/audit-inspector.ts index 16b52ce0..50ec604e 100644 --- a/app/src/pages/audit-inspector.ts +++ b/app/src/pages/audit-inspector.ts @@ -29,6 +29,7 @@ import { type AuditResponse, } from './audit-types'; import { SearchField } from '../ui/search-field'; +import { AppState } from '../ui/app-state'; type SeverityFilter = 'all' | 'error' | 'warning'; @@ -45,28 +46,27 @@ export const AUDIT_REFRESH_DELAY_MS = 150; @Component({ selector: 'app-audit-inspector', - imports: [SearchField, Select, AuditDiffView], + imports: [AppState, SearchField, Select, AuditDiffView], template: ` @if (staticReport()) { -
-

The audit reads a live page, and a static report has none.

-

Open the panel from the server that runs the app to audit it.

-
+ + The audit reads a live page, and a static report has none. +

Open the panel from the server that runs the app to audit it.

+
} @else if (!loaded()) { -

Loading the audit…

+ Loading the audit… } @else if (failed()) { - + + Can't read the audit from the devtools server. + } @else if (!report()) { -
-

No page reports live data yet.

-

+ + No page reports live data yet. +

Open the app with the overlay loaded. The audit reads what the other inspectors collect from it.

-
+ } @else {

One ranked list of what the inspectors found on the live page, with an axe pass over the app diff --git a/app/src/pages/capacitor-inspector.ts b/app/src/pages/capacitor-inspector.ts index 296578a0..1487f27e 100644 --- a/app/src/pages/capacitor-inspector.ts +++ b/app/src/pages/capacitor-inspector.ts @@ -40,6 +40,8 @@ import { type CapacitorSummary, } from './capacitor-types'; import { SearchField } from '../ui/search-field'; +import { rememberSelection } from '../view-memory'; +import { AppState } from '../ui/app-state'; const GUIDE_URL = 'https://pangular-inspector.dev/inspectors/capacitor/#web-calls'; /** The summary strip is a live region; it changes at most this often. */ @@ -54,15 +56,14 @@ const FILTER_LABELS: Record = { @Component({ selector: 'app-capacitor-inspector', - imports: [SearchField, LimitNote, Select, CapacitorCallDetail, CapacitorState], + imports: [AppState, SearchField, LimitNote, Select, CapacitorCallDetail, CapacitorState], template: ` @if (!loaded()) { -

Loading Capacitor data…

+ Loading Capacitor data… } @else if (failed()) { - + + Can't read the Capacitor data from the devtools server. + } @else if (page(); as page) {

Plugin calls, plugins and listeners of a Capacitor app, as its WebView reports them. Values @@ -398,9 +399,10 @@ const FILTER_LABELS: Record = { } } @else { -

- No Capacitor app reports to this server. Start the overlay in the app, then use it. -

+ + No Capacitor app reports to this server. +

Start the overlay in the app, then use it.

+
} `, styles: ` @@ -899,6 +901,7 @@ export class CapacitorInspector { private messageFlip = false; constructor() { + rememberSelection('capacitor', this.selectedCallId); effect(() => { const client = this.rpc(); if (client) void this.load(client); diff --git a/app/src/pages/errors-inspector.ts b/app/src/pages/errors-inspector.ts index 1ab2c601..205910f2 100644 --- a/app/src/pages/errors-inspector.ts +++ b/app/src/pages/errors-inspector.ts @@ -29,6 +29,7 @@ import { type ErrorsPage, } from './errors-types'; import { SearchField } from '../ui/search-field'; +import { AppState } from '../ui/app-state'; type View = 'errors' | 'console'; @@ -42,23 +43,22 @@ const LEVEL_TONE: Record = { @Component({ selector: 'app-errors-inspector', - imports: [SearchField, Select, ErrorExplainView], + imports: [AppState, SearchField, Select, ErrorExplainView], template: ` @if (!loaded()) { -

Loading errors…

+ Loading errors… } @else if (failed()) { - + + Can't read the errors from the devtools server. + } @else if (!pages().length) { -
-

No page reports errors yet.

-

+ + No page reports errors yet. +

Open the app with the overlay loaded. Errors and console calls show up here as they happen.

-
+ } @else {

Errors from Angular's ErrorHandler, uncaught errors and unhandled promise rejections on the diff --git a/app/src/pages/forms-inspector.ts b/app/src/pages/forms-inspector.ts index 76c91460..5fc5ab17 100644 --- a/app/src/pages/forms-inspector.ts +++ b/app/src/pages/forms-inspector.ts @@ -39,6 +39,7 @@ import { type FormSetupError, type WebMcpPage, } from './forms-types'; +import { rememberSelection } from '../view-memory'; type Tab = 'fields' | 'schema' | 'timeline' | 'submit' | 'lint'; @@ -692,6 +693,8 @@ export class FormsInspector { }); constructor() { + rememberSelection('forms', this.selectedId); + rememberSelection('forms', this.selectedLabel, 'label'); effect(() => { const client = this.rpc(); if (client) this.load(client); diff --git a/app/src/pages/live-route.ts b/app/src/pages/live-route.ts index fbcf32cf..fb6399b2 100644 --- a/app/src/pages/live-route.ts +++ b/app/src/pages/live-route.ts @@ -21,6 +21,7 @@ import { RouteTree } from './route-tree'; import type { RouterPage, SourceRoute } from './router-types'; import { Select } from '../ui/select'; import type { ComponentFocus } from '../types/component-focus.types'; +import { AppState } from '../ui/app-state'; const TABS = [ { id: 'current', label: 'Current' }, @@ -35,7 +36,16 @@ type TabId = (typeof TABS)[number]['id']; @Component({ selector: 'app-live-route', - imports: [RouteCurrent, RouteDiff, RouteLint, RouteSetup, RouteTimeline, RouteTree, Select], + imports: [ + AppState, + RouteCurrent, + RouteDiff, + RouteLint, + RouteSetup, + RouteTimeline, + RouteTree, + Select, + ], template: `

Live router

@@ -54,15 +64,14 @@ type TabId = (typeof TABS)[number]['id']; }
@if (failed()) { - + } @else if (loading()) { -

Loading the live router state…

+ Loading the live router state… } @else if (page(); as current) {
@for (tab of tabs; track tab.id) { diff --git a/app/src/pages/network-inspector.ts b/app/src/pages/network-inspector.ts index 04cf2771..b5f59001 100644 --- a/app/src/pages/network-inspector.ts +++ b/app/src/pages/network-inspector.ts @@ -26,6 +26,9 @@ import { } from '@pangular-inspector/devtools/internal/config'; import { prettyJson } from '../format'; import { LimitNote } from '../ui/limit-note'; +import { AppState } from '../ui/app-state'; +import { LiveControls, LiveFeed, followNewest } from '../ui/live-feed'; +import { SortHeader, sortRows, type SortState } from '../ui/sort-header'; import { RovingList } from '../ui/roving-list'; import { Select, type SelectOption } from '../ui/select'; import { VirtualWindow } from '../ui/virtual-window'; @@ -40,6 +43,7 @@ import { PayloadInsights } from './network/payload-insights'; import { RuleMatchCount } from './network/rule-match-count'; import { RulePresets } from './network/rule-presets'; import { presetRules } from '@pangular-inspector/devtools/internal/http-data'; +import { rememberSelection } from '../view-memory'; type HttpSide = 'client' | 'server'; @@ -323,6 +327,9 @@ const HTTP_STATUS_OPTIONS: SelectOption[] = [ @Component({ selector: 'app-network-inspector', imports: [ + AppState, + LiveControls, + SortHeader, SearchField, CallCopy, CallOriginTag, @@ -344,16 +351,12 @@ const HTTP_STATUS_OPTIONS: SelectOption[] = [ the devtools server, with hydration stats, the TransferState payload and fault injection.

@if (loading()) { -
- - Loading… -
+ Loading HTTP calls… } @else if (failed()) { - + + Could not reach the devtools server. +

Check that the app's dev server is running with the devtools plugin.

+
}
@@ -655,6 +658,9 @@ const HTTP_STATUS_OPTIONS: SelectOption[] = [ {{ countText() }} {{ filterStatus() }}
+
+ +
@if (visibleCalls().length && timelineView() === 'waterfall') { Side - Method - URL + Method + URL Page - Status - Time + Status + Time Notes @@ -1689,6 +1695,13 @@ const HTTP_STATUS_OPTIONS: SelectOption[] = [ gap: 8px 12px; margin: 0 0 12px; } + .live-row { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px 12px; + margin: -4px 0 12px; + } .search { position: relative; flex: 1 1 220px; @@ -2371,9 +2384,20 @@ export class NetworkInspector { return id ? this.serverCalls().filter((c) => c.requestId === id) : []; }); - readonly timeline = computed(() => + /** Every call of the selected page as it arrives, newest first. */ + private readonly liveTimeline = computed(() => [...this.pageServerCalls(), ...(this.selected()?.calls ?? [])].sort((a, b) => b.at - a.at), ); + /** Pause holds the timeline as it is while the app keeps calling. */ + readonly callFeed = new LiveFeed({ + name: 'network', + source: this.liveTimeline, + key: (c) => `${c.side}:${c.id}`, + scope: this.selectedPageId, + }); + readonly timeline = computed(() => [...this.callFeed.items()]); + /** The column the call table is sorted by; `null` keeps newest first. */ + readonly callSort = signal(null); readonly callQuery = signal(''); /** The timeline as a table of every call, or a waterfall of the client calls by navigation. */ @@ -2404,7 +2428,7 @@ export class NetworkInspector { const query = this.callQuery().trim().toLowerCase(); const side = this.sideFilter() ?? 'all'; const failedOnly = this.failedOnly(); - return this.timeline().filter( + const matching = this.timeline().filter( (c) => (side === 'all' || c.side === side) && (!failedOnly || this.isFailed(c)) && @@ -2412,6 +2436,12 @@ export class NetworkInspector { `${c.method} ${c.url}`.toLowerCase().includes(query) || `${c.method} ${pathOf(c.url)}`.toLowerCase().includes(query)), ); + return sortRows(matching, this.callSort(), { + method: (c) => c.method, + url: (c) => c.url, + status: (c) => (c.cancelled || !c.status ? undefined : c.status), + time: (c) => c.durationMs, + }) as HttpCall[]; }); /** @@ -2541,6 +2571,13 @@ export class NetworkInspector { }); constructor() { + rememberSelection('network', this.selectedCallId); + // Newest first, so following the newest call keeps the table scrolled to the top. + followNewest(this.callFeed, () => { + if (this.callSort()) return; + const wrap = this.host.nativeElement.querySelector('.table-wrap'); + if (wrap) wrap.scrollTop = 0; + }); effect(() => { const body = this.callsBody()?.nativeElement; if (body) this.callWindow.attach(body); diff --git a/app/src/pages/plugins-inspector.ts b/app/src/pages/plugins-inspector.ts index 804e1737..b72fdf37 100644 --- a/app/src/pages/plugins-inspector.ts +++ b/app/src/pages/plugins-inspector.ts @@ -16,6 +16,7 @@ import { hostPageId } from '../page-id'; import { Select, type SelectOption } from '../ui/select'; import { PluginSectionView, filteredCount } from './plugin-view'; import { SearchField } from '../ui/search-field'; +import { AppState } from '../ui/app-state'; /** One plugin as a page reported it (`rpc/plugins-register.ts`). */ export interface PanelPluginEntry { @@ -85,24 +86,23 @@ const STATUS_TONE: Record = { @Component({ selector: 'app-plugins-inspector', - imports: [SearchField, Select, PluginSectionView], + imports: [AppState, SearchField, Select, PluginSectionView], template: ` @if (!loaded()) { -

Loading plugins…

+ Loading plugins… } @else if (failed()) { - + + Can't read the plugins from the devtools server. + } @else if (!pluginIds().length) { -
-

No plugin reports yet.

-

+ + No plugin reports yet. +

A library adds a tab here with registerPangularPlugin() from @pangular-inspector/devtools/plugin. Its view shows up once the app runs with the overlay loaded.

-
+ } @else {

Views that libraries report from the live page through the plugin API. The values come from diff --git a/app/src/pages/query-inspector.ts b/app/src/pages/query-inspector.ts index 69016ab2..3980cee0 100644 --- a/app/src/pages/query-inspector.ts +++ b/app/src/pages/query-inspector.ts @@ -33,6 +33,8 @@ import { } from './query-types'; import { pretty } from './store-types'; import { SearchField } from '../ui/search-field'; +import { rememberSelection } from '../view-memory'; +import { AppState } from '../ui/app-state'; type View = 'queries' | 'mutations'; @@ -57,31 +59,32 @@ const FILTERS: SelectOption[] = [ @Component({ selector: 'app-query-inspector', - imports: [SearchField, NgTemplateOutlet, RovingList, Select], + imports: [SearchField, NgTemplateOutlet, RovingList, Select, AppState], template: ` @if (!loaded()) { -

Loading queries…

+ Loading queries… } @else if (failed()) { - + + Can't read TanStack Query from the devtools server. + } @else if (!pages().length) { -
- @if (connected()) { -

The connected page has no QueryClient yet.

-

+ @if (connected()) { + + The connected page has no QueryClient yet. +

Add provideTanStackQuery(new QueryClient()) to the app's providers. The tab reads it once something in the app injects it, such as injectQuery().

- } @else { -

No page reports a QueryClient yet.

-

+ + } @else { + + No page reports a QueryClient yet. +

Open the app with the overlay loaded. The tab reads the QueryClient that provideTanStackQuery() registers, once something in the app injects it.

- } -
+ + } } @else {

The queries and mutations of the TanStack Query client the app provides, read from the live @@ -809,6 +812,7 @@ export class QueryInspector { ); constructor() { + rememberSelection('queries', this.selectedId); effect(() => { const client = this.rpc(); if (client) void this.load(client); diff --git a/app/src/pages/route-inspector.ts b/app/src/pages/route-inspector.ts index a3dafe3d..1415889d 100644 --- a/app/src/pages/route-inspector.ts +++ b/app/src/pages/route-inspector.ts @@ -15,10 +15,12 @@ import { SHARED_STYLES, type SourceRoute } from './router-types'; import type { ComponentFocus } from '../types/component-focus.types'; import { SourceLink } from '../ui/source-link'; import { SearchField } from '../ui/search-field'; +import { AppState } from '../ui/app-state'; +import { SortHeader, sortRows, type SortState } from '../ui/sort-header'; @Component({ selector: 'app-route-inspector', - imports: [SearchField, LiveRoute, SourceLink], + imports: [SearchField, LiveRoute, SourceLink, AppState, SortHeader], template: `

The live route, every navigation, the route config the router uses, the router setup and a @@ -65,35 +67,32 @@ import { SearchField } from '../ui/search-field';

@if (error()) { - + } @else if (loading() && routes().length === 0) { -

Scanning routes…

+ Scanning routes… } @else if (filtered().length === 0) { @if (routes().length) { -
-

No routes match the filter.

-

Search by path, component, guard, title or file name.

- -
+ + No routes match the filter. +

Search by path, component, guard, title or file name.

+
} @else { -
-

No routes found.

-

+ + No routes found. +

Routes are read from *.routes.ts and *routing.module.ts files, the files they lazy load, plus Analog pages. Add one and refresh.

-
+ } } @else {

@@ -109,15 +108,15 @@ import { SearchField } from '../ui/search-field'; - - + + - - + + - @for (route of filtered(); track $index) { + @for (route of sorted(); track $index) {
PathComponent / TargetPathComponent / Target Guards and resolversTitleDeclared inTitleDeclared in
{{ route.fullPath }} @@ -276,6 +275,17 @@ export class RouteInspector { ); }); + /** The column the table is sorted by; `null` keeps the order of the source files. */ + readonly sort = signal(null); + readonly sorted = computed(() => + sortRows(this.filtered(), this.sort(), { + path: (r) => r.fullPath, + target: (r) => r.component ?? r.redirectTo, + title: (r) => r.title, + file: (r) => `${r.file}:${r.line ?? 0}`, + }), + ); + constructor() { effect(() => { const client = this.rpc(); diff --git a/app/src/pages/route-lint.ts b/app/src/pages/route-lint.ts index c7b93d33..af4c515c 100644 --- a/app/src/pages/route-lint.ts +++ b/app/src/pages/route-lint.ts @@ -8,9 +8,11 @@ import { type RouterPage, } from './router-types'; import { plural } from '../format'; +import { AppState } from '../ui/app-state'; @Component({ selector: 'app-route-lint', + imports: [AppState], template: `
@if (failed()) { - + + The route checks could not run. +

The devtools server did not answer. Check that it is still running.

+
} @else if (!result()) { -

Checking…

+ Checking… } @else if (notChecked(); as reason) {

No checks ran.

diff --git a/app/src/pages/route-timeline.ts b/app/src/pages/route-timeline.ts index c363e94c..5705cf1f 100644 --- a/app/src/pages/route-timeline.ts +++ b/app/src/pages/route-timeline.ts @@ -1,4 +1,12 @@ -import { Component, computed, input, linkedSignal, output } from '@angular/core'; +import { + Component, + ElementRef, + computed, + inject, + input, + linkedSignal, + output, +} from '@angular/core'; import type { DevframeRpcClient } from 'devframe/client'; import { actionAllowed, actionBlockedMessage, panelConfig } from '../devtools-config'; import { LimitNote } from '../ui/limit-note'; @@ -18,12 +26,14 @@ import { type TimelineCall, } from './router-types'; import { SearchField } from '../ui/search-field'; +import { AppState } from '../ui/app-state'; +import { LiveControls, LiveFeed, followNewest } from '../ui/live-feed'; const PHASES = ['recognize', 'guards', 'resolve', 'activate'] as const; @Component({ selector: 'app-route-timeline', - imports: [SearchField, LimitNote], + imports: [SearchField, LimitNote, AppState, LiveControls], template: `
Record each guard and resolver + -
+ } @else { -
-

No navigations since Pangular Inspector connected.

-

Earlier ones are not visible. Click a link in the app to record one.

-
+ + No navigations since Pangular Inspector connected. +

Earlier ones are not visible. Click a link in the app to record one.

+
} } `, @@ -753,9 +761,26 @@ export class RouteTimeline { return byId; }); + /** Pause holds the navigations as they are while the app keeps navigating. */ + readonly feed = new LiveFeed({ + name: 'router-timeline', + source: () => this.page().navigations, + key: (nav) => nav.id, + newest: 'last', + scope: this.pageId, + }); + private readonly host = inject>(ElementRef); + + constructor() { + // Newest first, so following the newest navigation brings the top of the list into view. + followNewest(this.feed, () => + this.host.nativeElement.querySelector('.navs > li')?.scrollIntoView?.({ block: 'nearest' }), + ); + } + readonly items = computed(() => { const needle = this.filter().toLowerCase(); - return [...this.page().navigations] + return [...this.feed.items()] .reverse() .filter( (nav) => diff --git a/app/src/pages/route-tree.ts b/app/src/pages/route-tree.ts index b55cdd8d..a9031e26 100644 --- a/app/src/pages/route-tree.ts +++ b/app/src/pages/route-tree.ts @@ -26,6 +26,7 @@ import { SourceLink } from '../ui/source-link'; import { RoutePreviewCard } from './route-preview'; import { plural } from '../format'; import { SearchField } from '../ui/search-field'; +import { AppState } from '../ui/app-state'; /** "3 of 12 routes": the filtered count, worded like the other panel pages. */ export function routeCountText(matches: number, total: number): string { @@ -37,6 +38,9 @@ interface NodeRow { depth: number; source?: string; at?: SourceRoute; + /** Has children the viewer can collapse; never while a filter flattens the tree. */ + expandable: boolean; + expanded: boolean; } interface MatchResult { @@ -55,7 +59,7 @@ interface TestedUrl { @Component({ selector: 'app-route-tree', - imports: [SearchField, JsonPipe, RoutePreviewCard, SourceLink], + imports: [SearchField, JsonPipe, RoutePreviewCard, SourceLink, AppState], template: `
@@ -132,7 +136,7 @@ interface TestedUrl { {{ countText() }}. } @else { - {{ plural(rows().length, 'route') }}. + {{ plural(total(), 'route') }}. } Lazy routes show their children once loaded. @if (page().configTruncated; as left) { @@ -144,38 +148,52 @@ interface TestedUrl {

{{ filterAnnouncement() }}

@if (!page().config) { -
-

- {{ 'The page has not reported its route config yet.' }} -

-

- {{ 'It appears once the router initializes. Navigate in the app if it stays empty.' }} -

-
+ + The page has not reported its route config yet. +

It appears once the router initializes. Navigate in the app if it stays empty.

+
} @else if (!rows().length) { -
-

No routes match the filter.

-

Try a shorter path or a component name.

- -
+ + No routes match the filter. +

Try a shorter path or a component name.

+
} @else {
- - - - - - - - +
PathTargetGuards and resolversTitleActions
+ + + + + + + - - @for (row of rows(); track row.node.id) { - - + @for (row of rows(); track row.node.id; let i = $index) { + + - - - - @if (rowResult()?.id === row.node.id) { - - + @@ -395,6 +413,65 @@ interface TestedUrl { font-size: 11.5px; overflow-wrap: anywhere; } + .tree-row { + cursor: default; + } + .tree-row:focus { + outline: none; + } + .tree-row:focus-visible td { + box-shadow: + inset 0 2px 0 var(--accent), + inset 0 -2px 0 var(--accent); + } + .tree-row:focus-visible td:first-child { + box-shadow: + inset 2px 0 0 var(--accent), + inset 0 2px 0 var(--accent), + inset 0 -2px 0 var(--accent); + } + .tree-row:focus-visible td:last-child { + box-shadow: + inset -2px 0 0 var(--accent), + inset 0 2px 0 var(--accent), + inset 0 -2px 0 var(--accent); + } + .twisty, + .twisty-space { + display: inline-block; + width: 16px; + height: 16px; + margin-right: 2px; + vertical-align: -3px; + } + .twisty { + position: relative; + border-radius: var(--radius-sm); + color: var(--text-2); + cursor: pointer; + } + .twisty::before { + position: absolute; + top: 4px; + left: 6px; + border-top: 4px solid transparent; + border-bottom: 4px solid transparent; + border-left: 5px solid currentColor; + content: ''; + transition: transform 0.15s var(--ease); + } + .twisty.open::before { + transform: rotate(90deg); + } + .twisty:hover { + background: var(--surface-3); + color: var(--text); + } + @media (prefers-reduced-motion: reduce) { + .twisty::before { + transition: none; + } + } tr.active td { background: var(--accent-soft); color: var(--text-strong); @@ -489,29 +566,114 @@ export class RouteTree { readonly active = computed(() => new Set(this.page().activeIds ?? [])); + /** Routes whose children the viewer collapsed in the tree, per page. */ + readonly collapsed = linkedSignal>({ + source: this.pageId, + computation: () => new Set(), + }); + /** The row that holds the tree's one tab stop. */ + readonly focusId = linkedSignal({ + source: this.pageId, + computation: () => null, + }); + private readonly grid = viewChild>('grid'); + readonly rows = computed(() => { const needle = this.filter().toLowerCase(); const sources = this.sources(); + const collapsed = this.collapsed(); const rows: NodeRow[] = []; const visit = (nodes: RouteNode[], depth: number) => { for (const node of nodes) { const found = sourceOf(node, sources); const source = found && sourceLocation(found); + const expandable = !needle && !!node.children?.length; + const expanded = expandable && !collapsed.has(node.id); if ( !needle || node.fullPath.toLowerCase().includes(needle) || !!node.component?.toLowerCase().includes(needle) || !!source?.toLowerCase().includes(needle) ) { - rows.push({ node, depth, source, at: found }); + rows.push({ node, depth, source, at: found, expandable, expanded }); } - if (node.children) visit(node.children, depth + 1); + if (node.children && (needle || expanded)) visit(node.children, depth + 1); } }; visit(this.page().config ?? [], 0); return rows; }); + /** The focused row while it is shown, else the first row. */ + readonly focusRowId = computed(() => { + const rows = this.rows(); + const id = this.focusId(); + return rows.some((row) => row.node.id === id) ? id : (rows[0]?.node.id ?? null); + }); + + toggle(id: string, open?: boolean) { + this.collapsed.update((set) => { + const next = new Set(set); + const shut = open === undefined ? !next.has(id) : !open; + if (shut) next.add(id); + else next.delete(id); + return next; + }); + } + + /** Arrow keys, Home and End move between rows; Left and Right collapse, expand and walk the levels. */ + onRowKey(event: KeyboardEvent, index: number) { + if (event.target !== event.currentTarget || event.altKey || event.ctrlKey || event.metaKey) { + return; + } + const rows = this.rows(); + const row = rows[index]; + if (!row) return; + let target: number | null = null; + switch (event.key) { + case 'ArrowDown': + target = Math.min(rows.length - 1, index + 1); + break; + case 'ArrowUp': + target = Math.max(0, index - 1); + break; + case 'Home': + target = 0; + break; + case 'End': + target = rows.length - 1; + break; + case 'ArrowRight': + if (row.expandable && !row.expanded) this.toggle(row.node.id, true); + else if (row.expanded && rows[index + 1]?.depth === row.depth + 1) target = index + 1; + break; + case 'ArrowLeft': + if (row.expandable && row.expanded) { + this.toggle(row.node.id, false); + } else { + for (let i = index - 1; i >= 0; i--) { + if (rows[i]!.depth < row.depth) { + target = i; + break; + } + } + } + break; + default: + return; + } + event.preventDefault(); + if (target !== null) this.focusRow(rows[target]!.node.id); + } + + private focusRow(id: string) { + this.focusId.set(id); + const rows = this.grid()?.nativeElement.querySelectorAll('tr.tree-row') ?? []; + Array.from(rows) + .find((row) => row.dataset['id'] === id) + ?.focus(); + } + readonly total = computed(() => { const count = (nodes: RouteNode[]): number => nodes.reduce((sum, node) => sum + 1 + count(node.children ?? []), 0); diff --git a/app/src/pages/store-inspector.ts b/app/src/pages/store-inspector.ts index 964db662..b054ce89 100644 --- a/app/src/pages/store-inspector.ts +++ b/app/src/pages/store-inspector.ts @@ -47,6 +47,9 @@ import { StoreGlobal } from '../ui/store-global'; import { reduxLiveStores, reduxLog, reduxPagesOf, type ReduxStoresPage } from './redux-stores'; import { SearchField } from '../ui/search-field'; import { Splitter, storedPaneSize } from '../ui/splitter'; +import { rememberSelection } from '../view-memory'; +import { AppState } from '../ui/app-state'; +import { LiveControls, LiveFeed, followNewest } from '../ui/live-feed'; const KIND_COLORS: Record = { action: '#f59e0b', @@ -122,6 +125,8 @@ const CLASSIC_KINDS = new Set([ EntryTabs, StoreSession, StoreStateTree, + AppState, + LiveControls, ], template: `

@@ -161,22 +166,19 @@ const CLASSIC_KINDS = new Set([ @if (failed()) { -

+ + Could not load the live store state. +

Check that the dev server with Pangular Inspector is still running.

+
} @else if (!stateLoaded()) { -
-

Loading…

-
+ Loading the live stores… } @else if (!page()) { -
-

No page is reporting store state yet.

-

+ + No page is reporting store state yet. +

Open the app in a browser. Stores show up here as soon as the page creates them.

-
+ } @else if (!liveStores().length) { The overlay finds stores through the injectors, so stores it can't reach from a component @@ -512,6 +514,12 @@ const CLASSIC_KINDS = new Set([ {{ current.classic || current.redux ? 'Action log' : 'Change log' }} {{ storeLog().length }} +
+ +
({ + name: 'store-log', + source: () => { + const store = this.store(); + return store ? this.logOf(store) : []; + }, + key: (entry) => entry.seq, + newest: 'last', + scope: () => `${this.store()?.id ?? ''}:${this.logSession()}`, + }); + readonly storeLog = computed(() => { - const store = this.store(); const f = this.filter().trim().toLowerCase(); - return (store ? this.logOf(store) : []) + return this.logFeed + .items() .filter((e) => !f || e.type.toLowerCase().includes(f) || this.storeMatches(f)) + .slice() .reverse(); }); @@ -2471,6 +2499,12 @@ export class StoreInspector { }); constructor() { + rememberSelection('store', this.selectedStoreId); + // Newest first, so following the newest change keeps the log scrolled to the top. + followNewest(this.logFeed, () => { + const list = this.logList()?.nativeElement; + if (list) list.scrollTop = 0; + }); effect(() => { const log = this.logList()?.nativeElement; if (log) this.logWindow.attach(log); diff --git a/app/src/pages/timeline.ts b/app/src/pages/timeline.ts index f8677018..272e4627 100644 --- a/app/src/pages/timeline.ts +++ b/app/src/pages/timeline.ts @@ -43,6 +43,8 @@ import { type TimelineLayer, type TimelineSources, } from './timeline-data'; +import { rememberSelection } from '../view-memory'; +import { AppState } from '../ui/app-state'; /** How many rows the list renders, newest first. The chart always draws every event. */ export const TIMELINE_LIST_CAP = 200; @@ -55,7 +57,7 @@ const DRAG_THRESHOLD = 4; @Component({ selector: 'app-timeline', - imports: [Select, RovingList, SearchField], + imports: [AppState, Select, RovingList, SearchField], template: `

Navigations, HTTP calls, NgRx actions, change detection cycles, form events and signal changes @@ -63,12 +65,11 @@ const DRAG_THRESHOLD = 4; a range, and open an event in its own tab.

@if (loading()) { -

Loading the timeline…

+ Loading the timeline… } @else if (failed()) { - + + Can't read the timeline from the devtools server. + } @else {
@if (!events().length) { -
-

Nothing on the timeline yet.

-

+ + Nothing on the timeline yet. +

Use the app with the overlay loaded. Navigations, HTTP calls, NgRx actions and form events show up as they happen. Record change detection on the Components tab, and pick a component on the Signals tab to follow its signals.

-
+ } @else if (!shown().length) { -
-

No event matches the filters{{ range() ? ' in this range' : '' }}.

- -
+ + No event matches the filters{{ range() ? ' in this range' : '' }}. + } @else {
@@ -829,6 +827,7 @@ export class Timeline { }); constructor() { + rememberSelection('timeline', this.selectedKey); effect(() => { const client = this.rpc(); if (client) void this.load(client); diff --git a/app/src/test-setup.ts b/app/src/test-setup.ts index 291ce50f..0799f949 100644 --- a/app/src/test-setup.ts +++ b/app/src/test-setup.ts @@ -1,5 +1,17 @@ import '@angular/compiler'; +import { beforeEach } from 'vitest'; import { getTestBed } from '@angular/core/testing'; import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting()); + +// Selections and scroll positions the panel remembers would carry over from one test to the next. +beforeEach(() => { + try { + for (const key of Object.keys(sessionStorage)) { + if (key.startsWith('pangular-view:')) sessionStorage.removeItem(key); + } + } catch { + // no storage in this environment + } +}); diff --git a/app/src/ui/app-state.ts b/app/src/ui/app-state.ts new file mode 100644 index 00000000..8f2fee21 --- /dev/null +++ b/app/src/ui/app-state.ts @@ -0,0 +1,184 @@ +import { Component, ViewEncapsulation, computed, input, output } from '@angular/core'; + +/** The states every page shows besides its content. */ +export type StateKind = 'loading' | 'error' | 'empty' | 'no-match'; + +/** + * The loading, error, empty and no-match states of a page, so they read and + * look the same everywhere. The projected content is the one-line message; + * elements marked `detail` go under it, and elements marked `actions` sit + * next to the built-in button. + * + * - `loading` is a status region with a spinner. + * - `error` is an alert with a Retry button (`retry`). `retrying` disables it + * while a retry runs. + * - `empty` is a status region that says how to get data. + * - `no-match` has a Clear filters button (`clear`). It is not a live region: + * the page announces filter results itself, through `filterAnnouncement()`. + * + * ```html + * Can't read the timeline. + * + * No page reports errors yet. + *

Open the app with the overlay loaded.

+ *
+ * ``` + */ +@Component({ + selector: 'app-state', + // Unscoped, so the rules reach the projected `[detail]` lines; every selector starts at app-state. + encapsulation: ViewEncapsulation.None, + host: { + '[attr.role]': 'role()', + '[attr.data-kind]': 'kind()', + '[class.compact]': 'compact()', + }, + template: ` + @if (kind() === 'loading') { + + } +
+

+ + @if (kind() === 'error' || kind() === 'no-match' || hasActions()) { +
+ @if (kind() === 'error') { + + } @else if (kind() === 'no-match') { + + } + +
+ } +
+ `, + styles: ` + @use 'mixins' as m; + + app-state { + display: flex; + gap: 10px; + align-items: flex-start; + margin: 0 0 12px; + padding: 14px 16px; + @include m.panel; + color: var(--text-2); + line-height: 1.5; + @include m.enter(0.2s); + } + app-state.compact { + padding: 8px 12px; + } + app-state[data-kind='error'] { + box-shadow: inset 3px 0 0 var(--danger); + } + app-state > .body { + display: grid; + gap: 6px; + min-width: 0; + } + app-state .message { + margin: 0; + color: var(--text); + font-weight: 600; + overflow-wrap: anywhere; + } + app-state[data-kind='loading'] .message { + color: var(--text-2); + font-weight: 400; + } + app-state [detail] { + margin: 0; + color: var(--text-2); + font-size: 13px; + overflow-wrap: anywhere; + } + app-state code { + font-family: var(--font-mono); + color: var(--text); + } + app-state .actions { + display: flex; + flex-wrap: wrap; + gap: 8px; + margin-top: 2px; + } + app-state .action { + height: var(--control-h); + padding: 0 12px; + border: 1px solid var(--control-border); + border-radius: var(--radius-sm); + background: var(--surface-2); + color: var(--text); + font: inherit; + font-size: 13px; + cursor: pointer; + transition: background-color 0.15s var(--ease); + } + app-state .action:hover { + background: var(--surface-3); + } + app-state .action[aria-disabled='true'] { + cursor: progress; + } + app-state .action:focus-visible { + @include m.focus-ring; + } + app-state > .spinner { + flex: none; + width: 14px; + height: 14px; + margin-top: 4px; + border: 2px solid var(--border-strong); + border-top-color: var(--accent); + border-radius: 50%; + animation: app-state-spin 0.8s linear infinite; + } + @keyframes app-state-spin { + to { + transform: rotate(360deg); + } + } + @media (prefers-reduced-motion: reduce) { + app-state, + app-state > .spinner { + animation: none; + } + } + `, +}) +export class AppState { + readonly kind = input.required(); + /** The Retry button's label, for an action that is not a plain reload. */ + readonly retryLabel = input('Retry'); + /** True while a retry runs, so the button can't send it twice. */ + readonly retrying = input(false); + /** A smaller box, for a state inside a panel rather than the page. */ + readonly compact = input(false); + /** Shows the actions row for projected `[actions]` on an empty or loading state. */ + readonly hasActions = input(false); + readonly retry = output(); + readonly clear = output(); + + protected readonly role = computed(() => { + switch (this.kind()) { + case 'error': + return 'alert'; + case 'no-match': + return null; + default: + return 'status'; + } + }); + + protected onRetry() { + if (!this.retrying()) this.retry.emit(); + } +} diff --git a/app/src/ui/live-feed.ts b/app/src/ui/live-feed.ts new file mode 100644 index 00000000..20c24807 --- /dev/null +++ b/app/src/ui/live-feed.ts @@ -0,0 +1,278 @@ +import { + Component, + Injector, + afterNextRender, + computed, + effect, + inject, + input, + linkedSignal, + signal, + untracked, + type Signal, +} from '@angular/core'; +import { storeFlag, storedFlag } from '../view-prefs'; + +export interface LiveFeedOptions { + /** Names the feed for the saved Follow newest choice, such as `network`. */ + name: string; + /** The live list, before any filter. */ + source: () => readonly T[]; + /** A stable id of an entry, to count what arrived during a pause. */ + key: (item: T) => string | number; + /** Which end of the list holds the newest entry. Defaults to `first`. */ + newest?: 'first' | 'last'; + /** + * What the list belongs to, such as the selected page. A paused feed that + * switches to another one holds that one's entries instead. + */ + scope?: () => unknown; +} + +/** What the controls and {@link followNewest} need from a feed, whatever its entries are. */ +export interface LiveFeedState { + readonly paused: Signal; + readonly pending: Signal; + readonly newestKey: Signal; + readonly follow: Signal; + toggle(): void; + setFollow(on: boolean): void; +} + +/** + * A live list that the viewer can pause. While paused, `items` keeps the + * entries it had and `pending` counts the ones that arrived since; resuming + * shows them all. `follow` is the viewer's Follow newest choice, saved per feed. + * + * Create it in a component's injection context and read `items` where the + * page read its live list, so filters still apply on top. + */ +export class LiveFeed implements LiveFeedState { + private readonly held: ReturnType>; + private readonly followed: ReturnType>; + + /** The entries to show: the held ones while paused, else the live ones. */ + readonly items: Signal; + readonly paused: Signal; + /** How many entries arrived since the pause. */ + readonly pending: Signal; + /** The id of the newest entry shown. */ + readonly newestKey: Signal; + readonly follow: Signal; + + constructor(private readonly options: LiveFeedOptions) { + // A computed, so a scope that reads other signals moves on only when its value changes. + const scope = computed(() => options.scope?.()); + this.held = linkedSignal({ + source: scope, + // A pause outlives a switch to another page or store: it holds that one's entries. + computation: (_scope, previous) => (previous?.value ? untracked(options.source) : null), + }); + this.followed = signal(storedFlag(`follow:${options.name}`) ?? false); + this.follow = this.followed.asReadonly(); + this.items = computed(() => this.held() ?? options.source()); + this.paused = computed(() => this.held() !== null); + this.pending = computed(() => { + const held = this.held(); + if (!held) return 0; + const seen = new Set(held.map(options.key)); + return options.source().filter((item) => !seen.has(options.key(item))).length; + }); + this.newestKey = computed(() => { + const items = this.items(); + const item = options.newest === 'last' ? items.at(-1) : items[0]; + return item === undefined ? undefined : options.key(item); + }); + } + + pause() { + if (!this.paused()) this.held.set([...untracked(this.options.source)]); + } + + resume() { + this.held.set(null); + } + + toggle() { + if (this.paused()) this.resume(); + else this.pause(); + } + + setFollow(on: boolean) { + this.followed.set(on); + storeFlag(`follow:${this.options.name}`, on); + } +} + +/** + * Calls `scroll` after the render that shows a new newest entry, while + * Follow newest is on, and once when the viewer turns it on. Call it in a + * component's injection context. + */ +export function followNewest(feed: LiveFeedState, scroll: () => void) { + const injector = inject(Injector); + let lastKey: string | number | undefined; + let lastFollow = false; + let primed = false; + effect(() => { + const key = feed.newestKey(); + const follow = feed.follow(); + const changed = primed && key !== undefined && key !== lastKey; + if (follow && (changed || !lastFollow)) afterNextRender(scroll, { injector }); + lastKey = key; + lastFollow = follow; + primed = true; + }); +} + +/** + * Pause and Follow newest controls for a {@link LiveFeed}. The count of held + * entries is not a live region; the toggle says what happened once, when the + * viewer presses it. + */ +@Component({ + selector: 'app-live-controls', + template: ` +
+ + @if (feed().paused()) { + {{ pendingText() }} + } + +

{{ announcement() }}

+
+ `, + styles: ` + @use 'mixins' as m; + + :host { + display: contents; + } + .live { + display: inline-flex; + flex-wrap: wrap; + gap: 6px 12px; + align-items: center; + min-width: 0; + } + .pause { + display: inline-flex; + gap: 6px; + align-items: center; + height: var(--control-h); + padding: 0 12px; + border: 1px solid var(--control-border); + border-radius: var(--radius-sm); + background: var(--surface-2); + color: var(--text); + font: inherit; + font-size: 13px; + cursor: pointer; + transition: + background-color 0.15s var(--ease), + border-color 0.15s var(--ease); + } + .pause:hover { + background: var(--surface-3); + } + .pause[aria-pressed='true'] { + border-color: var(--accent-line); + background: var(--accent-soft); + color: var(--text-strong); + } + .pause:focus-visible { + @include m.focus-ring; + } + .icon { + flex: none; + width: 10px; + height: 10px; + border-right: 3px solid currentColor; + border-left: 3px solid currentColor; + box-sizing: border-box; + } + .icon[data-paused='true'] { + width: 0; + height: 0; + border-top: 5px solid transparent; + border-right: 0; + border-bottom: 5px solid transparent; + border-left: 8px solid currentColor; + } + .pending { + @include m.tint(accent); + padding: 1px 8px; + border: 1px solid; + border-radius: 999px; + font-size: 12px; + font-variant-numeric: tabular-nums; + white-space: nowrap; + } + .check { + display: inline-flex; + gap: 8px; + align-items: center; + min-height: var(--control-h); + color: var(--text-2); + font-size: 13px; + cursor: pointer; + user-select: none; + } + .check:hover { + color: var(--text); + } + .check input { + flex: none; + width: 14px; + height: 14px; + margin: 0; + accent-color: var(--accent); + cursor: pointer; + } + .check input:focus-visible { + @include m.focus-ring; + } + `, +}) +export class LiveControls { + private static nextId = 0; + readonly feed = input.required(); + /** The entries, plural and lowercase, such as `navigations`. */ + readonly what = input.required(); + protected readonly pendingId = `live-pending-${LiveControls.nextId++}`; + protected readonly announcement = signal(''); + + protected readonly pendingText = computed(() => { + const count = this.feed().pending(); + return count ? `${count} new` : `No new ${this.what()}`; + }); + + toggle() { + const feed = this.feed(); + const count = feed.pending(); + feed.toggle(); + this.announcement.set( + feed.paused() + ? `Paused. New ${this.what()} wait until you resume.` + : count + ? `Resumed with ${count} new ${this.what()}.` + : 'Resumed.', + ); + } +} diff --git a/app/src/ui/sort-header.ts b/app/src/ui/sort-header.ts new file mode 100644 index 00000000..82aefa2c --- /dev/null +++ b/app/src/ui/sort-header.ts @@ -0,0 +1,140 @@ +import { Component, computed, input, model } from '@angular/core'; + +export type SortDirection = 'ascending' | 'descending'; + +/** The column a table is sorted by. `null` keeps the order the data came in. */ +export interface SortState { + column: C; + direction: SortDirection; +} + +/** A sort key of a row: numbers compare as numbers, text compares by locale, `undefined` goes last. */ +export type SortKey = string | number | null | undefined; + +/** Ascending, then descending, then back to the order the data came in. */ +export function nextSort( + current: SortState | null, + column: C, +): SortState | null { + if (current?.column !== column) return { column, direction: 'ascending' }; + return current.direction === 'ascending' ? { column, direction: 'descending' } : null; +} + +const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' }); + +function compareKeys(a: SortKey, b: SortKey): number { + const aMissing = a === undefined || a === null || a === ''; + const bMissing = b === undefined || b === null || b === ''; + if (aMissing || bMissing) return aMissing === bMissing ? 0 : aMissing ? 1 : -1; + if (typeof a === 'number' && typeof b === 'number') return a - b; + return collator.compare(String(a), String(b)); +} + +/** + * The rows in the order of `sort`, or as they are when `sort` is `null`. + * The sort is stable, and rows without a key stay last in both directions. + */ +export function sortRows( + rows: readonly T[], + sort: SortState | null, + keys: Readonly SortKey>>, +): readonly T[] { + const key = sort && keys[sort.column]; + if (!sort || !key) return rows; + const sign = sort.direction === 'ascending' ? 1 : -1; + return rows + .map((row, index) => ({ row, index, value: key(row) })) + .sort((a, b) => { + const aMissing = a.value === undefined || a.value === null || a.value === ''; + const bMissing = b.value === undefined || b.value === null || b.value === ''; + if (aMissing !== bMissing) return aMissing ? 1 : -1; + return sign * compareKeys(a.value, b.value) || a.index - b.index; + }) + .map(({ row }) => row); +} + +/** + * A sortable column header. Put it on the `
+ * ``` + * + * The header gets `aria-sort` while the table is sorted by its column, and a + * button that cycles ascending, descending and the original order. + */ +@Component({ + selector: 'th[appSortHeader]', + host: { + '[attr.aria-sort]': 'direction()', + class: 'sortable', + }, + template: ` + + `, + styles: ` + @use 'mixins' as m; + + .sort-button { + display: inline-flex; + gap: 4px; + align-items: center; + max-width: 100%; + margin: -2px -4px; + padding: 2px 4px; + border: 0; + border-radius: var(--radius-sm); + background: none; + color: inherit; + font: inherit; + letter-spacing: inherit; + text-align: inherit; + text-transform: inherit; + cursor: pointer; + } + .sort-button:hover { + color: var(--text); + } + .sort-button:focus-visible { + @include m.focus-ring(-2px); + } + .arrow { + display: inline-block; + flex: none; + width: 0; + height: 0; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + opacity: 0.45; + } + .arrow:not([data-direction]) { + border-top: 4px solid currentColor; + border-bottom: 0; + transform: translateY(1px); + } + .arrow[data-direction='ascending'] { + border-bottom: 5px solid var(--accent); + opacity: 1; + } + .arrow[data-direction='descending'] { + border-top: 5px solid var(--accent); + opacity: 1; + } + `, +}) +export class SortHeader { + readonly column = input.required({ alias: 'appSortHeader' }); + readonly sort = model(null); + + protected readonly direction = computed(() => { + const sort = this.sort(); + return sort?.column === this.column() ? sort.direction : null; + }); + + toggle() { + this.sort.set(nextSort(this.sort(), this.column())); + } +} diff --git a/app/src/view-memory.ts b/app/src/view-memory.ts new file mode 100644 index 00000000..1174c6bd --- /dev/null +++ b/app/src/view-memory.ts @@ -0,0 +1,94 @@ +import { Service, effect, inject, untracked, type WritableSignal } from '@angular/core'; +import { hostPageId } from './page-id'; + +const MEMORY_KEY = 'pangular-view'; + +/** + * Where each view was: the scroll position of the panel and the selected + * item of a page, per view, tab and inspected page. It lives in + * `sessionStorage`, so switching tabs and reloading the popup or the + * extension comes back to the same place, and a copy stays in memory for + * when storage is blocked. + */ +@Service() +export class ViewMemory { + private readonly values = new Map(); + private view: () => string = () => 'panel'; + + /** Follows the panel view (`angular`, `analog` and so on); the shell sets it. */ + useView(view: () => string) { + this.view = view; + } + + private key(name: string) { + return `${MEMORY_KEY}:${untracked(this.view)}:${hostPageId() ?? ''}:${name}`; + } + + read(name: string): T | undefined { + const key = this.key(name); + try { + const raw = sessionStorage.getItem(key); + return raw === null ? undefined : (JSON.parse(raw) as T); + } catch { + // Blocked or unreadable storage falls back to the copy in memory. + return this.values.get(key) as T | undefined; + } + } + + write(name: string, value: unknown) { + const key = this.key(name); + try { + if (value === null || value === undefined) sessionStorage.removeItem(key); + else sessionStorage.setItem(key, JSON.stringify(value)); + } catch { + // Blocked storage keeps a copy in memory, which lasts until the panel reloads. + this.values.set(key, value); + } + } +} + +/** + * Keeps a page's selection across tab switches and reloads: sets `value` to + * what was selected last time, then saves every change. Call it in the + * page's injection context, after the signal exists. The value must be plain + * JSON, such as an id. + */ +export function rememberSelection(tab: string, value: WritableSignal, name = 'selection') { + const memory = inject(ViewMemory); + const key = `${tab}:${name}`; + const saved = memory.read(key); + if (saved !== undefined && saved !== null) value.set(saved); + effect(() => memory.write(key, value())); +} + +/** + * Scrolls `el` back to `top` as the content grows to reach it, for up to + * `frames` animation frames. Stops early when the user scrolls, clicks or + * types. Returns a function that stops it. + */ +export function restoreScroll(el: HTMLElement, top: number, frames = 120): () => void { + let left = frames; + let frame = 0; + let done = false; + const inputs = ['wheel', 'touchstart', 'pointerdown', 'keydown'] as const; + const stop = () => { + if (done) return; + done = true; + cancelAnimationFrame(frame); + for (const type of inputs) el.removeEventListener(type, stop); + }; + for (const type of inputs) el.addEventListener(type, stop, { passive: true }); + const step = () => { + if (done) return; + el.scrollTop = top; + if (Math.abs(el.scrollTop - top) < 2 || --left <= 0) stop(); + else frame = requestAnimationFrame(step); + }; + if (top > 0) { + step(); + } else { + el.scrollTop = 0; + stop(); + } + return stop; +} diff --git a/apps/docs/src/content/getting-started/popup-and-hub.md b/apps/docs/src/content/getting-started/popup-and-hub.md index 1ef41a5b..854d65cc 100644 --- a/apps/docs/src/content/getting-started/popup-and-hub.md +++ b/apps/docs/src/content/getting-started/popup-and-hub.md @@ -249,6 +249,8 @@ On other tabs, `id` is ignored and the link opens the tab. `page` is the page id Without a hash, the panel opens the tab you used last in this browser tab. The Chrome extension and the popup reload the panel on every navigation, and the panel keeps its tab across those reloads. It saves the tab in `sessionStorage`, so another browser tab starts on the Dashboard. A hash wins over the saved tab, and a tab that is turned off falls back to the Dashboard. +Each tab also keeps its scroll position, and the Timeline, SSR & HTTP, NgRx Store, TanStack Query, Forms and Capacitor tabs keep their selected item. Switching tabs or reloading the panel brings them back. They are saved in `sessionStorage` per view and inspected page, and kept in memory when storage is blocked. + ### Limits A hash or a saved tab only works for a tab that exists when the panel opens. The Analog tab appears after the server confirms the app is an Analog app, so `#tab=analog` does not select it on load. Inside the Angular dock, the Store and Analog tabs live in their own docks. diff --git a/apps/docs/src/content/inspectors/ngrx-store.md b/apps/docs/src/content/inspectors/ngrx-store.md index ce59faa5..54aa32ae 100644 --- a/apps/docs/src/content/inspectors/ngrx-store.md +++ b/apps/docs/src/content/inspectors/ngrx-store.md @@ -62,6 +62,8 @@ Open an entry to see its time, **Origin** and **Duration**, and three tabs. **Ac With [`ngrx.trace`](../getting-started/configuration.md#ngrx) on, an entry also lists **Called from**: the app frames of the dispatch, method call or `patchState` that made it, the closest call first. With the server connected, each frame opens its file in your editor. +**Pause** above the log holds it as it is while the app keeps changing the store, and a pill counts the entries that arrived since, such as **4 new**. Press **Pause** again to show them. A pause lasts across a switch to another store. With **Follow newest** checked, the log scrolls back to the newest entry each time one arrives. The panel remembers **Follow newest** in `localStorage`. + Entry numbers start at 1 again when the app reloads. So when the app reloads, or the selected page closes and the tab shows another one, the open entry closes and a pending **Restore** confirmation is cancelled. ### Action frequency diff --git a/apps/docs/src/content/inspectors/router.md b/apps/docs/src/content/inspectors/router.md index 723937cc..2aec7b29 100644 --- a/apps/docs/src/content/inspectors/router.md +++ b/apps/docs/src/content/inspectors/router.md @@ -40,6 +40,8 @@ Every navigation as one story: Filter by URL, or check **Only problems** to keep the navigations that did not succeed and the ones in a loop. **Only problems** leaves out the navigations that **Probe in app** cancels, the way the problem count on the **Navigations** tab does. Each row has **Replay**, **Compare** (opens the [Compare view](#compare) with this navigation as the later one), **Copy repro** (a markdown repro) and **HTTP calls**. **Replay** is off for a navigation whose URL is redacted or not relative, and a note under the row says why. **Export JSON** saves the list. +**Pause** holds the list while the app keeps navigating, and a pill counts the navigations that arrived since, such as **2 new**. Press **Pause** again to show them. With **Follow newest** checked, the list scrolls its newest navigation into view as it arrives. The panel remembers **Follow newest** in `localStorage`. + **HTTP calls** lists the `HttpClient` calls the [SSR & HTTP inspector](./ssr-http.md) recorded on the same page for that navigation, with method, URL, status and time, in two groups: **While it ran** (guards, resolvers, lazy loads) and **After it ended** (calls that started before the next navigation, at most 5 seconds after it ended, such as the ones the new page's components make). It needs the SSR & HTTP inspector and its HTTP setup. The **HTTP** row of each navigation counts the page's `fetch` and XHR requests from resource timing, which also works without that setup. **Clear** empties the list and its loop warnings for the page you are looking at, so you can test a flow from a clean list without reloading the app. Other tabs keep their navigations. A navigation still running stays in the list. With [`actions.router`](../getting-started/configuration.md#actions) set to `false`, **Clear** is off. @@ -97,6 +99,8 @@ The parts that are the same are listed under the tables. Params and data are kep The live route config. The tab merges lazy children in once they load, and marks the active branch. +The config is a tree grid, so a screen reader reads each route's level and whether it is expanded. The grid is one `Tab` stop. Up and down arrows move between routes, and `Home` and `End` jump to the first and last. Right arrow expands a collapsed route, or moves to its first child. Left arrow collapses an expanded route, or moves to its parent. The arrow before a path toggles it with the mouse. While a filter is set, the tree shows every matching route and can't be collapsed. + - Filter the routes by path, component or declaring file. While the filter is set, the summary shows the count, for example "2 of 14 routes", and a screen reader announces it as you type. If nothing matches, click **Clear filters**. - **Test a URL** and click **Predict** to see which route matches it, or the nearest ones. - Click **What happens** for a card that predicts going to the URL from the live config. It does not navigate or run app code. The card shows: @@ -152,7 +156,7 @@ If no check could run, the view says **No checks ran** and why: no page with a r ### Source route config -The routes declared in your files: `*.routes.ts` and `*routing.module.ts` files, the files they lazy load, and Analog pages. Each row shows the path, the component or target, guards and resolvers, the title and the declaring file. Once the live config is available, the tab collapses this table. **Show table** opens it. +The routes declared in your files: `*.routes.ts` and `*routing.module.ts` files, the files they lazy load, and Analog pages. Each row shows the path, the component or target, guards and resolvers, the title and the declaring file. The **Path**, **Component / Target**, **Title** and **Declared in** headers sort the table: ascending, then descending, then back to file order. Once the live config is available, the tab collapses this table. **Show table** opens it. Components rendered by the router show their route and outlet in the [Components tab](./components.md). diff --git a/apps/docs/src/content/inspectors/ssr-http.md b/apps/docs/src/content/inspectors/ssr-http.md index 6a96573f..02bf8b9a 100644 --- a/apps/docs/src/content/inspectors/ssr-http.md +++ b/apps/docs/src/content/inspectors/ssr-http.md @@ -139,9 +139,13 @@ Above the table, these filters narrow the timeline. They combine, and the count If nothing matches, **Clear filters** resets all three. While the filters hide the call that is open in the preview, the preview hides too, and it comes back when the call is visible again. +The **Method**, **URL**, **Status** and **Time** headers sort the table. The first click sorts ascending, the second descending, and the third goes back to newest first. The sorted header carries `aria-sort`. Calls without a status (**ERR** and **cancelled**) stay last in both directions. + +Under the filters, **Pause** holds the timeline as it is while the app keeps making calls. A pill counts the calls that arrived since, such as **3 new**, and pressing **Pause** again shows them. A pause lasts across a switch to another page. With **Follow newest** checked, the table scrolls back to the newest call each time one arrives, while it is sorted newest first. The panel remembers **Follow newest** in `localStorage`. + **Table** and **Waterfall** above the timeline switch its view. **Table** lists every call. **Waterfall** shows the page's client calls grouped by navigation, newest first. A navigation starts each time the page URL a call was made on changes. Each row has the method and path, a bar that starts at the call's offset in its navigation and spans its duration, and the status, offset and duration, such as `503 · +10 ms · 8 ms`. The status reads `ERR` for a network error, `cancelled` for a cancelled call, and adds `cache` for a transfer cache hit; failed calls and cache hits get a tinted label. The bar is the accent color for a network call, green for a transfer cache hit, red for a failed call and gray for a cancelled one. The count above the view reads how many client calls the waterfall shows out of all calls, such as **3 client calls of 7**. The rows are one `Tab` stop, and the arrow keys, `Home` and `End` move between them. The filters apply to both views, and the waterfall leaves out SSR calls. Click a row to open the same preview as in the table. -Click a row for a response preview. The preview opens under the timeline and takes focus. A JSON body is indented by 2 spaces. Other text, and a body clipped at 2000 characters, shows as recorded. The preview is redacted before it reaches the panel, so masked values stay masked. Under the body, **Request headers** and **Response headers** list the call's headers. Request headers are the ones the call had when it reached `withPangular()`, so headers that later interceptors add are not in the list. Response headers are the ones the app could read; a cross-origin response shows only the headers CORS exposes. `Authorization`, `Proxy-Authorization`, `Cookie` and `Set-Cookie` are always masked, whatever `redaction.unmask` says. Names that look secret or match `redaction.secretNames`, and JWTs and bearer tokens in any value, are masked too. The interceptor keeps only a reference to the headers Angular already built. The overlay reads and masks them when it sends the call, so a page without the devtools copies nothing. **Copy** puts the shown preview on the clipboard. **Copy as fetch** and **Copy as cURL** put the call on the clipboard as a `fetch()` statement or a `curl` command, with its method, URL and request headers. They are built from the masked copy the panel holds, so `[redacted]` stays where a secret was, and a comment at the top says to fill those values in. Request bodies are not recorded, so a `POST`, `PUT`, `PATCH` or `DELETE` gets a comment that says so. Relative client URLs get the panel's origin, as in **Export HAR**. The panel only copies text: it never sends the request. **Mock this request** fills in the [fault rule form](#fault-injection) from the call. **Close** or `Escape` returns focus to the row. A long timeline scrolls inside its own box. The timeline shows the page's client calls and the SSR calls made while rendering its first URL. **Clear timeline** empties it. +Click a row for a response preview. The preview opens under the timeline and takes focus. A JSON body is indented by 2 spaces. Other text, and a body clipped at 2000 characters, shows as recorded. The preview is redacted before it reaches the panel, so masked values stay masked. Under the body, **Request headers** and **Response headers** list the call's headers. Request headers are the ones the call had when it reached `withPangular()`, so headers that later interceptors add are not in the list. Response headers are the ones the app could read; a cross-origin response shows only the headers CORS exposes. `Authorization`, `Proxy-Authorization`, `Cookie` and `Set-Cookie` are always masked, whatever `redaction.unmask` says. Names that look secret or match `redaction.secretNames`, and JWTs and bearer tokens in any value, are masked too. The interceptor keeps only a reference to the headers Angular already built. The overlay reads and masks them when it sends the call, so a page without the devtools copies nothing. **Copy** puts the shown preview on the clipboard. **Copy as fetch** and **Copy as cURL** put the call on the clipboard as a `fetch()` statement or a `curl` command, with its method, URL and request headers. They are built from the masked copy the panel holds, so `[redacted]` stays where a secret was, and a comment at the top says to fill those values in. Request bodies are not recorded, so a `POST`, `PUT`, `PATCH` or `DELETE` gets a comment that says so. Relative client URLs get the panel's origin, as in **Export HAR**. The panel only copies text: it never sends the request. **Mock this request** fills in the [fault rule form](#fault-injection) from the call. **Close** or `Escape` returns focus to the row. A long timeline scrolls inside its own box. The open call is remembered per browser tab, so switching tabs or reloading the panel opens it again. The timeline shows the page's client calls and the SSR calls made while rendering its first URL. **Clear timeline** empties it. **Export HAR** saves the timeline as a HAR 1.2 file, named after the page path, such as `pangular-shop.har`. It holds the SSR request that served the page, with its kept response headers such as `Server-Timing`, then the server and client calls, oldest first, each with its method, URL, status, time, headers and response preview. Notes such as transfer cache, mocked, failed by a fault rule or cancelled go in each entry's `comment`. The file is written from the masked copy the panel holds, so secrets stay `[redacted]`. Request bodies are not recorded, and response bodies are the previews, clipped at 2000 characters. Relative client URLs get the panel's origin, which is the app's when the app's dev server serves the panel; in the Chrome extension they stay relative. Open the file in Chrome's Network panel, or attach it to a bug report. diff --git a/extension/ui/assets/browser-agent-rpc-KH4HHvHf-BjQp5LKx.js b/extension/ui/assets/browser-agent-rpc-KH4HHvHf-CfawV4BR.js similarity index 95% rename from extension/ui/assets/browser-agent-rpc-KH4HHvHf-BjQp5LKx.js rename to extension/ui/assets/browser-agent-rpc-KH4HHvHf-CfawV4BR.js index 39bfacc5..50c56a16 100644 --- a/extension/ui/assets/browser-agent-rpc-KH4HHvHf-BjQp5LKx.js +++ b/extension/ui/assets/browser-agent-rpc-KH4HHvHf-CfawV4BR.js @@ -1 +1 @@ -import{t as e}from"./index-dxIK5fBB.js";var t=Symbol.for(`devframe:browser-agent-registry`),{tools:n,listeners:r}=globalThis[t]??={tools:new Map,listeners:new Set};function i(){return[...n.values()]}function a(e){return r.add(e),()=>r.delete(e)}var o=`devframe:client-id`,s;function c(t=globalThis.window){try{let n=t?.sessionStorage;if(n){let t=n.getItem(o);return t||(t=e(),n.setItem(o,t)),t}}catch{}return s??=e(),s}function l(){let e=typeof document>`u`?void 0:document;return{url:e?.location?.href??``,title:e?.title??``,visible:!e||e.visibilityState===`visible`,focused:e?.hasFocus()??!0}}function u(e){e.client.register({name:`devframe:agent:invoke-client-tool`,type:`action`,jsonSerializable:!0,handler:async(e,t)=>{let n=i().find(t=>t.id===e);if(!n)throw Error(`[devframe/agent] browser tool "${e}" not found`);return await n.invoke(t)}});let t=!1,n=!1,r=0,o=()=>{t||n||(t=!0,queueMicrotask(async()=>{if(t=!1,n)return;let a=i().map(({invoke:e,...t})=>t);(a.length!==0||r!==0)&&(r=a.length,await e.callOptional(`devframe:agent:sync-client-tools`,c(),a,l()).catch(()=>{}))}))},s=a(o),u=e.events.on(`connection:status`,e=>{e===`connected`&&o()}),d=typeof window>`u`?void 0:window;return d?.addEventListener(`focus`,o),d?.addEventListener(`blur`,o),d?.document.addEventListener(`visibilitychange`,o),o(),()=>{n=!0,s(),u(),d?.removeEventListener(`focus`,o),d?.removeEventListener(`blur`,o),d?.document.removeEventListener(`visibilitychange`,o)}}export{u as setupBrowserAgentRpcBridge}; \ No newline at end of file +import{t as e}from"./index-BvfP7itL.js";var t=Symbol.for(`devframe:browser-agent-registry`),{tools:n,listeners:r}=globalThis[t]??={tools:new Map,listeners:new Set};function i(){return[...n.values()]}function a(e){return r.add(e),()=>r.delete(e)}var o=`devframe:client-id`,s;function c(t=globalThis.window){try{let n=t?.sessionStorage;if(n){let t=n.getItem(o);return t||(t=e(),n.setItem(o,t)),t}}catch{}return s??=e(),s}function l(){let e=typeof document>`u`?void 0:document;return{url:e?.location?.href??``,title:e?.title??``,visible:!e||e.visibilityState===`visible`,focused:e?.hasFocus()??!0}}function u(e){e.client.register({name:`devframe:agent:invoke-client-tool`,type:`action`,jsonSerializable:!0,handler:async(e,t)=>{let n=i().find(t=>t.id===e);if(!n)throw Error(`[devframe/agent] browser tool "${e}" not found`);return await n.invoke(t)}});let t=!1,n=!1,r=0,o=()=>{t||n||(t=!0,queueMicrotask(async()=>{if(t=!1,n)return;let a=i().map(({invoke:e,...t})=>t);(a.length!==0||r!==0)&&(r=a.length,await e.callOptional(`devframe:agent:sync-client-tools`,c(),a,l()).catch(()=>{}))}))},s=a(o),u=e.events.on(`connection:status`,e=>{e===`connected`&&o()}),d=typeof window>`u`?void 0:window;return d?.addEventListener(`focus`,o),d?.addEventListener(`blur`,o),d?.document.addEventListener(`visibilitychange`,o),o(),()=>{n=!0,s(),u(),d?.removeEventListener(`focus`,o),d?.removeEventListener(`blur`,o),d?.document.removeEventListener(`visibilitychange`,o)}}export{u as setupBrowserAgentRpcBridge}; \ No newline at end of file diff --git a/extension/ui/assets/index-dxIK5fBB.js b/extension/ui/assets/index-BvfP7itL.js similarity index 55% rename from extension/ui/assets/index-dxIK5fBB.js rename to extension/ui/assets/index-BvfP7itL.js index d013b47a..8a413e91 100644 --- a/extension/ui/assets/index-dxIK5fBB.js +++ b/extension/ui/assets/index-BvfP7itL.js @@ -1,14 +1,14 @@ -(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Object.defineProperty,t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,i=(t,n,r)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r,a=(e,a)=>{for(var o in a||={})n.call(a,o)&&i(e,o,a[o]);if(t)for(var o of t(a))r.call(a,o)&&i(e,o,a[o]);return e},o=(e,t,n)=>(i(e,typeof t==`symbol`?t:t+``,n),n),s=globalThis;function c(e){let t=s.__Zone_symbol_prefix;return(typeof t==`string`?t:`__zone_symbol__`)+e}function l(){let e=s.performance;function t(t){e&&e.mark&&e.mark(t)}function n(t,n){e&&e.measure&&e.measure(t,n)}t(`Zone`);let r=class e{constructor(e,t){o(this,`_parent`),o(this,`_name`),o(this,`_properties`),o(this,`_zoneDelegate`),this._parent=e,this._name=t?t.name||`unnamed`:``,this._properties=t&&t.properties||{},this._zoneDelegate=new l(this,this._parent&&this._parent._zoneDelegate,t)}static assertZonePatched(){if(s.Promise!==pe.ZoneAwarePromise)throw Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let t=e.current;for(;t.parent;)t=t.parent;return t}static get current(){return he.zone}static get currentTask(){return ge}static __load_patch(r,i,a=!1){if(Object.hasOwn(pe,r)){let e=s[c(`forceDuplicateZoneCheck`)]===!0;if(!a&&e)throw Error(`Already loaded patch: `+r)}else if(!s[`__Zone_disable_`+r]){let a=`Zone:`+r;t(a),pe[r]=i(s,e,me),n(a,a)}}get parent(){return this._parent}get name(){return this._name}get(e){let t=this.getZoneWith(e);if(t)return t._properties[e]}getZoneWith(e){let t=this;for(;t;){if(Object.hasOwn(t._properties,e))return t;t=t._parent}return null}fork(e){if(!e)throw Error(`ZoneSpec required!`);return this._zoneDelegate.fork(this,e)}wrap(e,t){if(typeof e!=`function`)throw Error(`Expecting function got: `+e);let n=this._zoneDelegate.intercept(this,e,t),r=this;return function(){return r.runGuarded(n,this,arguments,t)}}run(e,t,n,r){he={parent:he,zone:this};try{return this._zoneDelegate.invoke(this,e,t,n,r)}finally{he=he.parent}}runGuarded(e,t=null,n,r){he={parent:he,zone:this};try{try{return this._zoneDelegate.invoke(this,e,t,n,r)}catch(e){if(this._zoneDelegate.handleError(this,e))throw e}}finally{he=he.parent}}runTask(e,t,n){if(e.zone!=this)throw Error(`A task can only be run in the zone of creation! (Creation: `+(e.zone||re).name+`; Execution: `+this.name+`)`);let r=e,{type:i,data:{isPeriodic:a=!1,isRefreshable:o=!1}={}}=e;if(e.state===ie&&(i===fe||i===de))return;let s=e.state!=se;s&&r._transitionTo(se,oe);let c=ge;ge=r,he={parent:he,zone:this};try{i==de&&e.data&&!a&&!o&&(e.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,r,t,n)}catch(e){if(this._zoneDelegate.handleError(this,e))throw e}}finally{let t=e.state;if(t!==ie&&t!==le){if(i==fe||a||o&&t===ae)s&&r._transitionTo(oe,se,ae);else{let e=r._zoneDelegates;this._updateTaskCount(r,-1),s&&r._transitionTo(ie,se,ie),o&&(r._zoneDelegates=e)}}he=he.parent,ge=c}}scheduleTask(e){if(e.zone&&e.zone!==this){let t=this;for(;t;){if(t===e.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${e.zone.name}`);t=t.parent}}e._transitionTo(ae,ie);let t=[];e._zoneDelegates=t,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(t){throw e._transitionTo(le,ae,ie),this._zoneDelegate.handleError(this,t),t}return e._zoneDelegates===t&&this._updateTaskCount(e,1),e.state==ae&&e._transitionTo(oe,ae),e}scheduleMicroTask(e,t,n,r){return this.scheduleTask(new u(ue,e,t,n,r,void 0))}scheduleMacroTask(e,t,n,r,i){return this.scheduleTask(new u(de,e,t,n,r,i))}scheduleEventTask(e,t,n,r,i){return this.scheduleTask(new u(fe,e,t,n,r,i))}cancelTask(e){if(e.zone!=this)throw Error(`A task can only be cancelled in the zone of creation! (Creation: `+(e.zone||re).name+`; Execution: `+this.name+`)`);if(e.state===oe||e.state===se){e._transitionTo(ce,oe,se);try{this._zoneDelegate.cancelTask(this,e)}catch(t){throw e._transitionTo(le,ce),this._zoneDelegate.handleError(this,t),t}return this._updateTaskCount(e,-1),e._transitionTo(ie,ce),e.runCount=-1,e}}_updateTaskCount(e,t){let n=e._zoneDelegates;t==-1&&(e._zoneDelegates=null);for(let r=0;re.hasTask(n,r),onScheduleTask:(e,t,n,r)=>e.scheduleTask(n,r),onInvokeTask:(e,t,n,r,i,a)=>e.invokeTask(n,r,i,a),onCancelTask:(e,t,n,r)=>e.cancelTask(n,r)};class l{constructor(e,t,n){o(this,`_zone`),o(this,`_taskCounts`,{microTask:0,macroTask:0,eventTask:0}),o(this,`_forkDlgt`),o(this,`_forkZS`),o(this,`_forkCurrZone`),o(this,`_interceptDlgt`),o(this,`_interceptZS`),o(this,`_interceptCurrZone`),o(this,`_invokeDlgt`),o(this,`_invokeZS`),o(this,`_invokeCurrZone`),o(this,`_handleErrorDlgt`),o(this,`_handleErrorZS`),o(this,`_handleErrorCurrZone`),o(this,`_scheduleTaskDlgt`),o(this,`_scheduleTaskZS`),o(this,`_scheduleTaskCurrZone`),o(this,`_invokeTaskDlgt`),o(this,`_invokeTaskZS`),o(this,`_invokeTaskCurrZone`),o(this,`_cancelTaskDlgt`),o(this,`_cancelTaskZS`),o(this,`_cancelTaskCurrZone`),o(this,`_hasTaskDlgt`),o(this,`_hasTaskDlgtOwner`),o(this,`_hasTaskZS`),o(this,`_hasTaskCurrZone`),this._zone=e,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._forkCurrZone=n&&(n.onFork?this._zone:t._forkCurrZone),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this._zone:t._interceptCurrZone),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this._zone:t._invokeCurrZone),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this._zone:t._handleErrorCurrZone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this._zone:t._scheduleTaskCurrZone),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this._zone:t._invokeTaskCurrZone),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this._zone:t._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let r=n&&n.onHasTask,i=t&&t._hasTaskZS;(r||i)&&(this._hasTaskZS=r?n:a,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,n.onScheduleTask||(this._scheduleTaskZS=a,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this._zone),n.onInvokeTask||(this._invokeTaskZS=a,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this._zone),n.onCancelTask||(this._cancelTaskZS=a,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this._zone))}get zone(){return this._zone}fork(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new i(e,t)}intercept(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,e,t,n):t}invoke(e,t,n,r,i){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,e,t,n,r,i):t.apply(n,r)}handleError(e,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,e,t)}scheduleTask(e,t){let n=t;if(this._scheduleTaskZS)this._hasTaskZS&&n._zoneDelegates.push(this._hasTaskDlgtOwner),n=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,e,t),n||=t;else if(t.scheduleFn)t.scheduleFn(t);else if(t.type==ue)te(t);else throw Error(`Task is missing scheduleFn.`);return n}invokeTask(e,t,n,r){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,e,t,n,r):t.callback.apply(n,r)}cancelTask(e,t){let n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,e,t);else{if(!t.cancelFn)throw Error(`Task is not cancelable`);n=t.cancelFn(t)}return n}hasTask(e,t){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,e,t)}catch(t){this.handleError(e,t)}}_updateTaskCount(e,t){let n=this._taskCounts,r=n[e],i=n[e]=r+t;if(i<0)throw Error(`More tasks executed then were scheduled.`);if(r==0||i==0){let t={microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e};this.hasTask(this._zone,t)}}}class u{constructor(e,t,n,r,i,a){if(o(this,`type`),o(this,`source`),o(this,`invoke`),o(this,`callback`),o(this,`data`),o(this,`scheduleFn`),o(this,`cancelFn`),o(this,`_zone`,null),o(this,`runCount`,0),o(this,`_zoneDelegates`,null),o(this,`_state`,`notScheduled`),this.type=e,this.source=t,this.data=r,this.scheduleFn=i,this.cancelFn=a,!n)throw Error(`callback is not defined`);this.callback=n;let c=this;this.invoke=e===fe&&r&&r.useG?u.invokeTask:function(){return u.invokeTask.call(s,c,this,arguments)}}static invokeTask(e,t,n){e||=this,_e++;try{return e.runCount++,e.zone.runTask(e,t,n)}finally{try{_e===1&&!s[m]&&ne()}finally{_e--}}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(ie,ae)}_transitionTo(e,t,n){if(this._state===t||this._state===n)this._state=e,e==ie&&(this._zoneDelegates=null);else throw Error(`${this.type} '${this.source}': can not transition to '${e}', expecting state '${t}'${n?` or '`+n+`'`:``}, was '${this._state}'.`)}toString(){return this.data&&this.data.handleId!==void 0?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}let d=c(`setTimeout`),f=c(`Promise`),p=c(`then`),m=c(`enable_native_microtask_draining`),h=[],g=!1,_;function ee(e){!_&&s[f]&&(_=s[f].resolve(0)),_?(_[p]??_.then).call(_,e):s[d](e,0)}function te(e){let t=s[m],n=t&&h.length===0&&!g,r=!t&&_e===0&&h.length===0;(n||r)&&ee(ne),e&&h.push(e)}function ne(){if(!g){g=!0;try{for(;h.length;){let e=h;h=[];for(let t of e)try{t.zone.runTask(t,null,null)}catch(e){me.onUnhandledError(e)}}}finally{if(s[m])g=!1,me.microtaskDrainDone();else try{me.microtaskDrainDone()}finally{g=!1}}}}let re={name:`NO ZONE`},ie=`notScheduled`,ae=`scheduling`,oe=`scheduled`,se=`running`,ce=`canceling`,le=`unknown`,ue=`microTask`,de=`macroTask`,fe=`eventTask`,pe=Object.create(null),me={symbol:c,currentZoneFrame:()=>he,onUnhandledError:ve,microtaskDrainDone:ve,scheduleMicroTask:te,showUncaughtError:()=>!i[c(`ignoreConsoleErrorUncaughtError`)],patchEventTarget:()=>[],patchOnProperties:ve,patchMethod:()=>ve,bindArguments:()=>[],patchThen:()=>ve,patchMacroTask:()=>ve,patchEventPrototype:()=>ve,getGlobalObjects:()=>void 0,ObjectDefineProperty:()=>ve,ObjectGetOwnPropertyDescriptor:()=>void 0,ObjectCreate:()=>void 0,ArraySlice:()=>[],patchClass:()=>ve,wrapWithCurrentZone:()=>ve,filterProperties:()=>[],attachOriginToPatched:()=>ve,_redefineProperty:()=>ve,patchCallbacks:()=>ve,nativeScheduleMicroTask:ee},he={parent:null,zone:new i(null,null)},ge=null,_e=0;function ve(){}return n(`Zone`,`Zone`),i}function u(){let e=globalThis,t=e[c(`forceDuplicateZoneCheck`)]===!0;if(e.Zone&&(t||typeof e.Zone.__symbol__!=`function`))throw Error(`Zone already loaded.`);return e.Zone??=l(),e.Zone}var d=Object.getOwnPropertyDescriptor,f=Object.defineProperty,p=Object.getPrototypeOf,m=Object.create,h=Array.prototype.slice,g=`addEventListener`,_=`removeEventListener`,ee=c(g),te=c(_),ne=`true`,re=`false`,ie=c(``);function ae(e,t){return Zone.current.wrap(e,t)}function oe(e,t,n,r,i){return Zone.current.scheduleMacroTask(e,t,n,r,i)}var se=c,ce=typeof window<`u`,le=ce?window:void 0,ue=ce&&le||globalThis,de=`removeAttribute`;function fe(e,t){for(let n=e.length-1;n>=0;n--)typeof e[n]==`function`&&(e[n]=ae(e[n],t+`_`+n));return e}function pe(e,t){let n=e.constructor.name;for(let r=0;r{let t=function(){return e.apply(this,fe(arguments,n+`.`+i))};return Oe(t,e),t})(a)}}}function me(e){return e?e.writable===!1?!1:typeof e.get!=`function`||e.set!==void 0:!0}var he=typeof WorkerGlobalScope<`u`&&self instanceof WorkerGlobalScope,ge=!(`nw`in ue)&&ue.process!==void 0&&ue.process.toString()===`[object process]`,_e=!ge&&!he&&!!(ce&&le.HTMLElement),ve=ue.process!==void 0&&ue.process.toString()===`[object process]`&&!he&&!!(ce&&le.HTMLElement),ye=Object.create(null),be=se(`enable_beforeunload`),xe=function(e){if(e||=ue.event,!e)return;let t=ye[e.type];t||=ye[e.type]=se(`ON_PROPERTY`+e.type);let n=this||e.target||ue,r=n[t],i;if(_e&&n===le&&e.type===`error`){let t=e;i=r&&r.call(this,t.message,t.filename,t.lineno,t.colno,t.error),i===!0&&e.preventDefault()}else i=r&&r.apply(this,arguments),e.type===`beforeunload`&&ue[be]&&typeof i==`string`?e.returnValue=i:i!=null&&!i&&e.preventDefault();return i};function Se(e,t,n){let r=d(e,t);if(!r&&n&&d(n,t)&&(r={enumerable:!0,configurable:!0}),!r||!r.configurable)return;let i=se(`on`+t+`patched`);if(Object.hasOwn(e,i)&&e[i])return;delete r.writable,delete r.value;let a=r.get,o=r.set,s=t.slice(2),c=ye[s];c||=ye[s]=se(`ON_PROPERTY`+s),r.set=function(t){let n=this;!n&&e===ue&&(n=ue),n&&(typeof n[c]==`function`&&n.removeEventListener(s,xe),o?.call(n,null),n[c]=t,typeof t==`function`&&n.addEventListener(s,xe,!1))},r.get=function(){let n=this;if(!n&&e===ue&&(n=ue),!n)return null;let i=n[c];if(i)return i;if(a){let e=a.call(this);if(e)return r.set.call(this,e),typeof n[de]==`function`&&n.removeAttribute(t),e}return null},f(e,t,r),e[i]=!0}function Ce(e,t,n){if(t)for(let r=0;rfunction(t,r){let a=n(t,r);return a.cbIdx>=0&&typeof r[a.cbIdx]==`function`?oe(a.name,r[a.cbIdx],a,i):e.apply(t,r)})}function Oe(e,t){e[se(`OriginalDelegate`)]=t}function ke(e){return typeof e==`function`}function Ae(e){return typeof e==`number`}var je={useG:!0},Me=Object.create(null),Ne={},Pe=RegExp(`^`+ie+`(\\w+)(true|false)$`),Fe=se(`propagationStopped`),Ie=[`capture`,`once`,`passive`,`signal`];function Le(e,t){let n=(t?t(e):e)+re,r=(t?t(e):e)+ne,i=ie+n,a=ie+r;Me[e]={[re]:i,[ne]:a}}function Re(e,t,n,r){let i=r&&r.add||g,o=r&&r.rm||_,s=r&&r.listeners||`eventListeners`,c=r&&r.rmAll||`removeAllListeners`,l=se(i),u=`.`+i+`:`,d=function(e,t,n){if(e.isRemoved)return;let r=e.callback;typeof r==`object`&&r.handleEvent&&(e.callback=e=>r.handleEvent(e),e.originalDelegate=r);let i;try{e.invoke(e,t,[n])}catch(e){i=e}let a=e.options;if(a&&typeof a==`object`&&a.once){let r=e.originalDelegate?e.originalDelegate:e.callback;t[o].call(t,n.type,r,a)}return i};function f(n,r,i){if(r||=e.event,!r)return;let a=n||r.target||e,o=a[Me[r.type][i?ne:re]];if(o){let e=[];if(o.length===1){let t=d(o[0],a,r);t&&e.push(t)}else{let t=o.slice();for(let n=0;n{throw r})}}}let m=function(e){return f(this,e,!1)},h=function(e){return f(this,e,!0)};function ee(t,n){if(!t)return!1;let r=!0;n&&n.useG!==void 0&&(r=n.useG);let d=n&&n.vh,f=!0;n&&n.chkDup!==void 0&&(f=n.chkDup);let g=!1;n&&n.rt!==void 0&&(g=n.rt);let _=t;for(;_&&!Object.hasOwn(_,i);)_=p(_);if(!_&&t[i]&&(_=t),!_||_[l])return!1;let ee=n&&n.eventNameToString,te={},ae=_[l]=_[i],oe=_[se(o)]=_[o],ce=_[se(s)]=_[s],le=_[se(c)]=_[c],ue;n&&n.prepend&&(ue=_[se(n.prepend)]=_[n.prepend]);function de(e,t){return t?typeof e==`boolean`?{capture:e,passive:!0}:e?(typeof e==`object`&&e.passive!==!1&&(e.passive=!0),e):{passive:!0}:e}let fe=function(e){if(!te.isExisting)return ae.call(te.target,te.eventName,te.capture?h:m,te.options)},pe=function(e){if(!e.isRemoved){let t=Me[e.eventName],n;t&&(n=t[e.capture?ne:re]);let r=n&&e.target[n];if(r){for(let t=0;t_e.zone.cancelTask(_e);t.call(_,`abort`,e,{once:!0}),_e.removeAbortListener=()=>_.removeEventListener(`abort`,e)}if(te.target=null,he&&(he.taskData=null),ae&&(te.options.once=!0),typeof _e.options!=`boolean`&&(_e.options=g),_e.target=l,_e.capture=ie,_e.eventName=u,m&&(_e.originalDelegate=p),c?le.unshift(_e):le.push(_e),s)return l}};return _[i]=we(ae,u,ve,ye,g),ue&&(_.prependListener=we(ue,`.prependListener:`,he,ye,g,!0)),_[o]=function(){let t=this||e,r=arguments[0];n&&n.transferEventName&&(r=n.transferEventName(r));let i=arguments[2],a=i?typeof i==`boolean`||i.capture:!1,o=arguments[1];if(!o)return oe.apply(this,arguments);if(d&&!d(oe,o,t,arguments))return;let s=Me[r],c;s&&(c=s[a?ne:re]);let l=c&&t[c];if(l)for(let e=0;efunction(t,n){t[Fe]=!0,e&&e.apply(t,n)})}function Be(e,t){t.patchMethod(e,`queueMicrotask`,e=>function(e,t){Zone.current.scheduleMicroTask(`queueMicrotask`,t[0])})}var Ve=se(`zoneTask`);function He(e,t,n,r){let i=null,a=null;t+=r,n+=r;let o={};function s(t){let n=t.data;n.args[0]=function(){return t.invoke.apply(this,arguments)};let r=i.apply(e,n.args);return Ae(r)?n.handleId=r:(n.handle=r,n.isRefreshable=ke(r?.refresh)),t}function c(t){let{handle:n,handleId:r}=t.data;return a.call(e,n??r)}i=Ee(e,t,n=>function(i,a){if(ke(a[0])){let e={isRefreshable:!1,isPeriodic:r===`Interval`,delay:r===`Timeout`||r===`Interval`?a[1]||0:void 0,args:a},n=a[0];a[0]=function(){try{return n.apply(this,arguments)}finally{let{handle:t,handleId:n,isPeriodic:r,isRefreshable:i}=e;!r&&!i&&(n?delete o[n]:t&&(t[Ve]=null))}};let i=oe(t,a[0],e,s,c);if(!i)return i;let{handleId:l,handle:u,isRefreshable:d,isPeriodic:f}=i.data;if(l)o[l]=i;else if(u&&(u[Ve]=i,d&&!f)){let e=u.refresh;u.refresh=function(){let{zone:t,state:n}=i;return n===`notScheduled`?(i._state=`scheduled`,t._updateTaskCount(i,1)):n===`running`&&(i._state=`scheduling`),e.call(this)}}return u??l??i}return n.apply(e,a)}),a=Ee(e,n,t=>function(n,r){let i=r[0],a;Ae(i)?(a=o[i],delete o[i]):(a=i?.[Ve],a?i[Ve]=null:a=i),a?.type?a.cancelFn&&a.zone.cancelTask(a):t.apply(e,r)})}function Ue(e,t){let{isBrowser:n,isMix:r}=t.getGlobalObjects();(n||r)&&e.customElements&&`customElements`in e&&t.patchCallbacks(t,e.customElements,`customElements`,`define`,[`connectedCallback`,`disconnectedCallback`,`adoptedCallback`,`attributeChangedCallback`,`formAssociatedCallback`,`formDisabledCallback`,`formResetCallback`,`formStateRestoreCallback`])}function We(e,t){if(Zone[t.symbol(`patchEventTarget`)])return;let{eventNames:n,zoneSymbolEventNames:r,TRUE_STR:i,FALSE_STR:a,ZONE_SYMBOL_PREFIX:o}=t.getGlobalObjects();for(let e=0;et.target===e);if(r.length===0)return t;let i=r[0].ignoreProperties;return t.filter(e=>i.indexOf(e)===-1)}function qe(e,t,n,r){e&&Ce(e,Ke(e,t,n),r)}function Je(e){return Object.getOwnPropertyNames(e).filter(e=>e.startsWith(`on`)&&e.length>2).map(e=>e.substring(2))}function tee(e,t){if(ge&&!ve||Zone[e.symbol(`patchEvents`)])return;let n=t.__Zone_ignore_on_properties,r=[];if(_e){let e=window;r=r.concat([`Document`,`SVGElement`,`Element`,`HTMLElement`,`HTMLBodyElement`,`HTMLMediaElement`,`HTMLFrameSetElement`,`HTMLFrameElement`,`HTMLIFrameElement`,`HTMLMarqueeElement`,`Worker`]),qe(e,Je(e),n,p(e))}r=r.concat([`XMLHttpRequest`,`XMLHttpRequestEventTarget`,`IDBIndex`,`IDBRequest`,`IDBOpenDBRequest`,`IDBDatabase`,`IDBTransaction`,`IDBCursor`,`WebSocket`]);for(let e=0;e{let t=`clear`;He(e,`set`,t,`Timeout`),He(e,`set`,t,`Interval`),He(e,`set`,t,`Immediate`)}),e.__load_patch(`requestAnimationFrame`,e=>{He(e,`request`,`cancel`,`AnimationFrame`),He(e,`mozRequest`,`mozCancel`,`AnimationFrame`),He(e,`webkitRequest`,`webkitCancel`,`AnimationFrame`)}),e.__load_patch(`blocking`,(e,t)=>{let n=[`alert`,`prompt`,`confirm`];for(let r=0;rfunction(r,a){return t.current.run(n,e,a,i)})}}),e.__load_patch(`EventTarget`,(e,t,n)=>{Ge(e,n),We(e,n);let r=e.XMLHttpRequestEventTarget;r&&r.prototype&&n.patchEventTarget(e,n,[r.prototype])}),e.__load_patch(`MutationObserver`,(e,t,n)=>{Te(`MutationObserver`),Te(`WebKitMutationObserver`)}),e.__load_patch(`IntersectionObserver`,(e,t,n)=>{Te(`IntersectionObserver`)}),e.__load_patch(`FileReader`,(e,t,n)=>{Te(`FileReader`)}),e.__load_patch(`on_property`,(e,t,n)=>{tee(n,e)}),e.__load_patch(`customElements`,(e,t,n)=>{Ue(e,n)}),e.__load_patch(`XHR`,(e,t)=>{c(e);let n=se(`xhrTask`),r=se(`xhrSync`),i=se(`xhrListener`),a=se(`xhrScheduled`),o=se(`xhrURL`),s=se(`xhrErrorBeforeScheduled`);function c(e){let c=e.XMLHttpRequest;if(!c)return;let l=c.prototype;function u(e){return e[n]}let d=l[ee],f=l[te];if(!d){let t=e.XMLHttpRequestEventTarget;if(t){let e=t.prototype;d=e[ee],f=e[te]}}let p=`readystatechange`,m=`scheduled`;function h(e){let r=e.data,o=r.target;o[a]=!1,o[s]=!1;let c=o[i];d||(d=o[ee],f=o[te]),c&&f.call(o,p,c);let l=o[i]=()=>{if(o.readyState===o.DONE){if(!r.aborted&&o[a]&&e.state===m){let n=o[t.__symbol__(`loadfalse`)];if(o.status!==0&&n&&n.length>0){let i=e.invoke;e.invoke=function(){let n=o[t.__symbol__(`loadfalse`)];for(let t=0;tfunction(e,t){return e[r]=t[2]==0,e[o]=t[1],ne.apply(e,t)}),re=se(`fetchTaskAborting`),ie=se(`fetchTaskScheduling`),ae=Ee(l,`send`,()=>function(e,n){if(t.current[ie]===!0||e[r])return ae.apply(e,n);{let t={target:e,url:e[o],isPeriodic:!1,args:n,aborted:!1},r=oe(`XMLHttpRequest.send`,g,t,h,_);e&&e[s]===!0&&!t.aborted&&r.state===m&&r.invoke()}}),ce=Ee(l,`abort`,()=>function(e,n){let r=u(e);if(r&&typeof r.type==`string`){if(r.cancelFn==null||r.data&&r.data.aborted)return;r.zone.cancelTask(r)}else if(t.current[re]===!0)return ce.apply(e,n)})}}),e.__load_patch(`geolocation`,e=>{e.navigator&&e.navigator.geolocation&&pe(e.navigator.geolocation,[`getCurrentPosition`,`watchPosition`])}),e.__load_patch(`PromiseRejectionEvent`,(e,t)=>{function n(t){return function(n){ze(e,t).forEach(r=>{let i=e.PromiseRejectionEvent;if(i){let e=new i(t,{promise:n.promise,reason:n.rejection});r.invoke(e)}})}}e.PromiseRejectionEvent&&(t[se(`unhandledPromiseRejectionHandler`)]=n(`unhandledrejection`),t[se(`rejectionHandledHandler`)]=n(`rejectionhandled`))}),e.__load_patch(`queueMicrotask`,(e,t,n)=>{Be(e,n)})}function Ye(e){e.__load_patch(`ZoneAwarePromise`,(e,t,n)=>{let r=Object.getOwnPropertyDescriptor,i=Object.defineProperty;function a(e){return e&&e.toString===Object.prototype.toString?(e.constructor&&e.constructor.name||``)+`: `+JSON.stringify(e):e?e.toString():Object.prototype.toString.call(e)}let o=n.symbol,s=[],c=e[o(`DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION`)]!==!1,l=o(`Promise`),u=o(`then`);n.onUnhandledError=e=>{if(n.showUncaughtError()){let t=e&&e.rejection;t&&e.zone&&e.task?console.error(`Unhandled Promise rejection:`,t instanceof Error?t.message:t,`; Zone:`,e.zone.name,`; Task:`,e.task&&e.task.source,`; Value:`,t,t instanceof Error?t.stack:void 0):console.error(e)}},n.microtaskDrainDone=()=>{for(;s.length;){let e=s.shift();try{e.zone.runGuarded(()=>{throw e.throwOriginal?e.rejection:e})}catch(e){f(e)}}};let d=o(`unhandledPromiseRejectionHandler`);function f(e){n.onUnhandledError(e);try{let n=t[d];typeof n==`function`&&n.call(this,e)}catch{}}function p(e){return e&&typeof e.then==`function`}function m(e){return e}function h(e){return fe.reject(e)}let g=o(`state`),_=o(`value`),ee=o(`finally`),te=o(`parentPromiseValue`),ne=o(`parentPromiseState`);function re(e,t){return n=>{try{oe(e,t,n)}catch(t){oe(e,!1,t)}}}let ie=function(){let e=!1;return function(t){return function(){e||(e=!0,t.apply(null,arguments))}}},ae=o(`currentTaskTrace`);function oe(e,r,o){let l=ie();if(e===o)throw TypeError(`Promise resolved with itself`);if(e[g]===null){let u=null;try{(typeof o==`object`||typeof o==`function`)&&(u=o&&o.then)}catch(t){return l(()=>{oe(e,!1,t)})(),e}if(r!==!1&&o instanceof fe&&Object.hasOwn(o,g)&&Object.hasOwn(o,_)&&o[g]!==null)ce(o),oe(e,o[g],o[_]);else if(r!==!1&&typeof u==`function`)try{u.call(o,l(re(e,r)),l(re(e,!1)))}catch(t){l(()=>{oe(e,!1,t)})()}else{e[g]=r;let l=e[_];if(e[_]=o,e[ee]===ee&&r===!0&&(e[g]=e[ne],e[_]=e[te]),r===!1&&o instanceof Error){let e=t.currentTask&&t.currentTask.data&&t.currentTask.data.__creationTrace__;e&&i(o,ae,{configurable:!0,enumerable:!1,writable:!0,value:e})}for(let t=0;t{try{let r=e[_],i=!!n&&ee===n[ee];i&&(n[te]=r,n[ne]=a),oe(n,!0,t.run(o,void 0,i&&o!==h&&o!==m?[]:[r]))}catch(e){oe(n,!1,e)}},n)}let ue=function(){},de=e.AggregateError;class fe{static toString(){return`function ZoneAwarePromise() { [native code] }`}static resolve(e){return e instanceof fe?e:oe(new this(null),!0,e)}static reject(e){return oe(new this(null),!1,e)}static withResolvers(){let e={};return e.promise=new fe((t,n)=>{e.resolve=t,e.reject=n}),e}static any(e){if(!e||typeof e[Symbol.iterator]!=`function`)return Promise.reject(new de([],`All promises were rejected`));let t=[],n=0;try{for(let r of e)n++,t.push(fe.resolve(r))}catch{return Promise.reject(new de([],`All promises were rejected`))}if(n===0)return Promise.reject(new de([],`All promises were rejected`));let r=!1,i=[];return new fe((e,a)=>{for(let o=0;o{r||(r=!0,e(t))},e=>{i.push(e),n--,n===0&&(r=!0,a(new de(i,`All promises were rejected`)))})})}static race(e){let t,n,r=new this((e,r)=>{t=e,n=r});function i(e){t(e)}function a(e){n(e)}for(let t of e)p(t)||(t=this.resolve(t)),t.then(i,a);return r}static all(e){return fe.allWithCallback(e)}static allSettled(e){return(this&&this.prototype instanceof fe?this:fe).allWithCallback(e,{thenCallback:e=>({status:`fulfilled`,value:e}),errorCallback:e=>({status:`rejected`,reason:e})})}static allWithCallback(e,t){let n,r,i=new this((e,t)=>{n=e,r=t}),a=2,o=0,s=[];for(let i of e){p(i)||(i=this.resolve(i));let e=o;try{i.then(r=>{s[e]=t?t.thenCallback(r):r,a--,a===0&&n(s)},i=>{t?(s[e]=t.errorCallback(i),a--,a===0&&n(s)):r(i)})}catch(e){r(e)}a++,o++}return a-=2,a===0&&n(s),i}constructor(e){let t=this;if(!(t instanceof fe))throw Error(`Must be an instanceof Promise.`);t[g]=null,t[_]=[];try{let n=ie();e&&e(n(re(t,!0)),n(re(t,!1)))}catch(e){oe(t,!1,e)}}get[Symbol.toStringTag](){return`Promise`}get[Symbol.species](){return fe}then(e,n){let r=this.constructor?.[Symbol.species];(!r||typeof r!=`function`)&&(r=this.constructor||fe);let i=new r(ue),a=t.current;return this[g]==null?this[_].push(a,i,e,n):le(this,a,i,e,n),i}catch(e){return this.then(null,e)}finally(e){let n=this.constructor?.[Symbol.species];(!n||typeof n!=`function`)&&(n=fe);let r=new n(ue);r[ee]=ee;let i=t.current;return this[g]==null?this[_].push(i,r,e,e):le(this,i,r,e,e),r}}fe.resolve=fe.resolve,fe.reject=fe.reject,fe.race=fe.race,fe.all=fe.all;let pe=e[l]=e.Promise;e.Promise=fe;let me=o(`thenPatched`);function he(e){let t=e.prototype,n=r(t,`then`);if(n&&(n.writable===!1||!n.configurable))return;let i=t.then;t[u]=i,e.prototype.then=function(e,t){return new fe((e,t)=>{i.call(this,e,t)}).then(e,t)},e[me]=!0}n.patchThen=he;function ge(e){return function(t,n){let r=e.apply(t,n);if(r instanceof fe)return r;let i=r.constructor;return i[me]||he(i),r}}if(pe){he(pe);let t=pe.try;t&&typeof t==`function`&&(fe.try=t),Ee(e,`fetch`,e=>ge(e))}return Promise[t.__symbol__(`uncaughtPromiseErrors`)]=s,fe})}function Xe(e){e.__load_patch(`toString`,e=>{let t=Function.prototype.toString,n=se(`OriginalDelegate`),r=se(`Promise`),i=se(`Error`),a=function(){if(typeof this==`function`){let a=this[n];if(a)return typeof a==`function`?t.call(a):Object.prototype.toString.call(a);if(this===Promise){let n=e[r];if(n)return t.call(n)}if(this===Error){let n=e[i];if(n)return t.call(n)}}return t.call(this)};a[n]=t,Function.prototype.toString=a;let o=Object.prototype.toString;Object.prototype.toString=function(){return typeof Promise==`function`&&this instanceof Promise?`[object Promise]`:o.call(this)}})}function Ze(e,t,n,r,i){let a=Zone.__symbol__(r);if(t[a])return;let o=t[a]=t[r];t[r]=function(a,s,c){return s&&s.prototype&&i.forEach(function(t){let i=`${n}.${r}::`+t,a=s.prototype;try{if(Object.hasOwn(a,t)){let n=e.ObjectGetOwnPropertyDescriptor(a,t);n&&n.value?(n.value=e.wrapWithCurrentZone(n.value,i),e._redefineProperty(s.prototype,t,n)):a[t]&&(a[t]=e.wrapWithCurrentZone(a[t],i))}else a[t]&&(a[t]=e.wrapWithCurrentZone(a[t],i))}catch{}}),o.call(t,a,s,c)},e.attachOriginToPatched(t[r],o)}function Qe(e){e.__load_patch(`util`,(e,t,n)=>{let r=Je(e);n.patchOnProperties=Ce,n.patchMethod=Ee,n.bindArguments=fe,n.patchMacroTask=De;let i=t.__symbol__(`BLACK_LISTED_EVENTS`),a=t.__symbol__(`UNPATCHED_EVENTS`);e[a]&&(e[i]=e[a]),e[i]&&(t[i]=t[a]=e[i]),n.patchEventPrototype=eee,n.patchEventTarget=Re,n.ObjectDefineProperty=f,n.ObjectGetOwnPropertyDescriptor=d,n.ObjectCreate=m,n.ArraySlice=h,n.patchClass=Te,n.wrapWithCurrentZone=ae,n.filterProperties=Ke,n.attachOriginToPatched=Oe,n._redefineProperty=Object.defineProperty,n.patchCallbacks=Ze,n.getGlobalObjects=()=>({globalSources:Ne,zoneSymbolEventNames:Me,eventNames:r,isBrowser:_e,isMix:ve,isNode:ge,TRUE_STR:ne,FALSE_STR:re,ZONE_SYMBOL_PREFIX:ie,ADD_EVENT_LISTENER_STR:g,REMOVE_EVENT_LISTENER_STR:_})})}function $e(e){Ye(e),Xe(e),Qe(e)}var et=u();$e(et),nee(et);var tt=(function(e){return e[e.NONE=0]=`NONE`,e[e.HTML=1]=`HTML`,e[e.STYLE=2]=`STYLE`,e[e.SCRIPT=3]=`SCRIPT`,e[e.URL=4]=`URL`,e[e.RESOURCE_URL=5]=`RESOURCE_URL`,e[e.ATTRIBUTE_NO_BINDING=6]=`ATTRIBUTE_NO_BINDING`,e})(tt||{}),nt=(function(e){return e[e.None=0]=`None`,e[e.Const=1]=`Const`,e})(nt||{}),rt=class{modifiers;constructor(e=nt.None){this.modifiers=e}hasModifier(e){return(this.modifiers&e)!==0}},it=(function(e){return e[e.Dynamic=0]=`Dynamic`,e[e.Bool=1]=`Bool`,e[e.String=2]=`String`,e[e.Int=3]=`Int`,e[e.Number=4]=`Number`,e[e.Function=5]=`Function`,e[e.Inferred=6]=`Inferred`,e[e.None=7]=`None`,e})(it||{}),at=class extends rt{name;constructor(e,t){super(t),this.name=e}visitType(e,t){return e.visitBuiltinType(this,t)}};it.Dynamic;var ot=new at(it.Inferred);it.Bool,it.Int,it.Number,it.String,it.Function,it.None;var v=(function(e){return e[e.Equals=0]=`Equals`,e[e.NotEquals=1]=`NotEquals`,e[e.Assign=2]=`Assign`,e[e.Identical=3]=`Identical`,e[e.NotIdentical=4]=`NotIdentical`,e[e.Minus=5]=`Minus`,e[e.Plus=6]=`Plus`,e[e.Divide=7]=`Divide`,e[e.Multiply=8]=`Multiply`,e[e.Modulo=9]=`Modulo`,e[e.And=10]=`And`,e[e.Or=11]=`Or`,e[e.BitwiseOr=12]=`BitwiseOr`,e[e.BitwiseAnd=13]=`BitwiseAnd`,e[e.Lower=14]=`Lower`,e[e.LowerEquals=15]=`LowerEquals`,e[e.Bigger=16]=`Bigger`,e[e.BiggerEquals=17]=`BiggerEquals`,e[e.NullishCoalesce=18]=`NullishCoalesce`,e[e.Exponentiation=19]=`Exponentiation`,e[e.In=20]=`In`,e[e.InstanceOf=21]=`InstanceOf`,e[e.AdditionAssignment=22]=`AdditionAssignment`,e[e.SubtractionAssignment=23]=`SubtractionAssignment`,e[e.MultiplicationAssignment=24]=`MultiplicationAssignment`,e[e.DivisionAssignment=25]=`DivisionAssignment`,e[e.RemainderAssignment=26]=`RemainderAssignment`,e[e.ExponentiationAssignment=27]=`ExponentiationAssignment`,e[e.AndAssignment=28]=`AndAssignment`,e[e.OrAssignment=29]=`OrAssignment`,e[e.NullishCoalesceAssignment=30]=`NullishCoalesceAssignment`,e})(v||{});function st(e,t){return e==null||t==null?e==t:e.isEquivalent(t)}function ct(e,t,n){let r=e.length;if(r!==t.length)return!1;for(let i=0;ie.isEquivalent(t))}var ut=class{leadingComments;type;sourceSpan;constructor(e,t,n){this.leadingComments=n,this.type=e||null,this.sourceSpan=t||null}prop(e,t){return new iee(this,e,null,t)}key(e,t,n){return new aee(this,e,t,n)}callFn(e,t,n,r){return new pt(this,e,null,t,n,r)}instantiate(e,t,n,r){return new mt(this,e,t,n)}conditional(e,t=null,n,r){return new ree(this,e,t,null,n)}equals(e,t){return new vt(v.Equals,this,e,null,t)}notEquals(e,t){return new vt(v.NotEquals,this,e,null,t)}identical(e,t){return new vt(v.Identical,this,e,null,t)}notIdentical(e,t){return new vt(v.NotIdentical,this,e,null,t)}minus(e,t){return new vt(v.Minus,this,e,null,t)}plus(e,t){return new vt(v.Plus,this,e,null,t)}divide(e,t){return new vt(v.Divide,this,e,null,t)}multiply(e,t){return new vt(v.Multiply,this,e,null,t)}modulo(e,t){return new vt(v.Modulo,this,e,null,t)}power(e,t){return new vt(v.Exponentiation,this,e,null,t)}and(e,t){return new vt(v.And,this,e,null,t)}bitwiseOr(e,t){return new vt(v.BitwiseOr,this,e,null,t)}bitwiseAnd(e,t){return new vt(v.BitwiseAnd,this,e,null,t)}or(e,t){return new vt(v.Or,this,e,null,t)}lower(e,t){return new vt(v.Lower,this,e,null,t)}lowerEquals(e,t){return new vt(v.LowerEquals,this,e,null,t)}bigger(e,t){return new vt(v.Bigger,this,e,null,t)}biggerEquals(e,t){return new vt(v.BiggerEquals,this,e,null,t)}isBlank(e){return this.equals(uee,e)}nullishCoalesce(e,t){return new vt(v.NullishCoalesce,this,e,null,t)}toStmt(e){return new fee(this,null,e)}},dt=class e extends ut{name;constructor(e,t,n,r){super(t,n,r),this.name=e}isEquivalent(t){return t instanceof e&&this.name===t.name}isConstant(){return!1}visitExpression(e,t){return e.visitReadVarExpr(this,t)}clone(){return new e(this.name,this.type,this.sourceSpan)}set(e){return new vt(v.Assign,this,e,null,this.sourceSpan)}},ft=class e extends ut{expr;constructor(e,t,n,r){super(t,n,r),this.expr=e}visitExpression(e,t){return e.visitTypeofExpr(this,t)}isEquivalent(t){return t instanceof e&&t.expr.isEquivalent(this.expr)}isConstant(){return this.expr.isConstant()}clone(){return new e(this.expr.clone())}},pt=class e extends ut{fn;args;pure;isOptional;constructor(e,t,n,r,i=!1,a,o=!1){super(n,r,a),this.fn=e,this.args=t,this.pure=i,this.isOptional=o}get receiver(){return this.fn}isEquivalent(t){return t instanceof e&&this.fn.isEquivalent(t.fn)&<(this.args,t.args)&&this.pure===t.pure}isConstant(){return!1}visitExpression(e,t){return e.visitInvokeFunctionExpr(this,t)}clone(){return new e(this.fn.clone(),this.args.map(e=>e.clone()),this.type,this.sourceSpan,this.pure,[],this.isOptional)}},mt=class e extends ut{classExpr;args;constructor(e,t,n,r,i){super(n,r,i),this.classExpr=e,this.args=t}isEquivalent(t){return t instanceof e&&this.classExpr.isEquivalent(t.classExpr)&<(this.args,t.args)}isConstant(){return!1}visitExpression(e,t){return e.visitInstantiateExpr(this,t)}clone(){return new e(this.classExpr.clone(),this.args.map(e=>e.clone()),this.type,this.sourceSpan)}},ht=class e extends ut{body;flags;constructor(e,t,n,r){super(null,n,r),this.body=e,this.flags=t}isEquivalent(t){return t instanceof e&&this.body===t.body&&this.flags===t.flags}isConstant(){return!0}visitExpression(e,t){return e.visitRegularExpressionLiteral(this,t)}clone(){return new e(this.body,this.flags,this.sourceSpan)}},gt=class e extends ut{value;constructor(e,t,n,r){super(t,n,r),this.value=e}isEquivalent(t){return t instanceof e&&this.value===t.value}isConstant(){return!0}visitExpression(e,t){return e.visitLiteralExpr(this,t)}clone(){return new e(this.value,this.type,this.sourceSpan)}},_t=class e extends ut{value;typeParams;constructor(e,t,n=null,r,i){super(t,r,i),this.value=e,this.typeParams=n}isEquivalent(t){return t instanceof e&&this.value.name===t.value.name&&this.value.moduleName===t.value.moduleName}isConstant(){return!1}visitExpression(e,t){return e.visitExternalExpr(this,t)}clone(){return new e(this.value,this.type,this.typeParams,this.sourceSpan)}},ree=class e extends ut{condition;falseCase;trueCase;constructor(e,t,n=null,r,i,a){super(r||t.type,i,a),this.condition=e,this.falseCase=n,this.trueCase=t}isEquivalent(t){return t instanceof e&&this.condition.isEquivalent(t.condition)&&this.trueCase.isEquivalent(t.trueCase)&&st(this.falseCase,t.falseCase)}isConstant(){return!1}visitExpression(e,t){return e.visitConditionalExpr(this,t)}clone(){return new e(this.condition.clone(),this.trueCase.clone(),this.falseCase?.clone(),this.type,this.sourceSpan)}},vt=class e extends ut{operator;rhs;lhs;constructor(e,t,n,r,i,a){super(r||t.type,i,a),this.operator=e,this.rhs=n,this.lhs=t}isEquivalent(t){return t instanceof e&&this.operator===t.operator&&this.lhs.isEquivalent(t.lhs)&&this.rhs.isEquivalent(t.rhs)}isConstant(){return!1}visitExpression(e,t){return e.visitBinaryOperatorExpr(this,t)}clone(){return new e(this.operator,this.lhs.clone(),this.rhs.clone(),this.type,this.sourceSpan)}isAssignment(){let e=this.operator;return e===v.Assign||e===v.AdditionAssignment||e===v.SubtractionAssignment||e===v.MultiplicationAssignment||e===v.DivisionAssignment||e===v.RemainderAssignment||e===v.ExponentiationAssignment||e===v.AndAssignment||e===v.OrAssignment||e===v.NullishCoalesceAssignment}},iee=class e extends ut{receiver;name;isOptional;constructor(e,t,n,r,i,a=!1){super(n,r,i),this.receiver=e,this.name=t,this.isOptional=a}get index(){return this.name}isEquivalent(t){return t instanceof e&&this.receiver.isEquivalent(t.receiver)&&this.name===t.name&&this.isOptional===t.isOptional}isConstant(){return!1}visitExpression(e,t){return e.visitReadPropExpr(this,t)}set(e){return new vt(v.Assign,this.receiver.prop(this.name),e,null,this.sourceSpan)}clone(){return new e(this.receiver.clone(),this.name,this.type,this.sourceSpan,[],this.isOptional)}},aee=class e extends ut{receiver;index;isOptional;constructor(e,t,n,r,i,a=!1){super(n,r,i),this.receiver=e,this.index=t,this.isOptional=a}isEquivalent(t){return t instanceof e&&this.receiver.isEquivalent(t.receiver)&&this.index.isEquivalent(t.index)&&this.isOptional===t.isOptional}isConstant(){return!1}visitExpression(e,t){return e.visitReadKeyExpr(this,t)}set(e){return new vt(v.Assign,this.receiver.key(this.index),e,null,this.sourceSpan)}clone(){return new e(this.receiver.clone(),this.index.clone(),this.type,this.sourceSpan,[],this.isOptional)}},oee=class e extends ut{entries;constructor(e,t,n,r){super(t,n,r),this.entries=e}isConstant(){return this.entries.every(e=>e.isConstant())}isEquivalent(t){return t instanceof e&<(this.entries,t.entries)}visitExpression(e,t){return e.visitLiteralArrayExpr(this,t)}clone(){return new e(this.entries.map(e=>e.clone()),this.type,this.sourceSpan)}},see=class e{expression;constructor(e){this.expression=e}isEquivalent(t){return t instanceof e&&this.expression.isEquivalent(t.expression)}clone(){return new e(this.expression.clone())}isConstant(){return this.expression.isConstant()}},cee=class e extends ut{entries;valueType=null;constructor(e,t,n,r){super(t,n,r),this.entries=e,t&&(this.valueType=t.valueType)}isEquivalent(t){return t instanceof e&<(this.entries,t.entries)}isConstant(){return this.entries.every(e=>e.isConstant())}visitExpression(e,t){return e.visitLiteralMapExpr(this,t)}clone(){let t=this.entries.map(e=>e.clone());return new e(t,this.type,this.sourceSpan)}},lee=class e extends ut{expression;constructor(e,t,n){super(null,t,n),this.expression=e}isEquivalent(t){return t instanceof e&&this.expression.isEquivalent(t.expression)}isConstant(){return this.expression.isConstant()}visitExpression(e,t){return e.visitSpreadElementExpr(this,t)}clone(){return new e(this.expression.clone(),this.sourceSpan)}},uee=new gt(null,ot,null),yt=(function(e){return e[e.None=0]=`None`,e[e.Final=1]=`Final`,e[e.Private=2]=`Private`,e[e.Exported=4]=`Exported`,e[e.Static=8]=`Static`,e})(yt||{}),dee=class{modifiers;sourceSpan;leadingComments;constructor(e=yt.None,t=null,n){this.modifiers=e,this.sourceSpan=t,this.leadingComments=n}hasModifier(e){return(this.modifiers&e)!==0}addLeadingComment(e){this.leadingComments=this.leadingComments??[],this.leadingComments.push(e)}},fee=class e extends dee{expr;constructor(e,t,n){super(yt.None,t,n),this.expr=e}isEquivalent(t){return t instanceof e&&this.expr.isEquivalent(t.expr)}visitStatement(e,t){return e.visitExpressionStmt(this,t)}};(class e{static INSTANCE=new e;keyOf(e){if(e instanceof gt&&typeof e.value==`string`)return`"${e.value}"`;if(e instanceof gt)return String(e.value);if(e instanceof ht)return`/${e.body}/${e.flags??``}`;if(e instanceof oee){let t=[];for(let n of e.entries)t.push(this.keyOf(n));return`[${t.join(`,`)}]`}if(e instanceof cee){let t=[];for(let n of e.entries)if(n instanceof see)t.push(`...`+this.keyOf(n.expression));else{let e=n.key;n.quoted&&(e=`"${e}"`),t.push(e+`:`+this.keyOf(n.value))}return`{${t.join(`,`)}}`}if(e instanceof _t)return`import("${e.value.moduleName}", ${e.value.name})`;if(e instanceof dt)return`read(${e.name})`;if(e instanceof ft)return`typeof(${this.keyOf(e.expr)})`;if(e instanceof lee)return`...${this.keyOf(e.expression)}`;throw Error(`${this.constructor.name} does not handle expressions of type ${e.constructor.name}`)}});var y=`@angular/core`,b=(()=>{class e{static core={name:null,moduleName:y};static namespaceHTML={name:`ɵɵnamespaceHTML`,moduleName:y};static namespaceMathML={name:`ɵɵnamespaceMathML`,moduleName:y};static namespaceSVG={name:`ɵɵnamespaceSVG`,moduleName:y};static element={name:`ɵɵelement`,moduleName:y};static elementStart={name:`ɵɵelementStart`,moduleName:y};static elementEnd={name:`ɵɵelementEnd`,moduleName:y};static foreignComponent={name:`ɵɵforeignComponent`,moduleName:y};static foreignContent={name:`ɵɵforeignContent`,moduleName:y};static foreignContentFn={name:`ɵɵforeignContentFn`,moduleName:y};static domElement={name:`ɵɵdomElement`,moduleName:y};static domElementStart={name:`ɵɵdomElementStart`,moduleName:y};static domElementEnd={name:`ɵɵdomElementEnd`,moduleName:y};static domElementContainer={name:`ɵɵdomElementContainer`,moduleName:y};static domElementContainerStart={name:`ɵɵdomElementContainerStart`,moduleName:y};static domElementContainerEnd={name:`ɵɵdomElementContainerEnd`,moduleName:y};static domTemplate={name:`ɵɵdomTemplate`,moduleName:y};static domListener={name:`ɵɵdomListener`,moduleName:y};static advance={name:`ɵɵadvance`,moduleName:y};static syntheticHostProperty={name:`ɵɵsyntheticHostProperty`,moduleName:y};static syntheticHostListener={name:`ɵɵsyntheticHostListener`,moduleName:y};static attribute={name:`ɵɵattribute`,moduleName:y};static classProp={name:`ɵɵclassProp`,moduleName:y};static elementContainerStart={name:`ɵɵelementContainerStart`,moduleName:y};static elementContainerEnd={name:`ɵɵelementContainerEnd`,moduleName:y};static elementContainer={name:`ɵɵelementContainer`,moduleName:y};static styleMap={name:`ɵɵstyleMap`,moduleName:y};static classMap={name:`ɵɵclassMap`,moduleName:y};static styleProp={name:`ɵɵstyleProp`,moduleName:y};static interpolate={name:`ɵɵinterpolate`,moduleName:y};static interpolate1={name:`ɵɵinterpolate1`,moduleName:y};static interpolate2={name:`ɵɵinterpolate2`,moduleName:y};static interpolate3={name:`ɵɵinterpolate3`,moduleName:y};static interpolate4={name:`ɵɵinterpolate4`,moduleName:y};static interpolate5={name:`ɵɵinterpolate5`,moduleName:y};static interpolate6={name:`ɵɵinterpolate6`,moduleName:y};static interpolate7={name:`ɵɵinterpolate7`,moduleName:y};static interpolate8={name:`ɵɵinterpolate8`,moduleName:y};static interpolateV={name:`ɵɵinterpolateV`,moduleName:y};static nextContext={name:`ɵɵnextContext`,moduleName:y};static resetView={name:`ɵɵresetView`,moduleName:y};static templateCreate={name:`ɵɵtemplate`,moduleName:y};static defer={name:`ɵɵdefer`,moduleName:y};static deferWhen={name:`ɵɵdeferWhen`,moduleName:y};static deferOnIdle={name:`ɵɵdeferOnIdle`,moduleName:y};static deferOnImmediate={name:`ɵɵdeferOnImmediate`,moduleName:y};static deferOnTimer={name:`ɵɵdeferOnTimer`,moduleName:y};static deferOnHover={name:`ɵɵdeferOnHover`,moduleName:y};static deferOnInteraction={name:`ɵɵdeferOnInteraction`,moduleName:y};static deferOnViewport={name:`ɵɵdeferOnViewport`,moduleName:y};static deferPrefetchWhen={name:`ɵɵdeferPrefetchWhen`,moduleName:y};static deferPrefetchOnIdle={name:`ɵɵdeferPrefetchOnIdle`,moduleName:y};static deferPrefetchOnImmediate={name:`ɵɵdeferPrefetchOnImmediate`,moduleName:y};static deferPrefetchOnTimer={name:`ɵɵdeferPrefetchOnTimer`,moduleName:y};static deferPrefetchOnHover={name:`ɵɵdeferPrefetchOnHover`,moduleName:y};static deferPrefetchOnInteraction={name:`ɵɵdeferPrefetchOnInteraction`,moduleName:y};static deferPrefetchOnViewport={name:`ɵɵdeferPrefetchOnViewport`,moduleName:y};static deferHydrateWhen={name:`ɵɵdeferHydrateWhen`,moduleName:y};static deferHydrateNever={name:`ɵɵdeferHydrateNever`,moduleName:y};static deferHydrateOnIdle={name:`ɵɵdeferHydrateOnIdle`,moduleName:y};static deferHydrateOnImmediate={name:`ɵɵdeferHydrateOnImmediate`,moduleName:y};static deferHydrateOnTimer={name:`ɵɵdeferHydrateOnTimer`,moduleName:y};static deferHydrateOnHover={name:`ɵɵdeferHydrateOnHover`,moduleName:y};static deferHydrateOnInteraction={name:`ɵɵdeferHydrateOnInteraction`,moduleName:y};static deferHydrateOnViewport={name:`ɵɵdeferHydrateOnViewport`,moduleName:y};static deferEnableTimerScheduling={name:`ɵɵdeferEnableTimerScheduling`,moduleName:y};static enableIncrementalHydrationRuntime={name:`ɵɵenableIncrementalHydrationRuntime`,moduleName:y};static conditionalCreate={name:`ɵɵconditionalCreate`,moduleName:y};static conditionalBranchCreate={name:`ɵɵconditionalBranchCreate`,moduleName:y};static conditional={name:`ɵɵconditional`,moduleName:y};static repeater={name:`ɵɵrepeater`,moduleName:y};static repeaterCreate={name:`ɵɵrepeaterCreate`,moduleName:y};static repeaterTrackByIndex={name:`ɵɵrepeaterTrackByIndex`,moduleName:y};static repeaterTrackByIdentity={name:`ɵɵrepeaterTrackByIdentity`,moduleName:y};static componentInstance={name:`ɵɵcomponentInstance`,moduleName:y};static text={name:`ɵɵtext`,moduleName:y};static enableBindings={name:`ɵɵenableBindings`,moduleName:y};static disableBindings={name:`ɵɵdisableBindings`,moduleName:y};static getCurrentView={name:`ɵɵgetCurrentView`,moduleName:y};static textInterpolate={name:`ɵɵtextInterpolate`,moduleName:y};static textInterpolate1={name:`ɵɵtextInterpolate1`,moduleName:y};static textInterpolate2={name:`ɵɵtextInterpolate2`,moduleName:y};static textInterpolate3={name:`ɵɵtextInterpolate3`,moduleName:y};static textInterpolate4={name:`ɵɵtextInterpolate4`,moduleName:y};static textInterpolate5={name:`ɵɵtextInterpolate5`,moduleName:y};static textInterpolate6={name:`ɵɵtextInterpolate6`,moduleName:y};static textInterpolate7={name:`ɵɵtextInterpolate7`,moduleName:y};static textInterpolate8={name:`ɵɵtextInterpolate8`,moduleName:y};static textInterpolateV={name:`ɵɵtextInterpolateV`,moduleName:y};static restoreView={name:`ɵɵrestoreView`,moduleName:y};static pureFunction0={name:`ɵɵpureFunction0`,moduleName:y};static pureFunction1={name:`ɵɵpureFunction1`,moduleName:y};static pureFunction2={name:`ɵɵpureFunction2`,moduleName:y};static pureFunction3={name:`ɵɵpureFunction3`,moduleName:y};static pureFunction4={name:`ɵɵpureFunction4`,moduleName:y};static pureFunction5={name:`ɵɵpureFunction5`,moduleName:y};static pureFunction6={name:`ɵɵpureFunction6`,moduleName:y};static pureFunction7={name:`ɵɵpureFunction7`,moduleName:y};static pureFunction8={name:`ɵɵpureFunction8`,moduleName:y};static pureFunctionV={name:`ɵɵpureFunctionV`,moduleName:y};static pipeBind1={name:`ɵɵpipeBind1`,moduleName:y};static pipeBind2={name:`ɵɵpipeBind2`,moduleName:y};static pipeBind3={name:`ɵɵpipeBind3`,moduleName:y};static pipeBind4={name:`ɵɵpipeBind4`,moduleName:y};static pipeBindV={name:`ɵɵpipeBindV`,moduleName:y};static domProperty={name:`ɵɵdomProperty`,moduleName:y};static ariaProperty={name:`ɵɵariaProperty`,moduleName:y};static property={name:`ɵɵproperty`,moduleName:y};static control={name:`ɵɵcontrol`,moduleName:y};static controlCreate={name:`ɵɵcontrolCreate`,moduleName:y};static animationEnterListener={name:`ɵɵanimateEnterListener`,moduleName:y};static animationLeaveListener={name:`ɵɵanimateLeaveListener`,moduleName:y};static animationEnter={name:`ɵɵanimateEnter`,moduleName:y};static animationLeave={name:`ɵɵanimateLeave`,moduleName:y};static i18n={name:`ɵɵi18n`,moduleName:y};static i18nAttributes={name:`ɵɵi18nAttributes`,moduleName:y};static i18nExp={name:`ɵɵi18nExp`,moduleName:y};static i18nStart={name:`ɵɵi18nStart`,moduleName:y};static i18nEnd={name:`ɵɵi18nEnd`,moduleName:y};static i18nApply={name:`ɵɵi18nApply`,moduleName:y};static i18nPostprocess={name:`ɵɵi18nPostprocess`,moduleName:y};static pipe={name:`ɵɵpipe`,moduleName:y};static projection={name:`ɵɵprojection`,moduleName:y};static projectionDef={name:`ɵɵprojectionDef`,moduleName:y};static reference={name:`ɵɵreference`,moduleName:y};static inject={name:`ɵɵinject`,moduleName:y};static injectAttribute={name:`ɵɵinjectAttribute`,moduleName:y};static directiveInject={name:`ɵɵdirectiveInject`,moduleName:y};static invalidFactory={name:`ɵɵinvalidFactory`,moduleName:y};static invalidFactoryDep={name:`ɵɵinvalidFactoryDep`,moduleName:y};static templateRefExtractor={name:`ɵɵtemplateRefExtractor`,moduleName:y};static forwardRef={name:`forwardRef`,moduleName:y};static resolveForwardRef={name:`resolveForwardRef`,moduleName:y};static replaceMetadata={name:`ɵɵreplaceMetadata`,moduleName:y};static getReplaceMetadataURL={name:`ɵɵgetReplaceMetadataURL`,moduleName:y};static ɵɵdefineInjectable={name:`ɵɵdefineInjectable`,moduleName:y};static declareInjectable={name:`ɵɵngDeclareInjectable`,moduleName:y};static InjectableDeclaration={name:`ɵɵInjectableDeclaration`,moduleName:y};static defineService={name:`ɵɵdefineService`,moduleName:y};static declareService={name:`ɵɵngDeclareService`,moduleName:y};static resolveWindow={name:`ɵɵresolveWindow`,moduleName:y};static resolveDocument={name:`ɵɵresolveDocument`,moduleName:y};static resolveBody={name:`ɵɵresolveBody`,moduleName:y};static getComponentDepsFactory={name:`ɵɵgetComponentDepsFactory`,moduleName:y};static defineComponent={name:`ɵɵdefineComponent`,moduleName:y};static declareComponent={name:`ɵɵngDeclareComponent`,moduleName:y};static setComponentScope={name:`ɵɵsetComponentScope`,moduleName:y};static ChangeDetectionStrategy={name:`ChangeDetectionStrategy`,moduleName:y};static ViewEncapsulation={name:`ViewEncapsulation`,moduleName:y};static ComponentDeclaration={name:`ɵɵComponentDeclaration`,moduleName:y};static FactoryDeclaration={name:`ɵɵFactoryDeclaration`,moduleName:y};static declareFactory={name:`ɵɵngDeclareFactory`,moduleName:y};static FactoryTarget={name:`ɵɵFactoryTarget`,moduleName:y};static defineDirective={name:`ɵɵdefineDirective`,moduleName:y};static declareDirective={name:`ɵɵngDeclareDirective`,moduleName:y};static DirectiveDeclaration={name:`ɵɵDirectiveDeclaration`,moduleName:y};static InjectorDef={name:`ɵɵInjectorDef`,moduleName:y};static InjectorDeclaration={name:`ɵɵInjectorDeclaration`,moduleName:y};static defineInjector={name:`ɵɵdefineInjector`,moduleName:y};static declareInjector={name:`ɵɵngDeclareInjector`,moduleName:y};static NgModuleDeclaration={name:`ɵɵNgModuleDeclaration`,moduleName:y};static ModuleWithProviders={name:`ModuleWithProviders`,moduleName:y};static defineNgModule={name:`ɵɵdefineNgModule`,moduleName:y};static declareNgModule={name:`ɵɵngDeclareNgModule`,moduleName:y};static setNgModuleScope={name:`ɵɵsetNgModuleScope`,moduleName:y};static registerNgModuleType={name:`ɵɵregisterNgModuleType`,moduleName:y};static PipeDeclaration={name:`ɵɵPipeDeclaration`,moduleName:y};static definePipe={name:`ɵɵdefinePipe`,moduleName:y};static declarePipe={name:`ɵɵngDeclarePipe`,moduleName:y};static declareClassMetadata={name:`ɵɵngDeclareClassMetadata`,moduleName:y};static declareClassMetadataAsync={name:`ɵɵngDeclareClassMetadataAsync`,moduleName:y};static setClassMetadata={name:`ɵsetClassMetadata`,moduleName:y};static setClassMetadataAsync={name:`ɵsetClassMetadataAsync`,moduleName:y};static setClassDebugInfo={name:`ɵsetClassDebugInfo`,moduleName:y};static queryRefresh={name:`ɵɵqueryRefresh`,moduleName:y};static viewQuery={name:`ɵɵviewQuery`,moduleName:y};static loadQuery={name:`ɵɵloadQuery`,moduleName:y};static contentQuery={name:`ɵɵcontentQuery`,moduleName:y};static viewQuerySignal={name:`ɵɵviewQuerySignal`,moduleName:y};static contentQuerySignal={name:`ɵɵcontentQuerySignal`,moduleName:y};static queryAdvance={name:`ɵɵqueryAdvance`,moduleName:y};static twoWayProperty={name:`ɵɵtwoWayProperty`,moduleName:y};static twoWayBindingSet={name:`ɵɵtwoWayBindingSet`,moduleName:y};static twoWayListener={name:`ɵɵtwoWayListener`,moduleName:y};static declareLet={name:`ɵɵdeclareLet`,moduleName:y};static storeLet={name:`ɵɵstoreLet`,moduleName:y};static readContextLet={name:`ɵɵreadContextLet`,moduleName:y};static arrowFunction={name:`ɵɵarrowFunction`,moduleName:y};static attachSourceLocations={name:`ɵɵattachSourceLocations`,moduleName:y};static NgOnChangesFeature={name:`ɵɵNgOnChangesFeature`,moduleName:y};static ControlFeature={name:`ɵɵControlFeature`,moduleName:y};static InheritDefinitionFeature={name:`ɵɵInheritDefinitionFeature`,moduleName:y};static ProvidersFeature={name:`ɵɵProvidersFeature`,moduleName:y};static HostDirectivesFeature={name:`ɵɵHostDirectivesFeature`,moduleName:y};static ExternalStylesFeature={name:`ɵɵExternalStylesFeature`,moduleName:y};static listener={name:`ɵɵlistener`,moduleName:y};static getInheritedFactory={name:`ɵɵgetInheritedFactory`,moduleName:y};static sanitizeHtml={name:`ɵɵsanitizeHtml`,moduleName:y};static sanitizeStyle={name:`ɵɵsanitizeStyle`,moduleName:y};static validateAttribute={name:`ɵɵvalidateAttribute`,moduleName:y};static sanitizeResourceUrl={name:`ɵɵsanitizeResourceUrl`,moduleName:y};static sanitizeScript={name:`ɵɵsanitizeScript`,moduleName:y};static sanitizeUrl={name:`ɵɵsanitizeUrl`,moduleName:y};static sanitizeUrlOrResourceUrl={name:`ɵɵsanitizeUrlOrResourceUrl`,moduleName:y};static trustConstantHtml={name:`ɵɵtrustConstantHtml`,moduleName:y};static trustConstantResourceUrl={name:`ɵɵtrustConstantResourceUrl`,moduleName:y};static inputDecorator={name:`Input`,moduleName:y};static outputDecorator={name:`Output`,moduleName:y};static viewChildDecorator={name:`ViewChild`,moduleName:y};static viewChildrenDecorator={name:`ViewChildren`,moduleName:y};static contentChildDecorator={name:`ContentChild`,moduleName:y};static contentChildrenDecorator={name:`ContentChildren`,moduleName:y};static InputSignalBrandWriteType={name:`ɵINPUT_SIGNAL_BRAND_WRITE_TYPE`,moduleName:y};static UnwrapDirectiveSignalInputs={name:`ɵUnwrapDirectiveSignalInputs`,moduleName:y};static unwrapWritableSignal={name:`ɵunwrapWritableSignal`,moduleName:y};static assertType={name:`ɵassertType`,moduleName:y}}return e})();v.And,v.Bigger,v.BiggerEquals,v.BitwiseOr,v.BitwiseAnd,v.Divide,v.Assign,v.Equals,v.Identical,v.Lower,v.LowerEquals,v.Minus,v.Modulo,v.Exponentiation,v.Multiply,v.NotEquals,v.NotIdentical,v.NullishCoalesce,v.Or,v.Plus,v.In,v.InstanceOf,v.AdditionAssignment,v.SubtractionAssignment,v.MultiplicationAssignment,v.DivisionAssignment,v.RemainderAssignment,v.ExponentiationAssignment,v.AndAssignment,v.OrAssignment,v.NullishCoalesceAssignment;var bt=class{span;sourceSpan;constructor(e,t){this.span=e,this.sourceSpan=t}toString(){return`AST`}},xt=class extends bt{receiver;args;argumentSpan;constructor(e,t,n,r,i){super(e,t),this.receiver=n,this.args=r,this.argumentSpan=i}visit(e,t=null){return e.visitCall(this,t)}},St=(function(e){return e[e.Property=0]=`Property`,e[e.Attribute=1]=`Attribute`,e[e.Class=2]=`Class`,e[e.Style=3]=`Style`,e[e.LegacyAnimation=4]=`LegacyAnimation`,e[e.TwoWay=5]=`TwoWay`,e[e.Animation=6]=`Animation`,e})(St||{}),Ct=`(:(where|is)\\()?`,wt=`-shadowcsshost`,Tt=`-shadowcsscontext`,Et=`[^)(]*`,Dt=String.raw`(?:\(${Et}\)|${Et})+?`,Ot=String.raw`(?:\(${Dt}\)|${Et})+?`,kt=String.raw`(?:\((${Ot})\))`;String.raw`(:nth-[-\w]+)`+kt,wt+kt+``,`${Ct}`,Tt+kt+``;var At=(function(e){return e[e.ListEnd=0]=`ListEnd`,e[e.Statement=1]=`Statement`,e[e.Variable=2]=`Variable`,e[e.ElementStart=3]=`ElementStart`,e[e.Element=4]=`Element`,e[e.ForeignComponent=5]=`ForeignComponent`,e[e.Template=6]=`Template`,e[e.ElementEnd=7]=`ElementEnd`,e[e.ContainerStart=8]=`ContainerStart`,e[e.Container=9]=`Container`,e[e.ContainerEnd=10]=`ContainerEnd`,e[e.DisableBindings=11]=`DisableBindings`,e[e.ConditionalCreate=12]=`ConditionalCreate`,e[e.ConditionalBranchCreate=13]=`ConditionalBranchCreate`,e[e.Conditional=14]=`Conditional`,e[e.EnableBindings=15]=`EnableBindings`,e[e.Text=16]=`Text`,e[e.Listener=17]=`Listener`,e[e.InterpolateText=18]=`InterpolateText`,e[e.Binding=19]=`Binding`,e[e.Property=20]=`Property`,e[e.StyleProp=21]=`StyleProp`,e[e.ClassProp=22]=`ClassProp`,e[e.StyleMap=23]=`StyleMap`,e[e.ClassMap=24]=`ClassMap`,e[e.Advance=25]=`Advance`,e[e.Pipe=26]=`Pipe`,e[e.Attribute=27]=`Attribute`,e[e.ExtractedAttribute=28]=`ExtractedAttribute`,e[e.Defer=29]=`Defer`,e[e.DeferOn=30]=`DeferOn`,e[e.DeferWhen=31]=`DeferWhen`,e[e.I18nMessage=32]=`I18nMessage`,e[e.DomProperty=33]=`DomProperty`,e[e.Namespace=34]=`Namespace`,e[e.ProjectionDef=35]=`ProjectionDef`,e[e.EnableIncrementalHydrationRuntime=36]=`EnableIncrementalHydrationRuntime`,e[e.Projection=37]=`Projection`,e[e.Content=38]=`Content`,e[e.RepeaterCreate=39]=`RepeaterCreate`,e[e.Repeater=40]=`Repeater`,e[e.TwoWayProperty=41]=`TwoWayProperty`,e[e.TwoWayListener=42]=`TwoWayListener`,e[e.DeclareLet=43]=`DeclareLet`,e[e.StoreLet=44]=`StoreLet`,e[e.I18nStart=45]=`I18nStart`,e[e.I18n=46]=`I18n`,e[e.I18nEnd=47]=`I18nEnd`,e[e.I18nExpression=48]=`I18nExpression`,e[e.I18nApply=49]=`I18nApply`,e[e.IcuStart=50]=`IcuStart`,e[e.IcuEnd=51]=`IcuEnd`,e[e.IcuPlaceholder=52]=`IcuPlaceholder`,e[e.I18nContext=53]=`I18nContext`,e[e.I18nAttributes=54]=`I18nAttributes`,e[e.SourceLocation=55]=`SourceLocation`,e[e.Animation=56]=`Animation`,e[e.AnimationString=57]=`AnimationString`,e[e.AnimationBinding=58]=`AnimationBinding`,e[e.AnimationListener=59]=`AnimationListener`,e[e.Control=60]=`Control`,e[e.ControlCreate=61]=`ControlCreate`,e})(At||{}),jt=(function(e){return e[e.LexicalRead=0]=`LexicalRead`,e[e.Context=1]=`Context`,e[e.TrackContext=2]=`TrackContext`,e[e.ReadVariable=3]=`ReadVariable`,e[e.NextContext=4]=`NextContext`,e[e.Reference=5]=`Reference`,e[e.StoreLet=6]=`StoreLet`,e[e.ContextLetReference=7]=`ContextLetReference`,e[e.GetCurrentView=8]=`GetCurrentView`,e[e.RestoreView=9]=`RestoreView`,e[e.ResetView=10]=`ResetView`,e[e.PureFunctionExpr=11]=`PureFunctionExpr`,e[e.PureFunctionParameterExpr=12]=`PureFunctionParameterExpr`,e[e.PipeBinding=13]=`PipeBinding`,e[e.PipeBindingVariadic=14]=`PipeBindingVariadic`,e[e.SafePropertyRead=15]=`SafePropertyRead`,e[e.SafeKeyedRead=16]=`SafeKeyedRead`,e[e.SafeNavigationMigration=17]=`SafeNavigationMigration`,e[e.SafeTernaryExpr=18]=`SafeTernaryExpr`,e[e.EmptyExpr=19]=`EmptyExpr`,e[e.AssignTemporaryExpr=20]=`AssignTemporaryExpr`,e[e.ReadTemporaryExpr=21]=`ReadTemporaryExpr`,e[e.SlotLiteralExpr=22]=`SlotLiteralExpr`,e[e.ConditionalCase=23]=`ConditionalCase`,e[e.ConstCollected=24]=`ConstCollected`,e[e.TwoWayBindingSet=25]=`TwoWayBindingSet`,e[e.ForeignContent=26]=`ForeignContent`,e[e.ArrowFunction=27]=`ArrowFunction`,e})(jt||{}),Mt=(function(e){return e[e.None=0]=`None`,e[e.AlwaysInline=1]=`AlwaysInline`,e})(Mt||{}),Nt=(function(e){return e[e.Context=0]=`Context`,e[e.Identifier=1]=`Identifier`,e[e.SavedView=2]=`SavedView`,e[e.Alias=3]=`Alias`,e})(Nt||{}),Pt=(function(e){return e[e.Attribute=0]=`Attribute`,e[e.ClassName=1]=`ClassName`,e[e.StyleProperty=2]=`StyleProperty`,e[e.Property=3]=`Property`,e[e.Template=4]=`Template`,e[e.I18n=5]=`I18n`,e[e.LegacyAnimation=6]=`LegacyAnimation`,e[e.TwoWayProperty=7]=`TwoWayProperty`,e[e.Animation=8]=`Animation`,e})(Pt||{}),Ft=(function(e){return e[e.Creation=0]=`Creation`,e[e.Postproccessing=1]=`Postproccessing`,e})(Ft||{}),It=(function(e){return e[e.I18nText=0]=`I18nText`,e[e.I18nAttribute=1]=`I18nAttribute`,e})(It||{}),Lt=(function(e){return e[e.None=0]=`None`,e[e.ElementTag=1]=`ElementTag`,e[e.TemplateTag=2]=`TemplateTag`,e[e.OpenTag=4]=`OpenTag`,e[e.CloseTag=8]=`CloseTag`,e[e.ExpressionIndex=16]=`ExpressionIndex`,e})(Lt||{}),Rt=(function(e){return e[e.HTML=0]=`HTML`,e[e.SVG=1]=`SVG`,e[e.Math=2]=`Math`,e})(Rt||{}),zt=(function(e){return e[e.Idle=0]=`Idle`,e[e.Immediate=1]=`Immediate`,e[e.Timer=2]=`Timer`,e[e.Hover=3]=`Hover`,e[e.Interaction=4]=`Interaction`,e[e.Viewport=5]=`Viewport`,e[e.Never=6]=`Never`,e})(zt||{}),Bt=(function(e){return e[e.RootI18n=0]=`RootI18n`,e[e.Icu=1]=`Icu`,e[e.Attr=2]=`Attr`,e})(Bt||{}),Vt=(function(e){return e[e.NgTemplate=0]=`NgTemplate`,e[e.Structural=1]=`Structural`,e[e.Block=2]=`Block`,e})(Vt||{}),Ht=(function(e){return e[e.None=0]=`None`,e[e.InChildOperation=1]=`InChildOperation`,e[e.InArrowFunctionOperation=2]=`InArrowFunctionOperation`,e[e.InSafeNavigationMigration=4]=`InSafeNavigationMigration`,e})(Ht||{});At.Element,At.ElementStart,At.Container,At.ContainerStart,At.Template,At.RepeaterCreate,At.ConditionalCreate,At.ConditionalBranchCreate;var x=(function(e){return e[e.Tmpl=0]=`Tmpl`,e[e.Host=1]=`Host`,e[e.Both=2]=`Both`,e})(x||{}),Ut=(function(e){return e[e.Full=0]=`Full`,e[e.DomOnly=1]=`DomOnly`,e})(Ut||{});b.ariaProperty,b.ariaProperty,b.attribute,b.attribute,b.classProp,b.classProp,b.element,b.element,b.elementContainer,b.elementContainer,b.elementContainerEnd,b.elementContainerEnd,b.elementContainerStart,b.elementContainerStart,b.elementEnd,b.elementEnd,b.elementStart,b.elementStart,b.domProperty,b.domProperty,b.i18nExp,b.i18nExp,b.listener,b.listener,b.listener,b.listener,b.property,b.property,b.styleProp,b.styleProp,b.syntheticHostListener,b.syntheticHostListener,b.syntheticHostProperty,b.syntheticHostProperty,b.templateCreate,b.templateCreate,b.twoWayProperty,b.twoWayProperty,b.twoWayListener,b.twoWayListener,b.declareLet,b.declareLet,b.conditionalCreate,b.conditionalBranchCreate,b.conditionalBranchCreate,b.conditionalBranchCreate,b.domElement,b.domElement,b.domElementStart,b.domElementStart,b.domElementEnd,b.domElementEnd,b.domElementContainer,b.domElementContainer,b.domElementContainerStart,b.domElementContainerStart,b.domElementContainerEnd,b.domElementContainerEnd,b.domListener,b.domListener,b.domTemplate,b.domTemplate,b.animationEnter,b.animationEnter,b.animationLeave,b.animationLeave,b.animationEnterListener,b.animationEnterListener,b.animationLeaveListener,b.animationLeaveListener,v.And,v.Bigger,v.BiggerEquals,v.BitwiseOr,v.BitwiseAnd,v.Divide,v.Assign,v.Equals,v.Identical,v.Lower,v.LowerEquals,v.Minus,v.Modulo,v.Exponentiation,v.Multiply,v.NotEquals,v.NotIdentical,v.NullishCoalesce,v.Or,v.Plus,v.In,v.InstanceOf,v.AdditionAssignment,v.SubtractionAssignment,v.MultiplicationAssignment,v.DivisionAssignment,v.RemainderAssignment,v.ExponentiationAssignment,v.AndAssignment,v.OrAssignment,v.NullishCoalesceAssignment,At.Property,At.Property,At.Property,At.Attribute,At.Attribute,At.Property,At.TwoWayProperty,At.Container,At.ContainerStart,At.ContainerEnd,At.Element,At.ElementStart,At.ElementEnd,At.Template,At.ElementEnd,At.ElementStart,At.Element,At.ContainerEnd,At.ContainerStart,At.Container,At.I18nEnd,At.I18nStart,At.I18n,At.Pipe;var Wt=` \f -\r \v ᠎ - \u2028\u2029   `;`${Wt}`,`${Wt}`;var Gt=(function(e){return e[e.Character=0]=`Character`,e[e.Identifier=1]=`Identifier`,e[e.PrivateIdentifier=2]=`PrivateIdentifier`,e[e.Keyword=3]=`Keyword`,e[e.String=4]=`String`,e[e.Operator=5]=`Operator`,e[e.Number=6]=`Number`,e[e.RegExpBody=7]=`RegExpBody`,e[e.RegExpFlags=8]=`RegExpFlags`,e[e.Error=9]=`Error`,e})(Gt||{}),Kt=(function(e){return e[e.Plain=0]=`Plain`,e[e.TemplateLiteralPart=1]=`TemplateLiteralPart`,e[e.TemplateLiteralEnd=2]=`TemplateLiteralEnd`,e})(Kt||{});Gt.Character,At.StyleMap,At.ClassMap,At.StyleProp,At.ClassProp,At.Attribute,At.Property,At.Attribute,At.Control,At.DomProperty,At.DomProperty,At.Attribute,At.StyleMap,At.ClassMap,At.StyleProp,At.ClassProp,At.Listener,At.TwoWayListener,At.AnimationListener,At.StyleMap,At.ClassMap,At.StyleProp,At.ClassProp,At.Property,At.TwoWayProperty,At.DomProperty,At.Attribute,At.Animation,At.Control,zt.Idle,b.deferOnIdle,b.deferPrefetchOnIdle,b.deferHydrateOnIdle,zt.Immediate,b.deferOnImmediate,b.deferPrefetchOnImmediate,b.deferHydrateOnImmediate,zt.Timer,b.deferOnTimer,b.deferPrefetchOnTimer,b.deferHydrateOnTimer,zt.Hover,b.deferOnHover,b.deferPrefetchOnHover,b.deferHydrateOnHover,zt.Interaction,b.deferOnInteraction,b.deferPrefetchOnInteraction,b.deferHydrateOnInteraction,zt.Viewport,b.deferOnViewport,b.deferPrefetchOnViewport,b.deferHydrateOnViewport,zt.Never,b.deferHydrateNever,b.deferHydrateNever,b.deferHydrateNever,b.pipeBind1,b.pipeBind2,b.pipeBind3,b.pipeBind4,b.textInterpolate,b.textInterpolate1,b.textInterpolate2,b.textInterpolate3,b.textInterpolate4,b.textInterpolate5,b.textInterpolate6,b.textInterpolate7,b.textInterpolate8,b.textInterpolateV,b.interpolate,b.interpolate1,b.interpolate2,b.interpolate3,b.interpolate4,b.interpolate5,b.interpolate6,b.interpolate7,b.interpolate8,b.interpolateV,b.pureFunction0,b.pureFunction1,b.pureFunction2,b.pureFunction3,b.pureFunction4,b.pureFunction5,b.pureFunction6,b.pureFunction7,b.pureFunction8,b.pureFunctionV,b.resolveWindow,b.resolveDocument,b.resolveBody,tt.HTML,b.sanitizeHtml,tt.RESOURCE_URL,b.sanitizeResourceUrl,tt.SCRIPT,b.sanitizeScript,tt.STYLE,b.sanitizeStyle,tt.URL,b.sanitizeUrl,tt.ATTRIBUTE_NO_BINDING,b.validateAttribute,tt.HTML,b.trustConstantHtml,tt.RESOURCE_URL,b.trustConstantResourceUrl;var qt=(function(e){return e[e.None=0]=`None`,e[e.ViewContextRead=1]=`ViewContextRead`,e[e.ViewContextWrite=2]=`ViewContextWrite`,e[e.SideEffectful=4]=`SideEffectful`,e})(qt||{});x.Tmpl,x.Tmpl,x.Both,x.Host,x.Tmpl,x.Tmpl,x.Tmpl,x.Both,x.Both,x.Both,x.Tmpl,x.Both,x.Both,x.Tmpl,x.Both,x.Tmpl,x.Both,x.Both,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Both,x.Both,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Both,x.Both,x.Both,x.Tmpl,x.Tmpl,x.Both,x.Tmpl,x.Tmpl,x.Tmpl,x.Both,x.Both,x.Tmpl,x.Both,x.Both,x.Both,x.Both,x.Both,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Both,x.Tmpl,x.Both,x.Tmpl,x.Both,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Tmpl,x.Both,x.Both,x.Both,St.Property,Pt.Property,St.TwoWay,Pt.TwoWayProperty,St.Attribute,Pt.Attribute,St.Class,Pt.ClassName,St.Style,Pt.StyleProperty,St.LegacyAnimation,Pt.LegacyAnimation,St.Animation,Pt.Animation;var Jt=`%COMP%`;`${Jt}`,`${Jt}`,class e{static SINGLETON=new e;static veWillInferAnyFor(t){let n=e.SINGLETON;return t instanceof xt?t.visit(n):t.receiver.visit(n)}visitUnary(e){return e.expr.visit(this)}visitBinary(e){return e.left.visit(this)||e.right.visit(this)}visitChain(){return!1}visitConditional(e){return e.condition.visit(this)||e.trueExp.visit(this)||e.falseExp.visit(this)}visitCall(){return!0}visitSafeCall(){return!1}visitImplicitReceiver(){return!1}visitThisReceiver(){return!1}visitInterpolation(e){return e.expressions.some(e=>e.visit(this))}visitKeyedRead(){return!1}visitLiteralArray(){return!0}visitLiteralMap(){return!0}visitLiteralPrimitive(){return!1}visitPipe(){return!0}visitPrefixNot(e){return e.expression.visit(this)}visitTypeofExpression(e){return e.expression.visit(this)}visitVoidExpression(e){return e.expression.visit(this)}visitNonNullAssert(e){return e.expression.visit(this)}visitPropertyRead(){return!1}visitSafePropertyRead(){return!1}visitSafeKeyedRead(){return!1}visitTemplateLiteral(){return!1}visitTemplateLiteralElement(){return!1}visitTaggedTemplateLiteral(){return!1}visitParenthesizedExpression(e){return e.expression.visit(this)}visitRegularExpressionLiteral(){return!1}visitSpreadElement(e){return e.expression.visit(this)}visitArrowFunction(e,t){return!1}};var Yt=null,Xt=!1,Zt=1,Qt=null,$t=Symbol(`SIGNAL`);function en(e){let t=Yt;return Yt=e,t}function tn(){return Yt}var nn={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 rn(e){if(Xt)throw Error(``);if(Yt===null)return;Yt.consumerOnSignalRead(e);let t=Yt.producersTail;if(t!==void 0&&t.producer===e)return;let n,r=Yt.recomputing;if(r&&(n=t===void 0?Yt.producers:t.nextProducer,n!==void 0&&n.producer===e)){Yt.producersTail=n,n.lastReadVersion=e.version,n.knownValidAtEpoch=Zt;return}let i=e.consumersTail;if(i!==void 0&&i.consumer===Yt&&(!r||i.knownValidAtEpoch===Zt))return;let a=yn(Yt),o={producer:e,consumer:Yt,nextProducer:n,prevConsumer:void 0,knownValidAtEpoch:Zt,lastReadVersion:e.version,nextConsumer:void 0};Yt.producersTail=o,t===void 0?Yt.producers=o:t.nextProducer=o,a&&_n(e,o)}function an(){Zt++}function on(e){if((!yn(e)||e.dirty)&&(e.dirty||e.lastCleanEpoch!==Zt)){if(!e.producerMustRecompute(e)&&!hn(e)){un(e);return}e.producerRecomputeValue(e),un(e)}}function sn(e){if(e.consumers===void 0)return;let t=Xt;Xt=!0;try{for(let t=e.consumers;t!==void 0;t=t.nextConsumer){let e=t.consumer;e.dirty||ln(e)}}finally{Xt=t}}function cn(){return Yt?.consumerAllowSignalWrites!==!1}function ln(e){e.dirty=!0,sn(e),e.consumerMarkedDirty?.(e)}function un(e){e.dirty=!1,e.lastCleanEpoch=Zt}function dn(e){return e&&fn(e),en(e)}function fn(e){if(e.producersTail?.knownValidAtEpoch===Zt){let t=e.producers;for(;t!==void 0;)t.knownValidAtEpoch=null,t=t.nextProducer}e.producersTail=void 0,e.recomputing=!0}function pn(e,t){en(t),e&&mn(e)}function mn(e){e.recomputing=!1;let t=e.producersTail,n=t===void 0?e.producers:t.nextProducer;if(n!==void 0){if(yn(e))do n=vn(n);while(n!==void 0);t===void 0?e.producers=void 0:t.nextProducer=void 0}}function hn(e){for(let t=e.producers;t!==void 0;t=t.nextProducer){let e=t.producer,n=t.lastReadVersion;if(n!==e.version||(on(e),n!==e.version))return!0}return!1}function gn(e){if(yn(e)){let t=e.producers;for(;t!==void 0;)t=vn(t)}e.producers=void 0,e.producersTail=void 0,e.consumers=void 0,e.consumersTail=void 0}function _n(e,t){let n=e.consumersTail,r=yn(e);if(n===void 0?(t.nextConsumer=void 0,e.consumers=t):(t.nextConsumer=n.nextConsumer,n.nextConsumer=t),t.prevConsumer=n,e.consumersTail=t,!r)for(let t=e.producers;t!==void 0;t=t.nextProducer)_n(t.producer,t)}function vn(e){let t=e.producer,n=e.nextProducer,r=e.nextConsumer,i=e.prevConsumer;if(e.nextConsumer=void 0,e.prevConsumer=void 0,r===void 0?t.consumersTail=i:r.prevConsumer=i,i!==void 0)i.nextConsumer=r;else if(t.consumers=r,!yn(t)){let e=t.producers;for(;e!==void 0;)e=vn(e)}return n}function yn(e){return e.consumerIsAlwaysLive||e.consumers!==void 0}function bn(e){Qt?.(e)}function xn(e,t){return Object.is(e,t)}function Sn(e,t){let n=Object.create(pee);n.computation=e,t!==void 0&&(n.equal=t);let r=()=>{if(on(n),rn(n),n.value===Tn)throw n.error;return n.value};return r[$t]=n,bn(n),r}var Cn=Symbol(`UNSET`),wn=Symbol(`COMPUTING`),Tn=Symbol(`ERRORED`),pee={...nn,value:Cn,dirty:!0,error:null,equal:xn,kind:`computed`,producerMustRecompute(e){return e.value===Cn||e.value===wn},producerRecomputeValue(e){if(e.value===wn)throw Error(``);let t=e.value;e.value=wn;let n=dn(e),r,i=!1;try{r=e.computation(),en(null),i=t!==Cn&&t!==Tn&&r!==Tn&&e.equal(t,r)}catch(t){r=Tn,e.error=t}finally{pn(e,n)}if(i){e.value=t;return}e.value=r,e.version++}};function mee(){throw Error()}var En=mee;function Dn(e){En(e)}function hee(e){En=e}var gee=null;function _ee(e,t){let n=Object.create(jn);n.value=e,t!==void 0&&(n.equal=t);let r=()=>On(n);return r[$t]=n,bn(n),[r,e=>kn(n,e),e=>An(n,e)]}function On(e){return rn(e),e.value}function kn(e,t){cn()||Dn(e),e.equal(e.value,t)||(e.value=t,Mn(e))}function An(e,t){cn()||Dn(e),kn(e,t(e.value))}var jn={...nn,equal:xn,value:void 0,kind:`signal`};function Mn(e){e.version++,an(),sn(e),gee?.(e)}var Nn={...nn,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,kind:`effect`};function Pn(e){if(e.dirty=!1,e.version>0&&!hn(e))return;e.version++;let t=dn(e);try{e.cleanup(),e.fn()}finally{pn(e,t)}}var Fn=void 0;function In(){return Fn}function Ln(e){let t=Fn;return Fn=e,t}var Rn=Symbol(`NotFound`);function zn(e){return e===Rn||e?.name===`ɵNotFound`}function Bn(e,t,n){let r=Object.create(Un);r.source=e,r.computation=t,n!=null&&(r.equal=n);let i=()=>{if(on(r),rn(r),r.value===Tn)throw r.error;return r.value};return i[$t]=r,bn(r),i}function Vn(e,t){on(e),kn(e,t),un(e)}function Hn(e,t){if(on(e),e.value===Tn)throw e.error;An(e,t),un(e)}var Un={...nn,value:Cn,dirty:!0,error:null,equal:xn,kind:`linkedSignal`,producerMustRecompute(e){return e.value===Cn||e.value===wn},producerRecomputeValue(e){if(e.value===wn)throw Error(``);let t=e.value;e.value=wn;let n=dn(e),r,i=!1;try{let n=e.source(),a=t!==Cn&&t!==Tn,o=a?{source:e.sourceValue,value:t}:void 0;r=e.computation(n,o),e.sourceValue=n,en(null),i=a&&r!==Tn&&e.equal(t,r)}catch(t){r=Tn,e.error=t}finally{pn(e,n)}if(i){e.value=t;return}e.value=r,e.version++}};function Wn(e){let t=en(null);try{return e()}finally{en(t)}}var Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)};function Kn(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);Gn(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}function qn(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}function Jn(e,t){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,o=Object.create((typeof Iterator==`function`?Iterator:Object).prototype);return o.next=s(0),o.throw=s(1),o.return=s(2),typeof Symbol==`function`&&(o[Symbol.iterator]=function(){return this}),o;function s(e){return function(t){return c([e,t])}}function c(s){if(r)throw TypeError(`Generator is already executing.`);for(;o&&(o=0,s[0]&&(n=0)),n;)try{if(r=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return n.label++,{value:s[1],done:!1};case 5:n.label++,i=s[1],s=[0];continue;case 7:s=n.ops.pop(),n.trys.pop();continue;default:if(a=n.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function Xn(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-->0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function Zn(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r1||c(e,t)})},t&&(i[e]=t(i[e])))}function c(e,t){try{l(r[e](t))}catch(e){f(a[0][3],e)}}function l(e){e.value instanceof Qn?Promise.resolve(e.value.v).then(u,d):f(a[0][2],e)}function u(e){c(`next`,e)}function d(e){c(`throw`,e)}function f(e,t){e(t),a.shift(),a.length&&c(a[0][0],a[0][1])}}function er(e){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof Yn==`function`?Yn(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise(function(r,a){n=e[t](n),i(r,a,n.done,n.value)})}}function i(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}}function tr(e){return typeof e==`function`}function nr(e){var t=e(function(e){Error.call(e),e.stack=Error().stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var rr=nr(function(e){return function(t){e(this),this.message=t?t.length+` errors occurred during unsubscription: +(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Object.defineProperty,t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,i=(t,n,r)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r,a=(e,a)=>{for(var o in a||={})n.call(a,o)&&i(e,o,a[o]);if(t)for(var o of t(a))r.call(a,o)&&i(e,o,a[o]);return e},o=(e,t,n)=>(i(e,typeof t==`symbol`?t:t+``,n),n),s=globalThis;function c(e){let t=s.__Zone_symbol_prefix;return(typeof t==`string`?t:`__zone_symbol__`)+e}function l(){let e=s.performance;function t(t){e&&e.mark&&e.mark(t)}function n(t,n){e&&e.measure&&e.measure(t,n)}t(`Zone`);let r=class e{constructor(e,t){o(this,`_parent`),o(this,`_name`),o(this,`_properties`),o(this,`_zoneDelegate`),this._parent=e,this._name=t?t.name||`unnamed`:``,this._properties=t&&t.properties||{},this._zoneDelegate=new l(this,this._parent&&this._parent._zoneDelegate,t)}static assertZonePatched(){if(s.Promise!==me.ZoneAwarePromise)throw Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let t=e.current;for(;t.parent;)t=t.parent;return t}static get current(){return ge.zone}static get currentTask(){return _e}static __load_patch(r,i,a=!1){if(Object.hasOwn(me,r)){let e=s[c(`forceDuplicateZoneCheck`)]===!0;if(!a&&e)throw Error(`Already loaded patch: `+r)}else if(!s[`__Zone_disable_`+r]){let a=`Zone:`+r;t(a),me[r]=i(s,e,he),n(a,a)}}get parent(){return this._parent}get name(){return this._name}get(e){let t=this.getZoneWith(e);if(t)return t._properties[e]}getZoneWith(e){let t=this;for(;t;){if(Object.hasOwn(t._properties,e))return t;t=t._parent}return null}fork(e){if(!e)throw Error(`ZoneSpec required!`);return this._zoneDelegate.fork(this,e)}wrap(e,t){if(typeof e!=`function`)throw Error(`Expecting function got: `+e);let n=this._zoneDelegate.intercept(this,e,t),r=this;return function(){return r.runGuarded(n,this,arguments,t)}}run(e,t,n,r){ge={parent:ge,zone:this};try{return this._zoneDelegate.invoke(this,e,t,n,r)}finally{ge=ge.parent}}runGuarded(e,t=null,n,r){ge={parent:ge,zone:this};try{try{return this._zoneDelegate.invoke(this,e,t,n,r)}catch(e){if(this._zoneDelegate.handleError(this,e))throw e}}finally{ge=ge.parent}}runTask(e,t,n){if(e.zone!=this)throw Error(`A task can only be run in the zone of creation! (Creation: `+(e.zone||ie).name+`; Execution: `+this.name+`)`);let r=e,{type:i,data:{isPeriodic:a=!1,isRefreshable:o=!1}={}}=e;if(e.state===ae&&(i===pe||i===fe))return;let s=e.state!=ce;s&&r._transitionTo(ce,se);let c=_e;_e=r,ge={parent:ge,zone:this};try{i==fe&&e.data&&!a&&!o&&(e.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,r,t,n)}catch(e){if(this._zoneDelegate.handleError(this,e))throw e}}finally{let t=e.state;if(t!==ae&&t!==ue){if(i==pe||a||o&&t===oe)s&&r._transitionTo(se,ce,oe);else{let e=r._zoneDelegates;this._updateTaskCount(r,-1),s&&r._transitionTo(ae,ce,ae),o&&(r._zoneDelegates=e)}}ge=ge.parent,_e=c}}scheduleTask(e){if(e.zone&&e.zone!==this){let t=this;for(;t;){if(t===e.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${e.zone.name}`);t=t.parent}}e._transitionTo(oe,ae);let t=[];e._zoneDelegates=t,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(t){throw e._transitionTo(ue,oe,ae),this._zoneDelegate.handleError(this,t),t}return e._zoneDelegates===t&&this._updateTaskCount(e,1),e.state==oe&&e._transitionTo(se,oe),e}scheduleMicroTask(e,t,n,r){return this.scheduleTask(new u(de,e,t,n,r,void 0))}scheduleMacroTask(e,t,n,r,i){return this.scheduleTask(new u(fe,e,t,n,r,i))}scheduleEventTask(e,t,n,r,i){return this.scheduleTask(new u(pe,e,t,n,r,i))}cancelTask(e){if(e.zone!=this)throw Error(`A task can only be cancelled in the zone of creation! (Creation: `+(e.zone||ie).name+`; Execution: `+this.name+`)`);if(e.state===se||e.state===ce){e._transitionTo(le,se,ce);try{this._zoneDelegate.cancelTask(this,e)}catch(t){throw e._transitionTo(ue,le),this._zoneDelegate.handleError(this,t),t}return this._updateTaskCount(e,-1),e._transitionTo(ae,le),e.runCount=-1,e}}_updateTaskCount(e,t){let n=e._zoneDelegates;t==-1&&(e._zoneDelegates=null);for(let r=0;re.hasTask(n,r),onScheduleTask:(e,t,n,r)=>e.scheduleTask(n,r),onInvokeTask:(e,t,n,r,i,a)=>e.invokeTask(n,r,i,a),onCancelTask:(e,t,n,r)=>e.cancelTask(n,r)};class l{constructor(e,t,n){o(this,`_zone`),o(this,`_taskCounts`,{microTask:0,macroTask:0,eventTask:0}),o(this,`_forkDlgt`),o(this,`_forkZS`),o(this,`_forkCurrZone`),o(this,`_interceptDlgt`),o(this,`_interceptZS`),o(this,`_interceptCurrZone`),o(this,`_invokeDlgt`),o(this,`_invokeZS`),o(this,`_invokeCurrZone`),o(this,`_handleErrorDlgt`),o(this,`_handleErrorZS`),o(this,`_handleErrorCurrZone`),o(this,`_scheduleTaskDlgt`),o(this,`_scheduleTaskZS`),o(this,`_scheduleTaskCurrZone`),o(this,`_invokeTaskDlgt`),o(this,`_invokeTaskZS`),o(this,`_invokeTaskCurrZone`),o(this,`_cancelTaskDlgt`),o(this,`_cancelTaskZS`),o(this,`_cancelTaskCurrZone`),o(this,`_hasTaskDlgt`),o(this,`_hasTaskDlgtOwner`),o(this,`_hasTaskZS`),o(this,`_hasTaskCurrZone`),this._zone=e,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._forkCurrZone=n&&(n.onFork?this._zone:t._forkCurrZone),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this._zone:t._interceptCurrZone),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this._zone:t._invokeCurrZone),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this._zone:t._handleErrorCurrZone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this._zone:t._scheduleTaskCurrZone),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this._zone:t._invokeTaskCurrZone),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this._zone:t._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let r=n&&n.onHasTask,i=t&&t._hasTaskZS;(r||i)&&(this._hasTaskZS=r?n:a,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,n.onScheduleTask||(this._scheduleTaskZS=a,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this._zone),n.onInvokeTask||(this._invokeTaskZS=a,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this._zone),n.onCancelTask||(this._cancelTaskZS=a,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this._zone))}get zone(){return this._zone}fork(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new i(e,t)}intercept(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,e,t,n):t}invoke(e,t,n,r,i){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,e,t,n,r,i):t.apply(n,r)}handleError(e,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,e,t)}scheduleTask(e,t){let n=t;if(this._scheduleTaskZS)this._hasTaskZS&&n._zoneDelegates.push(this._hasTaskDlgtOwner),n=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,e,t),n||=t;else if(t.scheduleFn)t.scheduleFn(t);else if(t.type==de)ne(t);else throw Error(`Task is missing scheduleFn.`);return n}invokeTask(e,t,n,r){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,e,t,n,r):t.callback.apply(n,r)}cancelTask(e,t){let n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,e,t);else{if(!t.cancelFn)throw Error(`Task is not cancelable`);n=t.cancelFn(t)}return n}hasTask(e,t){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,e,t)}catch(t){this.handleError(e,t)}}_updateTaskCount(e,t){let n=this._taskCounts,r=n[e],i=n[e]=r+t;if(i<0)throw Error(`More tasks executed then were scheduled.`);if(r==0||i==0){let t={microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e};this.hasTask(this._zone,t)}}}class u{constructor(e,t,n,r,i,a){if(o(this,`type`),o(this,`source`),o(this,`invoke`),o(this,`callback`),o(this,`data`),o(this,`scheduleFn`),o(this,`cancelFn`),o(this,`_zone`,null),o(this,`runCount`,0),o(this,`_zoneDelegates`,null),o(this,`_state`,`notScheduled`),this.type=e,this.source=t,this.data=r,this.scheduleFn=i,this.cancelFn=a,!n)throw Error(`callback is not defined`);this.callback=n;let c=this;this.invoke=e===pe&&r&&r.useG?u.invokeTask:function(){return u.invokeTask.call(s,c,this,arguments)}}static invokeTask(e,t,n){e||=this,ve++;try{return e.runCount++,e.zone.runTask(e,t,n)}finally{try{ve===1&&!s[m]&&re()}finally{ve--}}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(ae,oe)}_transitionTo(e,t,n){if(this._state===t||this._state===n)this._state=e,e==ae&&(this._zoneDelegates=null);else throw Error(`${this.type} '${this.source}': can not transition to '${e}', expecting state '${t}'${n?` or '`+n+`'`:``}, was '${this._state}'.`)}toString(){return this.data&&this.data.handleId!==void 0?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}let d=c(`setTimeout`),f=c(`Promise`),p=c(`then`),m=c(`enable_native_microtask_draining`),ee=[],h=!1,g;function te(e){!g&&s[f]&&(g=s[f].resolve(0)),g?(g[p]??g.then).call(g,e):s[d](e,0)}function ne(e){let t=s[m],n=t&&ee.length===0&&!h,r=!t&&ve===0&&ee.length===0;(n||r)&&te(re),e&&ee.push(e)}function re(){if(!h){h=!0;try{for(;ee.length;){let e=ee;ee=[];for(let t of e)try{t.zone.runTask(t,null,null)}catch(e){he.onUnhandledError(e)}}}finally{if(s[m])h=!1,he.microtaskDrainDone();else try{he.microtaskDrainDone()}finally{h=!1}}}}let ie={name:`NO ZONE`},ae=`notScheduled`,oe=`scheduling`,se=`scheduled`,ce=`running`,le=`canceling`,ue=`unknown`,de=`microTask`,fe=`macroTask`,pe=`eventTask`,me=Object.create(null),he={symbol:c,currentZoneFrame:()=>ge,onUnhandledError:ye,microtaskDrainDone:ye,scheduleMicroTask:ne,showUncaughtError:()=>!i[c(`ignoreConsoleErrorUncaughtError`)],patchEventTarget:()=>[],patchOnProperties:ye,patchMethod:()=>ye,bindArguments:()=>[],patchThen:()=>ye,patchMacroTask:()=>ye,patchEventPrototype:()=>ye,getGlobalObjects:()=>void 0,ObjectDefineProperty:()=>ye,ObjectGetOwnPropertyDescriptor:()=>void 0,ObjectCreate:()=>void 0,ArraySlice:()=>[],patchClass:()=>ye,wrapWithCurrentZone:()=>ye,filterProperties:()=>[],attachOriginToPatched:()=>ye,_redefineProperty:()=>ye,patchCallbacks:()=>ye,nativeScheduleMicroTask:te},ge={parent:null,zone:new i(null,null)},_e=null,ve=0;function ye(){}return n(`Zone`,`Zone`),i}function u(){let e=globalThis,t=e[c(`forceDuplicateZoneCheck`)]===!0;if(e.Zone&&(t||typeof e.Zone.__symbol__!=`function`))throw Error(`Zone already loaded.`);return e.Zone??=l(),e.Zone}var d=Object.getOwnPropertyDescriptor,f=Object.defineProperty,p=Object.getPrototypeOf,m=Object.create,ee=Array.prototype.slice,h=`addEventListener`,g=`removeEventListener`,te=c(h),ne=c(g),re=`true`,ie=`false`,ae=c(``);function oe(e,t){return Zone.current.wrap(e,t)}function se(e,t,n,r,i){return Zone.current.scheduleMacroTask(e,t,n,r,i)}var ce=c,le=typeof window<`u`,ue=le?window:void 0,de=le&&ue||globalThis,fe=`removeAttribute`;function pe(e,t){for(let n=e.length-1;n>=0;n--)typeof e[n]==`function`&&(e[n]=oe(e[n],t+`_`+n));return e}function me(e,t){let n=e.constructor.name;for(let r=0;r{let t=function(){return e.apply(this,pe(arguments,n+`.`+i))};return ke(t,e),t})(a)}}}function he(e){return e?e.writable===!1?!1:typeof e.get!=`function`||e.set!==void 0:!0}var ge=typeof WorkerGlobalScope<`u`&&self instanceof WorkerGlobalScope,_e=!(`nw`in de)&&de.process!==void 0&&de.process.toString()===`[object process]`,ve=!_e&&!ge&&!!(le&&ue.HTMLElement),ye=de.process!==void 0&&de.process.toString()===`[object process]`&&!ge&&!!(le&&ue.HTMLElement),be=Object.create(null),xe=ce(`enable_beforeunload`),Se=function(e){if(e||=de.event,!e)return;let t=be[e.type];t||=be[e.type]=ce(`ON_PROPERTY`+e.type);let n=this||e.target||de,r=n[t],i;if(ve&&n===ue&&e.type===`error`){let t=e;i=r&&r.call(this,t.message,t.filename,t.lineno,t.colno,t.error),i===!0&&e.preventDefault()}else i=r&&r.apply(this,arguments),e.type===`beforeunload`&&de[xe]&&typeof i==`string`?e.returnValue=i:i!=null&&!i&&e.preventDefault();return i};function Ce(e,t,n){let r=d(e,t);if(!r&&n&&d(n,t)&&(r={enumerable:!0,configurable:!0}),!r||!r.configurable)return;let i=ce(`on`+t+`patched`);if(Object.hasOwn(e,i)&&e[i])return;delete r.writable,delete r.value;let a=r.get,o=r.set,s=t.slice(2),c=be[s];c||=be[s]=ce(`ON_PROPERTY`+s),r.set=function(t){let n=this;!n&&e===de&&(n=de),n&&(typeof n[c]==`function`&&n.removeEventListener(s,Se),o?.call(n,null),n[c]=t,typeof t==`function`&&n.addEventListener(s,Se,!1))},r.get=function(){let n=this;if(!n&&e===de&&(n=de),!n)return null;let i=n[c];if(i)return i;if(a){let e=a.call(this);if(e)return r.set.call(this,e),typeof n[fe]==`function`&&n.removeAttribute(t),e}return null},f(e,t,r),e[i]=!0}function we(e,t,n){if(t)for(let r=0;rfunction(t,r){let a=n(t,r);return a.cbIdx>=0&&typeof r[a.cbIdx]==`function`?se(a.name,r[a.cbIdx],a,i):e.apply(t,r)})}function ke(e,t){e[ce(`OriginalDelegate`)]=t}function Ae(e){return typeof e==`function`}function je(e){return typeof e==`number`}var Me={useG:!0},Ne=Object.create(null),Pe={},Fe=RegExp(`^`+ae+`(\\w+)(true|false)$`),Ie=ce(`propagationStopped`),Le=[`capture`,`once`,`passive`,`signal`];function Re(e,t){let n=(t?t(e):e)+ie,r=(t?t(e):e)+re,i=ae+n,a=ae+r;Ne[e]={[ie]:i,[re]:a}}function ze(e,t,n,r){let i=r&&r.add||h,o=r&&r.rm||g,s=r&&r.listeners||`eventListeners`,c=r&&r.rmAll||`removeAllListeners`,l=ce(i),u=`.`+i+`:`,d=function(e,t,n){if(e.isRemoved)return;let r=e.callback;typeof r==`object`&&r.handleEvent&&(e.callback=e=>r.handleEvent(e),e.originalDelegate=r);let i;try{e.invoke(e,t,[n])}catch(e){i=e}let a=e.options;if(a&&typeof a==`object`&&a.once){let r=e.originalDelegate?e.originalDelegate:e.callback;t[o].call(t,n.type,r,a)}return i};function f(n,r,i){if(r||=e.event,!r)return;let a=n||r.target||e,o=a[Ne[r.type][i?re:ie]];if(o){let e=[];if(o.length===1){let t=d(o[0],a,r);t&&e.push(t)}else{let t=o.slice();for(let n=0;n{throw r})}}}let m=function(e){return f(this,e,!1)},ee=function(e){return f(this,e,!0)};function te(t,n){if(!t)return!1;let r=!0;n&&n.useG!==void 0&&(r=n.useG);let d=n&&n.vh,f=!0;n&&n.chkDup!==void 0&&(f=n.chkDup);let h=!1;n&&n.rt!==void 0&&(h=n.rt);let g=t;for(;g&&!Object.hasOwn(g,i);)g=p(g);if(!g&&t[i]&&(g=t),!g||g[l])return!1;let te=n&&n.eventNameToString,ne={},oe=g[l]=g[i],se=g[ce(o)]=g[o],le=g[ce(s)]=g[s],ue=g[ce(c)]=g[c],de;n&&n.prepend&&(de=g[ce(n.prepend)]=g[n.prepend]);function fe(e,t){return t?typeof e==`boolean`?{capture:e,passive:!0}:e?(typeof e==`object`&&e.passive!==!1&&(e.passive=!0),e):{passive:!0}:e}let pe=function(e){if(!ne.isExisting)return oe.call(ne.target,ne.eventName,ne.capture?ee:m,ne.options)},me=function(e){if(!e.isRemoved){let t=Ne[e.eventName],n;t&&(n=t[e.capture?re:ie]);let r=n&&e.target[n];if(r){for(let t=0;tve.zone.cancelTask(ve);t.call(g,`abort`,e,{once:!0}),ve.removeAbortListener=()=>g.removeEventListener(`abort`,e)}if(ne.target=null,ge&&(ge.taskData=null),oe&&(ne.options.once=!0),typeof ve.options!=`boolean`&&(ve.options=h),ve.target=l,ve.capture=ae,ve.eventName=u,m&&(ve.originalDelegate=p),c?ue.unshift(ve):ue.push(ve),s)return l}};return g[i]=Te(oe,u,ye,be,h),de&&(g.prependListener=Te(de,`.prependListener:`,ge,be,h,!0)),g[o]=function(){let t=this||e,r=arguments[0];n&&n.transferEventName&&(r=n.transferEventName(r));let i=arguments[2],a=i?typeof i==`boolean`||i.capture:!1,o=arguments[1];if(!o)return se.apply(this,arguments);if(d&&!d(se,o,t,arguments))return;let s=Ne[r],c;s&&(c=s[a?re:ie]);let l=c&&t[c];if(l)for(let e=0;efunction(t,n){t[Ie]=!0,e&&e.apply(t,n)})}function Ve(e,t){t.patchMethod(e,`queueMicrotask`,e=>function(e,t){Zone.current.scheduleMicroTask(`queueMicrotask`,t[0])})}var He=ce(`zoneTask`);function Ue(e,t,n,r){let i=null,a=null;t+=r,n+=r;let o={};function s(t){let n=t.data;n.args[0]=function(){return t.invoke.apply(this,arguments)};let r=i.apply(e,n.args);return je(r)?n.handleId=r:(n.handle=r,n.isRefreshable=Ae(r?.refresh)),t}function c(t){let{handle:n,handleId:r}=t.data;return a.call(e,n??r)}i=De(e,t,n=>function(i,a){if(Ae(a[0])){let e={isRefreshable:!1,isPeriodic:r===`Interval`,delay:r===`Timeout`||r===`Interval`?a[1]||0:void 0,args:a},n=a[0];a[0]=function(){try{return n.apply(this,arguments)}finally{let{handle:t,handleId:n,isPeriodic:r,isRefreshable:i}=e;!r&&!i&&(n?delete o[n]:t&&(t[He]=null))}};let i=se(t,a[0],e,s,c);if(!i)return i;let{handleId:l,handle:u,isRefreshable:d,isPeriodic:f}=i.data;if(l)o[l]=i;else if(u&&(u[He]=i,d&&!f)){let e=u.refresh;u.refresh=function(){let{zone:t,state:n}=i;return n===`notScheduled`?(i._state=`scheduled`,t._updateTaskCount(i,1)):n===`running`&&(i._state=`scheduling`),e.call(this)}}return u??l??i}return n.apply(e,a)}),a=De(e,n,t=>function(n,r){let i=r[0],a;je(i)?(a=o[i],delete o[i]):(a=i?.[He],a?i[He]=null:a=i),a?.type?a.cancelFn&&a.zone.cancelTask(a):t.apply(e,r)})}function We(e,t){let{isBrowser:n,isMix:r}=t.getGlobalObjects();(n||r)&&e.customElements&&`customElements`in e&&t.patchCallbacks(t,e.customElements,`customElements`,`define`,[`connectedCallback`,`disconnectedCallback`,`adoptedCallback`,`attributeChangedCallback`,`formAssociatedCallback`,`formDisabledCallback`,`formResetCallback`,`formStateRestoreCallback`])}function Ge(e,t){if(Zone[t.symbol(`patchEventTarget`)])return;let{eventNames:n,zoneSymbolEventNames:r,TRUE_STR:i,FALSE_STR:a,ZONE_SYMBOL_PREFIX:o}=t.getGlobalObjects();for(let e=0;et.target===e);if(r.length===0)return t;let i=r[0].ignoreProperties;return t.filter(e=>i.indexOf(e)===-1)}function Je(e,t,n,r){e&&we(e,qe(e,t,n),r)}function Ye(e){return Object.getOwnPropertyNames(e).filter(e=>e.startsWith(`on`)&&e.length>2).map(e=>e.substring(2))}function tee(e,t){if(_e&&!ye||Zone[e.symbol(`patchEvents`)])return;let n=t.__Zone_ignore_on_properties,r=[];if(ve){let e=window;r=r.concat([`Document`,`SVGElement`,`Element`,`HTMLElement`,`HTMLBodyElement`,`HTMLMediaElement`,`HTMLFrameSetElement`,`HTMLFrameElement`,`HTMLIFrameElement`,`HTMLMarqueeElement`,`Worker`]),Je(e,Ye(e),n,p(e))}r=r.concat([`XMLHttpRequest`,`XMLHttpRequestEventTarget`,`IDBIndex`,`IDBRequest`,`IDBOpenDBRequest`,`IDBDatabase`,`IDBTransaction`,`IDBCursor`,`WebSocket`]);for(let e=0;e{let t=`clear`;Ue(e,`set`,t,`Timeout`),Ue(e,`set`,t,`Interval`),Ue(e,`set`,t,`Immediate`)}),e.__load_patch(`requestAnimationFrame`,e=>{Ue(e,`request`,`cancel`,`AnimationFrame`),Ue(e,`mozRequest`,`mozCancel`,`AnimationFrame`),Ue(e,`webkitRequest`,`webkitCancel`,`AnimationFrame`)}),e.__load_patch(`blocking`,(e,t)=>{let n=[`alert`,`prompt`,`confirm`];for(let r=0;rfunction(r,a){return t.current.run(n,e,a,i)})}}),e.__load_patch(`EventTarget`,(e,t,n)=>{Ke(e,n),Ge(e,n);let r=e.XMLHttpRequestEventTarget;r&&r.prototype&&n.patchEventTarget(e,n,[r.prototype])}),e.__load_patch(`MutationObserver`,(e,t,n)=>{Ee(`MutationObserver`),Ee(`WebKitMutationObserver`)}),e.__load_patch(`IntersectionObserver`,(e,t,n)=>{Ee(`IntersectionObserver`)}),e.__load_patch(`FileReader`,(e,t,n)=>{Ee(`FileReader`)}),e.__load_patch(`on_property`,(e,t,n)=>{tee(n,e)}),e.__load_patch(`customElements`,(e,t,n)=>{We(e,n)}),e.__load_patch(`XHR`,(e,t)=>{c(e);let n=ce(`xhrTask`),r=ce(`xhrSync`),i=ce(`xhrListener`),a=ce(`xhrScheduled`),o=ce(`xhrURL`),s=ce(`xhrErrorBeforeScheduled`);function c(e){let c=e.XMLHttpRequest;if(!c)return;let l=c.prototype;function u(e){return e[n]}let d=l[te],f=l[ne];if(!d){let t=e.XMLHttpRequestEventTarget;if(t){let e=t.prototype;d=e[te],f=e[ne]}}let p=`readystatechange`,m=`scheduled`;function ee(e){let r=e.data,o=r.target;o[a]=!1,o[s]=!1;let c=o[i];d||(d=o[te],f=o[ne]),c&&f.call(o,p,c);let l=o[i]=()=>{if(o.readyState===o.DONE){if(!r.aborted&&o[a]&&e.state===m){let n=o[t.__symbol__(`loadfalse`)];if(o.status!==0&&n&&n.length>0){let i=e.invoke;e.invoke=function(){let n=o[t.__symbol__(`loadfalse`)];for(let t=0;tfunction(e,t){return e[r]=t[2]==0,e[o]=t[1],re.apply(e,t)}),ie=ce(`fetchTaskAborting`),ae=ce(`fetchTaskScheduling`),oe=De(l,`send`,()=>function(e,n){if(t.current[ae]===!0||e[r])return oe.apply(e,n);{let t={target:e,url:e[o],isPeriodic:!1,args:n,aborted:!1},r=se(`XMLHttpRequest.send`,h,t,ee,g);e&&e[s]===!0&&!t.aborted&&r.state===m&&r.invoke()}}),le=De(l,`abort`,()=>function(e,n){let r=u(e);if(r&&typeof r.type==`string`){if(r.cancelFn==null||r.data&&r.data.aborted)return;r.zone.cancelTask(r)}else if(t.current[ie]===!0)return le.apply(e,n)})}}),e.__load_patch(`geolocation`,e=>{e.navigator&&e.navigator.geolocation&&me(e.navigator.geolocation,[`getCurrentPosition`,`watchPosition`])}),e.__load_patch(`PromiseRejectionEvent`,(e,t)=>{function n(t){return function(n){Be(e,t).forEach(r=>{let i=e.PromiseRejectionEvent;if(i){let e=new i(t,{promise:n.promise,reason:n.rejection});r.invoke(e)}})}}e.PromiseRejectionEvent&&(t[ce(`unhandledPromiseRejectionHandler`)]=n(`unhandledrejection`),t[ce(`rejectionHandledHandler`)]=n(`rejectionhandled`))}),e.__load_patch(`queueMicrotask`,(e,t,n)=>{Ve(e,n)})}function Xe(e){e.__load_patch(`ZoneAwarePromise`,(e,t,n)=>{let r=Object.getOwnPropertyDescriptor,i=Object.defineProperty;function a(e){return e&&e.toString===Object.prototype.toString?(e.constructor&&e.constructor.name||``)+`: `+JSON.stringify(e):e?e.toString():Object.prototype.toString.call(e)}let o=n.symbol,s=[],c=e[o(`DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION`)]!==!1,l=o(`Promise`),u=o(`then`);n.onUnhandledError=e=>{if(n.showUncaughtError()){let t=e&&e.rejection;t&&e.zone&&e.task?console.error(`Unhandled Promise rejection:`,t instanceof Error?t.message:t,`; Zone:`,e.zone.name,`; Task:`,e.task&&e.task.source,`; Value:`,t,t instanceof Error?t.stack:void 0):console.error(e)}},n.microtaskDrainDone=()=>{for(;s.length;){let e=s.shift();try{e.zone.runGuarded(()=>{throw e.throwOriginal?e.rejection:e})}catch(e){f(e)}}};let d=o(`unhandledPromiseRejectionHandler`);function f(e){n.onUnhandledError(e);try{let n=t[d];typeof n==`function`&&n.call(this,e)}catch{}}function p(e){return e&&typeof e.then==`function`}function m(e){return e}function ee(e){return pe.reject(e)}let h=o(`state`),g=o(`value`),te=o(`finally`),ne=o(`parentPromiseValue`),re=o(`parentPromiseState`);function ie(e,t){return n=>{try{se(e,t,n)}catch(t){se(e,!1,t)}}}let ae=function(){let e=!1;return function(t){return function(){e||(e=!0,t.apply(null,arguments))}}},oe=o(`currentTaskTrace`);function se(e,r,o){let l=ae();if(e===o)throw TypeError(`Promise resolved with itself`);if(e[h]===null){let u=null;try{(typeof o==`object`||typeof o==`function`)&&(u=o&&o.then)}catch(t){return l(()=>{se(e,!1,t)})(),e}if(r!==!1&&o instanceof pe&&Object.hasOwn(o,h)&&Object.hasOwn(o,g)&&o[h]!==null)le(o),se(e,o[h],o[g]);else if(r!==!1&&typeof u==`function`)try{u.call(o,l(ie(e,r)),l(ie(e,!1)))}catch(t){l(()=>{se(e,!1,t)})()}else{e[h]=r;let l=e[g];if(e[g]=o,e[te]===te&&r===!0&&(e[h]=e[re],e[g]=e[ne]),r===!1&&o instanceof Error){let e=t.currentTask&&t.currentTask.data&&t.currentTask.data.__creationTrace__;e&&i(o,oe,{configurable:!0,enumerable:!1,writable:!0,value:e})}for(let t=0;t{try{let r=e[g],i=!!n&&te===n[te];i&&(n[ne]=r,n[re]=a),se(n,!0,t.run(o,void 0,i&&o!==ee&&o!==m?[]:[r]))}catch(e){se(n,!1,e)}},n)}let de=function(){},fe=e.AggregateError;class pe{static toString(){return`function ZoneAwarePromise() { [native code] }`}static resolve(e){return e instanceof pe?e:se(new this(null),!0,e)}static reject(e){return se(new this(null),!1,e)}static withResolvers(){let e={};return e.promise=new pe((t,n)=>{e.resolve=t,e.reject=n}),e}static any(e){if(!e||typeof e[Symbol.iterator]!=`function`)return Promise.reject(new fe([],`All promises were rejected`));let t=[],n=0;try{for(let r of e)n++,t.push(pe.resolve(r))}catch{return Promise.reject(new fe([],`All promises were rejected`))}if(n===0)return Promise.reject(new fe([],`All promises were rejected`));let r=!1,i=[];return new pe((e,a)=>{for(let o=0;o{r||(r=!0,e(t))},e=>{i.push(e),n--,n===0&&(r=!0,a(new fe(i,`All promises were rejected`)))})})}static race(e){let t,n,r=new this((e,r)=>{t=e,n=r});function i(e){t(e)}function a(e){n(e)}for(let t of e)p(t)||(t=this.resolve(t)),t.then(i,a);return r}static all(e){return pe.allWithCallback(e)}static allSettled(e){return(this&&this.prototype instanceof pe?this:pe).allWithCallback(e,{thenCallback:e=>({status:`fulfilled`,value:e}),errorCallback:e=>({status:`rejected`,reason:e})})}static allWithCallback(e,t){let n,r,i=new this((e,t)=>{n=e,r=t}),a=2,o=0,s=[];for(let i of e){p(i)||(i=this.resolve(i));let e=o;try{i.then(r=>{s[e]=t?t.thenCallback(r):r,a--,a===0&&n(s)},i=>{t?(s[e]=t.errorCallback(i),a--,a===0&&n(s)):r(i)})}catch(e){r(e)}a++,o++}return a-=2,a===0&&n(s),i}constructor(e){let t=this;if(!(t instanceof pe))throw Error(`Must be an instanceof Promise.`);t[h]=null,t[g]=[];try{let n=ae();e&&e(n(ie(t,!0)),n(ie(t,!1)))}catch(e){se(t,!1,e)}}get[Symbol.toStringTag](){return`Promise`}get[Symbol.species](){return pe}then(e,n){let r=this.constructor?.[Symbol.species];(!r||typeof r!=`function`)&&(r=this.constructor||pe);let i=new r(de),a=t.current;return this[h]==null?this[g].push(a,i,e,n):ue(this,a,i,e,n),i}catch(e){return this.then(null,e)}finally(e){let n=this.constructor?.[Symbol.species];(!n||typeof n!=`function`)&&(n=pe);let r=new n(de);r[te]=te;let i=t.current;return this[h]==null?this[g].push(i,r,e,e):ue(this,i,r,e,e),r}}pe.resolve=pe.resolve,pe.reject=pe.reject,pe.race=pe.race,pe.all=pe.all;let me=e[l]=e.Promise;e.Promise=pe;let he=o(`thenPatched`);function ge(e){let t=e.prototype,n=r(t,`then`);if(n&&(n.writable===!1||!n.configurable))return;let i=t.then;t[u]=i,e.prototype.then=function(e,t){return new pe((e,t)=>{i.call(this,e,t)}).then(e,t)},e[he]=!0}n.patchThen=ge;function _e(e){return function(t,n){let r=e.apply(t,n);if(r instanceof pe)return r;let i=r.constructor;return i[he]||ge(i),r}}if(me){ge(me);let t=me.try;t&&typeof t==`function`&&(pe.try=t),De(e,`fetch`,e=>_e(e))}return Promise[t.__symbol__(`uncaughtPromiseErrors`)]=s,pe})}function Ze(e){e.__load_patch(`toString`,e=>{let t=Function.prototype.toString,n=ce(`OriginalDelegate`),r=ce(`Promise`),i=ce(`Error`),a=function(){if(typeof this==`function`){let a=this[n];if(a)return typeof a==`function`?t.call(a):Object.prototype.toString.call(a);if(this===Promise){let n=e[r];if(n)return t.call(n)}if(this===Error){let n=e[i];if(n)return t.call(n)}}return t.call(this)};a[n]=t,Function.prototype.toString=a;let o=Object.prototype.toString;Object.prototype.toString=function(){return typeof Promise==`function`&&this instanceof Promise?`[object Promise]`:o.call(this)}})}function Qe(e,t,n,r,i){let a=Zone.__symbol__(r);if(t[a])return;let o=t[a]=t[r];t[r]=function(a,s,c){return s&&s.prototype&&i.forEach(function(t){let i=`${n}.${r}::`+t,a=s.prototype;try{if(Object.hasOwn(a,t)){let n=e.ObjectGetOwnPropertyDescriptor(a,t);n&&n.value?(n.value=e.wrapWithCurrentZone(n.value,i),e._redefineProperty(s.prototype,t,n)):a[t]&&(a[t]=e.wrapWithCurrentZone(a[t],i))}else a[t]&&(a[t]=e.wrapWithCurrentZone(a[t],i))}catch{}}),o.call(t,a,s,c)},e.attachOriginToPatched(t[r],o)}function $e(e){e.__load_patch(`util`,(e,t,n)=>{let r=Ye(e);n.patchOnProperties=we,n.patchMethod=De,n.bindArguments=pe,n.patchMacroTask=Oe;let i=t.__symbol__(`BLACK_LISTED_EVENTS`),a=t.__symbol__(`UNPATCHED_EVENTS`);e[a]&&(e[i]=e[a]),e[i]&&(t[i]=t[a]=e[i]),n.patchEventPrototype=eee,n.patchEventTarget=ze,n.ObjectDefineProperty=f,n.ObjectGetOwnPropertyDescriptor=d,n.ObjectCreate=m,n.ArraySlice=ee,n.patchClass=Ee,n.wrapWithCurrentZone=oe,n.filterProperties=qe,n.attachOriginToPatched=ke,n._redefineProperty=Object.defineProperty,n.patchCallbacks=Qe,n.getGlobalObjects=()=>({globalSources:Pe,zoneSymbolEventNames:Ne,eventNames:r,isBrowser:ve,isMix:ye,isNode:_e,TRUE_STR:re,FALSE_STR:ie,ZONE_SYMBOL_PREFIX:ae,ADD_EVENT_LISTENER_STR:h,REMOVE_EVENT_LISTENER_STR:g})})}function et(e){Xe(e),Ze(e),$e(e)}var tt=u();et(tt),nee(tt);var nt=(function(e){return e[e.NONE=0]=`NONE`,e[e.HTML=1]=`HTML`,e[e.STYLE=2]=`STYLE`,e[e.SCRIPT=3]=`SCRIPT`,e[e.URL=4]=`URL`,e[e.RESOURCE_URL=5]=`RESOURCE_URL`,e[e.ATTRIBUTE_NO_BINDING=6]=`ATTRIBUTE_NO_BINDING`,e})(nt||{}),rt=(function(e){return e[e.None=0]=`None`,e[e.Const=1]=`Const`,e})(rt||{}),it=class{modifiers;constructor(e=rt.None){this.modifiers=e}hasModifier(e){return(this.modifiers&e)!==0}},at=(function(e){return e[e.Dynamic=0]=`Dynamic`,e[e.Bool=1]=`Bool`,e[e.String=2]=`String`,e[e.Int=3]=`Int`,e[e.Number=4]=`Number`,e[e.Function=5]=`Function`,e[e.Inferred=6]=`Inferred`,e[e.None=7]=`None`,e})(at||{}),ot=class extends it{name;constructor(e,t){super(t),this.name=e}visitType(e,t){return e.visitBuiltinType(this,t)}};at.Dynamic;var st=new ot(at.Inferred);at.Bool,at.Int,at.Number,at.String,at.Function,at.None;var _=(function(e){return e[e.Equals=0]=`Equals`,e[e.NotEquals=1]=`NotEquals`,e[e.Assign=2]=`Assign`,e[e.Identical=3]=`Identical`,e[e.NotIdentical=4]=`NotIdentical`,e[e.Minus=5]=`Minus`,e[e.Plus=6]=`Plus`,e[e.Divide=7]=`Divide`,e[e.Multiply=8]=`Multiply`,e[e.Modulo=9]=`Modulo`,e[e.And=10]=`And`,e[e.Or=11]=`Or`,e[e.BitwiseOr=12]=`BitwiseOr`,e[e.BitwiseAnd=13]=`BitwiseAnd`,e[e.Lower=14]=`Lower`,e[e.LowerEquals=15]=`LowerEquals`,e[e.Bigger=16]=`Bigger`,e[e.BiggerEquals=17]=`BiggerEquals`,e[e.NullishCoalesce=18]=`NullishCoalesce`,e[e.Exponentiation=19]=`Exponentiation`,e[e.In=20]=`In`,e[e.InstanceOf=21]=`InstanceOf`,e[e.AdditionAssignment=22]=`AdditionAssignment`,e[e.SubtractionAssignment=23]=`SubtractionAssignment`,e[e.MultiplicationAssignment=24]=`MultiplicationAssignment`,e[e.DivisionAssignment=25]=`DivisionAssignment`,e[e.RemainderAssignment=26]=`RemainderAssignment`,e[e.ExponentiationAssignment=27]=`ExponentiationAssignment`,e[e.AndAssignment=28]=`AndAssignment`,e[e.OrAssignment=29]=`OrAssignment`,e[e.NullishCoalesceAssignment=30]=`NullishCoalesceAssignment`,e})(_||{});function ct(e,t){return e==null||t==null?e==t:e.isEquivalent(t)}function lt(e,t,n){let r=e.length;if(r!==t.length)return!1;for(let i=0;ie.isEquivalent(t))}var dt=class{leadingComments;type;sourceSpan;constructor(e,t,n){this.leadingComments=n,this.type=e||null,this.sourceSpan=t||null}prop(e,t){return new iee(this,e,null,t)}key(e,t,n){return new aee(this,e,t,n)}callFn(e,t,n,r){return new mt(this,e,null,t,n,r)}instantiate(e,t,n,r){return new ht(this,e,t,n)}conditional(e,t=null,n,r){return new ree(this,e,t,null,n)}equals(e,t){return new yt(_.Equals,this,e,null,t)}notEquals(e,t){return new yt(_.NotEquals,this,e,null,t)}identical(e,t){return new yt(_.Identical,this,e,null,t)}notIdentical(e,t){return new yt(_.NotIdentical,this,e,null,t)}minus(e,t){return new yt(_.Minus,this,e,null,t)}plus(e,t){return new yt(_.Plus,this,e,null,t)}divide(e,t){return new yt(_.Divide,this,e,null,t)}multiply(e,t){return new yt(_.Multiply,this,e,null,t)}modulo(e,t){return new yt(_.Modulo,this,e,null,t)}power(e,t){return new yt(_.Exponentiation,this,e,null,t)}and(e,t){return new yt(_.And,this,e,null,t)}bitwiseOr(e,t){return new yt(_.BitwiseOr,this,e,null,t)}bitwiseAnd(e,t){return new yt(_.BitwiseAnd,this,e,null,t)}or(e,t){return new yt(_.Or,this,e,null,t)}lower(e,t){return new yt(_.Lower,this,e,null,t)}lowerEquals(e,t){return new yt(_.LowerEquals,this,e,null,t)}bigger(e,t){return new yt(_.Bigger,this,e,null,t)}biggerEquals(e,t){return new yt(_.BiggerEquals,this,e,null,t)}isBlank(e){return this.equals(uee,e)}nullishCoalesce(e,t){return new yt(_.NullishCoalesce,this,e,null,t)}toStmt(e){return new fee(this,null,e)}},ft=class e extends dt{name;constructor(e,t,n,r){super(t,n,r),this.name=e}isEquivalent(t){return t instanceof e&&this.name===t.name}isConstant(){return!1}visitExpression(e,t){return e.visitReadVarExpr(this,t)}clone(){return new e(this.name,this.type,this.sourceSpan)}set(e){return new yt(_.Assign,this,e,null,this.sourceSpan)}},pt=class e extends dt{expr;constructor(e,t,n,r){super(t,n,r),this.expr=e}visitExpression(e,t){return e.visitTypeofExpr(this,t)}isEquivalent(t){return t instanceof e&&t.expr.isEquivalent(this.expr)}isConstant(){return this.expr.isConstant()}clone(){return new e(this.expr.clone())}},mt=class e extends dt{fn;args;pure;isOptional;constructor(e,t,n,r,i=!1,a,o=!1){super(n,r,a),this.fn=e,this.args=t,this.pure=i,this.isOptional=o}get receiver(){return this.fn}isEquivalent(t){return t instanceof e&&this.fn.isEquivalent(t.fn)&&ut(this.args,t.args)&&this.pure===t.pure}isConstant(){return!1}visitExpression(e,t){return e.visitInvokeFunctionExpr(this,t)}clone(){return new e(this.fn.clone(),this.args.map(e=>e.clone()),this.type,this.sourceSpan,this.pure,[],this.isOptional)}},ht=class e extends dt{classExpr;args;constructor(e,t,n,r,i){super(n,r,i),this.classExpr=e,this.args=t}isEquivalent(t){return t instanceof e&&this.classExpr.isEquivalent(t.classExpr)&&ut(this.args,t.args)}isConstant(){return!1}visitExpression(e,t){return e.visitInstantiateExpr(this,t)}clone(){return new e(this.classExpr.clone(),this.args.map(e=>e.clone()),this.type,this.sourceSpan)}},gt=class e extends dt{body;flags;constructor(e,t,n,r){super(null,n,r),this.body=e,this.flags=t}isEquivalent(t){return t instanceof e&&this.body===t.body&&this.flags===t.flags}isConstant(){return!0}visitExpression(e,t){return e.visitRegularExpressionLiteral(this,t)}clone(){return new e(this.body,this.flags,this.sourceSpan)}},_t=class e extends dt{value;constructor(e,t,n,r){super(t,n,r),this.value=e}isEquivalent(t){return t instanceof e&&this.value===t.value}isConstant(){return!0}visitExpression(e,t){return e.visitLiteralExpr(this,t)}clone(){return new e(this.value,this.type,this.sourceSpan)}},vt=class e extends dt{value;typeParams;constructor(e,t,n=null,r,i){super(t,r,i),this.value=e,this.typeParams=n}isEquivalent(t){return t instanceof e&&this.value.name===t.value.name&&this.value.moduleName===t.value.moduleName}isConstant(){return!1}visitExpression(e,t){return e.visitExternalExpr(this,t)}clone(){return new e(this.value,this.type,this.typeParams,this.sourceSpan)}},ree=class e extends dt{condition;falseCase;trueCase;constructor(e,t,n=null,r,i,a){super(r||t.type,i,a),this.condition=e,this.falseCase=n,this.trueCase=t}isEquivalent(t){return t instanceof e&&this.condition.isEquivalent(t.condition)&&this.trueCase.isEquivalent(t.trueCase)&&ct(this.falseCase,t.falseCase)}isConstant(){return!1}visitExpression(e,t){return e.visitConditionalExpr(this,t)}clone(){return new e(this.condition.clone(),this.trueCase.clone(),this.falseCase?.clone(),this.type,this.sourceSpan)}},yt=class e extends dt{operator;rhs;lhs;constructor(e,t,n,r,i,a){super(r||t.type,i,a),this.operator=e,this.rhs=n,this.lhs=t}isEquivalent(t){return t instanceof e&&this.operator===t.operator&&this.lhs.isEquivalent(t.lhs)&&this.rhs.isEquivalent(t.rhs)}isConstant(){return!1}visitExpression(e,t){return e.visitBinaryOperatorExpr(this,t)}clone(){return new e(this.operator,this.lhs.clone(),this.rhs.clone(),this.type,this.sourceSpan)}isAssignment(){let e=this.operator;return e===_.Assign||e===_.AdditionAssignment||e===_.SubtractionAssignment||e===_.MultiplicationAssignment||e===_.DivisionAssignment||e===_.RemainderAssignment||e===_.ExponentiationAssignment||e===_.AndAssignment||e===_.OrAssignment||e===_.NullishCoalesceAssignment}},iee=class e extends dt{receiver;name;isOptional;constructor(e,t,n,r,i,a=!1){super(n,r,i),this.receiver=e,this.name=t,this.isOptional=a}get index(){return this.name}isEquivalent(t){return t instanceof e&&this.receiver.isEquivalent(t.receiver)&&this.name===t.name&&this.isOptional===t.isOptional}isConstant(){return!1}visitExpression(e,t){return e.visitReadPropExpr(this,t)}set(e){return new yt(_.Assign,this.receiver.prop(this.name),e,null,this.sourceSpan)}clone(){return new e(this.receiver.clone(),this.name,this.type,this.sourceSpan,[],this.isOptional)}},aee=class e extends dt{receiver;index;isOptional;constructor(e,t,n,r,i,a=!1){super(n,r,i),this.receiver=e,this.index=t,this.isOptional=a}isEquivalent(t){return t instanceof e&&this.receiver.isEquivalent(t.receiver)&&this.index.isEquivalent(t.index)&&this.isOptional===t.isOptional}isConstant(){return!1}visitExpression(e,t){return e.visitReadKeyExpr(this,t)}set(e){return new yt(_.Assign,this.receiver.key(this.index),e,null,this.sourceSpan)}clone(){return new e(this.receiver.clone(),this.index.clone(),this.type,this.sourceSpan,[],this.isOptional)}},oee=class e extends dt{entries;constructor(e,t,n,r){super(t,n,r),this.entries=e}isConstant(){return this.entries.every(e=>e.isConstant())}isEquivalent(t){return t instanceof e&&ut(this.entries,t.entries)}visitExpression(e,t){return e.visitLiteralArrayExpr(this,t)}clone(){return new e(this.entries.map(e=>e.clone()),this.type,this.sourceSpan)}},see=class e{expression;constructor(e){this.expression=e}isEquivalent(t){return t instanceof e&&this.expression.isEquivalent(t.expression)}clone(){return new e(this.expression.clone())}isConstant(){return this.expression.isConstant()}},cee=class e extends dt{entries;valueType=null;constructor(e,t,n,r){super(t,n,r),this.entries=e,t&&(this.valueType=t.valueType)}isEquivalent(t){return t instanceof e&&ut(this.entries,t.entries)}isConstant(){return this.entries.every(e=>e.isConstant())}visitExpression(e,t){return e.visitLiteralMapExpr(this,t)}clone(){let t=this.entries.map(e=>e.clone());return new e(t,this.type,this.sourceSpan)}},lee=class e extends dt{expression;constructor(e,t,n){super(null,t,n),this.expression=e}isEquivalent(t){return t instanceof e&&this.expression.isEquivalent(t.expression)}isConstant(){return this.expression.isConstant()}visitExpression(e,t){return e.visitSpreadElementExpr(this,t)}clone(){return new e(this.expression.clone(),this.sourceSpan)}},uee=new _t(null,st,null),bt=(function(e){return e[e.None=0]=`None`,e[e.Final=1]=`Final`,e[e.Private=2]=`Private`,e[e.Exported=4]=`Exported`,e[e.Static=8]=`Static`,e})(bt||{}),dee=class{modifiers;sourceSpan;leadingComments;constructor(e=bt.None,t=null,n){this.modifiers=e,this.sourceSpan=t,this.leadingComments=n}hasModifier(e){return(this.modifiers&e)!==0}addLeadingComment(e){this.leadingComments=this.leadingComments??[],this.leadingComments.push(e)}},fee=class e extends dee{expr;constructor(e,t,n){super(bt.None,t,n),this.expr=e}isEquivalent(t){return t instanceof e&&this.expr.isEquivalent(t.expr)}visitStatement(e,t){return e.visitExpressionStmt(this,t)}};(class e{static INSTANCE=new e;keyOf(e){if(e instanceof _t&&typeof e.value==`string`)return`"${e.value}"`;if(e instanceof _t)return String(e.value);if(e instanceof gt)return`/${e.body}/${e.flags??``}`;if(e instanceof oee){let t=[];for(let n of e.entries)t.push(this.keyOf(n));return`[${t.join(`,`)}]`}if(e instanceof cee){let t=[];for(let n of e.entries)if(n instanceof see)t.push(`...`+this.keyOf(n.expression));else{let e=n.key;n.quoted&&(e=`"${e}"`),t.push(e+`:`+this.keyOf(n.value))}return`{${t.join(`,`)}}`}if(e instanceof vt)return`import("${e.value.moduleName}", ${e.value.name})`;if(e instanceof ft)return`read(${e.name})`;if(e instanceof pt)return`typeof(${this.keyOf(e.expr)})`;if(e instanceof lee)return`...${this.keyOf(e.expression)}`;throw Error(`${this.constructor.name} does not handle expressions of type ${e.constructor.name}`)}});var v=`@angular/core`,y=(()=>{class e{static core={name:null,moduleName:v};static namespaceHTML={name:`ɵɵnamespaceHTML`,moduleName:v};static namespaceMathML={name:`ɵɵnamespaceMathML`,moduleName:v};static namespaceSVG={name:`ɵɵnamespaceSVG`,moduleName:v};static element={name:`ɵɵelement`,moduleName:v};static elementStart={name:`ɵɵelementStart`,moduleName:v};static elementEnd={name:`ɵɵelementEnd`,moduleName:v};static foreignComponent={name:`ɵɵforeignComponent`,moduleName:v};static foreignContent={name:`ɵɵforeignContent`,moduleName:v};static foreignContentFn={name:`ɵɵforeignContentFn`,moduleName:v};static domElement={name:`ɵɵdomElement`,moduleName:v};static domElementStart={name:`ɵɵdomElementStart`,moduleName:v};static domElementEnd={name:`ɵɵdomElementEnd`,moduleName:v};static domElementContainer={name:`ɵɵdomElementContainer`,moduleName:v};static domElementContainerStart={name:`ɵɵdomElementContainerStart`,moduleName:v};static domElementContainerEnd={name:`ɵɵdomElementContainerEnd`,moduleName:v};static domTemplate={name:`ɵɵdomTemplate`,moduleName:v};static domListener={name:`ɵɵdomListener`,moduleName:v};static advance={name:`ɵɵadvance`,moduleName:v};static syntheticHostProperty={name:`ɵɵsyntheticHostProperty`,moduleName:v};static syntheticHostListener={name:`ɵɵsyntheticHostListener`,moduleName:v};static attribute={name:`ɵɵattribute`,moduleName:v};static classProp={name:`ɵɵclassProp`,moduleName:v};static elementContainerStart={name:`ɵɵelementContainerStart`,moduleName:v};static elementContainerEnd={name:`ɵɵelementContainerEnd`,moduleName:v};static elementContainer={name:`ɵɵelementContainer`,moduleName:v};static styleMap={name:`ɵɵstyleMap`,moduleName:v};static classMap={name:`ɵɵclassMap`,moduleName:v};static styleProp={name:`ɵɵstyleProp`,moduleName:v};static interpolate={name:`ɵɵinterpolate`,moduleName:v};static interpolate1={name:`ɵɵinterpolate1`,moduleName:v};static interpolate2={name:`ɵɵinterpolate2`,moduleName:v};static interpolate3={name:`ɵɵinterpolate3`,moduleName:v};static interpolate4={name:`ɵɵinterpolate4`,moduleName:v};static interpolate5={name:`ɵɵinterpolate5`,moduleName:v};static interpolate6={name:`ɵɵinterpolate6`,moduleName:v};static interpolate7={name:`ɵɵinterpolate7`,moduleName:v};static interpolate8={name:`ɵɵinterpolate8`,moduleName:v};static interpolateV={name:`ɵɵinterpolateV`,moduleName:v};static nextContext={name:`ɵɵnextContext`,moduleName:v};static resetView={name:`ɵɵresetView`,moduleName:v};static templateCreate={name:`ɵɵtemplate`,moduleName:v};static defer={name:`ɵɵdefer`,moduleName:v};static deferWhen={name:`ɵɵdeferWhen`,moduleName:v};static deferOnIdle={name:`ɵɵdeferOnIdle`,moduleName:v};static deferOnImmediate={name:`ɵɵdeferOnImmediate`,moduleName:v};static deferOnTimer={name:`ɵɵdeferOnTimer`,moduleName:v};static deferOnHover={name:`ɵɵdeferOnHover`,moduleName:v};static deferOnInteraction={name:`ɵɵdeferOnInteraction`,moduleName:v};static deferOnViewport={name:`ɵɵdeferOnViewport`,moduleName:v};static deferPrefetchWhen={name:`ɵɵdeferPrefetchWhen`,moduleName:v};static deferPrefetchOnIdle={name:`ɵɵdeferPrefetchOnIdle`,moduleName:v};static deferPrefetchOnImmediate={name:`ɵɵdeferPrefetchOnImmediate`,moduleName:v};static deferPrefetchOnTimer={name:`ɵɵdeferPrefetchOnTimer`,moduleName:v};static deferPrefetchOnHover={name:`ɵɵdeferPrefetchOnHover`,moduleName:v};static deferPrefetchOnInteraction={name:`ɵɵdeferPrefetchOnInteraction`,moduleName:v};static deferPrefetchOnViewport={name:`ɵɵdeferPrefetchOnViewport`,moduleName:v};static deferHydrateWhen={name:`ɵɵdeferHydrateWhen`,moduleName:v};static deferHydrateNever={name:`ɵɵdeferHydrateNever`,moduleName:v};static deferHydrateOnIdle={name:`ɵɵdeferHydrateOnIdle`,moduleName:v};static deferHydrateOnImmediate={name:`ɵɵdeferHydrateOnImmediate`,moduleName:v};static deferHydrateOnTimer={name:`ɵɵdeferHydrateOnTimer`,moduleName:v};static deferHydrateOnHover={name:`ɵɵdeferHydrateOnHover`,moduleName:v};static deferHydrateOnInteraction={name:`ɵɵdeferHydrateOnInteraction`,moduleName:v};static deferHydrateOnViewport={name:`ɵɵdeferHydrateOnViewport`,moduleName:v};static deferEnableTimerScheduling={name:`ɵɵdeferEnableTimerScheduling`,moduleName:v};static enableIncrementalHydrationRuntime={name:`ɵɵenableIncrementalHydrationRuntime`,moduleName:v};static conditionalCreate={name:`ɵɵconditionalCreate`,moduleName:v};static conditionalBranchCreate={name:`ɵɵconditionalBranchCreate`,moduleName:v};static conditional={name:`ɵɵconditional`,moduleName:v};static repeater={name:`ɵɵrepeater`,moduleName:v};static repeaterCreate={name:`ɵɵrepeaterCreate`,moduleName:v};static repeaterTrackByIndex={name:`ɵɵrepeaterTrackByIndex`,moduleName:v};static repeaterTrackByIdentity={name:`ɵɵrepeaterTrackByIdentity`,moduleName:v};static componentInstance={name:`ɵɵcomponentInstance`,moduleName:v};static text={name:`ɵɵtext`,moduleName:v};static enableBindings={name:`ɵɵenableBindings`,moduleName:v};static disableBindings={name:`ɵɵdisableBindings`,moduleName:v};static getCurrentView={name:`ɵɵgetCurrentView`,moduleName:v};static textInterpolate={name:`ɵɵtextInterpolate`,moduleName:v};static textInterpolate1={name:`ɵɵtextInterpolate1`,moduleName:v};static textInterpolate2={name:`ɵɵtextInterpolate2`,moduleName:v};static textInterpolate3={name:`ɵɵtextInterpolate3`,moduleName:v};static textInterpolate4={name:`ɵɵtextInterpolate4`,moduleName:v};static textInterpolate5={name:`ɵɵtextInterpolate5`,moduleName:v};static textInterpolate6={name:`ɵɵtextInterpolate6`,moduleName:v};static textInterpolate7={name:`ɵɵtextInterpolate7`,moduleName:v};static textInterpolate8={name:`ɵɵtextInterpolate8`,moduleName:v};static textInterpolateV={name:`ɵɵtextInterpolateV`,moduleName:v};static restoreView={name:`ɵɵrestoreView`,moduleName:v};static pureFunction0={name:`ɵɵpureFunction0`,moduleName:v};static pureFunction1={name:`ɵɵpureFunction1`,moduleName:v};static pureFunction2={name:`ɵɵpureFunction2`,moduleName:v};static pureFunction3={name:`ɵɵpureFunction3`,moduleName:v};static pureFunction4={name:`ɵɵpureFunction4`,moduleName:v};static pureFunction5={name:`ɵɵpureFunction5`,moduleName:v};static pureFunction6={name:`ɵɵpureFunction6`,moduleName:v};static pureFunction7={name:`ɵɵpureFunction7`,moduleName:v};static pureFunction8={name:`ɵɵpureFunction8`,moduleName:v};static pureFunctionV={name:`ɵɵpureFunctionV`,moduleName:v};static pipeBind1={name:`ɵɵpipeBind1`,moduleName:v};static pipeBind2={name:`ɵɵpipeBind2`,moduleName:v};static pipeBind3={name:`ɵɵpipeBind3`,moduleName:v};static pipeBind4={name:`ɵɵpipeBind4`,moduleName:v};static pipeBindV={name:`ɵɵpipeBindV`,moduleName:v};static domProperty={name:`ɵɵdomProperty`,moduleName:v};static ariaProperty={name:`ɵɵariaProperty`,moduleName:v};static property={name:`ɵɵproperty`,moduleName:v};static control={name:`ɵɵcontrol`,moduleName:v};static controlCreate={name:`ɵɵcontrolCreate`,moduleName:v};static animationEnterListener={name:`ɵɵanimateEnterListener`,moduleName:v};static animationLeaveListener={name:`ɵɵanimateLeaveListener`,moduleName:v};static animationEnter={name:`ɵɵanimateEnter`,moduleName:v};static animationLeave={name:`ɵɵanimateLeave`,moduleName:v};static i18n={name:`ɵɵi18n`,moduleName:v};static i18nAttributes={name:`ɵɵi18nAttributes`,moduleName:v};static i18nExp={name:`ɵɵi18nExp`,moduleName:v};static i18nStart={name:`ɵɵi18nStart`,moduleName:v};static i18nEnd={name:`ɵɵi18nEnd`,moduleName:v};static i18nApply={name:`ɵɵi18nApply`,moduleName:v};static i18nPostprocess={name:`ɵɵi18nPostprocess`,moduleName:v};static pipe={name:`ɵɵpipe`,moduleName:v};static projection={name:`ɵɵprojection`,moduleName:v};static projectionDef={name:`ɵɵprojectionDef`,moduleName:v};static reference={name:`ɵɵreference`,moduleName:v};static inject={name:`ɵɵinject`,moduleName:v};static injectAttribute={name:`ɵɵinjectAttribute`,moduleName:v};static directiveInject={name:`ɵɵdirectiveInject`,moduleName:v};static invalidFactory={name:`ɵɵinvalidFactory`,moduleName:v};static invalidFactoryDep={name:`ɵɵinvalidFactoryDep`,moduleName:v};static templateRefExtractor={name:`ɵɵtemplateRefExtractor`,moduleName:v};static forwardRef={name:`forwardRef`,moduleName:v};static resolveForwardRef={name:`resolveForwardRef`,moduleName:v};static replaceMetadata={name:`ɵɵreplaceMetadata`,moduleName:v};static getReplaceMetadataURL={name:`ɵɵgetReplaceMetadataURL`,moduleName:v};static ɵɵdefineInjectable={name:`ɵɵdefineInjectable`,moduleName:v};static declareInjectable={name:`ɵɵngDeclareInjectable`,moduleName:v};static InjectableDeclaration={name:`ɵɵInjectableDeclaration`,moduleName:v};static defineService={name:`ɵɵdefineService`,moduleName:v};static declareService={name:`ɵɵngDeclareService`,moduleName:v};static resolveWindow={name:`ɵɵresolveWindow`,moduleName:v};static resolveDocument={name:`ɵɵresolveDocument`,moduleName:v};static resolveBody={name:`ɵɵresolveBody`,moduleName:v};static getComponentDepsFactory={name:`ɵɵgetComponentDepsFactory`,moduleName:v};static defineComponent={name:`ɵɵdefineComponent`,moduleName:v};static declareComponent={name:`ɵɵngDeclareComponent`,moduleName:v};static setComponentScope={name:`ɵɵsetComponentScope`,moduleName:v};static ChangeDetectionStrategy={name:`ChangeDetectionStrategy`,moduleName:v};static ViewEncapsulation={name:`ViewEncapsulation`,moduleName:v};static ComponentDeclaration={name:`ɵɵComponentDeclaration`,moduleName:v};static FactoryDeclaration={name:`ɵɵFactoryDeclaration`,moduleName:v};static declareFactory={name:`ɵɵngDeclareFactory`,moduleName:v};static FactoryTarget={name:`ɵɵFactoryTarget`,moduleName:v};static defineDirective={name:`ɵɵdefineDirective`,moduleName:v};static declareDirective={name:`ɵɵngDeclareDirective`,moduleName:v};static DirectiveDeclaration={name:`ɵɵDirectiveDeclaration`,moduleName:v};static InjectorDef={name:`ɵɵInjectorDef`,moduleName:v};static InjectorDeclaration={name:`ɵɵInjectorDeclaration`,moduleName:v};static defineInjector={name:`ɵɵdefineInjector`,moduleName:v};static declareInjector={name:`ɵɵngDeclareInjector`,moduleName:v};static NgModuleDeclaration={name:`ɵɵNgModuleDeclaration`,moduleName:v};static ModuleWithProviders={name:`ModuleWithProviders`,moduleName:v};static defineNgModule={name:`ɵɵdefineNgModule`,moduleName:v};static declareNgModule={name:`ɵɵngDeclareNgModule`,moduleName:v};static setNgModuleScope={name:`ɵɵsetNgModuleScope`,moduleName:v};static registerNgModuleType={name:`ɵɵregisterNgModuleType`,moduleName:v};static PipeDeclaration={name:`ɵɵPipeDeclaration`,moduleName:v};static definePipe={name:`ɵɵdefinePipe`,moduleName:v};static declarePipe={name:`ɵɵngDeclarePipe`,moduleName:v};static declareClassMetadata={name:`ɵɵngDeclareClassMetadata`,moduleName:v};static declareClassMetadataAsync={name:`ɵɵngDeclareClassMetadataAsync`,moduleName:v};static setClassMetadata={name:`ɵsetClassMetadata`,moduleName:v};static setClassMetadataAsync={name:`ɵsetClassMetadataAsync`,moduleName:v};static setClassDebugInfo={name:`ɵsetClassDebugInfo`,moduleName:v};static queryRefresh={name:`ɵɵqueryRefresh`,moduleName:v};static viewQuery={name:`ɵɵviewQuery`,moduleName:v};static loadQuery={name:`ɵɵloadQuery`,moduleName:v};static contentQuery={name:`ɵɵcontentQuery`,moduleName:v};static viewQuerySignal={name:`ɵɵviewQuerySignal`,moduleName:v};static contentQuerySignal={name:`ɵɵcontentQuerySignal`,moduleName:v};static queryAdvance={name:`ɵɵqueryAdvance`,moduleName:v};static twoWayProperty={name:`ɵɵtwoWayProperty`,moduleName:v};static twoWayBindingSet={name:`ɵɵtwoWayBindingSet`,moduleName:v};static twoWayListener={name:`ɵɵtwoWayListener`,moduleName:v};static declareLet={name:`ɵɵdeclareLet`,moduleName:v};static storeLet={name:`ɵɵstoreLet`,moduleName:v};static readContextLet={name:`ɵɵreadContextLet`,moduleName:v};static arrowFunction={name:`ɵɵarrowFunction`,moduleName:v};static attachSourceLocations={name:`ɵɵattachSourceLocations`,moduleName:v};static NgOnChangesFeature={name:`ɵɵNgOnChangesFeature`,moduleName:v};static ControlFeature={name:`ɵɵControlFeature`,moduleName:v};static InheritDefinitionFeature={name:`ɵɵInheritDefinitionFeature`,moduleName:v};static ProvidersFeature={name:`ɵɵProvidersFeature`,moduleName:v};static HostDirectivesFeature={name:`ɵɵHostDirectivesFeature`,moduleName:v};static ExternalStylesFeature={name:`ɵɵExternalStylesFeature`,moduleName:v};static listener={name:`ɵɵlistener`,moduleName:v};static getInheritedFactory={name:`ɵɵgetInheritedFactory`,moduleName:v};static sanitizeHtml={name:`ɵɵsanitizeHtml`,moduleName:v};static sanitizeStyle={name:`ɵɵsanitizeStyle`,moduleName:v};static validateAttribute={name:`ɵɵvalidateAttribute`,moduleName:v};static sanitizeResourceUrl={name:`ɵɵsanitizeResourceUrl`,moduleName:v};static sanitizeScript={name:`ɵɵsanitizeScript`,moduleName:v};static sanitizeUrl={name:`ɵɵsanitizeUrl`,moduleName:v};static sanitizeUrlOrResourceUrl={name:`ɵɵsanitizeUrlOrResourceUrl`,moduleName:v};static trustConstantHtml={name:`ɵɵtrustConstantHtml`,moduleName:v};static trustConstantResourceUrl={name:`ɵɵtrustConstantResourceUrl`,moduleName:v};static inputDecorator={name:`Input`,moduleName:v};static outputDecorator={name:`Output`,moduleName:v};static viewChildDecorator={name:`ViewChild`,moduleName:v};static viewChildrenDecorator={name:`ViewChildren`,moduleName:v};static contentChildDecorator={name:`ContentChild`,moduleName:v};static contentChildrenDecorator={name:`ContentChildren`,moduleName:v};static InputSignalBrandWriteType={name:`ɵINPUT_SIGNAL_BRAND_WRITE_TYPE`,moduleName:v};static UnwrapDirectiveSignalInputs={name:`ɵUnwrapDirectiveSignalInputs`,moduleName:v};static unwrapWritableSignal={name:`ɵunwrapWritableSignal`,moduleName:v};static assertType={name:`ɵassertType`,moduleName:v}}return e})();_.And,_.Bigger,_.BiggerEquals,_.BitwiseOr,_.BitwiseAnd,_.Divide,_.Assign,_.Equals,_.Identical,_.Lower,_.LowerEquals,_.Minus,_.Modulo,_.Exponentiation,_.Multiply,_.NotEquals,_.NotIdentical,_.NullishCoalesce,_.Or,_.Plus,_.In,_.InstanceOf,_.AdditionAssignment,_.SubtractionAssignment,_.MultiplicationAssignment,_.DivisionAssignment,_.RemainderAssignment,_.ExponentiationAssignment,_.AndAssignment,_.OrAssignment,_.NullishCoalesceAssignment;var xt=class{span;sourceSpan;constructor(e,t){this.span=e,this.sourceSpan=t}toString(){return`AST`}},St=class extends xt{receiver;args;argumentSpan;constructor(e,t,n,r,i){super(e,t),this.receiver=n,this.args=r,this.argumentSpan=i}visit(e,t=null){return e.visitCall(this,t)}},Ct=(function(e){return e[e.Property=0]=`Property`,e[e.Attribute=1]=`Attribute`,e[e.Class=2]=`Class`,e[e.Style=3]=`Style`,e[e.LegacyAnimation=4]=`LegacyAnimation`,e[e.TwoWay=5]=`TwoWay`,e[e.Animation=6]=`Animation`,e})(Ct||{}),wt=`(:(where|is)\\()?`,Tt=`-shadowcsshost`,Et=`-shadowcsscontext`,Dt=`[^)(]*`,Ot=String.raw`(?:\(${Dt}\)|${Dt})+?`,kt=String.raw`(?:\(${Ot}\)|${Dt})+?`,At=String.raw`(?:\((${kt})\))`;String.raw`(:nth-[-\w]+)`+At,Tt+At+``,`${wt}`,Et+At+``;var jt=(function(e){return e[e.ListEnd=0]=`ListEnd`,e[e.Statement=1]=`Statement`,e[e.Variable=2]=`Variable`,e[e.ElementStart=3]=`ElementStart`,e[e.Element=4]=`Element`,e[e.ForeignComponent=5]=`ForeignComponent`,e[e.Template=6]=`Template`,e[e.ElementEnd=7]=`ElementEnd`,e[e.ContainerStart=8]=`ContainerStart`,e[e.Container=9]=`Container`,e[e.ContainerEnd=10]=`ContainerEnd`,e[e.DisableBindings=11]=`DisableBindings`,e[e.ConditionalCreate=12]=`ConditionalCreate`,e[e.ConditionalBranchCreate=13]=`ConditionalBranchCreate`,e[e.Conditional=14]=`Conditional`,e[e.EnableBindings=15]=`EnableBindings`,e[e.Text=16]=`Text`,e[e.Listener=17]=`Listener`,e[e.InterpolateText=18]=`InterpolateText`,e[e.Binding=19]=`Binding`,e[e.Property=20]=`Property`,e[e.StyleProp=21]=`StyleProp`,e[e.ClassProp=22]=`ClassProp`,e[e.StyleMap=23]=`StyleMap`,e[e.ClassMap=24]=`ClassMap`,e[e.Advance=25]=`Advance`,e[e.Pipe=26]=`Pipe`,e[e.Attribute=27]=`Attribute`,e[e.ExtractedAttribute=28]=`ExtractedAttribute`,e[e.Defer=29]=`Defer`,e[e.DeferOn=30]=`DeferOn`,e[e.DeferWhen=31]=`DeferWhen`,e[e.I18nMessage=32]=`I18nMessage`,e[e.DomProperty=33]=`DomProperty`,e[e.Namespace=34]=`Namespace`,e[e.ProjectionDef=35]=`ProjectionDef`,e[e.EnableIncrementalHydrationRuntime=36]=`EnableIncrementalHydrationRuntime`,e[e.Projection=37]=`Projection`,e[e.Content=38]=`Content`,e[e.RepeaterCreate=39]=`RepeaterCreate`,e[e.Repeater=40]=`Repeater`,e[e.TwoWayProperty=41]=`TwoWayProperty`,e[e.TwoWayListener=42]=`TwoWayListener`,e[e.DeclareLet=43]=`DeclareLet`,e[e.StoreLet=44]=`StoreLet`,e[e.I18nStart=45]=`I18nStart`,e[e.I18n=46]=`I18n`,e[e.I18nEnd=47]=`I18nEnd`,e[e.I18nExpression=48]=`I18nExpression`,e[e.I18nApply=49]=`I18nApply`,e[e.IcuStart=50]=`IcuStart`,e[e.IcuEnd=51]=`IcuEnd`,e[e.IcuPlaceholder=52]=`IcuPlaceholder`,e[e.I18nContext=53]=`I18nContext`,e[e.I18nAttributes=54]=`I18nAttributes`,e[e.SourceLocation=55]=`SourceLocation`,e[e.Animation=56]=`Animation`,e[e.AnimationString=57]=`AnimationString`,e[e.AnimationBinding=58]=`AnimationBinding`,e[e.AnimationListener=59]=`AnimationListener`,e[e.Control=60]=`Control`,e[e.ControlCreate=61]=`ControlCreate`,e})(jt||{}),Mt=(function(e){return e[e.LexicalRead=0]=`LexicalRead`,e[e.Context=1]=`Context`,e[e.TrackContext=2]=`TrackContext`,e[e.ReadVariable=3]=`ReadVariable`,e[e.NextContext=4]=`NextContext`,e[e.Reference=5]=`Reference`,e[e.StoreLet=6]=`StoreLet`,e[e.ContextLetReference=7]=`ContextLetReference`,e[e.GetCurrentView=8]=`GetCurrentView`,e[e.RestoreView=9]=`RestoreView`,e[e.ResetView=10]=`ResetView`,e[e.PureFunctionExpr=11]=`PureFunctionExpr`,e[e.PureFunctionParameterExpr=12]=`PureFunctionParameterExpr`,e[e.PipeBinding=13]=`PipeBinding`,e[e.PipeBindingVariadic=14]=`PipeBindingVariadic`,e[e.SafePropertyRead=15]=`SafePropertyRead`,e[e.SafeKeyedRead=16]=`SafeKeyedRead`,e[e.SafeNavigationMigration=17]=`SafeNavigationMigration`,e[e.SafeTernaryExpr=18]=`SafeTernaryExpr`,e[e.EmptyExpr=19]=`EmptyExpr`,e[e.AssignTemporaryExpr=20]=`AssignTemporaryExpr`,e[e.ReadTemporaryExpr=21]=`ReadTemporaryExpr`,e[e.SlotLiteralExpr=22]=`SlotLiteralExpr`,e[e.ConditionalCase=23]=`ConditionalCase`,e[e.ConstCollected=24]=`ConstCollected`,e[e.TwoWayBindingSet=25]=`TwoWayBindingSet`,e[e.ForeignContent=26]=`ForeignContent`,e[e.ArrowFunction=27]=`ArrowFunction`,e})(Mt||{}),Nt=(function(e){return e[e.None=0]=`None`,e[e.AlwaysInline=1]=`AlwaysInline`,e})(Nt||{}),Pt=(function(e){return e[e.Context=0]=`Context`,e[e.Identifier=1]=`Identifier`,e[e.SavedView=2]=`SavedView`,e[e.Alias=3]=`Alias`,e})(Pt||{}),Ft=(function(e){return e[e.Attribute=0]=`Attribute`,e[e.ClassName=1]=`ClassName`,e[e.StyleProperty=2]=`StyleProperty`,e[e.Property=3]=`Property`,e[e.Template=4]=`Template`,e[e.I18n=5]=`I18n`,e[e.LegacyAnimation=6]=`LegacyAnimation`,e[e.TwoWayProperty=7]=`TwoWayProperty`,e[e.Animation=8]=`Animation`,e})(Ft||{}),It=(function(e){return e[e.Creation=0]=`Creation`,e[e.Postproccessing=1]=`Postproccessing`,e})(It||{}),Lt=(function(e){return e[e.I18nText=0]=`I18nText`,e[e.I18nAttribute=1]=`I18nAttribute`,e})(Lt||{}),Rt=(function(e){return e[e.None=0]=`None`,e[e.ElementTag=1]=`ElementTag`,e[e.TemplateTag=2]=`TemplateTag`,e[e.OpenTag=4]=`OpenTag`,e[e.CloseTag=8]=`CloseTag`,e[e.ExpressionIndex=16]=`ExpressionIndex`,e})(Rt||{}),zt=(function(e){return e[e.HTML=0]=`HTML`,e[e.SVG=1]=`SVG`,e[e.Math=2]=`Math`,e})(zt||{}),Bt=(function(e){return e[e.Idle=0]=`Idle`,e[e.Immediate=1]=`Immediate`,e[e.Timer=2]=`Timer`,e[e.Hover=3]=`Hover`,e[e.Interaction=4]=`Interaction`,e[e.Viewport=5]=`Viewport`,e[e.Never=6]=`Never`,e})(Bt||{}),Vt=(function(e){return e[e.RootI18n=0]=`RootI18n`,e[e.Icu=1]=`Icu`,e[e.Attr=2]=`Attr`,e})(Vt||{}),Ht=(function(e){return e[e.NgTemplate=0]=`NgTemplate`,e[e.Structural=1]=`Structural`,e[e.Block=2]=`Block`,e})(Ht||{}),Ut=(function(e){return e[e.None=0]=`None`,e[e.InChildOperation=1]=`InChildOperation`,e[e.InArrowFunctionOperation=2]=`InArrowFunctionOperation`,e[e.InSafeNavigationMigration=4]=`InSafeNavigationMigration`,e})(Ut||{});jt.Element,jt.ElementStart,jt.Container,jt.ContainerStart,jt.Template,jt.RepeaterCreate,jt.ConditionalCreate,jt.ConditionalBranchCreate;var b=(function(e){return e[e.Tmpl=0]=`Tmpl`,e[e.Host=1]=`Host`,e[e.Both=2]=`Both`,e})(b||{}),Wt=(function(e){return e[e.Full=0]=`Full`,e[e.DomOnly=1]=`DomOnly`,e})(Wt||{});y.ariaProperty,y.ariaProperty,y.attribute,y.attribute,y.classProp,y.classProp,y.element,y.element,y.elementContainer,y.elementContainer,y.elementContainerEnd,y.elementContainerEnd,y.elementContainerStart,y.elementContainerStart,y.elementEnd,y.elementEnd,y.elementStart,y.elementStart,y.domProperty,y.domProperty,y.i18nExp,y.i18nExp,y.listener,y.listener,y.listener,y.listener,y.property,y.property,y.styleProp,y.styleProp,y.syntheticHostListener,y.syntheticHostListener,y.syntheticHostProperty,y.syntheticHostProperty,y.templateCreate,y.templateCreate,y.twoWayProperty,y.twoWayProperty,y.twoWayListener,y.twoWayListener,y.declareLet,y.declareLet,y.conditionalCreate,y.conditionalBranchCreate,y.conditionalBranchCreate,y.conditionalBranchCreate,y.domElement,y.domElement,y.domElementStart,y.domElementStart,y.domElementEnd,y.domElementEnd,y.domElementContainer,y.domElementContainer,y.domElementContainerStart,y.domElementContainerStart,y.domElementContainerEnd,y.domElementContainerEnd,y.domListener,y.domListener,y.domTemplate,y.domTemplate,y.animationEnter,y.animationEnter,y.animationLeave,y.animationLeave,y.animationEnterListener,y.animationEnterListener,y.animationLeaveListener,y.animationLeaveListener,_.And,_.Bigger,_.BiggerEquals,_.BitwiseOr,_.BitwiseAnd,_.Divide,_.Assign,_.Equals,_.Identical,_.Lower,_.LowerEquals,_.Minus,_.Modulo,_.Exponentiation,_.Multiply,_.NotEquals,_.NotIdentical,_.NullishCoalesce,_.Or,_.Plus,_.In,_.InstanceOf,_.AdditionAssignment,_.SubtractionAssignment,_.MultiplicationAssignment,_.DivisionAssignment,_.RemainderAssignment,_.ExponentiationAssignment,_.AndAssignment,_.OrAssignment,_.NullishCoalesceAssignment,jt.Property,jt.Property,jt.Property,jt.Attribute,jt.Attribute,jt.Property,jt.TwoWayProperty,jt.Container,jt.ContainerStart,jt.ContainerEnd,jt.Element,jt.ElementStart,jt.ElementEnd,jt.Template,jt.ElementEnd,jt.ElementStart,jt.Element,jt.ContainerEnd,jt.ContainerStart,jt.Container,jt.I18nEnd,jt.I18nStart,jt.I18n,jt.Pipe;var Gt=` \f +\r \v ᠎ - \u2028\u2029   `;`${Gt}`,`${Gt}`;var Kt=(function(e){return e[e.Character=0]=`Character`,e[e.Identifier=1]=`Identifier`,e[e.PrivateIdentifier=2]=`PrivateIdentifier`,e[e.Keyword=3]=`Keyword`,e[e.String=4]=`String`,e[e.Operator=5]=`Operator`,e[e.Number=6]=`Number`,e[e.RegExpBody=7]=`RegExpBody`,e[e.RegExpFlags=8]=`RegExpFlags`,e[e.Error=9]=`Error`,e})(Kt||{}),qt=(function(e){return e[e.Plain=0]=`Plain`,e[e.TemplateLiteralPart=1]=`TemplateLiteralPart`,e[e.TemplateLiteralEnd=2]=`TemplateLiteralEnd`,e})(qt||{});Kt.Character,jt.StyleMap,jt.ClassMap,jt.StyleProp,jt.ClassProp,jt.Attribute,jt.Property,jt.Attribute,jt.Control,jt.DomProperty,jt.DomProperty,jt.Attribute,jt.StyleMap,jt.ClassMap,jt.StyleProp,jt.ClassProp,jt.Listener,jt.TwoWayListener,jt.AnimationListener,jt.StyleMap,jt.ClassMap,jt.StyleProp,jt.ClassProp,jt.Property,jt.TwoWayProperty,jt.DomProperty,jt.Attribute,jt.Animation,jt.Control,Bt.Idle,y.deferOnIdle,y.deferPrefetchOnIdle,y.deferHydrateOnIdle,Bt.Immediate,y.deferOnImmediate,y.deferPrefetchOnImmediate,y.deferHydrateOnImmediate,Bt.Timer,y.deferOnTimer,y.deferPrefetchOnTimer,y.deferHydrateOnTimer,Bt.Hover,y.deferOnHover,y.deferPrefetchOnHover,y.deferHydrateOnHover,Bt.Interaction,y.deferOnInteraction,y.deferPrefetchOnInteraction,y.deferHydrateOnInteraction,Bt.Viewport,y.deferOnViewport,y.deferPrefetchOnViewport,y.deferHydrateOnViewport,Bt.Never,y.deferHydrateNever,y.deferHydrateNever,y.deferHydrateNever,y.pipeBind1,y.pipeBind2,y.pipeBind3,y.pipeBind4,y.textInterpolate,y.textInterpolate1,y.textInterpolate2,y.textInterpolate3,y.textInterpolate4,y.textInterpolate5,y.textInterpolate6,y.textInterpolate7,y.textInterpolate8,y.textInterpolateV,y.interpolate,y.interpolate1,y.interpolate2,y.interpolate3,y.interpolate4,y.interpolate5,y.interpolate6,y.interpolate7,y.interpolate8,y.interpolateV,y.pureFunction0,y.pureFunction1,y.pureFunction2,y.pureFunction3,y.pureFunction4,y.pureFunction5,y.pureFunction6,y.pureFunction7,y.pureFunction8,y.pureFunctionV,y.resolveWindow,y.resolveDocument,y.resolveBody,nt.HTML,y.sanitizeHtml,nt.RESOURCE_URL,y.sanitizeResourceUrl,nt.SCRIPT,y.sanitizeScript,nt.STYLE,y.sanitizeStyle,nt.URL,y.sanitizeUrl,nt.ATTRIBUTE_NO_BINDING,y.validateAttribute,nt.HTML,y.trustConstantHtml,nt.RESOURCE_URL,y.trustConstantResourceUrl;var Jt=(function(e){return e[e.None=0]=`None`,e[e.ViewContextRead=1]=`ViewContextRead`,e[e.ViewContextWrite=2]=`ViewContextWrite`,e[e.SideEffectful=4]=`SideEffectful`,e})(Jt||{});b.Tmpl,b.Tmpl,b.Both,b.Host,b.Tmpl,b.Tmpl,b.Tmpl,b.Both,b.Both,b.Both,b.Tmpl,b.Both,b.Both,b.Tmpl,b.Both,b.Tmpl,b.Both,b.Both,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Both,b.Both,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Both,b.Both,b.Both,b.Tmpl,b.Tmpl,b.Both,b.Tmpl,b.Tmpl,b.Tmpl,b.Both,b.Both,b.Tmpl,b.Both,b.Both,b.Both,b.Both,b.Both,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Both,b.Tmpl,b.Both,b.Tmpl,b.Both,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Tmpl,b.Both,b.Both,b.Both,Ct.Property,Ft.Property,Ct.TwoWay,Ft.TwoWayProperty,Ct.Attribute,Ft.Attribute,Ct.Class,Ft.ClassName,Ct.Style,Ft.StyleProperty,Ct.LegacyAnimation,Ft.LegacyAnimation,Ct.Animation,Ft.Animation;var Yt=`%COMP%`;`${Yt}`,`${Yt}`,class e{static SINGLETON=new e;static veWillInferAnyFor(t){let n=e.SINGLETON;return t instanceof St?t.visit(n):t.receiver.visit(n)}visitUnary(e){return e.expr.visit(this)}visitBinary(e){return e.left.visit(this)||e.right.visit(this)}visitChain(){return!1}visitConditional(e){return e.condition.visit(this)||e.trueExp.visit(this)||e.falseExp.visit(this)}visitCall(){return!0}visitSafeCall(){return!1}visitImplicitReceiver(){return!1}visitThisReceiver(){return!1}visitInterpolation(e){return e.expressions.some(e=>e.visit(this))}visitKeyedRead(){return!1}visitLiteralArray(){return!0}visitLiteralMap(){return!0}visitLiteralPrimitive(){return!1}visitPipe(){return!0}visitPrefixNot(e){return e.expression.visit(this)}visitTypeofExpression(e){return e.expression.visit(this)}visitVoidExpression(e){return e.expression.visit(this)}visitNonNullAssert(e){return e.expression.visit(this)}visitPropertyRead(){return!1}visitSafePropertyRead(){return!1}visitSafeKeyedRead(){return!1}visitTemplateLiteral(){return!1}visitTemplateLiteralElement(){return!1}visitTaggedTemplateLiteral(){return!1}visitParenthesizedExpression(e){return e.expression.visit(this)}visitRegularExpressionLiteral(){return!1}visitSpreadElement(e){return e.expression.visit(this)}visitArrowFunction(e,t){return!1}};var Xt=null,Zt=!1,Qt=1,$t=null,en=Symbol(`SIGNAL`);function tn(e){let t=Xt;return Xt=e,t}function nn(){return Xt}var rn={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 an(e){if(Zt)throw Error(``);if(Xt===null)return;Xt.consumerOnSignalRead(e);let t=Xt.producersTail;if(t!==void 0&&t.producer===e)return;let n,r=Xt.recomputing;if(r&&(n=t===void 0?Xt.producers:t.nextProducer,n!==void 0&&n.producer===e)){Xt.producersTail=n,n.lastReadVersion=e.version,n.knownValidAtEpoch=Qt;return}let i=e.consumersTail;if(i!==void 0&&i.consumer===Xt&&(!r||i.knownValidAtEpoch===Qt))return;let a=bn(Xt),o={producer:e,consumer:Xt,nextProducer:n,prevConsumer:void 0,knownValidAtEpoch:Qt,lastReadVersion:e.version,nextConsumer:void 0};Xt.producersTail=o,t===void 0?Xt.producers=o:t.nextProducer=o,a&&vn(e,o)}function on(){Qt++}function sn(e){if((!bn(e)||e.dirty)&&(e.dirty||e.lastCleanEpoch!==Qt)){if(!e.producerMustRecompute(e)&&!gn(e)){dn(e);return}e.producerRecomputeValue(e),dn(e)}}function cn(e){if(e.consumers===void 0)return;let t=Zt;Zt=!0;try{for(let t=e.consumers;t!==void 0;t=t.nextConsumer){let e=t.consumer;e.dirty||un(e)}}finally{Zt=t}}function ln(){return Xt?.consumerAllowSignalWrites!==!1}function un(e){e.dirty=!0,cn(e),e.consumerMarkedDirty?.(e)}function dn(e){e.dirty=!1,e.lastCleanEpoch=Qt}function fn(e){return e&&pn(e),tn(e)}function pn(e){if(e.producersTail?.knownValidAtEpoch===Qt){let t=e.producers;for(;t!==void 0;)t.knownValidAtEpoch=null,t=t.nextProducer}e.producersTail=void 0,e.recomputing=!0}function mn(e,t){tn(t),e&&hn(e)}function hn(e){e.recomputing=!1;let t=e.producersTail,n=t===void 0?e.producers:t.nextProducer;if(n!==void 0){if(bn(e))do n=yn(n);while(n!==void 0);t===void 0?e.producers=void 0:t.nextProducer=void 0}}function gn(e){for(let t=e.producers;t!==void 0;t=t.nextProducer){let e=t.producer,n=t.lastReadVersion;if(n!==e.version||(sn(e),n!==e.version))return!0}return!1}function _n(e){if(bn(e)){let t=e.producers;for(;t!==void 0;)t=yn(t)}e.producers=void 0,e.producersTail=void 0,e.consumers=void 0,e.consumersTail=void 0}function vn(e,t){let n=e.consumersTail,r=bn(e);if(n===void 0?(t.nextConsumer=void 0,e.consumers=t):(t.nextConsumer=n.nextConsumer,n.nextConsumer=t),t.prevConsumer=n,e.consumersTail=t,!r)for(let t=e.producers;t!==void 0;t=t.nextProducer)vn(t.producer,t)}function yn(e){let t=e.producer,n=e.nextProducer,r=e.nextConsumer,i=e.prevConsumer;if(e.nextConsumer=void 0,e.prevConsumer=void 0,r===void 0?t.consumersTail=i:r.prevConsumer=i,i!==void 0)i.nextConsumer=r;else if(t.consumers=r,!bn(t)){let e=t.producers;for(;e!==void 0;)e=yn(e)}return n}function bn(e){return e.consumerIsAlwaysLive||e.consumers!==void 0}function xn(e){$t?.(e)}function Sn(e,t){return Object.is(e,t)}function Cn(e,t){let n=Object.create(pee);n.computation=e,t!==void 0&&(n.equal=t);let r=()=>{if(sn(n),an(n),n.value===En)throw n.error;return n.value};return r[en]=n,xn(n),r}var wn=Symbol(`UNSET`),Tn=Symbol(`COMPUTING`),En=Symbol(`ERRORED`),pee={...rn,value:wn,dirty:!0,error:null,equal:Sn,kind:`computed`,producerMustRecompute(e){return e.value===wn||e.value===Tn},producerRecomputeValue(e){if(e.value===Tn)throw Error(``);let t=e.value;e.value=Tn;let n=fn(e),r,i=!1;try{r=e.computation(),tn(null),i=t!==wn&&t!==En&&r!==En&&e.equal(t,r)}catch(t){r=En,e.error=t}finally{mn(e,n)}if(i){e.value=t;return}e.value=r,e.version++}};function mee(){throw Error()}var Dn=mee;function On(e){Dn(e)}function hee(e){Dn=e}var gee=null;function _ee(e,t){let n=Object.create(jn);n.value=e,t!==void 0&&(n.equal=t);let r=()=>vee(n);return r[en]=n,xn(n),[r,e=>kn(n,e),e=>An(n,e)]}function vee(e){return an(e),e.value}function kn(e,t){ln()||On(e),e.equal(e.value,t)||(e.value=t,Mn(e))}function An(e,t){ln()||On(e),kn(e,t(e.value))}var jn={...rn,equal:Sn,value:void 0,kind:`signal`};function Mn(e){e.version++,on(),cn(e),gee?.(e)}var Nn={...rn,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,kind:`effect`};function Pn(e){if(e.dirty=!1,e.version>0&&!gn(e))return;e.version++;let t=fn(e);try{e.cleanup(),e.fn()}finally{mn(e,t)}}var Fn=void 0;function In(){return Fn}function Ln(e){let t=Fn;return Fn=e,t}var Rn=Symbol(`NotFound`);function zn(e){return e===Rn||e?.name===`ɵNotFound`}function Bn(e,t,n){let r=Object.create(Un);r.source=e,r.computation=t,n!=null&&(r.equal=n);let i=()=>{if(sn(r),an(r),r.value===En)throw r.error;return r.value};return i[en]=r,xn(r),i}function Vn(e,t){sn(e),kn(e,t),dn(e)}function Hn(e,t){if(sn(e),e.value===En)throw e.error;An(e,t),dn(e)}var Un={...rn,value:wn,dirty:!0,error:null,equal:Sn,kind:`linkedSignal`,producerMustRecompute(e){return e.value===wn||e.value===Tn},producerRecomputeValue(e){if(e.value===Tn)throw Error(``);let t=e.value;e.value=Tn;let n=fn(e),r,i=!1;try{let n=e.source(),a=t!==wn&&t!==En,o=a?{source:e.sourceValue,value:t}:void 0;r=e.computation(n,o),e.sourceValue=n,tn(null),i=a&&r!==En&&e.equal(t,r)}catch(t){r=En,e.error=t}finally{mn(e,n)}if(i){e.value=t;return}e.value=r,e.version++}};function Wn(e){let t=tn(null);try{return e()}finally{tn(t)}}var Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)};function Kn(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);Gn(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}function qn(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}function Jn(e,t){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,o=Object.create((typeof Iterator==`function`?Iterator:Object).prototype);return o.next=s(0),o.throw=s(1),o.return=s(2),typeof Symbol==`function`&&(o[Symbol.iterator]=function(){return this}),o;function s(e){return function(t){return c([e,t])}}function c(s){if(r)throw TypeError(`Generator is already executing.`);for(;o&&(o=0,s[0]&&(n=0)),n;)try{if(r=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return n.label++,{value:s[1],done:!1};case 5:n.label++,i=s[1],s=[0];continue;case 7:s=n.ops.pop(),n.trys.pop();continue;default:if(a=n.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function Xn(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-->0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function Zn(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r1||c(e,t)})},t&&(i[e]=t(i[e])))}function c(e,t){try{l(r[e](t))}catch(e){f(a[0][3],e)}}function l(e){e.value instanceof Qn?Promise.resolve(e.value.v).then(u,d):f(a[0][2],e)}function u(e){c(`next`,e)}function d(e){c(`throw`,e)}function f(e,t){e(t),a.shift(),a.length&&c(a[0][0],a[0][1])}}function er(e){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof Yn==`function`?Yn(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise(function(r,a){n=e[t](n),i(r,a,n.done,n.value)})}}function i(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}}function tr(e){return typeof e==`function`}function nr(e){var t=e(function(e){Error.call(e),e.stack=Error().stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var rr=nr(function(e){return function(t){e(this),this.message=t?t.length+` errors occurred during unsubscription: `+t.map(function(e,t){return t+1+`) `+e.toString()}).join(` - `):``,this.name=`UnsubscriptionError`,this.errors=t}});function ir(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var ar=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var e,t,n,r,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a){if(this._parentage=null,Array.isArray(a))try{for(var o=Yn(a),s=o.next();!s.done;s=o.next())s.value.remove(this)}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else a.remove(this)}var c=this.initialTeardown;if(tr(c))try{c()}catch(e){i=e instanceof rr?e.errors:[e]}var l=this._finalizers;if(l){this._finalizers=null;try{for(var u=Yn(l),d=u.next();!d.done;d=u.next()){var f=d.value;try{cr(f)}catch(e){i??=[],e instanceof rr?i=Zn(Zn([],Xn(i)),Xn(e.errors)):i.push(e)}}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(i)throw new rr(i)}},e.prototype.add=function(t){if(t&&t!==this){if(this.closed)cr(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=this._finalizers??[]).push(t)}}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&ir(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&ir(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=(function(){var t=new e;return t.closed=!0,t})(),e}(),or=ar.EMPTY;function sr(e){return e instanceof ar||e&&`closed`in e&&tr(e.remove)&&tr(e.add)&&tr(e.unsubscribe)}function cr(e){tr(e)?e():e.unsubscribe()}var lr={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},ur={setTimeout:function(e,t){var n=[...arguments].slice(2),r=ur.delegate;return r?.setTimeout?r.setTimeout.apply(r,Zn([e,t],Xn(n))):setTimeout.apply(void 0,Zn([e,t],Xn(n)))},clearTimeout:function(e){return(ur.delegate?.clearTimeout||clearTimeout)(e)},delegate:void 0};function dr(e){ur.setTimeout(function(){var t=lr.onUnhandledError;if(t)t(e);else throw e})}function fr(){}var pr=(function(){return gr(`C`,void 0,void 0)})();function mr(e){return gr(`E`,void 0,e)}function hr(e){return gr(`N`,e,void 0)}function gr(e,t,n){return{kind:e,value:t,error:n}}var _r=null;function vr(e){if(lr.useDeprecatedSynchronousErrorHandling){var t=!_r;if(t&&(_r={errorThrown:!1,error:null}),e(),t){var n=_r,r=n.errorThrown,i=n.error;if(_r=null,r)throw i}}else e()}function yr(e){lr.useDeprecatedSynchronousErrorHandling&&_r&&(_r.errorThrown=!0,_r.error=e)}var br=function(e){Kn(t,e);function t(t){var n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,sr(t)&&t.add(n)):n.destination=Or,n}return t.create=function(e,t,n){return new wr(e,t,n)},t.prototype.next=function(e){this.isStopped?Dr(hr(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?Dr(mr(e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?Dr(pr,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(ar),xr=Function.prototype.bind;function Sr(e,t){return xr.call(e,t)}var Cr=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){Tr(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){Tr(e)}else Tr(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){Tr(e)}},e}(),wr=function(e){Kn(t,e);function t(t,n,r){var i=e.call(this)||this,a;if(tr(t)||!t)a={next:t??void 0,error:n??void 0,complete:r??void 0};else{var o;i&&lr.useDeprecatedNextContext?(o=Object.create(t),o.unsubscribe=function(){return i.unsubscribe()},a={next:t.next&&Sr(t.next,o),error:t.error&&Sr(t.error,o),complete:t.complete&&Sr(t.complete,o)}):a=t}return i.destination=new Cr(a),i}return t}(br);function Tr(e){lr.useDeprecatedSynchronousErrorHandling?yr(e):dr(e)}function Er(e){throw e}function Dr(e,t){var n=lr.onStoppedNotification;n&&ur.setTimeout(function(){return n(e,t)})}var Or={closed:!0,next:fr,error:Er,complete:fr},kr=(function(){return typeof Symbol==`function`&&Symbol.observable||`@@observable`})();function Ar(e){return e}function jr(e){return e.length===0?Ar:e.length===1?e[0]:function(t){return e.reduce(function(e,t){return t(e)},t)}}var Mr=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var r=this,i=Fr(e)?e:new wr(e,t,n);return vr(function(){var e=r,t=e.operator,n=e.source;i.add(t?t.call(i,n):n?r._subscribe(i):r._trySubscribe(i))}),i},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var n=this;return t=Nr(t),new t(function(t,r){var i=new wr({next:function(t){try{e(t)}catch(e){r(e),i.unsubscribe()}},error:r,complete:t});n.subscribe(i)})},e.prototype._subscribe=function(e){return this.source?.subscribe(e)},e.prototype[kr]=function(){return this},e.prototype.pipe=function(){return jr([...arguments])(this)},e.prototype.toPromise=function(e){var t=this;return e=Nr(e),new e(function(e,n){var r;t.subscribe(function(e){return r=e},function(e){return n(e)},function(){return e(r)})})},e.create=function(t){return new e(t)},e}();function Nr(e){return e??lr.Promise??Promise}function Pr(e){return e&&tr(e.next)&&tr(e.error)&&tr(e.complete)}function Fr(e){return e&&e instanceof br||Pr(e)&&sr(e)}function Ir(e){return tr(e?.lift)}function Lr(e){return function(t){if(Ir(t))return t.lift(function(t){try{return e(t,this)}catch(e){this.error(e)}});throw TypeError(`Unable to lift unknown Observable type`)}}function Rr(e,t,n,r,i){return new zr(e,t,n,r,i)}var zr=function(e){Kn(t,e);function t(t,n,r,i,a,o){var s=e.call(this,t)||this;return s.onFinalize=a,s.shouldUnsubscribe=o,s._next=n?function(e){try{n(e)}catch(e){t.error(e)}}:e.prototype._next,s._error=i?function(e){try{i(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,s._complete=r?function(){try{r()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,s}return t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&((t=this.onFinalize)==null||t.call(this))}},t}(br),Br=nr(function(e){return function(){e(this),this.name=`ObjectUnsubscribedError`,this.message=`object unsubscribed`}}),Vr=function(e){Kn(t,e);function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return t.prototype.lift=function(e){var t=new Hr(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new Br},t.prototype.next=function(e){var t=this;vr(function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||=Array.from(t.observers);try{for(var i=Yn(t.currentObservers),a=i.next();!a.done;a=i.next())a.value.next(e)}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}})},t.prototype.error=function(e){var t=this;vr(function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var n=t.observers;n.length;)n.shift().error(e)}})},t.prototype.complete=function(){var e=this;vr(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){return this.observers?.length>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,i=n.isStopped,a=n.observers;return r||i?or:(this.currentObservers=null,a.push(e),new ar(function(){t.currentObservers=null,ir(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,i=t.isStopped;n?e.error(r):i&&e.complete()},t.prototype.asObservable=function(){var e=new Mr;return e.source=this,e},t.create=function(e,t){return new Hr(e,t)},t}(Mr),Hr=function(e){Kn(t,e);function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return t.prototype.next=function(e){var t,n;(n=(t=this.destination)?.next)==null||n.call(t,e)},t.prototype.error=function(e){var t,n;(n=(t=this.destination)?.error)==null||n.call(t,e)},t.prototype.complete=function(){var e,t;(t=(e=this.destination)?.complete)==null||t.call(e)},t.prototype._subscribe=function(e){return this.source?.subscribe(e)??or},t}(Vr),Ur=function(e){Kn(t,e);function t(t){var n=e.call(this)||this;return n._value=t,n}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(t){var n=e.prototype._subscribe.call(this,t);return!n.closed&&t.next(this._value),n},t.prototype.getValue=function(){var e=this,t=e.hasError,n=e.thrownError,r=e._value;if(t)throw n;return this._throwIfClosed(),r},t.prototype.next=function(t){e.prototype.next.call(this,this._value=t)},t}(Vr);function Wr(e){return e[e.length-1]}function Gr(e){return tr(Wr(e))?e.pop():void 0}var Kr=(function(e){return e&&typeof e.length==`number`&&typeof e!=`function`});function qr(e){return tr(e?.then)}function Jr(e){return tr(e[kr])}function Yr(e){return Symbol.asyncIterator&&tr(e?.[Symbol.asyncIterator])}function Xr(e){return TypeError(`You provided `+(typeof e==`object`&&e?`an invalid object`:`'`+e+`'`)+` where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function Zr(){return typeof Symbol!=`function`||!Symbol.iterator?`@@iterator`:Symbol.iterator}var Qr=Zr();function $r(e){return tr(e?.[Qr])}function ei(e){return $n(this,arguments,function(){var t,n,r,i;return Jn(this,function(a){switch(a.label){case 0:t=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,Qn(t.read())];case 3:return n=a.sent(),r=n.value,i=n.done,i?[4,Qn(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,Qn(r)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}})})}function ti(e){return tr(e?.getReader)}function ni(e){if(e instanceof Mr)return e;if(e!=null){if(Jr(e))return vee(e);if(Kr(e))return yee(e);if(qr(e))return bee(e);if(Yr(e))return ri(e);if($r(e))return xee(e);if(ti(e))return See(e)}throw Xr(e)}function vee(e){return new Mr(function(t){var n=e[kr]();if(tr(n.subscribe))return n.subscribe(t);throw TypeError(`Provided object does not correctly implement Symbol.observable`)})}function yee(e){return new Mr(function(t){for(var n=0;n=0?n.slice(0,r):n}function mi(e,t){return e?t?`${e} ${t}`:e:t||``}var Wee=fi({__forward_ref__:fi});function hi(e){return e.__forward_ref__=hi,e}function gi(e){return _i(e)?e():e}function _i(e){return typeof e==`function`&&Object.hasOwn(e,Wee)&&e.__forward_ref__===hi}function vi(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function yi(e){return bi(e,Ci)}function bi(e,t){return Object.hasOwn(e,t)&&e[t]||null}function xi(e){return(e?.[Ci]??null)||null}function Si(e){return e&&Object.hasOwn(e,wi)?e[wi]:null}var Ci=fi({ɵprov:fi}),wi=fi({ɵinj:fi}),Ti=class{_desc;ngMetadataName=`InjectionToken`;ɵprov;constructor(e,t){this._desc=e,this.ɵprov=void 0,typeof t==`number`?this.__NG_ELEMENT_ID__=t:t!==void 0&&(this.ɵprov=vi({token:this,providedIn:t.providedIn||`root`,factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function Ei(e){return e&&!!e.ɵproviders}var Di=fi({ɵcmp:fi}),Oi=fi({ɵdir:fi}),ki=fi({ɵpipe:fi}),Ai=fi({ɵfac:fi}),ji=fi({__NG_ELEMENT_ID__:fi}),Mi=fi({__NG_ENV_ID__:fi});function Ni(e){return Ii(e,`@Component`),e[Di]||null}function Pi(e){return Ii(e,`@Directive`),e[Oi]||null}function Fi(e){return Ii(e,`@Pipe`),e[ki]||null}function Ii(e,t){if(e==null)throw new ui(-919,!1)}function Li(e){return typeof e==`string`?e:e==null?``:String(e)}var Ri=fi({ngErrorCode:fi}),zi=fi({ngErrorMessage:fi}),Bi=fi({ngTokenPath:fi});function Vi(e,t){return Ui(``,-200,t)}function Hi(e,t){throw new ui(-201,!1)}function Ui(e,t,n){let r=new ui(t,e);return r[Ri]=t,r[zi]=e,n&&(r[Bi]=n),r}function Wi(e){return e[Ri]}var Gi;function Ki(){return Gi}function qi(e){let t=Gi;return Gi=e,t}function Ji(e,t,n){let r=yi(e);if(r&&r.providedIn==`root`)return r.value===void 0?r.value=r.factory():r.value;if(n&8)return null;if(t!==void 0)return t;Hi(e,``)}var Yi=globalThis,Xi={},Zi=`__NG_DI_FLAG__`,Qi=class{injector;constructor(e){this.injector=e}retrieve(e,t){let n=ta(t)||0;try{return this.injector.get(e,n&8?null:Xi,n)}catch(e){if(zn(e))return e;throw e}}};function $i(e,t=0){let n=In();if(n===void 0)throw new ui(-203,!1);if(n===null)return Ji(e,void 0,t);{let r=na(t),i=n.retrieve(e,r);if(zn(i)){if(r.optional)return null;throw i}return i}}function ea(e,t=0){return(Ki()||$i)(gi(e),t)}function S(e,t){return ea(e,ta(t))}function ta(e){return e===void 0||typeof e==`number`?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function na(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function ra(e){let t=[];for(let n=0;nArray.isArray(e)?ca(e,t):t(e))}function la(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function ua(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function da(e,t){let n=[];for(let r=0;rt;){let t=i-2;e[i]=e[t],i--}e[t]=n,e[t+1]=r}}function pa(e,t,n){let r=ha(e,t);return r>=0?e[r|1]=n:(r=~r,fa(e,r,t,n)),r}function ma(e,t){let n=ha(e,t);if(n>=0)return e[n|1]}function ha(e,t){return ga(e,t,1)}function ga(e,t,n){let r=0,i=e.length>>n;for(;i!==r;){let a=r+(i-r>>1),o=e[a<t?i=a:r=a+1}return~(i<{n.push(e)};return ca(t,e=>{let t=e;Ea(t,a,[],r)&&(i||=[],i.push(t))}),i!==void 0&&Ta(i,a),n}function Ta(e,t){for(let n=0;n{t(e,r)})}}function Ea(e,t,n,r){if(e=gi(e),!e)return!1;let i=null,a=Si(e),o=!a&&Ni(e);if(!a&&!o){let t=e.ngModule;if(a=Si(t),a)i=t;else return!1}else if(o&&!o.standalone)return!1;else i=e;let s=r.has(i);if(o){if(s)return!1;if(r.add(i),o.dependencies){let e=typeof o.dependencies==`function`?o.dependencies():o.dependencies;for(let i of e)Ea(i,t,n,r)}}else if(a){if(a.imports!=null&&!s){r.add(i);let e;try{ca(a.imports,i=>{Ea(i,t,n,r)&&(e||=[],e.push(i))})}finally{}e!==void 0&&Ta(e,t)}if(!s){let e=aa(i)||(()=>new i);t({provide:i,useFactory:e,deps:va},i),t({provide:xa,useValue:i,multi:!0},i),t({provide:ya,useValue:()=>ea(i),multi:!0},i)}let o=a.providers;if(o!=null&&!s){let n=e;Da(o,e=>{t(e,n)})}}else return!1;return i!==e&&e.providers!==void 0}function Da(e,t){for(let n of e)Ei(n)&&(n=n.ɵproviders),Array.isArray(n)?Da(n,t):t(n)}var Oa=fi({provide:String,useValue:fi});function ka(e){return typeof e==`object`&&!!e&&Oa in e}function Aa(e){return!!(e&&e.useExisting)}function ja(e){return!!(e&&e.useFactory)}function Ma(e){return typeof e==`function`}function Na(e){return!!e.useClass}var Pa=new Ti(``),Fa={},Ia={},La=void 0;function Ra(){return La===void 0&&(La=new Sa),La}var za=class{},Ba=class extends za{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(e,t,n,r){super(),this.parent=t,this.source=n,this.scopes=r,Xa(e,e=>this.processProvider(e)),this.records.set(ba,Ka(void 0,this)),r.has(`environment`)&&this.records.set(za,Ka(void 0,this));let i=this.records.get(Pa);i!=null&&typeof i.value==`string`&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(xa,va,{self:!0}))}retrieve(e,t){let n=ta(t)||0;try{return this.get(e,Xi,n)}catch(e){if(zn(e))return e;throw e}}destroy(){Ga(this),this._destroyed=!0;let e=en(null);try{for(let e of this._ngOnDestroyHooks)e.ngOnDestroy();let e=this._onDestroyHooks;this._onDestroyHooks=[];for(let t of e)t()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),en(e)}}onDestroy(e){return Ga(this),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){Ga(this);let t=Ln(this),n=qi(void 0);try{return e()}finally{Ln(t),qi(n)}}get(e,t=Xi,n){if(Ga(this),Object.hasOwn(e,Mi))return e[Mi](this);let r=ta(n),i=Ln(this),a=qi(void 0);try{if(!(r&4)){let t=this.records.get(e);if(t===void 0){let n=Ya(e)&&yi(e);t=n&&this.injectableDefInScope(n)?Ka(Va(e),Fa):null,this.records.set(e,t)}if(t!=null)return this.hydrate(e,t,r)}let n=r&2?Ra():this.parent;return t=r&8&&t===Xi?null:t,n.get(e,t)}catch(e){let t=Wi(e);throw t===-200||t===-201?new ui(t,null):e}finally{qi(a),Ln(i)}}resolveInjectorInitializers(){let e=en(null),t=Ln(this),n=qi(void 0);try{let e=this.get(ya,va,{self:!0});for(let t of e)t()}finally{Ln(t),qi(n),en(e)}}toString(){return`R3Injector[...]`}processProvider(e){e=gi(e);let t=Ma(e)?e:gi(e&&e.provide),n=Ua(e);if(!Ma(e)&&e.multi===!0){let n=this.records.get(t);n||(n=Ka(void 0,Fa,!0),n.factory=()=>ra(n.multi),this.records.set(t,n)),t=e,n.multi.push(e)}this.records.set(t,n)}hydrate(e,t,n){let r=en(null);try{if(t.value===Ia)throw Vi(``);return t.value===Fa&&(t.value=Ia,t.value=t.factory(void 0,n)),typeof t.value==`object`&&t.value&&Ja(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{en(r)}}injectableDefInScope(e){if(!e.providedIn)return!1;let t=gi(e.providedIn);return typeof t==`string`?t===`any`||this.scopes.has(t):this.injectorDefTypes.has(t)}removeOnDestroy(e){let t=this._onDestroyHooks.indexOf(e);t!==-1&&this._onDestroyHooks.splice(t,1)}};function Va(e){let t=yi(e),n=t===null?aa(e):t.factory;if(n!==null)return n;if(e instanceof Ti)throw new ui(-204,!1);if(e instanceof Function)return Ha(e);throw new ui(-204,!1)}function Ha(e){if(e.length>0)throw new ui(-204,!1);let t=xi(e);return t===null?()=>new e:()=>t.factory(e)}function Ua(e){return ka(e)?Ka(void 0,e.useValue):Ka(Wa(e),Fa)}function Wa(e,t,n){let r;if(Ma(e)){let t=gi(e);return aa(t)||Va(t)}if(ka(e))r=()=>gi(e.useValue);else if(ja(e))r=()=>e.useFactory(...ra(e.deps||[]));else if(Aa(e))r=(t,n)=>ea(gi(e.useExisting),n!==void 0&&n&8?8:void 0);else{let t=gi(e&&(e.useClass||e.provide));if(qa(e))r=()=>new t(...ra(e.deps));else return aa(t)||Va(t)}return r}function Ga(e){if(e.destroyed)throw new ui(-205,!1)}function Ka(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function qa(e){return!!e.deps}function Ja(e){return typeof e==`object`&&!!e&&typeof e.ngOnDestroy==`function`}function Ya(e){return typeof e==`function`||typeof e==`object`&&e.ngMetadataName===`InjectionToken`}function Xa(e,t){for(let n of e)Array.isArray(n)?Xa(n,t):n&&Ei(n)?Xa(n.ɵproviders,t):t(n)}function Za(e,t){let n;e instanceof Ba?(Ga(e),n=e):n=new Qi(e);let r=Ln(n),i=qi(void 0);try{return t()}finally{Ln(r),qi(i)}}function Qa(){return Ki()!==void 0||In()!=null}var $a=1;function eo(e){return Array.isArray(e)&&typeof e[$a]==`object`}function to(e){return Array.isArray(e)&&e[$a]===!0}function no(e){return!!(e.flags&4)}function ro(e){return e.componentOffset>-1}function io(e){return(e.flags&1)==1}function ao(e){return!!e.template}function oo(e){return!!(e[2]&512)}function so(e){return(e[2]&256)==256}var co=(function(e){return e[e.NONE=0]=`NONE`,e[e.HTML=1]=`HTML`,e[e.STYLE=2]=`STYLE`,e[e.SCRIPT=3]=`SCRIPT`,e[e.URL=4]=`URL`,e[e.RESOURCE_URL=5]=`RESOURCE_URL`,e[e.ATTRIBUTE_NO_BINDING=6]=`ATTRIBUTE_NO_BINDING`,e})(co||{}),lo=`math`;function uo(e){for(;Array.isArray(e);)e=e[0];return e}function fo(e,t){return uo(t[e])}function po(e,t){return uo(t[e.index])}function mo(e,t){return e.data[t]}function ho(e,t){return e[t]}function go(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function _o(e,t){let n=t[e];return eo(n)?n:n[0]}function vo(e){return(e[2]&128)==128}function Gee(e){return to(e[3])}function yo(e,t){return t==null?null:e[t]}function bo(e){e[17]=0}function xo(e){e[2]&1024||(e[2]|=1024,vo(e)&&wo(e))}function Kee(e,t){for(;e>0;)t=t[14],e--;return t}function So(e){return!!(e[2]&9216||e[24]?.dirty)}function Co(e){e[10].changeDetectionScheduler?.notify(8),e[2]&64&&(e[2]|=1024),So(e)&&wo(e)}function wo(e){e[10].changeDetectionScheduler?.notify(0);let t=Eo(e);for(;t!==null&&!(t[2]&8192||(t[2]|=8192,!vo(t)));)t=Eo(t)}function To(e,t){if(so(e))throw new ui(911,!1);e[21]===null&&(e[21]=[]),e[21].push(t)}function qee(e,t){if(e[21]===null)return;let n=e[21].indexOf(t);n!==-1&&e[21].splice(n,1)}function Eo(e){let t=e[3];return to(t)?t[3]:t}function Do(e){return e[7]??=[]}function Oo(e){return e.cleanup??=[]}function Jee(e,t,n,r){let i=Do(t);i.push(n),e.firstCreatePass&&Oo(e).push(r,i.length-1)}var ko={lFrame:ts(null),bindingsEnabled:!0,skipHydrationRootTNode:null},Ao=!1;function Yee(){return ko.lFrame.elementDepthCount}function Xee(){ko.lFrame.elementDepthCount++}function jo(){ko.lFrame.elementDepthCount--}function Mo(){return ko.bindingsEnabled}function No(){return ko.skipHydrationRootTNode!==null}function Po(e){return ko.skipHydrationRootTNode===e}function Fo(){ko.skipHydrationRootTNode=null}function Io(){return ko.lFrame.lView}function Lo(){return ko.lFrame.tView}function C(e){return ko.lFrame.contextLView=e,e[8]}function w(e){return ko.lFrame.contextLView=null,e}function Ro(){let e=zo();for(;e!==null&&e.type===64;)e=e.parent;return e}function zo(){return ko.lFrame.currentTNode}function Zee(){let e=ko.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function Bo(e,t){let n=ko.lFrame;n.currentTNode=e,n.isParent=t}function Vo(){return ko.lFrame.isParent}function Ho(){ko.lFrame.isParent=!1}function Uo(){return ko.lFrame.contextLView}function Wo(){return Ao}function Go(e){let t=Ao;return Ao=e,t}function Ko(){let e=ko.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function qo(){return ko.lFrame.bindingIndex}function Qee(e){return ko.lFrame.bindingIndex=e}function Jo(){return ko.lFrame.bindingIndex++}function Yo(e){let t=ko.lFrame,n=t.bindingIndex;return t.bindingIndex+=e,n}function $ee(){return ko.lFrame.inI18n}function ete(e,t){let n=ko.lFrame;n.bindingIndex=n.bindingRootIndex=e,Xo(t)}function tte(){return ko.lFrame.currentDirectiveIndex}function Xo(e){ko.lFrame.currentDirectiveIndex=e}function nte(e){let t=ko.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function rte(){return ko.lFrame.currentQueryIndex}function Zo(e){ko.lFrame.currentQueryIndex=e}function ite(e){let t=e[1];return t.type===2?t.declTNode:t.type===1?e[5]:null}function Qo(e,t,n){if(n&4){let r=t,i=e;for(;r=r.parent,r===null&&!(n&1)&&(r=ite(i),!(r===null||(i=i[14],r.type&10))););if(r===null)return!1;t=r,e=i}let r=ko.lFrame=es();return r.currentTNode=t,r.lView=e,!0}function $o(e){let t=es(),n=e[1];ko.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function es(){let e=ko.lFrame,t=e===null?null:e.child;return t===null?ts(e):t}function ts(e){let t={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:e,child:null,inI18n:!1};return e!==null&&(e.child=t),t}function ns(){let e=ko.lFrame;return ko.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var rs=ns;function is(){let e=ns();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function ate(e){return(ko.lFrame.contextLView=Kee(e,ko.lFrame.contextLView))[8]}function as(){return ko.lFrame.selectedIndex}function os(e){ko.lFrame.selectedIndex=e}function ss(){let e=ko.lFrame;return mo(e.tView,e.selectedIndex)}function T(){ko.lFrame.currentNamespace=`svg`}function cs(){ls()}function ls(){ko.lFrame.currentNamespace=null}function us(){return ko.lFrame.currentNamespace}var ds=!0;function fs(){return ds}function ps(e){ds=e}function ms(e,t=null,n=null,r){let i=hs(e,t,n,r);return i.resolveInjectorInitializers(),i}function hs(e,t=null,n=null,r,i=new Set){return new Ba([n||va,Ca(e)],t||Ra(),null,i)}var gs=class e{static THROW_IF_NOT_FOUND=Xi;static NULL=new Sa;static create(e,t){if(Array.isArray(e))return ms({name:``},t,e,``);{let t=e.name??``;return ms({name:t},e.parent,e.providers,t)}}static ɵprov=vi({token:e,providedIn:`any`,factory:()=>ea(ba)});static __NG_ELEMENT_ID__=-1},_s=new Ti(``),vs=class{static __NG_ELEMENT_ID__=bs;static __NG_ENV_ID__=e=>e},ys=class extends vs{_lView;constructor(e){super(),this._lView=e}get destroyed(){return so(this._lView)}onDestroy(e){let t=this._lView;return To(t,e),()=>qee(t,e)}};function bs(){return new ys(Io())}var xs=new Ti(``),Ss=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new Ur(!1);debugTaskTracker=S(xs,{optional:!0});get hasPendingTasks(){return!this.destroyed&&this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new Mr(e=>{e.next(!1),e.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);let 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),this.pendingTasks.size===0&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static ɵprov=vi({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Cs=class extends Vr{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(e=!1){super(),this.__isAsync=e,Qa()&&(this.destroyRef=S(vs,{optional:!0})??void 0,this.pendingTasks=S(Ss,{optional:!0})??void 0)}emit(e){let t=en(null);try{super.next(e)}finally{en(t)}}subscribe(e,t,n){let r=e,i=t||(()=>null),a=n;if(e&&typeof e==`object`){let t=e;r=t.next?.bind(t),i=t.error?.bind(t),a=t.complete?.bind(t)}this.__isAsync&&(i=this.wrapInTimeout(i),r&&=this.wrapInTimeout(r),a&&=this.wrapInTimeout(a));let o=super.subscribe({next:r,error:i,complete:a});return e instanceof ar&&e.add(o),o}wrapInTimeout(e){return t=>{let n=this.pendingTasks?.add();setTimeout(()=>{try{e(t)}finally{n!==void 0&&this.pendingTasks?.remove(n)}})}}};function ws(...e){}function Ts(e){let t,n;function r(){e=ws;try{n!==void 0&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(n),t!==void 0&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame==`function`&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}function Es(e){return queueMicrotask(()=>e()),()=>{e=ws}}var Ds=`isAngularZone`,Os=`isAngularZone_ID`,ks=0,As=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new Cs(!1);onMicrotaskEmpty=new Cs(!1);onStable=new Cs(!1);onError=new Cs(!1);constructor(e){let{enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1,scheduleInRootZone:i=!1}=e;if(typeof Zone>`u`)throw new ui(908,!1);Zone.assertZonePatched();let a=this;a._nesting=0,a._outer=a._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(a._inner=a._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(a._inner=a._inner.fork(Zone.longStackTraceZoneSpec)),a.shouldCoalesceEventChangeDetection=!r&&n,a.shouldCoalesceRunChangeDetection=r,a.callbackScheduled=!1,a.scheduleInRootZone=i,Ps(a)}static isInAngularZone(){return typeof Zone<`u`&&Zone.current.get(Ds)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new ui(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new ui(909,!1)}run(e,t,n){return this._inner.run(e,t,n)}runTask(e,t,n,r){let i=this._inner,a=i.scheduleEventTask(`NgZoneEvent: `+r,e,js,ws,ws);try{return i.runTask(a,t,n)}finally{i.cancelTask(a)}}runGuarded(e,t,n){return this._inner.runGuarded(e,t,n)}runOutsideAngular(e){return this._outer.run(e)}},js={};function Ms(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Ns(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){Ts(()=>{e.callbackScheduled=!1,Fs(e),e.isCheckStableRunning=!0,Ms(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Fs(e)}function Ps(e){let t=()=>{Ns(e)},n=ks++;e._inner=e._inner.fork({name:`angular`,properties:{[Ds]:!0,[Os]:n,[Os+n]:!0},onInvokeTask:(n,r,i,a,o,s)=>{if(zs(s))return n.invokeTask(i,a,o,s);try{return Is(e),n.invokeTask(i,a,o,s)}finally{(e.shouldCoalesceEventChangeDetection&&a.type===`eventTask`||e.shouldCoalesceRunChangeDetection)&&t(),Ls(e)}},onInvoke:(n,r,i,a,o,s,c)=>{try{return Is(e),n.invoke(i,a,o,s,c)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!Bs(s)&&t(),Ls(e)}},onHasTask:(t,n,r,i)=>{t.hasTask(r,i),n===r&&(i.change==`microTask`?(e._hasPendingMicrotasks=i.microTask,Fs(e),Ms(e)):i.change==`macroTask`&&(e.hasPendingMacrotasks=i.macroTask))},onHandleError:(t,n,r,i)=>(t.handleError(r,i),e.runOutsideAngular(()=>e.onError.emit(i)),!1)})}function Fs(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0)}function Is(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Ls(e){e._nesting--,Ms(e)}var Rs=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new Cs;onMicrotaskEmpty=new Cs;onStable=new Cs;onError=new Cs;run(e,t,n){return e.apply(t,n)}runGuarded(e,t,n){return e.apply(t,n)}runOutsideAngular(e){return e()}runTask(e,t,n,r){return e.apply(t,n)}};function zs(e){return Vs(e,`__ignore_ng_zone__`)}function Bs(e){return Vs(e,`__scheduler_tick__`)}function Vs(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var Hs=class{_console=console;handleError(e){this._console.error(`ERROR`,e)}},Us=new Ti(``,{factory:()=>{let e=S(As),t=S(za),n;return r=>{e.runOutsideAngular(()=>{t.destroyed&&!n?setTimeout(()=>{throw r}):(n??=t.get(Hs),n.handleError(r))})}}}),Ws={provide:ya,useValue:()=>{S(Hs,{optional:!0})},multi:!0};function E(e,t){let[n,r,i]=_ee(e,t?.equal),a=n;return a[$t],a.set=r,a.update=i,a.asReadonly=Gs.bind(a),a}function Gs(){let e=this[$t];if(e.readonlyFn===void 0){let t=()=>this();t[$t]=e,e.readonlyFn=t}return e.readonlyFn}var Ks=new Ti(``,{factory:()=>qs}),qs=`ng`,Js=new Ti(``),Ys=new Ti(``,{providedIn:`platform`,factory:()=>`unknown`}),Xs=new Ti(``,{factory:()=>S(_s).body?.querySelector(`[ngCspNonce]`)?.getAttribute(`ngCspNonce`)||null}),Zs=(()=>{class e{view;node;constructor(e,t){this.view=e,this.node=t}static __NG_ELEMENT_ID__=Qs}return e})();function Qs(){return new Zs(Io(),Ro())}var $s=class{},ec=new Ti(``,{factory:()=>!0}),tc=new Ti(``),nc=(()=>{class e{static ɵprov=vi({token:e,providedIn:`root`,factory:()=>new rc})}return e})(),rc=class{dirtyEffectCount=0;queues=new Map;add(e){this.enqueue(e),this.schedule(e)}schedule(e){e.dirty&&this.dirtyEffectCount++}remove(e){let t=e.zone,n=this.queues.get(t);n.has(e)&&(n.delete(e),e.dirty&&this.dirtyEffectCount--)}enqueue(e){let t=e.zone;this.queues.has(t)||this.queues.set(t,new Set);let n=this.queues.get(t);n.has(e)||n.add(e)}flush(){for(;this.dirtyEffectCount>0;){let e=!1;for(let[t,n]of this.queues)e||=t===null?this.flushQueue(n):t.run(()=>this.flushQueue(n));e||(this.dirtyEffectCount=0)}}flushQueue(e){let t=!1;for(let n of e)n.dirty&&(this.dirtyEffectCount--,t=!0,n.run());return t}},ic=class{[$t];constructor(e){this[$t]=e}destroy(){this[$t].destroy()}};function ac(e,t){let n=t?.injector??S(gs),r=t?.manualCleanup===!0?null:n.get(vs),i,a=n.get(Zs,null,{optional:!0}),o=n.get($s);return a===null?i=uc(e,n.get(nc),o):(i=lc(a.view,o,e),r instanceof ys&&r._lView===a.view&&(r=null)),i.injector=n,r!==null&&(i.onDestroyFns=[r.onDestroy(()=>i.destroy())]),new ic(i)}var oc={...Nn,cleanupFns:void 0,zone:null,onDestroyFns:null,run(){let e=Go(!1);try{Pn(this)}finally{Go(e)}},cleanup(){if(!this.cleanupFns?.length)return;let e=en(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],en(e)}}},sc={...oc,consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(gn(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.scheduler.remove(this)}},cc={...oc,consumerMarkedDirty(){this.view[2]|=8192,wo(this.view),this.notifier.notify(13)},destroy(){if(gn(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.view[23]?.delete(this)}};function lc(e,t,n){let r=Object.create(cc);return r.view=e,r.zone=typeof Zone<`u`?Zone.current:null,r.notifier=t,r.fn=dc(r,n),e[23]??=new Set,e[23].add(r),r.consumerMarkedDirty(r),r}function uc(e,t,n){let r=Object.create(sc);return r.fn=dc(r,e),r.scheduler=t,r.notifier=n,r.zone=typeof Zone<`u`?Zone.current:null,r.scheduler.add(r),r.notifier.notify(12),r}function dc(e,t){return()=>{t(t=>(e.cleanupFns??=[]).push(t))}}function fc(e){return typeof e==`function`&&e[$t]!==void 0}function pc(e){return fc(e)&&typeof e.set==`function`}var mc=Symbol(`InputSignalNode#UNSET`),hc={...jn,transformFn:void 0,applyValueToInputSignal(e,t){kn(e,t)}};function gc(e){return{toString:e}.toString()}var _c=(function(e){return e[e.TemplateCreateStart=0]=`TemplateCreateStart`,e[e.TemplateCreateEnd=1]=`TemplateCreateEnd`,e[e.TemplateUpdateStart=2]=`TemplateUpdateStart`,e[e.TemplateUpdateEnd=3]=`TemplateUpdateEnd`,e[e.LifecycleHookStart=4]=`LifecycleHookStart`,e[e.LifecycleHookEnd=5]=`LifecycleHookEnd`,e[e.OutputStart=6]=`OutputStart`,e[e.OutputEnd=7]=`OutputEnd`,e[e.BootstrapApplicationStart=8]=`BootstrapApplicationStart`,e[e.BootstrapApplicationEnd=9]=`BootstrapApplicationEnd`,e[e.BootstrapComponentStart=10]=`BootstrapComponentStart`,e[e.BootstrapComponentEnd=11]=`BootstrapComponentEnd`,e[e.ChangeDetectionStart=12]=`ChangeDetectionStart`,e[e.ChangeDetectionEnd=13]=`ChangeDetectionEnd`,e[e.ChangeDetectionSyncStart=14]=`ChangeDetectionSyncStart`,e[e.ChangeDetectionSyncEnd=15]=`ChangeDetectionSyncEnd`,e[e.AfterRenderHooksStart=16]=`AfterRenderHooksStart`,e[e.AfterRenderHooksEnd=17]=`AfterRenderHooksEnd`,e[e.ComponentStart=18]=`ComponentStart`,e[e.ComponentEnd=19]=`ComponentEnd`,e[e.DeferBlockStateStart=20]=`DeferBlockStateStart`,e[e.DeferBlockStateEnd=21]=`DeferBlockStateEnd`,e[e.DynamicComponentStart=22]=`DynamicComponentStart`,e[e.DynamicComponentEnd=23]=`DynamicComponentEnd`,e[e.HostBindingsUpdateStart=24]=`HostBindingsUpdateStart`,e[e.HostBindingsUpdateEnd=25]=`HostBindingsUpdateEnd`,e})(_c||{}),vc=class{previousValue;currentValue;firstChange;constructor(e,t,n){this.previousValue=e,this.currentValue=t,this.firstChange=n}isFirstChange(){return this.firstChange}};function yc(e,t,n,r){t===null?e[n]=r:t.applyValueToInputSignal(t,r)}var bc=null,xc=(()=>{bc=Cc;let e=()=>Cc;return e.ngInherit=!0,e})();function Sc(){return bc}function Cc(e){return e.type.prototype.ngOnChanges&&(e.setInput=Tc),wc}function wc(){let e=Dc(this),t=e?.current;if(t){let n=e.previous;if(n===_a)e.previous=t;else for(let e in t)n[e]=t[e];e.current=null,this.ngOnChanges(t)}}function Tc(e,t,n,r,i){let a=this.declaredInputs[r],o=Dc(e)||Oc(e,{previous:_a,current:null}),s=o.current||={},c=o.previous,l=c[a];s[a]=new vc(l&&l.currentValue,n,c===_a),yc(e,t,i,n)}var Ec=`__ngSimpleChanges__`;function Dc(e){return Object.hasOwn(e,Ec)&&e[Ec]||null}function Oc(e,t){return e[Ec]=t}var kc=[],Ac=function(e,t=null,n){for(let r=0;r=r)break}else t[c]<0&&(e[17]+=65536),(s>14>16&&(e[2]&3)===t&&(e[2]+=16384,Lc(o,a)):Lc(o,a)}var zc=-1,Bc=class{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(e,t,n,r){this.factory=e,this.name=r,this.canSeeViewProviders=t,this.injectImpl=n}};function Vc(e){return!!(e.flags&8)}function Hc(e){return!!(e.flags&16)}function Uc(e,t,n){let r=0;for(;rt){o=a-1;break}}}for(;a>16}function Zc(e,t){let n=Xc(e),r=t;for(;n>0;)r=r[14],n--;return r}var Qc=!0;function $c(e){let t=Qc;return Qc=e,t}var el=255,tl=5,nl=0,rl={};function il(e,t,n){let r;typeof n==`string`?r=n.charCodeAt(0)||0:Object.hasOwn(n,ji)&&(r=n[ji]),r??=n[ji]=nl++;let i=r&el,a=1<>tl)]|=a}function al(e,t){let n=sl(e,t);if(n!==-1)return n;let r=t[1];r.firstCreatePass&&(e.injectorIndex=t.length,ol(r.data,e),ol(t,null),ol(r.blueprint,null));let i=cl(e,t),a=e.injectorIndex;if(Jc(i)){let e=Yc(i),n=Zc(i,t),r=n[1].data;for(let i=0;i<8;i++)t[a+i]=n[e+i]|r[e+i]}return t[a+8]=i,a}function ol(e,t){e.push(0,0,0,0,0,0,0,0,t)}function sl(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function cl(e,t){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let n=0,r=null,i=t;for(;i!==null;){if(r=Tl(i),r===null)return zc;if(n++,i=i[14],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return zc}function ll(e,t,n){il(e,t,n)}function ul(e,t,n){if(n&8||e!==void 0)return e;Hi(t,`NodeInjector`)}function dl(e,t,n,r){if(n&8&&r===void 0&&(r=null),!(n&3)){let i=e[9],a=qi(void 0);try{return i?i.get(t,r,n&8):Ji(t,r,n&8)}finally{qi(a)}}return ul(r,t,n)}function fl(e,t,n,r=0,i){if(e!==null){if(t[2]&2048&&!(r&2)){let i=wl(e,t,n,r,rl);if(i!==rl)return i}let i=pl(e,t,n,r,rl);if(i!==rl)return i}return dl(t,n,r,i)}function pl(e,t,n,r,i){let a=_l(n);if(typeof a==`function`){if(!Qo(t,e,r))return r&1?ul(i,n,r):dl(t,n,r,i);try{let e;if(e=a(r),e==null&&!(r&8))Hi(n);else return e}finally{rs()}}else if(typeof a==`number`){let i=null,o=sl(e,t),s=zc,c=r&1?t[15][5]:null;for((o===-1||r&4)&&(s=o===-1?cl(e,t):t[o+8],s===zc||!yl(r,!1)?o=-1:(i=t[1],o=Yc(s),t=Zc(s,t)));o!==-1;){let e=t[1];if(vl(a,o,e.data)){let e=ml(o,t,n,i,r,c);if(e!==rl)return e}s=t[o+8],s!==zc&&yl(r,t[1].data[o+8]===c)&&vl(a,o,t)?(i=e,o=Yc(s),t=Zc(s,t)):o=-1}}return i}function ml(e,t,n,r,i,a){let o=t[1],s=o.data[e+8],c=hl(s,o,n,r==null?ro(s)&&Qc:r!=o&&!!(s.type&3),i&1&&a===s);return c===null?rl:gl(t,o,c,s,i)}function hl(e,t,n,r,i){let a=e.providerIndexes,o=t.data,s=a&1048575,c=e.directiveStart,l=e.directiveEnd,u=a>>20,d=r?s:s+u,f=i?s+u:l;for(let e=d;e=c&&t.type===n)return e}if(i){let e=o[c];if(e&&ao(e)&&e.type===n)return c}return null}function gl(e,t,n,r,i){let a=e[n],o=t.data;if(a instanceof Bc){let s=a;if(s.resolving)throw Vi(``);let c=$c(s.canSeeViewProviders);s.resolving=!0,o[n].type||o[n];let l=s.injectImpl?qi(s.injectImpl):null;Qo(e,r,0);try{a=e[n]=s.factory(void 0,i,o,e,r),t.firstCreatePass&&n>=r.directiveStart&&jc(n,o[n],t)}finally{l!==null&&qi(l),$c(c),s.resolving=!1,rs()}}return a}function _l(e){if(typeof e==`string`)return e.charCodeAt(0)||0;let t=Object.hasOwn(e,ji)?e[ji]:void 0;return typeof t==`number`?t>=0?t&el:xl:t}function vl(e,t,n){let r=1<>tl)]&r)}function yl(e,t){return!(e&2)&&!(e&1&&t)}var bl=class{_tNode;_lView;constructor(e,t){this._tNode=e,this._lView=t}get(e,t,n){return fl(this._tNode,this._lView,e,ta(n),t)}};function xl(){return new bl(Ro(),Io())}function Sl(e){return gc(()=>{let t=e.prototype.constructor,n=t[Ai]||Cl(t),r=Object.prototype,i=Object.getPrototypeOf(e.prototype).constructor;for(;i&&i!==r;){let e=i[Ai]||Cl(i);if(e&&e!==n)return e;i=Object.getPrototypeOf(i)}return e=>new e})}function Cl(e){return _i(e)?()=>{let t=Cl(gi(e));return t&&t()}:aa(e)}function wl(e,t,n,r,i){let a=e,o=t;for(;a!==null&&o!==null&&o[2]&2048&&!oo(o);){let e=pl(a,o,n,r|2,rl);if(e!==rl)return e;r&=-5;let t=a.parent;if(!t){let e=o[20];if(e){let t=e.get(n,rl,r);if(t!==rl)return t}t=Tl(o),o=o[14]}a=t}return i}function Tl(e){let t=e[1],n=t.type;return n===2?t.declTNode:n===1?e[5]:null}function El(e){return{token:e.token,providedIn:e.autoProvided===!1?null:`root`,factory:e.factory,value:void 0}}function Dl(){return Ol(Ro(),Io())}function Ol(e,t){return new kl(po(e,t))}var kl=(()=>{class e{nativeElement;constructor(e){this.nativeElement=e}static __NG_ELEMENT_ID__=Dl}return e})();function Al(e){return e instanceof kl?e.nativeElement:e}function jl(){return this._results[Symbol.iterator]()}var Ml=class{_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 Vr}constructor(e=!1){this._emitDistinctChangesOnly=e}get(e){return this._results[e]}map(e){return this._results.map(e)}filter(e){return this._results.filter(e)}find(e){return this._results.find(e)}reduce(e,t){return this._results.reduce(e,t)}forEach(e){this._results.forEach(e)}some(e){return this._results.some(e)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(e,t){this.dirty=!1;let n=sa(e);(this._changesDetected=!oa(this._results,n,t))&&(this._results=n,this.length=n.length,this.last=n[this.length-1],this.first=n[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.next(this)}onDirty(e){this._onDirty=e}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}[Symbol.iterator]=jl};function Nl(e){return(e.flags&128)==128}var Pl=(function(e){return e[e.OnPush=0]=`OnPush`,e[e.Eager=1]=`Eager`,e[e.Default=1]=`Default`,e})(Pl||{}),Fl=new Map,Il=0;function Ll(){return Il++}function Rl(e){Fl.set(e[19],e)}function zl(e){Fl.delete(e[19])}var Bl=`__ngContext__`;function Vl(e,t){eo(t)?(e[Bl]=t[19],Rl(t)):e[Bl]=t}function Hl(e){return Wl(e[12])}function Ul(e){return Wl(e[4])}function Wl(e){for(;e!==null&&!to(e);)e=e[4];return e}var Gl=void 0;function Kl(e){Gl=e}function ql(){if(Gl!==void 0)return Gl;if(typeof document<`u`)return document;throw new ui(210,!1)}var Jl=!1,Yl=new Ti(``,{factory:()=>Jl}),Xl=new WeakMap;function Zl(e,t){if(typeof e!=`object`||!e)return;let n=Xl.get(e);n||(n=new WeakSet,Xl.set(e,n)),n.add(t)}function Ql(e){return(e.flags&32)==32}var $l=()=>null;function eu(e,t,n=!1){return $l(e,t,n)}function tu(e,t){let n=e.contentQueries;if(n!==null){let r=en(null);try{for(let r=0;r|^->||--!>|)/g,ote=`​$1​`;function ste(e){return e.replace(du,e=>e.replace(fu,ote))}function cte(e,t){return e.createText(t)}function lte(e,t,n){e.setValue(t,n)}function ute(e,t){return e.createComment(ste(t))}function pu(e,t,n){return e.createElement(t,n)}function mu(e,t,n,r,i){e.insertBefore(t,n,r,i)}function hu(e,t,n){e.appendChild(t,n)}function gu(e,t,n,r,i){r===null?hu(e,t,n):mu(e,t,n,r,i)}function _u(e,t,n,r){e.removeChild(null,t,n,r)}function dte(e,t,n){e.setAttribute(t,`style`,n)}function fte(e,t,n){n===``?e.removeAttribute(t,`class`):e.setAttribute(t,`class`,n)}function vu(e,t,n){let{mergedAttrs:r,classes:i,styles:a}=n;r!==null&&Uc(e,t,r),i!==null&&fte(e,t,i),a!==null&&dte(e,t,a)}function yu(e){let t=pte();return t?t.sanitize(co.URL,e)||``:su(e,`URL`)?ou(e):uu(Li(e))}function pte(){let e=Io();return e&&e[10].sanitizer}function bu(e){return e.ownerDocument.defaultView}function xu(e){return e.ownerDocument}function mte(e,t,n){let r=e.length;for(;;){let i=e.indexOf(t,n);if(i===-1)return i;if(i===0||e.charCodeAt(i-1)<=32){let n=t.length;if(i+n===r||e.charCodeAt(i+n)<=32)return i}n=i+1}}var Su=`ng-template`;function hte(e,t,n,r){let i=0;if(r){for(;i-1){let e;for(;++ia?``:i[u+1].toLowerCase(),r&2&&l!==e){if(wu(r))return!1;o=!0}}}}}return wu(r)||o}function wu(e){return!(e&1)}function vte(e,t,n,r){if(t===null)return-1;let i=0;if(r||!n){let n=!1;for(;i-1)for(n++;n0?`="`+t+`"`:``)+`]`}else r&8?i+=`.`+o:r&4&&(i+=` `+o)}else i!==``&&!wu(o)&&(t+=Eu(a,i),i=``),r=o,a||=!wu(r);n++}return i!==``&&(t+=Eu(a,i)),t}function wte(e){return e.map(Cte).join(`,`)}function Tte(e){let t=[],n=[],r=1,i=2;for(;r!1});function Au(e){if(!e)return 0;let t=e.toLowerCase().indexOf(`ms`)>-1?1:1e3;return parseFloat(e)*t}function ju(e,t){return e.getPropertyValue(t).split(`,`).map(e=>e.trim())}function Ote(e){let t=ju(e,`transition-property`),n=ju(e,`transition-duration`),r=ju(e,`transition-delay`),i={propertyName:``,duration:0,animationName:void 0};for(let e=0;ei.duration&&(i.propertyName=t[e],i.duration=a)}return i}function kte(e){let t=ju(e,`animation-name`),n=ju(e,`animation-delay`),r=ju(e,`animation-duration`),i=ju(e,`animation-iteration-count`),a={animationName:``,propertyName:void 0,duration:0};for(let e=0;ea.duration&&s!==`infinite`&&(a.animationName=t[e],a.duration=o)}return a}function Mu(e,t){return e!==void 0&&e.duration>t.duration}function Nu(e){return(e.animationName!=null||e.propertyName!=null)&&e.duration>0}function Pu(e){let t=e.effect?.getTiming();if(t===void 0)return;let n=typeof t.duration==`number`?t.duration:0,r=(t.delay??0)+n,i=e.playbackRate;return i!==void 0&&i!==0&&i!==1&&(r/=Math.abs(i)),r}function Ate(e,t){let n=getComputedStyle(e),r=kte(n),i=Ote(n),a=r.duration>i.duration?r:i;Mu(t.get(e),a)||Nu(a)&&t.set(e,a)}function jte(e,t,n){if(!n)return;let r=e.getAnimations();return r.length===0?Ate(e,t):Mte(e,t,r)}function Mte(e,t,n){let r={animationName:void 0,propertyName:void 0,duration:0};for(let e of n){if(e.effect?.getTiming()?.iterations===1/0)continue;let t=Pu(e)??0,n,i;e.animationName?i=e.animationName:n=e.transitionProperty,t>=r.duration&&(r={animationName:i,propertyName:n,duration:t})}Mu(t.get(e),r)||Nu(r)&&t.set(e,r)}var Fu=new Set,Nte=!1,Pte=1,Iu=typeof document<`u`&&typeof document?.documentElement?.getAnimations==`function`;function Fte(e){return e[9].get(Dte,Nte)}function Ite(e,t,n){let r=Ru.get(e);if(r){for(let e of t)r.classList.push(e);for(let e of n)r.cleanupFns.push(e)}else Ru.set(e,{classList:t,cleanupFns:n})}function Lu(e){let t=Ru.get(e);if(t){for(let e of t.cleanupFns)e();Ru.delete(e)}zu.delete(e)}var Ru=new WeakMap,zu=new WeakMap,Bu=new WeakMap;function Vu(e){return e?e[14]??e:null}var Hu=new WeakSet;function Lte(e,t,n){let r=Bu.get(e);if(!r||r.length===0)return;let i=t.parentNode,a=t.previousSibling,o=Vu(n);for(let e=r.length-1;e>=0;e--){let{el:n,declarationView:s}=r[e],c=n.parentNode;n===t?(r.splice(e,1),Hu.add(n),n.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}}))):(a&&n===a||c&&i&&c!==i&&(o===null||s===null||o===s))&&(r.splice(e,1),n.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}})),n.parentNode?.removeChild(n))}}function Rte(e,t,n){let r=Vu(n),i=Bu.get(e);i?i.some(e=>e.el===t)||i.push({el:t,declarationView:r}):Bu.set(e,[{el:t,declarationView:r}])}function Uu(e){let t=e[26]??={};return t.enter??=new Map}function zte(e){let t=typeof e==`function`?e():e,n=Array.isArray(t)?t:null;return typeof t==`string`&&(n=t.trim().split(/\s+/).filter(e=>e)),n}function Wu(e){return e.composedPath?e.composedPath()[0]:e.target}function Gu(e,t){let n=zu.get(t);if(n===void 0)return!0;if(t!==Wu(e))return!1;let r=e.animation;if(r){let e=Pu(r);if(e!==void 0&&e+Pte{class e{impl=null;execute(){this.impl?.execute()}static ɵprov=vi({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Zu=[0,1,2,3],Qu=(()=>{class e{ngZone=S(As);scheduler=S($s);errorHandler=S(Hs,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){S(qu,{optional:!0})}execute(){let e=this.sequences.size>0;e&&Ac(_c.AfterRenderHooksStart),this.executing=!0;for(let e of Zu)for(let t of this.sequences)if(!t.erroredOrDestroyed&&t.hooks[e])try{t.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>{let n=t.hooks[e];return n(t.pipelinedValue)},t.snapshot))}catch(e){t.erroredOrDestroyed=!0,this.errorHandler?.handleError(e)}this.executing=!1;for(let e of this.sequences)e.afterRun(),e.once&&(this.sequences.delete(e),e.destroy());for(let e of this.deferredRegistrations)this.sequences.add(e);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),e&&Ac(_c.AfterRenderHooksEnd)}register(e){let{view:t}=e;t===void 0?this.executing?this.deferredRegistrations.add(e):this.addSequence(e):((t[25]??=[]).push(e),wo(t),t[2]|=8192)}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,t){return t?t.run(Ku.AFTER_NEXT_RENDER,e):e()}static ɵprov=vi({token:e,providedIn:`root`,factory:()=>new e})}return e})(),$u=class{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(e,t,n,r,i,a=null){this.impl=e,this.hooks=t,this.view=n,this.once=r,this.snapshot=a,this.unregisterOnDestroy=i?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();let e=this.view?.[25];e&&(this.view[25]=e.filter(e=>e!==this))}};function ed(e,t){let n=t?.injector??S(gs);return Yu(`NgAfterNextRender`),Hte(e,n,t,!0)}function Vte(e){return e instanceof Function?[void 0,void 0,e,void 0]:[e.earlyRead,e.write,e.mixedReadWrite,e.read]}function Hte(e,t,n,r){let i=t.get(Xu);i.impl??=t.get(Qu);let a=t.get(qu,null,{optional:!0}),o=n?.manualCleanup===!0?null:t.get(vs),s=t.get(Zs,null,{optional:!0}),c=new $u(i.impl,Vte(e),s?.view,r,o,a?.snapshot(null));return i.impl.register(c),c}var td=new Ti(``,{factory:()=>{let e=S(za),t=new Set;return e.onDestroy(()=>t.clear()),{queue:t,isScheduled:!1,scheduler:null,injector:e}}});function nd(e,t,n){let r=e.get(td);if(Array.isArray(t))for(let e of t)r.queue.add(e),n?.detachedLeaveAnimationFns?.push(e);else r.queue.add(t),n?.detachedLeaveAnimationFns?.push(t);r.scheduler&&r.scheduler(e)}function Ute(e,t){let n=e.get(td);if(Array.isArray(t))for(let e of t)n.queue.delete(e);else n.queue.delete(t)}function Wte(e,t){let n=e.get(td);if(t.detachedLeaveAnimationFns){for(let e of t.detachedLeaveAnimationFns)n.queue.delete(e);t.detachedLeaveAnimationFns=void 0}}function Gte(e){let t=e.get(td);t.isScheduled||=(ed(()=>{t.isScheduled=!1;for(let e of t.queue)e();t.queue.clear()},{injector:t.injector}),!0)}function Kte(e){let t=e.get(td);t.scheduler=Gte,t.scheduler(e)}function rd(e,t){for(let[n,r]of t)nd(e,r.animateFns)}function id(e,t,n,r){let i=e?.[26]?.enter;t!==null&&i&&i.has(n.index)&&rd(r,i)}function ad(e,t,n,r){try{n.get(ba)}catch{return r(!1)}let i=e?.[26];i?.enter?.has(t.index)&&Ute(n,i.enter.get(t.index).animateFns);let a=qte(e,t,i);if(a.size===0){let n=!1;if(e){let r=[];od(e,t,r),n=r.length>0}if(!n)return r(!1)}e&&Fu.add(e[19]),nd(n,()=>Jte(e,t,i||void 0,a,r),i||void 0)}function qte(e,t,n){let r=new Map,i=n?.leave;if(i&&i.has(t.index)&&r.set(t.index,i.get(t.index)),e&&i)for(let[n,a]of i){if(r.has(n))continue;let i=e[1].data[n].parent;for(;i;){if(i===t){r.set(n,a);break}i=i.parent}}return r}function Jte(e,t,n,r,i){let a=[];if(n&&n.leave)for(let[e]of r){if(!n.leave.has(e))continue;let t=n.leave.get(e);for(let e of t.animateFns){let{promise:t}=e();a.push(t)}n.detachedLeaveAnimationFns=void 0}if(e&&od(e,t,a),a.length>0){let t=n||e?.[26];if(t){let n=t.running;n&&a.push(n),t.running=Promise.allSettled(a),Xte(e,t.running,i)}else Promise.allSettled(a).then(()=>{e&&Fu.delete(e[19]),i(!0)})}else e&&Fu.delete(e[19]),i(!1)}function od(e,t,n){if(t.type&12){let r=e[t.index];if(to(r))for(let e=10;e{e[26]?.running===t&&(e[26].running=void 0,Fu.delete(e[19])),n(!0)})}function sd(e,t,n,r,i,a,o,s){if(i!=null){let c,l=!1;to(i)?c=i:eo(i)&&(l=!0,i=i[0]);let u=uo(i);e===0&&r!==null?(id(s,r,a,n),o==null?hu(t,r,u):mu(t,r,u,o||null,!0)):e===1&&r!==null?(id(s,r,a,n),mu(t,r,u,o||null,!0),Lte(a,u,s)):e===2?(s?.[26]?.leave?.has(a.index)&&Rte(a,u,s),Hu.delete(u),ad(s,a,n,e=>{if(Hu.has(u)){Hu.delete(u);return}_u(t,u,l,e)})):e===3&&(Hu.delete(u),ad(s,a,n,()=>{t.destroyNode(u)})),c!=null&&Cd(t,e,n,c,a,r,o)}}function Zte(e,t){cd(e,t),t[0]=null,t[5]=null}function Qte(e,t,n,r,i,a){r[0]=i,r[5]=t,yd(e,r,n,1,i,a)}function cd(e,t){t[10].changeDetectionScheduler?.notify(9),yd(e,t,t[11],2,null,null)}function $te(e){let t=e[12];if(!t)return dd(e[1],e);for(;t;){let n=null;if(eo(t))n=t[12];else{let e=t[10];e&&(n=e)}if(!n){for(;t&&!t[4]&&t!==e;)eo(t)&&dd(t[1],t),t=t[3];t===null&&(t=e),eo(t)&&dd(t[1],t),n=t&&t[4]}t=n}}function ld(e,t){let n=e[9],r=n.indexOf(t);n.splice(r,1)}function ud(e,t){if(so(t))return;let n=t[11];n.destroyNode&&yd(e,t,n,3,null,null),$te(t)}function dd(e,t){if(so(t))return;let n=en(null);try{t[2]&=-129,t[2]|=256,t[24]&&gn(t[24]),tne(e,t),ene(e,t),t[1].type===1&&t[11].destroy();let n=t[16];if(n!==null&&to(t[3])){n!==t[3]&&ld(n,t);let r=t[18];r!==null&&r.detachView(e)}zl(t)}finally{en(n)}}function ene(e,t){let n=e.cleanup,r=t[7];if(n!==null)for(let e=0;e=0?r[t]():r[-t].unsubscribe(),e+=2}else{let t=r[n[e+1]];n[e].call(t)}r!==null&&(t[7]=null);let i=t[21];if(i!==null){t[21]=null;for(let e=0;e27&&Nd(e,t,27,!1),Ac(o?_c.TemplateUpdateStart:_c.TemplateCreateStart,i,n),n(r,i)}finally{os(a),Ac(o?_c.TemplateUpdateEnd:_c.TemplateCreateEnd,i,n)}}function Ld(e,t,n){Wd(e,t,n),(n.flags&64)==64&&Gd(e,t,n)}function Rd(e,t,n=po){let r=t.localNames;if(r!==null){let i=t.index+1;for(let a=0;a=s&&i<=c){let o=t.data[i],s=r[e+1];Fd(o,n[i],s,a),l=!0}else if(i>c)break}}return o!==null&&Object.hasOwn(r.inputs,i)&&(Fd(r,n[o],i,a),l=!0),l}function nf(e,t){let n=_o(t,e),r=n[1];rf(r,n);let i=n[0];i!==null&&n[6]===null&&(n[6]=eu(i,n[9])),Ac(_c.ComponentStart);try{af(r,n,n[8])}finally{Ac(_c.ComponentEnd,n[8])}}function rf(e,t){for(let n=t.length;n{wo(e.lView)},consumerOnSignalRead(){this.lView[24]=this}};function _f(e){let t=e[24]??Object.create(vf);return t.lView=e,t}var vf={...nn,consumerIsAlwaysLive:!0,kind:`template`,consumerMarkedDirty:e=>{let t=Eo(e.lView);for(;t&&!yf(t[1]);)t=Eo(t);t&&xo(t)},consumerOnSignalRead(){this.lView[24]=this}};function yf(e){return e.type!==2}function bf(e){if(e[23]===null)return;let t=!0;for(;t;){let n=!1;for(let t of e[23])if(t.dirty&&(n=!0,t.zone===null||Zone.current===t.zone?t.run():t.zone.run(()=>t.run()),e[23]===null))return;t=n&&!!(e[2]&8192)}}var xf=100;function Sf(e,t=0){let n=e[10].rendererFactory;n.begin?.();try{Cf(e,t)}finally{n.end?.()}}function Cf(e,t){let n=Wo();try{Go(!0),kf(e,t);let n=0;for(;So(e);){if(n===xf)throw new ui(103,!1);n++,kf(e,1)}}finally{Go(n)}}function wf(e,t,n,r){if(so(t))return;let i=t[2];$o(t);let a=!0,o=null,s=null;yf(e)?(s=pf(t),o=dn(s)):tn()===null?(a=!1,s=_f(t),o=dn(s)):t[24]&&=(gn(t[24]),null);try{bo(t),Qee(e.bindingStartIndex),n!==null&&Id(e,t,n,2,r);let a=(i&3)==3;if(a){let n=e.preOrderCheckHooks;n!==null&&Nc(t,n,null)}else{let n=e.preOrderHooks;n!==null&&Pc(t,n,0,null),Fc(t,0)}if(Ef(t),bf(t),Tf(t,0),e.contentQueries!==null&&tu(e,t),a){let n=e.contentCheckHooks;n!==null&&Nc(t,n)}else{let n=e.contentHooks;n!==null&&Pc(t,n,1),Fc(t,1)}jf(e,t);let o=e.components;o!==null&&Af(t,o,0);let s=e.viewQuery;if(s!==null&&nu(2,s,r),a){let n=e.viewCheckHooks;n!==null&&Nc(t,n)}else{let n=e.viewHooks;n!==null&&Pc(t,n,2),Fc(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[22]){for(let e of t[22])e();t[22]=null}df(t),t[2]&=-73}catch(e){throw wo(t),e}finally{s!==null&&(pn(s,o),a&&hf(s)),is()}}function Tf(e,t){for(let n=Hl(e);n!==null;n=Ul(n))for(let e=10;e0&&(e[n-1][4]=r[4]);let a=ua(e,10+t);Zte(r[1],r);let o=a[18];o!==null&&o.detachView(a[1]),r[3]=null,r[4]=null,r[2]&=-129}return r}function Rf(e,t,n,r){let i=10+r,a=n.length;r>0&&(n[i-1][4]=t),r-1&&(Lf(e,n),ua(t,n))}this._attachedToViewContainer=!1}ud(this._lView[1],this._lView)}onDestroy(e){To(this._lView,e)}markForCheck(){Mf(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[2]&=-129}reattach(){Co(this._lView),this._lView[2]|=128}detectChanges(){this._lView[2]|=1024,Sf(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new ui(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let e=oo(this._lView),t=this._lView[16];t!==null&&!e&&ld(t,this._lView),cd(this._lView[1],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new ui(902,!1);this._appRef=e;let t=oo(this._lView),n=this._lView[16];n!==null&&!t&&zf(n,this._lView),Co(this._lView)}},Vf=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=Hf;constructor(e,t,n){this._declarationLView=e,this._declarationTContainer=t,this.elementRef=n}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,t){return this.createEmbeddedViewImpl(e,t)}createEmbeddedViewImpl(e,t,n){return new Bf(sf(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:t,dehydratedView:n}))}}return e})();function Hf(){return Uf(Ro(),Io())}function Uf(e,t){return e.type&4?new Vf(t,e,Ol(e,t)):null}function Wf(e,t,n,r,i){let a=e.data[t];if(a===null)a=Gf(e,t,n,r,i),$ee()&&(a.flags|=32);else if(a.type&64){a.type=n,a.value=r,a.attrs=i;let e=Zee();a.injectorIndex=e===null?-1:e.injectorIndex}return Bo(a,!0),a}function Gf(e,t,n,r,i){let a=zo(),o=Vo(),s=o?a:a&&a.parent,c=e.data[t]=qf(e,s,n,t,r,i);return Kf(e,c,a,o),c}function Kf(e,t,n,r){e.firstChild===null&&(e.firstChild=t),n!==null&&(r?n.child==null&&t.parent!==null&&(n.child=t):n.next===null&&(n.next=t,t.prev=n))}function qf(e,t,n,r,i,a){let o=t?t.injectorIndex:-1,s=0;return No()&&(s|=128),{type:n,index:r,insertBeforeIndex:null,injectorIndex:o,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:s,providerIndexes:0,value:i,namespace:us(),attrs:a,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:t,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function Jf(e){let t=e[6]??[],n=e[3][11],r=[];for(let e of t)e.data.di===void 0?Yf(e,n):r.push(e);e[6]=r}function Yf(e,t){let n=0,r=e.firstChild;if(r){let i=e.data.r;for(;nnull,Zf=()=>null;function Qf(e,t){return Xf(e,t)}function $f(e,t,n){return Zf(e,t,n)}var ep=class{},tp=class{},np=class{destroyNode=null;static __NG_ELEMENT_ID__=()=>rp()};function rp(){let e=Io(),t=_o(Ro().index,e);return(eo(t)?t:e)[11]}var ip=(()=>{class e{static ɵprov=vi({token:e,providedIn:`root`,factory:()=>null})}return e})();function ap(e){return e.debugInfo?.className||e.type.name||null}var op={},sp=class{injector;parentInjector;constructor(e,t){this.injector=e,this.parentInjector=t}get(e,t,n){let r=this.injector.get(e,op,n);return r!==op||t===op?r:this.parentInjector.get(e,t,n)}};function cp(e,t,n){return e[t]=n}function lp(e,t){return e[t]}function up(e,t,n){if(n===Du)return!1;let r=e[t];return!Object.is(r,n)&&(e[t]=n,!0)}function dp(e,t,n,r){let i=up(e,t,n);return up(e,t+1,r)||i}function fp(e,t,n,r,i){let a=dp(e,t,n,r);return up(e,t+2,i)||a}function pp(e,t,n,r,i,a){let o=dp(e,t,n,r);return dp(e,t+2,i,a)||o}function mp(e,t,n){return function r(i){let a=r.__ngNativeEl__;a!==void 0&&Zl(i,a),Mf(ro(e)?_o(e.index,t):t,5);let o=t[8],s=hp(t,o,n,i),c=r.__ngNextListenerFn__;for(;c;)s=hp(t,o,c,i)&&s,c=c.__ngNextListenerFn__;return s}}function hp(e,t,n,r){let i=en(null);try{return Ac(_c.OutputStart,t,n),n(r)!==!1}catch(t){return $d(e,t),!1}finally{Ac(_c.OutputEnd,t,n),en(i)}}function gp(e,t,n,r,i,a,o,s){let c=io(e),l=!1,u=null;if(!r&&c&&(u=vp(t,n,a,e.index)),u!==null){let e=u.__ngLastListenerFn__||u;e.__ngNextListenerFn__=o,u.__ngLastListenerFn__=o,l=!0}else{let o=po(e,n),c=r?r(o):o;r||(s.__ngNativeEl__=o);let l=i.listen(c,a,s);_p(a)||yp(r?t=>r(uo(t[e.index])):e.index,t,n,a,s,l,!1)}return l}function _p(e){return e.startsWith(`animation`)||e.startsWith(`transition`)}function vp(e,t,n,r){let i=e.cleanup;if(i!=null)for(let e=0;er?n[r]:null}typeof a==`string`&&(e+=2)}return null}function yp(e,t,n,r,i,a,o){let s=t.firstCreatePass?Oo(t):null,c=Do(n),l=c.length;c.push(i,a),s&&s.push(r,e,l,(l+1)*(o?-1:1))}function bp(e,t,n,r,i){let a=null,o=null,s=null,c=!1,l=e.directiveToIndex.get(n.type);if(typeof l==`number`?a=l:[a,o,s]=l,o!==null&&s!==null&&e.hostDirectiveOutputs&&Object.hasOwn(e.hostDirectiveOutputs,r)){let n=e.hostDirectiveOutputs[r];for(let a=0;a=o&&l<=s)c=!0,xp(e,t,l,n[a+1],r,i);else if(l>s)break}}return Object.hasOwn(n.outputs,r)&&(c=!0,xp(e,t,a,r,r,i)),c}function xp(e,t,n,r,i,a){let o=t[n],s=t[1],c=o[s.data[n].outputs[r]].subscribe(a);yp(e.index,s,t,i,a,c,!0)}function Sp(){Cp()}function Cp(){let e=Io(),t=Lo(),n=Ro();if(t.firstCreatePass&&kp(t,n),n.controlDirectiveIndex===-1)return;Yu(`NgSignalForms`);let r=e[n.controlDirectiveIndex];t.data[n.controlDirectiveIndex].controlDef.create(r,new Ep(e,t,n))}function wp(){Tp()}function Tp(){let e=Io(),t=Lo(),n=ss();if(n.controlDirectiveIndex===-1)return;let r=t.data[n.controlDirectiveIndex].controlDef,i=e[n.controlDirectiveIndex];r.update(i,new Ep(e,t,n))}var Ep=class{lView;tView;tNode;hasPassThrough;constructor(e,t,n){this.lView=e,this.tView=t,this.tNode=n,this.hasPassThrough=!!(n.flags&4096)}get customControl(){return this.tNode.customControlIndex===-1?void 0:this.lView[this.tNode.customControlIndex]}get nativeElement(){return po(this.tNode,this.lView)}get descriptor(){return`<${this.tNode.value}>`}listenToCustomControlOutput(e,t){let n=this.tView.data[this.tNode.customControlIndex];bp(this.tNode,this.lView,n,e,mp(this.tNode,this.lView,t))}listenToCustomControlModel(e){let t=this.tNode.flags&1024?`valueChange`:`checkedChange`,n=this.tView.data[this.tNode.customControlIndex];bp(this.tNode,this.lView,n,t,mp(this.tNode,this.lView,e))}listenToDom(e,t){gp(this.tNode,this.tView,this.lView,void 0,this.lView[11],e,t,mp(this.tNode,this.lView,t))}setInputOnDirectives(e,t,n){let r=this.tNode.inputs?.[e],i=this.tNode.hostDirectiveInputs?.[e];if(!r&&!i)return!1;let a=!1;if(r)for(let i of r){if(i===this.tNode.controlDirectiveIndex)continue;let r=this.lView[i],o=this.tView.data[i];(!n||n(Op(r,o,e)))&&(Fd(o,r,e,t),a=!0)}if(i)for(let r=0;r0;){let e=n.shift();if(typeof e!=`function`){for(let n in e.inputs)t[e.inputs[n]]=!0;let r=Dp(e.directive);r!==null&&n.push(...r);continue}for(let r of e()){if(typeof r==`function`)continue;if(r.inputs)for(let e=0;e1){t.flags|=4096;return}Ap(e,t)}function Ap(e,t){for(let n=t.directiveStart;n{let r=t.hostDirectiveInputs[e],i=t.hostDirectiveOutputs[e+`Change`];if(!r||!i)return!1;for(let e=0;e=i&&a<=o)return t.flags|=n,t.customControlIndex=r,!0}}return!1};if(e(`value`,1024)||e(`checked`,2048))return}}function jp(e,t){return Mp(e,t)&&Np(e,t+`Change`)}function Mp(e,t){return t in e.inputs}function Np(e,t){return t in e.outputs}var Pp=Symbol(`BINDING`),Fp=new Ti(``);function Ip(e,t,n){let r=n?e.styles:null,i=n?e.classes:null,a=0;if(t!==null)for(let e=0;e0&&(n.directiveToIndex=new Map);for(let c=0;c0;){let n=e[--t];if(typeof n==`number`&&n<0)return n}return 0}function Xp(e,t,n){if(n){if(t.exportAs)for(let r=0;r{let[n,r,i]=e[t],a={propName:n,templateName:t,isSignal:(r&Pd.SignalBased)!==0};return i&&(a.transform=i),a})}function im(e){return Object.keys(e).map(t=>({propName:e[t],templateName:t}))}function am(e,t,n){let r=t instanceof za?t:t?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new sp(n,r):n}function om(e){let t=e.get(tp,null);if(t===null)throw new ui(407,!1);return{rendererFactory:t,sanitizer:e.get(ip,null),changeDetectionScheduler:e.get($s,null),ngReflect:!1,tracingService:e.get(qu,null,{optional:!0})}}function sm(e,t,n){let r=lm(e);return pu(t,r,r===`svg`?`svg`:r===`math`?lo:n)}function cm(e){if((e&&`localName`in e&&typeof e.localName==`string`?e.localName:e?.tagName)?.toLowerCase()===`script`)throw new ui(905,!1)}function lm(e){return(e.selectors[0][0]||`div`).toLowerCase()}var um=class{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=rm(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=im(this.componentDef.outputs),this.cachedOutputs}constructor(e,t){this.componentDef=e,this.ngModule=t,this.componentType=e.type,this.selector=wte(e.selectors),this.ngContentSelectors=e.ngContentSelectors??[],this.isBoundToModule=!!t}create(e,t,n,r,i,a,o){Ac(_c.DynamicComponentStart);let s=en(null);try{let s=this.componentDef,c=am(s,r||this.ngModule,e),l=om(c),u=l.tracingService;return u&&u.componentCreate?u.componentCreate(ap(s),()=>this.createComponentRef(l,c,t,n,i,a,o)):this.createComponentRef(l,c,t,n,i,a,o)}finally{en(s)}}createComponentRef(e,t,n,r,i,a,o){let s=this.componentDef,c=dm(r,s,a,i),l=e.rendererFactory.createRenderer(null,s),u=r?zd(l,r,s.encapsulation,t):sm(s,l,o??null);cm(u);let d=t.get(Fp,null),f=fm(u,()=>t.get(_s,null)??ql());d&&d.addHost(f);let p=a?.some(mm)||i?.some(e=>typeof e!=`function`&&e.bindings.some(mm)),m=Od(null,c,null,512|Ad(s),null,null,e,l,t,null,eu(u,t,!0));d&&tm&&f instanceof ShadowRoot&&To(m,()=>{d.removeHost(f)}),m[27]=u,$o(m);let h=null;try{let e=Qp(27,m,2,`#host`,()=>c.directiveRegistry,!0,0);vu(l,u,e),Vl(u,m),Ld(c,m,e),ru(c,e,m),$p(c,e),n!==void 0&&gm(e,this.ngContentSelectors,n),h=_o(e.index,m),m[8]=h[8],af(c,m,null)}catch(e){throw h!==null&&zl(h),zl(m),e}finally{Ac(_c.DynamicComponentEnd),is()}return new hm(this.componentType,m,!!p)}};function dm(e,t,n,r){let i=e?[`ng-version`,`22.1.7`]:Tte(t.selectors[0]),a=null,o=null,s=0;if(n)for(let e of n)s+=e[Pp].requiredVars,e.create&&(e.targetIdx=0,(a??=[]).push(e)),e.update&&(e.targetIdx=0,(o??=[]).push(e));if(r)for(let e=0;e{if(n&1&&e)for(let t of e)t.create();if(n&2&&t)for(let e of t)e.update()}}function mm(e){let t=e[Pp].kind;return t===`input`||t===`twoWay`}var hm=class extends ep{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(e,t,n){super(),this._rootLView=t,this._hasInputBindings=n,this._tNode=mo(t[1],27),this.location=Ol(this._tNode,t),this.instance=_o(this._tNode.index,t)[8],this.hostView=this.changeDetectorRef=new Bf(t,void 0),this.componentType=e}setInput(e,t){this._hasInputBindings;let n=this._tNode;if(this.previousInputValues??=new Map,this.previousInputValues.has(e)&&Object.is(this.previousInputValues.get(e),t))return;let r=this._rootLView;ef(n,r[1],r,e,t),this.previousInputValues.set(e,t),Mf(_o(n.index,r),1)}get injector(){return new bl(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(e){this.hostView.onDestroy(e)}};function gm(e,t,n){let r=e.projection=[];for(let e=0;e{class e{static __NG_ELEMENT_ID__=vm}return e})();function vm(){return Sm(Ro(),Io())}var ym=class e extends _m{_lContainer;_hostTNode;_hostLView;constructor(e,t,n){super(),this._lContainer=e,this._hostTNode=t,this._hostLView=n}get element(){return Ol(this._hostTNode,this._hostLView)}get injector(){return new bl(this._hostTNode,this._hostLView)}get parentInjector(){let e=cl(this._hostTNode,this._hostLView);if(Jc(e)){let t=Zc(e,this._hostLView),n=Yc(e),r=t[1].data[n+8];return new bl(r,t)}return new bl(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(e){let t=bm(this._lContainer);return t!==null&&t[e]||null}get length(){return this._lContainer.length-10}createEmbeddedView(e,t,n){let r,i;typeof n==`number`?r=n:n!=null&&(r=n.index,i=n.injector);let a=Qf(this._lContainer,e.ssrId),o=e.createEmbeddedViewImpl(t||{},i,a);return this.insertImpl(o,r,cf(this._hostTNode,a)),o}createComponent(e,t,n,r,i,a,o){let s,c=t||{};s=c.index,n=c.injector,r=c.projectableNodes,i=c.environmentInjector||c.ngModuleRef,a=c.directives,o=c.bindings;let l=new um(Ni(e)),u=n||this.parentInjector;if(!i&&l.ngModule==null){let e=this.parentInjector.get(za,null);e&&(i=e)}let d=Ni(l.componentType??{}),f=Qf(this._lContainer,d?.id??null),p=f?.firstChild??null,m=l.create(u,r,p,i,a,o,this._getHostElementNamespace());return this.insertImpl(m.hostView,s,cf(this._hostTNode,f)),m}_getHostElementNamespace(){if(this._hostTNode.type&2){let e=this._hostTNode.parent??this._hostLView[5];return e!==null&&e.type&2&&typeof e.value==`string`&&e.value.toLowerCase()===`foreignobject`?null:e?.namespace??null}return this._hostTNode.namespace}insert(e,t){return this.insertImpl(e,t,!0)}insertImpl(t,n,r){let i=t._lView;if(Gee(i)){let n=this.indexOf(t);if(n!==-1)this.detach(n);else{let n=i[3],r=new e(n,n[5],n[3]);r.detach(r.indexOf(t))}}let a=this._adjustIndex(n),o=this._lContainer;return Ff(o,i,a,r),t.attachToViewContainerRef(),la(xm(o),a,t),t}move(e,t){return this.insert(e,t)}indexOf(e){let t=bm(this._lContainer);return t===null?-1:t.indexOf(e)}remove(e){let t=this._adjustIndex(e,-1),n=Lf(this._lContainer,t);n&&(ua(xm(this._lContainer),t),ud(n[1],n))}detach(e){let t=this._adjustIndex(e,-1),n=Lf(this._lContainer,t);return n&&ua(xm(this._lContainer),t)!=null?new Bf(n):null}_adjustIndex(e,t=0){return e??this.length+t}};function bm(e){return e[8]}function xm(e){return e[8]||=[]}function Sm(e,t){let n,r=t[e.index];return to(r)?n=r:(n=Nf(r,t,null,e),t[e.index]=n,Md(t,n)),wm(n,t,e,r),new ym(n,e,t)}function Cm(e,t){let n=e[11],r=n.createComment(``),i=po(t,e);return mu(n,n.parentNode(i),r,n.nextSibling(i),!1),r}var wm=Dm,Tm=()=>!1;function Em(e,t,n){return Tm(e,t,n)}function Dm(e,t,n,r){if(e[7])return;let i;i=n.type&8?uo(r):Cm(t,n),e[7]=i}var Om=class e{queryList;matches=null;constructor(e){this.queryList=e}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}},km=class e{queries;constructor(e=[]){this.queries=e}createEmbeddedView(t){let n=t.queries;if(n!==null){let r=t.contentQueries===null?n.length:t.contentQueries[0],i=[];for(let e=0;e0)r.push(o[e/2]);else{let i=a[e+1],o=t[-n];for(let e=10;ee.trim())}function Um(e,t,n){e.queries===null&&(e.queries=new jm),e.queries.track(new Mm(t,n))}function Wm(e,t){return e.queries.getByIndex(t)}function Gm(e,t){let n=e[1],r=Wm(n,t);return r.crossesNgTemplate?Rm(n,e,t,[]):Lm(n,e,r,t)}function Km(e,t,n){let r,i=Sn(()=>{r._dirtyCounter();let n=Xm(r,e);if(t&&n===void 0)throw new ui(-951,!1);return n});return r=i[$t],r._dirtyCounter=E(0),r._flatValue=void 0,i}function qm(e){return Km(!0,!1,e)}function Jm(e){return Km(!0,!0,e)}function Ym(e,t){let n=e[$t];n._lView=Io(),n._queryIndex=t,n._queryList=zm(n._lView,t),n._queryList.onDirty(()=>n._dirtyCounter.update(e=>e+1))}function Xm(e,t){let n=e._lView,r=e._queryIndex;if(n===void 0||r===void 0||n[2]&4)return t?void 0:va;let i=zm(n,r),a=Gm(n,r);return i.reset(a,Al),t?i.first:i._changesDetected||e._flatValue===void 0?e._flatValue=i.toArray():e._flatValue}function Zm(e){return!!e&&typeof e.then==`function`}function Qm(e){return!!e&&typeof e.subscribe==`function`}var $m=class{},eh=class extends $m{injector;instance=null;constructor(e){super();let t=new Ba([...e.providers,{provide:$m,useValue:this}],e.parent||Ra(),e.debugName,new Set([`environment`]));this.injector=t,e.runEnvironmentInitializers&&t.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function th(e,t,n=null){return new eh({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var nh=(()=>{class e{_injector;cachedInjectors=new Map;constructor(e){this._injector=e}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){let t=wa(!1,e.type),n=t.length>0?th([t],this._injector,``):null;this.cachedInjectors.set(e,n)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(let e of this.cachedInjectors.values())e!==null&&e.destroy()}finally{this.cachedInjectors.clear()}}static ɵprov=vi({token:e,providedIn:`environment`,factory:()=>new e(ea(za))})}return e})();function O(e){return gc(()=>{let t=ch(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection!==Pl.Eager,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?e=>e.get(nh).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||iu.Emulated,styles:e.styles||va,_:null,schemas:e.schemas||null,tView:null,id:``};t.standalone&&Yu(`NgStandalone`),lh(n);let r=e.dependencies;return n.directiveDefs=uh(r,rh),n.pipeDefs=uh(r,Fi),n.id=dh(n),n})}function rh(e){return Ni(e)||Pi(e)}function ih(e,t){if(e==null)return _a;let n={};for(let r in e)if(Object.hasOwn(e,r)){let i=e[r],a,o,s,c;Array.isArray(i)?(s=i[0],a=i[1],o=i[2]??a,c=i[3]||null):(a=i,o=i,s=Pd.None,c=null),n[a]=[r,s,c],t[a]=o}return n}function ah(e){if(e==null)return _a;let t={};for(let n in e)Object.hasOwn(e,n)&&(t[e[n]]=n);return t}function oh(e){return gc(()=>{let t=ch(e);return lh(t),t})}function sh(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone??!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function ch(e){let t={};return{type:e.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputConfig:e.inputs||_a,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||va,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,signalFormsInputPresence:null,inputs:ih(e.inputs,t),outputs:ah(e.outputs),debugInfo:null}}function lh(e){e.features?.forEach(t=>t(e))}function uh(e,t){return e?()=>{let n=typeof e==`function`?e():e,r=[];for(let e of n){let n=t(e);n!==null&&r.push(n)}return r}:null}function dh(e){let t=0,n=typeof e.consts==`function`?``:e.consts,r=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,n,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery];for(let e of r.join(`|`))t=Math.imul(31,t)+e.charCodeAt(0)<<0;return t+=2147483648,`c`+t}var fh=new Ti(``),ph=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((e,t)=>{this.resolve=e,this.reject=t});appInits=S(fh,{optional:!0})??[];injector=S(gs);constructor(){}runInitializers(){if(this.initialized)return;let e=[];for(let t of this.appInits){let n=Za(this.injector,t);if(Zm(n))e.push(n);else if(Qm(n)){let t=new Promise((e,t)=>{n.subscribe({complete:e,error:t})});e.push(t)}}let t=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{t()}).catch(e=>{this.reject(e)}),e.length===0&&t(),this.initialized=!0}static ɵfac=function(t){return new(t||e)};static ɵprov=El({token:e,factory:e.ɵfac})}return e})();function mh(e){return t=>{t.controlDef={create:(e,t)=>{e?.ɵngControlCreate(t)},update:(e,t)=>{e?.ɵngControlUpdate?.(t)},passThroughInput:e}}}function hh(e){return Object.getPrototypeOf(e.prototype).constructor}function gh(e){let t=hh(e.type),n=!0,r=[e];for(;t&&t!==Function.prototype&&t!==Object.prototype;){let i,a=Object.hasOwn(t,Di)?t[Di]:void 0,o=Object.hasOwn(t,Oi)?t[Oi]:void 0;if(ao(e))i=a??o;else{if(a)throw new ui(903,!1);i=o}if(i){if(n){r.push(i);let t=e;t.inputs=yh(e.inputs),t.declaredInputs=yh(e.declaredInputs),t.outputs=yh(e.outputs);let n=i.hostBindings;n&&Sh(e,n);let a=i.viewQuery,o=i.contentQueries;if(a&&bh(e,a),o&&xh(e,o),_h(e,i),Uee(e.outputs,i.outputs),ao(i)&&i.data.animation){let t=e.data;t.animation=(t.animation||[]).concat(i.data.animation)}}let t=i.features;if(t)for(let r=0;r=0;r--){let i=e[r];i.hostVars=t+=i.hostVars,i.hostAttrs=Kc(i.hostAttrs,n=Kc(n,i.hostAttrs))}}function yh(e){return e===_a?{}:e===va?[]:e}function bh(e,t){let n=e.viewQuery;e.viewQuery=n?(e,r)=>{t(e,r),n(e,r)}:t}function xh(e,t){let n=e.contentQueries;e.contentQueries=n?(e,r,i)=>{t(e,r,i),n(e,r,i)}:t}function Sh(e,t){let n=e.hostBindings;e.hostBindings=n?(e,r)=>{t(e,r),n(e,r)}:t}function Ch(e,t,n,r,i,a,o,s){if(n.firstCreatePass){e.mergedAttrs=Kc(e.mergedAttrs,e.attrs);let t=e.tView=Td(2,e,i,a,o,n.directiveRegistry,n.pipeRegistry,null,n.schemas,n.consts,null);n.queries!==null&&(n.queries.template(n,e),t.queries=n.queries.embeddedTView(e))}s&&(e.flags|=s),Bo(e,!1);let c=Dh(n,t,e,r);fs()&&md(n,t,c,e),Vl(c,t);let l=Nf(c,t,c,e);t[r+27]=l,Md(t,l),Em(l,e,t)}function wh(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;return t.firstCreatePass?(f=Wf(t,d,4,o||null,s||null),Mo()&&Rp(t,e,f,yo(t.consts,l),qd),Mc(t,f)):f=t.data[d],Ch(f,e,t,n,r,i,a,c),io(f)&&Ld(t,e,f),l!=null&&Rd(e,f,u),f}function Th(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;if(t.firstCreatePass){if(f=Wf(t,d,4,o||null,s||null),l!=null){let e=yo(t.consts,l);f.localNames=[];for(let t=0;t{throw new ui(600,``)})}var Mh=10,Nh=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=S(Us);afterRenderManager=S(Xu);zonelessEnabled=S(ec);rootEffectScheduler=S(nc);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new Vr;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=S(Ss);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(ci(e=>!e))}constructor(){S(qu,{optional:!0})}whenStable(){let e;return new Promise(t=>{e=this.isStable.subscribe({next:e=>{e&&t()}})}).finally(()=>{e.unsubscribe()})}_injector=S(za);_rendererFactory=null;get injector(){return this._injector}bootstrap(e,t){return this.bootstrapImpl(e,t)}bootstrapImpl(e,t,n=gs.NULL){return this._injector.get(As).run(()=>{if(Ac(_c.BootstrapComponentStart),!this._injector.get(ph).done)throw new ui(405,``);let r=Ni(e),i=this._injector.get($m),a=new um(r,i);this.componentTypes.push(e);let{hostElement:o,directives:s,bindings:c}=Ph(t),l=o||a.selector,u=a.create(n,[],l,i.injector,s,c),d=u.location.nativeElement,f=u.injector.get(kh,null);return f?.registerApplication(d),u.onDestroy(()=>{this.detachView(u.hostView),Fh(this.components,u),f?.unregisterApplication(d)}),this._loadComponent(u),Ac(_c.BootstrapComponentEnd,u),u})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){Ac(_c.ChangeDetectionStart),this.tracingSnapshot===null?this.tickImpl():this.tracingSnapshot.run(Ku.CHANGE_DETECTION,this.tickImpl)}tickImpl=()=>{if(this._runningTick)throw Ac(_c.ChangeDetectionEnd),new ui(101,!1);let e=en(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,en(e),this.afterTick.next(),Ac(_c.ChangeDetectionEnd)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(tp,null,{optional:!0}));let e=0;for(;this.dirtyFlags!==0&&e++So(e))){this.dirtyFlags|=2;return}this.dirtyFlags&=-8}attachView(e){let t=e;this._views.push(t),t.attachToAppRef(this)}detachView(e){let t=e;Fh(this._views,t),t.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView);try{this.tick()}catch(e){this.internalErrorHandler(e)}this.components.push(e),this._injector.get(Ah,[]).forEach(t=>t(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),()=>Fh(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new ui(406,!1);let e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}static ɵfac=function(t){return new(t||e)};static ɵprov=El({token:e,factory:e.ɵfac})}return e})();function Ph(e){return e===void 0||typeof e==`string`||e instanceof Element?{hostElement:e}:e}function Fh(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function k(e,t,n,r){let i=Io();return up(i,Jo(),t)&&(Lo(),Jd(ss(),i,e,t,n,r)),k}function Ih(e){if(Yu(`NgAnimateEnter`),!Iu)return Ih;let t=Io();if(Fte(t))return Ih;let n=Ro(),r=t[9].get(As);return Bte(Uu(t),n,()=>Lh(t,n,e,r)),Kte(t[9]),rd(t[9],Uu(t)),Ih}function Lh(e,t,n,r){let i=po(t,e),a=e[11],o=zte(n),s=[],c=!1,l=e=>{if(Wu(e)!==i)return;let t=e instanceof AnimationEvent?`animationend`:`transitionend`;r.runOutsideAngular(()=>{a.listen(i,t,u)})},u=e=>{Wu(e)===i&&(Gu(e,i)&&(c=!0),Rh(e,i,a))};if(o&&o.length>0){r.runOutsideAngular(()=>{s.push(a.listen(i,`animationstart`,l)),s.push(a.listen(i,`transitionstart`,l))}),Ite(i,o,s);for(let e of o)a.addClass(i,e);r.runOutsideAngular(()=>{requestAnimationFrame(()=>{if(!c&&(jte(i,zu,Iu),!zu.has(i))){for(let e of o)a.removeClass(i,e);Lu(i)}})})}}function Rh(e,t,n){let r=Ru.get(t);if(Wu(e)===t&&r&&Gu(e,t)){e.stopPropagation();for(let e of r.classList)n.removeClass(t,e);Lu(t)}}var zh=class{destroy(e){}updateValue(e,t){}swap(e,t){let n=Math.min(e,t),r=Math.max(e,t),i=this.detach(r);if(r-n>1){let e=this.detach(n);this.attach(n,i),this.attach(r,e)}else this.attach(n,i)}move(e,t){this.attach(t,this.detach(e))}};function Bh(e,t,n,r,i){return e===n&&Object.is(t,r)?1:Object.is(i(e,t),i(n,r))?-1:0}function Vh(e,t,n,r){let i,a,o=0,s=e.length-1;if(Array.isArray(t)){en(r);let c=t.length-1;for(en(null);o<=s&&o<=c;){let r=e.at(o),l=t[o],u=Bh(o,r,o,l,n);if(u!==0){u<0&&e.updateValue(o,l),o++;continue}let d=e.at(s),f=t[c],p=Bh(s,d,c,f,n);if(p!==0){p<0&&e.updateValue(s,f),s--,c--;continue}let m=n(o,r),h=n(s,d),g=n(o,l);if(Object.is(g,h)){let t=n(c,f);Object.is(t,m)?(e.swap(o,s),e.updateValue(s,f),c--,s--):e.move(s,o),e.updateValue(o,l),o++;continue}if(i??=new Gh,a??=Wh(e,o,s,n),Hh(e,i,o,g))e.updateValue(o,l),o++,s++;else if(a.has(g))i.set(m,e.detach(o)),s--;else{let n=e.create(o,t[o]);e.attach(o,n),o++,s++}}for(;o<=c;)Uh(e,i,n,o,t[o]),o++}else if(t!=null){en(r);let c=t[Symbol.iterator]();en(null);let l=c.next();for(;!l.done&&o<=s;){let t=e.at(o),r=l.value,u=Bh(o,t,o,r,n);if(u!==0)u<0&&e.updateValue(o,r),o++,l=c.next();else{i??=new Gh,a??=Wh(e,o,s,n);let u=n(o,r);if(Hh(e,i,o,u))e.updateValue(o,r),o++,s++,l=c.next();else if(!a.has(u))e.attach(o,e.create(o,r)),o++,s++,l=c.next();else{let r=n(o,t);i.set(r,e.detach(o)),s--}}}for(;!l.done;)Uh(e,i,n,e.length,l.value),l=c.next()}for(;o<=s;)e.destroy(e.detach(s--));i?.forEach(t=>{e.destroy(t)})}function Hh(e,t,n,r){return t!==void 0&&t.has(r)?(e.attach(n,t.get(r)),t.delete(r),!0):!1}function Uh(e,t,n,r,i){if(Hh(e,t,r,n(r,i)))e.updateValue(r,i);else{let t=e.create(r,i);e.attach(r,t)}}function Wh(e,t,n,r){let i=new Set;for(let a=t;a<=n;a++)i.add(r(a,e.at(a)));return i}var Gh=class{kvMap=new Map;_vMap=void 0;has(e){return this.kvMap.has(e)}delete(e){if(!this.has(e))return!1;let t=this.kvMap.get(e);return this._vMap!==void 0&&this._vMap.has(t)?(this.kvMap.set(e,this._vMap.get(t)),this._vMap.delete(t)):this.kvMap.delete(e),!0}get(e){return this.kvMap.get(e)}set(e,t){if(this.kvMap.has(e)){let n=this.kvMap.get(e);this._vMap===void 0&&(this._vMap=new Map);let r=this._vMap;for(;r.has(n);)n=r.get(n);r.set(n,t)}else this.kvMap.set(e,t)}forEach(e){for(let[t,n]of this.kvMap)if(e(n,t),this._vMap!==void 0){let r=this._vMap;for(;r.has(n);)n=r.get(n),e(n,t)}}};function A(e,t,n,r,i,a,o,s){Yu(`NgControlFlow`);let c=Io(),l=Lo();return Th(c,l,e,t,n,r,i,yo(l.consts,a),256,o,s),Kh}function Kh(e,t,n,r,i,a,o,s){Yu(`NgControlFlow`);let c=Io(),l=Lo();return Th(c,l,e,t,n,r,i,yo(l.consts,a),512,o,s),Kh}function j(e,t){Yu(`NgControlFlow`);let n=Io(),r=Jo(),i=n[r]===Du?-1:n[r],a=i===-1?void 0:Qh(n,27+i);if(up(n,r,e)){let r=en(null);try{if(a!==void 0&&If(a,0),e!==-1){let r=27+e,i=Qh(n,r),a=rg(n[1],r),o=$f(i,a,n);Ff(i,sf(n,a,t,{dehydratedView:o}),0,cf(a,o))}}finally{en(r)}}else if(a!==void 0){let e=Pf(a,0);e!==void 0&&(e[8]=t)}}var qh=class{lContainer;$implicit;$index;constructor(e,t,n){this.lContainer=e,this.$implicit=t,this.$index=n}get $count(){return this.lContainer.length-10}};function Jh(e){return e}function Yh(e,t){return t}var Xh=class{hasEmptyBlock;trackByFn;liveCollection;constructor(e,t,n){this.hasEmptyBlock=e,this.trackByFn=t,this.liveCollection=n}};function M(e,t,n,r,i,a,o,s,c,l,u,d,f){Yu(`NgControlFlow`);let p=Io(),m=Lo(),h=c!==void 0,g=Io(),_=new Xh(h,s?o.bind(g[15][8]):o);g[27+e]=_,Th(p,m,e+1,t,n,r,i,yo(m.consts,a),256),h&&Th(p,m,e+2,c,l,u,d,yo(m.consts,f),512)}var Zh=class extends zh{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(e,t,n){super(),this.lContainer=e,this.hostLView=t,this.templateTNode=n}get length(){return this.lContainer.length-10}at(e){return this.getLView(e)[8].$implicit}attach(e,t){let n=t[6];this.needsIndexUpdate||=e!==this.length,Ff(this.lContainer,t,e,cf(this.templateTNode,n)),$h(this.lContainer,e)}detach(e){return this.needsIndexUpdate||=e!==this.length-1,eg(this.lContainer,e),tg(this.lContainer,e)}create(e,t){let n=Qf(this.lContainer,this.templateTNode.tView.ssrId);return sf(this.hostLView,this.templateTNode,new qh(this.lContainer,t,e),{dehydratedView:n})}destroy(e){ud(e[1],e)}updateValue(e,t){this.getLView(e)[8].$implicit=t}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let e=0;e0){let e=n[9];Wte(e,r),Fu.delete(n[19]),r.detachedLeaveAnimationFns=void 0}}function eg(e,t){if(e.length<=10)return;let n=e[10+t],r=n?n[26]:void 0;r&&r.leave&&r.leave.size>0&&(r.detachedLeaveAnimationFns=[])}function tg(e,t){return Lf(e,t)}function ng(e,t){return Pf(e,t)}function rg(e,t){return mo(e,t)}function P(e,t,n){let r=Io();return up(r,Jo(),t)&&(Lo(),Vd(ss(),r,e,t,r[11],n)),P}function ig(e,t,n,r,i){ef(t,e,n,i?`class`:`style`,r)}function F(e,t,n,r){let i=Io(),a=i[1],o=e+27,s=a.firstCreatePass?Qp(o,i,2,t,qd,Mo(),n,r):a.data[o];if(ro(s)){let n=i[10].tracingService;if(n&&n.componentCreate){let o=a.data[s.directiveStart+s.componentOffset];return n.componentCreate(ap(o),()=>(ag(e,t,i,s,r),F))}}return ag(e,t,i,s,r),F}function ag(e,t,n,r,i){if(Zd(r,n,e,t,sg),io(r)){let e=n[1];Ld(e,n,r),ru(e,r,n)}i!=null&&Rd(n,r)}function I(){let e=Lo(),t=Qd(Ro());return e.firstCreatePass&&$p(e,t),Po(t)&&Fo(),jo(),t.classesWithoutHost!=null&&Vc(t)&&ig(e,t,Io(),t.classesWithoutHost,!0),t.stylesWithoutHost!=null&&Hc(t)&&ig(e,t,Io(),t.stylesWithoutHost,!1),I}function L(e,t,n,r){return F(e,t,n,r),I(),L}function R(e,t,n,r){let i=Io(),a=i[1],o=e+27,s=a.firstCreatePass?em(o,a,2,t,n,r):a.data[o];return Zd(s,i,e,t,sg),r!=null&&Rd(i,s),R}function z(){return Po(Qd(Ro()))&&Fo(),jo(),z}function og(e,t,n,r){return R(e,t,n,r),z(),og}var sg=(e,t,n,r,i)=>(ps(!0),pu(t[11],r,us()));function cg(e,t,n){let r=Io(),i=r[1],a=e+27,o=i.firstCreatePass?Qp(a,r,8,`ng-container`,qd,Mo(),t,n):i.data[a];if(Zd(o,r,e,`ng-container`,dg),io(o)){let e=r[1];Ld(e,r,o),ru(e,o,r)}return n!=null&&Rd(r,o),cg}function lg(){let e=Lo(),t=Qd(Ro());return e.firstCreatePass&&$p(e,t),lg}function ug(e,t,n){return cg(e,t,n),lg(),ug}var dg=(e,t,n,r,i)=>(ps(!0),ute(t[11],``));function B(){return Io()}function V(e,t,n){let r=Io();return up(r,Jo(),t)&&(Lo(),Hd(ss(),r,e,t,r[11],n)),V}var fg=void 0;function pg(e){let t=Math.floor(Math.abs(e)),n=e.toString().replace(/^[^.]*\.?/,``).length;return t===1&&n===0?1:5}var mg=[`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`]],fg,[[`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`]],fg,[[`B`,`A`],[`BC`,`AD`],[`Before Christ`,`Anno Domini`]],0,[6,0],[`M/d/yy`,`MMM d, y`,`MMMM d, y`,`EEEE, MMMM d, y`],[`h:mm a`,`h:mm:ss a`,`h:mm:ss a z`,`h:mm:ss a zzzz`],[`{1}, {0}`,fg,fg,fg],[`.`,`,`,`;`,`%`,`+`,`-`,`E`,`×`,`‰`,`∞`,`NaN`,`:`],[`#,##0.###`,`#,##0%`,`¤#,##0.00`,`#E0`],`USD`,`$`,`US Dollar`,{},`ltr`,pg],hg=Object.create(null);function gg(e){let t=yg(e),n=_g(t);if(n)return n;let r=t.split(`-`)[0];if(n=_g(r),n)return n;if(r===`en`)return mg;throw new ui(701,!1)}function _g(e){if(!(e in hg)){let t=Yi.ng&&Yi.ng.common&&Yi.ng.common.locales&&Yi.ng.common.locales[e];return t!==void 0&&(hg[e]=t),t}return hg[e]}var vg={LocaleId:0,DayPeriodsFormat:1,DayPeriodsStandalone:2,DaysFormat:3,DaysStandalone:4,MonthsFormat:5,MonthsStandalone:6,Eras:7,FirstDayOfWeek:8,WeekendRange:9,DateFormat:10,TimeFormat:11,DateTimeFormat:12,NumberSymbols:13,NumberFormats:14,CurrencyCode:15,CurrencySymbol:16,CurrencyName:17,Currencies:18,Directionality:19,PluralCase:20,ExtraData:21};function yg(e){return e.toLowerCase().replace(/_/g,`-`)}var bg=`en-US`;function xg(e){typeof e==`string`&&e.toLowerCase().replace(/_/g,`-`)}function H(e,t,n){let r=Io(),i=Lo(),a=Ro();return Sg(i,r,r[11],a,e,t,n),H}function U(e,t,n){let r=Io(),i=Lo(),a=Ro();return(a.type&3||n)&&gp(a,i,r,n,r[11],e,t,mp(a,r,t)),U}function Sg(e,t,n,r,i,a,o){let s=!0,c=null;if((r.type&3||o)&&(c??=mp(r,t,a),gp(r,e,t,o,n,i,a,c)&&(s=!1)),s){let e=r.outputs?.[i],n=r.hostDirectiveOutputs?.[i];if(n&&n.length)for(let e=0;e>17&32767}function Mg(e){return(e&2)==2}function Ng(e,t){return e&131071|t<<17}function Pg(e){return e|2}function Fg(e){return(e&131068)>>2}function Ig(e,t){return e&-131069|t<<2}function Lg(e){return(e&1)==1}function Rg(e){return e|1}function zg(e,t,n,r,i,a){let o=a?t.classBindings:t.styleBindings,s=jg(o),c=Fg(o);e[r]=n;let l=!1,u;if(Array.isArray(n)){let e=n;u=e[1],(u===null||ha(e,u)>0)&&(l=!0)}else u=n;if(i){if(c!==0){let t=jg(e[s+1]);e[r+1]=Ag(t,s),t!==0&&(e[t+1]=Ig(e[t+1],r)),e[s+1]=Ng(e[s+1],r)}else e[r+1]=Ag(s,0),s!==0&&(e[s+1]=Ig(e[s+1],r)),s=r}else e[r+1]=Ag(c,0),s===0?s=r:e[c+1]=Ig(e[c+1],r),c=r;l&&(e[r+1]=Pg(e[r+1])),Vg(e,u,r,!0),Vg(e,u,r,!1),Bg(t,u,e,r,a),o=Ag(s,c),a?t.classBindings=o:t.styleBindings=o}function Bg(e,t,n,r,i){let a=i?e.residualClasses:e.residualStyles;a!=null&&typeof t==`string`&&ha(a,t)>=0&&(n[r+1]=Rg(n[r+1]))}function Vg(e,t,n,r){let i=e[n+1],a=t===null,o=r?jg(i):Fg(i),s=!1;for(;o!==0&&(s===!1||a);){let n=e[o],i=e[o+1];Hg(n,t)&&(s=!0,e[o+1]=r?Rg(i):Pg(i)),o=r?jg(i):Fg(i)}s&&(e[n+1]=r?Pg(i):Rg(i))}function Hg(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t==`string`?ha(e,t)>=0:!1}var Ug={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function Wg(e){return e.substring(Ug.key,Ug.keyEnd)}function Gg(e){return qg(e),Kg(e,Jg(e,0,Ug.textEnd))}function Kg(e,t){let n=Ug.textEnd;return n===t?-1:(t=Ug.keyEnd=Yg(e,Ug.key=t,n),Jg(e,t,n))}function qg(e){Ug.key=0,Ug.keyEnd=0,Ug.value=0,Ug.valueEnd=0,Ug.textEnd=e.length}function Jg(e,t,n){for(;t32;)t++;return t}function Xg(e,t,n){return $g(e,t,n,!1),Xg}function G(e,t){return $g(e,t,null,!0),G}function Zg(e){e_(u_,Qg,e,!0)}function Qg(e,t){for(let n=Gg(t);n>=0;n=Kg(t,n))pa(e,Wg(t),!0)}function $g(e,t,n,r){let i=Io(),a=Lo(),o=Yo(2);if(a.firstUpdatePass&&n_(a,e,o,r),t!==Du&&up(i,o,t)){let s=a.data[as()];f_(a,s,i,i[11],e,i[o+1]=ane(t,n),r,o)}}function e_(e,t,n,r){let i=Lo(),a=Yo(2);i.firstUpdatePass&&n_(i,null,a,r);let o=Io();if(n!==Du&&up(o,a,n)){let s=i.data[as()];if(h_(s,r)&&!t_(i,a)){let e=r?s.classesWithoutHost:s.stylesWithoutHost;e!==null&&(n=mi(e,n||``)),ig(i,s,o,n,r)}else d_(i,s,o,o[11],o[a+1],o[a+1]=l_(e,t,n),r,a)}}function t_(e,t){return t>=e.expandoStartIndex}function n_(e,t,n,r){let i=e.data;if(i[n+1]===null){let a=i[as()],o=t_(e,n);h_(a,r)&&t===null&&!o&&(t=!1),t=r_(i,a,t,r),zg(i,a,t,n,o,r)}}function r_(e,t,n,r){let i=nte(e),a=r?t.residualClasses:t.residualStyles;if(i===null)(r?t.classBindings:t.styleBindings)===0&&(n=s_(null,e,t,n,r),n=c_(n,t.attrs,r),a=null);else{let o=t.directiveStylingLast;if(o===-1||e[o]!==i){if(n=s_(i,e,t,n,r),a===null){let n=i_(e,t,r);n!==void 0&&Array.isArray(n)&&(n=s_(null,e,t,n[1],r),n=c_(n,t.attrs,r),a_(e,t,r,n))}else a=o_(e,t,r)}}return a!==void 0&&(r?t.residualClasses=a:t.residualStyles=a),n}function i_(e,t,n){let r=n?t.classBindings:t.styleBindings;if(Fg(r)!==0)return e[jg(r)]}function a_(e,t,n,r){let i=n?t.classBindings:t.styleBindings;e[jg(i)]=r}function o_(e,t,n){let r,i=t.directiveEnd;for(let a=1+t.directiveStylingLast;a0;){let t=e[i],a=Array.isArray(t),c=a?t[1]:t,l=c===null,u=n[i+1];u===Du&&(u=l?va:void 0);let d=l?ma(u,r):c===r?u:void 0;if(a&&!m_(d)&&(d=ma(t,r)),m_(d)&&(s=d,o))return s;let f=e[i+1];i=o?jg(f):Fg(f)}if(t!==null){let e=a?t.residualClasses:t.residualStyles;e!=null&&(s=ma(e,r))}return s}function m_(e){return e!==void 0}function ane(e,t){return e==null||e===``||(typeof t==`string`?e=ou(e)+t:typeof e==`object`&&(e=pi(ou(e)))),e}function h_(e,t){return!!(e.flags&(t?8:16))}function K(e,t=``){let n=Io(),r=Lo(),i=e+27,a=r.firstCreatePass?Wf(r,i,1,t,null):r.data[i],o=one(r,n,a,t);n[i]=o,fs()&&md(r,n,o,a),Bo(a,!1)}var one=(e,t,n,r)=>(ps(!0),cte(t[11],r));function g_(e,t,n,r=``){return up(e,Jo(),n)?t+Li(n)+r:Du}function sne(e,t,n,r,i,a=``){let o=dp(e,qo(),n,i);return Yo(2),o?t+Li(n)+r+Li(i)+a:Du}function cne(e,t,n,r,i,a,o,s=``){let c=fp(e,qo(),n,i,o);return Yo(3),c?t+Li(n)+r+Li(i)+a+Li(o)+s:Du}function lne(e,t,n,r,i,a,o,s,c,l=``){let u=pp(e,qo(),n,i,o,c);return Yo(4),u?t+Li(n)+r+Li(i)+a+Li(o)+s+Li(c)+l:Du}function q(e){return J(``,e),q}function J(e,t,n){let r=Io(),i=g_(r,e,t,n);return i!==Du&&y_(r,as(),i),J}function Y(e,t,n,r,i){let a=Io(),o=sne(a,e,t,n,r,i);return o!==Du&&y_(a,as(),o),Y}function __(e,t,n,r,i,a,o){let s=Io(),c=cne(s,e,t,n,r,i,a,o);return c!==Du&&y_(s,as(),c),__}function v_(e,t,n,r,i,a,o,s,c){let l=Io(),u=lne(l,e,t,n,r,i,a,o,s,c);return u!==Du&&y_(l,as(),u),v_}function y_(e,t,n){let r=fo(t,e);lte(e[11],r,n)}function b_(e,t,n){pc(t)&&(t=t());let r=Io();return up(r,Jo(),t)&&(Lo(),Vd(ss(),r,e,t,r[11],n)),b_}function x_(e,t){let n=pc(e);return n&&e.set(t),n}function S_(e,t){let n=Io(),r=Lo(),i=Ro();return Sg(r,n,n[11],i,e,t),S_}var C_={};function w_(e){Yu(`NgLet`);let t=Lo(),n=Io(),r=e+27;return Bo(Wf(t,r,128,null,null),!1),go(t,n,r,C_),w_}function T_(e){return go(Lo(),Io(),as(),e),e}function E_(e){let t=ho(Uo(),27+e);if(t===C_)throw new ui(314,!1);return t}function D_(e,t,n=``){return g_(Io(),e,t,n)}function O_(e,t,n){let r=Lo();r.firstCreatePass&&k_(t,r.data,r.blueprint,ao(e),n)}function k_(e,t,n,r,i){if(e=gi(e),Array.isArray(e))for(let a=0;a>20;if(Ma(e)||!e.multi){let r=new Bc(l,i,Lp,null),p=M_(c,t,i?u:u+f,d);p===-1?(ll(al(s,o),a,c),A_(a,e,t.length),t.push(c),s.directiveStart++,s.directiveEnd++,i&&(s.providerIndexes+=1048576),n.push(r),o.push(r)):(n[p]=r,o[p]=r)}else{let p=M_(c,t,u+f,d),m=M_(c,t,u,u+f),h=p>=0&&n[p],g=m>=0&&n[m];if(i&&!g||!i&&!h){ll(al(s,o),a,c);let u=fne(i?dne:une,n.length,i,r,l,e);!i&&g&&(n[m].providerFactory=u),A_(a,e,t.length,0),t.push(c),s.directiveStart++,s.directiveEnd++,i&&(s.providerIndexes+=1048576),n.push(u),o.push(u)}else{let t=j_(n[i?m:p],l,!i&&r);A_(a,e,p>-1?p:m,t)}!i&&r&&g&&n[m].componentProviders++}}}function A_(e,t,n,r){let i=Ma(t),a=Na(t);if(i||a){let o=(a?gi(t.useClass):t).prototype.ngOnDestroy;if(o){let a=e.destroyHooks||=[];if(!i&&t.multi){let e=a.indexOf(n);e===-1?a.push(n,[r,o]):a[e+1].push(r,o)}else a.push(n,o)}}}function j_(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function M_(e,t,n,r){for(let i=n;i{n.providersResolver=(t,n)=>O_(t,n?n(e):e,!1),t&&(n.viewProvidersResolver=(e,n)=>O_(e,n?n(t):t,!0))}}function F_(e,t){let n=Ko()+e,r=Io();return r[n]===Du?cp(r,n,t()):lp(r,n)}function I_(e,t,n){return z_(Io(),Ko(),e,t,n)}function L_(e,t,n,r){return B_(Io(),Ko(),e,t,n,r)}function pne(e,t,n,r,i,a,o){return mne(Io(),Ko(),e,t,n,r,i,a)}function R_(e,t){let n=e[t];return n===Du?void 0:n}function z_(e,t,n,r,i,a){let o=t+n;return up(e,o,i)?cp(e,o+1,a?r.call(a,i):r(i)):R_(e,o+1)}function B_(e,t,n,r,i,a,o){let s=t+n;return dp(e,s,i,a)?cp(e,s+2,o?r.call(o,i,a):r(i,a)):R_(e,s+2)}function mne(e,t,n,r,i,a,o,s,c){let l=t+n;return pp(e,l,i,a,o,s)?cp(e,l+4,c?r.call(c,i,a,o,s):r(i,a,o,s)):R_(e,l+4)}function V_(e,t){let n=Lo(),r,i=e+27;n.firstCreatePass?(r=hne(t,n.pipeRegistry),n.data[i]=r,r.onDestroy&&(n.destroyHooks??=[]).push(i,r.onDestroy)):r=n.data[i];let a=r.factory||(r.factory=aa(r.type,!0)),o=qi(Lp);try{let e=$c(!1),t=a();return $c(e),go(n,Io(),i,t),t}finally{qi(o)}}function hne(e,t){if(t)for(let n=t.length-1;n>=0;n--){let r=t[n];if(e===r.name)return r}}function H_(e,t,n){let r=e+27,i=Io(),a=ho(i,r);return W_(i,r)?z_(i,Ko(),t,a.transform,n,a):a.transform(n)}function U_(e,t,n,r){let i=e+27,a=Io(),o=ho(a,i);return W_(a,i)?B_(a,Ko(),t,o.transform,n,r,o):o.transform(n,r)}function W_(e,t){return e[1].data[t].pure}function G_(e,t){return Uf(e,t)}var gne=(()=>{class e{applicationErrorHandler=S(Us);appRef=S(Nh);taskService=S(Ss);ngZone=S(As);zonelessEnabled=S(ec);tracing=S(qu,{optional:!0});zoneIsDefined=typeof Zone<`u`&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new ar;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(Os):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(S(tc,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{let e=this.taskService.add();if(!this.runningTick&&(this.cleanup(),!this.zonelessEnabled||this.appRef.includeAllTestViews)){this.taskService.remove(e);return}this.switchToMicrotaskScheduler(),this.taskService.remove(e)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{let e=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(e)})})}notify(e){if(!this.zonelessEnabled&&e===5)return;switch(e){case 0:case 2:this.appRef.dirtyFlags|=2;break;case 3:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 6:this.appRef.dirtyFlags|=2;break;case 12:this.appRef.dirtyFlags|=16;break;case 13:this.appRef.dirtyFlags|=2;break;case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;let t=this.useMicrotaskScheduler?Es:Ts;this.pendingRenderTaskId=this.taskService.add(),this.cancelScheduledCallback=this.scheduleInRootZone?Zone.root.run(()=>t(()=>this.tick())):this.ngZone.runOutsideAngular(()=>t(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(`isAngularZone_ID`+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRef.dirtyFlags===0){this.cleanup();return}!this.zonelessEnabled&&this.appRef.dirtyFlags&7&&(this.appRef.dirtyFlags|=1);let e=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(e){this.applicationErrorHandler(e)}finally{this.taskService.remove(e),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let e=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(e)}}static ɵfac=function(t){return new(t||e)};static ɵprov=El({token:e,factory:e.ɵfac})}return e})();function _ne(){return[{provide:$s,useExisting:gne},{provide:As,useClass:Rs},{provide:ec,useValue:!0}]}function vne(){return typeof $localize<`u`&&$localize.locale||`en-US`}var K_=new Ti(``,{factory:()=>S(K_,{optional:!0,skipSelf:!0})||vne()}),q_=class{destroyed=!1;listeners=null;errorHandler=S(Hs,{optional:!0});isEmitting=!1;hasNullListeners=!1;destroyRef=S(vs);constructor(){this.destroyRef.onDestroy(()=>{this.destroyed=!0,this.listeners=null})}subscribe(e){if(this.destroyed)throw new ui(953,!1);return(this.listeners??=[]).push(e),{unsubscribe:()=>{let t=this.listeners?this.listeners.indexOf(e):-1;t>-1&&(this.isEmitting?(this.hasNullListeners=!0,this.listeners[t]=null):this.listeners.splice(t,1))}}}emit(e){if(this.destroyed){console.warn(di(953,!1));return}if(this.listeners===null)return;this.isEmitting=!0;let t=en(null);try{for(let t of this.listeners)try{t!==null&&t(e)}catch(e){this.errorHandler?.handleError(e)}}finally{this.hasNullListeners&&(this.hasNullListeners=!1,this.listeners&&yne(this.listeners)),en(t),this.isEmitting=!1}}};function yne(e){let t=e.length-1;for(;t>-1;)e[t]===null&&e.splice(t,1),t--}function X(e,t){return Sn(e,t?.equal)}function Z(e){return Wn(e)}(class e extends Error{_brand;constructor(e){super(e)}static IDLE=new e(`IDLE`);static LOADING=new e(`LOADING`)});var bne=e=>e;function Q(e,t){return typeof e==`function`?J_(Bn(e,bne,t?.equal),t?.debugName,t?.set):J_(Bn(e.source,e.computation,e.equal),e.debugName,e.set)}function J_(e,t,n){let r=e[$t],i=e;if(n!==void 0){let t=e=>Vn(r,e);i.set=e=>n(e,t),i.update=r=>n(r(Z(e)),t)}else i.set=e=>Vn(r,e),i.update=e=>Hn(r,e);return i.asReadonly=Gs.bind(e),i}var Y_=!1;function xne(){return Y_}function X_(e){Y_=e}function Z_(e,t){let n=Object.create(hc);n.value=e,n.transformFn=t?.transform;function r(){if(rn(n),n.value===mc)throw new ui(-950,null);return n.value}return r[$t]=n,r}function Q_(e){return new q_}function $_(e,t){return Z_(e,t)}function Sne(e){return Z_(mc,e)}var $=($_.required=Sne,$_);function ev(e,t){let n=Object.create(hc),r=new q_;n.value=e;function i(){return rn(n),tv(n.value),n.value}return i[$t]=n,i.asReadonly=Gs.bind(i),i.set=e=>{n.equal(n.value,e)||(kn(n,e),r.emit(e))},i.update=e=>{tv(n.value),i.set(e(n.value))},i.subscribe=r.subscribe.bind(r),i.destroyRef=r.destroyRef,i}function tv(e){if(e===mc)throw new ui(952,!1)}function nv(e,t){return ev(e,t)}function Cne(e){return ev(mc,e)}var rv=(nv.required=Cne,nv);function iv(e,t){return qm(t)}function wne(e,t){return Jm(t)}var av=(iv.required=wne,iv),Tne=(()=>{class e{static __NG_ELEMENT_ID__=Ene}return e})();function Ene(e){return Dne(Ro(),Io(),(e&16)==16)}function Dne(e,t,n){if(ro(e)&&!n){let n=_o(e.index,t);return new Bf(n,n)}if(e.type&175){let e=t[15];return new Bf(e,t)}return null}var ov=new Ti(``),One=new Ti(``);function sv(e){return!e.moduleRef}function kne(e){let t=sv(e)?e.r3Injector:e.moduleRef.injector,n=t.get(As);return n.run(()=>{sv(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=t.get(Us),i;if(n.runOutsideAngular(()=>{i=n.onError.subscribe({next:r})}),sv(e)){let n=()=>t.destroy(),r=e.platformInjector.get(ov);r.add(n),t.onDestroy(()=>{i.unsubscribe(),r.delete(n)})}else{let t=()=>e.moduleRef.destroy(),n=e.platformInjector.get(ov);n.add(t),e.moduleRef.onDestroy(()=>{Fh(e.allPlatformModules,e.moduleRef),i.unsubscribe(),n.delete(t)})}return jne(r,n,()=>{let n=t.get(Ss),r=n.add(),i=t.get(ph);return i.runInitializers(),i.donePromise.then(()=>{if(xg(t.get(K_,bg)||`en-US`),!t.get(One,!0))return sv(e)?t.get(Nh):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(sv(e)){let n=t.get(Nh);return e.rootComponent!==void 0&&n.bootstrap(e.rootComponent),n}return Ane?.(e.moduleRef,e.allPlatformModules),e.moduleRef}).finally(()=>void n.remove(r))})})}var Ane;function jne(e,t,n){try{let r=n();return Zm(r)?r.catch(n=>{throw t.runOutsideAngular(()=>e(n)),n}):r}catch(n){throw t.runOutsideAngular(()=>e(n)),n}}var cv=null;function Mne(e=[],t){return gs.create({name:t,providers:[{provide:Pa,useValue:`platform`},{provide:ov,useValue:new Set([()=>cv=null])},...e]})}function Nne(e=[]){if(cv)return cv;let t=Mne(e);return cv=t,jh(),Pne(t),t}function Pne(e){let t=e.get(Js,null);Za(e,()=>{t?.forEach(e=>e())})}function Fne(e){let{rootComponent:t,appProviders:n,platformProviders:r,platformRef:i}=e;Ac(_c.BootstrapApplicationStart);try{let e=i?.injector??Nne(r);return kne({r3Injector:new eh({providers:[_ne(),Ws,...n||[]],parent:e,debugName:``,runEnvironmentInitializers:!1}).injector,platformInjector:e,rootComponent:t})}catch(e){return Promise.reject(e)}finally{Ac(_c.BootstrapApplicationEnd)}}function lv(e){return typeof e==`boolean`?e:e!=null&&e!==`false`}var uv=Symbol(`NOT_SET`),dv=new Set,Ine={...jn,kind:`afterRenderEffectPhase`,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,value:uv,cleanup:null,consumerMarkedDirty(){if(this.sequence.impl.executing){if(this.sequence.lastPhase===null||this.sequence.lastPhase(rn(r),r.value),r.signal[$t]=r,r.registerCleanupFn=e=>(r.cleanup??=new Set).add(e),this.nodes[e]=r,this.hooks[e]=e=>r.phaseFn(e)}}afterRun(){super.afterRun(),this.lastPhase=null}destroy(){if(this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();super.destroy();for(let e of this.nodes)if(e)try{for(let t of e.cleanup??dv)t()}finally{gn(e)}}};function fv(e,t){let n=t?.injector??S(gs),r=n.get($s),i=n.get(Xu),a=n.get(qu,null,{optional:!0});i.impl??=n.get(Qu);let o=e;typeof o==`function`&&(o={mixedReadWrite:e});let s=n.get(Zs,null,{optional:!0}),c=new Lne(i.impl,[o.earlyRead,o.write,o.mixedReadWrite,o.read],s?.view,r,n,a?.snapshot(null));return i.impl.register(c),c}var pv=null;function mv(){return pv}function Rne(e){pv??=e}var zne=class{},hv=(function(e){return e[e.Format=0]=`Format`,e[e.Standalone=1]=`Standalone`,e})(hv||{}),gv=(function(e){return e[e.Narrow=0]=`Narrow`,e[e.Abbreviated=1]=`Abbreviated`,e[e.Wide=2]=`Wide`,e[e.Short=3]=`Short`,e})(gv||{}),_v=(function(e){return e[e.Short=0]=`Short`,e[e.Medium=1]=`Medium`,e[e.Long=2]=`Long`,e[e.Full=3]=`Full`,e})(_v||{}),vv={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function Bne(e){return gg(e)[vg.LocaleId]}function Vne(e,t,n){let r=gg(e);return wv(wv([r[vg.DayPeriodsFormat],r[vg.DayPeriodsStandalone]],t),n)}function Hne(e,t,n){let r=gg(e);return wv(wv([r[vg.DaysFormat],r[vg.DaysStandalone]],t),n)}function Une(e,t,n){let r=gg(e);return wv(wv([r[vg.MonthsFormat],r[vg.MonthsStandalone]],t),n)}function Wne(e,t){let n=gg(e)[vg.Eras];return wv(n,t)}function yv(e,t){return wv(gg(e)[vg.DateFormat],t)}function bv(e,t){return wv(gg(e)[vg.TimeFormat],t)}function xv(e,t){let n=gg(e)[vg.DateTimeFormat];return wv(n,t)}function Sv(e,t){let n=gg(e),r=n[vg.NumberSymbols][t];if(r===void 0){if(t===vv.CurrencyDecimal)return n[vg.NumberSymbols][vv.Decimal];if(t===vv.CurrencyGroup)return n[vg.NumberSymbols][vv.Group]}return r}function Cv(e){if(!e[vg.ExtraData])throw new ui(2303,!1)}function Gne(e){let t=gg(e);return Cv(t),(t[vg.ExtraData][2]||[]).map(e=>typeof e==`string`?Tv(e):[Tv(e[0]),Tv(e[1])])}function Kne(e,t,n){let r=gg(e);return Cv(r),wv(wv([r[vg.ExtraData][0],r[vg.ExtraData][1]],t)||[],n)||[]}function wv(e,t){for(let n=t;n>-1;n--)if(e[n]!==void 0)return e[n];throw new ui(2304,!1)}function Tv(e){let[t,n]=e.split(`:`);return{hours:+t,minutes:+n}}var qne=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,Ev=Object.create(null),Jne=/((?:[^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]*)/,Yne=256;function Xne(e,t,n,r){let i=ore(e);Zne(t),t=Ov(n,t)||t;let a=[],o;for(;t;)if(o=Jne.exec(t),o){a=a.concat(o.slice(1));let e=a.pop();if(!e)break;t=e}else{a.push(t);break}let s=i.getTimezoneOffset();r&&(s=zv(r,s),i=are(i,r));let c=``;return a.forEach(e=>{let t=rre(e);c+=t?t(i,n,s):e===`''`?`'`:e.replace(/(^'|'$)/g,``).replace(/''/g,`'`)}),c}function Zne(e){if(e.length>Yne)throw new ui(2300,!1)}function Dv(e,t,n){let r=new Date(0);return r.setFullYear(e,t,n),r.setHours(0,0,0),r}function Ov(e,t){let n=Bne(e);if(Ev[n]??=Object.create(null),Ev[n][t])return Ev[n][t];let r=``;switch(t){case`shortDate`:r=yv(e,_v.Short);break;case`mediumDate`:r=yv(e,_v.Medium);break;case`longDate`:r=yv(e,_v.Long);break;case`fullDate`:r=yv(e,_v.Full);break;case`shortTime`:r=bv(e,_v.Short);break;case`mediumTime`:r=bv(e,_v.Medium);break;case`longTime`:r=bv(e,_v.Long);break;case`fullTime`:r=bv(e,_v.Full);break;case`short`:let t=Ov(e,`shortTime`),n=Ov(e,`shortDate`);r=kv(xv(e,_v.Short),[t,n]);break;case`medium`:let i=Ov(e,`mediumTime`),a=Ov(e,`mediumDate`);r=kv(xv(e,_v.Medium),[i,a]);break;case`long`:let o=Ov(e,`longTime`),s=Ov(e,`longDate`);r=kv(xv(e,_v.Long),[o,s]);break;case`full`:let c=Ov(e,`fullTime`),l=Ov(e,`fullDate`);r=kv(xv(e,_v.Full),[c,l])}return r&&(Ev[n][t]=r),r}function kv(e,t){return t&&(e=e.replace(/\{([^}]+)}/g,function(e,n){return Object.hasOwn(t,n)?t[n]:e})),e}function Av(e,t,n=`-`,r,i){let a=``;(e<0||i&&e<=0)&&(i?e=-e+1:(e=-e,a=n));let o=String(e);for(;o.length0||s>-n)&&(s+=n),e===3)s===0&&n===-12&&(s=12);else if(e===6)return Qne(s,t);let c=Sv(o,vv.MinusSign);return Av(s,t,c,r,i)}}function $ne(e,t){switch(e){case 0:return t.getFullYear();case 1:return t.getMonth();case 2:return t.getDate();case 3:return t.getHours();case 4:return t.getMinutes();case 5:return t.getSeconds();case 6:return t.getMilliseconds();case 7:return t.getDay();default:throw new ui(2301,!1)}}function Mv(e,t,n=hv.Format,r=!1){return function(i,a){return ere(i,a,e,t,n,r)}}function ere(e,t,n,r,i,a){switch(n){case 2:return Une(t,i,r)[e.getMonth()];case 1:return Hne(t,i,r)[e.getDay()];case 0:let n=e.getHours(),o=e.getMinutes();if(a){let e=Gne(t),a=Kne(t,i,r),s=e.findIndex(e=>{if(Array.isArray(e)){let[t,r]=e,i=n>=t.hours&&o>=t.minutes,a=n0?Math.floor(i/60):Math.ceil(i/60);switch(e){case 0:return(i>=0?`+`:``)+Av(o,2,a)+Av(Math.abs(i%60),2,a);case 1:return`GMT`+(i>=0?`+`:``)+Av(o,1,a);case 2:return`GMT`+(i>=0?`+`:``)+Av(o,2,a)+`:`+Av(Math.abs(i%60),2,a);case 3:return r===0?`Z`:(i>=0?`+`:``)+Av(o,2,a)+`:`+Av(Math.abs(i%60),2,a);default:throw new ui(2310,!1)}}}var tre=0,Pv=4;function nre(e){let t=Dv(e,tre,1).getDay();return Dv(e,0,1+(t<=Pv?Pv:11)-t)}function Fv(e){let t=e.getDay(),n=t===0?-3:Pv-t;return Dv(e.getFullYear(),e.getMonth(),e.getDate()+n)}function Iv(e,t=!1){return function(n,r){let i;if(t){let e=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,t=n.getDate();i=1+Math.floor((t+e)/7)}else{let e=Fv(n),t=nre(e.getFullYear()),r=e.getTime()-t.getTime();i=1+Math.round(r/6048e5)}return Av(i,e,Sv(r,vv.MinusSign))}}function Lv(e,t=!1){return function(n,r){return Av(Fv(n).getFullYear(),e,Sv(r,vv.MinusSign),t)}}var Rv=Object.create(null);function rre(e){if(Rv[e])return Rv[e];let t;switch(e){case`G`:case`GG`:case`GGG`:t=Mv(3,gv.Abbreviated);break;case`GGGG`:t=Mv(3,gv.Wide);break;case`GGGGG`:t=Mv(3,gv.Narrow);break;case`y`:t=jv(0,1,0,!1,!0);break;case`yy`:t=jv(0,2,0,!0,!0);break;case`yyy`:t=jv(0,3,0,!1,!0);break;case`yyyy`:t=jv(0,4,0,!1,!0);break;case`Y`:t=Lv(1);break;case`YY`:t=Lv(2,!0);break;case`YYY`:t=Lv(3);break;case`YYYY`:t=Lv(4);break;case`M`:case`L`:t=jv(1,1,1);break;case`MM`:case`LL`:t=jv(1,2,1);break;case`MMM`:t=Mv(2,gv.Abbreviated);break;case`MMMM`:t=Mv(2,gv.Wide);break;case`MMMMM`:t=Mv(2,gv.Narrow);break;case`LLL`:t=Mv(2,gv.Abbreviated,hv.Standalone);break;case`LLLL`:t=Mv(2,gv.Wide,hv.Standalone);break;case`LLLLL`:t=Mv(2,gv.Narrow,hv.Standalone);break;case`w`:t=Iv(1);break;case`ww`:t=Iv(2);break;case`W`:t=Iv(1,!0);break;case`d`:t=jv(2,1);break;case`dd`:t=jv(2,2);break;case`c`:case`cc`:t=jv(7,1);break;case`ccc`:t=Mv(1,gv.Abbreviated,hv.Standalone);break;case`cccc`:t=Mv(1,gv.Wide,hv.Standalone);break;case`ccccc`:t=Mv(1,gv.Narrow,hv.Standalone);break;case`cccccc`:t=Mv(1,gv.Short,hv.Standalone);break;case`E`:case`EE`:case`EEE`:t=Mv(1,gv.Abbreviated);break;case`EEEE`:t=Mv(1,gv.Wide);break;case`EEEEE`:t=Mv(1,gv.Narrow);break;case`EEEEEE`:t=Mv(1,gv.Short);break;case`a`:case`aa`:case`aaa`:t=Mv(0,gv.Abbreviated);break;case`aaaa`:t=Mv(0,gv.Wide);break;case`aaaaa`:t=Mv(0,gv.Narrow);break;case`b`:case`bb`:case`bbb`:t=Mv(0,gv.Abbreviated,hv.Standalone,!0);break;case`bbbb`:t=Mv(0,gv.Wide,hv.Standalone,!0);break;case`bbbbb`:t=Mv(0,gv.Narrow,hv.Standalone,!0);break;case`B`:case`BB`:case`BBB`:t=Mv(0,gv.Abbreviated,hv.Format,!0);break;case`BBBB`:t=Mv(0,gv.Wide,hv.Format,!0);break;case`BBBBB`:t=Mv(0,gv.Narrow,hv.Format,!0);break;case`h`:t=jv(3,1,-12);break;case`hh`:t=jv(3,2,-12);break;case`H`:t=jv(3,1);break;case`HH`:t=jv(3,2);break;case`m`:t=jv(4,1);break;case`mm`:t=jv(4,2);break;case`s`:t=jv(5,1);break;case`ss`:t=jv(5,2);break;case`S`:t=jv(6,1);break;case`SS`:t=jv(6,2);break;case`SSS`:t=jv(6,3);break;case`Z`:case`ZZ`:case`ZZZ`:t=Nv(0);break;case`ZZZZZ`:t=Nv(3);break;case`O`:case`OO`:case`OOO`:case`z`:case`zz`:case`zzz`:t=Nv(1);break;case`OOOO`:case`ZZZZ`:case`zzzz`:t=Nv(2);break;default:return null}return Rv[e]=t,t}function zv(e,t){e=e.replace(/:/g,``);let n=Date.parse(`Jan 01, 1970 00:00:00 `+e)/6e4;return isNaN(n)?t:n}function ire(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function are(e,t,n){let r=e.getTimezoneOffset();return ire(e,-1*(zv(t,r)-r))}function ore(e){if(Bv(e))return e;if(typeof e==`number`&&!isNaN(e))return new Date(e);if(typeof e==`string`){if(e=e.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(e)){let[t,n=1,r=1]=e.split(`-`).map(e=>+e);return Dv(t,n-1,r)}let t=parseFloat(e);if(!isNaN(e-t))return new Date(t);let n;if(n=e.match(qne))return sre(n)}let t=new Date(e);if(!Bv(t))throw new ui(2311,!1);return t}function sre(e){let t=new Date(0),n=0,r=0,i=e[8]?t.setUTCFullYear:t.setFullYear,a=e[8]?t.setUTCHours:t.setHours;e[9]&&(n=Number(e[9]+e[10]),r=Number(e[9]+e[11])),i.call(t,Number(e[1]),Number(e[2])-1,Number(e[3]));let o=Number(e[4]||0)-n,s=Number(e[5]||0)-r,c=Number(e[6]||0),l=Math.floor(parseFloat(`0.`+(e[7]||0))*1e3);return a.call(t,o,s,c,l),t}function Bv(e){return e instanceof Date&&!isNaN(e.valueOf())}var Vv=(()=>{class e{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;injector=S(gs);constructor(e){this._viewContainerRef=e}ngOnChanges(e){if(this._shouldRecreateView(e)){let e=this._viewContainerRef;if(this._viewRef&&e.remove(e.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let t=this._createContextForwardProxy();this._viewRef=e.createEmbeddedView(this.ngTemplateOutlet,t,{injector:this._getInjector()})}}_getInjector(){return this.ngTemplateOutletInjector===`outlet`?this.injector:this.ngTemplateOutletInjector??void 0}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,t,n)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,t,n):!1,get:(e,t,n)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,t,n)}})}static ɵfac=function(t){return new(t||e)(Lp(_m))};static ɵdir=oh({type:e,selectors:[[``,`ngTemplateOutlet`,``]],inputs:{ngTemplateOutletContext:`ngTemplateOutletContext`,ngTemplateOutlet:`ngTemplateOutlet`,ngTemplateOutletInjector:`ngTemplateOutletInjector`},features:[xc]})}return e})();function cre(e,t){return new ui(2100,!1)}var lre=`mediumDate`,ure=new Ti(``),dre=new Ti(``),Hv=(()=>{class e{locale;defaultTimezone;defaultOptions;constructor(e,t,n){this.locale=e,this.defaultTimezone=t,this.defaultOptions=n}transform(t,n,r,i){if(t==null||t===``||t!==t)return null;try{let e=n??this.defaultOptions?.dateFormat??lre,a=r??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return Xne(t,e,i||this.locale,a)}catch(t){throw cre(e,t.message)}}static ɵfac=function(t){return new(t||e)(Lp(K_,16),Lp(ure,24),Lp(dre,24))};static ɵpipe=sh({name:`date`,type:e,pure:!0})}return e})(),Uv=(()=>{class e{transform(e){return JSON.stringify(e,null,2)}static ɵfac=function(t){return new(t||e)};static ɵpipe=sh({name:`json`,type:e,pure:!1})}return e})();function fre(e,t){t=encodeURIComponent(t);for(let n of e.split(`;`)){let e=n.indexOf(`=`),[r,i]=e==-1?[n,``]:[n.slice(0,e),n.slice(e+1)];if(r.trim()!==t)continue;let a=i;try{a=decodeURIComponent(i)}catch{}return a.length>1&&a[0]===`"`&&a[a.length-1]===`"`&&(a=a.slice(1,-1)),a}return null}var pre=`browser`,Wv=class{_doc;constructor(e){this._doc=e}manager},Gv=(()=>{class e extends Wv{constructor(e){super(e)}supports(e){return!0}addEventListener(e,t,n,r){return e.addEventListener(t,n,r),()=>this.removeEventListener(e,t,n,r)}removeEventListener(e,t,n,r){return e.removeEventListener(t,n,r)}static ɵfac=function(t){return new(t||e)(ea(_s))};static ɵprov=vi({token:e,factory:e.ɵfac})}return e})(),Kv=new Ti(``),qv=(()=>{class e{_zone;_plugins;_eventNameToPlugin=new Map;constructor(e,t){this._zone=t,e.forEach(e=>{e.manager=this});let n=e.filter(e=>!(e instanceof Gv));this._plugins=n.slice().reverse();let r=e.find(e=>e instanceof Gv);r&&this._plugins.push(r)}addEventListener(e,t,n,r){return this._findPluginFor(t).addEventListener(e,t,n,r)}getZone(){return this._zone}_findPluginFor(e){let t=this._eventNameToPlugin.get(e);if(t)return t;if(t=this._plugins.find(t=>t.supports(e)),!t)throw new ui(-5101,!1);return this._eventNameToPlugin.set(e,t),t}static ɵfac=function(t){return new(t||e)(ea(Kv),ea(As))};static ɵprov=vi({token:e,factory:e.ɵfac})}return e})(),Jv=`ng-app-id`;function Yv(e){for(let t of e)t.remove()}function Xv(e,t){let n=t.createElement(`style`);return n.textContent=e,n}function mre(e,t,n,r){let i=e.head?.querySelectorAll(`style[${Jv}="${t}"],link[${Jv}="${t}"]`);if(!i||i.length===0)return!1;for(let e of i)e.removeAttribute(Jv),e instanceof HTMLLinkElement?r.set(e.href.slice(e.href.lastIndexOf(`/`)+1),{usage:0,elements:[e]}):e.textContent&&n.set(e.textContent,{usage:0,elements:[e]});return!0}function Zv(e,t){let n=t.createElement(`link`);return n.setAttribute(`rel`,`stylesheet`),n.setAttribute(`href`,e),n}var Qv=(()=>{class e{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(e,t,n,r={}){this.doc=e,this.appId=t,this.nonce=n,mre(e,t,this.inline,this.external)&&this.hosts.add(e.head)}addStyles(e,t){for(let t of e)this.addUsage(t,this.inline,Xv);t?.forEach(e=>this.addUsage(e,this.external,Zv))}removeStyles(e,t){for(let t of e)this.removeUsage(t,this.inline);t?.forEach(e=>this.removeUsage(e,this.external))}addUsage(e,t,n){let r=t.get(e);r?r.usage++:t.set(e,{usage:1,elements:[...this.hosts].map(t=>this.addElement(t,n(e,this.doc)))})}removeUsage(e,t){let n=t.get(e);n&&(n.usage--,n.usage<=0&&(Yv(n.elements),t.delete(e)))}ngOnDestroy(){for(let[,{elements:e}]of[...this.inline,...this.external])Yv(e);this.hosts.clear()}addHost(e){if(!this.hosts.has(e)){this.hosts.add(e);for(let[t,{elements:n}]of this.inline)n.push(this.addElement(e,Xv(t,this.doc)));for(let[t,{elements:n}]of this.external)n.push(this.addElement(e,Zv(t,this.doc)))}}removeHost(e){this.hosts.delete(e);for(let t of[...this.inline.values(),...this.external.values()]){let n=[];for(let r of t.elements)r.parentNode===e?r.remove():n.push(r);t.elements=n}}addElement(e,t){return this.nonce&&t.setAttribute(`nonce`,this.nonce),e.appendChild(t)}static ɵfac=function(t){return new(t||e)(ea(_s),ea(Ks),ea(Xs,8),ea(Ys))};static ɵprov=vi({token:e,factory:e.ɵfac})}return e})(),$v={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`},ey=/%COMP%/g,ty=`%COMP%`,hre=`_nghost-${ty}`,gre=`_ngcontent-${ty}`,_re=!0,vre=new Ti(``,{factory:()=>_re}),yre=new Ti(``);function bre(e){return gre.replace(ey,e)}function xre(e){return hre.replace(ey,e)}function ny(e,t){return t.map(t=>t.replace(ey,e))}var ry=(()=>{class e{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;cssVarNamespace;constructor(e,t,n,r,i,a,o=null,s=null,c=null){this.eventManager=e,this.sharedStylesHost=t,this.appId=n,this.removeStylesOnCompDestroy=r,this.doc=i,this.ngZone=a,this.nonce=o,this.tracingService=s,this.cssVarNamespace=c??``,this.defaultRenderer=new iy(e,i,a,this.tracingService,this.cssVarNamespace)}createRenderer(e,t){if(!e||!t)return this.defaultRenderer;let n=this.getOrCreateRenderer(e,t);return n instanceof cy?n.applyToHost(e):n instanceof sy&&n.applyStyles(),n}getOrCreateRenderer(e,t){let n=this.rendererByCompId,r=n.get(t.id);if(!r){let i=this.doc,a=this.ngZone,o=this.eventManager,s=this.sharedStylesHost,c=this.removeStylesOnCompDestroy,l=this.tracingService;switch(t.encapsulation){case iu.Emulated:r=new cy(o,s,t,this.appId,c,i,a,l,this.cssVarNamespace);break;case iu.ShadowDom:return new oy(o,e,t,i,a,this.nonce,l,this.cssVarNamespace,s);case iu.ExperimentalIsolatedShadowDom:return new oy(o,e,t,i,a,this.nonce,l,this.cssVarNamespace);default:r=new sy(o,s,t,c,i,a,l,this.cssVarNamespace)}n.set(t.id,r)}return r}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(e){this.rendererByCompId.delete(e)}static ɵfac=function(t){return new(t||e)(ea(qv),ea(Fp),ea(Ks),ea(vre),ea(_s),ea(As),ea(Xs),ea(qu,8),ea(yre,8))};static ɵprov=vi({token:e,factory:e.ɵfac})}return e})(),iy=class{eventManager;doc;ngZone;tracingService;cssVarNamespace;data=Object.create(null);throwOnSyntheticProps=!0;constructor(e,t,n,r,i=``){this.eventManager=e,this.doc=t,this.ngZone=n,this.tracingService=r,this.cssVarNamespace=i}destroy(){}destroyNode=null;createElement(e,t){return t?this.doc.createElementNS($v[t]||t,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,t){(ay(e)?e.content:e).appendChild(t)}insertBefore(e,t,n){if(e){let r=ay(e)?e.content:e;if(n!=null&&n.parentNode!==r)throw new ui(-5106,!1);r.insertBefore(t,n)}}removeChild(e,t){t.remove()}selectRootElement(e,t){let n=typeof e==`string`?this.doc.querySelector(e):e;if(!n)throw new ui(-5104,!1);return t||(n.textContent=``),n}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,t,n,r){if(r){t=r+`:`+t;let i=$v[r];i?e.setAttributeNS(i,t,n):e.setAttribute(t,n)}else e.setAttribute(t,n)}removeAttribute(e,t,n){if(n){let r=$v[n];r?e.removeAttributeNS(r,t):e.removeAttribute(`${n}:${t}`)}else e.removeAttribute(t)}addClass(e,t){e.classList.add(t)}removeClass(e,t){e.classList.remove(t)}setStyle(e,t,n,r){let i=t.startsWith(`--`);i&&(t=t.replace(`%NS%`,this.cssVarNamespace)),i||r&(Ou.DashCase|Ou.Important)?e.style.setProperty(t,n,r&Ou.Important?`important`:``):e.style[t]=n}removeStyle(e,t,n){let r=t.startsWith(`--`);r&&(t=t.replace(`%NS%`,this.cssVarNamespace)),r||n&Ou.DashCase?e.style.removeProperty(t):e.style[t]=``}setProperty(e,t,n){e!=null&&(e[t]=n)}setValue(e,t){e.nodeValue=t}listen(e,t,n,r){if(typeof e==`string`&&(e=mv().getGlobalEventTarget(this.doc,e),!e))throw new ui(-5102,!1);let i=this.decoratePreventDefault(n);return this.tracingService?.wrapEventListener&&(i=this.tracingService.wrapEventListener(e,t,i)),this.eventManager.addEventListener(e,t,i,r)}decoratePreventDefault(e){return t=>{if(t===`__ngUnwrap__`)return e;e(t)===!1&&t.preventDefault()}}};function ay(e){return e.tagName===`TEMPLATE`&&e.content!==void 0}var oy=class extends iy{hostEl;sharedStylesHost;shadowRoot;constructor(e,t,n,r,i,a,o,s,c){super(e,r,i,o,s),this.hostEl=t,this.sharedStylesHost=c,this.shadowRoot=t.attachShadow({mode:`open`}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let l=n.styles;l=ny(n.id,l).map(e=>e.replace(/%NS%/g,s));for(let e of l){let t=document.createElement(`style`);a&&t.setAttribute(`nonce`,a),t.textContent=e,this.shadowRoot.appendChild(t)}let u=n.getExternalStyles?.();if(u)for(let e of u){let t=Zv(e,r);a&&t.setAttribute(`nonce`,a),this.shadowRoot.appendChild(t)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,t){return super.appendChild(this.nodeOrShadowRoot(e),t)}insertBefore(e,t,n){return super.insertBefore(this.nodeOrShadowRoot(e),t,n)}removeChild(e,t){return super.removeChild(null,t)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}},sy=class extends iy{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(e,t,n,r,i,a,o,s,c){super(e,i,a,o,s),this.sharedStylesHost=t,this.removeStylesOnCompDestroy=r;let l=n.styles,u=c?ny(c,l):l;this.styles=u.map(e=>e.replace(/%NS%/g,s)),this.styleUrls=n.getExternalStyles?.(c)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&Fu.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},cy=class extends sy{contentAttr;hostAttr;constructor(e,t,n,r,i,a,o,s,c){let l=r+`-`+n.id;super(e,t,n,i,a,o,s,c,l),this.contentAttr=bre(l),this.hostAttr=xre(l)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,``)}createElement(e,t){let n=super.createElement(e,t);return super.setAttribute(n,this.contentAttr,``),n}},Sre=class e extends zne{supportsDOMEvents=!0;static makeCurrent(){Rne(new e)}onAndCancel(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}dispatchEvent(e,t){e.dispatchEvent(t)}remove(e){e.remove()}createElement(e,t){return t||=this.getDefaultDocument(),t.createElement(e)}createHtmlDocument(){return document.implementation.createHTMLDocument(`fakeTitle`)}getDefaultDocument(){return document}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}isShadowRoot(e){return e instanceof DocumentFragment}getGlobalEventTarget(e,t){return t===`window`?window:t===`document`?e:t===`body`?e.body:null}getBaseHref(e){let t=Cre();return t==null?null:wre(t)}resetBaseElement(){ly=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return fre(document.cookie,e)}},ly=null;function Cre(){return ly||=document.head.querySelector(`base`),ly?ly.getAttribute(`href`):null}function wre(e){return new URL(e,document.baseURI).pathname}var uy=[`alt`,`control`,`meta`,`shift`],Tre={"\b":`Backspace`," ":`Tab`,"":`Delete`,"\x1B":`Escape`,Del:`Delete`,Esc:`Escape`,Left:`ArrowLeft`,Right:`ArrowRight`,Up:`ArrowUp`,Down:`ArrowDown`,Menu:`ContextMenu`,Scroll:`ScrollLock`,Win:`OS`},Ere={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey},Dre=(()=>{class e extends Wv{constructor(e){super(e)}supports(t){return e.parseEventName(t)!=null}addEventListener(t,n,r,i){let a=e.parseEventName(n),o=e.eventCallback(a.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>mv().onAndCancel(t,a.domEventName,o,i))}static parseEventName(t){let n=t.toLowerCase().split(`.`),r=n.shift();if(n.length===0||r!==`keydown`&&r!==`keyup`)return null;let i=e._normalizeKey(n.pop()),a=``,o=n.indexOf(`code`);if(o>-1&&(n.splice(o,1),a=`code.`),uy.forEach(e=>{let t=n.indexOf(e);t>-1&&(n.splice(t,1),a+=e+`.`)}),a+=i,n.length!=0||i.length===0)return null;let s={};return s.domEventName=r,s.fullKey=a,s}static matchEventFullKeyCode(e,t){let n=Tre[e.key]||e.key,r=``;return t.indexOf(`code.`)>-1&&(n=e.code,r=`code.`),n==null||!n?!1:(n=n.toLowerCase(),n===` `?n=`space`:n===`.`&&(n=`dot`),uy.forEach(t=>{if(t!==n){let n=Ere[t];n(e)&&(r+=t+`.`)}}),r+=n,r===t)}static eventCallback(t,n,r){return i=>{e.matchEventFullKeyCode(i,t)&&r.runGuarded(()=>n(i))}}static _normalizeKey(e){return e===`esc`?`escape`:e}static ɵfac=function(t){return new(t||e)(ea(_s))};static ɵprov=vi({token:e,factory:e.ɵfac})}return e})();async function Ore(e,t,n){return Fne({rootComponent:e,...kre(t,n)})}function kre(e,t){return{platformRef:t?.platformRef,appProviders:[...my,...e?.providers??[]],platformProviders:py}}function Are(){Sre.makeCurrent()}function dy(){return new Hs}function fy(){return Kl(document),document}var py=[{provide:Ys,useValue:pre},{provide:Js,useValue:Are,multi:!0},{provide:_s,useFactory:fy}],my=[{provide:Pa,useValue:`root`},{provide:Hs,useFactory:dy},{provide:Kv,useClass:Gv,multi:!0},{provide:Kv,useClass:Dre,multi:!0},ry,{provide:Fp,useClass:Qv},{provide:Qv,useExisting:Fp},qv,{provide:tp,useExisting:ry},[]];function hy(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isArray(e)&&`raw`in e){let i=e,a=``;for(let e=0;e{let r=new yy({code:i,why:_y(a.why,e),fix:_y(a.fix,e),docs:o,cause:e.cause,sources:e.sources,data:_y(a.data,e)},s);for(let e of t)e(r,n);return r};n[i]=s}return n}function Sy(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n{e=n,t=r}),resolve:e,reject:t}}var Oy=Math.random.bind(Math),ky=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function Ay(e=21){let t=``,n=e;for(;n--;)t+=ky[Oy()*64|0];return t}var jy=6e4,My=e=>e,Ny=My,{clearTimeout:Py,setTimeout:Fy}=globalThis;function Iy(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=My,deserialize:s=Ny,resolver:c,bind:l=`rpc`,timeout:u=jy,proxify:d=!0}=t,f=!1,p=new Map,m,h;async function g(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:`q`};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(m)try{await m}finally{m=void 0}let{promise:l,resolve:d,reject:g}=Dy(),_=Ay();s.i=_;let ee;async function te(n=s){return u>=0&&(ee=Fy(()=>{try{if(t.onTimeoutError?.call(h,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){g(e)}p.delete(_)},u),typeof ee==`object`&&(ee=ee.unref?.())),p.set(_,{resolve:d,reject:g,timeoutId:ee,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(h,s,te,d):await te()}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}finally{Py(ee),p.delete(_)}return l}let _={$call:(e,...t)=>g(e,t,!1),$callOptional:(e,...t)=>g(e,t,!1,!0),$callEvent:(e,...t)=>g(e,t,!0),$callRaw:e=>g(e.method,e.args,e.event,e.optional),$rejectPendingCalls:te,get $closed(){return f},get $meta(){return t.meta},$close:ee,$functions:e};h=d?new Proxy({},{get(t,n){if(Object.hasOwn(_,n))return _[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>g(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>g(n,e,!1);return i.asEvent=r,i}}):_;function ee(e){f=!0,p.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),p.clear(),i(ne)}function te(e){let t=Array.from(p.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return p.clear(),t}async function ne(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}if(a.t===`q`){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(h,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?h:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(h,f,r,s)===!0)return;if(!f)try{await n(o({t:`s`,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(h,e,r,s)!==!0)throw e}try{await n(o({t:`s`,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(h,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=p.get(e);r&&(Py(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(ne),h}function Ly(e,t){return t.safety?t.safety:e===`static`||e===`query`||e==null?`read`:`action`}var Ry=Object.freeze({type:`object`,additionalProperties:!0});function zy(e){let t=e[`~standard`];if(t.jsonSchema)try{return t.jsonSchema.input({target:`draft-2020-12`})}catch{return Ry}return Ry}function By(e){if(!e||e.length===0)return{type:`object`,properties:{}};let t={},n=[];for(let r=0;rn[`arg${t}`]);if(`arg0`in n){let e=[];for(;`arg${e.length}`in n;)e.push(n[`arg${e.length}`]);return e}return Object.keys(n).length===0?[]:void 0}function Hy(e,t){return Vy(e,t)??[e]}function Uy(e){return typeof e==`string`?`'${e}'`:new qy().serialize(e)}var Wy=` _-,;:!?.'"()[]{}@*/\\&#%\`^+<=>|~$0123456789abcdefghijklmnopqrstuvwxyz`,Gy=(function(){let e=new Uint8Array(128);for(let t=0;t<69;t++)e[Wy.charCodeAt(t)]=t+1;for(let t=65;t<=90;t++)e[t]=e[t+32];return e})();function Ky(e,t){if(e===t)return 0;let n=Math.min(e.length,t.length),r=0;for(let i=0;ia?-1:1)}return e.length===t.length?r:e.lengththis.compare(e[0],t[0])),r=`${e}{`;for(let e=0;ethis.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e})(),Jy=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],Yy=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],Xy=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,Zy=[],Qy=class{_data=new $y;_hash=new $y([...Jy]);_nDataBytes=0;_minBufferSize=0;finalize(e){e&&this._append(e);let t=this._nDataBytes*8,n=this._data.sigBytes*8;return this._data.words[n>>>5]|=128<<24-n%32,this._data.words[(n+64>>>9<<4)+14]=Math.floor(t/4294967296),this._data.words[(n+64>>>9<<4)+15]=t,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(e,t){let n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],c=n[5],l=n[6],u=n[7];for(let n=0;n<64;n++){if(n<16)Zy[n]=e[t+n]|0;else{let e=Zy[n-15],t=(e<<25|e>>>7)^(e<<14|e>>>18)^e>>>3,r=Zy[n-2],i=(r<<15|r>>>17)^(r<<13|r>>>19)^r>>>10;Zy[n]=t+Zy[n-7]+i+Zy[n-16]}let d=s&c^~s&l,f=r&i^r&a^i&a,p=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),m=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),h=u+m+d+Yy[n]+Zy[n],g=p+f;u=l,l=c,c=s,s=o+h|0,o=a,a=i,i=r,r=h+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+u|0}_append(e){typeof e==`string`&&(e=$y.fromUtf8(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes}_process(e){let t,n=this._data.sigBytes/64;n=e?Math.ceil(n):Math.max((n|0)-this._minBufferSize,0);let r=n*16,i=Math.min(r*4,this._data.sigBytes);if(r){for(let e=0;e>>2]|=(n.charCodeAt(e)&255)<<24-e%4*8;return new e(i,r)}toBase64(){let e=[];for(let t=0;t>>2]>>>24-t%4*8&255,r=this.words[t+1>>>2]>>>24-(t+1)%4*8&255,i=this.words[t+2>>>2]>>>24-(t+2)%4*8&255,a=n<<16|r<<8|i;for(let n=0;n<4&&t*8+n*6>>6*(3-n)&63))}return e.join(``)}concat(e){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let t=0;t>>2]>>>24-t%4*8&255;this.words[this.sigBytes+t>>>2]|=n<<24-(this.sigBytes+t)%4*8}else for(let t=0;t>>2]=e.words[t>>>2];this.sigBytes+=e.sigBytes}};function eb(e){return new Qy().finalize(e).toBase64()}function tb(e){return eb(Uy(e))}function nb(e){return tb(e)}function rb(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}var ib=/^[\w+.-]{2,}:\/\//;function ab(e){return e.endsWith(`/`)?e:`${e}/`}function ob(e){return(e.endsWith(`/`)?e.slice(0,-1):e)||`/`}function sb(e,...t){let n=e;for(let e of t)e&&e!==`/`&&(n=n?ab(n)+e.replace(/^\.?\//,``):e);return n}function cb(e,t){if(!t||t===`/`||ib.test(e))return e;let n=ob(t);return e.startsWith(n)?e:sb(n,e)}function lb(e,t){let n=e.match(ib);return t+(n?e.slice(n[0].length):e)}var ub=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function db(e=21){let t=``,n=e;for(;n--;)t+=ub[Math.random()*64|0];return t}var fb=Symbol.for(`immer-nothing`),pb=Symbol.for(`immer-draftable`),mb=Symbol.for(`immer-state`),hb=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function gb(e,...t){{let n=hb[e],r=Bb(n)?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}}var _b=Object,vb=_b.getPrototypeOf,yb=`constructor`,bb=`prototype`,xb=`configurable`,Sb=`enumerable`,Cb=`writable`,wb=`value`,Tb=e=>!!e&&!!e[mb];function Eb(e){return e?kb(e)||Ib(e)||!!e[pb]||!!e[yb]?.[pb]||Lb(e)||Rb(e):!1}var Db=_b[bb][yb].toString(),Ob=new WeakMap;function kb(e){if(!e||!zb(e))return!1;let t=vb(e);if(t===null||t===_b[bb])return!0;let n=_b.hasOwnProperty.call(t,yb)&&t[yb];if(n===Object)return!0;if(!Bb(n))return!1;let r=Ob.get(n);return r===void 0&&(r=Function.toString.call(n),Ob.set(n,r)),r===Db}function Ab(e,t,n=!0){jb(e)===0?(n?Reflect.ownKeys(e):_b.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function jb(e){let t=e[mb];return t?t.type_:Ib(e)?1:Lb(e)?2:Rb(e)?3:0}var Mb=(e,t,n=jb(e))=>n===2?e.has(t):_b[bb].hasOwnProperty.call(e,t),Nb=(e,t,n=jb(e))=>n===2?e.get(t):e[t],Pb=(e,t,n,r=jb(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function Fb(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Ib=Array.isArray,Lb=e=>e instanceof Map,Rb=e=>e instanceof Set,zb=e=>typeof e==`object`,Bb=e=>typeof e==`function`,Vb=e=>typeof e==`boolean`;function Hb(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Ub=e=>zb(e)?e?.[mb]:null,Wb=e=>e.copy_||e.base_,Gb=e=>e.modified_?e.copy_:e.base_;function Kb(e,t){if(Lb(e))return new Map(e);if(Rb(e))return new Set(e);if(Ib(e))return Array[bb].slice.call(e);let n=kb(e);if(t===!0||t===`class_only`&&!n){let t=_b.getOwnPropertyDescriptors(e);delete t[mb];let n=Reflect.ownKeys(t);for(let r=0;r1&&_b.defineProperties(e,{set:Yb,add:Yb,clear:Yb,delete:Yb}),_b.freeze(e),t&&Ab(e,(e,t)=>{qb(t,!0)},!1),e)}function Jb(){gb(2)}var Yb={[wb]:Jb};function Xb(e){return e===null||!zb(e)||_b.isFrozen(e)}var Zb=`MapSet`,Qb=`Patches`,$b=`ArrayMethods`,ex={};function tx(e){let t=ex[e];return t||gb(0,e),t}var nx=e=>!!ex[e];function rx(e,t){ex[e]||(ex[e]=t)}var ix,ax=()=>ix,ox=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:nx(Zb)?tx(Zb):void 0,arrayMethodsPlugin_:nx($b)?tx($b):void 0});function sx(e,t){t&&(e.patchPlugin_=tx(Qb),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function cx(e){lx(e),e.drafts_.forEach(dx),e.drafts_=null}function lx(e){e===ix&&(ix=e.parent_)}var ux=e=>ix=ox(ix,e);function dx(e){let t=e[mb];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function fx(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[mb].modified_&&(cx(t),gb(4)),Eb(e)&&(e=px(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[mb].base_,e,t)}else e=px(t,n);return mx(t,e,!0),cx(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===fb?void 0:e}function px(e,t){if(Xb(t))return t;let n=t[mb];if(!n)return Sx(t,e.handledSet_,e);if(!gx(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);bx(n,e)}return n.copy_}function mx(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&qb(t,n)}function hx(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var gx=(e,t)=>e.scope_===t,_x=[];function vx(e,t,n,r){let i=Wb(e),a=e.type_;if(r!==void 0&&Nb(i,r,a)===t){Pb(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;Ab(i,(e,n)=>{if(Tb(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??_x;for(let e of o)Pb(i,e,n,a)}function yx(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!gx(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=Gb(i);vx(e,i.draft_??i,a,n),bx(i,r)})}function bx(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}hx(e)}}function xx(e,t,n){let{scope_:r}=e;if(Tb(n)){let i=n[mb];gx(i,r)&&i.callbacks_.push(function(){jx(e),vx(e,n,Gb(i),t)})}else Eb(n)&&e.callbacks_.push(function(){let i=Wb(e);e.type_===3?i.has(n)&&Sx(n,r.handledSet_,r):Nb(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&Sx(Nb(e.copy_,t,e.type_),r.handledSet_,r)})}function Sx(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||Tb(e)||t.has(e)||!Eb(e)||Xb(e)?e:(t.add(e),Ab(e,(r,i)=>{if(Tb(i)){let t=i[mb];gx(t,n)&&(Pb(e,r,Gb(t),e.type_),hx(t))}else Eb(i)&&Sx(i,t,n)}),e)}function Cx(e,t){let n=Ib(e),r={type_:+!!n,scope_:t?t.scope_:ax(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=wx;n&&(i=[r],a=Tx);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var wx={get(e,t){if(t===mb)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=Wb(e);if(!Mb(i,t,e.type_))return Ox(e,i,t);let a=i[t];if(e.finalized_||!Eb(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Hb(t))return a;if(a===Ex(e.base_,t)||Dx(e,t,a)){jx(e);let n=e.type_===1?+t:t,r=Nx(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in Wb(e)},ownKeys(e){return Reflect.ownKeys(Wb(e))},set(e,t,n){let r=kx(Wb(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=Ex(Wb(e),t),i=r?.[mb];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.delete(t),!0;if(Fb(n,r)&&(n!==void 0||Mb(e.base_,t,e.type_)))return!0;jx(e),Ax(e)}return e.copy_[t]===n&&(n!==void 0||Mb(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),xx(e,t,n),!0)},deleteProperty(e,t){return jx(e),Ex(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),Ax(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=Wb(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[Cb]:!0,[xb]:e.type_!==1||t!==`length`,[Sb]:r[Sb],[wb]:n[t]}},defineProperty(){gb(11)},getPrototypeOf(e){return vb(e.base_)},setPrototypeOf(){gb(12)}},Tx={};for(let e in wx){let t=wx[e];Tx[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}Tx.deleteProperty=function(e,t){return isNaN(parseInt(t))&&gb(13),Tx.set.call(this,e,t,void 0)},Tx.set=function(e,t,n){return t!==`length`&&isNaN(parseInt(t))&&gb(14),wx.set.call(this,e[0],t,n,e[0])};function Ex(e,t){let n=e[mb];return(n?Wb(n):e)[t]}function Dx(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!Eb(n)||n[mb]?!1:e.baseRefs_.has(n)}function Ox(e,t,n){let r=kx(t,n);return r?wb in r?r[wb]:r.get?.call(e.draft_):void 0}function kx(e,t){if(!(t in e))return;let n=vb(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=vb(n)}}function Ax(e){e.modified_||(e.modified_=!0,e.parent_&&Ax(e.parent_))}function jx(e){e.copy_||=(e.assigned_=new Map,Kb(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Mx=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(Bb(e)&&!Bb(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}Bb(t)||gb(6),n!==void 0&&!Bb(n)&&gb(7);let r;if(Eb(e)){let i=ux(this),a=Nx(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?cx(i):lx(i)}return sx(i,n),fx(r,i)}if(!e||!zb(e)){if(r=t(e),r===void 0&&(r=e),r===fb&&(r=void 0),this.autoFreeze_&&qb(r,!0),n){let t=[],i=[];tx(Qb).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}gb(1,e)},this.produceWithPatches=(e,t)=>{if(Bb(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},Vb(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Vb(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Vb(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Eb(e)||gb(8),Tb(e)&&(e=Px(e));let t=ux(this),n=Nx(t,e,void 0);return n[mb].isManual_=!0,lx(t),n}finishDraft(e,t){let n=e&&e[mb];(!n||!n.isManual_)&&gb(9);let{scope_:r}=n;return sx(r,t),fx(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=tx(Qb).applyPatches_;return Tb(e)?r(e,t):this.produce(e,e=>r(e,t))}};function Nx(e,t,n,r){let[i,a]=Lb(t)?tx(Zb).proxyMap_(t,n):Rb(t)?tx(Zb).proxySet_(t,n):Cx(t,n);return(n?.scope_??ax()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?yx(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function Px(e){return Tb(e)||gb(10,e),Fx(e)}function Fx(e){if(!Eb(e)||Xb(e))return e;let t=e[mb],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Kb(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Kb(e,!0);let i=n;return Rb(n)&&(n=new Set),Ab(i,(e,t)=>{Pb(n,e,Fx(t))},r),t&&(t.finalized_=!1),n}function Ix(){hb.push(`Sets cannot have "replace" patches.`,function(e){return`Unsupported patch operation: `+e},function(e){return`Cannot apply patch, path doesn't resolve: `+e},`Patching reserved attributes like __proto__, prototype and constructor is not allowed`);function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=Ub(Nb(e,n.key_)),i=Nb(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||Mb(e,o))||n.parent_.type_===1&&n.parent_.allIndicesReassigned_)return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e{let u=Nb(o,e,c),f=Nb(s,e,c),p=l?Mb(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===fb?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e[e,u(t)]));if(Rb(e))return new Set(Array.from(e).map(u));let t=Object.create(vb(e));for(let n in e)t[n]=u(e[n]);return Mb(e,pb)&&(t[pb]=e[pb]),t}function d(e){return Tb(e)?u(e):e}rx(Qb,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var Lx=new Mx,Rx=Lx.produce,zx=Lx.produceWithPatches.bind(Lx),Bx=Lx.applyPatches.bind(Lx),Vx=1e3;function Hx(e,t){if(e.add(t),e.size>Vx){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function Ux(e){let{enablePatches:t=!1}=e;t&&Ix();let n=rb(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=db())=>{i.has(t)||(Ix(),r=Bx(r,e),Hx(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=db())=>{if(!i.has(a)){if(Hx(i,a),t){let[t,i]=zx(r,e);if(t===r)return;r=t,n.emit(`updated`,r,i,a)}else{let t=Rx(r,e);if(t===r)return;r=t,n.emit(`updated`,r,void 0,a)}}},syncIds:i}}var Wx=typeof self==`object`?self:globalThis,Gx=new Set([`Error`,`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`,`AggregateError`]),Kx=new Set([`Boolean`,`Number`,`String`,`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float16Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function qx(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o,r=Gx.has(e)?Wx[e]:void 0;return n(new(r??Wx.Error)(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}if(typeof a==`string`&&Kx.has(a))return n(new Wx[a](o),i);throw TypeError(`unable to deserialize unsafe or unknown type: ${String(a)}`)};return r}function Jx(e){return qx(new Map,e)(0)}var Yx=``,{toString:Xx}={},{keys:Zx}=Object;function Qx(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=Xx.call(e).slice(8,-1);switch(n){case`Array`:return[1,Yx];case`Object`:return[2,Yx];case`Date`:return[3,Yx];case`RegExp`:return[4,Yx];case`Map`:return[5,Yx];case`Set`:return[6,Yx];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function $x([e,t]){return e===0&&(t===`function`||t===`symbol`)}function eS(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=Qx(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of Zx(r))(e||!$x(Qx(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!($x(Qx(n))||$x(Qx(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!$x(Qx(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function tS(e,t={}){let n=[];return eS(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}var{parse:nS,stringify:rS}=JSON,iS={json:!0,lossy:!0};function aS(e){return Jx(nS(e))}function oS(e){return rS(tS(e,iS))}function sS(e){return Jx(e)}function cS(e){return oS(e)}function lS(e){return aS(e)}var uS=256,dS=class extends Error{name=`StreamClosedError`};function fS(e={}){let t=e.id??db(),n=Math.max(0,e.replayWindow??0),r=rb(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new dS(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&(a.length-n===1?a.shift():a.splice(0,a.length-n))),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=mS(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function pS(e={}){let t=e.id??db(),n=Math.max(1,e.highWaterMark??uS),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function mS(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}var hS=128;function gS(e){return e.replace(/[^\w-]+/g,`_`).slice(0,hS)}var _S=`modulepreload`,vS=function(e,t){return new URL(e,t).href},yS={},bS=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=vS(t,n),t=s(t),t in yS)return;yS[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:_S,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},xS=`__connection.json`,SS=`__DEVFRAME_CONNECTION__`,CS=`x-birpc-session`,wS=`__rpc-dump/index.json`,TS=`devframe:services`,ES=`devframe_otp`,DS=`devframe_auth_token`;Cy.postMessage.remoteAssetsError;var OS=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>nb(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}},kS=Ey({docsBase:`https://devfra.me/errors`,codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is \`false\`; MCP requires JSON-serializable data.`,fix:"Remove `jsonSerializable: false`, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."},DF0043:{why:e=>`RPC function "${e.name}" received an invalid argument at position ${e.index}: ${e.issues}`,fix:"Pass a value that satisfies the `args` schema declared for this function."},DF0044:{why:e=>`RPC function "${e.name}" returned a value that failed its \`returns\` schema: ${e.issues}`,fix:"Make the handler return a value that satisfies the `returns` schema, or relax the schema."}}});function AS(e){if(e.agent&&e.jsonSerializable===!1)throw kS.DF0019({name:e.name});e.agent&&!e.jsonSerializable&&(e.jsonSerializable=!0)}async function jS(e,t){let n=e[`~standard`].validate(t);return n instanceof Promise?await n:n}function MS(e){return e.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `)}async function NS(e,t,n){let r=n.slice();if(!t||t.length===0)return r;for(let r=0;r{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function IS(e,t){let n=e.handler;if(!n){let r=await FS(e,t);if(!r.handler)throw kS.DF0024({name:e.name});n=r.handler}let r=e.args,i=e.returns;if(!r&&!i)return n;let a=n;return async(...t)=>{let n=await NS(e.name,r,t),o=await a(...n);return await PS(e.name,i,o)}}var LS=class{context;definitions=new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return IS(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw kS.DF0021({name:e.name});AS(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw kS.DF0022({name:e.name});AS(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await IS(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw kS.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function RS(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw BS(t,`undefined`,r,e);return n}return i!==null&&zS(i,r,e,t),n})}function zS(e,t,n,r){if(typeof e==`bigint`)throw BS(r,`BigInt`,t,n);if(typeof e!=`object`)return;if(e instanceof Map)throw BS(r,`Map`,t,n);if(e instanceof Set)throw BS(r,`Set`,t,n);if(e instanceof Date)throw BS(r,`Date`,t,n);if(Array.isArray(e))return;let i=Object.getPrototypeOf(e);if(i!==null&&i!==Object.prototype)throw BS(r,e.constructor?.name??`class instance`,t,n)}function BS(e,t,n,r){let i=VS(n,r);return kS.DF0020({name:e||``,type:t,path:i})}function VS(e,t){return Array.isArray(e)?`[${t}]`:t===``?``:t}var HS=`__DEVFRAME_CONNECTION_META__`,US=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function WS(e){let t=[()=>window?.[e],()=>globalThis?.[e],()=>parent.window?.[e]];for(let e of t)try{let t=e();if(t)return t}catch{}}function GS(){return WS(SS)}function KS(){return WS(HS)}function qS(e){if(e)return e;try{let e=localStorage.getItem(US);if(e)return e}catch{}return WS(US)}function JS(e){globalThis[SS]=e,globalThis[HS]={...e.connectionMeta,baseUrl:e.metaBaseUrl},e.authToken&&YS(e.authToken)}function YS(e){try{localStorage.setItem(US,e)}catch{}globalThis[US]=e;let t=GS();t&&(globalThis[SS]={...t,authToken:e})}function XS(e){let t=cb(xS,e);try{return new URL(t,globalThis.location?.href).href}catch{return t}}function ZS(e,t){return t&&t!==e.authToken?{...e,authToken:t}:e}function QS(){let e=GS();if(e)return ZS(e,qS()??e.authToken??e.connectionMeta.authToken);let t=KS();if(t)return{connectionMeta:t,metaBaseUrl:t.baseUrl??XS(`./`),authToken:qS(t.authToken)}}async function $S(e={}){if(e.connection){let t=ZS(e.connection,qS(e.authToken??e.connection.authToken??e.connection.connectionMeta.authToken));return JS(t),t}let t=Array.isArray(e.baseURL)?e.baseURL:[e.baseURL??`./`];if(e.connectionMeta){let n={connectionMeta:e.connectionMeta,metaBaseUrl:XS(t[0]??`./`),authToken:qS(e.authToken??e.connectionMeta.authToken)};return JS(n),n}let n=QS();if(n){let t=ZS(n,qS(e.authToken??n.authToken??n.connectionMeta.authToken));return JS(t),t}let r=[];for(let n of t){let t=cb(xS,n),i=XS(n);try{let n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch connection meta from ${i}: ${n.status}`);let r=await n.json(),a=n.url||i,o={connectionMeta:r,metaBaseUrl:r.baseUrl?new URL(r.baseUrl,a).href:a,authToken:qS(e.authToken??r.authToken)};return JS(o),o}catch(e){r.push(e)}}throw Error(`Failed to get connection meta from ${t.join(`, `)}`,{cause:r})}var eC=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function tC(e=ES){try{let t=globalThis.location?.hash?.replace(/^#/,``)??``;return new URLSearchParams(t).get(e)||void 0}catch{return}}function nC(e){try{let t=new URL(globalThis.location.href),n=new URLSearchParams(t.hash.replace(/^#/,``));if(!n.has(e))return;n.delete(e),t.hash=n.toString(),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function rC(e=ES){let t=tC(e);return t&&nC(e),t}async function iC(e,t={}){let n=rC(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}function aC(e){let t={},n=new WeakMap,r,i=()=>(r??=e.sharedState.get(TS,{initialValue:{}}).then(e=>(t=e.value(),e.on(`updated`,e=>{t=e}),e)),r);return i(),{state:i,has:e=>e in t,keys:()=>Object.keys(t),get:r=>{let i=t[r];if(!i)return;let a=n.get(i);return a||(a={...i,rpc:e.scope(i.scope).rpc},n.set(i,a)),a}}}function oC(e){let t=new Map,n=new Map,r=new Map,i=new Set,a=e.connectionMeta.backend===`static`;function o(e,t){let n=r.get(e);return n&&typeof n==`object`&&!Array.isArray(n)&&typeof t==`object`&&!Array.isArray(t)?{...n,...t}:t}e.client.register({name:Cy.broadcast.clientStateUpdated,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.mutate(()=>o(e,n),r)}}),e.client.register({name:Cy.broadcast.clientStatePatch,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.patch(n,r)}});function s(t,n){let r=[];return r.push(n.on(`updated`,(n,r,i)=>{a||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,i):e.callEvent(`devframe:rpc:server-state:set`,t,n,i))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return i.add(e),()=>{i.delete(e)}},delete(e){let i=n.get(e);n.delete(e);let a=t.delete(e);return r.delete(e),i?.(),a},get:async(c,l)=>{if(l?.initialValue!==void 0&&r.set(c,l.initialValue),t.has(c))return t.get(c);let u=Ux({initialValue:l?.initialValue,enablePatches:!1});async function d(){if(a||e.callEvent(`devframe:rpc:server-state:subscribe`,c),l?.initialValue!==void 0){t.set(c,u);for(let e of i)e(c);return e.call(`devframe:rpc:server-state:get`,c).then(e=>{e!==void 0&&u.mutate(()=>o(c,e))}).catch(e=>{console.error(`Error getting server state`,e)}),n.set(c,s(c,u)),u}{let r=await e.call(`devframe:rpc:server-state:get`,c);u.mutate(()=>o(c,r)),t.set(c,u);for(let e of i)e(c);return n.set(c,s(c,u)),u}}return new Promise((t,n)=>{if(e.isTrusted)d().then(t,n);else{t(u);let n=!1;e.events.on(Cy.client.isTrustedUpdated,e=>{e&&!n&&(n=!0,d())})}})}}}var sC=new Map;function cC(e=sC){let t=new Map;return{serialize:n=>{let r;return n.t===`q`?r=n.m:(r=t.get(n.i),t.delete(n.i)),!(n.t===`s`&&`e`in n)&&r&&e.get(r)?.jsonSerializable===!0?RS(n,r??``):`s:${cS(n)}`},deserialize:e=>{let n=e.startsWith(`s:`)?lS(e.slice(2)):JSON.parse(e);return n.t===`q`&&n.i&&n.m&&t.set(n.i,n.m),n}}}function lC(){}function uC(e){let t=e.search(/\n\n|\r\n\r\n/);if(!(t<0))return{frame:e.slice(0,t),rest:e.slice(t+(e[t]===`\r`?4:2))}}function dC(e){let t=`message`,n=[];for(let r of e.split(/\r?\n/))r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trimStart():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));return{event:t,data:n}}function fC(e){let{onConnected:t=lC,onError:n=lC,onDisconnected:r=lC,definitions:i,fetch:a=globalThis.fetch.bind(globalThis)}=e,o=e.url;e.authToken&&(o=`${o}${o.includes(`?`)?`&`:`?`}${DS}=${encodeURIComponent(e.authToken)}`);let s=cC(i),c=new AbortController,l=!1,u,d,f,p,m=new Promise((e,t)=>{f=e,p=t});m.catch(()=>{});function h(e){l||(l=!0,p(e),n(e),r())}function g(){l||(l=!0,p(Error(`Devframe SSE stream closed`)),r())}function _(e,n){if(e===`session`){f(n),t();return}u?.(n)}async function ee(e){let t=e.getReader();d=t;let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;for(r+=n.decode(i,{stream:!0});;){let e=uC(r);if(!e)break;r=e.rest;let{event:t,data:n}=dC(e.frame);n.length>0&&_(t,n.join(` -`))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await ee(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[CS]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function pC(e,t){let{channel:n,rpcOptions:r={}}=t;return Iy(e,{...n,timeout:-1,...r,proxify:!1})}function mC(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(Cy.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new eC(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new eC(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(Cy.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new eC(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(Cy.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let ee=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit(Cy.client.connectionError,e),m(new eC(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new eC(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),te=pC(a.functions,{channel:ee,rpcOptions:o});a.register({name:Cy.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new eC(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(Cy.client.connectionError,e),m(e),i.emit(Cy.client.isTrustedUpdated,!1)}});let ne=n;async function re(e){ne=e;let t=await te.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new eC(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(Cy.client.connectionError,e)}return i.emit(Cy.client.isTrustedUpdated,c),t.isTrusted}async function ie(e){let t=(await te.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(ne=t,c=!0,d.resolve(!0),f(`connected`),i.emit(Cy.client.isTrustedUpdated,!0)),t}async function ae(e={}){await te.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function oe(){return c?!0:re(ne??``)}async function se(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t;try{return await Promise.race([d.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),c}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:oe,requestTrustWithToken:re,requestTrustWithCode:ie,requestAuthCode:ae,ensureTrusted:se,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(Cy.client.error,n,t),Promise.reject(n)):g(te.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit(Cy.client.error,t,String(e[0]));return}return te.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(Cy.client.error,n,t),Promise.reject(n)):g(te.$callOptional(...e),t)},close:()=>{ee.close()}}}function hC(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function gC(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=hC(n.sse,r??`./`,location);return mC({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>fC({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function _C(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:vC(r)?_C(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function vC(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function yC(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function bC(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function xC(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function SC(e){if(e.error)throw _C(e.error);return e.output}function CC(e){return e.some(e=>e!=null)}function wC(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function TC(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?sS(e):e}function a(e,t){return i(wC(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return xC(r)?SC(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(yC(r)){if(CC(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(bC(r)){let e=nb(n),i=r.records[e];if(i)return SC(await s(i,r.serialization));if(r.fallback)return SC(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!CC(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function EC(e){let t=TC(await e.fetchJsonFromBases(wS),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var DC=``;function OC(e,t){return`${e}${DC}${t}`}function kC(e){let t=new Map,n=new Map;e.client.register({name:Cy.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(OC(e,n))?._push(r,i)}}),e.client.register({name:Cy.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=OC(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:Cy.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=OC(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(Cy.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(DC);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=OC(n,r),o=t.get(a);if(o)return o;let s=pS({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(Cy.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=OC(t,r),a=n.get(i);if(a)return a;let o=fS({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function AC(){}var jC=new Map;function MC(e){let t=e.url;e.authToken&&(t=`${t}?${DS}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=AC,onError:i=AC,onDisconnected:a=AC,definitions:o=jC}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=cC(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function NC(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return lb(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function PC(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=NC(n.websocket,r??`./`,location);return mC({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>MC({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function FC(e){return e.includes(`:`)}function IC(e,t){return FC(t)?t:`${e}:${t}`}function LC(e){return{async get(t){return(await e()).value()?.[t]},async set(t,n){(await e()).mutate(e=>{if(e===void 0)return{[t]:n};e[t]=n})},async delete(t){(await e()).mutate(e=>{e!==void 0&&delete e[t]})},async all(){return(await e()).value()??{}},async onChange(t){return(await e()).on(`updated`,e=>t(e??{}))}}}function RC(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=(async()=>(await e.ensureTrusted(),e.sharedState.get(r)))().catch(e=>{throw i=void 0,e}),i}return LC(a)}function zC(e,t){return{global:RC(e,t,`global`),project:RC(e,t,`project`)}}function BC(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(FC(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(IC(t,n),...r)),callEvent:((n,...r)=>e.callEvent(IC(t,n),...r)),callOptional:((n,...r)=>e.callOptional(IC(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(IC(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(IC(t,n),r,i),upload:(n,r)=>e.streaming.upload(IC(t,n),r)}},settings:zC(e,t),scope:e.scope}}function VC(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function HC(e,t={}){let n=t.modelContext??VC();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=gS(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=Ly(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:By(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>UC(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function UC(e,t,n){try{let r=Hy(n,e.args?.length);return{content:[{type:`text`,text:WC(await(await IS(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:GC(e)}]}}}function WC(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function GC(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function KC(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function qC(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=rb(),a=Array.isArray(t)?t:[t],o=await $S(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new OS({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new LS(f),m=e.webmcp===!1?void 0:HC(p),h,g=!1,_=0,ee;function te(){_++,ee=void 0,d.clear(),r===!0&&d.updateOptions({functions:[]})}r&&(p.register({name:Cy.broadcast.cacheInvalidate,type:`event`,handler:te}),i.on(Cy.client.connectionStatus,te),i.on(Cy.client.isTrustedUpdated,te));async function ne(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(cb(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let re=e.callTimeout??0,ie=re>0?re:1/0,ae,oe={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){let a=performance.now()+ie;if(await n.onRequest?.call(this,e,t,i),r===!0&&e.i&&ae.isTrusted&&!e.m.startsWith(`anonymous:`)&&e.m!==`devframe:rpc:cacheable-functions`){function t(){if(performance.now()>=a)throw new eC(`timeout`,`[devframe] RPC call "${e.m}" timed out after ${re}ms`)}for(;!ee&&(t(),!(g||ae.status!==`connected`));){let e=_;ee=ae.callOptional(`devframe:rpc:cacheable-functions`).then(t=>{e===_&&d.updateOptions({functions:t??[]})}).catch(t=>{throw e===_&&(ee=void 0),t}),await ee}await ee,t()}let o=_;if(r&&e.i&&!g&&ae.isTrusted&&d.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);o===_&&!g&&d.apply(e,n)}else await t(e)}}},se=KC(e.transport??`auto`,s);ae=se===`static`?await EC({fetchJsonFromBases:ne}):se===`sse`?gC({...oe,sseOptions:e.sseOptions}):PC({...oe,wsOptions:e.wsOptions});let ce;try{ce=new BroadcastChannel(`devframe-auth`)}catch{}let le,ue=!1;function de(e){return((...t)=>ue||!le?e(...t):le.then(()=>e(...t)))}function fe(){g=!0,te();try{h?.(),m?.()}finally{try{ce?.close()}finally{ae.close?.()}}}let pe={events:i,get isTrusted(){return ae.isTrusted},get status(){return ae.status},get connectionError(){return ae.connectionError},get transport(){return ae.transport??se},get connection(){return o},connectionMeta:s,ensureTrusted:ae.ensureTrusted,requestTrust:ae.requestTrust,requestTrustWithToken:async e=>(YS(e),o={...o,authToken:e},ae.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await ae.requestTrustWithCode(e);if(!t)return!1;YS(t),o={...o,authToken:t};try{ce?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>ae.requestAuthCode(e),call:de(ae.call),callEvent:de(ae.callEvent),callOptional:de(ae.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:fe};pe.sharedState=oC(pe),pe.streaming=kC(pe),pe.services=aC(pe);let me=new Map;pe.scope=(e=>{if(!e)return pe;let t=me.get(e);return t||(t=BC(pe,e),me.set(e,t)),t}),f.rpc=pe;function he(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ge(){if(e.simpleAuth!==!1&&he()&&typeof globalThis.prompt==`function`)for(await pe.requestAuthCode().catch(()=>{});!pe.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await pe.requestTrustWithCode(t))return}}async function _e(){let t=await ae.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await iC(pe,{param:n}):!1;t||r||pe.isTrusted||await ge()}return le=_e().then(()=>{ue=!0},()=>{ue=!0}),s.mcp&&bS(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-KH4HHvHf-BjQp5LKx.js`);return{setupBrowserAgentRpcBridge:e}},[],import.meta.url).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(pe))}).catch(()=>{}),ce&&(ce.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&pe.requestTrustWithToken(e.data.authToken)}),pe}var JC=qC,YC=[`components`,`injectors`,`signals`,`ngrx`,`tanstackQuery`,`forms`,`router`,`pipes`,`http`,`analog`,`capacitor`,`errors`,`plugins`],XC=[`angular`,`ngrx`,`analog`,`angular-native`,`nativescript`,`capacitor`];function ZC(e){return`pangular:${e}`}var QC=[`forms`,`router`,`ngrx`,`http`,`analog`,`components`,`tanstackQuery`,`plugins`],$C={refreshMs:{default:3e3,min:500,max:8e3},navigations:{default:50,min:5,max:500},formTimeline:{default:200,min:10,max:2e3},httpCalls:{default:200,min:10,max:2e3},changeLog:{default:200,min:10,max:2e3},cdCycles:{default:200,min:10,max:2e3},capacitorCalls:{default:200,min:10,max:2e3},idleAfterMs:{default:6e4,min:0,max:6e5}},ew={"opted-out":`the request sets transferCache: false`,post:`POST requests are left out unless includePostRequests is set`,method:`only GET, HEAD and POST requests are cached`,"auth-headers":`it sends an Authorization, Proxy-Authorization or Cookie header`,credentials:`it sends credentials (withCredentials or credentials: include/same-origin)`,"no-cache-request":`the request asks for no-store, no-cache or private`,"no-cache-response":`the response has Cache-Control no-store, no-cache or private`,"set-cookie":`the response sets a cookie`,error:`failed responses are not stored`,mocked:`a fault rule answered before the transfer cache ran`,"cache-off-or-filter":`the transfer cache is off, or its filter (or another withHttpTransferCacheOptions setting) left it out`},tw=[[0,`Network error (offline)`],[200,`OK`],[201,`Created`],[202,`Accepted`],[203,`Non-Authoritative Information`],[204,`No Content`],[205,`Reset Content`],[206,`Partial Content`],[207,`Multi-Status`],[208,`Already Reported`],[226,`IM Used`],[300,`Multiple Choices`],[301,`Moved Permanently`],[302,`Found`],[303,`See Other`],[304,`Not Modified`],[307,`Temporary Redirect`],[308,`Permanent Redirect`],[400,`Bad Request`],[401,`Unauthorized`],[402,`Payment Required`],[403,`Forbidden`],[404,`Not Found`],[405,`Method Not Allowed`],[406,`Not Acceptable`],[407,`Proxy Authentication Required`],[408,`Request Timeout`],[409,`Conflict`],[410,`Gone`],[411,`Length Required`],[412,`Precondition Failed`],[413,`Content Too Large`],[414,`URI Too Long`],[415,`Unsupported Media Type`],[416,`Range Not Satisfiable`],[417,`Expectation Failed`],[418,`I'm a Teapot`],[421,`Misdirected Request`],[422,`Unprocessable Content`],[423,`Locked`],[424,`Failed Dependency`],[425,`Too Early`],[426,`Upgrade Required`],[428,`Precondition Required`],[429,`Too Many Requests`],[431,`Request Header Fields Too Large`],[451,`Unavailable For Legal Reasons`],[499,`Client Closed Request`],[500,`Internal Server Error`],[501,`Not Implemented`],[502,`Bad Gateway`],[503,`Service Unavailable`],[504,`Gateway Timeout`],[505,`HTTP Version Not Supported`],[506,`Variant Also Negotiates`],[507,`Insufficient Storage`],[508,`Loop Detected`],[510,`Not Extended`],[511,`Network Authentication Required`],[520,`Web Server Returned an Unknown Error`],[521,`Web Server Is Down`],[522,`Connection Timed Out`],[523,`Origin Is Unreachable`],[524,`A Timeout Occurred`]];function nw(e){return tw.some(([t])=>t===e)}var rw=/^[a-z][a-z0-9-]{0,39}$/;function iw(e,t){let n=t.plugins?.[e],r=t.inspectors.plugins&&rw.test(e)&&(n?.enabled??!0);return{enabled:r,tools:r&&t.agent.tools.plugins&&(n?.tools??!0),actions:r&&t.actions.plugins&&(n?.actions??!0)}}var aw=`pangular`,ow={mod:`Mod`,ctrl:`Ctrl`,control:`Ctrl`,meta:`Meta`,cmd:`Meta`,command:`Meta`,alt:`Alt`,option:`Alt`,opt:`Alt`,shift:`Shift`},sw=[`Mod`,`Ctrl`,`Meta`,`Alt`,`Shift`];function cw(e){if(typeof e!=`string`||e.length>40)return;let t=e.split(`+`).map(e=>e.trim());if(t.some(e=>!e))return;let n=new Set,r;for(let e of t){let t=ow[e.toLowerCase()];if(t){if(n.has(t))return;n.add(t);continue}if(r!==void 0)return;if(/^[a-z0-9]$/i.test(e))r=e.toUpperCase();else if(/^f([1-9]|1[0-2])$/i.test(e))r=e.toUpperCase();else return}if(r&&[...n].some(e=>e!==`Shift`)&&!(n.has(`Mod`)&&(n.has(`Ctrl`)||n.has(`Meta`))))return[...sw.filter(e=>n.has(e)),r].join(`+`)}function lw(e,t,n){let r=t.split(`+`),i=r.pop(),a=new Set(r),o=a.has(`Ctrl`)||a.has(`Mod`)&&!n,s=a.has(`Meta`)||a.has(`Mod`)&&n;if(e.ctrlKey!==o||e.metaKey!==s||e.altKey!==a.has(`Alt`)||e.shiftKey!==a.has(`Shift`))return!1;if(/^F\d+$/.test(i))return e.key.toUpperCase()===i;let c=/^\d$/.test(i)?`Digit${i}`:`Key${i}`;return e.code?e.code===c:e.key.toUpperCase()===i}function uw(e,t){if(!t)return e.replace(/^Mod\b/,`Ctrl`);let n={Mod:`⌘`,Meta:`⌘`,Ctrl:`⌃`,Alt:`⌥`,Shift:`⇧`};return e.split(`+`).map(e=>n[e]??e).join(``)}var dw=[{id:`dashboard`,label:`Dashboard`},{id:`timeline`,label:`Timeline`},{id:`audit`,label:`Audit`},{id:`analog`,label:`Analog`,inspector:`analog`},{id:`components`,label:`Components`,inspector:`components`},{id:`routes`,label:`Routes`,inspector:`router`},{id:`signals`,label:`Signals`,inspector:`signals`},{id:`injectors`,label:`Injectors`,inspector:`injectors`},{id:`store`,label:`Store`,inspector:`ngrx`},{id:`queries`,label:`Queries`,inspector:`tanstackQuery`},{id:`forms`,label:`Forms`,inspector:`forms`},{id:`pipes`,label:`Pipes`,inspector:`pipes`},{id:`network`,label:`SSR & HTTP`,inspector:`http`},{id:`errors`,label:`Errors`,inspector:`errors`},{id:`capacitor`,label:`Capacitor`,inspector:`capacitor`},{id:`plugins`,label:`Plugins`,inspector:`plugins`}],fw=1e4;function pw(e){return dw.filter(t=>!(`inspector`in t)||e.inspectors[t.inspector])}var mw={components:`a component instance, by its id in the component tree`,injectors:`a component's element injector, by the component's id`,signals:`a component's signal graph, by the component's id`,forms:`a form, by its id`},hw=200;function gw(e){let t=new URLSearchParams({tab:e.tab});return e.id&&t.set(`id`,e.id),e.page&&t.set(`page`,e.page),`#${t.toString()}`}function _w(e){let t=new URLSearchParams(e.replace(/^#/,``)),n=e=>{let n=t.get(e)?.trim();return n&&n.length<=hw?n:void 0},r=n(`tab`);if(!r)return null;let i=n(`id`),a=n(`page`);return{tab:r,...i?{id:i}:{},...a?{page:a}:{}}}var vw=[{id:`settings`,title:`Open settings`,group:`Go to`,keywords:`preferences tabs`},{id:`pick-component`,title:`Pick component on page`,group:`Actions`,keywords:`select inspect element`,inspector:`components`},{id:`cd-record-start`,title:`Start recording change detection`,group:`Actions`,keywords:`profiler cycles`,inspector:`components`},{id:`cd-record-stop`,title:`Stop recording change detection`,group:`Actions`,keywords:`profiler cycles`,inspector:`components`},{id:`cd-clear`,title:`Clear change detection recording`,group:`Actions`,keywords:`reset recordings cycles`,inspector:`components`},{id:`theme:system`,title:`Theme: follow the system`,group:`Theme`,keywords:`auto`},{id:`theme:light`,title:`Theme: light`,group:`Theme`},{id:`theme:dark`,title:`Theme: dark`,group:`Theme`},{id:`dock:float`,title:`Popup: float`,group:`Popup`,keywords:`dock`,popupOnly:!0},{id:`dock:bottom`,title:`Popup: dock to the bottom`,group:`Popup`,keywords:`dock`,popupOnly:!0},{id:`dock:right`,title:`Popup: dock to the right`,group:`Popup`,keywords:`dock`,popupOnly:!0},{id:`dock:reset-size`,title:`Popup: reset the docked size`,group:`Popup`,keywords:`splitter resize height width`,popupOnly:!0},{id:`popout`,title:`Popup: open in its own window`,group:`Popup`,keywords:`pop out detach new window`,popupOnly:!0},{id:`popout:return`,title:`Popup: back into the page`,group:`Popup`,keywords:`pop in attach dock window`,popupOnly:!0}];function yw(e){let t=pw(e).map(e=>({id:`tab:${e.id}`,title:`Go to ${e.label}`,group:`Go to`,keywords:`tab open`})),n=vw.filter(t=>!t.inspector||e.inspectors[t.inspector]).map(({inspector:e,...t})=>t);return[...t,...n]}function bw(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}var xw=Object.freeze({minLength:24,threshold:4.5}),Sw={min:16,max:512},Cw={min:2,max:6};function ww(e){return typeof e==`number`&&Number.isInteger(e)&&e>=Sw.min&&e<=Sw.max}function Tw(e){return typeof e==`number`&&Number.isFinite(e)&&e>=Cw.min&&e<=Cw.max}function Ew(e){if(e===!0)return{...xw};if(!e||typeof e!=`object`||Array.isArray(e))return;let{minLength:t,threshold:n}=e;return{minLength:ww(t)?t:xw.minLength,threshold:Tw(n)?n:xw.threshold}}function Dw(e){let t=Ew(e);return t?{entropy:t}:{}}function Ow(e,t){return typeof e==`boolean`?e:t}var kw=100,Aw=100;function jw(e){if(!Array.isArray(e))return[];let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e&&e.length<=Aw);return[...new Set(t)].slice(0,kw)}function Mw(e,t){let{default:n,min:r,max:i}=$C[t];return typeof e!=`number`||!Number.isFinite(e)?n:Math.min(i,Math.max(r,Math.round(e)))}function Nw(e,t){return Object.fromEntries(e.map(e=>[e,t(e)]))}function Pw(e){let t=bw(e),n=bw(t.agent),r=bw(t.inspectors),i=bw(n.tools),a=bw(t.actions),o=Ow(t.actions,!0),s=bw(t.redaction),c=bw(t.limits),l=Nw(YC,e=>Ow(r[e],!0));return{inspectors:l,agent:{readOnly:Ow(n.readOnly,!1),tools:Nw(YC,e=>l[e]&&Ow(i[e],!0)),browserTools:Ow(n.browserTools,!1)},actions:Nw(QC,e=>l[e]&&Ow(a[e],o)),redaction:{secretNames:jw(s.secretNames),unmask:jw(s.unmask),...Dw(s.entropy)},limits:Object.fromEntries(Object.keys($C).map(e=>[e,Mw(c[e],e)])),popup:{hotkey:Vw(bw(t.popup).hotkey)},plugins:Bw(t.plugins),lint:{rules:Rw(t.lint)},analog:Iw(t.analog),ngrx:{trace:Ow(bw(t.ngrx).trace,!1)}}}var Fw=500;function Iw(e){let t=bw(e).contentSchema;return typeof t==`string`&&t.trim()&&t.length<=Fw?{contentSchema:t.trim()}:{}}var Lw=200;function Rw(e){let t=bw(bw(e).rules),n={};for(let[e,r]of Object.entries(t).slice(0,Lw))typeof r==`boolean`&&(n[e]=r);return n}var zw=100;function Bw(e){let t={};for(let[n,r]of Object.entries(bw(e)).slice(0,zw)){if(!rw.test(n))continue;if(typeof r==`boolean`){t[n]={enabled:r,tools:!0,actions:!0};continue}let e=bw(r);r!==void 0&&Object.keys(e).length&&(t[n]={enabled:Ow(e.enabled,!0),tools:Ow(e.tools,!0),actions:Ow(e.actions,!0)})}return t}function Vw(e){return e===!1?!1:cw(e)??`Alt+Shift+P`}function Hw(e){let t=e?.configs;return Pw(t?.[aw])}function Uw(e){return`${{forms:`Writing to forms`,router:`Navigating and clearing navigations`,ngrx:`Restoring NgRx state, dispatching actions and changing the Store DevTools history`,http:`Changing HTTP mock rules and SSR overrides, and clearing HTTP calls`,analog:`Calling API routes, clearing server calls, running Nitro tasks and purging the Nitro cache`,components:`Editing component properties and signals`,tanstackQuery:`Invalidating and refetching TanStack queries`,plugins:`Running plugin actions`}[e]} is turned off in the devtools config (actions.${e}).`}var Ww=[`pangular:build-meta`],Gw={components:`Components`,injectors:`Injectors`,signals:`Signals`,ngrx:`NgRx`,tanstackQuery:`TanStack Query`,forms:`Forms`,router:`Router`,pipes:`Pipes`,http:`HTTP`,analog:`Analog`,capacitor:`Capacitor`,errors:`Errors`,plugins:`Plugins`},Kw={forms:`Form writes`,router:`Navigation`,ngrx:`NgRx restore, dispatch and Store DevTools`,http:`HTTP mocking`,analog:`Analog API calls`,components:`Component edits`,tanstackQuery:`TanStack Query invalidate and refetch`,plugins:`Plugin actions`},qw={refreshMs:e=>`poll every ${e} ms`,navigations:e=>`${e} navigations`,formTimeline:e=>`${e} form events`,httpCalls:e=>`${e} HTTP calls`,changeLog:e=>`${e} NgRx changes`,cdCycles:e=>`${e} change detection cycles`,capacitorCalls:e=>`${e} Capacitor plugin calls`,idleAfterMs:e=>e?`idle ${e/1e3} s after the last agent call`:`never idle`};function Jw(e){if(!e)return[];let t=[`On`];return e.minLength!==xw.minLength&&t.push(`${e.minLength} characters or more`),e.threshold!==xw.threshold&&t.push(`up to ${e.threshold} bits per character`),t}function Yw(e){let t=[],n=(e,n)=>{n.length&&t.push({label:e,value:n.join(`, `)})},r=YC.filter(t=>e.inspectors[t]);n(`Inspectors off`,YC.filter(t=>!e.inspectors[t]).map(e=>Gw[e])),n(`Agent`,e.agent.readOnly?[`Read-only`]:[]),n(`Hidden from the agent`,r.filter(t=>!e.agent.tools[t]).map(e=>Gw[e])),n(`Blocked actions`,QC.filter(t=>e.inspectors[t]&&!e.actions[t]).map(e=>Kw[e])),n(`Extra secret names`,e.redaction.secretNames),n(`Unmasked names`,e.redaction.unmask),n(`Entropy masking`,Jw(e.redaction.entropy)),n(`Limits`,Object.keys($C).filter(t=>e.limits[t]!==$C[t].default).map(t=>qw[t](e.limits[t]))),e.popup.hotkey!==`Alt+Shift+P`&&n(`Popup shortcut`,[e.popup.hotkey===!1?`Off`:e.popup.hotkey]);let i=Object.entries(e.plugins??{});return n(`Plugins off`,i.filter(([,e])=>!e.enabled).map(([e])=>e)),n(`Plugin tools or actions off`,i.filter(([,e])=>e.enabled&&(!e.tools||!e.actions)).map(([e,t])=>`${e} (${[!t.tools&&`tools`,!t.actions&&`actions`].filter(Boolean).join(`, `)})`)),n(`Lint rules off`,Object.entries(e.lint?.rules??{}).filter(([,e])=>!e).map(([e])=>e)),t}function Xw(e){let t={tags:[],directives:[],text:``},n=e.toLowerCase();return n=n.replace(/<\s*([^<>\s]+)\s*>/g,(e,n)=>(t.tags.push({value:n,exact:!0}),` `)),n=n.replace(/\[\s*([^[\]\s]+)\s*\]/g,(e,n)=>(t.directives.push({value:n,exact:!0}),` `)),n=n.replace(/(^|\s)([<[])([^<>[\]\s]*)$/,(e,n,r,i)=>(i&&(r===`<`?t.tags:t.directives).push({value:i,exact:!1}),n)),t.text=n.replace(/\s+/g,` `).trim(),t}function Zw(e){return!e.tags.length&&!e.directives.length&&!e.text}function Qw(e,t){let n=e.tag.toLowerCase(),r=(e.directives??[]).map(e=>e.toLowerCase()),i=(e.attributes??[]).map(e=>e.toLowerCase()),a=[...r,...r.map(e=>e.replace(/directive$/,``)),...i];for(let{value:e,exact:r}of t.tags)if(r?n!==e:!n.startsWith(e))return!1;for(let{value:e,exact:n}of t.directives)if(!a.some(t=>n?t===e:t.includes(e)))return!1;if(t.text){let a=t.text;if(!(e.name.toLowerCase().includes(a)||n.includes(a)||r.some(e=>e.includes(a))||i.some(e=>e.includes(a))))return!1}return!0}var $w={debugApi:{subject:`Live data`,since:`12.0`},injectorProviders:{subject:`Reading providers and environment injectors`,since:`16.2`},injectorMetadata:{subject:`The full injector tree`,since:`17.0`},isSignal:{subject:`Telling signals apart in component values`,since:`17.1`},signalGraph:{subject:`The live signal graph`,since:`20.1`},deferBlocks:{subject:`Listing @defer blocks`,since:`19.1`},forBlocks:{subject:`Listing @for blocks`,since:`22.0`},profiler:{subject:`Recording change detection`,since:`20.0`},angularProfiling:{subject:`Angular profiling`,since:`20.0`},routerInstance:{subject:`The router debug util`,since:`20.3`}};function eT(e){let t=/^(\d+)\.(\d+)/.exec(e.trim());return t?`${t[1]}.${t[2]}`:e.trim()}function tT(e){let t=/^(\d+)(?:\.(\d+))?/.exec(e.trim());return t?[Number(t[1]),Number(t[2]??0)]:null}function nT(e,t){let n=tT(e),r=tT(t);return!n||!r?!1:n[0]===r[0]?n[1]>=r[1]:n[0]>r[0]}function rT(e,t){return e?.capabilities?.[t]===!1}function iT(e,t){let n=$w[e],r=`${n.subject} needs Angular ${n.since} or later`;if(!t)return`${r}; this page's Angular version is unknown.`;let i=eT(t);return nT(t,n.since)?`${r} in a development build; this page runs Angular ${i} without it, which usually means a production build.`:`${r}; this page runs Angular ${i}.`}function aT(e){return e.hydration===`hydrated`&&e.hydratedAt===void 0?`hydrated before inspection`:e.hydration}var oT=/^on (viewport|interaction|hover)\b/;function sT(e){let t=e.filter(e=>!/^(prefetch|hydrate) /.test(e));return t.length>0&&t.every(e=>oT.test(e))}function cT(e,t){let n=[],r=e.since>0?Math.max(0,Math.round((t-e.since)/1e3)):0;return e.state===`error`&&n.push({kind:`failed`,text:`failed to load`,label:`failed`}),(e.state===`placeholder`||e.state===`initial`)&&r*1e3>=1e4&&n.push(sT(e.triggers)?{kind:`waiting`,text:`waiting for its trigger for ${r}s`,label:`waiting ${r}s`,seconds:r}:{kind:`stuck`,text:`on its placeholder for ${r}s`,label:`stuck ${r}s`,seconds:r}),e.hydrateNever?n.push({kind:`hydrate-never`,text:`hydrate never: the server HTML stays static`,label:`hydrate never`}):e.hydration===`dehydrated`&&n.push({kind:`dehydrated`,text:`still dehydrated`,label:`dehydrated`}),n}var lT=`pangular-page-id`,uT=null;function dT(e){uT=e}function fT(){if(uT)return uT;try{return new URLSearchParams(location.search).get(`pageId`)||(window.top===window?null:sessionStorage.getItem(lT)||null)}catch{return null}}function pT(e,t){if(t.chosen&&e[t.chosen])return t.chosen;if(t.host)return t.host;if(t.previous&&e[t.previous])return t.previous;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n?.pageId??null}function mT(e,t){return e?t?e.pages?.[t]??null:e:null}function hT(e,t){return e?t?e.pages?.[t]??null:e.graph??null:null}function gT(){return{functions:[...Ww]}}function _T(e,t,n){return e?e.scope(`pangular`).rpc.call(t,...n===void 0?[]:[n]):Promise.resolve(null)}function vT(e,t,n){return _T(e,t,n).then(e=>e,()=>null)}function yT(e){return e?.connectionMeta.backend===`static`}function bT(e){let t=()=>{let t=e()?.scope(`pangular`).rpc;t&&(t.callEvent(`request-page-highlight`,null),t.callEvent(`request-form-highlight`,null))};return addEventListener(`pagehide`,t),()=>{removeEventListener(`pagehide`,t),t()}}function xT(e=globalThis){delete e.__DEVFRAME_CONNECTION__,delete e.__DEVFRAME_CONNECTION_META__}function ST(e){return e.split(`@`)[1]??``}var CT={signal:`Signal Forms`,reactive:`Reactive`,template:`Template-driven`},wT={own:`validator`,directive:`template attribute`,tree:`cross-field rule`,async:`async`,parse:`parse`,submission:`server`,schema:`schema`,manual:`setErrors`},TT=vT,ET={key:`name looks secret`,"input-type":`password input`,autocomplete:`autocomplete is a secret kind`,marker:`marked as mask`,parent:`inside a secret group`,config:`listed in mask`};function DT(e){return ET[e]??e}var OT=`https://pangular-inspector.dev/security/#opt-fields-in-or-out`;async function kT(e,t){return await TT(e,`request-form-action`,t)??{ok:!1,error:`The devtools server did not answer.`}}function AT(e){return`${e.ok?e.message??`Done.`:e.error??`Failed.`}${e.skipped?.length?` Skipped: ${e.skipped.map(e=>`${e.path} (${e.reason})`).join(`, `)}.`:``}${e.status?` Status: ${e.status}.`:``}`}var jT=/"(?:[^"\\\n]|\\.)*"|`([^`\n]*)`|\*\*/g;function MT(e){return(e??``).replace(/^_Labels, paths.*_\n\n/,``).replace(jT,(e,t)=>t??(e===`**`?``:e))}function NT(e){return Hw(e?.connectionMeta)}function PT(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)?[...e]:void 0}function FT(e,t){if(!t||typeof t!=`object`)return e;let n=PT(t.secretNames),r=PT(t.unmask);if(!n||!r)return e;let i=Ew(t.entropy);return{...e,redaction:i?{secretNames:n,unmask:r,entropy:i}:{secretNames:n,unmask:r}}}function IT(e,t){return NT(e).actions[t]}var LT={components:`components`,routes:`router`,signals:`signals`,injectors:`injectors`,store:`ngrx`,queries:`tanstackQuery`,forms:`forms`,pipes:`pipes`,network:`http`,analog:`analog`,capacitor:`capacitor`,errors:`errors`,plugins:`plugins`};function RT(e){return LT[e]}var zT=`https://pangular-inspector.dev/getting-started/configuration/#inspectors-and-agent-tools`;function BT(e,t){let n=LT[e];return!n||t.inspectors[n]}function VT(e,t){e&1&&(T(),og(0,`rect`,5)(1,`rect`,6)(2,`rect`,7)(3,`rect`,8))}function HT(e,t){e&1&&(T(),og(0,`path`,9)(1,`circle`,10)(2,`circle`,11)(3,`path`,12))}function UT(e,t){e&1&&(T(),og(0,`path`,13)(1,`path`,14))}function WT(e,t){e&1&&(T(),og(0,`path`,15)(1,`path`,16)(2,`path`,17))}function GT(e,t){e&1&&(T(),og(0,`circle`,18)(1,`path`,19)(2,`circle`,20))}function KT(e,t){e&1&&(T(),og(0,`path`,1))}function qT(e,t){e&1&&(T(),og(0,`path`,21)(1,`path`,22)(2,`path`,23)(3,`path`,24))}function JT(e,t){e&1&&(T(),og(0,`ellipse`,25)(1,`path`,26)(2,`path`,27))}function YT(e,t){e&1&&(T(),og(0,`rect`,28)(1,`path`,29)(2,`path`,30)(3,`path`,31))}function XT(e,t){e&1&&(T(),og(0,`circle`,32)(1,`path`,9)(2,`path`,33))}function ZT(e,t){e&1&&(T(),og(0,`path`,34)(1,`path`,35)(2,`path`,36)(3,`path`,37)(4,`circle`,38))}function QT(e,t){e&1&&(T(),og(0,`circle`,39)(1,`path`,40))}function $T(e,t){e&1&&(T(),og(0,`ellipse`,41)(1,`path`,42)(2,`path`,43)(3,`path`,44)(4,`path`,45))}function eE(e,t){e&1&&(T(),og(0,`circle`,32)(1,`path`,46)(2,`path`,47))}function tE(e,t){e&1&&(T(),og(0,`path`,2))}function nE(e,t){e&1&&(T(),og(0,`path`,3))}function rE(e,t){e&1&&(T(),og(0,`path`,4))}var iE=class e{name=$.required();static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-tab-icon`]],inputs:{name:[1,`name`]},decls:18,vars:1,consts:[[`viewBox`,`0 0 24 24`,`width`,`16`,`height`,`16`,`fill`,`none`,`stroke`,`currentColor`,`stroke-width`,`1.8`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`,`aria-hidden`,`true`],[`d`,`M22 12h-4l-3 9L9 3l-3 9H2`],[`d`,`M10 3h4v3a2 2 0 1 0 4 0V5h1a2 2 0 0 1 2 2v4h-2a2 2 0 1 0 0 4h2v4a2 2 0 0 1-2 2h-4v-2a2 2 0 1 0-4 0v2H7a2 2 0 0 1-2-2v-4H4a2 2 0 1 1 0-4h1V7a2 2 0 0 1 2-2h3Z`],[`d`,`m8 3 4 8 5-5 5 15H2L8 3z`],[`fill`,`currentColor`,`stroke`,`none`,`transform`,`translate(1.8 1.8) scale(0.85)`,`d`,`M24 3.7l-5.766 5.766 5.725 5.736-3.713 3.712L5.073 3.742 8.786.03l5.736 5.726L20.284 0 24 3.7zM.029 8.785l3.713-3.713 15.173 15.173-3.713 3.714-5.732-5.726L3.7 24 0 20.285l5.754-5.764L.029 8.785z`],[`x`,`3`,`y`,`3`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`14`,`y`,`3`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`x`,`14`,`y`,`12`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`3`,`y`,`16`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`d`,`M3 12h18`],[`cx`,`7`,`cy`,`12`,`r`,`2`],[`cx`,`14`,`cy`,`12`,`r`,`2`],[`d`,`M18 7v10`],[`d`,`M9 11l2 2 4-4`],[`d`,`M12 3 4 6v6c0 4.5 3.4 8.3 8 9 4.6-.7 8-4.5 8-9V6l-8-3Z`],[`d`,`M12 2 3 7l9 5 9-5-9-5Z`],[`d`,`m3 12 9 5 9-5`],[`d`,`m3 17 9 5 9-5`],[`cx`,`6`,`cy`,`19`,`r`,`3`],[`d`,`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`],[`cx`,`18`,`cy`,`5`,`r`,`3`],[`d`,`M12 22v-5`],[`d`,`M9 8V2`],[`d`,`M15 8V2`],[`d`,`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`],[`cx`,`12`,`cy`,`5`,`rx`,`9`,`ry`,`3`],[`d`,`M3 5v14a9 3 0 0 0 18 0V5`],[`d`,`M3 12a9 3 0 0 0 18 0`],[`x`,`3`,`y`,`4`,`width`,`18`,`height`,`16`,`rx`,`2`],[`d`,`M7 9h10`],[`d`,`M7 13h6`],[`d`,`M7 17h8`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18Z`],[`d`,`M4 7h10`],[`d`,`M4 17h6`],[`d`,`m14 13 4 4-4 4`],[`d`,`M10 17h8`],[`cx`,`18`,`cy`,`7`,`r`,`3`],[`cx`,`12`,`cy`,`12`,`r`,`3`],[`d`,`M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1Z`],[`cx`,`11`,`cy`,`5`,`rx`,`8`,`ry`,`3`],[`d`,`M3 5v6c0 1.66 3.58 3 8 3`],[`d`,`M3 11v6c0 1.66 3.58 3 8 3`],[`d`,`M21 14a4 4 0 1 1-1.2-2.85L21 12.3`],[`d`,`M21 9v3.3h-3.3`],[`d`,`M12 7v6`],[`d`,`M12 16.5v.01`]],template:function(e,t){if(e&1&&(T(),R(0,`svg`,0),A(1,VT,4,0)(2,HT,4,0)(3,UT,2,0)(4,WT,3,0)(5,GT,3,0)(6,KT,1,0,`:svg:path`,1)(7,qT,4,0)(8,JT,3,0)(9,YT,4,0)(10,XT,3,0)(11,ZT,5,0)(12,QT,2,0)(13,$T,5,0)(14,eE,3,0)(15,tE,1,0,`:svg:path`,2)(16,nE,1,0,`:svg:path`,3)(17,rE,1,0,`:svg:path`,4),z()),e&2){let e;D(),j((e=t.name())===`dashboard`?1:e===`timeline`?2:e===`audit`?3:e===`components`?4:e===`routes`?5:e===`signals`?6:e===`injectors`?7:e===`store`?8:e===`forms`?9:e===`network`?10:e===`pipes`?11:e===`settings`?12:e===`queries`?13:e===`errors`?14:e===`plugins`?15:e===`analog`?16:e===`capacitor`?17:-1)}},styles:[`[_nghost-%COMP%] { + `):``,this.name=`UnsubscriptionError`,this.errors=t}});function ir(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var ar=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var e,t,n,r,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a){if(this._parentage=null,Array.isArray(a))try{for(var o=Yn(a),s=o.next();!s.done;s=o.next())s.value.remove(this)}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else a.remove(this)}var c=this.initialTeardown;if(tr(c))try{c()}catch(e){i=e instanceof rr?e.errors:[e]}var l=this._finalizers;if(l){this._finalizers=null;try{for(var u=Yn(l),d=u.next();!d.done;d=u.next()){var f=d.value;try{cr(f)}catch(e){i??=[],e instanceof rr?i=Zn(Zn([],Xn(i)),Xn(e.errors)):i.push(e)}}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(i)throw new rr(i)}},e.prototype.add=function(t){if(t&&t!==this){if(this.closed)cr(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=this._finalizers??[]).push(t)}}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&ir(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&ir(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=(function(){var t=new e;return t.closed=!0,t})(),e}(),or=ar.EMPTY;function sr(e){return e instanceof ar||e&&`closed`in e&&tr(e.remove)&&tr(e.add)&&tr(e.unsubscribe)}function cr(e){tr(e)?e():e.unsubscribe()}var lr={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},ur={setTimeout:function(e,t){var n=[...arguments].slice(2),r=ur.delegate;return r?.setTimeout?r.setTimeout.apply(r,Zn([e,t],Xn(n))):setTimeout.apply(void 0,Zn([e,t],Xn(n)))},clearTimeout:function(e){return(ur.delegate?.clearTimeout||clearTimeout)(e)},delegate:void 0};function dr(e){ur.setTimeout(function(){var t=lr.onUnhandledError;if(t)t(e);else throw e})}function fr(){}var pr=(function(){return gr(`C`,void 0,void 0)})();function mr(e){return gr(`E`,void 0,e)}function hr(e){return gr(`N`,e,void 0)}function gr(e,t,n){return{kind:e,value:t,error:n}}var _r=null;function vr(e){if(lr.useDeprecatedSynchronousErrorHandling){var t=!_r;if(t&&(_r={errorThrown:!1,error:null}),e(),t){var n=_r,r=n.errorThrown,i=n.error;if(_r=null,r)throw i}}else e()}function yr(e){lr.useDeprecatedSynchronousErrorHandling&&_r&&(_r.errorThrown=!0,_r.error=e)}var br=function(e){Kn(t,e);function t(t){var n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,sr(t)&&t.add(n)):n.destination=Or,n}return t.create=function(e,t,n){return new wr(e,t,n)},t.prototype.next=function(e){this.isStopped?Dr(hr(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?Dr(mr(e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?Dr(pr,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(ar),xr=Function.prototype.bind;function Sr(e,t){return xr.call(e,t)}var Cr=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){Tr(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){Tr(e)}else Tr(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){Tr(e)}},e}(),wr=function(e){Kn(t,e);function t(t,n,r){var i=e.call(this)||this,a;if(tr(t)||!t)a={next:t??void 0,error:n??void 0,complete:r??void 0};else{var o;i&&lr.useDeprecatedNextContext?(o=Object.create(t),o.unsubscribe=function(){return i.unsubscribe()},a={next:t.next&&Sr(t.next,o),error:t.error&&Sr(t.error,o),complete:t.complete&&Sr(t.complete,o)}):a=t}return i.destination=new Cr(a),i}return t}(br);function Tr(e){lr.useDeprecatedSynchronousErrorHandling?yr(e):dr(e)}function Er(e){throw e}function Dr(e,t){var n=lr.onStoppedNotification;n&&ur.setTimeout(function(){return n(e,t)})}var Or={closed:!0,next:fr,error:Er,complete:fr},kr=(function(){return typeof Symbol==`function`&&Symbol.observable||`@@observable`})();function Ar(e){return e}function jr(e){return e.length===0?Ar:e.length===1?e[0]:function(t){return e.reduce(function(e,t){return t(e)},t)}}var Mr=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var r=this,i=Fr(e)?e:new wr(e,t,n);return vr(function(){var e=r,t=e.operator,n=e.source;i.add(t?t.call(i,n):n?r._subscribe(i):r._trySubscribe(i))}),i},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var n=this;return t=Nr(t),new t(function(t,r){var i=new wr({next:function(t){try{e(t)}catch(e){r(e),i.unsubscribe()}},error:r,complete:t});n.subscribe(i)})},e.prototype._subscribe=function(e){return this.source?.subscribe(e)},e.prototype[kr]=function(){return this},e.prototype.pipe=function(){return jr([...arguments])(this)},e.prototype.toPromise=function(e){var t=this;return e=Nr(e),new e(function(e,n){var r;t.subscribe(function(e){return r=e},function(e){return n(e)},function(){return e(r)})})},e.create=function(t){return new e(t)},e}();function Nr(e){return e??lr.Promise??Promise}function Pr(e){return e&&tr(e.next)&&tr(e.error)&&tr(e.complete)}function Fr(e){return e&&e instanceof br||Pr(e)&&sr(e)}function Ir(e){return tr(e?.lift)}function Lr(e){return function(t){if(Ir(t))return t.lift(function(t){try{return e(t,this)}catch(e){this.error(e)}});throw TypeError(`Unable to lift unknown Observable type`)}}function Rr(e,t,n,r,i){return new zr(e,t,n,r,i)}var zr=function(e){Kn(t,e);function t(t,n,r,i,a,o){var s=e.call(this,t)||this;return s.onFinalize=a,s.shouldUnsubscribe=o,s._next=n?function(e){try{n(e)}catch(e){t.error(e)}}:e.prototype._next,s._error=i?function(e){try{i(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,s._complete=r?function(){try{r()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,s}return t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&((t=this.onFinalize)==null||t.call(this))}},t}(br),Br=nr(function(e){return function(){e(this),this.name=`ObjectUnsubscribedError`,this.message=`object unsubscribed`}}),Vr=function(e){Kn(t,e);function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return t.prototype.lift=function(e){var t=new Hr(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new Br},t.prototype.next=function(e){var t=this;vr(function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||=Array.from(t.observers);try{for(var i=Yn(t.currentObservers),a=i.next();!a.done;a=i.next())a.value.next(e)}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}})},t.prototype.error=function(e){var t=this;vr(function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var n=t.observers;n.length;)n.shift().error(e)}})},t.prototype.complete=function(){var e=this;vr(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){return this.observers?.length>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,i=n.isStopped,a=n.observers;return r||i?or:(this.currentObservers=null,a.push(e),new ar(function(){t.currentObservers=null,ir(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,i=t.isStopped;n?e.error(r):i&&e.complete()},t.prototype.asObservable=function(){var e=new Mr;return e.source=this,e},t.create=function(e,t){return new Hr(e,t)},t}(Mr),Hr=function(e){Kn(t,e);function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return t.prototype.next=function(e){var t,n;(n=(t=this.destination)?.next)==null||n.call(t,e)},t.prototype.error=function(e){var t,n;(n=(t=this.destination)?.error)==null||n.call(t,e)},t.prototype.complete=function(){var e,t;(t=(e=this.destination)?.complete)==null||t.call(e)},t.prototype._subscribe=function(e){return this.source?.subscribe(e)??or},t}(Vr),Ur=function(e){Kn(t,e);function t(t){var n=e.call(this)||this;return n._value=t,n}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(t){var n=e.prototype._subscribe.call(this,t);return!n.closed&&t.next(this._value),n},t.prototype.getValue=function(){var e=this,t=e.hasError,n=e.thrownError,r=e._value;if(t)throw n;return this._throwIfClosed(),r},t.prototype.next=function(t){e.prototype.next.call(this,this._value=t)},t}(Vr);function Wr(e){return e[e.length-1]}function Gr(e){return tr(Wr(e))?e.pop():void 0}var Kr=(function(e){return e&&typeof e.length==`number`&&typeof e!=`function`});function qr(e){return tr(e?.then)}function Jr(e){return tr(e[kr])}function Yr(e){return Symbol.asyncIterator&&tr(e?.[Symbol.asyncIterator])}function Xr(e){return TypeError(`You provided `+(typeof e==`object`&&e?`an invalid object`:`'`+e+`'`)+` where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function Zr(){return typeof Symbol!=`function`||!Symbol.iterator?`@@iterator`:Symbol.iterator}var Qr=Zr();function $r(e){return tr(e?.[Qr])}function ei(e){return $n(this,arguments,function(){var t,n,r,i;return Jn(this,function(a){switch(a.label){case 0:t=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,Qn(t.read())];case 3:return n=a.sent(),r=n.value,i=n.done,i?[4,Qn(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,Qn(r)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}})})}function ti(e){return tr(e?.getReader)}function ni(e){if(e instanceof Mr)return e;if(e!=null){if(Jr(e))return yee(e);if(Kr(e))return bee(e);if(qr(e))return xee(e);if(Yr(e))return ri(e);if($r(e))return See(e);if(ti(e))return Cee(e)}throw Xr(e)}function yee(e){return new Mr(function(t){var n=e[kr]();if(tr(n.subscribe))return n.subscribe(t);throw TypeError(`Provided object does not correctly implement Symbol.observable`)})}function bee(e){return new Mr(function(t){for(var n=0;n=0?n.slice(0,r):n}function mi(e,t){return e?t?`${e} ${t}`:e:t||``}var Gee=fi({__forward_ref__:fi});function hi(e){return e.__forward_ref__=hi,e}function gi(e){return _i(e)?e():e}function _i(e){return typeof e==`function`&&Object.hasOwn(e,Gee)&&e.__forward_ref__===hi}function vi(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function yi(e){return bi(e,Ci)}function bi(e,t){return Object.hasOwn(e,t)&&e[t]||null}function xi(e){return(e?.[Ci]??null)||null}function Si(e){return e&&Object.hasOwn(e,wi)?e[wi]:null}var Ci=fi({ɵprov:fi}),wi=fi({ɵinj:fi}),Ti=class{_desc;ngMetadataName=`InjectionToken`;ɵprov;constructor(e,t){this._desc=e,this.ɵprov=void 0,typeof t==`number`?this.__NG_ELEMENT_ID__=t:t!==void 0&&(this.ɵprov=vi({token:this,providedIn:t.providedIn||`root`,factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function Ei(e){return e&&!!e.ɵproviders}var Di=fi({ɵcmp:fi}),Oi=fi({ɵdir:fi}),ki=fi({ɵpipe:fi}),Ai=fi({ɵfac:fi}),ji=fi({__NG_ELEMENT_ID__:fi}),Mi=fi({__NG_ENV_ID__:fi});function Ni(e){return Ii(e,`@Component`),e[Di]||null}function Pi(e){return Ii(e,`@Directive`),e[Oi]||null}function Fi(e){return Ii(e,`@Pipe`),e[ki]||null}function Ii(e,t){if(e==null)throw new ui(-919,!1)}function Li(e){return typeof e==`string`?e:e==null?``:String(e)}var Ri=fi({ngErrorCode:fi}),zi=fi({ngErrorMessage:fi}),Bi=fi({ngTokenPath:fi});function Vi(e,t){return Ui(``,-200,t)}function Hi(e,t){throw new ui(-201,!1)}function Ui(e,t,n){let r=new ui(t,e);return r[Ri]=t,r[zi]=e,n&&(r[Bi]=n),r}function Wi(e){return e[Ri]}var Gi;function Ki(){return Gi}function qi(e){let t=Gi;return Gi=e,t}function Ji(e,t,n){let r=yi(e);if(r&&r.providedIn==`root`)return r.value===void 0?r.value=r.factory():r.value;if(n&8)return null;if(t!==void 0)return t;Hi(e,``)}var Yi=globalThis,Xi={},Zi=`__NG_DI_FLAG__`,Qi=class{injector;constructor(e){this.injector=e}retrieve(e,t){let n=ta(t)||0;try{return this.injector.get(e,n&8?null:Xi,n)}catch(e){if(zn(e))return e;throw e}}};function $i(e,t=0){let n=In();if(n===void 0)throw new ui(-203,!1);if(n===null)return Ji(e,void 0,t);{let r=na(t),i=n.retrieve(e,r);if(zn(i)){if(r.optional)return null;throw i}return i}}function ea(e,t=0){return(Ki()||$i)(gi(e),t)}function x(e,t){return ea(e,ta(t))}function ta(e){return e===void 0||typeof e==`number`?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function na(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function ra(e){let t=[];for(let n=0;nArray.isArray(e)?ca(e,t):t(e))}function la(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function ua(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function da(e,t){let n=[];for(let r=0;rt;){let t=i-2;e[i]=e[t],i--}e[t]=n,e[t+1]=r}}function pa(e,t,n){let r=ha(e,t);return r>=0?e[r|1]=n:(r=~r,fa(e,r,t,n)),r}function ma(e,t){let n=ha(e,t);if(n>=0)return e[n|1]}function ha(e,t){return ga(e,t,1)}function ga(e,t,n){let r=0,i=e.length>>n;for(;i!==r;){let a=r+(i-r>>1),o=e[a<t?i=a:r=a+1}return~(i<{n.push(e)};return ca(t,e=>{let t=e;Ea(t,a,[],r)&&(i||=[],i.push(t))}),i!==void 0&&Ta(i,a),n}function Ta(e,t){for(let n=0;n{t(e,r)})}}function Ea(e,t,n,r){if(e=gi(e),!e)return!1;let i=null,a=Si(e),o=!a&&Ni(e);if(!a&&!o){let t=e.ngModule;if(a=Si(t),a)i=t;else return!1}else if(o&&!o.standalone)return!1;else i=e;let s=r.has(i);if(o){if(s)return!1;if(r.add(i),o.dependencies){let e=typeof o.dependencies==`function`?o.dependencies():o.dependencies;for(let i of e)Ea(i,t,n,r)}}else if(a){if(a.imports!=null&&!s){r.add(i);let e;try{ca(a.imports,i=>{Ea(i,t,n,r)&&(e||=[],e.push(i))})}finally{}e!==void 0&&Ta(e,t)}if(!s){let e=aa(i)||(()=>new i);t({provide:i,useFactory:e,deps:va},i),t({provide:xa,useValue:i,multi:!0},i),t({provide:ya,useValue:()=>ea(i),multi:!0},i)}let o=a.providers;if(o!=null&&!s){let n=e;Da(o,e=>{t(e,n)})}}else return!1;return i!==e&&e.providers!==void 0}function Da(e,t){for(let n of e)Ei(n)&&(n=n.ɵproviders),Array.isArray(n)?Da(n,t):t(n)}var Oa=fi({provide:String,useValue:fi});function ka(e){return typeof e==`object`&&!!e&&Oa in e}function Aa(e){return!!(e&&e.useExisting)}function ja(e){return!!(e&&e.useFactory)}function Ma(e){return typeof e==`function`}function Na(e){return!!e.useClass}var Pa=new Ti(``),Fa={},Ia={},La=void 0;function Ra(){return La===void 0&&(La=new Sa),La}var za=class{},Ba=class extends za{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(e,t,n,r){super(),this.parent=t,this.source=n,this.scopes=r,Xa(e,e=>this.processProvider(e)),this.records.set(ba,Ka(void 0,this)),r.has(`environment`)&&this.records.set(za,Ka(void 0,this));let i=this.records.get(Pa);i!=null&&typeof i.value==`string`&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(xa,va,{self:!0}))}retrieve(e,t){let n=ta(t)||0;try{return this.get(e,Xi,n)}catch(e){if(zn(e))return e;throw e}}destroy(){Ga(this),this._destroyed=!0;let e=tn(null);try{for(let e of this._ngOnDestroyHooks)e.ngOnDestroy();let e=this._onDestroyHooks;this._onDestroyHooks=[];for(let t of e)t()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),tn(e)}}onDestroy(e){return Ga(this),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){Ga(this);let t=Ln(this),n=qi(void 0);try{return e()}finally{Ln(t),qi(n)}}get(e,t=Xi,n){if(Ga(this),Object.hasOwn(e,Mi))return e[Mi](this);let r=ta(n),i=Ln(this),a=qi(void 0);try{if(!(r&4)){let t=this.records.get(e);if(t===void 0){let n=Ya(e)&&yi(e);t=n&&this.injectableDefInScope(n)?Ka(Va(e),Fa):null,this.records.set(e,t)}if(t!=null)return this.hydrate(e,t,r)}let n=r&2?Ra():this.parent;return t=r&8&&t===Xi?null:t,n.get(e,t)}catch(e){let t=Wi(e);throw t===-200||t===-201?new ui(t,null):e}finally{qi(a),Ln(i)}}resolveInjectorInitializers(){let e=tn(null),t=Ln(this),n=qi(void 0);try{let e=this.get(ya,va,{self:!0});for(let t of e)t()}finally{Ln(t),qi(n),tn(e)}}toString(){return`R3Injector[...]`}processProvider(e){e=gi(e);let t=Ma(e)?e:gi(e&&e.provide),n=Ua(e);if(!Ma(e)&&e.multi===!0){let n=this.records.get(t);n||(n=Ka(void 0,Fa,!0),n.factory=()=>ra(n.multi),this.records.set(t,n)),t=e,n.multi.push(e)}this.records.set(t,n)}hydrate(e,t,n){let r=tn(null);try{if(t.value===Ia)throw Vi(``);return t.value===Fa&&(t.value=Ia,t.value=t.factory(void 0,n)),typeof t.value==`object`&&t.value&&Ja(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{tn(r)}}injectableDefInScope(e){if(!e.providedIn)return!1;let t=gi(e.providedIn);return typeof t==`string`?t===`any`||this.scopes.has(t):this.injectorDefTypes.has(t)}removeOnDestroy(e){let t=this._onDestroyHooks.indexOf(e);t!==-1&&this._onDestroyHooks.splice(t,1)}};function Va(e){let t=yi(e),n=t===null?aa(e):t.factory;if(n!==null)return n;if(e instanceof Ti)throw new ui(-204,!1);if(e instanceof Function)return Ha(e);throw new ui(-204,!1)}function Ha(e){if(e.length>0)throw new ui(-204,!1);let t=xi(e);return t===null?()=>new e:()=>t.factory(e)}function Ua(e){return ka(e)?Ka(void 0,e.useValue):Ka(Wa(e),Fa)}function Wa(e,t,n){let r;if(Ma(e)){let t=gi(e);return aa(t)||Va(t)}if(ka(e))r=()=>gi(e.useValue);else if(ja(e))r=()=>e.useFactory(...ra(e.deps||[]));else if(Aa(e))r=(t,n)=>ea(gi(e.useExisting),n!==void 0&&n&8?8:void 0);else{let t=gi(e&&(e.useClass||e.provide));if(qa(e))r=()=>new t(...ra(e.deps));else return aa(t)||Va(t)}return r}function Ga(e){if(e.destroyed)throw new ui(-205,!1)}function Ka(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function qa(e){return!!e.deps}function Ja(e){return typeof e==`object`&&!!e&&typeof e.ngOnDestroy==`function`}function Ya(e){return typeof e==`function`||typeof e==`object`&&e.ngMetadataName===`InjectionToken`}function Xa(e,t){for(let n of e)Array.isArray(n)?Xa(n,t):n&&Ei(n)?Xa(n.ɵproviders,t):t(n)}function Za(e,t){let n;e instanceof Ba?(Ga(e),n=e):n=new Qi(e);let r=Ln(n),i=qi(void 0);try{return t()}finally{Ln(r),qi(i)}}function Qa(){return Ki()!==void 0||In()!=null}var $a=1;function eo(e){return Array.isArray(e)&&typeof e[$a]==`object`}function to(e){return Array.isArray(e)&&e[$a]===!0}function no(e){return!!(e.flags&4)}function ro(e){return e.componentOffset>-1}function io(e){return(e.flags&1)==1}function ao(e){return!!e.template}function oo(e){return!!(e[2]&512)}function so(e){return(e[2]&256)==256}var co=(function(e){return e[e.NONE=0]=`NONE`,e[e.HTML=1]=`HTML`,e[e.STYLE=2]=`STYLE`,e[e.SCRIPT=3]=`SCRIPT`,e[e.URL=4]=`URL`,e[e.RESOURCE_URL=5]=`RESOURCE_URL`,e[e.ATTRIBUTE_NO_BINDING=6]=`ATTRIBUTE_NO_BINDING`,e})(co||{}),lo=`math`;function uo(e){for(;Array.isArray(e);)e=e[0];return e}function fo(e,t){return uo(t[e])}function po(e,t){return uo(t[e.index])}function mo(e,t){return e.data[t]}function ho(e,t){return e[t]}function go(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function _o(e,t){let n=t[e];return eo(n)?n:n[0]}function vo(e){return(e[2]&128)==128}function Kee(e){return to(e[3])}function yo(e,t){return t==null?null:e[t]}function bo(e){e[17]=0}function xo(e){e[2]&1024||(e[2]|=1024,vo(e)&&wo(e))}function qee(e,t){for(;e>0;)t=t[14],e--;return t}function So(e){return!!(e[2]&9216||e[24]?.dirty)}function Co(e){e[10].changeDetectionScheduler?.notify(8),e[2]&64&&(e[2]|=1024),So(e)&&wo(e)}function wo(e){e[10].changeDetectionScheduler?.notify(0);let t=Eo(e);for(;t!==null&&!(t[2]&8192||(t[2]|=8192,!vo(t)));)t=Eo(t)}function To(e,t){if(so(e))throw new ui(911,!1);e[21]===null&&(e[21]=[]),e[21].push(t)}function Jee(e,t){if(e[21]===null)return;let n=e[21].indexOf(t);n!==-1&&e[21].splice(n,1)}function Eo(e){let t=e[3];return to(t)?t[3]:t}function Do(e){return e[7]??=[]}function Oo(e){return e.cleanup??=[]}function Yee(e,t,n,r){let i=Do(t);i.push(n),e.firstCreatePass&&Oo(e).push(r,i.length-1)}var ko={lFrame:ts(null),bindingsEnabled:!0,skipHydrationRootTNode:null},Ao=!1;function Xee(){return ko.lFrame.elementDepthCount}function Zee(){ko.lFrame.elementDepthCount++}function jo(){ko.lFrame.elementDepthCount--}function Mo(){return ko.bindingsEnabled}function No(){return ko.skipHydrationRootTNode!==null}function Po(e){return ko.skipHydrationRootTNode===e}function Fo(){ko.skipHydrationRootTNode=null}function Io(){return ko.lFrame.lView}function Lo(){return ko.lFrame.tView}function S(e){return ko.lFrame.contextLView=e,e[8]}function C(e){return ko.lFrame.contextLView=null,e}function Ro(){let e=zo();for(;e!==null&&e.type===64;)e=e.parent;return e}function zo(){return ko.lFrame.currentTNode}function Qee(){let e=ko.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function Bo(e,t){let n=ko.lFrame;n.currentTNode=e,n.isParent=t}function Vo(){return ko.lFrame.isParent}function Ho(){ko.lFrame.isParent=!1}function Uo(){return ko.lFrame.contextLView}function Wo(){return Ao}function Go(e){let t=Ao;return Ao=e,t}function Ko(){let e=ko.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function qo(){return ko.lFrame.bindingIndex}function $ee(e){return ko.lFrame.bindingIndex=e}function Jo(){return ko.lFrame.bindingIndex++}function Yo(e){let t=ko.lFrame,n=t.bindingIndex;return t.bindingIndex+=e,n}function ete(){return ko.lFrame.inI18n}function tte(e,t){let n=ko.lFrame;n.bindingIndex=n.bindingRootIndex=e,Xo(t)}function nte(){return ko.lFrame.currentDirectiveIndex}function Xo(e){ko.lFrame.currentDirectiveIndex=e}function rte(e){let t=ko.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function ite(){return ko.lFrame.currentQueryIndex}function Zo(e){ko.lFrame.currentQueryIndex=e}function ate(e){let t=e[1];return t.type===2?t.declTNode:t.type===1?e[5]:null}function Qo(e,t,n){if(n&4){let r=t,i=e;for(;r=r.parent,r===null&&!(n&1)&&(r=ate(i),!(r===null||(i=i[14],r.type&10))););if(r===null)return!1;t=r,e=i}let r=ko.lFrame=es();return r.currentTNode=t,r.lView=e,!0}function $o(e){let t=es(),n=e[1];ko.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function es(){let e=ko.lFrame,t=e===null?null:e.child;return t===null?ts(e):t}function ts(e){let t={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:e,child:null,inI18n:!1};return e!==null&&(e.child=t),t}function ns(){let e=ko.lFrame;return ko.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var rs=ns;function is(){let e=ns();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function ote(e){return(ko.lFrame.contextLView=qee(e,ko.lFrame.contextLView))[8]}function as(){return ko.lFrame.selectedIndex}function os(e){ko.lFrame.selectedIndex=e}function ss(){let e=ko.lFrame;return mo(e.tView,e.selectedIndex)}function w(){ko.lFrame.currentNamespace=`svg`}function cs(){ls()}function ls(){ko.lFrame.currentNamespace=null}function us(){return ko.lFrame.currentNamespace}var ds=!0;function fs(){return ds}function ps(e){ds=e}function ms(e,t=null,n=null,r){let i=hs(e,t,n,r);return i.resolveInjectorInitializers(),i}function hs(e,t=null,n=null,r,i=new Set){return new Ba([n||va,Ca(e)],t||Ra(),null,i)}var gs=class e{static THROW_IF_NOT_FOUND=Xi;static NULL=new Sa;static create(e,t){if(Array.isArray(e))return ms({name:``},t,e,``);{let t=e.name??``;return ms({name:t},e.parent,e.providers,t)}}static ɵprov=vi({token:e,providedIn:`any`,factory:()=>ea(ba)});static __NG_ELEMENT_ID__=-1},_s=new Ti(``),vs=class{static __NG_ELEMENT_ID__=bs;static __NG_ENV_ID__=e=>e},ys=class extends vs{_lView;constructor(e){super(),this._lView=e}get destroyed(){return so(this._lView)}onDestroy(e){let t=this._lView;return To(t,e),()=>Jee(t,e)}};function bs(){return new ys(Io())}var xs=new Ti(``),Ss=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new Ur(!1);debugTaskTracker=x(xs,{optional:!0});get hasPendingTasks(){return!this.destroyed&&this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new Mr(e=>{e.next(!1),e.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);let 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),this.pendingTasks.size===0&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static ɵprov=vi({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Cs=class extends Vr{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(e=!1){super(),this.__isAsync=e,Qa()&&(this.destroyRef=x(vs,{optional:!0})??void 0,this.pendingTasks=x(Ss,{optional:!0})??void 0)}emit(e){let t=tn(null);try{super.next(e)}finally{tn(t)}}subscribe(e,t,n){let r=e,i=t||(()=>null),a=n;if(e&&typeof e==`object`){let t=e;r=t.next?.bind(t),i=t.error?.bind(t),a=t.complete?.bind(t)}this.__isAsync&&(i=this.wrapInTimeout(i),r&&=this.wrapInTimeout(r),a&&=this.wrapInTimeout(a));let o=super.subscribe({next:r,error:i,complete:a});return e instanceof ar&&e.add(o),o}wrapInTimeout(e){return t=>{let n=this.pendingTasks?.add();setTimeout(()=>{try{e(t)}finally{n!==void 0&&this.pendingTasks?.remove(n)}})}}};function ws(...e){}function Ts(e){let t,n;function r(){e=ws;try{n!==void 0&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(n),t!==void 0&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame==`function`&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}function Es(e){return queueMicrotask(()=>e()),()=>{e=ws}}var Ds=`isAngularZone`,Os=`isAngularZone_ID`,ks=0,As=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new Cs(!1);onMicrotaskEmpty=new Cs(!1);onStable=new Cs(!1);onError=new Cs(!1);constructor(e){let{enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1,scheduleInRootZone:i=!1}=e;if(typeof Zone>`u`)throw new ui(908,!1);Zone.assertZonePatched();let a=this;a._nesting=0,a._outer=a._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(a._inner=a._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(a._inner=a._inner.fork(Zone.longStackTraceZoneSpec)),a.shouldCoalesceEventChangeDetection=!r&&n,a.shouldCoalesceRunChangeDetection=r,a.callbackScheduled=!1,a.scheduleInRootZone=i,Ps(a)}static isInAngularZone(){return typeof Zone<`u`&&Zone.current.get(Ds)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new ui(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new ui(909,!1)}run(e,t,n){return this._inner.run(e,t,n)}runTask(e,t,n,r){let i=this._inner,a=i.scheduleEventTask(`NgZoneEvent: `+r,e,js,ws,ws);try{return i.runTask(a,t,n)}finally{i.cancelTask(a)}}runGuarded(e,t,n){return this._inner.runGuarded(e,t,n)}runOutsideAngular(e){return this._outer.run(e)}},js={};function Ms(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Ns(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){Ts(()=>{e.callbackScheduled=!1,Fs(e),e.isCheckStableRunning=!0,Ms(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Fs(e)}function Ps(e){let t=()=>{Ns(e)},n=ks++;e._inner=e._inner.fork({name:`angular`,properties:{[Ds]:!0,[Os]:n,[Os+n]:!0},onInvokeTask:(n,r,i,a,o,s)=>{if(zs(s))return n.invokeTask(i,a,o,s);try{return Is(e),n.invokeTask(i,a,o,s)}finally{(e.shouldCoalesceEventChangeDetection&&a.type===`eventTask`||e.shouldCoalesceRunChangeDetection)&&t(),Ls(e)}},onInvoke:(n,r,i,a,o,s,c)=>{try{return Is(e),n.invoke(i,a,o,s,c)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!Bs(s)&&t(),Ls(e)}},onHasTask:(t,n,r,i)=>{t.hasTask(r,i),n===r&&(i.change==`microTask`?(e._hasPendingMicrotasks=i.microTask,Fs(e),Ms(e)):i.change==`macroTask`&&(e.hasPendingMacrotasks=i.macroTask))},onHandleError:(t,n,r,i)=>(t.handleError(r,i),e.runOutsideAngular(()=>e.onError.emit(i)),!1)})}function Fs(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0)}function Is(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Ls(e){e._nesting--,Ms(e)}var Rs=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new Cs;onMicrotaskEmpty=new Cs;onStable=new Cs;onError=new Cs;run(e,t,n){return e.apply(t,n)}runGuarded(e,t,n){return e.apply(t,n)}runOutsideAngular(e){return e()}runTask(e,t,n,r){return e.apply(t,n)}};function zs(e){return Vs(e,`__ignore_ng_zone__`)}function Bs(e){return Vs(e,`__scheduler_tick__`)}function Vs(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var Hs=class{_console=console;handleError(e){this._console.error(`ERROR`,e)}},Us=new Ti(``,{factory:()=>{let e=x(As),t=x(za),n;return r=>{e.runOutsideAngular(()=>{t.destroyed&&!n?setTimeout(()=>{throw r}):(n??=t.get(Hs),n.handleError(r))})}}}),Ws={provide:ya,useValue:()=>{x(Hs,{optional:!0})},multi:!0};function T(e,t){let[n,r,i]=_ee(e,t?.equal),a=n;return a[en],a.set=r,a.update=i,a.asReadonly=Gs.bind(a),a}function Gs(){let e=this[en];if(e.readonlyFn===void 0){let t=()=>this();t[en]=e,e.readonlyFn=t}return e.readonlyFn}var Ks=new Ti(``,{factory:()=>qs}),qs=`ng`,Js=new Ti(``),Ys=new Ti(``,{providedIn:`platform`,factory:()=>`unknown`}),Xs=new Ti(``,{factory:()=>x(_s).body?.querySelector(`[ngCspNonce]`)?.getAttribute(`ngCspNonce`)||null}),Zs=(()=>{class e{view;node;constructor(e,t){this.view=e,this.node=t}static __NG_ELEMENT_ID__=Qs}return e})();function Qs(){return new Zs(Io(),Ro())}var $s=class{},ec=new Ti(``,{factory:()=>!0}),tc=new Ti(``),nc=(()=>{class e{static ɵprov=vi({token:e,providedIn:`root`,factory:()=>new rc})}return e})(),rc=class{dirtyEffectCount=0;queues=new Map;add(e){this.enqueue(e),this.schedule(e)}schedule(e){e.dirty&&this.dirtyEffectCount++}remove(e){let t=e.zone,n=this.queues.get(t);n.has(e)&&(n.delete(e),e.dirty&&this.dirtyEffectCount--)}enqueue(e){let t=e.zone;this.queues.has(t)||this.queues.set(t,new Set);let n=this.queues.get(t);n.has(e)||n.add(e)}flush(){for(;this.dirtyEffectCount>0;){let e=!1;for(let[t,n]of this.queues)e||=t===null?this.flushQueue(n):t.run(()=>this.flushQueue(n));e||(this.dirtyEffectCount=0)}}flushQueue(e){let t=!1;for(let n of e)n.dirty&&(this.dirtyEffectCount--,t=!0,n.run());return t}},ic=class{[en];constructor(e){this[en]=e}destroy(){this[en].destroy()}};function E(e,t){let n=t?.injector??x(gs),r=t?.manualCleanup===!0?null:n.get(vs),i,a=n.get(Zs,null,{optional:!0}),o=n.get($s);return a===null?i=lc(e,n.get(nc),o):(i=cc(a.view,o,e),r instanceof ys&&r._lView===a.view&&(r=null)),i.injector=n,r!==null&&(i.onDestroyFns=[r.onDestroy(()=>i.destroy())]),new ic(i)}var ac={...Nn,cleanupFns:void 0,zone:null,onDestroyFns:null,run(){let e=Go(!1);try{Pn(this)}finally{Go(e)}},cleanup(){if(!this.cleanupFns?.length)return;let e=tn(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],tn(e)}}},oc={...ac,consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(_n(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.scheduler.remove(this)}},sc={...ac,consumerMarkedDirty(){this.view[2]|=8192,wo(this.view),this.notifier.notify(13)},destroy(){if(_n(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.view[23]?.delete(this)}};function cc(e,t,n){let r=Object.create(sc);return r.view=e,r.zone=typeof Zone<`u`?Zone.current:null,r.notifier=t,r.fn=uc(r,n),e[23]??=new Set,e[23].add(r),r.consumerMarkedDirty(r),r}function lc(e,t,n){let r=Object.create(oc);return r.fn=uc(r,e),r.scheduler=t,r.notifier=n,r.zone=typeof Zone<`u`?Zone.current:null,r.scheduler.add(r),r.notifier.notify(12),r}function uc(e,t){return()=>{t(t=>(e.cleanupFns??=[]).push(t))}}function dc(e){return typeof e==`function`&&e[en]!==void 0}function fc(e){return dc(e)&&typeof e.set==`function`}var pc=Symbol(`InputSignalNode#UNSET`),mc={...jn,transformFn:void 0,applyValueToInputSignal(e,t){kn(e,t)}};function hc(e){return{toString:e}.toString()}var gc=(function(e){return e[e.TemplateCreateStart=0]=`TemplateCreateStart`,e[e.TemplateCreateEnd=1]=`TemplateCreateEnd`,e[e.TemplateUpdateStart=2]=`TemplateUpdateStart`,e[e.TemplateUpdateEnd=3]=`TemplateUpdateEnd`,e[e.LifecycleHookStart=4]=`LifecycleHookStart`,e[e.LifecycleHookEnd=5]=`LifecycleHookEnd`,e[e.OutputStart=6]=`OutputStart`,e[e.OutputEnd=7]=`OutputEnd`,e[e.BootstrapApplicationStart=8]=`BootstrapApplicationStart`,e[e.BootstrapApplicationEnd=9]=`BootstrapApplicationEnd`,e[e.BootstrapComponentStart=10]=`BootstrapComponentStart`,e[e.BootstrapComponentEnd=11]=`BootstrapComponentEnd`,e[e.ChangeDetectionStart=12]=`ChangeDetectionStart`,e[e.ChangeDetectionEnd=13]=`ChangeDetectionEnd`,e[e.ChangeDetectionSyncStart=14]=`ChangeDetectionSyncStart`,e[e.ChangeDetectionSyncEnd=15]=`ChangeDetectionSyncEnd`,e[e.AfterRenderHooksStart=16]=`AfterRenderHooksStart`,e[e.AfterRenderHooksEnd=17]=`AfterRenderHooksEnd`,e[e.ComponentStart=18]=`ComponentStart`,e[e.ComponentEnd=19]=`ComponentEnd`,e[e.DeferBlockStateStart=20]=`DeferBlockStateStart`,e[e.DeferBlockStateEnd=21]=`DeferBlockStateEnd`,e[e.DynamicComponentStart=22]=`DynamicComponentStart`,e[e.DynamicComponentEnd=23]=`DynamicComponentEnd`,e[e.HostBindingsUpdateStart=24]=`HostBindingsUpdateStart`,e[e.HostBindingsUpdateEnd=25]=`HostBindingsUpdateEnd`,e})(gc||{}),_c=class{previousValue;currentValue;firstChange;constructor(e,t,n){this.previousValue=e,this.currentValue=t,this.firstChange=n}isFirstChange(){return this.firstChange}};function vc(e,t,n,r){t===null?e[n]=r:t.applyValueToInputSignal(t,r)}var yc=null,bc=(()=>{yc=Sc;let e=()=>Sc;return e.ngInherit=!0,e})();function xc(){return yc}function Sc(e){return e.type.prototype.ngOnChanges&&(e.setInput=wc),Cc}function Cc(){let e=Ec(this),t=e?.current;if(t){let n=e.previous;if(n===_a)e.previous=t;else for(let e in t)n[e]=t[e];e.current=null,this.ngOnChanges(t)}}function wc(e,t,n,r,i){let a=this.declaredInputs[r],o=Ec(e)||Dc(e,{previous:_a,current:null}),s=o.current||={},c=o.previous,l=c[a];s[a]=new _c(l&&l.currentValue,n,c===_a),vc(e,t,i,n)}var Tc=`__ngSimpleChanges__`;function Ec(e){return Object.hasOwn(e,Tc)&&e[Tc]||null}function Dc(e,t){return e[Tc]=t}var Oc=[],kc=function(e,t=null,n){for(let r=0;r=r)break}else t[c]<0&&(e[17]+=65536),(s>14>16&&(e[2]&3)===t&&(e[2]+=16384,Ic(o,a)):Ic(o,a)}var Rc=-1,zc=class{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(e,t,n,r){this.factory=e,this.name=r,this.canSeeViewProviders=t,this.injectImpl=n}};function Bc(e){return!!(e.flags&8)}function Vc(e){return!!(e.flags&16)}function Hc(e,t,n){let r=0;for(;rt){o=a-1;break}}}for(;a>16}function Xc(e,t){let n=Yc(e),r=t;for(;n>0;)r=r[14],n--;return r}var Zc=!0;function Qc(e){let t=Zc;return Zc=e,t}var $c=255,el=5,tl=0,nl={};function rl(e,t,n){let r;typeof n==`string`?r=n.charCodeAt(0)||0:Object.hasOwn(n,ji)&&(r=n[ji]),r??=n[ji]=tl++;let i=r&$c,a=1<>el)]|=a}function il(e,t){let n=ol(e,t);if(n!==-1)return n;let r=t[1];r.firstCreatePass&&(e.injectorIndex=t.length,al(r.data,e),al(t,null),al(r.blueprint,null));let i=sl(e,t),a=e.injectorIndex;if(qc(i)){let e=Jc(i),n=Xc(i,t),r=n[1].data;for(let i=0;i<8;i++)t[a+i]=n[e+i]|r[e+i]}return t[a+8]=i,a}function al(e,t){e.push(0,0,0,0,0,0,0,0,t)}function ol(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function sl(e,t){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let n=0,r=null,i=t;for(;i!==null;){if(r=wl(i),r===null)return Rc;if(n++,i=i[14],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return Rc}function cl(e,t,n){rl(e,t,n)}function ll(e,t,n){if(n&8||e!==void 0)return e;Hi(t,`NodeInjector`)}function ul(e,t,n,r){if(n&8&&r===void 0&&(r=null),!(n&3)){let i=e[9],a=qi(void 0);try{return i?i.get(t,r,n&8):Ji(t,r,n&8)}finally{qi(a)}}return ll(r,t,n)}function dl(e,t,n,r=0,i){if(e!==null){if(t[2]&2048&&!(r&2)){let i=Cl(e,t,n,r,nl);if(i!==nl)return i}let i=fl(e,t,n,r,nl);if(i!==nl)return i}return ul(t,n,r,i)}function fl(e,t,n,r,i){let a=gl(n);if(typeof a==`function`){if(!Qo(t,e,r))return r&1?ll(i,n,r):ul(t,n,r,i);try{let e;if(e=a(r),e==null&&!(r&8))Hi(n);else return e}finally{rs()}}else if(typeof a==`number`){let i=null,o=ol(e,t),s=Rc,c=r&1?t[15][5]:null;for((o===-1||r&4)&&(s=o===-1?sl(e,t):t[o+8],s===Rc||!vl(r,!1)?o=-1:(i=t[1],o=Jc(s),t=Xc(s,t)));o!==-1;){let e=t[1];if(_l(a,o,e.data)){let e=pl(o,t,n,i,r,c);if(e!==nl)return e}s=t[o+8],s!==Rc&&vl(r,t[1].data[o+8]===c)&&_l(a,o,t)?(i=e,o=Jc(s),t=Xc(s,t)):o=-1}}return i}function pl(e,t,n,r,i,a){let o=t[1],s=o.data[e+8],c=ml(s,o,n,r==null?ro(s)&&Zc:r!=o&&!!(s.type&3),i&1&&a===s);return c===null?nl:hl(t,o,c,s,i)}function ml(e,t,n,r,i){let a=e.providerIndexes,o=t.data,s=a&1048575,c=e.directiveStart,l=e.directiveEnd,u=a>>20,d=r?s:s+u,f=i?s+u:l;for(let e=d;e=c&&t.type===n)return e}if(i){let e=o[c];if(e&&ao(e)&&e.type===n)return c}return null}function hl(e,t,n,r,i){let a=e[n],o=t.data;if(a instanceof zc){let s=a;if(s.resolving)throw Vi(``);let c=Qc(s.canSeeViewProviders);s.resolving=!0,o[n].type||o[n];let l=s.injectImpl?qi(s.injectImpl):null;Qo(e,r,0);try{a=e[n]=s.factory(void 0,i,o,e,r),t.firstCreatePass&&n>=r.directiveStart&&Ac(n,o[n],t)}finally{l!==null&&qi(l),Qc(c),s.resolving=!1,rs()}}return a}function gl(e){if(typeof e==`string`)return e.charCodeAt(0)||0;let t=Object.hasOwn(e,ji)?e[ji]:void 0;return typeof t==`number`?t>=0?t&$c:bl:t}function _l(e,t,n){let r=1<>el)]&r)}function vl(e,t){return!(e&2)&&!(e&1&&t)}var yl=class{_tNode;_lView;constructor(e,t){this._tNode=e,this._lView=t}get(e,t,n){return dl(this._tNode,this._lView,e,ta(n),t)}};function bl(){return new yl(Ro(),Io())}function xl(e){return hc(()=>{let t=e.prototype.constructor,n=t[Ai]||Sl(t),r=Object.prototype,i=Object.getPrototypeOf(e.prototype).constructor;for(;i&&i!==r;){let e=i[Ai]||Sl(i);if(e&&e!==n)return e;i=Object.getPrototypeOf(i)}return e=>new e})}function Sl(e){return _i(e)?()=>{let t=Sl(gi(e));return t&&t()}:aa(e)}function Cl(e,t,n,r,i){let a=e,o=t;for(;a!==null&&o!==null&&o[2]&2048&&!oo(o);){let e=fl(a,o,n,r|2,nl);if(e!==nl)return e;r&=-5;let t=a.parent;if(!t){let e=o[20];if(e){let t=e.get(n,nl,r);if(t!==nl)return t}t=wl(o),o=o[14]}a=t}return i}function wl(e){let t=e[1],n=t.type;return n===2?t.declTNode:n===1?e[5]:null}function Tl(e){return{token:e.token,providedIn:e.autoProvided===!1?null:`root`,factory:e.factory,value:void 0}}function El(){return Dl(Ro(),Io())}function Dl(e,t){return new Ol(po(e,t))}var Ol=(()=>{class e{nativeElement;constructor(e){this.nativeElement=e}static __NG_ELEMENT_ID__=El}return e})();function kl(e){return e instanceof Ol?e.nativeElement:e}function Al(){return this._results[Symbol.iterator]()}var jl=class{_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 Vr}constructor(e=!1){this._emitDistinctChangesOnly=e}get(e){return this._results[e]}map(e){return this._results.map(e)}filter(e){return this._results.filter(e)}find(e){return this._results.find(e)}reduce(e,t){return this._results.reduce(e,t)}forEach(e){this._results.forEach(e)}some(e){return this._results.some(e)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(e,t){this.dirty=!1;let n=sa(e);(this._changesDetected=!oa(this._results,n,t))&&(this._results=n,this.length=n.length,this.last=n[this.length-1],this.first=n[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.next(this)}onDirty(e){this._onDirty=e}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}[Symbol.iterator]=Al};function Ml(e){return(e.flags&128)==128}var Nl=(function(e){return e[e.OnPush=0]=`OnPush`,e[e.Eager=1]=`Eager`,e[e.Default=1]=`Default`,e})(Nl||{}),Pl=new Map,Fl=0;function Il(){return Fl++}function Ll(e){Pl.set(e[19],e)}function Rl(e){Pl.delete(e[19])}var zl=`__ngContext__`;function Bl(e,t){eo(t)?(e[zl]=t[19],Ll(t)):e[zl]=t}function Vl(e){return Ul(e[12])}function Hl(e){return Ul(e[4])}function Ul(e){for(;e!==null&&!to(e);)e=e[4];return e}var Wl=void 0;function Gl(e){Wl=e}function Kl(){if(Wl!==void 0)return Wl;if(typeof document<`u`)return document;throw new ui(210,!1)}var ql=!1,Jl=new Ti(``,{factory:()=>ql}),Yl=new WeakMap;function Xl(e,t){if(typeof e!=`object`||!e)return;let n=Yl.get(e);n||(n=new WeakSet,Yl.set(e,n)),n.add(t)}function Zl(e){return(e.flags&32)==32}var Ql=()=>null;function $l(e,t,n=!1){return Ql(e,t,n)}function eu(e,t){let n=e.contentQueries;if(n!==null){let r=tn(null);try{for(let r=0;r|^->||--!>|)/g,fu=`​$1​`;function pu(e){return e.replace(uu,e=>e.replace(du,fu))}function mu(e,t){return e.createText(t)}function hu(e,t,n){e.setValue(t,n)}function gu(e,t){return e.createComment(pu(t))}function _u(e,t,n){return e.createElement(t,n)}function vu(e,t,n,r,i){e.insertBefore(t,n,r,i)}function yu(e,t,n){e.appendChild(t,n)}function bu(e,t,n,r,i){r===null?yu(e,t,n):vu(e,t,n,r,i)}function xu(e,t,n,r){e.removeChild(null,t,n,r)}function ste(e,t,n){e.setAttribute(t,`style`,n)}function cte(e,t,n){n===``?e.removeAttribute(t,`class`):e.setAttribute(t,`class`,n)}function Su(e,t,n){let{mergedAttrs:r,classes:i,styles:a}=n;r!==null&&Hc(e,t,r),i!==null&&cte(e,t,i),a!==null&&ste(e,t,a)}function Cu(e){let t=lte();return t?t.sanitize(co.URL,e)||``:ou(e,`URL`)?au(e):lu(Li(e))}function lte(){let e=Io();return e&&e[10].sanitizer}function wu(e){return e.ownerDocument.defaultView}function Tu(e){return e.ownerDocument}function ute(e,t,n){let r=e.length;for(;;){let i=e.indexOf(t,n);if(i===-1)return i;if(i===0||e.charCodeAt(i-1)<=32){let n=t.length;if(i+n===r||e.charCodeAt(i+n)<=32)return i}n=i+1}}var Eu=`ng-template`;function dte(e,t,n,r){let i=0;if(r){for(;i-1){let e;for(;++ia?``:i[u+1].toLowerCase(),r&2&&l!==e){if(Ou(r))return!1;o=!0}}}}}return Ou(r)||o}function Ou(e){return!(e&1)}function mte(e,t,n,r){if(t===null)return-1;let i=0;if(r||!n){let n=!1;for(;i-1)for(n++;n0?`="`+t+`"`:``)+`]`}else r&8?i+=`.`+o:r&4&&(i+=` `+o)}else i!==``&&!Ou(o)&&(t+=Au(a,i),i=``),r=o,a||=!Ou(r);n++}return i!==``&&(t+=Au(a,i)),t}function bte(e){return e.map(yte).join(`,`)}function xte(e){let t=[],n=[],r=1,i=2;for(;r!1});function Pu(e){if(!e)return 0;let t=e.toLowerCase().indexOf(`ms`)>-1?1:1e3;return parseFloat(e)*t}function Fu(e,t){return e.getPropertyValue(t).split(`,`).map(e=>e.trim())}function wte(e){let t=Fu(e,`transition-property`),n=Fu(e,`transition-duration`),r=Fu(e,`transition-delay`),i={propertyName:``,duration:0,animationName:void 0};for(let e=0;ei.duration&&(i.propertyName=t[e],i.duration=a)}return i}function Tte(e){let t=Fu(e,`animation-name`),n=Fu(e,`animation-delay`),r=Fu(e,`animation-duration`),i=Fu(e,`animation-iteration-count`),a={animationName:``,propertyName:void 0,duration:0};for(let e=0;ea.duration&&s!==`infinite`&&(a.animationName=t[e],a.duration=o)}return a}function Iu(e,t){return e!==void 0&&e.duration>t.duration}function Lu(e){return(e.animationName!=null||e.propertyName!=null)&&e.duration>0}function Ru(e){let t=e.effect?.getTiming();if(t===void 0)return;let n=typeof t.duration==`number`?t.duration:0,r=(t.delay??0)+n,i=e.playbackRate;return i!==void 0&&i!==0&&i!==1&&(r/=Math.abs(i)),r}function Ete(e,t){let n=getComputedStyle(e),r=Tte(n),i=wte(n),a=r.duration>i.duration?r:i;Iu(t.get(e),a)||Lu(a)&&t.set(e,a)}function Dte(e,t,n){if(!n)return;let r=e.getAnimations();return r.length===0?Ete(e,t):Ote(e,t,r)}function Ote(e,t,n){let r={animationName:void 0,propertyName:void 0,duration:0};for(let e of n){if(e.effect?.getTiming()?.iterations===1/0)continue;let t=Ru(e)??0,n,i;e.animationName?i=e.animationName:n=e.transitionProperty,t>=r.duration&&(r={animationName:i,propertyName:n,duration:t})}Iu(t.get(e),r)||Lu(r)&&t.set(e,r)}var zu=new Set,kte=!1,Ate=1,Bu=typeof document<`u`&&typeof document?.documentElement?.getAnimations==`function`;function jte(e){return e[9].get(Cte,kte)}function Mte(e,t,n){let r=Hu.get(e);if(r){for(let e of t)r.classList.push(e);for(let e of n)r.cleanupFns.push(e)}else Hu.set(e,{classList:t,cleanupFns:n})}function Vu(e){let t=Hu.get(e);if(t){for(let e of t.cleanupFns)e();Hu.delete(e)}Uu.delete(e)}var Hu=new WeakMap,Uu=new WeakMap,Wu=new WeakMap;function Gu(e){return e?e[14]??e:null}var Ku=new WeakSet;function Nte(e,t,n){let r=Wu.get(e);if(!r||r.length===0)return;let i=t.parentNode,a=t.previousSibling,o=Gu(n);for(let e=r.length-1;e>=0;e--){let{el:n,declarationView:s}=r[e],c=n.parentNode;n===t?(r.splice(e,1),Ku.add(n),n.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}}))):(a&&n===a||c&&i&&c!==i&&(o===null||s===null||o===s))&&(r.splice(e,1),n.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}})),n.parentNode?.removeChild(n))}}function Pte(e,t,n){let r=Gu(n),i=Wu.get(e);i?i.some(e=>e.el===t)||i.push({el:t,declarationView:r}):Wu.set(e,[{el:t,declarationView:r}])}function qu(e){let t=e[26]??={};return t.enter??=new Map}function Fte(e){let t=typeof e==`function`?e():e,n=Array.isArray(t)?t:null;return typeof t==`string`&&(n=t.trim().split(/\s+/).filter(e=>e)),n}function Ju(e){return e.composedPath?e.composedPath()[0]:e.target}function Yu(e,t){let n=Uu.get(t);if(n===void 0)return!0;if(t!==Ju(e))return!1;let r=e.animation;if(r){let e=Ru(r);if(e!==void 0&&e+Ate{class e{impl=null;execute(){this.impl?.execute()}static ɵprov=vi({token:e,providedIn:`root`,factory:()=>new e})}return e})(),td=[0,1,2,3],nd=(()=>{class e{ngZone=x(As);scheduler=x($s);errorHandler=x(Hs,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){x(Zu,{optional:!0})}execute(){let e=this.sequences.size>0;e&&kc(gc.AfterRenderHooksStart),this.executing=!0;for(let e of td)for(let t of this.sequences)if(!t.erroredOrDestroyed&&t.hooks[e])try{t.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>{let n=t.hooks[e];return n(t.pipelinedValue)},t.snapshot))}catch(e){t.erroredOrDestroyed=!0,this.errorHandler?.handleError(e)}this.executing=!1;for(let e of this.sequences)e.afterRun(),e.once&&(this.sequences.delete(e),e.destroy());for(let e of this.deferredRegistrations)this.sequences.add(e);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),e&&kc(gc.AfterRenderHooksEnd)}register(e){let{view:t}=e;t===void 0?this.executing?this.deferredRegistrations.add(e):this.addSequence(e):((t[25]??=[]).push(e),wo(t),t[2]|=8192)}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,t){return t?t.run(Xu.AFTER_NEXT_RENDER,e):e()}static ɵprov=vi({token:e,providedIn:`root`,factory:()=>new e})}return e})(),rd=class{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(e,t,n,r,i,a=null){this.impl=e,this.hooks=t,this.view=n,this.once=r,this.snapshot=a,this.unregisterOnDestroy=i?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();let e=this.view?.[25];e&&(this.view[25]=e.filter(e=>e!==this))}};function id(e,t){let n=t?.injector??x(gs);return $u(`NgAfterNextRender`),Rte(e,n,t,!0)}function Lte(e){return e instanceof Function?[void 0,void 0,e,void 0]:[e.earlyRead,e.write,e.mixedReadWrite,e.read]}function Rte(e,t,n,r){let i=t.get(ed);i.impl??=t.get(nd);let a=t.get(Zu,null,{optional:!0}),o=n?.manualCleanup===!0?null:t.get(vs),s=t.get(Zs,null,{optional:!0}),c=new rd(i.impl,Lte(e),s?.view,r,o,a?.snapshot(null));return i.impl.register(c),c}var ad=new Ti(``,{factory:()=>{let e=x(za),t=new Set;return e.onDestroy(()=>t.clear()),{queue:t,isScheduled:!1,scheduler:null,injector:e}}});function od(e,t,n){let r=e.get(ad);if(Array.isArray(t))for(let e of t)r.queue.add(e),n?.detachedLeaveAnimationFns?.push(e);else r.queue.add(t),n?.detachedLeaveAnimationFns?.push(t);r.scheduler&&r.scheduler(e)}function zte(e,t){let n=e.get(ad);if(Array.isArray(t))for(let e of t)n.queue.delete(e);else n.queue.delete(t)}function Bte(e,t){let n=e.get(ad);if(t.detachedLeaveAnimationFns){for(let e of t.detachedLeaveAnimationFns)n.queue.delete(e);t.detachedLeaveAnimationFns=void 0}}function Vte(e){let t=e.get(ad);t.isScheduled||=(id(()=>{t.isScheduled=!1;for(let e of t.queue)e();t.queue.clear()},{injector:t.injector}),!0)}function Hte(e){let t=e.get(ad);t.scheduler=Vte,t.scheduler(e)}function sd(e,t){for(let[n,r]of t)od(e,r.animateFns)}function cd(e,t,n,r){let i=e?.[26]?.enter;t!==null&&i&&i.has(n.index)&&sd(r,i)}function ld(e,t,n,r){try{n.get(ba)}catch{return r(!1)}let i=e?.[26];i?.enter?.has(t.index)&&zte(n,i.enter.get(t.index).animateFns);let a=Ute(e,t,i);if(a.size===0){let n=!1;if(e){let r=[];ud(e,t,r),n=r.length>0}if(!n)return r(!1)}e&&zu.add(e[19]),od(n,()=>Wte(e,t,i||void 0,a,r),i||void 0)}function Ute(e,t,n){let r=new Map,i=n?.leave;if(i&&i.has(t.index)&&r.set(t.index,i.get(t.index)),e&&i)for(let[n,a]of i){if(r.has(n))continue;let i=e[1].data[n].parent;for(;i;){if(i===t){r.set(n,a);break}i=i.parent}}return r}function Wte(e,t,n,r,i){let a=[];if(n&&n.leave)for(let[e]of r){if(!n.leave.has(e))continue;let t=n.leave.get(e);for(let e of t.animateFns){let{promise:t}=e();a.push(t)}n.detachedLeaveAnimationFns=void 0}if(e&&ud(e,t,a),a.length>0){let t=n||e?.[26];if(t){let n=t.running;n&&a.push(n),t.running=Promise.allSettled(a),Kte(e,t.running,i)}else Promise.allSettled(a).then(()=>{e&&zu.delete(e[19]),i(!0)})}else e&&zu.delete(e[19]),i(!1)}function ud(e,t,n){if(t.type&12){let r=e[t.index];if(to(r))for(let e=10;e{e[26]?.running===t&&(e[26].running=void 0,zu.delete(e[19])),n(!0)})}function dd(e,t,n,r,i,a,o,s){if(i!=null){let c,l=!1;to(i)?c=i:eo(i)&&(l=!0,i=i[0]);let u=uo(i);e===0&&r!==null?(cd(s,r,a,n),o==null?yu(t,r,u):vu(t,r,u,o||null,!0)):e===1&&r!==null?(cd(s,r,a,n),vu(t,r,u,o||null,!0),Nte(a,u,s)):e===2?(s?.[26]?.leave?.has(a.index)&&Pte(a,u,s),Ku.delete(u),ld(s,a,n,e=>{if(Ku.has(u)){Ku.delete(u);return}xu(t,u,l,e)})):e===3&&(Ku.delete(u),ld(s,a,n,()=>{t.destroyNode(u)})),c!=null&&Ed(t,e,n,c,a,r,o)}}function qte(e,t){fd(e,t),t[0]=null,t[5]=null}function Jte(e,t,n,r,i,a){r[0]=i,r[5]=t,Cd(e,r,n,1,i,a)}function fd(e,t){t[10].changeDetectionScheduler?.notify(9),Cd(e,t,t[11],2,null,null)}function Yte(e){let t=e[12];if(!t)return hd(e[1],e);for(;t;){let n=null;if(eo(t))n=t[12];else{let e=t[10];e&&(n=e)}if(!n){for(;t&&!t[4]&&t!==e;)eo(t)&&hd(t[1],t),t=t[3];t===null&&(t=e),eo(t)&&hd(t[1],t),n=t&&t[4]}t=n}}function pd(e,t){let n=e[9],r=n.indexOf(t);n.splice(r,1)}function md(e,t){if(so(t))return;let n=t[11];n.destroyNode&&Cd(e,t,n,3,null,null),Yte(t)}function hd(e,t){if(so(t))return;let n=tn(null);try{t[2]&=-129,t[2]|=256,t[24]&&_n(t[24]),Zte(e,t),Xte(e,t),t[1].type===1&&t[11].destroy();let n=t[16];if(n!==null&&to(t[3])){n!==t[3]&&pd(n,t);let r=t[18];r!==null&&r.detachView(e)}Rl(t)}finally{tn(n)}}function Xte(e,t){let n=e.cleanup,r=t[7];if(n!==null)for(let e=0;e=0?r[t]():r[-t].unsubscribe(),e+=2}else{let t=r[n[e+1]];n[e].call(t)}r!==null&&(t[7]=null);let i=t[21];if(i!==null){t[21]=null;for(let e=0;e27&&Id(e,t,27,!1),kc(o?gc.TemplateUpdateStart:gc.TemplateCreateStart,i,n),n(r,i)}finally{os(a),kc(o?gc.TemplateUpdateEnd:gc.TemplateCreateEnd,i,n)}}function Bd(e,t,n){qd(e,t,n),(n.flags&64)==64&&Jd(e,t,n)}function Vd(e,t,n=po){let r=t.localNames;if(r!==null){let i=t.index+1;for(let a=0;a=s&&i<=c){let o=t.data[i],s=r[e+1];Rd(o,n[i],s,a),l=!0}else if(i>c)break}}return o!==null&&Object.hasOwn(r.inputs,i)&&(Rd(r,n[o],i,a),l=!0),l}function of(e,t){let n=_o(t,e),r=n[1];sf(r,n);let i=n[0];i!==null&&n[6]===null&&(n[6]=$l(i,n[9])),kc(gc.ComponentStart);try{cf(r,n,n[8])}finally{kc(gc.ComponentEnd,n[8])}}function sf(e,t){for(let n=t.length;n{wo(e.lView)},consumerOnSignalRead(){this.lView[24]=this}};function bf(e){let t=e[24]??Object.create(xf);return t.lView=e,t}var xf={...rn,consumerIsAlwaysLive:!0,kind:`template`,consumerMarkedDirty:e=>{let t=Eo(e.lView);for(;t&&!Sf(t[1]);)t=Eo(t);t&&xo(t)},consumerOnSignalRead(){this.lView[24]=this}};function Sf(e){return e.type!==2}function Cf(e){if(e[23]===null)return;let t=!0;for(;t;){let n=!1;for(let t of e[23])if(t.dirty&&(n=!0,t.zone===null||Zone.current===t.zone?t.run():t.zone.run(()=>t.run()),e[23]===null))return;t=n&&!!(e[2]&8192)}}var wf=100;function Tf(e,t=0){let n=e[10].rendererFactory;n.begin?.();try{Ef(e,t)}finally{n.end?.()}}function Ef(e,t){let n=Wo();try{Go(!0),Mf(e,t);let n=0;for(;So(e);){if(n===wf)throw new ui(103,!1);n++,Mf(e,1)}}finally{Go(n)}}function Df(e,t,n,r){if(so(t))return;let i=t[2];$o(t);let a=!0,o=null,s=null;Sf(e)?(s=gf(t),o=fn(s)):nn()===null?(a=!1,s=bf(t),o=fn(s)):t[24]&&=(_n(t[24]),null);try{bo(t),$ee(e.bindingStartIndex),n!==null&&zd(e,t,n,2,r);let a=(i&3)==3;if(a){let n=e.preOrderCheckHooks;n!==null&&Mc(t,n,null)}else{let n=e.preOrderHooks;n!==null&&Nc(t,n,0,null),Pc(t,0)}if(kf(t),Cf(t),Of(t,0),e.contentQueries!==null&&eu(e,t),a){let n=e.contentCheckHooks;n!==null&&Mc(t,n)}else{let n=e.contentHooks;n!==null&&Nc(t,n,1),Pc(t,1)}Pf(e,t);let o=e.components;o!==null&&Nf(t,o,0);let s=e.viewQuery;if(s!==null&&tu(2,s,r),a){let n=e.viewCheckHooks;n!==null&&Mc(t,n)}else{let n=e.viewHooks;n!==null&&Nc(t,n,2),Pc(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[22]){for(let e of t[22])e();t[22]=null}mf(t),t[2]&=-73}catch(e){throw wo(t),e}finally{s!==null&&(mn(s,o),a&&vf(s)),is()}}function Of(e,t){for(let n=Vl(e);n!==null;n=Hl(n))for(let e=10;e0&&(e[n-1][4]=r[4]);let a=ua(e,10+t);qte(r[1],r);let o=a[18];o!==null&&o.detachView(a[1]),r[3]=null,r[4]=null,r[2]&=-129}return r}function Vf(e,t,n,r){let i=10+r,a=n.length;r>0&&(n[i-1][4]=t),r-1&&(Bf(e,n),ua(t,n))}this._attachedToViewContainer=!1}md(this._lView[1],this._lView)}onDestroy(e){To(this._lView,e)}markForCheck(){Ff(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[2]&=-129}reattach(){Co(this._lView),this._lView[2]|=128}detectChanges(){this._lView[2]|=1024,Tf(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new ui(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let e=oo(this._lView),t=this._lView[16];t!==null&&!e&&pd(t,this._lView),fd(this._lView[1],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new ui(902,!1);this._appRef=e;let t=oo(this._lView),n=this._lView[16];n!==null&&!t&&Hf(n,this._lView),Co(this._lView)}},Wf=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=Gf;constructor(e,t,n){this._declarationLView=e,this._declarationTContainer=t,this.elementRef=n}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,t){return this.createEmbeddedViewImpl(e,t)}createEmbeddedViewImpl(e,t,n){return new Uf(uf(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:t,dehydratedView:n}))}}return e})();function Gf(){return Kf(Ro(),Io())}function Kf(e,t){return e.type&4?new Wf(t,e,Dl(e,t)):null}function qf(e,t,n,r,i){let a=e.data[t];if(a===null)a=Jf(e,t,n,r,i),ete()&&(a.flags|=32);else if(a.type&64){a.type=n,a.value=r,a.attrs=i;let e=Qee();a.injectorIndex=e===null?-1:e.injectorIndex}return Bo(a,!0),a}function Jf(e,t,n,r,i){let a=zo(),o=Vo(),s=o?a:a&&a.parent,c=e.data[t]=Xf(e,s,n,t,r,i);return Yf(e,c,a,o),c}function Yf(e,t,n,r){e.firstChild===null&&(e.firstChild=t),n!==null&&(r?n.child==null&&t.parent!==null&&(n.child=t):n.next===null&&(n.next=t,t.prev=n))}function Xf(e,t,n,r,i,a){let o=t?t.injectorIndex:-1,s=0;return No()&&(s|=128),{type:n,index:r,insertBeforeIndex:null,injectorIndex:o,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:s,providerIndexes:0,value:i,namespace:us(),attrs:a,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:t,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function Zf(e){let t=e[6]??[],n=e[3][11],r=[];for(let e of t)e.data.di===void 0?Qf(e,n):r.push(e);e[6]=r}function Qf(e,t){let n=0,r=e.firstChild;if(r){let i=e.data.r;for(;nnull,ep=()=>null;function tp(e,t){return $f(e,t)}function np(e,t,n){return ep(e,t,n)}var rp=class{},ip=class{},ap=class{destroyNode=null;static __NG_ELEMENT_ID__=()=>op()};function op(){let e=Io(),t=_o(Ro().index,e);return(eo(t)?t:e)[11]}var sp=(()=>{class e{static ɵprov=vi({token:e,providedIn:`root`,factory:()=>null})}return e})();function cp(e){return e.debugInfo?.className||e.type.name||null}var lp={},up=class{injector;parentInjector;constructor(e,t){this.injector=e,this.parentInjector=t}get(e,t,n){let r=this.injector.get(e,lp,n);return r!==lp||t===lp?r:this.parentInjector.get(e,t,n)}};function dp(e,t,n){return e[t]=n}function fp(e,t){return e[t]}function pp(e,t,n){if(n===ju)return!1;let r=e[t];return!Object.is(r,n)&&(e[t]=n,!0)}function mp(e,t,n,r){let i=pp(e,t,n);return pp(e,t+1,r)||i}function hp(e,t,n,r,i){let a=mp(e,t,n,r);return pp(e,t+2,i)||a}function gp(e,t,n,r,i,a){let o=mp(e,t,n,r);return mp(e,t+2,i,a)||o}function _p(e,t,n){return function r(i){let a=r.__ngNativeEl__;a!==void 0&&Xl(i,a),Ff(ro(e)?_o(e.index,t):t,5);let o=t[8],s=vp(t,o,n,i),c=r.__ngNextListenerFn__;for(;c;)s=vp(t,o,c,i)&&s,c=c.__ngNextListenerFn__;return s}}function vp(e,t,n,r){let i=tn(null);try{return kc(gc.OutputStart,t,n),n(r)!==!1}catch(t){return nf(e,t),!1}finally{kc(gc.OutputEnd,t,n),tn(i)}}function yp(e,t,n,r,i,a,o,s){let c=io(e),l=!1,u=null;if(!r&&c&&(u=xp(t,n,a,e.index)),u!==null){let e=u.__ngLastListenerFn__||u;e.__ngNextListenerFn__=o,u.__ngLastListenerFn__=o,l=!0}else{let o=po(e,n),c=r?r(o):o;r||(s.__ngNativeEl__=o);let l=i.listen(c,a,s);bp(a)||Sp(r?t=>r(uo(t[e.index])):e.index,t,n,a,s,l,!1)}return l}function bp(e){return e.startsWith(`animation`)||e.startsWith(`transition`)}function xp(e,t,n,r){let i=e.cleanup;if(i!=null)for(let e=0;er?n[r]:null}typeof a==`string`&&(e+=2)}return null}function Sp(e,t,n,r,i,a,o){let s=t.firstCreatePass?Oo(t):null,c=Do(n),l=c.length;c.push(i,a),s&&s.push(r,e,l,(l+1)*(o?-1:1))}function Cp(e,t,n,r,i){let a=null,o=null,s=null,c=!1,l=e.directiveToIndex.get(n.type);if(typeof l==`number`?a=l:[a,o,s]=l,o!==null&&s!==null&&e.hostDirectiveOutputs&&Object.hasOwn(e.hostDirectiveOutputs,r)){let n=e.hostDirectiveOutputs[r];for(let a=0;a=o&&l<=s)c=!0,wp(e,t,l,n[a+1],r,i);else if(l>s)break}}return Object.hasOwn(n.outputs,r)&&(c=!0,wp(e,t,a,r,r,i)),c}function wp(e,t,n,r,i,a){let o=t[n],s=t[1],c=o[s.data[n].outputs[r]].subscribe(a);Sp(e.index,s,t,i,a,c,!0)}function Tp(){Ep()}function Ep(){let e=Io(),t=Lo(),n=Ro();if(t.firstCreatePass&&Mp(t,n),n.controlDirectiveIndex===-1)return;$u(`NgSignalForms`);let r=e[n.controlDirectiveIndex];t.data[n.controlDirectiveIndex].controlDef.create(r,new kp(e,t,n))}function Dp(){Op()}function Op(){let e=Io(),t=Lo(),n=ss();if(n.controlDirectiveIndex===-1)return;let r=t.data[n.controlDirectiveIndex].controlDef,i=e[n.controlDirectiveIndex];r.update(i,new kp(e,t,n))}var kp=class{lView;tView;tNode;hasPassThrough;constructor(e,t,n){this.lView=e,this.tView=t,this.tNode=n,this.hasPassThrough=!!(n.flags&4096)}get customControl(){return this.tNode.customControlIndex===-1?void 0:this.lView[this.tNode.customControlIndex]}get nativeElement(){return po(this.tNode,this.lView)}get descriptor(){return`<${this.tNode.value}>`}listenToCustomControlOutput(e,t){let n=this.tView.data[this.tNode.customControlIndex];Cp(this.tNode,this.lView,n,e,_p(this.tNode,this.lView,t))}listenToCustomControlModel(e){let t=this.tNode.flags&1024?`valueChange`:`checkedChange`,n=this.tView.data[this.tNode.customControlIndex];Cp(this.tNode,this.lView,n,t,_p(this.tNode,this.lView,e))}listenToDom(e,t){yp(this.tNode,this.tView,this.lView,void 0,this.lView[11],e,t,_p(this.tNode,this.lView,t))}setInputOnDirectives(e,t,n){let r=this.tNode.inputs?.[e],i=this.tNode.hostDirectiveInputs?.[e];if(!r&&!i)return!1;let a=!1;if(r)for(let i of r){if(i===this.tNode.controlDirectiveIndex)continue;let r=this.lView[i],o=this.tView.data[i];(!n||n(jp(r,o,e)))&&(Rd(o,r,e,t),a=!0)}if(i)for(let r=0;r0;){let e=n.shift();if(typeof e!=`function`){for(let n in e.inputs)t[e.inputs[n]]=!0;let r=Ap(e.directive);r!==null&&n.push(...r);continue}for(let r of e()){if(typeof r==`function`)continue;if(r.inputs)for(let e=0;e1){t.flags|=4096;return}Np(e,t)}function Np(e,t){for(let n=t.directiveStart;n{let r=t.hostDirectiveInputs[e],i=t.hostDirectiveOutputs[e+`Change`];if(!r||!i)return!1;for(let e=0;e=i&&a<=o)return t.flags|=n,t.customControlIndex=r,!0}}return!1};if(e(`value`,1024)||e(`checked`,2048))return}}function Pp(e,t){return Fp(e,t)&&Ip(e,t+`Change`)}function Fp(e,t){return t in e.inputs}function Ip(e,t){return t in e.outputs}var Lp=Symbol(`BINDING`),Rp=new Ti(``);function zp(e,t,n){let r=n?e.styles:null,i=n?e.classes:null,a=0;if(t!==null)for(let e=0;e0&&(n.directiveToIndex=new Map);for(let c=0;c0;){let n=e[--t];if(typeof n==`number`&&n<0)return n}return 0}function $p(e,t,n){if(n){if(t.exportAs)for(let r=0;r{let[n,r,i]=e[t],a={propName:n,templateName:t,isSignal:(r&Ld.SignalBased)!==0};return i&&(a.transform=i),a})}function sm(e){return Object.keys(e).map(t=>({propName:e[t],templateName:t}))}function cm(e,t,n){let r=t instanceof za?t:t?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new up(n,r):n}function lm(e){let t=e.get(ip,null);if(t===null)throw new ui(407,!1);return{rendererFactory:t,sanitizer:e.get(sp,null),changeDetectionScheduler:e.get($s,null),ngReflect:!1,tracingService:e.get(Zu,null,{optional:!0})}}function um(e,t,n){let r=fm(e);return _u(t,r,r===`svg`?`svg`:r===`math`?lo:n)}function dm(e){if((e&&`localName`in e&&typeof e.localName==`string`?e.localName:e?.tagName)?.toLowerCase()===`script`)throw new ui(905,!1)}function fm(e){return(e.selectors[0][0]||`div`).toLowerCase()}var pm=class{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=om(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=sm(this.componentDef.outputs),this.cachedOutputs}constructor(e,t){this.componentDef=e,this.ngModule=t,this.componentType=e.type,this.selector=bte(e.selectors),this.ngContentSelectors=e.ngContentSelectors??[],this.isBoundToModule=!!t}create(e,t,n,r,i,a,o){kc(gc.DynamicComponentStart);let s=tn(null);try{let s=this.componentDef,c=cm(s,r||this.ngModule,e),l=lm(c),u=l.tracingService;return u&&u.componentCreate?u.componentCreate(cp(s),()=>this.createComponentRef(l,c,t,n,i,a,o)):this.createComponentRef(l,c,t,n,i,a,o)}finally{tn(s)}}createComponentRef(e,t,n,r,i,a,o){let s=this.componentDef,c=mm(r,s,a,i),l=e.rendererFactory.createRenderer(null,s),u=r?Hd(l,r,s.encapsulation,t):um(s,l,o??null);dm(u);let d=t.get(Rp,null),f=hm(u,()=>t.get(_s,null)??Kl());d&&d.addHost(f);let p=a?.some(_m)||i?.some(e=>typeof e!=`function`&&e.bindings.some(_m)),m=jd(null,c,null,512|Nd(s),null,null,e,l,t,null,$l(u,t,!0));d&&im&&f instanceof ShadowRoot&&To(m,()=>{d.removeHost(f)}),m[27]=u,$o(m);let ee=null;try{let e=tm(27,m,2,`#host`,()=>c.directiveRegistry,!0,0);Su(l,u,e),Bl(u,m),Bd(c,m,e),nu(c,e,m),nm(c,e),n!==void 0&&ym(e,this.ngContentSelectors,n),ee=_o(e.index,m),m[8]=ee[8],cf(c,m,null)}catch(e){throw ee!==null&&Rl(ee),Rl(m),e}finally{kc(gc.DynamicComponentEnd),is()}return new vm(this.componentType,m,!!p)}};function mm(e,t,n,r){let i=e?[`ng-version`,`22.1.7`]:xte(t.selectors[0]),a=null,o=null,s=0;if(n)for(let e of n)s+=e[Lp].requiredVars,e.create&&(e.targetIdx=0,(a??=[]).push(e)),e.update&&(e.targetIdx=0,(o??=[]).push(e));if(r)for(let e=0;e{if(n&1&&e)for(let t of e)t.create();if(n&2&&t)for(let e of t)e.update()}}function _m(e){let t=e[Lp].kind;return t===`input`||t===`twoWay`}var vm=class extends rp{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(e,t,n){super(),this._rootLView=t,this._hasInputBindings=n,this._tNode=mo(t[1],27),this.location=Dl(this._tNode,t),this.instance=_o(this._tNode.index,t)[8],this.hostView=this.changeDetectorRef=new Uf(t,void 0),this.componentType=e}setInput(e,t){this._hasInputBindings;let n=this._tNode;if(this.previousInputValues??=new Map,this.previousInputValues.has(e)&&Object.is(this.previousInputValues.get(e),t))return;let r=this._rootLView;rf(n,r[1],r,e,t),this.previousInputValues.set(e,t),Ff(_o(n.index,r),1)}get injector(){return new yl(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(e){this.hostView.onDestroy(e)}};function ym(e,t,n){let r=e.projection=[];for(let e=0;e{class e{static __NG_ELEMENT_ID__=xm}return e})();function xm(){return Tm(Ro(),Io())}var Sm=class e extends bm{_lContainer;_hostTNode;_hostLView;constructor(e,t,n){super(),this._lContainer=e,this._hostTNode=t,this._hostLView=n}get element(){return Dl(this._hostTNode,this._hostLView)}get injector(){return new yl(this._hostTNode,this._hostLView)}get parentInjector(){let e=sl(this._hostTNode,this._hostLView);if(qc(e)){let t=Xc(e,this._hostLView),n=Jc(e),r=t[1].data[n+8];return new yl(r,t)}return new yl(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(e){let t=Cm(this._lContainer);return t!==null&&t[e]||null}get length(){return this._lContainer.length-10}createEmbeddedView(e,t,n){let r,i;typeof n==`number`?r=n:n!=null&&(r=n.index,i=n.injector);let a=tp(this._lContainer,e.ssrId),o=e.createEmbeddedViewImpl(t||{},i,a);return this.insertImpl(o,r,df(this._hostTNode,a)),o}createComponent(e,t,n,r,i,a,o){let s,c=t||{};s=c.index,n=c.injector,r=c.projectableNodes,i=c.environmentInjector||c.ngModuleRef,a=c.directives,o=c.bindings;let l=new pm(Ni(e)),u=n||this.parentInjector;if(!i&&l.ngModule==null){let e=this.parentInjector.get(za,null);e&&(i=e)}let d=Ni(l.componentType??{}),f=tp(this._lContainer,d?.id??null),p=f?.firstChild??null,m=l.create(u,r,p,i,a,o,this._getHostElementNamespace());return this.insertImpl(m.hostView,s,df(this._hostTNode,f)),m}_getHostElementNamespace(){if(this._hostTNode.type&2){let e=this._hostTNode.parent??this._hostLView[5];return e!==null&&e.type&2&&typeof e.value==`string`&&e.value.toLowerCase()===`foreignobject`?null:e?.namespace??null}return this._hostTNode.namespace}insert(e,t){return this.insertImpl(e,t,!0)}insertImpl(t,n,r){let i=t._lView;if(Kee(i)){let n=this.indexOf(t);if(n!==-1)this.detach(n);else{let n=i[3],r=new e(n,n[5],n[3]);r.detach(r.indexOf(t))}}let a=this._adjustIndex(n),o=this._lContainer;return Rf(o,i,a,r),t.attachToViewContainerRef(),la(wm(o),a,t),t}move(e,t){return this.insert(e,t)}indexOf(e){let t=Cm(this._lContainer);return t===null?-1:t.indexOf(e)}remove(e){let t=this._adjustIndex(e,-1),n=Bf(this._lContainer,t);n&&(ua(wm(this._lContainer),t),md(n[1],n))}detach(e){let t=this._adjustIndex(e,-1),n=Bf(this._lContainer,t);return n&&ua(wm(this._lContainer),t)!=null?new Uf(n):null}_adjustIndex(e,t=0){return e??this.length+t}};function Cm(e){return e[8]}function wm(e){return e[8]||=[]}function Tm(e,t){let n,r=t[e.index];return to(r)?n=r:(n=If(r,t,null,e),t[e.index]=n,Fd(t,n)),Dm(n,t,e,r),new Sm(n,e,t)}function Em(e,t){let n=e[11],r=n.createComment(``),i=po(t,e);return vu(n,n.parentNode(i),r,n.nextSibling(i),!1),r}var Dm=Am,Om=()=>!1;function km(e,t,n){return Om(e,t,n)}function Am(e,t,n,r){if(e[7])return;let i;i=n.type&8?uo(r):Em(t,n),e[7]=i}var jm=class e{queryList;matches=null;constructor(e){this.queryList=e}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}},Mm=class e{queries;constructor(e=[]){this.queries=e}createEmbeddedView(t){let n=t.queries;if(n!==null){let r=t.contentQueries===null?n.length:t.contentQueries[0],i=[];for(let e=0;e0)r.push(o[e/2]);else{let i=a[e+1],o=t[-n];for(let e=10;ee.trim())}function Km(e,t,n){e.queries===null&&(e.queries=new Pm),e.queries.track(new Fm(t,n))}function qm(e,t){return e.queries.getByIndex(t)}function Jm(e,t){let n=e[1],r=qm(n,t);return r.crossesNgTemplate?Vm(n,e,t,[]):Bm(n,e,r,t)}function Ym(e,t,n){let r,i=Cn(()=>{r._dirtyCounter();let n=$m(r,e);if(t&&n===void 0)throw new ui(-951,!1);return n});return r=i[en],r._dirtyCounter=T(0),r._flatValue=void 0,i}function Xm(e){return Ym(!0,!1,e)}function Zm(e){return Ym(!0,!0,e)}function Qm(e,t){let n=e[en];n._lView=Io(),n._queryIndex=t,n._queryList=Hm(n._lView,t),n._queryList.onDirty(()=>n._dirtyCounter.update(e=>e+1))}function $m(e,t){let n=e._lView,r=e._queryIndex;if(n===void 0||r===void 0||n[2]&4)return t?void 0:va;let i=Hm(n,r),a=Jm(n,r);return i.reset(a,kl),t?i.first:i._changesDetected||e._flatValue===void 0?e._flatValue=i.toArray():e._flatValue}function eh(e){return!!e&&typeof e.then==`function`}function th(e){return!!e&&typeof e.subscribe==`function`}var nh=class{},rh=class extends nh{injector;instance=null;constructor(e){super();let t=new Ba([...e.providers,{provide:nh,useValue:this}],e.parent||Ra(),e.debugName,new Set([`environment`]));this.injector=t,e.runEnvironmentInitializers&&t.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function ih(e,t,n=null){return new rh({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var ah=(()=>{class e{_injector;cachedInjectors=new Map;constructor(e){this._injector=e}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){let t=wa(!1,e.type),n=t.length>0?ih([t],this._injector,``):null;this.cachedInjectors.set(e,n)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(let e of this.cachedInjectors.values())e!==null&&e.destroy()}finally{this.cachedInjectors.clear()}}static ɵprov=vi({token:e,providedIn:`environment`,factory:()=>new e(ea(za))})}return e})();function O(e){return hc(()=>{let t=dh(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection!==Nl.Eager,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?e=>e.get(ah).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||ru.Emulated,styles:e.styles||va,_:null,schemas:e.schemas||null,tView:null,id:``};t.standalone&&$u(`NgStandalone`),fh(n);let r=e.dependencies;return n.directiveDefs=ph(r,oh),n.pipeDefs=ph(r,Fi),n.id=mh(n),n})}function oh(e){return Ni(e)||Pi(e)}function sh(e,t){if(e==null)return _a;let n={};for(let r in e)if(Object.hasOwn(e,r)){let i=e[r],a,o,s,c;Array.isArray(i)?(s=i[0],a=i[1],o=i[2]??a,c=i[3]||null):(a=i,o=i,s=Ld.None,c=null),n[a]=[r,s,c],t[a]=o}return n}function ch(e){if(e==null)return _a;let t={};for(let n in e)Object.hasOwn(e,n)&&(t[e[n]]=n);return t}function lh(e){return hc(()=>{let t=dh(e);return fh(t),t})}function uh(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone??!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function dh(e){let t={};return{type:e.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputConfig:e.inputs||_a,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||va,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,signalFormsInputPresence:null,inputs:sh(e.inputs,t),outputs:ch(e.outputs),debugInfo:null}}function fh(e){e.features?.forEach(t=>t(e))}function ph(e,t){return e?()=>{let n=typeof e==`function`?e():e,r=[];for(let e of n){let n=t(e);n!==null&&r.push(n)}return r}:null}function mh(e){let t=0,n=typeof e.consts==`function`?``:e.consts,r=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,n,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery];for(let e of r.join(`|`))t=Math.imul(31,t)+e.charCodeAt(0)<<0;return t+=2147483648,`c`+t}var hh=new Ti(``),gh=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((e,t)=>{this.resolve=e,this.reject=t});appInits=x(hh,{optional:!0})??[];injector=x(gs);constructor(){}runInitializers(){if(this.initialized)return;let e=[];for(let t of this.appInits){let n=Za(this.injector,t);if(eh(n))e.push(n);else if(th(n)){let t=new Promise((e,t)=>{n.subscribe({complete:e,error:t})});e.push(t)}}let t=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{t()}).catch(e=>{this.reject(e)}),e.length===0&&t(),this.initialized=!0}static ɵfac=function(t){return new(t||e)};static ɵprov=Tl({token:e,factory:e.ɵfac})}return e})();function _h(e){return t=>{t.controlDef={create:(e,t)=>{e?.ɵngControlCreate(t)},update:(e,t)=>{e?.ɵngControlUpdate?.(t)},passThroughInput:e}}}function vh(e){return Object.getPrototypeOf(e.prototype).constructor}function yh(e){let t=vh(e.type),n=!0,r=[e];for(;t&&t!==Function.prototype&&t!==Object.prototype;){let i,a=Object.hasOwn(t,Di)?t[Di]:void 0,o=Object.hasOwn(t,Oi)?t[Oi]:void 0;if(ao(e))i=a??o;else{if(a)throw new ui(903,!1);i=o}if(i){if(n){r.push(i);let t=e;t.inputs=Sh(e.inputs),t.declaredInputs=Sh(e.declaredInputs),t.outputs=Sh(e.outputs);let n=i.hostBindings;n&&Th(e,n);let a=i.viewQuery,o=i.contentQueries;if(a&&Ch(e,a),o&&wh(e,o),bh(e,i),Wee(e.outputs,i.outputs),ao(i)&&i.data.animation){let t=e.data;t.animation=(t.animation||[]).concat(i.data.animation)}}let t=i.features;if(t)for(let r=0;r=0;r--){let i=e[r];i.hostVars=t+=i.hostVars,i.hostAttrs=Gc(i.hostAttrs,n=Gc(n,i.hostAttrs))}}function Sh(e){return e===_a?{}:e===va?[]:e}function Ch(e,t){let n=e.viewQuery;e.viewQuery=n?(e,r)=>{t(e,r),n(e,r)}:t}function wh(e,t){let n=e.contentQueries;e.contentQueries=n?(e,r,i)=>{t(e,r,i),n(e,r,i)}:t}function Th(e,t){let n=e.hostBindings;e.hostBindings=n?(e,r)=>{t(e,r),n(e,r)}:t}function Eh(e,t,n,r,i,a,o,s){if(n.firstCreatePass){e.mergedAttrs=Gc(e.mergedAttrs,e.attrs);let t=e.tView=Od(2,e,i,a,o,n.directiveRegistry,n.pipeRegistry,null,n.schemas,n.consts,null);n.queries!==null&&(n.queries.template(n,e),t.queries=n.queries.embeddedTView(e))}s&&(e.flags|=s),Bo(e,!1);let c=Ah(n,t,e,r);fs()&&vd(n,t,c,e),Bl(c,t);let l=If(c,t,c,e);t[r+27]=l,Fd(t,l),km(l,e,t)}function Dh(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;return t.firstCreatePass?(f=qf(t,d,4,o||null,s||null),Mo()&&Vp(t,e,f,yo(t.consts,l),Xd),jc(t,f)):f=t.data[d],Eh(f,e,t,n,r,i,a,c),io(f)&&Bd(t,e,f),l!=null&&Vd(e,f,u),f}function Oh(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;if(t.firstCreatePass){if(f=qf(t,d,4,o||null,s||null),l!=null){let e=yo(t.consts,l);f.localNames=[];for(let t=0;t{throw new ui(600,``)})}var Fh=10,Ih=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=x(Us);afterRenderManager=x(ed);zonelessEnabled=x(ec);rootEffectScheduler=x(nc);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new Vr;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=x(Ss);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(ci(e=>!e))}constructor(){x(Zu,{optional:!0})}whenStable(){let e;return new Promise(t=>{e=this.isStable.subscribe({next:e=>{e&&t()}})}).finally(()=>{e.unsubscribe()})}_injector=x(za);_rendererFactory=null;get injector(){return this._injector}bootstrap(e,t){return this.bootstrapImpl(e,t)}bootstrapImpl(e,t,n=gs.NULL){return this._injector.get(As).run(()=>{if(kc(gc.BootstrapComponentStart),!this._injector.get(gh).done)throw new ui(405,``);let r=Ni(e),i=this._injector.get(nh),a=new pm(r,i);this.componentTypes.push(e);let{hostElement:o,directives:s,bindings:c}=Lh(t),l=o||a.selector,u=a.create(n,[],l,i.injector,s,c),d=u.location.nativeElement,f=u.injector.get(Mh,null);return f?.registerApplication(d),u.onDestroy(()=>{this.detachView(u.hostView),Rh(this.components,u),f?.unregisterApplication(d)}),this._loadComponent(u),kc(gc.BootstrapComponentEnd,u),u})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){kc(gc.ChangeDetectionStart),this.tracingSnapshot===null?this.tickImpl():this.tracingSnapshot.run(Xu.CHANGE_DETECTION,this.tickImpl)}tickImpl=()=>{if(this._runningTick)throw kc(gc.ChangeDetectionEnd),new ui(101,!1);let e=tn(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,tn(e),this.afterTick.next(),kc(gc.ChangeDetectionEnd)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(ip,null,{optional:!0}));let e=0;for(;this.dirtyFlags!==0&&e++So(e))){this.dirtyFlags|=2;return}this.dirtyFlags&=-8}attachView(e){let t=e;this._views.push(t),t.attachToAppRef(this)}detachView(e){let t=e;Rh(this._views,t),t.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView);try{this.tick()}catch(e){this.internalErrorHandler(e)}this.components.push(e),this._injector.get(Nh,[]).forEach(t=>t(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),()=>Rh(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new ui(406,!1);let e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}static ɵfac=function(t){return new(t||e)};static ɵprov=Tl({token:e,factory:e.ɵfac})}return e})();function Lh(e){return e===void 0||typeof e==`string`||e instanceof Element?{hostElement:e}:e}function Rh(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function k(e,t,n,r){let i=Io();return pp(i,Jo(),t)&&(Lo(),Zd(ss(),i,e,t,n,r)),k}function zh(e){if($u(`NgAnimateEnter`),!Bu)return zh;let t=Io();if(jte(t))return zh;let n=Ro(),r=t[9].get(As);return Ite(qu(t),n,()=>Bh(t,n,e,r)),Hte(t[9]),sd(t[9],qu(t)),zh}function Bh(e,t,n,r){let i=po(t,e),a=e[11],o=Fte(n),s=[],c=!1,l=e=>{if(Ju(e)!==i)return;let t=e instanceof AnimationEvent?`animationend`:`transitionend`;r.runOutsideAngular(()=>{a.listen(i,t,u)})},u=e=>{Ju(e)===i&&(Yu(e,i)&&(c=!0),Vh(e,i,a))};if(o&&o.length>0){r.runOutsideAngular(()=>{s.push(a.listen(i,`animationstart`,l)),s.push(a.listen(i,`transitionstart`,l))}),Mte(i,o,s);for(let e of o)a.addClass(i,e);r.runOutsideAngular(()=>{requestAnimationFrame(()=>{if(!c&&(Dte(i,Uu,Bu),!Uu.has(i))){for(let e of o)a.removeClass(i,e);Vu(i)}})})}}function Vh(e,t,n){let r=Hu.get(t);if(Ju(e)===t&&r&&Yu(e,t)){e.stopPropagation();for(let e of r.classList)n.removeClass(t,e);Vu(t)}}var Hh=class{destroy(e){}updateValue(e,t){}swap(e,t){let n=Math.min(e,t),r=Math.max(e,t),i=this.detach(r);if(r-n>1){let e=this.detach(n);this.attach(n,i),this.attach(r,e)}else this.attach(n,i)}move(e,t){this.attach(t,this.detach(e))}};function Uh(e,t,n,r,i){return e===n&&Object.is(t,r)?1:Object.is(i(e,t),i(n,r))?-1:0}function Wh(e,t,n,r){let i,a,o=0,s=e.length-1;if(Array.isArray(t)){tn(r);let c=t.length-1;for(tn(null);o<=s&&o<=c;){let r=e.at(o),l=t[o],u=Uh(o,r,o,l,n);if(u!==0){u<0&&e.updateValue(o,l),o++;continue}let d=e.at(s),f=t[c],p=Uh(s,d,c,f,n);if(p!==0){p<0&&e.updateValue(s,f),s--,c--;continue}let m=n(o,r),ee=n(s,d),h=n(o,l);if(Object.is(h,ee)){let t=n(c,f);Object.is(t,m)?(e.swap(o,s),e.updateValue(s,f),c--,s--):e.move(s,o),e.updateValue(o,l),o++;continue}if(i??=new Jh,a??=qh(e,o,s,n),Gh(e,i,o,h))e.updateValue(o,l),o++,s++;else if(a.has(h))i.set(m,e.detach(o)),s--;else{let n=e.create(o,t[o]);e.attach(o,n),o++,s++}}for(;o<=c;)Kh(e,i,n,o,t[o]),o++}else if(t!=null){tn(r);let c=t[Symbol.iterator]();tn(null);let l=c.next();for(;!l.done&&o<=s;){let t=e.at(o),r=l.value,u=Uh(o,t,o,r,n);if(u!==0)u<0&&e.updateValue(o,r),o++,l=c.next();else{i??=new Jh,a??=qh(e,o,s,n);let u=n(o,r);if(Gh(e,i,o,u))e.updateValue(o,r),o++,s++,l=c.next();else if(!a.has(u))e.attach(o,e.create(o,r)),o++,s++,l=c.next();else{let r=n(o,t);i.set(r,e.detach(o)),s--}}}for(;!l.done;)Kh(e,i,n,e.length,l.value),l=c.next()}for(;o<=s;)e.destroy(e.detach(s--));i?.forEach(t=>{e.destroy(t)})}function Gh(e,t,n,r){return t!==void 0&&t.has(r)?(e.attach(n,t.get(r)),t.delete(r),!0):!1}function Kh(e,t,n,r,i){if(Gh(e,t,r,n(r,i)))e.updateValue(r,i);else{let t=e.create(r,i);e.attach(r,t)}}function qh(e,t,n,r){let i=new Set;for(let a=t;a<=n;a++)i.add(r(a,e.at(a)));return i}var Jh=class{kvMap=new Map;_vMap=void 0;has(e){return this.kvMap.has(e)}delete(e){if(!this.has(e))return!1;let t=this.kvMap.get(e);return this._vMap!==void 0&&this._vMap.has(t)?(this.kvMap.set(e,this._vMap.get(t)),this._vMap.delete(t)):this.kvMap.delete(e),!0}get(e){return this.kvMap.get(e)}set(e,t){if(this.kvMap.has(e)){let n=this.kvMap.get(e);this._vMap===void 0&&(this._vMap=new Map);let r=this._vMap;for(;r.has(n);)n=r.get(n);r.set(n,t)}else this.kvMap.set(e,t)}forEach(e){for(let[t,n]of this.kvMap)if(e(n,t),this._vMap!==void 0){let r=this._vMap;for(;r.has(n);)n=r.get(n),e(n,t)}}};function A(e,t,n,r,i,a,o,s){$u(`NgControlFlow`);let c=Io(),l=Lo();return Oh(c,l,e,t,n,r,i,yo(l.consts,a),256,o,s),Yh}function Yh(e,t,n,r,i,a,o,s){$u(`NgControlFlow`);let c=Io(),l=Lo();return Oh(c,l,e,t,n,r,i,yo(l.consts,a),512,o,s),Yh}function j(e,t){$u(`NgControlFlow`);let n=Io(),r=Jo(),i=n[r]===ju?-1:n[r],a=i===-1?void 0:tg(n,27+i);if(pp(n,r,e)){let r=tn(null);try{if(a!==void 0&&zf(a,0),e!==-1){let r=27+e,i=tg(n,r),a=og(n[1],r),o=np(i,a,n);Rf(i,uf(n,a,t,{dehydratedView:o}),0,df(a,o))}}finally{tn(r)}}else if(a!==void 0){let e=Lf(a,0);e!==void 0&&(e[8]=t)}}var Xh=class{lContainer;$implicit;$index;constructor(e,t,n){this.lContainer=e,this.$implicit=t,this.$index=n}get $count(){return this.lContainer.length-10}};function Zh(e){return e}function Qh(e,t){return t}var $h=class{hasEmptyBlock;trackByFn;liveCollection;constructor(e,t,n){this.hasEmptyBlock=e,this.trackByFn=t,this.liveCollection=n}};function M(e,t,n,r,i,a,o,s,c,l,u,d,f){$u(`NgControlFlow`);let p=Io(),m=Lo(),ee=c!==void 0,h=Io(),g=new $h(ee,s?o.bind(h[15][8]):o);h[27+e]=g,Oh(p,m,e+1,t,n,r,i,yo(m.consts,a),256),ee&&Oh(p,m,e+2,c,l,u,d,yo(m.consts,f),512)}var eg=class extends Hh{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(e,t,n){super(),this.lContainer=e,this.hostLView=t,this.templateTNode=n}get length(){return this.lContainer.length-10}at(e){return this.getLView(e)[8].$implicit}attach(e,t){let n=t[6];this.needsIndexUpdate||=e!==this.length,Rf(this.lContainer,t,e,df(this.templateTNode,n)),ng(this.lContainer,e)}detach(e){return this.needsIndexUpdate||=e!==this.length-1,rg(this.lContainer,e),ig(this.lContainer,e)}create(e,t){let n=tp(this.lContainer,this.templateTNode.tView.ssrId);return uf(this.hostLView,this.templateTNode,new Xh(this.lContainer,t,e),{dehydratedView:n})}destroy(e){md(e[1],e)}updateValue(e,t){this.getLView(e)[8].$implicit=t}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let e=0;e0){let e=n[9];Bte(e,r),zu.delete(n[19]),r.detachedLeaveAnimationFns=void 0}}function rg(e,t){if(e.length<=10)return;let n=e[10+t],r=n?n[26]:void 0;r&&r.leave&&r.leave.size>0&&(r.detachedLeaveAnimationFns=[])}function ig(e,t){return Bf(e,t)}function ag(e,t){return Lf(e,t)}function og(e,t){return mo(e,t)}function P(e,t,n){let r=Io();return pp(r,Jo(),t)&&(Lo(),Wd(ss(),r,e,t,r[11],n)),P}function sg(e,t,n,r,i){rf(t,e,n,i?`class`:`style`,r)}function F(e,t,n,r){let i=Io(),a=i[1],o=e+27,s=a.firstCreatePass?tm(o,i,2,t,Xd,Mo(),n,r):a.data[o];if(ro(s)){let n=i[10].tracingService;if(n&&n.componentCreate){let o=a.data[s.directiveStart+s.componentOffset];return n.componentCreate(cp(o),()=>(cg(e,t,i,s,r),F))}}return cg(e,t,i,s,r),F}function cg(e,t,n,r,i){if(ef(r,n,e,t,ug),io(r)){let e=n[1];Bd(e,n,r),nu(e,r,n)}i!=null&&Vd(n,r)}function I(){let e=Lo(),t=tf(Ro());return e.firstCreatePass&&nm(e,t),Po(t)&&Fo(),jo(),t.classesWithoutHost!=null&&Bc(t)&&sg(e,t,Io(),t.classesWithoutHost,!0),t.stylesWithoutHost!=null&&Vc(t)&&sg(e,t,Io(),t.stylesWithoutHost,!1),I}function L(e,t,n,r){return F(e,t,n,r),I(),L}function R(e,t,n,r){let i=Io(),a=i[1],o=e+27,s=a.firstCreatePass?rm(o,a,2,t,n,r):a.data[o];return ef(s,i,e,t,ug),r!=null&&Vd(i,s),R}function z(){return Po(tf(Ro()))&&Fo(),jo(),z}function lg(e,t,n,r){return R(e,t,n,r),z(),lg}var ug=(e,t,n,r,i)=>(ps(!0),_u(t[11],r,us()));function dg(e,t,n){let r=Io(),i=r[1],a=e+27,o=i.firstCreatePass?tm(a,r,8,`ng-container`,Xd,Mo(),t,n):i.data[a];if(ef(o,r,e,`ng-container`,mg),io(o)){let e=r[1];Bd(e,r,o),nu(e,o,r)}return n!=null&&Vd(r,o),dg}function fg(){let e=Lo(),t=tf(Ro());return e.firstCreatePass&&nm(e,t),fg}function pg(e,t,n){return dg(e,t,n),fg(),pg}var mg=(e,t,n,r,i)=>(ps(!0),gu(t[11],``));function B(){return Io()}function V(e,t,n){let r=Io();return pp(r,Jo(),t)&&(Lo(),Gd(ss(),r,e,t,r[11],n)),V}var hg=void 0;function gg(e){let t=Math.floor(Math.abs(e)),n=e.toString().replace(/^[^.]*\.?/,``).length;return t===1&&n===0?1:5}var _g=[`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`]],hg,[[`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`]],hg,[[`B`,`A`],[`BC`,`AD`],[`Before Christ`,`Anno Domini`]],0,[6,0],[`M/d/yy`,`MMM d, y`,`MMMM d, y`,`EEEE, MMMM d, y`],[`h:mm a`,`h:mm:ss a`,`h:mm:ss a z`,`h:mm:ss a zzzz`],[`{1}, {0}`,hg,hg,hg],[`.`,`,`,`;`,`%`,`+`,`-`,`E`,`×`,`‰`,`∞`,`NaN`,`:`],[`#,##0.###`,`#,##0%`,`¤#,##0.00`,`#E0`],`USD`,`$`,`US Dollar`,{},`ltr`,gg],vg=Object.create(null);function yg(e){let t=Sg(e),n=bg(t);if(n)return n;let r=t.split(`-`)[0];if(n=bg(r),n)return n;if(r===`en`)return _g;throw new ui(701,!1)}function bg(e){if(!(e in vg)){let t=Yi.ng&&Yi.ng.common&&Yi.ng.common.locales&&Yi.ng.common.locales[e];return t!==void 0&&(vg[e]=t),t}return vg[e]}var xg={LocaleId:0,DayPeriodsFormat:1,DayPeriodsStandalone:2,DaysFormat:3,DaysStandalone:4,MonthsFormat:5,MonthsStandalone:6,Eras:7,FirstDayOfWeek:8,WeekendRange:9,DateFormat:10,TimeFormat:11,DateTimeFormat:12,NumberSymbols:13,NumberFormats:14,CurrencyCode:15,CurrencySymbol:16,CurrencyName:17,Currencies:18,Directionality:19,PluralCase:20,ExtraData:21};function Sg(e){return e.toLowerCase().replace(/_/g,`-`)}var Cg=`en-US`;function wg(e){typeof e==`string`&&e.toLowerCase().replace(/_/g,`-`)}function H(e,t,n){let r=Io(),i=Lo(),a=Ro();return Tg(i,r,r[11],a,e,t,n),H}function U(e,t,n){let r=Io(),i=Lo(),a=Ro();return(a.type&3||n)&&yp(a,i,r,n,r[11],e,t,_p(a,r,t)),U}function Tg(e,t,n,r,i,a,o){let s=!0,c=null;if((r.type&3||o)&&(c??=_p(r,t,a),yp(r,e,t,o,n,i,a,c)&&(s=!1)),s){let e=r.outputs?.[i],n=r.hostDirectiveOutputs?.[i];if(n&&n.length)for(let e=0;e>17&32767}function Fg(e){return(e&2)==2}function Ig(e,t){return e&131071|t<<17}function Lg(e){return e|2}function Rg(e){return(e&131068)>>2}function zg(e,t){return e&-131069|t<<2}function Bg(e){return(e&1)==1}function Vg(e){return e|1}function Hg(e,t,n,r,i,a){let o=a?t.classBindings:t.styleBindings,s=Pg(o),c=Rg(o);e[r]=n;let l=!1,u;if(Array.isArray(n)){let e=n;u=e[1],(u===null||ha(e,u)>0)&&(l=!0)}else u=n;if(i){if(c!==0){let t=Pg(e[s+1]);e[r+1]=Ng(t,s),t!==0&&(e[t+1]=zg(e[t+1],r)),e[s+1]=Ig(e[s+1],r)}else e[r+1]=Ng(s,0),s!==0&&(e[s+1]=zg(e[s+1],r)),s=r}else e[r+1]=Ng(c,0),s===0?s=r:e[c+1]=zg(e[c+1],r),c=r;l&&(e[r+1]=Lg(e[r+1])),Wg(e,u,r,!0),Wg(e,u,r,!1),Ug(t,u,e,r,a),o=Ng(s,c),a?t.classBindings=o:t.styleBindings=o}function Ug(e,t,n,r,i){let a=i?e.residualClasses:e.residualStyles;a!=null&&typeof t==`string`&&ha(a,t)>=0&&(n[r+1]=Vg(n[r+1]))}function Wg(e,t,n,r){let i=e[n+1],a=t===null,o=r?Pg(i):Rg(i),s=!1;for(;o!==0&&(s===!1||a);){let n=e[o],i=e[o+1];Gg(n,t)&&(s=!0,e[o+1]=r?Vg(i):Lg(i)),o=r?Pg(i):Rg(i)}s&&(e[n+1]=r?Lg(i):Vg(i))}function Gg(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t==`string`?ha(e,t)>=0:!1}var Kg={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function qg(e){return e.substring(Kg.key,Kg.keyEnd)}function Jg(e){return Xg(e),Yg(e,Zg(e,0,Kg.textEnd))}function Yg(e,t){let n=Kg.textEnd;return n===t?-1:(t=Kg.keyEnd=Qg(e,Kg.key=t,n),Zg(e,t,n))}function Xg(e){Kg.key=0,Kg.keyEnd=0,Kg.value=0,Kg.valueEnd=0,Kg.textEnd=e.length}function Zg(e,t,n){for(;t32;)t++;return t}function $g(e,t,n){return n_(e,t,n,!1),$g}function G(e,t){return n_(e,t,null,!0),G}function e_(e){r_(p_,t_,e,!0)}function t_(e,t){for(let n=Jg(t);n>=0;n=Yg(t,n))pa(e,qg(t),!0)}function n_(e,t,n,r){let i=Io(),a=Lo(),o=Yo(2);if(a.firstUpdatePass&&a_(a,e,o,r),t!==ju&&pp(i,o,t)){let s=a.data[as()];h_(a,s,i,i[11],e,i[o+1]=v_(t,n),r,o)}}function r_(e,t,n,r){let i=Lo(),a=Yo(2);i.firstUpdatePass&&a_(i,null,a,r);let o=Io();if(n!==ju&&pp(o,a,n)){let s=i.data[as()];if(y_(s,r)&&!i_(i,a)){let e=r?s.classesWithoutHost:s.stylesWithoutHost;e!==null&&(n=mi(e,n||``)),sg(i,s,o,n,r)}else m_(i,s,o,o[11],o[a+1],o[a+1]=f_(e,t,n),r,a)}}function i_(e,t){return t>=e.expandoStartIndex}function a_(e,t,n,r){let i=e.data;if(i[n+1]===null){let a=i[as()],o=i_(e,n);y_(a,r)&&t===null&&!o&&(t=!1),t=o_(i,a,t,r),Hg(i,a,t,n,o,r)}}function o_(e,t,n,r){let i=rte(e),a=r?t.residualClasses:t.residualStyles;if(i===null)(r?t.classBindings:t.styleBindings)===0&&(n=u_(null,e,t,n,r),n=d_(n,t.attrs,r),a=null);else{let o=t.directiveStylingLast;if(o===-1||e[o]!==i){if(n=u_(i,e,t,n,r),a===null){let n=s_(e,t,r);n!==void 0&&Array.isArray(n)&&(n=u_(null,e,t,n[1],r),n=d_(n,t.attrs,r),c_(e,t,r,n))}else a=l_(e,t,r)}}return a!==void 0&&(r?t.residualClasses=a:t.residualStyles=a),n}function s_(e,t,n){let r=n?t.classBindings:t.styleBindings;if(Rg(r)!==0)return e[Pg(r)]}function c_(e,t,n,r){let i=n?t.classBindings:t.styleBindings;e[Pg(i)]=r}function l_(e,t,n){let r,i=t.directiveEnd;for(let a=1+t.directiveStylingLast;a0;){let t=e[i],a=Array.isArray(t),c=a?t[1]:t,l=c===null,u=n[i+1];u===ju&&(u=l?va:void 0);let d=l?ma(u,r):c===r?u:void 0;if(a&&!__(d)&&(d=ma(t,r)),__(d)&&(s=d,o))return s;let f=e[i+1];i=o?Pg(f):Rg(f)}if(t!==null){let e=a?t.residualClasses:t.residualStyles;e!=null&&(s=ma(e,r))}return s}function __(e){return e!==void 0}function v_(e,t){return e==null||e===``||(typeof t==`string`?e=au(e)+t:typeof e==`object`&&(e=pi(au(e)))),e}function y_(e,t){return!!(e.flags&(t?8:16))}function K(e,t=``){let n=Io(),r=Lo(),i=e+27,a=r.firstCreatePass?qf(r,i,1,t,null):r.data[i],o=b_(r,n,a,t);n[i]=o,fs()&&vd(r,n,o,a),Bo(a,!1)}var b_=(e,t,n,r)=>(ps(!0),mu(t[11],r));function x_(e,t,n,r=``){return pp(e,Jo(),n)?t+Li(n)+r:ju}function S_(e,t,n,r,i,a=``){let o=mp(e,qo(),n,i);return Yo(2),o?t+Li(n)+r+Li(i)+a:ju}function C_(e,t,n,r,i,a,o,s=``){let c=hp(e,qo(),n,i,o);return Yo(3),c?t+Li(n)+r+Li(i)+a+Li(o)+s:ju}function w_(e,t,n,r,i,a,o,s,c,l=``){let u=gp(e,qo(),n,i,o,c);return Yo(4),u?t+Li(n)+r+Li(i)+a+Li(o)+s+Li(c)+l:ju}function q(e){return J(``,e),q}function J(e,t,n){let r=Io(),i=x_(r,e,t,n);return i!==ju&&D_(r,as(),i),J}function Y(e,t,n,r,i){let a=Io(),o=S_(a,e,t,n,r,i);return o!==ju&&D_(a,as(),o),Y}function T_(e,t,n,r,i,a,o){let s=Io(),c=C_(s,e,t,n,r,i,a,o);return c!==ju&&D_(s,as(),c),T_}function E_(e,t,n,r,i,a,o,s,c){let l=Io(),u=w_(l,e,t,n,r,i,a,o,s,c);return u!==ju&&D_(l,as(),u),E_}function D_(e,t,n){let r=fo(t,e);hu(e[11],r,n)}function O_(e,t,n){fc(t)&&(t=t());let r=Io();return pp(r,Jo(),t)&&(Lo(),Wd(ss(),r,e,t,r[11],n)),O_}function k_(e,t){let n=fc(e);return n&&e.set(t),n}function A_(e,t){let n=Io(),r=Lo(),i=Ro();return Tg(r,n,n[11],i,e,t),A_}var j_={};function M_(e){$u(`NgLet`);let t=Lo(),n=Io(),r=e+27;return Bo(qf(t,r,128,null,null),!1),go(t,n,r,j_),M_}function N_(e){return go(Lo(),Io(),as(),e),e}function P_(e){let t=ho(Uo(),27+e);if(t===j_)throw new ui(314,!1);return t}function F_(e,t,n=``){return x_(Io(),e,t,n)}function I_(e,t,n){let r=Lo();r.firstCreatePass&&L_(t,r.data,r.blueprint,ao(e),n)}function L_(e,t,n,r,i){if(e=gi(e),Array.isArray(e))for(let a=0;a>20;if(Ma(e)||!e.multi){let r=new zc(l,i,Bp,null),p=B_(c,t,i?u:u+f,d);p===-1?(cl(il(s,o),a,c),R_(a,e,t.length),t.push(c),s.directiveStart++,s.directiveEnd++,i&&(s.providerIndexes+=1048576),n.push(r),o.push(r)):(n[p]=r,o[p]=r)}else{let p=B_(c,t,u+f,d),m=B_(c,t,u,u+f),ee=p>=0&&n[p],h=m>=0&&n[m];if(i&&!h||!i&&!ee){cl(il(s,o),a,c);let u=ine(i?rne:nne,n.length,i,r,l,e);!i&&h&&(n[m].providerFactory=u),R_(a,e,t.length,0),t.push(c),s.directiveStart++,s.directiveEnd++,i&&(s.providerIndexes+=1048576),n.push(u),o.push(u)}else{let t=z_(n[i?m:p],l,!i&&r);R_(a,e,p>-1?p:m,t)}!i&&r&&h&&n[m].componentProviders++}}}function R_(e,t,n,r){let i=Ma(t),a=Na(t);if(i||a){let o=(a?gi(t.useClass):t).prototype.ngOnDestroy;if(o){let a=e.destroyHooks||=[];if(!i&&t.multi){let e=a.indexOf(n);e===-1?a.push(n,[r,o]):a[e+1].push(r,o)}else a.push(n,o)}}}function z_(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function B_(e,t,n,r){for(let i=n;i{n.providersResolver=(t,n)=>I_(t,n?n(e):e,!1),t&&(n.viewProvidersResolver=(e,n)=>I_(e,n?n(t):t,!0))}}function U_(e,t){let n=Ko()+e,r=Io();return r[n]===ju?dp(r,n,t()):fp(r,n)}function W_(e,t,n){return q_(Io(),Ko(),e,t,n)}function G_(e,t,n,r){return J_(Io(),Ko(),e,t,n,r)}function ane(e,t,n,r,i,a,o){return one(Io(),Ko(),e,t,n,r,i,a)}function K_(e,t){let n=e[t];return n===ju?void 0:n}function q_(e,t,n,r,i,a){let o=t+n;return pp(e,o,i)?dp(e,o+1,a?r.call(a,i):r(i)):K_(e,o+1)}function J_(e,t,n,r,i,a,o){let s=t+n;return mp(e,s,i,a)?dp(e,s+2,o?r.call(o,i,a):r(i,a)):K_(e,s+2)}function one(e,t,n,r,i,a,o,s,c){let l=t+n;return gp(e,l,i,a,o,s)?dp(e,l+4,c?r.call(c,i,a,o,s):r(i,a,o,s)):K_(e,l+4)}function Y_(e,t){let n=Lo(),r,i=e+27;n.firstCreatePass?(r=sne(t,n.pipeRegistry),n.data[i]=r,r.onDestroy&&(n.destroyHooks??=[]).push(i,r.onDestroy)):r=n.data[i];let a=r.factory||(r.factory=aa(r.type,!0)),o=qi(Bp);try{let e=Qc(!1),t=a();return Qc(e),go(n,Io(),i,t),t}finally{qi(o)}}function sne(e,t){if(t)for(let n=t.length-1;n>=0;n--){let r=t[n];if(e===r.name)return r}}function X_(e,t,n){let r=e+27,i=Io(),a=ho(i,r);return Q_(i,r)?q_(i,Ko(),t,a.transform,n,a):a.transform(n)}function Z_(e,t,n,r){let i=e+27,a=Io(),o=ho(a,i);return Q_(a,i)?J_(a,Ko(),t,o.transform,n,r,o):o.transform(n,r)}function Q_(e,t){return e[1].data[t].pure}function $_(e,t){return Kf(e,t)}var cne=(()=>{class e{applicationErrorHandler=x(Us);appRef=x(Ih);taskService=x(Ss);ngZone=x(As);zonelessEnabled=x(ec);tracing=x(Zu,{optional:!0});zoneIsDefined=typeof Zone<`u`&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new ar;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(Os):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(x(tc,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{let e=this.taskService.add();if(!this.runningTick&&(this.cleanup(),!this.zonelessEnabled||this.appRef.includeAllTestViews)){this.taskService.remove(e);return}this.switchToMicrotaskScheduler(),this.taskService.remove(e)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{let e=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(e)})})}notify(e){if(!this.zonelessEnabled&&e===5)return;switch(e){case 0:case 2:this.appRef.dirtyFlags|=2;break;case 3:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 6:this.appRef.dirtyFlags|=2;break;case 12:this.appRef.dirtyFlags|=16;break;case 13:this.appRef.dirtyFlags|=2;break;case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;let t=this.useMicrotaskScheduler?Es:Ts;this.pendingRenderTaskId=this.taskService.add(),this.cancelScheduledCallback=this.scheduleInRootZone?Zone.root.run(()=>t(()=>this.tick())):this.ngZone.runOutsideAngular(()=>t(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(`isAngularZone_ID`+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRef.dirtyFlags===0){this.cleanup();return}!this.zonelessEnabled&&this.appRef.dirtyFlags&7&&(this.appRef.dirtyFlags|=1);let e=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(e){this.applicationErrorHandler(e)}finally{this.taskService.remove(e),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let e=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(e)}}static ɵfac=function(t){return new(t||e)};static ɵprov=Tl({token:e,factory:e.ɵfac})}return e})();function lne(){return[{provide:$s,useExisting:cne},{provide:As,useClass:Rs},{provide:ec,useValue:!0}]}function une(){return typeof $localize<`u`&&$localize.locale||`en-US`}var ev=new Ti(``,{factory:()=>x(ev,{optional:!0,skipSelf:!0})||une()}),tv=class{destroyed=!1;listeners=null;errorHandler=x(Hs,{optional:!0});isEmitting=!1;hasNullListeners=!1;destroyRef=x(vs);constructor(){this.destroyRef.onDestroy(()=>{this.destroyed=!0,this.listeners=null})}subscribe(e){if(this.destroyed)throw new ui(953,!1);return(this.listeners??=[]).push(e),{unsubscribe:()=>{let t=this.listeners?this.listeners.indexOf(e):-1;t>-1&&(this.isEmitting?(this.hasNullListeners=!0,this.listeners[t]=null):this.listeners.splice(t,1))}}}emit(e){if(this.destroyed){console.warn(di(953,!1));return}if(this.listeners===null)return;this.isEmitting=!0;let t=tn(null);try{for(let t of this.listeners)try{t!==null&&t(e)}catch(e){this.errorHandler?.handleError(e)}}finally{this.hasNullListeners&&(this.hasNullListeners=!1,this.listeners&&dne(this.listeners)),tn(t),this.isEmitting=!1}}};function dne(e){let t=e.length-1;for(;t>-1;)e[t]===null&&e.splice(t,1),t--}function X(e,t){return Cn(e,t?.equal)}function Z(e){return Wn(e)}(class e extends Error{_brand;constructor(e){super(e)}static IDLE=new e(`IDLE`);static LOADING=new e(`LOADING`)});var fne=e=>e;function Q(e,t){return typeof e==`function`?nv(Bn(e,fne,t?.equal),t?.debugName,t?.set):nv(Bn(e.source,e.computation,e.equal),e.debugName,e.set)}function nv(e,t,n){let r=e[en],i=e;if(n!==void 0){let t=e=>Vn(r,e);i.set=e=>n(e,t),i.update=r=>n(r(Z(e)),t)}else i.set=e=>Vn(r,e),i.update=e=>Hn(r,e);return i.asReadonly=Gs.bind(e),i}var rv=!1;function pne(){return rv}function iv(e){rv=e}function av(e,t){let n=Object.create(mc);n.value=e,n.transformFn=t?.transform;function r(){if(an(n),n.value===pc)throw new ui(-950,null);return n.value}return r[en]=n,r}function ov(e){return new tv}function sv(e,t){return av(e,t)}function mne(e){return av(pc,e)}var $=(sv.required=mne,sv);function cv(e,t){let n=Object.create(mc),r=new tv;n.value=e;function i(){return an(n),lv(n.value),n.value}return i[en]=n,i.asReadonly=Gs.bind(i),i.set=e=>{n.equal(n.value,e)||(kn(n,e),r.emit(e))},i.update=e=>{lv(n.value),i.set(e(n.value))},i.subscribe=r.subscribe.bind(r),i.destroyRef=r.destroyRef,i}function lv(e){if(e===pc)throw new ui(952,!1)}function uv(e,t){return cv(e,t)}function hne(e){return cv(pc,e)}var dv=(uv.required=hne,uv);function fv(e,t){return Xm(t)}function gne(e,t){return Zm(t)}var pv=(fv.required=gne,fv),_ne=(()=>{class e{static __NG_ELEMENT_ID__=vne}return e})();function vne(e){return yne(Ro(),Io(),(e&16)==16)}function yne(e,t,n){if(ro(e)&&!n){let n=_o(e.index,t);return new Uf(n,n)}if(e.type&175){let e=t[15];return new Uf(e,t)}return null}var mv=new Ti(``),bne=new Ti(``);function hv(e){return!e.moduleRef}function xne(e){let t=hv(e)?e.r3Injector:e.moduleRef.injector,n=t.get(As);return n.run(()=>{hv(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=t.get(Us),i;if(n.runOutsideAngular(()=>{i=n.onError.subscribe({next:r})}),hv(e)){let n=()=>t.destroy(),r=e.platformInjector.get(mv);r.add(n),t.onDestroy(()=>{i.unsubscribe(),r.delete(n)})}else{let t=()=>e.moduleRef.destroy(),n=e.platformInjector.get(mv);n.add(t),e.moduleRef.onDestroy(()=>{Rh(e.allPlatformModules,e.moduleRef),i.unsubscribe(),n.delete(t)})}return Cne(r,n,()=>{let n=t.get(Ss),r=n.add(),i=t.get(gh);return i.runInitializers(),i.donePromise.then(()=>{if(wg(t.get(ev,Cg)||`en-US`),!t.get(bne,!0))return hv(e)?t.get(Ih):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(hv(e)){let n=t.get(Ih);return e.rootComponent!==void 0&&n.bootstrap(e.rootComponent),n}return Sne?.(e.moduleRef,e.allPlatformModules),e.moduleRef}).finally(()=>void n.remove(r))})})}var Sne;function Cne(e,t,n){try{let r=n();return eh(r)?r.catch(n=>{throw t.runOutsideAngular(()=>e(n)),n}):r}catch(n){throw t.runOutsideAngular(()=>e(n)),n}}var gv=null;function wne(e=[],t){return gs.create({name:t,providers:[{provide:Pa,useValue:`platform`},{provide:mv,useValue:new Set([()=>gv=null])},...e]})}function Tne(e=[]){if(gv)return gv;let t=wne(e);return gv=t,Ph(),Ene(t),t}function Ene(e){let t=e.get(Js,null);Za(e,()=>{t?.forEach(e=>e())})}function Dne(e){let{rootComponent:t,appProviders:n,platformProviders:r,platformRef:i}=e;kc(gc.BootstrapApplicationStart);try{let e=i?.injector??Tne(r);return xne({r3Injector:new rh({providers:[lne(),Ws,...n||[]],parent:e,debugName:``,runEnvironmentInitializers:!1}).injector,platformInjector:e,rootComponent:t})}catch(e){return Promise.reject(e)}finally{kc(gc.BootstrapApplicationEnd)}}function _v(e){return typeof e==`boolean`?e:e!=null&&e!==`false`}var vv=Symbol(`NOT_SET`),yv=new Set,One={...jn,kind:`afterRenderEffectPhase`,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,value:vv,cleanup:null,consumerMarkedDirty(){if(this.sequence.impl.executing){if(this.sequence.lastPhase===null||this.sequence.lastPhase(an(r),r.value),r.signal[en]=r,r.registerCleanupFn=e=>(r.cleanup??=new Set).add(e),this.nodes[e]=r,this.hooks[e]=e=>r.phaseFn(e)}}afterRun(){super.afterRun(),this.lastPhase=null}destroy(){if(this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();super.destroy();for(let e of this.nodes)if(e)try{for(let t of e.cleanup??yv)t()}finally{_n(e)}}};function bv(e,t){let n=t?.injector??x(gs),r=n.get($s),i=n.get(ed),a=n.get(Zu,null,{optional:!0});i.impl??=n.get(nd);let o=e;typeof o==`function`&&(o={mixedReadWrite:e});let s=n.get(Zs,null,{optional:!0}),c=new kne(i.impl,[o.earlyRead,o.write,o.mixedReadWrite,o.read],s?.view,r,n,a?.snapshot(null));return i.impl.register(c),c}var xv=null;function Sv(){return xv}function Ane(e){xv??=e}var jne=class{},Cv=(function(e){return e[e.Format=0]=`Format`,e[e.Standalone=1]=`Standalone`,e})(Cv||{}),wv=(function(e){return e[e.Narrow=0]=`Narrow`,e[e.Abbreviated=1]=`Abbreviated`,e[e.Wide=2]=`Wide`,e[e.Short=3]=`Short`,e})(wv||{}),Tv=(function(e){return e[e.Short=0]=`Short`,e[e.Medium=1]=`Medium`,e[e.Long=2]=`Long`,e[e.Full=3]=`Full`,e})(Tv||{}),Ev={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function Mne(e){return yg(e)[xg.LocaleId]}function Nne(e,t,n){let r=yg(e);return Mv(Mv([r[xg.DayPeriodsFormat],r[xg.DayPeriodsStandalone]],t),n)}function Pne(e,t,n){let r=yg(e);return Mv(Mv([r[xg.DaysFormat],r[xg.DaysStandalone]],t),n)}function Fne(e,t,n){let r=yg(e);return Mv(Mv([r[xg.MonthsFormat],r[xg.MonthsStandalone]],t),n)}function Ine(e,t){let n=yg(e)[xg.Eras];return Mv(n,t)}function Dv(e,t){return Mv(yg(e)[xg.DateFormat],t)}function Ov(e,t){return Mv(yg(e)[xg.TimeFormat],t)}function kv(e,t){let n=yg(e)[xg.DateTimeFormat];return Mv(n,t)}function Av(e,t){let n=yg(e),r=n[xg.NumberSymbols][t];if(r===void 0){if(t===Ev.CurrencyDecimal)return n[xg.NumberSymbols][Ev.Decimal];if(t===Ev.CurrencyGroup)return n[xg.NumberSymbols][Ev.Group]}return r}function jv(e){if(!e[xg.ExtraData])throw new ui(2303,!1)}function Lne(e){let t=yg(e);return jv(t),(t[xg.ExtraData][2]||[]).map(e=>typeof e==`string`?Nv(e):[Nv(e[0]),Nv(e[1])])}function Rne(e,t,n){let r=yg(e);return jv(r),Mv(Mv([r[xg.ExtraData][0],r[xg.ExtraData][1]],t)||[],n)||[]}function Mv(e,t){for(let n=t;n>-1;n--)if(e[n]!==void 0)return e[n];throw new ui(2304,!1)}function Nv(e){let[t,n]=e.split(`:`);return{hours:+t,minutes:+n}}var zne=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,Pv=Object.create(null),Bne=/((?:[^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]*)/,Vne=256;function Hne(e,t,n,r){let i=Qne(e);Une(t),t=Iv(n,t)||t;let a=[],o;for(;t;)if(o=Bne.exec(t),o){a=a.concat(o.slice(1));let e=a.pop();if(!e)break;t=e}else{a.push(t);break}let s=i.getTimezoneOffset();r&&(s=qv(r,s),i=Zne(i,r));let c=``;return a.forEach(e=>{let t=Yne(e);c+=t?t(i,n,s):e===`''`?`'`:e.replace(/(^'|'$)/g,``).replace(/''/g,`'`)}),c}function Une(e){if(e.length>Vne)throw new ui(2300,!1)}function Fv(e,t,n){let r=new Date(0);return r.setFullYear(e,t,n),r.setHours(0,0,0),r}function Iv(e,t){let n=Mne(e);if(Pv[n]??=Object.create(null),Pv[n][t])return Pv[n][t];let r=``;switch(t){case`shortDate`:r=Dv(e,Tv.Short);break;case`mediumDate`:r=Dv(e,Tv.Medium);break;case`longDate`:r=Dv(e,Tv.Long);break;case`fullDate`:r=Dv(e,Tv.Full);break;case`shortTime`:r=Ov(e,Tv.Short);break;case`mediumTime`:r=Ov(e,Tv.Medium);break;case`longTime`:r=Ov(e,Tv.Long);break;case`fullTime`:r=Ov(e,Tv.Full);break;case`short`:let t=Iv(e,`shortTime`),n=Iv(e,`shortDate`);r=Lv(kv(e,Tv.Short),[t,n]);break;case`medium`:let i=Iv(e,`mediumTime`),a=Iv(e,`mediumDate`);r=Lv(kv(e,Tv.Medium),[i,a]);break;case`long`:let o=Iv(e,`longTime`),s=Iv(e,`longDate`);r=Lv(kv(e,Tv.Long),[o,s]);break;case`full`:let c=Iv(e,`fullTime`),l=Iv(e,`fullDate`);r=Lv(kv(e,Tv.Full),[c,l])}return r&&(Pv[n][t]=r),r}function Lv(e,t){return t&&(e=e.replace(/\{([^}]+)}/g,function(e,n){return Object.hasOwn(t,n)?t[n]:e})),e}function Rv(e,t,n=`-`,r,i){let a=``;(e<0||i&&e<=0)&&(i?e=-e+1:(e=-e,a=n));let o=String(e);for(;o.length0||s>-n)&&(s+=n),e===3)s===0&&n===-12&&(s=12);else if(e===6)return Wne(s,t);let c=Av(o,Ev.MinusSign);return Rv(s,t,c,r,i)}}function Gne(e,t){switch(e){case 0:return t.getFullYear();case 1:return t.getMonth();case 2:return t.getDate();case 3:return t.getHours();case 4:return t.getMinutes();case 5:return t.getSeconds();case 6:return t.getMilliseconds();case 7:return t.getDay();default:throw new ui(2301,!1)}}function Bv(e,t,n=Cv.Format,r=!1){return function(i,a){return Kne(i,a,e,t,n,r)}}function Kne(e,t,n,r,i,a){switch(n){case 2:return Fne(t,i,r)[e.getMonth()];case 1:return Pne(t,i,r)[e.getDay()];case 0:let n=e.getHours(),o=e.getMinutes();if(a){let e=Lne(t),a=Rne(t,i,r),s=e.findIndex(e=>{if(Array.isArray(e)){let[t,r]=e,i=n>=t.hours&&o>=t.minutes,a=n0?Math.floor(i/60):Math.ceil(i/60);switch(e){case 0:return(i>=0?`+`:``)+Rv(o,2,a)+Rv(Math.abs(i%60),2,a);case 1:return`GMT`+(i>=0?`+`:``)+Rv(o,1,a);case 2:return`GMT`+(i>=0?`+`:``)+Rv(o,2,a)+`:`+Rv(Math.abs(i%60),2,a);case 3:return r===0?`Z`:(i>=0?`+`:``)+Rv(o,2,a)+`:`+Rv(Math.abs(i%60),2,a);default:throw new ui(2310,!1)}}}var qne=0,Hv=4;function Jne(e){let t=Fv(e,qne,1).getDay();return Fv(e,0,1+(t<=Hv?Hv:11)-t)}function Uv(e){let t=e.getDay(),n=t===0?-3:Hv-t;return Fv(e.getFullYear(),e.getMonth(),e.getDate()+n)}function Wv(e,t=!1){return function(n,r){let i;if(t){let e=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,t=n.getDate();i=1+Math.floor((t+e)/7)}else{let e=Uv(n),t=Jne(e.getFullYear()),r=e.getTime()-t.getTime();i=1+Math.round(r/6048e5)}return Rv(i,e,Av(r,Ev.MinusSign))}}function Gv(e,t=!1){return function(n,r){return Rv(Uv(n).getFullYear(),e,Av(r,Ev.MinusSign),t)}}var Kv=Object.create(null);function Yne(e){if(Kv[e])return Kv[e];let t;switch(e){case`G`:case`GG`:case`GGG`:t=Bv(3,wv.Abbreviated);break;case`GGGG`:t=Bv(3,wv.Wide);break;case`GGGGG`:t=Bv(3,wv.Narrow);break;case`y`:t=zv(0,1,0,!1,!0);break;case`yy`:t=zv(0,2,0,!0,!0);break;case`yyy`:t=zv(0,3,0,!1,!0);break;case`yyyy`:t=zv(0,4,0,!1,!0);break;case`Y`:t=Gv(1);break;case`YY`:t=Gv(2,!0);break;case`YYY`:t=Gv(3);break;case`YYYY`:t=Gv(4);break;case`M`:case`L`:t=zv(1,1,1);break;case`MM`:case`LL`:t=zv(1,2,1);break;case`MMM`:t=Bv(2,wv.Abbreviated);break;case`MMMM`:t=Bv(2,wv.Wide);break;case`MMMMM`:t=Bv(2,wv.Narrow);break;case`LLL`:t=Bv(2,wv.Abbreviated,Cv.Standalone);break;case`LLLL`:t=Bv(2,wv.Wide,Cv.Standalone);break;case`LLLLL`:t=Bv(2,wv.Narrow,Cv.Standalone);break;case`w`:t=Wv(1);break;case`ww`:t=Wv(2);break;case`W`:t=Wv(1,!0);break;case`d`:t=zv(2,1);break;case`dd`:t=zv(2,2);break;case`c`:case`cc`:t=zv(7,1);break;case`ccc`:t=Bv(1,wv.Abbreviated,Cv.Standalone);break;case`cccc`:t=Bv(1,wv.Wide,Cv.Standalone);break;case`ccccc`:t=Bv(1,wv.Narrow,Cv.Standalone);break;case`cccccc`:t=Bv(1,wv.Short,Cv.Standalone);break;case`E`:case`EE`:case`EEE`:t=Bv(1,wv.Abbreviated);break;case`EEEE`:t=Bv(1,wv.Wide);break;case`EEEEE`:t=Bv(1,wv.Narrow);break;case`EEEEEE`:t=Bv(1,wv.Short);break;case`a`:case`aa`:case`aaa`:t=Bv(0,wv.Abbreviated);break;case`aaaa`:t=Bv(0,wv.Wide);break;case`aaaaa`:t=Bv(0,wv.Narrow);break;case`b`:case`bb`:case`bbb`:t=Bv(0,wv.Abbreviated,Cv.Standalone,!0);break;case`bbbb`:t=Bv(0,wv.Wide,Cv.Standalone,!0);break;case`bbbbb`:t=Bv(0,wv.Narrow,Cv.Standalone,!0);break;case`B`:case`BB`:case`BBB`:t=Bv(0,wv.Abbreviated,Cv.Format,!0);break;case`BBBB`:t=Bv(0,wv.Wide,Cv.Format,!0);break;case`BBBBB`:t=Bv(0,wv.Narrow,Cv.Format,!0);break;case`h`:t=zv(3,1,-12);break;case`hh`:t=zv(3,2,-12);break;case`H`:t=zv(3,1);break;case`HH`:t=zv(3,2);break;case`m`:t=zv(4,1);break;case`mm`:t=zv(4,2);break;case`s`:t=zv(5,1);break;case`ss`:t=zv(5,2);break;case`S`:t=zv(6,1);break;case`SS`:t=zv(6,2);break;case`SSS`:t=zv(6,3);break;case`Z`:case`ZZ`:case`ZZZ`:t=Vv(0);break;case`ZZZZZ`:t=Vv(3);break;case`O`:case`OO`:case`OOO`:case`z`:case`zz`:case`zzz`:t=Vv(1);break;case`OOOO`:case`ZZZZ`:case`zzzz`:t=Vv(2);break;default:return null}return Kv[e]=t,t}function qv(e,t){e=e.replace(/:/g,``);let n=Date.parse(`Jan 01, 1970 00:00:00 `+e)/6e4;return isNaN(n)?t:n}function Xne(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function Zne(e,t,n){let r=e.getTimezoneOffset();return Xne(e,-1*(qv(t,r)-r))}function Qne(e){if(Jv(e))return e;if(typeof e==`number`&&!isNaN(e))return new Date(e);if(typeof e==`string`){if(e=e.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(e)){let[t,n=1,r=1]=e.split(`-`).map(e=>+e);return Fv(t,n-1,r)}let t=parseFloat(e);if(!isNaN(e-t))return new Date(t);let n;if(n=e.match(zne))return $ne(n)}let t=new Date(e);if(!Jv(t))throw new ui(2311,!1);return t}function $ne(e){let t=new Date(0),n=0,r=0,i=e[8]?t.setUTCFullYear:t.setFullYear,a=e[8]?t.setUTCHours:t.setHours;e[9]&&(n=Number(e[9]+e[10]),r=Number(e[9]+e[11])),i.call(t,Number(e[1]),Number(e[2])-1,Number(e[3]));let o=Number(e[4]||0)-n,s=Number(e[5]||0)-r,c=Number(e[6]||0),l=Math.floor(parseFloat(`0.`+(e[7]||0))*1e3);return a.call(t,o,s,c,l),t}function Jv(e){return e instanceof Date&&!isNaN(e.valueOf())}var Yv=(()=>{class e{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;injector=x(gs);constructor(e){this._viewContainerRef=e}ngOnChanges(e){if(this._shouldRecreateView(e)){let e=this._viewContainerRef;if(this._viewRef&&e.remove(e.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let t=this._createContextForwardProxy();this._viewRef=e.createEmbeddedView(this.ngTemplateOutlet,t,{injector:this._getInjector()})}}_getInjector(){return this.ngTemplateOutletInjector===`outlet`?this.injector:this.ngTemplateOutletInjector??void 0}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,t,n)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,t,n):!1,get:(e,t,n)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,t,n)}})}static ɵfac=function(t){return new(t||e)(Bp(bm))};static ɵdir=lh({type:e,selectors:[[``,`ngTemplateOutlet`,``]],inputs:{ngTemplateOutletContext:`ngTemplateOutletContext`,ngTemplateOutlet:`ngTemplateOutlet`,ngTemplateOutletInjector:`ngTemplateOutletInjector`},features:[bc]})}return e})();function ere(e,t){return new ui(2100,!1)}var tre=`mediumDate`,nre=new Ti(``),rre=new Ti(``),Xv=(()=>{class e{locale;defaultTimezone;defaultOptions;constructor(e,t,n){this.locale=e,this.defaultTimezone=t,this.defaultOptions=n}transform(t,n,r,i){if(t==null||t===``||t!==t)return null;try{let e=n??this.defaultOptions?.dateFormat??tre,a=r??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return Hne(t,e,i||this.locale,a)}catch(t){throw ere(e,t.message)}}static ɵfac=function(t){return new(t||e)(Bp(ev,16),Bp(nre,24),Bp(rre,24))};static ɵpipe=uh({name:`date`,type:e,pure:!0})}return e})(),Zv=(()=>{class e{transform(e){return JSON.stringify(e,null,2)}static ɵfac=function(t){return new(t||e)};static ɵpipe=uh({name:`json`,type:e,pure:!1})}return e})();function ire(e,t){t=encodeURIComponent(t);for(let n of e.split(`;`)){let e=n.indexOf(`=`),[r,i]=e==-1?[n,``]:[n.slice(0,e),n.slice(e+1)];if(r.trim()!==t)continue;let a=i;try{a=decodeURIComponent(i)}catch{}return a.length>1&&a[0]===`"`&&a[a.length-1]===`"`&&(a=a.slice(1,-1)),a}return null}var are=`browser`,Qv=class{_doc;constructor(e){this._doc=e}manager},$v=(()=>{class e extends Qv{constructor(e){super(e)}supports(e){return!0}addEventListener(e,t,n,r){return e.addEventListener(t,n,r),()=>this.removeEventListener(e,t,n,r)}removeEventListener(e,t,n,r){return e.removeEventListener(t,n,r)}static ɵfac=function(t){return new(t||e)(ea(_s))};static ɵprov=vi({token:e,factory:e.ɵfac})}return e})(),ey=new Ti(``),ty=(()=>{class e{_zone;_plugins;_eventNameToPlugin=new Map;constructor(e,t){this._zone=t,e.forEach(e=>{e.manager=this});let n=e.filter(e=>!(e instanceof $v));this._plugins=n.slice().reverse();let r=e.find(e=>e instanceof $v);r&&this._plugins.push(r)}addEventListener(e,t,n,r){return this._findPluginFor(t).addEventListener(e,t,n,r)}getZone(){return this._zone}_findPluginFor(e){let t=this._eventNameToPlugin.get(e);if(t)return t;if(t=this._plugins.find(t=>t.supports(e)),!t)throw new ui(-5101,!1);return this._eventNameToPlugin.set(e,t),t}static ɵfac=function(t){return new(t||e)(ea(ey),ea(As))};static ɵprov=vi({token:e,factory:e.ɵfac})}return e})(),ny=`ng-app-id`;function ry(e){for(let t of e)t.remove()}function iy(e,t){let n=t.createElement(`style`);return n.textContent=e,n}function ore(e,t,n,r){let i=e.head?.querySelectorAll(`style[${ny}="${t}"],link[${ny}="${t}"]`);if(!i||i.length===0)return!1;for(let e of i)e.removeAttribute(ny),e instanceof HTMLLinkElement?r.set(e.href.slice(e.href.lastIndexOf(`/`)+1),{usage:0,elements:[e]}):e.textContent&&n.set(e.textContent,{usage:0,elements:[e]});return!0}function ay(e,t){let n=t.createElement(`link`);return n.setAttribute(`rel`,`stylesheet`),n.setAttribute(`href`,e),n}var oy=(()=>{class e{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(e,t,n,r={}){this.doc=e,this.appId=t,this.nonce=n,ore(e,t,this.inline,this.external)&&this.hosts.add(e.head)}addStyles(e,t){for(let t of e)this.addUsage(t,this.inline,iy);t?.forEach(e=>this.addUsage(e,this.external,ay))}removeStyles(e,t){for(let t of e)this.removeUsage(t,this.inline);t?.forEach(e=>this.removeUsage(e,this.external))}addUsage(e,t,n){let r=t.get(e);r?r.usage++:t.set(e,{usage:1,elements:[...this.hosts].map(t=>this.addElement(t,n(e,this.doc)))})}removeUsage(e,t){let n=t.get(e);n&&(n.usage--,n.usage<=0&&(ry(n.elements),t.delete(e)))}ngOnDestroy(){for(let[,{elements:e}]of[...this.inline,...this.external])ry(e);this.hosts.clear()}addHost(e){if(!this.hosts.has(e)){this.hosts.add(e);for(let[t,{elements:n}]of this.inline)n.push(this.addElement(e,iy(t,this.doc)));for(let[t,{elements:n}]of this.external)n.push(this.addElement(e,ay(t,this.doc)))}}removeHost(e){this.hosts.delete(e);for(let t of[...this.inline.values(),...this.external.values()]){let n=[];for(let r of t.elements)r.parentNode===e?r.remove():n.push(r);t.elements=n}}addElement(e,t){return this.nonce&&t.setAttribute(`nonce`,this.nonce),e.appendChild(t)}static ɵfac=function(t){return new(t||e)(ea(_s),ea(Ks),ea(Xs,8),ea(Ys))};static ɵprov=vi({token:e,factory:e.ɵfac})}return e})(),sy={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`},cy=/%COMP%/g,ly=`%COMP%`,sre=`_nghost-${ly}`,cre=`_ngcontent-${ly}`,lre=!0,ure=new Ti(``,{factory:()=>lre}),dre=new Ti(``);function fre(e){return cre.replace(cy,e)}function pre(e){return sre.replace(cy,e)}function uy(e,t){return t.map(t=>t.replace(cy,e))}var dy=(()=>{class e{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;cssVarNamespace;constructor(e,t,n,r,i,a,o=null,s=null,c=null){this.eventManager=e,this.sharedStylesHost=t,this.appId=n,this.removeStylesOnCompDestroy=r,this.doc=i,this.ngZone=a,this.nonce=o,this.tracingService=s,this.cssVarNamespace=c??``,this.defaultRenderer=new fy(e,i,a,this.tracingService,this.cssVarNamespace)}createRenderer(e,t){if(!e||!t)return this.defaultRenderer;let n=this.getOrCreateRenderer(e,t);return n instanceof gy?n.applyToHost(e):n instanceof hy&&n.applyStyles(),n}getOrCreateRenderer(e,t){let n=this.rendererByCompId,r=n.get(t.id);if(!r){let i=this.doc,a=this.ngZone,o=this.eventManager,s=this.sharedStylesHost,c=this.removeStylesOnCompDestroy,l=this.tracingService;switch(t.encapsulation){case ru.Emulated:r=new gy(o,s,t,this.appId,c,i,a,l,this.cssVarNamespace);break;case ru.ShadowDom:return new my(o,e,t,i,a,this.nonce,l,this.cssVarNamespace,s);case ru.ExperimentalIsolatedShadowDom:return new my(o,e,t,i,a,this.nonce,l,this.cssVarNamespace);default:r=new hy(o,s,t,c,i,a,l,this.cssVarNamespace)}n.set(t.id,r)}return r}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(e){this.rendererByCompId.delete(e)}static ɵfac=function(t){return new(t||e)(ea(ty),ea(Rp),ea(Ks),ea(ure),ea(_s),ea(As),ea(Xs),ea(Zu,8),ea(dre,8))};static ɵprov=vi({token:e,factory:e.ɵfac})}return e})(),fy=class{eventManager;doc;ngZone;tracingService;cssVarNamespace;data=Object.create(null);throwOnSyntheticProps=!0;constructor(e,t,n,r,i=``){this.eventManager=e,this.doc=t,this.ngZone=n,this.tracingService=r,this.cssVarNamespace=i}destroy(){}destroyNode=null;createElement(e,t){return t?this.doc.createElementNS(sy[t]||t,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,t){(py(e)?e.content:e).appendChild(t)}insertBefore(e,t,n){if(e){let r=py(e)?e.content:e;if(n!=null&&n.parentNode!==r)throw new ui(-5106,!1);r.insertBefore(t,n)}}removeChild(e,t){t.remove()}selectRootElement(e,t){let n=typeof e==`string`?this.doc.querySelector(e):e;if(!n)throw new ui(-5104,!1);return t||(n.textContent=``),n}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,t,n,r){if(r){t=r+`:`+t;let i=sy[r];i?e.setAttributeNS(i,t,n):e.setAttribute(t,n)}else e.setAttribute(t,n)}removeAttribute(e,t,n){if(n){let r=sy[n];r?e.removeAttributeNS(r,t):e.removeAttribute(`${n}:${t}`)}else e.removeAttribute(t)}addClass(e,t){e.classList.add(t)}removeClass(e,t){e.classList.remove(t)}setStyle(e,t,n,r){let i=t.startsWith(`--`);i&&(t=t.replace(`%NS%`,this.cssVarNamespace)),i||r&(Mu.DashCase|Mu.Important)?e.style.setProperty(t,n,r&Mu.Important?`important`:``):e.style[t]=n}removeStyle(e,t,n){let r=t.startsWith(`--`);r&&(t=t.replace(`%NS%`,this.cssVarNamespace)),r||n&Mu.DashCase?e.style.removeProperty(t):e.style[t]=``}setProperty(e,t,n){e!=null&&(e[t]=n)}setValue(e,t){e.nodeValue=t}listen(e,t,n,r){if(typeof e==`string`&&(e=Sv().getGlobalEventTarget(this.doc,e),!e))throw new ui(-5102,!1);let i=this.decoratePreventDefault(n);return this.tracingService?.wrapEventListener&&(i=this.tracingService.wrapEventListener(e,t,i)),this.eventManager.addEventListener(e,t,i,r)}decoratePreventDefault(e){return t=>{if(t===`__ngUnwrap__`)return e;e(t)===!1&&t.preventDefault()}}};function py(e){return e.tagName===`TEMPLATE`&&e.content!==void 0}var my=class extends fy{hostEl;sharedStylesHost;shadowRoot;constructor(e,t,n,r,i,a,o,s,c){super(e,r,i,o,s),this.hostEl=t,this.sharedStylesHost=c,this.shadowRoot=t.attachShadow({mode:`open`}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let l=n.styles;l=uy(n.id,l).map(e=>e.replace(/%NS%/g,s));for(let e of l){let t=document.createElement(`style`);a&&t.setAttribute(`nonce`,a),t.textContent=e,this.shadowRoot.appendChild(t)}let u=n.getExternalStyles?.();if(u)for(let e of u){let t=ay(e,r);a&&t.setAttribute(`nonce`,a),this.shadowRoot.appendChild(t)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,t){return super.appendChild(this.nodeOrShadowRoot(e),t)}insertBefore(e,t,n){return super.insertBefore(this.nodeOrShadowRoot(e),t,n)}removeChild(e,t){return super.removeChild(null,t)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}},hy=class extends fy{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(e,t,n,r,i,a,o,s,c){super(e,i,a,o,s),this.sharedStylesHost=t,this.removeStylesOnCompDestroy=r;let l=n.styles,u=c?uy(c,l):l;this.styles=u.map(e=>e.replace(/%NS%/g,s)),this.styleUrls=n.getExternalStyles?.(c)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&zu.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},gy=class extends hy{contentAttr;hostAttr;constructor(e,t,n,r,i,a,o,s,c){let l=r+`-`+n.id;super(e,t,n,i,a,o,s,c,l),this.contentAttr=fre(l),this.hostAttr=pre(l)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,``)}createElement(e,t){let n=super.createElement(e,t);return super.setAttribute(n,this.contentAttr,``),n}},mre=class e extends jne{supportsDOMEvents=!0;static makeCurrent(){Ane(new e)}onAndCancel(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}dispatchEvent(e,t){e.dispatchEvent(t)}remove(e){e.remove()}createElement(e,t){return t||=this.getDefaultDocument(),t.createElement(e)}createHtmlDocument(){return document.implementation.createHTMLDocument(`fakeTitle`)}getDefaultDocument(){return document}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}isShadowRoot(e){return e instanceof DocumentFragment}getGlobalEventTarget(e,t){return t===`window`?window:t===`document`?e:t===`body`?e.body:null}getBaseHref(e){let t=hre();return t==null?null:gre(t)}resetBaseElement(){_y=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return ire(document.cookie,e)}},_y=null;function hre(){return _y||=document.head.querySelector(`base`),_y?_y.getAttribute(`href`):null}function gre(e){return new URL(e,document.baseURI).pathname}var vy=[`alt`,`control`,`meta`,`shift`],_re={"\b":`Backspace`," ":`Tab`,"":`Delete`,"\x1B":`Escape`,Del:`Delete`,Esc:`Escape`,Left:`ArrowLeft`,Right:`ArrowRight`,Up:`ArrowUp`,Down:`ArrowDown`,Menu:`ContextMenu`,Scroll:`ScrollLock`,Win:`OS`},vre={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey},yre=(()=>{class e extends Qv{constructor(e){super(e)}supports(t){return e.parseEventName(t)!=null}addEventListener(t,n,r,i){let a=e.parseEventName(n),o=e.eventCallback(a.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Sv().onAndCancel(t,a.domEventName,o,i))}static parseEventName(t){let n=t.toLowerCase().split(`.`),r=n.shift();if(n.length===0||r!==`keydown`&&r!==`keyup`)return null;let i=e._normalizeKey(n.pop()),a=``,o=n.indexOf(`code`);if(o>-1&&(n.splice(o,1),a=`code.`),vy.forEach(e=>{let t=n.indexOf(e);t>-1&&(n.splice(t,1),a+=e+`.`)}),a+=i,n.length!=0||i.length===0)return null;let s={};return s.domEventName=r,s.fullKey=a,s}static matchEventFullKeyCode(e,t){let n=_re[e.key]||e.key,r=``;return t.indexOf(`code.`)>-1&&(n=e.code,r=`code.`),n==null||!n?!1:(n=n.toLowerCase(),n===` `?n=`space`:n===`.`&&(n=`dot`),vy.forEach(t=>{if(t!==n){let n=vre[t];n(e)&&(r+=t+`.`)}}),r+=n,r===t)}static eventCallback(t,n,r){return i=>{e.matchEventFullKeyCode(i,t)&&r.runGuarded(()=>n(i))}}static _normalizeKey(e){return e===`esc`?`escape`:e}static ɵfac=function(t){return new(t||e)(ea(_s))};static ɵprov=vi({token:e,factory:e.ɵfac})}return e})();async function bre(e,t,n){return Dne({rootComponent:e,...xre(t,n)})}function xre(e,t){return{platformRef:t?.platformRef,appProviders:[...Ere,...e?.providers??[]],platformProviders:Tre}}function Sre(){mre.makeCurrent()}function Cre(){return new Hs}function wre(){return Gl(document),document}var Tre=[{provide:Ys,useValue:are},{provide:Js,useValue:Sre,multi:!0},{provide:_s,useFactory:wre}],Ere=[{provide:Pa,useValue:`root`},{provide:Hs,useFactory:Cre},{provide:ey,useClass:$v,multi:!0},{provide:ey,useClass:yre,multi:!0},dy,{provide:Rp,useClass:oy},{provide:oy,useExisting:Rp},ty,{provide:ip,useExisting:dy},[]];function yy(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isArray(e)&&`raw`in e){let i=e,a=``;for(let e=0;e{let r=new kre({code:i,why:by(a.why,e),fix:by(a.fix,e),docs:o,cause:e.cause,sources:e.sources,data:by(a.data,e)},s);for(let e of t)e(r,n);return r};n[i]=s}return n}function Sy(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n{e=n,t=r}),resolve:e,reject:t}}var Oy=Math.random.bind(Math),ky=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function Ay(e=21){let t=``,n=e;for(;n--;)t+=ky[Oy()*64|0];return t}var jy=6e4,My=e=>e,Ny=My,{clearTimeout:Py,setTimeout:Fy}=globalThis;function Iy(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=My,deserialize:s=Ny,resolver:c,bind:l=`rpc`,timeout:u=jy,proxify:d=!0}=t,f=!1,p=new Map,m,ee;async function h(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:`q`};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(m)try{await m}finally{m=void 0}let{promise:l,resolve:d,reject:h}=Dy(),g=Ay();s.i=g;let te;async function ne(n=s){return u>=0&&(te=Fy(()=>{try{if(t.onTimeoutError?.call(ee,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){h(e)}p.delete(g)},u),typeof te==`object`&&(te=te.unref?.())),p.set(g,{resolve:d,reject:h,timeoutId:te,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(ee,s,ne,d):await ne()}catch(e){if(t.onGeneralError?.call(ee,e)!==!0)throw e;return}finally{Py(te),p.delete(g)}return l}let g={$call:(e,...t)=>h(e,t,!1),$callOptional:(e,...t)=>h(e,t,!1,!0),$callEvent:(e,...t)=>h(e,t,!0),$callRaw:e=>h(e.method,e.args,e.event,e.optional),$rejectPendingCalls:ne,get $closed(){return f},get $meta(){return t.meta},$close:te,$functions:e};ee=d?new Proxy({},{get(t,n){if(Object.hasOwn(g,n))return g[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>h(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>h(n,e,!1);return i.asEvent=r,i}}):g;function te(e){f=!0,p.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),p.clear(),i(re)}function ne(e){let t=Array.from(p.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return p.clear(),t}async function re(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(ee,e)!==!0)throw e;return}if(a.t===`q`){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(ee,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?ee:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(ee,f,r,s)===!0)return;if(!f)try{await n(o({t:`s`,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(ee,e,r,s)!==!0)throw e}try{await n(o({t:`s`,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(ee,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=p.get(e);r&&(Py(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(re),ee}function Ly(e,t){return t.safety?t.safety:e===`static`||e===`query`||e==null?`read`:`action`}var Ry=Object.freeze({type:`object`,additionalProperties:!0});function zy(e){let t=e[`~standard`];if(t.jsonSchema)try{return t.jsonSchema.input({target:`draft-2020-12`})}catch{return Ry}return Ry}function By(e){if(!e||e.length===0)return{type:`object`,properties:{}};let t={},n=[];for(let r=0;rn[`arg${t}`]);if(`arg0`in n){let e=[];for(;`arg${e.length}`in n;)e.push(n[`arg${e.length}`]);return e}return Object.keys(n).length===0?[]:void 0}function Hy(e,t){return Vy(e,t)??[e]}function Uy(e){return typeof e==`string`?`'${e}'`:new qy().serialize(e)}var Wy=` _-,;:!?.'"()[]{}@*/\\&#%\`^+<=>|~$0123456789abcdefghijklmnopqrstuvwxyz`,Gy=(function(){let e=new Uint8Array(128);for(let t=0;t<69;t++)e[Wy.charCodeAt(t)]=t+1;for(let t=65;t<=90;t++)e[t]=e[t+32];return e})();function Ky(e,t){if(e===t)return 0;let n=Math.min(e.length,t.length),r=0;for(let i=0;ia?-1:1)}return e.length===t.length?r:e.lengththis.compare(e[0],t[0])),r=`${e}{`;for(let e=0;ethis.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e})(),Jy=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],Yy=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],Xy=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,Zy=[],Qy=class{_data=new $y;_hash=new $y([...Jy]);_nDataBytes=0;_minBufferSize=0;finalize(e){e&&this._append(e);let t=this._nDataBytes*8,n=this._data.sigBytes*8;return this._data.words[n>>>5]|=128<<24-n%32,this._data.words[(n+64>>>9<<4)+14]=Math.floor(t/4294967296),this._data.words[(n+64>>>9<<4)+15]=t,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(e,t){let n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],c=n[5],l=n[6],u=n[7];for(let n=0;n<64;n++){if(n<16)Zy[n]=e[t+n]|0;else{let e=Zy[n-15],t=(e<<25|e>>>7)^(e<<14|e>>>18)^e>>>3,r=Zy[n-2],i=(r<<15|r>>>17)^(r<<13|r>>>19)^r>>>10;Zy[n]=t+Zy[n-7]+i+Zy[n-16]}let d=s&c^~s&l,f=r&i^r&a^i&a,p=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),m=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),ee=u+m+d+Yy[n]+Zy[n],h=p+f;u=l,l=c,c=s,s=o+ee|0,o=a,a=i,i=r,r=ee+h|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+u|0}_append(e){typeof e==`string`&&(e=$y.fromUtf8(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes}_process(e){let t,n=this._data.sigBytes/64;n=e?Math.ceil(n):Math.max((n|0)-this._minBufferSize,0);let r=n*16,i=Math.min(r*4,this._data.sigBytes);if(r){for(let e=0;e>>2]|=(n.charCodeAt(e)&255)<<24-e%4*8;return new e(i,r)}toBase64(){let e=[];for(let t=0;t>>2]>>>24-t%4*8&255,r=this.words[t+1>>>2]>>>24-(t+1)%4*8&255,i=this.words[t+2>>>2]>>>24-(t+2)%4*8&255,a=n<<16|r<<8|i;for(let n=0;n<4&&t*8+n*6>>6*(3-n)&63))}return e.join(``)}concat(e){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let t=0;t>>2]>>>24-t%4*8&255;this.words[this.sigBytes+t>>>2]|=n<<24-(this.sigBytes+t)%4*8}else for(let t=0;t>>2]=e.words[t>>>2];this.sigBytes+=e.sigBytes}};function eb(e){return new Qy().finalize(e).toBase64()}function tb(e){return eb(Uy(e))}function nb(e){return tb(e)}function rb(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}var ib=/^[\w+.-]{2,}:\/\//;function ab(e){return e.endsWith(`/`)?e:`${e}/`}function ob(e){return(e.endsWith(`/`)?e.slice(0,-1):e)||`/`}function sb(e,...t){let n=e;for(let e of t)e&&e!==`/`&&(n=n?ab(n)+e.replace(/^\.?\//,``):e);return n}function cb(e,t){if(!t||t===`/`||ib.test(e))return e;let n=ob(t);return e.startsWith(n)?e:sb(n,e)}function lb(e,t){let n=e.match(ib);return t+(n?e.slice(n[0].length):e)}var ub=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function db(e=21){let t=``,n=e;for(;n--;)t+=ub[Math.random()*64|0];return t}var fb=Symbol.for(`immer-nothing`),pb=Symbol.for(`immer-draftable`),mb=Symbol.for(`immer-state`),hb=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function gb(e,...t){{let n=hb[e],r=Bb(n)?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}}var _b=Object,vb=_b.getPrototypeOf,yb=`constructor`,bb=`prototype`,xb=`configurable`,Sb=`enumerable`,Cb=`writable`,wb=`value`,Tb=e=>!!e&&!!e[mb];function Eb(e){return e?kb(e)||Ib(e)||!!e[pb]||!!e[yb]?.[pb]||Lb(e)||Rb(e):!1}var Db=_b[bb][yb].toString(),Ob=new WeakMap;function kb(e){if(!e||!zb(e))return!1;let t=vb(e);if(t===null||t===_b[bb])return!0;let n=_b.hasOwnProperty.call(t,yb)&&t[yb];if(n===Object)return!0;if(!Bb(n))return!1;let r=Ob.get(n);return r===void 0&&(r=Function.toString.call(n),Ob.set(n,r)),r===Db}function Ab(e,t,n=!0){jb(e)===0?(n?Reflect.ownKeys(e):_b.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function jb(e){let t=e[mb];return t?t.type_:Ib(e)?1:Lb(e)?2:Rb(e)?3:0}var Mb=(e,t,n=jb(e))=>n===2?e.has(t):_b[bb].hasOwnProperty.call(e,t),Nb=(e,t,n=jb(e))=>n===2?e.get(t):e[t],Pb=(e,t,n,r=jb(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function Fb(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Ib=Array.isArray,Lb=e=>e instanceof Map,Rb=e=>e instanceof Set,zb=e=>typeof e==`object`,Bb=e=>typeof e==`function`,Vb=e=>typeof e==`boolean`;function Hb(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Ub=e=>zb(e)?e?.[mb]:null,Wb=e=>e.copy_||e.base_,Gb=e=>e.modified_?e.copy_:e.base_;function Kb(e,t){if(Lb(e))return new Map(e);if(Rb(e))return new Set(e);if(Ib(e))return Array[bb].slice.call(e);let n=kb(e);if(t===!0||t===`class_only`&&!n){let t=_b.getOwnPropertyDescriptors(e);delete t[mb];let n=Reflect.ownKeys(t);for(let r=0;r1&&_b.defineProperties(e,{set:Yb,add:Yb,clear:Yb,delete:Yb}),_b.freeze(e),t&&Ab(e,(e,t)=>{qb(t,!0)},!1),e)}function Jb(){gb(2)}var Yb={[wb]:Jb};function Xb(e){return e===null||!zb(e)||_b.isFrozen(e)}var Zb=`MapSet`,Qb=`Patches`,$b=`ArrayMethods`,ex={};function tx(e){let t=ex[e];return t||gb(0,e),t}var nx=e=>!!ex[e];function rx(e,t){ex[e]||(ex[e]=t)}var ix,ax=()=>ix,ox=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:nx(Zb)?tx(Zb):void 0,arrayMethodsPlugin_:nx($b)?tx($b):void 0});function sx(e,t){t&&(e.patchPlugin_=tx(Qb),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function cx(e){lx(e),e.drafts_.forEach(dx),e.drafts_=null}function lx(e){e===ix&&(ix=e.parent_)}var ux=e=>ix=ox(ix,e);function dx(e){let t=e[mb];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function fx(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[mb].modified_&&(cx(t),gb(4)),Eb(e)&&(e=px(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[mb].base_,e,t)}else e=px(t,n);return mx(t,e,!0),cx(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===fb?void 0:e}function px(e,t){if(Xb(t))return t;let n=t[mb];if(!n)return Sx(t,e.handledSet_,e);if(!gx(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);bx(n,e)}return n.copy_}function mx(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&qb(t,n)}function hx(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var gx=(e,t)=>e.scope_===t,_x=[];function vx(e,t,n,r){let i=Wb(e),a=e.type_;if(r!==void 0&&Nb(i,r,a)===t){Pb(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;Ab(i,(e,n)=>{if(Tb(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??_x;for(let e of o)Pb(i,e,n,a)}function yx(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!gx(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=Gb(i);vx(e,i.draft_??i,a,n),bx(i,r)})}function bx(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}hx(e)}}function xx(e,t,n){let{scope_:r}=e;if(Tb(n)){let i=n[mb];gx(i,r)&&i.callbacks_.push(function(){jx(e),vx(e,n,Gb(i),t)})}else Eb(n)&&e.callbacks_.push(function(){let i=Wb(e);e.type_===3?i.has(n)&&Sx(n,r.handledSet_,r):Nb(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&Sx(Nb(e.copy_,t,e.type_),r.handledSet_,r)})}function Sx(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||Tb(e)||t.has(e)||!Eb(e)||Xb(e)?e:(t.add(e),Ab(e,(r,i)=>{if(Tb(i)){let t=i[mb];gx(t,n)&&(Pb(e,r,Gb(t),e.type_),hx(t))}else Eb(i)&&Sx(i,t,n)}),e)}function Cx(e,t){let n=Ib(e),r={type_:+!!n,scope_:t?t.scope_:ax(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=wx;n&&(i=[r],a=Tx);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var wx={get(e,t){if(t===mb)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=Wb(e);if(!Mb(i,t,e.type_))return Ox(e,i,t);let a=i[t];if(e.finalized_||!Eb(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Hb(t))return a;if(a===Ex(e.base_,t)||Dx(e,t,a)){jx(e);let n=e.type_===1?+t:t,r=Nx(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in Wb(e)},ownKeys(e){return Reflect.ownKeys(Wb(e))},set(e,t,n){let r=kx(Wb(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=Ex(Wb(e),t),i=r?.[mb];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.delete(t),!0;if(Fb(n,r)&&(n!==void 0||Mb(e.base_,t,e.type_)))return!0;jx(e),Ax(e)}return e.copy_[t]===n&&(n!==void 0||Mb(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),xx(e,t,n),!0)},deleteProperty(e,t){return jx(e),Ex(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),Ax(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=Wb(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[Cb]:!0,[xb]:e.type_!==1||t!==`length`,[Sb]:r[Sb],[wb]:n[t]}},defineProperty(){gb(11)},getPrototypeOf(e){return vb(e.base_)},setPrototypeOf(){gb(12)}},Tx={};for(let e in wx){let t=wx[e];Tx[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}Tx.deleteProperty=function(e,t){return isNaN(parseInt(t))&&gb(13),Tx.set.call(this,e,t,void 0)},Tx.set=function(e,t,n){return t!==`length`&&isNaN(parseInt(t))&&gb(14),wx.set.call(this,e[0],t,n,e[0])};function Ex(e,t){let n=e[mb];return(n?Wb(n):e)[t]}function Dx(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!Eb(n)||n[mb]?!1:e.baseRefs_.has(n)}function Ox(e,t,n){let r=kx(t,n);return r?wb in r?r[wb]:r.get?.call(e.draft_):void 0}function kx(e,t){if(!(t in e))return;let n=vb(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=vb(n)}}function Ax(e){e.modified_||(e.modified_=!0,e.parent_&&Ax(e.parent_))}function jx(e){e.copy_||=(e.assigned_=new Map,Kb(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Mx=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(Bb(e)&&!Bb(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}Bb(t)||gb(6),n!==void 0&&!Bb(n)&&gb(7);let r;if(Eb(e)){let i=ux(this),a=Nx(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?cx(i):lx(i)}return sx(i,n),fx(r,i)}if(!e||!zb(e)){if(r=t(e),r===void 0&&(r=e),r===fb&&(r=void 0),this.autoFreeze_&&qb(r,!0),n){let t=[],i=[];tx(Qb).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}gb(1,e)},this.produceWithPatches=(e,t)=>{if(Bb(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},Vb(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Vb(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Vb(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Eb(e)||gb(8),Tb(e)&&(e=Px(e));let t=ux(this),n=Nx(t,e,void 0);return n[mb].isManual_=!0,lx(t),n}finishDraft(e,t){let n=e&&e[mb];(!n||!n.isManual_)&&gb(9);let{scope_:r}=n;return sx(r,t),fx(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=tx(Qb).applyPatches_;return Tb(e)?r(e,t):this.produce(e,e=>r(e,t))}};function Nx(e,t,n,r){let[i,a]=Lb(t)?tx(Zb).proxyMap_(t,n):Rb(t)?tx(Zb).proxySet_(t,n):Cx(t,n);return(n?.scope_??ax()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?yx(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function Px(e){return Tb(e)||gb(10,e),Fx(e)}function Fx(e){if(!Eb(e)||Xb(e))return e;let t=e[mb],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Kb(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Kb(e,!0);let i=n;return Rb(n)&&(n=new Set),Ab(i,(e,t)=>{Pb(n,e,Fx(t))},r),t&&(t.finalized_=!1),n}function Ix(){hb.push(`Sets cannot have "replace" patches.`,function(e){return`Unsupported patch operation: `+e},function(e){return`Cannot apply patch, path doesn't resolve: `+e},`Patching reserved attributes like __proto__, prototype and constructor is not allowed`);function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=Ub(Nb(e,n.key_)),i=Nb(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||Mb(e,o))||n.parent_.type_===1&&n.parent_.allIndicesReassigned_)return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e{let u=Nb(o,e,c),f=Nb(s,e,c),p=l?Mb(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===fb?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e[e,u(t)]));if(Rb(e))return new Set(Array.from(e).map(u));let t=Object.create(vb(e));for(let n in e)t[n]=u(e[n]);return Mb(e,pb)&&(t[pb]=e[pb]),t}function d(e){return Tb(e)?u(e):e}rx(Qb,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var Lx=new Mx,Rx=Lx.produce,zx=Lx.produceWithPatches.bind(Lx),Bx=Lx.applyPatches.bind(Lx),Vx=1e3;function Hx(e,t){if(e.add(t),e.size>Vx){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function Ux(e){let{enablePatches:t=!1}=e;t&&Ix();let n=rb(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=db())=>{i.has(t)||(Ix(),r=Bx(r,e),Hx(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=db())=>{if(!i.has(a)){if(Hx(i,a),t){let[t,i]=zx(r,e);if(t===r)return;r=t,n.emit(`updated`,r,i,a)}else{let t=Rx(r,e);if(t===r)return;r=t,n.emit(`updated`,r,void 0,a)}}},syncIds:i}}var Wx=typeof self==`object`?self:globalThis,Gx=new Set([`Error`,`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`,`AggregateError`]),Kx=new Set([`Boolean`,`Number`,`String`,`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float16Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function qx(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o,r=Gx.has(e)?Wx[e]:void 0;return n(new(r??Wx.Error)(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}if(typeof a==`string`&&Kx.has(a))return n(new Wx[a](o),i);throw TypeError(`unable to deserialize unsafe or unknown type: ${String(a)}`)};return r}function Jx(e){return qx(new Map,e)(0)}var Yx=``,{toString:Xx}={},{keys:Zx}=Object;function Qx(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=Xx.call(e).slice(8,-1);switch(n){case`Array`:return[1,Yx];case`Object`:return[2,Yx];case`Date`:return[3,Yx];case`RegExp`:return[4,Yx];case`Map`:return[5,Yx];case`Set`:return[6,Yx];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function $x([e,t]){return e===0&&(t===`function`||t===`symbol`)}function eS(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=Qx(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of Zx(r))(e||!$x(Qx(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!($x(Qx(n))||$x(Qx(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!$x(Qx(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function tS(e,t={}){let n=[];return eS(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}var{parse:nS,stringify:rS}=JSON,iS={json:!0,lossy:!0};function aS(e){return Jx(nS(e))}function oS(e){return rS(tS(e,iS))}function sS(e){return Jx(e)}function cS(e){return oS(e)}function lS(e){return aS(e)}var uS=256,dS=class extends Error{name=`StreamClosedError`};function fS(e={}){let t=e.id??db(),n=Math.max(0,e.replayWindow??0),r=rb(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new dS(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&(a.length-n===1?a.shift():a.splice(0,a.length-n))),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=mS(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function pS(e={}){let t=e.id??db(),n=Math.max(1,e.highWaterMark??uS),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function ee(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function h(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){ee()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return h()},cancel:ee,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return ee(),Promise.resolve({value:void 0,done:!0})}}}}}function mS(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}var hS=128;function gS(e){return e.replace(/[^\w-]+/g,`_`).slice(0,hS)}var _S=`modulepreload`,vS=function(e,t){return new URL(e,t).href},yS={},bS=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=vS(t,n),t=s(t),t in yS)return;yS[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:_S,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},xS=`__connection.json`,SS=`__DEVFRAME_CONNECTION__`,CS=`x-birpc-session`,wS=`__rpc-dump/index.json`,TS=`devframe:services`,ES=`devframe_otp`,DS=`devframe_auth_token`;Cy.postMessage.remoteAssetsError;var OS=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>nb(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}},kS=Ey({docsBase:`https://devfra.me/errors`,codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is \`false\`; MCP requires JSON-serializable data.`,fix:"Remove `jsonSerializable: false`, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."},DF0043:{why:e=>`RPC function "${e.name}" received an invalid argument at position ${e.index}: ${e.issues}`,fix:"Pass a value that satisfies the `args` schema declared for this function."},DF0044:{why:e=>`RPC function "${e.name}" returned a value that failed its \`returns\` schema: ${e.issues}`,fix:"Make the handler return a value that satisfies the `returns` schema, or relax the schema."}}});function AS(e){if(e.agent&&e.jsonSerializable===!1)throw kS.DF0019({name:e.name});e.agent&&!e.jsonSerializable&&(e.jsonSerializable=!0)}async function jS(e,t){let n=e[`~standard`].validate(t);return n instanceof Promise?await n:n}function MS(e){return e.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `)}async function NS(e,t,n){let r=n.slice();if(!t||t.length===0)return r;for(let r=0;r{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function IS(e,t){let n=e.handler;if(!n){let r=await FS(e,t);if(!r.handler)throw kS.DF0024({name:e.name});n=r.handler}let r=e.args,i=e.returns;if(!r&&!i)return n;let a=n;return async(...t)=>{let n=await NS(e.name,r,t),o=await a(...n);return await PS(e.name,i,o)}}var LS=class{context;definitions=new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return IS(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw kS.DF0021({name:e.name});AS(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw kS.DF0022({name:e.name});AS(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await IS(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw kS.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function RS(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw BS(t,`undefined`,r,e);return n}return i!==null&&zS(i,r,e,t),n})}function zS(e,t,n,r){if(typeof e==`bigint`)throw BS(r,`BigInt`,t,n);if(typeof e!=`object`)return;if(e instanceof Map)throw BS(r,`Map`,t,n);if(e instanceof Set)throw BS(r,`Set`,t,n);if(e instanceof Date)throw BS(r,`Date`,t,n);if(Array.isArray(e))return;let i=Object.getPrototypeOf(e);if(i!==null&&i!==Object.prototype)throw BS(r,e.constructor?.name??`class instance`,t,n)}function BS(e,t,n,r){let i=VS(n,r);return kS.DF0020({name:e||``,type:t,path:i})}function VS(e,t){return Array.isArray(e)?`[${t}]`:t===``?``:t}var HS=`__DEVFRAME_CONNECTION_META__`,US=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function WS(e){let t=[()=>window?.[e],()=>globalThis?.[e],()=>parent.window?.[e]];for(let e of t)try{let t=e();if(t)return t}catch{}}function GS(){return WS(SS)}function KS(){return WS(HS)}function qS(e){if(e)return e;try{let e=localStorage.getItem(US);if(e)return e}catch{}return WS(US)}function JS(e){globalThis[SS]=e,globalThis[HS]={...e.connectionMeta,baseUrl:e.metaBaseUrl},e.authToken&&YS(e.authToken)}function YS(e){try{localStorage.setItem(US,e)}catch{}globalThis[US]=e;let t=GS();t&&(globalThis[SS]={...t,authToken:e})}function XS(e){let t=cb(xS,e);try{return new URL(t,globalThis.location?.href).href}catch{return t}}function ZS(e,t){return t&&t!==e.authToken?{...e,authToken:t}:e}function QS(){let e=GS();if(e)return ZS(e,qS()??e.authToken??e.connectionMeta.authToken);let t=KS();if(t)return{connectionMeta:t,metaBaseUrl:t.baseUrl??XS(`./`),authToken:qS(t.authToken)}}async function $S(e={}){if(e.connection){let t=ZS(e.connection,qS(e.authToken??e.connection.authToken??e.connection.connectionMeta.authToken));return JS(t),t}let t=Array.isArray(e.baseURL)?e.baseURL:[e.baseURL??`./`];if(e.connectionMeta){let n={connectionMeta:e.connectionMeta,metaBaseUrl:XS(t[0]??`./`),authToken:qS(e.authToken??e.connectionMeta.authToken)};return JS(n),n}let n=QS();if(n){let t=ZS(n,qS(e.authToken??n.authToken??n.connectionMeta.authToken));return JS(t),t}let r=[];for(let n of t){let t=cb(xS,n),i=XS(n);try{let n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch connection meta from ${i}: ${n.status}`);let r=await n.json(),a=n.url||i,o={connectionMeta:r,metaBaseUrl:r.baseUrl?new URL(r.baseUrl,a).href:a,authToken:qS(e.authToken??r.authToken)};return JS(o),o}catch(e){r.push(e)}}throw Error(`Failed to get connection meta from ${t.join(`, `)}`,{cause:r})}var eC=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function tC(e=ES){try{let t=globalThis.location?.hash?.replace(/^#/,``)??``;return new URLSearchParams(t).get(e)||void 0}catch{return}}function nC(e){try{let t=new URL(globalThis.location.href),n=new URLSearchParams(t.hash.replace(/^#/,``));if(!n.has(e))return;n.delete(e),t.hash=n.toString(),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function rC(e=ES){let t=tC(e);return t&&nC(e),t}async function iC(e,t={}){let n=rC(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}function aC(e){let t={},n=new WeakMap,r,i=()=>(r??=e.sharedState.get(TS,{initialValue:{}}).then(e=>(t=e.value(),e.on(`updated`,e=>{t=e}),e)),r);return i(),{state:i,has:e=>e in t,keys:()=>Object.keys(t),get:r=>{let i=t[r];if(!i)return;let a=n.get(i);return a||(a={...i,rpc:e.scope(i.scope).rpc},n.set(i,a)),a}}}function oC(e){let t=new Map,n=new Map,r=new Map,i=new Set,a=e.connectionMeta.backend===`static`;function o(e,t){let n=r.get(e);return n&&typeof n==`object`&&!Array.isArray(n)&&typeof t==`object`&&!Array.isArray(t)?{...n,...t}:t}e.client.register({name:Cy.broadcast.clientStateUpdated,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.mutate(()=>o(e,n),r)}}),e.client.register({name:Cy.broadcast.clientStatePatch,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.patch(n,r)}});function s(t,n){let r=[];return r.push(n.on(`updated`,(n,r,i)=>{a||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,i):e.callEvent(`devframe:rpc:server-state:set`,t,n,i))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return i.add(e),()=>{i.delete(e)}},delete(e){let i=n.get(e);n.delete(e);let a=t.delete(e);return r.delete(e),i?.(),a},get:async(c,l)=>{if(l?.initialValue!==void 0&&r.set(c,l.initialValue),t.has(c))return t.get(c);let u=Ux({initialValue:l?.initialValue,enablePatches:!1});async function d(){if(a||e.callEvent(`devframe:rpc:server-state:subscribe`,c),l?.initialValue!==void 0){t.set(c,u);for(let e of i)e(c);return e.call(`devframe:rpc:server-state:get`,c).then(e=>{e!==void 0&&u.mutate(()=>o(c,e))}).catch(e=>{console.error(`Error getting server state`,e)}),n.set(c,s(c,u)),u}{let r=await e.call(`devframe:rpc:server-state:get`,c);u.mutate(()=>o(c,r)),t.set(c,u);for(let e of i)e(c);return n.set(c,s(c,u)),u}}return new Promise((t,n)=>{if(e.isTrusted)d().then(t,n);else{t(u);let n=!1;e.events.on(Cy.client.isTrustedUpdated,e=>{e&&!n&&(n=!0,d())})}})}}}var sC=new Map;function cC(e=sC){let t=new Map;return{serialize:n=>{let r;return n.t===`q`?r=n.m:(r=t.get(n.i),t.delete(n.i)),!(n.t===`s`&&`e`in n)&&r&&e.get(r)?.jsonSerializable===!0?RS(n,r??``):`s:${cS(n)}`},deserialize:e=>{let n=e.startsWith(`s:`)?lS(e.slice(2)):JSON.parse(e);return n.t===`q`&&n.i&&n.m&&t.set(n.i,n.m),n}}}function lC(){}function uC(e){let t=e.search(/\n\n|\r\n\r\n/);if(!(t<0))return{frame:e.slice(0,t),rest:e.slice(t+(e[t]===`\r`?4:2))}}function dC(e){let t=`message`,n=[];for(let r of e.split(/\r?\n/))r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trimStart():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));return{event:t,data:n}}function fC(e){let{onConnected:t=lC,onError:n=lC,onDisconnected:r=lC,definitions:i,fetch:a=globalThis.fetch.bind(globalThis)}=e,o=e.url;e.authToken&&(o=`${o}${o.includes(`?`)?`&`:`?`}${DS}=${encodeURIComponent(e.authToken)}`);let s=cC(i),c=new AbortController,l=!1,u,d,f,p,m=new Promise((e,t)=>{f=e,p=t});m.catch(()=>{});function ee(e){l||(l=!0,p(e),n(e),r())}function h(){l||(l=!0,p(Error(`Devframe SSE stream closed`)),r())}function g(e,n){if(e===`session`){f(n),t();return}u?.(n)}async function te(e){let t=e.getReader();d=t;let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;for(r+=n.decode(i,{stream:!0});;){let e=uC(r);if(!e)break;r=e.rest;let{event:t,data:n}=dC(e.frame);n.length>0&&g(t,n.join(` +`))}}h()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await te(e.body)}catch(e){if(c.signal.aborted){h();return}ee(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[CS]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function pC(e,t){let{channel:n,rpcOptions:r={}}=t;return Iy(e,{...n,timeout:-1,...r,proxify:!1})}function mC(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(Cy.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function ee(){return l===`disconnected`||l===`error`?new eC(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new eC(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function h(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(Cy.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new eC(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(Cy.client.error,n,t),r(n)})})}let g=new Map;for(let e of r.jsonSerializableMethods??[])g.set(e,{jsonSerializable:!0});let te=e.createChannel({definitions:g,onError(e){f(`error`,e),i.emit(Cy.client.connectionError,e),m(new eC(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new eC(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),ne=pC(a.functions,{channel:te,rpcOptions:o});a.register({name:Cy.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new eC(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(Cy.client.connectionError,e),m(e),i.emit(Cy.client.isTrustedUpdated,!1)}});let re=n;async function ie(e){re=e;let t=await ne.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new eC(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(Cy.client.connectionError,e)}return i.emit(Cy.client.isTrustedUpdated,c),t.isTrusted}async function ae(e){let t=(await ne.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(re=t,c=!0,d.resolve(!0),f(`connected`),i.emit(Cy.client.isTrustedUpdated,!0)),t}async function oe(e={}){await ne.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function se(){return c?!0:ie(re??``)}async function ce(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t;try{return await Promise.race([d.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),c}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:se,requestTrustWithToken:ie,requestTrustWithCode:ae,requestAuthCode:oe,ensureTrusted:ce,call:(...e)=>{let t=String(e[0]),n=ee();return n?(i.emit(Cy.client.error,n,t),Promise.reject(n)):h(ne.$call(...e),t)},callEvent:(...e)=>{let t=ee();if(t){i.emit(Cy.client.error,t,String(e[0]));return}return ne.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=ee();return n?(i.emit(Cy.client.error,n,t),Promise.reject(n)):h(ne.$callOptional(...e),t)},close:()=>{te.close()}}}function hC(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function gC(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=hC(n.sse,r??`./`,location);return mC({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>fC({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function _C(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:vC(r)?_C(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function vC(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function yC(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function bC(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function xC(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function SC(e){if(e.error)throw _C(e.error);return e.output}function CC(e){return e.some(e=>e!=null)}function wC(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function TC(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?sS(e):e}function a(e,t){return i(wC(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return xC(r)?SC(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(yC(r)){if(CC(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(bC(r)){let e=nb(n),i=r.records[e];if(i)return SC(await s(i,r.serialization));if(r.fallback)return SC(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!CC(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function EC(e){let t=TC(await e.fetchJsonFromBases(wS),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var DC=``;function OC(e,t){return`${e}${DC}${t}`}function kC(e){let t=new Map,n=new Map;e.client.register({name:Cy.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(OC(e,n))?._push(r,i)}}),e.client.register({name:Cy.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=OC(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:Cy.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=OC(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(Cy.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(DC);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=OC(n,r),o=t.get(a);if(o)return o;let s=pS({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(Cy.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=OC(t,r),a=n.get(i);if(a)return a;let o=fS({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function AC(){}var jC=new Map;function MC(e){let t=e.url;e.authToken&&(t=`${t}?${DS}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=AC,onError:i=AC,onDisconnected:a=AC,definitions:o=jC}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=cC(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function NC(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return lb(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function PC(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=NC(n.websocket,r??`./`,location);return mC({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>MC({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function FC(e){return e.includes(`:`)}function IC(e,t){return FC(t)?t:`${e}:${t}`}function LC(e){return{async get(t){return(await e()).value()?.[t]},async set(t,n){(await e()).mutate(e=>{if(e===void 0)return{[t]:n};e[t]=n})},async delete(t){(await e()).mutate(e=>{e!==void 0&&delete e[t]})},async all(){return(await e()).value()??{}},async onChange(t){return(await e()).on(`updated`,e=>t(e??{}))}}}function RC(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=(async()=>(await e.ensureTrusted(),e.sharedState.get(r)))().catch(e=>{throw i=void 0,e}),i}return LC(a)}function zC(e,t){return{global:RC(e,t,`global`),project:RC(e,t,`project`)}}function BC(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(FC(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(IC(t,n),...r)),callEvent:((n,...r)=>e.callEvent(IC(t,n),...r)),callOptional:((n,...r)=>e.callOptional(IC(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(IC(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(IC(t,n),r,i),upload:(n,r)=>e.streaming.upload(IC(t,n),r)}},settings:zC(e,t),scope:e.scope}}function VC(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function HC(e,t={}){let n=t.modelContext??VC();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=gS(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=Ly(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:By(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>UC(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function UC(e,t,n){try{let r=Hy(n,e.args?.length);return{content:[{type:`text`,text:WC(await(await IS(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:GC(e)}]}}}function WC(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function GC(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function KC(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function qC(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=rb(),a=Array.isArray(t)?t:[t],o=await $S(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new OS({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new LS(f),m=e.webmcp===!1?void 0:HC(p),ee,h=!1,g=0,te;function ne(){g++,te=void 0,d.clear(),r===!0&&d.updateOptions({functions:[]})}r&&(p.register({name:Cy.broadcast.cacheInvalidate,type:`event`,handler:ne}),i.on(Cy.client.connectionStatus,ne),i.on(Cy.client.isTrustedUpdated,ne));async function re(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(cb(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let ie=e.callTimeout??0,ae=ie>0?ie:1/0,oe,se={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){let a=performance.now()+ae;if(await n.onRequest?.call(this,e,t,i),r===!0&&e.i&&oe.isTrusted&&!e.m.startsWith(`anonymous:`)&&e.m!==`devframe:rpc:cacheable-functions`){function t(){if(performance.now()>=a)throw new eC(`timeout`,`[devframe] RPC call "${e.m}" timed out after ${ie}ms`)}for(;!te&&(t(),!(h||oe.status!==`connected`));){let e=g;te=oe.callOptional(`devframe:rpc:cacheable-functions`).then(t=>{e===g&&d.updateOptions({functions:t??[]})}).catch(t=>{throw e===g&&(te=void 0),t}),await te}await te,t()}let o=g;if(r&&e.i&&!h&&oe.isTrusted&&d.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);o===g&&!h&&d.apply(e,n)}else await t(e)}}},ce=KC(e.transport??`auto`,s);oe=ce===`static`?await EC({fetchJsonFromBases:re}):ce===`sse`?gC({...se,sseOptions:e.sseOptions}):PC({...se,wsOptions:e.wsOptions});let le;try{le=new BroadcastChannel(`devframe-auth`)}catch{}let ue,de=!1;function fe(e){return((...t)=>de||!ue?e(...t):ue.then(()=>e(...t)))}function pe(){h=!0,ne();try{ee?.(),m?.()}finally{try{le?.close()}finally{oe.close?.()}}}let me={events:i,get isTrusted(){return oe.isTrusted},get status(){return oe.status},get connectionError(){return oe.connectionError},get transport(){return oe.transport??ce},get connection(){return o},connectionMeta:s,ensureTrusted:oe.ensureTrusted,requestTrust:oe.requestTrust,requestTrustWithToken:async e=>(YS(e),o={...o,authToken:e},oe.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await oe.requestTrustWithCode(e);if(!t)return!1;YS(t),o={...o,authToken:t};try{le?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>oe.requestAuthCode(e),call:fe(oe.call),callEvent:fe(oe.callEvent),callOptional:fe(oe.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:pe};me.sharedState=oC(me),me.streaming=kC(me),me.services=aC(me);let he=new Map;me.scope=(e=>{if(!e)return me;let t=he.get(e);return t||(t=BC(me,e),he.set(e,t)),t}),f.rpc=me;function ge(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function _e(){if(e.simpleAuth!==!1&&ge()&&typeof globalThis.prompt==`function`)for(await me.requestAuthCode().catch(()=>{});!me.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await me.requestTrustWithCode(t))return}}async function ve(){let t=await oe.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await iC(me,{param:n}):!1;t||r||me.isTrusted||await _e()}return ue=ve().then(()=>{de=!0},()=>{de=!0}),s.mcp&&bS(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-KH4HHvHf-CfawV4BR.js`);return{setupBrowserAgentRpcBridge:e}},[],import.meta.url).then(({setupBrowserAgentRpcBridge:e})=>{h||(ee=e(me))}).catch(()=>{}),le&&(le.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&me.requestTrustWithToken(e.data.authToken)}),me}var JC=qC,YC=[`components`,`injectors`,`signals`,`ngrx`,`tanstackQuery`,`forms`,`router`,`pipes`,`http`,`analog`,`capacitor`,`errors`,`plugins`],XC=[`angular`,`ngrx`,`analog`,`angular-native`,`nativescript`,`capacitor`];function ZC(e){return`pangular:${e}`}var QC=[`forms`,`router`,`ngrx`,`http`,`analog`,`components`,`tanstackQuery`,`plugins`],$C={refreshMs:{default:3e3,min:500,max:8e3},navigations:{default:50,min:5,max:500},formTimeline:{default:200,min:10,max:2e3},httpCalls:{default:200,min:10,max:2e3},changeLog:{default:200,min:10,max:2e3},cdCycles:{default:200,min:10,max:2e3},capacitorCalls:{default:200,min:10,max:2e3},idleAfterMs:{default:6e4,min:0,max:6e5}},ew={"opted-out":`the request sets transferCache: false`,post:`POST requests are left out unless includePostRequests is set`,method:`only GET, HEAD and POST requests are cached`,"auth-headers":`it sends an Authorization, Proxy-Authorization or Cookie header`,credentials:`it sends credentials (withCredentials or credentials: include/same-origin)`,"no-cache-request":`the request asks for no-store, no-cache or private`,"no-cache-response":`the response has Cache-Control no-store, no-cache or private`,"set-cookie":`the response sets a cookie`,error:`failed responses are not stored`,mocked:`a fault rule answered before the transfer cache ran`,"cache-off-or-filter":`the transfer cache is off, or its filter (or another withHttpTransferCacheOptions setting) left it out`},tw=[[0,`Network error (offline)`],[200,`OK`],[201,`Created`],[202,`Accepted`],[203,`Non-Authoritative Information`],[204,`No Content`],[205,`Reset Content`],[206,`Partial Content`],[207,`Multi-Status`],[208,`Already Reported`],[226,`IM Used`],[300,`Multiple Choices`],[301,`Moved Permanently`],[302,`Found`],[303,`See Other`],[304,`Not Modified`],[307,`Temporary Redirect`],[308,`Permanent Redirect`],[400,`Bad Request`],[401,`Unauthorized`],[402,`Payment Required`],[403,`Forbidden`],[404,`Not Found`],[405,`Method Not Allowed`],[406,`Not Acceptable`],[407,`Proxy Authentication Required`],[408,`Request Timeout`],[409,`Conflict`],[410,`Gone`],[411,`Length Required`],[412,`Precondition Failed`],[413,`Content Too Large`],[414,`URI Too Long`],[415,`Unsupported Media Type`],[416,`Range Not Satisfiable`],[417,`Expectation Failed`],[418,`I'm a Teapot`],[421,`Misdirected Request`],[422,`Unprocessable Content`],[423,`Locked`],[424,`Failed Dependency`],[425,`Too Early`],[426,`Upgrade Required`],[428,`Precondition Required`],[429,`Too Many Requests`],[431,`Request Header Fields Too Large`],[451,`Unavailable For Legal Reasons`],[499,`Client Closed Request`],[500,`Internal Server Error`],[501,`Not Implemented`],[502,`Bad Gateway`],[503,`Service Unavailable`],[504,`Gateway Timeout`],[505,`HTTP Version Not Supported`],[506,`Variant Also Negotiates`],[507,`Insufficient Storage`],[508,`Loop Detected`],[510,`Not Extended`],[511,`Network Authentication Required`],[520,`Web Server Returned an Unknown Error`],[521,`Web Server Is Down`],[522,`Connection Timed Out`],[523,`Origin Is Unreachable`],[524,`A Timeout Occurred`]];function nw(e){return tw.some(([t])=>t===e)}var rw=/^[a-z][a-z0-9-]{0,39}$/;function iw(e,t){let n=t.plugins?.[e],r=t.inspectors.plugins&&rw.test(e)&&(n?.enabled??!0);return{enabled:r,tools:r&&t.agent.tools.plugins&&(n?.tools??!0),actions:r&&t.actions.plugins&&(n?.actions??!0)}}var aw=`pangular`,ow={mod:`Mod`,ctrl:`Ctrl`,control:`Ctrl`,meta:`Meta`,cmd:`Meta`,command:`Meta`,alt:`Alt`,option:`Alt`,opt:`Alt`,shift:`Shift`},sw=[`Mod`,`Ctrl`,`Meta`,`Alt`,`Shift`];function cw(e){if(typeof e!=`string`||e.length>40)return;let t=e.split(`+`).map(e=>e.trim());if(t.some(e=>!e))return;let n=new Set,r;for(let e of t){let t=ow[e.toLowerCase()];if(t){if(n.has(t))return;n.add(t);continue}if(r!==void 0)return;if(/^[a-z0-9]$/i.test(e))r=e.toUpperCase();else if(/^f([1-9]|1[0-2])$/i.test(e))r=e.toUpperCase();else return}if(r&&[...n].some(e=>e!==`Shift`)&&!(n.has(`Mod`)&&(n.has(`Ctrl`)||n.has(`Meta`))))return[...sw.filter(e=>n.has(e)),r].join(`+`)}function lw(e,t,n){let r=t.split(`+`),i=r.pop(),a=new Set(r),o=a.has(`Ctrl`)||a.has(`Mod`)&&!n,s=a.has(`Meta`)||a.has(`Mod`)&&n;if(e.ctrlKey!==o||e.metaKey!==s||e.altKey!==a.has(`Alt`)||e.shiftKey!==a.has(`Shift`))return!1;if(/^F\d+$/.test(i))return e.key.toUpperCase()===i;let c=/^\d$/.test(i)?`Digit${i}`:`Key${i}`;return e.code?e.code===c:e.key.toUpperCase()===i}function uw(e,t){if(!t)return e.replace(/^Mod\b/,`Ctrl`);let n={Mod:`⌘`,Meta:`⌘`,Ctrl:`⌃`,Alt:`⌥`,Shift:`⇧`};return e.split(`+`).map(e=>n[e]??e).join(``)}var dw=[{id:`dashboard`,label:`Dashboard`},{id:`timeline`,label:`Timeline`},{id:`audit`,label:`Audit`},{id:`analog`,label:`Analog`,inspector:`analog`},{id:`components`,label:`Components`,inspector:`components`},{id:`routes`,label:`Routes`,inspector:`router`},{id:`signals`,label:`Signals`,inspector:`signals`},{id:`injectors`,label:`Injectors`,inspector:`injectors`},{id:`store`,label:`Store`,inspector:`ngrx`},{id:`queries`,label:`Queries`,inspector:`tanstackQuery`},{id:`forms`,label:`Forms`,inspector:`forms`},{id:`pipes`,label:`Pipes`,inspector:`pipes`},{id:`network`,label:`SSR & HTTP`,inspector:`http`},{id:`errors`,label:`Errors`,inspector:`errors`},{id:`capacitor`,label:`Capacitor`,inspector:`capacitor`},{id:`plugins`,label:`Plugins`,inspector:`plugins`}],fw=1e4;function pw(e){return dw.filter(t=>!(`inspector`in t)||e.inspectors[t.inspector])}var mw={components:`a component instance, by its id in the component tree`,injectors:`a component's element injector, by the component's id`,signals:`a component's signal graph, by the component's id`,forms:`a form, by its id`},hw=200;function gw(e){let t=new URLSearchParams({tab:e.tab});return e.id&&t.set(`id`,e.id),e.page&&t.set(`page`,e.page),`#${t.toString()}`}function _w(e){let t=new URLSearchParams(e.replace(/^#/,``)),n=e=>{let n=t.get(e)?.trim();return n&&n.length<=hw?n:void 0},r=n(`tab`);if(!r)return null;let i=n(`id`),a=n(`page`);return{tab:r,...i?{id:i}:{},...a?{page:a}:{}}}var vw=[{id:`settings`,title:`Open settings`,group:`Go to`,keywords:`preferences tabs`},{id:`pick-component`,title:`Pick component on page`,group:`Actions`,keywords:`select inspect element`,inspector:`components`},{id:`cd-record-start`,title:`Start recording change detection`,group:`Actions`,keywords:`profiler cycles`,inspector:`components`},{id:`cd-record-stop`,title:`Stop recording change detection`,group:`Actions`,keywords:`profiler cycles`,inspector:`components`},{id:`cd-clear`,title:`Clear change detection recording`,group:`Actions`,keywords:`reset recordings cycles`,inspector:`components`},{id:`theme:system`,title:`Theme: follow the system`,group:`Theme`,keywords:`auto`},{id:`theme:light`,title:`Theme: light`,group:`Theme`},{id:`theme:dark`,title:`Theme: dark`,group:`Theme`},{id:`dock:float`,title:`Popup: float`,group:`Popup`,keywords:`dock`,popupOnly:!0},{id:`dock:bottom`,title:`Popup: dock to the bottom`,group:`Popup`,keywords:`dock`,popupOnly:!0},{id:`dock:right`,title:`Popup: dock to the right`,group:`Popup`,keywords:`dock`,popupOnly:!0},{id:`dock:reset-size`,title:`Popup: reset the docked size`,group:`Popup`,keywords:`splitter resize height width`,popupOnly:!0},{id:`popout`,title:`Popup: open in its own window`,group:`Popup`,keywords:`pop out detach new window`,popupOnly:!0},{id:`popout:return`,title:`Popup: back into the page`,group:`Popup`,keywords:`pop in attach dock window`,popupOnly:!0}];function yw(e){let t=pw(e).map(e=>({id:`tab:${e.id}`,title:`Go to ${e.label}`,group:`Go to`,keywords:`tab open`})),n=vw.filter(t=>!t.inspector||e.inspectors[t.inspector]).map(({inspector:e,...t})=>t);return[...t,...n]}function bw(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}var xw=Object.freeze({minLength:24,threshold:4.5}),Sw={min:16,max:512},Cw={min:2,max:6};function ww(e){return typeof e==`number`&&Number.isInteger(e)&&e>=Sw.min&&e<=Sw.max}function Tw(e){return typeof e==`number`&&Number.isFinite(e)&&e>=Cw.min&&e<=Cw.max}function Ew(e){if(e===!0)return{...xw};if(!e||typeof e!=`object`||Array.isArray(e))return;let{minLength:t,threshold:n}=e;return{minLength:ww(t)?t:xw.minLength,threshold:Tw(n)?n:xw.threshold}}function Dw(e){let t=Ew(e);return t?{entropy:t}:{}}function Ow(e,t){return typeof e==`boolean`?e:t}var kw=100,Aw=100;function jw(e){if(!Array.isArray(e))return[];let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e&&e.length<=Aw);return[...new Set(t)].slice(0,kw)}function Mw(e,t){let{default:n,min:r,max:i}=$C[t];return typeof e!=`number`||!Number.isFinite(e)?n:Math.min(i,Math.max(r,Math.round(e)))}function Nw(e,t){return Object.fromEntries(e.map(e=>[e,t(e)]))}function Pw(e){let t=bw(e),n=bw(t.agent),r=bw(t.inspectors),i=bw(n.tools),a=bw(t.actions),o=Ow(t.actions,!0),s=bw(t.redaction),c=bw(t.limits),l=Nw(YC,e=>Ow(r[e],!0));return{inspectors:l,agent:{readOnly:Ow(n.readOnly,!1),tools:Nw(YC,e=>l[e]&&Ow(i[e],!0)),browserTools:Ow(n.browserTools,!1)},actions:Nw(QC,e=>l[e]&&Ow(a[e],o)),redaction:{secretNames:jw(s.secretNames),unmask:jw(s.unmask),...Dw(s.entropy)},limits:Object.fromEntries(Object.keys($C).map(e=>[e,Mw(c[e],e)])),popup:{hotkey:Vw(bw(t.popup).hotkey)},plugins:Bw(t.plugins),lint:{rules:Rw(t.lint)},analog:Iw(t.analog),ngrx:{trace:Ow(bw(t.ngrx).trace,!1)}}}var Fw=500;function Iw(e){let t=bw(e).contentSchema;return typeof t==`string`&&t.trim()&&t.length<=Fw?{contentSchema:t.trim()}:{}}var Lw=200;function Rw(e){let t=bw(bw(e).rules),n={};for(let[e,r]of Object.entries(t).slice(0,Lw))typeof r==`boolean`&&(n[e]=r);return n}var zw=100;function Bw(e){let t={};for(let[n,r]of Object.entries(bw(e)).slice(0,zw)){if(!rw.test(n))continue;if(typeof r==`boolean`){t[n]={enabled:r,tools:!0,actions:!0};continue}let e=bw(r);r!==void 0&&Object.keys(e).length&&(t[n]={enabled:Ow(e.enabled,!0),tools:Ow(e.tools,!0),actions:Ow(e.actions,!0)})}return t}function Vw(e){return e===!1?!1:cw(e)??`Alt+Shift+P`}function Hw(e){let t=e?.configs;return Pw(t?.[aw])}function Uw(e){return`${{forms:`Writing to forms`,router:`Navigating and clearing navigations`,ngrx:`Restoring NgRx state, dispatching actions and changing the Store DevTools history`,http:`Changing HTTP mock rules and SSR overrides, and clearing HTTP calls`,analog:`Calling API routes, clearing server calls, running Nitro tasks and purging the Nitro cache`,components:`Editing component properties and signals`,tanstackQuery:`Invalidating and refetching TanStack queries`,plugins:`Running plugin actions`}[e]} is turned off in the devtools config (actions.${e}).`}var Ww=[`pangular:build-meta`],Gw={components:`Components`,injectors:`Injectors`,signals:`Signals`,ngrx:`NgRx`,tanstackQuery:`TanStack Query`,forms:`Forms`,router:`Router`,pipes:`Pipes`,http:`HTTP`,analog:`Analog`,capacitor:`Capacitor`,errors:`Errors`,plugins:`Plugins`},Kw={forms:`Form writes`,router:`Navigation`,ngrx:`NgRx restore, dispatch and Store DevTools`,http:`HTTP mocking`,analog:`Analog API calls`,components:`Component edits`,tanstackQuery:`TanStack Query invalidate and refetch`,plugins:`Plugin actions`},qw={refreshMs:e=>`poll every ${e} ms`,navigations:e=>`${e} navigations`,formTimeline:e=>`${e} form events`,httpCalls:e=>`${e} HTTP calls`,changeLog:e=>`${e} NgRx changes`,cdCycles:e=>`${e} change detection cycles`,capacitorCalls:e=>`${e} Capacitor plugin calls`,idleAfterMs:e=>e?`idle ${e/1e3} s after the last agent call`:`never idle`};function Jw(e){if(!e)return[];let t=[`On`];return e.minLength!==xw.minLength&&t.push(`${e.minLength} characters or more`),e.threshold!==xw.threshold&&t.push(`up to ${e.threshold} bits per character`),t}function Yw(e){let t=[],n=(e,n)=>{n.length&&t.push({label:e,value:n.join(`, `)})},r=YC.filter(t=>e.inspectors[t]);n(`Inspectors off`,YC.filter(t=>!e.inspectors[t]).map(e=>Gw[e])),n(`Agent`,e.agent.readOnly?[`Read-only`]:[]),n(`Hidden from the agent`,r.filter(t=>!e.agent.tools[t]).map(e=>Gw[e])),n(`Blocked actions`,QC.filter(t=>e.inspectors[t]&&!e.actions[t]).map(e=>Kw[e])),n(`Extra secret names`,e.redaction.secretNames),n(`Unmasked names`,e.redaction.unmask),n(`Entropy masking`,Jw(e.redaction.entropy)),n(`Limits`,Object.keys($C).filter(t=>e.limits[t]!==$C[t].default).map(t=>qw[t](e.limits[t]))),e.popup.hotkey!==`Alt+Shift+P`&&n(`Popup shortcut`,[e.popup.hotkey===!1?`Off`:e.popup.hotkey]);let i=Object.entries(e.plugins??{});return n(`Plugins off`,i.filter(([,e])=>!e.enabled).map(([e])=>e)),n(`Plugin tools or actions off`,i.filter(([,e])=>e.enabled&&(!e.tools||!e.actions)).map(([e,t])=>`${e} (${[!t.tools&&`tools`,!t.actions&&`actions`].filter(Boolean).join(`, `)})`)),n(`Lint rules off`,Object.entries(e.lint?.rules??{}).filter(([,e])=>!e).map(([e])=>e)),t}function Xw(e){let t={tags:[],directives:[],text:``},n=e.toLowerCase();return n=n.replace(/<\s*([^<>\s]+)\s*>/g,(e,n)=>(t.tags.push({value:n,exact:!0}),` `)),n=n.replace(/\[\s*([^[\]\s]+)\s*\]/g,(e,n)=>(t.directives.push({value:n,exact:!0}),` `)),n=n.replace(/(^|\s)([<[])([^<>[\]\s]*)$/,(e,n,r,i)=>(i&&(r===`<`?t.tags:t.directives).push({value:i,exact:!1}),n)),t.text=n.replace(/\s+/g,` `).trim(),t}function Zw(e){return!e.tags.length&&!e.directives.length&&!e.text}function Qw(e,t){let n=e.tag.toLowerCase(),r=(e.directives??[]).map(e=>e.toLowerCase()),i=(e.attributes??[]).map(e=>e.toLowerCase()),a=[...r,...r.map(e=>e.replace(/directive$/,``)),...i];for(let{value:e,exact:r}of t.tags)if(r?n!==e:!n.startsWith(e))return!1;for(let{value:e,exact:n}of t.directives)if(!a.some(t=>n?t===e:t.includes(e)))return!1;if(t.text){let a=t.text;if(!(e.name.toLowerCase().includes(a)||n.includes(a)||r.some(e=>e.includes(a))||i.some(e=>e.includes(a))))return!1}return!0}var $w={debugApi:{subject:`Live data`,since:`12.0`},injectorProviders:{subject:`Reading providers and environment injectors`,since:`16.2`},injectorMetadata:{subject:`The full injector tree`,since:`17.0`},isSignal:{subject:`Telling signals apart in component values`,since:`17.1`},signalGraph:{subject:`The live signal graph`,since:`20.1`},deferBlocks:{subject:`Listing @defer blocks`,since:`19.1`},forBlocks:{subject:`Listing @for blocks`,since:`22.0`},profiler:{subject:`Recording change detection`,since:`20.0`},angularProfiling:{subject:`Angular profiling`,since:`20.0`},routerInstance:{subject:`The router debug util`,since:`20.3`}};function eT(e){let t=/^(\d+)\.(\d+)/.exec(e.trim());return t?`${t[1]}.${t[2]}`:e.trim()}function tT(e){let t=/^(\d+)(?:\.(\d+))?/.exec(e.trim());return t?[Number(t[1]),Number(t[2]??0)]:null}function nT(e,t){let n=tT(e),r=tT(t);return!n||!r?!1:n[0]===r[0]?n[1]>=r[1]:n[0]>r[0]}function rT(e,t){return e?.capabilities?.[t]===!1}function iT(e,t){let n=$w[e],r=`${n.subject} needs Angular ${n.since} or later`;if(!t)return`${r}; this page's Angular version is unknown.`;let i=eT(t);return nT(t,n.since)?`${r} in a development build; this page runs Angular ${i} without it, which usually means a production build.`:`${r}; this page runs Angular ${i}.`}function aT(e){return e.hydration===`hydrated`&&e.hydratedAt===void 0?`hydrated before inspection`:e.hydration}var oT=/^on (viewport|interaction|hover)\b/;function sT(e){let t=e.filter(e=>!/^(prefetch|hydrate) /.test(e));return t.length>0&&t.every(e=>oT.test(e))}function cT(e,t){let n=[],r=e.since>0?Math.max(0,Math.round((t-e.since)/1e3)):0;return e.state===`error`&&n.push({kind:`failed`,text:`failed to load`,label:`failed`}),(e.state===`placeholder`||e.state===`initial`)&&r*1e3>=1e4&&n.push(sT(e.triggers)?{kind:`waiting`,text:`waiting for its trigger for ${r}s`,label:`waiting ${r}s`,seconds:r}:{kind:`stuck`,text:`on its placeholder for ${r}s`,label:`stuck ${r}s`,seconds:r}),e.hydrateNever?n.push({kind:`hydrate-never`,text:`hydrate never: the server HTML stays static`,label:`hydrate never`}):e.hydration===`dehydrated`&&n.push({kind:`dehydrated`,text:`still dehydrated`,label:`dehydrated`}),n}var lT=`pangular-page-id`,uT=null;function dT(e){uT=e}function fT(){if(uT)return uT;try{return new URLSearchParams(location.search).get(`pageId`)||(window.top===window?null:sessionStorage.getItem(lT)||null)}catch{return null}}function pT(e,t){if(t.chosen&&e[t.chosen])return t.chosen;if(t.host)return t.host;if(t.previous&&e[t.previous])return t.previous;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n?.pageId??null}function mT(e,t){return e?t?e.pages?.[t]??null:e:null}function hT(e,t){return e?t?e.pages?.[t]??null:e.graph??null:null}function gT(){return{functions:[...Ww]}}function _T(e,t,n){return e?e.scope(`pangular`).rpc.call(t,...n===void 0?[]:[n]):Promise.resolve(null)}function vT(e,t,n){return _T(e,t,n).then(e=>e,()=>null)}function yT(e){return e?.connectionMeta.backend===`static`}function bT(e){let t=()=>{let t=e()?.scope(`pangular`).rpc;t&&(t.callEvent(`request-page-highlight`,null),t.callEvent(`request-form-highlight`,null))};return addEventListener(`pagehide`,t),()=>{removeEventListener(`pagehide`,t),t()}}function xT(e=globalThis){delete e.__DEVFRAME_CONNECTION__,delete e.__DEVFRAME_CONNECTION_META__}function ST(e){return e.split(`@`)[1]??``}var CT={signal:`Signal Forms`,reactive:`Reactive`,template:`Template-driven`},wT={own:`validator`,directive:`template attribute`,tree:`cross-field rule`,async:`async`,parse:`parse`,submission:`server`,schema:`schema`,manual:`setErrors`},TT=vT,ET={key:`name looks secret`,"input-type":`password input`,autocomplete:`autocomplete is a secret kind`,marker:`marked as mask`,parent:`inside a secret group`,config:`listed in mask`};function DT(e){return ET[e]??e}var OT=`https://pangular-inspector.dev/security/#opt-fields-in-or-out`;async function kT(e,t){return await TT(e,`request-form-action`,t)??{ok:!1,error:`The devtools server did not answer.`}}function AT(e){return`${e.ok?e.message??`Done.`:e.error??`Failed.`}${e.skipped?.length?` Skipped: ${e.skipped.map(e=>`${e.path} (${e.reason})`).join(`, `)}.`:``}${e.status?` Status: ${e.status}.`:``}`}var jT=/"(?:[^"\\\n]|\\.)*"|`([^`\n]*)`|\*\*/g;function MT(e){return(e??``).replace(/^_Labels, paths.*_\n\n/,``).replace(jT,(e,t)=>t??(e===`**`?``:e))}function NT(e){return Hw(e?.connectionMeta)}function PT(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)?[...e]:void 0}function FT(e,t){if(!t||typeof t!=`object`)return e;let n=PT(t.secretNames),r=PT(t.unmask);if(!n||!r)return e;let i=Ew(t.entropy);return{...e,redaction:i?{secretNames:n,unmask:r,entropy:i}:{secretNames:n,unmask:r}}}function IT(e,t){return NT(e).actions[t]}var LT={components:`components`,routes:`router`,signals:`signals`,injectors:`injectors`,store:`ngrx`,queries:`tanstackQuery`,forms:`forms`,pipes:`pipes`,network:`http`,analog:`analog`,capacitor:`capacitor`,errors:`errors`,plugins:`plugins`};function RT(e){return LT[e]}var zT=`https://pangular-inspector.dev/getting-started/configuration/#inspectors-and-agent-tools`;function BT(e,t){let n=LT[e];return!n||t.inspectors[n]}function VT(e,t){e&1&&(w(),lg(0,`rect`,5)(1,`rect`,6)(2,`rect`,7)(3,`rect`,8))}function HT(e,t){e&1&&(w(),lg(0,`path`,9)(1,`circle`,10)(2,`circle`,11)(3,`path`,12))}function UT(e,t){e&1&&(w(),lg(0,`path`,13)(1,`path`,14))}function WT(e,t){e&1&&(w(),lg(0,`path`,15)(1,`path`,16)(2,`path`,17))}function GT(e,t){e&1&&(w(),lg(0,`circle`,18)(1,`path`,19)(2,`circle`,20))}function KT(e,t){e&1&&(w(),lg(0,`path`,1))}function qT(e,t){e&1&&(w(),lg(0,`path`,21)(1,`path`,22)(2,`path`,23)(3,`path`,24))}function JT(e,t){e&1&&(w(),lg(0,`ellipse`,25)(1,`path`,26)(2,`path`,27))}function YT(e,t){e&1&&(w(),lg(0,`rect`,28)(1,`path`,29)(2,`path`,30)(3,`path`,31))}function XT(e,t){e&1&&(w(),lg(0,`circle`,32)(1,`path`,9)(2,`path`,33))}function ZT(e,t){e&1&&(w(),lg(0,`path`,34)(1,`path`,35)(2,`path`,36)(3,`path`,37)(4,`circle`,38))}function QT(e,t){e&1&&(w(),lg(0,`circle`,39)(1,`path`,40))}function $T(e,t){e&1&&(w(),lg(0,`ellipse`,41)(1,`path`,42)(2,`path`,43)(3,`path`,44)(4,`path`,45))}function eE(e,t){e&1&&(w(),lg(0,`circle`,32)(1,`path`,46)(2,`path`,47))}function tE(e,t){e&1&&(w(),lg(0,`path`,2))}function nE(e,t){e&1&&(w(),lg(0,`path`,3))}function rE(e,t){e&1&&(w(),lg(0,`path`,4))}var iE=class e{name=$.required();static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-tab-icon`]],inputs:{name:[1,`name`]},decls:18,vars:1,consts:[[`viewBox`,`0 0 24 24`,`width`,`16`,`height`,`16`,`fill`,`none`,`stroke`,`currentColor`,`stroke-width`,`1.8`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`,`aria-hidden`,`true`],[`d`,`M22 12h-4l-3 9L9 3l-3 9H2`],[`d`,`M10 3h4v3a2 2 0 1 0 4 0V5h1a2 2 0 0 1 2 2v4h-2a2 2 0 1 0 0 4h2v4a2 2 0 0 1-2 2h-4v-2a2 2 0 1 0-4 0v2H7a2 2 0 0 1-2-2v-4H4a2 2 0 1 1 0-4h1V7a2 2 0 0 1 2-2h3Z`],[`d`,`m8 3 4 8 5-5 5 15H2L8 3z`],[`fill`,`currentColor`,`stroke`,`none`,`transform`,`translate(1.8 1.8) scale(0.85)`,`d`,`M24 3.7l-5.766 5.766 5.725 5.736-3.713 3.712L5.073 3.742 8.786.03l5.736 5.726L20.284 0 24 3.7zM.029 8.785l3.713-3.713 15.173 15.173-3.713 3.714-5.732-5.726L3.7 24 0 20.285l5.754-5.764L.029 8.785z`],[`x`,`3`,`y`,`3`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`14`,`y`,`3`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`x`,`14`,`y`,`12`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`3`,`y`,`16`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`d`,`M3 12h18`],[`cx`,`7`,`cy`,`12`,`r`,`2`],[`cx`,`14`,`cy`,`12`,`r`,`2`],[`d`,`M18 7v10`],[`d`,`M9 11l2 2 4-4`],[`d`,`M12 3 4 6v6c0 4.5 3.4 8.3 8 9 4.6-.7 8-4.5 8-9V6l-8-3Z`],[`d`,`M12 2 3 7l9 5 9-5-9-5Z`],[`d`,`m3 12 9 5 9-5`],[`d`,`m3 17 9 5 9-5`],[`cx`,`6`,`cy`,`19`,`r`,`3`],[`d`,`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`],[`cx`,`18`,`cy`,`5`,`r`,`3`],[`d`,`M12 22v-5`],[`d`,`M9 8V2`],[`d`,`M15 8V2`],[`d`,`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`],[`cx`,`12`,`cy`,`5`,`rx`,`9`,`ry`,`3`],[`d`,`M3 5v14a9 3 0 0 0 18 0V5`],[`d`,`M3 12a9 3 0 0 0 18 0`],[`x`,`3`,`y`,`4`,`width`,`18`,`height`,`16`,`rx`,`2`],[`d`,`M7 9h10`],[`d`,`M7 13h6`],[`d`,`M7 17h8`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18Z`],[`d`,`M4 7h10`],[`d`,`M4 17h6`],[`d`,`m14 13 4 4-4 4`],[`d`,`M10 17h8`],[`cx`,`18`,`cy`,`7`,`r`,`3`],[`cx`,`12`,`cy`,`12`,`r`,`3`],[`d`,`M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1Z`],[`cx`,`11`,`cy`,`5`,`rx`,`8`,`ry`,`3`],[`d`,`M3 5v6c0 1.66 3.58 3 8 3`],[`d`,`M3 11v6c0 1.66 3.58 3 8 3`],[`d`,`M21 14a4 4 0 1 1-1.2-2.85L21 12.3`],[`d`,`M21 9v3.3h-3.3`],[`d`,`M12 7v6`],[`d`,`M12 16.5v.01`]],template:function(e,t){if(e&1&&(w(),R(0,`svg`,0),A(1,VT,4,0)(2,HT,4,0)(3,UT,2,0)(4,WT,3,0)(5,GT,3,0)(6,KT,1,0,`:svg:path`,1)(7,qT,4,0)(8,JT,3,0)(9,YT,4,0)(10,XT,3,0)(11,ZT,5,0)(12,QT,2,0)(13,$T,5,0)(14,eE,3,0)(15,tE,1,0,`:svg:path`,2)(16,nE,1,0,`:svg:path`,3)(17,rE,1,0,`:svg:path`,4),z()),e&2){let e;D(),j((e=t.name())===`dashboard`?1:e===`timeline`?2:e===`audit`?3:e===`components`?4:e===`routes`?5:e===`signals`?6:e===`injectors`?7:e===`store`?8:e===`forms`?9:e===`network`?10:e===`pipes`?11:e===`settings`?12:e===`queries`?13:e===`errors`?14:e===`plugins`?15:e===`analog`?16:e===`capacitor`?17:-1)}},styles:[`[_nghost-%COMP%] { display: inline-flex; flex-shrink: 0; -}`]})},aE=(e,t)=>t.tab,oE=(e,t)=>t.label;function sE(e,t){e&1&&K(0),e&2&&J(` `,W().meta()?.projectName,` `)}function cE(e,t){e&1&&K(0,` Project details unavailable `)}function lE(e,t){e&1&&K(0,` Loading… `)}function uE(e,t){e&1&&(K(0,` Run `),F(1,`code`),K(2,`pangular build`),I(),K(3,` again to rebuild the report. `))}function dE(e,t){e&1&&K(0,` Check that the dev server is running. `)}function fE(e,t){if(e&1){let e=B();F(0,`button`,12),H(`click`,function(){return C(e),w(W(2).loadMeta())}),K(1,`Try again`),I()}}function pE(e,t){if(e&1&&(F(0,`p`,10),A(1,uE,4,0)(2,dE,1,0),I(),A(3,fE,2,0,`button`,11)),e&2){let e=W();D(),j(e.staticReport()?1:2),D(2),j(e.staticReport()?-1:3)}}function mE(e,t){e&1&&(F(0,`li`,5)(1,`span`),K(2,`Analog`),I(),K(3),I()),e&2&&(D(3),q(t))}function hE(e,t){e&1&&(F(0,`li`)(1,`span`),K(2,`Change detection`),I(),K(3),I()),e&2&&(D(3),q(t))}function gE(e,t){if(e&1&&(F(0,`span`,19),K(1),I(),F(2,`span`,20),K(3),I()),e&2){let e=W().$implicit,t=W();D(),q(t.cards()[e.tab]?.value),D(2),q(t.cards()[e.tab]?.sub)}}function _E(e,t){e&1&&(F(0,`span`,21),K(1,`–`),I(),F(2,`span`,20),K(3,`Count unavailable`),I())}function vE(e,t){e&1&&(L(0,`span`,22),F(1,`span`,20),K(2,`Counting…`),I())}function yE(e,t){if(e&1){let e=B();F(0,`button`,13),H(`click`,function(){let t=C(e).$implicit;return w(W().navigate.emit(t.tab))}),F(1,`span`,14)(2,`span`,15),L(3,`app-tab-icon`,16),I(),F(4,`span`,17),K(5,`→`),I()(),F(6,`span`,18),K(7),I(),A(8,gE,4,2)(9,_E,4,0)(10,vE,3,0),I()}if(e&2){let e,n=t.$implicit,r=t.$index,i=W().stateOf(n.tab);Xg(`animation-delay`,60*r,`ms`),k(`aria-busy`,i===`loading`),D(3),P(`name`,n.tab),D(4),q(n.label),D(),j((e=i)===`ready`?8:e===`error`?9:10)}}function bE(e,t){e&1&&(F(0,`p`),K(1,`Loading…`),I())}function xE(e,t){if(e&1&&(F(0,`div`)(1,`dt`),K(2),I(),F(3,`dd`),K(4),I()()),e&2){let e=t.$implicit;D(2),q(e.label),D(2),q(e.value)}}function SE(e,t){if(e&1&&(F(0,`dl`),M(1,xE,5,2,`div`,null,oE),I()),e&2){let e=W();D(),N(e.configItems())}}function CE(e,t){e&1&&(F(0,`p`),K(1,`Defaults`),I())}var wE=[{tab:`components`,label:`Components`},{tab:`routes`,label:`Routes`},{tab:`signals`,label:`Signals`},{tab:`injectors`,label:`Injectors`},{tab:`store`,label:`NgRx declarations`},{tab:`pipes`,label:`Pipes`},{tab:`forms`,label:`Forms`},{tab:`network`,label:`SSR & HTTP`}];function TE(e){return wE.filter(t=>BT(t.tab,e))}var EE={zoneless:`Zoneless`,zone:`zone.js`,"zone-unused":`Zoneless, zone.js loaded`};function DE(e){return e&&Object.hasOwn(EE,e)?EE[e]:null}var OE=new Set([`signal`,`computed`,`linkedSignal`,`effect`]),kE={action:[`action`,`actions`],reducer:[`reducer`,`reducers`],effect:[`effect`,`effects`],selector:[`selector`,`selectors`],feature:[`feature`,`features`],"store-setup":[`setup call`,`setup calls`],"signal-store":[`signal store`,`signal stores`],"signal-state":[`signal state`,`signal states`],"signal-method":[`signal method`,`signal methods`]};function AE(e,t,n){return`${e} ${e===1?t:n}`}function jE(e,t){for(let n of e??[])t(n),jE(n.children,t)}function ME(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`discovered in source`};let t=e.filter(e=>e.kind===`directive`).length;return{value:e.length-t,sub:`components · ${AE(t,`directive`,`directives`)}`}}function NE(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`route entries in source`};let t=e.filter(e=>e.kind===`redirect`).length;return{value:new Set(e.filter(e=>e.kind===`page`).map(e=>e.fullPath??e.path??``)).size,sub:`navigable paths · ${AE(t,`redirect`,`redirects`)}`}}function PE(e){let t=new Map;for(let n of e)n.kind&&t.set(n.kind,(t.get(n.kind)??0)+1);if(!t.size)return{value:e.length,sub:`declarations in source`};let n=[...t].sort((e,t)=>t[1]-e[1]).map(([e,t])=>{let[n,r]=kE[e]??[e,e];return AE(t,n,r)});return{value:e.length,sub:n.join(` · `)}}function FE(e,t){let n=e?.forms??[],r=t?n.filter(e=>ST(e.id)===t):n;if(!r.length)return{value:0,sub:`no forms on the page yet`};let i=r.filter(e=>e.root?.status===`INVALID`).length;return{value:r.length,sub:`${r.length===1?`form`:`forms`} · ${i} invalid`}}function IE(e){return e.cancelled||e.status===void 0?!1:e.status===0||e.status>=400}function LE(e,t){let n=e?.pages??[],r=t?n.find(e=>e.pageId===t)??null:n.reduce((e,t)=>!e||t.reportedAt>e.reportedAt?t:e,null),i=t&&!r?[]:e?.serverCalls??[],a=r?.initialUrl,o=[...a?i.filter(e=>!e.pageUrl||e.pageUrl===a):i,...r?.calls??[]];if(!o.length)return{value:0,sub:`no calls recorded yet`};let s=o.filter(IE).length;return{value:o.length,sub:`${o.length===1?`call`:`calls`} · ${s} failed`}}var RE=class e{rpc=$(null);navigate=Q_();staticReport=X(()=>yT(this.rpc()));meta=E(null);redaction=E(null);config=X(()=>FT(NT(this.rpc()),this.redaction()));stats=X(()=>this.rpc()?TE(this.config()):[]);configItems=X(()=>Yw(this.config()));metaState=E(`loading`);states=E({});rows=E({});injectorTree=E(null);signalGraph=E(null);formsState=E(null);httpState=E(null);pageId=fT();destroyRef=S(vs);stopLive=[];zone=X(()=>DE(mT(this.injectorTree(),this.pageId)?.zone));liveInjectors=X(()=>{let e=mT(this.injectorTree(),this.pageId);if(!e?.roots?.length)return null;let t=0,n=0,r=e=>{t++,n+=e.providers?.length??0};return jE(e.roots,r),jE(e.environment,r),{injectors:t,providers:n}});liveSignals=X(()=>{let e=hT(this.signalGraph(),this.pageId);return e?.nodes?.length?e.nodes.filter(e=>OE.has(e.kind??``)).length:null});cards=X(()=>{let e=this.rows(),t={};if(e.components&&(t.components=ME(e.components)),e.routes&&(t.routes=NE(e.routes)),e.store&&(t.store=PE(e.store)),e.pipes){let n=e.pipes.filter(e=>e.builtin).length;t.pipes={value:e.pipes.length-n,sub:n?`custom pipes · ${n} built-in in use`:`custom pipes in source`}}let n=this.liveSignals();n===null?e.signals&&(t.signals={value:e.signals.length,sub:`signal declarations in source`}):t.signals={value:n,sub:e.signals?`live on the page · ${e.signals.length} declared in source`:`live on the page`};let r=this.liveInjectors();r?t.injectors={value:r.injectors,sub:`live injectors · ${AE(r.providers,`provider`,`providers`)}`}:e.injectors&&(t.injectors={value:e.injectors.filter(e=>e.type!==`injection`).length,sub:`provider declarations in source`});let i=this.formsState();i&&(t.forms=FE(i,this.pageId));let a=this.httpState();return a&&(t.network=LE(a,this.pageId)),t});loadMeta(e=this.rpc()){e&&(this.metaState.set(`loading`),e.scope(`pangular`).rpc.call(`build-meta`).then(t=>{this.rpc()===e&&(this.meta.set(t),this.metaState.set(`ready`))}).catch(()=>{this.rpc()===e&&this.metaState.set(`error`)}))}loadRedaction(e){this.redaction.set(null),!yT(e)&&_T(e,`redaction-config`).then(t=>{this.rpc()===e&&this.redaction.set(t)}).catch(()=>{})}constructor(){ac(()=>{let e=this.rpc();if(!e)return;let t=e.scope(`pangular`);this.states.set({}),this.rows.set({}),this.formsState.set(null),this.httpState.set(null),this.loadMeta(e),this.loadRedaction(e);let n=NT(e),r=e=>BT(e,n);r(`components`)&&this.load(t.rpc.call(`get-components`),`components`),r(`routes`)&&this.load(t.rpc.call(`get-routes`),`routes`),r(`signals`)&&this.load(t.rpc.call(`get-signals`),`signals`),r(`injectors`)&&this.load(t.rpc.call(`get-providers`),`injectors`),r(`store`)&&this.load(t.rpc.call(`get-ngrx-store`),`store`),r(`pipes`)&&this.load(t.rpc.call(`get-pipes`),`pipes`),this.watchLive(e,n)}),this.destroyRef.onDestroy(()=>this.unwatch())}stateOf(e){return(e===`signals`?this.liveSignals():e===`injectors`?this.liveInjectors():null)===null?this.states()[e]??`loading`:`ready`}load(e,t){let n=e=>this.states.update(n=>({...n,[t]:e}));e.then(e=>{this.rows.update(n=>({...n,[t]:Array.isArray(e)?e:[]})),n(`ready`)}).catch(()=>n(`error`))}async watchLive(e,t){this.unwatch();let n=e.scope(`pangular`).rpc,r=async(t,r,i)=>{let a=e=>i&&this.states.update(t=>({...t,[i]:e}));try{let i=await n.sharedState(t);if(this.destroyRef.destroyed||this.rpc()!==e)return;r(i.value()),a(`ready`),this.stopLive.push(i.on(`updated`,e=>r(e)))}catch{if(this.destroyRef.destroyed||this.rpc()!==e)return;r(null),a(`error`)}};await Promise.all([t.inspectors.injectors&&r(`injector-tree`,e=>this.injectorTree.set(e)),t.inspectors.signals&&r(`signal-graph`,e=>this.signalGraph.set(e)),BT(`forms`,t)&&r(`forms`,e=>this.formsState.set(e??{}),`forms`),BT(`network`,t)&&r(`http`,e=>this.httpState.set(e??{}),`network`)])}unwatch(){for(let e of this.stopLive.splice(0))e()}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-dashboard`]],inputs:{rpc:[1,`rpc`]},outputs:{navigate:`navigate`},decls:33,vars:14,consts:[[`aria-labelledby`,`project-title`,1,`project`],[1,`project-head`],[1,`eyebrow`],[`id`,`project-title`],[1,`chips`],[1,`analog`],[1,`grid`],[`type`,`button`,1,`stat`,3,`animation-delay`],[`aria-labelledby`,`config-title`,1,`config`],[`id`,`config-title`],[1,`hint`],[`type`,`button`,1,`retry`],[`type`,`button`,1,`retry`,3,`click`],[`type`,`button`,1,`stat`,3,`click`],[1,`top`],[1,`icon`],[3,`name`],[`aria-hidden`,`true`,1,`go`],[1,`label`],[1,`big`],[1,`sub`],[1,`big`,`muted`],[`aria-hidden`,`true`,1,`big`,`skeleton`]],template:function(e,t){if(e&1&&(F(0,`section`,0)(1,`div`,1)(2,`p`,2),K(3,`Project`),I(),F(4,`h2`,3),A(5,sE,1,1)(6,cE,1,0)(7,lE,1,0),I(),A(8,pE,4,2),I(),F(9,`ul`,4)(10,`li`)(11,`span`),K(12,`Angular`),I(),K(13),I(),F(14,`li`)(15,`span`),K(16,`TypeScript`),I(),K(17),I(),F(18,`li`)(19,`span`),K(20,`SSR`),I(),K(21),I(),A(22,mE,4,1,`li`,5),A(23,hE,4,1,`li`),I()(),F(24,`div`,6),M(25,yE,11,6,`button`,7,aE),I(),F(27,`section`,8)(28,`h2`,9),K(29,`Configuration`),I(),A(30,bE,2,0,`p`)(31,SE,3,0,`dl`)(32,CE,2,0,`p`),I()),e&2){let e,n,r;k(`aria-busy`,t.metaState()===`loading`),D(4),G(`muted`,t.metaState()!==`ready`),D(),j((e=t.metaState())===`ready`?5:e===`error`?6:7),D(3),j(t.metaState()===`error`?8:-1),D(),G(`pending`,t.metaState()===`loading`),D(4),q(t.meta()?.angularVersion??`…`),D(4),q(t.meta()?.typescript??`…`),D(4),q(t.meta()?t.meta()?.ssr?`On`:`Off`:`…`),D(),j((n=t.meta()?.analog)?22:-1,n),D(),j((r=t.zone())?23:-1,r),D(2),N(t.stats()),D(2),k(`aria-busy`,!t.rpc()),D(3),j(t.rpc()?t.configItems().length?31:32:30)}},dependencies:[iE],styles:[`[_nghost-%COMP%] { +}`]})},aE=(e,t)=>t.tab,oE=(e,t)=>t.label;function sE(e,t){e&1&&K(0),e&2&&J(` `,W().meta()?.projectName,` `)}function cE(e,t){e&1&&K(0,` Project details unavailable `)}function lE(e,t){e&1&&K(0,` Loading… `)}function uE(e,t){e&1&&(K(0,` Run `),F(1,`code`),K(2,`pangular build`),I(),K(3,` again to rebuild the report. `))}function dE(e,t){e&1&&K(0,` Check that the dev server is running. `)}function fE(e,t){if(e&1){let e=B();F(0,`button`,12),H(`click`,function(){return S(e),C(W(2).loadMeta())}),K(1,`Try again`),I()}}function pE(e,t){if(e&1&&(F(0,`p`,10),A(1,uE,4,0)(2,dE,1,0),I(),A(3,fE,2,0,`button`,11)),e&2){let e=W();D(),j(e.staticReport()?1:2),D(2),j(e.staticReport()?-1:3)}}function mE(e,t){e&1&&(F(0,`li`,5)(1,`span`),K(2,`Analog`),I(),K(3),I()),e&2&&(D(3),q(t))}function hE(e,t){e&1&&(F(0,`li`)(1,`span`),K(2,`Change detection`),I(),K(3),I()),e&2&&(D(3),q(t))}function gE(e,t){if(e&1&&(F(0,`span`,19),K(1),I(),F(2,`span`,20),K(3),I()),e&2){let e=W().$implicit,t=W();D(),q(t.cards()[e.tab]?.value),D(2),q(t.cards()[e.tab]?.sub)}}function _E(e,t){e&1&&(F(0,`span`,21),K(1,`–`),I(),F(2,`span`,20),K(3,`Count unavailable`),I())}function vE(e,t){e&1&&(L(0,`span`,22),F(1,`span`,20),K(2,`Counting…`),I())}function yE(e,t){if(e&1){let e=B();F(0,`button`,13),H(`click`,function(){let t=S(e).$implicit;return C(W().navigate.emit(t.tab))}),F(1,`span`,14)(2,`span`,15),L(3,`app-tab-icon`,16),I(),F(4,`span`,17),K(5,`→`),I()(),F(6,`span`,18),K(7),I(),A(8,gE,4,2)(9,_E,4,0)(10,vE,3,0),I()}if(e&2){let e,n=t.$implicit,r=t.$index,i=W().stateOf(n.tab);$g(`animation-delay`,60*r,`ms`),k(`aria-busy`,i===`loading`),D(3),P(`name`,n.tab),D(4),q(n.label),D(),j((e=i)===`ready`?8:e===`error`?9:10)}}function bE(e,t){e&1&&(F(0,`p`),K(1,`Loading…`),I())}function xE(e,t){if(e&1&&(F(0,`div`)(1,`dt`),K(2),I(),F(3,`dd`),K(4),I()()),e&2){let e=t.$implicit;D(2),q(e.label),D(2),q(e.value)}}function SE(e,t){if(e&1&&(F(0,`dl`),M(1,xE,5,2,`div`,null,oE),I()),e&2){let e=W();D(),N(e.configItems())}}function CE(e,t){e&1&&(F(0,`p`),K(1,`Defaults`),I())}var wE=[{tab:`components`,label:`Components`},{tab:`routes`,label:`Routes`},{tab:`signals`,label:`Signals`},{tab:`injectors`,label:`Injectors`},{tab:`store`,label:`NgRx declarations`},{tab:`pipes`,label:`Pipes`},{tab:`forms`,label:`Forms`},{tab:`network`,label:`SSR & HTTP`}];function TE(e){return wE.filter(t=>BT(t.tab,e))}var EE={zoneless:`Zoneless`,zone:`zone.js`,"zone-unused":`Zoneless, zone.js loaded`};function DE(e){return e&&Object.hasOwn(EE,e)?EE[e]:null}var OE=new Set([`signal`,`computed`,`linkedSignal`,`effect`]),kE={action:[`action`,`actions`],reducer:[`reducer`,`reducers`],effect:[`effect`,`effects`],selector:[`selector`,`selectors`],feature:[`feature`,`features`],"store-setup":[`setup call`,`setup calls`],"signal-store":[`signal store`,`signal stores`],"signal-state":[`signal state`,`signal states`],"signal-method":[`signal method`,`signal methods`]};function AE(e,t,n){return`${e} ${e===1?t:n}`}function jE(e,t){for(let n of e??[])t(n),jE(n.children,t)}function ME(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`discovered in source`};let t=e.filter(e=>e.kind===`directive`).length;return{value:e.length-t,sub:`components · ${AE(t,`directive`,`directives`)}`}}function NE(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`route entries in source`};let t=e.filter(e=>e.kind===`redirect`).length;return{value:new Set(e.filter(e=>e.kind===`page`).map(e=>e.fullPath??e.path??``)).size,sub:`navigable paths · ${AE(t,`redirect`,`redirects`)}`}}function PE(e){let t=new Map;for(let n of e)n.kind&&t.set(n.kind,(t.get(n.kind)??0)+1);if(!t.size)return{value:e.length,sub:`declarations in source`};let n=[...t].sort((e,t)=>t[1]-e[1]).map(([e,t])=>{let[n,r]=kE[e]??[e,e];return AE(t,n,r)});return{value:e.length,sub:n.join(` · `)}}function FE(e,t){let n=e?.forms??[],r=t?n.filter(e=>ST(e.id)===t):n;if(!r.length)return{value:0,sub:`no forms on the page yet`};let i=r.filter(e=>e.root?.status===`INVALID`).length;return{value:r.length,sub:`${r.length===1?`form`:`forms`} · ${i} invalid`}}function IE(e){return e.cancelled||e.status===void 0?!1:e.status===0||e.status>=400}function LE(e,t){let n=e?.pages??[],r=t?n.find(e=>e.pageId===t)??null:n.reduce((e,t)=>!e||t.reportedAt>e.reportedAt?t:e,null),i=t&&!r?[]:e?.serverCalls??[],a=r?.initialUrl,o=[...a?i.filter(e=>!e.pageUrl||e.pageUrl===a):i,...r?.calls??[]];if(!o.length)return{value:0,sub:`no calls recorded yet`};let s=o.filter(IE).length;return{value:o.length,sub:`${o.length===1?`call`:`calls`} · ${s} failed`}}var RE=class e{rpc=$(null);navigate=ov();staticReport=X(()=>yT(this.rpc()));meta=T(null);redaction=T(null);config=X(()=>FT(NT(this.rpc()),this.redaction()));stats=X(()=>this.rpc()?TE(this.config()):[]);configItems=X(()=>Yw(this.config()));metaState=T(`loading`);states=T({});rows=T({});injectorTree=T(null);signalGraph=T(null);formsState=T(null);httpState=T(null);pageId=fT();destroyRef=x(vs);stopLive=[];zone=X(()=>DE(mT(this.injectorTree(),this.pageId)?.zone));liveInjectors=X(()=>{let e=mT(this.injectorTree(),this.pageId);if(!e?.roots?.length)return null;let t=0,n=0,r=e=>{t++,n+=e.providers?.length??0};return jE(e.roots,r),jE(e.environment,r),{injectors:t,providers:n}});liveSignals=X(()=>{let e=hT(this.signalGraph(),this.pageId);return e?.nodes?.length?e.nodes.filter(e=>OE.has(e.kind??``)).length:null});cards=X(()=>{let e=this.rows(),t={};if(e.components&&(t.components=ME(e.components)),e.routes&&(t.routes=NE(e.routes)),e.store&&(t.store=PE(e.store)),e.pipes){let n=e.pipes.filter(e=>e.builtin).length;t.pipes={value:e.pipes.length-n,sub:n?`custom pipes · ${n} built-in in use`:`custom pipes in source`}}let n=this.liveSignals();n===null?e.signals&&(t.signals={value:e.signals.length,sub:`signal declarations in source`}):t.signals={value:n,sub:e.signals?`live on the page · ${e.signals.length} declared in source`:`live on the page`};let r=this.liveInjectors();r?t.injectors={value:r.injectors,sub:`live injectors · ${AE(r.providers,`provider`,`providers`)}`}:e.injectors&&(t.injectors={value:e.injectors.filter(e=>e.type!==`injection`).length,sub:`provider declarations in source`});let i=this.formsState();i&&(t.forms=FE(i,this.pageId));let a=this.httpState();return a&&(t.network=LE(a,this.pageId)),t});loadMeta(e=this.rpc()){e&&(this.metaState.set(`loading`),e.scope(`pangular`).rpc.call(`build-meta`).then(t=>{this.rpc()===e&&(this.meta.set(t),this.metaState.set(`ready`))}).catch(()=>{this.rpc()===e&&this.metaState.set(`error`)}))}loadRedaction(e){this.redaction.set(null),!yT(e)&&_T(e,`redaction-config`).then(t=>{this.rpc()===e&&this.redaction.set(t)}).catch(()=>{})}constructor(){E(()=>{let e=this.rpc();if(!e)return;let t=e.scope(`pangular`);this.states.set({}),this.rows.set({}),this.formsState.set(null),this.httpState.set(null),this.loadMeta(e),this.loadRedaction(e);let n=NT(e),r=e=>BT(e,n);r(`components`)&&this.load(t.rpc.call(`get-components`),`components`),r(`routes`)&&this.load(t.rpc.call(`get-routes`),`routes`),r(`signals`)&&this.load(t.rpc.call(`get-signals`),`signals`),r(`injectors`)&&this.load(t.rpc.call(`get-providers`),`injectors`),r(`store`)&&this.load(t.rpc.call(`get-ngrx-store`),`store`),r(`pipes`)&&this.load(t.rpc.call(`get-pipes`),`pipes`),this.watchLive(e,n)}),this.destroyRef.onDestroy(()=>this.unwatch())}stateOf(e){return(e===`signals`?this.liveSignals():e===`injectors`?this.liveInjectors():null)===null?this.states()[e]??`loading`:`ready`}load(e,t){let n=e=>this.states.update(n=>({...n,[t]:e}));e.then(e=>{this.rows.update(n=>({...n,[t]:Array.isArray(e)?e:[]})),n(`ready`)}).catch(()=>n(`error`))}async watchLive(e,t){this.unwatch();let n=e.scope(`pangular`).rpc,r=async(t,r,i)=>{let a=e=>i&&this.states.update(t=>({...t,[i]:e}));try{let i=await n.sharedState(t);if(this.destroyRef.destroyed||this.rpc()!==e)return;r(i.value()),a(`ready`),this.stopLive.push(i.on(`updated`,e=>r(e)))}catch{if(this.destroyRef.destroyed||this.rpc()!==e)return;r(null),a(`error`)}};await Promise.all([t.inspectors.injectors&&r(`injector-tree`,e=>this.injectorTree.set(e)),t.inspectors.signals&&r(`signal-graph`,e=>this.signalGraph.set(e)),BT(`forms`,t)&&r(`forms`,e=>this.formsState.set(e??{}),`forms`),BT(`network`,t)&&r(`http`,e=>this.httpState.set(e??{}),`network`)])}unwatch(){for(let e of this.stopLive.splice(0))e()}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-dashboard`]],inputs:{rpc:[1,`rpc`]},outputs:{navigate:`navigate`},decls:33,vars:14,consts:[[`aria-labelledby`,`project-title`,1,`project`],[1,`project-head`],[1,`eyebrow`],[`id`,`project-title`],[1,`chips`],[1,`analog`],[1,`grid`],[`type`,`button`,1,`stat`,3,`animation-delay`],[`aria-labelledby`,`config-title`,1,`config`],[`id`,`config-title`],[1,`hint`],[`type`,`button`,1,`retry`],[`type`,`button`,1,`retry`,3,`click`],[`type`,`button`,1,`stat`,3,`click`],[1,`top`],[1,`icon`],[3,`name`],[`aria-hidden`,`true`,1,`go`],[1,`label`],[1,`big`],[1,`sub`],[1,`big`,`muted`],[`aria-hidden`,`true`,1,`big`,`skeleton`]],template:function(e,t){if(e&1&&(F(0,`section`,0)(1,`div`,1)(2,`p`,2),K(3,`Project`),I(),F(4,`h2`,3),A(5,sE,1,1)(6,cE,1,0)(7,lE,1,0),I(),A(8,pE,4,2),I(),F(9,`ul`,4)(10,`li`)(11,`span`),K(12,`Angular`),I(),K(13),I(),F(14,`li`)(15,`span`),K(16,`TypeScript`),I(),K(17),I(),F(18,`li`)(19,`span`),K(20,`SSR`),I(),K(21),I(),A(22,mE,4,1,`li`,5),A(23,hE,4,1,`li`),I()(),F(24,`div`,6),M(25,yE,11,6,`button`,7,aE),I(),F(27,`section`,8)(28,`h2`,9),K(29,`Configuration`),I(),A(30,bE,2,0,`p`)(31,SE,3,0,`dl`)(32,CE,2,0,`p`),I()),e&2){let e,n,r;k(`aria-busy`,t.metaState()===`loading`),D(4),G(`muted`,t.metaState()!==`ready`),D(),j((e=t.metaState())===`ready`?5:e===`error`?6:7),D(3),j(t.metaState()===`error`?8:-1),D(),G(`pending`,t.metaState()===`loading`),D(4),q(t.meta()?.angularVersion??`…`),D(4),q(t.meta()?.typescript??`…`),D(4),q(t.meta()?t.meta()?.ssr?`On`:`Off`:`…`),D(),j((n=t.meta()?.analog)?22:-1,n),D(),j((r=t.zone())?23:-1,r),D(2),N(t.stats()),D(2),k(`aria-busy`,!t.rpc()),D(3),j(t.rpc()?t.configItems().length?31:32:30)}},dependencies:[iE],styles:[`[_nghost-%COMP%] { display: block; max-width: 1200px; } @@ -325,7 +325,7 @@ h2.muted[_ngcontent-%COMP%] { .skeleton[_ngcontent-%COMP%] { animation: none; } -}`]})},zE=`pangular:panel-action-result`,BE=6e3,VE=0;function HE(e=window){return e.location.protocol===`chrome-extension:`&&e.parent!==e}function UE(e,t=window){let n=`pa-${Date.now().toString(36)}-${++VE}`;return new Promise(r=>{let i=e=>{t.clearTimeout(o),t.removeEventListener(`message`,a),r(e)},a=({source:e,origin:r,data:a})=>{if(e!==t.parent||r!==t.location.origin)return;let o=a;if(o?.type!==zE||o.requestId!==n)return;let{opened:s,error:c}=a;i({ok:o.ok===!0,...s===`file`||s===`class`?{opened:s}:{},...typeof c==`string`?{error:c}:{}})},o=t.setTimeout(()=>i({ok:!1,error:`timeout`}),BE);t.addEventListener(`message`,a),t.parent.postMessage({...e,requestId:n},t.location.origin)})}var WE=class e{available=HE();reveal(e,t){return UE({type:`pangular:reveal-element`,pageId:e,id:t})}openSource(e,t,n){return UE({type:`pangular:open-source`,pageId:e,id:t,...n?{file:n.file,line:n.line}:{}})}static ɵfac=function(t){return new(t||e)};static ɵprov=El({token:e,factory:e.ɵfac})};function GE(e){return new Date(e).toLocaleTimeString()}var KE=/[ \t\n\r]/;function qE(e){let t=e.trim(),n;try{n=JSON.parse(t)}catch{return null}if(typeof n!=`object`||!n)return null;let r=``,i=0,a=()=>`\n${` `.repeat(i)}`;for(let e=0;et.name;function XE(e,t){e&1&&(R(0,`span`,11),K(1,`impure`),z())}function ZE(e,t){e&1&&(R(0,`span`,11),K(1,`churning`),z())}function QE(e,t){e&1&&(R(0,`span`,11),K(1,`stale?`),z())}function $E(e,t){if(e&1&&(R(0,`span`,10),K(1),z()),e&2){let e=W(2).$implicit,t=W(3);D(),q(t.plural(e.calls,`call`))}}function eD(e,t){if(e&1){let e=B();R(0,`button`,7),U(`click`,function(){C(e);let t=W().$implicit;return w(W(3).showPipe.emit(t.name))}),R(1,`span`,8),K(2,`Show in Pipes:`),z(),R(3,`span`,9),K(4),z(),R(5,`span`,10),K(6),z(),A(7,XE,2,0,`span`,11),A(8,ZE,2,0,`span`,11),A(9,QE,2,0,`span`,11),A(10,$E,2,1,`span`,10),z()}if(e&2){let e=W().$implicit;D(4),q(e.name),D(2),J(``,e.uses,`×`),D(),j(e.isPure?-1:7),D(),j(e.churn?8:-1),D(),j(e.stale?9:-1),D(),j(e.calls===void 0?-1:10)}}function tD(e,t){e&1&&(R(0,`span`,11),K(1,`impure`),z())}function nD(e,t){if(e&1&&(R(0,`span`,6)(1,`span`,9),K(2),z(),R(3,`span`,10),K(4),z(),A(5,tD,2,0,`span`,11),z()),e&2){let e=W().$implicit;D(2),q(e.name),D(2),J(``,e.uses,`×`),D(),j(e.isPure?-1:5)}}function rD(e,t){if(e&1&&(R(0,`li`),A(1,eD,11,6,`button`,5)(2,nD,6,3,`span`,6),z()),e&2){let e=W(3);D(),j(e.canShowPipes()?1:2)}}function iD(e,t){if(e&1&&(R(0,`ul`,3),M(1,rD,3,1,`li`,null,YE),z(),R(3,`p`,4),K(4,` Call counts cover every component that uses the pipe. Record calls in the Pipes tab to see them. `),z()),e&2){let e=W(2);D(),N(e.rows())}}function aD(e,t){e&1&&(R(0,`p`,2),K(1,`No pipe is in use in the rendered part of its template.`),z())}function oD(e,t){if(e&1&&(R(0,`div`,0)(1,`h3`),K(2,` Pipes in template `),R(3,`span`,1),K(4),z()(),A(5,iD,5,0)(6,aD,2,0,`p`,2),z()),e&2){let e=W();D(4),q(e.rows().length),D(),j(e.rows().length?5:6)}}function sD(e,t,n){let r=(t?e?.pages?.find(e=>e.pageId===t):void 0)?.pipes??e?.pipes??[],i=[];for(let e of r){let t=e.components.find(e=>e.name===n);t&&i.push({name:e.name,isPure:e.isPure,uses:t.count,...e.call?{calls:e.call.callCount}:{},churn:!!e.churn,stale:!!e.stale})}return i.sort((e,t)=>e.name.localeCompare(t.name))}var cD=class e{plural=JE;destroyRef=S(vs);rpc=$(null);pageId=$(void 0);component=$.required();canShowPipes=$(!1);showPipe=Q_();snapshot=E(void 0);loaded=E(!1);rows=X(()=>sD(this.snapshot(),this.pageId(),this.component()));unsubscribe;constructor(){ac(()=>{let e=this.rpc();e&&this.subscribe(e)}),this.destroyRef.onDestroy(()=>this.unsubscribe?.())}async subscribe(e){try{let t=await e.scope(`pangular`).rpc.sharedState(`pipe-usage`);if(this.destroyRef.destroyed)return;let n=e=>{this.snapshot.set(e),this.loaded.set(!0)};n(t.value()),this.unsubscribe?.(),this.unsubscribe=t.on(`updated`,n)}catch{}}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-component-pipes`]],inputs:{rpc:[1,`rpc`],pageId:[1,`pageId`],component:[1,`component`],canShowPipes:[1,`canShowPipes`]},outputs:{showPipe:`showPipe`},decls:1,vars:1,consts:[[1,`block`],[1,`pill`],[1,`empty-line`],[1,`chips`],[1,`hint`],[`type`,`button`,1,`pipe`],[1,`pipe`],[`type`,`button`,1,`pipe`,3,`click`],[1,`sr-only`],[1,`mono`],[1,`note`],[1,`flag`,`warn`]],template:function(e,t){e&1&&A(0,oD,7,2,`div`,0),e&2&&j(t.loaded()?0:-1)},styles:[`[_nghost-%COMP%] { +}`]})},zE=`pangular:panel-action-result`,BE=6e3,VE=0;function HE(e=window){return e.location.protocol===`chrome-extension:`&&e.parent!==e}function UE(e,t=window){let n=`pa-${Date.now().toString(36)}-${++VE}`;return new Promise(r=>{let i=e=>{t.clearTimeout(o),t.removeEventListener(`message`,a),r(e)},a=({source:e,origin:r,data:a})=>{if(e!==t.parent||r!==t.location.origin)return;let o=a;if(o?.type!==zE||o.requestId!==n)return;let{opened:s,error:c}=a;i({ok:o.ok===!0,...s===`file`||s===`class`?{opened:s}:{},...typeof c==`string`?{error:c}:{}})},o=t.setTimeout(()=>i({ok:!1,error:`timeout`}),BE);t.addEventListener(`message`,a),t.parent.postMessage({...e,requestId:n},t.location.origin)})}var WE=class e{available=HE();reveal(e,t){return UE({type:`pangular:reveal-element`,pageId:e,id:t})}openSource(e,t,n){return UE({type:`pangular:open-source`,pageId:e,id:t,...n?{file:n.file,line:n.line}:{}})}static ɵfac=function(t){return new(t||e)};static ɵprov=Tl({token:e,factory:e.ɵfac})};function GE(e){return new Date(e).toLocaleTimeString()}var KE=/[ \t\n\r]/;function qE(e){let t=e.trim(),n;try{n=JSON.parse(t)}catch{return null}if(typeof n!=`object`||!n)return null;let r=``,i=0,a=()=>`\n${` `.repeat(i)}`;for(let e=0;et.name;function XE(e,t){e&1&&(R(0,`span`,11),K(1,`impure`),z())}function ZE(e,t){e&1&&(R(0,`span`,11),K(1,`churning`),z())}function QE(e,t){e&1&&(R(0,`span`,11),K(1,`stale?`),z())}function $E(e,t){if(e&1&&(R(0,`span`,10),K(1),z()),e&2){let e=W(2).$implicit,t=W(3);D(),q(t.plural(e.calls,`call`))}}function eD(e,t){if(e&1){let e=B();R(0,`button`,7),U(`click`,function(){S(e);let t=W().$implicit;return C(W(3).showPipe.emit(t.name))}),R(1,`span`,8),K(2,`Show in Pipes:`),z(),R(3,`span`,9),K(4),z(),R(5,`span`,10),K(6),z(),A(7,XE,2,0,`span`,11),A(8,ZE,2,0,`span`,11),A(9,QE,2,0,`span`,11),A(10,$E,2,1,`span`,10),z()}if(e&2){let e=W().$implicit;D(4),q(e.name),D(2),J(``,e.uses,`×`),D(),j(e.isPure?-1:7),D(),j(e.churn?8:-1),D(),j(e.stale?9:-1),D(),j(e.calls===void 0?-1:10)}}function tD(e,t){e&1&&(R(0,`span`,11),K(1,`impure`),z())}function nD(e,t){if(e&1&&(R(0,`span`,6)(1,`span`,9),K(2),z(),R(3,`span`,10),K(4),z(),A(5,tD,2,0,`span`,11),z()),e&2){let e=W().$implicit;D(2),q(e.name),D(2),J(``,e.uses,`×`),D(),j(e.isPure?-1:5)}}function rD(e,t){if(e&1&&(R(0,`li`),A(1,eD,11,6,`button`,5)(2,nD,6,3,`span`,6),z()),e&2){let e=W(3);D(),j(e.canShowPipes()?1:2)}}function iD(e,t){if(e&1&&(R(0,`ul`,3),M(1,rD,3,1,`li`,null,YE),z(),R(3,`p`,4),K(4,` Call counts cover every component that uses the pipe. Record calls in the Pipes tab to see them. `),z()),e&2){let e=W(2);D(),N(e.rows())}}function aD(e,t){e&1&&(R(0,`p`,2),K(1,`No pipe is in use in the rendered part of its template.`),z())}function oD(e,t){if(e&1&&(R(0,`div`,0)(1,`h3`),K(2,` Pipes in template `),R(3,`span`,1),K(4),z()(),A(5,iD,5,0)(6,aD,2,0,`p`,2),z()),e&2){let e=W();D(4),q(e.rows().length),D(),j(e.rows().length?5:6)}}function sD(e,t,n){let r=(t?e?.pages?.find(e=>e.pageId===t):void 0)?.pipes??e?.pipes??[],i=[];for(let e of r){let t=e.components.find(e=>e.name===n);t&&i.push({name:e.name,isPure:e.isPure,uses:t.count,...e.call?{calls:e.call.callCount}:{},churn:!!e.churn,stale:!!e.stale})}return i.sort((e,t)=>e.name.localeCompare(t.name))}var cD=class e{plural=JE;destroyRef=x(vs);rpc=$(null);pageId=$(void 0);component=$.required();canShowPipes=$(!1);showPipe=ov();snapshot=T(void 0);loaded=T(!1);rows=X(()=>sD(this.snapshot(),this.pageId(),this.component()));unsubscribe;constructor(){E(()=>{let e=this.rpc();e&&this.subscribe(e)}),this.destroyRef.onDestroy(()=>this.unsubscribe?.())}async subscribe(e){try{let t=await e.scope(`pangular`).rpc.sharedState(`pipe-usage`);if(this.destroyRef.destroyed)return;let n=e=>{this.snapshot.set(e),this.loaded.set(!0)};n(t.value()),this.unsubscribe?.(),this.unsubscribe=t.on(`updated`,n)}catch{}}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-component-pipes`]],inputs:{rpc:[1,`rpc`],pageId:[1,`pageId`],component:[1,`component`],canShowPipes:[1,`canShowPipes`]},outputs:{showPipe:`showPipe`},decls:1,vars:1,consts:[[1,`block`],[1,`pill`],[1,`empty-line`],[1,`chips`],[1,`hint`],[`type`,`button`,1,`pipe`],[1,`pipe`],[`type`,`button`,1,`pipe`,3,`click`],[1,`sr-only`],[1,`mono`],[1,`note`],[1,`flag`,`warn`]],template:function(e,t){e&1&&A(0,oD,7,2,`div`,0),e&2&&j(t.loaded()?0:-1)},styles:[`[_nghost-%COMP%] { display: block; } @@ -436,7 +436,7 @@ button.pipe[_ngcontent-%COMP%]:focus-visible { button.pipe[_ngcontent-%COMP%] { transition: none; } -}`]})};function lD(e){let t=e?.pages;return t&&typeof t==`object`?t:{}}function uD(e){let t=S(vs),n=E({}),r=null,i=null,a=async e=>{i?.(),i=null,r=e;try{let a=await e.scope(`pangular`).rpc.sharedState(`page-angular`);if(t.destroyed||r!==e)return;let o=e=>n.set(lD(e));o(a.value()),i=a.on(`updated`,o)}catch{r===e&&n.set({})}};return ac(()=>{let t=e();t&&t!==r&&Z(()=>void a(t))}),t.onDestroy(()=>i?.()),n.asReadonly()}function dD(e,t){if(t)return e[t]??null;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n}var fD=[`*`];function pD(e,t){if(e&1&&(R(0,`div`,1)(1,`p`,2),K(2),z(),R(3,`p`,3),K(4),Tg(5),R(6,`a`,4),K(7,`Supported versions`),z()()()),e&2){let e=W();G(`compact`,e.compact()),D(2),q(e.title()),D(2),J(` `,t,` `),D(2),V(`href`,e.docsUrl,yu)}}var mD=`https://pangular-inspector.dev/getting-started/installation/#supported-angular-versions`,hD=class e{page=$(null);capability=$.required();missing=$(!1,{transform:lv});compact=$(!1,{transform:lv});docsUrl=mD;text=X(()=>{let e=this.page();return!this.missing()&&!rT(e,this.capability())?null:iT(this.capability(),e?.version)});title=X(()=>{let e=this.page()?.version;return e?`Not available on Angular ${eT(e)}`:`Not available on this page`});static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-angular-unavailable`]],inputs:{page:[1,`page`],capability:[1,`capability`],missing:[1,`missing`],compact:[1,`compact`]},ngContentSelectors:fD,decls:1,vars:1,consts:[[`role`,`status`,1,`unavailable`,3,`compact`],[`role`,`status`,1,`unavailable`],[1,`title`],[1,`hint`],[`target`,`_blank`,`rel`,`noopener noreferrer`,3,`href`]],template:function(e,t){if(e&1&&(wg(),A(0,pD,8,5,`div`,0)),e&2){let e;j((e=t.text())?0:-1,e)}},styles:[`[_nghost-%COMP%] { +}`]})};function lD(e){let t=e?.pages;return t&&typeof t==`object`?t:{}}function uD(e){let t=x(vs),n=T({}),r=null,i=null,a=async e=>{i?.(),i=null,r=e;try{let a=await e.scope(`pangular`).rpc.sharedState(`page-angular`);if(t.destroyed||r!==e)return;let o=e=>n.set(lD(e));o(a.value()),i=a.on(`updated`,o)}catch{r===e&&n.set({})}};return E(()=>{let t=e();t&&t!==r&&Z(()=>void a(t))}),t.onDestroy(()=>i?.()),n.asReadonly()}function dD(e,t){if(t)return e[t]??null;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n}var fD=[`*`];function pD(e,t){if(e&1&&(R(0,`div`,1)(1,`p`,2),K(2),z(),R(3,`p`,3),K(4),Og(5),R(6,`a`,4),K(7,`Supported versions`),z()()()),e&2){let e=W();G(`compact`,e.compact()),D(2),q(e.title()),D(2),J(` `,t,` `),D(2),V(`href`,e.docsUrl,Cu)}}var mD=`https://pangular-inspector.dev/getting-started/installation/#supported-angular-versions`,hD=class e{page=$(null);capability=$.required();missing=$(!1,{transform:_v});compact=$(!1,{transform:_v});docsUrl=mD;text=X(()=>{let e=this.page();return!this.missing()&&!rT(e,this.capability())?null:iT(this.capability(),e?.version)});title=X(()=>{let e=this.page()?.version;return e?`Not available on Angular ${eT(e)}`:`Not available on this page`});static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-angular-unavailable`]],inputs:{page:[1,`page`],capability:[1,`capability`],missing:[1,`missing`],compact:[1,`compact`]},ngContentSelectors:fD,decls:1,vars:1,consts:[[`role`,`status`,1,`unavailable`,3,`compact`],[`role`,`status`,1,`unavailable`],[1,`title`],[1,`hint`],[`target`,`_blank`,`rel`,`noopener noreferrer`,3,`href`]],template:function(e,t){if(e&1&&(Dg(),A(0,pD,8,5,`div`,0)),e&2){let e;j((e=t.text())?0:-1,e)}},styles:[`[_nghost-%COMP%] { display: block; } @@ -483,7 +483,7 @@ a[_ngcontent-%COMP%] { a[_ngcontent-%COMP%]:focus-visible { outline: 2px solid var(--%NS%accent); outline-offset: 2px; -}`]})};function gD(e){return e?.platform===`angular-native`}function _D(e){return gD(e)||e?.platform===`nativescript`}function vD(e,t){let n=Object.values(e??{}).filter(gD);if(t&&n.some(e=>e.pageId===t))return t;let r=null;for(let e of n)(!r||e.reportedAt>r.reportedAt)&&(r=e);return r?.pageId??null}var yD=[`trigger`],bD=[`list`],xD=(e,t)=>t.value;function SD(e,t){if(e&1&&(R(0,`span`,4),K(1),z()),e&2){let e=W();D(),q(e.current().hint)}}function CD(e,t){if(e&1&&(R(0,`span`,15),K(1),z()),e&2){let e=W().$implicit;D(),q(e.hint)}}function wD(e,t){if(e&1){let e=B();R(0,`li`,11),U(`pointerenter`,function(){let t=C(e).$index;return w(W(2).active.set(t))})(`pointerdown`,function(e){return e.preventDefault()})(`click`,function(){let t=C(e).$index;return w(W(2).choose(t))}),T(),R(1,`svg`,12),og(2,`path`,13),z(),cs(),R(3,`span`,14),K(4),z(),A(5,CD,2,1,`span`,15),z()}if(e&2){let e=t.$implicit,n=t.$index,r=W(2);G(`active`,n===r.active())(`selected`,e.value===r.value()),k(`id`,r.uid+`-opt-`+n)(`aria-selected`,e.value===r.value())(`aria-disabled`,e.disabled||null),D(4),q(e.label),D(),j(e.hint?5:-1)}}function TD(e,t){if(e&1&&(R(0,`li`,10),K(1),z()),e&2){let e=W(2);D(),q(e.emptyText())}}function ED(e,t){if(e&1&&(R(0,`ul`,8,1),Ih(`list-in`),U(`pointerdown`,function(e){return e.preventDefault()}),M(2,wD,6,9,`li`,9,xD,!1,TD,2,1,`li`,10),z()),e&2){let e=W();G(`up`,e.dropUp()),k(`id`,e.uid+`-list`)(`aria-labelledby`,e.labelledBy()||e.uid+`-trigger`),D(2),N(e.options())}}var DD=0,OD=class e{options=$.required();value=rv(null);placeholder=$(`Select…`);ariaLabel=$(``);labelledBy=$(``);describedBy=$(``);disabled=$(!1);emptyText=$(`Nothing to choose`);uid=`app-select-${++DD}`;open=E(!1);active=E(-1);dropUp=E(!1);current=X(()=>this.options().find(e=>e.value===this.value())??null);host=S(kl);injector=S(gs);trigger=av.required(`trigger`);list=av(`list`);typed=``;typedAt=0;toggle(){this.open()?this.close():this.show()}choose(e){let t=this.options()[e];t&&!t.disabled&&(this.value.set(t.value),this.close(),this.trigger().nativeElement.focus())}onKey(e){let t=this.options(),n=this.open();switch(e.key){case`ArrowDown`:case`ArrowUp`:if(e.preventDefault(),!n){this.show();return}this.move(e.key===`ArrowDown`?1:-1);return;case`Home`:case`End`:if(!n)return;e.preventDefault(),this.setActive(e.key===`Home`?this.firstEnabled(0,1):this.firstEnabled(t.length-1,-1));return;case`Enter`:case` `:e.preventDefault(),n&&this.active()>=0?this.choose(this.active()):this.show();return;case`Escape`:if(!n)return;e.preventDefault(),e.stopPropagation(),this.close();return;case`Tab`:n&&this.close();return;default:e.key.length===1&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&this.typeAhead(e.key)}}onBlur(e){let t=e.relatedTarget;t&&this.host.nativeElement.contains(t)||this.close()}onOutside(e){this.open()&&!this.host.nativeElement.contains(e.target)&&this.close()}show(){if(this.disabled())return;let e=this.host.nativeElement.getBoundingClientRect(),t=window.innerHeight-e.bottom;this.dropUp.set(t<220&&e.top>t);let n=this.options().findIndex(e=>e.value===this.value());this.open.set(!0),this.setActive(n>=0?n:this.firstEnabled(0,1))}close(){this.open.set(!1),this.active.set(-1)}move(e){let t=this.firstEnabled(this.active()+e,e);t>=0&&this.setActive(t)}firstEnabled(e,t){let n=this.options();for(let r=e;r>=0&&r{(this.list()?.nativeElement.querySelector(`#${this.uid}-opt-${e}`))?.scrollIntoView({block:`nearest`})},{injector:this.injector})}typeAhead(e){let t=performance.now();this.typed=t-this.typedAt>600?e.toLowerCase():this.typed+e.toLowerCase(),this.typedAt=t;let n=this.options().findIndex(e=>!e.disabled&&e.label.toLowerCase().startsWith(this.typed));n<0||(this.open()?this.setActive(n):this.value.set(this.options()[n].value))}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-select`]],viewQuery:function(e,t){e&1&&Dg(t.trigger,yD,5)(t.list,bD,5),e&2&&Og(2)},hostAttrs:[1,`app-select`],hostVars:2,hostBindings:function(e,t){e&1&&H(`pointerdown`,function(e){return t.onOutside(e)},xu),e&2&&G(`open`,t.open())},inputs:{options:[1,`options`],value:[1,`value`],placeholder:[1,`placeholder`],ariaLabel:[1,`ariaLabel`],labelledBy:[1,`labelledBy`],describedBy:[1,`describedBy`],disabled:[1,`disabled`],emptyText:[1,`emptyText`]},outputs:{value:`valueChange`},decls:8,vars:13,consts:[[`trigger`,``],[`list`,``],[`type`,`button`,`role`,`combobox`,`aria-haspopup`,`listbox`,1,`trigger`,3,`click`,`keydown`,`blur`,`disabled`],[1,`value`],[1,`value-hint`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`chevron`],[`d`,`m6 9 6 6 6-6`],[`role`,`listbox`,`tabindex`,`-1`,1,`list`,3,`up`],[`role`,`listbox`,`tabindex`,`-1`,1,`list`,3,`pointerdown`],[`role`,`option`,3,`active`,`selected`],[`role`,`option`,`aria-disabled`,`true`,1,`empty`],[`role`,`option`,3,`pointerenter`,`pointerdown`,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`check`],[`d`,`m5 12 5 5 9-10`],[1,`label`],[1,`hint`]],template:function(e,t){e&1&&(R(0,`button`,2,0),U(`click`,function(){return t.toggle()})(`keydown`,function(e){return t.onKey(e)})(`blur`,function(e){return t.onBlur(e)}),R(2,`span`,3),K(3),z(),A(4,SD,2,1,`span`,4),T(),R(5,`svg`,5),og(6,`path`,6),z()(),A(7,ED,5,5,`ul`,7)),e&2&&(V(`disabled`,t.disabled()),k(`id`,t.uid+`-trigger`)(`aria-controls`,t.uid+`-list`)(`aria-expanded`,t.open())(`aria-label`,t.ariaLabel()||null)(`aria-labelledby`,t.labelledBy()||null)(`aria-describedby`,t.describedBy()||null)(`aria-activedescendant`,t.open()&&t.active()>=0?t.uid+`-opt-`+t.active():null),D(2),G(`placeholder`,!t.current()),D(),J(` `,t.current()?.label??t.placeholder(),` `),D(),j(t.current()?.hint?4:-1),D(3),j(t.open()?7:-1))},styles:[`[_nghost-%COMP%] { +}`]})};function gD(e){return e?.platform===`angular-native`}function _D(e){return gD(e)||e?.platform===`nativescript`}function vD(e,t){let n=Object.values(e??{}).filter(gD);if(t&&n.some(e=>e.pageId===t))return t;let r=null;for(let e of n)(!r||e.reportedAt>r.reportedAt)&&(r=e);return r?.pageId??null}var yD=[`trigger`],bD=[`list`],xD=(e,t)=>t.value;function SD(e,t){if(e&1&&(R(0,`span`,4),K(1),z()),e&2){let e=W();D(),q(e.current().hint)}}function CD(e,t){if(e&1&&(R(0,`span`,15),K(1),z()),e&2){let e=W().$implicit;D(),q(e.hint)}}function wD(e,t){if(e&1){let e=B();R(0,`li`,11),U(`pointerenter`,function(){let t=S(e).$index;return C(W(2).active.set(t))})(`pointerdown`,function(e){return e.preventDefault()})(`click`,function(){let t=S(e).$index;return C(W(2).choose(t))}),w(),R(1,`svg`,12),lg(2,`path`,13),z(),cs(),R(3,`span`,14),K(4),z(),A(5,CD,2,1,`span`,15),z()}if(e&2){let e=t.$implicit,n=t.$index,r=W(2);G(`active`,n===r.active())(`selected`,e.value===r.value()),k(`id`,r.uid+`-opt-`+n)(`aria-selected`,e.value===r.value())(`aria-disabled`,e.disabled||null),D(4),q(e.label),D(),j(e.hint?5:-1)}}function TD(e,t){if(e&1&&(R(0,`li`,10),K(1),z()),e&2){let e=W(2);D(),q(e.emptyText())}}function ED(e,t){if(e&1&&(R(0,`ul`,8,1),zh(`list-in`),U(`pointerdown`,function(e){return e.preventDefault()}),M(2,wD,6,9,`li`,9,xD,!1,TD,2,1,`li`,10),z()),e&2){let e=W();G(`up`,e.dropUp()),k(`id`,e.uid+`-list`)(`aria-labelledby`,e.labelledBy()||e.uid+`-trigger`),D(2),N(e.options())}}var DD=0,OD=class e{options=$.required();value=dv(null);placeholder=$(`Select…`);ariaLabel=$(``);labelledBy=$(``);describedBy=$(``);disabled=$(!1);emptyText=$(`Nothing to choose`);uid=`app-select-${++DD}`;open=T(!1);active=T(-1);dropUp=T(!1);current=X(()=>this.options().find(e=>e.value===this.value())??null);host=x(Ol);injector=x(gs);trigger=pv.required(`trigger`);list=pv(`list`);typed=``;typedAt=0;toggle(){this.open()?this.close():this.show()}choose(e){let t=this.options()[e];t&&!t.disabled&&(this.value.set(t.value),this.close(),this.trigger().nativeElement.focus())}onKey(e){let t=this.options(),n=this.open();switch(e.key){case`ArrowDown`:case`ArrowUp`:if(e.preventDefault(),!n){this.show();return}this.move(e.key===`ArrowDown`?1:-1);return;case`Home`:case`End`:if(!n)return;e.preventDefault(),this.setActive(e.key===`Home`?this.firstEnabled(0,1):this.firstEnabled(t.length-1,-1));return;case`Enter`:case` `:e.preventDefault(),n&&this.active()>=0?this.choose(this.active()):this.show();return;case`Escape`:if(!n)return;e.preventDefault(),e.stopPropagation(),this.close();return;case`Tab`:n&&this.close();return;default:e.key.length===1&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&this.typeAhead(e.key)}}onBlur(e){let t=e.relatedTarget;t&&this.host.nativeElement.contains(t)||this.close()}onOutside(e){this.open()&&!this.host.nativeElement.contains(e.target)&&this.close()}show(){if(this.disabled())return;let e=this.host.nativeElement.getBoundingClientRect(),t=window.innerHeight-e.bottom;this.dropUp.set(t<220&&e.top>t);let n=this.options().findIndex(e=>e.value===this.value());this.open.set(!0),this.setActive(n>=0?n:this.firstEnabled(0,1))}close(){this.open.set(!1),this.active.set(-1)}move(e){let t=this.firstEnabled(this.active()+e,e);t>=0&&this.setActive(t)}firstEnabled(e,t){let n=this.options();for(let r=e;r>=0&&r{(this.list()?.nativeElement.querySelector(`#${this.uid}-opt-${e}`))?.scrollIntoView({block:`nearest`})},{injector:this.injector})}typeAhead(e){let t=performance.now();this.typed=t-this.typedAt>600?e.toLowerCase():this.typed+e.toLowerCase(),this.typedAt=t;let n=this.options().findIndex(e=>!e.disabled&&e.label.toLowerCase().startsWith(this.typed));n<0||(this.open()?this.setActive(n):this.value.set(this.options()[n].value))}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-select`]],viewQuery:function(e,t){e&1&&Ag(t.trigger,yD,5)(t.list,bD,5),e&2&&jg(2)},hostAttrs:[1,`app-select`],hostVars:2,hostBindings:function(e,t){e&1&&H(`pointerdown`,function(e){return t.onOutside(e)},Tu),e&2&&G(`open`,t.open())},inputs:{options:[1,`options`],value:[1,`value`],placeholder:[1,`placeholder`],ariaLabel:[1,`ariaLabel`],labelledBy:[1,`labelledBy`],describedBy:[1,`describedBy`],disabled:[1,`disabled`],emptyText:[1,`emptyText`]},outputs:{value:`valueChange`},decls:8,vars:13,consts:[[`trigger`,``],[`list`,``],[`type`,`button`,`role`,`combobox`,`aria-haspopup`,`listbox`,1,`trigger`,3,`click`,`keydown`,`blur`,`disabled`],[1,`value`],[1,`value-hint`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`chevron`],[`d`,`m6 9 6 6 6-6`],[`role`,`listbox`,`tabindex`,`-1`,1,`list`,3,`up`],[`role`,`listbox`,`tabindex`,`-1`,1,`list`,3,`pointerdown`],[`role`,`option`,3,`active`,`selected`],[`role`,`option`,`aria-disabled`,`true`,1,`empty`],[`role`,`option`,3,`pointerenter`,`pointerdown`,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`check`],[`d`,`m5 12 5 5 9-10`],[1,`label`],[1,`hint`]],template:function(e,t){e&1&&(R(0,`button`,2,0),U(`click`,function(){return t.toggle()})(`keydown`,function(e){return t.onKey(e)})(`blur`,function(e){return t.onBlur(e)}),R(2,`span`,3),K(3),z(),A(4,SD,2,1,`span`,4),w(),R(5,`svg`,5),lg(6,`path`,6),z()(),A(7,ED,5,5,`ul`,7)),e&2&&(V(`disabled`,t.disabled()),k(`id`,t.uid+`-trigger`)(`aria-controls`,t.uid+`-list`)(`aria-expanded`,t.open())(`aria-label`,t.ariaLabel()||null)(`aria-labelledby`,t.labelledBy()||null)(`aria-describedby`,t.describedBy()||null)(`aria-activedescendant`,t.open()&&t.active()>=0?t.uid+`-opt-`+t.active():null),D(2),G(`placeholder`,!t.current()),D(),J(` `,t.current()?.label??t.placeholder(),` `),D(),j(t.current()?.hint?4:-1),D(3),j(t.open()?7:-1))},styles:[`[_nghost-%COMP%] { position: relative; display: inline-flex; min-width: 0; @@ -678,7 +678,7 @@ li.selected[_ngcontent-%COMP%] .check[_ngcontent-%COMP%] { .chevron[_ngcontent-%COMP%] { transition: none; } -}`]})};function kD(e,t){let n=Xw(t);if(Zw(n))return{nodes:e,matches:0};let r=0,i=e=>e.flatMap(e=>{let t=Qw(e,n);t&&r++;let a=i(e.children);return t||a.length?[{...e,children:a}]:[]});return{nodes:i(e),matches:r}}function AD(e){return e.flatMap(e=>e.kind===`directive`?AD(e.children):[{...e,children:AD(e.children)}])}function jD(e){return(e.attributes?.length?e.attributes:e.directives??[e.name]).map(e=>`[${e}]`).join(` `)}var MD={hydrated:`Hydrated`,skipped:`Skipped`,mismatched:`Mismatch`,client:`Client`};function ND(e){return MD[e]}function PD(e,t,n,r=!1,i=0){let a=r?`${e}+`:`${e}`;if(n)return`${t} of ${r?`${e+i}+`:e+i}`;let o=i?` · ${i} directive ${i===1?`host`:`hosts`}`:``;return`${a} ${e===1&&!r?`instance`:`instances`}${o}`}function FD(e,t,n,r=!1,i=0){if(!n.trim())return``;if(!t)return`No components match.`;let a=e+i,o=r?`${a}+`:`${a}`,s=!r&&a===1;return`${t} of ${o} ${i?s?`row`:`rows`:s?`instance`:`instances`} match.`}function ID(e){let t=e?.components,n=e?.depth;return t&&n?`Showing the first ${t} component instances, and none nested more than ${n} elements deep. Others are not listed or searchable.`:t?`Showing the first ${t} component instances. Others are not listed or searchable.`:n?`Components nested more than ${n} elements deep are not listed or searchable.`:`The page has more components than the tree shows.`}function LD(e,t){let n=t?.detail?.id??null,r=t?.pageId??null;if(r!==e.pageId)return{pageId:r,selectedId:n,detailId:n,destroyed:null};let i=e.selectedId;return n&&n!==e.detailId&&n!==i&&(i=n),i&&t&&!t.truncated&&!RD(t.roots,i)?{pageId:r,selectedId:null,detailId:n,destroyed:i}:{pageId:r,selectedId:i,detailId:n,destroyed:null}}function RD(e,t){return e.some(e=>e.id===t||RD(e.children,t))}function zD(e,t,n){let r=e.indexOf(n);if(r<0)return null;for(let n=r+1;n=0;n--)if(t.has(e[n]))return e[n];return null}var BD=(e,t)=>t.key,VD=(e,t)=>t.id;function HD(e,t){e&1&&(R(0,`p`,2),K(1,` The HTML came from the server, but no component was hydrated, so the app rendered again on the client. Add `),R(2,`code`),K(3,`provideClientHydration()`),z(),K(4,` and use a development build to see each component's status. `),z())}function UD(e,t){if(e&1&&(R(0,`li`)(1,`span`,9),K(2),z(),K(3),z()),e&2){let e=t.$implicit;Zg(`count count-`+e.key),D(2),q(e.value),D(),J(` `,e.label,` `)}}function WD(e,t){if(e&1&&(R(0,`span`,15),K(1,`Expected `),R(2,`code`),K(3),z()()),e&2){let e=W().$implicit;D(3),q(e.expected)}}function GD(e,t){if(e&1&&(R(0,`span`,15),K(1,`Found `),R(2,`code`),K(3),z()()),e&2){let e=W().$implicit;D(3),q(e.actual)}}function KD(e,t){if(e&1){let e=B();R(0,`li`)(1,`button`,12),U(`click`,function(){let t=C(e).$implicit;return w(W(4).showNode.emit(t.id))})(`focus`,function(){let t=C(e).$implicit;return w(W(4).highlight.emit(t.id))})(`blur`,function(){return C(e),w(W(4).highlight.emit(null))})(`mouseenter`,function(){let t=C(e).$implicit;return w(W(4).highlight.emit(t.id))})(`mouseleave`,function(){return C(e),w(W(4).highlight.emit(null))}),R(2,`span`,13),K(3),z(),R(4,`span`,14),K(5),z(),A(6,WD,4,1,`span`,15),A(7,GD,4,1,`span`,15),z()()}if(e&2){let e=t.$implicit;D(3),q(e.name),D(2),J(`<`,e.tag,`>`),D(),j(e.expected?6:-1),D(),j(e.actual?7:-1)}}function qD(e,t){if(e&1&&(R(0,`h3`,10),K(1,`Mismatches`),z(),R(2,`ul`,11),M(3,KD,8,4,`li`,null,VD),z()),e&2){let e=W(2);D(3),N(e.mismatches)}}function JD(e,t){if(e&1){let e=B();R(0,`div`,3)(1,`ul`,4),M(2,UD,4,4,`li`,5,BD),z(),R(4,`button`,6),U(`click`,function(){return C(e),w(W(2).toggleOverlay())}),T(),R(5,`svg`,7),og(6,`rect`,8),z(),K(7,` Outline on page `),z()(),A(8,qD,5,0)}if(e&2){let e=W(),t=W();D(2),N(t.counts()),D(2),k(`aria-pressed`,t.overlayOn()),D(4),j(e.mismatches.length?8:-1)}}function YD(e,t){e&1&&A(0,HD,5,0,`p`,2)(1,JD,9,2),e&2&&j(+!!t.hydrated)}function XD(e,t){e&1&&(R(0,`p`,2),K(1,` This page was not rendered on the server, so there is nothing to hydrate. With server-side rendering and `),R(2,`code`),K(3,`provideClientHydration()`),z(),K(4,`, each component shows whether it was hydrated, skipped or mismatched. `),z())}var ZD=class e{report=$(void 0);overlay=Q_();showNode=Q_();highlight=Q_();overlayOn=Q(()=>this.report()?.overlay===!0);counts=X(()=>{let e=this.report()?.counts;return e?[{key:`hydrated`,label:`hydrated`,value:e.hydrated},{key:`skipped`,label:`skipped`,value:e.skipped},{key:`mismatched`,label:`mismatched`,value:e.mismatched},{key:`client`,label:`created on the client`,value:e.client},{key:`dehydratedBlocks`,label:e.dehydratedBlocks===1?`dehydrated @defer block`:`dehydrated @defer blocks`,value:e.dehydratedBlocks}]:[]});toggleOverlay(){let e=!this.overlayOn();this.overlayOn.set(e),this.overlay.emit(e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-hydration-section`]],inputs:{report:[1,`report`]},outputs:{overlay:`overlay`,showNode:`showNode`,highlight:`highlight`},decls:5,vars:1,consts:[[`aria-labelledby`,`ct-hydration-title`,1,`hydration`],[`id`,`ct-hydration-title`,1,`title`],[1,`empty`],[1,`summary`],[`aria-label`,`Hydration summary`,1,`counts`],[3,`class`],[`type`,`button`,1,`outline`,3,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`x`,`3`,`y`,`3`,`width`,`18`,`height`,`18`,`rx`,`2`,`stroke-dasharray`,`4 3`],[1,`num`],[1,`label`],[1,`mismatches`],[`type`,`button`,1,`mismatch`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`],[1,`name`,`mono`],[1,`mono`,`muted`],[1,`detail-line`]],template:function(e,t){if(e&1&&(R(0,`section`,0)(1,`h2`,1),K(2,`Hydration`),z(),A(3,YD,2,1)(4,XD,5,0,`p`,2),z()),e&2){let e;D(3),j((e=t.report())?3:4,e)}},styles:[`.hydration[_ngcontent-%COMP%] { +}`]})};function kD(e,t){let n=Xw(t);if(Zw(n))return{nodes:e,matches:0};let r=0,i=e=>e.flatMap(e=>{let t=Qw(e,n);t&&r++;let a=i(e.children);return t||a.length?[{...e,children:a}]:[]});return{nodes:i(e),matches:r}}function AD(e){return e.flatMap(e=>e.kind===`directive`?AD(e.children):[{...e,children:AD(e.children)}])}function jD(e){return(e.attributes?.length?e.attributes:e.directives??[e.name]).map(e=>`[${e}]`).join(` `)}var MD={hydrated:`Hydrated`,skipped:`Skipped`,mismatched:`Mismatch`,client:`Client`};function ND(e){return MD[e]}function PD(e,t,n,r=!1,i=0){let a=r?`${e}+`:`${e}`;if(n)return`${t} of ${r?`${e+i}+`:e+i}`;let o=i?` · ${i} directive ${i===1?`host`:`hosts`}`:``;return`${a} ${e===1&&!r?`instance`:`instances`}${o}`}function FD(e,t,n,r=!1,i=0){if(!n.trim())return``;if(!t)return`No components match.`;let a=e+i,o=r?`${a}+`:`${a}`,s=!r&&a===1;return`${t} of ${o} ${i?s?`row`:`rows`:s?`instance`:`instances`} match.`}function ID(e){let t=e?.components,n=e?.depth;return t&&n?`Showing the first ${t} component instances, and none nested more than ${n} elements deep. Others are not listed or searchable.`:t?`Showing the first ${t} component instances. Others are not listed or searchable.`:n?`Components nested more than ${n} elements deep are not listed or searchable.`:`The page has more components than the tree shows.`}function LD(e,t){let n=t?.detail?.id??null,r=t?.pageId??null;if(r!==e.pageId)return{pageId:r,selectedId:n,detailId:n,destroyed:null};let i=e.selectedId;return n&&n!==e.detailId&&n!==i&&(i=n),i&&t&&!t.truncated&&!RD(t.roots,i)?{pageId:r,selectedId:null,detailId:n,destroyed:i}:{pageId:r,selectedId:i,detailId:n,destroyed:null}}function RD(e,t){return e.some(e=>e.id===t||RD(e.children,t))}function zD(e,t,n){let r=e.indexOf(n);if(r<0)return null;for(let n=r+1;n=0;n--)if(t.has(e[n]))return e[n];return null}var BD=(e,t)=>t.key,VD=(e,t)=>t.id;function HD(e,t){e&1&&(R(0,`p`,2),K(1,` The HTML came from the server, but no component was hydrated, so the app rendered again on the client. Add `),R(2,`code`),K(3,`provideClientHydration()`),z(),K(4,` and use a development build to see each component's status. `),z())}function UD(e,t){if(e&1&&(R(0,`li`)(1,`span`,9),K(2),z(),K(3),z()),e&2){let e=t.$implicit;e_(`count count-`+e.key),D(2),q(e.value),D(),J(` `,e.label,` `)}}function WD(e,t){if(e&1&&(R(0,`span`,15),K(1,`Expected `),R(2,`code`),K(3),z()()),e&2){let e=W().$implicit;D(3),q(e.expected)}}function GD(e,t){if(e&1&&(R(0,`span`,15),K(1,`Found `),R(2,`code`),K(3),z()()),e&2){let e=W().$implicit;D(3),q(e.actual)}}function KD(e,t){if(e&1){let e=B();R(0,`li`)(1,`button`,12),U(`click`,function(){let t=S(e).$implicit;return C(W(4).showNode.emit(t.id))})(`focus`,function(){let t=S(e).$implicit;return C(W(4).highlight.emit(t.id))})(`blur`,function(){return S(e),C(W(4).highlight.emit(null))})(`mouseenter`,function(){let t=S(e).$implicit;return C(W(4).highlight.emit(t.id))})(`mouseleave`,function(){return S(e),C(W(4).highlight.emit(null))}),R(2,`span`,13),K(3),z(),R(4,`span`,14),K(5),z(),A(6,WD,4,1,`span`,15),A(7,GD,4,1,`span`,15),z()()}if(e&2){let e=t.$implicit;D(3),q(e.name),D(2),J(`<`,e.tag,`>`),D(),j(e.expected?6:-1),D(),j(e.actual?7:-1)}}function qD(e,t){if(e&1&&(R(0,`h3`,10),K(1,`Mismatches`),z(),R(2,`ul`,11),M(3,KD,8,4,`li`,null,VD),z()),e&2){let e=W(2);D(3),N(e.mismatches)}}function JD(e,t){if(e&1){let e=B();R(0,`div`,3)(1,`ul`,4),M(2,UD,4,4,`li`,5,BD),z(),R(4,`button`,6),U(`click`,function(){return S(e),C(W(2).toggleOverlay())}),w(),R(5,`svg`,7),lg(6,`rect`,8),z(),K(7,` Outline on page `),z()(),A(8,qD,5,0)}if(e&2){let e=W(),t=W();D(2),N(t.counts()),D(2),k(`aria-pressed`,t.overlayOn()),D(4),j(e.mismatches.length?8:-1)}}function YD(e,t){e&1&&A(0,HD,5,0,`p`,2)(1,JD,9,2),e&2&&j(+!!t.hydrated)}function XD(e,t){e&1&&(R(0,`p`,2),K(1,` This page was not rendered on the server, so there is nothing to hydrate. With server-side rendering and `),R(2,`code`),K(3,`provideClientHydration()`),z(),K(4,`, each component shows whether it was hydrated, skipped or mismatched. `),z())}var ZD=class e{report=$(void 0);overlay=ov();showNode=ov();highlight=ov();overlayOn=Q(()=>this.report()?.overlay===!0);counts=X(()=>{let e=this.report()?.counts;return e?[{key:`hydrated`,label:`hydrated`,value:e.hydrated},{key:`skipped`,label:`skipped`,value:e.skipped},{key:`mismatched`,label:`mismatched`,value:e.mismatched},{key:`client`,label:`created on the client`,value:e.client},{key:`dehydratedBlocks`,label:e.dehydratedBlocks===1?`dehydrated @defer block`:`dehydrated @defer blocks`,value:e.dehydratedBlocks}]:[]});toggleOverlay(){let e=!this.overlayOn();this.overlayOn.set(e),this.overlay.emit(e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-hydration-section`]],inputs:{report:[1,`report`]},outputs:{overlay:`overlay`,showNode:`showNode`,highlight:`highlight`},decls:5,vars:1,consts:[[`aria-labelledby`,`ct-hydration-title`,1,`hydration`],[`id`,`ct-hydration-title`,1,`title`],[1,`empty`],[1,`summary`],[`aria-label`,`Hydration summary`,1,`counts`],[3,`class`],[`type`,`button`,1,`outline`,3,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`x`,`3`,`y`,`3`,`width`,`18`,`height`,`18`,`rx`,`2`,`stroke-dasharray`,`4 3`],[1,`num`],[1,`label`],[1,`mismatches`],[`type`,`button`,1,`mismatch`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`],[1,`name`,`mono`],[1,`mono`,`muted`],[1,`detail-line`]],template:function(e,t){if(e&1&&(R(0,`section`,0)(1,`h2`,1),K(2,`Hydration`),z(),A(3,YD,2,1)(4,XD,5,0,`p`,2),z()),e&2){let e;D(3),j((e=t.report())?3:4,e)}},styles:[`.hydration[_ngcontent-%COMP%] { margin-top: 16px; } @@ -849,7 +849,7 @@ svg[_ngcontent-%COMP%] { button[_ngcontent-%COMP%] { transition: none; } -}`]})};function QD(e,t){if(e&1&&(R(0,`p`,0),K(1),R(2,`code`),K(3),z(),K(4,` to keep more. `),R(5,`a`,1),K(6,`About limits`),z()()),e&2){let e=W();D(),v_(` Showing the latest `,e.max(),` `,e.what(),`. `,e.dropped(),` older `,e.dropped()===1?`entry was`:`entries were`,` dropped. Raise `),D(2),J(`limits.`,e.limit()),D(2),V(`href`,e.docsUrl,yu)}}var $D=`https://pangular-inspector.dev/getting-started/configuration/#limits`,eO=class e{dropped=$(0);max=$.required();what=$.required();limit=$.required();docsUrl=$D;static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-limit-note`]],inputs:{dropped:[1,`dropped`],max:[1,`max`],what:[1,`what`],limit:[1,`limit`]},decls:1,vars:1,consts:[[1,`note`],[`target`,`_blank`,`rel`,`noopener noreferrer`,3,`href`]],template:function(e,t){e&1&&A(0,QD,7,6,`p`,0),e&2&&j(t.dropped()>0?0:-1)},styles:[`[_nghost-%COMP%] { +}`]})};function QD(e,t){if(e&1&&(R(0,`p`,0),K(1),R(2,`code`),K(3),z(),K(4,` to keep more. `),R(5,`a`,1),K(6,`About limits`),z()()),e&2){let e=W();D(),E_(` Showing the latest `,e.max(),` `,e.what(),`. `,e.dropped(),` older `,e.dropped()===1?`entry was`:`entries were`,` dropped. Raise `),D(2),J(`limits.`,e.limit()),D(2),V(`href`,e.docsUrl,Cu)}}var $D=`https://pangular-inspector.dev/getting-started/configuration/#limits`,eO=class e{dropped=$(0);max=$.required();what=$.required();limit=$.required();docsUrl=$D;static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-limit-note`]],inputs:{dropped:[1,`dropped`],max:[1,`max`],what:[1,`what`],limit:[1,`limit`]},decls:1,vars:1,consts:[[1,`note`],[`target`,`_blank`,`rel`,`noopener noreferrer`,3,`href`]],template:function(e,t){e&1&&A(0,QD,7,6,`p`,0),e&2&&j(t.dropped()>0?0:-1)},styles:[`[_nghost-%COMP%] { display: block; } @@ -876,7 +876,7 @@ a[_ngcontent-%COMP%] { a[_ngcontent-%COMP%]:focus-visible { outline: 2px solid var(--%NS%accent); outline-offset: 2px; -}`]})},tO=864e13,nO=200,rO=300,iO=100,aO=10,oO=100,sO=2e3,cO=2e3,lO=4e3,uO=1e3,dO=100,fO=3,pO=50,mO={component:`c`,hook:`h`,afterRender:`r`,output:`o`},hO=Object.values(mO),gO=e=>!!e&&typeof e==`object`&&!Array.isArray(e),_O=e=>typeof e==`number`&&Number.isFinite(e)&&e>=0?e:0,vO=(e,t)=>typeof e==`string`?e.slice(0,t):``,yO=e=>_O(e)>0?_O(e):void 0,bO=(e,t)=>Array.isArray(e)?e.slice(0,t):[];function xO(e){if(!gO(e))return null;let t=vO(e.name,nO);return t?{name:t,checks:_O(e.checks),ms:_O(e.ms)}:null}function SO(e,t){if(!Array.isArray(e)||e.length!==5)return null;let[n,r,i,a,o]=e;return typeof n!=`number`||!Number.isInteger(n)||n<0||n>=t||typeof r!=`number`||!Number.isFinite(r)||Math.abs(r)>1e7||typeof a!=`number`||!Number.isInteger(a)||a<0||a>uO||typeof o!=`string`||!hO.includes(o)?null:[n,r,_O(i),a,o]}function CO(e,t){if(!gO(e)||typeof e.id!=`number`)return null;let n=bO(e.components,aO).map(xO).filter(e=>!!e),r=vO(e.trigger,rO),i=bO(e.spans,40).map(e=>SO(e,t)).filter(e=>!!e),a=Array.isArray(e.spans)?e.spans.length-40:0,o=Math.floor(_O(e.droppedSpans))+Math.max(0,a),s={t:typeof e.t==`number`?_O(e.t):void 0,hookMs:yO(e.hookMs),afterRenderMs:yO(e.afterRenderMs),outputMs:yO(e.outputMs)},c=DO(e.cause),l=yO(e.refreshed),u=yO(e.unchanged);return{id:_O(e.id),at:_O(e.at),ms:_O(e.ms),passes:_O(e.passes),...r?{trigger:r}:{},checks:_O(e.checks),components:n,...Object.fromEntries(Object.entries(s).filter(([,e])=>e!==void 0)),...i.length?{spans:i}:{},...o?{droppedSpans:o}:{},...c?{cause:c}:{},...l?{refreshed:l}:{},...u?{unchanged:u}:{}}}var wO=[`event`,`http`,`timer`,`signal`,`effect`,`markForCheck`,`input`,`view`,`tick`,`zone`,`unknown`],TO={event:`Event`,http:`HTTP response`,timer:`Timer`,signal:`Signal write`,effect:`Effect`,markForCheck:`markForCheck`,input:`setInput`,view:`View change`,tick:`ApplicationRef.tick`,zone:`zone.js only`,unknown:`Unknown`},EO=e=>typeof e==`string`&&wO.includes(e);function DO(e){if(!gO(e)||!EO(e.kind))return;let t=[`component`,`listener`,`event`,`target`,`signal`,`task`],n={kind:e.kind};EO(e.via)&&(n.via=e.via);for(let r of t){let t=vO(e[r],nO);t&&(n[r]=t)}e.zone===!0&&(n.zone=!0);let r=bO(e.stack,fO).map(e=>vO(e,rO)).filter(Boolean);r.length&&(n.stack=r);let i=Math.floor(_O(e.more));return i&&(n.more=i),n}function OO(e){if(!gO(e))return null;let t=vO(e.name,nO);if(!t)return null;let n=e.strategy;return{name:t,refreshed:Math.floor(_O(e.refreshed)),unchanged:Math.floor(_O(e.unchanged)),...n===`OnPush`||n===`Eager`?{strategy:n}:{}}}function kO(e){if(!gO(e))return null;let t=vO(e.name,nO),n=vO(e.input,nO);if(!t||!n)return null;let r=vO(e.parent,nO);return{name:t,input:n,...r?{parent:r}:{},inPlace:Math.floor(_O(e.inPlace)),sameContents:Math.floor(_O(e.sameContents))}}function AO(e){if(!gO(e))return null;let t=vO(e.name,nO);if(!t)return null;let n=bO(e.tasks,3).map(e=>vO(e,nO)).filter(Boolean);return{name:t,ticks:Math.floor(_O(e.ticks)),...n.length?{tasks:n}:{}}}function jO(e){if(!gO(e))return;let t={};if(gO(e.causes))for(let n of wO){let r=Math.floor(_O(e.causes[n]));r&&(t[n]=r)}let n=bO(e.components,oO).map(OO).filter(e=>!!e),r=bO(e.inputs,pO).map(kO).filter(e=>!!e),i=bO(e.zone,pO).map(AO).filter(e=>!!e),a=Math.floor(_O(e.major));return{triggers:e.triggers===!0,waste:e.waste===!0,...a&&a<1e3?{major:a}:{},causes:t,components:n,...r.length?{inputs:r}:{},...i.length?{zone:i}:{},...typeof e.zoneJs==`boolean`?{zoneJs:e.zoneJs}:{}}}function MO(e){let t=[],n=e.component?` in ${e.component}${e.listener?` (${e.listener})`:``}`:``;switch(e.kind){case`event`:t.push(`${e.event??`Template listener`}${e.target?` on ${e.target}`:``}${n}`);break;case`http`:t.push(`HTTP response${n}`);break;case`timer`:t.push(`${e.task??`Timer`}${n}`);break;case`zone`:t.push(`zone.js tick with no Angular notification${e.task?` after ${e.task}`:``}`);break;case`tick`:t.push(`ApplicationRef.tick()${n}`);break;default:t.push(`${TO[e.kind]}${n}`)}return e.signal?t.push(e.signal===`?`?`wrote an unnamed signal`:`wrote signal ${e.signal}`):e.via&&e.via!==e.kind&&t.push(`via ${TO[e.via]}`),e.zone&&e.kind!==`zone`&&t.push(`run by zone.js`),e.more&&t.push(`${e.more} more notification${e.more===1?``:`s`}`),t.join(`, `)}function NO(e){if(!e)return[];let t=[],n=(e.major??0)>=22;for(let r of e.components){if(r.refreshed<10)continue;let e=r.refreshed-r.unchanged;if(e/r.refreshed>.2)continue;let i=`refreshed ${r.refreshed} times and changed something in ${e}`;r.strategy===`Eager`?t.push({name:r.name,kind:`on-push`,text:n?`${r.name} was ${i}. It opts out of OnPush, which is the default from Angular 22: remove \`changeDetection: ChangeDetectionStrategy.Eager\` (or \`Default\`) so Angular skips it until an input, event, signal or markForCheck marks it.`:`${r.name} was ${i}. Add \`changeDetection: ChangeDetectionStrategy.OnPush\` so Angular skips it until an input, event, signal or markForCheck marks it.`}):r.strategy===`OnPush`&&t.push({name:r.name,kind:`already-on-push`,text:`${r.name} was ${i}, and it is already OnPush${n?` (the default from Angular 22)`:``}. Something keeps marking it: an input that gets a new reference each time, an event or output in it, markForCheck, or a signal it reads that is set to an equal value.`})}for(let n of e.inputs??[]){let e=n.parent?` set by ${n.parent}`:``;n.inPlace&&t.push({name:n.name,kind:`in-place`,text:`Input ${n.input} of ${n.name}${e} changed in place ${n.inPlace} time${n.inPlace===1?``:`s`}: same reference, different contents. OnPush components, computed and signal equality don't see that. Pass a new object or array instead of mutating it.`}),n.sameContents&&t.push({name:n.name,kind:`same-contents`,text:`Input ${n.input} of ${n.name}${e} got a new reference with the same contents ${n.sameContents} time${n.sameContents===1?``:`s`}, so Angular refreshed ${n.name} for nothing. Keep the reference when nothing changed, for example with a computed instead of a method call in the template.`})}for(let n of e.zone??[]){let e=n.tasks?.length?` (after ${n.tasks.join(`, `)})`:``;t.push({name:n.name,kind:`zone`,text:`${n.name} changed in ${n.ticks} tick${n.ticks===1?``:`s`} that only zone.js started${e}. Without zone.js it would not update: keep that state in a signal, or call markForCheck after changing it.`})}return t}function PO(e){let t=xO(e);return!t||!gO(e)?null:{...t,maxMs:_O(e.maxMs),cycles:_O(e.cycles)}}function FO(e){if(!gO(e))return null;let t=vO(e.name,nO),n=vO(e.hook,iO);if(!t||!n)return null;let{calls:r,ms:i,maxMs:a}=e;return{name:t,hook:n,calls:_O(r),ms:_O(i),maxMs:_O(a)}}function IO(e){if(!gO(e))return null;let t=vO(e.name,nO);if(!t)return null;let n=vO(e.listener,nO);return{name:t,...n?{listener:n}:{},calls:_O(e.calls),ms:_O(e.ms),maxMs:_O(e.maxMs)}}function LO(e){if(gO(e)&&_O(e.runs))return{runs:_O(e.runs),ms:_O(e.ms),maxMs:_O(e.maxMs)}}function RO(e,t){if(!gO(e))return null;let n=bO(e.spanNames,lO).map(e=>vO(e,rO)),r=Array.isArray(e.cycles)?e.cycles.slice(-Math.min(t,cO)).map(e=>CO(e,n.length)).filter(e=>!!e):[],i={},a=0;if(gO(e.hosts)){let t=Object.entries(e.hosts);a=Math.max(0,t.length-sO);for(let[e,n]of t.slice(0,sO))e.length<50&&_O(n)&&(i[e]=_O(n))}let o=Array.isArray(e.components)?e.components:[],s=Math.floor(_O(e.droppedClasses))+Math.max(0,o.length-oO),c=Math.floor(_O(e.droppedHosts))+a,l=bO(e.hooks,dO).map(FO).filter(e=>!!e),u=bO(e.outputs,dO).map(IO).filter(e=>!!e),d=Math.max(0,bO(e.hooks,1/0).length-dO)+Math.max(0,bO(e.outputs,1/0).length-dO),f=Math.floor(_O(e.droppedTimings))+d,p=LO(e.afterRender),m=r.some(e=>e.spans?.length),h=jO(e.diagnosis);return{recording:e.recording===!0,startedAt:typeof e.startedAt==`number`&&e.startedAt<=tO?_O(e.startedAt):null,dropped:_O(e.dropped),cycles:r,components:o.slice(0,oO).map(PO).filter(e=>!!e),...s?{droppedClasses:s}:{},hosts:i,...c?{droppedHosts:c}:{},...l.length?{hooks:l}:{},...u.length?{outputs:u}:{},...f?{droppedTimings:f}:{},...p?{afterRender:p}:{},...m?{spanNames:n}:{},...h?{diagnosis:h}:{}}}var zO=`pangular-inspector/change-detection`;function BO(e,t,n=Date.now()){return{format:zO,version:1,exportedAt:n,pageId:t,recording:{...RO(e,cO)??e,recording:!1,hosts:{}}}}function VO(e,t){if(e.length>2e7||e.length*3>2e7&&new TextEncoder().encode(e).byteLength>2e7)return{ok:!1,error:`The file is larger than 20 MB.`};let n;try{n=JSON.parse(e)}catch{return{ok:!1,error:`The file is not valid JSON.`}}if(!gO(n))return{ok:!1,error:`The file is not a recording.`};if(n.format!==void 0&&n.format!==`pangular-inspector/change-detection`)return{ok:!1,error:`The file is not a change detection recording.`};let r=gO(n.recording)?n.recording:n;if(!Array.isArray(r.cycles))return{ok:!1,error:`The file has no change detection cycles.`};let i=RO(r,t);if(!i)return{ok:!1,error:`The file is not a recording.`};let a=vO(n.pageId??r.pageId,49)||`imported`,o=yO(n.exportedAt);return{ok:!0,pageId:a,...o?{exportedAt:o}:{},recording:{...i,recording:!1}}}var HO=1,UO=1,WO=2,GO={c:`component`,h:`lifecycle-hook`,r:`after-render`,o:`output`},KO=e=>Math.round(e*1e6)/1e3;function qO(e,t){let n=e.spanNames??[],r=e.cycles[0]?.at??0,i=e.startedAt??r,a=[],o=0,s=0;for(let t of e.cycles){let e=t.t??Math.max(0,t.at-i),r=e+t.ms;a.push({name:`Change detection #${t.id}`,cat:`change-detection`,ph:`X`,pid:HO,tid:UO,ts:KO(e),dur:KO(t.ms),args:{checks:t.checks,passes:t.passes,...t.trigger?{trigger:t.trigger}:{},...t.hookMs?{hookMs:t.hookMs}:{},...t.afterRenderMs?{afterRenderMs:t.afterRenderMs}:{},...t.outputMs?{outputMs:t.outputMs}:{},...t.cause?{cause:MO(t.cause)}:{},...t.unchanged?{unchanged:t.unchanged}:{},slowest:t.components.map(e=>`${e.name} ${e.checks}x ${e.ms}ms`)}}),s+=t.droppedSpans??0;let c=[{end:r}],l=[...t.spans??[]].sort((e,t)=>e[1]-t[1]||t[2]-e[2]);for(let[r,i,s,u,d]of l){o++;let l=n[r]??`?`;if(d===mO.output){let n=e+i;a.push({name:l,cat:GO[d],ph:`X`,pid:HO,tid:WO,ts:KO(n),dur:KO(i<0?Math.max(0,Math.min(s,-i)):s),args:{cycle:t.id}});continue}let f=Math.max(e,e+i);for(;c.length>1&&c.at(-1).end<=f;)c.pop();let p=c.at(-1).end,m=Math.min(f+s,p);me.ts??0));if(c<0)for(let e of a)e.ts=KO((e.ts-c)/1e3);a.sort((e,t)=>e.ts-t.ts||t.dur-e.dur);let l=(e,t,n)=>({name:t,ph:`M`,pid:HO,tid:e,args:{name:n}});return{traceEvents:[l(0,`process_name`,`Angular change detection (page ${t})`),l(UO,`thread_name`,`Change detection`),l(WO,`thread_name`,`Outputs`),...a],displayTimeUnit:`ms`,otherData:{source:`Pangular Inspector change detection recording`,pageId:t,cycles:e.cycles.length,droppedCycles:e.dropped,spans:o,droppedSpans:s,...e.startedAt&&e.startedAt<=tO?{startedAt:new Date(e.startedAt).toISOString()}:{}}}}var JO=16.6;function YO(e){return e.ms>JO}function XO(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}function ZO(e,t){if(!t)return[...e];let n=Math.min(t.from,t.to),r=Math.max(t.from,t.to),i=e.filter(e=>e.id>=n&&e.id<=r);return i.length?i:[...e]}function QO(e){let t=new Map;for(let n of e)for(let e of n.components){let n=t.get(e.name);n?(n.checks+=e.checks,n.ms+=e.ms,n.maxMs=Math.max(n.maxMs,e.ms),n.cycles+=1):t.set(e.name,{name:e.name,checks:e.checks,ms:e.ms,maxMs:e.ms,cycles:1})}return[...t.values()].sort((e,t)=>t.ms-e.ms||e.name.localeCompare(t.name))}function $O(e){let t=e.reduce((e,t)=>Math.max(e,t.ms),0);return Math.max(t,JO*1.25)}function ek(e,t,n=3){let r=e.map(e=>({item:e,value:t(e)})).filter(e=>e.value>0).sort((e,t)=>t.value-e.value),i=r.reduce((e,t)=>e+t.value,0);if(!i)return[];let a=n/i,o=[],s=0,c=0,l=n,u=1,d=[],f=(e,t)=>{let n=e.reduce((e,t)=>e+t,0),r=Math.max(...e),i=Math.min(...e);return Math.max(t*t*r/(n*n),n*n/(t*t*i))},p=()=>{let e=d.reduce((e,t)=>e+t.area,0);if(l>=u){let t=e/u,n=c;for(let e of d){let r=e.area/t;o.push({item:e.item,x:s,y:n,w:t,h:r}),n+=r}s+=t,l-=t}else{let t=e/l,n=s;for(let e of d){let r=e.area/t;o.push({item:e.item,x:n,y:c,w:r,h:t}),n+=r}c+=t,u-=t}d=[]};for(let e of r){let t=e.value*a,n=Math.min(l,u),r=d.map(e=>e.area);d.length&&f([...r,t],n)>f(r,n)&&p(),d.push({item:e.item,area:t})}return d.length&&p(),o.map(e=>({item:e.item,x:e.x/n*100,y:e.y*100,w:e.w/n*100,h:e.h*100}))}var tk={c:`component`,h:`hook`,r:`afterRender`,o:`output`};function nk(e,t){if(t===`c`)return e||null;if(t===`h`){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):null}if(t===`o`){let t=e.indexOf(` (`),n=t>0?e.slice(0,t):e;return n&&n!==`?`?n:null}return null}function rk(e,t){let n=e.filter(e=>e.spans?.length);if(!n.length)return null;let r=n.map(e=>{let t=e.spans,n=Math.min(0,...t.map(e=>e[1])),r=Math.max(e.ms,...t.map(e=>e[1]+e[2]));return{cycle:e,spans:t,from:n,width:Math.max(r-n,.001)}}),i=r.reduce((e,t)=>e+t.width,0),a=[],o=[],s=0,c=0;for(let{cycle:e,spans:n,from:l,width:u}of r){o.push({id:e.id,x:s/i*100,w:u/i*100,droppedSpans:e.droppedSpans??0});let r=[...n].sort((e,t)=>e[1]-t[1]||e[3]-t[3]),d=[];for(let[n,o,u,f,p]of r){let r=t[n]??`unknown`,m=d[f-1],h=f>0&&m!==void 0&&ot.kind,ak=(e,t)=>t.name,ok=(e,t)=>t.name+`.`+t.input;function sk(e,t){e&1&&(R(0,`p`,3),K(1,` The page has no Angular change detection scheduler the overlay could find (it needs Angular 18 or later), so cycles have no cause. `),z())}function ck(e,t){if(e&1&&(R(0,`tr`)(1,`td`),K(2),z(),R(3,`td`,6),K(4),z()()),e&2){let e=t.$implicit;D(2),q(e.label),D(2),q(e.count)}}function lk(e,t){if(e&1&&(R(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),K(4,`Trigger`),z(),R(5,`th`,5),K(6,`Cycles`),z()()(),R(7,`tbody`),M(8,ck,5,2,`tr`,null,ik),z()()),e&2){let e=W(2);D(8),N(e.causes())}}function uk(e,t){e&1&&(R(0,`p`,3),K(1,`No cycle has a cause yet.`),z())}function dk(e,t){if(e&1&&(R(0,`tr`)(1,`td`,7),K(2),z(),R(3,`td`,6),K(4),z(),R(5,`td`,7),K(6),z()()),e&2){let e=t.$implicit;D(2),q(e.name),D(2),q(e.ticks),D(2),q(e.tasks?.join(`, `))}}function fk(e,t){if(e&1&&(R(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),K(4,`Component`),z(),R(5,`th`,5),K(6,`Zone-only ticks`),z(),R(7,`th`,4),K(8,`After`),z()()(),R(9,`tbody`),M(10,dk,7,3,`tr`,null,ak),z()()),e&2){let e=W(3);D(10),N(e.zone())}}function pk(e,t){if(e&1&&(R(0,`p`,3),K(1),z()),e&2){let e=W(3);D(),q(e.zoneNote())}}function mk(e,t){if(e&1&&(R(0,`div`)(1,`h4`),K(2,`Depends on zone.js`),z(),A(3,fk,12,0,`table`)(4,pk,2,1,`p`,3),z()),e&2){let e=W(),t=W();D(3),j(t.zone().length?3:e.triggers?4:-1)}}function hk(e,t){e&1&&(R(0,`p`,3),K(1,`The page can't watch DOM updates, so wasted checks are not counted.`),z())}function gk(e,t){if(e&1&&(R(0,`tr`)(1,`td`,7),K(2),z(),R(3,`td`,6),K(4),z(),R(5,`td`,6),K(6),z(),R(7,`td`),K(8),z()()),e&2){let e=t.$implicit,n=W(3);D(2),q(e.name),D(2),q(e.refreshed),D(2),Y(``,e.unchanged,` (`,n.share(e.unchanged,e.refreshed),`)`),D(2),q(e.strategy??`Unknown`)}}function _k(e,t){if(e&1&&(R(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),K(4,`Component`),z(),R(5,`th`,5),K(6,`Refreshed`),z(),R(7,`th`,5),K(8,`Changed nothing`),z(),R(9,`th`,4),K(10,`Strategy`),z()()(),R(11,`tbody`),M(12,gk,9,5,`tr`,null,ak),z()()),e&2){let e=W(2);D(12),N(e.wasted())}}function vk(e,t){e&1&&(R(0,`p`,3),K(1,`Every refreshed check changed something.`),z())}function yk(e,t){if(e&1&&(R(0,`tr`)(1,`td`,7),K(2),z(),R(3,`td`,7),K(4),z(),R(5,`td`,6),K(6),z(),R(7,`td`,6),K(8),z()()),e&2){let e=t.$implicit;D(2),Y(``,e.name,`.`,e.input),D(2),q(e.parent??`Unknown`),D(2),q(e.inPlace),D(2),q(e.sameContents)}}function bk(e,t){if(e&1&&(R(0,`h4`),K(1,`Inputs that break OnPush`),z(),R(2,`table`)(3,`thead`)(4,`tr`)(5,`th`,4),K(6,`Input`),z(),R(7,`th`,4),K(8,`Set by`),z(),R(9,`th`,5),K(10,`Changed in place`),z(),R(11,`th`,5),K(12,`Same contents, new reference`),z()()(),R(13,`tbody`),M(14,yk,9,5,`tr`,null,ok),z()()),e&2){let e=W(2);D(14),N(e.inputs())}}function xk(e,t){if(e&1&&(R(0,`li`),K(1),z()),e&2){let e=t.$implicit;D(),q(e.text)}}function Sk(e,t){if(e&1&&(R(0,`h4`),K(1,`Hints`),z(),R(2,`ul`,8),M(3,xk,2,1,`li`,null,Jh),z()),e&2){let e=W(2);D(3),N(e.hints())}}function Ck(e,t){if(e&1&&(R(0,`section`,0)(1,`h3`,1),K(2,`Why it ran and what it wasted`),z(),R(3,`div`,2)(4,`div`)(5,`h4`),K(6,`What started the cycles`),z(),A(7,sk,2,0,`p`,3)(8,lk,10,0,`table`)(9,uk,2,0,`p`,3),z(),A(10,mk,5,1,`div`),z(),R(11,`h4`),K(12,`Wasted checks`),z(),A(13,hk,2,0,`p`,3)(14,_k,14,0,`table`)(15,vk,2,0,`p`,3),A(16,bk,16,0),A(17,Sk,5,0),z()),e&2){let e=t,n=W();D(7),j(e.triggers?n.causes().length?8:9:7),D(3),j(n.hasZone()?10:-1),D(3),j(e.waste?n.wasted().length?14:15:13),D(3),j(n.inputs().length?16:-1),D(),j(n.hints().length?17:-1)}}var wk=10,Tk=class e{page=$(null);diagnosis=X(()=>this.page()?.diagnosis??null);causes=X(()=>{let e=this.diagnosis()?.causes??{};return wO.filter(t=>e[t]).map(t=>({kind:t,label:TO[t],count:e[t]}))});zone=X(()=>(this.diagnosis()?.zone??[]).slice(0,wk));zoneTicks=X(()=>this.diagnosis()?.causes.zone??0);hasZone=X(()=>this.diagnosis()?.zoneJs??(this.zone().length>0||this.zoneTicks()>0));zoneNote=X(()=>{let e=this.zoneTicks();return e?`${e} ${e===1?`tick`:`ticks`} came from zone.js alone, and no component changed in them.`:`No component changed in a tick only zone.js started.`});wasted=X(()=>(this.diagnosis()?.components??[]).filter(e=>e.unchanged>0).slice(0,wk));inputs=X(()=>(this.diagnosis()?.inputs??[]).slice(0,wk));hints=X(()=>NO(this.diagnosis()??void 0).slice(0,wk));share(e,t){return t?`${Math.round(e/t*100)}%`:`0%`}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-cd-diagnosis`]],inputs:{page:[1,`page`]},decls:1,vars:1,consts:[[`aria-labelledby`,`cd-diagnosis-heading`,1,`diagnosis`],[`id`,`cd-diagnosis-heading`],[1,`grid`],[1,`note`],[`scope`,`col`],[`scope`,`col`,1,`num`],[1,`num`],[1,`mono`],[1,`hints`]],template:function(e,t){if(e&1&&A(0,Ck,18,5,`section`,0),e&2){let e;j((e=t.diagnosis())?0:-1,e)}},styles:[`[_nghost-%COMP%] { +}`]})},tO=864e13,nO=200,rO=300,iO=100,aO=10,oO=100,sO=2e3,cO=2e3,lO=4e3,uO=1e3,dO=100,fO=3,pO=50,mO={component:`c`,hook:`h`,afterRender:`r`,output:`o`},hO=Object.values(mO),gO=e=>!!e&&typeof e==`object`&&!Array.isArray(e),_O=e=>typeof e==`number`&&Number.isFinite(e)&&e>=0?e:0,vO=(e,t)=>typeof e==`string`?e.slice(0,t):``,yO=e=>_O(e)>0?_O(e):void 0,bO=(e,t)=>Array.isArray(e)?e.slice(0,t):[];function xO(e){if(!gO(e))return null;let t=vO(e.name,nO);return t?{name:t,checks:_O(e.checks),ms:_O(e.ms)}:null}function SO(e,t){if(!Array.isArray(e)||e.length!==5)return null;let[n,r,i,a,o]=e;return typeof n!=`number`||!Number.isInteger(n)||n<0||n>=t||typeof r!=`number`||!Number.isFinite(r)||Math.abs(r)>1e7||typeof a!=`number`||!Number.isInteger(a)||a<0||a>uO||typeof o!=`string`||!hO.includes(o)?null:[n,r,_O(i),a,o]}function CO(e,t){if(!gO(e)||typeof e.id!=`number`)return null;let n=bO(e.components,aO).map(xO).filter(e=>!!e),r=vO(e.trigger,rO),i=bO(e.spans,40).map(e=>SO(e,t)).filter(e=>!!e),a=Array.isArray(e.spans)?e.spans.length-40:0,o=Math.floor(_O(e.droppedSpans))+Math.max(0,a),s={t:typeof e.t==`number`?_O(e.t):void 0,hookMs:yO(e.hookMs),afterRenderMs:yO(e.afterRenderMs),outputMs:yO(e.outputMs)},c=DO(e.cause),l=yO(e.refreshed),u=yO(e.unchanged);return{id:_O(e.id),at:_O(e.at),ms:_O(e.ms),passes:_O(e.passes),...r?{trigger:r}:{},checks:_O(e.checks),components:n,...Object.fromEntries(Object.entries(s).filter(([,e])=>e!==void 0)),...i.length?{spans:i}:{},...o?{droppedSpans:o}:{},...c?{cause:c}:{},...l?{refreshed:l}:{},...u?{unchanged:u}:{}}}var wO=[`event`,`http`,`timer`,`signal`,`effect`,`markForCheck`,`input`,`view`,`tick`,`zone`,`unknown`],TO={event:`Event`,http:`HTTP response`,timer:`Timer`,signal:`Signal write`,effect:`Effect`,markForCheck:`markForCheck`,input:`setInput`,view:`View change`,tick:`ApplicationRef.tick`,zone:`zone.js only`,unknown:`Unknown`},EO=e=>typeof e==`string`&&wO.includes(e);function DO(e){if(!gO(e)||!EO(e.kind))return;let t=[`component`,`listener`,`event`,`target`,`signal`,`task`],n={kind:e.kind};EO(e.via)&&(n.via=e.via);for(let r of t){let t=vO(e[r],nO);t&&(n[r]=t)}e.zone===!0&&(n.zone=!0);let r=bO(e.stack,fO).map(e=>vO(e,rO)).filter(Boolean);r.length&&(n.stack=r);let i=Math.floor(_O(e.more));return i&&(n.more=i),n}function OO(e){if(!gO(e))return null;let t=vO(e.name,nO);if(!t)return null;let n=e.strategy;return{name:t,refreshed:Math.floor(_O(e.refreshed)),unchanged:Math.floor(_O(e.unchanged)),...n===`OnPush`||n===`Eager`?{strategy:n}:{}}}function kO(e){if(!gO(e))return null;let t=vO(e.name,nO),n=vO(e.input,nO);if(!t||!n)return null;let r=vO(e.parent,nO);return{name:t,input:n,...r?{parent:r}:{},inPlace:Math.floor(_O(e.inPlace)),sameContents:Math.floor(_O(e.sameContents))}}function AO(e){if(!gO(e))return null;let t=vO(e.name,nO);if(!t)return null;let n=bO(e.tasks,3).map(e=>vO(e,nO)).filter(Boolean);return{name:t,ticks:Math.floor(_O(e.ticks)),...n.length?{tasks:n}:{}}}function jO(e){if(!gO(e))return;let t={};if(gO(e.causes))for(let n of wO){let r=Math.floor(_O(e.causes[n]));r&&(t[n]=r)}let n=bO(e.components,oO).map(OO).filter(e=>!!e),r=bO(e.inputs,pO).map(kO).filter(e=>!!e),i=bO(e.zone,pO).map(AO).filter(e=>!!e),a=Math.floor(_O(e.major));return{triggers:e.triggers===!0,waste:e.waste===!0,...a&&a<1e3?{major:a}:{},causes:t,components:n,...r.length?{inputs:r}:{},...i.length?{zone:i}:{},...typeof e.zoneJs==`boolean`?{zoneJs:e.zoneJs}:{}}}function MO(e){let t=[],n=e.component?` in ${e.component}${e.listener?` (${e.listener})`:``}`:``;switch(e.kind){case`event`:t.push(`${e.event??`Template listener`}${e.target?` on ${e.target}`:``}${n}`);break;case`http`:t.push(`HTTP response${n}`);break;case`timer`:t.push(`${e.task??`Timer`}${n}`);break;case`zone`:t.push(`zone.js tick with no Angular notification${e.task?` after ${e.task}`:``}`);break;case`tick`:t.push(`ApplicationRef.tick()${n}`);break;default:t.push(`${TO[e.kind]}${n}`)}return e.signal?t.push(e.signal===`?`?`wrote an unnamed signal`:`wrote signal ${e.signal}`):e.via&&e.via!==e.kind&&t.push(`via ${TO[e.via]}`),e.zone&&e.kind!==`zone`&&t.push(`run by zone.js`),e.more&&t.push(`${e.more} more notification${e.more===1?``:`s`}`),t.join(`, `)}function NO(e){if(!e)return[];let t=[],n=(e.major??0)>=22;for(let r of e.components){if(r.refreshed<10)continue;let e=r.refreshed-r.unchanged;if(e/r.refreshed>.2)continue;let i=`refreshed ${r.refreshed} times and changed something in ${e}`;r.strategy===`Eager`?t.push({name:r.name,kind:`on-push`,text:n?`${r.name} was ${i}. It opts out of OnPush, which is the default from Angular 22: remove \`changeDetection: ChangeDetectionStrategy.Eager\` (or \`Default\`) so Angular skips it until an input, event, signal or markForCheck marks it.`:`${r.name} was ${i}. Add \`changeDetection: ChangeDetectionStrategy.OnPush\` so Angular skips it until an input, event, signal or markForCheck marks it.`}):r.strategy===`OnPush`&&t.push({name:r.name,kind:`already-on-push`,text:`${r.name} was ${i}, and it is already OnPush${n?` (the default from Angular 22)`:``}. Something keeps marking it: an input that gets a new reference each time, an event or output in it, markForCheck, or a signal it reads that is set to an equal value.`})}for(let n of e.inputs??[]){let e=n.parent?` set by ${n.parent}`:``;n.inPlace&&t.push({name:n.name,kind:`in-place`,text:`Input ${n.input} of ${n.name}${e} changed in place ${n.inPlace} time${n.inPlace===1?``:`s`}: same reference, different contents. OnPush components, computed and signal equality don't see that. Pass a new object or array instead of mutating it.`}),n.sameContents&&t.push({name:n.name,kind:`same-contents`,text:`Input ${n.input} of ${n.name}${e} got a new reference with the same contents ${n.sameContents} time${n.sameContents===1?``:`s`}, so Angular refreshed ${n.name} for nothing. Keep the reference when nothing changed, for example with a computed instead of a method call in the template.`})}for(let n of e.zone??[]){let e=n.tasks?.length?` (after ${n.tasks.join(`, `)})`:``;t.push({name:n.name,kind:`zone`,text:`${n.name} changed in ${n.ticks} tick${n.ticks===1?``:`s`} that only zone.js started${e}. Without zone.js it would not update: keep that state in a signal, or call markForCheck after changing it.`})}return t}function PO(e){let t=xO(e);return!t||!gO(e)?null:{...t,maxMs:_O(e.maxMs),cycles:_O(e.cycles)}}function FO(e){if(!gO(e))return null;let t=vO(e.name,nO),n=vO(e.hook,iO);if(!t||!n)return null;let{calls:r,ms:i,maxMs:a}=e;return{name:t,hook:n,calls:_O(r),ms:_O(i),maxMs:_O(a)}}function IO(e){if(!gO(e))return null;let t=vO(e.name,nO);if(!t)return null;let n=vO(e.listener,nO);return{name:t,...n?{listener:n}:{},calls:_O(e.calls),ms:_O(e.ms),maxMs:_O(e.maxMs)}}function LO(e){if(gO(e)&&_O(e.runs))return{runs:_O(e.runs),ms:_O(e.ms),maxMs:_O(e.maxMs)}}function RO(e,t){if(!gO(e))return null;let n=bO(e.spanNames,lO).map(e=>vO(e,rO)),r=Array.isArray(e.cycles)?e.cycles.slice(-Math.min(t,cO)).map(e=>CO(e,n.length)).filter(e=>!!e):[],i={},a=0;if(gO(e.hosts)){let t=Object.entries(e.hosts);a=Math.max(0,t.length-sO);for(let[e,n]of t.slice(0,sO))e.length<50&&_O(n)&&(i[e]=_O(n))}let o=Array.isArray(e.components)?e.components:[],s=Math.floor(_O(e.droppedClasses))+Math.max(0,o.length-oO),c=Math.floor(_O(e.droppedHosts))+a,l=bO(e.hooks,dO).map(FO).filter(e=>!!e),u=bO(e.outputs,dO).map(IO).filter(e=>!!e),d=Math.max(0,bO(e.hooks,1/0).length-dO)+Math.max(0,bO(e.outputs,1/0).length-dO),f=Math.floor(_O(e.droppedTimings))+d,p=LO(e.afterRender),m=r.some(e=>e.spans?.length),ee=jO(e.diagnosis);return{recording:e.recording===!0,startedAt:typeof e.startedAt==`number`&&e.startedAt<=tO?_O(e.startedAt):null,dropped:_O(e.dropped),cycles:r,components:o.slice(0,oO).map(PO).filter(e=>!!e),...s?{droppedClasses:s}:{},hosts:i,...c?{droppedHosts:c}:{},...l.length?{hooks:l}:{},...u.length?{outputs:u}:{},...f?{droppedTimings:f}:{},...p?{afterRender:p}:{},...m?{spanNames:n}:{},...ee?{diagnosis:ee}:{}}}var zO=`pangular-inspector/change-detection`;function BO(e,t,n=Date.now()){return{format:zO,version:1,exportedAt:n,pageId:t,recording:{...RO(e,cO)??e,recording:!1,hosts:{}}}}function VO(e,t){if(e.length>2e7||e.length*3>2e7&&new TextEncoder().encode(e).byteLength>2e7)return{ok:!1,error:`The file is larger than 20 MB.`};let n;try{n=JSON.parse(e)}catch{return{ok:!1,error:`The file is not valid JSON.`}}if(!gO(n))return{ok:!1,error:`The file is not a recording.`};if(n.format!==void 0&&n.format!==`pangular-inspector/change-detection`)return{ok:!1,error:`The file is not a change detection recording.`};let r=gO(n.recording)?n.recording:n;if(!Array.isArray(r.cycles))return{ok:!1,error:`The file has no change detection cycles.`};let i=RO(r,t);if(!i)return{ok:!1,error:`The file is not a recording.`};let a=vO(n.pageId??r.pageId,49)||`imported`,o=yO(n.exportedAt);return{ok:!0,pageId:a,...o?{exportedAt:o}:{},recording:{...i,recording:!1}}}var HO=1,UO=1,WO=2,GO={c:`component`,h:`lifecycle-hook`,r:`after-render`,o:`output`},KO=e=>Math.round(e*1e6)/1e3;function qO(e,t){let n=e.spanNames??[],r=e.cycles[0]?.at??0,i=e.startedAt??r,a=[],o=0,s=0;for(let t of e.cycles){let e=t.t??Math.max(0,t.at-i),r=e+t.ms;a.push({name:`Change detection #${t.id}`,cat:`change-detection`,ph:`X`,pid:HO,tid:UO,ts:KO(e),dur:KO(t.ms),args:{checks:t.checks,passes:t.passes,...t.trigger?{trigger:t.trigger}:{},...t.hookMs?{hookMs:t.hookMs}:{},...t.afterRenderMs?{afterRenderMs:t.afterRenderMs}:{},...t.outputMs?{outputMs:t.outputMs}:{},...t.cause?{cause:MO(t.cause)}:{},...t.unchanged?{unchanged:t.unchanged}:{},slowest:t.components.map(e=>`${e.name} ${e.checks}x ${e.ms}ms`)}}),s+=t.droppedSpans??0;let c=[{end:r}],l=[...t.spans??[]].sort((e,t)=>e[1]-t[1]||t[2]-e[2]);for(let[r,i,s,u,d]of l){o++;let l=n[r]??`?`;if(d===mO.output){let n=e+i;a.push({name:l,cat:GO[d],ph:`X`,pid:HO,tid:WO,ts:KO(n),dur:KO(i<0?Math.max(0,Math.min(s,-i)):s),args:{cycle:t.id}});continue}let f=Math.max(e,e+i);for(;c.length>1&&c.at(-1).end<=f;)c.pop();let p=c.at(-1).end,m=Math.min(f+s,p);me.ts??0));if(c<0)for(let e of a)e.ts=KO((e.ts-c)/1e3);a.sort((e,t)=>e.ts-t.ts||t.dur-e.dur);let l=(e,t,n)=>({name:t,ph:`M`,pid:HO,tid:e,args:{name:n}});return{traceEvents:[l(0,`process_name`,`Angular change detection (page ${t})`),l(UO,`thread_name`,`Change detection`),l(WO,`thread_name`,`Outputs`),...a],displayTimeUnit:`ms`,otherData:{source:`Pangular Inspector change detection recording`,pageId:t,cycles:e.cycles.length,droppedCycles:e.dropped,spans:o,droppedSpans:s,...e.startedAt&&e.startedAt<=tO?{startedAt:new Date(e.startedAt).toISOString()}:{}}}}var JO=16.6;function YO(e){return e.ms>JO}function XO(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}function ZO(e,t){if(!t)return[...e];let n=Math.min(t.from,t.to),r=Math.max(t.from,t.to),i=e.filter(e=>e.id>=n&&e.id<=r);return i.length?i:[...e]}function QO(e){let t=new Map;for(let n of e)for(let e of n.components){let n=t.get(e.name);n?(n.checks+=e.checks,n.ms+=e.ms,n.maxMs=Math.max(n.maxMs,e.ms),n.cycles+=1):t.set(e.name,{name:e.name,checks:e.checks,ms:e.ms,maxMs:e.ms,cycles:1})}return[...t.values()].sort((e,t)=>t.ms-e.ms||e.name.localeCompare(t.name))}function $O(e){let t=e.reduce((e,t)=>Math.max(e,t.ms),0);return Math.max(t,JO*1.25)}function ek(e,t,n=3){let r=e.map(e=>({item:e,value:t(e)})).filter(e=>e.value>0).sort((e,t)=>t.value-e.value),i=r.reduce((e,t)=>e+t.value,0);if(!i)return[];let a=n/i,o=[],s=0,c=0,l=n,u=1,d=[],f=(e,t)=>{let n=e.reduce((e,t)=>e+t,0),r=Math.max(...e),i=Math.min(...e);return Math.max(t*t*r/(n*n),n*n/(t*t*i))},p=()=>{let e=d.reduce((e,t)=>e+t.area,0);if(l>=u){let t=e/u,n=c;for(let e of d){let r=e.area/t;o.push({item:e.item,x:s,y:n,w:t,h:r}),n+=r}s+=t,l-=t}else{let t=e/l,n=s;for(let e of d){let r=e.area/t;o.push({item:e.item,x:n,y:c,w:r,h:t}),n+=r}c+=t,u-=t}d=[]};for(let e of r){let t=e.value*a,n=Math.min(l,u),r=d.map(e=>e.area);d.length&&f([...r,t],n)>f(r,n)&&p(),d.push({item:e.item,area:t})}return d.length&&p(),o.map(e=>({item:e.item,x:e.x/n*100,y:e.y*100,w:e.w/n*100,h:e.h*100}))}var tk={c:`component`,h:`hook`,r:`afterRender`,o:`output`};function nk(e,t){if(t===`c`)return e||null;if(t===`h`){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):null}if(t===`o`){let t=e.indexOf(` (`),n=t>0?e.slice(0,t):e;return n&&n!==`?`?n:null}return null}function rk(e,t){let n=e.filter(e=>e.spans?.length);if(!n.length)return null;let r=n.map(e=>{let t=e.spans,n=Math.min(0,...t.map(e=>e[1])),r=Math.max(e.ms,...t.map(e=>e[1]+e[2]));return{cycle:e,spans:t,from:n,width:Math.max(r-n,.001)}}),i=r.reduce((e,t)=>e+t.width,0),a=[],o=[],s=0,c=0;for(let{cycle:e,spans:n,from:l,width:u}of r){o.push({id:e.id,x:s/i*100,w:u/i*100,droppedSpans:e.droppedSpans??0});let r=[...n].sort((e,t)=>e[1]-t[1]||e[3]-t[3]),d=[];for(let[n,o,u,f,p]of r){let r=t[n]??`unknown`,m=d[f-1],ee=f>0&&m!==void 0&&ot.kind,ak=(e,t)=>t.name,ok=(e,t)=>t.name+`.`+t.input;function sk(e,t){e&1&&(R(0,`p`,3),K(1,` The page has no Angular change detection scheduler the overlay could find (it needs Angular 18 or later), so cycles have no cause. `),z())}function ck(e,t){if(e&1&&(R(0,`tr`)(1,`td`),K(2),z(),R(3,`td`,6),K(4),z()()),e&2){let e=t.$implicit;D(2),q(e.label),D(2),q(e.count)}}function lk(e,t){if(e&1&&(R(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),K(4,`Trigger`),z(),R(5,`th`,5),K(6,`Cycles`),z()()(),R(7,`tbody`),M(8,ck,5,2,`tr`,null,ik),z()()),e&2){let e=W(2);D(8),N(e.causes())}}function uk(e,t){e&1&&(R(0,`p`,3),K(1,`No cycle has a cause yet.`),z())}function dk(e,t){if(e&1&&(R(0,`tr`)(1,`td`,7),K(2),z(),R(3,`td`,6),K(4),z(),R(5,`td`,7),K(6),z()()),e&2){let e=t.$implicit;D(2),q(e.name),D(2),q(e.ticks),D(2),q(e.tasks?.join(`, `))}}function fk(e,t){if(e&1&&(R(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),K(4,`Component`),z(),R(5,`th`,5),K(6,`Zone-only ticks`),z(),R(7,`th`,4),K(8,`After`),z()()(),R(9,`tbody`),M(10,dk,7,3,`tr`,null,ak),z()()),e&2){let e=W(3);D(10),N(e.zone())}}function pk(e,t){if(e&1&&(R(0,`p`,3),K(1),z()),e&2){let e=W(3);D(),q(e.zoneNote())}}function mk(e,t){if(e&1&&(R(0,`div`)(1,`h4`),K(2,`Depends on zone.js`),z(),A(3,fk,12,0,`table`)(4,pk,2,1,`p`,3),z()),e&2){let e=W(),t=W();D(3),j(t.zone().length?3:e.triggers?4:-1)}}function hk(e,t){e&1&&(R(0,`p`,3),K(1,`The page can't watch DOM updates, so wasted checks are not counted.`),z())}function gk(e,t){if(e&1&&(R(0,`tr`)(1,`td`,7),K(2),z(),R(3,`td`,6),K(4),z(),R(5,`td`,6),K(6),z(),R(7,`td`),K(8),z()()),e&2){let e=t.$implicit,n=W(3);D(2),q(e.name),D(2),q(e.refreshed),D(2),Y(``,e.unchanged,` (`,n.share(e.unchanged,e.refreshed),`)`),D(2),q(e.strategy??`Unknown`)}}function _k(e,t){if(e&1&&(R(0,`table`)(1,`thead`)(2,`tr`)(3,`th`,4),K(4,`Component`),z(),R(5,`th`,5),K(6,`Refreshed`),z(),R(7,`th`,5),K(8,`Changed nothing`),z(),R(9,`th`,4),K(10,`Strategy`),z()()(),R(11,`tbody`),M(12,gk,9,5,`tr`,null,ak),z()()),e&2){let e=W(2);D(12),N(e.wasted())}}function vk(e,t){e&1&&(R(0,`p`,3),K(1,`Every refreshed check changed something.`),z())}function yk(e,t){if(e&1&&(R(0,`tr`)(1,`td`,7),K(2),z(),R(3,`td`,7),K(4),z(),R(5,`td`,6),K(6),z(),R(7,`td`,6),K(8),z()()),e&2){let e=t.$implicit;D(2),Y(``,e.name,`.`,e.input),D(2),q(e.parent??`Unknown`),D(2),q(e.inPlace),D(2),q(e.sameContents)}}function bk(e,t){if(e&1&&(R(0,`h4`),K(1,`Inputs that break OnPush`),z(),R(2,`table`)(3,`thead`)(4,`tr`)(5,`th`,4),K(6,`Input`),z(),R(7,`th`,4),K(8,`Set by`),z(),R(9,`th`,5),K(10,`Changed in place`),z(),R(11,`th`,5),K(12,`Same contents, new reference`),z()()(),R(13,`tbody`),M(14,yk,9,5,`tr`,null,ok),z()()),e&2){let e=W(2);D(14),N(e.inputs())}}function xk(e,t){if(e&1&&(R(0,`li`),K(1),z()),e&2){let e=t.$implicit;D(),q(e.text)}}function Sk(e,t){if(e&1&&(R(0,`h4`),K(1,`Hints`),z(),R(2,`ul`,8),M(3,xk,2,1,`li`,null,Zh),z()),e&2){let e=W(2);D(3),N(e.hints())}}function Ck(e,t){if(e&1&&(R(0,`section`,0)(1,`h3`,1),K(2,`Why it ran and what it wasted`),z(),R(3,`div`,2)(4,`div`)(5,`h4`),K(6,`What started the cycles`),z(),A(7,sk,2,0,`p`,3)(8,lk,10,0,`table`)(9,uk,2,0,`p`,3),z(),A(10,mk,5,1,`div`),z(),R(11,`h4`),K(12,`Wasted checks`),z(),A(13,hk,2,0,`p`,3)(14,_k,14,0,`table`)(15,vk,2,0,`p`,3),A(16,bk,16,0),A(17,Sk,5,0),z()),e&2){let e=t,n=W();D(7),j(e.triggers?n.causes().length?8:9:7),D(3),j(n.hasZone()?10:-1),D(3),j(e.waste?n.wasted().length?14:15:13),D(3),j(n.inputs().length?16:-1),D(),j(n.hints().length?17:-1)}}var wk=10,Tk=class e{page=$(null);diagnosis=X(()=>this.page()?.diagnosis??null);causes=X(()=>{let e=this.diagnosis()?.causes??{};return wO.filter(t=>e[t]).map(t=>({kind:t,label:TO[t],count:e[t]}))});zone=X(()=>(this.diagnosis()?.zone??[]).slice(0,wk));zoneTicks=X(()=>this.diagnosis()?.causes.zone??0);hasZone=X(()=>this.diagnosis()?.zoneJs??(this.zone().length>0||this.zoneTicks()>0));zoneNote=X(()=>{let e=this.zoneTicks();return e?`${e} ${e===1?`tick`:`ticks`} came from zone.js alone, and no component changed in them.`:`No component changed in a tick only zone.js started.`});wasted=X(()=>(this.diagnosis()?.components??[]).filter(e=>e.unchanged>0).slice(0,wk));inputs=X(()=>(this.diagnosis()?.inputs??[]).slice(0,wk));hints=X(()=>NO(this.diagnosis()??void 0).slice(0,wk));share(e,t){return t?`${Math.round(e/t*100)}%`:`0%`}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-cd-diagnosis`]],inputs:{page:[1,`page`]},decls:1,vars:1,consts:[[`aria-labelledby`,`cd-diagnosis-heading`,1,`diagnosis`],[`id`,`cd-diagnosis-heading`],[1,`grid`],[1,`note`],[`scope`,`col`],[`scope`,`col`,1,`num`],[1,`num`],[1,`mono`],[1,`hints`]],template:function(e,t){if(e&1&&A(0,Ck,18,5,`section`,0),e&2){let e;j((e=t.diagnosis())?0:-1,e)}},styles:[`[_nghost-%COMP%] { display: block; } @@ -955,7 +955,7 @@ td.mono[_ngcontent-%COMP%] { .hints[_ngcontent-%COMP%] li[_ngcontent-%COMP%] + li[_ngcontent-%COMP%] { margin-top: 4px; -}`]})},Ek=(e,t)=>t.cycle.id,Dk=(e,t)=>t.id;function Ok(e,t){if(e&1){let e=B();R(0,`button`,27),U(`click`,function(){return C(e),w(W().showAll())}),K(1,`Show all cycles`),z()}}function kk(e,t){if(e&1&&og(0,`div`,28),e&2){let e=t;Xg(`left`,e.left,`%`)(`width`,e.width,`%`)}}function Ak(e,t){if(e&1&&(R(0,`div`,29),og(1,`span`,30),z()),e&2){let e=t.$implicit,n=W();G(`over`,e.over)(`out`,!n.inRange(e.index)&&!!n.range())(`active`,n.focused()&&n.active()===e.index),V(`id`,n.optionId(e.index)),k(`data-index`,e.index)(`aria-selected`,n.inRange(e.index))(`aria-label`,e.label),D(),Xg(`height`,e.height,`%`)}}function jk(e,t){e&1&&(R(0,`span`,33),K(1,`over budget`),z())}function Mk(e,t){if(e&1&&(R(0,`p`),K(1,` after `),R(2,`span`,35),K(3),z()()),e&2){let e=W();D(3),q(e.cycle.trigger)}}function Nk(e,t){if(e&1&&(R(0,`p`,34)(1,`span`,36),K(2),z(),R(3,`span`),K(4),z()()),e&2){let e=t.$implicit,n=W(2);D(2),q(e.name),D(2),q(n.fmt(e.ms))}}function Pk(e,t){if(e&1&&(R(0,`div`,31)(1,`p`,32)(2,`strong`),K(3),z(),R(4,`span`),K(5),z(),A(6,jk,2,0,`span`,33),z(),A(7,Mk,4,1,`p`),R(8,`p`),K(9),z(),M(10,Nk,5,2,`p`,34,Jh),z()),e&2){let e=t,n=W();Xg(`left`,e.left)(`right`,e.right),D(3),q(n.fmt(e.cycle.ms)),D(2),J(`cycle `,e.cycle.id),D(),j(e.over?6:-1),D(),j(e.cycle.trigger?7:-1),D(2),v_(` `,e.cycle.checks,` `,e.cycle.checks===1?`check`:`checks`,`, `,e.cycle.passes,` `,e.cycle.passes===1?`pass`:`passes`,` `),D(),N(e.top)}}function Fk(e,t){if(e&1&&og(0,`span`),e&2){let e=t.$implicit;G(`over`,e.over)}}function Ik(e,t){if(e&1&&K(0),e&2){let e=t,n=W(2);Y(` `,e.name,` (`,n.fmt(e.ms),`) `)}}function Lk(e,t){if(e&1&&(R(0,`tr`)(1,`td`,37),K(2),z(),R(3,`td`,37),K(4),z(),R(5,`td`),K(6),z(),R(7,`td`,37),K(8),z(),R(9,`td`,37),K(10),z(),R(11,`td`,35),K(12),z(),R(13,`td`,35),A(14,Ik,1,2),z()()),e&2){let e,n=t.$implicit,r=W();D(2),q(n.id),D(2),q(r.fmt(n.ms)),D(2),q(r.isOver(n)?`Over`:`Within`),D(2),q(n.checks),D(2),q(n.passes),D(2),q(n.trigger??``),D(2),j((e=n.components[0])?14:-1,e)}}var Rk=0,zk=80,Bk=10,Vk=class e{cycles=$([]);range=rv(null);gapUntil=zk;budgetLabel=`${JO} ms budget`;uid=`cd-chart-${Rk++}`;hintId=`${this.uid}-hint`;active=E(null);anchor=null;dragging=!1;hover=E(null);focused=E(!1);max=X(()=>$O(this.cycles()));budgetAt=X(()=>JO/this.max()*100);bars=X(()=>{let e=this.max();return this.cycles().map((t,n)=>({cycle:t,index:n,height:t.ms/e*100,over:YO(t),label:this.describe(t)}))});firstId=X(()=>this.cycles()[0]?.id??0);lastId=X(()=>this.cycles().at(-1)?.id??0);span=X(()=>{let e=this.range();if(!e)return null;let t=this.cycles(),n=Math.min(e.from,e.to),r=Math.max(e.from,e.to),i=t.findIndex(e=>e.id>=n),a=-1;for(let e=t.length-1;e>=0;e--)if(t[e].id<=r){a=e;break}return i<0||aZO(this.cycles(),this.range()));startId=X(()=>this.selected()[0]?.id??``);endId=X(()=>this.selected().at(-1)?.id??``);band=X(()=>{let e=this.span(),t=this.cycles().length;return!e||!t?null:{left:e.start/t*100,width:(e.end-e.start+1)/t*100}});summary=X(()=>{let e=this.selected(),t=e.filter(YO).length;return`${this.span()?e.length===1?`Cycle ${e[0].id}`:`Cycles ${e[0].id} to ${e.at(-1).id} (${e.length})`:`All ${e.length} ${e.length===1?`cycle`:`cycles`}`}. ${t} over the ${JO} ms budget.`});tableLabel=X(()=>this.span()?`Picked cycles, ${this.summary()}`:`All recorded cycles`);activeOptionId=X(()=>{let e=this.active();return this.focused()&&e!==null&&e{let e=this.hover()??(this.focused()?this.active():null),t=e===null?void 0:this.cycles()[e];return!t||e===null?null:{cycle:t,over:YO(t),top:t.components.slice(0,3),...this.tipSide(e)}});tipSide(e){let t=this.cycles().length;return e+.5=t.start&&e<=t.end}describe(e){let t=[`Cycle ${e.id}`,XO(e.ms)];YO(e)&&t.push(`over budget`),e.trigger&&t.push(`after ${e.trigger}`),t.push(`${e.checks} ${e.checks===1?`check`:`checks`}`);let n=e.components[0];return n&&t.push(`slowest ${n.name} ${XO(n.ms)}`),t.join(`, `)}select(e,t){let n=this.cycles(),r=n[Math.min(e,t)],i=n[Math.max(e,t)];r&&i&&this.range.set({from:r.id,to:i.id})}showAll(){this.range.set(null),this.anchor=null}setEnd(e,t){if(!this.cycles().length)return;let n=t.target,r=Number.parseInt(n.value,10);if(Number.isNaN(r)){n.value=String(e===`from`?this.startId():this.endId());return}let i=Math.min(Math.max(r,this.firstId()),this.lastId()),a=this.selected(),o=e===`from`?i:a[0]?.id??this.firstId(),s=e===`to`?i:a.at(-1)?.id??this.lastId();this.range.set({from:Math.min(o,s),to:Math.max(o,s)}),n.value=String(e===`from`?Math.min(o,s):Math.max(o,s))}onFocus(){this.focused.set(!0),(this.active()===null||this.active()>=this.cycles().length)&&this.active.set(this.span()?.start??Math.max(this.cycles().length-1,0)),this.anchor??=this.active()}onKey(e){let t=this.cycles().length;if(!t)return;let n=Math.min(this.active()??t-1,t-1),r=null;switch(e.key){case`ArrowRight`:case`ArrowDown`:r=n+1;break;case`ArrowLeft`:case`ArrowUp`:r=n-1;break;case`PageDown`:r=n+Bk;break;case`PageUp`:r=n-Bk;break;case`Home`:r=0;break;case`End`:r=t-1;break;case`Enter`:case` `:e.preventDefault(),this.anchor=n,this.select(n,n);return;case`Escape`:this.range()&&(e.preventDefault(),this.showAll());return;default:return}e.preventDefault(),r=Math.min(Math.max(r,0),t-1),this.active.set(r),this.hover.set(null),e.shiftKey?(this.anchor??=n,this.select(this.anchor,r)):this.anchor=r}indexAt(e){let t=e.target?.closest?.(`[data-index]`);if(t)return Number(t.getAttribute(`data-index`));let n=e.currentTarget?.getBoundingClientRect(),r=this.cycles().length;if(!n?.width||!r)return null;let i=(e.clientX-n.left)/n.width;return Math.min(Math.max(Math.floor(i*r),0),r-1)}startDrag(e){if(e.button!==0)return;let t=this.indexAt(e);t!==null&&(this.dragging=!0,this.anchor=t,this.active.set(t),this.select(t,t))}onPointerMove(e){let t=this.indexAt(e);this.hover.set(t),this.dragging&&t!==null&&this.anchor!==null&&(this.active.set(t),this.select(this.anchor,t))}endDrag(){this.dragging=!1}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-cd-cycle-chart`]],hostBindings:function(e,t){e&1&&H(`pointerup`,function(){return t.endDrag()},bu)(`pointercancel`,function(){return t.endDrag()},bu)},inputs:{cycles:[1,`cycles`],range:[1,`range`]},outputs:{range:`rangeChange`},decls:69,vars:25,consts:[[1,`range`],[`type`,`number`,`inputmode`,`numeric`,3,`change`,`min`,`max`,`value`],[`type`,`button`],[1,`summary`],[1,`hint`,3,`id`],[1,`plot`],[`aria-hidden`,`true`,1,`axis`],[1,`tick`,`top`],[1,`tick`,`zero`],[1,`area`],[`aria-hidden`,`true`,1,`band`,3,`left`,`width`],[`aria-hidden`,`true`,1,`budget`],[`role`,`listbox`,`aria-multiselectable`,`true`,`aria-orientation`,`horizontal`,`tabindex`,`0`,1,`bars`,3,`keydown`,`focus`,`blur`,`pointerdown`,`pointermove`,`pointerleave`],[`role`,`option`,1,`col`,3,`id`,`over`,`out`,`active`],[`aria-hidden`,`true`,1,`tip`,3,`left`,`right`],[`aria-hidden`,`true`,1,`markers`],[3,`over`],[`aria-label`,`Chart key`,1,`legend`],[`aria-hidden`,`true`,1,`key`,`ok`],[`aria-hidden`,`true`,1,`key`,`over`],[`aria-hidden`,`true`,1,`key-marker`],[`aria-hidden`,`true`,1,`key`,`line`],[1,`table`],[`tabindex`,`0`,`role`,`region`,1,`table-wrap`],[1,`sr-only`],[`scope`,`col`,1,`num`],[`scope`,`col`],[`type`,`button`,3,`click`],[`aria-hidden`,`true`,1,`band`],[`role`,`option`,1,`col`,3,`id`],[1,`bar`],[`aria-hidden`,`true`,1,`tip`],[1,`tip-head`],[1,`flag`],[1,`tip-row`],[1,`mono`],[1,`mono`,`name`],[1,`num`]],template:function(e,t){if(e&1&&(R(0,`div`,0)(1,`label`)(2,`span`),K(3,`Start`),z(),R(4,`input`,1),U(`change`,function(e){return t.setEnd(`from`,e)}),z()(),R(5,`label`)(6,`span`),K(7,`End`),z(),R(8,`input`,1),U(`change`,function(e){return t.setEnd(`to`,e)}),z()(),A(9,Ok,2,0,`button`,2),R(10,`p`,3),K(11),z()(),R(12,`p`,4),K(13,` Drag across the bars to pick a range of cycles. With the chart focused, the arrow keys move between cycles, Shift with an arrow key extends the range, Enter picks one cycle and Escape shows all cycles again. `),z(),R(14,`div`,5)(15,`div`,6)(16,`span`,7),K(17),z(),R(18,`span`,8),K(19,`0 ms`),z()(),R(20,`div`,9),A(21,kk,1,4,`div`,10),R(22,`div`,11)(23,`span`),K(24),z()(),R(25,`div`,12),U(`keydown`,function(e){return t.onKey(e)})(`focus`,function(){return t.onFocus()})(`blur`,function(){return t.focused.set(!1)})(`pointerdown`,function(e){return t.startDrag(e)})(`pointermove`,function(e){return t.onPointerMove(e)})(`pointerleave`,function(){return t.hover.set(null)}),M(26,Ak,2,12,`div`,13,Ek),z(),A(28,Pk,12,12,`div`,14),z()(),R(29,`div`,15),M(30,Fk,1,2,`span`,16,Ek),z(),R(32,`ul`,17)(33,`li`),og(34,`span`,18),K(35,`Within budget`),z(),R(36,`li`),og(37,`span`,19)(38,`span`,20),K(39,`Over budget `),z(),R(40,`li`),og(41,`span`,21),K(42),z()(),R(43,`details`,22)(44,`summary`),K(45,`Show the cycles as a table`),z(),R(46,`div`,23)(47,`table`)(48,`caption`,24),K(49),z(),R(50,`thead`)(51,`tr`)(52,`th`,25),K(53,`Cycle`),z(),R(54,`th`,25),K(55,`Duration`),z(),R(56,`th`,26),K(57,`Budget`),z(),R(58,`th`,25),K(59,`Checks`),z(),R(60,`th`,25),K(61,`Passes`),z(),R(62,`th`,26),K(63,`After`),z(),R(64,`th`,26),K(65,`Slowest component`),z()()(),R(66,`tbody`),M(67,Lk,15,7,`tr`,null,Dk),z()()()()),e&2){let e,n;D(4),V(`min`,t.firstId())(`max`,t.lastId())(`value`,t.startId()),D(4),V(`min`,t.firstId())(`max`,t.lastId())(`value`,t.endId()),D(),j(t.range()?9:-1),D(2),q(t.summary()),D(),V(`id`,t.hintId),D(2),G(`flush`,t.bars().length>t.gapUntil),D(3),q(t.fmt(t.max())),D(4),j((e=t.band())?21:-1,e),D(),Xg(`bottom`,t.budgetAt(),`%`),D(2),q(t.budgetLabel),D(),k(`aria-label`,`Change detection cycles, `+t.summary())(`aria-describedby`,t.hintId)(`aria-activedescendant`,t.activeOptionId()),D(),N(t.bars()),D(2),j((n=t.tip())?28:-1,n),D(),G(`flush`,t.bars().length>t.gapUntil),D(),N(t.bars()),D(12),q(t.budgetLabel),D(4),k(`aria-label`,t.tableLabel()),D(3),J(` `,t.tableLabel(),` `),D(18),N(t.selected())}},styles:[`[_nghost-%COMP%] { +}`]})},Ek=(e,t)=>t.cycle.id,Dk=(e,t)=>t.id;function Ok(e,t){if(e&1){let e=B();R(0,`button`,27),U(`click`,function(){return S(e),C(W().showAll())}),K(1,`Show all cycles`),z()}}function kk(e,t){if(e&1&&lg(0,`div`,28),e&2){let e=t;$g(`left`,e.left,`%`)(`width`,e.width,`%`)}}function Ak(e,t){if(e&1&&(R(0,`div`,29),lg(1,`span`,30),z()),e&2){let e=t.$implicit,n=W();G(`over`,e.over)(`out`,!n.inRange(e.index)&&!!n.range())(`active`,n.focused()&&n.active()===e.index),V(`id`,n.optionId(e.index)),k(`data-index`,e.index)(`aria-selected`,n.inRange(e.index))(`aria-label`,e.label),D(),$g(`height`,e.height,`%`)}}function jk(e,t){e&1&&(R(0,`span`,33),K(1,`over budget`),z())}function Mk(e,t){if(e&1&&(R(0,`p`),K(1,` after `),R(2,`span`,35),K(3),z()()),e&2){let e=W();D(3),q(e.cycle.trigger)}}function Nk(e,t){if(e&1&&(R(0,`p`,34)(1,`span`,36),K(2),z(),R(3,`span`),K(4),z()()),e&2){let e=t.$implicit,n=W(2);D(2),q(e.name),D(2),q(n.fmt(e.ms))}}function Pk(e,t){if(e&1&&(R(0,`div`,31)(1,`p`,32)(2,`strong`),K(3),z(),R(4,`span`),K(5),z(),A(6,jk,2,0,`span`,33),z(),A(7,Mk,4,1,`p`),R(8,`p`),K(9),z(),M(10,Nk,5,2,`p`,34,Zh),z()),e&2){let e=t,n=W();$g(`left`,e.left)(`right`,e.right),D(3),q(n.fmt(e.cycle.ms)),D(2),J(`cycle `,e.cycle.id),D(),j(e.over?6:-1),D(),j(e.cycle.trigger?7:-1),D(2),E_(` `,e.cycle.checks,` `,e.cycle.checks===1?`check`:`checks`,`, `,e.cycle.passes,` `,e.cycle.passes===1?`pass`:`passes`,` `),D(),N(e.top)}}function Fk(e,t){if(e&1&&lg(0,`span`),e&2){let e=t.$implicit;G(`over`,e.over)}}function Ik(e,t){if(e&1&&K(0),e&2){let e=t,n=W(2);Y(` `,e.name,` (`,n.fmt(e.ms),`) `)}}function Lk(e,t){if(e&1&&(R(0,`tr`)(1,`td`,37),K(2),z(),R(3,`td`,37),K(4),z(),R(5,`td`),K(6),z(),R(7,`td`,37),K(8),z(),R(9,`td`,37),K(10),z(),R(11,`td`,35),K(12),z(),R(13,`td`,35),A(14,Ik,1,2),z()()),e&2){let e,n=t.$implicit,r=W();D(2),q(n.id),D(2),q(r.fmt(n.ms)),D(2),q(r.isOver(n)?`Over`:`Within`),D(2),q(n.checks),D(2),q(n.passes),D(2),q(n.trigger??``),D(2),j((e=n.components[0])?14:-1,e)}}var Rk=0,zk=80,Bk=10,Vk=class e{cycles=$([]);range=dv(null);gapUntil=zk;budgetLabel=`${JO} ms budget`;uid=`cd-chart-${Rk++}`;hintId=`${this.uid}-hint`;active=T(null);anchor=null;dragging=!1;hover=T(null);focused=T(!1);max=X(()=>$O(this.cycles()));budgetAt=X(()=>JO/this.max()*100);bars=X(()=>{let e=this.max();return this.cycles().map((t,n)=>({cycle:t,index:n,height:t.ms/e*100,over:YO(t),label:this.describe(t)}))});firstId=X(()=>this.cycles()[0]?.id??0);lastId=X(()=>this.cycles().at(-1)?.id??0);span=X(()=>{let e=this.range();if(!e)return null;let t=this.cycles(),n=Math.min(e.from,e.to),r=Math.max(e.from,e.to),i=t.findIndex(e=>e.id>=n),a=-1;for(let e=t.length-1;e>=0;e--)if(t[e].id<=r){a=e;break}return i<0||aZO(this.cycles(),this.range()));startId=X(()=>this.selected()[0]?.id??``);endId=X(()=>this.selected().at(-1)?.id??``);band=X(()=>{let e=this.span(),t=this.cycles().length;return!e||!t?null:{left:e.start/t*100,width:(e.end-e.start+1)/t*100}});summary=X(()=>{let e=this.selected(),t=e.filter(YO).length;return`${this.span()?e.length===1?`Cycle ${e[0].id}`:`Cycles ${e[0].id} to ${e.at(-1).id} (${e.length})`:`All ${e.length} ${e.length===1?`cycle`:`cycles`}`}. ${t} over the ${JO} ms budget.`});tableLabel=X(()=>this.span()?`Picked cycles, ${this.summary()}`:`All recorded cycles`);activeOptionId=X(()=>{let e=this.active();return this.focused()&&e!==null&&e{let e=this.hover()??(this.focused()?this.active():null),t=e===null?void 0:this.cycles()[e];return!t||e===null?null:{cycle:t,over:YO(t),top:t.components.slice(0,3),...this.tipSide(e)}});tipSide(e){let t=this.cycles().length;return e+.5=t.start&&e<=t.end}describe(e){let t=[`Cycle ${e.id}`,XO(e.ms)];YO(e)&&t.push(`over budget`),e.trigger&&t.push(`after ${e.trigger}`),t.push(`${e.checks} ${e.checks===1?`check`:`checks`}`);let n=e.components[0];return n&&t.push(`slowest ${n.name} ${XO(n.ms)}`),t.join(`, `)}select(e,t){let n=this.cycles(),r=n[Math.min(e,t)],i=n[Math.max(e,t)];r&&i&&this.range.set({from:r.id,to:i.id})}showAll(){this.range.set(null),this.anchor=null}setEnd(e,t){if(!this.cycles().length)return;let n=t.target,r=Number.parseInt(n.value,10);if(Number.isNaN(r)){n.value=String(e===`from`?this.startId():this.endId());return}let i=Math.min(Math.max(r,this.firstId()),this.lastId()),a=this.selected(),o=e===`from`?i:a[0]?.id??this.firstId(),s=e===`to`?i:a.at(-1)?.id??this.lastId();this.range.set({from:Math.min(o,s),to:Math.max(o,s)}),n.value=String(e===`from`?Math.min(o,s):Math.max(o,s))}onFocus(){this.focused.set(!0),(this.active()===null||this.active()>=this.cycles().length)&&this.active.set(this.span()?.start??Math.max(this.cycles().length-1,0)),this.anchor??=this.active()}onKey(e){let t=this.cycles().length;if(!t)return;let n=Math.min(this.active()??t-1,t-1),r=null;switch(e.key){case`ArrowRight`:case`ArrowDown`:r=n+1;break;case`ArrowLeft`:case`ArrowUp`:r=n-1;break;case`PageDown`:r=n+Bk;break;case`PageUp`:r=n-Bk;break;case`Home`:r=0;break;case`End`:r=t-1;break;case`Enter`:case` `:e.preventDefault(),this.anchor=n,this.select(n,n);return;case`Escape`:this.range()&&(e.preventDefault(),this.showAll());return;default:return}e.preventDefault(),r=Math.min(Math.max(r,0),t-1),this.active.set(r),this.hover.set(null),e.shiftKey?(this.anchor??=n,this.select(this.anchor,r)):this.anchor=r}indexAt(e){let t=e.target?.closest?.(`[data-index]`);if(t)return Number(t.getAttribute(`data-index`));let n=e.currentTarget?.getBoundingClientRect(),r=this.cycles().length;if(!n?.width||!r)return null;let i=(e.clientX-n.left)/n.width;return Math.min(Math.max(Math.floor(i*r),0),r-1)}startDrag(e){if(e.button!==0)return;let t=this.indexAt(e);t!==null&&(this.dragging=!0,this.anchor=t,this.active.set(t),this.select(t,t))}onPointerMove(e){let t=this.indexAt(e);this.hover.set(t),this.dragging&&t!==null&&this.anchor!==null&&(this.active.set(t),this.select(this.anchor,t))}endDrag(){this.dragging=!1}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-cd-cycle-chart`]],hostBindings:function(e,t){e&1&&H(`pointerup`,function(){return t.endDrag()},wu)(`pointercancel`,function(){return t.endDrag()},wu)},inputs:{cycles:[1,`cycles`],range:[1,`range`]},outputs:{range:`rangeChange`},decls:69,vars:25,consts:[[1,`range`],[`type`,`number`,`inputmode`,`numeric`,3,`change`,`min`,`max`,`value`],[`type`,`button`],[1,`summary`],[1,`hint`,3,`id`],[1,`plot`],[`aria-hidden`,`true`,1,`axis`],[1,`tick`,`top`],[1,`tick`,`zero`],[1,`area`],[`aria-hidden`,`true`,1,`band`,3,`left`,`width`],[`aria-hidden`,`true`,1,`budget`],[`role`,`listbox`,`aria-multiselectable`,`true`,`aria-orientation`,`horizontal`,`tabindex`,`0`,1,`bars`,3,`keydown`,`focus`,`blur`,`pointerdown`,`pointermove`,`pointerleave`],[`role`,`option`,1,`col`,3,`id`,`over`,`out`,`active`],[`aria-hidden`,`true`,1,`tip`,3,`left`,`right`],[`aria-hidden`,`true`,1,`markers`],[3,`over`],[`aria-label`,`Chart key`,1,`legend`],[`aria-hidden`,`true`,1,`key`,`ok`],[`aria-hidden`,`true`,1,`key`,`over`],[`aria-hidden`,`true`,1,`key-marker`],[`aria-hidden`,`true`,1,`key`,`line`],[1,`table`],[`tabindex`,`0`,`role`,`region`,1,`table-wrap`],[1,`sr-only`],[`scope`,`col`,1,`num`],[`scope`,`col`],[`type`,`button`,3,`click`],[`aria-hidden`,`true`,1,`band`],[`role`,`option`,1,`col`,3,`id`],[1,`bar`],[`aria-hidden`,`true`,1,`tip`],[1,`tip-head`],[1,`flag`],[1,`tip-row`],[1,`mono`],[1,`mono`,`name`],[1,`num`]],template:function(e,t){if(e&1&&(R(0,`div`,0)(1,`label`)(2,`span`),K(3,`Start`),z(),R(4,`input`,1),U(`change`,function(e){return t.setEnd(`from`,e)}),z()(),R(5,`label`)(6,`span`),K(7,`End`),z(),R(8,`input`,1),U(`change`,function(e){return t.setEnd(`to`,e)}),z()(),A(9,Ok,2,0,`button`,2),R(10,`p`,3),K(11),z()(),R(12,`p`,4),K(13,` Drag across the bars to pick a range of cycles. With the chart focused, the arrow keys move between cycles, Shift with an arrow key extends the range, Enter picks one cycle and Escape shows all cycles again. `),z(),R(14,`div`,5)(15,`div`,6)(16,`span`,7),K(17),z(),R(18,`span`,8),K(19,`0 ms`),z()(),R(20,`div`,9),A(21,kk,1,4,`div`,10),R(22,`div`,11)(23,`span`),K(24),z()(),R(25,`div`,12),U(`keydown`,function(e){return t.onKey(e)})(`focus`,function(){return t.onFocus()})(`blur`,function(){return t.focused.set(!1)})(`pointerdown`,function(e){return t.startDrag(e)})(`pointermove`,function(e){return t.onPointerMove(e)})(`pointerleave`,function(){return t.hover.set(null)}),M(26,Ak,2,12,`div`,13,Ek),z(),A(28,Pk,12,12,`div`,14),z()(),R(29,`div`,15),M(30,Fk,1,2,`span`,16,Ek),z(),R(32,`ul`,17)(33,`li`),lg(34,`span`,18),K(35,`Within budget`),z(),R(36,`li`),lg(37,`span`,19)(38,`span`,20),K(39,`Over budget `),z(),R(40,`li`),lg(41,`span`,21),K(42),z()(),R(43,`details`,22)(44,`summary`),K(45,`Show the cycles as a table`),z(),R(46,`div`,23)(47,`table`)(48,`caption`,24),K(49),z(),R(50,`thead`)(51,`tr`)(52,`th`,25),K(53,`Cycle`),z(),R(54,`th`,25),K(55,`Duration`),z(),R(56,`th`,26),K(57,`Budget`),z(),R(58,`th`,25),K(59,`Checks`),z(),R(60,`th`,25),K(61,`Passes`),z(),R(62,`th`,26),K(63,`After`),z(),R(64,`th`,26),K(65,`Slowest component`),z()()(),R(66,`tbody`),M(67,Lk,15,7,`tr`,null,Dk),z()()()()),e&2){let e,n;D(4),V(`min`,t.firstId())(`max`,t.lastId())(`value`,t.startId()),D(4),V(`min`,t.firstId())(`max`,t.lastId())(`value`,t.endId()),D(),j(t.range()?9:-1),D(2),q(t.summary()),D(),V(`id`,t.hintId),D(2),G(`flush`,t.bars().length>t.gapUntil),D(3),q(t.fmt(t.max())),D(4),j((e=t.band())?21:-1,e),D(),$g(`bottom`,t.budgetAt(),`%`),D(2),q(t.budgetLabel),D(),k(`aria-label`,`Change detection cycles, `+t.summary())(`aria-describedby`,t.hintId)(`aria-activedescendant`,t.activeOptionId()),D(),N(t.bars()),D(2),j((n=t.tip())?28:-1,n),D(),G(`flush`,t.bars().length>t.gapUntil),D(),N(t.bars()),D(12),q(t.budgetLabel),D(4),k(`aria-label`,t.tableLabel()),D(3),J(` `,t.tableLabel(),` `),D(18),N(t.selected())}},styles:[`[_nghost-%COMP%] { display: block; min-width: 0; } @@ -1335,7 +1335,7 @@ td.mono[_ngcontent-%COMP%] { .bar[_ngcontent-%COMP%] { transition: none; } -}`]})},Hk=(e,t)=>t.id,Uk=(e,t)=>t.index,Wk=(e,t)=>t.kind;function Gk(e,t){if(e&1&&(R(0,`p`,0),K(1),z()),e&2){let e=W(2);D(),Y(` Pick `,e.max,` cycles or fewer to see their spans. `,e.count(),` are picked. `)}}function Kk(e,t){if(e&1&&(R(0,`span`),K(1),z()),e&2){let e=t.$implicit;Xg(`left`,e.x,`%`)(`width`,e.w,`%`),D(),J(`cycle `,e.id)}}function qk(e,t){if(e&1){let e=B();R(0,`button`,11),U(`focus`,function(){let t=C(e).$implicit;return w(W(3).current.set(t.index))})(`mouseenter`,function(){let t=C(e).$implicit;return w(W(3).hover.set(t.index))})(`mouseleave`,function(){return C(e),w(W(3).hover.set(null))})(`click`,function(){let t=C(e).$implicit;return w(W(3).choose(t))}),R(1,`span`,12),K(2),z()()}if(e&2){let e=t.$implicit,n=W(3);Zg(D_(`block kind-`,e.kind)),Xg(`left`,e.x,`%`)(`width`,e.w,`%`)(`top`,e.depth*n.row,`px`),G(`narrow`,e.w<4),k(`tabindex`,e.index===n.tabStop()?0:-1)(`data-index`,e.index)(`aria-label`,n.describe(e))(`aria-disabled`,e.component?null:`true`),D(2),q(e.name)}}function Jk(e,t){if(e&1&&(R(0,`li`),og(1,`span`,13),K(2),z()),e&2){let e=t.$implicit;D(),Zg(D_(`key kind-`,e.kind)),D(),q(e.label)}}function Yk(e,t){if(e&1&&(R(0,`p`,0),K(1),z()),e&2){let e=W(3);D(),Y(` Each cycle keeps its longest spans. `,e.dropped(),` shorter `,e.dropped()===1?`span was`:`spans were`,` left out. `)}}function Xk(e,t){if(e&1&&(R(0,`tr`)(1,`td`,17),K(2),z(),R(3,`td`,18),K(4),z(),R(5,`td`),K(6),z(),R(7,`td`,17),K(8),z(),R(9,`td`,17),K(10),z(),R(11,`td`,17),K(12),z(),R(13,`td`,17),K(14),z()()),e&2){let e=t.$implicit,n=W(4);D(2),q(e.cycleId),D(),Xg(`padding-left`,6+e.depth*8,`px`),D(),q(e.name),D(2),q(n.kindLabel(e)),D(2),q(e.depth),D(2),q(n.fmt(e.start)),D(2),q(n.fmt(e.ms)),D(2),q(n.fmt(e.selfMs))}}function Zk(e,t){if(e&1&&(R(0,`div`,10)(1,`table`)(2,`caption`,14),K(3),z(),R(4,`thead`)(5,`tr`)(6,`th`,15),K(7,`Cycle`),z(),R(8,`th`,16),K(9,`Span`),z(),R(10,`th`,16),K(11,`Kind`),z(),R(12,`th`,15),K(13,`Depth`),z(),R(14,`th`,15),K(15,`Start`),z(),R(16,`th`,15),K(17,`Total`),z(),R(18,`th`,15),K(19,`Self`),z()()(),R(20,`tbody`),M(21,Xk,15,9,`tr`,null,Uk),z()()()),e&2){let e=W(),t=W(2);k(`aria-label`,t.tableLabel()),D(3),J(` `,t.tableLabel(),` `),D(18),N(e.blocks)}}function Qk(e,t){if(e&1){let e=B();R(0,`div`,1),U(`keydown`,function(t){return C(e),w(W(2).onKey(t))}),R(1,`div`,2),M(2,Kk,2,5,`span`,3,Hk),z(),R(4,`div`,4),M(5,qk,3,16,`button`,5,Uk),z()(),R(7,`p`,6),K(8),z(),R(9,`ul`,7),M(10,Jk,3,4,`li`,null,Wk),z(),R(12,`p`,8),K(13,` Arrow keys move along a row, Up goes to the enclosing span and Down to the first nested one. Enter on a component shows it in the tree. `),z(),A(14,Yk,2,2,`p`,0),R(15,`details`,9),U(`toggle`,function(t){return C(e),w(W(2).onToggle(t))}),R(16,`summary`),K(17,`Show the spans as a table`),z(),A(18,Zk,23,2,`div`,10),z()}if(e&2){let e=t,n=W(2);k(`aria-label`,n.label()),D(2),N(e.cycles),D(2),Xg(`height`,e.depth*n.row,`px`),D(),N(e.blocks),D(3),q(n.readout()),D(2),N(n.kinds),D(4),j(n.dropped()?14:-1),D(4),j(n.tableOpen()?18:-1)}}function $k(e,t){if(e&1&&(R(0,`h3`),K(1,`Spans in the picked cycles`),z(),A(2,Gk,2,2,`p`,0)(3,Qk,19,6)),e&2){let e,t=W();D(2),j(t.tooMany()?2:(e=t.graph())?3:-1,e)}}var eA=22;function tA(e,t){for(let n=e.length-1;n>=0;n--)if(t(e[n]))return e[n]}var nA=class e{cycles=$([]);names=$([]);scope=$(`the recording`);pick=Q_();row=eA;max=30;kinds=[`c`,`h`,`r`,`o`].map(e=>({kind:e,label:tk[e]}));current=E(0);tableOpen=E(!1);hover=E(null);hasSpans=X(()=>this.cycles().some(e=>e.spans?.length));count=X(()=>this.cycles().length);tooMany=X(()=>this.count()>30);graph=X(()=>this.tooMany()?null:rk(this.cycles(),this.names()));tabStop=X(()=>Math.min(this.current(),Math.max((this.graph()?.blocks.length??1)-1,0)));dropped=X(()=>this.graph()?.cycles.reduce((e,t)=>e+t.droppedSpans,0)??0);label=X(()=>`Spans in ${this.scope()} over time, nested by depth. Pick a component to show it in the tree.`);readout=X(()=>{let e=(this.graph()?.blocks??[])[this.hover()??this.tabStop()];return e?this.describe(e):``});tableLabel=X(()=>`Timed spans in ${this.scope()}`);fmt(e){return XO(e)}kindLabel(e){return tk[e.kind]}onToggle(e){this.tableOpen.set(e.target.open)}describe(e){let t=[e.name,tk[e.kind],`${XO(e.ms)} total`];return e.selfMs!==e.ms&&t.push(`${XO(e.selfMs)} self`),t.push(e.start<0?`cycle ${e.cycleId}, ${XO(-e.start)} before it started`:`cycle ${e.cycleId} at ${XO(e.start)}`),t.join(`, `)}choose(e){this.current.set(e.index),e.component&&this.pick.emit(e.component)}onKey(e){let t=this.graph()?.blocks??[];if(!t.length)return;let n=t[this.tabStop()],r;switch(e.key){case`ArrowRight`:r=t.find(e=>e.index>n.index&&e.depth===n.depth);break;case`ArrowLeft`:r=tA(t,e=>e.indexe.indexe.parent===n.index)??t.find(e=>e.index>n.index&&e.depth===n.depth+1);break;case`Home`:r=t[0];break;case`End`:r=t.at(-1);break;default:return}e.preventDefault(),this.hover.set(null),r&&(this.current.set(r.index),e.currentTarget.querySelector(`button[data-index="${r.index}"]`)?.focus())}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-cd-flame-graph`]],inputs:{cycles:[1,`cycles`],names:[1,`names`],scope:[1,`scope`]},outputs:{pick:`pick`},decls:1,vars:1,consts:[[1,`note`],[`role`,`group`,1,`flame`,3,`keydown`],[`aria-hidden`,`true`,1,`cycles`],[3,`left`,`width`],[1,`rows`],[`type`,`button`,3,`class`,`narrow`,`left`,`width`,`top`],[`aria-hidden`,`true`,1,`readout`],[`aria-label`,`Span kinds`,1,`legend`],[1,`hint`],[1,`table`,3,`toggle`],[`tabindex`,`0`,`role`,`region`,1,`table-wrap`],[`type`,`button`,3,`focus`,`mouseenter`,`mouseleave`,`click`],[1,`text`],[`aria-hidden`,`true`],[1,`sr-only`],[`scope`,`col`,1,`num`],[`scope`,`col`],[1,`num`],[1,`mono`]],template:function(e,t){e&1&&A(0,$k,4,1),e&2&&j(t.hasSpans()?0:-1)},styles:[`[_nghost-%COMP%] { +}`]})},Hk=(e,t)=>t.id,Uk=(e,t)=>t.index,Wk=(e,t)=>t.kind;function Gk(e,t){if(e&1&&(R(0,`p`,0),K(1),z()),e&2){let e=W(2);D(),Y(` Pick `,e.max,` cycles or fewer to see their spans. `,e.count(),` are picked. `)}}function Kk(e,t){if(e&1&&(R(0,`span`),K(1),z()),e&2){let e=t.$implicit;$g(`left`,e.x,`%`)(`width`,e.w,`%`),D(),J(`cycle `,e.id)}}function qk(e,t){if(e&1){let e=B();R(0,`button`,11),U(`focus`,function(){let t=S(e).$implicit;return C(W(3).current.set(t.index))})(`mouseenter`,function(){let t=S(e).$implicit;return C(W(3).hover.set(t.index))})(`mouseleave`,function(){return S(e),C(W(3).hover.set(null))})(`click`,function(){let t=S(e).$implicit;return C(W(3).choose(t))}),R(1,`span`,12),K(2),z()()}if(e&2){let e=t.$implicit,n=W(3);e_(F_(`block kind-`,e.kind)),$g(`left`,e.x,`%`)(`width`,e.w,`%`)(`top`,e.depth*n.row,`px`),G(`narrow`,e.w<4),k(`tabindex`,e.index===n.tabStop()?0:-1)(`data-index`,e.index)(`aria-label`,n.describe(e))(`aria-disabled`,e.component?null:`true`),D(2),q(e.name)}}function Jk(e,t){if(e&1&&(R(0,`li`),lg(1,`span`,13),K(2),z()),e&2){let e=t.$implicit;D(),e_(F_(`key kind-`,e.kind)),D(),q(e.label)}}function Yk(e,t){if(e&1&&(R(0,`p`,0),K(1),z()),e&2){let e=W(3);D(),Y(` Each cycle keeps its longest spans. `,e.dropped(),` shorter `,e.dropped()===1?`span was`:`spans were`,` left out. `)}}function Xk(e,t){if(e&1&&(R(0,`tr`)(1,`td`,17),K(2),z(),R(3,`td`,18),K(4),z(),R(5,`td`),K(6),z(),R(7,`td`,17),K(8),z(),R(9,`td`,17),K(10),z(),R(11,`td`,17),K(12),z(),R(13,`td`,17),K(14),z()()),e&2){let e=t.$implicit,n=W(4);D(2),q(e.cycleId),D(),$g(`padding-left`,6+e.depth*8,`px`),D(),q(e.name),D(2),q(n.kindLabel(e)),D(2),q(e.depth),D(2),q(n.fmt(e.start)),D(2),q(n.fmt(e.ms)),D(2),q(n.fmt(e.selfMs))}}function Zk(e,t){if(e&1&&(R(0,`div`,10)(1,`table`)(2,`caption`,14),K(3),z(),R(4,`thead`)(5,`tr`)(6,`th`,15),K(7,`Cycle`),z(),R(8,`th`,16),K(9,`Span`),z(),R(10,`th`,16),K(11,`Kind`),z(),R(12,`th`,15),K(13,`Depth`),z(),R(14,`th`,15),K(15,`Start`),z(),R(16,`th`,15),K(17,`Total`),z(),R(18,`th`,15),K(19,`Self`),z()()(),R(20,`tbody`),M(21,Xk,15,9,`tr`,null,Uk),z()()()),e&2){let e=W(),t=W(2);k(`aria-label`,t.tableLabel()),D(3),J(` `,t.tableLabel(),` `),D(18),N(e.blocks)}}function Qk(e,t){if(e&1){let e=B();R(0,`div`,1),U(`keydown`,function(t){return S(e),C(W(2).onKey(t))}),R(1,`div`,2),M(2,Kk,2,5,`span`,3,Hk),z(),R(4,`div`,4),M(5,qk,3,16,`button`,5,Uk),z()(),R(7,`p`,6),K(8),z(),R(9,`ul`,7),M(10,Jk,3,4,`li`,null,Wk),z(),R(12,`p`,8),K(13,` Arrow keys move along a row, Up goes to the enclosing span and Down to the first nested one. Enter on a component shows it in the tree. `),z(),A(14,Yk,2,2,`p`,0),R(15,`details`,9),U(`toggle`,function(t){return S(e),C(W(2).onToggle(t))}),R(16,`summary`),K(17,`Show the spans as a table`),z(),A(18,Zk,23,2,`div`,10),z()}if(e&2){let e=t,n=W(2);k(`aria-label`,n.label()),D(2),N(e.cycles),D(2),$g(`height`,e.depth*n.row,`px`),D(),N(e.blocks),D(3),q(n.readout()),D(2),N(n.kinds),D(4),j(n.dropped()?14:-1),D(4),j(n.tableOpen()?18:-1)}}function $k(e,t){if(e&1&&(R(0,`h3`),K(1,`Spans in the picked cycles`),z(),A(2,Gk,2,2,`p`,0)(3,Qk,19,6)),e&2){let e,t=W();D(2),j(t.tooMany()?2:(e=t.graph())?3:-1,e)}}var eA=22;function tA(e,t){for(let n=e.length-1;n>=0;n--)if(t(e[n]))return e[n]}var nA=class e{cycles=$([]);names=$([]);scope=$(`the recording`);pick=ov();row=eA;max=30;kinds=[`c`,`h`,`r`,`o`].map(e=>({kind:e,label:tk[e]}));current=T(0);tableOpen=T(!1);hover=T(null);hasSpans=X(()=>this.cycles().some(e=>e.spans?.length));count=X(()=>this.cycles().length);tooMany=X(()=>this.count()>30);graph=X(()=>this.tooMany()?null:rk(this.cycles(),this.names()));tabStop=X(()=>Math.min(this.current(),Math.max((this.graph()?.blocks.length??1)-1,0)));dropped=X(()=>this.graph()?.cycles.reduce((e,t)=>e+t.droppedSpans,0)??0);label=X(()=>`Spans in ${this.scope()} over time, nested by depth. Pick a component to show it in the tree.`);readout=X(()=>{let e=(this.graph()?.blocks??[])[this.hover()??this.tabStop()];return e?this.describe(e):``});tableLabel=X(()=>`Timed spans in ${this.scope()}`);fmt(e){return XO(e)}kindLabel(e){return tk[e.kind]}onToggle(e){this.tableOpen.set(e.target.open)}describe(e){let t=[e.name,tk[e.kind],`${XO(e.ms)} total`];return e.selfMs!==e.ms&&t.push(`${XO(e.selfMs)} self`),t.push(e.start<0?`cycle ${e.cycleId}, ${XO(-e.start)} before it started`:`cycle ${e.cycleId} at ${XO(e.start)}`),t.join(`, `)}choose(e){this.current.set(e.index),e.component&&this.pick.emit(e.component)}onKey(e){let t=this.graph()?.blocks??[];if(!t.length)return;let n=t[this.tabStop()],r;switch(e.key){case`ArrowRight`:r=t.find(e=>e.index>n.index&&e.depth===n.depth);break;case`ArrowLeft`:r=tA(t,e=>e.indexe.indexe.parent===n.index)??t.find(e=>e.index>n.index&&e.depth===n.depth+1);break;case`Home`:r=t[0];break;case`End`:r=t.at(-1);break;default:return}e.preventDefault(),this.hover.set(null),r&&(this.current.set(r.index),e.currentTarget.querySelector(`button[data-index="${r.index}"]`)?.focus())}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-cd-flame-graph`]],inputs:{cycles:[1,`cycles`],names:[1,`names`],scope:[1,`scope`]},outputs:{pick:`pick`},decls:1,vars:1,consts:[[1,`note`],[`role`,`group`,1,`flame`,3,`keydown`],[`aria-hidden`,`true`,1,`cycles`],[3,`left`,`width`],[1,`rows`],[`type`,`button`,3,`class`,`narrow`,`left`,`width`,`top`],[`aria-hidden`,`true`,1,`readout`],[`aria-label`,`Span kinds`,1,`legend`],[1,`hint`],[1,`table`,3,`toggle`],[`tabindex`,`0`,`role`,`region`,1,`table-wrap`],[`type`,`button`,3,`focus`,`mouseenter`,`mouseleave`,`click`],[1,`text`],[`aria-hidden`,`true`],[1,`sr-only`],[`scope`,`col`,1,`num`],[`scope`,`col`],[1,`num`],[1,`mono`]],template:function(e,t){e&1&&A(0,$k,4,1),e&2&&j(t.hasSpans()?0:-1)},styles:[`[_nghost-%COMP%] { display: block; min-width: 0; } @@ -1542,7 +1542,7 @@ td.mono[_ngcontent-%COMP%] { .num[_ngcontent-%COMP%] { text-align: right; font-variant-numeric: tabular-nums; -}`]})};function rA(e,t){if(e&1&&(R(0,`tr`)(1,`td`,5),K(2),z(),R(3,`td`,6),K(4),z(),R(5,`td`,6),K(6),z(),R(7,`td`,6),K(8),z()()),e&2){let e=t.$implicit,n=W(3);D(2),Y(``,e.name,`.`,e.hook),D(2),q(e.calls),D(2),q(n.ms(e.ms)),D(2),q(n.ms(e.maxMs))}}function iA(e,t){if(e&1&&(R(0,`div`)(1,`h3`),K(2,`Lifecycle hooks`),z(),R(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,3),K(7,`Hook`),z(),R(8,`th`,4),K(9,`Calls`),z(),R(10,`th`,4),K(11,`Time`),z(),R(12,`th`,4),K(13,`Slowest`),z()()(),R(14,`tbody`),M(15,rA,9,5,`tr`,null,Jh),z()()()),e&2){let e=W(2);D(15),N(e.hooks())}}function aA(e,t){if(e&1&&K(0),e&2){let e=W().$implicit;J(` (`,e.listener,`) `)}}function oA(e,t){if(e&1&&(R(0,`tr`)(1,`td`,5),K(2),A(3,aA,1,1),z(),R(4,`td`,6),K(5),z(),R(6,`td`,6),K(7),z(),R(8,`td`,6),K(9),z()()),e&2){let e=t.$implicit,n=W(3);D(2),J(` `,e.name,` `),D(),j(e.listener?3:-1),D(2),q(e.calls),D(2),q(n.ms(e.ms)),D(2),q(n.ms(e.maxMs))}}function sA(e,t){if(e&1&&(R(0,`div`)(1,`h3`),K(2,`Output listeners`),z(),R(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,3),K(7,`Listener`),z(),R(8,`th`,4),K(9,`Calls`),z(),R(10,`th`,4),K(11,`Time`),z(),R(12,`th`,4),K(13,`Slowest`),z()()(),R(14,`tbody`),M(15,oA,10,5,`tr`,null,Jh),z()()()),e&2){let e=W(2);D(15),N(e.outputs())}}function cA(e,t){if(e&1&&(R(0,`p`,1),K(1),z()),e&2){let e=t,n=W(2);D(),v_(` afterRender callbacks ran `,e.runs,` `,e.runs===1?`time`:`times`,`, `,n.ms(e.ms),` in total, slowest `,n.ms(e.maxMs),`. `)}}function lA(e,t){if(e&1&&(R(0,`p`,2),K(1),z()),e&2){let e=W(2);D(),Y(` `,e.dropped(),` more hook or output `,e.dropped()===1?`row is`:`rows are`,` left out. A recording lists at most 100 of each. `)}}function uA(e,t){if(e&1&&(R(0,`div`,0),A(1,iA,17,0,`div`),A(2,sA,17,0,`div`),z(),A(3,cA,2,4,`p`,1),A(4,lA,2,2,`p`,2)),e&2){let e,t=W();D(),j(t.hooks().length?1:-1),D(),j(t.outputs().length?2:-1),D(),j((e=t.afterRender())?3:-1,e),D(),j(t.dropped()?4:-1)}}var dA=10;function fA(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}var pA=class e{page=$(null);hooks=X(()=>(this.page()?.hooks??[]).slice(0,dA));outputs=X(()=>(this.page()?.outputs??[]).slice(0,dA));afterRender=X(()=>{let e=this.page()?.afterRender;return e?.runs?e:null});dropped=X(()=>this.page()?.droppedTimings??0);ms(e){return fA(e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-cd-timing`]],inputs:{page:[1,`page`]},decls:1,vars:1,consts:[[1,`timing`],[1,`after-render`],[1,`note`],[`scope`,`col`],[`scope`,`col`,1,`num`],[1,`mono`],[1,`num`]],template:function(e,t){e&1&&A(0,uA,5,4),e&2&&j(t.hooks().length||t.outputs().length||t.afterRender()?0:-1)},styles:[`[_nghost-%COMP%] { +}`]})};function rA(e,t){if(e&1&&(R(0,`tr`)(1,`td`,5),K(2),z(),R(3,`td`,6),K(4),z(),R(5,`td`,6),K(6),z(),R(7,`td`,6),K(8),z()()),e&2){let e=t.$implicit,n=W(3);D(2),Y(``,e.name,`.`,e.hook),D(2),q(e.calls),D(2),q(n.ms(e.ms)),D(2),q(n.ms(e.maxMs))}}function iA(e,t){if(e&1&&(R(0,`div`)(1,`h3`),K(2,`Lifecycle hooks`),z(),R(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,3),K(7,`Hook`),z(),R(8,`th`,4),K(9,`Calls`),z(),R(10,`th`,4),K(11,`Time`),z(),R(12,`th`,4),K(13,`Slowest`),z()()(),R(14,`tbody`),M(15,rA,9,5,`tr`,null,Zh),z()()()),e&2){let e=W(2);D(15),N(e.hooks())}}function aA(e,t){if(e&1&&K(0),e&2){let e=W().$implicit;J(` (`,e.listener,`) `)}}function oA(e,t){if(e&1&&(R(0,`tr`)(1,`td`,5),K(2),A(3,aA,1,1),z(),R(4,`td`,6),K(5),z(),R(6,`td`,6),K(7),z(),R(8,`td`,6),K(9),z()()),e&2){let e=t.$implicit,n=W(3);D(2),J(` `,e.name,` `),D(),j(e.listener?3:-1),D(2),q(e.calls),D(2),q(n.ms(e.ms)),D(2),q(n.ms(e.maxMs))}}function sA(e,t){if(e&1&&(R(0,`div`)(1,`h3`),K(2,`Output listeners`),z(),R(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,3),K(7,`Listener`),z(),R(8,`th`,4),K(9,`Calls`),z(),R(10,`th`,4),K(11,`Time`),z(),R(12,`th`,4),K(13,`Slowest`),z()()(),R(14,`tbody`),M(15,oA,10,5,`tr`,null,Zh),z()()()),e&2){let e=W(2);D(15),N(e.outputs())}}function cA(e,t){if(e&1&&(R(0,`p`,1),K(1),z()),e&2){let e=t,n=W(2);D(),E_(` afterRender callbacks ran `,e.runs,` `,e.runs===1?`time`:`times`,`, `,n.ms(e.ms),` in total, slowest `,n.ms(e.maxMs),`. `)}}function lA(e,t){if(e&1&&(R(0,`p`,2),K(1),z()),e&2){let e=W(2);D(),Y(` `,e.dropped(),` more hook or output `,e.dropped()===1?`row is`:`rows are`,` left out. A recording lists at most 100 of each. `)}}function uA(e,t){if(e&1&&(R(0,`div`,0),A(1,iA,17,0,`div`),A(2,sA,17,0,`div`),z(),A(3,cA,2,4,`p`,1),A(4,lA,2,2,`p`,2)),e&2){let e,t=W();D(),j(t.hooks().length?1:-1),D(),j(t.outputs().length?2:-1),D(),j((e=t.afterRender())?3:-1,e),D(),j(t.dropped()?4:-1)}}var dA=10;function fA(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}var pA=class e{page=$(null);hooks=X(()=>(this.page()?.hooks??[]).slice(0,dA));outputs=X(()=>(this.page()?.outputs??[]).slice(0,dA));afterRender=X(()=>{let e=this.page()?.afterRender;return e?.runs?e:null});dropped=X(()=>this.page()?.droppedTimings??0);ms(e){return fA(e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-cd-timing`]],inputs:{page:[1,`page`]},decls:1,vars:1,consts:[[1,`timing`],[1,`after-render`],[1,`note`],[`scope`,`col`],[`scope`,`col`,1,`num`],[1,`mono`],[1,`num`]],template:function(e,t){e&1&&A(0,uA,5,4),e&2&&j(t.hooks().length||t.outputs().length||t.afterRender()?0:-1)},styles:[`[_nghost-%COMP%] { display: block; } @@ -1602,7 +1602,7 @@ td.mono[_ngcontent-%COMP%] { margin: 8px 0 0; color: var(--%NS%text-2); font-size: 12px; -}`]})};function mA(e,t){if(e&1&&(R(0,`p`,5),K(1),z()),e&2){let e=W();D(),q(e.error())}}function hA(e,t){let n=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=t,document.body.append(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(r),0)}var gA=class e{page=$(null);maxCycles=$(200);imported=Q_();error=E(``);hasCycles(){return(this.page()?.cycles.length??0)>0}exportJson(){let e=this.page();e&&hA(BO(e,e.pageId),`change-detection-${e.pageId}.json`)}exportTrace(){let e=this.page();e&&hA(qO(e,e.pageId),`change-detection-${e.pageId}.trace.json`)}async read(e){let t=e.files?.[0];if(e.value=``,!t)return;if(t.size>2e7){this.error.set(`${t.name}: The file is larger than 20 MB.`);return}let n;try{n=await t.text()}catch{this.error.set(`Could not read the file.`);return}let r=VO(n,this.maxCycles());if(!r.ok){this.error.set(`${t.name}: ${r.error}`);return}this.error.set(``),this.imported.emit({fileName:t.name,page:{...r.recording,pageId:r.pageId,supported:!0}})}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-cd-transfer`]],inputs:{page:[1,`page`],maxCycles:[1,`maxCycles`]},outputs:{imported:`imported`},decls:10,vars:3,consts:[[`file`,``],[`role`,`group`,`aria-label`,`Export and import the recording`,1,`transfer`],[`type`,`button`,3,`click`,`disabled`],[`type`,`button`,3,`click`],[`type`,`file`,`accept`,`.json,application/json`,`hidden`,``,3,`change`],[`role`,`alert`,1,`error`]],template:function(e,t){if(e&1){let e=B();R(0,`div`,1)(1,`button`,2),U(`click`,function(){return t.exportJson()}),K(2,`Export JSON`),z(),R(3,`button`,2),U(`click`,function(){return t.exportTrace()}),K(4,` Export trace (Perfetto) `),z(),R(5,`button`,3),U(`click`,function(){return C(e),w(kg(8).click())}),K(6,`Import`),z(),R(7,`input`,4,0),U(`change`,function(){C(e);let n=kg(8);return w(t.read(n))}),z()(),A(9,mA,2,1,`p`,5)}e&2&&(D(),V(`disabled`,!t.hasCycles()),D(2),V(`disabled`,!t.hasCycles()),D(6),j(t.error()?9:-1))},styles:[`[_nghost-%COMP%] { +}`]})};function mA(e,t){if(e&1&&(R(0,`p`,5),K(1),z()),e&2){let e=W();D(),q(e.error())}}function hA(e,t){let n=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=t,document.body.append(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(r),0)}var gA=class e{page=$(null);maxCycles=$(200);imported=ov();error=T(``);hasCycles(){return(this.page()?.cycles.length??0)>0}exportJson(){let e=this.page();e&&hA(BO(e,e.pageId),`change-detection-${e.pageId}.json`)}exportTrace(){let e=this.page();e&&hA(qO(e,e.pageId),`change-detection-${e.pageId}.trace.json`)}async read(e){let t=e.files?.[0];if(e.value=``,!t)return;if(t.size>2e7){this.error.set(`${t.name}: The file is larger than 20 MB.`);return}let n;try{n=await t.text()}catch{this.error.set(`Could not read the file.`);return}let r=VO(n,this.maxCycles());if(!r.ok){this.error.set(`${t.name}: ${r.error}`);return}this.error.set(``),this.imported.emit({fileName:t.name,page:{...r.recording,pageId:r.pageId,supported:!0}})}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-cd-transfer`]],inputs:{page:[1,`page`],maxCycles:[1,`maxCycles`]},outputs:{imported:`imported`},decls:10,vars:3,consts:[[`file`,``],[`role`,`group`,`aria-label`,`Export and import the recording`,1,`transfer`],[`type`,`button`,3,`click`,`disabled`],[`type`,`button`,3,`click`],[`type`,`file`,`accept`,`.json,application/json`,`hidden`,``,3,`change`],[`role`,`alert`,1,`error`]],template:function(e,t){if(e&1){let e=B();R(0,`div`,1)(1,`button`,2),U(`click`,function(){return t.exportJson()}),K(2,`Export JSON`),z(),R(3,`button`,2),U(`click`,function(){return t.exportTrace()}),K(4,` Export trace (Perfetto) `),z(),R(5,`button`,3),U(`click`,function(){return S(e),C(Mg(8).click())}),K(6,`Import`),z(),R(7,`input`,4,0),U(`change`,function(){S(e);let n=Mg(8);return C(t.read(n))}),z()(),A(9,mA,2,1,`p`,5)}e&2&&(D(),V(`disabled`,!t.hasCycles()),D(2),V(`disabled`,!t.hasCycles()),D(6),j(t.error()?9:-1))},styles:[`[_nghost-%COMP%] { display: contents; } @@ -1644,7 +1644,7 @@ button[_ngcontent-%COMP%]:disabled { margin: 0; color: var(--%NS%danger-text); font-size: 12px; -}`]})},_A=(e,t)=>t.stat.name;function vA(e,t){if(e&1&&(R(0,`span`,8),K(1),z()),e&2){let e=W(2).$implicit;D(),J(``,e.other,` more`)}}function yA(e,t){if(e&1&&(R(0,`div`,6)(1,`span`,7),K(2),z(),A(3,vA,2,1,`span`,8),z()),e&2){let e=W().$implicit;Xg(`--%NS%tone`,e.tone+`%`),D(2),q(e.label),D(),j(e.roomy?3:-1)}}function bA(e,t){if(e&1&&(R(0,`span`,10),K(1),z(),R(2,`span`,11),K(3),z()),e&2){let e=W(2).$implicit,t=W(2);D(),q(e.stat.name),D(2),q(t.fmt(e.stat.ms))}}function xA(e,t){if(e&1){let e=B();R(0,`button`,9),U(`focus`,function(){C(e);let t=W().$index;return w(W(2).current.set(t))})(`click`,function(){C(e);let t=W().$implicit;return w(W(2).pick.emit(t.stat.name))}),A(1,bA,4,2),z()}if(e&2){let e=W(),t=e.$implicit,n=e.$index,r=W(2);Xg(`--%NS%tone`,t.tone+`%`),k(`tabindex`,n===r.tabStop()?0:-1)(`aria-label`,t.label)(`data-index`,n),D(),j(t.roomy?1:-1)}}function SA(e,t){if(e&1&&(R(0,`li`),A(1,yA,4,4,`div`,4)(2,xA,2,6,`button`,5),z()),e&2){let e=t.$implicit;Xg(`left`,e.x,`%`)(`top`,e.y,`%`)(`width`,e.w,`%`)(`height`,e.h,`%`),D(),j(e.other?1:2)}}function CA(e,t){if(e&1){let e=B();R(0,`ul`,2),U(`keydown`,function(t){return C(e),w(W().onKey(t))}),M(1,SA,3,9,`li`,3,_A),z()}if(e&2){let e=W();k(`aria-label`,e.label()),D(),N(e.cells())}}function wA(e,t){e&1&&(R(0,`p`,1),K(1,`No component time in these cycles.`),z())}var TA=24,EA=3,DA=class e{stats=$([]);scope=$(`the recording`);pick=Q_();current=E(0);label=X(()=>`Self time per component in ${this.scope()}, largest first. Pick one to show it in the tree.`);cells=X(()=>{let e=this.stats().filter(e=>e.ms>0),t=e.slice(0,TA),n=e.slice(TA),r=n.reduce((e,t)=>e+t.ms,0),i=t.map(e=>({stat:e,other:0}));n.length&&i.push({stat:{name:`Other components`,checks:0,ms:r,maxMs:0,cycles:0},other:n.length});let a=e.reduce((e,t)=>e+t.ms,0),o=t[0]?.ms??1,s=ek(i,e=>e.stat.ms,EA);return s.sort((e,t)=>Number(e.item.other>0)-Number(t.item.other>0)),s.map(e=>{let{stat:t,other:n}=e.item,r=a?Math.round(t.ms/a*100):0;return{stat:t,other:n,x:e.x,y:e.y,w:e.w,h:e.h,tone:n?0:14+Math.round(26*Math.min(t.ms/o,1)),roomy:e.w>=10&&e.h>=22,label:n?`${n} more components, ${XO(t.ms)}, ${r}% of self time`:`${t.name}, ${XO(t.ms)} self time, ${r}%, ${t.checks} ${t.checks===1?`check`:`checks`}`}})});tabStop=X(()=>Math.min(this.current(),Math.max(this.cells().filter(e=>!e.other).length-1,0)));fmt(e){return XO(e)}onKey(e){let t=this.cells().filter(e=>!e.other).length;if(!t)return;let n=this.tabStop(),r;switch(e.key){case`ArrowRight`:case`ArrowDown`:r=Math.min(n+1,t-1);break;case`ArrowLeft`:case`ArrowUp`:r=Math.max(n-1,0);break;case`Home`:r=0;break;case`End`:r=t-1;break;default:return}e.preventDefault(),this.current.set(r),e.currentTarget.querySelector(`button[data-index="${r}"]`)?.focus()}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-cd-treemap`]],inputs:{stats:[1,`stats`],scope:[1,`scope`]},outputs:{pick:`pick`},decls:2,vars:1,consts:[[1,`map`],[1,`empty`],[1,`map`,3,`keydown`],[3,`left`,`top`,`width`,`height`],[1,`cell`,`other`,3,`--%NS%tone`],[`type`,`button`,1,`cell`,3,`--%NS%tone`],[1,`cell`,`other`],[1,`sr-only`],[`aria-hidden`,`true`,1,`name`],[`type`,`button`,1,`cell`,3,`focus`,`click`],[1,`name`,`mono`],[1,`ms`]],template:function(e,t){e&1&&A(0,CA,3,1,`ul`,0)(1,wA,2,0,`p`,1),e&2&&j(+!t.cells().length)},styles:[`[_nghost-%COMP%] { +}`]})},_A=(e,t)=>t.stat.name;function vA(e,t){if(e&1&&(R(0,`span`,8),K(1),z()),e&2){let e=W(2).$implicit;D(),J(``,e.other,` more`)}}function yA(e,t){if(e&1&&(R(0,`div`,6)(1,`span`,7),K(2),z(),A(3,vA,2,1,`span`,8),z()),e&2){let e=W().$implicit;$g(`--%NS%tone`,e.tone+`%`),D(2),q(e.label),D(),j(e.roomy?3:-1)}}function bA(e,t){if(e&1&&(R(0,`span`,10),K(1),z(),R(2,`span`,11),K(3),z()),e&2){let e=W(2).$implicit,t=W(2);D(),q(e.stat.name),D(2),q(t.fmt(e.stat.ms))}}function xA(e,t){if(e&1){let e=B();R(0,`button`,9),U(`focus`,function(){S(e);let t=W().$index;return C(W(2).current.set(t))})(`click`,function(){S(e);let t=W().$implicit;return C(W(2).pick.emit(t.stat.name))}),A(1,bA,4,2),z()}if(e&2){let e=W(),t=e.$implicit,n=e.$index,r=W(2);$g(`--%NS%tone`,t.tone+`%`),k(`tabindex`,n===r.tabStop()?0:-1)(`aria-label`,t.label)(`data-index`,n),D(),j(t.roomy?1:-1)}}function SA(e,t){if(e&1&&(R(0,`li`),A(1,yA,4,4,`div`,4)(2,xA,2,6,`button`,5),z()),e&2){let e=t.$implicit;$g(`left`,e.x,`%`)(`top`,e.y,`%`)(`width`,e.w,`%`)(`height`,e.h,`%`),D(),j(e.other?1:2)}}function CA(e,t){if(e&1){let e=B();R(0,`ul`,2),U(`keydown`,function(t){return S(e),C(W().onKey(t))}),M(1,SA,3,9,`li`,3,_A),z()}if(e&2){let e=W();k(`aria-label`,e.label()),D(),N(e.cells())}}function wA(e,t){e&1&&(R(0,`p`,1),K(1,`No component time in these cycles.`),z())}var TA=24,EA=3,DA=class e{stats=$([]);scope=$(`the recording`);pick=ov();current=T(0);label=X(()=>`Self time per component in ${this.scope()}, largest first. Pick one to show it in the tree.`);cells=X(()=>{let e=this.stats().filter(e=>e.ms>0),t=e.slice(0,TA),n=e.slice(TA),r=n.reduce((e,t)=>e+t.ms,0),i=t.map(e=>({stat:e,other:0}));n.length&&i.push({stat:{name:`Other components`,checks:0,ms:r,maxMs:0,cycles:0},other:n.length});let a=e.reduce((e,t)=>e+t.ms,0),o=t[0]?.ms??1,s=ek(i,e=>e.stat.ms,EA);return s.sort((e,t)=>Number(e.item.other>0)-Number(t.item.other>0)),s.map(e=>{let{stat:t,other:n}=e.item,r=a?Math.round(t.ms/a*100):0;return{stat:t,other:n,x:e.x,y:e.y,w:e.w,h:e.h,tone:n?0:14+Math.round(26*Math.min(t.ms/o,1)),roomy:e.w>=10&&e.h>=22,label:n?`${n} more components, ${XO(t.ms)}, ${r}% of self time`:`${t.name}, ${XO(t.ms)} self time, ${r}%, ${t.checks} ${t.checks===1?`check`:`checks`}`}})});tabStop=X(()=>Math.min(this.current(),Math.max(this.cells().filter(e=>!e.other).length-1,0)));fmt(e){return XO(e)}onKey(e){let t=this.cells().filter(e=>!e.other).length;if(!t)return;let n=this.tabStop(),r;switch(e.key){case`ArrowRight`:case`ArrowDown`:r=Math.min(n+1,t-1);break;case`ArrowLeft`:case`ArrowUp`:r=Math.max(n-1,0);break;case`Home`:r=0;break;case`End`:r=t-1;break;default:return}e.preventDefault(),this.current.set(r),e.currentTarget.querySelector(`button[data-index="${r}"]`)?.focus()}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-cd-treemap`]],inputs:{stats:[1,`stats`],scope:[1,`scope`]},outputs:{pick:`pick`},decls:2,vars:1,consts:[[1,`map`],[1,`empty`],[1,`map`,3,`keydown`],[3,`left`,`top`,`width`,`height`],[1,`cell`,`other`,3,`--%NS%tone`],[`type`,`button`,1,`cell`,3,`--%NS%tone`],[1,`cell`,`other`],[1,`sr-only`],[`aria-hidden`,`true`,1,`name`],[`type`,`button`,1,`cell`,3,`focus`,`click`],[1,`name`,`mono`],[1,`ms`]],template:function(e,t){e&1&&A(0,CA,3,1,`ul`,0)(1,wA,2,0,`p`,1),e&2&&j(+!t.cells().length)},styles:[`[_nghost-%COMP%] { display: block; min-width: 0; } @@ -1720,7 +1720,7 @@ button.cell[_ngcontent-%COMP%]:focus-visible { .empty[_ngcontent-%COMP%] { margin: 8px 0; color: var(--%NS%text-2); -}`]})},OA=(e,t)=>t.id;function kA(e,t){if(e&1){let e=B();F(0,`button`,14),H(`click`,function(){return C(e),w(W(2).clear())}),K(1,`Clear`),I()}}function AA(e,t){if(e&1){let e=B();F(0,`button`,11),H(`click`,function(){return C(e),w(W().toggle())}),L(1,`span`,12),K(2),I(),A(3,kA,2,0,`button`,13)}if(e&2){let e=W();G(`on`,e.recording()),P(`disabled`,!e.pageId()),D(2),J(` `,e.recording()?`Stop recording`:`Record`,` `),D(),j(e.cycles().length?3:-1)}}function jA(e,t){if(e&1){let e=B();F(0,`p`,6)(1,`span`,15),K(2,`Imported recording`),I(),F(3,`span`,16),K(4),I(),F(5,`button`,14),H(`click`,function(){return C(e),w(W().closeImport())}),K(6,`Back to live recording`),I()()}e&2&&(D(4),q(t.fileName))}function MA(e,t){e&1&&K(0,` An app on a device has no DOM, so checks that changed nothing are not counted there. `)}function NA(e,t){e&1&&K(0,` A recording keeps running when the tab reloads, so it catches the next start of the app. The cycles from before the reload are gone with the old page. `)}function PA(e,t){e&1&&(F(0,`p`,9),K(1,` The page has Angular's profiler hook, but the recording could not attach to it yet. The page tries again on its next update while recording is on. If this stays, stop and start the recording, or reload the page. `),I())}function FA(e,t){e&1&&L(0,`app-angular-unavailable`,17),e&2&&P(`page`,W(2).angularPage())}function IA(e,t){e&1&&A(0,PA,2,0,`p`,9)(1,FA,1,1,`app-angular-unavailable`,17),e&2&&j(+!W().attachPending())}function LA(e,t){e&1&&(F(0,`p`,9),K(1,`Angular profiling stays on until the page reloads.`),I())}function RA(e,t){e&1&&L(0,`app-angular-unavailable`,21),e&2&&P(`page`,W(2).angularPage())}function zA(e,t){if(e&1){let e=B();F(0,`div`,18)(1,`span`,19),K(2,`Live views`),I(),F(3,`button`,20),H(`click`,function(){C(e);let t=W();return w(t.setView(`flash`,!t.views().flash))}),L(4,`span`,12),K(5,` Flash checks `),I(),F(6,`button`,20),H(`click`,function(){C(e);let t=W();return w(t.setView(`track`,!t.views().track))}),L(7,`span`,12),K(8,` Performance track `),I(),F(9,`button`,20),H(`click`,function(){return C(e),w(W().setView(`angularProfiling`,!0))}),L(10,`span`,12),K(11,` Angular profiling `),I()(),F(12,`p`,7),K(13,` Flash checks draws a box over each component on the page as Angular checks it, with its name and how often it was checked, fading over a second. Performance track adds a Pangular track to the Chrome Performance panel with every component check, hook and output. Angular profiling turns on Angular's own track there. `),I(),A(14,LA,2,0,`p`,9)(15,RA,1,1,`app-angular-unavailable`,21)}if(e&2){let e=W();D(3),P(`disabled`,!e.canShowViews()),k(`aria-pressed`,e.views().flash),D(3),P(`disabled`,!e.canShowViews()),k(`aria-pressed`,e.views().track),D(3),P(`disabled`,!e.canShowViews()||e.views().angularProfiling||!e.views().angularProfilingAvailable),k(`aria-pressed`,e.views().angularProfiling),D(5),j(e.views().angularProfiling?14:e.views().angularProfilingAvailable?-1:15)}}function BA(e,t){if(e&1&&(F(0,`p`,9),K(1),I()),e&2){let e=t.$implicit;D(),q(e)}}function VA(e,t){if(e&1&&(F(0,`p`,24),K(1),I()),e&2){let e=W(2);D(),J(` `,e.range()?`The picked cycles have no timed spans, so there is no flame graph for them.`:`This recording has no timed spans, so there is no flame graph. A recording from an older version, or a file saved without spans, has none.`,` `)}}function HA(e,t){e&1&&(F(0,`p`,9),K(1,` For picked cycles, totals come from the 10 slowest components each cycle lists. `),I())}function UA(e,t){if(e&1){let e=B();F(0,`h3`),K(1,`Cycles`),I(),F(2,`app-cd-cycle-chart`,22),S_(`rangeChange`,function(t){C(e);let n=W();return x_(n.range,t)||(n.range=t),w(t)}),I(),F(3,`app-cd-flame-graph`,23),H(`pick`,function(t){return C(e),w(W().showComponent.emit(t))}),I(),A(4,VA,2,1,`p`,24),F(5,`h3`),K(6,`Self time by component`),I(),A(7,HA,2,0,`p`,9),F(8,`app-cd-treemap`,25),H(`pick`,function(t){return C(e),w(W().showComponent.emit(t))}),I()}if(e&2){let e=W();D(2),P(`cycles`,e.cycles()),b_(`range`,e.range),D(),P(`cycles`,e.picked())(`names`,e.spanNames())(`scope`,e.scope()),D(),j(e.hasSpans()?-1:4),D(3),j(e.range()?7:-1),D(),P(`stats`,e.stats())(`scope`,e.scope())}}function WA(e,t){if(e&1){let e=B();F(0,`tr`)(1,`td`,16)(2,`button`,31),H(`click`,function(){let t=C(e).$implicit;return w(W(2).showComponent.emit(t.name))}),K(3),I()(),F(4,`td`,32),K(5),I(),F(6,`td`,32),K(7),I(),F(8,`td`,32),K(9),I()()}if(e&2){let e=t.$implicit,n=W(2);D(3),J(` `,e.name,` `),D(2),q(e.checks),D(2),q(n.ms(e.ms)),D(2),q(n.ms(e.maxMs))}}function GA(e,t){e&1&&(F(0,`tr`)(1,`td`,33),K(2,`No component time in the picked cycles.`),I()())}function KA(e,t){if(e&1){let e=B();F(0,`tr`)(1,`td`,16)(2,`button`,31),H(`click`,function(){let t=C(e).$implicit;return w(W(2).showComponent.emit(t.name))}),K(3),I()(),F(4,`td`,32),K(5),I(),F(6,`td`,32),K(7),I(),F(8,`td`,32),K(9),I()()}if(e&2){let e=t.$implicit,n=W(2);D(3),J(` `,e.name,` `),D(2),q(e.checks),D(2),q(e.cycles),D(2),q(n.ms(e.ms))}}function qA(e,t){e&1&&(F(0,`tr`)(1,`td`,33),K(2,`No component checks in the picked cycles.`),I()())}function JA(e,t){if(e&1&&(F(0,`span`,35),K(1,`from `),F(2,`span`,16),K(3),I()()),e&2){let e=W(3);D(3),q(e.causeText(t))}}function YA(e,t){if(e&1&&(F(0,`span`,35),K(1,`after `),F(2,`span`,16),K(3),I()()),e&2){let e=W().$implicit;D(3),q(e.trigger)}}function XA(e,t){if(e&1&&(F(0,`span`,36),K(1),I()),e&2){let e=W().$implicit;D(),J(``,e.unchanged,` changed nothing`)}}function ZA(e,t){if(e&1&&(F(0,`span`,36),K(1),I()),e&2){let e=W().$implicit,t=W(2);D(),J(`hooks `,t.ms(e.hookMs))}}function QA(e,t){if(e&1&&(F(0,`span`,36),K(1),I()),e&2){let e=W().$implicit,t=W(2);D(),J(`afterRender `,t.ms(e.afterRenderMs))}}function $A(e,t){if(e&1&&(F(0,`span`,37),K(1,` slowest `),F(2,`span`,16),K(3),I(),K(4),I()),e&2){let e=t,n=W(3);D(3),q(e.name),D(),J(` `,n.ms(e.ms),` `)}}function ej(e,t){if(e&1&&(F(0,`li`)(1,`span`,34),K(2),I(),F(3,`span`,16),K(4),I(),F(5,`span`),K(6),I(),A(7,JA,4,1,`span`,35)(8,YA,4,1,`span`,35),A(9,XA,2,1,`span`,36),A(10,ZA,2,1,`span`,36),A(11,QA,2,1,`span`,36),A(12,$A,5,2,`span`,37),I()),e&2){let e,n,r=t.$implicit,i=W(2);D(2),q(i.clock(r.at)),D(2),q(i.ms(r.ms)),D(2),v_(` `,r.checks,` `,r.checks===1?`check`:`checks`,`, `,r.passes,` `,r.passes===1?`pass`:`passes`,` `),D(),j((e=r.cause)?7:r.trigger?8:-1,e),D(2),j(r.unchanged?9:-1),D(),j(r.hookMs?10:-1),D(),j(r.afterRenderMs?11:-1),D(),j((n=r.components[0])?12:-1,n)}}function tj(e,t){if(e&1&&(F(0,`div`,26)(1,`div`)(2,`h3`),K(3),I(),F(4,`table`)(5,`thead`)(6,`tr`)(7,`th`,27),K(8,`Component`),I(),F(9,`th`,28),K(10,`Checks`),I(),F(11,`th`,28),K(12,`Self time`),I(),F(13,`th`,28),K(14,`Slowest`),I()()(),F(15,`tbody`),M(16,WA,10,4,`tr`,null,Jh,!1,GA,3,0,`tr`),I()(),F(19,`h3`),K(20),I(),F(21,`table`)(22,`thead`)(23,`tr`)(24,`th`,27),K(25,`Component`),I(),F(26,`th`,28),K(27,`Checks`),I(),F(28,`th`,28),K(29,`Cycles`),I(),F(30,`th`,28),K(31,`Self time`),I()()(),F(32,`tbody`),M(33,KA,10,4,`tr`,null,Jh,!1,qA,3,0,`tr`),I()(),F(36,`p`,7),K(37,` Select a component name to show its most checked instance in the tree. `),I()(),F(38,`div`)(39,`h3`),K(40,`Latest cycles`),I(),F(41,`ol`,29),M(42,ej,13,11,`li`,null,OA),I()()(),L(44,`app-cd-timing`,30)(45,`app-cd-diagnosis`,30)),e&2){let e=W();D(3),J(` `,e.range()?`Slowest components in the picked cycles`:`Slowest components`,` `),D(13),N(e.slowest()),D(4),J(` `,e.range()?`Most often checked in the picked cycles`:`Most often checked`,` `),D(13),N(e.busiest()),D(9),N(e.latest()),D(2),P(`page`,e.page()),D(),P(`page`,e.page())}}function nj(e,t){e&1&&(F(0,`p`,10),K(1,`Use the app. Cycles show up here as Angular runs change detection.`),I())}var rj=3e3,ij=10,aj=class e{livePage=$(null,{alias:`page`});pageId=$(null);rpc=$(null);native=$(!1);angularPages=uD(()=>this.rpc());angularPage=X(()=>dD(this.angularPages(),this.pageId()));attachPending=X(()=>this.angularPage()?.capabilities.profiler===!0);showComponent=Q_();range=E(null);imported=E(null);page=X(()=>this.imported()?.page??this.livePage());views=Q(()=>this.livePage()?.options??{flash:!1,track:!1,angularProfiling:!1,angularProfilingAvailable:!0});canShowViews=X(()=>!!this.pageId()&&this.livePage()?.supported!==!1);message=E(``);announcement=E(``);recording=X(()=>this.page()?.recording===!0);cycles=X(()=>this.page()?.cycles??[]);maxCycles=X(()=>NT(this.rpc()).limits.cdCycles);picked=X(()=>ZO(this.cycles(),this.range()));hasSpans=X(()=>this.picked().some(e=>e.spans?.length));spanNames=X(()=>this.page()?.spanNames??[]);stats=X(()=>this.range()?QO(this.picked()):[...this.page()?.components??[]].sort((e,t)=>t.ms-e.ms));scope=X(()=>{let e=this.range()?this.picked():[];return e.length?e.length===1?`cycle ${e[0].id}`:`cycles ${e[0].id} to ${e.at(-1).id}`:`the recording`});slowest=X(()=>this.stats().slice(0,ij));busiest=X(()=>[...this.stats()].sort((e,t)=>t.checks-e.checks).slice(0,ij));latest=X(()=>this.cycles().slice(-30).reverse());capNotes=X(()=>{let e=this.page()?.droppedClasses??0,t=this.page()?.droppedHosts??0,n=[];return e>0&&n.push(`${e} more component ${e===1?`class was`:`classes were`} checked than a recording keeps, so ${e===1?`it is`:`they are`} left out of these totals.`),t>0&&n.push(`${t} component ${t===1?`instance was`:`instances were`} checked past the 2000 a recording counts, so ${t===1?`its tree row shows`:`their tree rows show`} no check count.`),n});status=X(()=>{if(this.message())return this.message();let e=this.cycles().length;return this.imported()?`${e} ${e===1?`cycle`:`cycles`} imported.`:this.recording()?`Recording. ${e} ${e===1?`cycle`:`cycles`} so far.`:e?`${e} ${e===1?`cycle`:`cycles`} recorded.`:``});ms(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}clock(e){return GE(e)}causeText(e){return MO(e)}confirming=E(null);confirmTimer;constructor(){ac(()=>{let e=this.confirming();e!==null&&this.livePage()?.recording===!0===e&&Z(()=>this.confirmed(e))}),S(vs).onDestroy(()=>clearTimeout(this.confirmTimer))}confirmed(e){clearTimeout(this.confirmTimer),this.confirming.set(null),this.message.set(``);let t=this.livePage()?.cycles.length??0;this.announce(e?`Recording started.`:`Recording stopped. ${t} ${t===1?`cycle`:`cycles`} recorded.`)}unconfirmed(e){let t=`The page did not confirm that the recording ${e?`started`:`stopped`}. The tab may be in the background, closed or reloading.`;this.message.set(t),this.announce(t)}async toggle(){let e=!this.recording();clearTimeout(this.confirmTimer),this.confirming.set(null),await this.send({on:e},e?`Starting…`:`Stopping…`,()=>``,`request-change-detection-record`,{quiet:!0,keepPending:!0})&&(this.confirming.set(e),this.confirmTimer=setTimeout(()=>{this.confirming()===e&&this.unconfirmed(e)},rj))}showImport(e){this.message.set(``),this.range.set(null),this.imported.set(e);let t=e.page.cycles.length;this.announce(`Imported ${e.fileName}: ${t} ${t===1?`cycle`:`cycles`}. Showing the imported recording.`)}closeImport(){this.imported.set(null),this.range.set(null),this.announce(`Showing the live recording.`)}async clear(){this.range.set(null),await this.send({clear:!0},``,()=>`Cleared the recorded cycles.`)}async setView(e,t){let n=this.views();this.views.set({...n,[e]:t});let r={flash:t?`Flash checks on.`:`Flash checks off.`,track:t?`Performance track on. Record in the Chrome Performance panel to see it.`:`Performance track off.`,angularProfiling:`Angular profiling on. It stays on until the page reloads.`}[e];await this.send({[e]:t},``,()=>r,`request-change-detection-options`)||this.views.set(n)}async send(e,t,n,r=`request-change-detection-record`,{quiet:i=!1,keepPending:a=!1}={}){this.message.set(t);try{if(!this.rpc())throw Error(`no client`);return await _T(this.rpc(),r,{pageId:this.pageId(),...e}),a||this.message.set(``),i||this.announce(n()),!0}catch{let e=`Could not reach the page.`;return this.message.set(e),this.announce(e),!1}}announce(e){this.announcement.update(t=>t===e?`${e} `:e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-cd-recording`]],inputs:{livePage:[1,`page`,`livePage`],pageId:[1,`pageId`],rpc:[1,`rpc`],native:[1,`native`]},outputs:{showComponent:`showComponent`},decls:23,vars:13,consts:[[`aria-labelledby`,`cd-heading`,1,`cd`],[1,`cd-head`],[`id`,`cd-heading`],[3,`imported`,`page`,`maxCycles`],[1,`status`],[`role`,`status`,1,`sr-only`],[1,`imported`],[1,`hint`],[`what`,`cycles`,`limit`,`cdCycles`,3,`dropped`,`max`],[1,`note`],[1,`empty`],[`type`,`button`,3,`click`,`disabled`],[`aria-hidden`,`true`,1,`dot`],[`type`,`button`],[`type`,`button`,3,`click`],[1,`badge`],[1,`mono`],[`capability`,`profiler`,`missing`,``,`compact`,``,3,`page`],[`role`,`group`,`aria-labelledby`,`cd-views-label`,1,`views`],[`id`,`cd-views-label`,1,`views-label`],[`type`,`button`,1,`view`,3,`click`,`disabled`],[`capability`,`angularProfiling`,`missing`,``,`compact`,``,3,`page`],[3,`rangeChange`,`cycles`,`range`],[3,`pick`,`cycles`,`names`,`scope`],[1,`spans-note`],[3,`pick`,`stats`,`scope`],[1,`cd-grid`],[`scope`,`col`],[`scope`,`col`,1,`num`],[`aria-label`,`Latest change detection cycles, newest first`,1,`cycles`],[3,`page`],[`type`,`button`,1,`name-link`,3,`click`],[1,`num`],[`colspan`,`4`],[1,`when`],[1,`trigger`],[1,`timing`],[1,`top`]],template:function(e,t){if(e&1&&(F(0,`section`,0)(1,`div`,1)(2,`h2`,2),K(3,`Change detection`),I(),A(4,AA,4,5),F(5,`app-cd-transfer`,3),H(`imported`,function(e){return t.showImport(e)}),I(),F(6,`p`,4),K(7),I(),F(8,`p`,5),K(9),I()(),A(10,jA,7,1,`p`,6),F(11,`p`,7),K(12,` Records each change detection cycle with Angular's profiler: how long it took, how many components it checked, what started it and which checks changed nothing. Tree rows show how often each instance was checked. Times come from a development build. While it records, the page also wraps Angular's scheduler, adds a signal write hook and watches DOM updates; all of it stops with the recording. `),A(13,MA,1,0)(14,NA,1,0),I(),A(15,IA,2,1),A(16,zA,16,7),L(17,`app-limit-note`,8),M(18,BA,2,1,`p`,9,Yh),A(20,UA,9,9),A(21,tj,46,6)(22,nj,2,0,`p`,10),I()),e&2){let e;D(4),j(t.imported()?-1:4),D(),P(`page`,t.page())(`maxCycles`,t.maxCycles()),D(2),q(t.status()),D(2),q(t.announcement()),D(),j((e=t.imported())?10:-1,e),D(3),j(t.native()?13:14),D(2),j(t.page()?.supported===!1?15:-1),D(),j(!t.imported()&&!t.native()?16:-1),D(),P(`dropped`,t.page()?.dropped??0)(`max`,t.maxCycles()),D(),N(t.capNotes()),D(2),j(t.cycles().length?20:-1),D(),j(t.page()?.components?.length?21:t.recording()?22:-1)}},dependencies:[hD,eO,pA,Tk,gA,Vk,nA,DA],styles:[`[_nghost-%COMP%] { +}`]})},OA=(e,t)=>t.id;function kA(e,t){if(e&1){let e=B();F(0,`button`,14),H(`click`,function(){return S(e),C(W(2).clear())}),K(1,`Clear`),I()}}function AA(e,t){if(e&1){let e=B();F(0,`button`,11),H(`click`,function(){return S(e),C(W().toggle())}),L(1,`span`,12),K(2),I(),A(3,kA,2,0,`button`,13)}if(e&2){let e=W();G(`on`,e.recording()),P(`disabled`,!e.pageId()),D(2),J(` `,e.recording()?`Stop recording`:`Record`,` `),D(),j(e.cycles().length?3:-1)}}function jA(e,t){if(e&1){let e=B();F(0,`p`,6)(1,`span`,15),K(2,`Imported recording`),I(),F(3,`span`,16),K(4),I(),F(5,`button`,14),H(`click`,function(){return S(e),C(W().closeImport())}),K(6,`Back to live recording`),I()()}e&2&&(D(4),q(t.fileName))}function MA(e,t){e&1&&K(0,` An app on a device has no DOM, so checks that changed nothing are not counted there. `)}function NA(e,t){e&1&&K(0,` A recording keeps running when the tab reloads, so it catches the next start of the app. The cycles from before the reload are gone with the old page. `)}function PA(e,t){e&1&&(F(0,`p`,9),K(1,` The page has Angular's profiler hook, but the recording could not attach to it yet. The page tries again on its next update while recording is on. If this stays, stop and start the recording, or reload the page. `),I())}function FA(e,t){e&1&&L(0,`app-angular-unavailable`,17),e&2&&P(`page`,W(2).angularPage())}function IA(e,t){e&1&&A(0,PA,2,0,`p`,9)(1,FA,1,1,`app-angular-unavailable`,17),e&2&&j(+!W().attachPending())}function LA(e,t){e&1&&(F(0,`p`,9),K(1,`Angular profiling stays on until the page reloads.`),I())}function RA(e,t){e&1&&L(0,`app-angular-unavailable`,21),e&2&&P(`page`,W(2).angularPage())}function zA(e,t){if(e&1){let e=B();F(0,`div`,18)(1,`span`,19),K(2,`Live views`),I(),F(3,`button`,20),H(`click`,function(){S(e);let t=W();return C(t.setView(`flash`,!t.views().flash))}),L(4,`span`,12),K(5,` Flash checks `),I(),F(6,`button`,20),H(`click`,function(){S(e);let t=W();return C(t.setView(`track`,!t.views().track))}),L(7,`span`,12),K(8,` Performance track `),I(),F(9,`button`,20),H(`click`,function(){return S(e),C(W().setView(`angularProfiling`,!0))}),L(10,`span`,12),K(11,` Angular profiling `),I()(),F(12,`p`,7),K(13,` Flash checks draws a box over each component on the page as Angular checks it, with its name and how often it was checked, fading over a second. Performance track adds a Pangular track to the Chrome Performance panel with every component check, hook and output. Angular profiling turns on Angular's own track there. `),I(),A(14,LA,2,0,`p`,9)(15,RA,1,1,`app-angular-unavailable`,21)}if(e&2){let e=W();D(3),P(`disabled`,!e.canShowViews()),k(`aria-pressed`,e.views().flash),D(3),P(`disabled`,!e.canShowViews()),k(`aria-pressed`,e.views().track),D(3),P(`disabled`,!e.canShowViews()||e.views().angularProfiling||!e.views().angularProfilingAvailable),k(`aria-pressed`,e.views().angularProfiling),D(5),j(e.views().angularProfiling?14:e.views().angularProfilingAvailable?-1:15)}}function BA(e,t){if(e&1&&(F(0,`p`,9),K(1),I()),e&2){let e=t.$implicit;D(),q(e)}}function VA(e,t){if(e&1&&(F(0,`p`,24),K(1),I()),e&2){let e=W(2);D(),J(` `,e.range()?`The picked cycles have no timed spans, so there is no flame graph for them.`:`This recording has no timed spans, so there is no flame graph. A recording from an older version, or a file saved without spans, has none.`,` `)}}function HA(e,t){e&1&&(F(0,`p`,9),K(1,` For picked cycles, totals come from the 10 slowest components each cycle lists. `),I())}function UA(e,t){if(e&1){let e=B();F(0,`h3`),K(1,`Cycles`),I(),F(2,`app-cd-cycle-chart`,22),A_(`rangeChange`,function(t){S(e);let n=W();return k_(n.range,t)||(n.range=t),C(t)}),I(),F(3,`app-cd-flame-graph`,23),H(`pick`,function(t){return S(e),C(W().showComponent.emit(t))}),I(),A(4,VA,2,1,`p`,24),F(5,`h3`),K(6,`Self time by component`),I(),A(7,HA,2,0,`p`,9),F(8,`app-cd-treemap`,25),H(`pick`,function(t){return S(e),C(W().showComponent.emit(t))}),I()}if(e&2){let e=W();D(2),P(`cycles`,e.cycles()),O_(`range`,e.range),D(),P(`cycles`,e.picked())(`names`,e.spanNames())(`scope`,e.scope()),D(),j(e.hasSpans()?-1:4),D(3),j(e.range()?7:-1),D(),P(`stats`,e.stats())(`scope`,e.scope())}}function WA(e,t){if(e&1){let e=B();F(0,`tr`)(1,`td`,16)(2,`button`,31),H(`click`,function(){let t=S(e).$implicit;return C(W(2).showComponent.emit(t.name))}),K(3),I()(),F(4,`td`,32),K(5),I(),F(6,`td`,32),K(7),I(),F(8,`td`,32),K(9),I()()}if(e&2){let e=t.$implicit,n=W(2);D(3),J(` `,e.name,` `),D(2),q(e.checks),D(2),q(n.ms(e.ms)),D(2),q(n.ms(e.maxMs))}}function GA(e,t){e&1&&(F(0,`tr`)(1,`td`,33),K(2,`No component time in the picked cycles.`),I()())}function KA(e,t){if(e&1){let e=B();F(0,`tr`)(1,`td`,16)(2,`button`,31),H(`click`,function(){let t=S(e).$implicit;return C(W(2).showComponent.emit(t.name))}),K(3),I()(),F(4,`td`,32),K(5),I(),F(6,`td`,32),K(7),I(),F(8,`td`,32),K(9),I()()}if(e&2){let e=t.$implicit,n=W(2);D(3),J(` `,e.name,` `),D(2),q(e.checks),D(2),q(e.cycles),D(2),q(n.ms(e.ms))}}function qA(e,t){e&1&&(F(0,`tr`)(1,`td`,33),K(2,`No component checks in the picked cycles.`),I()())}function JA(e,t){if(e&1&&(F(0,`span`,35),K(1,`from `),F(2,`span`,16),K(3),I()()),e&2){let e=W(3);D(3),q(e.causeText(t))}}function YA(e,t){if(e&1&&(F(0,`span`,35),K(1,`after `),F(2,`span`,16),K(3),I()()),e&2){let e=W().$implicit;D(3),q(e.trigger)}}function XA(e,t){if(e&1&&(F(0,`span`,36),K(1),I()),e&2){let e=W().$implicit;D(),J(``,e.unchanged,` changed nothing`)}}function ZA(e,t){if(e&1&&(F(0,`span`,36),K(1),I()),e&2){let e=W().$implicit,t=W(2);D(),J(`hooks `,t.ms(e.hookMs))}}function QA(e,t){if(e&1&&(F(0,`span`,36),K(1),I()),e&2){let e=W().$implicit,t=W(2);D(),J(`afterRender `,t.ms(e.afterRenderMs))}}function $A(e,t){if(e&1&&(F(0,`span`,37),K(1,` slowest `),F(2,`span`,16),K(3),I(),K(4),I()),e&2){let e=t,n=W(3);D(3),q(e.name),D(),J(` `,n.ms(e.ms),` `)}}function ej(e,t){if(e&1&&(F(0,`li`)(1,`span`,34),K(2),I(),F(3,`span`,16),K(4),I(),F(5,`span`),K(6),I(),A(7,JA,4,1,`span`,35)(8,YA,4,1,`span`,35),A(9,XA,2,1,`span`,36),A(10,ZA,2,1,`span`,36),A(11,QA,2,1,`span`,36),A(12,$A,5,2,`span`,37),I()),e&2){let e,n,r=t.$implicit,i=W(2);D(2),q(i.clock(r.at)),D(2),q(i.ms(r.ms)),D(2),E_(` `,r.checks,` `,r.checks===1?`check`:`checks`,`, `,r.passes,` `,r.passes===1?`pass`:`passes`,` `),D(),j((e=r.cause)?7:r.trigger?8:-1,e),D(2),j(r.unchanged?9:-1),D(),j(r.hookMs?10:-1),D(),j(r.afterRenderMs?11:-1),D(),j((n=r.components[0])?12:-1,n)}}function tj(e,t){if(e&1&&(F(0,`div`,26)(1,`div`)(2,`h3`),K(3),I(),F(4,`table`)(5,`thead`)(6,`tr`)(7,`th`,27),K(8,`Component`),I(),F(9,`th`,28),K(10,`Checks`),I(),F(11,`th`,28),K(12,`Self time`),I(),F(13,`th`,28),K(14,`Slowest`),I()()(),F(15,`tbody`),M(16,WA,10,4,`tr`,null,Zh,!1,GA,3,0,`tr`),I()(),F(19,`h3`),K(20),I(),F(21,`table`)(22,`thead`)(23,`tr`)(24,`th`,27),K(25,`Component`),I(),F(26,`th`,28),K(27,`Checks`),I(),F(28,`th`,28),K(29,`Cycles`),I(),F(30,`th`,28),K(31,`Self time`),I()()(),F(32,`tbody`),M(33,KA,10,4,`tr`,null,Zh,!1,qA,3,0,`tr`),I()(),F(36,`p`,7),K(37,` Select a component name to show its most checked instance in the tree. `),I()(),F(38,`div`)(39,`h3`),K(40,`Latest cycles`),I(),F(41,`ol`,29),M(42,ej,13,11,`li`,null,OA),I()()(),L(44,`app-cd-timing`,30)(45,`app-cd-diagnosis`,30)),e&2){let e=W();D(3),J(` `,e.range()?`Slowest components in the picked cycles`:`Slowest components`,` `),D(13),N(e.slowest()),D(4),J(` `,e.range()?`Most often checked in the picked cycles`:`Most often checked`,` `),D(13),N(e.busiest()),D(9),N(e.latest()),D(2),P(`page`,e.page()),D(),P(`page`,e.page())}}function nj(e,t){e&1&&(F(0,`p`,10),K(1,`Use the app. Cycles show up here as Angular runs change detection.`),I())}var rj=3e3,ij=10,aj=class e{livePage=$(null,{alias:`page`});pageId=$(null);rpc=$(null);native=$(!1);angularPages=uD(()=>this.rpc());angularPage=X(()=>dD(this.angularPages(),this.pageId()));attachPending=X(()=>this.angularPage()?.capabilities.profiler===!0);showComponent=ov();range=T(null);imported=T(null);page=X(()=>this.imported()?.page??this.livePage());views=Q(()=>this.livePage()?.options??{flash:!1,track:!1,angularProfiling:!1,angularProfilingAvailable:!0});canShowViews=X(()=>!!this.pageId()&&this.livePage()?.supported!==!1);message=T(``);announcement=T(``);recording=X(()=>this.page()?.recording===!0);cycles=X(()=>this.page()?.cycles??[]);maxCycles=X(()=>NT(this.rpc()).limits.cdCycles);picked=X(()=>ZO(this.cycles(),this.range()));hasSpans=X(()=>this.picked().some(e=>e.spans?.length));spanNames=X(()=>this.page()?.spanNames??[]);stats=X(()=>this.range()?QO(this.picked()):[...this.page()?.components??[]].sort((e,t)=>t.ms-e.ms));scope=X(()=>{let e=this.range()?this.picked():[];return e.length?e.length===1?`cycle ${e[0].id}`:`cycles ${e[0].id} to ${e.at(-1).id}`:`the recording`});slowest=X(()=>this.stats().slice(0,ij));busiest=X(()=>[...this.stats()].sort((e,t)=>t.checks-e.checks).slice(0,ij));latest=X(()=>this.cycles().slice(-30).reverse());capNotes=X(()=>{let e=this.page()?.droppedClasses??0,t=this.page()?.droppedHosts??0,n=[];return e>0&&n.push(`${e} more component ${e===1?`class was`:`classes were`} checked than a recording keeps, so ${e===1?`it is`:`they are`} left out of these totals.`),t>0&&n.push(`${t} component ${t===1?`instance was`:`instances were`} checked past the 2000 a recording counts, so ${t===1?`its tree row shows`:`their tree rows show`} no check count.`),n});status=X(()=>{if(this.message())return this.message();let e=this.cycles().length;return this.imported()?`${e} ${e===1?`cycle`:`cycles`} imported.`:this.recording()?`Recording. ${e} ${e===1?`cycle`:`cycles`} so far.`:e?`${e} ${e===1?`cycle`:`cycles`} recorded.`:``});ms(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}clock(e){return GE(e)}causeText(e){return MO(e)}confirming=T(null);confirmTimer;constructor(){E(()=>{let e=this.confirming();e!==null&&this.livePage()?.recording===!0===e&&Z(()=>this.confirmed(e))}),x(vs).onDestroy(()=>clearTimeout(this.confirmTimer))}confirmed(e){clearTimeout(this.confirmTimer),this.confirming.set(null),this.message.set(``);let t=this.livePage()?.cycles.length??0;this.announce(e?`Recording started.`:`Recording stopped. ${t} ${t===1?`cycle`:`cycles`} recorded.`)}unconfirmed(e){let t=`The page did not confirm that the recording ${e?`started`:`stopped`}. The tab may be in the background, closed or reloading.`;this.message.set(t),this.announce(t)}async toggle(){let e=!this.recording();clearTimeout(this.confirmTimer),this.confirming.set(null),await this.send({on:e},e?`Starting…`:`Stopping…`,()=>``,`request-change-detection-record`,{quiet:!0,keepPending:!0})&&(this.confirming.set(e),this.confirmTimer=setTimeout(()=>{this.confirming()===e&&this.unconfirmed(e)},rj))}showImport(e){this.message.set(``),this.range.set(null),this.imported.set(e);let t=e.page.cycles.length;this.announce(`Imported ${e.fileName}: ${t} ${t===1?`cycle`:`cycles`}. Showing the imported recording.`)}closeImport(){this.imported.set(null),this.range.set(null),this.announce(`Showing the live recording.`)}async clear(){this.range.set(null),await this.send({clear:!0},``,()=>`Cleared the recorded cycles.`)}async setView(e,t){let n=this.views();this.views.set({...n,[e]:t});let r={flash:t?`Flash checks on.`:`Flash checks off.`,track:t?`Performance track on. Record in the Chrome Performance panel to see it.`:`Performance track off.`,angularProfiling:`Angular profiling on. It stays on until the page reloads.`}[e];await this.send({[e]:t},``,()=>r,`request-change-detection-options`)||this.views.set(n)}async send(e,t,n,r=`request-change-detection-record`,{quiet:i=!1,keepPending:a=!1}={}){this.message.set(t);try{if(!this.rpc())throw Error(`no client`);return await _T(this.rpc(),r,{pageId:this.pageId(),...e}),a||this.message.set(``),i||this.announce(n()),!0}catch{let e=`Could not reach the page.`;return this.message.set(e),this.announce(e),!1}}announce(e){this.announcement.update(t=>t===e?`${e} `:e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-cd-recording`]],inputs:{livePage:[1,`page`,`livePage`],pageId:[1,`pageId`],rpc:[1,`rpc`],native:[1,`native`]},outputs:{showComponent:`showComponent`},decls:23,vars:13,consts:[[`aria-labelledby`,`cd-heading`,1,`cd`],[1,`cd-head`],[`id`,`cd-heading`],[3,`imported`,`page`,`maxCycles`],[1,`status`],[`role`,`status`,1,`sr-only`],[1,`imported`],[1,`hint`],[`what`,`cycles`,`limit`,`cdCycles`,3,`dropped`,`max`],[1,`note`],[1,`empty`],[`type`,`button`,3,`click`,`disabled`],[`aria-hidden`,`true`,1,`dot`],[`type`,`button`],[`type`,`button`,3,`click`],[1,`badge`],[1,`mono`],[`capability`,`profiler`,`missing`,``,`compact`,``,3,`page`],[`role`,`group`,`aria-labelledby`,`cd-views-label`,1,`views`],[`id`,`cd-views-label`,1,`views-label`],[`type`,`button`,1,`view`,3,`click`,`disabled`],[`capability`,`angularProfiling`,`missing`,``,`compact`,``,3,`page`],[3,`rangeChange`,`cycles`,`range`],[3,`pick`,`cycles`,`names`,`scope`],[1,`spans-note`],[3,`pick`,`stats`,`scope`],[1,`cd-grid`],[`scope`,`col`],[`scope`,`col`,1,`num`],[`aria-label`,`Latest change detection cycles, newest first`,1,`cycles`],[3,`page`],[`type`,`button`,1,`name-link`,3,`click`],[1,`num`],[`colspan`,`4`],[1,`when`],[1,`trigger`],[1,`timing`],[1,`top`]],template:function(e,t){if(e&1&&(F(0,`section`,0)(1,`div`,1)(2,`h2`,2),K(3,`Change detection`),I(),A(4,AA,4,5),F(5,`app-cd-transfer`,3),H(`imported`,function(e){return t.showImport(e)}),I(),F(6,`p`,4),K(7),I(),F(8,`p`,5),K(9),I()(),A(10,jA,7,1,`p`,6),F(11,`p`,7),K(12,` Records each change detection cycle with Angular's profiler: how long it took, how many components it checked, what started it and which checks changed nothing. Tree rows show how often each instance was checked. Times come from a development build. While it records, the page also wraps Angular's scheduler, adds a signal write hook and watches DOM updates; all of it stops with the recording. `),A(13,MA,1,0)(14,NA,1,0),I(),A(15,IA,2,1),A(16,zA,16,7),L(17,`app-limit-note`,8),M(18,BA,2,1,`p`,9,Qh),A(20,UA,9,9),A(21,tj,46,6)(22,nj,2,0,`p`,10),I()),e&2){let e;D(4),j(t.imported()?-1:4),D(),P(`page`,t.page())(`maxCycles`,t.maxCycles()),D(2),q(t.status()),D(2),q(t.announcement()),D(),j((e=t.imported())?10:-1,e),D(3),j(t.native()?13:14),D(2),j(t.page()?.supported===!1?15:-1),D(),j(!t.imported()&&!t.native()?16:-1),D(),P(`dropped`,t.page()?.dropped??0)(`max`,t.maxCycles()),D(),N(t.capNotes()),D(2),j(t.cycles().length?20:-1),D(),j(t.page()?.components?.length?21:t.recording()?22:-1)}},dependencies:[hD,eO,pA,Tk,gA,Vk,nA,DA],styles:[`[_nghost-%COMP%] { display: block; margin-top: 16px; } @@ -1946,7 +1946,7 @@ td.mono[_ngcontent-%COMP%] { .trigger[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%], .top[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%] { overflow-wrap: anywhere; -}`]})};function oj(e){return Object.fromEntries(e.map(e=>[e.name,e.value??null]))}function sj(e){return e.map(e=>({name:e.name,listened:!!e.listened}))}function cj(e){let t={component:e.name,tag:e.tag,hostPath:e.path};e.selector&&(t.selector=e.selector),e.source&&(t.source=e.source),e.changeDetection&&(t.changeDetection=e.changeDetection),e.encapsulation&&(t.encapsulation=e.encapsulation),t.inputs=oj(e.inputs),t.outputs=sj(e.outputs),t.properties=oj(e.properties??[]),e.listeners.length&&(t.listeners=e.listeners),e.directives.length&&(t.directives=e.directives.map(e=>({name:e.name,inputs:oj(e.inputs),outputs:sj(e.outputs)}))),t.injected=e.dependencies.map(e=>({token:e.token,providedBy:e.providedBy?e.providedByName??`an injector`:null}));try{return JSON.stringify(t,null,2)}catch{return JSON.stringify({component:e.name,tag:e.tag,hostPath:e.path})}}function lj(e){return e.selector||e.path}var uj=1e3;function dj(e,t){let n=[];for(let[r,i]of t){let t=e.get(r);t!==void 0&&t!==i&&n.push(r)}return n}function fj(e){try{return JSON.stringify(e)??`undefined`}catch{return String(e)}}var pj=class{ms;changed=E(new Set);owner=null;last=new Map;timers=new Map;constructor(e=uj){this.ms=e}update(e,t){let n=new Map([...t].map(([e,t])=>[e,fj(t)]));if(e!==this.owner){this.clear(),this.owner=e,this.last=n;return}let r=dj(this.last,n);if(this.last=n,r.length){this.changed.update(e=>new Set([...e,...r]));for(let e of r)clearTimeout(this.timers.get(e)),this.timers.set(e,setTimeout(()=>{this.timers.delete(e),this.changed.update(t=>{let n=new Set(t);return n.delete(e),n})},this.ms))}}clear(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),this.changed().size&&this.changed.set(new Set)}};function mj(e,t,n=0){return e===`directive`?`directive:${n}:${t}`:`${e}:${t}`}var hj=[`*`];function gj(e,t){e&1&&K(0),e&2&&q(W(2).label())}function _j(e,t){e&1&&Tg(0,0,null,gj,1,1)}function vj(e,t){if(e&1&&(F(0,`span`,4),K(1),I()),e&2){let e=W(2);D(),q(e.message())}}function yj(e,t){if(e&1){let e=B();F(0,`button`,2),H(`click`,function(){return C(e),w(W().open())}),ug(1,3),I(),A(2,vj,2,1,`span`,4)}if(e&2){let e=W(),t=kg(1);P(`title`,`Open `+e.label()+` in your editor`),k(`aria-label`,`Open `+e.label()+` in your editor`),D(),P(`ngTemplateOutlet`,t),D(),j(e.message()?2:-1)}}function bj(e,t){if(e&1&&(F(0,`span`,1),ug(1,3),I()),e&2){let e=W(),t=kg(1);P(`title`,e.label()),D(),P(`ngTemplateOutlet`,t)}}var xj=class e{source=E(E(null));client=X(()=>this.source()());available=X(()=>{let e=this.client();return!!e&&!yT(e)});use(e){this.source.set(e)}async open(e,t){if(!this.available())return{ok:!1,error:`No server is connected.`};try{let n=await _T(this.client(),`open-in-editor`,{file:e,...t?{line:t}:{}});return n?.ok?{ok:!0}:{ok:!1,error:n?.error??`The server did not open it.`}}catch{return{ok:!1,error:`The server did not open it.`}}}static ɵfac=function(t){return new(t||e)};static ɵprov=El({token:e,factory:e.ɵfac})};function Sj(e,t){return t?`${e}:${t}`:e}var Cj=class e{editor=S(xj);file=$.required();line=$(void 0);label=X(()=>Sj(this.file(),this.line()));message=E(``);async open(){this.message.set(``);let e=await this.editor.open(this.file(),this.line()??void 0);e.ok||this.message.set(`Not opened: ${e.error}`)}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-source-link`]],inputs:{file:[1,`file`],line:[1,`line`]},ngContentSelectors:hj,decls:4,vars:1,consts:[[`text`,``],[1,`source-text`,3,`title`],[`type`,`button`,1,`source-link`,3,`click`,`title`],[3,`ngTemplateOutlet`],[`role`,`alert`,1,`message`]],template:function(e,t){e&1&&(wg(),Eh(0,_j,2,0,`ng-template`,null,0,G_),A(2,yj,3,4)(3,bj,2,2,`span`,1)),e&2&&(D(2),j(t.editor.available()?2:3))},dependencies:[Vv],styles:[`[_nghost-%COMP%] { +}`]})};function oj(e){return Object.fromEntries(e.map(e=>[e.name,e.value??null]))}function sj(e){return e.map(e=>({name:e.name,listened:!!e.listened}))}function cj(e){let t={component:e.name,tag:e.tag,hostPath:e.path};e.selector&&(t.selector=e.selector),e.source&&(t.source=e.source),e.changeDetection&&(t.changeDetection=e.changeDetection),e.encapsulation&&(t.encapsulation=e.encapsulation),t.inputs=oj(e.inputs),t.outputs=sj(e.outputs),t.properties=oj(e.properties??[]),e.listeners.length&&(t.listeners=e.listeners),e.directives.length&&(t.directives=e.directives.map(e=>({name:e.name,inputs:oj(e.inputs),outputs:sj(e.outputs)}))),t.injected=e.dependencies.map(e=>({token:e.token,providedBy:e.providedBy?e.providedByName??`an injector`:null}));try{return JSON.stringify(t,null,2)}catch{return JSON.stringify({component:e.name,tag:e.tag,hostPath:e.path})}}function lj(e){return e.selector||e.path}var uj=1e3;function dj(e,t){let n=[];for(let[r,i]of t){let t=e.get(r);t!==void 0&&t!==i&&n.push(r)}return n}function fj(e){try{return JSON.stringify(e)??`undefined`}catch{return String(e)}}var pj=class{ms;changed=T(new Set);owner=null;last=new Map;timers=new Map;constructor(e=uj){this.ms=e}update(e,t){let n=new Map([...t].map(([e,t])=>[e,fj(t)]));if(e!==this.owner){this.clear(),this.owner=e,this.last=n;return}let r=dj(this.last,n);if(this.last=n,r.length){this.changed.update(e=>new Set([...e,...r]));for(let e of r)clearTimeout(this.timers.get(e)),this.timers.set(e,setTimeout(()=>{this.timers.delete(e),this.changed.update(t=>{let n=new Set(t);return n.delete(e),n})},this.ms))}}clear(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),this.changed().size&&this.changed.set(new Set)}};function mj(e,t,n=0){return e===`directive`?`directive:${n}:${t}`:`${e}:${t}`}var hj=[`*`];function gj(e,t){e&1&&K(0),e&2&&q(W(2).label())}function _j(e,t){e&1&&Og(0,0,null,gj,1,1)}function vj(e,t){if(e&1&&(F(0,`span`,4),K(1),I()),e&2){let e=W(2);D(),q(e.message())}}function yj(e,t){if(e&1){let e=B();F(0,`button`,2),H(`click`,function(){return S(e),C(W().open())}),pg(1,3),I(),A(2,vj,2,1,`span`,4)}if(e&2){let e=W(),t=Mg(1);P(`title`,`Open `+e.label()+` in your editor`),k(`aria-label`,`Open `+e.label()+` in your editor`),D(),P(`ngTemplateOutlet`,t),D(),j(e.message()?2:-1)}}function bj(e,t){if(e&1&&(F(0,`span`,1),pg(1,3),I()),e&2){let e=W(),t=Mg(1);P(`title`,e.label()),D(),P(`ngTemplateOutlet`,t)}}var xj=class e{source=T(T(null));client=X(()=>this.source()());available=X(()=>{let e=this.client();return!!e&&!yT(e)});use(e){this.source.set(e)}async open(e,t){if(!this.available())return{ok:!1,error:`No server is connected.`};try{let n=await _T(this.client(),`open-in-editor`,{file:e,...t?{line:t}:{}});return n?.ok?{ok:!0}:{ok:!1,error:n?.error??`The server did not open it.`}}catch{return{ok:!1,error:`The server did not open it.`}}}static ɵfac=function(t){return new(t||e)};static ɵprov=Tl({token:e,factory:e.ɵfac})};function Sj(e,t){return t?`${e}:${t}`:e}var Cj=class e{editor=x(xj);file=$.required();line=$(void 0);label=X(()=>Sj(this.file(),this.line()));message=T(``);async open(){this.message.set(``);let e=await this.editor.open(this.file(),this.line()??void 0);e.ok||this.message.set(`Not opened: ${e.error}`)}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-source-link`]],inputs:{file:[1,`file`],line:[1,`line`]},ngContentSelectors:hj,decls:4,vars:1,consts:[[`text`,``],[1,`source-text`,3,`title`],[`type`,`button`,1,`source-link`,3,`click`,`title`],[3,`ngTemplateOutlet`],[`role`,`alert`,1,`message`]],template:function(e,t){e&1&&(Dg(),kh(0,_j,2,0,`ng-template`,null,0,$_),A(2,yj,3,4)(3,bj,2,2,`span`,1)),e&2&&(D(2),j(t.editor.available()?2:3))},dependencies:[Yv],styles:[`[_nghost-%COMP%] { display: inline; min-width: 0; } @@ -1981,7 +1981,7 @@ td.mono[_ngcontent-%COMP%] { color: var(--%NS%danger-text); font-family: var(--%NS%font-sans); font-size: 0.92em; -}`]})},wj=[`field`],Tj=[`editButton`],Ej=[`valueBox`];function Dj(e,t){if(e&1){let e=B();R(0,`div`,5)(1,`label`,6),K(2),z(),R(3,`input`,7,0),U(`input`,function(t){return C(e),w(W().draft.set(t.target.value))})(`keydown.enter`,function(t){C(e);let n=W();return t.preventDefault(),w(n.apply())})(`keydown.escape`,function(t){C(e);let n=W();return t.preventDefault(),t.stopPropagation(),w(n.cancel())}),z(),R(5,`button`,8),U(`click`,function(){return C(e),w(W().apply())}),K(6,`Apply`),z(),R(7,`button`,9),U(`click`,function(){return C(e),w(W().cancel())}),K(8,`Cancel`),z()(),R(9,`p`,10),K(10),z()}if(e&2){let e=W();D(),V(`htmlFor`,e.fieldId),D(),J(`New value of `,e.prop().name,`, as JSON`),D(),V(`id`,e.fieldId)(`value`,e.draft())(`readOnly`,e.busy()),k(`aria-busy`,e.busy()?`true`:null)(`aria-invalid`,e.error()?`true`:null)(`aria-describedby`,e.hintId+(e.error()?` `+e.errorId:``)),D(2),V(`disabled`,e.busy()),D(4),V(`id`,e.hintId),D(),J(` JSON, such as "text", 42, true or `,e.objectSample,`. Enter applies, Escape cancels. `)}}function Oj(e,t){if(e&1&&(R(0,`pre`,null,1),K(2),V_(3,`json`),z()),e&2){let e=W(2);k(`tabindex`,e.scrollable()?0:null)(`role`,e.scrollable()?`region`:null)(`aria-label`,e.scrollable()?`Value of `+e.prop().name:null),D(2),q(H_(3,4,e.prop().value))}}function kj(e,t){if(e&1){let e=B();R(0,`button`,14,2),U(`click`,function(){return C(e),w(W(2).start())}),K(2,` Edit `),z()}if(e&2){let e=W(2);V(`disabled`,e.busy()),k(`aria-label`,`Edit `+e.prop().name)}}function Aj(e,t){if(e&1&&(R(0,`p`,13),K(1),z()),e&2){let e=W(2);D(),q(e.prop().locked)}}function jj(e,t){if(e&1&&(R(0,`div`,11),A(1,Oj,4,6,`pre`),A(2,kj,3,2,`button`,12),z(),A(3,Aj,2,1,`p`,13)),e&2){let e=W();D(),j(e.bare()?-1:1),D(),j(e.editable()?2:-1),D(),j(e.writes()&&e.prop().locked?3:-1)}}function Mj(e,t){if(e&1&&(R(0,`p`,3),K(1),z()),e&2){let e=W();V(`id`,e.errorId),D(),q(e.error())}}var Nj=0;function Pj(e){let t=e.trim();if(!t)return{error:`Type a JSON value, such as "text", 42, true, null or [1, 2].`};try{return{value:JSON.parse(t)}}catch{return{error:`Not valid JSON. Put text in double quotes, such as "Paris".`}}}var Fj=class e{prop=$.required();componentId=$.required();pageId=$(null);rpc=$(null);writes=$(!1);bare=$(!1);readDraft=$(null);fieldId=`prop-edit-${++Nj}`;hintId=`${this.fieldId}-hint`;errorId=`${this.fieldId}-error`;objectSample=`{"a": 1}`;editing=E(!1);draft=E(``);busy=E(!1);error=E(``);done=E(``);editable=X(()=>this.writes()&&!!this.prop().edit&&!!this.pageId()&&!!this.rpc());field=av(`field`);editButton=av(`editButton`);valueBox=av(`valueBox`);injector=S(gs);scrollable=E(!1);constructor(){fv(()=>{this.prop();let e=this.valueBox()?.nativeElement;this.scrollable.set(!!e&&e.scrollHeight>e.clientHeight+1)})}async start(){let e=this.prop().value;this.error.set(``),this.done.set(``);let t=this.readDraft();if(t){this.busy.set(!0);let n=await t();if(this.busy.set(!1),n.error!==void 0){this.error.set(n.error);return}e=n.value}this.draft.set(e===void 0?``:JSON.stringify(e)),this.editing.set(!0),ed(()=>{let e=this.field()?.nativeElement;e?.focus(),e?.select()},{injector:this.injector})}cancel(){this.editing()&&(this.editing.set(!1),this.busy.set(!1),this.error.set(``),this.focusEdit())}async apply(){if(this.busy())return;let e=Pj(this.draft());if(`error`in e){this.error.set(e.error);return}let t=this.prop(),n=this.rpc(),r=this.pageId();if(!n||!r||!t.edit)return;this.busy.set(!0),this.error.set(``);let i;try{i=await n.scope(`pangular`).rpc.call(`request-component-edit`,{pageId:r,request:{id:this.componentId(),path:t.prop,value:e.value,kind:t.edit}})??{}}catch{i={error:`The devtools server did not answer. Try again.`}}this.busy.set(!1),this.editing()&&(i.ok?(this.editing.set(!1),this.done.set(`Set ${t.name}.`),this.focusEdit()):(this.error.set(i.error??`The page did not write it.`),this.field()?.nativeElement.focus()))}focusEdit(){ed(()=>this.editButton()?.nativeElement.focus(),{injector:this.injector})}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-prop-value`]],viewQuery:function(e,t){e&1&&Dg(t.field,wj,5)(t.editButton,Tj,5)(t.valueBox,Ej,5),e&2&&Og(3)},inputs:{prop:[1,`prop`],componentId:[1,`componentId`],pageId:[1,`pageId`],rpc:[1,`rpc`],writes:[1,`writes`],bare:[1,`bare`],readDraft:[1,`readDraft`]},decls:5,vars:3,consts:[[`field`,``],[`valueBox`,``],[`editButton`,``],[`role`,`alert`,1,`error`,3,`id`],[`role`,`status`,1,`sr-only`],[1,`editor`],[1,`sr-only`,3,`for`],[`type`,`text`,`autocomplete`,`off`,`spellcheck`,`false`,1,`field`,`mono`,3,`input`,`keydown.enter`,`keydown.escape`,`id`,`value`,`readOnly`],[`type`,`button`,1,`primary`,3,`click`,`disabled`],[`type`,`button`,3,`click`],[1,`hint`,3,`id`],[1,`view`],[`type`,`button`,1,`edit`,3,`disabled`],[1,`locked`],[`type`,`button`,1,`edit`,3,`click`,`disabled`]],template:function(e,t){e&1&&(A(0,Dj,11,11)(1,jj,4,3),A(2,Mj,2,2,`p`,3),R(3,`p`,4),K(4),z()),e&2&&(j(+!t.editing()),D(2),j(t.error()?2:-1),D(2),q(t.done()))},dependencies:[Uv],styles:[`[_nghost-%COMP%] { +}`]})},wj=[`field`],Tj=[`editButton`],Ej=[`valueBox`];function Dj(e,t){if(e&1){let e=B();R(0,`div`,5)(1,`label`,6),K(2),z(),R(3,`input`,7,0),U(`input`,function(t){return S(e),C(W().draft.set(t.target.value))})(`keydown.enter`,function(t){S(e);let n=W();return t.preventDefault(),C(n.apply())})(`keydown.escape`,function(t){S(e);let n=W();return t.preventDefault(),t.stopPropagation(),C(n.cancel())}),z(),R(5,`button`,8),U(`click`,function(){return S(e),C(W().apply())}),K(6,`Apply`),z(),R(7,`button`,9),U(`click`,function(){return S(e),C(W().cancel())}),K(8,`Cancel`),z()(),R(9,`p`,10),K(10),z()}if(e&2){let e=W();D(),V(`htmlFor`,e.fieldId),D(),J(`New value of `,e.prop().name,`, as JSON`),D(),V(`id`,e.fieldId)(`value`,e.draft())(`readOnly`,e.busy()),k(`aria-busy`,e.busy()?`true`:null)(`aria-invalid`,e.error()?`true`:null)(`aria-describedby`,e.hintId+(e.error()?` `+e.errorId:``)),D(2),V(`disabled`,e.busy()),D(4),V(`id`,e.hintId),D(),J(` JSON, such as "text", 42, true or `,e.objectSample,`. Enter applies, Escape cancels. `)}}function Oj(e,t){if(e&1&&(R(0,`pre`,null,1),K(2),Y_(3,`json`),z()),e&2){let e=W(2);k(`tabindex`,e.scrollable()?0:null)(`role`,e.scrollable()?`region`:null)(`aria-label`,e.scrollable()?`Value of `+e.prop().name:null),D(2),q(X_(3,4,e.prop().value))}}function kj(e,t){if(e&1){let e=B();R(0,`button`,14,2),U(`click`,function(){return S(e),C(W(2).start())}),K(2,` Edit `),z()}if(e&2){let e=W(2);V(`disabled`,e.busy()),k(`aria-label`,`Edit `+e.prop().name)}}function Aj(e,t){if(e&1&&(R(0,`p`,13),K(1),z()),e&2){let e=W(2);D(),q(e.prop().locked)}}function jj(e,t){if(e&1&&(R(0,`div`,11),A(1,Oj,4,6,`pre`),A(2,kj,3,2,`button`,12),z(),A(3,Aj,2,1,`p`,13)),e&2){let e=W();D(),j(e.bare()?-1:1),D(),j(e.editable()?2:-1),D(),j(e.writes()&&e.prop().locked?3:-1)}}function Mj(e,t){if(e&1&&(R(0,`p`,3),K(1),z()),e&2){let e=W();V(`id`,e.errorId),D(),q(e.error())}}var Nj=0;function Pj(e){let t=e.trim();if(!t)return{error:`Type a JSON value, such as "text", 42, true, null or [1, 2].`};try{return{value:JSON.parse(t)}}catch{return{error:`Not valid JSON. Put text in double quotes, such as "Paris".`}}}var Fj=class e{prop=$.required();componentId=$.required();pageId=$(null);rpc=$(null);writes=$(!1);bare=$(!1);readDraft=$(null);fieldId=`prop-edit-${++Nj}`;hintId=`${this.fieldId}-hint`;errorId=`${this.fieldId}-error`;objectSample=`{"a": 1}`;editing=T(!1);draft=T(``);busy=T(!1);error=T(``);done=T(``);editable=X(()=>this.writes()&&!!this.prop().edit&&!!this.pageId()&&!!this.rpc());field=pv(`field`);editButton=pv(`editButton`);valueBox=pv(`valueBox`);injector=x(gs);scrollable=T(!1);constructor(){bv(()=>{this.prop();let e=this.valueBox()?.nativeElement;this.scrollable.set(!!e&&e.scrollHeight>e.clientHeight+1)})}async start(){let e=this.prop().value;this.error.set(``),this.done.set(``);let t=this.readDraft();if(t){this.busy.set(!0);let n=await t();if(this.busy.set(!1),n.error!==void 0){this.error.set(n.error);return}e=n.value}this.draft.set(e===void 0?``:JSON.stringify(e)),this.editing.set(!0),id(()=>{let e=this.field()?.nativeElement;e?.focus(),e?.select()},{injector:this.injector})}cancel(){this.editing()&&(this.editing.set(!1),this.busy.set(!1),this.error.set(``),this.focusEdit())}async apply(){if(this.busy())return;let e=Pj(this.draft());if(`error`in e){this.error.set(e.error);return}let t=this.prop(),n=this.rpc(),r=this.pageId();if(!n||!r||!t.edit)return;this.busy.set(!0),this.error.set(``);let i;try{i=await n.scope(`pangular`).rpc.call(`request-component-edit`,{pageId:r,request:{id:this.componentId(),path:t.prop,value:e.value,kind:t.edit}})??{}}catch{i={error:`The devtools server did not answer. Try again.`}}this.busy.set(!1),this.editing()&&(i.ok?(this.editing.set(!1),this.done.set(`Set ${t.name}.`),this.focusEdit()):(this.error.set(i.error??`The page did not write it.`),this.field()?.nativeElement.focus()))}focusEdit(){id(()=>this.editButton()?.nativeElement.focus(),{injector:this.injector})}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-prop-value`]],viewQuery:function(e,t){e&1&&Ag(t.field,wj,5)(t.editButton,Tj,5)(t.valueBox,Ej,5),e&2&&jg(3)},inputs:{prop:[1,`prop`],componentId:[1,`componentId`],pageId:[1,`pageId`],rpc:[1,`rpc`],writes:[1,`writes`],bare:[1,`bare`],readDraft:[1,`readDraft`]},decls:5,vars:3,consts:[[`field`,``],[`valueBox`,``],[`editButton`,``],[`role`,`alert`,1,`error`,3,`id`],[`role`,`status`,1,`sr-only`],[1,`editor`],[1,`sr-only`,3,`for`],[`type`,`text`,`autocomplete`,`off`,`spellcheck`,`false`,1,`field`,`mono`,3,`input`,`keydown.enter`,`keydown.escape`,`id`,`value`,`readOnly`],[`type`,`button`,1,`primary`,3,`click`,`disabled`],[`type`,`button`,3,`click`],[1,`hint`,3,`id`],[1,`view`],[`type`,`button`,1,`edit`,3,`disabled`],[1,`locked`],[`type`,`button`,1,`edit`,3,`click`,`disabled`]],template:function(e,t){e&1&&(A(0,Dj,11,11)(1,jj,4,3),A(2,Mj,2,2,`p`,3),R(3,`p`,4),K(4),z()),e&2&&(j(+!t.editing()),D(2),j(t.error()?2:-1),D(2),q(t.done()))},dependencies:[Zv],styles:[`[_nghost-%COMP%] { display: block; min-width: 0; } @@ -2104,7 +2104,7 @@ button.edit[_ngcontent-%COMP%] { .error[_ngcontent-%COMP%] { color: var(--%NS%danger-text); -}`]})},Ij=1e3,Lj={depth:5,limit:100},Rj=`[redacted]`;function zj(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Bj(e){return zj(e)&&typeof e.$more==`number`&&Object.keys(e).length===1}function Vj(e){return zj(e)&&typeof e.$collapsed==`string`&&typeof e.size==`number`&&Object.keys(e).length===2}function Hj(e){return e===`Array`?`array`:e===`Map`?`map`:e===`Set`?`set`:`object`}function Uj(e){return e.$type===`Map`&&Array.isArray(e.entries)}function Wj(e){return e.$type===`Set`&&Array.isArray(e.values)}function Gj(e){return Object.keys(e).filter(e=>e!==`$type`&&e!==`$more`)}function Kj(e){if(!e||typeof e!=`object`)return null;if(Vj(e))return e.size<=0?null:{kind:Hj(e.$collapsed),type:e.$collapsed,size:e.size,collapsed:!0};if(Bj(e))return null;if(Array.isArray(e)){let t=e.at(-1),n=Bj(t)?t.$more:0,r=e.length-+!!n+n;return r?{kind:`array`,type:`Array`,size:r,collapsed:!1}:null}let t=e;if(Uj(t)||Wj(t)){let e=typeof t.size==`number`?t.size:0,n=Uj(t)?`map`:`set`;return e?{kind:n,type:n===`map`?`Map`:`Set`,size:e,collapsed:!1}:null}let n=typeof t.$more==`number`?t.$more:0,r=Gj(t).length+n,i=typeof t.$type==`string`?t.$type:`Object`;return r?{kind:`object`,type:i,size:r,collapsed:!1}:null}function qj(e){if(typeof e==`string`)return JSON.stringify(e);let t=Kj(e);if(t)return Xj(t);try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function Jj(e){let t=Kj(e);if(!t||t.collapsed)return{children:[],more:0};if(Array.isArray(e)){let n=(Bj(e.at(-1))?e.slice(0,-1):e).map((e,t)=>({key:String(t),label:String(t),value:e}));return{children:n,more:t.size-n.length}}let n=e;if(t.kind===`map`){let e=n.entries.map((e,t)=>{let[n,r]=Array.isArray(e)?e:[void 0,e];return{key:String(t),label:qj(n),value:r}});return{children:e,more:Math.max(0,t.size-e.length)}}if(t.kind===`set`){let e=n.values.map((e,t)=>({key:String(t),label:String(t),value:e}));return{children:e,more:Math.max(0,t.size-e.length)}}return{children:Gj(n).map(e=>({key:e,label:e,value:n[e]})),more:typeof n.$more==`number`?n.$more:0}}function Yj(e,t,n){return`${e} ${e===1?t:n}`}function Xj(e){let t={array:Yj(e.size,`item`,`items`),object:Yj(e.size,`key`,`keys`),map:Yj(e.size,`entry`,`entries`),set:Yj(e.size,`value`,`values`)}[e.kind];return`${e.type} (${t})`}function Zj(e,t){return JSON.stringify(t===void 0?e:[t,...e])}function Qj(e,t){return e.map((e,n)=>n===0?e:(t?t[n-1]!==`object`:/^\d+$/.test(e))?`[${e}]`:`.${e}`).join(``)}function $j(e){return e.every(e=>e&&e===e.trim()&&!/[.[\]]/.test(e))?e.join(`.`):null}var eM=/^\[(Getter|Unreadable|Circular|Truncated|Function\b.*|Promise)\]$/;function tM(e){return e===null||typeof e==`boolean`?!0:typeof e==`number`?Number.isFinite(e):typeof e==`string`&&e!==Rj&&!eM.test(e)&&!e.endsWith(`…`)}function nM(e,t){return!e||t.kind===`map`||t.kind===`set`||e===`signal`&&t.kind===`object`&&t.type!==`Object`?null:e}function rM(e,t,n,r,i=500){let a=[],o=r.trim().toLowerCase();if(!o)return a;let s=new Set,c=(e,t)=>{let r=Zj(e);if(!(s.has(r)||a.length>=i)){s.add(r);for(let r of Jj(t).children){let t=[...e,r.key];if(r.label.toLowerCase().includes(o)&&a.push(t),!Kj(r.value))continue;let i=n(t)??(Kj(r.value)?.collapsed?void 0:r.value);i!==void 0&&c(t,i)}}};return c(e,n(e)??t),a}var iM=(e,t)=>t.id;function aM(e,t){if(e&1){let e=B();F(0,`button`,2),H(`click`,function(){C(e);let t=W().$implicit;return w(W(3).toggle(t))}),T(),F(1,`svg`,3),L(2,`path`,4),I(),cs(),F(3,`span`,14),K(4),I(),F(5,`span`,5),K(6),I()()}if(e&2){let e=W().$implicit;k(`aria-expanded`,e.open)(`aria-label`,e.label+`: `+e.text),D(4),J(``,e.label,`:`),D(2),q(e.text)}}function oM(e,t){if(e&1&&L(0,`app-prop-value`,15),e&2){let e=W(5);P(`prop`,t)(`componentId`,e.componentId())(`pageId`,e.pageId())(`rpc`,e.rpc())(`writes`,e.writes())}}function sM(e,t){if(e&1&&(F(0,`span`,16),K(1),I()),e&2){let e=W(2).$implicit;D(),q(e.text)}}function cM(e,t){if(e&1&&(F(0,`span`,14),K(1),I(),A(2,oM,1,5,`app-prop-value`,15)(3,sM,2,1,`span`,16)),e&2){let e,t=W().$implicit;D(),J(``,t.label,`:`),D(),j((e=t.edit)?2:3,e)}}function lM(e,t){if(e&1){let e=B();F(0,`button`,17),H(`click`,function(){C(e);let t=W().$implicit;return w(W(3).more(t))}),K(1),F(2,`span`,18),K(3),I()()}if(e&2){let e=W().$implicit,t=W(3);D(),J(` Show `,t.step(e),` more `),D(2),J(`(`,e.more,` not listed)`)}}function uM(e,t){e&1&&(F(0,`span`,12),K(1,`Reading from the page…`),I())}function dM(e,t){if(e&1&&(F(0,`span`,13),K(1),I()),e&2){let e=W().$implicit;D(),q(e.text)}}function fM(e,t){if(e&1&&(F(0,`li`,9),A(1,aM,7,4,`button`,10)(2,cM,4,2)(3,lM,4,2,`button`,11)(4,uM,2,0,`span`,12)(5,dM,2,1,`span`,13),I()),e&2){let e,n=t.$implicit;Xg(`padding-left`,n.depth*14,`px`),D(),j((e=n.kind)===`node`?1:e===`leaf`?2:e===`more`?3:e===`loading`?4:e===`error`?5:-1)}}function pM(e,t){if(e&1&&(F(0,`ul`,7),M(1,fM,6,3,`li`,8,iM),I()),e&2){let e=W(2);P(`id`,e.listId),k(`aria-label`,e.prop().name+` entries`),D(),N(e.rows())}}function mM(e,t){if(e&1){let e=B();F(0,`div`,1)(1,`button`,2),H(`click`,function(){return C(e),w(W().toggleRoot())}),T(),F(2,`svg`,3),L(3,`path`,4),I(),cs(),F(4,`span`,5),K(5),I()(),L(6,`app-prop-value`,6),I(),A(7,pM,3,2,`ul`,7)}if(e&2){let e=t,n=W();D(),k(`aria-expanded`,n.rootOpen())(`aria-controls`,n.rootOpen()?n.listId:null)(`aria-label`,n.prop().name+`: `+n.summaryOf(e)),D(4),q(n.summaryOf(e)),D(),P(`bare`,!0)(`prop`,n.prop())(`componentId`,n.componentId())(`pageId`,n.pageId())(`rpc`,n.rpc())(`writes`,n.writes())(`readDraft`,n.readWhole),D(),j(n.rootOpen()?7:-1)}}function hM(e,t){if(e&1&&L(0,`app-prop-value`,0),e&2){let e=W();P(`prop`,e.prop())(`componentId`,e.componentId())(`pageId`,e.pageId())(`rpc`,e.rpc())(`writes`,e.writes())}}var gM=0;function _M(e){if(e===void 0)return`undefined`;try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function vM(e){if(Array.isArray(e))return e.every(vM);if(e&&typeof e==`object`){let t=e;return![`$collapsed`,`$more`,`$type`].some(e=>Object.hasOwn(t,e))&&Object.values(t).every(vM)}return tM(e)}var yM=class e{prop=$.required();store=$.required();componentId=$.required();pageId=$(null);rpc=$(null);writes=$(!1);directive=$(void 0);query=$(``);listId=`value-tree-${++gM}`;host=S(kl);pendingMore=null;constructor(){fv(()=>{let e=this.rows(),t=this.pendingMore;if(!t)return;let n=e.findIndex(e=>(e.kind===`leaf`||e.kind===`node`)&&!t.has(e.id));if(n<0)return;this.pendingMore=null;let r=document.activeElement;r&&r!==document.body&&r.isConnected||this.focusNear(n)})}rootPath=X(()=>[this.prop().prop]);rootValue=X(()=>this.store().level(this.rootPath(),this.directive())??this.prop().value);root=X(()=>Kj(this.rootValue()));needle=X(()=>this.query().trim().toLowerCase());matches=X(()=>{let e=this.needle(),t=this.prop();if(!e||[t.name,t.prop].some(t=>t.toLowerCase().includes(e)))return null;let n=this.store(),r=this.directive();return rM(this.rootPath(),this.rootValue(),e=>n.level(e,r),e)});rootOpen=X(()=>!!this.matches()?.length||this.store().isOpen(this.rootPath(),this.directive()));rows=X(()=>{let e=this.root();if(!e)return[];let t=this.store(),n=this.directive(),r=this.matches(),i=new Set,a=new Set;for(let e of r??[]){a.add(Zj(e));for(let t=2;t<=e.length;t++)i.add(Zj(e.slice(0,t)))}let o=this.prop(),s=this.writes()&&n===void 0,c=[],l=(e,o,d,f,p,m)=>{let{children:h,more:g}=Jj(e);for(let e of h){let h=[...o,e.key],g=Zj(h);if(r&&!m&&!i.has(g))continue;let _=Kj(e.value),ee=Zj(h,n);if(!_){let t=p&&tM(e.value)?$j(h):null;c.push({id:ee,kind:`leaf`,depth:f,path:h,label:e.label,text:_M(e.value),edit:s&&t&&p?{name:Qj(h,[...d]),prop:t,value:e.value,edit:p}:void 0});continue}let te=!!r&&!m&&i.has(g)&&!a.has(g)||t.isOpen(h,n);if(c.push({id:ee,kind:`node`,depth:f,path:h,label:e.label,text:Xj(_),container:_,open:te}),!te)continue;let ne=t.level(h,n)??(_.collapsed?void 0:e.value),re=[...d,_.kind];ne===void 0?t.errors().has(ee)?c.push({...u(h,f+1,`error`),text:t.errors().get(ee)}):c.push(u(h,f+1,`loading`)):l(ne,h,re,f+1,nM(p,_),m||a.has(g))}g>0&&(!r||m)&&c.push({...u(o,f,`more`),more:g,listed:h.length})},u=(e,t,r)=>({id:`${Zj(e,n)}:${r}`,kind:r,depth:t,path:e,label:``,text:``});return l(this.rootValue(),this.rootPath(),[e.kind],0,s?nM(o.editInside??null,e):null,!r),c});readWhole=async()=>{let e=await this.store().read(this.rootPath(),Lj.depth,Lj.limit);return e.ok?vM(e.value)?{value:e.value}:{error:`Too large to edit as a whole. Open it to edit the values inside.`}:{error:e.error??`The page did not read it.`}};summaryOf(e){return Xj(e)}toggleRoot(){this.pendingMore=null,this.store().toggle(this.rootPath(),this.directive(),!1)}toggle(e){this.pendingMore=null,this.store().toggle(e.path,this.directive(),!!e.container?.collapsed)}more(e){this.pendingMore=new Set(this.rows().map(e=>e.id)),this.store().more(e.path,this.directive(),e.listed??0)}focusNear(e){let t=this.host.nativeElement,n=Array.from(t.querySelectorAll(`#${this.listId} > li`)),r=e=>e?.querySelector(`button:not([disabled]), input, textarea, [tabindex="0"]`);(n.slice(e).map(r).find(Boolean)??n.slice(0,e).reverse().map(r).find(Boolean)??t.querySelector(`.root > .toggle`))?.focus()}step(e){return Math.min(100,e.more??0)}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-value-tree`]],inputs:{prop:[1,`prop`],store:[1,`store`],componentId:[1,`componentId`],pageId:[1,`pageId`],rpc:[1,`rpc`],writes:[1,`writes`],directive:[1,`directive`],query:[1,`query`]},decls:2,vars:1,consts:[[3,`prop`,`componentId`,`pageId`,`rpc`,`writes`],[1,`root`],[`type`,`button`,1,`toggle`,3,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`chevron`],[`d`,`m9 6 6 6-6 6`],[1,`summary`,`mono`],[1,`whole`,3,`bare`,`prop`,`componentId`,`pageId`,`rpc`,`writes`,`readDraft`],[1,`entries`,3,`id`],[1,`entry`,3,`padding-left`],[1,`entry`],[`type`,`button`,1,`toggle`],[`type`,`button`,1,`more`],[`role`,`status`,1,`muted`],[`role`,`alert`,1,`error`],[1,`key`,`mono`],[1,`leaf-edit`,3,`prop`,`componentId`,`pageId`,`rpc`,`writes`],[1,`leaf`,`mono`],[`type`,`button`,1,`more`,3,`click`],[1,`muted`]],template:function(e,t){if(e&1&&A(0,mM,8,12)(1,hM,1,5,`app-prop-value`,0),e&2){let e;j((e=t.root())?0:1,e)}},dependencies:[Fj],styles:[`[_nghost-%COMP%] { +}`]})},Ij=1e3,Lj={depth:5,limit:100},Rj=`[redacted]`;function zj(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Bj(e){return zj(e)&&typeof e.$more==`number`&&Object.keys(e).length===1}function Vj(e){return zj(e)&&typeof e.$collapsed==`string`&&typeof e.size==`number`&&Object.keys(e).length===2}function Hj(e){return e===`Array`?`array`:e===`Map`?`map`:e===`Set`?`set`:`object`}function Uj(e){return e.$type===`Map`&&Array.isArray(e.entries)}function Wj(e){return e.$type===`Set`&&Array.isArray(e.values)}function Gj(e){return Object.keys(e).filter(e=>e!==`$type`&&e!==`$more`)}function Kj(e){if(!e||typeof e!=`object`)return null;if(Vj(e))return e.size<=0?null:{kind:Hj(e.$collapsed),type:e.$collapsed,size:e.size,collapsed:!0};if(Bj(e))return null;if(Array.isArray(e)){let t=e.at(-1),n=Bj(t)?t.$more:0,r=e.length-+!!n+n;return r?{kind:`array`,type:`Array`,size:r,collapsed:!1}:null}let t=e;if(Uj(t)||Wj(t)){let e=typeof t.size==`number`?t.size:0,n=Uj(t)?`map`:`set`;return e?{kind:n,type:n===`map`?`Map`:`Set`,size:e,collapsed:!1}:null}let n=typeof t.$more==`number`?t.$more:0,r=Gj(t).length+n,i=typeof t.$type==`string`?t.$type:`Object`;return r?{kind:`object`,type:i,size:r,collapsed:!1}:null}function qj(e){if(typeof e==`string`)return JSON.stringify(e);let t=Kj(e);if(t)return Xj(t);try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function Jj(e){let t=Kj(e);if(!t||t.collapsed)return{children:[],more:0};if(Array.isArray(e)){let n=(Bj(e.at(-1))?e.slice(0,-1):e).map((e,t)=>({key:String(t),label:String(t),value:e}));return{children:n,more:t.size-n.length}}let n=e;if(t.kind===`map`){let e=n.entries.map((e,t)=>{let[n,r]=Array.isArray(e)?e:[void 0,e];return{key:String(t),label:qj(n),value:r}});return{children:e,more:Math.max(0,t.size-e.length)}}if(t.kind===`set`){let e=n.values.map((e,t)=>({key:String(t),label:String(t),value:e}));return{children:e,more:Math.max(0,t.size-e.length)}}return{children:Gj(n).map(e=>({key:e,label:e,value:n[e]})),more:typeof n.$more==`number`?n.$more:0}}function Yj(e,t,n){return`${e} ${e===1?t:n}`}function Xj(e){let t={array:Yj(e.size,`item`,`items`),object:Yj(e.size,`key`,`keys`),map:Yj(e.size,`entry`,`entries`),set:Yj(e.size,`value`,`values`)}[e.kind];return`${e.type} (${t})`}function Zj(e,t){return JSON.stringify(t===void 0?e:[t,...e])}function Qj(e,t){return e.map((e,n)=>n===0?e:(t?t[n-1]!==`object`:/^\d+$/.test(e))?`[${e}]`:`.${e}`).join(``)}function $j(e){return e.every(e=>e&&e===e.trim()&&!/[.[\]]/.test(e))?e.join(`.`):null}var eM=/^\[(Getter|Unreadable|Circular|Truncated|Function\b.*|Promise)\]$/;function tM(e){return e===null||typeof e==`boolean`?!0:typeof e==`number`?Number.isFinite(e):typeof e==`string`&&e!==Rj&&!eM.test(e)&&!e.endsWith(`…`)}function nM(e,t){return!e||t.kind===`map`||t.kind===`set`||e===`signal`&&t.kind===`object`&&t.type!==`Object`?null:e}function rM(e,t,n,r,i=500){let a=[],o=r.trim().toLowerCase();if(!o)return a;let s=new Set,c=(e,t)=>{let r=Zj(e);if(!(s.has(r)||a.length>=i)){s.add(r);for(let r of Jj(t).children){let t=[...e,r.key];if(r.label.toLowerCase().includes(o)&&a.push(t),!Kj(r.value))continue;let i=n(t)??(Kj(r.value)?.collapsed?void 0:r.value);i!==void 0&&c(t,i)}}};return c(e,n(e)??t),a}var iM=(e,t)=>t.id;function aM(e,t){if(e&1){let e=B();F(0,`button`,2),H(`click`,function(){S(e);let t=W().$implicit;return C(W(3).toggle(t))}),w(),F(1,`svg`,3),L(2,`path`,4),I(),cs(),F(3,`span`,14),K(4),I(),F(5,`span`,5),K(6),I()()}if(e&2){let e=W().$implicit;k(`aria-expanded`,e.open)(`aria-label`,e.label+`: `+e.text),D(4),J(``,e.label,`:`),D(2),q(e.text)}}function oM(e,t){if(e&1&&L(0,`app-prop-value`,15),e&2){let e=W(5);P(`prop`,t)(`componentId`,e.componentId())(`pageId`,e.pageId())(`rpc`,e.rpc())(`writes`,e.writes())}}function sM(e,t){if(e&1&&(F(0,`span`,16),K(1),I()),e&2){let e=W(2).$implicit;D(),q(e.text)}}function cM(e,t){if(e&1&&(F(0,`span`,14),K(1),I(),A(2,oM,1,5,`app-prop-value`,15)(3,sM,2,1,`span`,16)),e&2){let e,t=W().$implicit;D(),J(``,t.label,`:`),D(),j((e=t.edit)?2:3,e)}}function lM(e,t){if(e&1){let e=B();F(0,`button`,17),H(`click`,function(){S(e);let t=W().$implicit;return C(W(3).more(t))}),K(1),F(2,`span`,18),K(3),I()()}if(e&2){let e=W().$implicit,t=W(3);D(),J(` Show `,t.step(e),` more `),D(2),J(`(`,e.more,` not listed)`)}}function uM(e,t){e&1&&(F(0,`span`,12),K(1,`Reading from the page…`),I())}function dM(e,t){if(e&1&&(F(0,`span`,13),K(1),I()),e&2){let e=W().$implicit;D(),q(e.text)}}function fM(e,t){if(e&1&&(F(0,`li`,9),A(1,aM,7,4,`button`,10)(2,cM,4,2)(3,lM,4,2,`button`,11)(4,uM,2,0,`span`,12)(5,dM,2,1,`span`,13),I()),e&2){let e,n=t.$implicit;$g(`padding-left`,n.depth*14,`px`),D(),j((e=n.kind)===`node`?1:e===`leaf`?2:e===`more`?3:e===`loading`?4:e===`error`?5:-1)}}function pM(e,t){if(e&1&&(F(0,`ul`,7),M(1,fM,6,3,`li`,8,iM),I()),e&2){let e=W(2);P(`id`,e.listId),k(`aria-label`,e.prop().name+` entries`),D(),N(e.rows())}}function mM(e,t){if(e&1){let e=B();F(0,`div`,1)(1,`button`,2),H(`click`,function(){return S(e),C(W().toggleRoot())}),w(),F(2,`svg`,3),L(3,`path`,4),I(),cs(),F(4,`span`,5),K(5),I()(),L(6,`app-prop-value`,6),I(),A(7,pM,3,2,`ul`,7)}if(e&2){let e=t,n=W();D(),k(`aria-expanded`,n.rootOpen())(`aria-controls`,n.rootOpen()?n.listId:null)(`aria-label`,n.prop().name+`: `+n.summaryOf(e)),D(4),q(n.summaryOf(e)),D(),P(`bare`,!0)(`prop`,n.prop())(`componentId`,n.componentId())(`pageId`,n.pageId())(`rpc`,n.rpc())(`writes`,n.writes())(`readDraft`,n.readWhole),D(),j(n.rootOpen()?7:-1)}}function hM(e,t){if(e&1&&L(0,`app-prop-value`,0),e&2){let e=W();P(`prop`,e.prop())(`componentId`,e.componentId())(`pageId`,e.pageId())(`rpc`,e.rpc())(`writes`,e.writes())}}var gM=0;function _M(e){if(e===void 0)return`undefined`;try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function vM(e){if(Array.isArray(e))return e.every(vM);if(e&&typeof e==`object`){let t=e;return![`$collapsed`,`$more`,`$type`].some(e=>Object.hasOwn(t,e))&&Object.values(t).every(vM)}return tM(e)}var yM=class e{prop=$.required();store=$.required();componentId=$.required();pageId=$(null);rpc=$(null);writes=$(!1);directive=$(void 0);query=$(``);listId=`value-tree-${++gM}`;host=x(Ol);pendingMore=null;constructor(){bv(()=>{let e=this.rows(),t=this.pendingMore;if(!t)return;let n=e.findIndex(e=>(e.kind===`leaf`||e.kind===`node`)&&!t.has(e.id));if(n<0)return;this.pendingMore=null;let r=document.activeElement;r&&r!==document.body&&r.isConnected||this.focusNear(n)})}rootPath=X(()=>[this.prop().prop]);rootValue=X(()=>this.store().level(this.rootPath(),this.directive())??this.prop().value);root=X(()=>Kj(this.rootValue()));needle=X(()=>this.query().trim().toLowerCase());matches=X(()=>{let e=this.needle(),t=this.prop();if(!e||[t.name,t.prop].some(t=>t.toLowerCase().includes(e)))return null;let n=this.store(),r=this.directive();return rM(this.rootPath(),this.rootValue(),e=>n.level(e,r),e)});rootOpen=X(()=>!!this.matches()?.length||this.store().isOpen(this.rootPath(),this.directive()));rows=X(()=>{let e=this.root();if(!e)return[];let t=this.store(),n=this.directive(),r=this.matches(),i=new Set,a=new Set;for(let e of r??[]){a.add(Zj(e));for(let t=2;t<=e.length;t++)i.add(Zj(e.slice(0,t)))}let o=this.prop(),s=this.writes()&&n===void 0,c=[],l=(e,o,d,f,p,m)=>{let{children:ee,more:h}=Jj(e);for(let e of ee){let ee=[...o,e.key],h=Zj(ee);if(r&&!m&&!i.has(h))continue;let g=Kj(e.value),te=Zj(ee,n);if(!g){let t=p&&tM(e.value)?$j(ee):null;c.push({id:te,kind:`leaf`,depth:f,path:ee,label:e.label,text:_M(e.value),edit:s&&t&&p?{name:Qj(ee,[...d]),prop:t,value:e.value,edit:p}:void 0});continue}let ne=!!r&&!m&&i.has(h)&&!a.has(h)||t.isOpen(ee,n);if(c.push({id:te,kind:`node`,depth:f,path:ee,label:e.label,text:Xj(g),container:g,open:ne}),!ne)continue;let re=t.level(ee,n)??(g.collapsed?void 0:e.value),ie=[...d,g.kind];re===void 0?t.errors().has(te)?c.push({...u(ee,f+1,`error`),text:t.errors().get(te)}):c.push(u(ee,f+1,`loading`)):l(re,ee,ie,f+1,nM(p,g),m||a.has(h))}h>0&&(!r||m)&&c.push({...u(o,f,`more`),more:h,listed:ee.length})},u=(e,t,r)=>({id:`${Zj(e,n)}:${r}`,kind:r,depth:t,path:e,label:``,text:``});return l(this.rootValue(),this.rootPath(),[e.kind],0,s?nM(o.editInside??null,e):null,!r),c});readWhole=async()=>{let e=await this.store().read(this.rootPath(),Lj.depth,Lj.limit);return e.ok?vM(e.value)?{value:e.value}:{error:`Too large to edit as a whole. Open it to edit the values inside.`}:{error:e.error??`The page did not read it.`}};summaryOf(e){return Xj(e)}toggleRoot(){this.pendingMore=null,this.store().toggle(this.rootPath(),this.directive(),!1)}toggle(e){this.pendingMore=null,this.store().toggle(e.path,this.directive(),!!e.container?.collapsed)}more(e){this.pendingMore=new Set(this.rows().map(e=>e.id)),this.store().more(e.path,this.directive(),e.listed??0)}focusNear(e){let t=this.host.nativeElement,n=Array.from(t.querySelectorAll(`#${this.listId} > li`)),r=e=>e?.querySelector(`button:not([disabled]), input, textarea, [tabindex="0"]`);(n.slice(e).map(r).find(Boolean)??n.slice(0,e).reverse().map(r).find(Boolean)??t.querySelector(`.root > .toggle`))?.focus()}step(e){return Math.min(100,e.more??0)}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-value-tree`]],inputs:{prop:[1,`prop`],store:[1,`store`],componentId:[1,`componentId`],pageId:[1,`pageId`],rpc:[1,`rpc`],writes:[1,`writes`],directive:[1,`directive`],query:[1,`query`]},decls:2,vars:1,consts:[[3,`prop`,`componentId`,`pageId`,`rpc`,`writes`],[1,`root`],[`type`,`button`,1,`toggle`,3,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`chevron`],[`d`,`m9 6 6 6-6 6`],[1,`summary`,`mono`],[1,`whole`,3,`bare`,`prop`,`componentId`,`pageId`,`rpc`,`writes`,`readDraft`],[1,`entries`,3,`id`],[1,`entry`,3,`padding-left`],[1,`entry`],[`type`,`button`,1,`toggle`],[`type`,`button`,1,`more`],[`role`,`status`,1,`muted`],[`role`,`alert`,1,`error`],[1,`key`,`mono`],[1,`leaf-edit`,3,`prop`,`componentId`,`pageId`,`rpc`,`writes`],[1,`leaf`,`mono`],[`type`,`button`,1,`more`,3,`click`],[1,`muted`]],template:function(e,t){if(e&1&&A(0,mM,8,12)(1,hM,1,5,`app-prop-value`,0),e&2){let e;j((e=t.root())?0:1,e)}},dependencies:[Fj],styles:[`[_nghost-%COMP%] { display: block; min-width: 0; } @@ -2226,7 +2226,7 @@ button.edit[_ngcontent-%COMP%] { .more[_ngcontent-%COMP%] { transition: none; } -}`]})};function bM(e,t){return e.length>t.length&&e.startsWith(`${t.slice(0,-1)},`)}var xM=class{sender;target={rpc:null,pageId:null,componentId:null};fetched=E(new Map);pushed=E({});open=E(new Set);loading=E(new Set);errors=E(new Map);limits=new Map;generation=0;constructor(e){this.sender=e}follow(e,t){let n=e.componentId===this.target.componentId&&e.pageId===this.target.pageId;this.target=e,n||(this.generation++,this.fetched.set(new Map),this.open.set(new Set),this.loading.set(new Set),this.errors.set(new Map),this.limits.clear()),this.pushed.set(t??{})}level(e,t){let n=Zj(e,t),r=this.pushed();return Object.hasOwn(r,n)?r[n]:this.fetched().get(n)}isOpen(e,t){return this.open().has(Zj(e,t))}toggle(e,t,n){let r=Zj(e,t),i=new Set(this.open());if(i.has(r)){for(let e of i)(e===r||bM(e,r))&&i.delete(e);this.open.set(i),this.send({path:e,directive:t,forget:!0});return}i.add(r),this.open.set(i),n&&this.load(e,t,this.limits.get(r)??30)}more(e,t,n){let r=Zj(e,t),i=Math.min(Ij,Math.max(n,this.limits.get(r)??0)+100);this.limits.set(r,i),this.load(e,t,i)}async read(e,t,n){return this.send({path:e,depth:t,limit:n})}async load(e,t,n){let r=Zj(e,t),i=this.generation;this.loading.update(e=>new Set(e).add(r));let a=await this.send({path:e,directive:t,limit:n,watch:!0});i===this.generation&&(this.loading.update(e=>{let t=new Set(e);return t.delete(r),t}),this.errors.update(e=>{let t=new Map(e);return a.ok?t.delete(r):t.set(r,a.error??`The page did not read it.`),t}),a.ok&&this.fetched.update(e=>new Map(e).set(r,a.value)))}async send(e){if(this.sender){if(e.forget)return{ok:!0};let{directive:t,watch:n,...r}=e;try{return await this.sender(r)}catch{return{error:`The devtools server did not answer. Try again.`}}}let{rpc:t,pageId:n,componentId:r}=this.target;if(!t||!n||!r)return{error:`No live page to read from.`};let{directive:i,...a}=e;try{return await t.scope(`pangular`).rpc.call(`request-component-value`,{pageId:n,request:{id:r,...a,...i===void 0?{}:{directive:i}}})??{}}catch{return{error:`The devtools server did not answer. Try again.`}}}};function SM(e,t){if(e&1&&(R(0,`span`,1),K(1),z()),e&2){let e=W(2);D(),J(`: `,e.label())}}function CM(e,t){if(e&1&&(R(0,`span`,1),K(1),z()),e&2){let e=W(3);D(),J(`: `,e.label())}}function wM(e,t){if(e&1){let e=B();R(0,`button`,4),U(`click`,function(){return C(e),w(W(2).store(`log`))}),K(1,` Log to console `),A(2,CM,2,1,`span`,1),z()}if(e&2){let e=W(2);V(`disabled`,e.busy()||!e.rpc()||!e.pageId()),D(2),j(e.label()?2:-1)}}function TM(e,t){if(e&1){let e=B();R(0,`button`,0),U(`click`,function(){return C(e),w(W().store())}),K(1,` Store as global `),A(2,SM,2,1,`span`,1),z(),A(3,wM,3,2,`button`,2),R(4,`span`,3),K(5),z()}if(e&2){let e=W();V(`disabled`,e.busy()||!e.rpc()||!e.pageId()),D(2),j(e.label()?2:-1),D(),j(e.canLog()?3:-1),D(2),q(e.message())}}var EM=class e{rpc=$(null);pageId=$(null);target=$.required();label=$(``);canLog=$(!1);staticReport=X(()=>yT(this.rpc()));busy=E(!1);message=E(``);async store(e=`store`){let t=this.rpc(),n=this.pageId();if(t&&n){this.busy.set(!0),this.message.set(``);try{let r=await t.scope(`pangular`).rpc.call(`request-console-global`,{pageId:n,target:this.target(),...e===`log`?{mode:e}:{}}),i=e===`log`?r?.ok?`Logged in the page console.`:`Not logged.`:r?.ok&&r.name?`Stored as ${r.name}.`:`Not stored.`;this.message.set(r?.message||i)}catch{this.message.set(`Could not reach the page.`)}finally{this.busy.set(!1)}}}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-store-global`]],inputs:{rpc:[1,`rpc`],pageId:[1,`pageId`],target:[1,`target`],label:[1,`label`],canLog:[1,`canLog`]},decls:1,vars:1,consts:[[`type`,`button`,1,`store`,3,`click`,`disabled`],[1,`sr-only`],[`type`,`button`,1,`store`,`log`,3,`disabled`],[`role`,`status`,1,`status`],[`type`,`button`,1,`store`,`log`,3,`click`,`disabled`]],template:function(e,t){e&1&&A(0,TM,6,4),e&2&&j(t.staticReport()?-1:0)},styles:[`[_nghost-%COMP%] { +}`]})};function bM(e,t){return e.length>t.length&&e.startsWith(`${t.slice(0,-1)},`)}var xM=class{sender;target={rpc:null,pageId:null,componentId:null};fetched=T(new Map);pushed=T({});open=T(new Set);loading=T(new Set);errors=T(new Map);limits=new Map;generation=0;constructor(e){this.sender=e}follow(e,t){let n=e.componentId===this.target.componentId&&e.pageId===this.target.pageId;this.target=e,n||(this.generation++,this.fetched.set(new Map),this.open.set(new Set),this.loading.set(new Set),this.errors.set(new Map),this.limits.clear()),this.pushed.set(t??{})}level(e,t){let n=Zj(e,t),r=this.pushed();return Object.hasOwn(r,n)?r[n]:this.fetched().get(n)}isOpen(e,t){return this.open().has(Zj(e,t))}toggle(e,t,n){let r=Zj(e,t),i=new Set(this.open());if(i.has(r)){for(let e of i)(e===r||bM(e,r))&&i.delete(e);this.open.set(i),this.send({path:e,directive:t,forget:!0});return}i.add(r),this.open.set(i),n&&this.load(e,t,this.limits.get(r)??30)}more(e,t,n){let r=Zj(e,t),i=Math.min(Ij,Math.max(n,this.limits.get(r)??0)+100);this.limits.set(r,i),this.load(e,t,i)}async read(e,t,n){return this.send({path:e,depth:t,limit:n})}async load(e,t,n){let r=Zj(e,t),i=this.generation;this.loading.update(e=>new Set(e).add(r));let a=await this.send({path:e,directive:t,limit:n,watch:!0});i===this.generation&&(this.loading.update(e=>{let t=new Set(e);return t.delete(r),t}),this.errors.update(e=>{let t=new Map(e);return a.ok?t.delete(r):t.set(r,a.error??`The page did not read it.`),t}),a.ok&&this.fetched.update(e=>new Map(e).set(r,a.value)))}async send(e){if(this.sender){if(e.forget)return{ok:!0};let{directive:t,watch:n,...r}=e;try{return await this.sender(r)}catch{return{error:`The devtools server did not answer. Try again.`}}}let{rpc:t,pageId:n,componentId:r}=this.target;if(!t||!n||!r)return{error:`No live page to read from.`};let{directive:i,...a}=e;try{return await t.scope(`pangular`).rpc.call(`request-component-value`,{pageId:n,request:{id:r,...a,...i===void 0?{}:{directive:i}}})??{}}catch{return{error:`The devtools server did not answer. Try again.`}}}};function SM(e,t){if(e&1&&(R(0,`span`,1),K(1),z()),e&2){let e=W(2);D(),J(`: `,e.label())}}function CM(e,t){if(e&1&&(R(0,`span`,1),K(1),z()),e&2){let e=W(3);D(),J(`: `,e.label())}}function wM(e,t){if(e&1){let e=B();R(0,`button`,4),U(`click`,function(){return S(e),C(W(2).store(`log`))}),K(1,` Log to console `),A(2,CM,2,1,`span`,1),z()}if(e&2){let e=W(2);V(`disabled`,e.busy()||!e.rpc()||!e.pageId()),D(2),j(e.label()?2:-1)}}function TM(e,t){if(e&1){let e=B();R(0,`button`,0),U(`click`,function(){return S(e),C(W().store())}),K(1,` Store as global `),A(2,SM,2,1,`span`,1),z(),A(3,wM,3,2,`button`,2),R(4,`span`,3),K(5),z()}if(e&2){let e=W();V(`disabled`,e.busy()||!e.rpc()||!e.pageId()),D(2),j(e.label()?2:-1),D(),j(e.canLog()?3:-1),D(2),q(e.message())}}var EM=class e{rpc=$(null);pageId=$(null);target=$.required();label=$(``);canLog=$(!1);staticReport=X(()=>yT(this.rpc()));busy=T(!1);message=T(``);async store(e=`store`){let t=this.rpc(),n=this.pageId();if(t&&n){this.busy.set(!0),this.message.set(``);try{let r=await t.scope(`pangular`).rpc.call(`request-console-global`,{pageId:n,target:this.target(),...e===`log`?{mode:e}:{}}),i=e===`log`?r?.ok?`Logged in the page console.`:`Not logged.`:r?.ok&&r.name?`Stored as ${r.name}.`:`Not stored.`;this.message.set(r?.message||i)}catch{this.message.set(`Could not reach the page.`)}finally{this.busy.set(!1)}}}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-store-global`]],inputs:{rpc:[1,`rpc`],pageId:[1,`pageId`],target:[1,`target`],label:[1,`label`],canLog:[1,`canLog`]},decls:1,vars:1,consts:[[`type`,`button`,1,`store`,3,`click`,`disabled`],[1,`sr-only`],[`type`,`button`,1,`store`,`log`,3,`disabled`],[`role`,`status`,1,`status`],[`type`,`button`,1,`store`,`log`,3,`click`,`disabled`]],template:function(e,t){e&1&&A(0,TM,6,4),e&2&&j(t.staticReport()?-1:0)},styles:[`[_nghost-%COMP%] { display: inline-flex; flex-wrap: wrap; align-items: center; @@ -2275,7 +2275,7 @@ button.edit[_ngcontent-%COMP%] { .status[_ngcontent-%COMP%]:empty { display: none; -}`]})},DM=(e,t)=>t.block.id,OM=(e,t)=>t.kind,kM=(e,t)=>t.id;function AM(e,t){if(e&1&&K(0),e&2){let e=W().$implicit;J(` `,e.label,` `)}}function jM(e,t){if(e&1&&(K(0),R(1,`span`,18),K(2),z()),e&2){let e=W().$implicit;J(` `,e.kind,` `),D(2),J(``,e.seconds,`s`)}}function MM(e,t){if(e&1&&(R(0,`span`,9),A(1,AM,1,1)(2,jM,3,2),z()),e&2){let e=t.$implicit;Zg(`note-`+e.kind),k(`title`,e.text),D(),j(e.seconds===void 0?1:2)}}function NM(e,t){if(e&1&&(R(0,`span`,9),K(1),z()),e&2){let e=W().$implicit;k(`title`,e.block.hydratedAt===void 0?`The block hydrated before the devtools attached to the page.`:null),D(),q(e.hydrated)}}function PM(e,t){e&1&&(R(0,`span`,9),K(1,`@error block`),z())}function FM(e,t){if(e&1&&(R(0,`span`,10),K(1),z()),e&2){let e=W().$implicit;D(),q(e.timings)}}function IM(e,t){e&1&&(R(0,`span`,11),K(1,`mismatch`),z())}function LM(e,t){if(e&1&&(R(0,`dt`),K(1,`Template of`),z(),R(2,`dd`,19),K(3),z()),e&2){let e=t;D(3),Y(``,e.name,` <`,e.tag,`>`)}}function RM(e,t){if(e&1&&(R(0,`dt`),K(1,`In this state since`),z(),R(2,`dd`),K(3),z()),e&2){let e=W(2).$implicit,t=W(2);D(3),q(t.clock(e.block.since))}}function zM(e,t){if(e&1&&(R(0,`dt`),K(1,`Hydrated`),z(),R(2,`dd`),K(3),z()),e&2){let e=W(2).$implicit,t=W(2);D(3),J(` `,e.block.hydratedAt===void 0?`Before the devtools attached`:t.clock(e.block.hydratedAt),` `)}}function BM(e,t){if(e&1&&(R(0,`span`,23),K(1),z()),e&2){let e=W().$implicit;D(),q(e.hydration)}}function VM(e,t){if(e&1&&(R(0,`li`)(1,`span`,22),K(2),z(),R(3,`span`,19),K(4),z(),A(5,BM,2,1,`span`,23),z()),e&2){let e=t.$implicit,n=W(5);D(2),q(n.clock(e.at)),D(2),q(e.state),D(),j(e.hydration===`not-configured`?-1:5)}}function HM(e,t){if(e&1&&(R(0,`h3`,20),K(1,`Transitions`),z(),R(2,`ol`,21),M(3,VM,6,3,`li`,null,Jh),z()),e&2){let e=W(2).$implicit;D(3),N(e.block.transitions)}}function UM(e,t){if(e&1){let e=B();R(0,`li`)(1,`button`,25),U(`click`,function(){let t=C(e).$implicit;return w(W(5).showNode.emit(t.id))}),K(2),R(3,`span`,19),K(4),z()()()}if(e&2){let e=t.$implicit;D(2),J(` Show `,e.name,` `),D(2),J(`<`,e.tag,`>`)}}function WM(e,t){if(e&1&&(R(0,`h3`,20),K(1,`Hydration mismatches`),z(),R(2,`ul`,24),M(3,UM,5,2,`li`,null,kM),z()),e&2){let e=W(2).$implicit;D(3),N(e.mismatches)}}function GM(e,t){if(e&1&&(R(0,`div`,17)(1,`dl`)(2,`dt`),K(3,`Block`),z(),R(4,`dd`,19),K(5),z(),A(6,LM,4,2),A(7,RM,4,1),A(8,zM,4,1),R(9,`dt`),K(10,`Root elements`),z(),R(11,`dd`),K(12),z(),R(13,`dt`),K(14,`Triggers`),z(),R(15,`dd`,19),K(16),z()(),A(17,HM,5,0),A(18,WM,5,0),z()),e&2){let e,t=W().$implicit;V(`id`,`defer-detail-`+t.block.id),D(5),q(t.block.id),D(),j((e=t.block.owner)?6:-1,e),D(),j(t.block.since?7:-1),D(),j(t.block.hydration===`hydrated`?8:-1),D(4),q(t.block.rootIds.length||`None rendered`),D(4),q(t.block.triggers.join(`, `)||`None`),D(),j(t.block.transitions?.length?17:-1),D(),j(t.mismatches.length?18:-1)}}function KM(e,t){if(e&1){let e=B();R(0,`li`,4)(1,`button`,5),U(`click`,function(){let t=C(e).$implicit;return w(W(2).showOwner.emit(t.block))})(`focus`,function(){let t=C(e).$implicit;return w(W(2).highlight.emit(t.block))})(`blur`,function(){return C(e),w(W(2).highlight.emit(null))})(`mouseenter`,function(){let t=C(e).$implicit;return w(W(2).highlight.emit(t.block))})(`mouseleave`,function(){return C(e),w(W(2).highlight.emit(null))}),R(2,`span`,6),K(3),z(),R(4,`span`,7),K(5),z(),M(6,MM,3,4,`span`,8,OM),A(8,NM,2,2,`span`,9),A(9,PM,2,0,`span`,9),A(10,FM,2,1,`span`,10),A(11,IM,2,0,`span`,11),R(12,`span`,12),K(13),z()(),R(14,`button`,13),U(`click`,function(){let t=C(e).$implicit;return w(W(2).toggle(t.block.id))}),T(),R(15,`svg`,14),og(16,`path`,15),z(),cs(),R(17,`span`,16),K(18),z()(),A(19,GM,19,9,`div`,17),z()}if(e&2){let e=t.$implicit,n=W(2);D(),k(`aria-disabled`,e.block.owner?null:`true`),D(2),q(e.block.owner?.name??`Unknown component`),D(),Zg(`defer-state-`+e.block.state),D(),q(e.block.state),D(),N(e.notes),D(2),j(e.hydrated?8:-1),D(),j(e.block.hasErrorBlock?9:-1),D(),j(e.timings?10:-1),D(),j(e.mismatches.length?11:-1),D(2),q(e.block.triggers.join(`, `)||`no triggers`),D(),k(`aria-expanded`,n.isOpen(e.block.id))(`aria-controls`,n.isOpen(e.block.id)?`defer-detail-`+e.block.id:null),D(4),J(`Details of the block in `,e.block.owner?.name??`an unknown component`),D(),j(n.isOpen(e.block.id)?19:-1)}}function qM(e,t){if(e&1&&(R(0,`section`,0)(1,`h2`,1),K(2,` Defer blocks `),R(3,`span`,2),K(4),z()(),R(5,`ul`,3),M(6,KM,20,14,`li`,4,DM),z()()),e&2){let e=W();D(4),Y(``,e.rows().length,``,e.truncated()?`+`:``),D(2),N(e.rows())}}function JM(e){return e<1e3?`${e}ms`:`${Number((e/1e3).toFixed(2))}s`}function YM(e){let t=[],n=e.placeholder?.minimumTime;n!=null&&t.push(`placeholder min ${JM(n)}`);let r=[e.loading?.afterTime==null?``:`after ${JM(e.loading.afterTime)}`,e.loading?.minimumTime==null?``:`min ${JM(e.loading.minimumTime)}`].filter(Boolean);return r.length&&t.push(`loading ${r.join(`, `)}`),t.join(` · `)}var XM=class e{blocks=$([]);truncated=$(!1);clockOffset=$(0);showOwner=Q_();mismatches=$([]);showNode=Q_();open=E(new Set);highlight=Q_();now=E(Date.now());waiting=X(()=>this.blocks().some(e=>!!e.since&&(e.state===`placeholder`||e.state===`initial`)));rows=X(()=>{let e=this.now()-this.clockOffset();return this.blocks().map(t=>({block:t,notes:cT({...t,since:t.since||e},e),timings:YM(t),mismatches:this.mismatches().filter(e=>t.rootIds.includes(e.id)),hydrated:t.hydration===`hydrated`?aT(t):``}))});isOpen(e){return this.open().has(e)}toggle(e){this.open.update(t=>{let n=new Set(t);return n.delete(e)||n.add(e),n})}clock(e){return GE(e)}constructor(){let e,t=()=>{clearInterval(e),e=void 0};ac(()=>{if(!this.waiting())return t();e===void 0&&(this.now.set(Date.now()),e=setInterval(()=>this.now.set(Date.now()),1e3))}),S(vs).onDestroy(t)}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-defer-blocks`]],inputs:{blocks:[1,`blocks`],truncated:[1,`truncated`],clockOffset:[1,`clockOffset`],mismatches:[1,`mismatches`]},outputs:{showOwner:`showOwner`,showNode:`showNode`,highlight:`highlight`},decls:1,vars:1,consts:[[`aria-labelledby`,`ct-defer-title`,1,`defer`],[`id`,`ct-defer-title`,1,`defer-title`],[1,`pill`],[1,`defer-list`],[1,`defer-item`],[`type`,`button`,1,`defer-row`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`],[1,`name`,`mono`],[1,`defer-state`],[1,`flag`,3,`class`],[1,`flag`],[1,`timings`],[1,`flag`,`note-failed`],[1,`triggers`,`mono`],[`type`,`button`,1,`defer-toggle`,3,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`d`,`m9 6 6 6-6 6`],[1,`sr-only`],[1,`defer-detail`,3,`id`],[`aria-hidden`,`true`],[1,`mono`],[1,`detail-label`],[1,`transitions`],[1,`when`],[1,`muted`],[1,`mismatch-links`],[`type`,`button`,3,`click`]],template:function(e,t){e&1&&A(0,qM,8,2,`section`,0),e&2&&j(t.rows().length?0:-1)},styles:[`[_nghost-%COMP%] { +}`]})},DM=(e,t)=>t.block.id,OM=(e,t)=>t.kind,kM=(e,t)=>t.id;function AM(e,t){if(e&1&&K(0),e&2){let e=W().$implicit;J(` `,e.label,` `)}}function jM(e,t){if(e&1&&(K(0),R(1,`span`,18),K(2),z()),e&2){let e=W().$implicit;J(` `,e.kind,` `),D(2),J(``,e.seconds,`s`)}}function MM(e,t){if(e&1&&(R(0,`span`,9),A(1,AM,1,1)(2,jM,3,2),z()),e&2){let e=t.$implicit;e_(`note-`+e.kind),k(`title`,e.text),D(),j(e.seconds===void 0?1:2)}}function NM(e,t){if(e&1&&(R(0,`span`,9),K(1),z()),e&2){let e=W().$implicit;k(`title`,e.block.hydratedAt===void 0?`The block hydrated before the devtools attached to the page.`:null),D(),q(e.hydrated)}}function PM(e,t){e&1&&(R(0,`span`,9),K(1,`@error block`),z())}function FM(e,t){if(e&1&&(R(0,`span`,10),K(1),z()),e&2){let e=W().$implicit;D(),q(e.timings)}}function IM(e,t){e&1&&(R(0,`span`,11),K(1,`mismatch`),z())}function LM(e,t){if(e&1&&(R(0,`dt`),K(1,`Template of`),z(),R(2,`dd`,19),K(3),z()),e&2){let e=t;D(3),Y(``,e.name,` <`,e.tag,`>`)}}function RM(e,t){if(e&1&&(R(0,`dt`),K(1,`In this state since`),z(),R(2,`dd`),K(3),z()),e&2){let e=W(2).$implicit,t=W(2);D(3),q(t.clock(e.block.since))}}function zM(e,t){if(e&1&&(R(0,`dt`),K(1,`Hydrated`),z(),R(2,`dd`),K(3),z()),e&2){let e=W(2).$implicit,t=W(2);D(3),J(` `,e.block.hydratedAt===void 0?`Before the devtools attached`:t.clock(e.block.hydratedAt),` `)}}function BM(e,t){if(e&1&&(R(0,`span`,23),K(1),z()),e&2){let e=W().$implicit;D(),q(e.hydration)}}function VM(e,t){if(e&1&&(R(0,`li`)(1,`span`,22),K(2),z(),R(3,`span`,19),K(4),z(),A(5,BM,2,1,`span`,23),z()),e&2){let e=t.$implicit,n=W(5);D(2),q(n.clock(e.at)),D(2),q(e.state),D(),j(e.hydration===`not-configured`?-1:5)}}function HM(e,t){if(e&1&&(R(0,`h3`,20),K(1,`Transitions`),z(),R(2,`ol`,21),M(3,VM,6,3,`li`,null,Zh),z()),e&2){let e=W(2).$implicit;D(3),N(e.block.transitions)}}function UM(e,t){if(e&1){let e=B();R(0,`li`)(1,`button`,25),U(`click`,function(){let t=S(e).$implicit;return C(W(5).showNode.emit(t.id))}),K(2),R(3,`span`,19),K(4),z()()()}if(e&2){let e=t.$implicit;D(2),J(` Show `,e.name,` `),D(2),J(`<`,e.tag,`>`)}}function WM(e,t){if(e&1&&(R(0,`h3`,20),K(1,`Hydration mismatches`),z(),R(2,`ul`,24),M(3,UM,5,2,`li`,null,kM),z()),e&2){let e=W(2).$implicit;D(3),N(e.mismatches)}}function GM(e,t){if(e&1&&(R(0,`div`,17)(1,`dl`)(2,`dt`),K(3,`Block`),z(),R(4,`dd`,19),K(5),z(),A(6,LM,4,2),A(7,RM,4,1),A(8,zM,4,1),R(9,`dt`),K(10,`Root elements`),z(),R(11,`dd`),K(12),z(),R(13,`dt`),K(14,`Triggers`),z(),R(15,`dd`,19),K(16),z()(),A(17,HM,5,0),A(18,WM,5,0),z()),e&2){let e,t=W().$implicit;V(`id`,`defer-detail-`+t.block.id),D(5),q(t.block.id),D(),j((e=t.block.owner)?6:-1,e),D(),j(t.block.since?7:-1),D(),j(t.block.hydration===`hydrated`?8:-1),D(4),q(t.block.rootIds.length||`None rendered`),D(4),q(t.block.triggers.join(`, `)||`None`),D(),j(t.block.transitions?.length?17:-1),D(),j(t.mismatches.length?18:-1)}}function KM(e,t){if(e&1){let e=B();R(0,`li`,4)(1,`button`,5),U(`click`,function(){let t=S(e).$implicit;return C(W(2).showOwner.emit(t.block))})(`focus`,function(){let t=S(e).$implicit;return C(W(2).highlight.emit(t.block))})(`blur`,function(){return S(e),C(W(2).highlight.emit(null))})(`mouseenter`,function(){let t=S(e).$implicit;return C(W(2).highlight.emit(t.block))})(`mouseleave`,function(){return S(e),C(W(2).highlight.emit(null))}),R(2,`span`,6),K(3),z(),R(4,`span`,7),K(5),z(),M(6,MM,3,4,`span`,8,OM),A(8,NM,2,2,`span`,9),A(9,PM,2,0,`span`,9),A(10,FM,2,1,`span`,10),A(11,IM,2,0,`span`,11),R(12,`span`,12),K(13),z()(),R(14,`button`,13),U(`click`,function(){let t=S(e).$implicit;return C(W(2).toggle(t.block.id))}),w(),R(15,`svg`,14),lg(16,`path`,15),z(),cs(),R(17,`span`,16),K(18),z()(),A(19,GM,19,9,`div`,17),z()}if(e&2){let e=t.$implicit,n=W(2);D(),k(`aria-disabled`,e.block.owner?null:`true`),D(2),q(e.block.owner?.name??`Unknown component`),D(),e_(`defer-state-`+e.block.state),D(),q(e.block.state),D(),N(e.notes),D(2),j(e.hydrated?8:-1),D(),j(e.block.hasErrorBlock?9:-1),D(),j(e.timings?10:-1),D(),j(e.mismatches.length?11:-1),D(2),q(e.block.triggers.join(`, `)||`no triggers`),D(),k(`aria-expanded`,n.isOpen(e.block.id))(`aria-controls`,n.isOpen(e.block.id)?`defer-detail-`+e.block.id:null),D(4),J(`Details of the block in `,e.block.owner?.name??`an unknown component`),D(),j(n.isOpen(e.block.id)?19:-1)}}function qM(e,t){if(e&1&&(R(0,`section`,0)(1,`h2`,1),K(2,` Defer blocks `),R(3,`span`,2),K(4),z()(),R(5,`ul`,3),M(6,KM,20,14,`li`,4,DM),z()()),e&2){let e=W();D(4),Y(``,e.rows().length,``,e.truncated()?`+`:``),D(2),N(e.rows())}}function JM(e){return e<1e3?`${e}ms`:`${Number((e/1e3).toFixed(2))}s`}function YM(e){let t=[],n=e.placeholder?.minimumTime;n!=null&&t.push(`placeholder min ${JM(n)}`);let r=[e.loading?.afterTime==null?``:`after ${JM(e.loading.afterTime)}`,e.loading?.minimumTime==null?``:`min ${JM(e.loading.minimumTime)}`].filter(Boolean);return r.length&&t.push(`loading ${r.join(`, `)}`),t.join(` · `)}var XM=class e{blocks=$([]);truncated=$(!1);clockOffset=$(0);showOwner=ov();mismatches=$([]);showNode=ov();open=T(new Set);highlight=ov();now=T(Date.now());waiting=X(()=>this.blocks().some(e=>!!e.since&&(e.state===`placeholder`||e.state===`initial`)));rows=X(()=>{let e=this.now()-this.clockOffset();return this.blocks().map(t=>({block:t,notes:cT({...t,since:t.since||e},e),timings:YM(t),mismatches:this.mismatches().filter(e=>t.rootIds.includes(e.id)),hydrated:t.hydration===`hydrated`?aT(t):``}))});isOpen(e){return this.open().has(e)}toggle(e){this.open.update(t=>{let n=new Set(t);return n.delete(e)||n.add(e),n})}clock(e){return GE(e)}constructor(){let e,t=()=>{clearInterval(e),e=void 0};E(()=>{if(!this.waiting())return t();e===void 0&&(this.now.set(Date.now()),e=setInterval(()=>this.now.set(Date.now()),1e3))}),x(vs).onDestroy(t)}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-defer-blocks`]],inputs:{blocks:[1,`blocks`],truncated:[1,`truncated`],clockOffset:[1,`clockOffset`],mismatches:[1,`mismatches`]},outputs:{showOwner:`showOwner`,showNode:`showNode`,highlight:`highlight`},decls:1,vars:1,consts:[[`aria-labelledby`,`ct-defer-title`,1,`defer`],[`id`,`ct-defer-title`,1,`defer-title`],[1,`pill`],[1,`defer-list`],[1,`defer-item`],[`type`,`button`,1,`defer-row`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`],[1,`name`,`mono`],[1,`defer-state`],[1,`flag`,3,`class`],[1,`flag`],[1,`timings`],[1,`flag`,`note-failed`],[1,`triggers`,`mono`],[`type`,`button`,1,`defer-toggle`,3,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`d`,`m9 6 6 6-6 6`],[1,`sr-only`],[1,`defer-detail`,3,`id`],[`aria-hidden`,`true`],[1,`mono`],[1,`detail-label`],[1,`transitions`],[1,`when`],[1,`muted`],[1,`mismatch-links`],[`type`,`button`,3,`click`]],template:function(e,t){e&1&&A(0,qM,8,2,`section`,0),e&2&&j(t.rows().length?0:-1)},styles:[`[_nghost-%COMP%] { display: block; } @@ -2513,7 +2513,7 @@ button.edit[_ngcontent-%COMP%] { min-width: 0; text-overflow: ellipsis; white-space: nowrap; -}`]})},ZM=(e,t)=>t.id;function QM(e,t){if(e&1&&(F(0,`p`,4),K(1),I()),e&2){let e=W(2);D(),J(`The page has more @for blocks than the `,e.length,` listed.`)}}function $M(e,t){e&1&&(F(0,`span`,9),K(1,`@empty showing`),I())}function eN(e,t){e&1&&(F(0,`span`,10),K(1,`@empty`),I())}function tN(e,t){e&1&&(F(0,`span`,10),K(1,`renders nothing`),I())}function nN(e,t){if(e&1){let e=B();F(0,`li`)(1,`button`,6),H(`click`,function(){let t=C(e).$implicit;return w(W(3).showOwner.emit(t))})(`focus`,function(){let t=C(e).$implicit,n=W(3);return w(n.highlight.emit(n.target(t)))})(`blur`,function(){return C(e),w(W(3).highlight.emit(null))})(`mouseenter`,function(){let t=C(e).$implicit,n=W(3);return w(n.highlight.emit(n.target(t)))})(`mouseleave`,function(){return C(e),w(W(3).highlight.emit(null))}),F(2,`span`,7),K(3),I(),F(4,`span`,8),K(5),I(),A(6,$M,2,0,`span`,9)(7,eN,2,0,`span`,10)(8,tN,2,0,`span`,10),F(9,`span`,11),K(10),I()()()}if(e&2){let e=t.$implicit,n=W(3);D(),k(`aria-disabled`,e.owner?null:`true`),D(2),q(e.owner?.name??`Unknown component`),D(2),Y(` `,e.count,` `,e.count===1?`item`:`items`,` `),D(),j(e.showingEmpty?6:e.hasEmptyBlock?7:e.count===0?8:-1),D(4),q(n.trackLabel(e))}}function rN(e,t){if(e&1&&(F(0,`section`,1)(1,`h2`,2),K(2,` @for blocks `),F(3,`span`,3),K(4),I()(),A(5,QM,2,1,`p`,4),F(6,`ul`,5),M(7,nN,11,6,`li`,null,ZM),I()()),e&2){let e=W(),t=W();D(4),q(t.truncated()?e.length+`+`:e.length),D(),j(t.truncated()?5:-1),D(2),N(e)}}function iN(e,t){e&1&&A(0,rN,9,2,`section`,1),e&2&&j(t.length?0:-1)}function aN(e,t){e&1&&L(0,`app-angular-unavailable`,0),e&2&&P(`page`,W().angular())}var oN={$index:`track $index`,item:`track item`,function:`track expression`},sN=class e{blocks=$(void 0);truncated=$(!1);supported=$(null);angular=$(null);showOwner=Q_();highlight=Q_();target(e){return e.rootIds[0]??e.owner?.id??null}trackLabel(e){return e.track?oN[e.track]:`track unknown`}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-for-blocks`]],inputs:{blocks:[1,`blocks`],truncated:[1,`truncated`],supported:[1,`supported`],angular:[1,`angular`]},outputs:{showOwner:`showOwner`,highlight:`highlight`},decls:2,vars:1,consts:[[`capability`,`forBlocks`,`missing`,``,`compact`,``,1,`for`,3,`page`],[`aria-labelledby`,`ct-for-title`,1,`for`],[`id`,`ct-for-title`,1,`for-title`],[1,`pill`],[1,`note`],[1,`for-list`],[`type`,`button`,1,`for-row`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`],[1,`name`,`mono`],[1,`count`],[1,`flag`,`empty`],[1,`flag`],[1,`track`,`mono`]],template:function(e,t){if(e&1&&A(0,iN,1,1)(1,aN,1,1,`app-angular-unavailable`,0),e&2){let e;j((e=t.blocks())?0:t.supported()===!1?1:-1,e)}},dependencies:[hD],styles:[`[_nghost-%COMP%] { +}`]})},ZM=(e,t)=>t.id;function QM(e,t){if(e&1&&(F(0,`p`,4),K(1),I()),e&2){let e=W(2);D(),J(`The page has more @for blocks than the `,e.length,` listed.`)}}function $M(e,t){e&1&&(F(0,`span`,9),K(1,`@empty showing`),I())}function eN(e,t){e&1&&(F(0,`span`,10),K(1,`@empty`),I())}function tN(e,t){e&1&&(F(0,`span`,10),K(1,`renders nothing`),I())}function nN(e,t){if(e&1){let e=B();F(0,`li`)(1,`button`,6),H(`click`,function(){let t=S(e).$implicit;return C(W(3).showOwner.emit(t))})(`focus`,function(){let t=S(e).$implicit,n=W(3);return C(n.highlight.emit(n.target(t)))})(`blur`,function(){return S(e),C(W(3).highlight.emit(null))})(`mouseenter`,function(){let t=S(e).$implicit,n=W(3);return C(n.highlight.emit(n.target(t)))})(`mouseleave`,function(){return S(e),C(W(3).highlight.emit(null))}),F(2,`span`,7),K(3),I(),F(4,`span`,8),K(5),I(),A(6,$M,2,0,`span`,9)(7,eN,2,0,`span`,10)(8,tN,2,0,`span`,10),F(9,`span`,11),K(10),I()()()}if(e&2){let e=t.$implicit,n=W(3);D(),k(`aria-disabled`,e.owner?null:`true`),D(2),q(e.owner?.name??`Unknown component`),D(2),Y(` `,e.count,` `,e.count===1?`item`:`items`,` `),D(),j(e.showingEmpty?6:e.hasEmptyBlock?7:e.count===0?8:-1),D(4),q(n.trackLabel(e))}}function rN(e,t){if(e&1&&(F(0,`section`,1)(1,`h2`,2),K(2,` @for blocks `),F(3,`span`,3),K(4),I()(),A(5,QM,2,1,`p`,4),F(6,`ul`,5),M(7,nN,11,6,`li`,null,ZM),I()()),e&2){let e=W(),t=W();D(4),q(t.truncated()?e.length+`+`:e.length),D(),j(t.truncated()?5:-1),D(2),N(e)}}function iN(e,t){e&1&&A(0,rN,9,2,`section`,1),e&2&&j(t.length?0:-1)}function aN(e,t){e&1&&L(0,`app-angular-unavailable`,0),e&2&&P(`page`,W().angular())}var oN={$index:`track $index`,item:`track item`,function:`track expression`},sN=class e{blocks=$(void 0);truncated=$(!1);supported=$(null);angular=$(null);showOwner=ov();highlight=ov();target(e){return e.rootIds[0]??e.owner?.id??null}trackLabel(e){return e.track?oN[e.track]:`track unknown`}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-for-blocks`]],inputs:{blocks:[1,`blocks`],truncated:[1,`truncated`],supported:[1,`supported`],angular:[1,`angular`]},outputs:{showOwner:`showOwner`,highlight:`highlight`},decls:2,vars:1,consts:[[`capability`,`forBlocks`,`missing`,``,`compact`,``,1,`for`,3,`page`],[`aria-labelledby`,`ct-for-title`,1,`for`],[`id`,`ct-for-title`,1,`for-title`],[1,`pill`],[1,`note`],[1,`for-list`],[`type`,`button`,1,`for-row`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`],[1,`name`,`mono`],[1,`count`],[1,`flag`,`empty`],[1,`flag`],[1,`track`,`mono`]],template:function(e,t){if(e&1&&A(0,iN,1,1)(1,aN,1,1,`app-angular-unavailable`,0),e&2){let e;j((e=t.blocks())?0:t.supported()===!1?1:-1,e)}},dependencies:[hD],styles:[`[_nghost-%COMP%] { display: block; } @@ -2631,7 +2631,7 @@ button.edit[_ngcontent-%COMP%] { min-width: 0; text-overflow: ellipsis; white-space: nowrap; -}`]})},cN=(e,t)=>t.id;function lN(e,t){if(e&1&&(F(0,`p`,11),K(1),I(),F(2,`h3`,7),K(3,`Still retained`),I(),F(4,`p`,6),K(5,` In a development build, Angular's DI debug data keeps every destroyed component in memory, so Pangular can't tell a leak from that. Check retainers in the Chrome DevTools Memory panel: take a heap snapshot after a few navigations, search for the class and look for a retainer other than Angular's DI debug records. Open subscriptions after destroy are still tracked below. `),I()),e&2){let e=W(),t=W();D(),q(t.plural(e.navigations,`navigation`))}}function uN(e,t){e&1&&(F(0,`p`,6),K(1,` This page cannot track destroyed components. It needs WeakRef, FinalizationRegistry and the Angular debug API of a development build. `),I())}function dN(e,t){if(e&1&&(F(0,`span`,18),K(1),I()),e&2){let e=W().$implicit,t=W(4);D(),q(t.plural(e.subscriptions,`open subscription`))}}function fN(e,t){if(e&1&&(F(0,`li`,13)(1,`span`,14),K(2),I(),F(3,`span`,15),K(4),I(),F(5,`span`,16),K(6),I(),F(7,`span`,17),K(8),I(),A(9,dN,2,1,`span`,18),I()),e&2){let e=t.$implicit,n=W(4);D(2),q(e.name),D(2),q(e.route||`/`),D(2),J(``,n.plural(e.navigations,`navigation`),` ago`),D(2),q(n.ageOf(e)),D(),j(e.subscriptions?9:-1)}}function pN(e,t){if(e&1&&(F(0,`p`,6),K(1),I(),F(2,`ul`,12),M(3,fN,10,5,`li`,13,cN),I()),e&2){let e=W(3);D(),Y(` Destroyed, yet still in memory after at least `,e.minNavigations,` navigations and `,e.minSeconds,` seconds. Take a heap snapshot, search for the class and read its retainers. `),D(2),N(e.retained().slice(0,e.shown))}}function mN(e,t){e&1&&(F(0,`p`,6),K(1,`No destroyed component is still in memory after a few navigations.`),I())}function hN(e,t){if(e&1&&(F(0,`p`,6),K(1),F(2,`span`,19),K(3),I(),K(4,`. Navigate a few times to see whether they stay. `),I()),e&2){let e=W(3);D(),J(` `,e.plural(e.recent().length,`instance`),` destroyed recently and not collected yet: `),D(2),q(e.names(e.recent()))}}function gN(e,t){if(e&1&&(A(0,uN,2,0,`p`,6),F(1,`p`,11),K(2),I(),F(3,`h3`,7),K(4,` Still retained `),F(5,`span`,8),K(6),I()(),A(7,pN,5,2)(8,mN,2,0,`p`,6),A(9,hN,5,2,`p`,6)),e&2){let e=W(),t=W();j(e.support.retention?-1:0),D(2),__(` `,t.plural(e.navigations,`navigation`),` · `,t.retained().length,` still retained · `,t.plural(e.totals.collected,`instance`),` collected `),D(4),q(t.retained().length),D(),j(t.retained().length?7:8),D(2),j(t.recent().length?9:-1)}}function _N(e,t){if(e&1&&(F(0,`p`,6),K(1,` Off the page but not destroyed (detached views, such as a route reuse cache): `),F(2,`span`,19),K(3),I(),K(4,`. `),I()),e&2){let e=W(2);D(3),q(e.names(e.detached()))}}function vN(e,t){if(e&1&&(F(0,`span`,8),K(1),I()),e&2){let e=W();D(),q(e.subscriptions.length)}}function yN(e,t){if(e&1&&(F(0,`span`,15),K(1),I()),e&2){let e=W().$implicit;D(),q(e.source)}}function bN(e,t){if(e&1&&(F(0,`li`,13)(1,`span`,14),K(2),I(),F(3,`span`,16),K(4),I(),F(5,`span`,18),K(6),I(),A(7,yN,2,1,`span`,15),I()),e&2){let e=t.$implicit;D(2),q(e.name),D(2),J(``,e.count,` open`),D(2),J(` `,e.reason===`instance-destroyed`?`instance destroyed`:`no instance left`,` `),D(),j(e.source?7:-1)}}function xN(e,t){if(e&1&&(F(0,`p`,6),K(1,` Still open although the component that made them is gone. Tear them down with takeUntilDestroyed(), DestroyRef.onDestroy or the async pipe. `),I(),F(2,`ul`,12),M(3,bN,8,4,`li`,13,Jh),I()),e&2){let e=W(2),t=W();D(3),N(e.subscriptions.slice(0,t.shown))}}function SN(e,t){e&1&&(F(0,`p`,6),K(1,`No subscription is still open after its component went away.`),I())}function CN(e,t){e&1&&(F(0,`p`,6),K(1,` Subscriptions are tied to component classes only; Angular 20 profiler hooks tie them to instances. `),I())}function wN(e,t){if(e&1&&(A(0,xN,5,0)(1,SN,2,0,`p`,6),A(2,CN,2,0,`p`,6)),e&2){let e=W();j(+!e.subscriptions.length),D(2),j(e.support.instances?-1:2)}}function TN(e,t){e&1&&(F(0,`p`,9),K(1,` Tracking could not start: the page has no RxJS the overlay can load. `),I())}function EN(e,t){e&1&&(F(0,`p`,6),K(1,` Off. Track subscriptions wraps Observable.prototype.subscribe on the page to record which component makes each subscription, until you stop it. Subscriptions made before you start are not seen, so reload or navigate again after starting. `),I())}function DN(e,t){e&1&&L(0,`app-angular-unavailable`,10),e&2&&P(`page`,W(2).angular())}function ON(e,t){if(e&1&&(F(0,`span`,16),K(1),I()),e&2){let e=W().$implicit,t=W(3);D(),q(t.plural(e.subscriptions,`subscription`))}}function kN(e,t){if(e&1){let e=B();F(0,`li`)(1,`button`,20),H(`click`,function(){let t=C(e).$implicit;return w(W(3).showComponent.emit(t.id))})(`focus`,function(){let t=C(e).$implicit;return w(W(3).highlight.emit(t.id))})(`blur`,function(){return C(e),w(W(3).highlight.emit(null))})(`mouseenter`,function(){let t=C(e).$implicit;return w(W(3).highlight.emit(t.id))})(`mouseleave`,function(){return C(e),w(W(3).highlight.emit(null))}),F(2,`span`,14),K(3),I(),F(4,`span`,16),K(5),I(),A(6,ON,2,1,`span`,16),I()()}if(e&2){let e=t.$implicit,n=W(2),r=W();D(3),q(e.name),D(2),q(r.effectsText(e)),D(),j(n.support.subscriptions===`on`?6:-1)}}function AN(e,t){e&1&&(F(0,`p`,6),K(1,` Angular files a component's effects under the template its host sits in, so effects of components side by side in one template show as shared. `),I())}function jN(e,t){if(e&1&&(F(0,`ul`,12),M(1,kN,7,3,`li`,null,cN),I(),A(3,AN,2,0,`p`,6)),e&2){let e=W(),t=W();D(),N(e.components.slice(0,t.shown)),D(2),j(e.components.some(t.hasShared)?3:-1)}}function MN(e,t){e&1&&(F(0,`p`,6),K(1,`No component on the page has a live effect or a tracked subscription.`),I())}function NN(e,t){if(e&1&&(A(0,lN,6,1)(1,gN,10,7),A(2,_N,5,1,`p`,6),F(3,`h3`,7),K(4,` Open subscriptions after destroy `),A(5,vN,2,1,`span`,8),I(),A(6,wN,3,2)(7,TN,2,0,`p`,9)(8,EN,2,0,`p`,6),F(9,`h3`,7),K(10,` Live effects and subscriptions `),F(11,`span`,8),K(12),I()(),A(13,DN,1,1,`app-angular-unavailable`,10),A(14,jN,4,1)(15,MN,2,0,`p`,6)),e&2){let e,n=t,r=W();j(n.support.retention===`dev-di-debug`?0:1),D(2),j(r.detached().length?2:-1),D(3),j(n.support.subscriptions===`on`?5:-1),D(),j((e=n.support.subscriptions)===`on`?6:e===`unavailable`?7:8),D(6),q(n.components.length),D(),j(n.support.effects?-1:13),D(),j(n.components.length?14:15)}}function PN(e,t){e&1&&(F(0,`p`,6),K(1,`No leak data from this page yet. It comes with the next report.`),I())}var FN=20;function IN(e){let t=Math.max(0,Math.round(e/1e3));if(t<120)return`${t} s`;let n=Math.round(t/60);return n<120?`${n} min`:`${Math.round(n/60)} h`}var LN=(e,t,n=`${t}s`)=>`${e} ${e===1?t:n}`,RN=class e{report=$(null);pageId=$(null);rpc=$(null);angular=$(null);now=$(()=>Date.now());showComponent=Q_();highlight=Q_();shown=FN;minNavigations=2;minSeconds=fw/1e3;plural=LN;busy=E(!1);announcement=E(``);tracking=X(()=>this.report()?.support.subscriptions===`on`);split=X(()=>{let e=this.report(),t=[],n=[],r=[];if(!e)return{retained:t,recent:n,detached:r};let i=e.support.retention===`dev-di-debug`;for(let a of e.destroyed)if(a.detached)r.push(a);else if(i)continue;else this.isRetained(e,a)?t.push(a):n.push(a);return{retained:t,recent:n,detached:r}});retained=X(()=>this.split().retained);recent=X(()=>this.split().recent);detached=X(()=>this.split().detached);ageMs(e,t){return Math.max(0,this.now()()-e.reportedAt+(e.at-t.destroyedAt))}isRetained(e,t){return t.navigations>=2&&this.ageMs(e,t)>=1e4}ageOf(e){let t=this.report();return t?`${IN(this.ageMs(t,e))} old`:``}names(e){let t=[...new Set(e.map(e=>e.name))];return t.length>6?`${t.slice(0,6).join(`, `)} and more`:t.join(`, `)}hasShared(e){return!!e.sharedEffects}effectsText(e){let t=LN(e.effects,`effect`);return e.sharedEffects?`${t}, ${e.sharedEffects} shared`:t}async toggle(){let e=this.pageId();if(!e||this.busy())return;let t=!this.tracking();this.busy.set(!0);try{await _T(this.rpc(),`request-leak-tracking`,{pageId:e,on:t}),this.announcement.set(t?`Tracking subscriptions. Reload or navigate to see subscriptions made at start.`:`Stopped tracking subscriptions.`)}catch{this.announcement.set(`Could not reach the page. Try again.`)}finally{this.busy.set(!1)}}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-leaks-section`]],inputs:{report:[1,`report`],pageId:[1,`pageId`],rpc:[1,`rpc`],angular:[1,`angular`],now:[1,`now`]},outputs:{showComponent:`showComponent`,highlight:`highlight`},decls:12,vars:5,consts:[[`aria-labelledby`,`ct-leaks-title`,1,`leaks`],[1,`head`],[`id`,`ct-leaks-title`],[`type`,`button`,1,`track`,3,`click`,`disabled`],[`role`,`status`,1,`sr-only`],[1,`hint`],[1,`note`],[1,`sub`],[1,`pill`],[`role`,`status`,1,`note`],[`capability`,`signalGraph`,`missing`,``,`compact`,``,3,`page`],[1,`stats`],[1,`rows`],[1,`row`],[1,`name`,`mono`],[1,`meta`,`mono`],[1,`count`],[1,`meta`],[1,`flag`,`warn`],[1,`mono`],[`type`,`button`,1,`row`,`live`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`]],template:function(e,t){if(e&1&&(F(0,`section`,0)(1,`div`,1)(2,`h2`,2),K(3,`Leaks`),I(),F(4,`button`,3),H(`click`,function(){return t.toggle()}),K(5,` Track subscriptions `),I(),F(6,`p`,4),K(7),I()(),F(8,`p`,5),K(9,` Components that left the page but are still in memory, and the live effects and RxJS subscriptions of each component. The browser collects garbage when it decides, so a retained instance is a hint: check what holds it in the Chrome DevTools Memory panel. `),I(),A(10,NN,16,7)(11,PN,2,0,`p`,6),I()),e&2){let e;D(4),P(`disabled`,!t.pageId()||!t.report()),k(`aria-pressed`,t.tracking())(`aria-disabled`,t.busy()||null),D(3),q(t.announcement()),D(3),j((e=t.report())?10:11,e)}},dependencies:[hD],styles:[`[_nghost-%COMP%] { +}`]})},cN=(e,t)=>t.id;function lN(e,t){if(e&1&&(F(0,`p`,11),K(1),I(),F(2,`h3`,7),K(3,`Still retained`),I(),F(4,`p`,6),K(5,` In a development build, Angular's DI debug data keeps every destroyed component in memory, so Pangular can't tell a leak from that. Check retainers in the Chrome DevTools Memory panel: take a heap snapshot after a few navigations, search for the class and look for a retainer other than Angular's DI debug records. Open subscriptions after destroy are still tracked below. `),I()),e&2){let e=W(),t=W();D(),q(t.plural(e.navigations,`navigation`))}}function uN(e,t){e&1&&(F(0,`p`,6),K(1,` This page cannot track destroyed components. It needs WeakRef, FinalizationRegistry and the Angular debug API of a development build. `),I())}function dN(e,t){if(e&1&&(F(0,`span`,18),K(1),I()),e&2){let e=W().$implicit,t=W(4);D(),q(t.plural(e.subscriptions,`open subscription`))}}function fN(e,t){if(e&1&&(F(0,`li`,13)(1,`span`,14),K(2),I(),F(3,`span`,15),K(4),I(),F(5,`span`,16),K(6),I(),F(7,`span`,17),K(8),I(),A(9,dN,2,1,`span`,18),I()),e&2){let e=t.$implicit,n=W(4);D(2),q(e.name),D(2),q(e.route||`/`),D(2),J(``,n.plural(e.navigations,`navigation`),` ago`),D(2),q(n.ageOf(e)),D(),j(e.subscriptions?9:-1)}}function pN(e,t){if(e&1&&(F(0,`p`,6),K(1),I(),F(2,`ul`,12),M(3,fN,10,5,`li`,13,cN),I()),e&2){let e=W(3);D(),Y(` Destroyed, yet still in memory after at least `,e.minNavigations,` navigations and `,e.minSeconds,` seconds. Take a heap snapshot, search for the class and read its retainers. `),D(2),N(e.retained().slice(0,e.shown))}}function mN(e,t){e&1&&(F(0,`p`,6),K(1,`No destroyed component is still in memory after a few navigations.`),I())}function hN(e,t){if(e&1&&(F(0,`p`,6),K(1),F(2,`span`,19),K(3),I(),K(4,`. Navigate a few times to see whether they stay. `),I()),e&2){let e=W(3);D(),J(` `,e.plural(e.recent().length,`instance`),` destroyed recently and not collected yet: `),D(2),q(e.names(e.recent()))}}function gN(e,t){if(e&1&&(A(0,uN,2,0,`p`,6),F(1,`p`,11),K(2),I(),F(3,`h3`,7),K(4,` Still retained `),F(5,`span`,8),K(6),I()(),A(7,pN,5,2)(8,mN,2,0,`p`,6),A(9,hN,5,2,`p`,6)),e&2){let e=W(),t=W();j(e.support.retention?-1:0),D(2),T_(` `,t.plural(e.navigations,`navigation`),` · `,t.retained().length,` still retained · `,t.plural(e.totals.collected,`instance`),` collected `),D(4),q(t.retained().length),D(),j(t.retained().length?7:8),D(2),j(t.recent().length?9:-1)}}function _N(e,t){if(e&1&&(F(0,`p`,6),K(1,` Off the page but not destroyed (detached views, such as a route reuse cache): `),F(2,`span`,19),K(3),I(),K(4,`. `),I()),e&2){let e=W(2);D(3),q(e.names(e.detached()))}}function vN(e,t){if(e&1&&(F(0,`span`,8),K(1),I()),e&2){let e=W();D(),q(e.subscriptions.length)}}function yN(e,t){if(e&1&&(F(0,`span`,15),K(1),I()),e&2){let e=W().$implicit;D(),q(e.source)}}function bN(e,t){if(e&1&&(F(0,`li`,13)(1,`span`,14),K(2),I(),F(3,`span`,16),K(4),I(),F(5,`span`,18),K(6),I(),A(7,yN,2,1,`span`,15),I()),e&2){let e=t.$implicit;D(2),q(e.name),D(2),J(``,e.count,` open`),D(2),J(` `,e.reason===`instance-destroyed`?`instance destroyed`:`no instance left`,` `),D(),j(e.source?7:-1)}}function xN(e,t){if(e&1&&(F(0,`p`,6),K(1,` Still open although the component that made them is gone. Tear them down with takeUntilDestroyed(), DestroyRef.onDestroy or the async pipe. `),I(),F(2,`ul`,12),M(3,bN,8,4,`li`,13,Zh),I()),e&2){let e=W(2),t=W();D(3),N(e.subscriptions.slice(0,t.shown))}}function SN(e,t){e&1&&(F(0,`p`,6),K(1,`No subscription is still open after its component went away.`),I())}function CN(e,t){e&1&&(F(0,`p`,6),K(1,` Subscriptions are tied to component classes only; Angular 20 profiler hooks tie them to instances. `),I())}function wN(e,t){if(e&1&&(A(0,xN,5,0)(1,SN,2,0,`p`,6),A(2,CN,2,0,`p`,6)),e&2){let e=W();j(+!e.subscriptions.length),D(2),j(e.support.instances?-1:2)}}function TN(e,t){e&1&&(F(0,`p`,9),K(1,` Tracking could not start: the page has no RxJS the overlay can load. `),I())}function EN(e,t){e&1&&(F(0,`p`,6),K(1,` Off. Track subscriptions wraps Observable.prototype.subscribe on the page to record which component makes each subscription, until you stop it. Subscriptions made before you start are not seen, so reload or navigate again after starting. `),I())}function DN(e,t){e&1&&L(0,`app-angular-unavailable`,10),e&2&&P(`page`,W(2).angular())}function ON(e,t){if(e&1&&(F(0,`span`,16),K(1),I()),e&2){let e=W().$implicit,t=W(3);D(),q(t.plural(e.subscriptions,`subscription`))}}function kN(e,t){if(e&1){let e=B();F(0,`li`)(1,`button`,20),H(`click`,function(){let t=S(e).$implicit;return C(W(3).showComponent.emit(t.id))})(`focus`,function(){let t=S(e).$implicit;return C(W(3).highlight.emit(t.id))})(`blur`,function(){return S(e),C(W(3).highlight.emit(null))})(`mouseenter`,function(){let t=S(e).$implicit;return C(W(3).highlight.emit(t.id))})(`mouseleave`,function(){return S(e),C(W(3).highlight.emit(null))}),F(2,`span`,14),K(3),I(),F(4,`span`,16),K(5),I(),A(6,ON,2,1,`span`,16),I()()}if(e&2){let e=t.$implicit,n=W(2),r=W();D(3),q(e.name),D(2),q(r.effectsText(e)),D(),j(n.support.subscriptions===`on`?6:-1)}}function AN(e,t){e&1&&(F(0,`p`,6),K(1,` Angular files a component's effects under the template its host sits in, so effects of components side by side in one template show as shared. `),I())}function jN(e,t){if(e&1&&(F(0,`ul`,12),M(1,kN,7,3,`li`,null,cN),I(),A(3,AN,2,0,`p`,6)),e&2){let e=W(),t=W();D(),N(e.components.slice(0,t.shown)),D(2),j(e.components.some(t.hasShared)?3:-1)}}function MN(e,t){e&1&&(F(0,`p`,6),K(1,`No component on the page has a live effect or a tracked subscription.`),I())}function NN(e,t){if(e&1&&(A(0,lN,6,1)(1,gN,10,7),A(2,_N,5,1,`p`,6),F(3,`h3`,7),K(4,` Open subscriptions after destroy `),A(5,vN,2,1,`span`,8),I(),A(6,wN,3,2)(7,TN,2,0,`p`,9)(8,EN,2,0,`p`,6),F(9,`h3`,7),K(10,` Live effects and subscriptions `),F(11,`span`,8),K(12),I()(),A(13,DN,1,1,`app-angular-unavailable`,10),A(14,jN,4,1)(15,MN,2,0,`p`,6)),e&2){let e,n=t,r=W();j(n.support.retention===`dev-di-debug`?0:1),D(2),j(r.detached().length?2:-1),D(3),j(n.support.subscriptions===`on`?5:-1),D(),j((e=n.support.subscriptions)===`on`?6:e===`unavailable`?7:8),D(6),q(n.components.length),D(),j(n.support.effects?-1:13),D(),j(n.components.length?14:15)}}function PN(e,t){e&1&&(F(0,`p`,6),K(1,`No leak data from this page yet. It comes with the next report.`),I())}var FN=20;function IN(e){let t=Math.max(0,Math.round(e/1e3));if(t<120)return`${t} s`;let n=Math.round(t/60);return n<120?`${n} min`:`${Math.round(n/60)} h`}var LN=(e,t,n=`${t}s`)=>`${e} ${e===1?t:n}`,RN=class e{report=$(null);pageId=$(null);rpc=$(null);angular=$(null);now=$(()=>Date.now());showComponent=ov();highlight=ov();shown=FN;minNavigations=2;minSeconds=fw/1e3;plural=LN;busy=T(!1);announcement=T(``);tracking=X(()=>this.report()?.support.subscriptions===`on`);split=X(()=>{let e=this.report(),t=[],n=[],r=[];if(!e)return{retained:t,recent:n,detached:r};let i=e.support.retention===`dev-di-debug`;for(let a of e.destroyed)if(a.detached)r.push(a);else if(i)continue;else this.isRetained(e,a)?t.push(a):n.push(a);return{retained:t,recent:n,detached:r}});retained=X(()=>this.split().retained);recent=X(()=>this.split().recent);detached=X(()=>this.split().detached);ageMs(e,t){return Math.max(0,this.now()()-e.reportedAt+(e.at-t.destroyedAt))}isRetained(e,t){return t.navigations>=2&&this.ageMs(e,t)>=1e4}ageOf(e){let t=this.report();return t?`${IN(this.ageMs(t,e))} old`:``}names(e){let t=[...new Set(e.map(e=>e.name))];return t.length>6?`${t.slice(0,6).join(`, `)} and more`:t.join(`, `)}hasShared(e){return!!e.sharedEffects}effectsText(e){let t=LN(e.effects,`effect`);return e.sharedEffects?`${t}, ${e.sharedEffects} shared`:t}async toggle(){let e=this.pageId();if(!e||this.busy())return;let t=!this.tracking();this.busy.set(!0);try{await _T(this.rpc(),`request-leak-tracking`,{pageId:e,on:t}),this.announcement.set(t?`Tracking subscriptions. Reload or navigate to see subscriptions made at start.`:`Stopped tracking subscriptions.`)}catch{this.announcement.set(`Could not reach the page. Try again.`)}finally{this.busy.set(!1)}}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-leaks-section`]],inputs:{report:[1,`report`],pageId:[1,`pageId`],rpc:[1,`rpc`],angular:[1,`angular`],now:[1,`now`]},outputs:{showComponent:`showComponent`,highlight:`highlight`},decls:12,vars:5,consts:[[`aria-labelledby`,`ct-leaks-title`,1,`leaks`],[1,`head`],[`id`,`ct-leaks-title`],[`type`,`button`,1,`track`,3,`click`,`disabled`],[`role`,`status`,1,`sr-only`],[1,`hint`],[1,`note`],[1,`sub`],[1,`pill`],[`role`,`status`,1,`note`],[`capability`,`signalGraph`,`missing`,``,`compact`,``,3,`page`],[1,`stats`],[1,`rows`],[1,`row`],[1,`name`,`mono`],[1,`meta`,`mono`],[1,`count`],[1,`meta`],[1,`flag`,`warn`],[1,`mono`],[`type`,`button`,1,`row`,`live`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`]],template:function(e,t){if(e&1&&(F(0,`section`,0)(1,`div`,1)(2,`h2`,2),K(3,`Leaks`),I(),F(4,`button`,3),H(`click`,function(){return t.toggle()}),K(5,` Track subscriptions `),I(),F(6,`p`,4),K(7),I()(),F(8,`p`,5),K(9,` Components that left the page but are still in memory, and the live effects and RxJS subscriptions of each component. The browser collects garbage when it decides, so a retained instance is a hint: check what holds it in the Chrome DevTools Memory panel. `),I(),A(10,NN,16,7)(11,PN,2,0,`p`,6),I()),e&2){let e;D(4),P(`disabled`,!t.pageId()||!t.report()),k(`aria-pressed`,t.tracking())(`aria-disabled`,t.busy()||null),D(3),q(t.announcement()),D(3),j((e=t.report())?10:11,e)}},dependencies:[hD],styles:[`[_nghost-%COMP%] { display: block; } @@ -2787,7 +2787,7 @@ h2[_ngcontent-%COMP%] { border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); color: var(--%NS%warn-text); -}`]})},zN=12,BN=900;function VN(e){for(let t=e.parentElement;t;t=t.parentElement){let e=getComputedStyle(t);if(/(auto|scroll|overlay)/.test(e.overflowY))return t}return null}var HN=class{options;injector=S(gs);visibleTop=E(0);viewport=E(BN);rowHeight;host=null;scroller=null;detach=null;enabled;range;padTop;padBottom;constructor(e){this.options=e,this.rowHeight=E(e.estimate);let t=e.min??300;this.enabled=X(()=>e.count()>t),this.range=X(()=>{let t=e.count();if(!this.enabled())return{start:0,end:t};let n=this.rowHeight(),r=this.viewport(),i=Math.max(0,Math.min(this.visibleTop(),t*n-r)),a=Math.max(0,Math.min(t-1,Math.floor(i/n)-zN));return{start:a,end:Math.min(t,Math.max(a,Math.ceil((i+r)/n)+zN))}}),this.padTop=X(()=>this.enabled()?this.range().start*this.rowHeight():0),this.padBottom=X(()=>this.enabled()?(e.count()-this.range().end)*this.rowHeight():0),ac(()=>{e.count(),ed(()=>this.update(),{injector:this.injector})}),S(vs).onDestroy(()=>this.detach?.())}get count(){return this.options.count()}rendered(e){let{start:t,end:n}=this.range();return e>=t&&ethis.update();n.addEventListener(`scroll`,r,{passive:!0}),window.addEventListener(`resize`,r),this.detach=()=>{n.removeEventListener(`scroll`,r),window.removeEventListener(`resize`,r)},this.update()}update(){let e=this.host;if(e){if(this.scroller===e)this.place(e.scrollTop,e.clientHeight);else{let t=this.scroller?this.scroller.getBoundingClientRect().top:0,n=this.scroller?this.scroller.clientHeight:window.innerHeight;this.place(t-e.getBoundingClientRect().top,n)}this.options.fixed||this.measure()}}place(e,t){this.visibleTop.set(e),this.viewport.set(t>0?t:BN)}measure(){let e=this.host?.querySelectorAll(`[data-vindex]`);if(!e||e.length<2)return;let t=e[0].getBoundingClientRect(),n=(e[e.length-1].getBoundingClientRect().bottom-t.top)/e.length;n>4&&Math.abs(n-this.rowHeight())>1&&this.rowHeight.set(n)}reveal(e,t){if(this.enabled()&&!this.rendered(e)){let t=e*this.rowHeight(),n=this.viewport(),r=Math.max(0,t-n/2);if(this.place(r,n),this.host&&this.scroller===this.host)this.host.scrollTop=r;else if(this.host){let e=this.scroller?this.scroller.getBoundingClientRect().top:0,t=this.host.getBoundingClientRect().top-e+r;this.scroller?this.scroller.scrollTop+=t:window.scrollBy(0,t)}}t&&ed(t,{injector:this.injector})}};function UN(e){let t=e.ownerDocument.defaultView;if(!t)return null;for(let n=e.parentElement;n&&n!==e.ownerDocument.documentElement&&n!==e.ownerDocument.body;n=n.parentElement)if(/(auto|scroll|overlay)/.test(t.getComputedStyle(n).overflowY))return n;return null}var WN=e=>{let t=parseFloat(e);return Number.isFinite(t)?t:0};function GN(e,t=8){let n=e.ownerDocument.defaultView;if(!n)return e.offsetHeight+t;let r=UN(e),i=r?n.getComputedStyle(r):null,a=i?WN(i.paddingTop):0,o=i?WN(i.scrollPaddingTop):0,s=WN(n.getComputedStyle(e).top);return Math.max(0,Math.ceil(a+s+e.offsetHeight+t-o))}function KN(e,t,n=8){let r=UN(e),i=t.getBoundingClientRect().bottom+n-e.getBoundingClientRect().top;i<=0||(r?r.scrollTop-=i:e.ownerDocument.defaultView?.scrollBy(0,-i))}var qN=[`input`];function JN(e,t){if(e&1){let e=B();R(0,`button`,9),U(`click`,function(){return C(e),w(W().save())}),T(),R(1,`svg`,10),og(2,`path`,11),z(),cs(),R(3,`span`,12),K(4,`Save`),z()()}e&2&&k(`aria-label`,`Save filter `+W().query())}function YN(e,t){if(e&1){let e=B();R(0,`li`,14)(1,`button`,15),U(`click`,function(){let t=C(e).$implicit;return w(W(2).apply(t))}),K(2),z(),R(3,`button`,16),U(`click`,function(){let t=C(e).$implicit;return w(W(2).remove(t))}),T(),R(4,`svg`,10),og(5,`path`,17),z()()()}if(e&2){let e=t.$implicit,n=W(2);G(`active`,e===n.query()),D(),k(`aria-pressed`,e===n.query())(`title`,e),D(),J(` `,e,` `),D(),k(`aria-label`,`Remove saved filter `+e)}}function XN(e,t){if(e&1&&(R(0,`ul`,7),M(1,YN,6,6,`li`,13,Yh),z()),e&2){let e=W();D(),N(e.saved())}}function ZN(e,t){if(e&1&&(R(0,`span`,8),K(1),z()),e&2){let e=W();D(),q(e.announcement())}}var QN=`pangular-pref:filters`,$N=200;function eP(e){try{let t=localStorage.getItem(`${QN}:${e}`),n=t?JSON.parse(t):[];if(!Array.isArray(n))return[];let r=n.filter(e=>typeof e==`string`&&!!e.trim()&&e.length<=$N);return[...new Set(r)].slice(-8)}catch{return[]}}function tP(e,t){try{t.length?localStorage.setItem(`${QN}:${e}`,JSON.stringify(t)):localStorage.removeItem(`${QN}:${e}`)}catch{}}var nP=class e{value=rv(``);label=$(`Filter`);placeholder=$(`Filter`);inputId=$(null);describedBy=$(null);saveKey=$(null);input=av.required(`input`);host=S(kl);injector=S(gs);announcement=E(``);query=X(()=>this.value().trim());saved=Q(()=>{let e=this.saveKey();return e?eP(e):[]});canSave=X(()=>{let e=this.query();return!!this.saveKey()&&!!e&&e.length<=$N&&!this.saved().includes(e)&&this.saved().length<8});focus(){this.input().nativeElement.focus()}clear(e){this.value()&&(e.preventDefault(),e.stopPropagation(),this.value.set(``))}save(){let e=this.saveKey(),t=this.query();if(!e||!this.canSave())return;let n=[...this.saved(),t];this.saved.set(n),tP(e,n),this.say(`Filter ${t} saved.`),this.focusAfterRender(`.chip:last-child .apply`)}apply(e){this.value.set(this.query()===e?``:e)}remove(e){let t=this.saveKey();if(!t)return;let n=this.saved().indexOf(e),r=this.saved().filter(t=>t!==e);if(this.saved.set(r),tP(t,r),this.say(`Saved filter ${e} removed.`),!r.length){this.focus();return}let i=Math.min(n,r.length-1)+1;this.focusAfterRender(`.chip:nth-child(${i}) .apply`)}focusAfterRender(e){ed(()=>{let t=this.host.nativeElement.querySelector(e);t?t.focus():this.focus()},{injector:this.injector})}say(e){this.announcement.update(t=>t===e?`${e} `:e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-search-field`]],viewQuery:function(e,t){e&1&&Dg(t.input,qN,5),e&2&&Og()},inputs:{value:[1,`value`],label:[1,`label`],placeholder:[1,`placeholder`],inputId:[1,`inputId`],describedBy:[1,`describedBy`],saveKey:[1,`saveKey`]},outputs:{value:`valueChange`},decls:9,vars:8,consts:[[`input`,``],[1,`box`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`icon`],[`cx`,`11`,`cy`,`11`,`r`,`7`],[`d`,`m20 20-3.5-3.5`],[`type`,`search`,`autocomplete`,`off`,`spellcheck`,`false`,3,`input`,`keydown.escape`,`placeholder`,`value`],[`type`,`button`,1,`save`],[`aria-label`,`Saved filters`,1,`chips`],[`role`,`status`,1,`sr-only`],[`type`,`button`,1,`save`,3,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`d`,`M6 4h12v16l-6-4-6 4z`],[1,`save-text`],[1,`chip`,3,`active`],[1,`chip`],[`type`,`button`,1,`apply`,3,`click`],[`type`,`button`,1,`remove`,3,`click`],[`d`,`M7 7l10 10M17 7 7 17`]],template:function(e,t){e&1&&(R(0,`div`,1),T(),R(1,`svg`,2),og(2,`circle`,3)(3,`path`,4),z(),cs(),R(4,`input`,5,0),U(`input`,function(e){return t.value.set(e.target.value)})(`keydown.escape`,function(e){return t.clear(e)}),z()(),A(6,JN,5,1,`button`,6),A(7,XN,3,0,`ul`,7),A(8,ZN,2,1,`span`,8)),e&2&&(D(4),V(`placeholder`,t.placeholder())(`value`,t.value()),k(`id`,t.inputId())(`aria-label`,t.label())(`aria-describedby`,t.describedBy()),D(2),j(t.canSave()?6:-1),D(),j(t.saveKey()&&t.saved().length?7:-1),D(),j(t.saveKey()?8:-1))},styles:[`[_nghost-%COMP%] { +}`]})},zN=12,BN=900;function VN(e){for(let t=e.parentElement;t;t=t.parentElement){let e=getComputedStyle(t);if(/(auto|scroll|overlay)/.test(e.overflowY))return t}return null}var HN=class{options;injector=x(gs);visibleTop=T(0);viewport=T(BN);rowHeight;host=null;scroller=null;detach=null;enabled;range;padTop;padBottom;constructor(e){this.options=e,this.rowHeight=T(e.estimate);let t=e.min??300;this.enabled=X(()=>e.count()>t),this.range=X(()=>{let t=e.count();if(!this.enabled())return{start:0,end:t};let n=this.rowHeight(),r=this.viewport(),i=Math.max(0,Math.min(this.visibleTop(),t*n-r)),a=Math.max(0,Math.min(t-1,Math.floor(i/n)-zN));return{start:a,end:Math.min(t,Math.max(a,Math.ceil((i+r)/n)+zN))}}),this.padTop=X(()=>this.enabled()?this.range().start*this.rowHeight():0),this.padBottom=X(()=>this.enabled()?(e.count()-this.range().end)*this.rowHeight():0),E(()=>{e.count(),id(()=>this.update(),{injector:this.injector})}),x(vs).onDestroy(()=>this.detach?.())}get count(){return this.options.count()}rendered(e){let{start:t,end:n}=this.range();return e>=t&&ethis.update();n.addEventListener(`scroll`,r,{passive:!0}),window.addEventListener(`resize`,r),this.detach=()=>{n.removeEventListener(`scroll`,r),window.removeEventListener(`resize`,r)},this.update()}update(){let e=this.host;if(e){if(this.scroller===e)this.place(e.scrollTop,e.clientHeight);else{let t=this.scroller?this.scroller.getBoundingClientRect().top:0,n=this.scroller?this.scroller.clientHeight:window.innerHeight;this.place(t-e.getBoundingClientRect().top,n)}this.options.fixed||this.measure()}}place(e,t){this.visibleTop.set(e),this.viewport.set(t>0?t:BN)}measure(){let e=this.host?.querySelectorAll(`[data-vindex]`);if(!e||e.length<2)return;let t=e[0].getBoundingClientRect(),n=(e[e.length-1].getBoundingClientRect().bottom-t.top)/e.length;n>4&&Math.abs(n-this.rowHeight())>1&&this.rowHeight.set(n)}reveal(e,t){if(this.enabled()&&!this.rendered(e)){let t=e*this.rowHeight(),n=this.viewport(),r=Math.max(0,t-n/2);if(this.place(r,n),this.host&&this.scroller===this.host)this.host.scrollTop=r;else if(this.host){let e=this.scroller?this.scroller.getBoundingClientRect().top:0,t=this.host.getBoundingClientRect().top-e+r;this.scroller?this.scroller.scrollTop+=t:window.scrollBy(0,t)}}t&&id(t,{injector:this.injector})}};function UN(e){let t=e.ownerDocument.defaultView;if(!t)return null;for(let n=e.parentElement;n&&n!==e.ownerDocument.documentElement&&n!==e.ownerDocument.body;n=n.parentElement)if(/(auto|scroll|overlay)/.test(t.getComputedStyle(n).overflowY))return n;return null}var WN=e=>{let t=parseFloat(e);return Number.isFinite(t)?t:0};function GN(e,t=8){let n=e.ownerDocument.defaultView;if(!n)return e.offsetHeight+t;let r=UN(e),i=r?n.getComputedStyle(r):null,a=i?WN(i.paddingTop):0,o=i?WN(i.scrollPaddingTop):0,s=WN(n.getComputedStyle(e).top);return Math.max(0,Math.ceil(a+s+e.offsetHeight+t-o))}function KN(e,t,n=8){let r=UN(e),i=t.getBoundingClientRect().bottom+n-e.getBoundingClientRect().top;i<=0||(r?r.scrollTop-=i:e.ownerDocument.defaultView?.scrollBy(0,-i))}var qN=[`input`];function JN(e,t){if(e&1){let e=B();R(0,`button`,9),U(`click`,function(){return S(e),C(W().save())}),w(),R(1,`svg`,10),lg(2,`path`,11),z(),cs(),R(3,`span`,12),K(4,`Save`),z()()}e&2&&k(`aria-label`,`Save filter `+W().query())}function YN(e,t){if(e&1){let e=B();R(0,`li`,14)(1,`button`,15),U(`click`,function(){let t=S(e).$implicit;return C(W(2).apply(t))}),K(2),z(),R(3,`button`,16),U(`click`,function(){let t=S(e).$implicit;return C(W(2).remove(t))}),w(),R(4,`svg`,10),lg(5,`path`,17),z()()()}if(e&2){let e=t.$implicit,n=W(2);G(`active`,e===n.query()),D(),k(`aria-pressed`,e===n.query())(`title`,e),D(),J(` `,e,` `),D(),k(`aria-label`,`Remove saved filter `+e)}}function XN(e,t){if(e&1&&(R(0,`ul`,7),M(1,YN,6,6,`li`,13,Qh),z()),e&2){let e=W();D(),N(e.saved())}}function ZN(e,t){if(e&1&&(R(0,`span`,8),K(1),z()),e&2){let e=W();D(),q(e.announcement())}}var QN=`pangular-pref:filters`,$N=200;function eP(e){try{let t=localStorage.getItem(`${QN}:${e}`),n=t?JSON.parse(t):[];if(!Array.isArray(n))return[];let r=n.filter(e=>typeof e==`string`&&!!e.trim()&&e.length<=$N);return[...new Set(r)].slice(-8)}catch{return[]}}function tP(e,t){try{t.length?localStorage.setItem(`${QN}:${e}`,JSON.stringify(t)):localStorage.removeItem(`${QN}:${e}`)}catch{}}var nP=class e{value=dv(``);label=$(`Filter`);placeholder=$(`Filter`);inputId=$(null);describedBy=$(null);saveKey=$(null);input=pv.required(`input`);host=x(Ol);injector=x(gs);announcement=T(``);query=X(()=>this.value().trim());saved=Q(()=>{let e=this.saveKey();return e?eP(e):[]});canSave=X(()=>{let e=this.query();return!!this.saveKey()&&!!e&&e.length<=$N&&!this.saved().includes(e)&&this.saved().length<8});focus(){this.input().nativeElement.focus()}clear(e){this.value()&&(e.preventDefault(),e.stopPropagation(),this.value.set(``))}save(){let e=this.saveKey(),t=this.query();if(!e||!this.canSave())return;let n=[...this.saved(),t];this.saved.set(n),tP(e,n),this.say(`Filter ${t} saved.`),this.focusAfterRender(`.chip:last-child .apply`)}apply(e){this.value.set(this.query()===e?``:e)}remove(e){let t=this.saveKey();if(!t)return;let n=this.saved().indexOf(e),r=this.saved().filter(t=>t!==e);if(this.saved.set(r),tP(t,r),this.say(`Saved filter ${e} removed.`),!r.length){this.focus();return}let i=Math.min(n,r.length-1)+1;this.focusAfterRender(`.chip:nth-child(${i}) .apply`)}focusAfterRender(e){id(()=>{let t=this.host.nativeElement.querySelector(e);t?t.focus():this.focus()},{injector:this.injector})}say(e){this.announcement.update(t=>t===e?`${e} `:e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=O({type:e,selectors:[[`app-search-field`]],viewQuery:function(e,t){e&1&&Ag(t.input,qN,5),e&2&&jg()},inputs:{value:[1,`value`],label:[1,`label`],placeholder:[1,`placeholder`],inputId:[1,`inputId`],describedBy:[1,`describedBy`],saveKey:[1,`saveKey`]},outputs:{value:`valueChange`},decls:9,vars:8,consts:[[`input`,``],[1,`box`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`icon`],[`cx`,`11`,`cy`,`11`,`r`,`7`],[`d`,`m20 20-3.5-3.5`],[`type`,`search`,`autocomplete`,`off`,`spellcheck`,`false`,3,`input`,`keydown.escape`,`placeholder`,`value`],[`type`,`button`,1,`save`],[`aria-label`,`Saved filters`,1,`chips`],[`role`,`status`,1,`sr-only`],[`type`,`button`,1,`save`,3,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`d`,`M6 4h12v16l-6-4-6 4z`],[1,`save-text`],[1,`chip`,3,`active`],[1,`chip`],[`type`,`button`,1,`apply`,3,`click`],[`type`,`button`,1,`remove`,3,`click`],[`d`,`M7 7l10 10M17 7 7 17`]],template:function(e,t){e&1&&(R(0,`div`,1),w(),R(1,`svg`,2),lg(2,`circle`,3)(3,`path`,4),z(),cs(),R(4,`input`,5,0),U(`input`,function(e){return t.value.set(e.target.value)})(`keydown.escape`,function(e){return t.clear(e)}),z()(),A(6,JN,5,1,`button`,6),A(7,XN,3,0,`ul`,7),A(8,ZN,2,1,`span`,8)),e&2&&(D(4),V(`placeholder`,t.placeholder())(`value`,t.value()),k(`id`,t.inputId())(`aria-label`,t.label())(`aria-describedby`,t.describedBy()),D(2),j(t.canSave()?6:-1),D(),j(t.saveKey()&&t.saved().length?7:-1),D(),j(t.saveKey()?8:-1))},styles:[`[_nghost-%COMP%] { display: flex; flex: 1 1 220px; flex-wrap: wrap; @@ -2955,7 +2955,7 @@ input[_ngcontent-%COMP%]:focus { .save[_ngcontent-%COMP%] { transition: none; } -}`]})},rP=[`filterInput`],iP=[`treeEl`],aP=[`propFilterInput`],oP=()=>[],sP=e=>({$implicit:e}),cP=e=>({kind:`component`,id:e}),lP=(e,t)=>t.row.node.id,uP=(e,t)=>t.outlet+t.route,dP=(e,t)=>t+e;function fP(e,t){return this.sourceKey(t)}var pP=(e,t)=>t.formId,mP=(e,t)=>t.name+t.index,hP=(e,t)=>t.name,gP=(e,t)=>t.id,_P=(e,t)=>t.token+e;function vP(e,t){if(e&1){let e=B();F(0,`span`,37),K(1,`Page`),I(),F(2,`app-select`,38),H(`valueChange`,function(t){return C(e),w(W(2).selectPage(t))}),I()}if(e&2){let e=W(2);D(2),P(`options`,e.pageOptions())(`value`,e.page()?.pageId??null)}}function yP(e,t){if(e&1){let e=B();F(0,`button`,39),H(`click`,function(){return C(e),w(W(2).toggleDirectiveHosts())}),T(),F(1,`svg`,12),L(2,`path`,40)(3,`path`,41),I(),cs(),F(4,`span`,15),K(5,`Directive hosts`),I()()}e&2&&k(`aria-pressed`,W(2).showDirectiveHosts())}function bP(e,t){if(e&1){let e=B();F(0,`button`,42),H(`click`,function(){C(e);let t=W(2);return w(t.picking()?t.cancelPick():t.pick())}),T(),F(1,`svg`,12),L(2,`path`,43),I(),cs(),F(3,`span`,15),K(4),I()()}if(e&2){let e=W(2);G(`on`,e.picking()),k(`title`,e.pickLabel()),D(4),q(e.pickLabel())}}function xP(e,t){if(e&1&&(F(0,`p`,21),K(1),I()),e&2){let e=W(2);D(),q(e.pickMessage())}}function SP(e,t){if(e&1&&(F(0,`p`,22),K(1),I()),e&2){let e=W(2);D(),q(e.truncationText())}}function CP(e,t){e&1&&(F(0,`p`,45),K(1,`The filter only searches the components the tree lists.`),I())}function wP(e,t){e&1&&(F(0,`p`,45),K(1,`Directive hosts are hidden, so they are not searched.`),I())}function TP(e,t){if(e&1){let e=B();F(0,`div`,26)(1,`p`,44),K(2),I(),A(3,CP,2,0,`p`,45),A(4,wP,2,0,`p`,45),F(5,`button`,46),H(`click`,function(){return C(e),w(W(2).clearFilter())}),K(6,`Clear filters`),I()()}if(e&2){let e=W(2);D(2),J(`No components match “`,e.filter().trim(),`”`),D(),j(e.page().truncated?3:-1),D(),j(!e.showDirectiveHosts()&&e.page().directiveHostCount?4:-1)}}function EP(e,t){if(e&1&&(F(0,`p`,27),K(1),I()),e&2){let e=W(2);D(),J(` `,e.rows().length,` rows. Rows render as you scroll, so the browser's find only sees the ones near view; the filter above searches them all. `)}}function DP(e,t){if(e&1){let e=B();F(0,`span`,54),H(`click`,function(t){C(e),W();let n=E_(0);return w(W(2).toggle(n.node.id,t))}),T(),F(1,`svg`,55),L(2,`path`,56),I()()}e&2&&(W(),G(`open`,E_(0).expanded))}function OP(e,t){e&1&&L(0,`span`,49)}function kP(e,t){if(e&1&&(F(0,`span`,57),K(1),I(),F(2,`span`,58),K(3),I(),F(4,`span`,25),K(5,`directive host`),I()),e&2){W();let e=E_(0),t=W(2);D(),J(`<`,e.node.tag,`>`),D(),k(`title`,e.node.directives?.join(`, `)),D(),q(t.hostLabel(e.node))}}function AP(e,t){if(e&1&&(F(0,`span`,59),K(1),I(),F(2,`span`,60),K(3),I()),e&2){W();let e=E_(0);k(`title`,e.node.name),D(),q(e.node.name),D(),k(`title`,`<`+e.node.tag+`>`),D(),J(`<`,e.node.tag,`>`)}}function jP(e,t){if(e&1&&(F(0,`span`)(1,`span`,25),K(2,`Hydration: `),I(),K(3),I()),e&2){let e=t,n=W(3);Zg(`hyd hyd-`+e),D(3),q(n.hydrationText(e))}}function MP(e,t){if(e&1&&(F(0,`span`,51),K(1),I()),e&2){let e=t.$implicit;D(),q(e.route||`/`)}}function NP(e,t){if(e&1&&(F(0,`span`,52),K(1),F(2,`span`,25),K(3),I()()),e&2){let e=t;D(),J(` `,e),D(2),J(` `,e===1?`check`:`checks`,` while recording`)}}function PP(e,t){if(e&1&&(F(0,`span`,53),K(1),F(2,`span`,25),K(3),I()()),e&2){W();let e=E_(0);k(`title`,e.node.directives.join(`, `)),D(),J(` +`,e.node.directives.length,` `),D(2),J(` `,e.node.directives.length===1?`directive`:`directives`,` `)}}function FP(e,t){if(e&1){let e=B();w_(0),F(1,`div`,47),H(`click`,function(){C(e);let t=E_(0);return w(W(2).select(t.node.id))})(`focus`,function(t){C(e);let n=E_(0),r=W(2);return r.focusId.set(n.node.id),r.highlight(n.node.id),w(r.showNameTip(t))})(`blur`,function(){C(e);let t=W(2);return t.highlight(null),w(t.nameTip.set(null))})(`keydown.escape`,function(){return C(e),w(W(2).nameTip.set(null))})(`mouseenter`,function(){C(e);let t=E_(0);return w(W(2).highlight(t.node.id))})(`mouseleave`,function(){return C(e),w(W(2).highlight(null))}),A(2,DP,3,2,`span`,48)(3,OP,1,0,`span`,49),A(4,kP,6,3)(5,AP,4,4),A(6,jP,4,3,`span`,50),M(7,MP,2,1,`span`,51,uP),A(9,NP,4,2,`span`,52),A(10,PP,4,3,`span`,53),I()}if(e&2){let e,n,r=t.$implicit,i=W(2),a=T_(r.row);D(),Xg(`--%NS%depth`,a.depth),G(`selected`,i.selectedId()===a.node.id)(`dir-host`,a.node.kind===`directive`),k(`aria-level`,a.depth+1)(`aria-setsize`,a.setsize)(`aria-posinset`,a.posinset)(`aria-expanded`,a.hasChildren?a.expanded:null)(`aria-selected`,i.selectedId()===a.node.id)(`tabindex`,i.tabStop()===a.node.id?0:-1)(`data-vindex`,r.index)(`data-id`,a.node.id),D(),j(a.hasChildren?2:3),D(2),j(a.node.kind===`directive`?4:5),D(2),j((e=a.node.hydration)?6:-1,e),D(),N(i.routedById().get(a.node.id)??F_(20,oP)),D(2),j((n=i.cdHosts()[a.node.id])?9:-1,n),D(),j(a.node.kind!==`directive`&&a.node.directives?.length?10:-1)}}function IP(e,t){if(e&1&&(F(0,`div`,61),K(1),I()),e&2){let e=t;Xg(`top`,e.top,`px`),D(),J(` `,e.text,` `)}}function LP(e,t){if(e&1&&(F(0,`li`,69),K(1),ug(2,72),I()),e&2){let e=t.$implicit;W(3);let n=kg(3);D(),J(` `,e,` `),D(),P(`ngTemplateOutlet`,n)(`ngTemplateOutletContext`,I_(3,sP,e))}}function RP(e,t){if(e&1){let e=B();F(0,`div`,71)(1,`button`,46),H(`click`,function(){let t=C(e);return w(W(3).reveal(t.id,!0))}),K(2),I()()}e&2&&(D(2),J(` Show `,t.name,` `))}function zP(e,t){if(e&1&&(F(0,`section`,31)(1,`header`,62)(2,`span`,63),K(3,`directive host`),I(),F(4,`h2`,64),K(5),I(),F(6,`span`,65),K(7),I()(),F(8,`div`,66)(9,`h3`),K(10,` Directives `),F(11,`span`,67),K(12),I()(),F(13,`ul`,68),M(14,LP,3,5,`li`,69,dP),I()(),F(16,`div`,66)(17,`p`,70),K(18,` This element hosts directives but no component. Their inputs are bound in the template of the component that renders it. `),I(),A(19,RP,3,1,`div`,71),I()()),e&2){let e,n=t,r=W(2);D(5),J(`<`,n.tag,`>`),D(2),q(r.hostLabel(n)),D(5),q(n.directives?.length??0),D(2),N(n.directives??F_(4,oP)),D(5),j((e=r.ownerOf(n.id))?19:-1,e)}}function BP(e,t){if(e&1&&(F(0,`p`,73),L(1,`app-source-link`,77),I()),e&2){let e=t;D(),P(`file`,e.file)(`line`,e.line)}}function VP(e,t){if(e&1&&(F(0,`p`,78)(1,`span`,80),K(2,`Likely`),I(),F(3,`span`,25),K(4,`, matched by class name: `),I(),L(5,`app-source-link`,77),I()),e&2){W();let e=E_(0);P(`title`,W(3).guessTitle),D(5),P(`file`,e[0].file)(`line`,e[0].line)}}function HP(e,t){if(e&1&&(F(0,`li`),L(1,`app-source-link`,77),I()),e&2){let e=t.$implicit;D(),P(`file`,e.file)(`line`,e.line)}}function UP(e,t){if(e&1&&(F(0,`div`,79)(1,`p`,81)(2,`span`,80),K(3,`Not certain`),I(),K(4),I(),F(5,`ul`,82),M(6,HP,2,2,`li`,null,fP,!0),I()()),e&2){W();let e=E_(0),t=W(),n=W(2);P(`title`,n.guessTitle),D(4),Y(` `,e.length,` source files define `,n.bareName(t.name),`: `),D(2),N(e)}}function WP(e,t){if(e&1&&(w_(0),A(1,VP,6,3,`p`,78)(2,UP,8,3,`div`,79)),e&2){let e=W(),t=T_(W(2).sourceCandidates(e));D(),j(t.length===1?1:t.length>1?2:-1)}}function GP(e,t){if(e&1){let e=B();F(0,`div`,83)(1,`button`,46),H(`click`,function(){C(e);let t=W();return w(W(2).revealInElements(t))}),K(2,`Reveal in Elements`),I(),F(3,`button`,46),H(`click`,function(){C(e);let t=W();return w(W(2).openSource(t))}),K(4,`Open source`),I()(),F(5,`p`,84),K(6),I()}if(e&2){let e=W(3);D(6),q(e.actionMessage())}}function KP(e,t){if(e&1){let e=B();F(0,`button`,86),H(`click`,function(){let t=C(e).$implicit;return w(W(5).showForm.emit(t.formId))}),K(1),I()}if(e&2){let e=t.$implicit;D(),J(` Show `,e.label,` in Forms `)}}function qP(e,t){if(e&1&&(F(0,`div`,74),M(1,KP,2,1,`button`,85,pP),I()),e&2){let e=W(),t=W(3);D(),N(t.formsIn(e.file))}}function JP(e,t){e&1&&A(0,qP,3,0,`div`,74),e&2&&j(W(3).formsIn(t.file).length?0:-1)}function YP(e,t){if(e&1){let e=B();F(0,`button`,46),H(`click`,function(){C(e);let t=W(2);return w(W(2).openInjector(t))}),K(1,` Show in Injectors `),F(2,`span`,25),K(3),I()()}if(e&2){let e=W(2);D(3),J(`: `,e.name)}}function XP(e,t){if(e&1){let e=B();F(0,`button`,46),H(`click`,function(){C(e);let t=W(2);return w(W(2).openSignals(t))}),K(1,` Show in Signals `),F(2,`span`,25),K(3),I()()}if(e&2){let e=W(2);D(3),J(`: `,e.name)}}function ZP(e,t){if(e&1&&(F(0,`div`,74),A(1,YP,4,1,`button`,87),A(2,XP,4,1,`button`,87),I()),e&2){let e=W(3);D(),j(e.canShowInjector()?1:-1),D(),j(e.canShowSignals()?2:-1)}}function QP(e,t){if(e&1){let e=B();F(0,`div`,88)(1,`button`,46),H(`click`,function(){let t=C(e);return w(W(3).copyJson(t))}),K(2,`Copy as JSON`),I(),F(3,`button`,46),H(`click`,function(){let t=C(e);return w(W(3).copyHostPath(t))}),K(4,`Copy host path`),I()(),F(5,`p`,84),K(6),I()}if(e&2){let e=W(3);D(6),q(e.copyMessage())}}function $P(e,t){if(e&1&&L(0,`app-store-global`,75),e&2){let e=W(),t=W(2);P(`rpc`,t.rpc())(`pageId`,t.page()?.pageId)(`target`,I_(4,cP,e.id))(`label`,e.name)}}function eF(e,t){if(e&1&&(F(0,`dt`),K(1,`Routed`),I(),F(2,`dd`,90),K(3),I()),e&2){let e=t.$implicit;D(3),Y(``,e.route||`/`,` in outlet `,e.outlet)}}function tF(e,t){if(e&1&&(F(0,`span`,8),K(1),I()),e&2){let e=W(4);D(),Y(``,e.shownValues()?.count??0,` of `,e.valueTotal())}}function nF(e,t){if(e&1){let e=B();F(0,`div`,95)(1,`p`,44),K(2),I(),F(3,`p`,45),K(4,` The filter searches names, and the nested keys of values you opened. `),I(),F(5,`button`,46),H(`click`,function(){return C(e),w(W(5).clearPropFilter())}),K(6,`Clear filters`),I()()}if(e&2){let e=W(5);D(2),J(` No inputs, outputs or properties match “`,e.propFilter().trim(),`” `)}}function rF(e,t){if(e&1&&(F(0,`span`,100),K(1),I()),e&2){let e=W().$implicit;D(),J(`(`,e.prop,`)`)}}function iF(e,t){if(e&1&&(F(0,`li`,98)(1,`span`,99),K(2),A(3,rF,2,1,`span`,100),I(),L(4,`app-value-tree`,101),I()),e&2){let e=t.$implicit,n=W(4),r=W(3);G(`changed`,r.flashed(`input`,e.name)),D(2),J(` `,e.name,` `),D(),j(e.prop===e.name?-1:3),D(),P(`prop`,e)(`store`,r.values)(`query`,r.propFilter())(`componentId`,n.id)(`pageId`,r.page()?.pageId??null)(`rpc`,r.rpc())(`writes`,r.canEdit())}}function aF(e,t){if(e&1&&(F(0,`ul`,96),M(1,iF,5,11,`li`,97,hP),I()),e&2){let e=W(2);D(),N(e.inputs)}}function oF(e,t){e&1&&(F(0,`p`,70),K(1,`No inputs.`),I())}function sF(e,t){if(e&1&&(F(0,`div`,66)(1,`h3`),K(2,` Inputs `),F(3,`span`,67),K(4),I()(),A(5,aF,3,0,`ul`,96)(6,oF,2,0,`p`,70),I()),e&2){let e=W();D(4),q(e.inputs.length),D(),j(e.inputs.length?5:6)}}function cF(e,t){if(e&1&&(F(0,`li`,103)(1,`span`,90),K(2),I(),F(3,`span`,104),K(4),I()()),e&2){let e=t.$implicit;G(`on`,e.listened),D(2),q(e.name),D(2),q(e.listened?`listened`:`no listener`)}}function lF(e,t){if(e&1&&(F(0,`ul`,68),M(1,cF,5,4,`li`,102,hP),I()),e&2){let e=W(2);D(),N(e.outputs)}}function uF(e,t){e&1&&(F(0,`p`,70),K(1,`No outputs.`),I())}function dF(e,t){if(e&1&&(F(0,`div`,66)(1,`h3`),K(2,` Outputs `),F(3,`span`,67),K(4),I()(),A(5,lF,3,0,`ul`,68)(6,uF,2,0,`p`,70),I()),e&2){let e=W();D(4),q(e.outputs.length),D(),j(e.outputs.length?5:6)}}function fF(e,t){if(e&1&&(F(0,`span`,105),K(1),I()),e&2){let e=W().$implicit;D(),q(e.kind)}}function pF(e,t){if(e&1){let e=B();F(0,`button`,107),H(`click`,function(){C(e);let t=W().$implicit,n=W(5);return w(W(2).openSignals(n,t.prop))}),K(1,` Show in Signals`),F(2,`span`,25),K(3),I()()}if(e&2){let e=W().$implicit;D(3),J(`: `,e.name)}}function mF(e,t){if(e&1&&(F(0,`li`,98)(1,`span`,99),K(2),A(3,fF,2,1,`span`,105),A(4,pF,4,1,`button`,106),I(),L(5,`app-value-tree`,101),I()),e&2){let e=t.$implicit,n=W(4),r=W(3);G(`changed`,r.flashed(`property`,e.name)),D(2),J(` `,e.name,` `),D(),j(e.kind?3:-1),D(),j(e.kind===`signal`&&r.canShowSignals()&&!r.staticReport()?4:-1),D(),P(`prop`,e)(`store`,r.values)(`query`,r.propFilter())(`componentId`,n.id)(`pageId`,r.page()?.pageId??null)(`rpc`,r.rpc())(`writes`,r.canEdit())}}function hF(e,t){if(e&1&&(F(0,`ul`,96),M(1,mF,6,12,`li`,97,hP),I()),e&2){let e=W(2);D(),N(e.properties)}}function gF(e,t){e&1&&(F(0,`p`,70),K(1,`No other properties.`),I())}function _F(e,t){if(e&1&&(F(0,`div`,66)(1,`h3`),K(2,` Properties `),F(3,`span`,67),K(4),I()(),A(5,hF,3,0,`ul`,96)(6,gF,2,0,`p`,70),I()),e&2){let e=W();D(4),q(e.properties.length),D(),j(e.properties.length?5:6)}}function vF(e,t){if(e&1&&(F(0,`li`,69),K(1),I()),e&2){let e=t.$implicit;D(),q(e)}}function yF(e,t){if(e&1&&(F(0,`div`,66)(1,`h3`),K(2,` DOM listeners `),F(3,`span`,67),K(4),I()(),F(5,`ul`,68),M(6,vF,2,1,`li`,69,Yh),I()()),e&2){let e=W(2);D(4),q(e.listeners.length),D(2),N(e.listeners)}}function bF(e,t){if(e&1&&(F(0,`li`,103)(1,`span`,90),K(2),I(),F(3,`span`,104),K(4),I()()),e&2){let e=t.$implicit;D(2),q(e.state),D(2),q(e.triggers.join(`, `)||`no triggers`)}}function xF(e,t){if(e&1&&(F(0,`div`,66)(1,`h3`),K(2,` Defer blocks `),F(3,`span`,67),K(4),I()(),F(5,`ul`,68),M(6,bF,5,2,`li`,103,gP),I()()),e&2){let e=W(5);D(4),q(e.ownedDeferBlocks().length),D(2),N(e.ownedDeferBlocks())}}function SF(e,t){if(e&1&&(F(0,`li`,98)(1,`span`,99),K(2),I(),L(3,`app-value-tree`,109),I()),e&2){let e=t.$implicit,n=W(2).$implicit,r=W(2),i=W(3);G(`changed`,i.flashed(`directive`,e.name,n.index)),D(2),q(e.name),D(),P(`prop`,e)(`store`,i.values)(`query`,i.propFilter())(`directive`,n.index)(`componentId`,r.id)(`pageId`,i.page()?.pageId??null)(`rpc`,i.rpc())}}function CF(e,t){if(e&1&&(F(0,`ul`,96),M(1,SF,4,10,`li`,97,hP),I()),e&2){let e=W().$implicit;D(),N(e.inputs)}}function wF(e,t){if(e&1&&(F(0,`li`,103)(1,`span`,90),K(2),I(),F(3,`span`,104),K(4),I()()),e&2){let e=t.$implicit;G(`on`,e.listened),D(2),q(e.name),D(2),q(e.listened?`listened`:`no listener`)}}function TF(e,t){if(e&1&&(F(0,`ul`,68),M(1,wF,5,4,`li`,102,hP),I()),e&2){let e=W().$implicit;D(),N(e.outputs)}}function EF(e,t){e&1&&(F(0,`p`,70),K(1,`No inputs or outputs.`),I())}function DF(e,t){if(e&1&&(F(0,`div`,66)(1,`h3`)(2,`span`,90),K(3),I(),F(4,`span`,105),K(5,`directive on host`),I()(),F(6,`p`,108),ug(7,72),I(),A(8,CF,3,0,`ul`,96),A(9,TF,3,0,`ul`,68),A(10,EF,2,0,`p`,70),I()),e&2){let e=t.$implicit;W(5);let n=kg(3);D(3),q(e.name),D(4),P(`ngTemplateOutlet`,n)(`ngTemplateOutletContext`,I_(6,sP,e.name)),D(),j(e.inputs.length?8:-1),D(),j(e.outputs.length?9:-1),D(),j(!e.inputs.length&&!e.outputs.length?10:-1)}}function OF(e,t){if(e&1&&(A(0,nF,7,1,`div`,95),A(1,sF,7,2,`div`,66),A(2,dF,7,2,`div`,66),A(3,_F,7,2,`div`,66),A(4,yF,8,1,`div`,66),A(5,xF,8,1,`div`,66),M(6,DF,11,8,`div`,66,mP)),e&2){let e=t,n=W(),r=W(3);j(r.propQuery()&&!e.count?0:-1),D(),j(!r.propQuery()||e.inputs.length?1:-1),D(),j(!r.propQuery()||e.outputs.length?2:-1),D(),j(!r.propQuery()||e.properties.length?3:-1),D(),j(!r.propQuery()&&n.listeners.length?4:-1),D(),j(!r.propQuery()&&r.ownedDeferBlocks().length?5:-1),D(),N(e.directives)}}function kF(e,t){if(e&1&&(F(0,`span`,105),K(1),I()),e&2){let e=t.$implicit;D(),q(e)}}function AF(e,t){if(e&1&&(F(0,`span`,112),K(1,`from `),F(2,`span`,90),K(3),I()()),e&2){let e=W().$implicit;D(3),q(e.providedByName??`an injector`)}}function jF(e,t){e&1&&(F(0,`span`,113),K(1,`not provided`),I())}function MF(e,t){if(e&1&&(F(0,`li`,110)(1,`span`,111),K(2),I(),M(3,kF,2,1,`span`,105,Yh),A(5,AF,4,1,`span`,112)(6,jF,2,0,`span`,113),I()),e&2){let e=t.$implicit;D(2),q(e.token),D(),N(e.flags),D(2),j(e.providedBy?5:6)}}function NF(e,t){if(e&1&&(F(0,`ul`,93),M(1,MF,7,2,`li`,110,_P),I()),e&2){let e=W();D(),N(e.dependencies)}}function PF(e,t){e&1&&(F(0,`p`,70),K(1,`Nothing is injected through the constructor or inject().`),I())}function FF(e,t){if(e&1){let e=B();F(0,`app-component-pipes`,114),H(`showPipe`,function(t){return C(e),w(W(4).showPipe.emit(t))}),I()}if(e&2){let e=W(2),t=W(2);P(`rpc`,t.rpc())(`pageId`,t.page()?.pageId)(`component`,t.bareName(e.name))(`canShowPipes`,!t.staticReport())}}function IF(e,t){if(e&1){let e=B();F(0,`dl`,89)(1,`dt`),K(2,`Change detection`),I(),F(3,`dd`),K(4),I(),F(5,`dt`),K(6,`Encapsulation`),I(),F(7,`dd`),K(8),I(),F(9,`dt`),K(10,`Host path`),I(),F(11,`dd`,90),K(12),I(),M(13,eF,4,2,null,null,uP),I(),F(15,`div`,91)(16,`app-search-field`,92,3),S_(`valueChange`,function(t){C(e);let n=W(3);return x_(n.propFilter,t)||(n.propFilter=t),w(t)}),I(),A(18,tF,2,2,`span`,8),F(19,`p`,20),K(20),I()(),A(21,OF,8,6),F(22,`div`,66)(23,`h3`),K(24,` Injected `),F(25,`span`,67),K(26),I()(),A(27,NF,3,0,`ul`,93)(28,PF,2,0,`p`,70),I(),A(29,FF,1,4,`app-component-pipes`,94)}if(e&2){let e,n=t,r=W(),i=W(2);D(4),q(n.changeDetection??`Unknown`),D(4),q(n.encapsulation??`Unknown`),D(4),q(n.path),D(),N(i.routedById().get(r.id)??F_(10,oP)),D(3),b_(`value`,i.propFilter),D(2),j(i.propQuery()?18:-1),D(2),q(i.propFilterStatus()),D(),j((e=i.shownValues())?21:-1,e),D(5),q(n.dependencies.length),D(),j(n.dependencies.length?27:28),D(2),j(i.canShowPipes()?29:-1)}}function LF(e,t){e&1&&(F(0,`div`,76),L(1,`span`,115),F(2,`p`,45),K(3,`Reading live values from the page…`),I()())}function RF(e,t){if(e&1&&(F(0,`section`,31)(1,`header`,62)(2,`span`,63),K(3,`component`),I(),F(4,`h2`,64),K(5),I(),F(6,`span`,65),K(7),I(),A(8,BP,2,2,`p`,73)(9,WP,3,2),A(10,GP,7,1),A(11,JP,1,1),A(12,ZP,3,2,`div`,74),A(13,QP,7,1),A(14,$P,1,6,`app-store-global`,75),I(),A(15,IF,30,11)(16,LF,4,0,`div`,76),I()),e&2){let e,n,r,i,a=t,o=W(2);D(5),q(a.name),D(2),J(`<`,a.tag,`>`),D(),j((e=o.detail()?.source)?8:9,e),D(2),j(o.devtoolsActions()?10:-1),D(),j((n=o.sourceFor(a))?11:-1,n),D(),j((o.canShowInjector()||o.canShowSignals())&&!o.staticReport()?12:-1),D(),j((r=o.detail())?13:-1,r),D(),j(!o.staticReport()&&!o.native()?14:-1),D(),j((i=o.detail())?15:16,i)}}function zF(e,t){e&1&&(F(0,`p`,44),K(1,`The selected component was destroyed`),I(),F(2,`p`,45)(3,`span`,90),K(4),I(),K(5,` is no longer on the page. Select another component to see its live values. `),I()),e&2&&(D(4),q(t))}function BF(e,t){e&1&&(F(0,`p`,45),K(1,` Select a component to see its live inputs, properties, outputs, change detection and injected services. `),I())}function VF(e,t){if(e&1&&(F(0,`div`,32),A(1,zF,6,1)(2,BF,2,0,`p`,45),I()),e&2){let e,t=W(2);D(),j((e=t.destroyed())?1:2,e)}}function HF(e,t){e&1&&L(0,`app-angular-unavailable`,34),e&2&&P(`page`,W(2).angularPage())}function UF(e,t){if(e&1){let e=B();F(0,`app-hydration-section`,116),H(`overlay`,function(t){return C(e),w(W(2).setHydrationOverlay(t))})(`showNode`,function(t){return C(e),w(W(2).revealNode(t))})(`highlight`,function(t){return C(e),w(W(2).highlight(t))}),I()}e&2&&P(`report`,W(2).page()?.hydration)}function WF(e,t){if(e&1){let e=B();F(0,`app-cd-recording`,117),H(`showComponent`,function(t){return C(e),w(W(2).showCdComponent(t))}),I(),F(1,`app-leaks-section`,118),H(`showComponent`,function(t){return C(e),w(W(2).showLeakComponent(t))})(`highlight`,function(t){return C(e),w(W(2).highlight(t))}),I()}if(e&2){let e=W(2);P(`page`,e.cdPage())(`pageId`,e.page().pageId)(`rpc`,e.rpc())(`native`,e.native()),D(),P(`report`,e.leaksPage())(`pageId`,e.page().pageId)(`rpc`,e.rpc())(`angular`,e.angularPage())}}function GF(e,t){if(e&1){let e=B();F(0,`p`,4),K(1,` Every component instance on the page, in the order Angular rendered them. Hover a row to highlight its host in the page, and select it to read its live inputs, properties, outputs and injected services. `),I(),F(2,`div`,5)(3,`app-search-field`,6,1),H(`valueChange`,function(t){return C(e),w(W().setFilter(t))}),I(),F(5,`span`,7),K(6,` Type plain text, a tag such as
PathTargetGuards and resolversTitleActions
+
+ @if (row.expandable) { + + } @else { + + } {{ row.node.fullPath }} @if (isActive(row.node)) { active @@ -193,7 +211,7 @@ interface TestedUrl { /> } + @if (row.node.redirectTo !== undefined) { redirect @@ -206,7 +224,7 @@ interface TestedUrl { }} } + @for (guard of guardList(row.node); track $index) { {{ guard }} } @@ -218,7 +236,7 @@ interface TestedUrl { >none } + @if (row.node.title) { {{ row.node.title }} } @else { @@ -226,7 +244,7 @@ interface TestedUrl { >none } +
@if (canNavigate(row.node)) { @for (param of params(row.node); track param) { @@ -270,8 +288,8 @@ interface TestedUrl {
+

{{ rowResult()?.text }}

` and bind the table's sort: + * + * ```html + * Status