https://angular.dev/

Submitted URL:
https://angular.io/Redirected
Report Finished:

The outgoing links identified from the page

LinkText
https://goo.gle/angular-survey-2024Take the 2024 Angular Developer Survey today!Take the 2024 Angular Developer Survey today!
https://policies.google.com/technologies/cookies Learn more
https://goo.gle/angular-v18Angular v18 is now available!Read about our newest release
https://x.com/angularX (formerly Twitter)
https://www.youtube.com/angularYouTube
https://discord.gg/angular Discord
https://github.com/angular/angularGitHub
https://stackoverflow.com/questions/tagged/angular Stack Overflow
https://github.com/angular/angular/blob/main/CONTRIBUTING.md Contribute
https://github.com/angular/code-of-conduct/blob/main/CODE_OF_CONDUCT.md Code of Conduct

JavaScript Variables · 9 found

Global JavaScript variables loaded on the window object of a page, are variables declared outside of functions and accessible from anywhere in the code within the current scope

NameType
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
dataLayerobject
gtagfunction
google_tag_managerobject
google_tag_dataobject
onYouTubeIframeAPIReadyfunction
gaGlobalobject

Console log messages · 0 found

Messages logged to the web console

HTML

The raw HTML body of the page

<!DOCTYPE html><!-- We set all theme classes to allow critters to inline the theme styles and prevent flickering --><html lang="en" class="docs-light-mode" data-critters-container=""><head>
    <script>
      // This logic must execute early, so that we set the necessary
      // CSS classes to the document node and avoid unstyled content
      // from appearing on the page.
      const THEME_PREFERENCE_LOCAL_STORAGE_KEY = 'themePreference';
      const DARK_MODE_CLASS_NAME = 'docs-dark-mode';
      const LIGHT_MODE_CLASS_NAME = 'docs-light-mode';
      const PREFERS_COLOR_SCHEME_DARK = '(prefers-color-scheme: dark)';


      const theme = localStorage.getItem(THEME_PREFERENCE_LOCAL_STORAGE_KEY) ?? 'auto';
      const prefersDark =
        window.matchMedia && window.matchMedia(PREFERS_COLOR_SCHEME_DARK).matches;
      const documentClassList = this.document.documentElement.classList;

      // clearing classes before setting them.
      this.document.documentElement.className = '';
      if (theme === 'dark' || (theme === 'auto' && prefersDark)) {
        documentClassList.add(DARK_MODE_CLASS_NAME);
      } else {
        documentClassList.add(LIGHT_MODE_CLASS_NAME);
      }

      if(location.search.includes('uwu')) {
        documentClassList.add('uwu');
      }
    </script>
    <style>
      .uwu-logo {
        display: none;
      }
      html.uwu .angular-logo {
        display: none;
      }
      html.uwu .uwu-logo {
        display: block !important;
      }
    </style>

    <meta charset="utf-8">
    <title>Home • Angular</title>
    <base href="/">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Primary Meta Tags -->
    <meta name="title" content="Angular">
    <meta name="description" content="The web development framework for building modern apps.">

    <!-- Favicons -->
    <link rel="apple-touch-icon" sizes="180x180" href="/assets/icons/apple-touch-icon.png">
    <link rel="icon" type="image/png" sizes="48x48" href="/assets/icons/favicon-48x48.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/assets/icons/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/assets/icons/favicon-16x16.png">
    <link rel="manifest" href="/assets/icons/site.webmanifest">
    <link rel="mask-icon" href="/assets/icons/safari-pinned-tab.svg" color="#e90464">
    <link rel="shortcut icon" href="/assets/icons/favicon.ico">
    <link rel="canonical" href="https://angular.dev/">

    <meta name="apple-mobile-web-app-title" content="Angular">
    <meta name="application-name" content="Angular">
    <meta name="msapplication-TileColor" content="#e90464">
    <meta name="msapplication-config" content="/assets/icons/browserconfig.xml">
    <meta name="theme-color" content="#ffffff">

    <!-- Open Graph / Facebook -->
    <meta property="og:type" content="website">
    <meta property="og:url" content="https://angular.dev/">
    <meta property="og:title" content="Angular">
    <meta property="og:description" content="The web development framework for building modern apps.">
    <meta property="og:image" content="https://angular.dev/assets/images/ng-image.jpg">

    <!-- Twitter -->
    <meta property="twitter:card" content="summary_large_image">
    <meta property="twitter:url" content="https://angular.dev/">
    <meta property="twitter:title" content="Angular">
    <meta property="twitter:description" content="The web development framework for building modern apps.">
    <meta property="twitter:image" content="https://angular.dev/assets/images/ng-image.jpg">

    <!-- Fonts -->
    <link href="https://fonts.googleapis.com/css2?family=Inter+Tight:wght@500;600&amp;family=Inter:wght@400;500;600&amp;family=DM+Mono:ital@0;1&amp;display=swap" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0" rel="stylesheet">
    <link rel="preload" href="/assets/textures/gradient.jpg" as="image">
  <style>@charset "UTF-8";.docs-light-mode{background-color:#fff;--bright-blue: oklch(51.01% .274 263.83);--indigo-blue: oklch(51.64% .229 281.65);--electric-violet: oklch(53.18% .28 296.97);--french-violet: oklch(47.66% .246 305.88);--vivid-pink: oklch(69.02% .277 332.77);--hot-pink: oklch(59.91% .239 8.14);--hot-red: oklch(61.42% .238 15.34);--orange-red: oklch(63.32% .24 31.68);--super-green: oklch(79.12% .257 155.13);--subtle-purple: color-mix(in srgb, var(--bright-blue) 5%, white 10%);--light-blue: color-mix(in srgb, var(--bright-blue), white 50%);--light-violet: color-mix(in srgb, var(--electric-violet), white 65%);--light-orange: color-mix(in srgb, var(--orange-red), white 50%);--light-pink: color-mix(in srgb, var(--vivid-pink) 10%, white 80%);--symbolic-purple: oklch(42.86% .29 266.4);--symbolic-gray: oklch(66.98% 0 0);--symbolic-blue: oklch(42.45% .223 263.38);--symbolic-pink: oklch(63.67% .254 13.47);--symbolic-orange: oklch(64.73% .23769984683784018 33.18328352127882);--symbolic-yellow: oklch(78.09% .163 65.69);--symbolic-green: oklch(67.83% .229 142.73);--symbolic-cyan: oklch(67.05% .1205924489987394 181.34025902203868);--symbolic-magenta: oklch(51.74% .25453048882711515 315.26261625862725);--symbolic-teal: oklch(57.59% .083 230.58);--symbolic-brown: oklch(49.06% .128 46.41);--symbolic-lime: oklch(70.33% .2078857836035299 135.66843631046476);--gray-1000: oklch(16.93% .004 285.95);--gray-900: oklch(19.37% .006 300.98);--gray-800: oklch(25.16% .008 308.11);--gray-700: oklch(36.98% .014 302.71);--gray-600: oklch(44% .019 306.08);--gray-500: oklch(54.84% .023 304.99);--gray-400: oklch(70.9% .015 304.04);--gray-300: oklch(84.01% .009 308.34);--gray-200: oklch(91.75% .004 301.42);--gray-100: oklch(97.12% .002 325.59);--gray-50: oklch(98.81% 0 0);--red-to-pink-horizontal-gradient: linear-gradient( 90deg, var(--hot-pink) 11.42%, var(--hot-red) 34.83%, var(--vivid-pink) 60.69% );--red-to-pink-to-purple-horizontal-gradient: linear-gradient( 90deg, var(--orange-red) 0%, var(--vivid-pink) 50%, var(--electric-violet) 100% );--pink-to-highlight-to-purple-to-blue-horizontal-gradient: linear-gradient( 140deg, var(--vivid-pink) 0%, var(--vivid-pink) 15%, color-mix(in srgb, var(--vivid-pink), var(--electric-violet) 50%) 25%, color-mix(in srgb, var(--vivid-pink), var(--electric-violet) 10%) 35%, color-mix(in srgb, var(--vivid-pink), var(--orange-red) 50%) 42%, color-mix(in srgb, var(--vivid-pink), var(--orange-red) 50%) 44%, color-mix(in srgb, var(--vivid-pink), var(--page-background) 70%) 47%, var(--electric-violet) 48%, var(--bright-blue) 60% );--purple-to-blue-horizontal-gradient: linear-gradient( 90deg, var(--electric-violet) 0%, var(--bright-blue) 100% );--purple-to-blue-vertical-gradient: linear-gradient( 0deg, var(--electric-violet) 0%, var(--bright-blue) 100% );--red-to-orange-horizontal-gradient: linear-gradient( 90deg, var(--hot-pink) 0%, var(--orange-red) 100% );--red-to-orange-vertical-gradient: linear-gradient( 0deg, var(--hot-pink) 0%, var(--orange-red) 100% );--pink-to-purple-horizontal-gradient: linear-gradient( 90deg, var(--vivid-pink) 0%, var(--electric-violet) 100% );--pink-to-purple-vertical-gradient: linear-gradient( 0deg, var(--electric-violet) 0%, var(--vivid-pink) 100% );--purple-to-light-purple-vertical-gradient: linear-gradient( 0deg, var(--french-violet) 0%, var(--light-violet) 100% );--green-to-cyan-vertical-gradient: linear-gradient( 0deg, var(--symbolic-cyan) 0%, var(--super-green) 100% );--blue-to-teal-vertical-gradient: linear-gradient( 0deg, var(--bright-blue) 0%, var(--light-blue) 100% );--blue-to-cyan-vertical-gradient: linear-gradient( 0deg, var(--bright-blue) 0%, var(--symbolic-cyan) 100% );--black-to-gray-vertical-gradient: linear-gradient( 0deg, var(--primary-contrast) 0%, var(--gray-400) 100% );--red-to-pink-vertical-gradient: linear-gradient(0deg, var(--hot-red) 0%, var(--vivid-pink) 100%);--orange-to-pink-vertical-gradient: linear-gradient( 0deg, var(--vivid-pink) 0%, var(--light-orange) 100% );--page-bg-radial-gradient: radial-gradient(circle, white 0%, white 100%);--soft-pink-radial-gradient: radial-gradient( circle at center bottom, var(--light-pink) 0%, white 80% );--full-contrast: black;--primary-contrast: var(--gray-900);--secondary-contrast: var(--gray-800);--tertiary-contrast: var(--gray-700);--quaternary-contrast: var(--gray-500);--quinary-contrast: var(--gray-300);--senary-contrast: var(--gray-200);--septenary-contrast: var(--gray-100);--octonary-contrast: var(--gray-50);--page-background: white;--gray-unfilled: var(--gray-400);--webgl-page-background: #ffffff;--webgl-gray-unfilled: #a39fa9;--mdc-snackbar-container-shape: .25rem;--mdc-snackbar-container-color: var(--page-background);--mdc-snackbar-supporting-text-color: var(--primary-contrast)}.docs-dark-mode{background-color:#0f0f11;--bright-blue: oklch(51.01% .274 263.83);--indigo-blue: oklch(51.64% .229 281.65);--electric-violet: oklch(53.18% .28 296.97);--french-violet: oklch(47.66% .246 305.88);--vivid-pink: oklch(69.02% .277 332.77);--hot-pink: oklch(59.91% .239 8.14);--hot-red: oklch(61.42% .238 15.34);--orange-red: oklch(63.32% .24 31.68);--super-green: oklch(79.12% .257 155.13);--subtle-purple: color-mix(in srgb, var(--bright-blue) 5%, white 10%);--light-blue: color-mix(in srgb, var(--bright-blue), white 50%);--light-violet: color-mix(in srgb, var(--electric-violet), white 65%);--light-orange: color-mix(in srgb, var(--orange-red), white 50%);--light-pink: color-mix(in srgb, var(--vivid-pink) 10%, white 80%);--symbolic-purple: oklch(42.86% .29 266.4);--symbolic-gray: oklch(66.98% 0 0);--symbolic-blue: oklch(42.45% .223 263.38);--symbolic-pink: oklch(63.67% .254 13.47);--symbolic-orange: oklch(64.73% .23769984683784018 33.18328352127882);--symbolic-yellow: oklch(78.09% .163 65.69);--symbolic-green: oklch(67.83% .229 142.73);--symbolic-cyan: oklch(67.05% .1205924489987394 181.34025902203868);--symbolic-magenta: oklch(51.74% .25453048882711515 315.26261625862725);--symbolic-teal: oklch(57.59% .083 230.58);--symbolic-brown: oklch(49.06% .128 46.41);--symbolic-lime: oklch(70.33% .2078857836035299 135.66843631046476);--gray-1000: oklch(16.93% .004 285.95);--gray-900: oklch(19.37% .006 300.98);--gray-800: oklch(25.16% .008 308.11);--gray-700: oklch(36.98% .014 302.71);--gray-600: oklch(44% .019 306.08);--gray-500: oklch(54.84% .023 304.99);--gray-400: oklch(70.9% .015 304.04);--gray-300: oklch(84.01% .009 308.34);--gray-200: oklch(91.75% .004 301.42);--gray-100: oklch(97.12% .002 325.59);--gray-50: oklch(98.81% 0 0);--red-to-pink-horizontal-gradient: linear-gradient( 90deg, var(--hot-pink) 11.42%, var(--hot-red) 34.83%, var(--vivid-pink) 60.69% );--red-to-pink-to-purple-horizontal-gradient: linear-gradient( 90deg, var(--orange-red) 0%, var(--vivid-pink) 50%, var(--electric-violet) 100% );--pink-to-highlight-to-purple-to-blue-horizontal-gradient: linear-gradient( 140deg, var(--vivid-pink) 0%, var(--vivid-pink) 15%, color-mix(in srgb, var(--vivid-pink), var(--electric-violet) 50%) 25%, color-mix(in srgb, var(--vivid-pink), var(--electric-violet) 10%) 35%, color-mix(in srgb, var(--vivid-pink), var(--orange-red) 50%) 42%, color-mix(in srgb, var(--vivid-pink), var(--orange-red) 50%) 44%, color-mix(in srgb, var(--vivid-pink), var(--page-background) 70%) 47%, var(--electric-violet) 48%, var(--bright-blue) 60% );--purple-to-blue-horizontal-gradient: linear-gradient( 90deg, var(--electric-violet) 0%, var(--bright-blue) 100% );--purple-to-blue-vertical-gradient: linear-gradient( 0deg, var(--electric-violet) 0%, var(--bright-blue) 100% );--red-to-orange-horizontal-gradient: linear-gradient( 90deg, var(--hot-pink) 0%, var(--orange-red) 100% );--red-to-orange-vertical-gradient: linear-gradient( 0deg, var(--hot-pink) 0%, var(--orange-red) 100% );--pink-to-purple-horizontal-gradient: linear-gradient( 90deg, var(--vivid-pink) 0%, var(--electric-violet) 100% );--pink-to-purple-vertical-gradient: linear-gradient( 0deg, var(--electric-violet) 0%, var(--vivid-pink) 100% );--purple-to-light-purple-vertical-gradient: linear-gradient( 0deg, var(--french-violet) 0%, var(--light-violet) 100% );--green-to-cyan-vertical-gradient: linear-gradient( 0deg, var(--symbolic-cyan) 0%, var(--super-green) 100% );--blue-to-teal-vertical-gradient: linear-gradient( 0deg, var(--bright-blue) 0%, var(--light-blue) 100% );--blue-to-cyan-vertical-gradient: linear-gradient( 0deg, var(--bright-blue) 0%, var(--symbolic-cyan) 100% );--black-to-gray-vertical-gradient: linear-gradient( 0deg, var(--primary-contrast) 0%, var(--gray-400) 100% );--red-to-pink-vertical-gradient: linear-gradient(0deg, var(--hot-red) 0%, var(--vivid-pink) 100%);--orange-to-pink-vertical-gradient: linear-gradient( 0deg, var(--vivid-pink) 0%, var(--light-orange) 100% );--page-bg-radial-gradient: radial-gradient(circle, white 0%, white 100%);--soft-pink-radial-gradient: radial-gradient( circle at center bottom, var(--light-pink) 0%, white 80% );--full-contrast: black;--primary-contrast: var(--gray-900);--secondary-contrast: var(--gray-800);--tertiary-contrast: var(--gray-700);--quaternary-contrast: var(--gray-500);--quinary-contrast: var(--gray-300);--senary-contrast: var(--gray-200);--septenary-contrast: var(--gray-100);--octonary-contrast: var(--gray-50);--page-background: white;--gray-unfilled: var(--gray-400);--webgl-page-background: #ffffff;--webgl-gray-unfilled: #a39fa9;--full-contrast: white;--primary-contrast: var(--gray-50);--secondary-contrast: var(--gray-300);--tertiary-contrast: var(--gray-300);--quaternary-contrast: var(--gray-400);--quinary-contrast: var(--gray-500);--senary-contrast: var(--gray-700);--septenary-contrast: var(--gray-800);--octonary-contrast: var(--gray-900);--page-background: var(--gray-1000);--bright-blue: color-mix(in srgb, oklch(51.01% .274 263.83), var(--full-contrast) 60%);--indigo-blue: color-mix(in srgb, oklch(51.64% .229 281.65), var(--full-contrast) 70%);--electric-violet: color-mix(in srgb, oklch(53.18% .28 296.97), var(--full-contrast) 70%);--french-violet: color-mix(in srgb, oklch(47.66% .246 305.88), var(--full-contrast) 70%);--vivid-pink: color-mix(in srgb, oklch(69.02% .277 332.77), var(--full-contrast) 70%);--hot-pink: color-mix(in srgb, oklch(59.91% .239 8.14), var(--full-contrast) 70%);--hot-red: color-mix(in srgb, oklch(61.42% .238 15.34), var(--full-contrast) 70%);--orange-red: color-mix(in srgb, oklch(63.32% .24 31.68), var(--full-contrast) 60%);--super-green: color-mix(in srgb, oklch(79.12% .257 155.13), var(--full-contrast) 70%);--light-pink: color-mix(in srgb, var(--vivid-pink) 5%, var(--page-background) 75%);--symbolic-purple: color-mix(in srgb, oklch(42.86% .29 266.4), var(--full-contrast) 65%);--symbolic-gray: color-mix(in srgb, oklch(66.98% 0 0), var(--full-contrast) 65%);--symbolic-blue: color-mix(in srgb, oklch(42.45% .223 263.38), var(--full-contrast) 65%);--symbolic-pink: color-mix(in srgb, oklch(63.67% .254 13.47), var(--full-contrast) 65%);--symbolic-orange: color-mix( in srgb, oklch(64.73% .23769984683784018 33.18328352127882), var(--full-contrast) 65% );--symbolic-yellow: color-mix(in srgb, oklch(78.09% .163 65.69), var(--full-contrast) 65%);--symbolic-green: color-mix(in srgb, oklch(67.83% .229 142.73), var(--full-contrast) 65%);--symbolic-cyan: color-mix( in srgb, oklch(67.05% .1205924489987394 181.34025902203868), var(--full-contrast) 65% );--symbolic-magenta: color-mix( in srgb, oklch(51.74% .25453048882711515 315.26261625862725), var(--full-contrast) 65% );--symbolic-teal: color-mix(in srgb, oklch(57.59% .083 230.58), var(--full-contrast) 65%);--symbolic-brown: color-mix(in srgb, oklch(49.06% .128 46.41), var(--full-contrast) 65%);--symbolic-lime: color-mix( in srgb, oklch(70.33% .2078857836035299 135.66843631046476), var(--full-contrast) 65% );--page-bg-radial-gradient: radial-gradient(circle, black 0%, black 100%);--soft-pink-radial-gradient: radial-gradient( circle at center bottom, var(--light-pink) 0%, color-mix(in srgb, black, transparent 15%) 80% );--gray-unfilled: var(--gray-700);--webgl-page-background: #0f0f11;--webgl-gray-unfilled: #413e46;--mdc-snackbar-container-shape: .25rem;--mdc-snackbar-container-color: var(--page-background);--mdc-snackbar-supporting-text-color: var(--primary-contrast)}:root{--z-index-mini-menu: 200;--z-index-nav: 100;--z-index-cookie-consent: 60;--z-index-content: 50;--z-index-icon: 10}:root{--fallback-font-stack: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--page-width: 80ch;--layout-padding: 3.12rem;--primary-nav-width: 110px;--secondary-nav-width: 16.25rem;--fixed-content-height: calc(100vh - var(--layout-padding) * 2)}@media (max-width: 900px){:root{--layout-padding: 2rem}}@media (max-width: 700px){:root{--layout-padding: 1rem}}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:var(--inter-font);font-size:16px;background-color:var(--page-background);color:var(--primary-contrast);transition:color .3s ease,background-color .3s ease;scroll-behavior:smooth}@media (prefers-reduced-motion){html{scroll-behavior:auto}}body{margin:0;overflow-y:auto;overflow-x:hidden}html,body{height:100vh;min-height:100vh}@supports (height: 100svh){html,body{height:100svh}}button{cursor:pointer}:root{--code-font: "DM Mono", monospace;--inter-font: "Inter", var(--fallback-font-stack);--inter-tight-font: "Inter Tight", var(--fallback-font-stack);--icons: "Material Symbols Outlined";--selection-background: var(--vivid-pink);--selection-color: var(--vivid-pink)}:nth-child(6n+1){--selection-color: var(--vivid-pink)}:nth-child(6n+2){--selection-background: var(--hot-pink);--selection-color: var(--hot-pink)}:nth-child(6n+3){--selection-background: var(--electric-violet);--selection-color: var(--electric-violet)}:nth-child(6n+4){--selection-background: var(--french-violet);--selection-color: var(--french-violet)}:nth-child(6n+5){--selection-background: var(--indigo-blue);--selection-color: var(--indigo-blue)}:nth-child(6n+6){--selection-background: var(--bright-blue);--selection-color: var(--bright-blue)}h1,h2{font-family:var(--inter-tight-font);font-weight:500;text-wrap:balance}p{font-size:.875rem;line-height:1.4rem;font-weight:400;letter-spacing:-.00875rem}ul{font-size:.875rem;line-height:1.4rem;font-weight:400;letter-spacing:-.01rem}a{text-decoration:none;font-weight:500;transition:color .3s ease}p>a,div>a:not(.docs-card),li:not(.docs-faceted-list *) a{color:var(--bright-blue)}p>a:hover,div>a:not(.docs-card):hover,li:not(.docs-faceted-list *) a:hover{color:var(--vivid-pink)}p>a:active,div>a:not(.docs-card):active,li:not(.docs-faceted-list *) a:active{color:var(--hot-red)}p>a{margin-block:0;text-decoration:underline}.docs-scroll-hide::-webkit-scrollbar-track{background:#0000}.docs-scroll-hide::-webkit-scrollbar{width:0}.docs-scroll-track-transparent-large::-webkit-scrollbar-track{background:#0000;cursor:pointer}.docs-scroll-track-transparent-large::-webkit-scrollbar{width:8px;height:8px}.docs-scroll-track-transparent-large::-webkit-scrollbar-thumb{background-color:var(--quinary-contrast);border-radius:10px;transition:background-color .3s ease}.docs-scroll-track-transparent-large::-webkit-scrollbar-thumb:hover{background-color:var(--quaternary-contrast)}button{font-family:var(--inter-font);background:transparent;-webkit-appearance:none;border:0;font-weight:600}button::-moz-focus-inner{border:0;padding:0}button:disabled{cursor:not-allowed}@property --angle{syntax: "<angle>"; initial-value: 90deg; inherits: false;}@keyframes spin-gradient{0%{--angle: 90deg}to{--angle: 450deg}}.docs-primary-btn{cursor:pointer;border:none;outline:none;position:relative;border-radius:.25rem;padding:.75rem 1.5rem;width:max-content;color:transparent;--angle: 90deg;background:linear-gradient(var(--angle),var(--orange-red) 0%,var(--vivid-pink) 50%,var(--electric-violet) 100%)}.docs-primary-btn:before{content:attr(text);position:absolute;inset:1px;background:var(--page-bg-radial-gradient);border-radius:.2rem;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease,background .3s ease;color:var(--primary-contrast)}.docs-primary-btn:after{content:attr(text);position:absolute;inset:1px;background:var(--page-background);border-radius:.2rem;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease,background .3s ease;color:var(--primary-contrast)}.docs-primary-btn:hover{animation:spin-gradient 4s linear infinite forwards}.docs-primary-btn:hover:before{background-color:var(--page-background);background:var(--soft-pink-radial-gradient);opacity:.9}.docs-primary-btn:hover:after{opacity:0}.docs-primary-btn:active:before{opacity:.8}.docs-primary-btn:disabled{background:var(--quinary-contrast);color:var(--quinary-contrast)}.docs-primary-btn:disabled:before{background-color:var(--page-background);background:var(--page-bg-radial-gradient);opacity:1}kbd:not(:has(kbd)){position:relative;color:var(---tertiary-contrast);border:1px solid var(--quinary-contrast);box-shadow:0 1px #0003,0 0 0 2px var(--octonary-contrast) inset;text-shadow:0 1px 0 var(--octonary-contrast);border-radius:3px;display:inline-block;font-family:sans-serif;line-height:1.5;margin:0 .1em;padding:1px .4em;min-width:14px;min-height:20px;vertical-align:middle;text-align:center}@media (prefers-reduced-motion: no-preference){*:hover>kbd:not(:has(kbd)){box-shadow:0 .5px #0003,0 0 0 2px var(--octonary-contrast) inset;top:1px}}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}html{--mdc-secondary-navigation-tab-container-height: 48px;--mdc-tab-indicator-active-indicator-height: 2px;--mdc-tab-indicator-active-indicator-shape: 0;--mat-tab-header-divider-color: transparent;--mat-tab-header-divider-height: 0}html{--mat-legacy-button-toggle-height: 36px;--mat-legacy-button-toggle-shape: 2px;--mat-legacy-button-toggle-focus-state-layer-opacity: 1;--mat-standard-button-toggle-shape: 4px;--mat-standard-button-toggle-hover-state-layer-opacity: .04;--mat-standard-button-toggle-focus-state-layer-opacity: .12}html{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: #e0e0e0}html{--mat-standard-button-toggle-height: 48px}html{--mat-legacy-button-toggle-label-text-font: Roboto, sans-serif;--mat-legacy-button-toggle-label-text-line-height: 24px;--mat-legacy-button-toggle-label-text-size: 16px;--mat-legacy-button-toggle-label-text-tracking: .03125em;--mat-legacy-button-toggle-label-text-weight: 400;--mat-standard-button-toggle-label-text-font: Roboto, sans-serif;--mat-standard-button-toggle-label-text-line-height: 24px;--mat-standard-button-toggle-label-text-size: 16px;--mat-standard-button-toggle-label-text-tracking: .03125em;--mat-standard-button-toggle-label-text-weight: 400}
</style><link rel="stylesheet" href="styles-O3YD76CA.css" media="all" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-O3YD76CA.css"></noscript><link rel="modulepreload" href="chunk-PBR2MU3U.js"><link rel="modulepreload" href="chunk-JPDLFYL6.js"><link rel="modulepreload" href="chunk-ZFBHFYAX.js"><style>[_nghost-ng-c3096798922]{max-width:2560px;margin-inline:auto;display:flex;flex-direction:row;align-items:flex-start;min-height:100vh}@media (min-width: 700px) and (max-width: 900px){[_nghost-ng-c3096798922]   docs-top-level-banner[_ngcontent-ng-c3096798922]{top:4.6875rem}}@media (max-width: 700px){[_nghost-ng-c3096798922]   docs-top-level-banner[_ngcontent-ng-c3096798922]{top:3.75rem;transform:translateY(0);transition:transform .3s ease-out .6s}}@media (min-width: 700px) and (max-width: 900px){[_nghost-ng-c3096798922]:has(adev-secondary-navigation)   docs-top-level-banner[_ngcontent-ng-c3096798922]{top:8.125rem}}@media (max-width: 700px){[_nghost-ng-c3096798922]:has(.adev-nav-primary--open)   docs-top-level-banner[_ngcontent-ng-c3096798922]{transform:translateY(-3.75rem);transition:transform .3s ease-in}}@media (max-width: 900px){[_nghost-ng-c3096798922]{flex-direction:column}}[_nghost-ng-c3096798922]:has(.docs-nav-secondary--open)   .docs-app-main-content[_ngcontent-ng-c3096798922]:after, [_nghost-ng-c3096798922]:has(.adev-nav-primary--open)   .docs-app-main-content[_ngcontent-ng-c3096798922]:after{visibility:visible;opacity:1}[_nghost-ng-c3096798922]:has(.adev-home)   .adev-nav[_ngcontent-ng-c3096798922]{width:0;height:0}@media (min-width: 900px){[_nghost-ng-c3096798922]:has(.adev-home)   footer[_ngcontent-ng-c3096798922]{margin-left:var(--primary-nav-width)}}.adev-skip[_ngcontent-ng-c3096798922]{position:absolute;top:.5rem;left:.5rem;z-index:1000;background:var(--primary-contrast);color:var(--page-background);border:1px solid var(--vivid-pink);border-radius:.25rem;padding:.5rem;font-size:.875rem;transform:translateY(-150%);transition:transform .3s ease-out}.adev-skip[_ngcontent-ng-c3096798922]:focus{transform:translateY(0)}.docs-app-main-content[_ngcontent-ng-c3096798922]{display:flex;flex-direction:column;min-height:100vh;width:100%}.docs-app-main-content[_ngcontent-ng-c3096798922]   [_ngcontent-ng-c3096798922]:after{content:"";position:fixed;top:0;left:0;width:100vw;height:100vh;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:color-mix(in srgb,var(--gray-1000) 5%,transparent);z-index:50;visibility:hidden;opacity:0;transition:opacity .3s ease}@media (min-width: 700px) and (max-width: 900px){.docs-app-main-content[_ngcontent-ng-c3096798922]{width:100%}}footer[_ngcontent-ng-c3096798922]{margin-top:auto}</style><style>[_nghost-ng-c249881476]{display:flex;position:sticky;top:0;z-index:var(--z-index-nav)}[_nghost-ng-c249881476]   .adev-mobile-nav-button[_ngcontent-ng-c249881476]{display:flex;align-items:center;gap:.75rem}@media (min-width: 700px) and (max-width: 900px){[_nghost-ng-c249881476]:has(.adev-nav-primary--open){z-index:50}}.adev-mobile-nav-bar[_ngcontent-ng-c249881476]{display:none;gap:.75rem;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background-color:color-mix(in srgb,var(--page-background) 70%,transparent);position:relative;width:100vw;padding-block:.75rem;padding-inline:var(--layout-padding);border-block-end:1px solid var(--septenary-contrast);box-sizing:border-box;transform:translateY(0);transition:transform .3s ease-out .6s}@media (max-width: 700px){.adev-mobile-nav-bar[_ngcontent-ng-c249881476]{display:flex}}.adev-mobile-nav-bar[_ngcontent-ng-c249881476]:has( + .adev-nav-primary--open)[_ngcontent-ng-c249881476]{transform:translateY(-100%);transition:transform .3s ease-in}.adev-mobile-nav-bar[_ngcontent-ng-c249881476]   docs-icon[_ngcontent-ng-c249881476]{color:var(--primary-contrast)}.adev-nav-primary[_ngcontent-ng-c249881476]{display:flex;flex-direction:column;justify-content:space-between;max-height:100vh;overflow:auto;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background-color:color-mix(in srgb,var(--page-background) 70%,transparent);z-index:250;position:relative;transition:background-color .3s ease,border-color .3s ease;height:100dvh;padding-block-start:1rem;padding-block-end:2rem;box-sizing:border-box;border-block-end:1px solid var(--septenary-contrast)}.adev-nav-primary.adev-nav-primary--next[_ngcontent-ng-c249881476], .adev-nav-primary.adev-nav-primary--rc[_ngcontent-ng-c249881476]{background:linear-gradient(140deg,color-mix(in srgb,var(--orange-red),transparent 60%),color-mix(in srgb,var(--vivid-pink),transparent 40%) 15%,color-mix(in srgb,var(--electric-violet),transparent 70%) 25%,color-mix(in srgb,var(--bright-blue),transparent 60%) 90%)}.adev-nav-primary.adev-nav-primary--deprecated[_ngcontent-ng-c249881476]{background-color:color-mix(in srgb,var(--symbolic-gray),transparent 30%)}.adev-nav-primary[_ngcontent-ng-c249881476] > div[_ngcontent-ng-c249881476]{display:flex;flex-direction:column;align-items:center;justify-content:center}@media (max-width: 700px){.adev-nav-primary[_ngcontent-ng-c249881476]{position:absolute;top:0;background-color:var(--page-background);box-shadow:10px 4px 3px #0000;transform:translate(-100%);transition:transform .3s ease-in .38s}.adev-nav-primary.adev-nav-primary--open[_ngcontent-ng-c249881476]{transform:translate(0);transition:transform .3s ease-out .1s}}@media (max-width: 700px) and (prefers-reduced-motion: reduce-motion){.adev-nav-primary[_ngcontent-ng-c249881476]{transition:none}}@media (min-width: 700px) and (max-width: 900px){.adev-nav-primary[_ngcontent-ng-c249881476]{flex-direction:row;width:100vw;padding-inline:calc(var(--layout-padding) - 1.25rem);height:auto;padding-block:0}}@media (min-width: 775px){.adev-nav-primary[_ngcontent-ng-c249881476]{border-inline-end:1px solid var(--septenary-contrast)}}@media (max-width: 700px){.adev-nav-primary[_ngcontent-ng-c249881476]{border-inline-end:1px solid var(--septenary-contrast)}}.adev-nav__top[_ngcontent-ng-c249881476]{padding:0;margin:0;list-style:none;display:flex;flex-direction:column}@media (min-width: 700px) and (max-width: 900px){.adev-nav__top[_ngcontent-ng-c249881476]{flex-direction:row}}.adev-nav__top[_ngcontent-ng-c249881476]   .adev-version-button[_ngcontent-ng-c249881476]{border:1px solid var(--senary-contrast);border-radius:.25rem;width:fit-content;margin:0 auto;display:flex;justify-content:space-between;gap:.25rem;color:var(--quaternary-contrast);fill:var(--quaternary-contrast);transition:color .3s ease;font-size:.8rem;font-weight:500}.adev-nav__top[_ngcontent-ng-c249881476]   .adev-version-button[_ngcontent-ng-c249881476]:hover{color:var(--primary-contrast)}.adev-nav__top[_ngcontent-ng-c249881476]   .adev-version-button[_ngcontent-ng-c249881476]   docs-icon[_ngcontent-ng-c249881476]{font-size:inherit;line-height:inherit;transition:transform .2s ease}@media (max-width: 700px){.adev-nav__top[_ngcontent-ng-c249881476]   .adev-version-button.adev-mini-menu-open[_ngcontent-ng-c249881476]:after{transform:rotate(-90deg)}}@media (min-width: 900px){.adev-nav__top[_ngcontent-ng-c249881476]   .adev-version-button.adev-mini-menu-open[_ngcontent-ng-c249881476]:after{transform:rotate(-90deg)}}@media (min-width: 700px) and (max-width: 900px){.adev-nav__top[_ngcontent-ng-c249881476] > li[_ngcontent-ng-c249881476]:first-of-type{padding-inline-start:1.25rem}.adev-nav__top[_ngcontent-ng-c249881476]   li[_ngcontent-ng-c249881476]{padding-inline:1rem}}.adev-nav__bottom[_ngcontent-ng-c249881476]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1rem}@media (min-width: 700px) and (max-width: 900px){.adev-nav__bottom[_ngcontent-ng-c249881476]{flex-direction:row;margin-inline-end:1.25rem}}.adev-nav__bottom[_ngcontent-ng-c249881476]   .adev-nav-item--active[_ngcontent-ng-c249881476]   button[_ngcontent-ng-c249881476]   docs-icon[_ngcontent-ng-c249881476]{color:var(--primary-contrast)}.adev-nav__bottom[_ngcontent-ng-c249881476]   button[_ngcontent-ng-c249881476]{border:none;background-color:transparent;cursor:pointer;width:100%;padding-inline:1rem}@media (min-width: 700px) and (max-width: 900px){.adev-nav__bottom[_ngcontent-ng-c249881476]   button[_ngcontent-ng-c249881476]{padding-inline:.5rem}}.adev-nav__bottom[_ngcontent-ng-c249881476]   button[_ngcontent-ng-c249881476]   docs-icon[_ngcontent-ng-c249881476]{color:var(--quaternary-contrast);font-size:1.5rem}@media (max-width: 900px){.adev-nav__bottom[_ngcontent-ng-c249881476]   button[_ngcontent-ng-c249881476]   docs-icon[_ngcontent-ng-c249881476]{font-size:1.25rem}}.adev-nav__bottom[_ngcontent-ng-c249881476]   button[_ngcontent-ng-c249881476]:hover   docs-icon[_ngcontent-ng-c249881476]{color:var(--primary-contrast)}.adev-nav-item--logo[_ngcontent-ng-c249881476]   a[_ngcontent-ng-c249881476]{height:34px}.adev-close-nav[_ngcontent-ng-c249881476]{display:none;color:var(--primary-contrast)}@media (max-width: 700px){.adev-close-nav[_ngcontent-ng-c249881476]{display:block}}.adev-search-desktop[_ngcontent-ng-c249881476]{height:1.375rem;text-transform:capitalize}@media (max-width: 900px){.adev-search-desktop[_ngcontent-ng-c249881476]{display:none}}.adev-sub-navigation-hidden[_ngcontent-ng-c249881476]{display:none}.adev-secondary-tablet-bar[_ngcontent-ng-c249881476]{font-size:.875rem;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background-color:color-mix(in srgb,var(--page-background) 70%,transparent);border-block-end:1px solid var(--septenary-contrast);padding-block:1rem;padding-inline:var(--layout-padding);transition:background-color .3s ease,border-color .3s ease}.adev-secondary-tablet-bar[_ngcontent-ng-c249881476]   button[_ngcontent-ng-c249881476]{display:flex;gap:.5rem;align-items:center;color:var(--primary-contrast);padding:0;font-weight:500}@media (min-width: 900px){.adev-secondary-tablet-bar[_ngcontent-ng-c249881476]{display:none}}@media (max-width: 700px){.adev-secondary-tablet-bar[_ngcontent-ng-c249881476]{display:none}}</style><style>.adev-mini-menu[_ngcontent-ng-c249881476]{padding:0;color:var(--primary-contrast);background-color:var(--page-background);border:1px solid var(--senary-contrast);border-radius:.25rem;z-index:var(--z-index-mini-menu);box-shadow:10px 4px 40px #00000013}@media (min-width: 700px) and (max-width: 900px){.adev-mini-menu[_ngcontent-ng-c249881476]{top:75px;left:5px}}.adev-mini-menu[_ngcontent-ng-c249881476]   li[_ngcontent-ng-c249881476]{list-style:none}.adev-mini-menu[_ngcontent-ng-c249881476]   li[_ngcontent-ng-c249881476]   button[_ngcontent-ng-c249881476]{padding:1rem;min-width:75px;min-height:75px;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.adev-mini-menu[_ngcontent-ng-c249881476]   li[_ngcontent-ng-c249881476]   button[_ngcontent-ng-c249881476]   docs-icon[_ngcontent-ng-c249881476]{font-size:1.5rem;color:var(--quaternary-contrast);transition:color .3s ease}.adev-mini-menu[_ngcontent-ng-c249881476]   li[_ngcontent-ng-c249881476]   button[_ngcontent-ng-c249881476]:hover{background-color:var(--senary-contrast)}.adev-mini-menu[_ngcontent-ng-c249881476]   li[_ngcontent-ng-c249881476]   button[_ngcontent-ng-c249881476]:hover   span[_ngcontent-ng-c249881476], .adev-mini-menu[_ngcontent-ng-c249881476]   li[_ngcontent-ng-c249881476]   button[_ngcontent-ng-c249881476]:hover   docs-icon[_ngcontent-ng-c249881476]{color:var(--primary-contrast)}.adev-mini-menu[_ngcontent-ng-c249881476]   li[_ngcontent-ng-c249881476]   a[_ngcontent-ng-c249881476]{display:flex;justify-content:center;align-items:center;padding:1rem;min-width:50px}.adev-mini-menu[_ngcontent-ng-c249881476]   li[_ngcontent-ng-c249881476]   a[_ngcontent-ng-c249881476]   svg[_ngcontent-ng-c249881476]{fill:var(--quaternary-contrast);transition:fill .3s ease}.adev-mini-menu[_ngcontent-ng-c249881476]   li[_ngcontent-ng-c249881476]   a[_ngcontent-ng-c249881476]:hover{background-color:var(--senary-contrast)}.adev-mini-menu[_ngcontent-ng-c249881476]   li[_ngcontent-ng-c249881476]   a[_ngcontent-ng-c249881476]:hover   svg[_ngcontent-ng-c249881476]{fill:var(--primary-contrast)}.adev-mini-menu[_ngcontent-ng-c249881476]   li[_ngcontent-ng-c249881476]   span[_ngcontent-ng-c249881476]{color:var(--quaternary-contrast);transition:color .3s ease}.adev-mini-menu-open[_ngcontent-ng-c249881476]{display:block}.adev-version-picker[_ngcontent-ng-c249881476]{overflow-y:auto;max-height:90vh;top:30px;left:10px;position:absolute;bottom:auto}.adev-version-picker[_ngcontent-ng-c249881476]   li[_ngcontent-ng-c249881476]{padding-inline:0}.adev-version-picker[_ngcontent-ng-c249881476]   li[_ngcontent-ng-c249881476]   a[_ngcontent-ng-c249881476]{line-height:1em}@media (min-width: 700px) and (max-width: 900px){.adev-version-picker[_ngcontent-ng-c249881476]{top:30px;left:auto;bottom:auto}}</style><style>.adev-nav-item[_ngcontent-ng-c249881476]{color:var(--quaternary-contrast);position:relative;width:6.875rem}@media (max-width: 700px){.adev-nav-item[_ngcontent-ng-c249881476]{width:5.05rem}}@media (min-width: 700px) and (max-width: 900px){.adev-nav-item[_ngcontent-ng-c249881476]{display:flex;align-items:center;justify-content:center;width:auto}}.adev-nav-item[_ngcontent-ng-c249881476]:before{content:"";position:absolute;bottom:0;top:0;left:0;width:2px;background-color:var(--primary-contrast);opacity:0;transform:scale(.9);transform-origin:center;transition:opacity .3s ease,transform .3s ease}@media (min-width: 700px) and (max-width: 900px){.adev-nav-item[_ngcontent-ng-c249881476]:before{width:auto;top:auto;right:0;height:2px}}@media (min-width: 700px) and (max-width: 900px){.adev-nav-item[_ngcontent-ng-c249881476]:not(.adev-nav-item--logo)   a[_ngcontent-ng-c249881476], .adev-nav-item[_ngcontent-ng-c249881476]:not(.adev-nav-item--logo)   .adev-nav-button[_ngcontent-ng-c249881476]{gap:.25rem}}.adev-nav-item[_ngcontent-ng-c249881476]   .adev-nav-button[_ngcontent-ng-c249881476]{width:100%;font-weight:500}.adev-nav-item[_ngcontent-ng-c249881476]   a[_ngcontent-ng-c249881476], .adev-nav-item[_ngcontent-ng-c249881476]   .adev-nav-button[_ngcontent-ng-c249881476]{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding-block:1.25rem;text-decoration:none;fill:var(--quaternary-contrast);color:inherit;cursor:pointer;transition:fill .3s ease}@media (min-width: 700px) and (max-width: 900px){.adev-nav-item[_ngcontent-ng-c249881476]   a[_ngcontent-ng-c249881476], .adev-nav-item[_ngcontent-ng-c249881476]   .adev-nav-button[_ngcontent-ng-c249881476]{flex-direction:row}}.adev-nav-item__label[_ngcontent-ng-c249881476]{margin:0;font-size:.813;color:inherit}.adev-nav-item__label[_ngcontent-ng-c249881476]   abbr[_ngcontent-ng-c249881476]{font-size:.688}.adev-nav-item[_ngcontent-ng-c249881476]   i[_ngcontent-ng-c249881476]{color:var(--quaternary-contrast);transition:color .3s ease}.adev-nav-item[_ngcontent-ng-c249881476]   span[_ngcontent-ng-c249881476], .adev-nav-item[_ngcontent-ng-c249881476]   abbr[_ngcontent-ng-c249881476]{transition:color .3s ease}.adev-nav-item[_ngcontent-ng-c249881476]:hover   a[_ngcontent-ng-c249881476], .adev-nav-item[_ngcontent-ng-c249881476]:hover   .adev-nav-button[_ngcontent-ng-c249881476]{fill:var(--primary-contrast)}.adev-nav-item[_ngcontent-ng-c249881476]:hover   span[_ngcontent-ng-c249881476], .adev-nav-item[_ngcontent-ng-c249881476]:hover   abbr[_ngcontent-ng-c249881476], .adev-nav-item[_ngcontent-ng-c249881476]:hover   i[_ngcontent-ng-c249881476]{color:var(--primary-contrast)}.adev-nav-item--active[_ngcontent-ng-c249881476]:before{opacity:1;transform:scaleY(1)}.adev-nav-item--active[_ngcontent-ng-c249881476]:not(.adev-nav-item--logo)   path[_ngcontent-ng-c249881476]{fill:var(--primary-contrast)}.adev-nav-item--active[_ngcontent-ng-c249881476]   span[_ngcontent-ng-c249881476], .adev-nav-item--active[_ngcontent-ng-c249881476]   abbr[_ngcontent-ng-c249881476], .adev-nav-item--active[_ngcontent-ng-c249881476]   i[_ngcontent-ng-c249881476]{color:var(--primary-contrast)}</style><style>.docs-icon_high-contrast[_ngcontent-ng-c1974536348]{color:var(--primary-contrast)}/*# sourceMappingURL=icon.component.css.map */</style><style>[_nghost-ng-c2352166330]{width:100%}.docs-dark-mode   [_nghost-ng-c2352166330]   .adev-editor-scroll-container[_ngcontent-ng-c2352166330]   img[_ngcontent-ng-c2352166330]{content:url("./media/editor-dark-horizontal-GYEXDISV.svg")}@media (max-width: 775px){.docs-dark-mode   [_nghost-ng-c2352166330]   .adev-editor-scroll-container[_ngcontent-ng-c2352166330]   img[_ngcontent-ng-c2352166330]{content:url("./media/editor-dark-vertical-AL4QYX2T.svg")}}.docs-light-mode   [_nghost-ng-c2352166330]   .adev-editor-scroll-container[_ngcontent-ng-c2352166330]   img[_ngcontent-ng-c2352166330]{content:url("./media/editor-light-horizontal-VWK2ERV3.svg")}@media (max-width: 775px){.docs-light-mode   [_nghost-ng-c2352166330]   .adev-editor-scroll-container[_ngcontent-ng-c2352166330]   img[_ngcontent-ng-c2352166330]{content:url("./media/editor-light-vertical-KSMCJ4S3.svg")}}[_nghost-ng-c2352166330]   .adev-banner[_ngcontent-ng-c2352166330]{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;z-index:10;border:1px solid var(--senary-contrast);background:var(--page-background);position:relative;border-radius:.25rem;padding:10px;max-width:100%;width:fit-content;box-sizing:border-box;transition:background .3s ease,border .3s ease}[_nghost-ng-c2352166330]   .adev-banner[_ngcontent-ng-c2352166330]   h1[_ngcontent-ng-c2352166330], [_nghost-ng-c2352166330]   .adev-banner[_ngcontent-ng-c2352166330]   p[_ngcontent-ng-c2352166330]{display:inline;font-size:.875rem;margin:0;background-image:var(--red-to-pink-to-purple-horizontal-gradient);background-clip:text;-webkit-background-clip:text;color:transparent;width:fit-content;font-weight:500}[_nghost-ng-c2352166330]   .adev-banner[_ngcontent-ng-c2352166330]   h1.adev-banner-cta[_ngcontent-ng-c2352166330], [_nghost-ng-c2352166330]   .adev-banner[_ngcontent-ng-c2352166330]   p.adev-banner-cta[_ngcontent-ng-c2352166330]{color:var(--tertiary-contrast)}[_nghost-ng-c2352166330]   .adev-banner[_ngcontent-ng-c2352166330]   h1.adev-banner-cta[_ngcontent-ng-c2352166330]:after, [_nghost-ng-c2352166330]   .adev-banner[_ngcontent-ng-c2352166330]   p.adev-banner-cta[_ngcontent-ng-c2352166330]:after{content:"";position:absolute;width:100%;transform:scaleX(0);height:1px;bottom:-2px;left:0;background:var(--red-to-pink-to-purple-horizontal-gradient);transform-origin:bottom right;transition:transform .3s ease}[_nghost-ng-c2352166330]   .adev-banner[_ngcontent-ng-c2352166330]:hover   .adev-banner-cta[_ngcontent-ng-c2352166330]:after{transform:scaleX(1);transform-origin:bottom left}.adev-top[_ngcontent-ng-c2352166330]{position:absolute;top:0}@media (max-width: 900px){.adev-top[_ngcontent-ng-c2352166330]{top:6rem}}@media (max-width: 700px){.adev-top[_ngcontent-ng-c2352166330]{top:4.5rem}}.adev-top[_ngcontent-ng-c2352166330]   .adev-top-content[_ngcontent-ng-c2352166330]{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;padding-top:10px;padding-inline:var(--layout-padding);gap:.5rem}@media (min-width: 900px){.adev-top[_ngcontent-ng-c2352166330]   .adev-top-content[_ngcontent-ng-c2352166330]{padding-top:var(--layout-padding);padding-left:calc(var(--layout-padding) + var(--primary-nav-width))}}.adev-home[_ngcontent-ng-c2352166330]   img[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   svg[_ngcontent-ng-c2352166330]{-webkit-user-select:none;user-select:none}.adev-home[_ngcontent-ng-c2352166330]   h2[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   p[_ngcontent-ng-c2352166330]{position:relative}.adev-home[_ngcontent-ng-c2352166330]   h2[_ngcontent-ng-c2352166330]{font-size:4vw;font-weight:600;white-space:nowrap;margin-top:0;margin-bottom:.5em}@media screen and (max-width: 1000px){.adev-home[_ngcontent-ng-c2352166330]   h2[_ngcontent-ng-c2352166330]{font-size:2rem}}.adev-home[_ngcontent-ng-c2352166330]   p[_ngcontent-ng-c2352166330]{font-weight:400;color:var(--quaternary-contrast);font-size:clamp(1rem,1vw,2rem);line-height:1.5;width:clamp(375px,50%,600px);margin:0 auto}.adev-home[_ngcontent-ng-c2352166330]   .adev-cta[_ngcontent-ng-c2352166330]{position:fixed;left:50%;bottom:10%;transform:translate(-50%);display:inline-block;padding:7px;opacity:0;visibility:hidden;transition:opacity .5s linear,visibility .5s linear}.adev-home[_ngcontent-ng-c2352166330]   .adev-cta[_ngcontent-ng-c2352166330]   button[_ngcontent-ng-c2352166330]{font-size:1rem;padding:1rem 1.75rem}.adev-home[_ngcontent-ng-c2352166330]   .adev-cta[_ngcontent-ng-c2352166330]   button[_ngcontent-ng-c2352166330]:after{font-size:1rem}.adev-home[_ngcontent-ng-c2352166330]   .adev-arrow[_ngcontent-ng-c2352166330]{position:fixed;left:50%;bottom:5%;transform:translate(-50%) rotate(45deg);border:solid var(--primary-contrast);border-width:0 2px 2px 0;display:inline-block;padding:7px;opacity:0;transition:opacity .5s linear}.adev-home[_ngcontent-ng-c2352166330]   .adev-canvas[_ngcontent-ng-c2352166330]{position:fixed;top:0;width:calc(100vw - 8px);height:100vh;max-width:2560px;margin-inline:auto;pointer-events:none;overflow:hidden;opacity:0}@supports (height: 100lvh){.adev-home[_ngcontent-ng-c2352166330]   .adev-canvas[_ngcontent-ng-c2352166330]{height:100lvh}}.adev-home[_ngcontent-ng-c2352166330]   .adev-logo[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-scale[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-lines[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-build[_ngcontent-ng-c2352166330]{height:130vh;overflow:hidden}@supports (height: 100lvh){.adev-home[_ngcontent-ng-c2352166330]   .adev-logo[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-scale[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-lines[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-build[_ngcontent-ng-c2352166330]{height:130lvh}}.adev-home[_ngcontent-ng-c2352166330]   .adev-logo-wordmark[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-scale-text[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-lines-text[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-build-text[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-build-webgl-text[_ngcontent-ng-c2352166330]{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;top:0;width:100vw;height:100vh;max-width:2560px;margin-inline:auto;pointer-events:none;overflow:hidden}@supports (height: 100lvh){.adev-home[_ngcontent-ng-c2352166330]   .adev-logo-wordmark[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-scale-text[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-lines-text[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-build-text[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-build-webgl-text[_ngcontent-ng-c2352166330]{height:100lvh}}.adev-home[_ngcontent-ng-c2352166330]   .adev-build-webgl-text[_ngcontent-ng-c2352166330]{display:none;visibility:hidden;position:fixed}.adev-home[_ngcontent-ng-c2352166330]   .adev-scale-container[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-lines-container[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-build-container[_ngcontent-ng-c2352166330]{position:relative}.adev-home[_ngcontent-ng-c2352166330]   .adev-lines-container[_ngcontent-ng-c2352166330]:before{content:"";position:absolute;inset:0 -50px -50px;background-color:var(--page-background);filter:blur(25px)}.adev-home[_ngcontent-ng-c2352166330]   .adev-scale-wrapper[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-lines-wrapper[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-build-wrapper[_ngcontent-ng-c2352166330]{position:relative}.adev-home[_ngcontent-ng-c2352166330]   .adev-build-text[_ngcontent-ng-c2352166330]   h2[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-build-webgl-text[_ngcontent-ng-c2352166330]   h2[_ngcontent-ng-c2352166330]{color:var(--gray-unfilled)}@media screen and (max-width: 1000px){.adev-home[_ngcontent-ng-c2352166330]   .adev-build-text[_ngcontent-ng-c2352166330]   h2[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-build-webgl-text[_ngcontent-ng-c2352166330]   h2[_ngcontent-ng-c2352166330]{font-size:2.75rem}}.adev-home[_ngcontent-ng-c2352166330]   .adev-build-text[_ngcontent-ng-c2352166330]   .adev-gradient[_ngcontent-ng-c2352166330], .adev-home[_ngcontent-ng-c2352166330]   .adev-build-webgl-text[_ngcontent-ng-c2352166330]   .adev-gradient[_ngcontent-ng-c2352166330]{position:absolute;left:0;top:0;right:0;background:url("./media/gradient-FZRCWTCT.jpg");background-size:cover;background-position:center;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;clip-path:inset(0%)}.adev-home[_ngcontent-ng-c2352166330]   .adev-editor-scroll-container[_ngcontent-ng-c2352166330]{position:relative;height:300vh;background-color:var(--page-background)}.adev-home[_ngcontent-ng-c2352166330]   .adev-editor-scroll-container[_ngcontent-ng-c2352166330]   .adev-sticky-editor[_ngcontent-ng-c2352166330]{position:sticky;top:calc((100vh - (100vh - 110px))/2)}@media (min-width: 700px) and (max-width: 900px){.adev-home[_ngcontent-ng-c2352166330]   .adev-editor-scroll-container[_ngcontent-ng-c2352166330]   .adev-sticky-editor[_ngcontent-ng-c2352166330]{top:calc((100vh - (100vh - 110px))/2 + 36px)}}@media (max-width: 700px){.adev-home[_ngcontent-ng-c2352166330]   .adev-editor-scroll-container[_ngcontent-ng-c2352166330]   .adev-sticky-editor[_ngcontent-ng-c2352166330]{top:calc((100vh - (100vh - 110px))/2 + 25px)}}.adev-home[_ngcontent-ng-c2352166330]   .adev-editor-scroll-container[_ngcontent-ng-c2352166330]   img[_ngcontent-ng-c2352166330]{margin:0 auto;display:flex;justify-content:center;align-items:center;height:auto;min-height:60vh;width:75vw}.adev-home.adev-header[_ngcontent-ng-c2352166330]   .adev-cta[_ngcontent-ng-c2352166330], .adev-home.adev-header[_ngcontent-ng-c2352166330]   .adev-arrow[_ngcontent-ng-c2352166330]{opacity:1;visibility:visible}.adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-logo[_ngcontent-ng-c2352166330], .adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-scale[_ngcontent-ng-c2352166330], .adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-lines[_ngcontent-ng-c2352166330]{height:200vh}@supports (height: 100lvh){.adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-logo[_ngcontent-ng-c2352166330], .adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-scale[_ngcontent-ng-c2352166330], .adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-lines[_ngcontent-ng-c2352166330]{height:200lvh}}.adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-logo-wordmark[_ngcontent-ng-c2352166330], .adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-scale-text[_ngcontent-ng-c2352166330], .adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-lines-text[_ngcontent-ng-c2352166330], .adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-build-text[_ngcontent-ng-c2352166330]{position:fixed}.adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-scale-text[_ngcontent-ng-c2352166330], .adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-lines-text[_ngcontent-ng-c2352166330], .adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-build-text[_ngcontent-ng-c2352166330]{opacity:0}.adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-build[_ngcontent-ng-c2352166330]{height:300vh}@supports (height: 100lvh){.adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-build[_ngcontent-ng-c2352166330]{height:300lvh}}.adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-build-text[_ngcontent-ng-c2352166330]   h2[_ngcontent-ng-c2352166330]{opacity:0}.adev-home.adev-webgl[_ngcontent-ng-c2352166330]   .adev-build-webgl-text[_ngcontent-ng-c2352166330]{display:flex}.adev-home.adev-webgl.adev-loaded[_ngcontent-ng-c2352166330]   .adev-canvas[_ngcontent-ng-c2352166330]{opacity:unset}.adev-home.adev-webgl.adev-loaded[_ngcontent-ng-c2352166330]   .adev-logo-wordmark[_ngcontent-ng-c2352166330]{opacity:0}.adev-code-editor[_ngcontent-ng-c2352166330]{background-color:var(--page-background);padding-bottom:60px}.adev-code-editor[_ngcontent-ng-c2352166330]     embedded-editor{margin:0 auto;display:flex;width:75vw;height:calc(100vh - 110px)}@media (max-width: 700px){.adev-code-editor[_ngcontent-ng-c2352166330]     embedded-editor{width:95vw}}.adev-code-editor[_ngcontent-ng-c2352166330]     embedded-editor .adev-editor-container{width:100%}.adev-code-editor-gradient[_ngcontent-ng-c2352166330]{position:absolute;left:0;right:0;margin-top:-100vh;height:100vh;background:linear-gradient(to top,var(--page-background),transparent);pointer-events:none}@supports (height: 100svh){.adev-code-editor-gradient[_ngcontent-ng-c2352166330]{margin-top:-100svh;height:100svh}}</style><style>.adev-footer-columns[_ngcontent-ng-c3585373939]{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem}@container footer (max-width: 600px){.adev-footer-columns[_ngcontent-ng-c3585373939]{grid-template-columns:repeat(2,1fr)!important}}.adev-footer-container[_ngcontent-ng-c3585373939]{container:footer/inline-size;position:relative;justify-content:center;padding:var(--layout-padding);padding-inline-end:1rem;background-color:var(--page-background);transition:background-color .3s ease}@media only screen and (min-width: 1430px){.adev-footer-container[_ngcontent-ng-c3585373939]{width:calc(100% - 195px - var(--layout-padding) * 3)}}.adev-footer-container[_ngcontent-ng-c3585373939]   h2[_ngcontent-ng-c3585373939]{font-size:.875rem;font-weight:600;margin-block-end:1.75rem;letter-spacing:-.00875rem}.adev-footer-container[_ngcontent-ng-c3585373939]   ul[_ngcontent-ng-c3585373939]{list-style:none;padding:0;display:flex;flex-direction:column;gap:.95rem}.adev-footer-container[_ngcontent-ng-c3585373939]   ul[_ngcontent-ng-c3585373939]   li[_ngcontent-ng-c3585373939]{font-size:.8125rem}.adev-footer-container[_ngcontent-ng-c3585373939]   a[_ngcontent-ng-c3585373939]{color:var(--quaternary-contrast);font-weight:300;transition:color .3s ease}.adev-footer-container[_ngcontent-ng-c3585373939]   a[_ngcontent-ng-c3585373939]:hover{color:var(--primary-contrast)}.adev-footer-container[_ngcontent-ng-c3585373939]   p.docs-license[_ngcontent-ng-c3585373939]{transition:color .3s ease;color:var(--quaternary-contrast);font-weight:300;grid-column:span 4;font-size:.75rem;margin-block-start:2rem}</style><script async="" src="https://www.googletagmanager.com/gtag/js?id=G-XB6NEVW32B" id="gtag-script"></script><style>[_nghost-ng-c197212432]{position:fixed;bottom:.5rem;right:.5rem;z-index:var(--z-index-cookie-consent);opacity:0;visibility:hidden;animation:1s linear forwards .5s _ngcontent-ng-c197212432_fadeIn}.docs-cookies-popup[_ngcontent-ng-c197212432]{padding:1rem;background-color:var(--page-background);border:1px solid var(--senary-contrast);border-radius:.25rem;font-size:.875rem;max-width:265px;transition:background-color .3s ease,border-color .3s ease,color .3s ease;box-shadow:0 0 10px 0 rgba(0,0,0,.1)}.docs-cookies-popup[_ngcontent-ng-c197212432] > div[_ngcontent-ng-c197212432]{display:flex;gap:.5rem;align-items:center;width:100%;margin-block-start:1rem}.docs-cookies-popup[_ngcontent-ng-c197212432]   p[_ngcontent-ng-c197212432]{margin-block:0;color:var(--primary-contrast)}@keyframes _ngcontent-ng-c197212432_fadeIn{100%{opacity:100%;visibility:visible}}/*# sourceMappingURL=cookie-popup.component.css.map */</style><style>[_nghost-ng-c3116033711]:not(:empty){z-index:50;position:fixed;height:2rem;width:100vw;border-bottom:1px solid var(--septenary-contrast);text-align:center;align-content:center;backdrop-filter:blur(16px);background-color:color-mix(in srgb, var(--page-background) 70%, transparent)}[_nghost-ng-c3116033711]   a.docs-top-level-banner[_ngcontent-ng-c3116033711]{width:100%;display:inherit}[_nghost-ng-c3116033711]   h1.docs-top-level-banner-cta[_ngcontent-ng-c3116033711]{display:inline;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);font-size:.875rem;margin:0;width:fit-content;font-weight:500}[_nghost-ng-c3116033711]   h1.docs-top-level-banner-cta.background[_ngcontent-ng-c3116033711]{color:var(--tertiary-contrast)}[_nghost-ng-c3116033711]   h1.docs-top-level-banner-cta[_ngcontent-ng-c3116033711]:not(.background){color:rgba(0,0,0,0)}[_nghost-ng-c3116033711]   h1.docs-top-level-banner-cta[_ngcontent-ng-c3116033711]:not(.background)::after{content:"";position:absolute;width:100%;height:1px;bottom:-2px;left:0;background:var(--tertiary-contrast);transform:scaleX(0);transform-origin:bottom right}@media(prefers-reduced-motion: no-preference){[_nghost-ng-c3116033711]   h1.docs-top-level-banner-cta[_ngcontent-ng-c3116033711]:not(.background)::after{transition:transform .3s ease}}[_nghost-ng-c3116033711]   h1.docs-top-level-banner-cta[_ngcontent-ng-c3116033711]:not(.background):hover::after{transform:scaleX(1);transform-origin:bottom left}[_nghost-ng-c3116033711]   .docs-top-level-banner-close[_ngcontent-ng-c3116033711]{position:absolute;top:.25rem;right:.5rem;color:var(--tertiary-contrast)}.shimmer[_ngcontent-ng-c3116033711]{background:var(--red-to-pink-to-purple-horizontal-gradient)}@media(prefers-reduced-motion: no-preference){.shimmer[_ngcontent-ng-c3116033711]{background-repeat:no-repeat;-webkit-background-size:125px 100%;-moz-background-size:125px 100%;background-size:125px 100%;-webkit-background-clip:text;-moz-background-clip:text;background-clip:text;-webkit-animation-name:_ngcontent-ng-c3116033711_shimmer;-moz-animation-name:shimmer;animation-name:_ngcontent-ng-c3116033711_shimmer;-webkit-animation-duration:10s;-moz-animation-duration:10s;animation-duration:10s;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;animation-iteration-count:infinite}}@-moz-keyframes shimmer{0%{background-position:top left;background-position-x:-150px}100%{background-position:top right;background-position-x:500px}}@-webkit-keyframes _ngcontent-ng-c3116033711_shimmer{0%{background-position:top left;background-position-x:-150px}100%{background-position:top right;background-position-x:500px}}@-o-keyframes shimmer{0%{background-position:top left;background-position-x:-150px}100%{background-position:top right;background-position-x:500px}}@keyframes _ngcontent-ng-c3116033711_shimmer{0%{background-position:top left;background-position-x:-150px}100%{background-position:top right;background-position-x:500px}}/*# sourceMappingURL=top-level-banner.component.css.map */</style><style>[_nghost-ng-c2342475848]{--_ng-progress-thickness: var(--ng-progress-thickness, 2);--_ng-progress-thickness-px: calc(var(--_ng-progress-thickness) * 1px);--_ng-progress-thickness-add-one: calc(var(--_ng-progress-thickness) + 1);--_ng-progress-meteor-position-px: calc(var(--_ng-progress-thickness-add-one) * -1px);--_ng-progress-color: var(--ng-progress-color, #1B95E0);--_ng-progress-holder-color: var(--ng-progress-holder-color, transparent);--_ng-progress-ease: var(--ng-progress-ease, linear);--_ng-progress-spinner-thickness: var(--ng-progress-spinner-thickness, 2);--_ng-progress-spinner-thickness-px: calc(var(--_ng-progress-spinner-thickness) * 1px);--_ng-progress-spinner-spacing: var(--ng-progress-spinner-spacing, 15);--_ng-progress-spinner-spacing-px: calc(var(--_ng-progress-spinner-spacing) * 1px);--_ng-progress-spinner-size: var(--ng-progress-spinner-size, 18);--_ng-progress-spinner-size-px: calc(var(--_ng-progress-spinner-size) * 1px);z-index:999999;pointer-events:none}.ng-progress-bar-active[_nghost-ng-c2342475848]   .ng-progress-bar-wrapper[_ngcontent-ng-c2342475848]{filter:alpha(opacity=100);opacity:1;transition:none}.ng-progress-bar-active[_nghost-ng-c2342475848]   .ng-bar[_ngcontent-ng-c2342475848]{transition:all var(--_ng-progress-speed) var(--_ng-progress-ease)}.ng-progress-bar-relative[_nghost-ng-c2342475848]   .ng-progress-bar-wrapper[_ngcontent-ng-c2342475848]{position:relative}[direction="ltr+"][_nghost-ng-c2342475848]   .ng-meteor[_ngcontent-ng-c2342475848], [direction=ltr-][_nghost-ng-c2342475848]   .ng-meteor[_ngcontent-ng-c2342475848]{rotate:calc(var(--_ng-progress-thickness-add-one) * 1deg)}[direction="ltr+"][_nghost-ng-c2342475848]   .ng-bar[_ngcontent-ng-c2342475848], [direction="rtl+"][_nghost-ng-c2342475848]   .ng-bar[_ngcontent-ng-c2342475848]{margin-left:-100%}[direction="ltr+"][_nghost-ng-c2342475848]   .ng-meteor[_ngcontent-ng-c2342475848], [direction="rtl+"][_nghost-ng-c2342475848]   .ng-meteor[_ngcontent-ng-c2342475848]{right:0}[direction="ltr+"][_nghost-ng-c2342475848]   .ng-meteor[_ngcontent-ng-c2342475848], [direction=rtl-][_nghost-ng-c2342475848]   .ng-meteor[_ngcontent-ng-c2342475848]{top:var(--_ng-progress-meteor-position-px)}[direction=ltr-][_nghost-ng-c2342475848]   .ng-meteor[_ngcontent-ng-c2342475848], [direction="rtl+"][_nghost-ng-c2342475848]   .ng-meteor[_ngcontent-ng-c2342475848]{bottom:var(--_ng-progress-meteor-position-px)}[direction=ltr-][_nghost-ng-c2342475848]   .ng-bar-placeholder[_ngcontent-ng-c2342475848], [direction="rtl+"][_nghost-ng-c2342475848]   .ng-bar-placeholder[_ngcontent-ng-c2342475848]{transform:rotate(180deg)}[direction=ltr-][_nghost-ng-c2342475848]   .ng-spinner-icon[_ngcontent-ng-c2342475848], [direction="rtl+"][_nghost-ng-c2342475848]   .ng-spinner-icon[_ngcontent-ng-c2342475848]{animation-direction:reverse}[direction="rtl+"][_nghost-ng-c2342475848]   .ng-meteor[_ngcontent-ng-c2342475848], [direction=rtl-][_nghost-ng-c2342475848]   .ng-meteor[_ngcontent-ng-c2342475848]{rotate:calc(var(--_ng-progress-thickness-add-one) * -1deg)}[_nghost-ng-c2342475848]   .ng-spinner[_ngcontent-ng-c2342475848]{top:var(--_ng-progress-spinner-spacing-px)}[spinnerPosition=left][_nghost-ng-c2342475848]   .ng-spinner[_ngcontent-ng-c2342475848]{left:var(--_ng-progress-spinner-spacing-px)}[spinnerPosition=right][_nghost-ng-c2342475848]   .ng-spinner[_ngcontent-ng-c2342475848]{right:var(--_ng-progress-spinner-spacing-px)}.ng-progress-bar-wrapper[_ngcontent-ng-c2342475848]{position:fixed;z-index:999999;top:0;left:0;width:100%;transform:scale(1);filter:alpha(opacity=0);opacity:0;transition:opacity var(--_ng-progress-speed) var(--_ng-progress-ease)}.ng-bar-placeholder[_ngcontent-ng-c2342475848]{position:absolute;height:var(--_ng-progress-thickness-px);width:100%}.ng-bar[_ngcontent-ng-c2342475848]{width:100%;height:100%;transform:translate(-100%,0,0);background:var(--_ng-progress-color);transition:all var(--_ng-progress-speed) var(--_ng-progress-ease)}.ng-meteor[_ngcontent-ng-c2342475848]{display:block;position:absolute;width:100px;height:100%;opacity:1;box-shadow:0 0 10px var(--_ng-progress-color),0 0 5px var(--_ng-progress-color)}.ng-spinner[_ngcontent-ng-c2342475848]{position:absolute;display:block;z-index:1031;top:10px}.ng-spinner-icon[_ngcontent-ng-c2342475848]{box-sizing:border-box;animation:_ngcontent-ng-c2342475848_spinner-animation .25s linear infinite;border-style:solid;border-color:transparent;border-radius:50%;border-top-color:var(--_ng-progress-color);border-left-color:var(--_ng-progress-color);width:var(--_ng-progress-spinner-size-px);height:var(--_ng-progress-spinner-size-px);border-width:var(--_ng-progress-spinner-thickness-px)}@keyframes _ngcontent-ng-c2342475848_spinner-animation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}</style></head>
  <body class="mat-typography docs-scroll-track-transparent-large"><!--nghm-->
    <adev-root _nghost-ng-c3096798922="" ng-version="18.2.6" ng-server-context="ssg"><!----><adev-progress-bar _ngcontent-ng-c3096798922=""><ng-progress role="progressbar" aria-label="Page load progress" _nghost-ng-c2342475848="" spinnerposition="right" direction="ltr+" class="ng-progress-bar" style="--_ng-progress-speed: 200ms;"><div _ngcontent-ng-c2342475848="" class="ng-progress-bar-wrapper"><div _ngcontent-ng-c2342475848="" class="ng-bar-placeholder"><div _ngcontent-ng-c2342475848="" class="ng-bar" style="transform: translate3d(0%, 0px, 0px);"><div _ngcontent-ng-c2342475848="" class="ng-meteor"></div><!----></div></div><!----></div></ng-progress></adev-progress-bar><docs-top-level-banner _ngcontent-ng-c3096798922="" id="ng-survey-2024" link="https://goo.gle/angular-survey-2024" text="Take the 2024 Angular Developer Survey today!" _nghost-ng-c3116033711=""><a _ngcontent-ng-c3116033711="" class="docs-top-level-banner" href="https://goo.gle/angular-survey-2024" target="_blank"><h1 _ngcontent-ng-c3116033711="" tabindex="-1" class="docs-top-level-banner-cta background">Take the 2024 Angular Developer Survey today!</h1><h1 _ngcontent-ng-c3116033711="" tabindex="0" class="docs-top-level-banner-cta shimmer">Take the 2024 Angular Developer Survey today!</h1></a><!----><!----><button _ngcontent-ng-c3116033711="" type="button" class="docs-top-level-banner-close"><docs-icon _ngcontent-ng-c3116033711="" aria-hidden="true" translate="no" class="docs-icon_high-contrast material-symbols-outlined" _nghost-ng-c1974536348="">close</docs-icon></button><!----></docs-top-level-banner><!----><button _ngcontent-ng-c3096798922="" class="adev-skip">Skip to main content</button><div _ngcontent-ng-c3096798922="" class="adev-nav" _nghost-ng-c249881476=""><div _ngcontent-ng-c249881476="" id="primaryNav"><div _ngcontent-ng-c249881476="" class="adev-mobile-nav-bar"><button _ngcontent-ng-c249881476="" type="button" aria-label="Toggle mobile navigation" class="adev-mobile-nav-button"><svg _ngcontent-ng-c249881476="" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 223 236" width="32"><g _ngcontent-ng-c249881476="" clip-path="url(#2a)"><path _ngcontent-ng-c249881476="" fill="url(#2b)" d="m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"></path><path _ngcontent-ng-c249881476="" fill="url(#2c)" d="m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"></path></g><defs _ngcontent-ng-c249881476=""><linearGradient _ngcontent-ng-c249881476="" id="2b" x1="49.009" x2="225.829" y1="213.75" y2="129.722" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c249881476="" stop-color="#E40035"></stop><stop _ngcontent-ng-c249881476="" offset=".24" stop-color="#F60A48"></stop><stop _ngcontent-ng-c249881476="" offset=".352" stop-color="#F20755"></stop><stop _ngcontent-ng-c249881476="" offset=".494" stop-color="#DC087D"></stop><stop _ngcontent-ng-c249881476="" offset=".745" stop-color="#9717E7"></stop><stop _ngcontent-ng-c249881476="" offset="1" stop-color="#6C00F5"></stop></linearGradient><linearGradient _ngcontent-ng-c249881476="" id="2c" x1="41.025" x2="156.741" y1="28.344" y2="160.344" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c249881476="" stop-color="#FF31D9"></stop><stop _ngcontent-ng-c249881476="" offset="1" stop-color="#FF5BE1" stop-opacity="0"></stop></linearGradient><clipPath _ngcontent-ng-c249881476="" id="2a"><path _ngcontent-ng-c249881476="" fill="#fff" d="M0 0h223v236H0z"></path></clipPath></defs></svg><docs-icon _ngcontent-ng-c249881476="" aria-hidden="true" translate="no" role="presentation" _nghost-ng-c1974536348="" class="material-symbols-outlined" style="">menu</docs-icon></button></div><nav _ngcontent-ng-c249881476="" class="adev-nav-primary docs-scroll-hide"><button _ngcontent-ng-c249881476="" type="button" aria-label="Close navigation" class="adev-close-nav"><docs-icon _ngcontent-ng-c249881476="" aria-hidden="true" translate="no" role="presentation" _nghost-ng-c1974536348="" class="material-symbols-outlined" style="">close</docs-icon></button><ul _ngcontent-ng-c249881476="" class="adev-nav__top"><li _ngcontent-ng-c249881476="" class="adev-nav-item adev-nav-item--logo adev-nav-item--active"><a _ngcontent-ng-c249881476="" aria-label="Angular homepage" routerlink="/" href="/"><svg _ngcontent-ng-c249881476="" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 223 236" width="32" class="angular-logo"><g _ngcontent-ng-c249881476="" clip-path="url(#a)"><path _ngcontent-ng-c249881476="" fill="url(#b)" d="m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"></path><path _ngcontent-ng-c249881476="" fill="url(#c)" d="m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"></path></g><defs _ngcontent-ng-c249881476=""><linearGradient _ngcontent-ng-c249881476="" id="b" x1="49.009" x2="225.829" y1="213.75" y2="129.722" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c249881476="" stop-color="#E40035"></stop><stop _ngcontent-ng-c249881476="" offset=".24" stop-color="#F60A48"></stop><stop _ngcontent-ng-c249881476="" offset=".352" stop-color="#F20755"></stop><stop _ngcontent-ng-c249881476="" offset=".494" stop-color="#DC087D"></stop><stop _ngcontent-ng-c249881476="" offset=".745" stop-color="#9717E7"></stop><stop _ngcontent-ng-c249881476="" offset="1" stop-color="#6C00F5"></stop></linearGradient><linearGradient _ngcontent-ng-c249881476="" id="c" x1="41.025" x2="156.741" y1="28.344" y2="160.344" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c249881476="" stop-color="#FF31D9"></stop><stop _ngcontent-ng-c249881476="" offset="1" stop-color="#FF5BE1" stop-opacity="0"></stop></linearGradient><clipPath _ngcontent-ng-c249881476="" id="a"><path _ngcontent-ng-c249881476="" fill="#fff" d="M0 0h223v236H0z"></path></clipPath></defs></svg><!----><!----></a><div _ngcontent-ng-c249881476="" class="adev-nav-item"><button _ngcontent-ng-c249881476="" type="button" aria-label="Select Angular version" role="button" class="cdk-menu-trigger adev-version-button" data-cdk-menu-stack-id="0" aria-haspopup="menu" aria-expanded="false"> v18 <svg _ngcontent-ng-c249881476="" xmlns="http://www.w3.org/2000/svg" height="15" viewBox="0 -960 960 960" width="15" fill="inherit"><path _ngcontent-ng-c249881476="" d="M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z"></path></svg></button><!----><!----></div></li><li _ngcontent-ng-c249881476="" class="adev-nav-item"><button _ngcontent-ng-c249881476="" type="button" title="Search docs" class="adev-nav-button"><svg _ngcontent-ng-c249881476="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="inherit"><path _ngcontent-ng-c249881476="" d="M14.583 15.48 9.104 10a4.591 4.591 0 0 1-1.458.844 5.156 5.156 0 0 1-1.771.302c-1.5 0-2.77-.52-3.813-1.563C1.022 8.542.5 7.285.5 5.813c0-1.473.52-2.73 1.563-3.771C3.103 1 4.367.479 5.854.479 7.326.48 8.58 1 9.614 2.042c1.035 1.041 1.553 2.298 1.553 3.77 0 .598-.098 1.174-.292 1.73A5.287 5.287 0 0 1 10 9.104l5.5 5.459-.917.916ZM5.854 9.895c1.125 0 2.083-.4 2.875-1.198a3.95 3.95 0 0 0 1.188-2.885 3.95 3.95 0 0 0-1.188-2.886C7.938 2.13 6.98 1.73 5.854 1.73c-1.139 0-2.107.4-2.906 1.198-.799.799-1.198 1.76-1.198 2.886 0 1.125.4 2.086 1.198 2.885.799.799 1.767 1.198 2.906 1.198Z"></path></svg><span _ngcontent-ng-c249881476="" class="adev-nav-item__label adev-search-desktop" aria-label="Open search dialog with Control K"><kbd _ngcontent-ng-c249881476="">ctrl</kbd><kbd _ngcontent-ng-c249881476="">K</kbd></span></button></li><li _ngcontent-ng-c249881476="" class="adev-nav-item"><a _ngcontent-ng-c249881476="" href="/docs"><svg _ngcontent-ng-c249881476="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="14" height="18" fill="inherit"><path _ngcontent-ng-c249881476="" d="M3.645 13.792h6.708v-1.25H3.645v1.25Zm0-3.542h6.708V9H3.645v1.25Zm-2.063 7.083a1.2 1.2 0 0 1-.875-.375 1.2 1.2 0 0 1-.375-.875V1.917a1.2 1.2 0 0 1 .375-.875 1.2 1.2 0 0 1 .875-.375h7.52l4.563 4.562v10.854a1.2 1.2 0 0 1-.375.875 1.2 1.2 0 0 1-.875.375H1.582ZM8.478 5.792V1.917H1.582v14.166h10.833V5.792H8.478Z"></path></svg><span _ngcontent-ng-c249881476="" class="adev-nav-item__label">Docs</span></a></li><li _ngcontent-ng-c249881476="" class="adev-nav-item"><a _ngcontent-ng-c249881476="" href="/tutorials"><svg _ngcontent-ng-c249881476="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="18" height="10" fill="inherit"><path _ngcontent-ng-c249881476="" d="m5.668 10-5-5 5-5 1.187 1.188L3.022 5.02l3.813 3.812L5.668 10Zm6.667 0-1.188-1.188L14.98 4.98l-3.812-3.812L12.335 0l5 5-5 5Z"></path></svg><span _ngcontent-ng-c249881476="" class="adev-nav-item__label">Tutorials</span></a></li><li _ngcontent-ng-c249881476="" class="adev-nav-item"><a _ngcontent-ng-c249881476="" href="/playground"><svg _ngcontent-ng-c249881476="" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path _ngcontent-ng-c249881476="" d="M450.001-611.691v-32.386q-39.385-9.923-64.692-41.897-25.308-31.975-25.308-74.025 0-49.922 35.038-84.96 35.039-35.038 84.961-35.038t84.961 35.038q35.038 35.038 35.038 84.96 0 42.05-25.308 74.025-25.307 31.974-64.692 41.897v32.386l273.846 157.538q17.173 9.912 26.663 26.582 9.491 16.671 9.491 36.495v62.152q0 19.824-9.491 36.495-9.49 16.67-26.663 26.582L516.154-111.771q-17.203 9.846-36.217 9.846t-36.091-9.846L176.155-265.847q-17.173-9.912-26.663-26.582-9.491-16.671-9.491-36.495v-62.152q0-19.824 9.491-36.495 9.49-16.67 26.663-26.582l273.846-157.538Zm-6.155 364.537L200-387.461v58.537q0 3.078 1.539 5.962 1.538 2.885 4.615 4.808l267.692 154.692q3.077 1.923 6.154 1.923t6.154-1.923l267.692-154.692q3.077-1.923 4.615-4.808 1.539-2.884 1.539-5.962v-58.537L516.154-247.154q-17.203 9.847-36.217 9.847t-36.091-9.847Zm6.155-162.847V-542.77L250.46-427.691l223.386 128.846q3.077 1.924 6.154 1.924t6.154-1.924l223.001-128.846L509.999-542.77v132.769h-59.998ZM480-699.999q25 0 42.5-17.5t17.5-42.5q0-25-17.5-42.5t-42.5-17.5q-25 0-42.5 17.5t-17.5 42.5q0 25 17.5 42.5t42.5 17.5Zm-2.308 538.46Z"></path></svg><span _ngcontent-ng-c249881476="" class="adev-nav-item__label">Playground</span></a></li><li _ngcontent-ng-c249881476="" class="adev-nav-item"><a _ngcontent-ng-c249881476="" href="/reference"><svg _ngcontent-ng-c249881476="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="14" height="18" fill="inherit"><path _ngcontent-ng-c249881476="" d="M3.645 13.792h6.708v-1.25H3.645v1.25Zm0-3.542h6.708V9H3.645v1.25Zm-2.063 7.083a1.2 1.2 0 0 1-.875-.375 1.2 1.2 0 0 1-.375-.875V1.917a1.2 1.2 0 0 1 .375-.875 1.2 1.2 0 0 1 .875-.375h7.52l4.563 4.562v10.854a1.2 1.2 0 0 1-.375.875 1.2 1.2 0 0 1-.875.375H1.582ZM8.478 5.792V1.917H1.582v14.166h10.833V5.792H8.478Z"></path></svg><span _ngcontent-ng-c249881476="" class="adev-nav-item__label">Reference</span></a></li></ul><div _ngcontent-ng-c249881476="" class="adev-nav__bottom"><div _ngcontent-ng-c249881476="" class="adev-nav-item"><button _ngcontent-ng-c249881476="" type="button" aria-label="Open social media links" class="cdk-menu-trigger" role="button" data-cdk-menu-stack-id="1" aria-haspopup="menu" aria-expanded="false"><docs-icon _ngcontent-ng-c249881476="" aria-hidden="true" translate="no" role="presentation" _nghost-ng-c1974536348="" class="material-symbols-outlined" style="">more_horiz</docs-icon></button><!----><!----></div><div _ngcontent-ng-c249881476="" class="adev-nav-item"><button _ngcontent-ng-c249881476="" type="button" aria-label="Open theme picker" class="cdk-menu-trigger" role="button" data-cdk-menu-stack-id="2" aria-haspopup="menu" aria-expanded="false"><docs-icon _ngcontent-ng-c249881476="" aria-hidden="true" translate="no" role="presentation" _nghost-ng-c1974536348="" class="material-symbols-outlined" style=""><!----><!----> routine <!----></docs-icon></button><!----><!----></div></div></nav><!----></div></div><!----><div _ngcontent-ng-c3096798922="" class="docs-app-main-content"><!----><docs-cookie-popup _ngcontent-ng-c3096798922="" _nghost-ng-c197212432=""><div _ngcontent-ng-c197212432="" class="docs-cookies-popup docs-invert-mode"><p _ngcontent-ng-c197212432="">This site uses cookies from Google to deliver its services and to analyze traffic.</p><div _ngcontent-ng-c197212432=""><a _ngcontent-ng-c197212432="" href="https://policies.google.com/technologies/cookies" target="_blank" rel="noopener"><button _ngcontent-ng-c197212432="" aria-label="Learn More" class="docs-primary-btn" text="Learn more"> Learn more </button></a><button _ngcontent-ng-c197212432="" type="button" aria-label="Ok, Got it" class="docs-primary-btn" text="Ok, Got it"> Ok, Got it </button></div></div><!----></docs-cookie-popup><!----><!----><!----><router-outlet _ngcontent-ng-c3096798922=""></router-outlet><adev-home _nghost-ng-c2352166330="" ng-version="18.2.6"><div _ngcontent-ng-c2352166330="" class="adev-home adev-header"><div _ngcontent-ng-c2352166330="" class="adev-top"><div _ngcontent-ng-c2352166330="" class="adev-top-content"><a _ngcontent-ng-c2352166330="" href="https://goo.gle/angular-v18" target="_blank" class="adev-banner"><h1 _ngcontent-ng-c2352166330="" tabindex="-1">Angular v18 is now available!</h1><p _ngcontent-ng-c2352166330="" class="adev-banner-cta">Read about our newest release</p></a></div></div><div _ngcontent-ng-c2352166330="" class="adev-canvas"></div><div _ngcontent-ng-c2352166330="" class="adev-logo"><div _ngcontent-ng-c2352166330="" class="adev-logo-wordmark"><svg _ngcontent-ng-c2352166330="" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 982 241" class="angular-logo" style="width: max(calc(700 * min(100vw, 2560px) / 1470), 350px); height: auto;"><g _ngcontent-ng-c2352166330="" clip-path="url(#wordmark_a)"><path _ngcontent-ng-c2352166330="" fill="url(#wordmark_b)" d="M388.676 191.625h30.849L363.31 31.828h-35.758l-56.215 159.797h30.848l13.174-39.356h60.061l13.256 39.356Zm-65.461-62.675 21.602-64.311h1.227l21.603 64.311h-44.432Zm126.831-7.527v70.202h-28.23V71.839h27.002v20.374h1.392c2.782-6.71 7.2-12.028 13.255-15.956 6.056-3.927 13.584-5.89 22.503-5.89 8.264 0 15.465 1.8 21.684 5.318 6.137 3.518 10.964 8.673 14.319 15.382 3.437 6.71 5.074 14.81 4.992 24.383v76.175h-28.23v-71.92c0-8.019-2.046-14.237-6.219-18.819-4.173-4.5-9.819-6.791-17.102-6.791-4.91 0-9.328 1.063-13.174 3.272-3.846 2.128-6.792 5.237-9.001 9.328-2.046 4.009-3.191 8.918-3.191 14.728ZM589.233 239c-10.147 0-18.82-1.391-26.103-4.091-7.282-2.7-13.092-6.382-17.511-10.964-4.418-4.582-7.528-9.655-9.164-15.219l25.448-6.136c1.145 2.372 2.782 4.663 4.991 6.954 2.209 2.291 5.155 4.255 8.837 5.81 3.683 1.554 8.428 2.291 14.074 2.291 8.019 0 14.647-1.964 19.884-5.81 5.237-3.845 7.856-10.227 7.856-19.064v-22.665h-1.391c-1.473 2.946-3.601 5.892-6.383 9.001-2.782 3.109-6.464 5.645-10.965 7.691-4.582 2.046-10.228 3.109-17.101 3.109-9.165 0-17.511-2.209-25.039-6.545-7.446-4.337-13.42-10.883-17.757-19.474-4.418-8.673-6.628-19.473-6.628-32.565 0-13.091 2.21-24.301 6.628-33.383 4.419-9.082 10.311-15.955 17.839-20.7 7.528-4.746 15.874-7.037 25.038-7.037 7.038 0 12.847 1.145 17.348 3.518 4.582 2.373 8.182 5.236 10.883 8.51 2.7 3.272 4.746 6.382 6.137 9.327h1.554v-19.8h27.821v121.749c0 10.228-2.454 18.737-7.364 25.447-4.91 6.709-11.538 11.7-20.048 15.055-8.509 3.355-18.165 4.991-28.884 4.991Zm.245-71.266c5.974 0 11.047-1.473 15.302-4.337 4.173-2.945 7.446-7.118 9.573-12.519 2.21-5.482 3.274-12.027 3.274-19.637 0-7.609-1.064-14.155-3.274-19.8-2.127-5.646-5.318-10.064-9.491-13.255-4.174-3.11-9.329-4.746-15.384-4.746s-11.537 1.636-15.792 4.91c-4.173 3.272-7.365 7.772-9.492 13.418-2.128 5.727-3.191 12.191-3.191 19.392 0 7.2 1.063 13.746 3.273 19.228 2.127 5.482 5.318 9.736 9.573 12.764 4.174 3.027 9.41 4.582 15.629 4.582Zm141.56-26.51V71.839h28.23v119.786h-27.412v-21.273h-1.227c-2.7 6.709-7.119 12.191-13.338 16.446-6.137 4.255-13.747 6.382-22.748 6.382-7.855 0-14.81-1.718-20.783-5.237-5.974-3.518-10.72-8.591-14.075-15.382-3.355-6.709-5.073-14.891-5.073-24.464V71.839h28.312v71.921c0 7.609 2.046 13.664 6.219 18.083 4.173 4.5 9.655 6.709 16.365 6.709 4.173 0 8.183-.982 12.111-3.028 3.927-2.045 7.118-5.072 9.655-9.082 2.537-4.091 3.764-9.164 3.764-15.218Zm65.707-109.395v159.796h-28.23V31.828h28.23Zm44.841 162.169c-7.61 0-14.402-1.391-20.457-4.091-6.055-2.7-10.883-6.791-14.32-12.109-3.518-5.319-5.237-11.946-5.237-19.801 0-6.791 1.228-12.355 3.765-16.773 2.536-4.419 5.891-7.937 10.228-10.637 4.337-2.619 9.164-4.664 14.647-6.055 5.4-1.391 11.046-2.373 16.856-3.027 7.037-.737 12.683-1.391 17.102-1.964 4.337-.573 7.528-1.555 9.574-2.782 1.963-1.309 3.027-3.273 3.027-5.973v-.491c0-5.891-1.718-10.391-5.237-13.664-3.518-3.191-8.51-4.828-15.056-4.828-6.955 0-12.356 1.473-16.447 4.5-4.01 3.028-6.71 6.546-8.183 10.719l-26.348-3.764c2.046-7.282 5.483-13.336 10.31-18.328 4.746-4.909 10.638-8.59 17.511-11.045 6.955-2.455 14.565-3.682 22.912-3.682 5.809 0 11.537.654 17.265 2.045s10.965 3.6 15.711 6.71c4.746 3.109 8.51 7.282 11.455 12.6 2.864 5.318 4.337 11.946 4.337 19.883v80.184h-27.166v-16.446h-.9c-1.719 3.355-4.091 6.464-7.201 9.328-3.109 2.864-6.955 5.237-11.619 6.955-4.828 1.718-10.229 2.536-16.529 2.536Zm7.364-20.701c5.646 0 10.556-1.145 14.729-3.354 4.173-2.291 7.364-5.237 9.655-9.001 2.292-3.763 3.355-7.854 3.355-12.273v-14.155c-.9.737-2.373 1.391-4.5 2.046-2.128.654-4.419 1.145-7.037 1.636-2.619.491-5.155.9-7.692 1.227-2.537.328-4.746.655-6.628.901-4.173.572-8.019 1.472-11.292 2.781-3.355 1.31-5.973 3.11-7.855 5.401-1.964 2.291-2.864 5.318-2.864 8.918 0 5.237 1.882 9.164 5.728 11.782 3.682 2.782 8.51 4.091 14.401 4.091Zm64.643 18.328V71.839h27.412v19.965h1.227c2.21-6.955 5.974-12.274 11.292-16.038 5.319-3.763 11.456-5.645 18.329-5.645 1.555 0 3.355.082 5.237.163 1.964.164 3.601.328 4.91.573v25.938c-1.227-.41-3.109-.819-5.646-1.146a58.815 58.815 0 0 0-7.446-.49c-5.155 0-9.738 1.145-13.829 3.354-4.091 2.209-7.282 5.236-9.655 9.164-2.373 3.927-3.519 8.427-3.519 13.5v70.448h-28.312ZM222.077 39.192l-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"></path><path _ngcontent-ng-c2352166330="" fill="url(#wordmark_c)" d="M388.676 191.625h30.849L363.31 31.828h-35.758l-56.215 159.797h30.848l13.174-39.356h60.061l13.256 39.356Zm-65.461-62.675 21.602-64.311h1.227l21.603 64.311h-44.432Zm126.831-7.527v70.202h-28.23V71.839h27.002v20.374h1.392c2.782-6.71 7.2-12.028 13.255-15.956 6.056-3.927 13.584-5.89 22.503-5.89 8.264 0 15.465 1.8 21.684 5.318 6.137 3.518 10.964 8.673 14.319 15.382 3.437 6.71 5.074 14.81 4.992 24.383v76.175h-28.23v-71.92c0-8.019-2.046-14.237-6.219-18.819-4.173-4.5-9.819-6.791-17.102-6.791-4.91 0-9.328 1.063-13.174 3.272-3.846 2.128-6.792 5.237-9.001 9.328-2.046 4.009-3.191 8.918-3.191 14.728ZM589.233 239c-10.147 0-18.82-1.391-26.103-4.091-7.282-2.7-13.092-6.382-17.511-10.964-4.418-4.582-7.528-9.655-9.164-15.219l25.448-6.136c1.145 2.372 2.782 4.663 4.991 6.954 2.209 2.291 5.155 4.255 8.837 5.81 3.683 1.554 8.428 2.291 14.074 2.291 8.019 0 14.647-1.964 19.884-5.81 5.237-3.845 7.856-10.227 7.856-19.064v-22.665h-1.391c-1.473 2.946-3.601 5.892-6.383 9.001-2.782 3.109-6.464 5.645-10.965 7.691-4.582 2.046-10.228 3.109-17.101 3.109-9.165 0-17.511-2.209-25.039-6.545-7.446-4.337-13.42-10.883-17.757-19.474-4.418-8.673-6.628-19.473-6.628-32.565 0-13.091 2.21-24.301 6.628-33.383 4.419-9.082 10.311-15.955 17.839-20.7 7.528-4.746 15.874-7.037 25.038-7.037 7.038 0 12.847 1.145 17.348 3.518 4.582 2.373 8.182 5.236 10.883 8.51 2.7 3.272 4.746 6.382 6.137 9.327h1.554v-19.8h27.821v121.749c0 10.228-2.454 18.737-7.364 25.447-4.91 6.709-11.538 11.7-20.048 15.055-8.509 3.355-18.165 4.991-28.884 4.991Zm.245-71.266c5.974 0 11.047-1.473 15.302-4.337 4.173-2.945 7.446-7.118 9.573-12.519 2.21-5.482 3.274-12.027 3.274-19.637 0-7.609-1.064-14.155-3.274-19.8-2.127-5.646-5.318-10.064-9.491-13.255-4.174-3.11-9.329-4.746-15.384-4.746s-11.537 1.636-15.792 4.91c-4.173 3.272-7.365 7.772-9.492 13.418-2.128 5.727-3.191 12.191-3.191 19.392 0 7.2 1.063 13.746 3.273 19.228 2.127 5.482 5.318 9.736 9.573 12.764 4.174 3.027 9.41 4.582 15.629 4.582Zm141.56-26.51V71.839h28.23v119.786h-27.412v-21.273h-1.227c-2.7 6.709-7.119 12.191-13.338 16.446-6.137 4.255-13.747 6.382-22.748 6.382-7.855 0-14.81-1.718-20.783-5.237-5.974-3.518-10.72-8.591-14.075-15.382-3.355-6.709-5.073-14.891-5.073-24.464V71.839h28.312v71.921c0 7.609 2.046 13.664 6.219 18.083 4.173 4.5 9.655 6.709 16.365 6.709 4.173 0 8.183-.982 12.111-3.028 3.927-2.045 7.118-5.072 9.655-9.082 2.537-4.091 3.764-9.164 3.764-15.218Zm65.707-109.395v159.796h-28.23V31.828h28.23Zm44.841 162.169c-7.61 0-14.402-1.391-20.457-4.091-6.055-2.7-10.883-6.791-14.32-12.109-3.518-5.319-5.237-11.946-5.237-19.801 0-6.791 1.228-12.355 3.765-16.773 2.536-4.419 5.891-7.937 10.228-10.637 4.337-2.619 9.164-4.664 14.647-6.055 5.4-1.391 11.046-2.373 16.856-3.027 7.037-.737 12.683-1.391 17.102-1.964 4.337-.573 7.528-1.555 9.574-2.782 1.963-1.309 3.027-3.273 3.027-5.973v-.491c0-5.891-1.718-10.391-5.237-13.664-3.518-3.191-8.51-4.828-15.056-4.828-6.955 0-12.356 1.473-16.447 4.5-4.01 3.028-6.71 6.546-8.183 10.719l-26.348-3.764c2.046-7.282 5.483-13.336 10.31-18.328 4.746-4.909 10.638-8.59 17.511-11.045 6.955-2.455 14.565-3.682 22.912-3.682 5.809 0 11.537.654 17.265 2.045s10.965 3.6 15.711 6.71c4.746 3.109 8.51 7.282 11.455 12.6 2.864 5.318 4.337 11.946 4.337 19.883v80.184h-27.166v-16.446h-.9c-1.719 3.355-4.091 6.464-7.201 9.328-3.109 2.864-6.955 5.237-11.619 6.955-4.828 1.718-10.229 2.536-16.529 2.536Zm7.364-20.701c5.646 0 10.556-1.145 14.729-3.354 4.173-2.291 7.364-5.237 9.655-9.001 2.292-3.763 3.355-7.854 3.355-12.273v-14.155c-.9.737-2.373 1.391-4.5 2.046-2.128.654-4.419 1.145-7.037 1.636-2.619.491-5.155.9-7.692 1.227-2.537.328-4.746.655-6.628.901-4.173.572-8.019 1.472-11.292 2.781-3.355 1.31-5.973 3.11-7.855 5.401-1.964 2.291-2.864 5.318-2.864 8.918 0 5.237 1.882 9.164 5.728 11.782 3.682 2.782 8.51 4.091 14.401 4.091Zm64.643 18.328V71.839h27.412v19.965h1.227c2.21-6.955 5.974-12.274 11.292-16.038 5.319-3.763 11.456-5.645 18.329-5.645 1.555 0 3.355.082 5.237.163 1.964.164 3.601.328 4.91.573v25.938c-1.227-.41-3.109-.819-5.646-1.146a58.815 58.815 0 0 0-7.446-.49c-5.155 0-9.738 1.145-13.829 3.354-4.091 2.209-7.282 5.236-9.655 9.164-2.373 3.927-3.519 8.427-3.519 13.5v70.448h-28.312ZM222.077 39.192l-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"></path></g><defs _ngcontent-ng-c2352166330=""><radialGradient _ngcontent-ng-c2352166330="" id="wordmark_c" cx="0" cy="0" r="1" gradientTransform="rotate(118.122 171.182 60.81) scale(205.794)" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c2352166330="" stop-color="#FF41F8"></stop><stop _ngcontent-ng-c2352166330="" offset=".707" stop-color="#FF41F8" stop-opacity=".5"></stop><stop _ngcontent-ng-c2352166330="" offset="1" stop-color="#FF41F8" stop-opacity="0"></stop></radialGradient><linearGradient _ngcontent-ng-c2352166330="" id="wordmark_b" x1="0" x2="982" y1="192" y2="192" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c2352166330="" stop-color="#F0060B"></stop><stop _ngcontent-ng-c2352166330="" offset="0" stop-color="#F0070C"></stop><stop _ngcontent-ng-c2352166330="" offset=".526" stop-color="#CC26D5"></stop><stop _ngcontent-ng-c2352166330="" offset="1" stop-color="#7702FF"></stop></linearGradient><clipPath _ngcontent-ng-c2352166330="" id="wordmark_a"><path _ngcontent-ng-c2352166330="" fill="#fff" d="M0 0h982v239H0z"></path></clipPath></defs></svg><!----><!----></div></div><div _ngcontent-ng-c2352166330="" class="adev-scale"><div _ngcontent-ng-c2352166330="" class="adev-scale-text"><div _ngcontent-ng-c2352166330="" class="adev-scale-container"><div _ngcontent-ng-c2352166330="" class="adev-scale-wrapper"><h2 _ngcontent-ng-c2352166330="">Works at any scale</h2><p _ngcontent-ng-c2352166330=""> Angular lets you start small on a well-lit path and supports you as your team and apps grow. </p></div></div></div></div><div _ngcontent-ng-c2352166330="" class="adev-lines"><div _ngcontent-ng-c2352166330="" class="adev-lines-text"><div _ngcontent-ng-c2352166330="" class="adev-lines-container"><div _ngcontent-ng-c2352166330="" class="adev-lines-wrapper"><h2 _ngcontent-ng-c2352166330="">Loved by millions</h2><p _ngcontent-ng-c2352166330=""> Join the millions of developers all over the world building with Angular in a thriving and friendly&nbsp;community. </p></div></div></div></div><div _ngcontent-ng-c2352166330="" class="adev-build"><div _ngcontent-ng-c2352166330="" class="adev-build-text"><div _ngcontent-ng-c2352166330="" class="adev-build-container"><div _ngcontent-ng-c2352166330="" class="adev-build-wrapper"><h2 _ngcontent-ng-c2352166330=""> Build for everyone <div _ngcontent-ng-c2352166330="" aria-hidden="true" class="adev-gradient">Build for everyone</div></h2><p _ngcontent-ng-c2352166330=""> Rely on Angular's built-in hydration, internationalization, security, and accessibility support to build for everyone around the world. </p></div></div></div><div _ngcontent-ng-c2352166330="" aria-hidden="true" class="adev-build-webgl-text"><div _ngcontent-ng-c2352166330="" class="adev-build-container"><div _ngcontent-ng-c2352166330="" class="adev-build-wrapper"><h2 _ngcontent-ng-c2352166330="">Build for everyone</h2><p _ngcontent-ng-c2352166330=""> Rely on Angular's built-in hydration, internationalization, security, and accessibility support to build for everyone around the world. </p></div></div></div></div><div _ngcontent-ng-c2352166330="" class="adev-code-editor-gradient"></div><div _ngcontent-ng-c2352166330="" class="adev-editor-scroll-container"><div _ngcontent-ng-c2352166330="" class="adev-code-editor adev-sticky-editor"><!----><!----><!----></div></div><div _ngcontent-ng-c2352166330="" class="adev-arrow"></div><a _ngcontent-ng-c2352166330="" class="adev-cta" href="/tutorials/learn-angular"><button _ngcontent-ng-c2352166330="" aria-label="Learn Angular" class="docs-primary-btn" text="Learn Angular"> Learn Angular </button></a></div></adev-home><!----><footer _ngcontent-ng-c3096798922="" adev-footer="" _nghost-ng-c3585373939=""><div _ngcontent-ng-c3585373939="" class="adev-footer-container"><div _ngcontent-ng-c3585373939="" class="adev-footer-columns"><div _ngcontent-ng-c3585373939=""><h2 _ngcontent-ng-c3585373939="">Social Media</h2><ul _ngcontent-ng-c3585373939=""><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" title="Angular blog" href="https://blog.angular.dev" target="_blank">Blog</a></li><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" title="X (formerly Twitter)" href="https://x.com/angular" target="_blank">X (formerly Twitter)</a></li><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" title="YouTube" href="https://www.youtube.com/angular" target="_blank">YouTube</a></li><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" href="https://discord.gg/angular" title="Join the discussions at Angular Community Discord server." target="_blank"> Discord </a></li><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" title="GitHub" href="https://github.com/angular/angular" target="_blank">GitHub</a></li><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" href="https://stackoverflow.com/questions/tagged/angular" title="Stack Overflow: where the community answers your technical Angular questions." target="_blank"> Stack Overflow </a></li></ul></div><div _ngcontent-ng-c3585373939=""><h2 _ngcontent-ng-c3585373939="">Community</h2><ul _ngcontent-ng-c3585373939=""><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" href="https://github.com/angular/angular/blob/main/CONTRIBUTING.md" title="Contribute to Angular" target="_blank"> Contribute </a></li><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" href="https://github.com/angular/code-of-conduct/blob/main/CODE_OF_CONDUCT.md" title="Treating each other with respect." target="_blank"> Code of Conduct </a></li><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" href="https://github.com/angular/angular/issues" title="Post issues and suggestions on github." target="_blank"> Report Issues </a></li><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" href="https://devlibrary.withgoogle.com/products/angular?sort=updated" title="Google's DevLibrary" target="_blank"> Google's DevLibrary </a></li><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" href="https://developers.google.com/community/experts/directory?specialization=angular" title="Angular Google Developer Experts" target="_blank"> Angular Google Developer Experts </a></li></ul></div><div _ngcontent-ng-c3585373939=""><h2 _ngcontent-ng-c3585373939="">Resources</h2><ul _ngcontent-ng-c3585373939=""><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" routerlink="/press-kit" title="Press contacts, logos, and branding." href="/press-kit">Press Kit</a></li><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" routerlink="/roadmap" title="Roadmap" href="/roadmap">Roadmap</a></li></ul></div><div _ngcontent-ng-c3585373939=""><h2 _ngcontent-ng-c3585373939="">Languages</h2><ul _ngcontent-ng-c3585373939=""><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" href="https://angular.cn/" title="简体中文版" target="_blank">简体中文版</a></li><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" href="https://angular.tw/" title="正體中文版" target="_blank">正體中文版</a></li><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" href="https://angular.jp/" title="日本語版" target="_blank">日本語版</a></li><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" href="https://angular.kr/" title="한국어" target="_blank">한국어</a></li><li _ngcontent-ng-c3585373939=""><a _ngcontent-ng-c3585373939="" href="https://angular-gr.web.app" title="Ελληνικά" target="_blank"> Ελληνικά </a></li></ul></div></div><p _ngcontent-ng-c3585373939="" class="docs-license"> Super-powered by Google ©2010-2024. Code licensed under an <a _ngcontent-ng-c3585373939="" routerlink="/license" title="License text" href="/license">MIT-style License</a> . Documentation licensed under <a _ngcontent-ng-c3585373939="" href="https://creativecommons.org/licenses/by/4.0/" target="_blank">CC BY 4.0</a> . </p></div></footer><!----></div></adev-root>
  <script src="main-GAMWKQWS.js" type="module"></script>

<script id="ng-state" type="application/json">{"__nghData__":[{},{"n":{"21":"20f","25":"24f","75":"74f","81":"80f"},"t":{"29":"t2","30":"t3","36":"t4","76":"t5","81":"t6","82":"t7","83":"t8","84":"t9","86":"t10"},"c":{"29":[{"i":"t2","r":1}],"30":[],"32":[],"36":[],"73":[],"76":[],"79":[],"81":[],"82":[],"83":[],"84":[],"86":[]}},{"t":{"12":"t14","13":"t15","52":"t16","53":"t17","54":"t18"},"c":{"12":[{"i":"t14","r":1}],"13":[],"52":[],"53":[],"54":[]}},{"t":{"0":"t0","1":"t1","6":"t11","8":"t12","9":"t13","12":"t19"},"c":{"0":[],"1":[],"6":[],"8":[],"9":[],"11":[{"i":"c2352166330","r":1}],"12":[{"i":"t19","r":1}]}}]}</script><div class="cdk-live-announcer-element cdk-visually-hidden" aria-atomic="true" aria-live="polite" id="cdk-live-announcer-0"></div></body></html>