PageSourceSearch

https://db.kaznuvhi.edu.kz/@fs/var/www/prod/.angular/cache/19.2.15…/vite/deps/chunk-DP5BB6VF.js?v=54538e92

js kaznuvhi.edu.kz collected 2026-10-03 01:55:27 UTC 64,603 bytes, 2,016 lines download raw bytes

1import {
2  CommonModule,
3  DomAdapter,
4  getDOM,
5  setRootDomAdapter
6} from "/@fs/var/www/prod/.angular/cache/19.2.15/Hidro/vite/deps/chunk-55WSUAAI.js?v=54538e92";
7import {
8  withHttpTransferCache
9} from "/@fs/var/www/prod/.angular/cache/19.2.15/Hidro/vite/deps/chunk-HVF36QVL.js?v=54538e92";
10import {
11  DOCUMENT,
12  PLATFORM_BROWSER_ID,
13  XhrFactory,
14  isPlatformServer,
15  parseCookieValue
16} from "/@fs/var/www/prod/.angular/cache/19.2.15/Hidro/vite/deps/chunk-SOL5XZJW.js?v=54538e92";
17import {
18  APP_ID,
19  ApplicationModule,
20  ApplicationRef,
21  CSP_NONCE,
22  Console,
23  ENVIRONMENT_INITIALIZER,
24  ErrorHandler,
25  INJECTOR_SCOPE,
26  Inject,
27  Injectable,
28  InjectionToken,
29  Injector,
30  NgModule,
31  NgZone,
32  Optional,
33  PLATFORM_ID,
34  PLATFORM_INITIALIZER,
35  RendererFactory2,
36  RendererStyleFlags2,
37  RuntimeError,
38  SecurityContext,
39  TESTABILITY,
40  TESTABILITY_GETTER,
41  Testability,
42  TestabilityRegistry,
43  TracingService,
44  Version,
45  ViewEncapsulation,
46  XSS_SECURITY_URL,
47  ZONELESS_ENABLED,
48  __spreadProps,
49  __spreadValues,
50  _global,
51  _sanitizeHtml,
52  _sanitizeUrl,
53  allowSanitizationBypassAndThrow,
54  bypassSanitizationTrustHtml,
55  bypassSanitizationTrustResourceUrl,
56  bypassSanitizationTrustScript,
57  bypassSanitizationTrustStyle,
58  bypassSanitizationTrustUrl,
59  createPlatformFactory,
60  formatRuntimeError,
61  forwardRef,
62  inject,
63  internalCreateApplication,
64  makeEnvironmentProviders,
65  platformCore,
66  setClassMetadata,
67  setDocument,
68  unwrapSafeValue,
69  withDomHydration,
70  withEventReplay,
71  withI18nSupport,
72  withIncrementalHydration,
73  ɵɵdefineInjectable,
74  ɵɵdefineInjector,
75  ɵɵdefineNgModule,
76  ɵɵinject
77} from "/@fs/var/www/prod/.angular/cache/19.2.15/Hidro/vite/deps/chunk-LKBYGJ3F.js?v=54538e92";
78
vendor: 23,510 bytes, lines 79-788
79// node_modules/@angular/platform-browser/fesm2022/dom_renderer-DGKzginR.mjs
80var EVENT_MANAGER_PLUGINS = new InjectionToken(ngDevMode ? "EventManagerPlugins" : "");
81var EventManager = class _EventManager {
82  _zone;
83  _plugins;
84  _eventNameToPlugin = /* @__PURE__ */ new Map();
85  /**
86   * Initializes an instance of the event-manager service.
87   */
88  constructor(plugins, _zone) {
89    this._zone = _zone;
90    plugins.forEach((plugin) => {
91      plugin.manager = this;
92    });
93    this._plugins = plugins.slice().reverse();
94  }
95  /**
96   * Registers a handler for a specific element and event.
97   *
98   * @param element The HTML element to receive event notifications.
99   * @param eventName The name of the event to listen for.
100   * @param handler A function to call when the notification occurs. Receives the
101   * event object as an argument.
102   * @param options Options that configure how the event listener is bound.
103   * @returns  A callback function that can be used to remove the handler.
104   */
105  addEventListener(element, eventName, handler, options) {
106    const plugin = this._findPluginFor(eventName);
107    return plugin.addEventListener(element, eventName, handler, options);
108  }
109  /**
110   * Retrieves the compilation zone in which event listeners are registered.
111   */
112  getZone() {
113    return this._zone;
114  }
115  /** @internal */
116  _findPluginFor(eventName) {
117    let plugin = this._eventNameToPlugin.get(eventName);
118    if (plugin) {
119      return plugin;
120    }
121    const plugins = this._plugins;
122    plugin = plugins.find((plugin2) => plugin2.supports(eventName));
123    if (!plugin) {
124      throw new RuntimeError(5101, (typeof ngDevMode === "undefined" || ngDevMode) && `No event manager plugin found for event ${eventName}`);
125    }
126    this._eventNameToPlugin.set(eventName, plugin);
127    return plugin;
128  }
129  static ɵfac = function EventManager_Factory(__ngFactoryType__) {
130    return new (__ngFactoryType__ || _EventManager)(ɵɵinject(EVENT_MANAGER_PLUGINS), ɵɵinject(NgZone));
131  };
132  static ɵprov = ɵɵdefineInjectable({
133    token: _EventManager,
134    factory: _EventManager.ɵfac
135  });
136};
137(() => {
138  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(EventManager, [{
139    type: Injectable
140  }], () => [{
141    type: void 0,
142    decorators: [{
143      type: Inject,
144      args: [EVENT_MANAGER_PLUGINS]
145    }]
146  }, {
147    type: NgZone
148  }], null);
149})();
150var EventManagerPlugin = class {
151  _doc;
152  // TODO: remove (has some usage in G3)
153  constructor(_doc) {
154    this._doc = _doc;
155  }
156  // Using non-null assertion because it's set by EventManager's constructor
157  manager;
158};
159var APP_ID_ATTRIBUTE_NAME = "ng-app-id";
160function removeElements(elements) {
161  for (const element of elements) {
162    element.remove();
163  }
164}
165function createStyleElement(style, doc) {
166  const styleElement = doc.createElement("style");
167  styleElement.textContent = style;
168  return styleElement;
169}
170function addServerStyles(doc, appId, inline, external) {
171  const elements = doc.head?.querySelectorAll(`style[${APP_ID_ATTRIBUTE_NAME}="${appId}"],link[${APP_ID_ATTRIBUTE_NAME}="${appId}"]`);
172  if (elements) {
173    for (const styleElement of elements) {
174      styleElement.removeAttribute(APP_ID_ATTRIBUTE_NAME);
175      if (styleElement instanceof HTMLLinkElement) {
176        external.set(styleElement.href.slice(styleElement.href.lastIndexOf("/") + 1), {
177          usage: 0,
178          elements: [styleElement]
179        });
180      } else if (styleElement.textContent) {
181        inline.set(styleElement.textContent, {
182          usage: 0,
183          elements: [styleElement]
184        });
185      }
186    }
187  }
188}
189function createLinkElement(url, doc) {
190  const linkElement = doc.createElement("link");
191  linkElement.setAttribute("rel", "stylesheet");
192  linkElement.setAttribute("href", url);
193  return linkElement;
194}
195var SharedStylesHost = class _SharedStylesHost {
196  doc;
197  appId;
198  nonce;
199  /**
200   * Provides usage information for active inline style content and associated HTML <style> elements.
201   * Embedded styles typically originate from the `styles` metadata of a rendered component.
202   */
203  inline = /* @__PURE__ */ new Map();
204  /**
205   * Provides usage information for active external style URLs and the associated HTML <link> elements.
206   * External styles typically originate from the `ɵɵExternalStylesFeature` of a rendered component.
207   */
208  external = /* @__PURE__ */ new Map();
209  /**
210   * Set of host DOM nodes that will have styles attached.
211   */
212  hosts = /* @__PURE__ */ new Set();
213  /**
214   * Whether the application code is currently executing on a server.
215   */
216  isServer;
217  constructor(doc, appId, nonce, platformId = {}) {
218    this.doc = doc;
219    this.appId = appId;
220    this.nonce = nonce;
221    this.isServer = isPlatformServer(platformId);
222    addServerStyles(doc, appId, this.inline, this.external);
223    this.hosts.add(doc.head);
224  }
225  /**
226   * Adds embedded styles to the DOM via HTML `style` elements.
227   * @param styles An array of style content strings.
228   */
229  addStyles(styles, urls) {
230    for (const value of styles) {
231      this.addUsage(value, this.inline, createStyleElement);
232    }
233    urls?.forEach((value) => this.addUsage(value, this.external, createLinkElement));
234  }
235  /**
236   * Removes embedded styles from the DOM that were added as HTML `style` elements.
237   * @param styles An array of style content strings.
238   */
239  removeStyles(styles, urls) {
240    for (const value of styles) {
241      this.removeUsage(value, this.inline);
242    }
243    urls?.forEach((value) => this.removeUsage(value, this.external));
244  }
245  addUsage(value, usages, creator) {
246    const record = usages.get(value);
247    if (record) {
248      if ((typeof ngDevMode === "undefined" || ngDevMode) && record.usage === 0) {
249        record.elements.forEach((element) => element.setAttribute("ng-style-reused", ""));
250      }
251      record.usage++;
252    } else {
253      usages.set(value, {
254        usage: 1,
255        elements: [...this.hosts].map((host) => this.addElement(host, creator(value, this.doc)))
256      });
257    }
258  }
259  removeUsage(value, usages) {
260    const record = usages.get(value);
261    if (record) {
262      record.usage--;
263      if (record.usage <= 0) {
264        removeElements(record.elements);
265        usages.delete(value);
266      }
267    }
268  }
269  ngOnDestroy() {
270    for (const [, {
271      elements
272    }] of [...this.inline, ...this.external]) {
273      removeElements(elements);
274    }
275    this.hosts.clear();
276  }
277  /**
278   * Adds a host node to the set of style hosts and adds all existing style usage to
279   * the newly added host node.
280   *
281   * This is currently only used for Shadow DOM encapsulation mode.
282   */
283  addHost(hostNode) {
284    this.hosts.add(hostNode);
285    for (const [style, {
286      elements
287    }] of this.inline) {
288      elements.push(this.addElement(hostNode, createStyleElement(style, this.doc)));
289    }
290    for (const [url, {
291      elements
292    }] of this.external) {
293      elements.push(this.addElement(hostNode, createLinkElement(url, this.doc)));
294    }
295  }
296  removeHost(hostNode) {
297    this.hosts.delete(hostNode);
298  }
299  addElement(host, element) {
300    if (this.nonce) {
301      element.setAttribute("nonce", this.nonce);
302    }
303    if (this.isServer) {
304      element.setAttribute(APP_ID_ATTRIBUTE_NAME, this.appId);
305    }
306    return host.appendChild(element);
307  }
308  static ɵfac = function SharedStylesHost_Factory(__ngFactoryType__) {
309    return new (__ngFactoryType__ || _SharedStylesHost)(ɵɵinject(DOCUMENT), ɵɵinject(APP_ID), ɵɵinject(CSP_NONCE, 8), ɵɵinject(PLATFORM_ID));
310  };
311  static ɵprov = ɵɵdefineInjectable({
312    token: _SharedStylesHost,
313    factory: _SharedStylesHost.ɵfac
314  });
315};
316(() => {
317  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(SharedStylesHost, [{
318    type: Injectable
319  }], () => [{
320    type: Document,
321    decorators: [{
322      type: Inject,
323      args: [DOCUMENT]
324    }]
325  }, {
326    type: void 0,
327    decorators: [{
328      type: Inject,
329      args: [APP_ID]
330    }]
331  }, {
332    type: void 0,
333    decorators: [{
334      type: Inject,
335      args: [CSP_NONCE]
336    }, {
337      type: Optional
338    }]
339  }, {
340    type: void 0,
341    decorators: [{
342      type: Inject,
343      args: [PLATFORM_ID]
344    }]
345  }], null);
346})();
347var NAMESPACE_URIS = {
348  "svg": "http://www.w3.org/2000/svg",
349  "xhtml": "http://www.w3.org/1999/xhtml",
350  "xlink": "http://www.w3.org/1999/xlink",
351  "xml": "http://www.w3.org/XML/1998/namespace",
352  "xmlns": "http://www.w3.org/2000/xmlns/",
353  "math": "http://www.w3.org/1998/Math/MathML"
354};
355var COMPONENT_REGEX = /%COMP%/g;
356var SOURCEMAP_URL_REGEXP = /\/\*#\s*sourceMappingURL=(.+?)\s*\*\//;
357var PROTOCOL_REGEXP = /^https?:/;
358var COMPONENT_VARIABLE = "%COMP%";
359var HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`;
360var CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;
361var REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT = true;
362var REMOVE_STYLES_ON_COMPONENT_DESTROY = new InjectionToken(ngDevMode ? "RemoveStylesOnCompDestroy" : "", {
363  providedIn: "root",
364  factory: () => REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT
365});
366function shimContentAttribute(componentShortId) {
367  return CONTENT_ATTR.replace(COMPONENT_REGEX, componentShortId);
368}
369function shimHostAttribute(componentShortId) {
370  return HOST_ATTR.replace(COMPONENT_REGEX, componentShortId);
371}
372function shimStylesContent(compId, styles) {
373  return styles.map((s) => s.replace(COMPONENT_REGEX, compId));
374}
375function addBaseHrefToCssSourceMap(baseHref, styles) {
376  if (!baseHref) {
377    return styles;
378  }
379  const absoluteBaseHrefUrl = new URL(baseHref, "http://localhost");
380  return styles.map((cssContent) => {
381    if (!cssContent.includes("sourceMappingURL=")) {
382      return cssContent;
383    }
384    return cssContent.replace(SOURCEMAP_URL_REGEXP, (_, sourceMapUrl) => {
385      if (sourceMapUrl[0] === "/" || sourceMapUrl.startsWith("data:") || PROTOCOL_REGEXP.test(sourceMapUrl)) {
386        return `/*# sourceMappingURL=${sourceMapUrl} */`;
387      }
388      const {
389        pathname: resolvedSourceMapUrl
390      } = new URL(sourceMapUrl, absoluteBaseHrefUrl);
391      return `/*# sourceMappingURL=${resolvedSourceMapUrl} */`;
392    });
393  });
394}
395var DomRendererFactory2 = class _DomRendererFactory2 {
396  eventManager;
397  sharedStylesHost;
398  appId;
399  removeStylesOnCompDestroy;
400  doc;
401  platformId;
402  ngZone;
403  nonce;
404  tracingService;
405  rendererByCompId = /* @__PURE__ */ new Map();
406  defaultRenderer;
407  platformIsServer;
408  constructor(eventManager, sharedStylesHost, appId, removeStylesOnCompDestroy, doc, platformId, ngZone, nonce = null, tracingService = null) {
409    this.eventManager = eventManager;
410    this.sharedStylesHost = sharedStylesHost;
411    this.appId = appId;
412    this.removeStylesOnCompDestroy = removeStylesOnCompDestroy;
413    this.doc = doc;
414    this.platformId = platformId;
415    this.ngZone = ngZone;
416    this.nonce = nonce;
417    this.tracingService = tracingService;
418    this.platformIsServer = isPlatformServer(platformId);
419    this.defaultRenderer = new DefaultDomRenderer2(eventManager, doc, ngZone, this.platformIsServer, this.tracingService);
420  }
421  createRenderer(element, type) {
422    if (!element || !type) {
423      return this.defaultRenderer;
424    }
425    if (this.platformIsServer && type.encapsulation === ViewEncapsulation.ShadowDom) {
426      type = __spreadProps(__spreadValues({}, type), {
427        encapsulation: ViewEncapsulation.Emulated
428      });
429    }
430    const renderer = this.getOrCreateRenderer(element, type);
431    if (renderer instanceof EmulatedEncapsulationDomRenderer2) {
432      renderer.applyToHost(element);
433    } else if (renderer instanceof NoneEncapsulationDomRenderer) {
434      renderer.applyStyles();
435    }
436    return renderer;
437  }
438  getOrCreateRenderer(element, type) {
439    const rendererByCompId = this.rendererByCompId;
440    let renderer = rendererByCompId.get(type.id);
441    if (!renderer) {
442      const doc = this.doc;
443      const ngZone = this.ngZone;
444      const eventManager = this.eventManager;
445      const sharedStylesHost = this.sharedStylesHost;
446      const removeStylesOnCompDestroy = this.removeStylesOnCompDestroy;
447      const platformIsServer = this.platformIsServer;
448      const tracingService = this.tracingService;
449      switch (type.encapsulation) {
450        case ViewEncapsulation.Emulated:
451          renderer = new EmulatedEncapsulationDomRenderer2(eventManager, sharedStylesHost, type, this.appId, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, tracingService);
452          break;
453        case ViewEncapsulation.ShadowDom:
454          return new ShadowDomRenderer(eventManager, sharedStylesHost, element, type, doc, ngZone, this.nonce, platformIsServer, tracingService);
455        default:
456          renderer = new NoneEncapsulationDomRenderer(eventManager, sharedStylesHost, type, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, tracingService);
457          break;
458      }
459      rendererByCompId.set(type.id, renderer);
460    }
461    return renderer;
462  }
463  ngOnDestroy() {
464    this.rendererByCompId.clear();
465  }
466  /**
467   * Used during HMR to clear any cached data about a component.
468   * @param componentId ID of the component that is being replaced.
469   */
470  componentReplaced(componentId) {
471    this.rendererByCompId.delete(componentId);
472  }
473  static ɵfac = function DomRendererFactory2_Factory(__ngFactoryType__) {
474    return new (__ngFactoryType__ || _DomRendererFactory2)(ɵɵinject(EventManager), ɵɵinject(SharedStylesHost), ɵɵinject(APP_ID), ɵɵinject(REMOVE_STYLES_ON_COMPONENT_DESTROY), ɵɵinject(DOCUMENT), ɵɵinject(PLATFORM_ID), ɵɵinject(NgZone), ɵɵinject(CSP_NONCE), ɵɵinject(TracingService, 8));
475  };
476  static ɵprov = ɵɵdefineInjectable({
477    token: _DomRendererFactory2,
478    factory: _DomRendererFactory2.ɵfac
479  });
480};
481(() => {
482  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DomRendererFactory2, [{
483    type: Injectable
484  }], () => [{
485    type: EventManager
486  }, {
487    type: SharedStylesHost
488  }, {
489    type: void 0,
490    decorators: [{
491      type: Inject,
492      args: [APP_ID]
493    }]
494  }, {
495    type: void 0,
496    decorators: [{
497      type: Inject,
498      args: [REMOVE_STYLES_ON_COMPONENT_DESTROY]
499    }]
500  }, {
501    type: Document,
502    decorators: [{
503      type: Inject,
504      args: [DOCUMENT]
505    }]
506  }, {
507    type: Object,
508    decorators: [{
509      type: Inject,
510      args: [PLATFORM_ID]
511    }]
512  }, {
513    type: NgZone
514  }, {
515    type: void 0,
516    decorators: [{
517      type: Inject,
518      args: [CSP_NONCE]
519    }]
520  }, {
521    type: TracingService,
522    decorators: [{
523      type: Inject,
524      args: [TracingService]
525    }, {
526      type: Optional
527    }]
528  }], null);
529})();
530var DefaultDomRenderer2 = class {
531  eventManager;
532  doc;
533  ngZone;
534  platformIsServer;
535  tracingService;
536  data = /* @__PURE__ */ Object.create(null);
537  /**
538   * By default this renderer throws when encountering synthetic properties
539   * This can be disabled for example by the AsyncAnimationRendererFactory
540   */
541  throwOnSyntheticProps = true;
542  constructor(eventManager, doc, ngZone, platformIsServer, tracingService) {
543    this.eventManager = eventManager;
544    this.doc = doc;
545    this.ngZone = ngZone;
546    this.platformIsServer = platformIsServer;
547    this.tracingService = tracingService;
548  }
549  destroy() {
550  }
551  destroyNode = null;
552  createElement(name, namespace) {
553    if (namespace) {
554      return this.doc.createElementNS(NAMESPACE_URIS[namespace] || namespace, name);
555    }
556    return this.doc.createElement(name);
557  }
558  createComment(value) {
559    return this.doc.createComment(value);
560  }
561  createText(value) {
562    return this.doc.createTextNode(value);
563  }
564  appendChild(parent, newChild) {
565    const targetParent = isTemplateNode(parent) ? parent.content : parent;
566    targetParent.appendChild(newChild);
567  }
568  insertBefore(parent, newChild, refChild) {
569    if (parent) {
570      const targetParent = isTemplateNode(parent) ? parent.content : parent;
571      targetParent.insertBefore(newChild, refChild);
572    }
573  }
574  removeChild(_parent, oldChild) {
575    oldChild.remove();
576  }
577  selectRootElement(selectorOrNode, preserveContent) {
578    let el = typeof selectorOrNode === "string" ? this.doc.querySelector(selectorOrNode) : selectorOrNode;
579    if (!el) {
580      throw new RuntimeError(-5104, (typeof ngDevMode === "undefined" || ngDevMode) && `The selector "${selectorOrNode}" did not match any elements`);
581    }
582    if (!preserveContent) {
583      el.textContent = "";
584    }
585    return el;
586  }
587  parentNode(node) {
588    return node.parentNode;
589  }
590  nextSibling(node) {
591    return node.nextSibling;
592  }
593  setAttribute(el, name, value, namespace) {
594    if (namespace) {
595      name = namespace + ":" + name;
596      const namespaceUri = NAMESPACE_URIS[namespace];
597      if (namespaceUri) {
598        el.setAttributeNS(namespaceUri, name, value);
599      } else {
600        el.setAttribute(name, value);
601      }
602    } else {
603      el.setAttribute(name, value);
604    }
605  }
606  removeAttribute(el, name, namespace) {
607    if (namespace) {
608      const namespaceUri = NAMESPACE_URIS[namespace];
609      if (namespaceUri) {
610        el.removeAttributeNS(namespaceUri, name);
611      } else {
612        el.removeAttribute(`${namespace}:${name}`);
613      }
614    } else {
615      el.removeAttribute(name);
616    }
617  }
618  addClass(el, name) {
619    el.classList.add(name);
620  }
621  removeClass(el, name) {
622    el.classList.remove(name);
623  }
624  setStyle(el, style, value, flags) {
625    if (flags & (RendererStyleFlags2.DashCase | RendererStyleFlags2.Important)) {
626      el.style.setProperty(style, value, flags & RendererStyleFlags2.Important ? "important" : "");
627    } else {
628      el.style[style] = value;
629    }
630  }
631  removeStyle(el, style, flags) {
632    if (flags & RendererStyleFlags2.DashCase) {
633      el.style.removeProperty(style);
634    } else {
635      el.style[style] = "";
636    }
637  }
638  setProperty(el, name, value) {
639    if (el == null) {
640      return;
641    }
642    (typeof ngDevMode === "undefined" || ngDevMode) && this.throwOnSyntheticProps && checkNoSyntheticProp(name, "property");
643    el[name] = value;
644  }
645  setValue(node, value) {
646    node.nodeValue = value;
647  }
648  listen(target, event, callback, options) {
649    (typeof ngDevMode === "undefined" || ngDevMode) && this.throwOnSyntheticProps && checkNoSyntheticProp(event, "listener");
650    if (typeof target === "string") {
651      target = getDOM().getGlobalEventTarget(this.doc, target);
652      if (!target) {
653        throw new RuntimeError(5102, (typeof ngDevMode === "undefined" || ngDevMode) && `Unsupported event target ${target} for event ${event}`);
654      }
655    }
656    let wrappedCallback = this.decoratePreventDefault(callback);
657    if (this.tracingService?.wrapEventListener) {
658      wrappedCallback = this.tracingService.wrapEventListener(target, event, wrappedCallback);
659    }
660    return this.eventManager.addEventListener(target, event, wrappedCallback, options);
661  }
662  decoratePreventDefault(eventHandler) {
663    return (event) => {
664      if (event === "__ngUnwrap__") {
665        return eventHandler;
666      }
667      const allowDefaultBehavior = this.platformIsServer ? this.ngZone.runGuarded(() => eventHandler(event)) : eventHandler(event);
668      if (allowDefaultBehavior === false) {
669        event.preventDefault();
670      }
671      return void 0;
672    };
673  }
674};
675var AT_CHARCODE = (() => "@".charCodeAt(0))();
676function checkNoSyntheticProp(name, nameKind) {
677  if (name.charCodeAt(0) === AT_CHARCODE) {
678    throw new RuntimeError(5105, `Unexpected synthetic ${nameKind} ${name} found. Please make sure that:
679  - Make sure \`provideAnimationsAsync()\`, \`provideAnimations()\` or \`provideNoopAnimations()\` call was added to a list of providers used to bootstrap an application.
680  - There is a corresponding animation configuration named \`${name}\` defined in the \`animations\` field of the \`@Component\` decorator (see https://angular.dev/api/core/Component#animations).`);
681  }
682}
683function isTemplateNode(node) {
684  return node.tagName === "TEMPLATE" && node.content !== void 0;
685}
686var ShadowDomRenderer = class extends DefaultDomRenderer2 {
687  sharedStylesHost;
688  hostEl;
689  shadowRoot;
690  constructor(eventManager, sharedStylesHost, hostEl, component, doc, ngZone, nonce, platformIsServer, tracingService) {
691    super(eventManager, doc, ngZone, platformIsServer, tracingService);
692    this.sharedStylesHost = sharedStylesHost;
693    this.hostEl = hostEl;
694    this.shadowRoot = hostEl.attachShadow({
695      mode: "open"
696    });
697    this.sharedStylesHost.addHost(this.shadowRoot);
698    let styles = component.styles;
699    if (ngDevMode) {
700      const baseHref = getDOM().getBaseHref(doc) ?? "";
701      styles = addBaseHrefToCssSourceMap(baseHref, styles);
702    }
703    styles = shimStylesContent(component.id, styles);
704    for (const style of styles) {
705      const styleEl = document.createElement("style");
706      if (nonce) {
707        styleEl.setAttribute("nonce", nonce);
708      }
709      styleEl.textContent = style;
710      this.shadowRoot.appendChild(styleEl);
711    }
712    const styleUrls = component.getExternalStyles?.();
713    if (styleUrls) {
714      for (const styleUrl of styleUrls) {
715        const linkEl = createLinkElement(styleUrl, doc);
716        if (nonce) {
717          linkEl.setAttribute("nonce", nonce);
718        }
719        this.shadowRoot.appendChild(linkEl);
720      }
721    }
722  }
723  nodeOrShadowRoot(node) {
724    return node === this.hostEl ? this.shadowRoot : node;
725  }
726  appendChild(parent, newChild) {
727    return super.appendChild(this.nodeOrShadowRoot(parent), newChild);
728  }
729  insertBefore(parent, newChild, refChild) {
730    return super.insertBefore(this.nodeOrShadowRoot(parent), newChild, refChild);
731  }
732  removeChild(_parent, oldChild) {
733    return super.removeChild(null, oldChild);
734  }
735  parentNode(node) {
736    return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(node)));
737  }
738  destroy() {
739    this.sharedStylesHost.removeHost(this.shadowRoot);
740  }
741};
742var NoneEncapsulationDomRenderer = class extends DefaultDomRenderer2 {
743  sharedStylesHost;
744  removeStylesOnCompDestroy;
745  styles;
746  styleUrls;
747  constructor(eventManager, sharedStylesHost, component, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, tracingService, compId) {
748    super(eventManager, doc, ngZone, platformIsServer, tracingService);
749    this.sharedStylesHost = sharedStylesHost;
750    this.removeStylesOnCompDestroy = removeStylesOnCompDestroy;
751    let styles = component.styles;
752    if (ngDevMode) {
753      const baseHref = getDOM().getBaseHref(doc) ?? "";
754      styles = addBaseHrefToCssSourceMap(baseHref, styles);
755    }
756    this.styles = compId ? shimStylesContent(compId, styles) : styles;
757    this.styleUrls = component.getExternalStyles?.(compId);
758  }
759  applyStyles() {
760    this.sharedStylesHost.addStyles(this.styles, this.styleUrls);
761  }
762  destroy() {
763    if (!this.removeStylesOnCompDestroy) {
764      return;
765    }
766    this.sharedStylesHost.removeStyles(this.styles, this.styleUrls);
767  }
768};
769var EmulatedEncapsulationDomRenderer2 = class extends NoneEncapsulationDomRenderer {
770  contentAttr;
771  hostAttr;
772  constructor(eventManager, sharedStylesHost, component, appId, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, tracingService) {
773    const compId = appId + "-" + component.id;
774    super(eventManager, sharedStylesHost, component, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, tracingService, compId);
775    this.contentAttr = shimContentAttribute(compId);
776    this.hostAttr = shimHostAttribute(compId);
777  }
778  applyToHost(element) {
779    this.applyStyles();
780    this.setAttribute(element, this.hostAttr, "");
781  }
782  createElement(parent, name) {
783    const el = super.createElement(parent, name);
784    super.setAttribute(el, this.contentAttr, "");
785    return el;
786  }
787};
788
vendor: 13,937 bytes, lines 789-1230
789// node_modules/@angular/platform-browser/fesm2022/browser-D-u-fknz.mjs
790var BrowserDomAdapter = class _BrowserDomAdapter extends DomAdapter {
791  supportsDOMEvents = true;
792  static makeCurrent() {
793    setRootDomAdapter(new _BrowserDomAdapter());
794  }
795  onAndCancel(el, evt, listener, options) {
796    el.addEventListener(evt, listener, options);
797    return () => {
798      el.removeEventListener(evt, listener, options);
799    };
800  }
801  dispatchEvent(el, evt) {
802    el.dispatchEvent(evt);
803  }
804  remove(node) {
805    node.remove();
806  }
807  createElement(tagName, doc) {
808    doc = doc || this.getDefaultDocument();
809    return doc.createElement(tagName);
810  }
811  createHtmlDocument() {
812    return document.implementation.createHTMLDocument("fakeTitle");
813  }
814  getDefaultDocument() {
815    return document;
816  }
817  isElementNode(node) {
818    return node.nodeType === Node.ELEMENT_NODE;
819  }
820  isShadowRoot(node) {
821    return node instanceof DocumentFragment;
822  }
823  /** @deprecated No longer being used in Ivy code. To be removed in version 14. */
824  getGlobalEventTarget(doc, target) {
825    if (target === "window") {
826      return window;
827    }
828    if (target === "document") {
829      return doc;
830    }
831    if (target === "body") {
832      return doc.body;
833    }
834    return null;
835  }
836  getBaseHref(doc) {
837    const href = getBaseElementHref();
838    return href == null ? null : relativePath(href);
839  }
840  resetBaseElement() {
841    baseElement = null;
842  }
843  getUserAgent() {
844    return window.navigator.userAgent;
845  }
846  getCookie(name) {
847    return parseCookieValue(document.cookie, name);
848  }
849};
850var baseElement = null;
851function getBaseElementHref() {
852  baseElement = baseElement || document.head.querySelector("base");
853  return baseElement ? baseElement.getAttribute("href") : null;
854}
855function relativePath(url) {
856  return new URL(url, document.baseURI).pathname;
857}
858var BrowserGetTestability = class {
859  addToWindow(registry) {
860    _global["getAngularTestability"] = (elem, findInAncestors = true) => {
861      const testability = registry.findTestabilityInTree(elem, findInAncestors);
862      if (testability == null) {
863        throw new RuntimeError(5103, (typeof ngDevMode === "undefined" || ngDevMode) && "Could not find testability for element.");
864      }
865      return testability;
866    };
867    _global["getAllAngularTestabilities"] = () => registry.getAllTestabilities();
868    _global["getAllAngularRootElements"] = () => registry.getAllRootElements();
869    const whenAllStable = (callback) => {
870      const testabilities = _global["getAllAngularTestabilities"]();
871      let count = testabilities.length;
872      const decrement = function() {
873        count--;
874        if (count == 0) {
875          callback();
876        }
877      };
878      testabilities.forEach((testability) => {
879        testability.whenStable(decrement);
880      });
881    };
882    if (!_global["frameworkStabilizers"]) {
883      _global["frameworkStabilizers"] = [];
884    }
885    _global["frameworkStabilizers"].push(whenAllStable);
886  }
887  findTestabilityInTree(registry, elem, findInAncestors) {
888    if (elem == null) {
889      return null;
890    }
891    const t = registry.getTestability(elem);
892    if (t != null) {
893      return t;
894    } else if (!findInAncestors) {
895      return null;
896    }
897    if (getDOM().isShadowRoot(elem)) {
898      return this.findTestabilityInTree(registry, elem.host, true);
899    }
900    return this.findTestabilityInTree(registry, elem.parentElement, true);
901  }
902};
903var BrowserXhr = class _BrowserXhr {
904  build() {
905    return new XMLHttpRequest();
906  }
907  static ɵfac = function BrowserXhr_Factory(__ngFactoryType__) {
908    return new (__ngFactoryType__ || _BrowserXhr)();
909  };
910  static ɵprov = ɵɵdefineInjectable({
911    token: _BrowserXhr,
912    factory: _BrowserXhr.ɵfac
913  });
914};
915(() => {
916  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(BrowserXhr, [{
917    type: Injectable
918  }], null, null);
919})();
920var DomEventsPlugin = class _DomEventsPlugin extends EventManagerPlugin {
921  constructor(doc) {
922    super(doc);
923  }
924  // This plugin should come last in the list of plugins, because it accepts all
925  // events.
926  supports(eventName) {
927    return true;
928  }
929  addEventListener(element, eventName, handler, options) {
930    element.addEventListener(eventName, handler, options);
931    return () => this.removeEventListener(element, eventName, handler, options);
932  }
933  removeEventListener(target, eventName, callback, options) {
934    return target.removeEventListener(eventName, callback, options);
935  }
936  static ɵfac = function DomEventsPlugin_Factory(__ngFactoryType__) {
937    return new (__ngFactoryType__ || _DomEventsPlugin)(ɵɵinject(DOCUMENT));
938  };
939  static ɵprov = ɵɵdefineInjectable({
940    token: _DomEventsPlugin,
941    factory: _DomEventsPlugin.ɵfac
942  });
943};
944(() => {
945  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DomEventsPlugin, [{
946    type: Injectable
947  }], () => [{
948    type: void 0,
949    decorators: [{
950      type: Inject,
951      args: [DOCUMENT]
952    }]
953  }], null);
954})();
955var MODIFIER_KEYS = ["alt", "control", "meta", "shift"];
956var _keyMap = {
957  "\b": "Backspace",
958  "	": "Tab",
959  "�": "Delete",
960  "\x1B": "Escape",
961  "Del": "Delete",
962  "Esc": "Escape",
963  "Left": "ArrowLeft",
964  "Right": "ArrowRight",
965  "Up": "ArrowUp",
966  "Down": "ArrowDown",
967  "Menu": "ContextMenu",
968  "Scroll": "ScrollLock",
969  "Win": "OS"
970};
971var MODIFIER_KEY_GETTERS = {
972  "alt": (event) => event.altKey,
973  "control": (event) => event.ctrlKey,
974  "meta": (event) => event.metaKey,
975  "shift": (event) => event.shiftKey
976};
977var KeyEventsPlugin = class _KeyEventsPlugin extends EventManagerPlugin {
978  /**
979   * Initializes an instance of the browser plug-in.
980   * @param doc The document in which key events will be detected.
981   */
982  constructor(doc) {
983    super(doc);
984  }
985  /**
986   * Reports whether a named key event is supported.
987   * @param eventName The event name to query.
988   * @return True if the named key event is supported.
989   */
990  supports(eventName) {
991    return _KeyEventsPlugin.parseEventName(eventName) != null;
992  }
993  /**
994   * Registers a handler for a specific element and key event.
995   * @param element The HTML element to receive event notifications.
996   * @param eventName The name of the key event to listen for.
997   * @param handler A function to call when the notification occurs. Receives the
998   * event object as an argument.
999   * @returns The key event that was registered.
1000   */
1001  addEventListener(element, eventName, handler, options) {
1002    const parsedEvent = _KeyEventsPlugin.parseEventName(eventName);
1003    const outsideHandler = _KeyEventsPlugin.eventCallback(parsedEvent["fullKey"], handler, this.manager.getZone());
1004    return this.manager.getZone().runOutsideAngular(() => {
1005      return getDOM().onAndCancel(element, parsedEvent["domEventName"], outsideHandler, options);
1006    });
1007  }
1008  /**
1009   * Parses the user provided full keyboard event definition and normalizes it for
1010   * later internal use. It ensures the string is all lowercase, converts special
1011   * characters to a standard spelling, and orders all the values consistently.
1012   *
1013   * @param eventName The name of the key event to listen for.
1014   * @returns an object with the full, normalized string, and the dom event name
1015   * or null in the case when the event doesn't match a keyboard event.
1016   */
1017  static parseEventName(eventName) {
1018    const parts = eventName.toLowerCase().split(".");
1019    const domEventName = parts.shift();
1020    if (parts.length === 0 || !(domEventName === "keydown" || domEventName === "keyup")) {
1021      return null;
1022    }
1023    const key = _KeyEventsPlugin._normalizeKey(parts.pop());
1024    let fullKey = "";
1025    let codeIX = parts.indexOf("code");
1026    if (codeIX > -1) {
1027      parts.splice(codeIX, 1);
1028      fullKey = "code.";
1029    }
1030    MODIFIER_KEYS.forEach((modifierName) => {
1031      const index = parts.indexOf(modifierName);
1032      if (index > -1) {
1033        parts.splice(index, 1);
1034        fullKey += modifierName + ".";
1035      }
1036    });
1037    fullKey += key;
1038    if (parts.length != 0 || key.length === 0) {
1039      return null;
1040    }
1041    const result = {};
1042    result["domEventName"] = domEventName;
1043    result["fullKey"] = fullKey;
1044    return result;
1045  }
1046  /**
1047   * Determines whether the actual keys pressed match the configured key code string.
1048   * The `fullKeyCode` event is normalized in the `parseEventName` method when the
1049   * event is attached to the DOM during the `addEventListener` call. This is unseen
1050   * by the end user and is normalized for internal consistency and parsing.
1051   *
1052   * @param event The keyboard event.
1053   * @param fullKeyCode The normalized user defined expected key event string
1054   * @returns boolean.
1055   */
1056  static matchEventFullKeyCode(event, fullKeyCode) {
1057    let keycode = _keyMap[event.key] || event.key;
1058    let key = "";
1059    if (fullKeyCode.indexOf("code.") > -1) {
1060      keycode = event.code;
1061      key = "code.";
1062    }
1063    if (keycode == null || !keycode) return false;
1064    keycode = keycode.toLowerCase();
1065    if (keycode === " ") {
1066      keycode = "space";
1067    } else if (keycode === ".") {
1068      keycode = "dot";
1069    }
1070    MODIFIER_KEYS.forEach((modifierName) => {
1071      if (modifierName !== keycode) {
1072        const modifierGetter = MODIFIER_KEY_GETTERS[modifierName];
1073        if (modifierGetter(event)) {
1074          key += modifierName + ".";
1075        }
1076      }
1077    });
1078    key += keycode;
1079    return key === fullKeyCode;
1080  }
1081  /**
1082   * Configures a handler callback for a key event.
1083   * @param fullKey The event name that combines all simultaneous keystrokes.
1084   * @param handler The function that responds to the key event.
1085   * @param zone The zone in which the event occurred.
1086   * @returns A callback function.
1087   */
1088  static eventCallback(fullKey, handler, zone) {
1089    return (event) => {
1090      if (_KeyEventsPlugin.matchEventFullKeyCode(event, fullKey)) {
1091        zone.runGuarded(() => handler(event));
1092      }
1093    };
1094  }
1095  /** @internal */
1096  static _normalizeKey(keyName) {
1097    return keyName === "esc" ? "escape" : keyName;
1098  }
1099  static ɵfac = function KeyEventsPlugin_Factory(__ngFactoryType__) {
1100    return new (__ngFactoryType__ || _KeyEventsPlugin)(ɵɵinject(DOCUMENT));
1101  };
1102  static ɵprov = ɵɵdefineInjectable({
1103    token: _KeyEventsPlugin,
1104    factory: _KeyEventsPlugin.ɵfac
1105  });
1106};
1107(() => {
1108  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(KeyEventsPlugin, [{
1109    type: Injectable
1110  }], () => [{
1111    type: void 0,
1112    decorators: [{
1113      type: Inject,
1114      args: [DOCUMENT]
1115    }]
1116  }], null);
1117})();
1118function bootstrapApplication(rootComponent, options) {
1119  return internalCreateApplication(__spreadValues({
1120    rootComponent
1121  }, createProvidersConfig(options)));
1122}
1123function createApplication(options) {
1124  return internalCreateApplication(createProvidersConfig(options));
1125}
1126function createProvidersConfig(options) {
1127  return {
1128    appProviders: [...BROWSER_MODULE_PROVIDERS, ...options?.providers ?? []],
1129    platformProviders: INTERNAL_BROWSER_PLATFORM_PROVIDERS
1130  };
1131}
1132function provideProtractorTestingSupport() {
1133  return [...TESTABILITY_PROVIDERS];
1134}
1135function initDomAdapter() {
1136  BrowserDomAdapter.makeCurrent();
1137}
1138function errorHandler() {
1139  return new ErrorHandler();
1140}
1141function _document() {
1142  setDocument(document);
1143  return document;
1144}
1145var INTERNAL_BROWSER_PLATFORM_PROVIDERS = [{
1146  provide: PLATFORM_ID,
1147  useValue: PLATFORM_BROWSER_ID
1148}, {
1149  provide: PLATFORM_INITIALIZER,
1150  useValue: initDomAdapter,
1151  multi: true
1152}, {
1153  provide: DOCUMENT,
1154  useFactory: _document
1155}];
1156var platformBrowser = createPlatformFactory(platformCore, "browser", INTERNAL_BROWSER_PLATFORM_PROVIDERS);
1157var BROWSER_MODULE_PROVIDERS_MARKER = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "BrowserModule Providers Marker" : "");
1158var TESTABILITY_PROVIDERS = [{
1159  provide: TESTABILITY_GETTER,
1160  useClass: BrowserGetTestability
1161}, {
1162  provide: TESTABILITY,
1163  useClass: Testability,
1164  deps: [NgZone, TestabilityRegistry, TESTABILITY_GETTER]
1165}, {
1166  provide: Testability,
1167  // Also provide as `Testability` for backwards-compatibility.
1168  useClass: Testability,
1169  deps: [NgZone, TestabilityRegistry, TESTABILITY_GETTER]
1170}];
1171var BROWSER_MODULE_PROVIDERS = [{
1172  provide: INJECTOR_SCOPE,
1173  useValue: "root"
1174}, {
1175  provide: ErrorHandler,
1176  useFactory: errorHandler
1177}, {
1178  provide: EVENT_MANAGER_PLUGINS,
1179  useClass: DomEventsPlugin,
1180  multi: true,
1181  deps: [DOCUMENT]
1182}, {
1183  provide: EVENT_MANAGER_PLUGINS,
1184  useClass: KeyEventsPlugin,
1185  multi: true,
1186  deps: [DOCUMENT]
1187}, DomRendererFactory2, SharedStylesHost, EventManager, {
1188  provide: RendererFactory2,
1189  useExisting: DomRendererFactory2
1190}, {
1191  provide: XhrFactory,
1192  useClass: BrowserXhr
1193}, typeof ngDevMode === "undefined" || ngDevMode ? {
1194  provide: BROWSER_MODULE_PROVIDERS_MARKER,
1195  useValue: true
1196} : []];
1197var BrowserModule = class _BrowserModule {
1198  constructor() {
1199    if (typeof ngDevMode === "undefined" || ngDevMode) {
1200      const providersAlreadyPresent = inject(BROWSER_MODULE_PROVIDERS_MARKER, {
1201        optional: true,
1202        skipSelf: true
1203      });
1204      if (providersAlreadyPresent) {
1205        throw new RuntimeError(5100, `Providers from the \`BrowserModule\` have already been loaded. If you need access to common directives such as NgIf and NgFor, import the \`CommonModule\` instead.`);
1206      }
1207    }
1208  }
1209  static ɵfac = function BrowserModule_Factory(__ngFactoryType__) {
1210    return new (__ngFactoryType__ || _BrowserModule)();
1211  };
1212  static ɵmod = ɵɵdefineNgModule({
1213    type: _BrowserModule,
1214    exports: [CommonModule, ApplicationModule]
1215  });
1216  static ɵinj = ɵɵdefineInjector({
1217    providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS],
1218    imports: [CommonModule, ApplicationModule]
1219  });
1220};
1221(() => {
1222  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(BrowserModule, [{
1223    type: NgModule,
1224    args: [{
1225      providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS],
1226      exports: [CommonModule, ApplicationModule]
1227    }]
1228  }], () => [], null);
1229})();
1230
vendor: 25,416 bytes, lines 1231-2016
1231// node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs
1232var Meta = class _Meta {
1233  _doc;
1234  _dom;
1235  constructor(_doc) {
1236    this._doc = _doc;
1237    this._dom = getDOM();
1238  }
1239  /**
1240   * Retrieves or creates a specific `<meta>` tag element in the current HTML document.
1241   * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute
1242   * values in the provided tag definition, and verifies that all other attribute values are equal.
1243   * If an existing element is found, it is returned and is not modified in any way.
1244   * @param tag The definition of a `<meta>` element to match or create.
1245   * @param forceCreation True to create a new element without checking whether one already exists.
1246   * @returns The existing element with the same attributes and values if found,
1247   * the new element if no match is found, or `null` if the tag parameter is not defined.
1248   */
1249  addTag(tag, forceCreation = false) {
1250    if (!tag) return null;
1251    return this._getOrCreateElement(tag, forceCreation);
1252  }
1253  /**
1254   * Retrieves or creates a set of `<meta>` tag elements in the current HTML document.
1255   * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute
1256   * values in the provided tag definition, and verifies that all other attribute values are equal.
1257   * @param tags An array of tag definitions to match or create.
1258   * @param forceCreation True to create new elements without checking whether they already exist.
1259   * @returns The matching elements if found, or the new elements.
1260   */
1261  addTags(tags, forceCreation = false) {
1262    if (!tags) return [];
1263    return tags.reduce((result, tag) => {
1264      if (tag) {
1265        result.push(this._getOrCreateElement(tag, forceCreation));
1266      }
1267      return result;
1268    }, []);
1269  }
1270  /**
1271   * Retrieves a `<meta>` tag element in the current HTML document.
1272   * @param attrSelector The tag attribute and value to match against, in the format
1273   * `"tag_attribute='value string'"`.
1274   * @returns The matching element, if any.
1275   */
1276  getTag(attrSelector) {
1277    if (!attrSelector) return null;
1278    return this._doc.querySelector(`meta[${attrSelector}]`) || null;
1279  }
1280  /**
1281   * Retrieves a set of `<meta>` tag elements in the current HTML document.
1282   * @param attrSelector The tag attribute and value to match against, in the format
1283   * `"tag_attribute='value string'"`.
1284   * @returns The matching elements, if any.
1285   */
1286  getTags(attrSelector) {
1287    if (!attrSelector) return [];
1288    const list = this._doc.querySelectorAll(`meta[${attrSelector}]`);
1289    return list ? [].slice.call(list) : [];
1290  }
1291  /**
1292   * Modifies an existing `<meta>` tag element in the current HTML document.
1293   * @param tag The tag description with which to replace the existing tag content.
1294   * @param selector A tag attribute and value to match against, to identify
1295   * an existing tag. A string in the format `"tag_attribute=`value string`"`.
1296   * If not supplied, matches a tag with the same `name` or `property` attribute value as the
1297   * replacement tag.
1298   * @return The modified element.
1299   */
1300  updateTag(tag, selector) {
1301    if (!tag) return null;
1302    selector = selector || this._parseSelector(tag);
1303    const meta = this.getTag(selector);
1304    if (meta) {
1305      return this._setMetaElementAttributes(tag, meta);
1306    }
1307    return this._getOrCreateElement(tag, true);
1308  }
1309  /**
1310   * Removes an existing `<meta>` tag element from the current HTML document.
1311   * @param attrSelector A tag attribute and value to match against, to identify
1312   * an existing tag. A string in the format `"tag_attribute=`value string`"`.
1313   */
1314  removeTag(attrSelector) {
1315    this.removeTagElement(this.getTag(attrSelector));
1316  }
1317  /**
1318   * Removes an existing `<meta>` tag element from the current HTML document.
1319   * @param meta The tag definition to match against to identify an existing tag.
1320   */
1321  removeTagElement(meta) {
1322    if (meta) {
1323      this._dom.remove(meta);
1324    }
1325  }
1326  _getOrCreateElement(meta, forceCreation = false) {
1327    if (!forceCreation) {
1328      const selector = this._parseSelector(meta);
1329      const elem = this.getTags(selector).filter((elem2) => this._containsAttributes(meta, elem2))[0];
1330      if (elem !== void 0) return elem;
1331    }
1332    const element = this._dom.createElement("meta");
1333    this._setMetaElementAttributes(meta, element);
1334    const head = this._doc.getElementsByTagName("head")[0];
1335    head.appendChild(element);
1336    return element;
1337  }
1338  _setMetaElementAttributes(tag, el) {
1339    Object.keys(tag).forEach((prop) => el.setAttribute(this._getMetaKeyMap(prop), tag[prop]));
1340    return el;
1341  }
1342  _parseSelector(tag) {
1343    const attr = tag.name ? "name" : "property";
1344    return `${attr}="${tag[attr]}"`;
1345  }
1346  _containsAttributes(tag, elem) {
1347    return Object.keys(tag).every((key) => elem.getAttribute(this._getMetaKeyMap(key)) === tag[key]);
1348  }
1349  _getMetaKeyMap(prop) {
1350    return META_KEYS_MAP[prop] || prop;
1351  }
1352  static ɵfac = function Meta_Factory(__ngFactoryType__) {
1353    return new (__ngFactoryType__ || _Meta)(ɵɵinject(DOCUMENT));
1354  };
1355  static ɵprov = ɵɵdefineInjectable({
1356    token: _Meta,
1357    factory: _Meta.ɵfac,
1358    providedIn: "root"
1359  });
1360};
1361(() => {
1362  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Meta, [{
1363    type: Injectable,
1364    args: [{
1365      providedIn: "root"
1366    }]
1367  }], () => [{
1368    type: void 0,
1369    decorators: [{
1370      type: Inject,
1371      args: [DOCUMENT]
1372    }]
1373  }], null);
1374})();
1375var META_KEYS_MAP = {
1376  httpEquiv: "http-equiv"
1377};
1378var Title = class _Title {
1379  _doc;
1380  constructor(_doc) {
1381    this._doc = _doc;
1382  }
1383  /**
1384   * Get the title of the current HTML document.
1385   */
1386  getTitle() {
1387    return this._doc.title;
1388  }
1389  /**
1390   * Set the title of the current HTML document.
1391   * @param newTitle
1392   */
1393  setTitle(newTitle) {
1394    this._doc.title = newTitle || "";
1395  }
1396  static ɵfac = function Title_Factory(__ngFactoryType__) {
1397    return new (__ngFactoryType__ || _Title)(ɵɵinject(DOCUMENT));
1398  };
1399  static ɵprov = ɵɵdefineInjectable({
1400    token: _Title,
1401    factory: _Title.ɵfac,
1402    providedIn: "root"
1403  });
1404};
1405(() => {
1406  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Title, [{
1407    type: Injectable,
1408    args: [{
1409      providedIn: "root"
1410    }]
1411  }], () => [{
1412    type: void 0,
1413    decorators: [{
1414      type: Inject,
1415      args: [DOCUMENT]
1416    }]
1417  }], null);
1418})();
1419function exportNgVar(name, value) {
1420  if (typeof COMPILED === "undefined" || !COMPILED) {
1421    const ng = _global["ng"] = _global["ng"] || {};
1422    ng[name] = value;
1423  }
1424}
1425var ChangeDetectionPerfRecord = class {
1426  msPerTick;
1427  numTicks;
1428  constructor(msPerTick, numTicks) {
1429    this.msPerTick = msPerTick;
1430    this.numTicks = numTicks;
1431  }
1432};
1433var AngularProfiler = class {
1434  appRef;
1435  constructor(ref) {
1436    this.appRef = ref.injector.get(ApplicationRef);
1437  }
1438  // tslint:disable:no-console
1439  /**
1440   * Exercises change detection in a loop and then prints the average amount of
1441   * time in milliseconds how long a single round of change detection takes for
1442   * the current state of the UI. It runs a minimum of 5 rounds for a minimum
1443   * of 500 milliseconds.
1444   *
1445   * Optionally, a user may pass a `config` parameter containing a map of
1446   * options. Supported options are:
1447   *
1448   * `record` (boolean) - causes the profiler to record a CPU profile while
1449   * it exercises the change detector. Example:
1450   *
1451   * ```ts
1452   * ng.profiler.timeChangeDetection({record: true})
1453   * ```
1454   */
1455  timeChangeDetection(config) {
1456    const record = config && config["record"];
1457    const profileName = "Change Detection";
1458    if (record && "profile" in console && typeof console.profile === "function") {
1459      console.profile(profileName);
1460    }
1461    const start = performance.now();
1462    let numTicks = 0;
1463    while (numTicks < 5 || performance.now() - start < 500) {
1464      this.appRef.tick();
1465      numTicks++;
1466    }
1467    const end = performance.now();
1468    if (record && "profileEnd" in console && typeof console.profileEnd === "function") {
1469      console.profileEnd(profileName);
1470    }
1471    const msPerTick = (end - start) / numTicks;
1472    console.log(`ran ${numTicks} change detection cycles`);
1473    console.log(`${msPerTick.toFixed(2)} ms per check`);
1474    return new ChangeDetectionPerfRecord(msPerTick, numTicks);
1475  }
1476};
1477var PROFILER_GLOBAL_NAME = "profiler";
1478function enableDebugTools(ref) {
1479  exportNgVar(PROFILER_GLOBAL_NAME, new AngularProfiler(ref));
1480  return ref;
1481}
1482function disableDebugTools() {
1483  exportNgVar(PROFILER_GLOBAL_NAME, null);
1484}
1485var By = class {
1486  /**
1487   * Match all nodes.
1488   *
1489   * @usageNotes
1490   * ### Example
1491   *
1492   * {@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}
1493   */
1494  static all() {
1495    return () => true;
1496  }
1497  /**
1498   * Match elements by the given CSS selector.
1499   *
1500   * @usageNotes
1501   * ### Example
1502   *
1503   * {@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}
1504   */
1505  static css(selector) {
1506    return (debugElement) => {
1507      return debugElement.nativeElement != null ? elementMatches(debugElement.nativeElement, selector) : false;
1508    };
1509  }
1510  /**
1511   * Match nodes that have the given directive present.
1512   *
1513   * @usageNotes
1514   * ### Example
1515   *
1516   * {@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}
1517   */
1518  static directive(type) {
1519    return (debugNode) => debugNode.providerTokens.indexOf(type) !== -1;
1520  }
1521};
1522function elementMatches(n, selector) {
1523  if (getDOM().isElementNode(n)) {
1524    return n.matches && n.matches(selector) || n.msMatchesSelector && n.msMatchesSelector(selector) || n.webkitMatchesSelector && n.webkitMatchesSelector(selector);
1525  }
1526  return false;
1527}
1528var EVENT_NAMES = {
1529  // pan
1530  "pan": true,
1531  "panstart": true,
1532  "panmove": true,
1533  "panend": true,
1534  "pancancel": true,
1535  "panleft": true,
1536  "panright": true,
1537  "panup": true,
1538  "pandown": true,
1539  // pinch
1540  "pinch": true,
1541  "pinchstart": true,
1542  "pinchmove": true,
1543  "pinchend": true,
1544  "pinchcancel": true,
1545  "pinchin": true,
1546  "pinchout": true,
1547  // press
1548  "press": true,
1549  "pressup": true,
1550  // rotate
1551  "rotate": true,
1552  "rotatestart": true,
1553  "rotatemove": true,
1554  "rotateend": true,
1555  "rotatecancel": true,
1556  // swipe
1557  "swipe": true,
1558  "swipeleft": true,
1559  "swiperight": true,
1560  "swipeup": true,
1561  "swipedown": true,
1562  // tap
1563  "tap": true,
1564  "doubletap": true
1565};
1566var HAMMER_GESTURE_CONFIG = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "HammerGestureConfig" : "");
1567var HAMMER_LOADER = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "HammerLoader" : "");
1568var HammerGestureConfig = class _HammerGestureConfig {
1569  /**
1570   * A set of supported event names for gestures to be used in Angular.
1571   * Angular supports all built-in recognizers, as listed in
1572   * [HammerJS documentation](https://hammerjs.github.io/).
1573   */
1574  events = [];
1575  /**
1576   * Maps gesture event names to a set of configuration options
1577   * that specify overrides to the default values for specific properties.
1578   *
1579   * The key is a supported event name to be configured,
1580   * and the options object contains a set of properties, with override values
1581   * to be applied to the named recognizer event.
1582   * For example, to disable recognition of the rotate event, specify
1583   *  `{"rotate": {"enable": false}}`.
1584   *
1585   * Properties that are not present take the HammerJS default values.
1586   * For information about which properties are supported for which events,
1587   * and their allowed and default values, see
1588   * [HammerJS documentation](https://hammerjs.github.io/).
1589   *
1590   */
1591  overrides = {};
1592  /**
1593   * Properties whose default values can be overridden for a given event.
1594   * Different sets of properties apply to different events.
1595   * For information about which properties are supported for which events,
1596   * and their allowed and default values, see
1597   * [HammerJS documentation](https://hammerjs.github.io/).
1598   */
1599  options;
1600  /**
1601   * Creates a [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)
1602   * and attaches it to a given HTML element.
1603   * @param element The element that will recognize gestures.
1604   * @returns A HammerJS event-manager object.
1605   */
1606  buildHammer(element) {
1607    const mc = new Hammer(element, this.options);
1608    mc.get("pinch").set({
1609      enable: true
1610    });
1611    mc.get("rotate").set({
1612      enable: true
1613    });
1614    for (const eventName in this.overrides) {
1615      mc.get(eventName).set(this.overrides[eventName]);
1616    }
1617    return mc;
1618  }
1619  static ɵfac = function HammerGestureConfig_Factory(__ngFactoryType__) {
1620    return new (__ngFactoryType__ || _HammerGestureConfig)();
1621  };
1622  static ɵprov = ɵɵdefineInjectable({
1623    token: _HammerGestureConfig,
1624    factory: _HammerGestureConfig.ɵfac
1625  });
1626};
1627(() => {
1628  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(HammerGestureConfig, [{
1629    type: Injectable
1630  }], null, null);
1631})();
1632var HammerGesturesPlugin = class _HammerGesturesPlugin extends EventManagerPlugin {
1633  _config;
1634  _injector;
1635  loader;
1636  _loaderPromise = null;
1637  constructor(doc, _config, _injector, loader) {
1638    super(doc);
1639    this._config = _config;
1640    this._injector = _injector;
1641    this.loader = loader;
1642  }
1643  supports(eventName) {
1644    if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) {
1645      return false;
1646    }
1647    if (!window.Hammer && !this.loader) {
1648      if (typeof ngDevMode === "undefined" || ngDevMode) {
1649        const _console = this._injector.get(Console);
1650        _console.warn(`The "${eventName}" event cannot be bound because Hammer.JS is not loaded and no custom loader has been specified.`);
1651      }
1652      return false;
1653    }
1654    return true;
1655  }
1656  addEventListener(element, eventName, handler) {
1657    const zone = this.manager.getZone();
1658    eventName = eventName.toLowerCase();
1659    if (!window.Hammer && this.loader) {
1660      this._loaderPromise = this._loaderPromise || zone.runOutsideAngular(() => this.loader());
1661      let cancelRegistration = false;
1662      let deregister = () => {
1663        cancelRegistration = true;
1664      };
1665      zone.runOutsideAngular(() => this._loaderPromise.then(() => {
1666        if (!window.Hammer) {
1667          if (typeof ngDevMode === "undefined" || ngDevMode) {
1668            const _console = this._injector.get(Console);
1669            _console.warn(`The custom HAMMER_LOADER completed, but Hammer.JS is not present.`);
1670          }
1671          deregister = () => {
1672          };
1673          return;
1674        }
1675        if (!cancelRegistration) {
1676          deregister = this.addEventListener(element, eventName, handler);
1677        }
1678      }).catch(() => {
1679        if (typeof ngDevMode === "undefined" || ngDevMode) {
1680          const _console = this._injector.get(Console);
1681          _console.warn(`The "${eventName}" event cannot be bound because the custom Hammer.JS loader failed.`);
1682        }
1683        deregister = () => {
1684        };
1685      }));
1686      return () => {
1687        deregister();
1688      };
1689    }
1690    return zone.runOutsideAngular(() => {
1691      const mc = this._config.buildHammer(element);
1692      const callback = function(eventObj) {
1693        zone.runGuarded(function() {
1694          handler(eventObj);
1695        });
1696      };
1697      mc.on(eventName, callback);
1698      return () => {
1699        mc.off(eventName, callback);
1700        if (typeof mc.destroy === "function") {
1701          mc.destroy();
1702        }
1703      };
1704    });
1705  }
1706  isCustomEvent(eventName) {
1707    return this._config.events.indexOf(eventName) > -1;
1708  }
1709  static ɵfac = function HammerGesturesPlugin_Factory(__ngFactoryType__) {
1710    return new (__ngFactoryType__ || _HammerGesturesPlugin)(ɵɵinject(DOCUMENT), ɵɵinject(HAMMER_GESTURE_CONFIG), ɵɵinject(Injector), ɵɵinject(HAMMER_LOADER, 8));
1711  };
1712  static ɵprov = ɵɵdefineInjectable({
1713    token: _HammerGesturesPlugin,
1714    factory: _HammerGesturesPlugin.ɵfac
1715  });
1716};
1717(() => {
1718  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(HammerGesturesPlugin, [{
1719    type: Injectable
1720  }], () => [{
1721    type: void 0,
1722    decorators: [{
1723      type: Inject,
1724      args: [DOCUMENT]
1725    }]
1726  }, {
1727    type: HammerGestureConfig,
1728    decorators: [{
1729      type: Inject,
1730      args: [HAMMER_GESTURE_CONFIG]
1731    }]
1732  }, {
1733    type: Injector
1734  }, {
1735    type: void 0,
1736    decorators: [{
1737      type: Optional
1738    }, {
1739      type: Inject,
1740      args: [HAMMER_LOADER]
1741    }]
1742  }], null);
1743})();
1744var HammerModule = class _HammerModule {
1745  static ɵfac = function HammerModule_Factory(__ngFactoryType__) {
1746    return new (__ngFactoryType__ || _HammerModule)();
1747  };
1748  static ɵmod = ɵɵdefineNgModule({
1749    type: _HammerModule
1750  });
1751  static ɵinj = ɵɵdefineInjector({
1752    providers: [{
1753      provide: EVENT_MANAGER_PLUGINS,
1754      useClass: HammerGesturesPlugin,
1755      multi: true,
1756      deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, Injector, [new Optional(), HAMMER_LOADER]]
1757    }, {
1758      provide: HAMMER_GESTURE_CONFIG,
1759      useClass: HammerGestureConfig
1760    }]
1761  });
1762};
1763(() => {
1764  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(HammerModule, [{
1765    type: NgModule,
1766    args: [{
1767      providers: [{
1768        provide: EVENT_MANAGER_PLUGINS,
1769        useClass: HammerGesturesPlugin,
1770        multi: true,
1771        deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, Injector, [new Optional(), HAMMER_LOADER]]
1772      }, {
1773        provide: HAMMER_GESTURE_CONFIG,
1774        useClass: HammerGestureConfig
1775      }]
1776    }]
1777  }], null, null);
1778})();
1779var DomSanitizer = class _DomSanitizer {
1780  static ɵfac = function DomSanitizer_Factory(__ngFactoryType__) {
1781    return new (__ngFactoryType__ || _DomSanitizer)();
1782  };
1783  static ɵprov = ɵɵdefineInjectable({
1784    token: _DomSanitizer,
1785    factory: function DomSanitizer_Factory(__ngFactoryType__) {
1786      let __ngConditionalFactory__ = null;
1787      if (__ngFactoryType__) {
1788        __ngConditionalFactory__ = new (__ngFactoryType__ || _DomSanitizer)();
1789      } else {
1790        __ngConditionalFactory__ = ɵɵinject(DomSanitizerImpl);
1791      }
1792      return __ngConditionalFactory__;
1793    },
1794    providedIn: "root"
1795  });
1796};
1797(() => {
1798  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DomSanitizer, [{
1799    type: Injectable,
1800    args: [{
1801      providedIn: "root",
1802      useExisting: forwardRef(() => DomSanitizerImpl)
1803    }]
1804  }], null, null);
1805})();
1806var DomSanitizerImpl = class _DomSanitizerImpl extends DomSanitizer {
1807  _doc;
1808  constructor(_doc) {
1809    super();
1810    this._doc = _doc;
1811  }
1812  sanitize(ctx, value) {
1813    if (value == null) return null;
1814    switch (ctx) {
1815      case SecurityContext.NONE:
1816        return value;
1817      case SecurityContext.HTML:
1818        if (allowSanitizationBypassAndThrow(
1819          value,
1820          "HTML"
1821          /* BypassType.Html */
1822        )) {
1823          return unwrapSafeValue(value);
1824        }
1825        return _sanitizeHtml(this._doc, String(value)).toString();
1826      case SecurityContext.STYLE:
1827        if (allowSanitizationBypassAndThrow(
1828          value,
1829          "Style"
1830          /* BypassType.Style */
1831        )) {
1832          return unwrapSafeValue(value);
1833        }
1834        return value;
1835      case SecurityContext.SCRIPT:
1836        if (allowSanitizationBypassAndThrow(
1837          value,
1838          "Script"
1839          /* BypassType.Script */
1840        )) {
1841          return unwrapSafeValue(value);
1842        }
1843        throw new RuntimeError(5200, (typeof ngDevMode === "undefined" || ngDevMode) && "unsafe value used in a script context");
1844      case SecurityContext.URL:
1845        if (allowSanitizationBypassAndThrow(
1846          value,
1847          "URL"
1848          /* BypassType.Url */
1849        )) {
1850          return unwrapSafeValue(value);
1851        }
1852        return _sanitizeUrl(String(value));
1853      case SecurityContext.RESOURCE_URL:
1854        if (allowSanitizationBypassAndThrow(
1855          value,
1856          "ResourceURL"
1857          /* BypassType.ResourceUrl */
1858        )) {
1859          return unwrapSafeValue(value);
1860        }
1861        throw new RuntimeError(5201, (typeof ngDevMode === "undefined" || ngDevMode) && `unsafe value used in a resource URL context (see ${XSS_SECURITY_URL})`);
1862      default:
1863        throw new RuntimeError(5202, (typeof ngDevMode === "undefined" || ngDevMode) && `Unexpected SecurityContext ${ctx} (see ${XSS_SECURITY_URL})`);
1864    }
1865  }
1866  bypassSecurityTrustHtml(value) {
1867    return bypassSanitizationTrustHtml(value);
1868  }
1869  bypassSecurityTrustStyle(value) {
1870    return bypassSanitizationTrustStyle(value);
1871  }
1872  bypassSecurityTrustScript(value) {
1873    return bypassSanitizationTrustScript(value);
1874  }
1875  bypassSecurityTrustUrl(value) {
1876    return bypassSanitizationTrustUrl(value);
1877  }
1878  bypassSecurityTrustResourceUrl(value) {
1879    return bypassSanitizationTrustResourceUrl(value);
1880  }
1881  static ɵfac = function DomSanitizerImpl_Factory(__ngFactoryType__) {
1882    return new (__ngFactoryType__ || _DomSanitizerImpl)(ɵɵinject(DOCUMENT));
1883  };
1884  static ɵprov = ɵɵdefineInjectable({
1885    token: _DomSanitizerImpl,
1886    factory: _DomSanitizerImpl.ɵfac,
1887    providedIn: "root"
1888  });
1889};
1890(() => {
1891  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DomSanitizerImpl, [{
1892    type: Injectable,
1893    args: [{
1894      providedIn: "root"
1895    }]
1896  }], () => [{
1897    type: void 0,
1898    decorators: [{
1899      type: Inject,
1900      args: [DOCUMENT]
1901    }]
1902  }], null);
1903})();
1904var HydrationFeatureKind;
1905(function(HydrationFeatureKind2) {
1906  HydrationFeatureKind2[HydrationFeatureKind2["NoHttpTransferCache"] = 0] = "NoHttpTransferCache";
1907  HydrationFeatureKind2[HydrationFeatureKind2["HttpTransferCacheOptions"] = 1] = "HttpTransferCacheOptions";
1908  HydrationFeatureKind2[HydrationFeatureKind2["I18nSupport"] = 2] = "I18nSupport";
1909  HydrationFeatureKind2[HydrationFeatureKind2["EventReplay"] = 3] = "EventReplay";
1910  HydrationFeatureKind2[HydrationFeatureKind2["IncrementalHydration"] = 4] = "IncrementalHydration";
1911})(HydrationFeatureKind || (HydrationFeatureKind = {}));
1912function hydrationFeature(ɵkind, ɵproviders = [], ɵoptions = {}) {
1913  return {
1914    ɵkind,
1915    ɵproviders
1916  };
1917}
1918function withNoHttpTransferCache() {
1919  return hydrationFeature(HydrationFeatureKind.NoHttpTransferCache);
1920}
1921function withHttpTransferCacheOptions(options) {
1922  return hydrationFeature(HydrationFeatureKind.HttpTransferCacheOptions, withHttpTransferCache(options));
1923}
1924function withI18nSupport2() {
1925  return hydrationFeature(HydrationFeatureKind.I18nSupport, withI18nSupport());
1926}
1927function withEventReplay2() {
1928  return hydrationFeature(HydrationFeatureKind.EventReplay, withEventReplay());
1929}
1930function withIncrementalHydration2() {
1931  return hydrationFeature(HydrationFeatureKind.IncrementalHydration, withIncrementalHydration());
1932}
1933function provideZoneJsCompatibilityDetector() {
1934  return [{
1935    provide: ENVIRONMENT_INITIALIZER,
1936    useValue: () => {
1937      const ngZone = inject(NgZone);
1938      const isZoneless = inject(ZONELESS_ENABLED);
1939      if (!isZoneless && ngZone.constructor !== NgZone) {
1940        const console2 = inject(Console);
1941        const message = formatRuntimeError(-5e3, "Angular detected that hydration was enabled for an application that uses a custom or a noop Zone.js implementation. This is not yet a fully supported configuration.");
1942        console2.warn(message);
1943      }
1944    },
1945    multi: true
1946  }];
1947}
1948function provideClientHydration(...features) {
1949  const providers = [];
1950  const featuresKind = /* @__PURE__ */ new Set();
1951  for (const {
1952    ɵproviders,
1953    ɵkind
1954  } of features) {
1955    featuresKind.add(ɵkind);
1956    if (ɵproviders.length) {
1957      providers.push(ɵproviders);
1958    }
1959  }
1960  const hasHttpTransferCacheOptions = featuresKind.has(HydrationFeatureKind.HttpTransferCacheOptions);
1961  if (typeof ngDevMode !== "undefined" && ngDevMode && featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) && hasHttpTransferCacheOptions) {
1962    throw new Error("Configuration error: found both withHttpTransferCacheOptions() and withNoHttpTransferCache() in the same call to provideClientHydration(), which is a contradiction.");
1963  }
1964  return makeEnvironmentProviders([typeof ngDevMode !== "undefined" && ngDevMode ? provideZoneJsCompatibilityDetector() : [], withDomHydration(), featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) || hasHttpTransferCacheOptions ? [] : withHttpTransferCache({}), providers]);
1965}
1966var VERSION = new Version("19.2.14");
1967
1968export {
1969  EVENT_MANAGER_PLUGINS,
1970  EventManager,
1971  EventManagerPlugin,
1972  SharedStylesHost,
1973  REMOVE_STYLES_ON_COMPONENT_DESTROY,
1974  DomRendererFactory2,
1975  BrowserDomAdapter,
1976  BrowserGetTestability,
1977  DomEventsPlugin,
1978  KeyEventsPlugin,
1979  bootstrapApplication,
1980  createApplication,
1981  provideProtractorTestingSupport,
1982  platformBrowser,
1983  BrowserModule,
1984  Meta,
1985  Title,
1986  enableDebugTools,
1987  disableDebugTools,
1988  By,
1989  HAMMER_GESTURE_CONFIG,
1990  HAMMER_LOADER,
1991  HammerGestureConfig,
1992  HammerGesturesPlugin,
1993  HammerModule,
1994  DomSanitizer,
1995  DomSanitizerImpl,
1996  HydrationFeatureKind,
1997  withNoHttpTransferCache,
1998  withHttpTransferCacheOptions,
1999  withI18nSupport2 as withI18nSupport,
2000  withEventReplay2 as withEventReplay,
2001  withIncrementalHydration2 as withIncrementalHydration,
2002  provideClientHydration,
2003  VERSION
2004};
2005/*! Bundled license information:
2006
2007@angular/platform-browser/fesm2022/dom_renderer-DGKzginR.mjs:
2008@angular/platform-browser/fesm2022/browser-D-u-fknz.mjs:
2009@angular/platform-browser/fesm2022/platform-browser.mjs:
2010  (**
2011   * @license Angular v19.2.14
2012   * (c) 2010-2025 Google LLC. https://angular.io/
2013   * License: MIT
2014   *)
2015*/
2016//# sourceMappingURL=chunk-DP5BB6VF.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.